From 314d4ff56c02bbc7f482676dd79ea32216a0f036 Mon Sep 17 00:00:00 2001 From: "Amir.H Khademi" Date: Sat, 8 Jun 2024 22:51:09 +0330 Subject: [PATCH] feat(FastProductCreateDialog),refactor(Pages),refactor(Commands) -ADD FAST PRODUCT CREATE DIALOG -Refactor page and layout and fix some responsive issues -Refactor brand and product command and return Guid in response create --- .../Dialogs/BlogActionDialogBox.razor | 21 ++- .../Dialogs/FastProductCreateDialogBox.razor | 142 ++++++++++++++++ .../FastProductCreateDialogBox.razor.cs | 159 ++++++++++++++++++ Netina.AdminPanel.PWA/Layout/MainLayout.razor | 87 ++++++---- .../Pages/BlogCategoriesPage.razor | 4 +- Netina.AdminPanel.PWA/Pages/BlogsPage.razor | 4 +- Netina.AdminPanel.PWA/Pages/BrandsPage.razor | 4 +- .../Pages/CategoriesPage.razor | 80 +-------- .../Pages/DiscountPage.razor | 4 +- .../Pages/FaqManagementPage.razor | 4 +- Netina.AdminPanel.PWA/Pages/Home.razor | 46 ++--- .../Pages/MarketerManagementPage.razor | 6 +- .../Pages/NewsletterManagementPage.razor | 4 +- .../Pages/NotFoundPage.razor | 8 +- Netina.AdminPanel.PWA/Pages/OrdersPage.razor | 2 +- .../Pages/PagesManagementPage.razor | 10 +- .../Pages/PaymentsPage.razor | 4 +- .../Pages/ProductsPage.razor | 122 +++++++------- .../Pages/ProductsPage.razor.cs | 20 +++ .../Pages/ShippingPage.razor | 4 +- .../Pages/ShopManagementPage.razor | 26 +-- .../Pages/UserSettingsPage.razor | 6 +- Netina.AdminPanel.PWA/package-lock.json | 8 +- Netina.AdminPanel.PWA/package.json | 2 +- Netina.AdminPanel.PWA/tailwind.config.js | 8 - Netina.AdminPanel.PWA/wwwroot/css/app.min.css | 63 ++++--- .../wwwroot/css/app.output.css | 87 +++++----- 27 files changed, 605 insertions(+), 330 deletions(-) create mode 100644 Netina.AdminPanel.PWA/Dialogs/FastProductCreateDialogBox.razor create mode 100644 Netina.AdminPanel.PWA/Dialogs/FastProductCreateDialogBox.razor.cs diff --git a/Netina.AdminPanel.PWA/Dialogs/BlogActionDialogBox.razor b/Netina.AdminPanel.PWA/Dialogs/BlogActionDialogBox.razor index 9804258..bd2b8b6 100644 --- a/Netina.AdminPanel.PWA/Dialogs/BlogActionDialogBox.razor +++ b/Netina.AdminPanel.PWA/Dialogs/BlogActionDialogBox.razor @@ -30,9 +30,9 @@ -
- -

منتظر بمانید

+
+ +

منتظر بمانید

