Compare commits
No commits in common. "c2bd21bef1a14de65a219353f6d6b63e32989655" and "477c941b34d57da54606cf6f72d8d25c2d2cc0a9" have entirely different histories.
c2bd21bef1
...
477c941b34
|
@ -12,10 +12,10 @@
|
||||||
<MudTabPanel class="h-full" Text="اطلاعات کلی" Icon="@Icons.Material.Outlined.Info">
|
<MudTabPanel class="h-full" Text="اطلاعات کلی" Icon="@Icons.Material.Outlined.Info">
|
||||||
<div class="h-full">
|
<div class="h-full">
|
||||||
<MudStack Spacing="0" class="mt-4">
|
<MudStack Spacing="0" class="mt-4">
|
||||||
|
|
||||||
<MudText Typo="Typo.h6">اطلاعات کلی</MudText>
|
<MudText Typo="Typo.h6">اطلاعات کلی</MudText>
|
||||||
<MudText Typo="Typo.caption">اطلاعات کلی محصول را به دقت وارد کنید</MudText>
|
<MudText Typo="Typo.caption">اطلاعات کلی محصول را به دقت وارد کنید</MudText>
|
||||||
</MudStack>
|
</MudStack>
|
||||||
|
|
||||||
<MudGrid>
|
<MudGrid>
|
||||||
|
|
||||||
<MudItem xs="12" lg="4" md="6">
|
<MudItem xs="12" lg="4" md="6">
|
||||||
|
@ -177,78 +177,6 @@
|
||||||
</div>
|
</div>
|
||||||
</MudTabPanel>
|
</MudTabPanel>
|
||||||
|
|
||||||
|
|
||||||
<MudTabPanel Text="زیر محصولاتــ" Icon="@Icons.Material.Outlined.ShoppingBag">
|
|
||||||
<div class="min-h-[33rem] mt-5">
|
|
||||||
<MudGrid>
|
|
||||||
|
|
||||||
<MudItem xs="10">
|
|
||||||
|
|
||||||
<MudStack Row="true" class="mb-5">
|
|
||||||
<MudStack>
|
|
||||||
<MudText Typo="Typo.h6">زیر محصولات</MudText>
|
|
||||||
<MudText Typo="Typo.caption">می توانید زیر محصولات مورد نظر را وارد کنید</MudText>
|
|
||||||
</MudStack>
|
|
||||||
</MudStack>
|
|
||||||
</MudItem>
|
|
||||||
|
|
||||||
<MudItem xs="2">
|
|
||||||
<MudButton Variant="Variant.Filled"
|
|
||||||
Size="Size.Large"
|
|
||||||
Color="Color.Info"
|
|
||||||
class="mt-2 w-full py-3"
|
|
||||||
OnClick="ViewModel.AddSubProduct"
|
|
||||||
StartIcon="@Icons.Material.Outlined.Add">افزودن</MudButton>
|
|
||||||
</MudItem>
|
|
||||||
|
|
||||||
<MudItem xs="12">
|
|
||||||
|
|
||||||
<MudGrid>
|
|
||||||
|
|
||||||
<MudItem sm="12">
|
|
||||||
|
|
||||||
<MudDataGrid Items="@ViewModel.SubProducts"
|
|
||||||
T="SubProductSDto"
|
|
||||||
Elevation="0"
|
|
||||||
Outlined="true"
|
|
||||||
Bordered="true"
|
|
||||||
Striped="true"
|
|
||||||
Filterable="false"
|
|
||||||
SortMode="@SortMode.None"
|
|
||||||
Groupable="false">
|
|
||||||
<Columns>
|
|
||||||
<PropertyColumn T="SubProductSDto" TProperty="string" Property="x => x.PersianName" Title="نام" />
|
|
||||||
<TemplateColumn T="SubProductSDto" CellClass="d-flex justify-end">
|
|
||||||
<CellTemplate>
|
|
||||||
<MudStack Row>
|
|
||||||
<MudButton DisableElevation="true"
|
|
||||||
Size="@Size.Small"
|
|
||||||
Variant="@Variant.Filled"
|
|
||||||
Color="@Color.Info"
|
|
||||||
OnClick="async()=>await ViewModel.EditSubProduct(context.Item)"
|
|
||||||
StartIcon="@Icons.Material.Outlined.Edit">ویرایش</MudButton>
|
|
||||||
<MudButton DisableElevation="true"
|
|
||||||
Size="@Size.Small"
|
|
||||||
Variant="@Variant.Filled"
|
|
||||||
Color="@Color.Error"
|
|
||||||
OnClick="async()=>await ViewModel.DeleteSubProduct(context.Item)"
|
|
||||||
StartIcon="@Icons.Material.Outlined.Remove">حذف</MudButton>
|
|
||||||
</MudStack>
|
|
||||||
</CellTemplate>
|
|
||||||
</TemplateColumn>
|
|
||||||
</Columns>
|
|
||||||
</MudDataGrid>
|
|
||||||
</MudItem>
|
|
||||||
|
|
||||||
</MudGrid>
|
|
||||||
|
|
||||||
</MudItem>
|
|
||||||
|
|
||||||
|
|
||||||
</MudGrid>
|
|
||||||
</div>
|
|
||||||
</MudTabPanel>
|
|
||||||
|
|
||||||
<MudTabPanel Text="متاتگ و سوالات متداول">
|
<MudTabPanel Text="متاتگ و سوالات متداول">
|
||||||
|
|
||||||
<MudGrid>
|
<MudGrid>
|
||||||
|
@ -287,8 +215,8 @@
|
||||||
SortMode="@SortMode.None"
|
SortMode="@SortMode.None"
|
||||||
Groupable="false">
|
Groupable="false">
|
||||||
<Columns>
|
<Columns>
|
||||||
<PropertyColumn T="MetaTagSDto" TProperty="string" Property="x => x.Type" Title="نوع" />
|
<PropertyColumn T="MetaTagSDto" TProperty="string" Property="x => x.Type" Title="نوع"/>
|
||||||
<PropertyColumn T="MetaTagSDto" TProperty="string" Property="x => x.Value" Title="مقدار" />
|
<PropertyColumn T="MetaTagSDto" TProperty="string" Property="x => x.Value" Title="مقدار"/>
|
||||||
<TemplateColumn T="MetaTagSDto" CellClass="d-flex justify-end">
|
<TemplateColumn T="MetaTagSDto" CellClass="d-flex justify-end">
|
||||||
<CellTemplate>
|
<CellTemplate>
|
||||||
<MudStack Row>
|
<MudStack Row>
|
||||||
|
@ -340,7 +268,7 @@
|
||||||
Size="@Size.Small"
|
Size="@Size.Small"
|
||||||
Variant="@Variant.Outlined"
|
Variant="@Variant.Outlined"
|
||||||
Color="@Color.Error"
|
Color="@Color.Error"
|
||||||
OnClick="() => ViewModel.Faqs.Remove(item.Key)" />
|
OnClick="() => ViewModel.Faqs.Remove(item.Key)"/>
|
||||||
<MudText>@item.Key</MudText>
|
<MudText>@item.Key</MudText>
|
||||||
</MudStack>
|
</MudStack>
|
||||||
</TitleContent>
|
</TitleContent>
|
||||||
|
|
|
@ -1,9 +1,4 @@
|
||||||
using Microsoft.AspNetCore.Components.Web;
|
using Netina.Domain.Entities.Seo;
|
||||||
using MudBlazor;
|
|
||||||
using Netina.AdminPanel.PWA.Services.RestServices;
|
|
||||||
using Netina.Domain.Dtos.LargDtos;
|
|
||||||
using Netina.Domain.Entities.Products;
|
|
||||||
using Netina.Domain.Entities.Seo;
|
|
||||||
|
|
||||||
namespace Netina.AdminPanel.PWA.Dialogs;
|
namespace Netina.AdminPanel.PWA.Dialogs;
|
||||||
|
|
||||||
|
@ -73,17 +68,15 @@ public class ProductActionDialogBoxViewModel : BaseViewModel<ProductLDto>
|
||||||
IsAmountType = value;
|
IsAmountType = value;
|
||||||
IsPercentType = value;
|
IsPercentType = value;
|
||||||
}
|
}
|
||||||
else if (!IsAmountType)
|
else if(!IsAmountType)
|
||||||
IsPercentType = true;
|
IsPercentType = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string SpecificationTitle = string.Empty;
|
public string SpecificationTitle = string.Empty;
|
||||||
public string SpecificationValue = string.Empty;
|
public string SpecificationValue = string.Empty;
|
||||||
public readonly ObservableCollection<SpecificationSDto> Specifications = [];
|
public readonly ObservableCollection<SpecificationSDto> Specifications = new ObservableCollection<SpecificationSDto>();
|
||||||
public readonly ObservableCollection<StorageFileSDto> Files = [];
|
public readonly ObservableCollection<StorageFileSDto> Files = new ObservableCollection<StorageFileSDto>();
|
||||||
public readonly ObservableCollection<SubProductSDto> SubProducts = [];
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public override async Task InitializeAsync()
|
public override async Task InitializeAsync()
|
||||||
|
@ -133,8 +126,6 @@ public class ProductActionDialogBoxViewModel : BaseViewModel<ProductLDto>
|
||||||
StartDate = Discount.StartDate;
|
StartDate = Discount.StartDate;
|
||||||
IsSpecialOffer = true;
|
IsSpecialOffer = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
await FetchSubProducts();
|
|
||||||
}
|
}
|
||||||
catch (ApiException ex)
|
catch (ApiException ex)
|
||||||
{
|
{
|
||||||
|
@ -157,13 +148,6 @@ public class ProductActionDialogBoxViewModel : BaseViewModel<ProductLDto>
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task FetchSubProducts()
|
|
||||||
{
|
|
||||||
SubProducts.Clear();
|
|
||||||
var subProducts = await _restWrapper.ProductRestApi.GetSubProductsAsync(PageDto.Id);
|
|
||||||
subProducts.ForEach(s => SubProducts.Add(s));
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task SubmitEditAsync()
|
public async Task SubmitEditAsync()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -233,7 +217,6 @@ public class ProductActionDialogBoxViewModel : BaseViewModel<ProductLDto>
|
||||||
IsProcessing = false;
|
IsProcessing = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task SubmitCreateAsync()
|
public async Task SubmitCreateAsync()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -322,7 +305,7 @@ public class ProductActionDialogBoxViewModel : BaseViewModel<ProductLDto>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<ProductCategorySDto> _productCategories = [];
|
private List<ProductCategorySDto> _productCategories = new List<ProductCategorySDto>();
|
||||||
public ProductCategorySDto? SelectedCategory;
|
public ProductCategorySDto? SelectedCategory;
|
||||||
public async Task<IEnumerable<ProductCategorySDto>> SearchProductCategory(string category)
|
public async Task<IEnumerable<ProductCategorySDto>> SearchProductCategory(string category)
|
||||||
{
|
{
|
||||||
|
@ -349,7 +332,7 @@ public class ProductActionDialogBoxViewModel : BaseViewModel<ProductLDto>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<BrandSDto> _brands = [];
|
private List<BrandSDto> _brands = new List<BrandSDto>();
|
||||||
public BrandSDto? SelectedBrand;
|
public BrandSDto? SelectedBrand;
|
||||||
public async Task<IEnumerable<BrandSDto>> SearchBrand(string brand)
|
public async Task<IEnumerable<BrandSDto>> SearchBrand(string brand)
|
||||||
{
|
{
|
||||||
|
@ -396,7 +379,7 @@ public class ProductActionDialogBoxViewModel : BaseViewModel<ProductLDto>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public readonly ObservableCollection<MetaTagSDto> MetaTags = [];
|
public readonly ObservableCollection<MetaTagSDto> MetaTags = new();
|
||||||
public string MetaTagType { get; set; } = string.Empty;
|
public string MetaTagType { get; set; } = string.Empty;
|
||||||
public string MetaTagValue { get; set; } = string.Empty;
|
public string MetaTagValue { get; set; } = string.Empty;
|
||||||
public void AddMetaTag()
|
public void AddMetaTag()
|
||||||
|
@ -454,74 +437,4 @@ public class ProductActionDialogBoxViewModel : BaseViewModel<ProductLDto>
|
||||||
{
|
{
|
||||||
Files.Remove(file);
|
Files.Remove(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task AddSubProduct(MouseEventArgs obj)
|
|
||||||
{
|
|
||||||
DialogOptions maxWidth = new DialogOptions() { MaxWidth = MaxWidth.Medium, FullWidth = true, DisableBackdropClick = true };
|
|
||||||
var parameters = new DialogParameters<SubProductActionDialogBox>
|
|
||||||
{
|
|
||||||
{ x => x.ProductId, PageDto.Id },
|
|
||||||
{ x => x.ProductName, PageDto.PersianName }
|
|
||||||
};
|
|
||||||
var dialog = await _dialogService.ShowAsync<SubProductActionDialogBox>($"افزودن زیر محصول به {PageDto.PersianName}", parameters, maxWidth);
|
|
||||||
var result = await dialog.Result;
|
|
||||||
if (!result.Canceled)
|
|
||||||
{
|
|
||||||
await FetchSubProducts();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task EditSubProduct(SubProductSDto subProduct)
|
|
||||||
{
|
|
||||||
DialogOptions maxWidth = new DialogOptions() { MaxWidth = MaxWidth.Medium, FullWidth = true, DisableBackdropClick = true };
|
|
||||||
var parameters = new DialogParameters<SubProductActionDialogBox>
|
|
||||||
{
|
|
||||||
{ x => x.ProductId, PageDto.Id },
|
|
||||||
{ x => x.ProductName, PageDto.PersianName },
|
|
||||||
{ x => x.SubProduct , subProduct}
|
|
||||||
};
|
|
||||||
var dialog = await _dialogService.ShowAsync<SubProductActionDialogBox>($"افزودن زیر محصول به {PageDto.PersianName}", parameters, maxWidth);
|
|
||||||
var result = await dialog.Result;
|
|
||||||
if (!result.Canceled)
|
|
||||||
{
|
|
||||||
await FetchSubProducts();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task DeleteSubProduct(SubProductSDto subProduct)
|
|
||||||
{
|
|
||||||
var reference = await _dialogService.ShowQuestionDialog($"آیا از حذف زیر محصول اطمینان دارید ?");
|
|
||||||
var result = await reference.Result;
|
|
||||||
if (!result.Canceled)
|
|
||||||
{
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
|
|
||||||
IsProcessing = true;
|
|
||||||
var token = await _userUtility.GetBearerTokenAsync();
|
|
||||||
if (token == null)
|
|
||||||
throw new AppException("Token is null");
|
|
||||||
await _restWrapper.CrudDtoApiRest<SubProduct, SubProductSDto, Guid>(Address.SubProductController)
|
|
||||||
.Delete(subProduct.Id, token);
|
|
||||||
_snackbar.Add("حذف زیر محصول با موفقیت انجام شد", Severity.Success);
|
|
||||||
SubProducts.Remove(subProduct);
|
|
||||||
}
|
|
||||||
catch (ApiException ex)
|
|
||||||
{
|
|
||||||
var exe = await ex.GetContentAsAsync<ApiResult>();
|
|
||||||
_snackbar.Add(exe != null ? exe.Message : ex.Content, Severity.Error);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
_snackbar.Add(e.Message, Severity.Error);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
|
|
||||||
IsProcessing = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,107 +0,0 @@
|
||||||
@inject ISnackbar Snackbar
|
|
||||||
@inject IRestWrapper RestWrapper
|
|
||||||
@inject IUserUtility UserUtility
|
|
||||||
@inject IDialogService DialogService
|
|
||||||
|
|
||||||
<MudDialog class="mx-auto">
|
|
||||||
<DialogContent>
|
|
||||||
<MudContainer class="h-full p-0">
|
|
||||||
<MudTabs Outlined="true" Elevation="0" Rounded="true" Centered="true">
|
|
||||||
<MudTabPanel Text="اطلاعات کلی" Icon="@Icons.Material.Outlined.Info">
|
|
||||||
|
|
||||||
<MudStack>
|
|
||||||
<MudStack Spacing="0">
|
|
||||||
<MudText Typo="Typo.h6">اطلاعات کلی</MudText>
|
|
||||||
<MudText Typo="Typo.caption">اطلاعات کلی زیر محصول را به دقت وارد کنید</MudText>
|
|
||||||
</MudStack>
|
|
||||||
<MudGrid>
|
|
||||||
|
|
||||||
<MudItem xs="12" lg="4" md="6">
|
|
||||||
<MudSelect Variant="Variant.Outlined" T="ProductDiversity"
|
|
||||||
ToStringFunc="type => type.ToDisplay()"
|
|
||||||
Label="نوع تنوع"
|
|
||||||
@bind-Value="@ViewModel.PageDto.Diversity">
|
|
||||||
<MudSelectItem T="ProductDiversity" Value="ProductDiversity.None"></MudSelectItem>
|
|
||||||
<MudSelectItem T="ProductDiversity" Value="ProductDiversity.Color"></MudSelectItem>
|
|
||||||
<MudSelectItem T="ProductDiversity" Value="ProductDiversity.Guarantee"></MudSelectItem>
|
|
||||||
<MudSelectItem T="ProductDiversity" Value="ProductDiversity.Size"></MudSelectItem>
|
|
||||||
</MudSelect>
|
|
||||||
</MudItem>
|
|
||||||
<MudItem xs="12" lg="4" md="6">
|
|
||||||
<MudTextField @bind-Value="@ViewModel.PageDto.DiversityValue" T="string" Label="تنوع" Format="N0" Variant="Variant.Outlined" />
|
|
||||||
</MudItem>
|
|
||||||
|
|
||||||
<MudItem xs="12" lg="4" md="6">
|
|
||||||
<MudTextField @bind-Value="@ViewModel.PageDto.Cost" T="double" Label="قیمت محصول" Adornment="Adornment.End" Format="N0" AdornmentText="ریالــ" Variant="Variant.Outlined" />
|
|
||||||
</MudItem>
|
|
||||||
<MudItem xs="12" lg="4" md="6">
|
|
||||||
<MudTextField @bind-Value="@ViewModel.PageDto.PackingCost" T="double" Label="مبلغ بسته بندی" Format="N0" Adornment="Adornment.End" AdornmentText="ریالــ" Variant="Variant.Outlined" />
|
|
||||||
</MudItem>
|
|
||||||
<MudItem xs="12" lg="4" md="6">
|
|
||||||
<MudTextField @bind-Value="@ViewModel.PageDto.Stock" T="int" Format="N0" Label="موجودی انبار" Variant="Variant.Outlined" />
|
|
||||||
</MudItem>
|
|
||||||
<MudItem xs="12" lg="4" md="6">
|
|
||||||
<MudTextField @bind-Value="@ViewModel.PageDto.MaxOrderCount" T="int" Format="N0" Label="بیشترین خرید" Variant="Variant.Outlined" />
|
|
||||||
</MudItem>
|
|
||||||
<MudItem xs="12" lg="4" md="6">
|
|
||||||
<MudSelect T="bool" @bind-Value="@ViewModel.PageDto.HasExpressDelivery" Label="آیا ارسال سریع دارد ؟" ToStringFunc="b=>b.ToPersianString()" Variant="Variant.Outlined" AnchorOrigin="Origin.BottomCenter">
|
|
||||||
<MudSelectItem T="bool" Value="true" />
|
|
||||||
<MudSelectItem T="bool" Value="false" />
|
|
||||||
</MudSelect>
|
|
||||||
</MudItem>
|
|
||||||
</MudGrid>
|
|
||||||
</MudStack>
|
|
||||||
</MudTabPanel>
|
|
||||||
</MudTabs>
|
|
||||||
</MudContainer>
|
|
||||||
</DialogContent>
|
|
||||||
<DialogActions>
|
|
||||||
<MudStack Row="true" class="w-full mx-4 mb-2">
|
|
||||||
|
|
||||||
@if (ViewModel.IsEditing)
|
|
||||||
{
|
|
||||||
<BaseButtonUi class="w-64 rounded-md" IsProcessing="@ViewModel.IsProcessing"
|
|
||||||
Icon="@Icons.Material.Outlined.Check"
|
|
||||||
Variant="Variant.Filled" Color="Color.Success"
|
|
||||||
Content="ثبت ویرایش" OnClickCallback="ViewModel.SubmitEditAsync" />
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
<BaseButtonUi class="w-64 rounded-md" IsProcessing="@ViewModel.IsProcessing"
|
|
||||||
Icon="@Icons.Material.Outlined.Check"
|
|
||||||
Variant="Variant.Filled" Color="Color.Success"
|
|
||||||
Content="تایید" OnClickCallback="ViewModel.SubmitCreateAsync" />
|
|
||||||
}
|
|
||||||
<MudSpacer />
|
|
||||||
<MudButton Variant="Variant.Outlined" Size="Size.Large" Color="Color.Error" OnClick="ViewModel.Cancel">بستن</MudButton>
|
|
||||||
</MudStack>
|
|
||||||
</DialogActions>
|
|
||||||
</MudDialog>
|
|
||||||
@code {
|
|
||||||
|
|
||||||
[CascadingParameter]
|
|
||||||
MudDialogInstance MudDialog { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
|
||||||
public SubProductSDto? SubProduct { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
|
||||||
public string ProductName { get; set; } = string.Empty;
|
|
||||||
|
|
||||||
[Parameter]
|
|
||||||
public Guid ProductId { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public SubProductActionDialogBoxViewModel ViewModel { get; set; }
|
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
|
||||||
{
|
|
||||||
if (ProductId == default || string.IsNullOrEmpty(ProductName))
|
|
||||||
return;
|
|
||||||
|
|
||||||
ViewModel = SubProduct == null ? new SubProductActionDialogBoxViewModel(Snackbar, RestWrapper, UserUtility, DialogService, MudDialog, ProductId, ProductName) :
|
|
||||||
new SubProductActionDialogBoxViewModel(Snackbar, RestWrapper, UserUtility, DialogService, MudDialog, ProductId, ProductName, SubProduct);
|
|
||||||
await ViewModel.InitializeAsync();
|
|
||||||
await base.OnInitializedAsync();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,168 +0,0 @@
|
||||||
namespace Netina.AdminPanel.PWA.Dialogs;
|
|
||||||
|
|
||||||
public class SubProductActionDialogBoxViewModel : BaseViewModel<SubProductSDto>
|
|
||||||
{
|
|
||||||
private readonly ISnackbar _snackbar;
|
|
||||||
private readonly IRestWrapper _restWrapper;
|
|
||||||
private readonly IUserUtility _userUtility;
|
|
||||||
private readonly IDialogService _dialogService;
|
|
||||||
private readonly MudDialogInstance _mudDialog;
|
|
||||||
public SubProductActionDialogBoxViewModel(ISnackbar snackbar,
|
|
||||||
IRestWrapper restWrapper,
|
|
||||||
IUserUtility userUtility,
|
|
||||||
IDialogService dialogService,
|
|
||||||
MudDialogInstance mudDialog,
|
|
||||||
Guid productId,
|
|
||||||
string productName) : base(userUtility)
|
|
||||||
{
|
|
||||||
ProductId = productId;
|
|
||||||
ProductName = productName;
|
|
||||||
_snackbar = snackbar;
|
|
||||||
_restWrapper = restWrapper;
|
|
||||||
_userUtility = userUtility;
|
|
||||||
_dialogService = dialogService;
|
|
||||||
_mudDialog = mudDialog;
|
|
||||||
}
|
|
||||||
public SubProductActionDialogBoxViewModel(ISnackbar snackbar,
|
|
||||||
IRestWrapper restWrapper,
|
|
||||||
IUserUtility userUtility,
|
|
||||||
IDialogService dialogService,
|
|
||||||
MudDialogInstance mudDialog,
|
|
||||||
Guid productId,
|
|
||||||
string productName,
|
|
||||||
SubProductSDto subProduct) : base(userUtility)
|
|
||||||
{
|
|
||||||
_snackbar = snackbar;
|
|
||||||
_restWrapper = restWrapper;
|
|
||||||
_userUtility = userUtility;
|
|
||||||
_dialogService = dialogService;
|
|
||||||
_mudDialog = mudDialog;
|
|
||||||
ProductId = productId;
|
|
||||||
ProductName = productName;
|
|
||||||
SubProduct = subProduct;
|
|
||||||
PageDto = subProduct;
|
|
||||||
}
|
|
||||||
private SubProductSDto? _subProduct = null;
|
|
||||||
public SubProductSDto? SubProduct
|
|
||||||
{
|
|
||||||
get => _subProduct;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
_subProduct = value;
|
|
||||||
if (_subProduct != null)
|
|
||||||
{
|
|
||||||
IsEditing = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public Guid ProductId { get; }
|
|
||||||
public string ProductName { get; } = string.Empty;
|
|
||||||
public void Cancel() => _mudDialog.Cancel();
|
|
||||||
public bool IsEditing = false;
|
|
||||||
|
|
||||||
public async Task SubmitCreateAsync()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (ProductId == default)
|
|
||||||
throw new AppException("کالای ارسالی اشتباه است");
|
|
||||||
|
|
||||||
if (PageDto.Diversity == ProductDiversity.None)
|
|
||||||
throw new AppException("لطفا نوع تنوع را وارد کنید");
|
|
||||||
|
|
||||||
if (PageDto.DiversityValue.IsNullOrEmpty())
|
|
||||||
throw new AppException("لطفا تنوع را وارد کنید");
|
|
||||||
|
|
||||||
PageDto.DiversityDescription = $"{PageDto.Diversity.ToDisplay()} {PageDto.DiversityValue}";
|
|
||||||
|
|
||||||
IsProcessing = true;
|
|
||||||
var token = await _userUtility.GetBearerTokenAsync();
|
|
||||||
if (token == null)
|
|
||||||
throw new AppException("Token is null");
|
|
||||||
var request = new CreateSubProductCommand(
|
|
||||||
ProductId,
|
|
||||||
PageDto.Diversity,
|
|
||||||
PageDto.DiversityValue,
|
|
||||||
PageDto.DiversityDescription,
|
|
||||||
PageDto.PersianName,
|
|
||||||
PageDto.Cost,
|
|
||||||
PageDto.PackingCost,
|
|
||||||
PageDto.Stock,
|
|
||||||
PageDto.HasExpressDelivery,
|
|
||||||
PageDto.MaxOrderCount,
|
|
||||||
new List<StorageFileSDto>());
|
|
||||||
|
|
||||||
await _restWrapper.CrudApiRest<SubProduct, Guid>(Address.SubProductController).Create<CreateSubProductCommand>(request, token);
|
|
||||||
_mudDialog.Close(DialogResult.Ok(true));
|
|
||||||
}
|
|
||||||
catch (ApiException ex)
|
|
||||||
{
|
|
||||||
var exe = await ex.GetContentAsAsync<ApiResult>();
|
|
||||||
_snackbar.Add(exe != null ? exe.Message : ex.Content, Severity.Error);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
_snackbar.Add(e.Message, Severity.Error);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
IsProcessing = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task SubmitEditAsync()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (SubProduct == null)
|
|
||||||
throw new AppException("محصول به درستی ارسال نشده است");
|
|
||||||
|
|
||||||
if (ProductId == default)
|
|
||||||
throw new AppException("کالای ارسالی اشتباه است");
|
|
||||||
|
|
||||||
if (PageDto.Diversity == ProductDiversity.None)
|
|
||||||
throw new AppException("لطفا نوع تنوع را وارد کنید");
|
|
||||||
|
|
||||||
if (PageDto.DiversityValue.IsNullOrEmpty())
|
|
||||||
throw new AppException("لطفا تنوع را وارد کنید");
|
|
||||||
|
|
||||||
PageDto.DiversityDescription = $"{PageDto.Diversity.ToDisplay()} {PageDto.DiversityValue}";
|
|
||||||
IsProcessing = true;
|
|
||||||
var token = await _userUtility.GetBearerTokenAsync();
|
|
||||||
if (token == null)
|
|
||||||
throw new AppException("Token is null");
|
|
||||||
var request = new UpdateSubProductCommand(
|
|
||||||
PageDto.Id,
|
|
||||||
PageDto.ParentId,
|
|
||||||
PageDto.Diversity,
|
|
||||||
PageDto.DiversityValue,
|
|
||||||
PageDto.DiversityDescription,
|
|
||||||
PageDto.PersianName,
|
|
||||||
PageDto.Cost,
|
|
||||||
PageDto.PackingCost,
|
|
||||||
PageDto.Stock,
|
|
||||||
PageDto.HasExpressDelivery,
|
|
||||||
PageDto.MaxOrderCount,
|
|
||||||
new List<StorageFileSDto>());
|
|
||||||
|
|
||||||
await _restWrapper.CrudApiRest<SubProduct, Guid>(Address.SubProductController).Update<UpdateSubProductCommand>(request, token);
|
|
||||||
_mudDialog.Close();
|
|
||||||
}
|
|
||||||
catch (ApiException ex)
|
|
||||||
{
|
|
||||||
var exe = await ex.GetContentAsAsync<ApiResult>();
|
|
||||||
_snackbar.Add(exe != null ? exe.Message : ex.Content, Severity.Error);
|
|
||||||
_mudDialog.Cancel();
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
_snackbar.Add(e.Message, Severity.Error);
|
|
||||||
_mudDialog.Cancel();
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
|
|
||||||
IsProcessing = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -9,8 +9,6 @@ public static class Address
|
||||||
public static string ProductCategoryController = $"/product/category";
|
public static string ProductCategoryController = $"/product/category";
|
||||||
public static string ProductController = $"/product";
|
public static string ProductController = $"/product";
|
||||||
public static string BrandController = $"/brand";
|
public static string BrandController = $"/brand";
|
||||||
|
|
||||||
public static string SubProductController = $"/sub/product";
|
|
||||||
public static string FileController => $"/file";
|
public static string FileController => $"/file";
|
||||||
public static string BlogController => $"/blog";
|
public static string BlogController => $"/blog";
|
||||||
public static string BlogCategoryController => $"/blog/category";
|
public static string BlogCategoryController => $"/blog/category";
|
||||||
|
|
|
@ -12,9 +12,6 @@ public interface IProductRestApi
|
||||||
[Get("/{productId}")]
|
[Get("/{productId}")]
|
||||||
Task<GetProductResponseDto> ReadOne(Guid productId);
|
Task<GetProductResponseDto> ReadOne(Guid productId);
|
||||||
|
|
||||||
[Get("/{productId}/sub")]
|
|
||||||
Task<List<SubProductSDto>> GetSubProductsAsync(Guid productId);
|
|
||||||
|
|
||||||
[Get("")]
|
[Get("")]
|
||||||
Task<GetProductsResponseDto> ReadAll([Query] string productName, [Header("Authorization")] string authorization);
|
Task<GetProductsResponseDto> ReadAll([Query] string productName, [Header("Authorization")] string authorization);
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,7 @@
|
||||||
--tw-contain-paint: ;
|
--tw-contain-paint: ;
|
||||||
--tw-contain-style: ;
|
--tw-contain-style: ;
|
||||||
}/*
|
}/*
|
||||||
! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com
|
! tailwindcss v3.4.13 | MIT License | https://tailwindcss.com
|
||||||
*//*
|
*//*
|
||||||
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
|
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
|
||||||
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
|
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
|
||||||
|
@ -496,7 +496,7 @@ video {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make elements with the HTML hidden attribute stay hidden by default */
|
/* Make elements with the HTML hidden attribute stay hidden by default */
|
||||||
[hidden]:where(:not([hidden="until-found"])) {
|
[hidden] {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1546,47 +1546,47 @@ input:checked + .toggle-bg {
|
||||||
}
|
}
|
||||||
.border-blue-400 {
|
.border-blue-400 {
|
||||||
--tw-border-opacity: 1;
|
--tw-border-opacity: 1;
|
||||||
border-color: rgb(118 169 250 / var(--tw-border-opacity, 1));
|
border-color: rgb(118 169 250 / var(--tw-border-opacity));
|
||||||
}
|
}
|
||||||
.border-blue-500 {
|
.border-blue-500 {
|
||||||
--tw-border-opacity: 1;
|
--tw-border-opacity: 1;
|
||||||
border-color: rgb(63 131 248 / var(--tw-border-opacity, 1));
|
border-color: rgb(63 131 248 / var(--tw-border-opacity));
|
||||||
}
|
}
|
||||||
.border-blue-600 {
|
.border-blue-600 {
|
||||||
--tw-border-opacity: 1;
|
--tw-border-opacity: 1;
|
||||||
border-color: rgb(28 100 242 / var(--tw-border-opacity, 1));
|
border-color: rgb(28 100 242 / var(--tw-border-opacity));
|
||||||
}
|
}
|
||||||
.border-blue-700 {
|
.border-blue-700 {
|
||||||
--tw-border-opacity: 1;
|
--tw-border-opacity: 1;
|
||||||
border-color: rgb(26 86 219 / var(--tw-border-opacity, 1));
|
border-color: rgb(26 86 219 / var(--tw-border-opacity));
|
||||||
}
|
}
|
||||||
.border-gray-100 {
|
.border-gray-100 {
|
||||||
--tw-border-opacity: 1;
|
--tw-border-opacity: 1;
|
||||||
border-color: rgb(243 244 246 / var(--tw-border-opacity, 1));
|
border-color: rgb(243 244 246 / var(--tw-border-opacity));
|
||||||
}
|
}
|
||||||
.border-gray-200 {
|
.border-gray-200 {
|
||||||
--tw-border-opacity: 1;
|
--tw-border-opacity: 1;
|
||||||
border-color: rgb(229 231 235 / var(--tw-border-opacity, 1));
|
border-color: rgb(229 231 235 / var(--tw-border-opacity));
|
||||||
}
|
}
|
||||||
.border-gray-300 {
|
.border-gray-300 {
|
||||||
--tw-border-opacity: 1;
|
--tw-border-opacity: 1;
|
||||||
border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));
|
border-color: rgb(209 213 219 / var(--tw-border-opacity));
|
||||||
}
|
}
|
||||||
.border-indigo-500 {
|
.border-indigo-500 {
|
||||||
--tw-border-opacity: 1;
|
--tw-border-opacity: 1;
|
||||||
border-color: rgb(104 117 245 / var(--tw-border-opacity, 1));
|
border-color: rgb(104 117 245 / var(--tw-border-opacity));
|
||||||
}
|
}
|
||||||
.border-violet-400 {
|
.border-violet-400 {
|
||||||
--tw-border-opacity: 1;
|
--tw-border-opacity: 1;
|
||||||
border-color: rgb(167 139 250 / var(--tw-border-opacity, 1));
|
border-color: rgb(167 139 250 / var(--tw-border-opacity));
|
||||||
}
|
}
|
||||||
.bg-\[\#000000\] {
|
.bg-\[\#000000\] {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1));
|
background-color: rgb(0 0 0 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
.bg-\[\#EEEEEE\] {
|
.bg-\[\#EEEEEE\] {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(238 238 238 / var(--tw-bg-opacity, 1));
|
background-color: rgb(238 238 238 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
.bg-\[--mud-palette-background-grey\] {
|
.bg-\[--mud-palette-background-grey\] {
|
||||||
background-color: var(--mud-palette-background-grey);
|
background-color: var(--mud-palette-background-grey);
|
||||||
|
@ -1596,41 +1596,41 @@ input:checked + .toggle-bg {
|
||||||
}
|
}
|
||||||
.bg-amber-500 {
|
.bg-amber-500 {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(245 158 11 / var(--tw-bg-opacity, 1));
|
background-color: rgb(245 158 11 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
.bg-blue-500 {
|
.bg-blue-500 {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(63 131 248 / var(--tw-bg-opacity, 1));
|
background-color: rgb(63 131 248 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
.bg-blue-700 {
|
.bg-blue-700 {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(26 86 219 / var(--tw-bg-opacity, 1));
|
background-color: rgb(26 86 219 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
.bg-gray-100 {
|
.bg-gray-100 {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
|
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
.bg-gray-200 {
|
.bg-gray-200 {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));
|
background-color: rgb(229 231 235 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
.bg-gray-800 {
|
.bg-gray-800 {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));
|
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
.bg-gray-900\/50 {
|
.bg-gray-900\/50 {
|
||||||
background-color: rgb(17 24 39 / 0.5);
|
background-color: rgb(17 24 39 / 0.5);
|
||||||
}
|
}
|
||||||
.bg-pink-500 {
|
.bg-pink-500 {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(231 70 148 / var(--tw-bg-opacity, 1));
|
background-color: rgb(231 70 148 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
.bg-transparent {
|
.bg-transparent {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
.bg-white {
|
.bg-white {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
|
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
.bg-white\/50 {
|
.bg-white\/50 {
|
||||||
background-color: rgb(255 255 255 / 0.5);
|
background-color: rgb(255 255 255 / 0.5);
|
||||||
|
@ -1774,51 +1774,51 @@ input:checked + .toggle-bg {
|
||||||
}
|
}
|
||||||
.\!text-black {
|
.\!text-black {
|
||||||
--tw-text-opacity: 1 !important;
|
--tw-text-opacity: 1 !important;
|
||||||
color: rgb(0 0 0 / var(--tw-text-opacity, 1)) !important;
|
color: rgb(0 0 0 / var(--tw-text-opacity)) !important;
|
||||||
}
|
}
|
||||||
.text-amber-600 {
|
.text-amber-600 {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(217 119 6 / var(--tw-text-opacity, 1));
|
color: rgb(217 119 6 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
.text-blue-600 {
|
.text-blue-600 {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(28 100 242 / var(--tw-text-opacity, 1));
|
color: rgb(28 100 242 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
.text-gray-500 {
|
.text-gray-500 {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(107 114 128 / var(--tw-text-opacity, 1));
|
color: rgb(107 114 128 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
.text-gray-600 {
|
.text-gray-600 {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(75 85 99 / var(--tw-text-opacity, 1));
|
color: rgb(75 85 99 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
.text-gray-800 {
|
.text-gray-800 {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(31 41 55 / var(--tw-text-opacity, 1));
|
color: rgb(31 41 55 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
.text-gray-900 {
|
.text-gray-900 {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(17 24 39 / var(--tw-text-opacity, 1));
|
color: rgb(17 24 39 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
.text-lime-600 {
|
.text-lime-600 {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(101 163 13 / var(--tw-text-opacity, 1));
|
color: rgb(101 163 13 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
.text-purple-600 {
|
.text-purple-600 {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(126 58 242 / var(--tw-text-opacity, 1));
|
color: rgb(126 58 242 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
.text-rose-600 {
|
.text-rose-600 {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(225 29 72 / var(--tw-text-opacity, 1));
|
color: rgb(225 29 72 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
.text-violet-500 {
|
.text-violet-500 {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(139 92 246 / var(--tw-text-opacity, 1));
|
color: rgb(139 92 246 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
.text-white {
|
.text-white {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(255 255 255 / var(--tw-text-opacity, 1));
|
color: rgb(255 255 255 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
.opacity-0 {
|
.opacity-0 {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
|
@ -2087,42 +2087,42 @@ code {
|
||||||
|
|
||||||
.hover\:border-gray-300:hover {
|
.hover\:border-gray-300:hover {
|
||||||
--tw-border-opacity: 1;
|
--tw-border-opacity: 1;
|
||||||
border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));
|
border-color: rgb(209 213 219 / var(--tw-border-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.hover\:bg-blue-800:hover {
|
.hover\:bg-blue-800:hover {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(30 66 159 / var(--tw-bg-opacity, 1));
|
background-color: rgb(30 66 159 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.hover\:bg-gray-100:hover {
|
.hover\:bg-gray-100:hover {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
|
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.hover\:bg-white:hover {
|
.hover\:bg-white:hover {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
|
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.hover\:text-blue-600:hover {
|
.hover\:text-blue-600:hover {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(28 100 242 / var(--tw-text-opacity, 1));
|
color: rgb(28 100 242 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.hover\:text-gray-600:hover {
|
.hover\:text-gray-600:hover {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(75 85 99 / var(--tw-text-opacity, 1));
|
color: rgb(75 85 99 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.hover\:text-gray-900:hover {
|
.hover\:text-gray-900:hover {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(17 24 39 / var(--tw-text-opacity, 1));
|
color: rgb(17 24 39 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.focus\:border-teal-500:focus {
|
.focus\:border-teal-500:focus {
|
||||||
--tw-border-opacity: 1;
|
--tw-border-opacity: 1;
|
||||||
border-color: rgb(6 148 162 / var(--tw-border-opacity, 1));
|
border-color: rgb(6 148 162 / var(--tw-border-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.focus\:outline-none:focus {
|
.focus\:outline-none:focus {
|
||||||
|
@ -2144,32 +2144,32 @@ code {
|
||||||
|
|
||||||
.focus\:ring-blue-300:focus {
|
.focus\:ring-blue-300:focus {
|
||||||
--tw-ring-opacity: 1;
|
--tw-ring-opacity: 1;
|
||||||
--tw-ring-color: rgb(164 202 254 / var(--tw-ring-opacity, 1));
|
--tw-ring-color: rgb(164 202 254 / var(--tw-ring-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.focus\:ring-gray-200:focus {
|
.focus\:ring-gray-200:focus {
|
||||||
--tw-ring-opacity: 1;
|
--tw-ring-opacity: 1;
|
||||||
--tw-ring-color: rgb(229 231 235 / var(--tw-ring-opacity, 1));
|
--tw-ring-color: rgb(229 231 235 / var(--tw-ring-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.focus\:ring-teal-500:focus {
|
.focus\:ring-teal-500:focus {
|
||||||
--tw-ring-opacity: 1;
|
--tw-ring-opacity: 1;
|
||||||
--tw-ring-color: rgb(6 148 162 / var(--tw-ring-opacity, 1));
|
--tw-ring-color: rgb(6 148 162 / var(--tw-ring-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark\:border-blue-500:is(.dark *) {
|
.dark\:border-blue-500:is(.dark *) {
|
||||||
--tw-border-opacity: 1;
|
--tw-border-opacity: 1;
|
||||||
border-color: rgb(63 131 248 / var(--tw-border-opacity, 1));
|
border-color: rgb(63 131 248 / var(--tw-border-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark\:border-gray-600:is(.dark *) {
|
.dark\:border-gray-600:is(.dark *) {
|
||||||
--tw-border-opacity: 1;
|
--tw-border-opacity: 1;
|
||||||
border-color: rgb(75 85 99 / var(--tw-border-opacity, 1));
|
border-color: rgb(75 85 99 / var(--tw-border-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark\:border-gray-700:is(.dark *) {
|
.dark\:border-gray-700:is(.dark *) {
|
||||||
--tw-border-opacity: 1;
|
--tw-border-opacity: 1;
|
||||||
border-color: rgb(55 65 81 / var(--tw-border-opacity, 1));
|
border-color: rgb(55 65 81 / var(--tw-border-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark\:border-transparent:is(.dark *) {
|
.dark\:border-transparent:is(.dark *) {
|
||||||
|
@ -2178,22 +2178,22 @@ code {
|
||||||
|
|
||||||
.dark\:bg-blue-600:is(.dark *) {
|
.dark\:bg-blue-600:is(.dark *) {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(28 100 242 / var(--tw-bg-opacity, 1));
|
background-color: rgb(28 100 242 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark\:bg-gray-600:is(.dark *) {
|
.dark\:bg-gray-600:is(.dark *) {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1));
|
background-color: rgb(75 85 99 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark\:bg-gray-700:is(.dark *) {
|
.dark\:bg-gray-700:is(.dark *) {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));
|
background-color: rgb(55 65 81 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark\:bg-gray-800:is(.dark *) {
|
.dark\:bg-gray-800:is(.dark *) {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));
|
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark\:bg-gray-800\/50:is(.dark *) {
|
.dark\:bg-gray-800\/50:is(.dark *) {
|
||||||
|
@ -2206,47 +2206,47 @@ code {
|
||||||
|
|
||||||
.dark\:text-blue-500:is(.dark *) {
|
.dark\:text-blue-500:is(.dark *) {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(63 131 248 / var(--tw-text-opacity, 1));
|
color: rgb(63 131 248 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark\:text-gray-400:is(.dark *) {
|
.dark\:text-gray-400:is(.dark *) {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(156 163 175 / var(--tw-text-opacity, 1));
|
color: rgb(156 163 175 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark\:text-white:is(.dark *) {
|
.dark\:text-white:is(.dark *) {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(255 255 255 / var(--tw-text-opacity, 1));
|
color: rgb(255 255 255 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark\:hover\:bg-blue-700:hover:is(.dark *) {
|
.dark\:hover\:bg-blue-700:hover:is(.dark *) {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(26 86 219 / var(--tw-bg-opacity, 1));
|
background-color: rgb(26 86 219 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark\:hover\:bg-gray-600:hover:is(.dark *) {
|
.dark\:hover\:bg-gray-600:hover:is(.dark *) {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1));
|
background-color: rgb(75 85 99 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark\:hover\:bg-gray-800:hover:is(.dark *) {
|
.dark\:hover\:bg-gray-800:hover:is(.dark *) {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));
|
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark\:hover\:text-blue-500:hover:is(.dark *) {
|
.dark\:hover\:text-blue-500:hover:is(.dark *) {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(63 131 248 / var(--tw-text-opacity, 1));
|
color: rgb(63 131 248 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark\:hover\:text-gray-300:hover:is(.dark *) {
|
.dark\:hover\:text-gray-300:hover:is(.dark *) {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(209 213 219 / var(--tw-text-opacity, 1));
|
color: rgb(209 213 219 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark\:hover\:text-white:hover:is(.dark *) {
|
.dark\:hover\:text-white:hover:is(.dark *) {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(255 255 255 / var(--tw-text-opacity, 1));
|
color: rgb(255 255 255 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 640px) {
|
@media (min-width: 640px) {
|
||||||
|
|
Loading…
Reference in New Issue