@@ -63,7 +63,6 @@
- متن بلاگ می توانید کتن کامل بلاگــــ خود را کامل وارد کنید @@ -79,7 +78,7 @@
- + تصاویر محصول می توانید برای محصول چند تصویر اپلود کنید @@ -88,15 +87,15 @@ @foreach (var item in ViewModel.Files) { -
- +
+ @if (item.IsHeader) { -

هدر

+

هدر

} @if (item.IsPrimary) { -

اصلی

+

اصلی

}
} @@ -124,7 +123,7 @@ - + @if (ViewModel.IsEditing) { diff --git a/Netina.AdminPanel.PWA/Dialogs/FastProductCreateDialogBox.razor b/Netina.AdminPanel.PWA/Dialogs/FastProductCreateDialogBox.razor new file mode 100644 index 0000000..b481f5d --- /dev/null +++ b/Netina.AdminPanel.PWA/Dialogs/FastProductCreateDialogBox.razor @@ -0,0 +1,142 @@ +@inject ISnackbar Snackbar +@inject IRestWrapper RestWrapper +@inject IUserUtility UserUtility +@inject IDialogService DialogService + + + + + + + افزودن سریع محصول + + + + در این صفحه تنها اطلاعات اولیه ثبت میشوند و باید برای تکمیل اطلاعات محصول به صحفه اصلی تغییرات محصول بروید + + + 1. انتخاب دسته بندی + + + + + + + + + + + 1. افزودن محصول به @ViewModel.SelectedCategory?.Name + + + + + + + + + @brandAutocompleteText + + + + + + @if (!brandAutocompleteText.IsNullOrEmpty()) + { + + @brandAutocompleteText + + + + } + + + + +
+ +

منتظر بمانید

+
+
+
+
+ +

@e.PersianName

+
+
+
+ + + + + + +
+ + + ثبت محصول +
+ + +
+
+
+
+@code +{ + + [CascadingParameter] + MudDialogInstance MudDialog { get; set; } + + string brandAutocompleteText = string.Empty; + public FastProductCreateDialogBoxViewModel ViewModel { get; set; } + + protected override async Task OnInitializedAsync() + { + ViewModel = new FastProductCreateDialogBoxViewModel(Snackbar, RestWrapper, UserUtility, DialogService, MudDialog); + await ViewModel.InitializeAsync(); + await base.OnInitializedAsync(); + } + +} \ No newline at end of file diff --git a/Netina.AdminPanel.PWA/Dialogs/FastProductCreateDialogBox.razor.cs b/Netina.AdminPanel.PWA/Dialogs/FastProductCreateDialogBox.razor.cs new file mode 100644 index 0000000..a91e8be --- /dev/null +++ b/Netina.AdminPanel.PWA/Dialogs/FastProductCreateDialogBox.razor.cs @@ -0,0 +1,159 @@ +using Microsoft.AspNetCore.Components.Forms; +using Netina.Common.Models.Api; +using Netina.Domain.Entities.Brands; + +namespace Netina.AdminPanel.PWA.Dialogs; + +public class FastProductCreateDialogBoxViewModel(ISnackbar snackbar, IRestWrapper restWrapper, IUserUtility userUtility, IDialogService dialogService, MudDialogInstance dialogInstance) + : BaseViewModel(userUtility) +{ + public HashSet Categories { get; set; } = new(); + public bool FormEnable = false; + private ProductCategorySDto? _selectedCategory; + public ProductCategorySDto? SelectedCategory + { + get => _selectedCategory; + set + { + _selectedCategory = value; + FormEnable = _selectedCategory != null; + } + } + + public BrandSDto? SelectedBrand { get; set; } + public override async Task InitializeAsync() + { + var categories = await restWrapper.ProductCategoryRestApi.ReadAll(true); + categories.ForEach(c => Categories.Add(c)); + PageDto.Stock = 1; + await base.InitializeAsync(); + } + + public async Task> LoadCategories(ProductCategorySDto arg) + { + return arg.Children.ToHashSet(); + } + + private readonly List Files = new(); + public readonly List FileNames = new(); + private const string DefaultDragClass = "relative rounded-lg border-2 border-dashed pa-4 mt-4 mud-width-full mud-height-full z-10"; + public string DragClass = DefaultDragClass; + public void SetDragClass() + => DragClass = $"{DefaultDragClass} mud-border-primary"; + public void ClearDragClass() + => DragClass = DefaultDragClass; + + public void OnInputFileChanged(InputFileChangeEventArgs e) + { + ClearDragClass(); + var files = e.GetMultipleFiles(); + foreach (var file in files) + { + FileNames.Add(file.Name); + Files.Add(file); + } + + + } + private List brands = new(); + public async Task> SearchBrand(string brand) + { + try + { + if (brands.Count == 0) + brands = await restWrapper.BrandRestApi.ReadAll(); + if (brand.IsNullOrEmpty().Not()) + return brands.Where(b => b.PersianName.Trim().ToUpper().Contains(brand.Trim().ToUpper())); + return brands; + } + catch (ApiException ex) + { + var exe = await ex.GetContentAsAsync(); + snackbar.Add(exe != null ? exe.Message : ex.Content, Severity.Error); + return brands; + } + catch (Exception e) + { + snackbar.Add(e.Message, Severity.Error); + return brands; + } + } + + public void AddBrand(string brandName) + { + if (brandName.IsNullOrEmpty()) + return; + Task.Run(async () => + { + var token = await userUtility.GetBearerTokenAsync(); + if (token == null) + return; + var brand = new BrandSDto { PersianName = brandName }; + brands.Add(brand); + var command = brand.Adapt() with {Files = new()}; + var response = await restWrapper.CrudApiRest(Address.BrandController) + .Create(command, token); + brand.Id = response; + SelectedBrand = brand; + }); + } + public void SubmitCreateProduct() + { + try + { + if (SelectedCategory == null) + throw new Exception("دسته بندی انتخاب نشده است"); + if (SelectedBrand == null || SelectedBrand.Id == default) + throw new Exception("برند انتخاب نشده است"); + if (PageDto.PersianName.IsNullOrEmpty()) + throw new Exception("نام فارسی را وارد کنید"); + var product = PageDto.Clone(); + var brand = SelectedBrand.Clone(); + var browserFiles = Files.ToList(); + Task.Run(async () => + { + var token = await userUtility.GetBearerTokenAsync(); + if (token == null) + return; + var files = new List(); + foreach (var file in browserFiles) + { + using var memoryStream = new MemoryStream(); + var stream = file.OpenReadStream(); + await stream.CopyToAsync(memoryStream); + var fileUpload = new FileUploadRequest + { + ContentType = file.ContentType, + FileName = file.Name, + FileUploadType = FileUploadType.Image, + StringBaseFile = Convert.ToBase64String(memoryStream.ToArray()) + }; + var rest = await restWrapper.FileRestApi.UploadFileAsync(fileUpload, token); + files.Add(new StorageFileSDto + { + FileLocation = rest.FileLocation, + FileName = rest.FileName, + FileType = StorageFileType.Image + }); + } + var command = product.Adapt() with + { + BeDisplayed = true, + BrandId = brand.Id, + CategoryId = SelectedCategory.Id, + Files = files + }; + await restWrapper.CrudApiRest(Address.ProductController) + .Create(command, token); + + }); + PageDto = new ProductLDto{Stock = 1}; + FileNames.Clear(); + Files.Clear(); + } + catch (Exception e) + { + snackbar.Add(e.Message, Severity.Error); + } + } +} \ No newline at end of file diff --git a/Netina.AdminPanel.PWA/Layout/MainLayout.razor b/Netina.AdminPanel.PWA/Layout/MainLayout.razor index b9d25d8..dab3278 100644 --- a/Netina.AdminPanel.PWA/Layout/MainLayout.razor +++ b/Netina.AdminPanel.PWA/Layout/MainLayout.razor @@ -5,7 +5,7 @@ @inherits LayoutComponentBase @inject NavigationManager NavigationManager @inject IUserUtility UserUtility - +@inject IBrowserViewportService BrowserViewportService *@ - @@ -118,81 +117,4 @@ await base.OnInitializedAsync(); } -} - - - @* - - - - - - - - - - -

@context.Item.Description

-
-
- - - @if (@context.Item.IsMain) - { -

بلی

- } - else - { -

خیر

- - } -
-
- - - - - - - - - - -
- - - - - - توضیحاتــ - - - - @context.Item.Description - - - - - - - - - - -
-
*@ \ No newline at end of file +} \ No newline at end of file diff --git a/Netina.AdminPanel.PWA/Pages/DiscountPage.razor b/Netina.AdminPanel.PWA/Pages/DiscountPage.razor index 4a2d8db..58344f8 100644 --- a/Netina.AdminPanel.PWA/Pages/DiscountPage.razor +++ b/Netina.AdminPanel.PWA/Pages/DiscountPage.razor @@ -7,7 +7,7 @@ @inject IUserUtility UserUtility @inject IRestWrapper RestWrapper - + @@ -125,7 +125,7 @@ + SelectedChanged="@ViewModel.ChangePageAsync" class="mx-auto my-4" /> diff --git a/Netina.AdminPanel.PWA/Pages/FaqManagementPage.razor b/Netina.AdminPanel.PWA/Pages/FaqManagementPage.razor index ca8c6cb..795ff9e 100644 --- a/Netina.AdminPanel.PWA/Pages/FaqManagementPage.razor +++ b/Netina.AdminPanel.PWA/Pages/FaqManagementPage.razor @@ -7,7 +7,7 @@ @inject IUserUtility UserUtility @inject IRestWrapper RestWrapper - + @@ -23,7 +23,7 @@ - افزودن diff --git a/Netina.AdminPanel.PWA/Pages/Home.razor b/Netina.AdminPanel.PWA/Pages/Home.razor index b77f693..02b44a6 100644 --- a/Netina.AdminPanel.PWA/Pages/Home.razor +++ b/Netina.AdminPanel.PWA/Pages/Home.razor @@ -8,72 +8,72 @@ @inject IUserUtility UserUtility @inject IRestWrapper RestWrapper - + - + تعداد محصولاتــ @ViewModel.PageDto.ProductsCount - عدد + عدد - + تعداد بلاگــ ها @ViewModel.PageDto.BlogsCount - عدد + عدد - + فروش های امروز @ViewModel.PageDto.TodayOrdersCount - عدد + عدد - + تایید نشده @ViewModel.PageDto.UnSubmittedOrdersCount - عدد + عدد - + تعداد برنـــدها @ViewModel.PageDto.BrandsCount - عدد + عدد - + تعداد مشترکین @ViewModel.PageDto.SubscribersCount - نفر + نفر - + - + تعداد محصولاتــ 1124 - عدد + عدد - + تعداد محصولاتــ 1124 - عدد + عدد - + تعداد محصولاتــ 1124 - عدد + عدد @@ -85,7 +85,7 @@ Icon="@Icons.Material.Outlined.AddCard" Variant="Variant.Outlined" Color="Color.Default" OnClickCallback="@ViewModel.AddProductClicked" - Content="محصول جدید" /> + Content="افزودن سریع محصولات" /> @@ -96,7 +96,7 @@ Icon="@Icons.Material.Outlined.AddLink" Variant="Variant.Outlined" Color="Color.Default" OnClickCallback="@ViewModel.AddBlogClicked" - Content="بلاگ جدید" /> + Content="دسته بندی های محصولات" /> @@ -143,7 +143,7 @@ - + diff --git a/Netina.AdminPanel.PWA/Pages/MarketerManagementPage.razor b/Netina.AdminPanel.PWA/Pages/MarketerManagementPage.razor index 7c53d0f..beb2c76 100644 --- a/Netina.AdminPanel.PWA/Pages/MarketerManagementPage.razor +++ b/Netina.AdminPanel.PWA/Pages/MarketerManagementPage.razor @@ -7,19 +7,19 @@ @inject IUserUtility UserUtility @inject IRestWrapper RestWrapper - + - + jتنظیماتـــ بازاریاب ها شما می توانید تنظیمات بازاریاب های خود را ویرایش نمایید diff --git a/Netina.AdminPanel.PWA/Pages/NewsletterManagementPage.razor b/Netina.AdminPanel.PWA/Pages/NewsletterManagementPage.razor index 1251f50..2fc6049 100644 --- a/Netina.AdminPanel.PWA/Pages/NewsletterManagementPage.razor +++ b/Netina.AdminPanel.PWA/Pages/NewsletterManagementPage.razor @@ -6,7 +6,7 @@ @inject IUserUtility UserUtility @inject IRestWrapper RestWrapper - + @@ -27,7 +27,7 @@ + SelectedChanged="@ViewModel.ChangePageAsync" class="mx-auto my-4" /> diff --git a/Netina.AdminPanel.PWA/Pages/NotFoundPage.razor b/Netina.AdminPanel.PWA/Pages/NotFoundPage.razor index d41a4cd..f97a2e4 100644 --- a/Netina.AdminPanel.PWA/Pages/NotFoundPage.razor +++ b/Netina.AdminPanel.PWA/Pages/NotFoundPage.razor @@ -3,12 +3,12 @@ @page "/notfound" @inject NavigationManager NavigationManager -
-
+
+
+ background="transparent" speed="1" class="mx-auto h-96 w-96 lg:w-[38rem] lg:h-[38rem]" loop autoplay /> صفحه مورد نظر پیدا نشد صفحه مورد نظر شما پیدا نشد یا از بین رفته است ، سریع کام بک بزن به جای قبلی جیگر @@ -17,7 +17,7 @@ Icon="@Icons.Material.Outlined.Login" OnClickCallback="NavigateToHomeAsync" Color="Color.Default" - class="w-64 rounded-full mt-6 mx-auto" + class="mx-auto mt-6 w-64 rounded-full" Content="کام بکــــ"> diff --git a/Netina.AdminPanel.PWA/Pages/OrdersPage.razor b/Netina.AdminPanel.PWA/Pages/OrdersPage.razor index 5fba2a5..c776c58 100644 --- a/Netina.AdminPanel.PWA/Pages/OrdersPage.razor +++ b/Netina.AdminPanel.PWA/Pages/OrdersPage.razor @@ -8,7 +8,7 @@ @inject IRestWrapper RestWrapper @inject IBrowserViewportService BrowserViewportService - + diff --git a/Netina.AdminPanel.PWA/Pages/PagesManagementPage.razor b/Netina.AdminPanel.PWA/Pages/PagesManagementPage.razor index 9cd2ff7..f041df0 100644 --- a/Netina.AdminPanel.PWA/Pages/PagesManagementPage.razor +++ b/Netina.AdminPanel.PWA/Pages/PagesManagementPage.razor @@ -7,11 +7,11 @@ @inject IUserUtility UserUtility @inject IRestWrapper RestWrapper - + - + تنظیمات برگه ها برگه های وب سایت خود را ویرایش نمایید @@ -19,7 +19,7 @@ @* *@ @@ -28,13 +28,13 @@ - افزودن برگه جدید + افزودن برگه جدید - افزودن + + افزودن + diff --git a/Netina.AdminPanel.PWA/Pages/PaymentsPage.razor b/Netina.AdminPanel.PWA/Pages/PaymentsPage.razor index c4d0009..3a3ef48 100644 --- a/Netina.AdminPanel.PWA/Pages/PaymentsPage.razor +++ b/Netina.AdminPanel.PWA/Pages/PaymentsPage.razor @@ -7,7 +7,7 @@ @inject IUserUtility UserUtility @inject IRestWrapper RestWrapper - + @@ -73,7 +73,7 @@ + SelectedChanged="@ViewModel.ChangePageAsync" class="mx-auto my-4" /> diff --git a/Netina.AdminPanel.PWA/Pages/ProductsPage.razor b/Netina.AdminPanel.PWA/Pages/ProductsPage.razor index d4a76fc..34d3347 100644 --- a/Netina.AdminPanel.PWA/Pages/ProductsPage.razor +++ b/Netina.AdminPanel.PWA/Pages/ProductsPage.razor @@ -8,34 +8,42 @@ @inject IRestWrapper RestWrapper @inject IBrowserViewportService BrowserViewportService - + - - - - محصولاتــــ - @ViewModel.TotalItems عدد - - - + + + محصولاتــــ + @ViewModel.TotalItems عدد + + @if (@ViewModel.IsXs.Not()) + { + + } + افزودن محصول - افزودن سریع محصول + افزودن محصول از دیجیکالا - - + + - + - + - - - - - + - - - - - -
- -

منتظر بمانید

-
-
-
-
- -

@e.Name

-
-
-
-
+ + + + + + + + + +
+ +

منتظر بمانید

+
+
+
+
+ +

@e.Name

+
+
+
+
- + - - + + @@ -148,12 +154,12 @@ Size="@Size.Small" Variant="@Variant.Outlined" Color="@Color.Info" - OnClick="async()=>await ViewModel.EditProductClicked(context.Item)"/> + OnClick="async()=>await ViewModel.EditProductClicked(context.Item)" /> + Color="@Color.Error" />
@@ -162,7 +168,7 @@ + SelectedChanged="@ViewModel.ChangePageAsync" class="mx-auto my-4" /> @@ -172,7 +178,7 @@
-@code +@code { public ProductsPageViewModel ViewModel { get; set; } protected override async Task OnInitializedAsync() diff --git a/Netina.AdminPanel.PWA/Pages/ProductsPage.razor.cs b/Netina.AdminPanel.PWA/Pages/ProductsPage.razor.cs index 3bf5030..b6dc5ee 100644 --- a/Netina.AdminPanel.PWA/Pages/ProductsPage.razor.cs +++ b/Netina.AdminPanel.PWA/Pages/ProductsPage.razor.cs @@ -15,6 +15,7 @@ public class ProductsPageViewModel : BaseViewModel("افزودن محصول جدید", maxWidth); + var result = await dialogResult.Result; + if (!result.Canceled && result.Data is bool and true) + { + await InitializeAsync(); + } + } public async Task AddDigikalaProductClicked() { @@ -137,6 +154,9 @@ public class ProductsPageViewModel : BaseViewModel(); parameters.Add(x => x.Product, product); var dialogResult = await _dialogService.ShowAsync($"ویرایش محصول {product.PersianName}", parameters, maxWidth); diff --git a/Netina.AdminPanel.PWA/Pages/ShippingPage.razor b/Netina.AdminPanel.PWA/Pages/ShippingPage.razor index 20dc672..a41cbf2 100644 --- a/Netina.AdminPanel.PWA/Pages/ShippingPage.razor +++ b/Netina.AdminPanel.PWA/Pages/ShippingPage.razor @@ -7,7 +7,7 @@ @inject IUserUtility UserUtility @inject IRestWrapper RestWrapper - + @@ -87,7 +87,7 @@ + SelectedChanged="@ViewModel.ChangePageAsync" class="mx-auto my-4" /> diff --git a/Netina.AdminPanel.PWA/Pages/ShopManagementPage.razor b/Netina.AdminPanel.PWA/Pages/ShopManagementPage.razor index e24e9a1..ec02a3c 100644 --- a/Netina.AdminPanel.PWA/Pages/ShopManagementPage.razor +++ b/Netina.AdminPanel.PWA/Pages/ShopManagementPage.razor @@ -7,19 +7,19 @@ @inject IUserUtility UserUtility @inject IRestWrapper RestWrapper - + - + فروشـــــگاه من شما می توانید اطلاعات فروشگاه خود را ویرایش نمایید @@ -62,9 +62,9 @@ -
- -

منتظر بمانید

+
+ +

منتظر بمانید

@@ -84,9 +84,9 @@ -
- -

منتظر بمانید

+
+ +

منتظر بمانید

@@ -111,20 +111,20 @@ سایز لوگو شما باید 512 * 512 باشد و به شکل مربع ، تا جایگیری مناسبی داشته باشد - + - + - + تنظیمات درگاه پرداخت شما می توانید اطلاعات درگاه پرداخت خود را ویرایش نمایید - + @@ -60,7 +60,7 @@ + SelectedChanged="@ViewModel.ChangeUserPageAsync" class="mx-auto my-4" /> @@ -110,7 +110,7 @@ + SelectedChanged="@ViewModel.ChangeRolePageAsync" class="mx-auto my-4"/> diff --git a/Netina.AdminPanel.PWA/package-lock.json b/Netina.AdminPanel.PWA/package-lock.json index 6e4b03f..ec77b32 100644 --- a/Netina.AdminPanel.PWA/package-lock.json +++ b/Netina.AdminPanel.PWA/package-lock.json @@ -35,7 +35,7 @@ "flowbite": "^2.2.1", "postcss": "^8.4.33", "postcss-cli": "^11.0.0", - "tailwindcss": "^3.4.3" + "tailwindcss": "^3.4.4" } }, "node_modules/@alloc/quick-lru": { @@ -1812,9 +1812,9 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", - "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", + "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", diff --git a/Netina.AdminPanel.PWA/package.json b/Netina.AdminPanel.PWA/package.json index b043267..c7f00f7 100644 --- a/Netina.AdminPanel.PWA/package.json +++ b/Netina.AdminPanel.PWA/package.json @@ -26,7 +26,7 @@ "flowbite": "^2.2.1", "postcss": "^8.4.33", "postcss-cli": "^11.0.0", - "tailwindcss": "^3.4.3" + "tailwindcss": "^3.4.4" }, "name": "netina.admin.pwa", "version": "1.0.0", diff --git a/Netina.AdminPanel.PWA/tailwind.config.js b/Netina.AdminPanel.PWA/tailwind.config.js index b1ecdef..958e212 100644 --- a/Netina.AdminPanel.PWA/tailwind.config.js +++ b/Netina.AdminPanel.PWA/tailwind.config.js @@ -8,14 +8,6 @@ module.exports = { "./node_modules/flowbite/**/*.js" ], theme: { - screens: { - 'xs': '380px', - 'sm': '600px', - 'md': '960px', - 'lg': '1280px', - 'xl': '1920px', - '2xl': '2560px', - }, fontSize: { xs: '.75rem', sm: '.875rem', diff --git a/Netina.AdminPanel.PWA/wwwroot/css/app.min.css b/Netina.AdminPanel.PWA/wwwroot/css/app.min.css index 114675a..6832c13 100644 --- a/Netina.AdminPanel.PWA/wwwroot/css/app.min.css +++ b/Netina.AdminPanel.PWA/wwwroot/css/app.min.css @@ -1,5 +1,5 @@ /* -! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com +! tailwindcss v3.4.4 | MIT License | https://tailwindcss.com *//* 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) @@ -977,22 +977,22 @@ input:checked + .toggle-bg { .container { width: 100%; } -@media (min-width: 380px) { +@media (min-width: 640px) { .container { - max-width: 380px; + max-width: 640px; } } -@media (min-width: 600px) { +@media (min-width: 768px) { .container { - max-width: 600px; + max-width: 768px; } } -@media (min-width: 960px) { +@media (min-width: 1024px) { .container { - max-width: 960px; + max-width: 1024px; } } @media (min-width: 1280px) { @@ -1001,16 +1001,10 @@ input:checked + .toggle-bg { max-width: 1280px; } } -@media (min-width: 1920px) { +@media (min-width: 1536px) { .container { - max-width: 1920px; - } -} -@media (min-width: 2560px) { - - .container { - max-width: 2560px; + max-width: 1536px; } } .visible { @@ -1138,6 +1132,9 @@ input:checked + .toggle-bg { .-mb-4 { margin-bottom: -1rem; } +.-ml-1 { + margin-left: -0.25rem; +} .-ml-4 { margin-left: -1rem; } @@ -1219,12 +1216,6 @@ input:checked + .toggle-bg { .mt-8 { margin-top: 2rem; } -.line-clamp-1 { - overflow: hidden; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 1; -} .block { display: block; } @@ -1362,6 +1353,9 @@ input:checked + .toggle-bg { .w-screen { width: 100vw; } +.min-w-\[310px\] { + min-width: 310px; +} .min-w-\[340px\] { min-width: 340px; } @@ -1481,6 +1475,9 @@ input:checked + .toggle-bg { .overflow-x-auto { overflow-x: auto; } +.overflow-y-auto { + overflow-y: auto; +} .overflow-x-hidden { overflow-x: hidden; } @@ -1548,6 +1545,10 @@ input:checked + .toggle-bg { .border-dashed { border-style: dashed; } +.border-blue-400 { + --tw-border-opacity: 1; + border-color: rgb(118 169 250 / var(--tw-border-opacity)); +} .border-blue-500 { --tw-border-opacity: 1; border-color: rgb(63 131 248 / var(--tw-border-opacity)); @@ -1580,10 +1581,6 @@ input:checked + .toggle-bg { --tw-border-opacity: 1; border-color: rgb(167 139 250 / var(--tw-border-opacity)); } -.border-yellow-400 { - --tw-border-opacity: 1; - border-color: rgb(227 160 8 / var(--tw-border-opacity)); -} .bg-\[\#000000\] { --tw-bg-opacity: 1; background-color: rgb(0 0 0 / var(--tw-bg-opacity)); @@ -1726,9 +1723,15 @@ input:checked + .toggle-bg { .pb-3 { padding-bottom: 0.75rem; } +.pb-5 { + padding-bottom: 1.25rem; +} .pt-2 { padding-top: 0.5rem; } +.pt-3 { + padding-top: 0.75rem; +} .pt-4 { padding-top: 1rem; } @@ -2240,7 +2243,7 @@ code { color: rgb(255 255 255 / var(--tw-text-opacity)); } -@media (min-width: 600px) { +@media (min-width: 640px) { .sm\:mr-3 { margin-right: 0.75rem; @@ -2254,13 +2257,17 @@ code { width: 16rem; } + .sm\:w-full { + width: 100%; + } + .sm\:py-3 { padding-top: 0.75rem; padding-bottom: 0.75rem; } } -@media (min-width: 960px) { +@media (min-width: 768px) { .md\:visible { visibility: visible; @@ -2309,7 +2316,7 @@ code { } } -@media (min-width: 1280px) { +@media (min-width: 1024px) { .lg\:h-60 { height: 15rem; diff --git a/Netina.AdminPanel.PWA/wwwroot/css/app.output.css b/Netina.AdminPanel.PWA/wwwroot/css/app.output.css index 0b02fbf..966e71e 100644 --- a/Netina.AdminPanel.PWA/wwwroot/css/app.output.css +++ b/Netina.AdminPanel.PWA/wwwroot/css/app.output.css @@ -1,5 +1,5 @@ /* -! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com +! tailwindcss v3.4.4 | MIT License | https://tailwindcss.com */ /* @@ -1031,21 +1031,21 @@ input:checked + .toggle-bg { width: 100%; } -@media (min-width: 380px) { +@media (min-width: 640px) { .container { - max-width: 380px; + max-width: 640px; } } -@media (min-width: 600px) { +@media (min-width: 768px) { .container { - max-width: 600px; + max-width: 768px; } } -@media (min-width: 960px) { +@media (min-width: 1024px) { .container { - max-width: 960px; + max-width: 1024px; } } @@ -1055,15 +1055,9 @@ input:checked + .toggle-bg { } } -@media (min-width: 1920px) { +@media (min-width: 1536px) { .container { - max-width: 1920px; - } -} - -@media (min-width: 2560px) { - .container { - max-width: 2560px; + max-width: 1536px; } } @@ -1229,6 +1223,10 @@ input:checked + .toggle-bg { margin-bottom: -1rem; } +.-ml-1 { + margin-left: -0.25rem; +} + .-ml-4 { margin-left: -1rem; } @@ -1337,13 +1335,6 @@ input:checked + .toggle-bg { margin-top: 2rem; } -.line-clamp-1 { - overflow: hidden; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 1; -} - .block { display: block; } @@ -1461,14 +1452,6 @@ input:checked + .toggle-bg { min-height: 33rem; } -.min-h-full { - min-height: 100%; -} - -.\!min-h-full { - min-height: 100% !important; -} - .w-1\/2 { width: 50%; } @@ -1534,6 +1517,10 @@ input:checked + .toggle-bg { width: 100vw; } +.min-w-\[310px\] { + min-width: 310px; +} + .min-w-\[340px\] { min-width: 340px; } @@ -1688,6 +1675,10 @@ input:checked + .toggle-bg { overflow-x: auto; } +.overflow-y-auto { + overflow-y: auto; +} + .overflow-x-hidden { overflow-x: hidden; } @@ -1776,6 +1767,11 @@ input:checked + .toggle-bg { border-style: dashed; } +.border-blue-400 { + --tw-border-opacity: 1; + border-color: rgb(118 169 250 / var(--tw-border-opacity)); +} + .border-blue-500 { --tw-border-opacity: 1; border-color: rgb(63 131 248 / var(--tw-border-opacity)); @@ -1816,11 +1812,6 @@ input:checked + .toggle-bg { border-color: rgb(167 139 250 / var(--tw-border-opacity)); } -.border-yellow-400 { - --tw-border-opacity: 1; - border-color: rgb(227 160 8 / var(--tw-border-opacity)); -} - .bg-\[\#000000\] { --tw-bg-opacity: 1; background-color: rgb(0 0 0 / var(--tw-bg-opacity)); @@ -1998,10 +1989,22 @@ input:checked + .toggle-bg { padding-bottom: 2rem; } +.pb-3 { + padding-bottom: 0.75rem; +} + +.pb-5 { + padding-bottom: 1.25rem; +} + .pt-2 { padding-top: 0.5rem; } +.pt-3 { + padding-top: 0.75rem; +} + .pt-4 { padding-top: 1rem; } @@ -2010,10 +2013,6 @@ input:checked + .toggle-bg { padding-top: 2rem; } -.pb-3 { - padding-bottom: 0.75rem; -} - .text-center { text-align: center; } @@ -2592,7 +2591,7 @@ code { color: rgb(255 255 255 / var(--tw-text-opacity)); } -@media (min-width: 600px) { +@media (min-width: 640px) { .sm\:mr-3 { margin-right: 0.75rem; } @@ -2605,13 +2604,17 @@ code { width: 16rem; } + .sm\:w-full { + width: 100%; + } + .sm\:py-3 { padding-top: 0.75rem; padding-bottom: 0.75rem; } } -@media (min-width: 960px) { +@media (min-width: 768px) { .md\:visible { visibility: visible; } @@ -2659,7 +2662,7 @@ code { } } -@media (min-width: 1280px) { +@media (min-width: 1024px) { .lg\:h-60 { height: 15rem; }