diff --git a/.gitignore b/.gitignore index 8701ed51acb..4bea19766f4 100644 --- a/.gitignore +++ b/.gitignore @@ -302,3 +302,6 @@ samples/Microservice/microservices/OrganizationService.Host/Logs/logs.txt abp_io/src/Volo.AbpWebSite.Web/TemplateFiles/abp-mvc-app-0.17.0.0.zip abp_io/src/Volo.AbpWebSite.Web/TemplateFiles/abp-mvc-app-0.17.0.0-filtered.zip abp_io/src/Volo.AbpWebSite.Web/Logs/logs.txt +templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Logs/logs.txt +templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/Logs/logs.txt +templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/Logs/logs.txt diff --git a/README.md b/README.md index 3fd46d1e71a..1f0c7c99d1e 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ This project is in **preview** stage and it's not suggested to use it in product ### Documentation -See the documentation. +See the documentation. ### Development diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json index b44c8833bdd..7224dab07e7 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json @@ -153,6 +153,7 @@ "Code": "Code", "Result": "Result", "SeeTheDocumentForMoreInformation": "See the {0} document for more information", - "IndexPageHeroSection": "open sourceWeb Application
Framework
for asp.net core" + "IndexPageHeroSection": "open sourceWeb Application
Framework
for asp.net core", + "UiFramework": "UI Framework" } } \ No newline at end of file diff --git a/build-all.ps1 b/build-all.ps1 index be40f0f0fbd..23c7bd57a09 100644 --- a/build-all.ps1 +++ b/build-all.ps1 @@ -19,8 +19,8 @@ $solutionPaths = ( "modules/audit-logging", "modules/background-jobs", "modules/client-simulation", - "templates/mvc-module", - "templates/mvc", + "templates/module/aspnet-core", + "templates/app/aspnet-core", "samples/MicroserviceDemo", "samples/Microservice", "abp_io/AbpIoLocalization" diff --git a/docs/cs/AspNetCore/Widgets.md b/docs/cs/AspNetCore/Widgets.md index 9dfcddfa6d9..c885da9c624 100644 --- a/docs/cs/AspNetCore/Widgets.md +++ b/docs/cs/AspNetCore/Widgets.md @@ -2,16 +2,16 @@ ABP poskytuje model a infastrukturu k vytváření **znovu použitelných widgetů**. Systém widgetů je rozšíření pro [ASP.NET Core pohledové komponenty](https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components). Widgety jsou zvláště užitečné, když chcete; -* Definovat widgety v znovu použitelných **[modulech](../Module-Development-Basics.md)**. * Mít závislosti na **skriptech & stylech** ve vašem widgetu. -* Vytvářet **[řídící panely](Dashboards.md)** za použítí widgetů. +* Vytvářet **řídící panely** za použítí widgetů. +* Definovat widgety v znovu použitelných **[modulech](../Module-Development-Basics.md)**. * Spolupráci widgetů s **[authorizačními](../Authorization.md)** a **[svazovacími](Bundling-Minification.md)** systémy. ## Základní definice widgetu ### Tvorba pohledové komponenty -Jako první krok, vytvoříme běžnou ASP.NET Core pohledovou komponentu: +Jako první krok, vytvořte běžnou ASP.NET Core pohledovou komponentu: ![widget-basic-files](../images/widget-basic-files.png) @@ -33,7 +33,9 @@ namespace DashboardDemo.Web.Pages.Components.MySimpleWidget } ```` -Dědění z `AbpViewComponent` není vyžadováno. Můžeme dědit ze standardního ASP.NET Core `ViewComponent`. `AbpViewComponent` pouze definuje pár základních a užitečných vlastnosti. +Dědění z `AbpViewComponent` není vyžadováno. Můžete dědit ze standardního ASP.NET Core `ViewComponent`. `AbpViewComponent` pouze definuje pár základních a užitečných vlastnosti. + +Můžete vložit službu a pomocí metody `Invoke` z ní získat některá data. Možná budete muset provést metodu Invoke jako asynchronní `public async Task InvokeAsync()`. Podívejte se na dokument [ASP.NET Core ViewComponents](https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components) pro všechna další použítí. **Default.cshtml**: @@ -46,7 +48,7 @@ Dědění z `AbpViewComponent` není vyžadováno. Můžeme dědit ze standardn ### Definice widgetu -Přidáme atribut `Widget` k třídě `MySimpleWidgetViewComponent` pro označení této pohledové komponenty jako widgetu: +Přidejte atribut `Widget` k třídě `MySimpleWidgetViewComponent` pro označení této pohledové komponenty jako widgetu: ````csharp using Microsoft.AspNetCore.Mvc; @@ -68,7 +70,7 @@ namespace DashboardDemo.Web.Pages.Components.MySimpleWidget ## Vykreslení widgetu -Vykreslení widgetu je vcelku standardní. Použijeme metodu `Component.InvokeAsync` v razor pohledu/stránce jako s kteroukoliv jinou pohledovou komponentou. Příklady: +Vykreslení widgetu je vcelku standardní. Použijte metodu `Component.InvokeAsync` v razor pohledu/stránce jako s kteroukoliv jinou pohledovou komponentou. Příklady: ````xml @await Component.InvokeAsync("MySimpleWidget") @@ -77,11 +79,61 @@ Vykreslení widgetu je vcelku standardní. Použijeme metodu `Component.InvokeAs První přístup používá název widgetu, zatímco druhý používá typ pohledové komponenty. +### Widgety s argumenty + +Systém ASP.NET Core pohledových komponent umožňuje přijímat argumenty pro pohledové komponenty. Níže uvedená pohledová komponenta přijímá `startDate` a `endDate` a používá tyto argumenty k získání dat ze služby. + +````csharp +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc.UI.Widgets; + +namespace DashboardDemo.Web.Pages.Shared.Components.CountersWidget +{ + [Widget] + public class CountersWidgetViewComponent : AbpViewComponent + { + private readonly IDashboardAppService _dashboardAppService; + + public CountersWidgetViewComponent(IDashboardAppService dashboardAppService) + { + _dashboardAppService = dashboardAppService; + } + + public async Task InvokeAsync( + DateTime startDate, DateTime endDate) + { + var result = await _dashboardAppService.GetCountersWidgetAsync( + new CountersWidgetInputDto + { + StartDate = startDate, + EndDate = endDate + } + ); + + return View(result); + } + } +} +```` + +Nyní musíte předat anonymní objekt k předání argumentů tak jak je ukázáno níže: + +````xml +@await Component.InvokeAsync("CountersWidget", new +{ + startDate = DateTime.Now.Subtract(TimeSpan.FromDays(7)), + endDate = DateTime.Now +}) +```` + ## Název widgetu Výchozí název pohledových komponent je vypočítán na základě názvu typu pohledové komponenty. Pokud je typ pohledové komponenty `MySimpleWidgetViewComponent` potom název widgetu bude `MySimpleWidget` (odstraní se `ViewComponent` postfix). Takto ASP.NET Core vypočítává název pohledové komponenty. -Chceme-li přizpůsobit název widgetu, stačí použít standardní atribut `ViewComponent` z ASP.NET Core: +Chcete-li přizpůsobit název widgetu, stačí použít standardní atribut `ViewComponent` z ASP.NET Core: ```csharp using Microsoft.AspNetCore.Mvc; @@ -108,7 +160,7 @@ ABP bude respektovat přizpůsobený název při zpracování widgetu. ### Zobrazovaný název -Můžeme také definovat čitelný & lokalizovatelný zobrazovaný název pro widget. Tento zobrazovaný název může být využít na uživatelském rozhraní kdykoliv je to potřeba. Zobrazovaný název je nepovinný a lze ho definovat pomocí vlastností atributu `Widget`: +Můžete také definovat čitelný & lokalizovatelný zobrazovaný název pro widget. Tento zobrazovaný název může být využít na uživatelském rozhraní kdykoliv je to potřeba. Zobrazovaný název je nepovinný a lze ho definovat pomocí vlastností atributu `Widget`: ````csharp using DashboardDemo.Localization; @@ -222,6 +274,181 @@ Systém přispěvatelů balíků je velmi schopný. Pokud váš widget použív Podívejte se na dokumentaci [svazování & minifikace](Bundling-Minification.md) pro více informací o tomto systému. +## RefreshUrl + +Widget může navrhnout `RefreshUrl`, který se používá vždy, když je potřeba widget aktualizovat. Je-li definován, widget se při každé aktualizaci znovu vykreslí na straně serveru (viz refresh `methoda` u `WidgetManager` níže). + +````csharp +[Widget(RefreshUrl = "Widgets/Counters")] +public class CountersWidgetViewComponent : AbpViewComponent +{ + +} +```` + +Jakmile pro svůj widget definujete `RefreshUrl`, musíte poskytnout koncový bod pro jeho vykreslení a vrátit ho: + +````csharp +[Route("Widgets")] +public class CountersWidgetController : AbpController +{ + [HttpGet] + [Route("Counters")] + public IActionResult Counters(DateTime startDate, DateTime endDate) + { + return ViewComponent("CountersWidget", new {startDate, endDate}); + } +} +```` + +Trasa `Widgets/Counters` předchozímu `RefreshUrl`. + +> Widget lze obnovit dvěma způsoby: Prvním způsobem je použití `RefreshUrl`, kdy se znovu vykreslí na serveru a nahradí HTML vrácené tím ze serveru. Druhým způsobem widget získá data (obvykle JSON objekt) ze serveru a obnoví se sám u klienta (viz refresh metoda v sekci Widget JavaScript API). + +## JavaScript API + +Možná bude potřeba vykreslit a obnovit widget na straně klienta. V takových případech můžete použít ABP `WidgetManager` a definovat API pro vaše widgety. + +### WidgetManager + +`WidgetManager` se používá k inicializaci a aktualizaci jednoho nebo více widgetů. Vytvořte nový `WidgetManager` jako je ukázáno níže: + +````js +$(function() { + var myWidgetManager = new abp.WidgetManager('#MyDashboardWidgetsArea'); +}) +```` + +`MyDashboardWidgetsArea` může obsahovat jeden nebo více widgetů. + +> Použíti `WidgetManager` uvnitř document.ready (jako nahoře) je dobrá praktika jelikož jeho funkce používají DOM a potřebují, aby byl DOM připraven. + +#### WidgetManager.init() + +`init` jednoduše inicializuje `WidgetManager` a volá metody `init` v souvisejících widgetech pokud je obsahují (podívejte se na sekci Widget JavaScript API section níže) + +```js +myWidgetManager.init(); +``` + +#### WidgetManager.refresh() + +`refresh` metoda obnoví všechny widgety související s tímto `WidgetManager`: + +```` +myWidgetManager.refresh(); +```` + +#### WidgetManager možnosti + +WidgetManager má několik dalších možností. + +##### Filtrační formulář + +Pokud vaše widgety vyžadují parametry/filtry pak budete obvykle mít formulář pro filtrování widgetů. V takových případech můžete vytvořit formulář, který obsahuje prvky formuláře a oblast řídicího panelu s nějakými widgety uvnitř. Příklad: + +````xml +
+ ...prvky formuláře +
+ +
+ ...widgety +
+```` + +`data-widget-filter` atribut propojuje formulář s widgety. Kdykoli je formulář odeslán, všechny widgety jsou automaticky aktualizovány pomocí polí formuláře jako filtru. + +Místo atributu `data-widget-filter`, můžete použít parametr `filterForm` v konstruktoru `WidgetManager`. Příklad: + +````js +var myWidgetManager = new abp.WidgetManager({ + wrapper: '#MyDashboardWidgetsArea', + filterForm: '#MyDashboardFilterForm' +}); +```` + +##### Zpětné volání filtru + +Možná budete chtít mít lepší kontrolu nad poskytováním filtrů při inicializaci a aktualizaci widgetů. V tomto případě můžete použít volbu `filterCallback`: + +````js +var myWidgetManager = new abp.WidgetManager({ + wrapper: '#MyDashboardWidgetsArea', + filterCallback: function() { + return $('#MyDashboardFilterForm').serializeFormToObject(); + } +}); +```` + +Tento příklad ukazuje výchozí implementaci `filterCallback`. Pomocí polí můžete vrátit jakýkoli JavaScript objekt. Příklad: + +````js +filterCallback: function() { + return { + 'startDate': $('#StartDateInput').val(), + 'endDate': $('#EndDateInput').val() + }; +} +```` + +Vrácené filtry jsou předávány všem widgetům na `init` a` refresh`. + +### Widget JavaScript API + +Widget může definovat rozhraní API jazyka JavaScript, které je v případě potřeby vyvoláno přes `WidgetManager`. Ukázku kódu níže lze použít k definování API pro widget. + +````js +(function () { + abp.widgets.NewUserStatisticWidget = function ($wrapper) { + + var getFilters = function () { + return { + ... + }; + } + + var refresh = function (filters) { + ... + }; + + var init = function (filters) { + ... + }; + + return { + getFilters: getFilters, + init: init, + refresh: refresh + }; + }; +})(); +```` + +`NewUserStatisticWidget` je tady název widgetu. Měl by odpovídat názvu widgetu definovanému na straně serveru. Všechny funkce jsou volitelné. + +#### getFilters + +Pokud má widget vlastní interní filtry, měla by tato funkce vrátit objekt filtru. Příklad: + +````js +var getFilters = function() { + return { + frequency: $wrapper.find('.frequency-filter option:selected').val() + }; +} +```` + +Tuto metodu používá `WidgetManager` při vytváření filtrů. + +#### init + +Slouží k inicializaci widgetu kdykoli je potřeba. Má argument filtru, který lze použít při získávání dat ze serveru. Metoda `init` je použita když je volána funkce `WidgetManager.init()`. Použita je i v případě že váš widget vyžaduje úplné obnovení při aktualizaci. Viz `RefreshUrl` v možnostech widgetu. + +#### refresh + +Slouží k aktualizaci widgetu kdykoli je potřeba. Má argument filtru, který lze použít při získávání dat ze serveru. Metoda `refresh` se používá kdykoliv je volána funkce `WidgetManager.refresh()`. + ## Autorizace Některé widgety budou pravděpodobně muset být dostupné pouze pro ověřené nebo autorizované uživatele. V tomto případě použijte následující vlastnosti atributu `Widget`: @@ -249,7 +476,7 @@ namespace DashboardDemo.Web.Pages.Components.MySimpleWidget } ```` -## Možnosti widgetu +## WidgetOptions Jako alternativu k atributu `Widget` můžete ke konfiguraci widgetů použít `WidgetOptions`: @@ -271,4 +498,8 @@ Configure(options => }); ```` -> Tip: `WidgetOptions` lze také použít k získání existujícího widgetu a ke změně jeho konfigurace. To je obzvláště užitečné, pokud chcete změnit konfiguraci widgetu uvnitř modulu používaného vaší aplikací. Použíjte `options.Widgets.Find` k získání existujícího `WidgetDefinition`. \ No newline at end of file +> Tip: `WidgetOptions` lze také použít k získání existujícího widgetu a ke změně jeho konfigurace. To je obzvláště užitečné, pokud chcete změnit konfiguraci widgetu uvnitř modulu používaného vaší aplikací. Použíjte `options.Widgets.Find` k získání existujícího `WidgetDefinition`. + +## Podívejte se také na + +* [Příklad projektu (zdrojový kód)](https://github.com/abpframework/abp/tree/dev/samples/DashboardDemo). \ No newline at end of file diff --git a/docs/cs/images/widget-basic-files.png b/docs/cs/images/widget-basic-files.png new file mode 100644 index 00000000000..bf5f122d42a Binary files /dev/null and b/docs/cs/images/widget-basic-files.png differ diff --git a/docs/en/AspNetCore/Dashboards.md b/docs/en/AspNetCore/Dashboards.md deleted file mode 100644 index 26b6a774619..00000000000 --- a/docs/en/AspNetCore/Dashboards.md +++ /dev/null @@ -1,3 +0,0 @@ -# Dashboards - -TODO \ No newline at end of file diff --git a/docs/en/AspNetCore/Widgets.md b/docs/en/AspNetCore/Widgets.md index 00f0433e2e0..f217e248162 100644 --- a/docs/en/AspNetCore/Widgets.md +++ b/docs/en/AspNetCore/Widgets.md @@ -2,9 +2,9 @@ ABP provides a model and infrastructure to create **reusable widgets**. Widget system is an extension to [ASP.NET Core's ViewComponents](https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components). Widgets are especially useful when you want to; -* Define widgets in reusable **[modules](../Module-Development-Basics.md)**. * Have **scripts & styles** dependencies for your widget. -* Create **[dashboards](Dashboards.md)** with widgets used inside. +* Create **dashboards** with widgets used inside. +* Define widgets in reusable **[modules](../Module-Development-Basics.md)**. * Co-operate widgets with **[authorization](../Authorization.md)** and **[bundling](Bundling-Minification.md)** systems. ## Basic Widget Definition @@ -35,6 +35,8 @@ namespace DashboardDemo.Web.Pages.Components.MySimpleWidget Inheriting from `AbpViewComponent` is not required. You could inherit from ASP.NET Core's standard `ViewComponent`. `AbpViewComponent` only defines some base useful properties. +You can inject a service and use in the `Invoke` method to get some data from the service. You may need to make Invoke method async, like `public async Task InvokeAsync()`. See [ASP.NET Core's ViewComponents](https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components) document fore all different usages. + **Default.cshtml**: ```xml @@ -77,6 +79,56 @@ Rendering a widget is pretty standard. Use the `Component.InvokeAsync` method in First approach uses the widget name while second approach uses the view component type. +### Widgets with Arguments + +ASP.NET Core's view component system allows you to accept arguments for view components. The sample view component below accepts `startDate` and `endDate` and uses these arguments to retrieve data from a service. + +````csharp +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc.UI.Widgets; + +namespace DashboardDemo.Web.Pages.Shared.Components.CountersWidget +{ + [Widget] + public class CountersWidgetViewComponent : AbpViewComponent + { + private readonly IDashboardAppService _dashboardAppService; + + public CountersWidgetViewComponent(IDashboardAppService dashboardAppService) + { + _dashboardAppService = dashboardAppService; + } + + public async Task InvokeAsync( + DateTime startDate, DateTime endDate) + { + var result = await _dashboardAppService.GetCountersWidgetAsync( + new CountersWidgetInputDto + { + StartDate = startDate, + EndDate = endDate + } + ); + + return View(result); + } + } +} +```` + +Now, you need to pass an anonymous object to pass arguments as shown below: + +````xml +@await Component.InvokeAsync("CountersWidget", new +{ + startDate = DateTime.Now.Subtract(TimeSpan.FromDays(7)), + endDate = DateTime.Now +}) +```` + ## Widget Name Default name of the view components are calculated based on the name of the view component type. If your view component type is `MySimpleWidgetViewComponent` then the widget name will be `MySimpleWidget` (removes `ViewComponent` postfix). This is how ASP.NET Core calculates a view component's name. @@ -222,6 +274,181 @@ Bundle contribution system is very powerful. If your widget uses a JavaScript li See the [bundling & minification](Bundling-Minification.md) documentation for more information about that system. +## RefreshUrl + +A widget may design a `RefreshUrl` that is used whenever the widget needs to be refreshed. If it is defined, the widget is re-rendered on the server side on every refresh (see the refresh `method` of the `WidgetManager` below). + +````csharp +[Widget(RefreshUrl = "Widgets/Counters")] +public class CountersWidgetViewComponent : AbpViewComponent +{ + +} +```` + +Once you define a `RefreshUrl` for your widget, you need to provide an endpoint to render and return it: + +````csharp +[Route("Widgets")] +public class CountersWidgetController : AbpController +{ + [HttpGet] + [Route("Counters")] + public IActionResult Counters(DateTime startDate, DateTime endDate) + { + return ViewComponent("CountersWidget", new {startDate, endDate}); + } +} +```` + +`Widgets/Counters` route matches to the `RefreshUrl` declared before. + +> A widget supposed to be refreshed in two ways: In the first way, when you use a `RefreshUrl`, it re-rendered on the server and replaced by the HTML returned from server. In the second way the widget gets data (generally a JSON object) from server and refreshes itself in the client side (see the refresh method in the Widget JavaScript API section). + +## JavaScript API + +A widget may need to be rendered and refreshed in the client side. In such cases, you can use ABP's `WidgetManager` and define APIs for your widgets. + +### WidgetManager + +`WidgetManager` is used to initialize and refresh one or more widgets. Create a new `WidgetManager` as shown below: + +````js +$(function() { + var myWidgetManager = new abp.WidgetManager('#MyDashboardWidgetsArea'); +}) +```` + +`MyDashboardWidgetsArea` may contain one or more widgets inside. + +> Using the `WidgetManager` inside document.ready (like above) is a good practice since its functions use the DOM and need DOM to be ready. + +#### WidgetManager.init() + +`init` simply initializes the `WidgetManager` and calls `init` methods of the related widgets if they define (see Widget JavaScript API section below) + +```js +myWidgetManager.init(); +``` + +#### WidgetManager.refresh() + +`refresh` method refreshes all widgets related to this `WidgetManager`: + +```` +myWidgetManager.refresh(); +```` + +#### WidgetManager Options + +WidgetManager has some additional options. + +##### Filter Form + +If your widgets require parameters/filters then you will generally have a form to filter the widgets. In such cases, you can create a form that has some form elements and a dashboard area with some widgets inside. Example: + +````xml +
+ ...form elements +
+ +
+ ...widgets +
+```` + +`data-widget-filter` attribute relates the form with the widgets. Whenever the form is submitted, all the widgets are automatically refreshed with the form fields as the filter. + +Instead of the `data-widget-filter` attribute, you can use the `filterForm` parameter of the `WidgetManager` constructor. Example: + +````js +var myWidgetManager = new abp.WidgetManager({ + wrapper: '#MyDashboardWidgetsArea', + filterForm: '#MyDashboardFilterForm' +}); +```` + +##### Filter Callback + +You may want to have a better control to provide filters while initializing and refreshing the widgets. In this case, you can use the `filterCallback` option: + +````js +var myWidgetManager = new abp.WidgetManager({ + wrapper: '#MyDashboardWidgetsArea', + filterCallback: function() { + return $('#MyDashboardFilterForm').serializeFormToObject(); + } +}); +```` + +This example shows the default implementation of the `filterCallback`. You can return any JavaScript object with fields. Example: + +````js +filterCallback: function() { + return { + 'startDate': $('#StartDateInput').val(), + 'endDate': $('#EndDateInput').val() + }; +} +```` + +The returning filters are passed to all widgets on `init` and `refresh`. + +### Widget JavaScript API + +A widget can define a JavaScript API that is invoked by the `WidgetManager` when needed. The code sample below can be used to start to define an API for a widget. + +````js +(function () { + abp.widgets.NewUserStatisticWidget = function ($wrapper) { + + var getFilters = function () { + return { + ... + }; + } + + var refresh = function (filters) { + ... + }; + + var init = function (filters) { + ... + }; + + return { + getFilters: getFilters, + init: init, + refresh: refresh + }; + }; +})(); +```` + +`NewUserStatisticWidget` is the name of the widget here. It should match the widget name defined in the server side. All of the functions are optional. + +#### getFilters + +If the widget has internal custom filters, this function should return the filter object. Example: + +````js +var getFilters = function() { + return { + frequency: $wrapper.find('.frequency-filter option:selected').val() + }; +} +```` + +This method is used by the `WidgetManager` while building filters. + +#### init + +Used to initialize the widget when needed. It has a filter argument that can be used while getting data from server. `init` method is used when `WidgetManager.init()` function is called. It is also called if your widget requires a full re-load on refresh. See the `RefreshUrl` widget option. + +#### refresh + +Used to refresh the widget when needed. It has a filter argument that can be used while getting data from server. `refresh` method is used whenever `WidgetManager.refresh()` function is called. + ## Authorization Some widgets may need to be available only for authenticated or authorized users. In this case, use the following properties of the `Widget` attribute: @@ -249,7 +476,7 @@ namespace DashboardDemo.Web.Pages.Components.MySimpleWidget } ```` -## Widget Options +## WidgetOptions As alternative to the `Widget` attribute, you can use the `WidgetOptions` to configure widgets: @@ -271,4 +498,8 @@ Configure(options => }); ```` -> Tip: `WidgetOptions` can also be used to get an existing widget and change its configuration. This is especially useful if you want to modify the configuration of a widget inside a module used by your application. Use `options.Widgets.Find` to get an existing `WidgetDefinition`. \ No newline at end of file +> Tip: `WidgetOptions` can also be used to get an existing widget and change its configuration. This is especially useful if you want to modify the configuration of a widget inside a module used by your application. Use `options.Widgets.Find` to get an existing `WidgetDefinition`. + +## See Also + +* [Example project (source code)](https://github.com/abpframework/abp/tree/dev/samples/DashboardDemo). \ No newline at end of file diff --git a/docs/en/CLI.md b/docs/en/CLI.md index 1f461c9997f..f931d3688fd 100644 --- a/docs/en/CLI.md +++ b/docs/en/CLI.md @@ -34,24 +34,29 @@ Example: abp new Acme.BookStore ```` -* Acme.BookStore is the solution name here. +* `Acme.BookStore` is the solution name here. * Common convention is to name a solution is like *YourCompany.YourProject*. However, you can use different naming like *YourProject* (single level namespacing) or *YourCompany.YourProduct.YourModule* (three levels namespacing). #### Options -* `--template` or `-t`: Specifies the template name. Default template name is `mvc`. Available templates: - * `mvc` (default): ASP.NET Core [MVC application template](Startup-Templates/Mvc.md). Additional options: +* `--template` or `-t`: Specifies the template name. Default template name is `app`, which generates a web application. Available templates: + * `app` (default): [Application template](Startup-Templates/Application.md). Additional options: + * `--ui` or `-u`: Specifies the UI framework. Default framework is `mvc`. Available frameworks: + * `mvc`: ASP.NET Core MVC. There are some additional options for this template: + * `--tiered`: Creates a tiered solution where Web and Http API layers are physically separated. If not specified, it creates a layered solution which is less complex and suitable for most scenarios. + * `angular`: Angular. There are some additional options for this template: + * `--separate-identity-server`: Separates the identity server application from the API host application. If not specified, you will have a single endpoint in the server side. * `--database-provider` or `-d`: Specifies the database provider. Default provider is `ef`. Available providers: * `ef`: Entity Framework Core. * `mongodb`: MongoDB. - * `--tiered`: Creates a tiered solution where Web and Http API layers are physically separated. If not specified, it creates a layered solution which is less complex and suitable for most scenarios. - * `mvc-module`: ASP.NET Core [MVC module template](Startup-Templates/Mvc-Module.md). Additional options: + * `module`: [Module template](Startup-Templates/Module.md). Additional options: * `--no-ui`: Specifies to not include the UI. This makes possible to create service-only modules (a.k.a. microservices - without UI). * `--output-folder` or `-o`: Specifies the output folder. Default value is the current directory. +* `--version` or `-v`: Specifies the ABP & template version. It can be a [release tag](https://github.com/abpframework/abp/releases) or a [branch name](https://github.com/abpframework/abp/branches). Uses the latest release if not specified. Most of the times, you will want to use the latest version. ### add-package -Adds a new ABP package to a project by, +Adds an ABP package to a project by, * Adding related nuget package as a dependency to the project. * Adding `[DependsOn(...)]` attribute to the module class in the project (see the [module development document](Module-Development-Basics.md)). @@ -78,9 +83,9 @@ abp add-package Volo.Abp.MongoDB ### add-module -Adds a multi-package module to a solution by finding all packages of the module, finding related projects in the solution and adding each package to the corresponding project in the solution. +Adds a [multi-package application module](Modules/Index) to a solution by finding all packages of the module, finding related projects in the solution and adding each package to the corresponding project in the solution. -> A business module generally consists of several packages (because of layering, different database providr options or other reasons). Using `add-module` command dramatically simplifies adding a module to a solution. However, each module may require some additional configurations which is generally indicated in the documentation of the related module. +> A business module generally consists of several packages (because of layering, different database provider options or other reasons). Using `add-module` command dramatically simplifies adding a module to a solution. However, each module may require some additional configurations which is generally indicated in the documentation of the related module. Basic usage: @@ -100,10 +105,11 @@ abp add-module Volo.Blogging * `--solution` or `-s`: Specifies the solution (.sln) file path. If not specified, CLI tries to find a .sln file in the current directory. * `--skip-db-migrations`: For EF Core database provider, it automatically adds a new code first migration (`Add-Migration`) and updates the database (`Update-Database`) if necessary. Specify this option to skip this operation. +* `-sp` or `--startup-project`: Relative path to the project folder of the startup project. Default value is the current folder. ### update -Updating all ABP related packages can be tedious since there are many packages of the framework and modules. This command automatically updates all ABP NuGet related packages and NPM packages in a solution or project to the latest versions. +Updating all ABP related packages can be tedious since there are many packages of the framework and modules. This command automatically updates all ABP related NuGet and NPM packages in a solution or project to the latest versions. Usage: diff --git a/docs/en/Getting-Started-Angular-Template.md b/docs/en/Getting-Started-Angular-Template.md new file mode 100644 index 00000000000..1bd605cd654 --- /dev/null +++ b/docs/en/Getting-Started-Angular-Template.md @@ -0,0 +1,126 @@ +## Getting Started With the Angular Application Template + +This tutorial explain how to create a new Angular application using the startup template, configure and run it. + +### Creating a New Project + +This tutorial uses **ABP CLI** to create a new project. See the [Get Started](https://abp.io/get-started) page for other options. + +Install the ABP CLI using a command line window, if you've not installed before: + +````bash +dotnet tool install -g Volo.Abp.Cli +```` + +Use `abp new` command in an empty folder to create your project: + +````bash +abp new Acme.BookStore -u angular +```` + +> You can use different level of namespaces; e.g. BookStore, Acme.BookStore or Acme.Retail.BookStore. + +`-u angular` option specifies the UI framework to be Angular. Default database provider is EF Core. See the [CLI documentation](CLI.md) for all available options. + +#### Pre Requirements + +The created solution requires; + +* [Visual Studio 2017 (v15.9.0+)](https://visualstudio.microsoft.com/tr/downloads/) +* [.NET Core 2.2+](https://www.microsoft.com/net/download/dotnet-core/) +* [Node v10.16+](https://nodejs.org) +* [Yarn v1.17+](https://yarnpkg.com/) + +### The Solution Structure + +Open the solution in **Visual Studio**: + +![bookstore-visual-studio-solution](images/bookstore-visual-studio-solution-for-spa.png) + +The solution has a layered structure (based on [Domain Driven Design](Domain-Driven-Design.md)) and contains unit & integration test projects properly configured to work with **EF Core** & **SQLite in-memory** database. + +> See the [Application Template Document](Startup-Templates/Application.md) to understand the solution structure in details. + +### Database Connection String + +Check the **connection string** in the `appsettings.json` file under the `.HttpApi.Host` project: + +````json +{ + "ConnectionStrings": { + "Default": "Server=localhost;Database=BookStore;Trusted_Connection=True" + } +} +```` + +The solution is configured to use **Entity Framework Core** with **MS SQL Server**. EF Core supports [various](https://docs.microsoft.com/en-us/ef/core/providers/) database providers, so you can use another DBMS if you want. Change the connection string if you need. + +### Create Database & Apply Database Migrations + +You have two options to create the database. + +#### Using the DbMigrator Application + +The solution contains a console application (named `Acme.BookStore.DbMigrator` in this sample) that can create database, apply migrations and seed initial data. It is useful on development as well as on production environment. + +> `.DbMigrator` project has its own `appsettings.json`. So, if you have changed the connection string above, you should also change this one. + +Right click to the `.DbMigrator` project and select **Set as StartUp Project**: + +![set-as-startup-project](images/set-as-startup-project.png) + +Hit F5 (or Ctrl+F5) to run the application. It will have an output like shown below: + +![set-as-startup-project](images/db-migrator-app.png) + +#### Using EF Core Update-Database Command + +Ef Core has `Update-Database` command which creates database if necessary and applies pending migrations. Right click to the `.Web` project and select **Set as StartUp Project**: + +![set-as-startup-project](images/set-as-startup-project.png) + +Open the **Package Manager Console**, select `.EntityFrameworkCore.DbMigrations` project as the **Default Project** and run the `Update-Database` command: + +![pcm-update-database](images/pcm-update-database-v2.png) + +This will create a new database based on the configured connection string. + +> Using the `.Migrator` tool is the suggested way, because it also seeds the initial data to be able to properly run the web application. + +### Running the Application + +#### Run the API Host (Server Side) + +Ensure that the `.HttpApi.Host` project is the startup project and un the application which will open a Swagger UI: + +![bookstore-homepage](images/bookstore-swagger-ui-host.png) + +You can see the application APIs and test them here. Get [more info](https://swagger.io/tools/swagger-ui/) about the Swagger UI. + +##### Authorization for the Swagger UI + +Most of the application APIs require authentication & authorization. If you want to test authorized APIs, manually go to the `/Account/Login` page, enter `admin` as the username and `1q2w3E*` as the password to login to the application. Then you will be able to execute authorized APIs too. + +#### Run the Angular Application (Client Side) + +Go to the `angular` folder, open a command line terminal, type the `yarn` command (we suggest to the [yarn](https://yarnpkg.com) package manager while npm install will also work in most cases): + +````bash +yarn +```` + +Once all node modules are loaded, execute `yarn start` or `npm start` command: + +````bash +yarn start +```` + +Open your favorite browser and go to `localhost:4200` URL. Initial username is `admin` and password is `1q2w3E*`. + +The startup template includes the **identity management** and **tenant management** modules. Once you login, the Administration menu will be available where you can manage **tenants**, **roles**, **users** and their **permissions**. + +> We recommend [Visual Studio Code](https://code.visualstudio.com/) as the editor for the Angular project, but you are free to use your favorite editor. + +### What's Next? + +* [Application development tutorial](Tutorials/Angular/Part-I.md) diff --git a/docs/en/Getting-Started-AspNetCore-MVC-Template.md b/docs/en/Getting-Started-AspNetCore-MVC-Template.md index cfb401c0845..e3aeaa89a72 100644 --- a/docs/en/Getting-Started-AspNetCore-MVC-Template.md +++ b/docs/en/Getting-Started-AspNetCore-MVC-Template.md @@ -1,6 +1,6 @@ ## Getting Started With the ASP.NET Core MVC Template -These tutorials explain how to create a new ASP.NET Core MVC web application using the startup template, configure and run it. +This tutorial explains how to create a new ASP.NET Core MVC web application using the startup template, configure and run it. ### Creating a New Project @@ -37,7 +37,7 @@ Open the solution in **Visual Studio**: The solution has a layered structure (based on [Domain Driven Design](Domain-Driven-Design.md)) and contains unit & integration test projects properly configured to work with **EF Core** & **SQLite in-memory** database. -> See [MVC application template document](Startup-Templates/Mvc.md) to understand the solution structure in details. +> See [Application template document](Startup-Templates/Application.md) to understand the solution structure in details. ### Database Connection String diff --git a/docs/en/Samples/Microservice-Demo.md b/docs/en/Samples/Microservice-Demo.md index bc3c8c09338..ba32878ea61 100644 --- a/docs/en/Samples/Microservice-Demo.md +++ b/docs/en/Samples/Microservice-Demo.md @@ -902,7 +902,7 @@ It has a dedicated MongoDB database (MsDemo_Blogging) to store blog and posts. I ````json "ConnectionStrings": { "Default": "Server=localhost;Database=MsDemo_Identity;Trusted_Connection=True;MultipleActiveResultSets=true", - "Blogging": "mongodb://localhost|MsDemo_Blogging" + "Blogging": "mongodb://localhost/MsDemo_Blogging" } ```` diff --git a/docs/en/Startup-Templates/Application.md b/docs/en/Startup-Templates/Application.md new file mode 100644 index 00000000000..4dabe6a9dad --- /dev/null +++ b/docs/en/Startup-Templates/Application.md @@ -0,0 +1,274 @@ +# Application Startup Template + +## Introduction + +This template provides a layered application structure based on the [Domain Driven Design](../Domain-Driven-Design.md) (DDD) practices. This document explains the solution structure and projects in details. If you want to start quickly, follow the guides below: + +* See [Getting Started With the ASP.NET Core MVC Template](../Getting-Started-AspNetCore-MVC-Template.md) to create a new solution and run it for this template (uses MVC as the UI framework and Entity Framework Core as the database provider). +* See the [ASP.NET Core MVC Tutorial](../Tutorials/AspNetCore-Mvc/Part-I.md) to learn how to develop applications using this template (uses MVC as the UI framework and Entity Framework Core as the database provider). + +## How to Start With? + +You can use the [ABP CLI](../CLI.md) to create a new project using this startup template. Alternatively, you can directly create & download from the [Get Started](https://abp.io/get-started) page. CLI approach is used here. + +First, install the ABP CLI if you haven't installed before: + +````bash +dotnet tool install -g Volo.Abp.Cli +```` + +Then use the `abp new` command in an empty folder to create a new solution: + +````bash +abp new Acme.BookStore -t app +```` + +* `Acme.BookStore` is the solution name, like *YourCompany.YourProduct*. You can use single level, two-levels or three-levels naming. +* This example specified the template name (`-t` or `--template` option). However, `app` is already the default template if you don't specify it. + +### Specify the UI Framework + +This template provides multiple UI frameworks: + +* `mvc`: ASP.NET Core MVC UI with Razor Pages (default) +* `angular`: Angular UI + +Use `-u` or `--ui` option to specify the UI framework: + +````bash +abp new Acme.BookStore -u angular +```` + +### Specify the Database Provider + +This template supports the following database providers: + +- `ef`: Entity Framework Core (default) +- `mongodb`: MongoDB + +Use `-d` (or `--database-provider`) option to specify the database provider: + +````bash +abp new Acme.BookStore -d mongodb +```` + +## Solution Structure + +Based on the options you've specified, you will get a slightly different solution structure. + +### Default Structure + +If you don't specify any additional option, you will have a solution like shown below: + +![bookstore-visual-studio-solution-v3](../images/bookstore-visual-studio-solution-v3.png) + +Projects are organized in `src` and `test` folders. `src` folder contains the actual application which is layered based on [DDD](../Domain-Driven-Design.md) principles as mentioned before. + +The diagram below shows the layers & project dependencies of the application: + +![layered-project-dependencies](../images/layered-project-dependencies.png) + +Each section below will explain the related project & its dependencies. + +#### .Domain.Shared Project + +This project contains constants, enums and other objects these are actually a part of the domain layer, but needed to be used by all layers/projects in the solution. + +A `BookType` enum and a `BookConsts` class (which may have some constant fields for the `Book` entity, like `MaxNameLength`) are good candidates for this project. + +* This project has no dependency to other projects in the solution. All other projects depend on this directly or indirectly. + +#### .Domain Project + +This is the domain layer of the solution. It mainly contains [entities, aggregate roots](../Entities.md), [domain services](../Domain-Services.md), [value types](../Value-Types.md), [repository interfaces](../Repositories.md) and other domain objects. + +A `Book` entity, a `BookManager` domain service and an `IBookRepository` interface are good candidates for this project. + +* Depends on the `.Domain.Shared` because it uses constants, enums and other objects defined in that project. + +#### .Application.Contracts Project + +This project mainly contains [application service](../Application-Services.md) **interfaces** and [Data Transfer Objects](../Data-Transfer-Objects.md) (DTO) of the application layer. It does exists to separate interface & implementation of the application layer. In this way, the interface project can be shared to the clients as a contract package. + +An `IBookAppService` interface and a `BookCreationDto` class are good candidates for this project. + +* Depends on the `.Domain.Shared` because it may use constants, enums and other shared objects of this project in the application service interfaces and DTOs. + +#### .Application Project + +This project contains the [application service](../Application-Services.md) **implementations** of the interfaces defined in the `.Application.Contracts` project. + +A `BookAppService` class is a good candidate for this project. + +* Depends on the `.Application.Contracts` project to be able to implement the interfaces and use the DTOs. +* Depends on the `.Domain` project to be able to use domain objects (entities, repository interfaces... etc.) to perform the application logic. + +#### .EntityFrameworkCore Project + +This is the integration project for the EF Core. It defines the `DbContext` and implements repository interfaces defined in the `.Domain` project. + +* Depends on the `.Domain` project to be able to reference to entities and repository interfaces. + +> This project is available only if you are using EF Core as the database provider. If you select another database provider, its name will be different. + +#### .EntityFrameworkCore.DbMigrations Project + +Contains EF Core database migrations for the solution. It has a separated `DbContext` to dedicated to manage migrations. + +ABP is a modular framework and with an ideal design, each module has its own `DbContext` class. This is where the migration `DbContext` comes into play and unifies all `DbContext` configurations into a single model to maintain a single database schema. For more advanced scenarios, you can have multiple databases (each contains a single or a few module tables) and multiple migration `DbContext`s (each maintains a different database schema). + +Notice that the migration `DbContext` is only used for database migrations and *not used on runtime*. + +* Depends on the `.EntityFrameworkCore` project since it re-uses the configuration defined for the `DbContext` of the application. + +> This project is available only if you are using EF Core as the database provider. + +#### .DbMigrator Project + +This is a console application which simplifies to execute database migrations on development and production environments. When you run this application, it; + +* Creates the database if necessary. +* Applies the pending database migrations. +* Seeds initial data if needed. + +> This project has its own `appsettings.json` file. So, if you want to change the database connection string, remember to change this file too. + +Especially, seeding initial data is important at this point. ABP has a modular data seed infrastructure. See [its documentation](../Data-Seeding.md) for more about the data seeding. + +While creating database & applying migrations seems only necessary for relational databases, this projects comes even if you choose a NoSQL database provider (like MongoDB). In that case, it still seeds initial data which is necessary for the application. + +* Depends on the `.EntityFrameworkCore.DbMigrations` project (for EF Core) since it needs to access to the migrations. +* Depends on the `.Application.Contracts` project to be able to access permission definitions, because initial data seeder grants all permissions for the admin role by default. + +#### .HttpApi Project + +This project is used to define your API Controllers. + +Most of time you don't need to manually define API Controllers since ABP's [Auto API Controllers](../AspNetCore/Auto-API-Controllers.md) feature creates them automagically based on your application layer. However, in case of you need to write API controllers, this is the best place to do it. + +* Depends on the `.Application.Contracts` project to be able to inject the application service interfaces. + +#### .HttpApi.Client Project + +This is a project that defines C# client proxies to use the HTTP APIs of the solution. You can share this library to 3rd-party clients, so they can easily consume your HTTP APIs in their Dotnet applications (For other type of applications, they can still use your APIs, either manually or using a tool in their own platform) + +Most of time you don't need to manually create C# client proxies, thanks to ABP's [Dynamic C# API Clients](../AspNetCore/Dynamic-CSharp-API-Clients.md) feature. + +`.HttpApi.Client.ConsoleTestApp` project is a console application created to demonstrate the usage of the client proxies. + +* Depends on the `.Application.Contracts` project to be able to share the same application service interfaces and DTOs with the remote service. + +> You can delete this project & dependencies if you don't need to create C# client proxies for your APIs. + +#### .Web Project + +This project contains the User Interface (UI) of the application if you are using ASP.NET Core MVC UI. It contains Razor pages, JavaScript files, CSS files, images and so on... + +This project contains the main `appsettings.json` file that contains the connection string and other configuration of the application. + +* Depends on the `.HttpApi` since UI layer needs to use APIs and application service interfaces of the solution. + +> If you check the source code of the `.Web.csproj` file, you will see the references to the `.Application` and the `.EntityFrameworkCore.DbMigrations` projects. +> +> These references are actually not needed while coding your UI layer, because UI layer normally doesn't depend on the EF Core or the Application layer's implementation. This startup templates are ready for the tiered deployment, where API layer is hosted in a separate server than the UI layer. +> +> However, if you don't choose the `--tiered` option, these references will be in the .Web project to be able to host the Web, API and application layers in a single application endpoint. +> +> This gives you to ability to use domain entities & repositories in your presentation layer. However, this is considered as a bad practice according to the DDD. + +#### Test Projects + +The solution has multiple test projects, one for each layer: + +* `.Domain.Tests` is used to test the domain layer. +* `.Application.Tests` is used to test the application layer. +* `.EntityFrameworkCore.Tests` is used to test EF Core configuration and custom repositories. +* `.Web.Tests` is used to test the UI (if you are using ASP.NET Core MVC UI). +* `.TestBase` is a base (shared) project for all tests. + +In addition, `.HttpApi.Client.ConsoleTestApp` is a console application (not an automated test project) which demonstrate the usage of HTTP APIs from a .NET application. + +Test projects are prepared for integration testing; + +* It is fully integrated to ABP framework and all services in your application. +* It uses SQLite in-memory database for EF Core. For MongoDB, it uses the [Mongo2Go](https://github.com/Mongo2Go/Mongo2Go) library. +* Authorization is disabled, so any application service can be easily used in tests. + +You can still create unit tests for your classes which will be harder to write (because you will need to prepare mock/fake objects), but faster to run (because it only tests a single class and skips all initialization process). + +#### How to Run? + +Set `.Web` as the startup project and run the application. Default username is `admin` and password is `1q2w3E*`. + +See [Getting Started With the ASP.NET Core MVC Template](../Getting-Started-AspNetCore-MVC-Template.md) for more information. + +### Tiered Structure + +If you have selected the ASP.NET Core UI and specified the `--tiered` option, the solution created will be a tiered solution. The purpose of the tiered structure is to be able to **deploy Web application and HTTP API to different servers**: + +![bookstore-visual-studio-solution-v3](../images/tiered-solution-servers.png) + +* Browser runs your UI by executing HTML, CSS & JavaScript. +* Web servers hosts static UI files (CSS, JavaScript, image... etc.) & dynamic components (e.g. Razor pages). It performs HTTP requests to the API server to execute the business logic of the application. +* API Server hosts the HTTP APIs which then use application & domain layers of the application to perform the business logic. +* Finally, database server hosts your database. + +So, the resulting solution allows a 4-tiered deployment, by comparing to 3-tiered deployment of the default structure explained before. + +> Unless you actually need to such a 4-tiered deployment, its suggested to go with the default structure which is simpler to develop, deploy and maintain. + +The solution structure is shown below: + +![bookstore-visual-studio-solution-v3](../images/bookstore-visual-studio-solution-tiered.png) + +As different from the default structure, two new projects come into play: `.IdentityServer` & `.HttpApi.Host`. + +#### .IdentityServer Project + +This project is used as an authentication server for other projects. `.Web` project uses OpenId Connect Authentication to get identity and access tokens for the current user from the IdentityServer. Then uses the access token to call the HTTP API server. HTTP API server uses bearer token authentication to obtain claims from the access token to authorize the current user. + +![tiered-solution-applications](../images/tiered-solution-applications.png) + +ABP uses the open source [IdentityServer4](https://identityserver.io/) framework for the authentication between applications. See [IdentityServer4 documentation](http://docs.identityserver.io) for details about the IdentityServer4 and OpenID Connect protocol. + +It has its own `appsettings.json` that contains database connection and other configurations. + +#### .HttpApi.Host Project + +This project is an application that hosts the API of the solution. It has its own `appsettings.json` that contains database connection and other configurations. + +#### .Web Project + +Just like the default structure, this project contains the User Interface (UI) of the application. It contains razor pages, JavaScript files, style files, images and so on... + +This project contains an `appsettings.json` file, but this time it does not have a connection string because it never connects to the database. Instead, it mainly contains endpoint of the remote API server and the authentication server. + +#### Pre-requirements + +* [Redis](https://redis.io/): The applications use Redis as as distributed cache. So, you need to have Redis installed & running. + +#### How to Run? + +You should run the application with the given order: + +* First, run the `.IdentityServer` since other applications depends on it. +* Then run the `.HttpApi.Host` since it is used by the `.Web` application. +* Finally, you can run the `.Web` project and login to the application (using `admin` as the username and `1q2w3E*` as the password). + +### Angular UI + +If you choose Angular as the UI framework (using the `-u angular` option), the solution is separated into two folders: + +* `angular` folder contains the Angular UI solution, the client side. +* `aspnet-core` folder contains the ASP.NET Core solution, the server side. + +Server side is very similar to the solution described above. `.HttpApi.Host` project serves the API, so the Angular application can consume it. + +The files under the `angular/src/environments` folder has the essential configuration of the application. + +#### + +## What's Next? + +- See [Getting Started With the ASP.NET Core MVC Template](../Getting-Started-AspNetCore-MVC-Template.md) to create a new solution and run it for this template. +- See the [ASP.NET Core MVC Tutorial](../Tutorials/AspNetCore-Mvc/Part-I.md) to learn how to develop applications using this template. diff --git a/docs/en/Startup-Templates/Index.md b/docs/en/Startup-Templates/Index.md index cb7e020663d..f47fb979103 100644 --- a/docs/en/Startup-Templates/Index.md +++ b/docs/en/Startup-Templates/Index.md @@ -1,11 +1,9 @@ # Startup Templates -While you can start with an empty project and add needed packages manually, startup templates makes easy and comfortable to start a new solution with the ABP framework. +While you can start with an empty project and add needed packages manually, startup templates make easy and comfortable to start a new solution with the ABP framework. Click the name from the list below to see the documentation of the related startup template: -Click to the name from the list below to see the documentation of the related startup template: - -* [**mvc**](Mvc.md): ASP.NET Core MVC application template. -* [**mvc-module**](Mvc-Module.md): ASP.NET Core MVC module/service template. +* [**app**](Application.md): Application template. +* [**module**](Module.md): Module/service template. diff --git a/docs/en/Startup-Templates/Module.md b/docs/en/Startup-Templates/Module.md new file mode 100644 index 00000000000..fa425c67e23 --- /dev/null +++ b/docs/en/Startup-Templates/Module.md @@ -0,0 +1,158 @@ +# MVC Module Startup Template + +This template can be used to create a **reusable [application module](../Modules/Index.md)** based on the [module development best practices & conventions](../Best-Practices/Index.md). It is also suitable for creating **microservices** (with or without UI). + +## How to Start With? + +You can use the [ABP CLI](../CLI.md) to create a new project using this startup template. Alternatively, you can directly create & download from the [Get Started](https://abp.io/get-started) page. CLI approach is used here. + +First, install the ABP CLI if you haven't installed before: + +```bash +dotnet tool install -g Volo.Abp.Cli +``` + +Then use the `abp new` command in an empty folder to create a new solution: + +```bash +abp new Acme.IssueManagement -t module +``` + +- `Acme.IssueManagement` is the solution name, like *YourCompany.YourProduct*. You can use single level, two-levels or three-levels naming. + +### Without User Interface + +The template comes with an MVC UI by default. You can use `--no-ui` option to not include the UI layer. + +````bash +abp new Acme.IssueManagement -t mvc-module --no-ui +```` + +## Solution Structure + +Based on the options you've specified, you will get a slightly different solution structure. If you don't specify any option, you will have a solution like shown below: + +![issuemanagement-module-solution](../images/issuemanagement-module-solution.png) + +Projects are organized as `src`, `test` and `host` folders: + +* `src` folder contains the actual module which is layered based on [DDD](../Domain-Driven-Design.md) principles. +* `test` folder contains unit & integration tests. +* `host` folder contains applications with different configurations to demonstrate how to host the module in an application. These are not a part of the module, but useful on development. + +The diagram below shows the layers & project dependencies of the module: + +![layered-project-dependencies-module](../images/layered-project-dependencies-module.png) + +Each section below will explain the related project & its dependencies. + +### .Domain.Shared Project + +This project contains constants, enums and other objects these are actually a part of the domain layer, but needed to be used by all layers/projects in the solution. + +An `IssueType` enum and an `IssueConsts` class (which may have some constant fields for the `Issue` entity, like `MaxTitleLength`) are good candidates for this project. + +- This project has no dependency to other projects in the solution. All other projects depend on this directly or indirectly. + +### .Domain Project + +This is the domain layer of the solution. It mainly contains [entities, aggregate roots](../Entities.md), [domain services](../Domain-Services.md), [value types](../Value-Types.md), [repository interfaces](../Repositories.md) and other domain objects. + +An `Issue` entity, an `IssueManager` domain service and an `IIssueRepository` interface are good candidates for this project. + +- Depends on the `.Domain.Shared` because it uses constants, enums and other objects defined in that project. + +### .Application.Contracts Project + +This project mainly contains [application service](../Application-Services.md) **interfaces** and [Data Transfer Objects](../Data-Transfer-Objects.md) (DTO) of the application layer. It does exists to separate interface & implementation of the application layer. In this way, the interface project can be shared to the clients as a contract package. + +An `IIssueAppService` interface and an `IssueCreationDto` class are good candidates for this project. + +- Depends on the `.Domain.Shared` because it may use constants, enums and other shared objects of this project in the application service interfaces and DTOs. + +### .Application Project + +This project contains the [application service](../Application-Services.md) **implementations** of the interfaces defined in the `.Application.Contracts` project. + +An `IssueAppService` class is a good candidate for this project. + +- Depends on the `.Application.Contracts` project to be able to implement the interfaces and use the DTOs. +- Depends on the `.Domain` project to be able to use domain objects (entities, repository interfaces... etc.) to perform the application logic. + +### .EntityFrameworkCore Project + +This is the integration project for EF Core. It defines the `DbContext` and implements repository interfaces defined in the `.Domain` project. + +- Depends on the `.Domain` project to be able to reference to entities and repository interfaces. + +> You can delete this project if you don't want to support EF Core for your module. + +### .MongoDB Project + +This is the integration project for MongoDB. + +- Depends on the `.Domain` project to be able to reference to entities and repository interfaces. + +> You can delete this project if you don't want to support MongoDB for your module. + +### Test Projects + +The solution has multiple test projects, one for each layer: + +- `.Domain.Tests` is used to test the domain layer. +- `.Application.Tests` is used to test the application layer. +- `.EntityFrameworkCore.Tests` is used to test EF Core configuration and custom repositories. +- `.MongoDB.Tests` is used to test MongoDB configuration and custom repositories. +- `.TestBase` is a base (shared) project for all tests. + +In addition, `.HttpApi.Client.ConsoleTestApp` is a console application (not an automated test project) which demonstrate the usage of HTTP APIs from a Dotnet application. + +Test projects are prepared for integration testing; + +- It is fully integrated to ABP framework and all services in your application. +- It uses SQLite in-memory database for EF Core. For MongoDB, it uses the [Mongo2Go](https://github.com/Mongo2Go/Mongo2Go) library. +- Authorization is disabled, so any application service can be easily used in tests. + +You can still create unit tests for your classes which will be harder to write (because you will need to prepare mock/fake objects), but faster to run (because it only tests a single class and skips all initialization process). + +> Domain & Application tests are using EF Core. If you remove EF Core integration or you want to use MongoDB for testing these layers, you should manually change project references & module dependencies. + +### Host Projects + +The solution has a few host applications to run your module. Host applications are used to run your module in a fully configured application. It is useful on development. Host applications includes some other modules in addition to the module being developed: + +Host applications support two types of scenarios. + +#### Single (Unified) Application Scenario + +If your module has a UI, then `.Web.Unified` application is used to host the UI and API on a single point. It has its own `appsettings.json` file (that includes the database connection string) and EF Core database migrations. + +For the `.Web.Unified` application, there is a single database, named `YourProjectName_Unified` (like *IssueManagement_Unified* for this sample). + +> If you've selected the `--no-ui` option, this project will not be in your solution. + +##### How to Run? + +Set it as the startup project, run `Update-Database` command for the EF Core from Package Manager Console and run your application. Default username is `admin` and password is `1q2w3E*`. + +#### Separated Deployment & Databases Scenario + +In this scenario, there are three applications; + +* `.IdentityServer` application is an authentication server used by other applications. It has its own `appsettings.json` that contains database connection and other configurations. +* `.HttpApi.Host` hosts the HTTP API of the module. It has its own `appsettings.json` that contains database connections and other configurations. +* `.Web.Host` host the UI of the module. This project contains an `appsettings.json` file, but it does not have a connection string because it never connects to the database. Instead, it mainly contains endpoint of the remote API server and the authentication server. + +The diagram below shows the relation of the applications: + +![tiered-solution-applications](../images/tiered-solution-applications.png) + +`.Web.Host` project uses OpenId Connect Authentication to get identity and access tokens for the current user from the `.IdentityServer`. Then uses the access token to call the `.HttpApi.Host`. HTTP API server uses bearer token authentication to obtain claims from the access token to authorize the current user. + +##### How to Run? + +You should run the application with the given order: + +- First, run the `.IdentityServer` since other applications depends on it. +- Then run the `.HttpApi.Host` since it is used by the `.Web.Host` application. +- Finally, you can run the `.Web.Host` project and login to the application using `admin` as the username and `1q2w3E*` as the password. diff --git a/docs/en/Startup-Templates/Mvc-Module.md b/docs/en/Startup-Templates/Mvc-Module.md deleted file mode 100644 index 1a2c6c275f1..00000000000 --- a/docs/en/Startup-Templates/Mvc-Module.md +++ /dev/null @@ -1,158 +0,0 @@ -# MVC Module Startup Template - -This template can be used to create a **reusable [application module](../Modules/Index.md)** based on the [module development best practices & conventions](../Best-Practices/Index.md). It is also suitable for creating **microservices** (with or without UI). - -## How to Start With? - -You can use the [ABP CLI](../CLI.md) to create a new project using this startup template. Alternatively, you can directly create & download from the [Get Started](https://abp.io/get-started) page. CLI approach is used here. - -First, install the ABP CLI if you haven't installed before: - -```bash -dotnet tool install -g Volo.Abp.Cli -``` - -Then use the `abp new` command in an empty folder to create a new solution: - -```bash -abp new Acme.IssueManagement -t mvc-module -``` - -- `Acme.IssueManagement` is the solution name, like *YourCompany.YourProduct*. You can use single level, two-levels or three-levels naming. - -### Without User Interface - -The template comes with a UI by default. You can use `--no-ui` option to not include the UI layer. - -````bash -abp new Acme.IssueManagement -t mvc-module --no-ui -```` - -## Solution Structure - -Based on the options you've specified, you will get a slightly different solution structure. If you don't specify any option, you will have a solution like shown below: - -![issuemanagement-module-solution](../images/issuemanagement-module-solution.png) - -Projects are organized as `src`, `test` and `host` folders: - -* `src` folder contains the actual module which is layered based on [DDD](../Domain-Driven-Design.md) principles. -* `test` folder contains unit & integration tests. -* `host` folder contains applications with different configurations to demonstrate how to host the module in an application. These are not a part of the module, but useful on development. - -The diagram below shows the layers & project dependencies of the module: - -![layered-project-dependencies-module](../images/layered-project-dependencies-module.png) - -Each section below will explain the related project & its dependencies. - -### .Domain.Shared Project - -This project contains constants, enums and other objects these are actually a part of the domain layer, but needed to be used by all layers/projects in the solution. - -An `IssueType` enum and an `IssueConsts` class (which may have some constant fields for the `Issue` entity, like `MaxTitleLength`) are good candidates for this project. - -- This project has no dependency to other projects in the solution. All other projects depend on this directly or indirectly. - -### .Domain Project - -This is the domain layer of the solution. It mainly contains [entities, aggregate roots](../Entities.md), [domain services](../Domain-Services.md), [value types](../Value-Types.md), [repository interfaces](../Repositories.md) and other domain objects. - -An `Issue` entity, an `IssueManager` domain service and an `IIssueRepository` interface are good candidates for this project. - -- Depends on the `.Domain.Shared` because it uses constants, enums and other objects defined in that project. - -### .Application.Contracts Project - -This project mainly contains [application service](../Application-Services.md) **interfaces** and [Data Transfer Objects](../Data-Transfer-Objects.md) (DTO) of the application layer. It does exists to separate interface & implementation of the application layer. In this way, the interface project can be shared to the clients as a contract package. - -An `IIssueAppService` interface and an `IssueCreationDto` class are good candidates for this project. - -- Depends on the `.Domain.Shared` because it may use constants, enums and other shared objects of this project in the application service interfaces and DTOs. - -### .Application Project - -This project contains the [application service](../Application-Services.md) **implementations** of the interfaces defined in the `.Application.Contracts` project. - -An `IssueAppService` class is a good candidate for this project. - -- Depends on the `.Application.Contracts` project to be able to implement the interfaces and use the DTOs. -- Depends on the `.Domain` project to be able to use domain objects (entities, repository interfaces... etc.) to perform the application logic. - -### .EntityFrameworkCore Project - -This is the integration project for EF Core. It defines the `DbContext` and implements repository interfaces defined in the `.Domain` project. - -- Depends on the `.Domain` project to be able to reference to entities and repository interfaces. - -> You can delete this project if you don't want to support EF Core for your module. - -### .MongoDB Project - -This is the integration project for MongoDB. - -- Depends on the `.Domain` project to be able to reference to entities and repository interfaces. - -> You can delete this project if you don't want to support MongoDB for your module. - -### Test Projects - -The solution has multiple test projects, one for each layer: - -- `.Domain.Tests` is used to test the domain layer. -- `.Application.Tests` is used to test the application layer. -- `.EntityFrameworkCore.Tests` is used to test EF Core configuration and custom repositories. -- `.MongoDB.Tests` is used to test MongoDB configuration and custom repositories. -- `.TestBase` is a base (shared) project for all tests. - -In addition, `.HttpApi.Client.ConsoleTestApp` is a console application (not an automated test project) which demonstrate the usage of HTTP APIs from a Dotnet application. - -Test projects are prepared for integration testing; - -- It is fully integrated to ABP framework and all services in your application. -- It uses SQLite in-memory database for EF Core. For MongoDB, it uses the [Mongo2Go](https://github.com/Mongo2Go/Mongo2Go) library. -- Authorization is disabled, so any application service can be easily used in tests. - -You can still create unit tests for your classes which will be harder to write (because you will need to prepare mock/fake objects), but faster to run (because it only tests a single class and skips all initialization process). - -> Domain & Application tests are using EF Core. If you remove EF Core integration or you want to use MongoDB for testing these layers, you should manually change project references & module dependencies. - -### Host Projects - -The solution has a few host applications to run your module on development. Host applications are used to run your module in a fully configured application. It is useful on development. Host applications includes some other modules in addition to the module being developed: - -Host applications support two types of scenarios. - -#### Single (Unified) Application Scenario - -If your module has a UI, then `.Web.Unified` application is used to host the UI and API on a single point. It has its own `appsettings.json` file (that includes the database connection string) and EF Core database migrations. - -For the `.Web.Unified` application, there is a single database, named `YourProjectName_Unified` (like *IssueManagement_Unified* for this sample). - -> If you've selected the `--no-ui` option, this project will not be in your solution. - -##### How to Run? - -Set it as the startup project, run `Update-Database` command for the EF Core from Package Manager Console and run your application. Default username is `admin` and password is `1q2w3E*`. - -#### Separated Deployment & Databases Scenario - -In this scenario, there are three applications; - -* `.IdentityServer` application is an authentication server used by other applications. It has its own `appsettings.json` that contains database connection and other configurations. -* `.HttpApi.Host` hosts the HTTP API of the module. It has its own `appsettings.json` that contains database connections and other configurations. -* `.Web.Host` host the UI of the module. This project contains an `appsettings.json` file, but it does not have a connection string because it never connects to the database. Instead, it mainly contains endpoint of the remote API server and the authentication server. - -The diagram below shows the relation of the applications: - -![tiered-solution-applications](../images/tiered-solution-applications.png) - -`.Web.Host` project uses OpenId Connect Authentication to get identity and access tokens for the current user from the `.IdentityServer`. Then uses the access token to call the `.HttpApi.Host`. HTTP API server uses bearer token authentication to obtain claims from the access token to authorize the current user. - -##### How to Run? - -You should run the application with the given order: - -- First, run the `.IdentityServer` since other applications depends on it. -- Then run the `.HttpApi.Host` since it is used by the `.Web.Host` application. -- Finally, you can run the `.Web.Host` project and login to the application using `admin` as the username and `1q2w3E*` as the password. diff --git a/docs/en/Startup-Templates/Mvc.md b/docs/en/Startup-Templates/Mvc.md deleted file mode 100644 index 09b278aadc3..00000000000 --- a/docs/en/Startup-Templates/Mvc.md +++ /dev/null @@ -1,260 +0,0 @@ -# MVC Application Startup Template - -## Introduction - -This template provides a layered (or tiered, based on the preference) application structure based on the [Domain Driven Design](../Domain-Driven-Design.md) (DDD) practices. - -This document explains the solution structure and projects in details. - -* See [Getting Started With the ASP.NET Core MVC Template](../Getting-Started-AspNetCore-MVC-Template.md) to create a new solution and run it for this template. -* See the [ASP.NET Core MVC Tutorial](../Tutorials/AspNetCore-Mvc/Part-I.md) to learn how to develop applications using this template. - -## How to Start With? - -You can use the [ABP CLI](../CLI.md) to create a new project using this startup template. Alternatively, you can directly create & download from the [Get Started](https://abp.io/get-started) page. CLI approach is used here. - -First, install the ABP CLI if you haven't installed before: - -````bash -dotnet tool install -g Volo.Abp.Cli -```` - -Then use the `abp new` command in an empty folder to create a new solution: - -````bash -abp new Acme.BookStore -t mvc -```` - -* `Acme.BookStore` is the solution name, like *YourCompany.YourProduct*. You can use single level, two-levels or three-levels naming. -* This example specified the template name (`-t` or `--template` option). However, `mvc` is already the default template if you don't specify it. - -### Specify the Database Provider - -This template supports the following database providers: - -- `ef`: Entity Framework Core (default) -- `mongodb`: MongoDB - -Use `-d` (or `--database-provider`) option to specify the database provider: - -````bash -abp new Acme.BookStore -d mongodb -```` - -### Create a Tiered Solution - -`--tiered` option is used to create a tiered solution where Web and Http API layers are physically separated. If not specified, it creates a layered solution which is less complex and suitable for most scenarios. - -````bash -abp new Acme.BookStore --tiered -```` - -See the "Tiered Structure" section below for the tiered approach. - -## Solution Structure - -Based on the options you've specified, you will get a slightly different solution structure. - -### Default Structure - -If you don't specify any option, you will have a solution like shown below: - -![bookstore-visual-studio-solution-v3](../images/bookstore-visual-studio-solution-v3.png) - -Projects are organized in `src` and `test` folders. `src` folder contains the actual application which is layered based on [DDD](../Domain-Driven-Design.md) principles as mentioned before. - -The diagram below shows the layers & project dependencies of the application: - -![layered-project-dependencies](../images/layered-project-dependencies.png) - -Each section below will explain the related project & its dependencies. - -#### .Domain.Shared Project - -This project contains constants, enums and other objects these are actually a part of the domain layer, but needed to be used by all layers/projects in the solution. - -A `BookType` enum and a `BookConsts` class (which may have some constant fields for the `Book` entity, like `MaxNameLength`) are good candidates for this project. - -* This project has no dependency to other projects in the solution. All other projects depend on this directly or indirectly. - -#### .Domain Project - -This is the domain layer of the solution. It mainly contains [entities, aggregate roots](../Entities.md), [domain services](../Domain-Services.md), [value types](../Value-Types.md), [repository interfaces](../Repositories.md) and other domain objects. - -A `Book` entity, a `BookManager` domain service and an `IBookRepository` interface are good candidates for this project. - -* Depends on the `.Domain.Shared` because it uses constants, enums and other objects defined in that project. - -#### .Application.Contracts Project - -This project mainly contains [application service](../Application-Services.md) **interfaces** and [Data Transfer Objects](../Data-Transfer-Objects.md) (DTO) of the application layer. It does exists to separate interface & implementation of the application layer. In this way, the interface project can be shared to the clients as a contract package. - -An `IBookAppService` interface and a `BookCreationDto` class are good candidates for this project. - -* Depends on the `.Domain.Shared` because it may use constants, enums and other shared objects of this project in the application service interfaces and DTOs. - -#### .Application Project - -This project contains the [application service](../Application-Services.md) **implementations** of the interfaces defined in the `.Application.Contracts` project. - -A `BookAppService` class is a good candidate for this project. - -* Depends on the `.Application.Contracts` project to be able to implement the interfaces and use the DTOs. -* Depends on the `.Domain` project to be able to use domain objects (entities, repository interfaces... etc.) to perform the application logic. - -#### .EntityFrameworkCore Project - -This is the integration project for the EF Core. It defines the `DbContext` and implements repository interfaces defined in the `.Domain` project. - -* Depends on the `.Domain` project to be able to reference to entities and repository interfaces. - -> This project is available only if you are using EF Core as the database provider. If you select another database provider, its name will be different. - -#### .EntityFrameworkCore.DbMigrations Project - -Contains EF Core database migrations for the solution. It has a separated `DbContext` to dedicated to manage migrations. - -ABP is a modular framework and with an ideal design, each module has its own `DbContext` class. This is where the migration `DbContext` comes into play and unifies all `DbContext` configurations into a single model to maintain a single database schema. For more advanced scenarios, you can have multiple databases (each contains a single or a few module tables) and multiple migration `DbContext`s (each maintains a different database schema). - -Notice that the migration `DbContext` is only used for database migrations and *not used on runtime*. - -* Depends on the `.EntityFrameworkCore` project since it re-uses the configuration defined for the `DbContext` of the application. - -> This project is available only if you are using EF Core as the database provider. - -#### .DbMigrator Project - -This is a console application which simplifies to execute database migrations on development and production environments. When you run this application, it; - -* Creates the database if necessary. -* Applies the pending database migrations. -* Seeds initial data if needed. - -> This project has its own `appsettings.json` file. So, if you want to change the database connection string, remember to change this file too. - -Especially, seeding initial data is important at this point. ABP has a modular data seed infrastructure. See [its documentation](../Data-Seeding.md) for more about the data seeding. - -While creating database & applying migrations seems only necessary for relational databases, this projects comes even if you choose a NoSQL database provider (like MongoDB). In that case, it still seeds initial data which is necessary for the application. - -* Depends on the `.EntityFrameworkCore.DbMigrations` project (for EF Core) since it needs to access to the migrations. -* Depends on the `.Application.Contracts` project to be able to access permission definitions, because initial data seeder grants all permissions for the admin role by default. - -#### .HttpApi Project - -This project is used to define your API Controllers. - -Most of time you don't need to manually define API Controllers since ABP's [Auto API Controllers](../AspNetCore/Auto-API-Controllers.md) feature creates them automagically based on your application layer. However, in case of you need to write API controllers, this is the best place to do it. - -* Depends on the `.Application.Contracts` project to be able to inject the application service interfaces. - -#### .HttpApi.Client Project - -This is a project that defines C# client proxies to use the HTTP APIs of the solution. You can share this library to 3rd-party clients, so they can easily consume your HTTP APIs in their Dotnet applications (For other type of applications, they can still use your APIs, either manually or using a tool in their own platform) - -Most of time you don't need to manually create C# client proxies, thanks to ABP's [Dynamic C# API Clients](../AspNetCore/Dynamic-CSharp-API-Clients.md) feature. - -`.HttpApi.Client.ConsoleTestApp` project is a console application created to demonstrate the usage of the client proxies. - -* Depends on the `.Application.Contracts` project to be able to share the same application service interfaces and DTOs with the remote service. - -> You can delete this project & dependencies if you don't need to create C# client proxies for your APIs. - -#### .Web Project - -This project contains the User Interface (UI) of the application. It contains razor pages, JavaScript files, style files, images and so on... - -This project contains the main `appsettings.json` file that contains the connection string and other configuration of the application. - -* Depends on the `.HttpApi` since UI layer needs to use APIs and application service interfaces of the solution. - -> If you check the source code of the `.Web.csproj` file, you will see the references to the `.Application` and the `.EntityFrameworkCore.DbMigrations` projects. -> -> These references are actually not needed while coding your UI layer, because UI layer normally doesn't depend on the EF Core or the Application layer's implementation. This startup templates are ready for the tiered deployment, where API layer is hosted in a separate server than the UI layer. -> -> However, if you don't choose the `--tiered` option, these references will be in the .Web project to be able to host the Web, API and application layers in a single application endpoint. -> -> This gives you to ability to use domain entities & repositories in your presentation layer. However, this is considered as a bad practice according to the DDD. - -#### Test Projects - -The solution has multiple test projects, one for each layer: - -* `.Domain.Tests` is used to test the domain layer. -* `.Application.Tests` is used to test the application layer. -* `.EntityFrameworkCore.Tests` is used to test EF Core configuration and custom repositories. -* `.Web.Tests` is used to test the UI. -* `.TestBase` is a base (shared) project for all tests. - -In addition, `.HttpApi.Client.ConsoleTestApp` is a console application (not an automated test project) which demonstrate the usage of HTTP APIs from a Dotnet application. - -Test projects are prepared for integration testing; - -* It is fully integrated to ABP framework and all services in your application. -* It uses SQLite in-memory database for EF Core. For MongoDB, it uses the [Mongo2Go](https://github.com/Mongo2Go/Mongo2Go) library. -* Authorization is disabled, so any application service can be easily used in tests. - -You can still create unit tests for your classes which will be harder to write (because you will need to prepare mock/fake objects), but faster to run (because it only tests a single class and skips all initialization process). - -#### How to Run? - -Set `.Web` as the startup project and run the application. Default username is `admin` and password is `1q2w3E*`. - -See [Getting Started With the ASP.NET Core MVC Template](../Getting-Started-AspNetCore-MVC-Template.md) for more information. - -### Tiered Structure - -If you specify the `--tiered` option as described above, the solution created will be a tiered solution. The purpose of the tiered structure is to be able to **deploy Web application and HTTP API to different servers**: - -![bookstore-visual-studio-solution-v3](../images/tiered-solution-servers.png) - -* Browser runs your UI by executing HTML, CSS & JavaScript. -* Web servers hosts static UI files (CSS, JavaScript, image... etc.) & dynamic components (e.g. Razor pages). It performs HTTP requests to the API server to execute the business logic of the application. -* API Server hosts the HTTP APIs which then use application & domain layers of the application to perform the business logic. -* Finally, database server hosts your database. - -So, the resulting solution allows a 4-tiered deployment, by comparing to 3-tiered deployment of the default structure explained before. - -> Unless you actually need to such a 4-tiered deployment, its suggested to go with the default structure which is simpler to develop, deploy and maintain. - -The solution structure is shown below: - -![bookstore-visual-studio-solution-v3](../images/bookstore-visual-studio-solution-tiered.png) - -As different from the default structure, two new projects come into play: `.IdentityServer` & `.HttpApi.Host`. - -#### .IdentityServer Project - -This project is used as an authentication server for other projects. `.Web` project uses OpenId Connect Authentication to get identity and access tokens for the current user from the IdentityServer. Then uses the access token to call the HTTP API server. HTTP API server uses bearer token authentication to obtain claims from the access token to authorize the current user. - -![tiered-solution-applications](../images/tiered-solution-applications.png) - -ABP uses the open source [IdentityServer4](https://identityserver.io/) framework for the authentication between applications. See [IdentityServer4 documentation](http://docs.identityserver.io) for details about the IdentityServer4 and OpenID Connect protocol. - -It has its own `appsettings.json` that contains database connection and other configurations. - -#### .HttpApi.Host Project - -This project is an application that hosts the API of the solution. It has its own `appsettings.json` that contains database connection and other configurations. - -#### .Web Project - -Just like the default structure, this project contains the User Interface (UI) of the application. It contains razor pages, JavaScript files, style files, images and so on... - -This project contains an `appsettings.json` file, but this time it does not have a connection string because it never connects to the database. Instead, it mainly contains endpoint of the remote API server and the authentication server. - -#### Pre-requirements - -* [Redis](https://redis.io/): The applications use Redis as as distributed cache. So, you need to have Redis installed & running. - -#### How to Run? - -You should run the application with the given order: - -* First, run the `.IdentityServer` since other applications depends on it. -* Then run the `.HttpApi.Host` since it is used by the `.Web` application. -* Finally, you can run the `.Web` project and login to the application (using `admin` as the username and `1q2w3E*` as the password). - -## What's Next? - -- See [Getting Started With the ASP.NET Core MVC Template](../Getting-Started-AspNetCore-MVC-Template.md) to create a new solution and run it for this template. -- See the [ASP.NET Core MVC Tutorial](../Tutorials/AspNetCore-Mvc/Part-I.md) to learn how to develop applications using this template. diff --git a/docs/en/Tutorials/Angular/Part-I.md b/docs/en/Tutorials/Angular/Part-I.md new file mode 100644 index 00000000000..06ba6aa41d8 --- /dev/null +++ b/docs/en/Tutorials/Angular/Part-I.md @@ -0,0 +1,311 @@ +## Angular Tutorial - Part I + +### About this Tutorial + +In this tutorial series, you will build an application that is used to manage a list of books & their authors. **Angular** will be used as the UI framework and **MongoDB** will be used as the database provider. + +This is the first part of the ASP.NET Core MVC tutorial series. See all parts: + +- **Part I: Create the project and a book list page (this tutorial)** +- [Part II: Create, Update and Delete books](Part-II.md) + +You can access to the **source code** of the application from the GitHub repository (TOD: link). + +### Creating the Project + +Create a new project named `Acme.BookStore` by selecting the Angular as the UI framework and MongoDB as the database provider, create the database and run the application by following the [Getting Started document](../../Getting-Started-Angular-Template.md). + +### Solution Structure (Backend) + +This is how the layered solution structure looks after it's created: + +![bookstore-backend-solution](images\bookstore-backend-solution-v2.png) + +> You can see the [Application template document](../../Startup-Templates/Application.md) to understand the solution structure in details. However, you will understand the basics with this tutorial. + +### Create the Book Entity + +Domain layer in the startup template is separated into two projects: + +- `Acme.BookStore.Domain` contains your [entities](../../Entities.md), [domain services](../../Domain-Services.md) and other core domain objects. +- `Acme.BookStore.Domain.Shared` contains constants, enums or other domain related objects those can be shared with clients. + +Define [entities](../../Entities.md) in the **domain layer** (`Acme.BookStore.Domain` project) of the solution. The main entity of the application is the `Book`. Create a class, named `Book`, in the `Acme.BookStore.Domain` project as shown below: + +```C# +using System; +using Volo.Abp.Domain.Entities.Auditing; + +namespace Acme.BookStore +{ + public class Book : AuditedAggregateRoot + { + public string Name { get; set; } + + public BookType Type { get; set; } + + public DateTime PublishDate { get; set; } + + public float Price { get; set; } + } +} +``` + +- ABP has two fundamental base classes for entities: `AggregateRoot` and `Entity`. **Aggregate Root** is one of the **Domain Driven Design (DDD)** concepts. See [entity document](../../Entities.md) for details and best practices. +- `Book` entity inherits `AuditedAggregateRoot` which adds some auditing properties (`CreationTime`, `CreatorId`, `LastModificationTime`... etc.) on top of the `AggregateRoot` class. +- `Guid` is the **primary key type** of the `Book` entity. + +#### BookType Enum + +Define the `BookType` enum in the `Acme.BookStore.Domain.Shared` project: + +```C# +namespace Acme.BookStore +{ + public enum BookType + { + Undefined, + Adventure, + Biography, + Dystopia, + Fantastic, + Horror, + Science, + ScienceFiction, + Poetry + } +} +``` + +#### Add Book Entity to Your DbContext + +Add a `IMongoCollection` property to the `BookStoreMongoDbContext` inside the `Acme.BookStore.MongoDB` project: + +````csharp +public class BookStoreMongoDbContext : AbpMongoDbContext +{ + public IMongoCollection Books => Collection(); + ... +} +```` + +#### Add Seed (Sample) Data + +This section is optional, but it would be good to have an initial data in the database in the first run. ABP provides a [data seed system](../../Data-Seeding.md). Create a class deriving from the `IDataSeedContributor` in the `.Domain` project: + +````csharp +using System; +using System.Threading.Tasks; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories; + +namespace Acme.BookStore +{ + public class BookStoreDataSeederContributor + : IDataSeedContributor, ITransientDependency + { + private readonly IRepository _bookRepository; + + public BookStoreDataSeederContributor(IRepository bookRepository) + { + _bookRepository = bookRepository; + } + + public async Task SeedAsync(DataSeedContext context) + { + if (await _bookRepository.GetCountAsync() > 0) + { + return; + } + + await _bookRepository.InsertAsync( + new Book + { + Name = "1984", + Type = BookType.Dystopia, + PublishDate = new DateTime(1949, 6, 8), + Price = 19.84f + } + ); + + await _bookRepository.InsertAsync( + new Book + { + Name = "The Hitchhiker's Guide to the Galaxy", + Type = BookType.ScienceFiction, + PublishDate = new DateTime(1995, 9, 27), + Price = 42.0f + } + ); + } + } +} + +```` + +`BookStoreDataSeederContributor` simply inserts two books into database if there is no book added before. ABP automatically discovers and executes this class when you seed the database by running the `Acme.BookStore.DbMigrator` project. + +### Create the Application Service + +The next step is to create an [application service](../../Application-Services.md) to manage (create, list, update, delete...) the books. Application layer in the startup template is separated into two projects: + +- `Acme.BookStore.Application.Contracts` mainly contains your DTOs and application service interfaces. +- `Acme.BookStore.Application` contains the implementations of your application services. + +#### BookDto + +Create a DTO class named `BookDto` into the `Acme.BookStore.Application.Contracts` project: + +```C# +using System; +using Volo.Abp.Application.Dtos; + +namespace Acme.BookStore +{ + public class BookDto : AuditedEntityDto + { + public string Name { get; set; } + + public BookType Type { get; set; } + + public DateTime PublishDate { get; set; } + + public float Price { get; set; } + } +} +``` + +- **DTO** classes are used to **transfer data** between the *presentation layer* and the *application layer*. See the [Data Transfer Objects document](../../Data-Transfer-Objects.md) for more details. +- `BookDto` is used to transfer book data to the presentation layer in order to show the book information on the UI. +- `BookDto` is derived from the `AuditedEntityDto` which has audit properties just like the `Book` class defined above. + +It will be needed to convert `Book` entities to `BookDto` objects while returning books to the presentation layer. [AutoMapper](https://automapper.org) library can automate this conversion when you define the proper mapping. Startup template comes with AutoMapper configured, so you can just define the mapping in the `BookStoreApplicationAutoMapperProfile` class in the `Acme.BookStore.Application` project: + +```csharp +using AutoMapper; + +namespace Acme.BookStore +{ + public class BookStoreApplicationAutoMapperProfile : Profile + { + public BookStoreApplicationAutoMapperProfile() + { + CreateMap(); + } + } +} +``` + +#### CreateUpdateBookDto + +Create a DTO class named `CreateUpdateBookDto` into the `Acme.BookStore.Application.Contracts` project: + +```c# +using System; +using System.ComponentModel.DataAnnotations; + +namespace Acme.BookStore +{ + public class CreateUpdateBookDto + { + [Required] + [StringLength(128)] + public string Name { get; set; } + + [Required] + public BookType Type { get; set; } = BookType.Undefined; + + [Required] + public DateTime PublishDate { get; set; } + + [Required] + public float Price { get; set; } + } +} +``` + +- This DTO class is used to get book information from the user interface while creating or updating a book. +- It defines data annotation attributes (like `[Required]`) to define validations for the properties. DTOs are [automatically validated](../../Validation.md) by the ABP framework. + +Next, add a mapping in `BookStoreApplicationAutoMapperProfile` from the `CreateUpdateBookDto` object to the `Book` entity: + +```csharp +CreateMap(); +``` + +#### IBookAppService + +Define an interface named `IBookAppService` in the `Acme.BookStore.Application.Contracts` project: + +```C# +using System; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; + +namespace Acme.BookStore +{ + public interface IBookAppService : + ICrudAppService< //Defines CRUD methods + BookDto, //Used to show books + Guid, //Primary key of the book entity + PagedAndSortedResultRequestDto, //Used for paging/sorting on getting a list of books + CreateUpdateBookDto, //Used to create a new book + CreateUpdateBookDto> //Used to update a book + { + + } +} +``` + +- Defining interfaces for application services is not required by the framework. However, it's suggested as a best practice. +- `ICrudAppService` defines common **CRUD** methods: `GetAsync`, `GetListAsync`, `CreateAsync`, `UpdateAsync` and `DeleteAsync`. It's not required to extend it. Instead, you could inherit from the empty `IApplicationService` interface and define your own methods manually. +- There are some variations of the `ICrudAppService` where you can use separated DTOs for each method. + +#### BookAppService + +Implement the `IBookAppService` as named `BookAppService` in the `Acme.BookStore.Application` project: + +```C# +using System; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; +using Volo.Abp.Domain.Repositories; + +namespace Acme.BookStore +{ + public class BookAppService : + CrudAppService, + IBookAppService + { + public BookAppService(IRepository repository) + : base(repository) + { + + } + } +} +``` + +- `BookAppService` is derived from `CrudAppService<...>` which implements all the CRUD methods defined above. +- `BookAppService` injects `IRepository` which is the default repository for the `Book` entity. ABP automatically creates default repositories for each aggregate root (or entity). See the [repository document](../../Repositories.md). +- `BookAppService` uses `IObjectMapper` to convert `Book` objects to `BookDto` objects and `CreateUpdateBookDto` objects to `Book` objects. The Startup template uses the [AutoMapper](http://automapper.org/) library as the object mapping provider. You defined the mappings before, so it will work as expected. + +### Auto API Controllers + +You normally create **Controllers** to expose application services as **HTTP API** endpoints. Thus allowing browser or 3rd-party clients to call them via AJAX. ABP can [**automagically**](../../AspNetCore/Auto-API-Controllers.md) configures your application services as MVC API Controllers by convention. + +#### Swagger UI + +The startup template is configured to run the [swagger UI](https://swagger.io/tools/swagger-ui/) using the [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) library. Run the `Acme.BookStore.HttpApi.Host` application and enter `https://localhost:XXXX/swagger/` (replace XXXX by your own port) as URL on your browser. + +You will see some built-in service endpoints as well as the `Book` service and its REST-style endpoints: + +![bookstore-swagger](images/bookstore-swagger-api.png) + +Swagger has a nice UI to test APIs. You can try to execute the `[GET] /api/app/book` API to get a list of books. + +### Create the Books Page + +It's time to create something visible and usable! \ No newline at end of file diff --git a/docs/en/Tutorials/Angular/images/bookstore-backend-solution-v2.png b/docs/en/Tutorials/Angular/images/bookstore-backend-solution-v2.png new file mode 100644 index 00000000000..79bcecb5612 Binary files /dev/null and b/docs/en/Tutorials/Angular/images/bookstore-backend-solution-v2.png differ diff --git a/docs/en/Tutorials/Angular/images/bookstore-swagger-api.png b/docs/en/Tutorials/Angular/images/bookstore-swagger-api.png new file mode 100644 index 00000000000..437c7725038 Binary files /dev/null and b/docs/en/Tutorials/Angular/images/bookstore-swagger-api.png differ diff --git a/docs/en/Tutorials/AspNetCore-Mvc/Part-I.md b/docs/en/Tutorials/AspNetCore-Mvc/Part-I.md index 8b2f84e55b7..f8bcf90aa04 100644 --- a/docs/en/Tutorials/AspNetCore-Mvc/Part-I.md +++ b/docs/en/Tutorials/AspNetCore-Mvc/Part-I.md @@ -10,11 +10,13 @@ This is the first part of the ASP.NET Core MVC tutorial series. See all parts: - [Part II: Create, Update and Delete books](Part-II.md) - [Part III: Integration Tests](Part-III.md) -You can access to the **source code** of the application from [the GitHub repository](https://github.com/volosoft/abp/tree/master/samples/BookStore). +You can access to the **source code** of the application from [the GitHub repository](https://github.com/abpframework/abp/tree/master/samples/BookStore). + +> You can also watch [this video course](https://amazingsolutions.teachable.com/p/lets-build-the-bookstore-application) prepared by an ABP community member, based on this tutorial. ### Creating the Project -Create a new project named `Acme.BookStore`, create the database and run the application by following the [Getting Started document](../../Getting-Started-AspNetCore-MVC-Template.md). +Create a new project named `Acme.BookStore`, create the database and run the application by following the [Getting Started document](../../Getting-Started-AspNetCore-MVC-Template.md). ### Solution Structure @@ -22,7 +24,7 @@ This is how the layered solution structure looks after it's created: ![bookstore-visual-studio-solution](images/bookstore-visual-studio-solution-v3.png) -> You can see [MVC application template document](../../Startup-Templates/Mvc.md) to understand the solution structure in details. However, you will understand the basics with this tutorial. +> You can see the [Application template document](../../Startup-Templates/Application.md) to understand the solution structure in details. However, you will understand the basics with this tutorial. ### Create the Book Entity @@ -55,7 +57,6 @@ namespace Acme.BookStore * ABP has two fundamental base classes for entities: `AggregateRoot` and `Entity`. **Aggregate Root** is one of the **Domain Driven Design (DDD)** concepts. See [entity document](../../Entities.md) for details and best practices. * `Book` entity inherits `AuditedAggregateRoot` which adds some auditing properties (`CreationTime`, `CreatorId`, `LastModificationTime`... etc.) on top of the `AggregateRoot` class. * `Guid` is the **primary key type** of the `Book` entity. -* Used **data annotation attributes** in this code for EF Core mappings. Alternatively you could use EF Core's [fluent mapping API](https://docs.microsoft.com/en-us/ef/core/modeling) instead. #### BookType Enum @@ -99,7 +100,7 @@ Open `BookStoreDbContextModelCreatingExtensions.cs` file in the `Acme.BookStore. builder.Entity(b => { b.ToTable(BookStoreConsts.DbTablePrefix + "Books", BookStoreConsts.DbSchema); - b.ConfigureAuditedAggregateRoot(); //auto configure for the base class props + b.ConfigureByConvention(); //auto configure for the base class props b.Property(x => x.Name).IsRequired().HasMaxLength(128); }); ```` @@ -222,7 +223,7 @@ using Volo.Abp.Application.Services; namespace Acme.BookStore { public interface IBookAppService : - IAsyncCrudAppService< //Defines CRUD methods + ICrudAppService< //Defines CRUD methods BookDto, //Used to show books Guid, //Primary key of the book entity PagedAndSortedResultRequestDto, //Used for paging/sorting on getting a list of books @@ -235,8 +236,8 @@ namespace Acme.BookStore ```` * Defining interfaces for application services is not required by the framework. However, it's suggested as a best practice. -* `IAsyncCrudAppService` defines common **CRUD** methods: `GetAsync`, `GetListAsync`, `CreateAsync`, `UpdateAsync` and `DeleteAsync`. It's not required to extend it. Instead, you could inherit from the empty `IApplicationService` interface and define your own methods manually. -* There are some variations of the `IAsyncCrudAppService` where you can use separated DTOs for each method. +* `ICrudAppService` defines common **CRUD** methods: `GetAsync`, `GetListAsync`, `CreateAsync`, `UpdateAsync` and `DeleteAsync`. It's not required to extend it. Instead, you could inherit from the empty `IApplicationService` interface and define your own methods manually. +* There are some variations of the `ICrudAppService` where you can use separated DTOs for each method. #### BookAppService @@ -251,8 +252,8 @@ using Volo.Abp.Domain.Repositories; namespace Acme.BookStore { public class BookAppService : - AsyncCrudAppService, + CrudAppService, IBookAppService { public BookAppService(IRepository repository) @@ -264,7 +265,7 @@ namespace Acme.BookStore } ```` -* `BookAppService` is derived from `AsyncCrudAppService<...>` which implements all the CRUD methods defined above. +* `BookAppService` is derived from `CrudAppService<...>` which implements all the CRUD methods defined above. * `BookAppService` injects `IRepository` which is the default repository for the `Book` entity. ABP automatically creates default repositories for each aggregate root (or entity). See the [repository document](../../Repositories.md). * `BookAppService` uses `IObjectMapper` to convert `Book` objects to `BookDto` objects and `CreateUpdateBookDto` objects to `Book` objects. The Startup template uses the [AutoMapper](http://automapper.org/) library as the object mapping provider. You defined the mappings before, so it will work as expected. diff --git a/docs/en/Tutorials/AspNetCore-Mvc/Part-II.md b/docs/en/Tutorials/AspNetCore-Mvc/Part-II.md index eb583c2a519..cab941a9e94 100644 --- a/docs/en/Tutorials/AspNetCore-Mvc/Part-II.md +++ b/docs/en/Tutorials/AspNetCore-Mvc/Part-II.md @@ -10,6 +10,8 @@ This is the second part of the ASP.NET Core MVC tutorial series. See all parts: You can access to the **source code** of the application from [the GitHub repository](https://github.com/volosoft/abp/tree/master/samples/BookStore). +> You can also watch [this video course](https://amazingsolutions.teachable.com/p/lets-build-the-bookstore-application) prepared by an ABP community member, based on this tutorial. + ### Creating a New Book In this section, you will learn how to create a new modal dialog form to create a new book. The result dialog will be like that: diff --git a/docs/en/Tutorials/AspNetCore-Mvc/Part-III.md b/docs/en/Tutorials/AspNetCore-Mvc/Part-III.md index 7b97fcf4833..b115eb27ea4 100644 --- a/docs/en/Tutorials/AspNetCore-Mvc/Part-III.md +++ b/docs/en/Tutorials/AspNetCore-Mvc/Part-III.md @@ -10,6 +10,8 @@ This is the third part of the ASP.NET Core MVC tutorial series. See all parts: You can access to the **source code** of the application from [the GitHub repository](https://github.com/volosoft/abp/tree/master/samples/BookStore). +> You can also watch [this video course](https://amazingsolutions.teachable.com/p/lets-build-the-bookstore-application) prepared by an ABP community member, based on this tutorial. + ### Test Projects in the Solution There are multiple test projects in the solution: diff --git a/docs/en/images/bookstore-swagger-ui-host.png b/docs/en/images/bookstore-swagger-ui-host.png new file mode 100644 index 00000000000..74ff73f7e33 Binary files /dev/null and b/docs/en/images/bookstore-swagger-ui-host.png differ diff --git a/docs/en/images/bookstore-visual-studio-solution-for-spa.png b/docs/en/images/bookstore-visual-studio-solution-for-spa.png new file mode 100644 index 00000000000..5a5a283c7d6 Binary files /dev/null and b/docs/en/images/bookstore-visual-studio-solution-for-spa.png differ diff --git a/docs/zh-Hans/Samples/Microservice-Demo.md b/docs/zh-Hans/Samples/Microservice-Demo.md index fdf183d1b67..aaa780188d8 100644 --- a/docs/zh-Hans/Samples/Microservice-Demo.md +++ b/docs/zh-Hans/Samples/Microservice-Demo.md @@ -903,7 +903,7 @@ Swagger UI已配置,是此服务的默认页面. 如果你导航到URL`http://lo ````json "ConnectionStrings": { "Default": "Server=localhost;Database=MsDemo_Identity;Trusted_Connection=True;MultipleActiveResultSets=true", - "Blogging": "mongodb://localhost|MsDemo_Blogging" + "Blogging": "mongodb://localhost/MsDemo_Blogging" } ```` diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln index 13ef057f974..de41f864c73 100644 --- a/framework/Volo.Abp.sln +++ b/framework/Volo.Abp.sln @@ -236,8 +236,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Cli.Core.Tests", " EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.Mvc.UI.Widgets", "src\Volo.Abp.AspNetCore.Mvc.UI.Widgets\Volo.Abp.AspNetCore.Mvc.UI.Widgets.csproj", "{EE1AAB08-3FBD-487F-B0B4-BEBA4B69528A}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.Mvc.UI.Dashboards", "src\Volo.Abp.AspNetCore.Mvc.UI.Dashboards\Volo.Abp.AspNetCore.Mvc.UI.Dashboards.csproj", "{054D766D-5992-460E-A4D8-936D80BE2C1A}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Ldap", "src\Volo.Abp.Ldap\Volo.Abp.Ldap.csproj", "{4DADBBD2-4C63-4C90-9661-EBF6252A7D6F}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Ldap.Tests", "test\Volo.Abp.Ldap.Tests\Volo.Abp.Ldap.Tests.csproj", "{38FB8F75-426E-4265-8D0E-E121837B6FCC}" @@ -246,9 +244,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Dapper", "src\Volo EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Dapper.Tests", "test\Volo.Abp.Dapper.Tests\Volo.Abp.Dapper.Tests.csproj", "{E026A085-D881-4AE0-9F08-422AC3903BD7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.MailKit", "src\Volo.Abp.MailKit\Volo.Abp.MailKit.csproj", "{0CAED4CC-1CFD-4092-A326-AFE4DB3A9AB4}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.MailKit", "src\Volo.Abp.MailKit\Volo.Abp.MailKit.csproj", "{0CAED4CC-1CFD-4092-A326-AFE4DB3A9AB4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.MailKit.Tests", "test\Volo.Abp.MailKit.Tests\Volo.Abp.MailKit.Tests.csproj", "{70DD6E17-B98B-4B00-8F38-C489E291BB53}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.MailKit.Tests", "test\Volo.Abp.MailKit.Tests\Volo.Abp.MailKit.Tests.csproj", "{70DD6E17-B98B-4B00-8F38-C489E291BB53}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -716,10 +714,6 @@ Global {EE1AAB08-3FBD-487F-B0B4-BEBA4B69528A}.Debug|Any CPU.Build.0 = Debug|Any CPU {EE1AAB08-3FBD-487F-B0B4-BEBA4B69528A}.Release|Any CPU.ActiveCfg = Release|Any CPU {EE1AAB08-3FBD-487F-B0B4-BEBA4B69528A}.Release|Any CPU.Build.0 = Release|Any CPU - {054D766D-5992-460E-A4D8-936D80BE2C1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {054D766D-5992-460E-A4D8-936D80BE2C1A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {054D766D-5992-460E-A4D8-936D80BE2C1A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {054D766D-5992-460E-A4D8-936D80BE2C1A}.Release|Any CPU.Build.0 = Release|Any CPU {4DADBBD2-4C63-4C90-9661-EBF6252A7D6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4DADBBD2-4C63-4C90-9661-EBF6252A7D6F}.Debug|Any CPU.Build.0 = Debug|Any CPU {4DADBBD2-4C63-4C90-9661-EBF6252A7D6F}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -864,7 +858,6 @@ Global {D078553A-C70C-4F56-B3E2-9C5BA6384C72} = {447C8A77-E5F0-4538-8687-7383196D04EA} {F006B0B4-F25D-4511-9FB3-F17AA44BDCEA} = {447C8A77-E5F0-4538-8687-7383196D04EA} {EE1AAB08-3FBD-487F-B0B4-BEBA4B69528A} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} - {054D766D-5992-460E-A4D8-936D80BE2C1A} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {4DADBBD2-4C63-4C90-9661-EBF6252A7D6F} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {38FB8F75-426E-4265-8D0E-E121837B6FCC} = {447C8A77-E5F0-4538-8687-7383196D04EA} {D863A3C3-CC1D-426F-BDD4-02E7AE2A3170} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} diff --git a/framework/Volo.Abp.sln.DotSettings b/framework/Volo.Abp.sln.DotSettings index b1de84b3696..925b5c212a5 100644 --- a/framework/Volo.Abp.sln.DotSettings +++ b/framework/Volo.Abp.sln.DotSettings @@ -5,4 +5,5 @@ ..\..\common.DotSettings True 1 + True \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/BundlerBase.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/BundlerBase.cs index 50b81d92362..90e86068338 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/BundlerBase.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/BundlerBase.cs @@ -1,3 +1,4 @@ +using System; using System.Text; using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Logging; @@ -29,27 +30,44 @@ public BundleResult Bundle(IBundlerContext context) { Logger.LogInformation($"Bundling {context.BundleRelativePath} ({context.ContentFiles.Count} files)"); - var sb = new StringBuilder(); + var bundleContentBuilder = new StringBuilder(); Logger.LogDebug("Bundle files:"); foreach (var file in context.ContentFiles) { - var fileContent = GetFileContent(context, file); - Logger.LogDebug($"- {file} ({fileContent.Length} bytes)"); - sb.AppendLine(fileContent); + AddFileToBundle(context, bundleContentBuilder, file); } - var bundleContent = sb.ToString(); + var bundleContent = bundleContentBuilder.ToString(); + Logger.LogInformation($"Bundled {context.BundleRelativePath} ({bundleContent.Length} bytes)"); - if (context.IsMinificationEnabled) + return new BundleResult(bundleContent); + } + + private void AddFileToBundle(IBundlerContext context, StringBuilder bundleContentBuilder, string fileName) + { + if (context.IsMinificationEnabled && !IsMinFile(fileName)) { - Logger.LogInformation($"Minifying {context.BundleRelativePath} ({bundleContent.Length} bytes)"); - bundleContent = Minifier.Minify(bundleContent, context.BundleRelativePath); + var minFileInfo = GetMinFileInfoOrNull(fileName); + if (minFileInfo != null) + { + Logger.LogDebug($"- {fileName} ({minFileInfo.Length} bytes)"); + bundleContentBuilder.Append(NormalizedCode(minFileInfo.ReadAsString())); + return; + } } - Logger.LogInformation($"Bundled {context.BundleRelativePath} ({bundleContent.Length} bytes)"); + var fileContent = GetFileContent(context, fileName); + Logger.LogDebug($"- {fileName} ({fileContent.Length} bytes)"); - return new BundleResult(bundleContent); + if (context.IsMinificationEnabled) + { + var nonMinifiedSize = fileContent.Length; + fileContent = Minifier.Minify(fileContent, context.BundleRelativePath); + Logger.LogInformation($" -- Minified {context.BundleRelativePath} ({nonMinifiedSize} bytes -> {fileContent.Length} bytes)"); + } + + bundleContentBuilder.Append(NormalizedCode(fileContent)); } protected virtual string GetFileContent(IBundlerContext context, string file) @@ -68,5 +86,22 @@ protected virtual IFileInfo GetFileInfo(IBundlerContext context, string file) return fileInfo; } + + protected virtual bool IsMinFile(string fileName) + { + return fileName.EndsWith($".min.{FileExtension}", StringComparison.InvariantCultureIgnoreCase); + } + + protected virtual IFileInfo GetMinFileInfoOrNull(string file) + { + var fileInfo = WebContentFileProvider.GetFileInfo($"{file.RemovePostFix($".{FileExtension}")}.min.{FileExtension}"); + + return fileInfo.Exists ? fileInfo : null; + } + + protected virtual string NormalizedCode(string code) + { + return code; + } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/Scripts/ScriptBundler.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/Scripts/ScriptBundler.cs index e65379fc748..f5447dc8a3b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/Scripts/ScriptBundler.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/Scripts/ScriptBundler.cs @@ -1,3 +1,4 @@ +using System; using Volo.Abp.AspNetCore.Mvc.UI.Minification.Scripts; using Volo.Abp.AspNetCore.VirtualFileSystem; @@ -11,5 +12,10 @@ public ScriptBundler(IWebContentFileProvider webContentFileProvider, IJavascript : base(webContentFileProvider, minifier) { } + + protected override string NormalizedCode(string code) + { + return code.EnsureEndsWith(';') + Environment.NewLine; + } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperScriptService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperScriptService.cs index 52e05776e87..b4f2ba1b772 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperScriptService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperScriptService.cs @@ -39,7 +39,7 @@ protected override IReadOnlyList GetBundleFiles(string bundleName) protected override void AddHtmlTag(TagHelperContext context, TagHelperOutput output, string file) { - output.Content.AppendHtml($"{Environment.NewLine}"); + output.Content.AppendHtml($"{Environment.NewLine}"); } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperStyleService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperStyleService.cs index 4a798fe0513..2a0946cfd2a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperStyleService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperStyleService.cs @@ -11,12 +11,12 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers public class AbpTagHelperStyleService : AbpTagHelperResourceService { public AbpTagHelperStyleService( - IBundleManager bundleManager, + IBundleManager bundleManager, IWebContentFileProvider webContentFileProvider, IOptions options, IHostingEnvironment hostingEnvironment ) : base( - bundleManager, + bundleManager, webContentFileProvider, options, hostingEnvironment) @@ -39,7 +39,7 @@ protected override IReadOnlyList GetBundleFiles(string bundleName) protected override void AddHtmlTag(TagHelperContext context, TagHelperOutput output, string file) { - output.Content.AppendHtml($"{Environment.NewLine}"); + output.Content.AppendHtml($"{Environment.NewLine}"); } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Pages/Components/Dashboard/Default.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Pages/Components/Dashboard/Default.js deleted file mode 100644 index 272fc751eb5..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Pages/Components/Dashboard/Default.js +++ /dev/null @@ -1,6 +0,0 @@ -(function ($) { - $('#GlobalRefreshButton').on('click', - function () { - $(document).trigger('RefreshWidgets', $('#DashboardGlobalFiltersForm').serializeFormToObject()); - }); -})(jQuery); \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Properties/launchSettings.json b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Properties/launchSettings.json deleted file mode 100644 index 0ce91a367d4..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Properties/launchSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:57333/", - "sslPort": 0 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "Volo.Abp.AspNetCore.Mvc.UI.Dashboards": { - "commandName": "Project", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "applicationUrl": "http://localhost:57343/" - } - } -} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo.Abp.AspNetCore.Mvc.UI.Dashboards.csproj b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo.Abp.AspNetCore.Mvc.UI.Dashboards.csproj deleted file mode 100644 index 69c8816688d..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo.Abp.AspNetCore.Mvc.UI.Dashboards.csproj +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - netstandard2.0 - Volo.Abp.AspNetCore.Mvc.UI.Dashboards - Volo.Abp.AspNetCore.Mvc.UI.Dashboards - $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; - false - false - false - true - Library - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/AbpAspNetCoreMvcUiDashboardsModule.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/AbpAspNetCoreMvcUiDashboardsModule.cs deleted file mode 100644 index 6fcb11d28ee..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/AbpAspNetCoreMvcUiDashboardsModule.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Volo.Abp.AspNetCore.Mvc.UI.Widgets; -using Volo.Abp.Modularity; -using Volo.Abp.VirtualFileSystem; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Dashboards -{ - [DependsOn( - typeof(AbpAspNetCoreMvcUiWidgetsModule) - )] - public class AbpAspNetCoreMvcUiDashboardsModule : AbpModule - { - public override void ConfigureServices(ServiceConfigurationContext context) - { - Configure(options => - { - options.FileSets.AddEmbedded(); - }); - } - } -} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/AbpBasicDashboardScriptContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/AbpBasicDashboardScriptContributor.cs deleted file mode 100644 index 83f5910d68c..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/AbpBasicDashboardScriptContributor.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Volo.Abp.AspNetCore.Mvc.UI.Bundling; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Dashboards -{ - public class AbpBasicDashboardScriptContributor : BundleContributor - { - public override void ConfigureBundle(BundleConfigurationContext context) - { - context.Files.Add("/Pages/Components/Dashboard/Default.js"); - } - } -} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/AbpBasicDashboardStyleContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/AbpBasicDashboardStyleContributor.cs deleted file mode 100644 index 5c074783fc2..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/AbpBasicDashboardStyleContributor.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Volo.Abp.AspNetCore.Mvc.UI.Bundling; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Dashboards -{ - public class AbpBasicDashboardStyleContributor : BundleContributor - { - } -} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/Components/Dashboard/DashboardViewComponent.cshtml.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/Components/Dashboard/DashboardViewComponent.cshtml.cs deleted file mode 100644 index dd6bdbb2063..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/Components/Dashboard/DashboardViewComponent.cshtml.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Options; -using System.Linq; -using System.Threading.Tasks; -using Volo.Abp.AspNetCore.Mvc.UI.Widgets; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Dashboards.Components.Dashboard -{ - public class DashboardViewComponent : AbpViewComponent - { - private readonly DashboardOptions _dashboardOptions; - private readonly WidgetOptions _widgetOptions; - private readonly GlobalFilterOptions _globalFilterOptions; - - public DashboardViewComponent(IOptions dashboardOptions, IOptions widgetOptions, IOptions globalFilterOptions) - { - _dashboardOptions = dashboardOptions.Value; - _widgetOptions = widgetOptions.Value; - _globalFilterOptions = globalFilterOptions.Value; - } - - public IViewComponentResult Invoke(string dashboardName) - { - var dashboard = _dashboardOptions.Dashboards.Single(d => d.Name.Equals(dashboardName)); - - var model = new DashboardViewModel(dashboard, _widgetOptions.Widgets.GetAll().ToList(), _globalFilterOptions.GlobalFilters); - - return View("~/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/Components/Dashboard/Default.cshtml", model); - } - } -} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/Components/Dashboard/DashboardViewModel.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/Components/Dashboard/DashboardViewModel.cs deleted file mode 100644 index c7caae2dc49..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/Components/Dashboard/DashboardViewModel.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Authorization; -using Volo.Abp.AspNetCore.Mvc.UI.Widgets; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Dashboards.Components.Dashboard -{ - public class DashboardViewModel - { - public DashboardDefinition Dashboard { get; set; } - - public List Widgets { get; set; } - - public List GlobalFilters { get; set; } - - public DashboardViewModel(DashboardDefinition dashboard, List widgets, List globalFilters) - { - Dashboard = dashboard; - Widgets = widgets; - GlobalFilters = globalFilters; - } - - public WidgetDefinition GetWidget(string name) - { - return Widgets.Single(d => d.Name.Equals(name)); - } - - public GlobalFilterDefinition GetGlobalFilter(string name) - { - return GlobalFilters.Single(d => d.Name.Equals(name)); - } - - public async Task CheckPermissionsAsync(IAuthorizationService authorizationService, WidgetDefinition widget) - { - foreach (var permission in widget.RequiredPolicies) - { - if (!await authorizationService.IsGrantedAsync(permission)) - { - return false; - } - } - - return true; - } - } -} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/Components/Dashboard/Default.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/Components/Dashboard/Default.cshtml deleted file mode 100644 index 1f51c44d44e..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/Components/Dashboard/Default.cshtml +++ /dev/null @@ -1,53 +0,0 @@ -@using Localization.Resources.AbpUi -@using Microsoft.AspNetCore.Authorization -@using Microsoft.AspNetCore.Mvc.Localization -@using Microsoft.Extensions.Localization -@using Volo.Abp.AspNetCore.Mvc.UI.Dashboards -@using Volo.Abp.AspNetCore.Mvc.UI.Widgets -@inject IAuthorizationService AuthorizationService -@inject IGlobalFilterRenderer GlobalFilteRenderer -@inject IHtmlLocalizer L -@model Volo.Abp.AspNetCore.Mvc.UI.Dashboards.Components.Dashboard.DashboardViewModel -@{ -} - - - @if (Model.Dashboard.AvailableGlobalFilters.Any()) - { - -
- - @foreach (var globalFilterConfiguration in Model.Dashboard.AvailableGlobalFilters) - { - var globalFilter = Model.GetGlobalFilter(globalFilterConfiguration.GlobalFilterName); - - @await GlobalFilteRenderer.RenderAsync(Component, globalFilter.Name) - - } - -
-
- -
- -
-
- } -
- - - @foreach (var widgetConfiguration in Model.Dashboard.AvailableWidgets) - { - var widgetDefinition = Model.GetWidget(widgetConfiguration.WidgetName); - if (await Model.CheckPermissionsAsync(AuthorizationService, widgetDefinition)) - { - widgetDefinition.DefaultDimensions = widgetConfiguration.Dimensions ?? widgetDefinition.DefaultDimensions ?? new WidgetDimensions(6, 4); - - - - @await Component.InvokeAsync(widgetDefinition.Name) - - } - } - \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/DashboardDefinition.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/DashboardDefinition.cs deleted file mode 100644 index ff06fa0d44b..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/DashboardDefinition.cs +++ /dev/null @@ -1,62 +0,0 @@ -using System.Collections.Generic; -using JetBrains.Annotations; -using Volo.Abp.AspNetCore.Mvc.UI.Widgets; -using Volo.Abp.Localization; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Dashboards -{ - public class DashboardDefinition - { - /// - /// Unique name of the dashboard. - /// - [NotNull] - public string Name { get; } - - /// - /// A list of Widgets available for this dashboard. - /// - public List AvailableWidgets { get; } - - /// - /// A list of Global Filters available for this dashboard. - /// - public List AvailableGlobalFilters { get; } - - /// - /// Display name of the dashboard. - /// - [NotNull] - public ILocalizableString DisplayName - { - get => _displayName; - set => _displayName = Check.NotNull(value, nameof(value)); - } - private ILocalizableString _displayName; - - public DashboardDefinition( - [NotNull] string name, - [CanBeNull] ILocalizableString displayName) - { - Name = Check.NotNullOrWhiteSpace(name, nameof(name)); - DisplayName = displayName ?? new FixedLocalizableString(name); - - AvailableWidgets = new List(); - AvailableGlobalFilters = new List(); - } - - public DashboardDefinition WithWidget(string widgetName, WidgetLocation location = null, WidgetDimensions dimensions = null) - { - AvailableWidgets.Add( new DashboardWidgetConfiguration(widgetName, dimensions, location)); - - return this; - } - - public DashboardDefinition WithGlobalFilter(string globalFilterName) - { - AvailableGlobalFilters.Add( new DashboardGlobalFilterConfiguration(globalFilterName)); - - return this; - } - } -} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/DashboardGlobalFilterConfiguration.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/DashboardGlobalFilterConfiguration.cs deleted file mode 100644 index 5f097270ca5..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/DashboardGlobalFilterConfiguration.cs +++ /dev/null @@ -1,15 +0,0 @@ -using JetBrains.Annotations; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Dashboards -{ - public class DashboardGlobalFilterConfiguration - { - [NotNull] - public string GlobalFilterName { get; } - - public DashboardGlobalFilterConfiguration([NotNull] string globalFilterName) - { - GlobalFilterName = Check.NotNullOrWhiteSpace(globalFilterName, nameof(globalFilterName)); - } - } -} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/DashboardOptions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/DashboardOptions.cs deleted file mode 100644 index fc3ca09b74c..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/DashboardOptions.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Collections.Generic; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Dashboards -{ - public class DashboardOptions - { - public List Dashboards { get; } - - public DashboardOptions() - { - Dashboards = new List(); - } - } -} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/DashboardRenderer.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/DashboardRenderer.cs deleted file mode 100644 index d35c58f0e24..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/DashboardRenderer.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Threading.Tasks; -using Microsoft.AspNetCore.Html; -using Microsoft.AspNetCore.Mvc; -using Volo.Abp.AspNetCore.Mvc.UI.Dashboards.Components.Dashboard; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Dashboards -{ - public class DashboardRenderer : IDashboardRenderer - { - public async Task RenderAsync(IViewComponentHelper componentHelper, object args = null) - { - return await componentHelper.InvokeAsync(typeof(DashboardViewComponent), args ?? new object()); - } - } -} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/DashboardWidgetConfiguration.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/DashboardWidgetConfiguration.cs deleted file mode 100644 index 74a20bc877b..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/DashboardWidgetConfiguration.cs +++ /dev/null @@ -1,28 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.AspNetCore.Mvc.UI.Widgets; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Dashboards -{ - public class DashboardWidgetConfiguration - { - [NotNull] - public string WidgetName { get; } - - [CanBeNull] - public WidgetDimensions Dimensions { get; set; } - - [CanBeNull] - public WidgetLocation Location { get; set; } - - public DashboardWidgetConfiguration( - [NotNull] string widgetName, - [CanBeNull] WidgetDimensions dimensions = null, - [CanBeNull] WidgetLocation location = null - ) - { - WidgetName = Check.NotNullOrWhiteSpace(widgetName, nameof(widgetName)); - Dimensions = dimensions; - Location = location; - } - } -} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/GlobalFilterDefinition.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/GlobalFilterDefinition.cs deleted file mode 100644 index f599f0c797b..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/GlobalFilterDefinition.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using JetBrains.Annotations; -using Volo.Abp.Localization; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Dashboards -{ - public class GlobalFilterDefinition - { - /// - /// Unique name of the Global Filter. - /// - [NotNull] - public string Name { get; } - - /// - /// Display name of the Global Filter. - /// - [NotNull] - public ILocalizableString DisplayName - { - get => _displayName; - set => _displayName = Check.NotNull(value, nameof(value)); - } - private ILocalizableString _displayName; - - [NotNull] - public Type ViewComponentType { get; } - - public GlobalFilterDefinition( - [NotNull] string name, - [CanBeNull] ILocalizableString displayName, - [NotNull] Type viewComponentType) - { - Name = Check.NotNullOrWhiteSpace(name, nameof(name)); - DisplayName = displayName ?? new FixedLocalizableString(name); - ViewComponentType = Check.NotNull(viewComponentType, nameof(viewComponentType)); - } - } -} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/GlobalFilterOptions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/GlobalFilterOptions.cs deleted file mode 100644 index 70ba40e696c..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/GlobalFilterOptions.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Collections.Generic; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Dashboards -{ - public class GlobalFilterOptions - { - public List GlobalFilters { get; } - - public GlobalFilterOptions() - { - GlobalFilters = new List(); - } - } -} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/GlobalFilterRenderer.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/GlobalFilterRenderer.cs deleted file mode 100644 index d1219943ae2..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/GlobalFilterRenderer.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Html; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Options; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Dashboards -{ - public class GlobalFilterRenderer : IGlobalFilterRenderer - { - private readonly GlobalFilterOptions _globalFilterOptions; - - public GlobalFilterRenderer(IOptions widgetOptions) - { - _globalFilterOptions = widgetOptions.Value; - } - - public async Task RenderAsync(IViewComponentHelper componentHelper, string globalFilterName, object args = null) - { - var globalFilter = _globalFilterOptions.GlobalFilters.Single(w => w.Name.Equals(globalFilterName)); - - return await componentHelper.InvokeAsync(globalFilter.ViewComponentType, args ?? new object()); - } - } -} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/IDashboardRenderer.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/IDashboardRenderer.cs deleted file mode 100644 index 7cfed80135d..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/IDashboardRenderer.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.Threading.Tasks; -using Microsoft.AspNetCore.Html; -using Microsoft.AspNetCore.Mvc; -using Volo.Abp.DependencyInjection; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Dashboards -{ - public interface IDashboardRenderer : ITransientDependency - { - Task RenderAsync(IViewComponentHelper componentHelper, object args = null); - } -} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/IGlobalFilterRenderer.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/IGlobalFilterRenderer.cs deleted file mode 100644 index 6978f4d6b18..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/IGlobalFilterRenderer.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.Threading.Tasks; -using Microsoft.AspNetCore.Html; -using Microsoft.AspNetCore.Mvc; -using Volo.Abp.DependencyInjection; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Dashboards -{ - public interface IGlobalFilterRenderer : ITransientDependency - { - Task RenderAsync(IViewComponentHelper componentHelper, string globalFilterName, object args = null); - } -} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/WidgetLocation.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/WidgetLocation.cs deleted file mode 100644 index 7ce21a342ea..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/WidgetLocation.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Dashboards -{ - public class WidgetLocation - { - public int X { get; set; } - - public int Y { get; set; } - - public WidgetLocation(int x, int y) - { - X = x; - Y = y; - } - } -} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/_ViewImports.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/_ViewImports.cshtml deleted file mode 100644 index 225780c2c2c..00000000000 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Dashboards/Volo/Abp/AspNetCore/Mvc/UI/Dashboards/_ViewImports.cshtml +++ /dev/null @@ -1,3 +0,0 @@ -@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers -@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap -@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Bundles/ChartjsScriptContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/ChartJs/ChartjsScriptContributor.cs similarity index 84% rename from samples/DashboardDemo/src/DashboardDemo.Web/Bundles/ChartjsScriptContributor.cs rename to framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/ChartJs/ChartjsScriptContributor.cs index eaacdc0e7a4..6c55d787ee7 100644 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Bundles/ChartjsScriptContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/ChartJs/ChartjsScriptContributor.cs @@ -1,6 +1,6 @@ using Volo.Abp.AspNetCore.Mvc.UI.Bundling; -namespace DashboardDemo.Web.Bundles +namespace Volo.Abp.AspNetCore.Mvc.UI.Packages.ChartJs { public class ChartjsScriptContributor : BundleContributor { diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Bundles/ChartjsStyleContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/ChartJs/ChartjsStyleContributor.cs similarity index 84% rename from samples/DashboardDemo/src/DashboardDemo.Web/Bundles/ChartjsStyleContributor.cs rename to framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/ChartJs/ChartjsStyleContributor.cs index 144baaab125..1278023e976 100644 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Bundles/ChartjsStyleContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/ChartJs/ChartjsStyleContributor.cs @@ -1,6 +1,6 @@ using Volo.Abp.AspNetCore.Mvc.UI.Bundling; -namespace DashboardDemo.Web.Bundles +namespace Volo.Abp.AspNetCore.Mvc.UI.Packages.ChartJs { public class ChartjsStyleContributor : BundleContributor { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Account.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Account.cshtml index 2e95453185b..eb69a76abac 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Account.cshtml +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Account.cshtml @@ -79,8 +79,8 @@ - - + + @await RenderSectionAsync("scripts", false) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml index 9bb54dea09f..d3fecf97272 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml @@ -64,8 +64,8 @@ - - + + @await Component.InvokeAsync(typeof(WidgetScriptsViewComponent)) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Empty.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Empty.cshtml index f4f18202c7d..1fe4639d25a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Empty.cshtml +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Empty.cshtml @@ -58,8 +58,8 @@ - - + + @await RenderSectionAsync("scripts", false) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs index 83aa8506d54..e722de8ee35 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs @@ -35,6 +35,7 @@ public override void ConfigureBundle(BundleConfigurationContext context) { "/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js", "/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery-form/jquery-form-extensions.js", + "/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/widget-manager.js", "/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js", "/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js", "/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js", diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js index b3fa839d105..44c2bdad27b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js @@ -160,7 +160,7 @@ formSaved = true; $modal.modal('hide'); } - }); + }, false); } }); diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/widget-manager.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/widget-manager.js new file mode 100644 index 00000000000..0b746b5e37a --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/widget-manager.js @@ -0,0 +1,107 @@ +(function ($) { + abp.widgets = abp.widgets || {}; + + abp.WidgetManager = function (opts) { + if (!opts) { + opts = {}; + } else if (typeof opts === 'string') { + opts = { + wrapper: opts + }; + } + + if (!opts.wrapper) { + opts.wrapper = $('body'); + } else if (typeof opts.wrapper === 'string') { + opts.wrapper = $(opts.wrapper); + } + + if (!opts.filterForm) { + var widgetFilterAttr = opts.wrapper.attr('data-widget-filter'); + if (widgetFilterAttr) { + opts.filterForm = $(widgetFilterAttr); + } + } else if (typeof opts.filterForm === 'string') { + opts.filterForm = $(opts.filterForm); + } + + var getFilters = function ($widgetWrapperDiv) { + var filters = {}; + + if (opts.filterForm) { + opts.filterForm.each(function() { + filters = $.extend(filters, opts.filterForm.serializeFormToObject()); + }); + } + + if (opts.filterCallback) { + filters = $.extend(filters, opts.filterCallback()); + } + + var widgetApi = $widgetWrapperDiv.data('abp-widget-api'); + if (widgetApi && widgetApi.getFilters) { + filters = $.extend(filters, widgetApi.getFilters()); + } + + return filters; + }; + + var init = function () { + opts.wrapper.find('.abp-widget-wrapper').each(function () { + var $widgetWrapperDiv = $(this); + var widgetName = $widgetWrapperDiv.attr('data-widget-name'); + var widgetApiClass = abp.widgets[widgetName]; + if (widgetApiClass) { + var widgetApi = new widgetApiClass($widgetWrapperDiv); + $widgetWrapperDiv.data('abp-widget-api', widgetApi); + if (widgetApi.init) { + widgetApi.init(getFilters($widgetWrapperDiv)); + } + } + }); + }; + + var refresh = function () { + opts.wrapper.find('.abp-widget-wrapper').each(function () { + var $widgetWrapperDiv = $(this); + + var refreshUrl = $widgetWrapperDiv.attr('data-refresh-url'); + if (refreshUrl) { + abp.ajax({ + url: refreshUrl, + type: 'GET', + dataType: 'html', + contentType: 'application/x-www-form-urlencoded; charset=UTF-8', + data: getFilters($widgetWrapperDiv) + }).then(function (result) { + $widgetWrapperDiv.replaceWith($(result)); + }); + } else { + var widgetApi = $widgetWrapperDiv.data('abp-widget-api'); + if (widgetApi && widgetApi.refresh) { + widgetApi.refresh(getFilters($widgetWrapperDiv)); + } + } + }); + }; + + if (opts.filterForm) { + opts.filterForm.each(function() { + $(this).submit(function (e) { + e.preventDefault(); + refresh(); + }); + }); + } + + var publicApi = { + init: init, + refresh: refresh + }; + + opts.wrapper.data('abp-widget-manager', publicApi); + + return publicApi; + }; + +})(jQuery); \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/sweetalert/abp-sweetalert.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/sweetalert/abp-sweetalert.js index c96f836f0d1..0ed84609668 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/sweetalert/abp-sweetalert.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/sweetalert/abp-sweetalert.js @@ -73,17 +73,21 @@ return showMessage('error', message, title); }; - abp.message.confirm = function (message, titleOrCallback, callback) { + abp.message.confirm = function (message, titleOrCallback, callback, closeOnEsc) { + var userOpts = { text: message }; if ($.isFunction(titleOrCallback)) { + closeOnEsc = callback; callback = titleOrCallback; } else if (titleOrCallback) { userOpts.title = titleOrCallback; }; + userOpts.closeOnEsc = closeOnEsc; + var opts = $.extend( {}, abp.libs.sweetAlert.config['default'], diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/AbpViewComponentHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/AbpViewComponentHelper.cs index 8d0dede237f..1ef15ac8e66 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/AbpViewComponentHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/AbpViewComponentHelper.cs @@ -1,16 +1,13 @@ using System; -using System.Linq; +using System.Text; using System.Threading.Tasks; -using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Html; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.ViewComponents; using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.Extensions.Options; -using Volo.Abp.Authorization; using Volo.Abp.DependencyInjection; -using Volo.Abp.Users; namespace Volo.Abp.AspNetCore.Mvc.UI.Widgets { @@ -19,21 +16,15 @@ public class AbpViewComponentHelper : IViewComponentHelper, IViewContextAware, I { protected WidgetOptions Options { get; } protected IPageWidgetManager PageWidgetManager { get; } - protected IAuthorizationService AuthorizationService { get; } - protected ICurrentUser CurrentUser { get; } protected DefaultViewComponentHelper DefaultViewComponentHelper { get; } public AbpViewComponentHelper( DefaultViewComponentHelper defaultViewComponentHelper, IOptions widgetOptions, - IPageWidgetManager pageWidgetManager, - IAuthorizationService authorizationService, - ICurrentUser currentUser) + IPageWidgetManager pageWidgetManager) { DefaultViewComponentHelper = defaultViewComponentHelper; PageWidgetManager = pageWidgetManager; - AuthorizationService = authorizationService; - CurrentUser = currentUser; Options = widgetOptions.Value; } @@ -66,22 +57,17 @@ public virtual void Contextualize(ViewContext viewContext) protected virtual async Task InvokeWidgetAsync(object arguments, WidgetDefinition widget) { - if (widget.RequiredPolicies.Any()) - { - foreach (var requiredPolicy in widget.RequiredPolicies) - { - await AuthorizationService.AuthorizeAsync(requiredPolicy); - } - } - else if (widget.RequiresAuthentication && !CurrentUser.IsAuthenticated) - { - throw new AbpAuthorizationException("Authorization failed! User has not logged in."); - } - PageWidgetManager.TryAdd(widget); + var wrapperAttributesBuilder = new StringBuilder($"class=\"abp-widget-wrapper\" data-widget-name=\"{widget.Name}\""); + + if (widget.RefreshUrl != null) + { + wrapperAttributesBuilder.Append($" data-refresh-url=\"{widget.RefreshUrl}\""); + } + return new HtmlContentBuilder() - .AppendHtml($"
") + .AppendHtml($"
") .AppendHtml(await DefaultViewComponentHelper.InvokeAsync(widget.ViewComponentType, arguments)) .AppendHtml("
"); } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/IWidgetManager.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/IWidgetManager.cs new file mode 100644 index 00000000000..62568786051 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/IWidgetManager.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Widgets +{ + public interface IWidgetManager : ITransientDependency + { + Task IsGrantedAsync(Type widgetComponentType); + + Task IsGrantedAsync(string name); + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/WidgetAttribute.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/WidgetAttribute.cs index e7852b04542..002d981df34 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/WidgetAttribute.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/WidgetAttribute.cs @@ -31,9 +31,7 @@ public class WidgetAttribute : Attribute public bool RequiresAuthentication { get; set; } - public int? DefaultWidth { get; set; } - - public int? DefaultHeight { get; set; } + public string RefreshUrl { get; set; } public static bool IsWidget(Type type) { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/WidgetDefinition.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/WidgetDefinition.cs index d7ff2ae78e0..b33950abb32 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/WidgetDefinition.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/WidgetDefinition.cs @@ -48,7 +48,7 @@ public ILocalizableString DisplayName public List Scripts { get; } [CanBeNull] - public WidgetDimensions DefaultDimensions { get; set; } + public string RefreshUrl { get; set; } public WidgetDefinition( [NotNull] Type viewComponentType, @@ -63,11 +63,7 @@ public WidgetDefinition( RequiresAuthentication = WidgetAttribute.RequiresAuthentication; Styles = GetStyles(WidgetAttribute); Scripts = GetScripts(WidgetAttribute); - - if (WidgetAttribute.DefaultWidth.HasValue && WidgetAttribute.DefaultHeight.HasValue) - { - DefaultDimensions = new WidgetDimensions(WidgetAttribute.DefaultWidth.Value, WidgetAttribute.DefaultHeight.Value); - } + RefreshUrl = WidgetAttribute.RefreshUrl; } private static List GetStyles(WidgetAttribute widgetAttribute) @@ -165,12 +161,6 @@ public WidgetDefinition WithRequiresAuthentication(bool value = true) return this; } - public WidgetDefinition WithDefaultDimensions(int width, int height) - { - DefaultDimensions = new WidgetDimensions(width, height); - return this; - } - public WidgetDefinition WithStyles(params string[] files) { return WithResources(Styles, files); @@ -191,6 +181,12 @@ public WidgetDefinition WithScripts(params Type[] bundleContributorTypes) return WithResources(Scripts, bundleContributorTypes); } + public WidgetDefinition WithRefreshUrl(string refreshUrl) + { + RefreshUrl = refreshUrl; + return this; + } + private WidgetDefinition WithResources(List resourceItems, Type[] bundleContributorTypes) { if (bundleContributorTypes.IsNullOrEmpty()) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/WidgetManager.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/WidgetManager.cs new file mode 100644 index 00000000000..54bd8cb2747 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Widgets/Volo/Abp/AspNetCore/Mvc/UI/Widgets/WidgetManager.cs @@ -0,0 +1,65 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.Extensions.Options; +using Volo.Abp.Users; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Widgets +{ + public class WidgetManager : IWidgetManager + { + protected WidgetOptions Options { get; } + protected IAuthorizationService AuthorizationService { get; } + protected ICurrentUser CurrentUser { get; } + + public WidgetManager( + IOptions widgetOptions, + IAuthorizationService authorizationService, + ICurrentUser currentUser) + { + AuthorizationService = authorizationService; + CurrentUser = currentUser; + Options = widgetOptions.Value; + } + + public async Task IsGrantedAsync(Type widgetComponentType) + { + var widget = Options.Widgets.Find(widgetComponentType); + + return await IsGrantedAsyncInternal(widget, widgetComponentType.FullName); + } + + public async Task IsGrantedAsync(string name) + { + var widget = Options.Widgets.Find(name); + + return await IsGrantedAsyncInternal(widget, name); + } + + private async Task IsGrantedAsyncInternal(WidgetDefinition widget, string wantedWidgetName) + { + if (widget == null) + { + throw new ArgumentNullException(wantedWidgetName); + } + + if (widget.RequiredPolicies.Any()) + { + foreach (var requiredPolicy in widget.RequiredPolicies) + { + if (!(await AuthorizationService.AuthorizeAsync(requiredPolicy)).Succeeded) + { + return false; + } + } + } + else if (widget.RequiresAuthentication && !CurrentUser.IsAuthenticated) + { + return false; + } + + return true; + } + } +} diff --git a/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/Cors/AbpCorsPolicyBuilderExtensions.cs b/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/Cors/AbpCorsPolicyBuilderExtensions.cs new file mode 100644 index 00000000000..e466b1e058d --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/Cors/AbpCorsPolicyBuilderExtensions.cs @@ -0,0 +1,12 @@ +using Microsoft.AspNetCore.Cors.Infrastructure; + +namespace Microsoft.AspNetCore.Cors +{ + public static class AbpCorsPolicyBuilderExtensions + { + public static CorsPolicyBuilder WithAbpExposedHeaders(this CorsPolicyBuilder corsPolicyBuilder) + { + return corsPolicyBuilder.WithExposedHeaders("_AbpErrorFormat"); + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj b/framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj index fb85cbb3ecc..2584654ce85 100644 --- a/framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj +++ b/framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj @@ -32,6 +32,7 @@ + diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliConsts.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliConsts.cs index 341bf1880d0..e4ddf2a3ee0 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliConsts.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliConsts.cs @@ -3,5 +3,7 @@ public static class CliConsts { public const string Command = "AbpCliCommand"; + + public const string BranchPrefix = "branch@"; } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddCommandHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddCommandHelper.cs deleted file mode 100644 index d1b5c9d7165..00000000000 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddCommandHelper.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Microsoft.Extensions.Logging; - -namespace Volo.Abp.Cli.Commands -{ - public static class AddCommandHelper - { - - } -} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs index 42bc75c8646..90028ed638e 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs @@ -40,6 +40,7 @@ public async Task ExecuteAsync(CommandLineArgs commandLineArgs) await SolutionModuleAdder.AddAsync( GetSolutionFile(commandLineArgs), commandLineArgs.Target, + commandLineArgs.Options.GetOrNull(Options.StartupProject.Short, Options.StartupProject.Long), skipDbMigrations ); } @@ -53,17 +54,21 @@ public string GetUsageInfo() sb.AppendLine("It should be used in a folder containing a .sln file."); sb.AppendLine(""); sb.AppendLine("Usage:"); - sb.AppendLine(" abp add-module [-s|--solution]"); + sb.AppendLine(" abp add-module [options]"); sb.AppendLine(""); sb.AppendLine("Options:"); sb.AppendLine(" -s|--solution Specify the solution file explicitly."); sb.AppendLine(" --skip-db-migrations Specify if a new migration will be added or not."); + sb.AppendLine(" -sp|--startup-project Relative path to the project folder of the startup project. Default value is the current folder."); sb.AppendLine(""); sb.AppendLine("Examples:"); + sb.AppendLine(""); sb.AppendLine(" abp add-module Volo.Blogging Adds the module to the current solution."); sb.AppendLine(" abp add-module Volo.Blogging -s Acme.BookStore Adds the module to the given solution."); sb.AppendLine(" abp add-module Volo.Blogging -s Acme.BookStore --skip-db-migrations false Adds the module to the given solution but doesn't create a database migration."); + sb.AppendLine(@" abp add-module Volo.Blogging -s Acme.BookStore -sp src\Acme.BookStore.Web\Acme.BookStore.Web.csproj Adds the module to the given solution and specify migration startup project."); sb.AppendLine(""); + sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); return sb.ToString(); } @@ -79,8 +84,8 @@ protected virtual string GetSolutionFile(CommandLineArgs commandLineArgs) { var providedSolutionFile = PathHelper.NormalizePath( commandLineArgs.Options.GetOrNull( - AddPackageCommand.Options.Project.Short, - AddPackageCommand.Options.Project.Long + Options.Solution.Short, + Options.Solution.Long ) ); @@ -127,6 +132,12 @@ public static class DbMigrations { public const string Skip = "skip-db-migrations"; } + + public static class StartupProject + { + public const string Short = "sp"; + public const string Long = "startup-project"; + } } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddPackageCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddPackageCommand.cs index 3b1153eade5..211d20d5e16 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddPackageCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddPackageCommand.cs @@ -49,15 +49,19 @@ public string GetUsageInfo() sb.AppendLine("It should be used in a folder containing a .csproj file."); sb.AppendLine(""); sb.AppendLine("Usage:"); - sb.AppendLine(" abp add-package [-p|--project]"); + sb.AppendLine(""); + sb.AppendLine(" abp add-package [options]"); sb.AppendLine(""); sb.AppendLine("Options:"); + sb.AppendLine(""); sb.AppendLine(" -p|--project Specify the project file explicitly."); sb.AppendLine(""); sb.AppendLine("Examples:"); + sb.AppendLine(""); sb.AppendLine(" abp add-package Volo.Abp.FluentValidation Adds the package to the current project."); sb.AppendLine(" abp add-package Volo.Abp.FluentValidation -p Acme.BookStore.Application Adds the package to the given project."); sb.AppendLine(""); + sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); return sb.ToString(); } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/HelpCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/HelpCommand.cs index c9046f44fbc..38e8d075d02 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/HelpCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/HelpCommand.cs @@ -51,6 +51,7 @@ public string GetUsageInfo() sb.AppendLine(" abp [options]"); sb.AppendLine(""); sb.AppendLine("Command List:"); + sb.AppendLine(""); foreach (var command in CliOptions.Commands.ToArray()) { @@ -62,7 +63,7 @@ public string GetUsageInfo() .GetRequiredService(command.Value)).GetShortDescription(); } - sb.Append(" >"); + sb.Append(" > "); sb.Append(command.Key); sb.Append(string.IsNullOrWhiteSpace(shortDescription) ? "":":"); sb.Append(" "); @@ -70,6 +71,11 @@ public string GetUsageInfo() } sb.AppendLine(""); + sb.AppendLine("To get a detailed help for a command:"); + sb.AppendLine(""); + sb.AppendLine(" abp help "); + sb.AppendLine(""); + sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); return sb.ToString(); } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/LoginCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/LoginCommand.cs index 631756c1e07..4521d1fb86a 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/LoginCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/LoginCommand.cs @@ -58,7 +58,10 @@ public string GetUsageInfo() sb.AppendLine(" abp login "); sb.AppendLine(""); sb.AppendLine("Example:"); + sb.AppendLine(""); sb.AppendLine(" abp login john"); + sb.AppendLine(""); + sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); return sb.ToString(); } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs index 3f2456e81bc..f75a2eae4cf 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs @@ -46,7 +46,9 @@ public async Task ExecuteAsync(CommandLineArgs commandLineArgs) new ProjectBuildArgs( SolutionName.Parse(commandLineArgs.Target), commandLineArgs.Options.GetOrNull(Options.Template.Short, Options.Template.Long), - GetDatabaseProviderOrNull(commandLineArgs), + commandLineArgs.Options.GetOrNull(Options.Version.Short, Options.Version.Long), + GetDatabaseProvider(commandLineArgs), + GetUiFramework(commandLineArgs), commandLineArgs.Options ) ); @@ -93,6 +95,7 @@ public async Task ExecuteAsync(CommandLineArgs commandLineArgs) { StreamUtils.Copy(zipInputStream, streamWriter, buffer); } + zipEntry = zipInputStream.GetNextEntry(); } } @@ -108,25 +111,32 @@ public string GetUsageInfo() sb.AppendLine(""); sb.AppendLine("Usage:"); - sb.AppendLine(" abp new [-t|--template] [-d|--database-provider] [-o|--output-folder]"); + sb.AppendLine(""); + sb.AppendLine(" abp new [options]"); sb.AppendLine(""); sb.AppendLine("Options:"); - sb.AppendLine("-t|--template "); - sb.AppendLine("-o|--output-folder "); + sb.AppendLine(""); + sb.AppendLine("-t|--template (default: app)"); + sb.AppendLine("-u|--ui (if supported by the template)"); sb.AppendLine("-d|--database-provider (if supported by the template)"); + sb.AppendLine("-o|--output-folder (default: current folder)"); + sb.AppendLine("-v|--version (default: latest version)"); sb.AppendLine("--tiered (if supported by the template)"); sb.AppendLine("--no-ui (if supported by the template)"); + sb.AppendLine("--separate-identity-server (if supported by the template)"); + sb.AppendLine(""); + sb.AppendLine("Examples:"); sb.AppendLine(""); - sb.AppendLine("Some examples:"); sb.AppendLine(" abp new Acme.BookStore"); sb.AppendLine(" abp new Acme.BookStore --tiered"); - sb.AppendLine(" abp new Acme.BookStore -t mvc-module"); - sb.AppendLine(" abp new Acme.BookStore -t mvc-module no-ui"); + sb.AppendLine(" abp new Acme.BookStore -u angular"); + sb.AppendLine(" abp new Acme.BookStore -u angular -d mongodb"); sb.AppendLine(" abp new Acme.BookStore -d mongodb"); - sb.AppendLine(" abp new Acme.BookStore -t mvc -d mongodb"); - sb.AppendLine(" abp new Acme.BookStore -t mvc -d mongodb -o d:\\project"); + sb.AppendLine(" abp new Acme.BookStore -d mongodb -o d:\\my-project"); + sb.AppendLine(" abp new Acme.BookStore -t module"); + sb.AppendLine(" abp new Acme.BookStore -t module no-ui"); sb.AppendLine(""); - sb.AppendLine("See the documentation for more info."); + sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); return sb.ToString(); } @@ -136,7 +146,7 @@ public string GetShortDescription() return "Generates a new solution based on the ABP startup templates."; } - protected virtual DatabaseProvider GetDatabaseProviderOrNull(CommandLineArgs commandLineArgs) + protected virtual DatabaseProvider GetDatabaseProvider(CommandLineArgs commandLineArgs) { var optionValue = commandLineArgs.Options.GetOrNull(Options.DatabaseProvider.Short, Options.DatabaseProvider.Long); switch (optionValue) @@ -150,6 +160,20 @@ protected virtual DatabaseProvider GetDatabaseProviderOrNull(CommandLineArgs com } } + private UiFramework GetUiFramework(CommandLineArgs commandLineArgs) + { + var optionValue = commandLineArgs.Options.GetOrNull(Options.UiFramework.Short, Options.UiFramework.Long); + switch (optionValue) + { + case "mvc": + return UiFramework.Mvc; + case "angular": + return UiFramework.Angular; + default: + return UiFramework.NotSpecified; + } + } + public static class Options { public static class Template @@ -169,6 +193,18 @@ public static class OutputFolder public const string Short = "o"; public const string Long = "output-folder"; } + + public static class Version + { + public const string Short = "v"; + public const string Long = "version"; + } + + public static class UiFramework + { + public const string Short = "u"; + public const string Long = "ui"; + } } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs index 7ab17d608d9..ea061c4bd81 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs @@ -103,16 +103,18 @@ public string GetUsageInfo() sb.AppendLine(""); sb.AppendLine("Usage:"); - sb.AppendLine(" abp update [-p|--include-previews]"); + sb.AppendLine(""); + sb.AppendLine(" abp update [options]"); sb.AppendLine(""); sb.AppendLine("Options:"); - sb.AppendLine("--include-previews (if supported by the template)"); + sb.AppendLine("-p|--include-previews (if supported by the template)"); sb.AppendLine(""); sb.AppendLine("Some examples:"); + sb.AppendLine(""); sb.AppendLine(" abp update"); - sb.AppendLine(" abp update --include-previews"); + sb.AppendLine(" abp update -p"); sb.AppendLine(""); - sb.AppendLine("See the documentation for more info."); + sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); return sb.ToString(); } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Http/CliHttpClient.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Http/CliHttpClient.cs index c065d832002..d6983a5db13 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Http/CliHttpClient.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Http/CliHttpClient.cs @@ -7,9 +7,9 @@ namespace Volo.Abp.Cli.Http { public class CliHttpClient : HttpClient { - public CliHttpClient() : base(new CliHttpClientHandler()) + public CliHttpClient(TimeSpan? timeout = null) : base(new CliHttpClientHandler()) { - Timeout = TimeSpan.FromSeconds(30); + Timeout = timeout ?? TimeSpan.FromMinutes(1); AddAuthentication(this); } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/AbpIoTemplateStore.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/AbpIoTemplateStore.cs index f3c873b4d0c..21f868e73f2 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/AbpIoTemplateStore.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/AbpIoTemplateStore.cs @@ -7,7 +7,6 @@ using System.Text; using System.Threading.Tasks; using Volo.Abp.Cli.Http; -using Volo.Abp.Cli.ProjectBuilding.Building; using Volo.Abp.DependencyInjection; using Volo.Abp.Http; using Volo.Abp.IO; @@ -40,13 +39,12 @@ public AbpIoTemplateStore( public async Task GetAsync( string name, - DatabaseProvider databaseProvider, - string projectName, string version = null) { + var latestVersion = await GetLatestTemplateVersionAsync(name); if (version == null) { - version = await GetLatestTemplateVersionAsync(name); + version = latestVersion; } DirectoryHelper.CreateIfNotExists(CliPaths.TemplateCache); @@ -55,7 +53,7 @@ public async Task GetAsync( if (Options.CacheTemplates && File.Exists(localCacheFile)) { Logger.LogInformation("Using cached template: " + name + ", version: " + version); - return new TemplateFile(File.ReadAllBytes(localCacheFile), version); + return new TemplateFile(File.ReadAllBytes(localCacheFile), version, latestVersion); } Logger.LogInformation("Downloading template: " + name + ", version: " + version); @@ -73,7 +71,7 @@ public async Task GetAsync( File.WriteAllBytes(localCacheFile, fileContent); } - return new TemplateFile(fileContent, version); + return new TemplateFile(fileContent, version, latestVersion); } private async Task GetLatestTemplateVersionAsync(string name) @@ -102,7 +100,7 @@ private async Task DownloadTemplateFileContentAsync(TemplateDownloadInpu { var postData = JsonSerializer.Serialize(input); - using (var client = new CliHttpClient()) + using (var client = new CliHttpClient(TimeSpan.FromMinutes(10))) { var responseMessage = await client.PostAsync( $"{CliUrls.WwwAbpIo}api/download/template/", diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/DatabaseProvider.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/DatabaseProvider.cs index f7ca31e1686..852c63057ab 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/DatabaseProvider.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/DatabaseProvider.cs @@ -6,18 +6,4 @@ public enum DatabaseProvider EntityFrameworkCore = 1, MongoDb = 2 } - - public static class DatabaseProviderExtensions - { - public static string ToProviderName(this DatabaseProvider databaseProvider) - { - switch (databaseProvider) - { - case DatabaseProvider.EntityFrameworkCore: return "ef"; - case DatabaseProvider.MongoDb: return "mongodb"; - case DatabaseProvider.NotSpecified: return "NotSpecified"; - default: return "NotSpecified"; - } - } - } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/DatabaseProviderExtensions.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/DatabaseProviderExtensions.cs new file mode 100644 index 00000000000..61e4805d007 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/DatabaseProviderExtensions.cs @@ -0,0 +1,16 @@ +namespace Volo.Abp.Cli.ProjectBuilding.Building +{ + public static class DatabaseProviderExtensions + { + public static string ToProviderName(this DatabaseProvider databaseProvider) + { + switch (databaseProvider) + { + case DatabaseProvider.EntityFrameworkCore: return "ef"; + case DatabaseProvider.MongoDb: return "mongodb"; + case DatabaseProvider.NotSpecified: return "NotSpecified"; + default: return "NotSpecified"; + } + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipeline.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipeline.cs index a6e5e2e56fc..91d83b086a2 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipeline.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipeline.cs @@ -4,18 +4,21 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building { public class ProjectBuildPipeline { + public ProjectBuildContext Context { get; } + public List Steps { get; } - public ProjectBuildPipeline() + public ProjectBuildPipeline(ProjectBuildContext context) { + Context = context; Steps = new List(); } - public void Execute(ProjectBuildContext context) + public void Execute() { foreach (var step in Steps) { - step.Execute(context); + step.Execute(Context); } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipelineBuilder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipelineBuilder.cs index 6ed0b7133e5..5f763b15f97 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipelineBuilder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipelineBuilder.cs @@ -6,7 +6,7 @@ public static class ProjectBuildPipelineBuilder { public static ProjectBuildPipeline Build(ProjectBuildContext context) { - var pipeline = new ProjectBuildPipeline(); + var pipeline = new ProjectBuildPipeline(context); pipeline.Steps.Add(new FileEntryListReadStep()); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/MoveFolderStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/MoveFolderStep.cs new file mode 100644 index 00000000000..a36cde6f3fe --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/MoveFolderStep.cs @@ -0,0 +1,34 @@ +using System; +using System.Linq; + +namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps +{ + public class MoveFolderStep : ProjectBuildPipelineStep + { + private readonly string _sourceFolder; + private readonly string _targetFolder; + + public MoveFolderStep(string sourceFolder, string targetFolder) + { + _sourceFolder = sourceFolder; + _targetFolder = targetFolder; + } + + public override void Execute(ProjectBuildContext context) + { + var fileEntries = context.Files.Where(file => file.Name.StartsWith(_sourceFolder)).ToList(); + foreach (var fileEntry in fileEntries) + { + var newName = fileEntry.Name.ReplaceFirst(_sourceFolder, _targetFolder); + + if (newName.IsIn("", "/")) + { + context.Files.Remove(fileEntry); + continue; + } + + fileEntry.SetName(newName); + } + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/NugetReferenceReplaceStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/NugetReferenceReplaceStep.cs index d129bbde558..057b03370ea 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/NugetReferenceReplaceStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/NugetReferenceReplaceStep.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.IO; using System.Text.RegularExpressions; using System.Xml; @@ -10,27 +11,56 @@ public class NugetReferenceReplaceStep : ProjectBuildPipelineStep { public override void Execute(ProjectBuildContext context) { + var nugetPackageVersion = context.TemplateFile.Version; + if (IsBranchName(nugetPackageVersion)) + { + nugetPackageVersion = context.TemplateFile.LatestVersion; + } + new NugetReferenceReplacer( context.Files, "MyCompanyName", "MyProjectName", - context.TemplateFile.Version + nugetPackageVersion ).Run(); } + private bool IsBranchName(string versionOrBranchName) + { + Check.NotNullOrWhiteSpace(versionOrBranchName, nameof(versionOrBranchName)); + + if (char.IsDigit(versionOrBranchName[0])) + { + return false; + } + + if (versionOrBranchName[0].IsIn('v','V') && + versionOrBranchName.Length > 1 && + char.IsDigit(versionOrBranchName[1])) + { + return false; + } + + return true; + } + private class NugetReferenceReplacer { private readonly List _entries; private readonly string _companyNamePlaceHolder; private readonly string _projectNamePlaceHolder; - private readonly string _latestNugetPackageVersion; + private readonly string _nugetPackageVersion; - public NugetReferenceReplacer(List entries, string companyNamePlaceHolder, string projectNamePlaceHolder, string latestNugetPackageVersion) + public NugetReferenceReplacer( + List entries, + string companyNamePlaceHolder, + string projectNamePlaceHolder, + string nugetPackageVersion) { _entries = entries; _companyNamePlaceHolder = companyNamePlaceHolder; _projectNamePlaceHolder = projectNamePlaceHolder; - _latestNugetPackageVersion = latestNugetPackageVersion; + _nugetPackageVersion = nugetPackageVersion; } public void Run() @@ -78,7 +108,7 @@ private string ProcessReferenceNodes(XmlDocument doc, string content) newNode.Attributes.Append(includeAttr); var versionAttr = doc.CreateAttribute("Version"); - versionAttr.Value = _latestNugetPackageVersion; + versionAttr.Value = _nugetPackageVersion; newNode.Attributes.Append(versionAttr); oldNode.ParentNode.ReplaceChild(newNode, oldNode); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveFolderStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveFolderStep.cs new file mode 100644 index 00000000000..ddf7010dd73 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveFolderStep.cs @@ -0,0 +1,28 @@ +using System.Linq; + +namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps +{ + public class RemoveFolderStep : ProjectBuildPipelineStep + { + private readonly string _folderPath; + + public RemoveFolderStep(string folderPath) + { + _folderPath = folderPath; + } + + public override void Execute(ProjectBuildContext context) + { + //Remove the folder content + var folderPathWithSlash = _folderPath + "/"; + context.Files.RemoveAll(file => file.Name.StartsWith(folderPathWithSlash)); + + //Remove the folder + var folder = context.Files.FirstOrDefault(file => file.Name == _folderPath); + if (folder != null) + { + context.Files.Remove(folder); + } + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs index 325999cfc12..497a38c4b1e 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs @@ -18,15 +18,13 @@ public RemoveProjectFromSolutionStep( string projectFolderPath = null) { _projectName = projectName; - _solutionFilePath = solutionFilePath ?? "/MyCompanyName.MyProjectName.sln"; - _projectFolderPath = projectFolderPath ?? ("/src/" + projectName); + _solutionFilePath = solutionFilePath ?? "/aspnet-core/MyCompanyName.MyProjectName.sln"; + _projectFolderPath = projectFolderPath ?? ("/aspnet-core/src/" + projectName); } public override void Execute(ProjectBuildContext context) { - var projectFolderWithSlash = _projectFolderPath + "/"; - context.Files.RemoveAll(file => file.Name.StartsWith(projectFolderWithSlash)); - context.Files.RemoveAll(file => file.Name == _projectFolderPath); + new RemoveFolderStep(_projectFolderPath).Execute(context); var solutionFile = context.GetFile(_solutionFilePath); solutionFile.NormalizeLineEndings(); solutionFile.SetLines(RemoveProject(solutionFile.GetLines().ToList())); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateInfo.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateInfo.cs index 3809646ecc6..137674dcc61 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateInfo.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateInfo.cs @@ -11,15 +11,19 @@ public abstract class TemplateInfo public DatabaseProvider DefaultDatabaseProvider { get; } + public UiFramework DefaultUiFramework { get; } + [CanBeNull] public string DocumentUrl { get; set; } protected TemplateInfo( [NotNull] string name, - DatabaseProvider defaultDatabaseProvider = DatabaseProvider.NotSpecified) + DatabaseProvider defaultDatabaseProvider = DatabaseProvider.NotSpecified, + UiFramework defaultUiFramework = UiFramework.NotSpecified) { Name = Check.NotNullOrWhiteSpace(name, nameof(name)); - DefaultDatabaseProvider = Check.NotNull(defaultDatabaseProvider, nameof(defaultDatabaseProvider)); + DefaultDatabaseProvider = defaultDatabaseProvider; + DefaultUiFramework = defaultUiFramework; } public virtual IEnumerable GetCustomSteps(ProjectBuildContext context) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/UiFramework.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/UiFramework.cs new file mode 100644 index 00000000000..eab34d141b6 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/UiFramework.cs @@ -0,0 +1,9 @@ +namespace Volo.Abp.Cli.ProjectBuilding.Building +{ + public enum UiFramework + { + NotSpecified = 0, + Mvc = 1, + Angular = 2 + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/UiFrameworkExtensions.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/UiFrameworkExtensions.cs new file mode 100644 index 00000000000..09eb0c474c2 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/UiFrameworkExtensions.cs @@ -0,0 +1,16 @@ +namespace Volo.Abp.Cli.ProjectBuilding.Building +{ + public static class UiFrameworkExtensions + { + public static string ToFrameworkName(this UiFramework uiFramework) + { + switch (uiFramework) + { + case UiFramework.Mvc: return "mvc"; + case UiFramework.Angular: return "angular"; + case UiFramework.NotSpecified: return "NotSpecified"; + default: return "NotSpecified"; + } + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Github/GithubRelease.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Github/GithubRelease.cs deleted file mode 100644 index 9d37befbc24..00000000000 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Github/GithubRelease.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using Newtonsoft.Json; - -namespace Volo.Abp.Cli.ProjectBuilding.Github -{ - [JsonObject] - public class GithubRelease - { - [JsonProperty("id")] - public int Id { get; set; } - - [JsonProperty("name")] - public string Name { get; set; } - - [JsonProperty("prerelease")] - public bool IsPrerelease { get; set; } - - [JsonProperty("published_at")] - public DateTime PublishTime { get; set; } - } -} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ITemplateStore.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ITemplateStore.cs index 064c4eb81b9..728d4d4a51f 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ITemplateStore.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ITemplateStore.cs @@ -1,6 +1,5 @@ using System.Threading.Tasks; using JetBrains.Annotations; -using Volo.Abp.Cli.ProjectBuilding.Building; namespace Volo.Abp.Cli.ProjectBuilding { @@ -8,8 +7,6 @@ public interface ITemplateStore { Task GetAsync( string name, - DatabaseProvider databaseProvider, - string projectName, [CanBeNull] string version = null ); } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs index ca106c1f6ec..7f1533459dd 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs @@ -12,21 +12,29 @@ public class ProjectBuildArgs [CanBeNull] public string TemplateName { get; set; } + [CanBeNull] + public string Version { get; set; } + public DatabaseProvider DatabaseProvider { get; set; } + public UiFramework UiFramework { get; set; } + [NotNull] public Dictionary ExtraProperties { get; set; } public ProjectBuildArgs( [NotNull] SolutionName solutionName, [CanBeNull] string templateName = null, + [CanBeNull] string version = null, DatabaseProvider databaseProvider = DatabaseProvider.NotSpecified, + UiFramework uiFramework = UiFramework.NotSpecified, Dictionary extraProperties = null) { - DatabaseProvider = databaseProvider; - TemplateName = templateName; SolutionName = Check.NotNull(solutionName, nameof(solutionName)); - + TemplateName = templateName; + Version = version; + DatabaseProvider = databaseProvider; + UiFramework = uiFramework; ExtraProperties = extraProperties ?? new Dictionary(); } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuilder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuilder.cs index 49d7648e229..de485b7c067 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuilder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuilder.cs @@ -1,9 +1,10 @@ -using System; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Options; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; using Volo.Abp.Cli.ProjectBuilding.Analyticses; using Volo.Abp.Cli.ProjectBuilding.Building; using Volo.Abp.DependencyInjection; @@ -40,20 +41,11 @@ public async Task BuildAsync(ProjectBuildArgs args) { var templateInfo = GetTemplateInfo(args); - args.TemplateName = templateInfo.Name; - - if (args.DatabaseProvider == DatabaseProvider.NotSpecified) - { - if (templateInfo.DefaultDatabaseProvider != DatabaseProvider.NotSpecified) - { - args.DatabaseProvider = templateInfo.DefaultDatabaseProvider; - } - } + NormalizeArgs(args, templateInfo); var templateFile = await TemplateStore.GetAsync( args.TemplateName, - args.DatabaseProvider, - args.SolutionName.FullName + args.Version ); var context = new ProjectBuildContext( @@ -62,7 +54,7 @@ public async Task BuildAsync(ProjectBuildArgs args) args ); - ProjectBuildPipelineBuilder.Build(context).Execute(context); + ProjectBuildPipelineBuilder.Build(context).Execute(); if (!templateInfo.DocumentUrl.IsNullOrEmpty()) { @@ -92,6 +84,30 @@ await CliAnalyticsCollect.CollectAsync(new CliAnalyticsCollectInputDto return new ProjectBuildResult(context.Result.ZipContent, args.SolutionName.ProjectName); } + private static void NormalizeArgs(ProjectBuildArgs args, TemplateInfo templateInfo) + { + if (args.TemplateName.IsNullOrEmpty()) + { + args.TemplateName = templateInfo.Name; + } + + if (args.DatabaseProvider == DatabaseProvider.NotSpecified) + { + if (templateInfo.DefaultDatabaseProvider != DatabaseProvider.NotSpecified) + { + args.DatabaseProvider = templateInfo.DefaultDatabaseProvider; + } + } + + if (args.UiFramework == UiFramework.NotSpecified) + { + if (templateInfo.DefaultUiFramework != UiFramework.NotSpecified) + { + args.UiFramework = templateInfo.DefaultUiFramework; + } + } + } + private TemplateInfo GetTemplateInfo(ProjectBuildArgs args) { if (args.TemplateName.IsNullOrWhiteSpace()) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateFile.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateFile.cs index 234a7b509a2..c7f9e77cb28 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateFile.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateFile.cs @@ -4,12 +4,15 @@ public class TemplateFile { public string Version { get; } + public string LatestVersion { get; } + public byte[] FileBytes { get; } - public TemplateFile(byte[] fileBytes, string version) + public TemplateFile(byte[] fileBytes, string version, string latestVersion) { FileBytes = fileBytes; Version = version; + LatestVersion = latestVersion; } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs index 89a5b654e86..53f8c566cda 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs @@ -1,6 +1,6 @@ using System; using Volo.Abp.Cli.ProjectBuilding.Building; -using Volo.Abp.Cli.ProjectBuilding.Templates.Mvc; +using Volo.Abp.Cli.ProjectBuilding.Templates.App; using Volo.Abp.Cli.ProjectBuilding.Templates.MvcModule; using Volo.Abp.DependencyInjection; @@ -10,17 +10,19 @@ public class TemplateInfoProvider : ITemplateInfoProvider, ITransientDependency { public TemplateInfo GetDefault() { - return Get(MvcTemplate.TemplateName); + return Get(AppTemplate.TemplateName); } public TemplateInfo Get(string name) { switch (name) { - case MvcTemplate.TemplateName: - return new MvcTemplate(); - case MvcModuleTemplate.TemplateName: - return new MvcModuleTemplate(); + case AppTemplate.TemplateName: + return new AppTemplate(); + case AppProTemplate.TemplateName: + return new AppProTemplate(); + case ModuleTemplate.TemplateName: + return new ModuleTemplate(); default: throw new Exception("There is no template found with given name: " + name); } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AngularEnvironmentFilePortChangeForSeparatedIdentityServersStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AngularEnvironmentFilePortChangeForSeparatedIdentityServersStep.cs new file mode 100644 index 00000000000..9a76f9ee214 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AngularEnvironmentFilePortChangeForSeparatedIdentityServersStep.cs @@ -0,0 +1,44 @@ +using System; +using System.Linq; +using Volo.Abp.Cli.ProjectBuilding.Building; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App +{ + public class AngularEnvironmentFilePortChangeForSeparatedIdentityServersStep : ProjectBuildPipelineStep + { + public override void Execute(ProjectBuildContext context) + { + var fileEntries = context.Files.Where(x => + !x.IsDirectory && + (x.Name.EndsWith("angular/src/environments/environment.ts", StringComparison.InvariantCultureIgnoreCase) || + x.Name.EndsWith("angular/src/environments/environment.hmr.ts", StringComparison.InvariantCultureIgnoreCase) || + x.Name.EndsWith("angular/src/environments/environment.prod.ts", StringComparison.InvariantCultureIgnoreCase)) + ) + .ToList(); + + foreach (var fileEntry in fileEntries) + { + fileEntry.NormalizeLineEndings(); + var lines = fileEntry.GetLines(); + + for (var i = 0; i < lines.Length; i++) + { + var line = lines[i]; + + if (line.Contains("issuer") && line.Contains("localhost")) + { + line = line.Replace("44305", "44301"); + } + else if (line.Contains("url") && line.Contains("localhost")) + { + line = line.Replace("44305", "44300"); + } + + lines[i] = line; + } + + fileEntry.SetLines(lines); + } + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppProTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppProTemplate.cs new file mode 100644 index 00000000000..1b05b887c5c --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppProTemplate.cs @@ -0,0 +1,16 @@ +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App +{ + public class AppProTemplate : AppTemplateBase + { + /// + /// "app-pro". + /// + public const string TemplateName = "app-pro"; + + public AppProTemplate() + : base(TemplateName) + { + + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs new file mode 100644 index 00000000000..030a0a87525 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs @@ -0,0 +1,16 @@ +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App +{ + public class AppTemplate : AppTemplateBase + { + /// + /// "app". + /// + public const string TemplateName = "app"; + + public AppTemplate() + : base(TemplateName) + { + + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs new file mode 100644 index 00000000000..559ddbf2b63 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs @@ -0,0 +1,124 @@ +using System.Collections.Generic; +using Volo.Abp.Cli.ProjectBuilding.Building; +using Volo.Abp.Cli.ProjectBuilding.Building.Steps; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App +{ + public abstract class AppTemplateBase : TemplateInfo + { + protected AppTemplateBase(string templateName) + : base(templateName, DatabaseProvider.EntityFrameworkCore, UiFramework.Mvc) + { + DocumentUrl = "https://docs.abp.io/en/abp/latest/Startup-Templates/Application"; + } + + public static bool IsAppTemplate(string templateName) + { + return templateName == AppTemplate.TemplateName || + templateName == AppProTemplate.TemplateName; + } + + public override IEnumerable GetCustomSteps(ProjectBuildContext context) + { + var steps = new List(); + + SwitchDatabaseProvider(context, steps); + DeleteUnrelatedProjects(context, steps); + RandomizeSslPorts(context, steps); + CleanupFolderHierarchy(context, steps); + + return steps; + } + + private static void SwitchDatabaseProvider(ProjectBuildContext context, List steps) + { + if (context.BuildArgs.DatabaseProvider == DatabaseProvider.MongoDb) + { + steps.Add(new AppTemplateSwitchEntityFrameworkCoreToMongoDbStep()); + } + + if (context.BuildArgs.DatabaseProvider != DatabaseProvider.EntityFrameworkCore) + { + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests")); + } + + if (context.BuildArgs.DatabaseProvider != DatabaseProvider.MongoDb) + { + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests")); + } + } + + private void DeleteUnrelatedProjects(ProjectBuildContext context, List steps) + { + if (context.BuildArgs.UiFramework == UiFramework.Mvc) + { + if (context.BuildArgs.ExtraProperties.ContainsKey("tiered")) + { + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests")); + steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.Web.Host", "MyCompanyName.MyProjectName.Web")); + } + else + { + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Host")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer")); + steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44303")); + } + + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds")); + } + + if (context.BuildArgs.UiFramework != UiFramework.Mvc) + { + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Host")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests")); + + if (context.BuildArgs.ExtraProperties.ContainsKey("separate-identity-server")) + { + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds")); + steps.Add(new AngularEnvironmentFilePortChangeForSeparatedIdentityServersStep()); + } + else + { + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer")); + steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds", "MyCompanyName.MyProjectName.HttpApi.Host")); + steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44305")); + } + } + + if (context.BuildArgs.UiFramework != UiFramework.Angular) + { + steps.Add(new RemoveFolderStep("/angular")); + } + } + + private static void RandomizeSslPorts(ProjectBuildContext context, List steps) + { + steps.Add(new TemplateRandomSslPortStep( + new List + { + "https://localhost:44300", + "https://localhost:44301", + "https://localhost:44302", + "https://localhost:44303", + "https://localhost:44305" + } + ) + ); + } + + private void CleanupFolderHierarchy(ProjectBuildContext context, List steps) + { + if (context.BuildArgs.UiFramework == UiFramework.Mvc) + { + steps.Add(new MoveFolderStep("/aspnet-core/", "/")); + } + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateChangeConsoleTestClientPortSettingsStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateChangeConsoleTestClientPortSettingsStep.cs new file mode 100644 index 00000000000..dbd5022f5ba --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateChangeConsoleTestClientPortSettingsStep.cs @@ -0,0 +1,29 @@ +using Volo.Abp.Cli.ProjectBuilding.Building; +using Volo.Abp.Cli.ProjectBuilding.Files; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App +{ + public class AppTemplateChangeConsoleTestClientPortSettingsStep : ProjectBuildPipelineStep + { + public string RemoteServicePort { get; } + public string IdentityServerPort { get; } + + /// + /// Assumed same as the if leaved as null. + public AppTemplateChangeConsoleTestClientPortSettingsStep( + string remoteServicePort, + string identityServerPort = null) + { + RemoteServicePort = remoteServicePort; + IdentityServerPort = identityServerPort ?? remoteServicePort; + } + + public override void Execute(ProjectBuildContext context) + { + context + .GetFile("/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/appsettings.json") + .ReplaceText("44300", RemoteServicePort) + .ReplaceText("44301", IdentityServerPort); + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateProjectRenameStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateProjectRenameStep.cs new file mode 100644 index 00000000000..f307bc66261 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateProjectRenameStep.cs @@ -0,0 +1,29 @@ +using Volo.Abp.Cli.ProjectBuilding.Building; +using Volo.Abp.Cli.ProjectBuilding.Building.Steps; +using Volo.Abp.Cli.ProjectBuilding.Files; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App +{ + public class AppTemplateProjectRenameStep : ProjectBuildPipelineStep + { + private readonly string _oldProjectName; + private readonly string _newProjectName; + + public AppTemplateProjectRenameStep( + string oldProjectName, + string newProjectName) + { + _oldProjectName = oldProjectName; + _newProjectName = newProjectName; + } + + public override void Execute(ProjectBuildContext context) + { + context + .GetFile("/aspnet-core/MyCompanyName.MyProjectName.sln") + .ReplaceText(_oldProjectName, _newProjectName); + + RenameHelper.RenameAll(context.Files, _oldProjectName, _newProjectName); + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs new file mode 100644 index 00000000000..ca290ab83f0 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs @@ -0,0 +1,219 @@ +using System; +using Volo.Abp.Cli.ProjectBuilding.Building; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App +{ + public class AppTemplateSwitchEntityFrameworkCoreToMongoDbStep : ProjectBuildPipelineStep + { + public override void Execute(ProjectBuildContext context) + { + //MyCompanyName.MyProjectName.Web + + ChangeProjectReference( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj", + "EntityFrameworkCore.DbMigrations", + "MongoDB" + ); + + ChangeModuleDependency( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs", + "MyCompanyName.MyProjectName.EntityFrameworkCore", + "MyCompanyName.MyProjectName.MongoDB", + "MyProjectNameEntityFrameworkCoreDbMigrationsModule", + "MyProjectNameMongoDbModule" + ); + + ChangeConnectionStringToMongoDb( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Web/appsettings.json" + ); + + //MyCompanyName.MyProjectName.IdentityServer + + ChangeProjectReference( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj", + "EntityFrameworkCore.DbMigrations", + "MongoDB" + ); + + ChangeModuleDependency( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs", + "MyCompanyName.MyProjectName.EntityFrameworkCore", + "MyCompanyName.MyProjectName.MongoDB", + "MyProjectNameEntityFrameworkCoreDbMigrationsModule", + "MyProjectNameMongoDbModule" + ); + + ChangeConnectionStringToMongoDb( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/appsettings.json" + ); + + //MyCompanyName.MyProjectName.HttpApi.Host + + ChangeProjectReference( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj", + "EntityFrameworkCore.DbMigrations", + "MongoDB" + ); + + ChangeModuleDependency( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs", + "MyCompanyName.MyProjectName.EntityFrameworkCore", + "MyCompanyName.MyProjectName.MongoDB", + "MyProjectNameEntityFrameworkCoreDbMigrationsModule", + "MyProjectNameMongoDbModule" + ); + + ChangeConnectionStringToMongoDb( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json" + ); + + //MyCompanyName.MyProjectName.HttpApi.HostWithIds + + ChangeProjectReference( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj", + "EntityFrameworkCore.DbMigrations", + "MongoDB" + ); + + ChangeModuleDependency( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs", + "MyCompanyName.MyProjectName.EntityFrameworkCore", + "MyCompanyName.MyProjectName.MongoDB", + "MyProjectNameEntityFrameworkCoreDbMigrationsModule", + "MyProjectNameMongoDbModule" + ); + + ChangeConnectionStringToMongoDb( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/appsettings.json" + ); + + //MyCompanyName.MyProjectName.DbMigrator + + ChangeProjectReference( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj", + "EntityFrameworkCore.DbMigrations", + "MongoDB" + ); + + ChangeModuleDependency( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyProjectNameDbMigratorModule.cs", + "MyCompanyName.MyProjectName.EntityFrameworkCore", + "MyCompanyName.MyProjectName.MongoDB", + "MyProjectNameEntityFrameworkCoreDbMigrationsModule", + "MyProjectNameMongoDbModule" + ); + + ChangeConnectionStringToMongoDb( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json" + ); + + //MyCompanyName.MyProjectName.Domain.Tests + + ChangeProjectReference( + context, + "/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj", + "EntityFrameworkCore.Tests", + "MongoDB.Tests" + ); + + ChangeModuleDependency( + context, + "/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyProjectNameDomainTestModule.cs", + "MyCompanyName.MyProjectName.EntityFrameworkCore", + "MyCompanyName.MyProjectName.MongoDB", + "MyProjectNameEntityFrameworkCoreTestModule", + "MyProjectNameMongoDbTestModule" + ); + } + + private void ChangeProjectReference( + ProjectBuildContext context, + string targetProjectFilePath, + string oldReference, + string newReference) + { + var file = context.GetFile(targetProjectFilePath); + + file.NormalizeLineEndings(); + + var lines = file.GetLines(); + for (var i = 0; i < lines.Length; i++) + { + if (lines[i].Contains("ProjectReference") && lines[i].Contains(oldReference)) + { + lines[i] = lines[i].Replace(oldReference, newReference); + file.SetLines(lines); + return; + } + } + + throw new ApplicationException($"Could not find the '{oldReference}' reference in the project '{targetProjectFilePath}'!"); + } + + private void ChangeModuleDependency( + ProjectBuildContext context, + string targetModuleFilePath, + string oldNamespace, + string newNamespace, + string oldModuleName, + string newModuleName) + { + var file = context.GetFile(targetModuleFilePath); + + file.NormalizeLineEndings(); + + var lines = file.GetLines(); + + for (var i = 0; i < lines.Length; i++) + { + if (lines[i].Contains($"using {oldNamespace};")) + { + lines[i] = $"using {newNamespace};"; + } + else if (lines[i].Contains(oldModuleName)) + { + lines[i] = lines[i].Replace(oldModuleName, newModuleName); + } + } + + file.SetLines(lines); + } + + private void ChangeConnectionStringToMongoDb( + ProjectBuildContext context, + string appsettingFilePath) + { + var file = context.GetFile(appsettingFilePath); + + file.NormalizeLineEndings(); + + var lines = file.GetLines(); + for (var i = 0; i < lines.Length; i++) + { + if (lines[i].Contains("Default") && lines[i].Contains("Database")) + { + lines[i] = " \"Default\": \"mongodb://localhost:27017/MyProjectName\""; + file.SetLines(lines); + return; + } + } + + throw new ApplicationException("Could not find the 'Default' connection string in appsettings.json file!"); + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplate.cs deleted file mode 100644 index 004d349b325..00000000000 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplate.cs +++ /dev/null @@ -1,77 +0,0 @@ -using System.Collections.Generic; -using Volo.Abp.Cli.ProjectBuilding.Building; -using Volo.Abp.Cli.ProjectBuilding.Building.Steps; -using Volo.Abp.Cli.ProjectBuilding.Templates.MvcModule; - -namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc -{ - public class MvcTemplate : TemplateInfo - { - /// - /// "mvc". - /// - public const string TemplateName = "mvc"; - - public MvcTemplate() - : base(TemplateName, DatabaseProvider.EntityFrameworkCore) - { - DocumentUrl = "https://docs.abp.io/en/abp/latest/Startup-Templates/Mvc"; - } - - public override IEnumerable GetCustomSteps(ProjectBuildContext context) - { - var steps = new List(); - - SwitchDatabaseProvider(context, steps); - DeleteUnrelatedProjects(context, steps); - - steps.Add(new TemplateRandomSslPortStep(new List - { - "https://localhost:44300", - "https://localhost:44301", - "https://localhost:44302", - "https://localhost:44303" - })); - - return steps; - } - - private static void SwitchDatabaseProvider(ProjectBuildContext context, List steps) - { - if (context.BuildArgs.DatabaseProvider == DatabaseProvider.MongoDb) - { - steps.Add(new MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep()); - } - - if (context.BuildArgs.DatabaseProvider != DatabaseProvider.EntityFrameworkCore) - { - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore")); - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations")); - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.Tests", projectFolderPath: "/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests")); - } - - if (context.BuildArgs.DatabaseProvider != DatabaseProvider.MongoDb) - { - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB")); - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB.Tests", projectFolderPath: "/test/MyCompanyName.MyProjectName.MongoDB.Tests")); - } - } - - private void DeleteUnrelatedProjects(ProjectBuildContext context, List steps) - { - if (context.BuildArgs.ExtraProperties.ContainsKey("tiered")) - { - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web")); - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Tests", projectFolderPath: "/test/MyCompanyName.MyProjectName.Web.Tests")); - steps.Add(new MvcTemplateProjectRenameStep("MyCompanyName.MyProjectName.Web.Host", "MyCompanyName.MyProjectName.Web")); - } - else - { - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Host")); - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host")); - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer")); - steps.Add(new MyTemplateChangeConsoleTestClientPortSettingsStep()); - } - } - } -} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateProjectRenameStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateProjectRenameStep.cs deleted file mode 100644 index 33a25a80a1d..00000000000 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateProjectRenameStep.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Volo.Abp.Cli.ProjectBuilding.Building; -using Volo.Abp.Cli.ProjectBuilding.Building.Steps; -using Volo.Abp.Cli.ProjectBuilding.Files; - -namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc -{ - public class MvcTemplateProjectRenameStep : ProjectBuildPipelineStep - { - private readonly string _oldProjectName; - private readonly string _newProjectName; - - public MvcTemplateProjectRenameStep( - string oldProjectName, - string newProjectName) - { - _oldProjectName = oldProjectName; - _newProjectName = newProjectName; - } - - public override void Execute(ProjectBuildContext context) - { - context - .GetFile("/MyCompanyName.MyProjectName.sln") - .ReplaceText(_oldProjectName, _newProjectName); - - RenameHelper.RenameAll(context.Files, _oldProjectName, _newProjectName); - } - } -} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs deleted file mode 100644 index 767b82fff31..00000000000 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs +++ /dev/null @@ -1,196 +0,0 @@ -using System; -using Volo.Abp.Cli.ProjectBuilding.Building; - -namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc -{ - public class MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep : ProjectBuildPipelineStep - { - public override void Execute(ProjectBuildContext context) - { - //MyCompanyName.MyProjectName.Web - - ChangeProjectReference( - context, - "/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj", - "EntityFrameworkCore.DbMigrations", - "MongoDB" - ); - - ChangeModuleDependency( - context, - "/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs", - "MyCompanyName.MyProjectName.EntityFrameworkCore", - "MyCompanyName.MyProjectName.MongoDB", - "MyProjectNameEntityFrameworkCoreDbMigrationsModule", - "MyProjectNameMongoDbModule" - ); - - ChangeConnectionStringToMongoDb( - context, - "/src/MyCompanyName.MyProjectName.Web/appsettings.json" - ); - - //MyCompanyName.MyProjectName.IdentityServer - - ChangeProjectReference( - context, - "/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj", - "EntityFrameworkCore.DbMigrations", - "MongoDB" - ); - - ChangeModuleDependency( - context, - "/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs", - "MyCompanyName.MyProjectName.EntityFrameworkCore", - "MyCompanyName.MyProjectName.MongoDB", - "MyProjectNameEntityFrameworkCoreDbMigrationsModule", - "MyProjectNameMongoDbModule" - ); - - ChangeConnectionStringToMongoDb( - context, - "/src/MyCompanyName.MyProjectName.IdentityServer/appsettings.json" - ); - - //MyCompanyName.MyProjectName.HttpApi.Host - - ChangeProjectReference( - context, - "/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj", - "EntityFrameworkCore.DbMigrations", - "MongoDB" - ); - - ChangeModuleDependency( - context, - "/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs", - "MyCompanyName.MyProjectName.EntityFrameworkCore", - "MyCompanyName.MyProjectName.MongoDB", - "MyProjectNameEntityFrameworkCoreDbMigrationsModule", - "MyProjectNameMongoDbModule" - ); - - ChangeConnectionStringToMongoDb( - context, - "/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json" - ); - - //MyCompanyName.MyProjectName.DbMigrator - - ChangeProjectReference( - context, - "/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj", - "EntityFrameworkCore.DbMigrations", - "MongoDB" - ); - - ChangeModuleDependency( - context, - "/src/MyCompanyName.MyProjectName.DbMigrator/MyProjectNameDbMigratorModule.cs", - "MyCompanyName.MyProjectName.EntityFrameworkCore", - "MyCompanyName.MyProjectName.MongoDB", - "MyProjectNameEntityFrameworkCoreDbMigrationsModule", - "MyProjectNameMongoDbModule" - ); - - ChangeConnectionStringToMongoDb( - context, - "/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json" - ); - - //MyCompanyName.MyProjectName.Domain.Tests - - ChangeProjectReference( - context, - "/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj", - "EntityFrameworkCore.Tests", - "MongoDB.Tests" - ); - - ChangeModuleDependency( - context, - "/test/MyCompanyName.MyProjectName.Domain.Tests/MyProjectNameDomainTestModule.cs", - "MyCompanyName.MyProjectName.EntityFrameworkCore", - "MyCompanyName.MyProjectName.MongoDB", - "MyProjectNameEntityFrameworkCoreTestModule", - "MyProjectNameMongoDbTestModule" - ); - } - - private void ChangeProjectReference( - ProjectBuildContext context, - string targetProjectFilePath, - string oldReference, - string newReference) - { - var file = context.GetFile(targetProjectFilePath); - - file.NormalizeLineEndings(); - - var lines = file.GetLines(); - for (var i = 0; i < lines.Length; i++) - { - if (lines[i].Contains("ProjectReference") && lines[i].Contains(oldReference)) - { - lines[i] = lines[i].Replace(oldReference, newReference); - file.SetLines(lines); - return; - } - } - - throw new ApplicationException($"Could not find the '{oldReference}' reference in the project '{targetProjectFilePath}'!"); - } - - private void ChangeModuleDependency( - ProjectBuildContext context, - string targetModuleFilePath, - string oldNamespace, - string newNamespace, - string oldModuleName, - string newModuleName) - { - var file = context.GetFile(targetModuleFilePath); - - file.NormalizeLineEndings(); - - var lines = file.GetLines(); - - for (var i = 0; i < lines.Length; i++) - { - if (lines[i].Contains($"using {oldNamespace};")) - { - lines[i] = $"using {newNamespace};"; - } - else if (lines[i].Contains(oldModuleName)) - { - lines[i] = lines[i].Replace(oldModuleName, newModuleName); - } - } - - file.SetLines(lines); - } - - private void ChangeConnectionStringToMongoDb( - ProjectBuildContext context, - string appsettingFilePath) - { - var file = context.GetFile(appsettingFilePath); - - file.NormalizeLineEndings(); - - var lines = file.GetLines(); - for (var i = 0; i < lines.Length; i++) - { - if (lines[i].Contains("Default") && lines[i].Contains("Database")) - { - lines[i] = " \"Default\": \"mongodb://localhost:27017|MyProjectName\""; - file.SetLines(lines); - return; - } - } - - throw new ApplicationException("Could not find the 'Default' connection string in appsettings.json file!"); - } - } -} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MyTemplateChangeConsoleTestClientPortSettingsStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MyTemplateChangeConsoleTestClientPortSettingsStep.cs deleted file mode 100644 index 88e0a562c8c..00000000000 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MyTemplateChangeConsoleTestClientPortSettingsStep.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Volo.Abp.Cli.ProjectBuilding.Building; -using Volo.Abp.Cli.ProjectBuilding.Files; - -namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc -{ - public class MyTemplateChangeConsoleTestClientPortSettingsStep : ProjectBuildPipelineStep - { - public override void Execute(ProjectBuildContext context) - { - context - .GetFile("/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/appsettings.json") - .ReplaceText("44395", "44361") - .ReplaceText("44348", "44361"); - } - } -} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MvcModule/ModuleTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MvcModule/ModuleTemplate.cs new file mode 100644 index 00000000000..b3eab61ac94 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MvcModule/ModuleTemplate.cs @@ -0,0 +1,67 @@ +using System.Collections.Generic; +using Volo.Abp.Cli.ProjectBuilding.Building; +using Volo.Abp.Cli.ProjectBuilding.Building.Steps; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.MvcModule +{ + public class ModuleTemplate : TemplateInfo + { + /// + /// "module". + /// + public const string TemplateName = "module"; + + public ModuleTemplate() + : base(TemplateName) + { + DocumentUrl = "https://docs.abp.io/en/abp/latest/Startup-Templates/Module"; + } + + public override IEnumerable GetCustomSteps(ProjectBuildContext context) + { + var steps = new List(); + + DeleteUnrelatedProjects(context, steps); + RandomizeSslPorts(context, steps); + CleanupFolderHierarchy(context, steps); + + return steps; + } + + private void DeleteUnrelatedProjects(ProjectBuildContext context, List steps) + { + if (context.BuildArgs.ExtraProperties.ContainsKey("no-ui")) + { + steps.Add(new RemoveProjectFromSolutionStep( + "MyCompanyName.MyProjectName.Web" + )); + + steps.Add(new RemoveProjectFromSolutionStep( + "MyCompanyName.MyProjectName.Web.Host", + projectFolderPath: "/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host" + )); + + steps.Add(new RemoveProjectFromSolutionStep( + "MyCompanyName.MyProjectName.Web.Unified", + projectFolderPath: "/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified" + )); + } + } + + private void RandomizeSslPorts(ProjectBuildContext context, List steps) + { + steps.Add(new TemplateRandomSslPortStep(new List + { + "https://localhost:44300", + "https://localhost:44301", + "https://localhost:44302", + "https://localhost:44303" + })); + } + + private void CleanupFolderHierarchy(ProjectBuildContext context, List steps) + { + steps.Add(new MoveFolderStep("/aspnet-core/", "/")); + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MvcModule/MvcModuleTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MvcModule/MvcModuleTemplate.cs deleted file mode 100644 index 32b4a2a24b9..00000000000 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MvcModule/MvcModuleTemplate.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System.Collections.Generic; -using Volo.Abp.Cli.ProjectBuilding.Building; -using Volo.Abp.Cli.ProjectBuilding.Building.Steps; - -namespace Volo.Abp.Cli.ProjectBuilding.Templates.MvcModule -{ - public class MvcModuleTemplate : TemplateInfo - { - /// - /// "mvc-module". - /// - public const string TemplateName = "mvc-module"; - - public MvcModuleTemplate() - : base(TemplateName) - { - DocumentUrl = "https://docs.abp.io/en/abp/latest/Startup-Templates/Mvc-Module"; - } - - public override IEnumerable GetCustomSteps(ProjectBuildContext context) - { - var steps = new List(); - - DeleteUnrelatedProjects(context, steps); - - steps.Add(new TemplateRandomSslPortStep(new List - { - "https://localhost:44300", - "https://localhost:44301", - "https://localhost:44302", - "https://localhost:44303" - })); - - return steps; - } - - private void DeleteUnrelatedProjects(ProjectBuildContext context, List steps) - { - if (context.BuildArgs.ExtraProperties.ContainsKey("no-ui")) - { - steps.Add(new RemoveProjectFromSolutionStep( - "MyCompanyName.MyProjectName.Web" - )); - - steps.Add(new RemoveProjectFromSolutionStep( - "MyCompanyName.MyProjectName.Web.Host", - projectFolderPath: "/host/MyCompanyName.MyProjectName.Web.Host" - )); - - steps.Add(new RemoveProjectFromSolutionStep( - "MyCompanyName.MyProjectName.Web.Unified", - projectFolderPath: "/host/MyCompanyName.MyProjectName.Web.Unified" - )); - } - } - } -} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateRandomSslPortStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateRandomSslPortStep.cs index bcb3a368629..8b30ca25191 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateRandomSslPortStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateRandomSslPortStep.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text.RegularExpressions; using Volo.Abp.Cli.ProjectBuilding.Building; -using Volo.Abp.Cli.ProjectBuilding.Templates.Mvc; +using Volo.Abp.Cli.ProjectBuilding.Templates.App; namespace Volo.Abp.Cli.ProjectBuilding.Templates { @@ -15,7 +15,9 @@ public class TemplateRandomSslPortStep : ProjectBuildPipelineStep private readonly List _buildInSslUrls; - public TemplateRandomSslPortStep(List buildInSslSslUrls, int minSslPort = 44300, + public TemplateRandomSslPortStep( + List buildInSslSslUrls, + int minSslPort = 44300, int maxSslPort = 44399) { _buildInSslUrls = buildInSslSslUrls; @@ -34,21 +36,31 @@ public override void Execute(ProjectBuildContext context) !x.IsDirectory && x.Name.EndsWith("appSettings.json", StringComparison.InvariantCultureIgnoreCase)) .ToList(); - if (context.Template.Name == MvcTemplate.TemplateName) + var angularEnvironments = context.Files.Where(x => + !x.IsDirectory && + (x.Name.EndsWith("environments/environment.ts", StringComparison.InvariantCultureIgnoreCase) || + x.Name.EndsWith("environments/environment.hmr.ts", StringComparison.InvariantCultureIgnoreCase) || + x.Name.EndsWith("environments/environment.prod.ts", StringComparison.InvariantCultureIgnoreCase)) + ) + .ToList(); + + if (AppTemplateBase.IsAppTemplate(context.Template.Name)) { // no tiered - if (launchSettings.Count == 1&& launchSettings.First().Name.Equals("/src/MyCompanyName.MyProjectName.Web/Properties/launchSettings.json", StringComparison.InvariantCultureIgnoreCase)) + if (launchSettings.Count == 1 && + launchSettings.First().Name + .Equals("/aspnet-core/src/MyCompanyName.MyProjectName.Web/Properties/launchSettings.json", StringComparison.InvariantCultureIgnoreCase)) { var dbMigrator = appSettings.FirstOrDefault(x => - x.Name.Equals("/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json", StringComparison.InvariantCultureIgnoreCase)); + x.Name.Equals("/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json", StringComparison.InvariantCultureIgnoreCase)); dbMigrator?.SetContent(dbMigrator.Content.Replace("https://localhost:44302", "https://localhost:44303")); var web = appSettings.FirstOrDefault(x => - x.Name.Equals("/src/MyCompanyName.MyProjectName.Web/appsettings.json", StringComparison.InvariantCultureIgnoreCase)); + x.Name.Equals("/aspnet-core/src/MyCompanyName.MyProjectName.Web/appsettings.json", StringComparison.InvariantCultureIgnoreCase)); web?.SetContent(web.Content.Replace("https://localhost:44301", "https://localhost:44303")); var consoleTestApp = appSettings.FirstOrDefault(x => - x.Name.Equals("/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/appsettings.json", StringComparison.InvariantCultureIgnoreCase)); + x.Name.Equals("/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/appsettings.json", StringComparison.InvariantCultureIgnoreCase)); consoleTestApp?.SetContent(consoleTestApp.Content.Replace("https://localhost:44300", "https://localhost:44303")); consoleTestApp?.SetContent(consoleTestApp.Content.Replace("https://localhost:44301", "https://localhost:44303")); } @@ -99,6 +111,22 @@ public override void Execute(ProjectBuildContext context) } appSetting.SetLines(appSettingLines); } + + foreach (var environment in angularEnvironments) + { + environment.NormalizeLineEndings(); + + var environmentLines = environment.GetLines(); + for (var i = 0; i < environmentLines.Length; i++) + { + if (environmentLines[i].Contains(buildInUrl)) + { + environmentLines[i] = environmentLines[i].Replace(buildInUrl, $"{buildInUrlWithoutPort}:{newPort}"); + } + } + environment.SetLines(environmentLines); + } + } } } @@ -112,13 +140,13 @@ private string GetRandomPort(IReadOnlyCollection excludePort = null) : ports.ToList()); } - private string GetUrlPort(string url) + private static string GetUrlPort(string url) { var match = Regex.Match(url, @":(\d+)"); return match.Success ? match.Groups[1].Value : ""; } - private string GetUrlWithoutPort(string url) + private static string GetUrlWithoutPort(string url) { var match = Regex.Match(url, @"(^.+):"); return match.Success ? match.Groups[1].Value : ""; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationAdder.cs index d3c324431b9..cc4d3f74a9a 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationAdder.cs @@ -8,22 +8,22 @@ namespace Volo.Abp.Cli.ProjectModification { public class EfCoreMigrationAdder : ITransientDependency { - public void AddMigration(string csprojFile, string module, bool updateDatabase = true) + public void AddMigration(string csprojFile, string module, string startupProject, bool updateDatabase = true) { var moduleName = ParseModuleName(module); var migrationName = "Added_" + moduleName + "_Module" + GetUniquePostFix(); - CmdHelper.RunCmd("cd \"" + Path.GetDirectoryName(csprojFile) + "\" & dotnet ef migrations add " + migrationName); + CmdHelper.RunCmd("cd \"" + Path.GetDirectoryName(csprojFile) + "\" & dotnet ef migrations add " + migrationName + GetStartupProjectOption(startupProject)); if (updateDatabase) { - UpdateDatabase(csprojFile); + UpdateDatabase(csprojFile, startupProject); } } - protected void UpdateDatabase(string csprojFile) + protected void UpdateDatabase(string csprojFile, string startupProject) { - CmdHelper.RunCmd("cd \"" + Path.GetDirectoryName(csprojFile) + "\" & dotnet ef database update"); + CmdHelper.RunCmd("cd \"" + Path.GetDirectoryName(csprojFile) + "\" & dotnet ef database update" + GetStartupProjectOption(startupProject)); } protected virtual string ParseModuleName(string fullModuleName) @@ -42,5 +42,10 @@ protected virtual string GetUniquePostFix() { return "_" + new Random().Next(1,99999); } + + protected virtual string GetStartupProjectOption(string startupProject) + { + return startupProject.IsNullOrWhiteSpace() ? "" : $" -s {startupProject}"; + } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs index 4366470cfe3..22e063a8ae9 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs @@ -47,6 +47,7 @@ public SolutionModuleAdder( public virtual async Task AddAsync( [NotNull] string solutionFile, [NotNull] string moduleName, + string startupProject, bool skipDbMigrations = false) { Check.NotNull(solutionFile, nameof(solutionFile)); @@ -91,10 +92,10 @@ public virtual async Task AddAsync( } } - ModifyDbContext(projectFiles, module, skipDbMigrations); + ModifyDbContext(projectFiles, module, startupProject, skipDbMigrations); } - protected void ModifyDbContext(string[] projectFiles, ModuleInfo module, bool skipDbMigrations = false) + protected void ModifyDbContext(string[] projectFiles, ModuleInfo module, string startupProject, bool skipDbMigrations = false) { if (string.IsNullOrWhiteSpace(module.EfCoreConfigureMethodName)) { @@ -122,7 +123,7 @@ protected void ModifyDbContext(string[] projectFiles, ModuleInfo module, bool sk if (!skipDbMigrations) { - EfCoreMigrationAdder.AddMigration(dbMigrationsProject, module.Name); + EfCoreMigrationAdder.AddMigration(dbMigrationsProject, module.Name, startupProject); } } diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/cs.json b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/cs.json index d38574303a9..2be5ff3b15c 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/cs.json +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/cs.json @@ -15,6 +15,20 @@ "The field {0} must be a string with a maximum length of {1}.": "Pole {0} musí být řetězec o maximální délce {1}.", "The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.": "Pole {0} musí být řetězec o minimální délce {2} a maximální délce {1} znaků.", "The {0} field is not a valid fully-qualified http, https, or ftp URL.": "Pole {0} není platná plně kvalifikovaná adresa http, https, nebo ftp URL.", - "The field {0} is invalid.": "Pole {0} je neplatné." + "The field {0} is invalid.": "Pole {0} je neplatné.", + "ThisFieldIsNotAValidCreditCardNumber.": "V poli {0} není platné číslo kreditní karty.", + "ThisFieldIsNotValid.": "{0} není platný.", + "ThisFieldIsNotAValidEmailAddress.": "V poli {0} není platný email.", + "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Pole přijímá soubory pouze s následujícími koncovkami: {0}", + "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthoOf{0}": "Vy poli musí být řežezec nebo řada o maximální délce '{0}'.", + "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "V poli musí být řežezec nebo řada o minimální délce '{0}'.", + "ThisFieldIsNotAValidPhoneNumber.": "V poli není platné telefonní číslo.", + "ThisFieldMustBeBetween{0}And{1}": "Pole musí být mezi {0} a {1}.", + "ThisFieldMustMatchTheRegularExpression{0}": "Pole musí odpovídat regulérnímu výrazu '{0}'.", + "ThisFieldIsRequired.": "Pole je povinné.", + "ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "Pole musí být řetězec o maximální délce {0}.", + "ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "Pole musí být řetězec o minimální délce {1} a maximální délce {0} znaků.", + "ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "Pole není platná plně kvalifikovaná adresa http, https, nebo ftp URL.", + "ThisFieldIsInvalid.": "Pole je neplatné." } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/en.json b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/en.json index dc853cca3a9..9dfaedb32f9 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/en.json +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/en.json @@ -15,6 +15,21 @@ "The field {0} must be a string with a maximum length of {1}.": "The field {0} must be a string with a maximum length of {1}.", "The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.": "The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.", "The {0} field is not a valid fully-qualified http, https, or ftp URL.": "The {0} field is not a valid fully-qualified http, https, or ftp URL.", - "The field {0} is invalid.": "The field {0} is invalid." + "The field {0} is invalid.": "The field {0} is invalid.", + "'{0}' and '{1}' do not match.": "'{0}' and '{1}' do not match.", + "ThisFieldIsNotAValidCreditCardNumber.": "This field is not a valid credit card number.", + "ThisFieldIsNotValid.": "This field is not valid.", + "ThisFieldIsNotAValidEmailAddress.": "This field is not a valid e-mail address.", + "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "This field only accepts files with the following extensions: {0}", + "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthoOf{0}": "This field must be a string or array type with a maximum length of '{0}'.", + "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "This field must be a string or array type with a minimum length of '{0}'.", + "ThisFieldIsNotAValidPhoneNumber.": "This field is not a valid phone number.", + "ThisFieldMustBeBetween{0}And{1}": "This field must be between {0} and {1}.", + "ThisFieldMustMatchTheRegularExpression{0}": "This field must match the regular expression '{0}'.", + "ThisFieldIsRequired.": "This field is required.", + "ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "This field must be a string with a maximum length of {0}.", + "ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "This field must be a string with a minimum length of {1} and a maximum length of {0}.", + "ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "This field is not a valid fully-qualified http, https, or ftp URL.", + "ThisFieldIsInvalid.": "This field is invalid." } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/tr.json b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/tr.json index b851f8dafa1..447495e2364 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/tr.json +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/tr.json @@ -15,6 +15,20 @@ "The field {0} must be a string with a maximum length of {1}.": "{0} alanı en fazla {1} uzunluğunda bir metin olmalıdır.", "The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.": "{0} alanı en az {2}, en fazla {1} uzunluğunda bir metin olmalıdır.", "The {0} field is not a valid fully-qualified http, https, or ftp URL.": "{0} alanı geçerli bir http, https, ya da ftp adresi olmalıdır.", - "The field {0} is invalid.": "{0} alanı geçerli değil." + "The field {0} is invalid.": "{0} alanı geçerli değil.", + "ThisFieldIsNotAValidCreditCardNumber.": "Bu alan geçerli bir kredi kartı numarası olmalıdır.", + "ThisFieldIsNotValid.": "Bu alan geçerli değil.", + "ThisFieldIsNotAValidEmailAddress.": "Bu alan geçerli bir e-posta adresi olmalıdır.", + "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Bu alan sadece şu uzantılarda dosyaları kabul eder: {0}", + "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthoOf{0}": "Bu alan en fazla '{0}' uzunluğunda bir metin ya da dizi olmalıdır.", + "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "Bu alan en az '{0}' uzunluğunda bir metin ya da dizi olmalıdır.", + "ThisFieldIsNotAValidPhoneNumber.": "Bu alan geçerli bir telefon numarası olmalıdır.", + "ThisFieldMustBeBetween{0}And{1}": "Bu alanın değeri {0} ile {1} arasında olmalıdır.", + "ThisFieldMustMatchTheRegularExpression{0}": "Bu alan şu düzenli ifadeye uymalıdır: '{0}'.", + "ThisFieldIsRequired.": "Bu alan zorunludur.", + "ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "Bu alan en fazla {0} uzunluğunda bir metin olmalıdır.", + "ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "Bu alan en az {1}, en fazla {0} uzunluğunda bir metin olmalıdır.", + "ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "Bu alan geçerli bir http, https, ya da ftp adresi olmalıdır.", + "ThisFieldIsInvalid.": "Bu alan geçerli değil." } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/zh-Hans.json b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/zh-Hans.json index c542161029f..7b0b21deb55 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/zh-Hans.json +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/zh-Hans.json @@ -1,20 +1,34 @@ { "culture": "zh-Hans", - "texts": { - "'{0}' and '{1}' do not match.": "'{0}'与'{1}'不匹配.", - "The {0} field is not a valid credit card number.": "字段{0}不是有效的信用卡号码.", - "{0} is not valid.": "{0}验证未通过.", - "The {0} field is not a valid e-mail address.": "字段{0}不是有效的邮箱地址.", - "The {0} field only accepts files with the following extensions: {1}": "{0}字段只允许以下扩展名的文件: {1}", - "The field {0} must be a string or array type with a maximum length of '{1}'.": "字段{0}必须是最大长度为'{1}'的字符串或数组.", - "The field {0} must be a string or array type with a minimum length of '{1}'.": "字段{0}必须是最小长度为'{1}'的字符串或数组.", - "The {0} field is not a valid phone number.": "字段{0}不是有效的身份证号码.", - "The field {0} must be between {1} and {2}.": "字段{0}值必须在{1}和{2}范围内.", - "The field {0} must match the regular expression '{1}'.": "字段{0}必须匹配正则表达式'{1}'.", - "The {0} field is required.": "字段{0}不可为空.", - "The field {0} must be a string with a maximum length of {1}.": "字段{0}必须是长度为{1}的字符串.", - "The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.": "字段{0}必须是最小长度为{2}并且最大长度{1}的字符串.", - "The {0} field is not a valid fully-qualified http, https, or ftp URL.": "字段{0}不是有效的完全限定的http,https或ftp URL.", - "The field {0} is invalid.": "字段{0}是无效值." - } + "texts": { + "'{0}' and '{1}' do not match.": "'{0}'与'{1}'不匹配.", + "The {0} field is not a valid credit card number.": "字段{0}不是有效的信用卡号码.", + "{0} is not valid.": "{0}验证未通过.", + "The {0} field is not a valid e-mail address.": "字段{0}不是有效的邮箱地址.", + "The {0} field only accepts files with the following extensions: {1}": "{0}字段只允许以下扩展名的文件: {1}", + "The field {0} must be a string or array type with a maximum length of '{1}'.": "字段{0}必须是最大长度为'{1}'的字符串或数组.", + "The field {0} must be a string or array type with a minimum length of '{1}'.": "字段{0}必须是最小长度为'{1}'的字符串或数组.", + "The {0} field is not a valid phone number.": "字段{0}不是有效的身份证号码.", + "The field {0} must be between {1} and {2}.": "字段{0}值必须在{1}和{2}范围内.", + "The field {0} must match the regular expression '{1}'.": "字段{0}必须匹配正则表达式'{1}'.", + "The {0} field is required.": "字段{0}不可为空.", + "The field {0} must be a string with a maximum length of {1}.": "字段{0}必须是长度为{1}的字符串.", + "The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.": "字段{0}必须是最小长度为{2}并且最大长度{1}的字符串.", + "The {0} field is not a valid fully-qualified http, https, or ftp URL.": "字段{0}不是有效的完全限定的http,https或ftp URL.", + "The field {0} is invalid.": "字段{0}是无效值.", + "ThisFieldIsNotAValidCreditCardNumber.": "字段不是有效的信用卡号码.", + "ThisFieldIsNotValid.": "验证未通过.", + "ThisFieldIsNotAValidEmailAddress.": "字段不是有效的邮箱地址.", + "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "字段只允许以下扩展名的文件: {0}", + "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthoOf{0}": "字段必须是最大长度为'{0}'的字符串或数组.", + "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "字段必须是最小长度为'{0}'的字符串或数组.", + "ThisFieldIsNotAValidPhoneNumber.": "字段不是有效的身份证号码.", + "ThisFieldMustBeBetween{0}And{1}": "字段值必须在{0}和{1}范围内.", + "ThisFieldMustMatchTheRegularExpression{0}": "字段必须匹配正则表达式'{0}'.", + "ThisFieldIsRequired.": "字段不可为空.", + "ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "字段必须是长度为{0}的字符串.", + "ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "字段必须是最小长度为{1}并且最大长度{*}的字符串.", + "ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "字段{0}不是有效的完全限定的http,https或ftp URL.", + "ThisFieldIsInvalid.": "字段是无效值." + } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs index e36640de27b..0d527efc4c9 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.DependencyInjection; +using System; +using Microsoft.Extensions.DependencyInjection; using MongoDB.Driver; using Volo.Abp.Data; using Volo.Abp.MongoDB; @@ -30,14 +31,9 @@ public TMongoDbContext GetDbContext() var connectionString = _connectionStringResolver.Resolve(); var dbContextKey = $"{typeof(TMongoDbContext).FullName}_{connectionString}"; - string databaseName; - if (connectionString.Contains("|")) - { - var splitted = connectionString.Split('|'); - connectionString = splitted[0]; - databaseName = splitted[1]; - } - else + var mongoUrl = new MongoUrl(connectionString); + var databaseName = mongoUrl.DatabaseName; + if (databaseName.IsNullOrWhiteSpace()) { databaseName = ConnectionStringNameAttribute.GetConnStringName(); } @@ -47,7 +43,7 @@ public TMongoDbContext GetDbContext() dbContextKey, () => { - var database = new MongoClient(connectionString).GetDatabase(databaseName); + var database = new MongoClient(mongoUrl).GetDatabase(databaseName); var dbContext = unitOfWork.ServiceProvider.GetRequiredService(); diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo.Abp.Account.Application.Contracts.csproj b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo.Abp.Account.Application.Contracts.csproj index 0f1621b6b27..039c5598605 100644 --- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo.Abp.Account.Application.Contracts.csproj +++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo.Abp.Account.Application.Contracts.csproj @@ -11,11 +11,7 @@ - - - - - + diff --git a/modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/cs.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/cs.json similarity index 100% rename from modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/cs.json rename to modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/cs.json diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/en.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/en.json index a9c8dcc3fd9..892e60f89ef 100644 --- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/en.json +++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/en.json @@ -1,5 +1,21 @@ -{ +{ "culture": "en", "texts": { + "UserName": "User name", + "EmailAddress": "Email address", + "UserNameOrEmailAddress": "User name or email address", + "Password": "Password", + "RememberMe": "Remember me", + "UseAnotherServiceToLogin": "Use another service to log in", + "UserLockedOutMessage": "The user account has been locked out due to invalid login attempts. Please wait a while and try again.", + "InvalidUserNameOrPassword": "Invalid username or password!", + "LoginIsNotAllowed": "You are not allowed to login! You need to confirm your email/phone number.", + "SelfRegistrationDisabledMessage": "Self user registration is disabled for this application. Contact to the application administrator to register a new user.", + "Login": "Login", + "Cancel": "Cancel", + "Register": "Register", + "InvalidLoginRequest": "Invalid login request", + "ThereAreNoLoginSchemesConfiguredForThisClient": "There are no login schemes configured for this client.", + "LogInUsingYourProviderAccount": "Log in using your {0} account" } } \ No newline at end of file diff --git a/modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/pl.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/pl.json similarity index 100% rename from modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/pl.json rename to modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/pl.json diff --git a/modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/pt-BR.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/pt-BR.json similarity index 100% rename from modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/pt-BR.json rename to modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/pt-BR.json diff --git a/modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/tr.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json similarity index 100% rename from modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/tr.json rename to modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json diff --git a/modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/vi.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/vi.json similarity index 100% rename from modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/vi.json rename to modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/vi.json diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json index c5ad813265f..6aee740de60 100644 --- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json +++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json @@ -1,5 +1,21 @@ -{ +{ "culture": "zh-Hans", "texts": { + "UserName": "用户名称", + "EmailAddress": "邮箱地址", + "UserNameOrEmailAddress": "用户名称或邮箱地址", + "Password": "密码", + "RememberMe": "记住我", + "UseAnotherServiceToLogin": "使用另一个服务登录", + "UserLockedOutMessage": "登录失败,用户账户已被锁定.请稍后再试.", + "InvalidUserNameOrPassword": "用户名或密码错误!", + "LoginIsNotAllowed": "无法登录!你需要验证邮箱地址/手机号.", + "SelfRegistrationDisabledMessage": "应用程序未开放注册,请联系管理员添加新用户.", + "Login": "登录", + "Cancel": "取消", + "Register": "注册", + "InvalidLoginRequest": "登录请求无效", + "ThereAreNoLoginSchemesConfiguredForThisClient": "没有为此客户端配置登录方案.", + "LogInUsingYourProviderAccount": "使用你的{0}帐户登录" } -} \ No newline at end of file +} diff --git a/modules/account/src/Volo.Abp.Account.HttpApi/Volo/Abp/Account/AbpAccountHttpApiModule.cs b/modules/account/src/Volo.Abp.Account.HttpApi/Volo/Abp/Account/AbpAccountHttpApiModule.cs index 42e47c31c50..3a58d116432 100644 --- a/modules/account/src/Volo.Abp.Account.HttpApi/Volo/Abp/Account/AbpAccountHttpApiModule.cs +++ b/modules/account/src/Volo.Abp.Account.HttpApi/Volo/Abp/Account/AbpAccountHttpApiModule.cs @@ -1,4 +1,7 @@ -using Volo.Abp.AspNetCore.Mvc; +using Localization.Resources.AbpUi; +using Volo.Abp.Account.Localization; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Localization; using Volo.Abp.Modularity; namespace Volo.Abp.Account @@ -8,6 +11,14 @@ namespace Volo.Abp.Account typeof(AbpAspNetCoreMvcModule))] public class AbpAccountHttpApiModule : AbpModule { - + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes(typeof(AbpUiResource)); + }); + } } } \ No newline at end of file diff --git a/modules/account/src/Volo.Abp.Account.Web/AbpAccountWebModule.cs b/modules/account/src/Volo.Abp.Account.Web/AbpAccountWebModule.cs index e4e446dc8d7..f7481b3485e 100644 --- a/modules/account/src/Volo.Abp.Account.Web/AbpAccountWebModule.cs +++ b/modules/account/src/Volo.Abp.Account.Web/AbpAccountWebModule.cs @@ -1,12 +1,9 @@ -using Localization.Resources.AbpUi; -using Microsoft.Extensions.DependencyInjection; -using Volo.Abp.Account.Web.Localization; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Account.Localization; using Volo.Abp.AspNetCore.Mvc.Localization; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars; using Volo.Abp.Identity.AspNetCore; -using Volo.Abp.Localization; -using Volo.Abp.Localization.Resources.AbpValidation; using Volo.Abp.Modularity; using Volo.Abp.UI.Navigation; using Volo.Abp.VirtualFileSystem; @@ -40,14 +37,6 @@ public override void ConfigureServices(ServiceConfigurationContext context) options.MenuContributors.Add(new AbpAccountUserMenuContributor()); }); - Configure(options => - { - options.Resources - .Add("en") - .AddVirtualJson("/Localization/Resources/AbpAccount/Web") - .AddBaseTypes(typeof(AbpUiResource), typeof(AbpValidationResource)); - }); - Configure(options => { options.Contributors.Add(new AccountModuleToolbarContributor()); diff --git a/modules/account/src/Volo.Abp.Account.Web/Localization/AccountResource.cs b/modules/account/src/Volo.Abp.Account.Web/Localization/AccountResource.cs deleted file mode 100644 index cb3b542887b..00000000000 --- a/modules/account/src/Volo.Abp.Account.Web/Localization/AccountResource.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Volo.Abp.Localization; - -namespace Volo.Abp.Account.Web.Localization -{ - [LocalizationResourceName("AbpAccount")] - public class AccountResource - { - - } -} diff --git a/modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/en.json b/modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/en.json deleted file mode 100644 index 892e60f89ef..00000000000 --- a/modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/en.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "culture": "en", - "texts": { - "UserName": "User name", - "EmailAddress": "Email address", - "UserNameOrEmailAddress": "User name or email address", - "Password": "Password", - "RememberMe": "Remember me", - "UseAnotherServiceToLogin": "Use another service to log in", - "UserLockedOutMessage": "The user account has been locked out due to invalid login attempts. Please wait a while and try again.", - "InvalidUserNameOrPassword": "Invalid username or password!", - "LoginIsNotAllowed": "You are not allowed to login! You need to confirm your email/phone number.", - "SelfRegistrationDisabledMessage": "Self user registration is disabled for this application. Contact to the application administrator to register a new user.", - "Login": "Login", - "Cancel": "Cancel", - "Register": "Register", - "InvalidLoginRequest": "Invalid login request", - "ThereAreNoLoginSchemesConfiguredForThisClient": "There are no login schemes configured for this client.", - "LogInUsingYourProviderAccount": "Log in using your {0} account" - } -} \ No newline at end of file diff --git a/modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/zh-Hans.json b/modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/zh-Hans.json deleted file mode 100644 index 6aee740de60..00000000000 --- a/modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/zh-Hans.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "culture": "zh-Hans", - "texts": { - "UserName": "用户名称", - "EmailAddress": "邮箱地址", - "UserNameOrEmailAddress": "用户名称或邮箱地址", - "Password": "密码", - "RememberMe": "记住我", - "UseAnotherServiceToLogin": "使用另一个服务登录", - "UserLockedOutMessage": "登录失败,用户账户已被锁定.请稍后再试.", - "InvalidUserNameOrPassword": "用户名或密码错误!", - "LoginIsNotAllowed": "无法登录!你需要验证邮箱地址/手机号.", - "SelfRegistrationDisabledMessage": "应用程序未开放注册,请联系管理员添加新用户.", - "Login": "登录", - "Cancel": "取消", - "Register": "注册", - "InvalidLoginRequest": "登录请求无效", - "ThereAreNoLoginSchemesConfiguredForThisClient": "没有为此客户端配置登录方案.", - "LogInUsingYourProviderAccount": "使用你的{0}帐户登录" - } -} diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/AccountPage.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/AccountPage.cs index bb7d011235c..771776ae576 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/AccountPage.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/AccountPage.cs @@ -1,6 +1,6 @@ using Microsoft.AspNetCore.Mvc.Localization; using Microsoft.AspNetCore.Mvc.Razor.Internal; -using Volo.Abp.Account.Web.Localization; +using Volo.Abp.Account.Localization; using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; namespace Volo.Abp.Account.Web.Pages.Account diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/AccountPageModel.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/AccountPageModel.cs index 8d621be79c7..4a2751f21b0 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/AccountPageModel.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/AccountPageModel.cs @@ -3,8 +3,7 @@ using System.Linq; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Localization; -using Volo.Abp.Account.Web.Localization; +using Volo.Abp.Account.Localization; using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; using Volo.Abp.Identity; @@ -14,7 +13,11 @@ public abstract class AccountPageModel : AbpPageModel { public SignInManager SignInManager { get; set; } public IdentityUserManager UserManager { get; set; } - public IStringLocalizer L { get; set; } + + protected AccountPageModel() + { + LocalizationResourceType = typeof(AccountResource); + } protected RedirectResult RedirectSafely(string returnUrl, string returnUrlHash = null) { diff --git a/modules/account/src/Volo.Abp.Account.Web/Volo.Abp.Account.Web.csproj b/modules/account/src/Volo.Abp.Account.Web/Volo.Abp.Account.Web.csproj index 223b83610dc..86706f28d5e 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Volo.Abp.Account.Web.csproj +++ b/modules/account/src/Volo.Abp.Account.Web/Volo.Abp.Account.Web.csproj @@ -18,13 +18,11 @@ - - diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/IAuditLogRepository.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/IAuditLogRepository.cs index 489a07a0ce3..e94eee3d887 100644 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/IAuditLogRepository.cs +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/IAuditLogRepository.cs @@ -7,7 +7,7 @@ namespace Volo.Abp.AuditLogging { - public interface IAuditLogRepository : IBasicRepository + public interface IAuditLogRepository : IRepository { Task> GetListAsync( string sorting = null, diff --git a/modules/blogging/app/Volo.BloggingTestApp/appsettings.json b/modules/blogging/app/Volo.BloggingTestApp/appsettings.json index fd337e2c3a1..c85ffe94891 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/appsettings.json +++ b/modules/blogging/app/Volo.BloggingTestApp/appsettings.json @@ -1,6 +1,6 @@ { "ConnectionStrings": { "SqlServer": "Server=localhost;Database=BloggingTestApp;Trusted_Connection=True;MultipleActiveResultSets=true", - "MongoDb": "mongodb://localhost:27017|BloggingTestApp" + "MongoDb": "mongodb://localhost:27017/BloggingTestApp" } } \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo.Blogging.Domain.Shared.csproj b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo.Blogging.Domain.Shared.csproj index 49be7d690ff..c5a49908318 100644 --- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo.Blogging.Domain.Shared.csproj +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo.Blogging.Domain.Shared.csproj @@ -9,6 +9,14 @@ + + + + + + + + diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/BloggingDomainSharedModule.cs b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/BloggingDomainSharedModule.cs index 7fd98515a24..04c29938604 100644 --- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/BloggingDomainSharedModule.cs +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/BloggingDomainSharedModule.cs @@ -1,7 +1,9 @@ using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Localization; +using Volo.Abp.Localization.Resources.AbpValidation; using Volo.Abp.Modularity; using Volo.Blogging.Localization; +using Volo.Abp.VirtualFileSystem; namespace Volo.Blogging { @@ -10,9 +12,17 @@ public class BloggingDomainSharedModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + Configure(options => { - options.Resources.Add("en"); + options.Resources + .Add("en") + .AddBaseTypes(typeof(AbpValidationResource)) + .AddVirtualJson("/Localization/Resources"); }); } } diff --git a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/cs.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/cs.json similarity index 100% rename from modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/cs.json rename to modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/cs.json diff --git a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/en.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/en.json similarity index 100% rename from modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/en.json rename to modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/en.json diff --git a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/pl.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/pl.json similarity index 100% rename from modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/pl.json rename to modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/pl.json diff --git a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/pt-BR.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/pt-BR.json similarity index 100% rename from modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/pt-BR.json rename to modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/pt-BR.json diff --git a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/tr.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/tr.json similarity index 100% rename from modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/tr.json rename to modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/tr.json diff --git a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/vi.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/vi.json similarity index 100% rename from modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/vi.json rename to modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/vi.json diff --git a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/zh-Hans.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/zh-Hans.json similarity index 100% rename from modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/zh-Hans.json rename to modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/zh-Hans.json diff --git a/modules/blogging/src/Volo.Blogging.HttpApi/Volo/Blogging/BloggingHttpApiModule.cs b/modules/blogging/src/Volo.Blogging.HttpApi/Volo/Blogging/BloggingHttpApiModule.cs index 8233ad32532..46e2603a776 100644 --- a/modules/blogging/src/Volo.Blogging.HttpApi/Volo/Blogging/BloggingHttpApiModule.cs +++ b/modules/blogging/src/Volo.Blogging.HttpApi/Volo/Blogging/BloggingHttpApiModule.cs @@ -1,5 +1,8 @@ -using Volo.Abp.AspNetCore.Mvc; +using Localization.Resources.AbpUi; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Localization; using Volo.Abp.Modularity; +using Volo.Blogging.Localization; namespace Volo.Blogging { @@ -9,5 +12,14 @@ namespace Volo.Blogging public class BloggingHttpApiModule : AbpModule { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes(typeof(AbpUiResource)); + }); + } } } diff --git a/modules/blogging/src/Volo.Blogging.Web/BloggingWebModule.cs b/modules/blogging/src/Volo.Blogging.Web/BloggingWebModule.cs index 21463a71c95..52d8f8751b2 100644 --- a/modules/blogging/src/Volo.Blogging.Web/BloggingWebModule.cs +++ b/modules/blogging/src/Volo.Blogging.Web/BloggingWebModule.cs @@ -43,14 +43,6 @@ public override void ConfigureServices(ServiceConfigurationContext context) options.FileSets.AddEmbedded("Volo.Blogging"); }); - Configure(options => - { - options.Resources - .Get() - .AddBaseTypes(typeof(AbpValidationResource)) - .AddBaseTypes(typeof(AbpUiResource)) - .AddVirtualJson("/Localization/Resources/Blogging/Web"); - }); Configure(options => { diff --git a/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj b/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj index 8feb2057d71..ada7ce23707 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj +++ b/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj @@ -22,14 +22,12 @@ - - diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/cs.json b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/cs.json index 18c3c429d40..9c44d1d10f0 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/cs.json +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/cs.json @@ -5,6 +5,28 @@ "Permission:Projects": "Projekty", "Permission:Edit": "Upravit", "Permission:Delete": "Smazat", - "Permission:Create": "Vytvořit" + "Permission:Create": "Vytvořit", + "Menu:DocumentManagement": "Dokumenty", + "Menu:ProjectManagement": "Projekty", + "CreateANewProject": "Vytvořit nový projekt", + "Edit": "Upravit", + "Create": "Vytvořit", + "Projects": "Projekty", + "Name": "Název", + "ShortName": "Krátký název", + "DocumentStoreType": "Typ uložiště dokumentu", + "Format": "Formát", + "ShortNameInfoText": "Bude použíto k unikátnímu URL.", + "DisplayName:Name": "Název", + "DisplayName:ShortName": "Krátký název", + "DisplayName:Format": "Formát", + "DisplayName:DefaultDocumentName": "Název výchozího dokumentu", + "DisplayName:NavigationDocumentName": "Název navigačního dokumentu", + "DisplayName:MinimumVersion": "Nejnižší verze", + "DisplayName:MainWebsiteUrl": "URL hlavních webových stránek", + "DisplayName:LatestVersionBranchName": "Název poslední verze odvětví", + "DisplayName:GitHubRootUrl": "GitHub kořenové URL", + "DisplayName:GitHubAccessToken": "GitHub přístupový token", + "DisplayName:GitHubUserAgent": "GitHub user agent" } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/en.json b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/en.json index 1a6ab2e1546..58cff5aa2eb 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/en.json +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/en.json @@ -5,6 +5,28 @@ "Permission:Projects": "Projects", "Permission:Edit": "Edit", "Permission:Delete": "Delete", - "Permission:Create": "Create" + "Permission:Create": "Create", + "Menu:DocumentManagement": "Documents", + "Menu:ProjectManagement": "Projects", + "CreateANewProject": "Create new project", + "Edit": "Edit", + "Create": "Create", + "Projects": "Projects", + "Name": "Name", + "ShortName": "ShortName", + "DocumentStoreType": "DocumentStoreType", + "Format": "Format", + "ShortNameInfoText": "Will be used for unique URL.", + "DisplayName:Name": "Name", + "DisplayName:ShortName": "Short name", + "DisplayName:Format": "Format", + "DisplayName:DefaultDocumentName": "Default document name", + "DisplayName:NavigationDocumentName": "Navigation document name", + "DisplayName:MinimumVersion": "Minimum version", + "DisplayName:MainWebsiteUrl": "Main web site URL", + "DisplayName:LatestVersionBranchName": "Latest version branch name", + "DisplayName:GitHubRootUrl": "GitHub root URL", + "DisplayName:GitHubAccessToken": "GitHub access token", + "DisplayName:GitHubUserAgent": "GitHub user agent" } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/pl.json b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/pl.json index e03a79585d9..be91b22800e 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/pl.json +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/pl.json @@ -5,6 +5,28 @@ "Permission:Projects": "Projekty", "Permission:Edit": "Edytuj", "Permission:Delete": "Usuń", - "Permission:Create": "Utwórz" + "Permission:Create": "Utwórz", + "Menu:DocumentManagement": "Dokumenty", + "Menu:ProjectManagement": "Projekty", + "CreateANewProject": "Utwórz nowy projet", + "Edit": "Edytuj", + "Create": "Utwórz", + "Projects": "Projekty", + "Name": "Nazwa", + "ShortName": "Krótka nazwa", + "DocumentStoreType": "Typ zapisu dokumentu", + "Format": "Format", + "ShortNameInfoText": "Zostanie użyty do unikalnego URL.", + "DisplayName:Name": "Nazwa", + "DisplayName:ShortName": "Krótka nazwa", + "DisplayName:Format": "Format", + "DisplayName:DefaultDocumentName": "Domyślna nazwa dokumentu", + "DisplayName:NavigationDocumentName": "Nawigacyjna nazwa dokumentu", + "DisplayName:MinimumVersion": "Minimalna wersja", + "DisplayName:MainWebsiteUrl": "Adres strony głównej", + "DisplayName:LatestVersionBranchName": "Nazwa brancha ostatniej wersji", + "DisplayName:GitHubRootUrl": "Adres URL do GitHub'a", + "DisplayName:GitHubAccessToken": "GitHub access token", + "DisplayName:GitHubUserAgent": "GitHub user agent" } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/pt-BR.json b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/pt-BR.json index 58f09434690..c7936870433 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/pt-BR.json +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/pt-BR.json @@ -5,6 +5,28 @@ "Permission:Projects": "Projetos", "Permission:Edit": "Editar", "Permission:Delete": "Excluir", - "Permission:Create": "Criar" + "Permission:Create": "Criar", + "Menu:DocumentManagement": "Documentos", + "Menu:ProjectManagement": "Projetos", + "CreateANewProject": "Criar um novo projeto", + "Edit": "Editar", + "Create": "Criar", + "Projects": "Projetos", + "Name": "Nome", + "ShortName": "Nome Curto", + "DocumentStoreType": "DocumentStoreType", + "Format": "Formato", + "ShortNameInfoText": "Ser utilizado para URL nica.", + "DisplayName:Name": "Nome", + "DisplayName:ShortName": "Nome Curto", + "DisplayName:Format": "Formatar", + "DisplayName:DefaultDocumentName": "Nome padro do documento", + "DisplayName:NavigationDocumentName": "Nome de navegao do documento", + "DisplayName:MinimumVersion": "VErso mnima", + "DisplayName:MainWebsiteUrl": "URL do site principal", + "DisplayName:LatestVersionBranchName": "Nome do branch da ltima verso", + "DisplayName:GitHubRootUrl": "URL raz do GitHub", + "DisplayName:GitHubAccessToken": "Token de acesso do GitHub", + "DisplayName:GitHubUserAgent": "Usurio agente do GitHub" } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/tr.json b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/tr.json index 0e1601f4865..8c31fb1c5a8 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/tr.json +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/tr.json @@ -5,6 +5,27 @@ "Permission:Projects": "Projeler", "Permission:Edit": "Düzenle", "Permission:Delete": "Sil", - "Permission:Create": "Oluştur" + "Permission:Create": "Oluştur", + "Menu:DocumentManagement": "Dökümanlar", + "Menu:ProjectManagement": "Projeler", + "CreateANewProject": "Yeni proje oluştur", + "Edit": "Düzenle", + "Create": "Yeni oluştur", + "Projects": "Projeler", + "Name": "İsim", + "ShortName": "Kısa isim", + "DocumentStoreType": "Döküman saklama tipi", + "Format": "Format", + "ShortNameInfoText": "URL oluştururken kullanılacak.", + "DisplayName:Name": "Adı", + "DisplayName:ShortName": "Kısa adı", + "DisplayName:Format": "Format", + "DisplayName:DefaultDocumentName": "Varsayılan döküman adı", + "DisplayName:NavigationDocumentName": "Navigasyon dökümanı adı", + "DisplayName:MinimumVersion": "Minimum versiyon", + "DisplayName:MainWebsiteUrl": "Ana web site URL", + "DisplayName:LatestVersionBranchName": "Son versiyon Branch adı", + "DisplayName:GitHubRootUrl": "GitHub kök adresi", + "DisplayName:GitHubAccessToken": "GitHub erişim token" } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/vi.sjon b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/vi.sjon index 0697ddf6e84..a57ed469f4b 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/vi.sjon +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/vi.sjon @@ -5,6 +5,28 @@ "Permission:Projects": "Dự án", "Permission:Edit": "Sửa", "Permission:Delete": "Xóa", - "Permission:Create": "Tạo" + "Permission:Create": "Tạo", + "Menu:DocumentManagement": "Tài liệu", + "Menu:ProjectManagement": "Dự án", + "CreateANewProject": "Tạo dự án mới", + "Edit": "Sửa", + "Create": "Tạo", + "Projects": "Dự án", + "Name": "Tên", + "ShortName": "Tên rút gọn", + "DocumentStoreType": "DocumentStoreType", + "Format": "Định dạng", + "ShortNameInfoText": "Sẽ được sử dụng cho URL duy nhất..", + "DisplayName:Name": "Tên", + "DisplayName:ShortName": "Tên rút gọn", + "DisplayName:Format": "Định dạng", + "DisplayName:DefaultDocumentName": "Tên tài liệu mặc định", + "DisplayName:NavigationDocumentName": "Tên tài liệu điều hướng", + "DisplayName:MinimumVersion": "Phiên bản tối thiểu", + "DisplayName:MainWebsiteUrl": "URL trang web chính", + "DisplayName:LatestVersionBranchName": "Tên nhánh phiên bản mới nhất", + "DisplayName:GitHubRootUrl": "URL gốc của GitHub", + "DisplayName:GitHubAccessToken": "GitHub access token", + "DisplayName:GitHubUserAgent": "GitHub user agent" } } diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/zh-Hans.json b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/zh-Hans.json index 3c8847ceaea..4ca34fa21de 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/zh-Hans.json +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/zh-Hans.json @@ -1,10 +1,32 @@ { "culture": "zh-Hans", - "texts": { - "Permission:DocumentManagement": "文档管理", - "Permission:Projects": "项目", - "Permission:Edit": "编辑", - "Permission:Delete": "删除", - "Permission:Create": "创建" - } + "texts": { + "Permission:DocumentManagement": "文档管理", + "Permission:Projects": "项目", + "Permission:Edit": "编辑", + "Permission:Delete": "删除", + "Permission:Create": "创建", + "Menu:DocumentManagement": "文档", + "Menu:ProjectManagement": "项目", + "CreateANewProject": "创建新项目", + "Edit": "编辑", + "Create": "创建", + "Projects": "项目", + "Name": "名称", + "ShortName": "简称", + "DocumentStoreType": "文件存储类型", + "Format": "格式", + "ShortNameInfoText": "将用于唯一的URL.", + "DisplayName:Name": "名称", + "DisplayName:ShortName": "简称", + "DisplayName:Format": "格式", + "DisplayName:DefaultDocumentName": "默认文档名称", + "DisplayName:NavigationDocumentName": "导航文档名称", + "DisplayName:MinimumVersion": "最低版本", + "DisplayName:MainWebsiteUrl": "主网站网址", + "DisplayName:LatestVersionBranchName": "最新版本的分支名称", + "DisplayName:GitHubRootUrl": "GitHub根网址", + "DisplayName:GitHubAccessToken": "GitHub访问令牌", + "DisplayName:GitHubUserAgent": "GitHub用户代理" + } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/DocsAdminHttpApiModule.cs b/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/DocsAdminHttpApiModule.cs index 46321bbcfcd..6efc9123dcf 100644 --- a/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/DocsAdminHttpApiModule.cs +++ b/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/DocsAdminHttpApiModule.cs @@ -1,5 +1,8 @@ -using Volo.Abp.AspNetCore.Mvc; +using Localization.Resources.AbpUi; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Localization; using Volo.Abp.Modularity; +using Volo.Docs.Localization; namespace Volo.Docs.Admin { @@ -9,6 +12,15 @@ namespace Volo.Docs.Admin )] public class DocsAdminHttpApiModule : AbpModule { - + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes(typeof(AbpUiResource)); + }); + } } } diff --git a/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebModule.cs b/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebModule.cs index f23cae0436c..7d2907d2028 100644 --- a/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebModule.cs +++ b/modules/docs/src/Volo.Docs.Admin.Web/DocsAdminWebModule.cs @@ -40,15 +40,6 @@ public override void ConfigureServices(ServiceConfigurationContext context) options.FileSets.AddEmbedded("Volo.Docs.Admin"); }); - Configure(options => - { - options.Resources - .Get() - .AddBaseTypes(typeof(AbpValidationResource)) - .AddBaseTypes(typeof(AbpUiResource)) - .AddVirtualJson("/Localization/Resources/Docs/Web"); - }); - Configure(options => { options.AddProfile(validate: true); diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/cs.json b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/cs.json deleted file mode 100644 index 471fea1b381..00000000000 --- a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/cs.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "culture": "cs", - "texts": { - "Menu:DocumentManagement": "Dokumenty", - "Menu:ProjectManagement": "Projekty", - "CreateANewProject": "Vytvořit nový projekt", - "Edit": "Upravit", - "Create": "Vytvořit", - "Projects": "Projekty", - "Name": "Název", - "ShortName": "Krátký název", - "DocumentStoreType": "Typ uložiště dokumentu", - "Format": "Formát", - "ShortNameInfoText": "Bude použíto k unikátnímu URL.", - "DisplayName:Name": "Název", - "DisplayName:ShortName": "Krátký název", - "DisplayName:Format": "Formát", - "DisplayName:DefaultDocumentName": "Název výchozího dokumentu", - "DisplayName:NavigationDocumentName": "Název navigačního dokumentu", - "DisplayName:MinimumVersion": "Nejnižší verze", - "DisplayName:MainWebsiteUrl": "URL hlavních webových stránek", - "DisplayName:LatestVersionBranchName": "Název poslední verze odvětví", - "DisplayName:GitHubRootUrl": "GitHub kořenové URL", - "DisplayName:GitHubAccessToken": "GitHub přístupový token", - "DisplayName:GitHubUserAgent": "GitHub user agent" - } -} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/en.json b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/en.json deleted file mode 100644 index 73747c3cf7d..00000000000 --- a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/en.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "culture": "en", - "texts": { - "Menu:DocumentManagement": "Documents", - "Menu:ProjectManagement": "Projects", - "CreateANewProject": "Create new project", - "Edit": "Edit", - "Create": "Create", - "Projects": "Projects", - "Name": "Name", - "ShortName": "ShortName", - "DocumentStoreType": "DocumentStoreType", - "Format": "Format", - "ShortNameInfoText": "Will be used for unique URL.", - "DisplayName:Name": "Name", - "DisplayName:ShortName": "Short name", - "DisplayName:Format": "Format", - "DisplayName:DefaultDocumentName": "Default document name", - "DisplayName:NavigationDocumentName": "Navigation document name", - "DisplayName:MinimumVersion": "Minimum version", - "DisplayName:MainWebsiteUrl": "Main web site URL", - "DisplayName:LatestVersionBranchName": "Latest version branch name", - "DisplayName:GitHubRootUrl": "GitHub root URL", - "DisplayName:GitHubAccessToken": "GitHub access token", - "DisplayName:GitHubUserAgent": "GitHub user agent" - } -} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/pl.json b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/pl.json deleted file mode 100644 index 414d4a684f7..00000000000 --- a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/pl.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "culture": "pl", - "texts": { - "Menu:DocumentManagement": "Dokumenty", - "Menu:ProjectManagement": "Projekty", - "CreateANewProject": "Utwórz nowy projet", - "Edit": "Edytuj", - "Create": "Utwórz", - "Projects": "Projekty", - "Name": "Nazwa", - "ShortName": "Krótka nazwa", - "DocumentStoreType": "Typ zapisu dokumentu", - "Format": "Format", - "ShortNameInfoText": "Zostanie użyty do unikalnego URL.", - "DisplayName:Name": "Nazwa", - "DisplayName:ShortName": "Krótka nazwa", - "DisplayName:Format": "Format", - "DisplayName:DefaultDocumentName": "Domyślna nazwa dokumentu", - "DisplayName:NavigationDocumentName": "Nawigacyjna nazwa dokumentu", - "DisplayName:MinimumVersion": "Minimalna wersja", - "DisplayName:MainWebsiteUrl": "Adres strony głównej", - "DisplayName:LatestVersionBranchName": "Nazwa brancha ostatniej wersji", - "DisplayName:GitHubRootUrl": "Adres URL do GitHub'a", - "DisplayName:GitHubAccessToken": "GitHub access token", - "DisplayName:GitHubUserAgent": "GitHub user agent" - } -} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/pt-BR.json b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/pt-BR.json deleted file mode 100644 index f77d799651d..00000000000 --- a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/pt-BR.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "culture": "pt-BR", - "texts": { - "Menu:DocumentManagement": "Documentos", - "Menu:ProjectManagement": "Projetos", - "CreateANewProject": "Criar um novo projeto", - "Edit": "Editar", - "Create": "Criar", - "Projects": "Projetos", - "Name": "Nome", - "ShortName": "Nome Curto", - "DocumentStoreType": "DocumentStoreType", - "Format": "Formato", - "ShortNameInfoText": "Será utilizado para URL única.", - "DisplayName:Name": "Nome", - "DisplayName:ShortName": "Nome Curto", - "DisplayName:Format": "Formatar", - "DisplayName:DefaultDocumentName": "Nome padrão do documento", - "DisplayName:NavigationDocumentName": "Nome de navegação do documento", - "DisplayName:MinimumVersion": "VErsão mínima", - "DisplayName:MainWebsiteUrl": "URL do site principal", - "DisplayName:LatestVersionBranchName": "Nome do branch da última versão", - "DisplayName:GitHubRootUrl": "URL raíz do GitHub", - "DisplayName:GitHubAccessToken": "Token de acesso do GitHub", - "DisplayName:GitHubUserAgent": "Usuário agente do GitHub" - } -} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/tr.json b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/tr.json deleted file mode 100644 index 7418e5493eb..00000000000 --- a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/tr.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "culture": "tr", - "texts": { - "Menu:DocumentManagement": "Dökümanlar", - "Menu:ProjectManagement": "Projeler", - "CreateANewProject": "Yeni proje oluştur", - "Edit": "Düzenle", - "Create": "Yeni oluştur", - "Projects": "Projeler", - "Name": "İsim", - "ShortName": "Kısa isim", - "DocumentStoreType": "Döküman saklama tipi", - "Format": "Format", - "ShortNameInfoText": "URL oluştururken kullanılacak.", - "DisplayName:Name": "Adı", - "DisplayName:ShortName": "Kısa adı", - "DisplayName:Format": "Format", - "DisplayName:DefaultDocumentName": "Varsayılan döküman adı", - "DisplayName:NavigationDocumentName": "Navigasyon dökümanı adı", - "DisplayName:MinimumVersion": "Minimum versiyon", - "DisplayName:MainWebsiteUrl": "Ana web site URL", - "DisplayName:LatestVersionBranchName": "Son versiyon Branch adı", - "DisplayName:GitHubRootUrl": "GitHub kök adresi", - "DisplayName:GitHubAccessToken": "GitHub erişim token" - } -} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/vi.json b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/vi.json deleted file mode 100644 index d39b27f2956..00000000000 --- a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/vi.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "culture": "vi", - "texts": { - "Menu:DocumentManagement": "Tài liệu", - "Menu:ProjectManagement": "Dự án", - "CreateANewProject": "Tạo dự án mới", - "Edit": "Sửa", - "Create": "Tạo", - "Projects": "Dự án", - "Name": "Tên", - "ShortName": "Tên rút gọn", - "DocumentStoreType": "DocumentStoreType", - "Format": "Định dạng", - "ShortNameInfoText": "Sẽ được sử dụng cho URL duy nhất..", - "DisplayName:Name": "Tên", - "DisplayName:ShortName": "Tên rút gọn", - "DisplayName:Format": "Định dạng", - "DisplayName:DefaultDocumentName": "Tên tài liệu mặc định", - "DisplayName:NavigationDocumentName": "Tên tài liệu điều hướng", - "DisplayName:MinimumVersion": "Phiên bản tối thiểu", - "DisplayName:MainWebsiteUrl": "URL trang web chính", - "DisplayName:LatestVersionBranchName": "Tên nhánh phiên bản mới nhất", - "DisplayName:GitHubRootUrl": "URL gốc của GitHub", - "DisplayName:GitHubAccessToken": "GitHub access token", - "DisplayName:GitHubUserAgent": "GitHub user agent" - } -} diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/zh-Hans.json b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/zh-Hans.json deleted file mode 100644 index 2b2911fad9c..00000000000 --- a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/zh-Hans.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "culture": "zh-Hans", - "texts": { - "Menu:DocumentManagement": "文档", - "Menu:ProjectManagement": "项目", - "CreateANewProject": "创建新项目", - "Edit": "编辑", - "Create": "创建", - "Projects": "项目", - "Name": "名称", - "ShortName": "简称", - "DocumentStoreType": "文件存储类型", - "Format": "格式", - "ShortNameInfoText": "将用于唯一的URL.", - "DisplayName:Name": "名称", - "DisplayName:ShortName": "简称", - "DisplayName:Format": "格式", - "DisplayName:DefaultDocumentName": "默认文档名称", - "DisplayName:NavigationDocumentName": "导航文档名称", - "DisplayName:MinimumVersion": "最低版本", - "DisplayName:MainWebsiteUrl": "主网站网址", - "DisplayName:LatestVersionBranchName": "最新版本的分支名称", - "DisplayName:GitHubRootUrl": "GitHub根网址", - "DisplayName:GitHubAccessToken": "GitHub访问令牌", - "DisplayName:GitHubUserAgent": "GitHub用户代理" - } -} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj b/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj index ae5caf3b44e..555c7f5767f 100644 --- a/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj +++ b/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj @@ -27,7 +27,6 @@ - @@ -35,8 +34,6 @@ - - diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs index 56dd7de5c0a..dfebfe25327 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs @@ -201,7 +201,6 @@ private async Task SetVersionAsync() { LatestVersionInfo = versions.First(); LatestVersionInfo.DisplayText = $"{LatestVersionInfo.DisplayText} ({DocsAppConsts.Latest})"; - LatestVersionInfo.Version = LatestVersionInfo.Version; if (string.Equals(Version, DocsAppConsts.Latest, StringComparison.OrdinalIgnoreCase)) { diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/index.css b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/index.css deleted file mode 100644 index bf9c15ea2a7..00000000000 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/index.css +++ /dev/null @@ -1,174 +0,0 @@ -body { - padding-top: unset; -} -#main-navbar-tools a.dropdown-toggle { - text-decoration: unset; - color: unset; -} -#docsContainer .document-title { - font-size: 2.5em; -} -#docsContainer .document-toolbar { - margin-bottom: 1.5em; -} -@supports (position: sticky) { - #docsContainer .bd-toc { - top: 0rem !important; - } -} -@supports (position: sticky) { - #docsContainer .bd-sidebar { - top: 0; - /*height: calc(~"100vh");*/ - } - @media (min-width: 768px) { - #docsContainer .bd-sidebar { - height: calc(100vh); - } - } -} -#docsContainer .bd-sidebar .flat { - border-color: #BBBBBB; - border: 1px solid #BBB; - border-radius: 0; - -webkit-box-shadow: none; - /* box-shadow:inset 0 1px 1px rgba(0,0,0,.075); */ - -webkit-transition: none; - -o-transition: none; - transition: none; -} -#docsContainer .bd-sidebar .document-version { - margin-top: 10px; - padding-left: 15px; - padding-right: 15px; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); - margin-right: -15px; - margin-left: -15px; -} -#docsContainer .bd-sidebar .document-version > .form-group { - margin-bottom: 10px; -} -#docsContainer .bd-sidebar .bd-links.collapse.in { - display: block; -} -@supports ((position: -webkit-sticky) or (position:sticky)) { - #docsContainer .bd-toc { - height: calc(100vh); - } -} -#docsContainer .nav { - display: block; - border-left: 1px solid #eee; -} -#docsContainer main.bd-content div.top-toc p.toc-ticle { - font-weight: 500; - margin: 0; -} -#docsContainer main.bd-content div.top-toc .nav { - margin-left: 0 !important; -} -#docsContainer main.bd-content div.top-toc nav.toc-navigaton { - margin-bottom: 10px; -} -#docsContainer main.bd-content .img-thumbnail { - padding: 0; - border: 1px solid #dee2e6; - border-radius: 0.25rem; -} -#docsContainer main.bd-content img { - max-width: 100%; - display: inline-block; - min-width: 48px; - min-height: 48px; - background-repeat: no-repeat; - background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDhweCIgIGhlaWdodD0iNDhweCIgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIiBjbGFzcz0ibGRzLXNxdWFyZSIgc3R5bGU9ImJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDAlOyI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAgMjApIj48cmVjdCB4PSItMTUiIHk9Ii0xNSIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjMWQzZjcyIj48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBjYWxjTW9kZT0ic3BsaW5lIiB2YWx1ZXM9IjE7MTswLjI7MTsxIiBrZXlUaW1lcz0iMDswLjI7MC41OzAuODsxIiBkdXI9IjJzIiBrZXlTcGxpbmVzPSIwLjUgMC41IDAuNSAwLjU7MCAwLjEgMC45IDE7MC4xIDAgMSAwLjk7MC41IDAuNSAwLjUgMC41IiBiZWdpbj0iLTAuOHMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGVUcmFuc2Zvcm0+PC9yZWN0PjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCAyMCkiPjxyZWN0IHg9Ii0xNSIgeT0iLTE1IiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9IiM1Njk5ZDIiPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGNhbGNNb2RlPSJzcGxpbmUiIHZhbHVlcz0iMTsxOzAuMjsxOzEiIGtleVRpbWVzPSIwOzAuMjswLjU7MC44OzEiIGR1cj0iMnMiIGtleVNwbGluZXM9IjAuNSAwLjUgMC41IDAuNTswIDAuMSAwLjkgMTswLjEgMCAxIDAuOTswLjUgMC41IDAuNSAwLjUiIGJlZ2luPSItMC42cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZVRyYW5zZm9ybT48L3JlY3Q+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgwIDIwKSI+PHJlY3QgeD0iLTE1IiB5PSItMTUiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmlsbD0iI2Q4ZWJmOSI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgY2FsY01vZGU9InNwbGluZSIgdmFsdWVzPSIxOzE7MC4yOzE7MSIga2V5VGltZXM9IjA7MC4yOzAuNTswLjg7MSIgZHVyPSIycyIga2V5U3BsaW5lcz0iMC41IDAuNSAwLjUgMC41OzAgMC4xIDAuOSAxOzAuMSAwIDEgMC45OzAuNSAwLjUgMC41IDAuNSIgYmVnaW49Ii0wLjRzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlVHJhbnNmb3JtPjwvcmVjdD48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAgNTApIj48cmVjdCB4PSItMTUiIHk9Ii0xNSIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjNTY5OWQyIj48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBjYWxjTW9kZT0ic3BsaW5lIiB2YWx1ZXM9IjE7MTswLjI7MTsxIiBrZXlUaW1lcz0iMDswLjI7MC41OzAuODsxIiBkdXI9IjJzIiBrZXlTcGxpbmVzPSIwLjUgMC41IDAuNSAwLjU7MCAwLjEgMC45IDE7MC4xIDAgMSAwLjk7MC41IDAuNSAwLjUgMC41IiBiZWdpbj0iLTAuNnMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGVUcmFuc2Zvcm0+PC9yZWN0PjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCA1MCkiPjxyZWN0IHg9Ii0xNSIgeT0iLTE1IiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9IiNkOGViZjkiPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGNhbGNNb2RlPSJzcGxpbmUiIHZhbHVlcz0iMTsxOzAuMjsxOzEiIGtleVRpbWVzPSIwOzAuMjswLjU7MC44OzEiIGR1cj0iMnMiIGtleVNwbGluZXM9IjAuNSAwLjUgMC41IDAuNTswIDAuMSAwLjkgMTswLjEgMCAxIDAuOTswLjUgMC41IDAuNSAwLjUiIGJlZ2luPSItMC40cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZVRyYW5zZm9ybT48L3JlY3Q+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgwIDUwKSI+PHJlY3QgeD0iLTE1IiB5PSItMTUiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmlsbD0iIzcxYzJjYyI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgY2FsY01vZGU9InNwbGluZSIgdmFsdWVzPSIxOzE7MC4yOzE7MSIga2V5VGltZXM9IjA7MC4yOzAuNTswLjg7MSIgZHVyPSIycyIga2V5U3BsaW5lcz0iMC41IDAuNSAwLjUgMC41OzAgMC4xIDAuOSAxOzAuMSAwIDEgMC45OzAuNSAwLjUgMC41IDAuNSIgYmVnaW49Ii0wLjJzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlVHJhbnNmb3JtPjwvcmVjdD48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAgODApIj48cmVjdCB4PSItMTUiIHk9Ii0xNSIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjZDhlYmY5Ij48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBjYWxjTW9kZT0ic3BsaW5lIiB2YWx1ZXM9IjE7MTswLjI7MTsxIiBrZXlUaW1lcz0iMDswLjI7MC41OzAuODsxIiBkdXI9IjJzIiBrZXlTcGxpbmVzPSIwLjUgMC41IDAuNSAwLjU7MCAwLjEgMC45IDE7MC4xIDAgMSAwLjk7MC41IDAuNSAwLjUgMC41IiBiZWdpbj0iLTAuNHMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGVUcmFuc2Zvcm0+PC9yZWN0PjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCA4MCkiPjxyZWN0IHg9Ii0xNSIgeT0iLTE1IiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9IiM3MWMyY2MiPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGNhbGNNb2RlPSJzcGxpbmUiIHZhbHVlcz0iMTsxOzAuMjsxOzEiIGtleVRpbWVzPSIwOzAuMjswLjU7MC44OzEiIGR1cj0iMnMiIGtleVNwbGluZXM9IjAuNSAwLjUgMC41IDAuNTswIDAuMSAwLjkgMTswLjEgMCAxIDAuOTswLjUgMC41IDAuNSAwLjUiIGJlZ2luPSItMC4ycyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZVRyYW5zZm9ybT48L3JlY3Q+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgwIDgwKSI+PHJlY3QgeD0iLTE1IiB5PSItMTUiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmlsbD0iIzQ5OTZhMiI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgY2FsY01vZGU9InNwbGluZSIgdmFsdWVzPSIxOzE7MC4yOzE7MSIga2V5VGltZXM9IjA7MC4yOzAuNTswLjg7MSIgZHVyPSIycyIga2V5U3BsaW5lcz0iMC41IDAuNSAwLjUgMC41OzAgMC4xIDAuOSAxOzAuMSAwIDEgMC45OzAuNSAwLjUgMC41IDAuNSIgYmVnaW49IjBzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlVHJhbnNmb3JtPjwvcmVjdD48L2c+PC9zdmc+); - background-position: center; - -ms-background-position: center; - border: 1px solid #dee2e6; - border-radius: 0.25rem; - opacity: 0.4; - -webkit-transition: opacity 0.4s ease-in; - -moz-transition: opacity 0.4s ease-in; - -o-transition: opacity 0.4s ease-in; - transition: opacity 0.4s ease-in; -} -#docsContainer main.bd-content .cs { - color: inherit; -} -#docsContainer main.bd-content pre.hljs { - background-color: #fbfbfb !important; -} -#docsContainer main.bd-content pre[class*="language-"] { - margin-top: 0; - margin-bottom: 1rem; - padding: 0.5em; -} -#docsContainer main.bd-content .code-header { - background-color: #f5f5f5; - color: #707070; - border: 1px solid #ddd; - border-bottom: 0; - text-align: right; -} -#docsContainer main.bd-content .code-header button { - background-color: #ededed; - border: 0; -} -#docsContainer main.bd-content .code-header button:hover { - background-color: #d5d5d5; -} -#docsContainer main.bd-content .code-header button.copy { - border-left: 1px solid #ddd; -} -#docsContainer main.bd-content .code-header button.copy::before { - background-size: 15px auto; - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath fill='%23707070' d='M13 6.8V14H4v-3H0V0h5.2l3 3h1L13 6.8zM4 3h2.8l-2-2H1v9h3V3zm8 5H8V4H5v9h7V8zM9 7h2.8L9 4.2V7z'/%3E%3C/svg%3E"); - background-repeat: no-repeat; - background-position-y: 4px; - padding-right: 17px; - content: ""; -} -#docsContainer nav.bd-links { - padding: 15px; -} -#docsContainer nav.bd-links h3 { - font-size: 1em; - margin-top: 8px; - padding-bottom: 5px; - border-bottom: 1px solid #eee; -} -#docsContainer nav.bd-links p { - font-size: 1em; - font-weight: 400; - margin: 0 0 0 5px; -} -#docsContainer nav.bd-links ul { - list-style-type: none; - margin: 0; - line-height: inherit; -} -#docsContainer nav.bd-links ul li a { - word-wrap: break-word; - display: block; - padding: 0.2rem 0.1rem 0.2rem 1rem; - font-size: 90%; - color: #28c; -} -#docsContainer b, -#docsContainer strong { - font-weight: 500; -} -#docsContainer nav[data-toggle='toc'] .nav { - flex-direction: column; -} -#docsContainer nav[data-toggle='toc'] .nav > .active > a, -#docsContainer nav[data-toggle='toc'] .nav > .active:hover > a, -#docsContainer nav[data-toggle='toc'] .nav > .active:focus > a { - color: #28c; - border-left: 2px solid #28c; -} -#docsContainer nav[data-toggle='toc'] .nav > li > a:hover, -#docsContainer nav[data-toggle='toc'] .nav > li > a:focus { - color: #28c; - border-left: 1px solid #28c; -} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/index.less b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/index.less deleted file mode 100644 index 3be3c0277c3..00000000000 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/index.less +++ /dev/null @@ -1,219 +0,0 @@ -body { - padding-top: unset; -} - -#main-navbar-tools a.dropdown-toggle { - text-decoration: unset; - color: unset; -} - - -#docsContainer { - - .document-title { - font-size: 2.5em; - } - - .document-toolbar { - margin-bottom: 1.5em; - } - - .bd-toc { - @supports - - (position: sticky) { - top: 0rem !important - } - } - - .bd-sidebar { - @supports - - (position: sticky) { - top: 0; - /*height: calc(~"100vh");*/ - @media (min-width: 768px) { - height: calc(~"100vh"); - } - } - - .flat { - border-color: #BBBBBB; - border: 1px solid #BBB; - border-radius: 0; - -webkit-box-shadow: none; - /* box-shadow:inset 0 1px 1px rgba(0,0,0,.075); */ - -webkit-transition: none; - -o-transition: none; - transition: none; - } - - .document-version { - margin-top: 10px; - padding-left: 15px; - padding-right: 15px; - border-bottom: 1px solid rgba(0,0,0,.05); - margin-right: -15px; - margin-left: -15px; - - > .form-group { - margin-bottom: 10px; - } - } - - .bd-links.collapse.in { - display: block; - } - } - - @supports - - ((position: -webkit-sticky) or (position:sticky)) { - .bd-toc { - height: calc(100vh); - } - } - - .nav { - display: block; - border-left: 1px solid #eee; - } - - main.bd-content { - - div.top-toc { - p.toc-ticle { - font-weight: 500; - margin: 0; - } - - .nav { - margin-left: 0 !important; - } - - nav.toc-navigaton { - margin-bottom: 10px; - } - } - - .img-thumbnail { - padding: 0; - border: 1px solid #dee2e6; - border-radius: .25rem; - } - - img { - max-width: 100%; - display: inline-block; - min-width: 48px; - min-height: 48px; - background-repeat: no-repeat; - background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDhweCIgIGhlaWdodD0iNDhweCIgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIiBjbGFzcz0ibGRzLXNxdWFyZSIgc3R5bGU9ImJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDAlOyI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAgMjApIj48cmVjdCB4PSItMTUiIHk9Ii0xNSIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjMWQzZjcyIj48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBjYWxjTW9kZT0ic3BsaW5lIiB2YWx1ZXM9IjE7MTswLjI7MTsxIiBrZXlUaW1lcz0iMDswLjI7MC41OzAuODsxIiBkdXI9IjJzIiBrZXlTcGxpbmVzPSIwLjUgMC41IDAuNSAwLjU7MCAwLjEgMC45IDE7MC4xIDAgMSAwLjk7MC41IDAuNSAwLjUgMC41IiBiZWdpbj0iLTAuOHMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGVUcmFuc2Zvcm0+PC9yZWN0PjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCAyMCkiPjxyZWN0IHg9Ii0xNSIgeT0iLTE1IiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9IiM1Njk5ZDIiPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGNhbGNNb2RlPSJzcGxpbmUiIHZhbHVlcz0iMTsxOzAuMjsxOzEiIGtleVRpbWVzPSIwOzAuMjswLjU7MC44OzEiIGR1cj0iMnMiIGtleVNwbGluZXM9IjAuNSAwLjUgMC41IDAuNTswIDAuMSAwLjkgMTswLjEgMCAxIDAuOTswLjUgMC41IDAuNSAwLjUiIGJlZ2luPSItMC42cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZVRyYW5zZm9ybT48L3JlY3Q+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgwIDIwKSI+PHJlY3QgeD0iLTE1IiB5PSItMTUiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmlsbD0iI2Q4ZWJmOSI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgY2FsY01vZGU9InNwbGluZSIgdmFsdWVzPSIxOzE7MC4yOzE7MSIga2V5VGltZXM9IjA7MC4yOzAuNTswLjg7MSIgZHVyPSIycyIga2V5U3BsaW5lcz0iMC41IDAuNSAwLjUgMC41OzAgMC4xIDAuOSAxOzAuMSAwIDEgMC45OzAuNSAwLjUgMC41IDAuNSIgYmVnaW49Ii0wLjRzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlVHJhbnNmb3JtPjwvcmVjdD48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAgNTApIj48cmVjdCB4PSItMTUiIHk9Ii0xNSIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjNTY5OWQyIj48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBjYWxjTW9kZT0ic3BsaW5lIiB2YWx1ZXM9IjE7MTswLjI7MTsxIiBrZXlUaW1lcz0iMDswLjI7MC41OzAuODsxIiBkdXI9IjJzIiBrZXlTcGxpbmVzPSIwLjUgMC41IDAuNSAwLjU7MCAwLjEgMC45IDE7MC4xIDAgMSAwLjk7MC41IDAuNSAwLjUgMC41IiBiZWdpbj0iLTAuNnMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGVUcmFuc2Zvcm0+PC9yZWN0PjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCA1MCkiPjxyZWN0IHg9Ii0xNSIgeT0iLTE1IiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9IiNkOGViZjkiPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGNhbGNNb2RlPSJzcGxpbmUiIHZhbHVlcz0iMTsxOzAuMjsxOzEiIGtleVRpbWVzPSIwOzAuMjswLjU7MC44OzEiIGR1cj0iMnMiIGtleVNwbGluZXM9IjAuNSAwLjUgMC41IDAuNTswIDAuMSAwLjkgMTswLjEgMCAxIDAuOTswLjUgMC41IDAuNSAwLjUiIGJlZ2luPSItMC40cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZVRyYW5zZm9ybT48L3JlY3Q+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgwIDUwKSI+PHJlY3QgeD0iLTE1IiB5PSItMTUiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmlsbD0iIzcxYzJjYyI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgY2FsY01vZGU9InNwbGluZSIgdmFsdWVzPSIxOzE7MC4yOzE7MSIga2V5VGltZXM9IjA7MC4yOzAuNTswLjg7MSIgZHVyPSIycyIga2V5U3BsaW5lcz0iMC41IDAuNSAwLjUgMC41OzAgMC4xIDAuOSAxOzAuMSAwIDEgMC45OzAuNSAwLjUgMC41IDAuNSIgYmVnaW49Ii0wLjJzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlVHJhbnNmb3JtPjwvcmVjdD48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAgODApIj48cmVjdCB4PSItMTUiIHk9Ii0xNSIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjZDhlYmY5Ij48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBjYWxjTW9kZT0ic3BsaW5lIiB2YWx1ZXM9IjE7MTswLjI7MTsxIiBrZXlUaW1lcz0iMDswLjI7MC41OzAuODsxIiBkdXI9IjJzIiBrZXlTcGxpbmVzPSIwLjUgMC41IDAuNSAwLjU7MCAwLjEgMC45IDE7MC4xIDAgMSAwLjk7MC41IDAuNSAwLjUgMC41IiBiZWdpbj0iLTAuNHMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGVUcmFuc2Zvcm0+PC9yZWN0PjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCA4MCkiPjxyZWN0IHg9Ii0xNSIgeT0iLTE1IiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9IiM3MWMyY2MiPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGNhbGNNb2RlPSJzcGxpbmUiIHZhbHVlcz0iMTsxOzAuMjsxOzEiIGtleVRpbWVzPSIwOzAuMjswLjU7MC44OzEiIGR1cj0iMnMiIGtleVNwbGluZXM9IjAuNSAwLjUgMC41IDAuNTswIDAuMSAwLjkgMTswLjEgMCAxIDAuOTswLjUgMC41IDAuNSAwLjUiIGJlZ2luPSItMC4ycyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZVRyYW5zZm9ybT48L3JlY3Q+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgwIDgwKSI+PHJlY3QgeD0iLTE1IiB5PSItMTUiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmlsbD0iIzQ5OTZhMiI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgY2FsY01vZGU9InNwbGluZSIgdmFsdWVzPSIxOzE7MC4yOzE7MSIga2V5VGltZXM9IjA7MC4yOzAuNTswLjg7MSIgZHVyPSIycyIga2V5U3BsaW5lcz0iMC41IDAuNSAwLjUgMC41OzAgMC4xIDAuOSAxOzAuMSAwIDEgMC45OzAuNSAwLjUgMC41IDAuNSIgYmVnaW49IjBzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlVHJhbnNmb3JtPjwvcmVjdD48L2c+PC9zdmc+); - background-position: center; - -ms-background-position: center; - border: 1px solid #dee2e6; - border-radius: .25rem; - opacity: 0.4; - transition: opacity .4s ease-in; - -webkit-transition: opacity .4s ease-in; - -moz-transition: opacity .4s ease-in; - -o-transition: opacity .4s ease-in; - transition: opacity .4s ease-in; - } - - .cs { - color: inherit; - } - - pre.hljs { - background-color: #fbfbfb !important; - } - - pre[class*="language-"] { - margin-top: 0; - margin-bottom: 1rem; - padding: 0.5em; - } - - .code-header { - background-color: #f5f5f5; - color: #707070; - border: 1px solid #ddd; - border-bottom: 0; - text-align: right; - - button { - background-color: #ededed; - border: 0; - - &:hover { - background-color: #d5d5d5; - } - - &.copy { - border-left: 1px solid #ddd; - } - - &.copy::before { - background-size: 15px auto; - background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath fill='%23707070' d='M13 6.8V14H4v-3H0V0h5.2l3 3h1L13 6.8zM4 3h2.8l-2-2H1v9h3V3zm8 5H8V4H5v9h7V8zM9 7h2.8L9 4.2V7z'/%3E%3C/svg%3E"); - background-repeat: no-repeat; - background-position-y: 4px; - padding-right: 17px; - content: ""; - } - } - } - } - - nav.bd-links { - padding: 15px; - - h3 { - font-size: 1em; - margin-top: 8px; - padding-bottom: 5px; - border-bottom: 1px solid #eee; - } - - p { - font-size: 1em; - font-weight: 400; - margin: 0 0 0 5px; - } - - ul { - list-style-type: none; - margin: 0; - line-height: inherit; - - li { - a { - word-wrap: break-word; - display: block; - padding: .20rem 0.1rem .20rem 1.0rem; - font-size: 90%; - color: #28c; - } - } - } - } - - b, strong { - font-weight: 500; - } - - nav[data-toggle='toc'] .nav { - flex-direction: column; - } - - nav[data-toggle='toc'] .nav > .active > a, nav[data-toggle='toc'] .nav > .active:hover > a, nav[data-toggle='toc'] .nav > .active:focus > a { - color: #28c; - border-left: 2px solid #28c; - } - - nav[data-toggle='toc'] .nav > li > a:hover, nav[data-toggle='toc'] .nav > li > a:focus { - color: #28c; - border-left: 1px solid #28c; - } -} diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/index.min.css b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/index.min.css deleted file mode 100644 index c02eeface05..00000000000 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/index.min.css +++ /dev/null @@ -1 +0,0 @@ -body{padding-top:unset;}#main-navbar-tools a.dropdown-toggle{text-decoration:unset;color:unset;}#docsContainer .document-title{font-size:2.5em;}#docsContainer .document-toolbar{margin-bottom:1.5em;}@supports (position:sticky){#docsContainer .bd-toc{top:0 !important;}}@supports (position:sticky){#docsContainer .bd-sidebar{top:0;}@media(min-width:768px){#docsContainer .bd-sidebar{height:calc(100vh);}}}#docsContainer .bd-sidebar .flat{border-color:#bbb;border:1px solid #bbb;border-radius:0;-webkit-box-shadow:none;-webkit-transition:none;-o-transition:none;transition:none;}#docsContainer .bd-sidebar .document-version{margin-top:10px;padding-left:15px;padding-right:15px;border-bottom:1px solid rgba(0,0,0,.05);margin-right:-15px;margin-left:-15px;}#docsContainer .bd-sidebar .document-version>.form-group{margin-bottom:10px;}#docsContainer .bd-sidebar .bd-links.collapse.in{display:block;}@supports ((position:-webkit-sticky)or(position:sticky)){#docsContainer .bd-toc{height:calc(100vh);}}#docsContainer .nav{display:block;border-left:1px solid #eee;}#docsContainer main.bd-content div.top-toc p.toc-ticle{font-weight:500;margin:0;}#docsContainer main.bd-content div.top-toc .nav{margin-left:0 !important;}#docsContainer main.bd-content div.top-toc nav.toc-navigaton{margin-bottom:10px;}#docsContainer main.bd-content .img-thumbnail{padding:0;border:1px solid #dee2e6;border-radius:.25rem;}#docsContainer main.bd-content img{max-width:100%;display:inline-block;min-width:48px;min-height:48px;background-repeat:no-repeat;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDhweCIgIGhlaWdodD0iNDhweCIgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIiBjbGFzcz0ibGRzLXNxdWFyZSIgc3R5bGU9ImJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDAlOyI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAgMjApIj48cmVjdCB4PSItMTUiIHk9Ii0xNSIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjMWQzZjcyIj48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBjYWxjTW9kZT0ic3BsaW5lIiB2YWx1ZXM9IjE7MTswLjI7MTsxIiBrZXlUaW1lcz0iMDswLjI7MC41OzAuODsxIiBkdXI9IjJzIiBrZXlTcGxpbmVzPSIwLjUgMC41IDAuNSAwLjU7MCAwLjEgMC45IDE7MC4xIDAgMSAwLjk7MC41IDAuNSAwLjUgMC41IiBiZWdpbj0iLTAuOHMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGVUcmFuc2Zvcm0+PC9yZWN0PjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCAyMCkiPjxyZWN0IHg9Ii0xNSIgeT0iLTE1IiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9IiM1Njk5ZDIiPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGNhbGNNb2RlPSJzcGxpbmUiIHZhbHVlcz0iMTsxOzAuMjsxOzEiIGtleVRpbWVzPSIwOzAuMjswLjU7MC44OzEiIGR1cj0iMnMiIGtleVNwbGluZXM9IjAuNSAwLjUgMC41IDAuNTswIDAuMSAwLjkgMTswLjEgMCAxIDAuOTswLjUgMC41IDAuNSAwLjUiIGJlZ2luPSItMC42cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZVRyYW5zZm9ybT48L3JlY3Q+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgwIDIwKSI+PHJlY3QgeD0iLTE1IiB5PSItMTUiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmlsbD0iI2Q4ZWJmOSI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgY2FsY01vZGU9InNwbGluZSIgdmFsdWVzPSIxOzE7MC4yOzE7MSIga2V5VGltZXM9IjA7MC4yOzAuNTswLjg7MSIgZHVyPSIycyIga2V5U3BsaW5lcz0iMC41IDAuNSAwLjUgMC41OzAgMC4xIDAuOSAxOzAuMSAwIDEgMC45OzAuNSAwLjUgMC41IDAuNSIgYmVnaW49Ii0wLjRzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlVHJhbnNmb3JtPjwvcmVjdD48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAgNTApIj48cmVjdCB4PSItMTUiIHk9Ii0xNSIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjNTY5OWQyIj48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBjYWxjTW9kZT0ic3BsaW5lIiB2YWx1ZXM9IjE7MTswLjI7MTsxIiBrZXlUaW1lcz0iMDswLjI7MC41OzAuODsxIiBkdXI9IjJzIiBrZXlTcGxpbmVzPSIwLjUgMC41IDAuNSAwLjU7MCAwLjEgMC45IDE7MC4xIDAgMSAwLjk7MC41IDAuNSAwLjUgMC41IiBiZWdpbj0iLTAuNnMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGVUcmFuc2Zvcm0+PC9yZWN0PjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCA1MCkiPjxyZWN0IHg9Ii0xNSIgeT0iLTE1IiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9IiNkOGViZjkiPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGNhbGNNb2RlPSJzcGxpbmUiIHZhbHVlcz0iMTsxOzAuMjsxOzEiIGtleVRpbWVzPSIwOzAuMjswLjU7MC44OzEiIGR1cj0iMnMiIGtleVNwbGluZXM9IjAuNSAwLjUgMC41IDAuNTswIDAuMSAwLjkgMTswLjEgMCAxIDAuOTswLjUgMC41IDAuNSAwLjUiIGJlZ2luPSItMC40cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZVRyYW5zZm9ybT48L3JlY3Q+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgwIDUwKSI+PHJlY3QgeD0iLTE1IiB5PSItMTUiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmlsbD0iIzcxYzJjYyI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgY2FsY01vZGU9InNwbGluZSIgdmFsdWVzPSIxOzE7MC4yOzE7MSIga2V5VGltZXM9IjA7MC4yOzAuNTswLjg7MSIgZHVyPSIycyIga2V5U3BsaW5lcz0iMC41IDAuNSAwLjUgMC41OzAgMC4xIDAuOSAxOzAuMSAwIDEgMC45OzAuNSAwLjUgMC41IDAuNSIgYmVnaW49Ii0wLjJzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlVHJhbnNmb3JtPjwvcmVjdD48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAgODApIj48cmVjdCB4PSItMTUiIHk9Ii0xNSIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjZDhlYmY5Ij48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBjYWxjTW9kZT0ic3BsaW5lIiB2YWx1ZXM9IjE7MTswLjI7MTsxIiBrZXlUaW1lcz0iMDswLjI7MC41OzAuODsxIiBkdXI9IjJzIiBrZXlTcGxpbmVzPSIwLjUgMC41IDAuNSAwLjU7MCAwLjEgMC45IDE7MC4xIDAgMSAwLjk7MC41IDAuNSAwLjUgMC41IiBiZWdpbj0iLTAuNHMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGVUcmFuc2Zvcm0+PC9yZWN0PjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCA4MCkiPjxyZWN0IHg9Ii0xNSIgeT0iLTE1IiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9IiM3MWMyY2MiPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGNhbGNNb2RlPSJzcGxpbmUiIHZhbHVlcz0iMTsxOzAuMjsxOzEiIGtleVRpbWVzPSIwOzAuMjswLjU7MC44OzEiIGR1cj0iMnMiIGtleVNwbGluZXM9IjAuNSAwLjUgMC41IDAuNTswIDAuMSAwLjkgMTswLjEgMCAxIDAuOTswLjUgMC41IDAuNSAwLjUiIGJlZ2luPSItMC4ycyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZVRyYW5zZm9ybT48L3JlY3Q+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgwIDgwKSI+PHJlY3QgeD0iLTE1IiB5PSItMTUiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgZmlsbD0iIzQ5OTZhMiI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgY2FsY01vZGU9InNwbGluZSIgdmFsdWVzPSIxOzE7MC4yOzE7MSIga2V5VGltZXM9IjA7MC4yOzAuNTswLjg7MSIgZHVyPSIycyIga2V5U3BsaW5lcz0iMC41IDAuNSAwLjUgMC41OzAgMC4xIDAuOSAxOzAuMSAwIDEgMC45OzAuNSAwLjUgMC41IDAuNSIgYmVnaW49IjBzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlVHJhbnNmb3JtPjwvcmVjdD48L2c+PC9zdmc+);background-position:center;-ms-background-position:center;border:1px solid #dee2e6;border-radius:.25rem;opacity:.4;-webkit-transition:opacity .4s ease-in;-moz-transition:opacity .4s ease-in;-o-transition:opacity .4s ease-in;transition:opacity .4s ease-in;}#docsContainer main.bd-content .cs{color:inherit;}#docsContainer main.bd-content pre.hljs{background-color:#fbfbfb !important;}#docsContainer main.bd-content pre[class*="language-"]{margin-top:0;margin-bottom:1rem;padding:.5em;}#docsContainer main.bd-content .code-header{background-color:#f5f5f5;color:#707070;border:1px solid #ddd;border-bottom:0;text-align:right;}#docsContainer main.bd-content .code-header button{background-color:#ededed;border:0;}#docsContainer main.bd-content .code-header button:hover{background-color:#d5d5d5;}#docsContainer main.bd-content .code-header button.copy{border-left:1px solid #ddd;}#docsContainer main.bd-content .code-header button.copy::before{background-size:15px auto;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath fill='%23707070' d='M13 6.8V14H4v-3H0V0h5.2l3 3h1L13 6.8zM4 3h2.8l-2-2H1v9h3V3zm8 5H8V4H5v9h7V8zM9 7h2.8L9 4.2V7z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position-y:4px;padding-right:17px;content:"";}#docsContainer nav.bd-links{padding:15px;}#docsContainer nav.bd-links h3{font-size:1em;margin-top:8px;padding-bottom:5px;border-bottom:1px solid #eee;}#docsContainer nav.bd-links p{font-size:1em;font-weight:400;margin:0 0 0 5px;}#docsContainer nav.bd-links ul{list-style-type:none;margin:0;line-height:inherit;}#docsContainer nav.bd-links ul li a{word-wrap:break-word;display:block;padding:.2rem .1rem .2rem 1rem;font-size:90%;color:#28c;}#docsContainer b,#docsContainer strong{font-weight:500;}#docsContainer nav[data-toggle='toc'] .nav{flex-direction:column;}#docsContainer nav[data-toggle='toc'] .nav>.active>a,#docsContainer nav[data-toggle='toc'] .nav>.active:hover>a,#docsContainer nav[data-toggle='toc'] .nav>.active:focus>a{color:#28c;border-left:2px solid #28c;}#docsContainer nav[data-toggle='toc'] .nav>li>a:hover,#docsContainer nav[data-toggle='toc'] .nav>li>a:focus{color:#28c;border-left:1px solid #28c;} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.css b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.css index a20d69b999b..d736d4bc63c 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.css +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.css @@ -201,6 +201,13 @@ padding-top: 2rem; padding-bottom: 10px; font-size: 2rem; } + .docs-page .docs-content article.docs-body .blockquote { + margin-bottom: 1rem; + margin-left: 0; + border-left: 2px solid gray; + padding: 1em; + background-color: #eee; + padding-bottom: .2em; } .docs-page .docs-content article.docs-body h3, .docs-page .docs-content article.docs-body h4, .docs-page .docs-content article.docs-body h5, .docs-page .docs-content article.docs-body h6 { padding-top: 20px; padding-bottom: 5px; diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.min.css b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.min.css index 7de6eb6bc54..1df65088be7 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.min.css +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.min.css @@ -1 +1,848 @@ -body{position:relative;}.docs-page{background:#f5f7f9;}.docs-page .anchorjs-link{transition:all .25s linear;}.docs-page *:hover>.anchorjs-link{margin-left:-1.125em !important;transition:color .25s linear;color:#808080;}.docs-page .anchorjs-link:hover{color:#007bff;text-decoration:none;}.docs-page .docs-sidebar{background:#f5f7f9;padding-right:1rem;position:relative;top:0;left:0;position:fixed;}.docs-page .docs-sidebar .docs-sidebar-wrapper{width:328px;float:right;}.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control{background:none;background:#fff;border:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:focus,.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:active,.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:hover,.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:visited{box-shadow:none;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version{position:relative;padding:0 1rem;margin:.25rem 0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select{border-radius:3px;border:1px solid #e9ecef;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select .input-group-text{padding:.375rem .6rem;font-size:.9rem;width:32px;height:30px;line-height:1;border-radius:0;border:1px solid #e9ecef;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control{padding:0 10px;border:0;min-height:30px;height:30px;font-size:.85em;border-radius:1px;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:focus,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:active,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:hover,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:visited,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:focus,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:active,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:hover,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:visited{box-shadow:none;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control{padding-left:6px;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-filter{padding:0 1rem;margin:.5rem 0;font-size:.9em;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-filter .filter-icon i.fa{color:#ddd;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list{height:100vh;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list>ul{display:block;height:calc(100vh - 220px);overflow-y:auto;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul{font-size:.935em;list-style:none;padding:0 1rem;margin:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li{margin-left:0;padding-left:24px;display:block;width:100%;position:relative;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a{color:#999;font-weight:700;padding:7px 0;display:block;border-bottom:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a:hover{color:#000;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a.last-link{top:11px;color:#aaa;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li span.tree-toggle{color:#999;padding:7px 0;display:block;border-bottom:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li .plus-icon{font-size:.85em;transition:.3s;width:18px;height:18px;text-align:center;padding:0;line-height:1;border-radius:50%;margin-right:4px;position:absolute;left:2px;top:11px;color:#aaa;cursor:default;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li .plus-icon .fa-long-arrow-right.no-link{color:#555;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li .plus-icon .fa-chevron-right{cursor:pointer;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul{padding:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li a{font-weight:400;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li ul{padding:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li ul li a{font-weight:300;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>a{color:#000;transition:.4s;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>span .fa{transform:rotate(90deg);color:#007bff;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree.last-link>span .fa{transform:rotate(0deg);}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand{font-size:1.5rem;color:#000;font-weight:700;padding:20px 0 10px;line-height:1;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand strong{font-weight:300;text-transform:uppercase;font-size:.9rem;opacity:.6;}.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site{color:#000;opacity:.15;transition:.4s;font-size:.75rem;font-weight:300;}.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site:hover{text-decoration:none;opacity:.5;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc{font-size:.85em;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc strong{display:block;}.docs-page .docs-content{overflow-x:scroll;}.docs-page .docs-content .contributors{position:absolute;top:15px;right:5px;}.docs-page .docs-content .contributors .contributors-avatar{border-radius:21px;width:21px;height:21px;}.docs-page .docs-content .contributors a{padding:0;width:21px;height:21px;display:inline-block;margin:0 0 0 2px;}.docs-page .docs-content .contributors a:hover{text-decoration:none;}.docs-page .docs-content .docs-link-btns{border-bottom:1px solid #f4f5f7;background:#fdfdfd;padding:10px 20px;margin:0 -15px;text-align:right;font-size:.8em;min-height:40px;}.docs-page .docs-content .docs-link-btns a{color:#999;}.docs-page .docs-content .docs-link-btns a:hover{color:#444;text-decoration:none;}.docs-page .docs-content .docs-link-btns .twitter{color:#00acee;}.docs-page .docs-content .docs-link-btns .linkedin{color:#0077b5;}.docs-page .docs-content .docs-link-btns .email{color:#5a5a5a;}.docs-page .docs-content .docs-link-btns .share-button{margin-left:10px;}.docs-page .docs-content .docs-text-field{padding:2rem;}.docs-page .docs-content article.docs-body h1{padding-top:1rem;font-size:2.25rem;padding-bottom:10px;}.docs-page .docs-content article.docs-body h2{padding-top:2rem;padding-bottom:10px;font-size:2rem;}.docs-page .docs-content article.docs-body h3,.docs-page .docs-content article.docs-body h4,.docs-page .docs-content article.docs-body h5,.docs-page .docs-content article.docs-body h6{padding-top:20px;padding-bottom:5px;font-size:1.5rem;}.docs-page .docs-content article.docs-body h1,.docs-page .docs-content article.docs-body h2,.docs-page .docs-content article.docs-body h3,.docs-page .docs-content article.docs-body h4,.docs-page .docs-content article.docs-body h5,.docs-page .docs-content article.docs-body h6{position:relative;}.docs-page .docs-content article.docs-body h1 .anchor,.docs-page .docs-content article.docs-body h2 .anchor,.docs-page .docs-content article.docs-body h3 .anchor,.docs-page .docs-content article.docs-body h4 .anchor,.docs-page .docs-content article.docs-body h5 .anchor,.docs-page .docs-content article.docs-body h6 .anchor{position:absolute;right:-26px;font-size:18px;bottom:5px;color:#999;opacity:0;transition:.5s;}.docs-page .docs-content article.docs-body h1:hover .anchor,.docs-page .docs-content article.docs-body h2:hover .anchor,.docs-page .docs-content article.docs-body h3:hover .anchor,.docs-page .docs-content article.docs-body h4:hover .anchor,.docs-page .docs-content article.docs-body h5:hover .anchor,.docs-page .docs-content article.docs-body h6:hover .anchor{opacity:1;}.docs-page .docs-content article.docs-body img{max-width:100%;border:1px solid #f4f5f7;margin:15px 0 25px;box-shadow:0 0 45px #f8f9fa;border-radius:6px;}.docs-page .docs-content article.docs-body table{display:block;overflow:auto;width:100%;}.docs-page .docs-content article.docs-body table thead tr{border-bottom:2px inset;}.docs-page .docs-content article.docs-body table th{font-weight:600;}.docs-page .docs-content article.docs-body table td,.docs-page .docs-content article.docs-body table th{border:1px solid #dfe2e5;padding:6px 13px;}.docs-page .docs-content article.docs-body table tr{background-color:#fff;border-top:1px solid #c6cbd1;}.docs-page .docs-content article.docs-body table tr:nth-child(2n){background-color:#f6f8fa;}.docs-page .docs-content article.docs-body table img{background-color:initial;}.docs-page .docs-page-index{min-height:96vh;}.docs-page .docs-page-index #scroll-index{max-height:96vh;}.docs-page .docs-page-index .docs-inner-anchors{position:fixed;top:0;padding:10px;font-size:.9em;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills{font-size:.92em;margin-left:15px;border-left:1px solid #eee;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-link{padding:3px 14px 4px;color:#aaa;line-height:1.2;position:relative;border-left:1px solid #eee;border-radius:0;margin-left:-1px;margin-top:1px;margin-bottom:1px;transition:.2s;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-link.active{border-left:2px solid #007bff;background:none;color:#007bff;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-pills .nav-link.active{color:#007bff;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-pills .nav-pills .nav-link.active{color:#007bff;}.docs-page .docs-page-index .docs-inner-anchors .index-scroll{margin-left:-30px;}.docs-page .docs-page-index .docs-inner-anchors .docs-anchors-wrapper{max-width:300px;float:left;}.docs-page .docs-page-index .scroll-top-btn{display:none;font-size:.85em;color:#aaa;text-decoration:none;padding-left:18px;}.docs-page .docs-page-index .scroll-top-btn.showup{display:block;}@media(min-width:1100px){.container{max-width:1080px;}.docs-page .docs-sidebar.dark-sidebar{background:#191919;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select{border:1px solid #333;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control,.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control{background:#191919;border-color:#191919;color:#999;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control{background:#191919;border-color:#191919;color:#999;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control::placeholder{color:#999;opacity:.5;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select label{background:#333;border-color:#333;color:#ddd;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-filter .form-control{background:#333;color:#999;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-filter select{border:0;border-radius:6px;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-filter .filter-icon i.fa{color:#aaa;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a{color:#aaa;border-bottom:0;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a:hover{color:#fff;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon{font-size:.85em;transition:.3s;width:18px;height:18px;text-align:center;padding:0;line-height:1;border-radius:50%;margin-right:4px;position:absolute;left:2px;top:11px;color:#aaa;cursor:default;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon .fa-long-arrow-right.no-link{color:#555;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon .fa-chevron-right{cursor:pointer;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon.last-link{top:11px;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li span.tree-toggle{color:#555;padding:7px 0;display:block;border-bottom:0;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>a{color:#fff;transition:.4s;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>a span .fa{color:#fff;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>a span:not(.last-link) .fa{transform:rotate(90deg);color:#fff;}.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .navbar-brand{color:#fff;text-transform:uppercase;white-space:unset;}.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .go-back-site{color:#fff;}.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .navbar-logo-desc{color:#ddd;}}@media(min-width:1366px){.container{max-width:1340px;}}@media(min-width:1440px){.container{max-width:1400px;}}@media(max-width:767px){.docs-page .docs-content article.docs-body h1{padding-top:1.5rem;}.docs-page{background:#f5f7f9;}.docs-page>.container-fluid{display:block;}.docs-page>.container-fluid>.row{display:block;}.docs-page .docs-sidebar{position:fixed;max-width:100%;width:100%;display:block;padding:0 !important;top:0;left:0;z-index:100;right:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper{max-width:100%;width:100%;top:0;position:relative;margin:0 !important;height:72px;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list{padding:.5rem 1.5rem 2rem 1.5rem;position:fixed;top:70px;font-size:17px;left:0;width:100%;z-index:100;background:#f5f7f9;display:none;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list .docs-filter{padding:0 0 1rem !important;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version label{width:36px;text-align:center;padding-left:0;padding-right:0;display:inline-block;line-height:26px;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version input.form-control{padding-left:12px !important;}.docs-page .docs-sidebar .docs-top .navbar-logo{padding:0;padding-top:.3rem;display:block;text-align:center;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand{font-size:1.5rem;font-weight:700;display:block;margin-right:0;padding:7px 0 10px;text-transform:uppercase;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand .docs-logo{width:110px;}.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site{display:none;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc{font-size:1em;display:none;}.docs-page .docs-sidebar .docs-top .open-dmenu{position:absolute;top:10px;left:20px;}.docs-page .docs-content{padding-top:72px;max-width:100%;display:block !important;}.docs-page .docs-content .docs-text-field{padding:1rem 1.5rem;}.docs-page .docs-page-index{display:none;}}.for-mobile{display:none;}.for-desktop{display:inline-block;}pre[class*="language-"]{padding:1.4em 2em !important;margin:15px 0 25px !important;border-radius:6px;}code{padding:.2em .4em;margin:0;font-size:82%;background-color:#f0f1f3;border-radius:3px;color:#28a745;}pre code{padding:0;}pre .token.keyword{color:#569cd6;}pre .token.atrule,pre .token.attr-value,pre .token.function,pre .token.class-name{color:#d69d85;}:not(pre)>code[class*="language-"],pre[class*="language-"]{background:#191919 !important;}div.code-toolbar>.toolbar span{cursor:default;}div.code-toolbar>.toolbar a{cursor:copy;}@media(max-width:767px){body{font-size:14px;}.for-mobile{display:inline-block;}.for-desktop{display:none;}.close-mmenu,.close-dmenu{position:absolute;top:-78px;left:25px;color:#fff;font-size:68px;background:#fff;opacity:0;}.navbar{padding:.5rem 1.75rem;}.navbar .navbar-collapse{background:#38003d;position:fixed;top:86px;left:0;width:100%;height:100vh;height:calc(100vh - 86px);z-index:100 !important;}.navbar .navbar-collapse .navbar-nav{height:100vh;padding:20px 30px;overflow:auto;}.navbar .navbar-collapse .navbar-nav .nav-link{padding:1.2rem !important;}.navbar .navbar-toggler{padding:.5rem .75rem;font-size:1.5rem;line-height:1;background-color:transparent;border:0;border-radius:.25rem;color:#fff !important;margin-left:-1rem;}.section-with-logos img{margin:15px;opacity:1;-webkit-filter:grayscale(0%);filter:grayscale(0%);}span.code-arrow{padding:0 0 0;display:block;transform:rotate(90deg);font-size:2em;}.mb-5,.my-5{margin-bottom:2rem !important;}}@media screen and (max-width:767px){.navbar-logo .navbar-brand{display:inline-block;margin:0 auto !important;max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}} \ No newline at end of file + +body{position:relative;}.docs-page{background:#f5f7f9;}.docs-page .anchorjs-link{transition:all .25s linear;}.docs-page *:hover>.anchorjs-link{margin-left:-1.125em !important;transition:color .25s linear;color:#808080;}.docs-page .anchorjs-link:hover{color:#007bff;text-decoration:none;}.docs-page .docs-sidebar{background:#f5f7f9;padding-right:1rem;position:relative;top:0;left:0;position:fixed;}.docs-page .docs-sidebar .docs-sidebar-wrapper{width:328px;float:right;}.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control{background:none;background:#fff;border:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:focus,.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:active,.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:hover,.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:visited{box-shadow:none;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version{position:relative;padding:0 1rem;margin:.25rem 0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select{border-radius:3px;border:1px solid #e9ecef;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select .input-group-text{padding:.375rem .6rem;font-size:.9rem;width:32px;height:30px;line-height:1;border-radius:0;border:1px solid #e9ecef;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control{padding:0 10px;border:0;min-height:30px;height:30px;font-size:.85em;border-radius:1px;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:focus,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:active,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:hover,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:visited,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:focus,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:active,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:hover,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:visited{box-shadow:none;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control{padding-left:6px;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-filter{padding:0 1rem;margin:.5rem 0;font-size:.9em;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-filter .filter-icon i.fa{color:#ddd;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list{height:100vh;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list>ul{display:block;height:calc(100vh - 220px);overflow-y:auto;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul{font-size:.935em;list-style:none;padding:0 1rem;margin:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li{margin-left:0;padding-left:24px;display:block;width:100%;position:relative;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a{color:#999;font-weight:700;padding:7px 0;display:block;border-bottom:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a:hover{color:#000;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a.last-link{top:11px;color:#aaa;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li span.tree-toggle{color:#999;padding:7px 0;display:block;border-bottom:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li .plus-icon{font-size:.85em;transition:.3s;width:18px;height:18px;text-align:center;padding:0;line-height:1;border-radius:50%;margin-right:4px;position:absolute;left:2px;top:11px;color:#aaa;cursor:default;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li .plus-icon .fa-long-arrow-right.no-link{color:#555;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li .plus-icon .fa-chevron-right{cursor:pointer;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul{padding:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li a{font-weight:400;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li ul{padding:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li ul li a{font-weight:300;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>a{color:#000;transition:.4s;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>span .fa{transform:rotate(90deg);color:#007bff;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree.last-link>span .fa{transform:rotate(0deg);}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand{font-size:1.5rem;color:#000;font-weight:700;padding:20px 0 10px;line-height:1;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand strong{font-weight:300;text-transform:uppercase;font-size:.9rem;opacity:.6;}.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site{color:#000;opacity:.15;transition:.4s;font-size:.75rem;font-weight:300;}.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site:hover{text-decoration:none;opacity:.5;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc{font-size:.85em;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc strong{display:block;}.docs-page .docs-content{overflow-x:scroll;}.docs-page .docs-content .contributors{position:absolute;top:15px;right:5px;}.docs-page .docs-content .contributors .contributors-avatar{border-radius:21px;width:21px;height:21px;}.docs-page .docs-content .contributors a{padding:0;width:21px;height:21px;display:inline-block;margin:0 0 0 2px;}.docs-page .docs-content .contributors a:hover{text-decoration:none;}.docs-page .docs-content .docs-link-btns{border-bottom:1px solid #f4f5f7;background:#fdfdfd;padding:10px 20px;margin:0 -15px;text-align:right;font-size:.8em;min-height:40px;}.docs-page .docs-content .docs-link-btns a{color:#999;}.docs-page .docs-content .docs-link-btns a:hover{color:#444;text-decoration:none;}.docs-page .docs-content .docs-link-btns .twitter{color:#00acee;}.docs-page .docs-content .docs-link-btns .linkedin{color:#0077b5;}.docs-page .docs-content .docs-link-btns .email{color:#5a5a5a;}.docs-page .docs-content .docs-link-btns .share-button{margin-left:10px;}.docs-page .docs-content .docs-text-field{padding:2rem;}.docs-page .docs-content article.docs-body h1{padding-top:1rem;font-size:2.25rem;padding-bottom:10px;}.docs-page .docs-content article.docs-body h2{padding-top:2rem;padding-bottom:10px;font-size:2rem;}.docs-page .docs-content article.docs-body h3,.docs-page .docs-content article.docs-body h4,.docs-page .docs-content article.docs-body h5,.docs-page .docs-content article.docs-body h6{padding-top:20px;padding-bottom:5px;font-size:1.5rem;}.docs-page .docs-content article.docs-body h1,.docs-page .docs-content article.docs-body h2,.docs-page .docs-content article.docs-body h3,.docs-page .docs-content article.docs-body h4,.docs-page .docs-content article.docs-body h5,.docs-page .docs-content article.docs-body h6{position:relative;}.docs-page .docs-content article.docs-body h1 .anchor,.docs-page .docs-content article.docs-body h2 .anchor,.docs-page .docs-content article.docs-body h3 .anchor,.docs-page .docs-content article.docs-body h4 .anchor,.docs-page .docs-content article.docs-body h5 .anchor,.docs-page .docs-content article.docs-body h6 .anchor{position:absolute;right:-26px;font-size:18px;bottom:5px;color:#999;opacity:0;transition:.5s;}.docs-page .docs-content article.docs-body h1:hover .anchor,.docs-page .docs-content article.docs-body h2:hover .anchor,.docs-page .docs-content article.docs-body h3:hover .anchor,.docs-page .docs-content article.docs-body h4:hover .anchor,.docs-page .docs-content article.docs-body h5:hover .anchor,.docs-page .docs-content article.docs-body h6:hover .anchor{opacity:1;}.docs-page .docs-content article.docs-body img{max-width:100%;border:1px solid #f4f5f7;margin:15px 0 25px;box-shadow:0 0 45px #f8f9fa;border-radius:6px;}.docs-page .docs-content article.docs-body table{display:block;overflow:auto;width:100%;}.docs-page .docs-content article.docs-body table thead tr{border-bottom:2px inset;}.docs-page .docs-content article.docs-body table th{font-weight:600;}.docs-page .docs-content article.docs-body table td,.docs-page .docs-content article.docs-body table th{border:1px solid #dfe2e5;padding:6px 13px;}.docs-page .docs-content article.docs-body table tr{background-color:#fff;border-top:1px solid #c6cbd1;}.docs-page .docs-content article.docs-body table tr:nth-child(2n){background-color:#f6f8fa;}.docs-page .docs-content article.docs-body table img{background-color:initial;}.docs-page .docs-page-index{min-height:96vh;}.docs-page .docs-page-index #scroll-index{max-height:96vh;}.docs-page .docs-page-index .docs-inner-anchors{position:fixed;top:0;padding:10px;font-size:.9em;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills{font-size:.92em;margin-left:15px;border-left:1px solid #eee;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-link{padding:3px 14px 4px;color:#aaa;line-height:1.2;position:relative;border-left:1px solid #eee;border-radius:0;margin-left:-1px;margin-top:1px;margin-bottom:1px;transition:.2s;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-link.active{border-left:2px solid #007bff;background:none;color:#007bff;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-pills .nav-link.active{color:#007bff;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-pills .nav-pills .nav-link.active{color:#007bff;}.docs-page .docs-page-index .docs-inner-anchors .index-scroll{margin-left:-30px;}.docs-page .docs-page-index .docs-inner-anchors .docs-anchors-wrapper{max-width:300px;float:left;}.docs-page .docs-page-index .scroll-top-btn{display:none;font-size:.85em;color:#aaa;text-decoration:none;padding-left:18px;}.docs-page .docs-page-index .scroll-top-btn.showup{display:block;}@media(min-width:1100px){.container{max-width:1080px;}.docs-page .docs-sidebar.dark-sidebar{background:#191919;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select{border:1px solid #333;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control,.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control{background:#191919;border-color:#191919;color:#999;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control{background:#191919;border-color:#191919;color:#999;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control::placeholder{color:#999;opacity:.5;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select label{background:#333;border-color:#333;color:#ddd;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-filter .form-control{background:#333;color:#999;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-filter select{border:0;border-radius:6px;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-filter .filter-icon i.fa{color:#aaa;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a{color:#aaa;border-bottom:0;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a:hover{color:#fff;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon{font-size:.85em;transition:.3s;width:18px;height:18px;text-align:center;padding:0;line-height:1;border-radius:50%;margin-right:4px;position:absolute;left:2px;top:11px;color:#aaa;cursor:default;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon .fa-long-arrow-right.no-link{color:#555;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon .fa-chevron-right{cursor:pointer;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon.last-link{top:11px;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li span.tree-toggle{color:#555;padding:7px 0;display:block;border-bottom:0;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>a{color:#fff;transition:.4s;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>a span .fa{color:#fff;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>a span:not(.last-link) .fa{transform:rotate(90deg);color:#fff;}.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .navbar-brand{color:#fff;text-transform:uppercase;white-space:unset;}.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .go-back-site{color:#fff;}.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .navbar-logo-desc{color:#ddd;}}@media(min-width:1366px){.container{max-width:1340px;}}@media(min-width:1440px){.container{max-width:1400px;}}@media(max-width:767px){.docs-page .docs-content article.docs-body h1{padding-top:1.5rem;}.docs-page{background:#f5f7f9;}.docs-page>.container-fluid{display:block;}.docs-page>.container-fluid>.row{display:block;}.docs-page .docs-sidebar{position:fixed;max-width:100%;width:100%;display:block;padding:0 !important;top:0;left:0;z-index:100;right:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper{max-width:100%;width:100%;top:0;position:relative;margin:0 !important;height:72px;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list{padding:.5rem 1.5rem 2rem 1.5rem;position:fixed;top:70px;font-size:17px;left:0;width:100%;z-index:100;background:#f5f7f9;display:none;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list .docs-filter{padding:0 0 1rem !important;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version label{width:36px;text-align:center;padding-left:0;padding-right:0;display:inline-block;line-height:26px;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version input.form-control{padding-left:12px !important;}.docs-page .docs-sidebar .docs-top .navbar-logo{padding:0;padding-top:.3rem;display:block;text-align:center;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand{font-size:1.5rem;font-weight:700;display:block;margin-right:0;padding:7px 0 10px;text-transform:uppercase;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand .docs-logo{width:110px;}.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site{display:none;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc{font-size:1em;display:none;}.docs-page .docs-sidebar .docs-top .open-dmenu{position:absolute;top:10px;left:20px;}.docs-page .docs-content{padding-top:72px;max-width:100%;display:block !important;}.docs-page .docs-content .docs-text-field{padding:1rem 1.5rem;}.docs-page .docs-page-index{display:none;}}.for-mobile{display:none;}.for-desktop{display:inline-block;}pre[class*="language-"]{padding:1.4em 2em !important;margin:15px 0 25px !important;border-radius:6px;}code{padding:.2em .4em;margin:0;font-size:82%;background-color:#f0f1f3;border-radius:3px;color:#28a745;}pre code{padding:0;}pre .token.keyword{color:#569cd6;}pre .token.atrule,pre .token.attr-value,pre .token.function,pre .token.class-name{color:#d69d85;}:not(pre)>code[class*="language-"],pre[class*="language-"]{background:#191919 !important;}div.code-toolbar>.toolbar span{cursor:default;}div.code-toolbar>.toolbar a{cursor:copy;}@media(max-width:767px){body{font-size:14px;}.for-mobile{display:inline-block;}.for-desktop{display:none;}.close-mmenu,.close-dmenu{position:absolute;top:-78px;left:25px;color:#fff;font-size:68px;background:#fff;opacity:0;}.navbar{padding:.5rem 1.75rem;}.navbar .navbar-collapse{background:#38003d;position:fixed;top:86px;left:0;width:100%;height:100vh;height:calc(100vh - 86px);z-index:100 !important;}.navbar .navbar-collapse .navbar-nav{height:100vh;padding:20px 30px;overflow:auto;}.navbar .navbar-collapse .navbar-nav .nav-link{padding:1.2rem !important;}.navbar .navbar-toggler{padding:.5rem .75rem;font-size:1.5rem;line-height:1;background-color:transparent;border:0;border-radius:.25rem;color:#fff !important;margin-left:-1rem;}.section-with-logos img{margin:15px;opacity:1;-webkit-filter:grayscale(0%);filter:grayscale(0%);}span.code-arrow{padding:0 0 0;display:block;transform:rotate(90deg);font-size:2em;}.mb-5,.my-5{margin-bottom:2rem !important;}}@media screen and (max-width:767px){.navbar-logo .navbar-brand{display:inline-block;margin:0 auto !important;max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}} +======= +body { + position: relative +} + +.docs-page { + background: #f5f7f9 +} + + .docs-page .anchorjs-link { + transition: all .25s linear + } + + .docs-page :hover > .anchorjs-link { + margin-left: -1.125em !important; + transition: color .25s linear; + color: gray + } + + .docs-page .anchorjs-link:hover { + color: #007bff; + text-decoration: none + } + + .docs-page .docs-sidebar { + background: #f5f7f9; + padding-right: 1rem; + position: relative; + top: 0; + left: 0; + position: fixed + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper { + width: 270px; + float: right + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control { + background: 0 0; + background: #fff; + border: 0 + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:active, .docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:focus, .docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:hover, .docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:visited { + box-shadow: none + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version { + position: relative; + padding: 0 1rem; + margin: .25rem 0 + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select { + border-radius: 3px; + border: 1px solid #e9ecef + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select .input-group-text { + padding: .375rem .6rem; + font-size: .9rem; + width: 32px; + height: 30px; + line-height: 1; + border-radius: 0; + border: 1px solid #e9ecef + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control { + padding: 0 10px; + border: 0; + min-height: 30px; + height: 30px; + font-size: .85em; + border-radius: 1px + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:active, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:focus, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:hover, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:visited, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:active, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:focus, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:hover, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:visited { + box-shadow: none + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control { + padding-left: 6px + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-filter { + padding: 0 1rem; + margin: .5rem 0; + font-size: .9em + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-filter .filter-icon i.fa { + color: #ddd + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list { + height: 100vh + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list > ul { + display: block; + height: calc(100vh - 220px); + overflow-y: auto + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul { + font-size: .935em; + list-style: none; + padding: 0 1rem; + margin: 0 + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li { + margin-left: 0; + padding-left: 24px; + display: block; + width: 100%; + position: relative + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a { + color: #999; + font-weight: 700; + padding: 7px 0; + display: block; + border-bottom: 0 + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a:hover { + color: #000 + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a.last-link { + top: 11px; + color: #aaa + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li span.tree-toggle { + color: #999; + padding: 7px 0; + display: block; + border-bottom: 0 + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li .plus-icon { + font-size: .85em; + transition: .3s; + width: 18px; + height: 18px; + text-align: center; + padding: 0; + line-height: 1; + border-radius: 50%; + margin-right: 4px; + position: absolute; + left: 2px; + top: 11px; + color: #aaa; + cursor: default + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li .plus-icon .fa-long-arrow-right.no-link { + color: #555 + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li .plus-icon .fa-chevron-right { + cursor: pointer + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul { + padding: 0 + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li a { + font-weight: 400 + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li ul { + padding: 0 + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li ul li a { + font-weight: 300 + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree > a { + color: #000; + transition: .4s + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree > span .fa { + transform: rotate(90deg); + color: #007bff + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree.last-link > span .fa { + transform: rotate(0) + } + + .docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand { + font-size: 1.5rem; + color: #000; + font-weight: 700; + padding: 20px 0 10px; + line-height: 1 + } + + .docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand strong { + font-weight: 300; + text-transform: uppercase; + font-size: .9rem; + opacity: .6 + } + + .docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site { + color: #000; + opacity: .15; + transition: .4s; + font-size: .75rem; + font-weight: 300 + } + + .docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site:hover { + text-decoration: none; + opacity: .5 + } + + .docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc { + font-size: .85em + } + + .docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc strong { + display: block + } + + .docs-page .docs-content { + overflow-x: scroll + } + + .docs-page .docs-content .contributors { + position: absolute; + top: 15px; + right: 5px + } + + .docs-page .docs-content .contributors .contributors-avatar { + border-radius: 21px; + width: 21px; + height: 21px + } + + .docs-page .docs-content .contributors a { + padding: 0; + width: 21px; + height: 21px; + display: inline-block; + margin: 0 0 0 2px + } + + .docs-page .docs-content .contributors a:hover { + text-decoration: none + } + + .docs-page .docs-content .docs-link-btns { + border-bottom: 1px solid #f4f5f7; + background: #fdfdfd; + padding: 10px 20px; + margin: 0 -15px; + text-align: right; + font-size: .8em; + min-height: 40px + } + + .docs-page .docs-content .docs-link-btns a { + color: #999 + } + + .docs-page .docs-content .docs-link-btns a:hover { + color: #444; + text-decoration: none + } + + .docs-page .docs-content .docs-link-btns .twitter { + color: #00acee + } + + .docs-page .docs-content .docs-link-btns .linkedin { + color: #0077b5 + } + + .docs-page .docs-content .docs-link-btns .email { + color: #5a5a5a + } + + .docs-page .docs-content .docs-link-btns .share-button { + margin-left: 10px + } + + .docs-page .docs-content .docs-text-field { + padding: 2rem + } + + .docs-page .docs-content article.docs-body h1 { + padding-top: 1rem; + font-size: 2.25rem; + padding-bottom: 10px + } + + .docs-page .docs-content article.docs-body h2 { + padding-top: 2rem; + padding-bottom: 10px; + font-size: 2rem + } + + .docs-page .docs-content article.docs-body .blockquote { + margin-bottom: 1rem; + margin-left: 0; + border-left: 2px solid gray; + padding: 1em; + background-color: #eee; + padding-bottom: .2em + } + + .docs-page .docs-content article.docs-body h3, .docs-page .docs-content article.docs-body h4, .docs-page .docs-content article.docs-body h5, .docs-page .docs-content article.docs-body h6 { + padding-top: 20px; + padding-bottom: 5px; + font-size: 1.5rem + } + + .docs-page .docs-content article.docs-body h1, .docs-page .docs-content article.docs-body h2, .docs-page .docs-content article.docs-body h3, .docs-page .docs-content article.docs-body h4, .docs-page .docs-content article.docs-body h5, .docs-page .docs-content article.docs-body h6 { + position: relative + } + + .docs-page .docs-content article.docs-body h1 .anchor, .docs-page .docs-content article.docs-body h2 .anchor, .docs-page .docs-content article.docs-body h3 .anchor, .docs-page .docs-content article.docs-body h4 .anchor, .docs-page .docs-content article.docs-body h5 .anchor, .docs-page .docs-content article.docs-body h6 .anchor { + position: absolute; + right: -26px; + font-size: 18px; + bottom: 5px; + color: #999; + opacity: 0; + transition: .5s + } + + .docs-page .docs-content article.docs-body h1:hover .anchor, .docs-page .docs-content article.docs-body h2:hover .anchor, .docs-page .docs-content article.docs-body h3:hover .anchor, .docs-page .docs-content article.docs-body h4:hover .anchor, .docs-page .docs-content article.docs-body h5:hover .anchor, .docs-page .docs-content article.docs-body h6:hover .anchor { + opacity: 1 + } + + .docs-page .docs-content article.docs-body img { + max-width: 100%; + border: 1px solid #f4f5f7; + margin: 15px 0 25px; + box-shadow: 0 0 45px #f8f9fa; + border-radius: 6px + } + + .docs-page .docs-content article.docs-body table { + display: block; + overflow: auto; + width: 100% + } + + .docs-page .docs-content article.docs-body table thead tr { + border-bottom: 2px inset + } + + .docs-page .docs-content article.docs-body table th { + font-weight: 600 + } + + .docs-page .docs-content article.docs-body table td, .docs-page .docs-content article.docs-body table th { + border: 1px solid #dfe2e5; + padding: 6px 13px + } + + .docs-page .docs-content article.docs-body table tr { + background-color: #fff; + border-top: 1px solid #c6cbd1 + } + + .docs-page .docs-content article.docs-body table tr:nth-child(2n) { + background-color: #f6f8fa + } + + .docs-page .docs-content article.docs-body table img { + background-color: initial + } + + .docs-page .docs-page-index { + min-height: 96vh + } + + .docs-page .docs-page-index #scroll-index { + max-height: 96vh + } + + .docs-page .docs-page-index .docs-inner-anchors { + position: fixed; + top: 0; + padding: 10px; + font-size: .9em + } + + .docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills { + font-size: .92em; + margin-left: 15px; + border-left: 1px solid #eee + } + + .docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-link { + padding: 3px 14px 4px; + color: #aaa; + line-height: 1.2; + position: relative; + border-left: 1px solid #eee; + border-radius: 0; + margin-left: -1px; + margin-top: 1px; + margin-bottom: 1px; + transition: .2s + } + + .docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-link.active { + border-left: 2px solid #007bff; + background: 0 0; + color: #007bff + } + + .docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-pills .nav-link.active { + color: #007bff + } + + .docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-pills .nav-pills .nav-link.active { + color: #007bff + } + + .docs-page .docs-page-index .docs-inner-anchors .index-scroll { + margin-left: -30px + } + + .docs-page .docs-page-index .docs-inner-anchors .docs-anchors-wrapper { + max-width: 300px; + float: left + } + + .docs-page .docs-page-index .scroll-top-btn { + display: none; + font-size: .85em; + color: #aaa; + text-decoration: none; + padding-left: 18px + } + + .docs-page .docs-page-index .scroll-top-btn.showup { + display: block + } + +@media (min-width:1100px) { + .container { + max-width: 1080px + } + + .docs-page .docs-sidebar.dark-sidebar { + background: #191919 + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select { + border: 1px solid #333 + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control, .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control { + background: #191919; + border-color: #191919; + color: #999 + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control { + background: #191919; + border-color: #191919; + color: #999 + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control::placeholder { + color: #999; + opacity: .5 + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select label { + background: #333; + border-color: #333; + color: #ddd + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-filter .form-control { + background: #333; + color: #999 + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-filter select { + border: 0; + border-radius: 6px + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-filter .filter-icon i.fa { + color: #aaa + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a { + color: #aaa; + border-bottom: 0 + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a:hover { + color: #fff + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon { + font-size: .85em; + transition: .3s; + width: 18px; + height: 18px; + text-align: center; + padding: 0; + line-height: 1; + border-radius: 50%; + margin-right: 4px; + position: absolute; + left: 2px; + top: 11px; + color: #aaa; + cursor: default + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon .fa-long-arrow-right.no-link { + color: #555 + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon .fa-chevron-right { + cursor: pointer + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon.last-link { + top: 11px + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li span.tree-toggle { + color: #555; + padding: 7px 0; + display: block; + border-bottom: 0 + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree > a { + color: #fff; + transition: .4s + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree > a span .fa { + color: #fff + } + + .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree > a span:not(.last-link) .fa { + transform: rotate(90deg); + color: #fff + } + + .docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .navbar-brand { + color: #fff; + text-transform: uppercase; + white-space: unset + } + + .docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .go-back-site { + color: #fff + } + + .docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .navbar-logo-desc { + color: #ddd + } +} + +@media (min-width:1366px) { + .container { + max-width: 1340px + } +} + +@media (min-width:1440px) { + .container { + max-width: 1400px + } +} + +@media (max-width:767px) { + .docs-page .docs-content article.docs-body h1 { + padding-top: 1.5rem + } + + .docs-page { + background: #f5f7f9 + } + + .docs-page > .container-fluid { + display: block + } + + .docs-page > .container-fluid > .row { + display: block + } + + .docs-page .docs-sidebar { + position: fixed; + max-width: 100%; + width: 100%; + display: block; + padding: 0 !important; + top: 0; + left: 0; + z-index: 100; + right: 0 + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper { + max-width: 100%; + width: 100%; + top: 0; + position: relative; + margin: 0 !important; + height: 72px + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list { + padding: .5rem 1.5rem 2rem 1.5rem; + position: fixed; + top: 70px; + font-size: 17px; + left: 0; + width: 100%; + z-index: 100; + background: #f5f7f9; + display: none + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list .docs-filter { + padding: 0 0 1rem !important + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version label { + width: 36px; + text-align: center; + padding-left: 0; + padding-right: 0; + display: inline-block; + line-height: 26px + } + + .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version input.form-control { + padding-left: 12px !important + } + + .docs-page .docs-sidebar .docs-top .navbar-logo { + padding: 0; + padding-top: .3rem; + display: block; + text-align: center + } + + .docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand { + font-size: 1.5rem; + font-weight: 700; + display: block; + margin-right: 0; + padding: 7px 0 10px; + text-transform: uppercase + } + + .docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand .docs-logo { + width: 110px + } + + .docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site { + display: none + } + + .docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc { + font-size: 1em; + display: none + } + + .docs-page .docs-sidebar .docs-top .open-dmenu { + position: absolute; + top: 10px; + left: 20px + } + + .docs-page .docs-content { + padding-top: 72px; + max-width: 100%; + display: block !important + } + + .docs-page .docs-content .docs-text-field { + padding: 1rem 1.5rem + } + + .docs-page .docs-page-index { + display: none + } +} + +.for-mobile { + display: none +} + +.for-desktop { + display: inline-block +} + +pre[class*=language-] { + padding: 1.4em 2em !important; + margin: 15px 0 25px !important; + border-radius: 6px +} + +code { + padding: .2em .4em; + margin: 0; + font-size: 82%; + background-color: #f0f1f3; + border-radius: 3px; + color: #28a745 +} + +pre code { + padding: 0 +} + +pre .token.keyword { + color: #569cd6 +} + +pre .token.atrule, pre .token.attr-value, pre .token.class-name, pre .token.function { + color: #d69d85 +} + +:not(pre) > code[class*=language-], pre[class*=language-] { + background: #191919 !important +} + +div.code-toolbar > .toolbar span { + cursor: default +} + +div.code-toolbar > .toolbar a { + cursor: copy +} + +@media (max-width:767px) { + body { + font-size: 14px + } + + .for-mobile { + display: inline-block + } + + .for-desktop { + display: none + } + + .close-dmenu, .close-mmenu { + position: absolute; + top: -78px; + left: 25px; + color: #fff; + font-size: 68px; + background: #fff; + opacity: 0 + } + + .navbar { + padding: .5rem 1.75rem + } + + .navbar .navbar-collapse { + background: #38003d; + position: fixed; + top: 86px; + left: 0; + width: 100%; + height: 100vh; + height: calc(100vh - 86px); + z-index: 100 !important + } + + .navbar .navbar-collapse .navbar-nav { + height: 100vh; + padding: 20px 30px; + overflow: auto + } + + .navbar .navbar-collapse .navbar-nav .nav-link { + padding: 1.2rem !important + } + + .navbar .navbar-toggler { + padding: .5rem .75rem; + font-size: 1.5rem; + line-height: 1; + background-color: transparent; + border: 0; + border-radius: .25rem; + color: #fff !important; + margin-left: -1rem + } + + .section-with-logos img { + margin: 15px; + opacity: 1; + -webkit-filter: grayscale(0); + filter: grayscale(0) + } + + span.code-arrow { + padding: 0 0 0; + display: block; + transform: rotate(90deg); + font-size: 2em + } + + .mb-5, .my-5 { + margin-bottom: 2rem !important + } +} + +@media screen and (max-width:767px) { + .navbar-logo .navbar-brand { + display: inline-block; + margin: 0 auto !important; + max-width: 70%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap + } +} +>>>>>>> 00474927dda8a2555104693e3ab4f8f33ec34b60 diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.scss b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.scss index 6b7ff3ef7f0..943f614cefe 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.scss +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.scss @@ -367,6 +367,15 @@ body { } } + .blockquote { + margin-bottom: 1rem; + margin-left: 0; + border-left: 2px solid gray; + padding: 1em; + background-color: #eee; + padding-bottom: .2em + } + img { max-width: 100%; border: 1px solid #f4f5f7; diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo.Abp.FeatureManagement.Application.Contracts.csproj b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo.Abp.FeatureManagement.Application.Contracts.csproj index 00d1f8834d4..760805086fc 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo.Abp.FeatureManagement.Application.Contracts.csproj +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo.Abp.FeatureManagement.Application.Contracts.csproj @@ -11,14 +11,6 @@ - - - - - - - - diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/AbpFeatureManagementApplicationContractsModule.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/AbpFeatureManagementApplicationContractsModule.cs index f5d03e71670..732c200bb08 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/AbpFeatureManagementApplicationContractsModule.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/AbpFeatureManagementApplicationContractsModule.cs @@ -1,6 +1,4 @@ using Volo.Abp.Application; -using Volo.Abp.FeatureManagement.Localization; -using Volo.Abp.Localization; using Volo.Abp.Modularity; using Volo.Abp.VirtualFileSystem; @@ -18,13 +16,6 @@ public override void ConfigureServices(ServiceConfigurationContext context) { options.FileSets.AddEmbedded(); }); - - Configure(options => - { - options.Resources - .Get() - .AddVirtualJson("/Volo/Abp/FeatureManagement/Localization/ApplicationContracts"); - }); } } } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/Localization/ApplicationContracts/zh-Hans.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/Localization/ApplicationContracts/zh-Hans.json deleted file mode 100644 index 25137f1ee3e..00000000000 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/Localization/ApplicationContracts/zh-Hans.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "culture": "zh-Hans", - "texts": { - - } -} \ No newline at end of file diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo.Abp.FeatureManagement.Domain.Shared.csproj b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo.Abp.FeatureManagement.Domain.Shared.csproj index 44c36fd1d1c..a4405067cfe 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo.Abp.FeatureManagement.Domain.Shared.csproj +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo.Abp.FeatureManagement.Domain.Shared.csproj @@ -7,6 +7,14 @@ + + + + + + + + diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainSharedModule.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainSharedModule.cs index 7931f913742..0008faf693d 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainSharedModule.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainSharedModule.cs @@ -1,6 +1,8 @@ using Volo.Abp.FeatureManagement.Localization; using Volo.Abp.Localization; +using Volo.Abp.Localization.Resources.AbpValidation; using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; namespace Volo.Abp.FeatureManagement { @@ -11,9 +13,18 @@ public class AbpFeatureManagementDomainSharedModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + Configure(options => { - options.Resources.Add("en"); + options.Resources + .Add("en") + .AddBaseTypes( + typeof(AbpValidationResource) + ).AddVirtualJson("Volo/Abp/FeatureManagement/Localization/Resources/Domain"); }); } } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/cs.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/cs.json similarity index 100% rename from modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/cs.json rename to modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/cs.json diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/en.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/en.json similarity index 100% rename from modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/en.json rename to modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/en.json diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/pl.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/pl.json similarity index 100% rename from modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/pl.json rename to modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/pl.json diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/pt-BR.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/pt-BR.json similarity index 100% rename from modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/pt-BR.json rename to modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/pt-BR.json diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/tr.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json similarity index 100% rename from modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/tr.json rename to modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/vi.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/vi.json similarity index 100% rename from modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/vi.json rename to modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/vi.json diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/zh-Hans.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json similarity index 100% rename from modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/zh-Hans.json rename to modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi/Volo/Abp/FeatureManagement/AbpFeatureManagementHttpApiModule.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi/Volo/Abp/FeatureManagement/AbpFeatureManagementHttpApiModule.cs index 27cf7fa6050..d7761f79304 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi/Volo/Abp/FeatureManagement/AbpFeatureManagementHttpApiModule.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi/Volo/Abp/FeatureManagement/AbpFeatureManagementHttpApiModule.cs @@ -1,4 +1,7 @@ -using Volo.Abp.AspNetCore.Mvc; +using Localization.Resources.AbpUi; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.FeatureManagement.Localization; +using Volo.Abp.Localization; using Volo.Abp.Modularity; namespace Volo.Abp.FeatureManagement @@ -8,6 +11,14 @@ namespace Volo.Abp.FeatureManagement typeof(AbpAspNetCoreMvcModule))] public class AbpFeatureManagementHttpApiModule : AbpModule { - + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes(typeof(AbpUiResource)); + }); + } } } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/AbpFeatureManagementWebModule.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/AbpFeatureManagementWebModule.cs index 1d5f99c086e..ca7f6f31eaa 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/AbpFeatureManagementWebModule.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/AbpFeatureManagementWebModule.cs @@ -34,16 +34,6 @@ public override void ConfigureServices(ServiceConfigurationContext context) options.FileSets.AddEmbedded("Volo.Abp.FeatureManagement"); }); - Configure(options => - { - options.Resources - .Get() - .AddBaseTypes( - typeof(AbpValidationResource), - typeof(AbpUiResource) - ).AddVirtualJson("/Localization/Resources/FeatureManagement"); - }); - Configure(options => { options.AddProfile(validate: true); diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Volo.Abp.FeatureManagement.Web.csproj b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Volo.Abp.FeatureManagement.Web.csproj index 2983c95ddf3..ccc5f002008 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Volo.Abp.FeatureManagement.Web.csproj +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Volo.Abp.FeatureManagement.Web.csproj @@ -14,11 +14,9 @@ - - diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.csproj b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.csproj index 8d113899a90..f14910c068f 100644 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.csproj +++ b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.csproj @@ -13,10 +13,6 @@ - - - - diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/AbpIdentityApplicationContractsModule.cs b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/AbpIdentityApplicationContractsModule.cs index 821457ac932..107acba9d13 100644 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/AbpIdentityApplicationContractsModule.cs +++ b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/AbpIdentityApplicationContractsModule.cs @@ -1,13 +1,8 @@ using Volo.Abp.Application; using Volo.Abp.Authorization; -using Volo.Abp.Authorization.Permissions; -using Volo.Abp.Identity.Localization; -using Volo.Abp.Localization; using Volo.Abp.Modularity; using Volo.Abp.PermissionManagement; using Volo.Abp.Users; -using Volo.Abp.VirtualFileSystem; -using Volo.Abp.Localization.ExceptionHandling; namespace Volo.Abp.Identity { @@ -22,22 +17,7 @@ public class AbpIdentityApplicationContractsModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { - Configure(options => - { - options.FileSets.AddEmbedded(); - }); - Configure(options => - { - options.Resources - .Get() - .AddVirtualJson("/Volo/Abp/Identity/Localization/ApplicationContracts"); - }); - - Configure(options => - { - options.MapCodeNamespace("Volo.Abp.Identity", typeof(IdentityResource)); - }); } } } \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/ChangePasswordInput.cs b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/ChangePasswordInput.cs new file mode 100644 index 00000000000..a5bd73908ad --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/ChangePasswordInput.cs @@ -0,0 +1,9 @@ +namespace Volo.Abp.Identity +{ + public class ChangePasswordInput + { + public string CurrentPassword { get; set; } + + public string NewPassword { get; set; } + } +} diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/GetIdentityRolesInput.cs b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/GetIdentityRolesInput.cs deleted file mode 100644 index c5db3405a81..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/GetIdentityRolesInput.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Volo.Abp.Application.Dtos; - -namespace Volo.Abp.Identity -{ - public class GetIdentityRolesInput : PagedAndSortedResultRequestDto - { - public string Filter { get; set; } - } -} diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IIdentityRoleAppService.cs b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IIdentityRoleAppService.cs index 0d8f19f796e..3fec60599d3 100644 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IIdentityRoleAppService.cs +++ b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IIdentityRoleAppService.cs @@ -1,13 +1,21 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; namespace Volo.Abp.Identity { - public interface IIdentityRoleAppService : ICrudAppService + public interface IIdentityRoleAppService : IApplicationService { - //TODO: remove after a better design - Task> GetAllListAsync(); + Task> GetListAsync(); + + Task CreateAsync(IdentityRoleCreateDto input); + + Task GetAsync(Guid id); + + Task UpdateAsync(Guid id, IdentityRoleUpdateDto input); + + Task DeleteAsync(Guid id); } } diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IProfileAppService.cs b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IProfileAppService.cs index 142b5ad16ad..15d20e551ed 100644 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IProfileAppService.cs +++ b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IProfileAppService.cs @@ -9,6 +9,6 @@ public interface IProfileAppService : IApplicationService Task UpdateAsync(UpdateProfileDto input); - Task ChangePasswordAsync(string currentPassword, string newPassword); + Task ChangePasswordAsync(ChangePasswordInput input); } } diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/cs.json b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/cs.json deleted file mode 100644 index 85808729917..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/cs.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "culture": "cs", - "texts": { - "Volo.Abp.Identity:010001": "Nemůžete smazat svůj vlastní účet!", - "Permission:IdentityManagement": "Správa identit", - "Permission:RoleManagement": "Správa rolí", - "Permission:Create": "Vytvořit", - "Permission:Edit": "Upravit", - "Permission:Delete": "Smazat", - "Permission:ChangePermissions": "Změnit oprávnění", - "Permission:UserManagement": "Správa uživatelů", - "Permission:UserLookup": "Vyhledání uživatele" - } -} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/en.json b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/en.json deleted file mode 100644 index 22464dae715..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/en.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "culture": "en", - "texts": { - "Volo.Abp.Identity:010001": "You can not delete your own account!", - "Permission:IdentityManagement": "Identity management", - "Permission:RoleManagement": "Role management", - "Permission:Create": "Create", - "Permission:Edit": "Edit", - "Permission:Delete": "Delete", - "Permission:ChangePermissions": "Change permissions", - "Permission:UserManagement": "User management", - "Permission:UserLookup": "User lookup" - } -} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/pl.json b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/pl.json deleted file mode 100644 index 4ebaa0c660f..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/pl.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "culture": "pl", - "texts": { - "Volo.Abp.Identity:010001": "Nie możesz usunąć swojego własnego konta!", - "Permission:IdentityManagement": "Zarządzanie tożsamością", - "Permission:RoleManagement": "Zarządanie rolami", - "Permission:Create": "Utwórz", - "Permission:Edit": "Edytuj", - "Permission:Delete": "Usuń", - "Permission:ChangePermissions": "Zmień uprawnienia", - "Permission:UserManagement": "Zarządzanie użytkownikami", - "Permission:UserLookup": "Wyszukiwanie użytkownika" - } -} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/pt-BR.json b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/pt-BR.json deleted file mode 100644 index d57c51ed5ee..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/pt-BR.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "culture": "pt-BR", - "texts": { - "Volo.Abp.Identity:010001": "Você não pode deletar sua própria conta!", - "Permission:IdentityManagement": "Acessos", - "Permission:RoleManagement": "Perfis", - "Permission:Create": "Criar", - "Permission:Edit": "Editar", - "Permission:Delete": "Excluir", - "Permission:ChangePermissions": "Alterar Permissões", - "Permission:UserManagement": "Usuários", - "Permission:UserLookup": "Pesquisa de usuário" - } -} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/tr.json b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/tr.json deleted file mode 100644 index 4e0746de1f7..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/tr.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "culture": "tr", - "texts": { - "Volo.Abp.Identity:010001": "Kendi hesabınızı silemezsiniz!", - "Permission:IdentityManagement": "Kimlik yönetimi", - "Permission:RoleManagement": "Rol yönetimi", - "Permission:Create": "Oluşturma", - "Permission:Edit": "Düzenleme", - "Permission:Delete": "Silme", - "Permission:ChangePermissions": "İzinleri değiştirme", - "Permission:UserManagement": "Kullanıcı yönetimi", - "Permission:UserLookup": "Kullanıcı sorgulama" - } -} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/vi.json b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/vi.json deleted file mode 100644 index e9576d3ea99..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/vi.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "culture": "vi", - "texts": { - "Volo.Abp.Identity:010001": "Bạn không thể xóa tài khoản của riêng bạn!", - "Permission:IdentityManagement": "Quản lý danh tính", - "Permission:RoleManagement": "Quản lý vai trò", - "Permission:Create": "Tạo", - "Permission:Edit": "Sửa", - "Permission:Delete": "Xóa", - "Permission:ChangePermissions": "Thay đổi quyền", - "Permission:UserManagement": "Quản lý người dùng", - "Permission:UserLookup": "Tra cứu người dùng" - } -} diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/zh-Hans.json b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/zh-Hans.json deleted file mode 100644 index cae53933d99..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/zh-Hans.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "culture": "zh-Hans", - "texts": { - "Volo.Abp.Identity:010001": "您无法删除自己的帐户!", - "Permission:IdentityManagement": "身份标识管理", - "Permission:RoleManagement": "角色管理", - "Permission:Create": "创建", - "Permission:Edit": "编辑", - "Permission:Delete": "删除", - "Permission:ChangePermissions": "更改权限", - "Permission:UserManagement": "用户管理", - "Permission:UserLookup": "用户查询" - } - } \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/IdentityRoleAppService.cs b/modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/IdentityRoleAppService.cs index 0493f19347b..d05762fd5a8 100644 --- a/modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/IdentityRoleAppService.cs +++ b/modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/IdentityRoleAppService.cs @@ -29,22 +29,11 @@ await _roleManager.GetByIdAsync(id) ); } - public async Task> GetListAsync(GetIdentityRolesInput input) //TODO: Remove this method since it's not used - { - var count = (int)await _roleRepository.GetCountAsync(input.Filter); - var list = await _roleRepository.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter); - - return new PagedResultDto( - count, - ObjectMapper.Map, List>(list) - ); - } - - public async Task> GetAllListAsync() //TODO: Rename to GetList (however it's not possible because of the design of the IAsyncCrudAppService) + public async Task> GetListAsync() { var list = await _roleRepository.GetListAsync(); - return ObjectMapper.Map, List>(list); + return new ListResultDto(ObjectMapper.Map, List>(list)); } [Authorize(IdentityPermissions.Roles.Create)] diff --git a/modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/ProfileAppService.cs b/modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/ProfileAppService.cs index 64a78b81ca9..cd0365be2f2 100644 --- a/modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/ProfileAppService.cs +++ b/modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/ProfileAppService.cs @@ -50,10 +50,10 @@ public async Task UpdateAsync(UpdateProfileDto input) return ObjectMapper.Map(user); } - public async Task ChangePasswordAsync(string currentPassword, string newPassword) + public async Task ChangePasswordAsync(ChangePasswordInput input) { var currentUser = await _userManager.GetByIdAsync(CurrentUser.GetId()); - (await _userManager.ChangePasswordAsync(currentUser, currentPassword, newPassword)).CheckErrors(); + (await _userManager.ChangePasswordAsync(currentUser, input.CurrentPassword, input.NewPassword)).CheckErrors(); } } } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj index d8ce67b17d3..e86a7221de4 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj @@ -1,4 +1,4 @@ - + @@ -13,6 +13,14 @@ + + + + + + + + diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/AbpIdentityDomainSharedModule.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/AbpIdentityDomainSharedModule.cs index efb8a7130aa..92b99c597f2 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/AbpIdentityDomainSharedModule.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/AbpIdentityDomainSharedModule.cs @@ -1,7 +1,10 @@ using Volo.Abp.Identity.Localization; using Volo.Abp.Localization; +using Volo.Abp.Localization.ExceptionHandling; +using Volo.Abp.Localization.Resources.AbpValidation; using Volo.Abp.Modularity; using Volo.Abp.Users; +using Volo.Abp.VirtualFileSystem; namespace Volo.Abp.Identity { @@ -11,9 +14,23 @@ public class AbpIdentityDomainSharedModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + Configure(options => { - options.Resources.Add("en"); + options.Resources + .Add("en") + .AddBaseTypes( + typeof(AbpValidationResource) + ).AddVirtualJson("/Volo/Abp/Identity/Localization"); + }); + + Configure(options => + { + options.MapCodeNamespace("Volo.Abp.Identity", typeof(IdentityResource)); }); } } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/IdentityResource.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/IdentityResource.cs index 4a3c5e85f4e..7c5ed0bdd45 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/IdentityResource.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/IdentityResource.cs @@ -3,7 +3,7 @@ namespace Volo.Abp.Identity.Localization { [LocalizationResourceName("AbpIdentity")] - public class IdentityResource //TODO: Rename to AbpIdentityResource + public class IdentityResource { } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json new file mode 100644 index 00000000000..0f87bec5e5c --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json @@ -0,0 +1,76 @@ +{ + "culture": "cs", + "texts": { + "Menu:IdentityManagement": "Správa identit", + "Users": "Uživatelé", + "NewUser": "Nový uživatel", + "UserName": "Uživatelské jméno", + "EmailAddress": "Email", + "PhoneNumber": "Telefonní číslo", + "UserInformations": "Uživatelské informace", + "DisplayName:IsDefault": "Výchozí", + "DisplayName:IsStatic": "Statické", + "DisplayName:IsPublic": "Veřejné", + "Roles": "Role", + "Password": "Heslo", + "PersonalInfo": "Můj profil", + "PersonalSettings": "Osobní nastavení", + "UserDeletionConfirmationMessage": "Uživatel '{0}' bude smazán. Jste si jistí?", + "RoleDeletionConfirmationMessage": "Role '{0}' bude smazána. Jste si jistí?", + "DisplayName:RoleName": "Název role", + "DisplayName:UserName": "Uživatelské jméno", + "DisplayName:Name": "Jméno", + "DisplayName:Surname": "Příjmení", + "DisplayName:Password": "Heslo", + "DisplayName:Email": "Email", + "DisplayName:PhoneNumber": "Telefonní číslo", + "DisplayName:TwoFactorEnabled": "Dvoufázové ověřování", + "DisplayName:LockoutEnabled": "Zamčení účtu po neúspěšných pokusech", + "NewRole": "Nová role", + "RoleName": "Název role", + "CreationTime": "Vytvořeno", + "Permissions": "Oprávnění", + "DisplayName:CurrentPassword": "Stávající heslo", + "DisplayName:NewPassword": "Nové heslo", + "DisplayName:NewPasswordConfirm": "Potvrzení nového hesla", + "PasswordChangedMessage": "Vaše heslo bylo úspěšně změněno.", + "PersonalSettingsSavedMessage": "Vaše osobní nastavení bylo úspěšně uloženo.", + "Identity.DefaultError": "Došlo k neznámé chybě.", + "Identity.ConcurrencyFailure": "Selhání optimistické souběžnosti, objekt byl změněn.", + "Identity.DuplicateEmail": "Email '{0}' již existuje.", + "Identity.DuplicateRoleName": "Role '{0}' již existuje.", + "Identity.DuplicateUserName": "Uživatelské jméno '{0}' již existuje.", + "Identity.InvalidEmail": "Email '{0}' je neplatný.", + "Identity.InvalidPasswordHasherCompatibilityMode": "Dodaný PasswordHasherCompatibilityMode je neplatný.", + "Identity.InvalidPasswordHasherIterationCount": "Počet iterací musí být kladné celé číslo.", + "Identity.InvalidRoleName": "Role '{0}' je neplatná.", + "Identity.InvalidToken": "Neplatný token.", + "Identity.InvalidUserName": "Uživatelské jméno '{0}' je neplatné, může obsahovat pouze písmena a číslice.", + "Identity.LoginAlreadyAssociated": "Uživatel s tímto přihlášením již existuje.", + "Identity.PasswordMismatch": "Chybné heslo.", + "Identity.PasswordRequiresDigit": "Hesla musí obsahovat alespoň jednu číslici ('0'-'9').", + "Identity.PasswordRequiresLower": "Hesla musí obsahovat alespoň jedno malé písmeno ('a'-'z').", + "Identity.PasswordRequiresNonAlphanumeric": "Hesla musí obsahovat alespoň jeden nealfanumerický znak.", + "Identity.PasswordRequiresUpper": "Hesla musí obsahovat alespoň jedno velké písmeno ('A'-'Z').", + "Identity.PasswordTooShort": "Hesla musí být dlouhá alespoň {0} znaků.", + "Identity.RoleNotFound": "Role {0} neexistuje.", + "Identity.UserAlreadyHasPassword": "Uživatel již má nastavené heslo.", + "Identity.UserAlreadyInRole": "Uživatel již je v roli '{0}'.", + "Identity.UserLockedOut": "Uživatel je uzamčen.", + "Identity.UserLockoutNotEnabled": "Uzamčení není umožněno pro tohoto uživatele.", + "Identity.UserNameNotFound": "Uživatel {0} neexistuje.", + "Identity.UserNotInRole": "Uživatel není v roli '{0}'.", + "Identity.PasswordConfirmationFailed": "Heslo nesouhlasí s potvrzovacím heslem.", + "Identity.StaticRoleRenamingErrorMessage": "Statické role nemohou být přejmenovány.", + "Identity.StaticRoleDeletionErrorMessage": "Statické role nemohou být smazány.", + "Volo.Abp.Identity:010001": "Nemůžete smazat svůj vlastní účet!", + "Permission:IdentityManagement": "Správa identit", + "Permission:RoleManagement": "Správa rolí", + "Permission:Create": "Vytvořit", + "Permission:Edit": "Upravit", + "Permission:Delete": "Smazat", + "Permission:ChangePermissions": "Změnit oprávnění", + "Permission:UserManagement": "Správa uživatelů", + "Permission:UserLookup": "Vyhledání uživatele" + } +} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json new file mode 100644 index 00000000000..5b5927b9a14 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json @@ -0,0 +1,76 @@ +{ + "culture": "en", + "texts": { + "Menu:IdentityManagement": "Identity management", + "Users": "Users", + "NewUser": "New user", + "UserName": "User name", + "EmailAddress": "Email address", + "PhoneNumber": "Phone number", + "UserInformations": "User informations", + "DisplayName:IsDefault": "Default", + "DisplayName:IsStatic": "Static", + "DisplayName:IsPublic": "Public", + "Roles": "Roles", + "Password": "Password", + "PersonalInfo": "My profile", + "PersonalSettings": "Personal settings", + "UserDeletionConfirmationMessage": "User '{0}' will be deleted. Do you confirm that?", + "RoleDeletionConfirmationMessage": "Role '{0}' will be deleted. Do you confirm that?", + "DisplayName:RoleName": "Role name", + "DisplayName:UserName": "User name", + "DisplayName:Name": "Name", + "DisplayName:Surname": "Surname", + "DisplayName:Password": "Password", + "DisplayName:Email": "Email address", + "DisplayName:PhoneNumber": "Phone number", + "DisplayName:TwoFactorEnabled": "Two factor verification", + "DisplayName:LockoutEnabled": "Locking account after failed login attempts", + "NewRole": "New role", + "RoleName": "Role name", + "CreationTime": "Creation time", + "Permissions": "Permissions", + "DisplayName:CurrentPassword": "Current password", + "DisplayName:NewPassword": "New password", + "DisplayName:NewPasswordConfirm": "Confirm new password", + "PasswordChangedMessage": "Your password has been changed successfully.", + "PersonalSettingsSavedMessage": "Your personal settings has been saved successfully.", + "Identity.DefaultError": "An unknown failure has occurred.", + "Identity.ConcurrencyFailure": "Optimistic concurrency failure, object has been modified.", + "Identity.DuplicateEmail": "Email '{0}' is already taken.", + "Identity.DuplicateRoleName": "Role name '{0}' is already taken.", + "Identity.DuplicateUserName": "User name '{0}' is already taken.", + "Identity.InvalidEmail": "Email '{0}' is invalid.", + "Identity.InvalidPasswordHasherCompatibilityMode": "The provided PasswordHasherCompatibilityMode is invalid.", + "Identity.InvalidPasswordHasherIterationCount": "The iteration count must be a positive integer.", + "Identity.InvalidRoleName": "Role name '{0}' is invalid.", + "Identity.InvalidToken": "Invalid token.", + "Identity.InvalidUserName": "User name '{0}' is invalid, can only contain letters or digits.", + "Identity.LoginAlreadyAssociated": "A user with this login already exists.", + "Identity.PasswordMismatch": "Incorrect password.", + "Identity.PasswordRequiresDigit": "Passwords must have at least one digit ('0'-'9').", + "Identity.PasswordRequiresLower": "Passwords must have at least one lowercase ('a'-'z').", + "Identity.PasswordRequiresNonAlphanumeric": "Passwords must have at least one non alphanumeric character.", + "Identity.PasswordRequiresUpper": "Passwords must have at least one uppercase ('A'-'Z').", + "Identity.PasswordTooShort": "Passwords must be at least {0} characters.", + "Identity.RoleNotFound": "Role {0} does not exist.", + "Identity.UserAlreadyHasPassword": "User already has a password set.", + "Identity.UserAlreadyInRole": "User already in role '{0}'.", + "Identity.UserLockedOut": "User is locked out.", + "Identity.UserLockoutNotEnabled": "Lockout is not enabled for this user.", + "Identity.UserNameNotFound": "User {0} does not exist.", + "Identity.UserNotInRole": "User is not in role '{0}'.", + "Identity.PasswordConfirmationFailed": "Password does not match the confirm password.", + "Identity.StaticRoleRenamingErrorMessage": "Static roles can not be renamed.", + "Identity.StaticRoleDeletionErrorMessage": "Static roles can not be deleted.", + "Volo.Abp.Identity:010001": "You can not delete your own account!", + "Permission:IdentityManagement": "Identity management", + "Permission:RoleManagement": "Role management", + "Permission:Create": "Create", + "Permission:Edit": "Edit", + "Permission:Delete": "Delete", + "Permission:ChangePermissions": "Change permissions", + "Permission:UserManagement": "User management", + "Permission:UserLookup": "User lookup" + } +} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl.json new file mode 100644 index 00000000000..3a0896147c4 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl.json @@ -0,0 +1,76 @@ +{ + "culture": "pl", + "texts": { + "Menu:IdentityManagement": "Zarządzanie tożsamością", + "Users": "Użytkownicy", + "NewUser": "Nowy użytkownik", + "UserName": "Nazwa użytkownika", + "EmailAddress": "Adres email", + "PhoneNumber": "Numer telefonu", + "UserInformations": "Notyfikacje użytkownika", + "DisplayName:IsDefault": "Domyślny", + "DisplayName:IsStatic": "Statyczny", + "DisplayName:IsPublic": "Publiczny", + "Roles": "Role", + "Password": "Hasło", + "PersonalInfo": "Mój profil", + "PersonalSettings": "Ustawienia personalne", + "UserDeletionConfirmationMessage": "Użytkownik '{0}' zostanie usunięty. Czy na pewno?", + "RoleDeletionConfirmationMessage": "Rola '{0}' zostanie usunięta. Czy na pewno?", + "DisplayName:RoleName": "Nazwa roli", + "DisplayName:UserName": "Nazwa użytkownika", + "DisplayName:Name": "Imię", + "DisplayName:Surname": "Nazwisko", + "DisplayName:Password": "Hasło", + "DisplayName:Email": "Adres email", + "DisplayName:PhoneNumber": "Numer telefonu", + "DisplayName:TwoFactorEnabled": "Dwustopniowa weryfikacja", + "DisplayName:LockoutEnabled": "Blokowanie konta po nieudanych próbach zalogowania", + "NewRole": "Nowa rola", + "RoleName": "Nazwa roli", + "CreationTime": "Data utworzenia", + "Permissions": "Uprawnienia", + "DisplayName:CurrentPassword": "Aktualne hasło", + "DisplayName:NewPassword": "Nowe hasło", + "DisplayName:NewPasswordConfirm": "Powtierdź nowe hasło", + "PasswordChangedMessage": "Twoje hasło zostało zmienione pomyślnie.", + "PersonalSettingsSavedMessage": "Twoje personalne ustawienia zostały zapisane pomyślnie.", + "Identity.DefaultError": "Wystąpił niespodziewany błąd.", + "Identity.ConcurrencyFailure": "Optymistyczny błąd współbierzności, obiekt został zmodyfikowany.", + "Identity.DuplicateEmail": "Email '{0}' już istnieje.", + "Identity.DuplicateRoleName": "Rola '{0}' już istnieje.", + "Identity.DuplicateUserName": "Nazwa użytkownika '{0}' już istnieje.", + "Identity.InvalidEmail": "Email '{0}' jest niepoprawny.", + "Identity.InvalidPasswordHasherCompatibilityMode": "Dostawca PasswordHasherCompatibilityMode jest niepoprawny.", + "Identity.InvalidPasswordHasherIterationCount": "Wartość iteracji musi być większa od zera.", + "Identity.InvalidRoleName": "Rola '{0}' jest niepoprawna.", + "Identity.InvalidToken": "Niepoprawny token.", + "Identity.InvalidUserName": "Nazwa użytkownika '{0}' jest niepoprawna, może zawierać tylko litery i cyfry.", + "Identity.LoginAlreadyAssociated": "Użytkownik o tym loginie już istnieje.", + "Identity.PasswordMismatch": "Niepoprawne hasło.", + "Identity.PasswordRequiresDigit": "Hasło musi zawierać przynajmniej jedną cyfrę ('0'-'9').", + "Identity.PasswordRequiresLower": "Hasło musi zawierać przynajmniej jedną małą literę ('a'-'z').", + "Identity.PasswordRequiresNonAlphanumeric": "Hasło musi zawierać przynajmniej jeden znak alfanumeryczny.", + "Identity.PasswordRequiresUpper": "Hasło musi zawierać przynajmniej jedną wielką literę ('A'-'Z').", + "Identity.PasswordTooShort": "Hasło musi zawierać przynajmnie {0} znaków.", + "Identity.RoleNotFound": "Rola {0} nie istnieje.", + "Identity.UserAlreadyHasPassword": "Użytkownik ma już ustawione hasło.", + "Identity.UserAlreadyInRole": "Użytkownik jest już przypisany do roli '{0}'.", + "Identity.UserLockedOut": "Użytkownik jest zablokowany.", + "Identity.UserLockoutNotEnabled": "Blokada nie jest włączona dla tego użytkownika.", + "Identity.UserNameNotFound": "Użytkownik {0} nie istnieje.", + "Identity.UserNotInRole": "Użytkownik nie posiada roli '{0}'.", + "Identity.PasswordConfirmationFailed": "Podane hasła różnią się od siebie.", + "Identity.StaticRoleRenamingErrorMessage": "Statyczna rola nie może mieć zmienionej nazwy.", + "Identity.StaticRoleDeletionErrorMessage": "Statyczna rola nie może zostać usunięta.", + "Volo.Abp.Identity:010001": "Nie możesz usunąć swojego własnego konta!", + "Permission:IdentityManagement": "Zarządzanie tożsamością", + "Permission:RoleManagement": "Zarządanie rolami", + "Permission:Create": "Utwórz", + "Permission:Edit": "Edytuj", + "Permission:Delete": "Usuń", + "Permission:ChangePermissions": "Zmień uprawnienia", + "Permission:UserManagement": "Zarządzanie użytkownikami", + "Permission:UserLookup": "Wyszukiwanie użytkownika" + } +} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json new file mode 100644 index 00000000000..4df719fffe7 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json @@ -0,0 +1,76 @@ +{ + "culture": "pt-BR", + "texts": { + "Menu:IdentityManagement": "Acessos", + "Users": "Usuários", + "NewUser": "Novo Usuário", + "UserName": "Usuário", + "EmailAddress": "E-mail", + "PhoneNumber": "Telefone", + "UserInformations": "Informações do Usuário", + "DisplayName:IsDefault": "Padrão", + "DisplayName:IsStatic": "Estático", + "DisplayName:IsPublic": "Público", + "Roles": "Perfis", + "Password": "Senha", + "PersonalInfo": "Meu Perfil", + "PersonalSettings": "Configurações Pessoais", + "UserDeletionConfirmationMessage": "O Usuário '{0}' será excluído. Você tem certeza?", + "RoleDeletionConfirmationMessage": "O Perfil '{0}' será excluído. Você tem certeza?", + "DisplayName:RoleName": "Perfil", + "DisplayName:UserName": "Usuário", + "DisplayName:Name": "Nome", + "DisplayName:Surname": "Sobrenome", + "DisplayName:Password": "Senha", + "DisplayName:Email": "E-mail", + "DisplayName:PhoneNumber": "Telefone", + "DisplayName:TwoFactorEnabled": "Verificação em dois fatores", + "DisplayName:LockoutEnabled": "Bloquear conta após falhas ao entrar", + "NewRole": "Novo Perfil", + "RoleName": "Perfil", + "CreationTime": "Data de Criação", + "Permissions": "Permissões", + "DisplayName:CurrentPassword": "Senha Atual", + "DisplayName:NewPassword": "Nova Senha", + "DisplayName:NewPasswordConfirm": "Confirmar nova senha", + "PasswordChangedMessage": "Sua senha foi alterada com sucesso.", + "PersonalSettingsSavedMessage": "Suas configurações pessoais foram salvas com sucesso.", + "Identity.DefaultError": "Ocorreu uma falha desconhecida.", + "Identity.ConcurrencyFailure": "Falha de concorrência otimista, o objeto foi modificado.", + "Identity.DuplicateEmail": "O e-mail '{0}' já está em uso.", + "Identity.DuplicateRoleName": "O nome de perfil '{0}' já está em uso.", + "Identity.DuplicateUserName": "O usuário '{0}' já está em uso.", + "Identity.InvalidEmail": "E-mail '{0}' inválido.", + "Identity.InvalidPasswordHasherCompatibilityMode": "O PasswordHasherCompatibilityMode é inválido.", + "Identity.InvalidPasswordHasherIterationCount": "A contagem de iterações deve ser um inteiro positivo.", + "Identity.InvalidRoleName": "Perfil '{0}' inválido.", + "Identity.InvalidToken": "Token inválido.", + "Identity.InvalidUserName": "Usuário '{0}' é inválido, somente pode conter letras ou números.", + "Identity.LoginAlreadyAssociated": "Um usuário com este login já existe.", + "Identity.PasswordMismatch": "Senha incorreta.", + "Identity.PasswordRequiresDigit": "Senhas devem possuir pelo menos um dígito ('0'-'9').", + "Identity.PasswordRequiresLower": "Senhas devem possuir pelo menos uma letra minúscula ('a'-'z').", + "Identity.PasswordRequiresNonAlphanumeric": "Senhas devem possuir pelo menos um caractere especial.", + "Identity.PasswordRequiresUpper": "Senhas devem possuir pelo menos uma letra maiúscula ('A'-'Z').", + "Identity.PasswordTooShort": "Senhas devem possuir pelo menos {0} caracteres.", + "Identity.RoleNotFound": "Perfil {0} não existe.", + "Identity.UserAlreadyHasPassword": "O usuário já possui uma senha.", + "Identity.UserAlreadyInRole": "Usuário já possui o perfil '{0}'.", + "Identity.UserLockedOut": "O usuário está bloqueado.", + "Identity.UserLockoutNotEnabled": "Este usuário não pode ser bloqueado.", + "Identity.UserNameNotFound": "Usuário {0} não existe.", + "Identity.UserNotInRole": "Usuário não está no perfil '{0}'.", + "Identity.PasswordConfirmationFailed": "A senha não confere com a confirmação de senha.", + "Identity.StaticRoleRenamingErrorMessage": "Perfis estáticos não podem ser renomeados.", + "Identity.StaticRoleDeletionErrorMessage": "Perfis estáticos não podem ser excluídos.", + "Volo.Abp.Identity:010001": "Você não pode deletar sua própria conta!", + "Permission:IdentityManagement": "Acessos", + "Permission:RoleManagement": "Perfis", + "Permission:Create": "Criar", + "Permission:Edit": "Editar", + "Permission:Delete": "Excluir", + "Permission:ChangePermissions": "Alterar Permissões", + "Permission:UserManagement": "Usuários", + "Permission:UserLookup": "Pesquisa de usuário" + } +} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json new file mode 100644 index 00000000000..8b8b936c0af --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json @@ -0,0 +1,76 @@ +{ + "culture": "tr", + "texts": { + "Menu:IdentityManagement": "Kimlik yönetimi", + "Users": "Kullanıcılar", + "NewUser": "Yeni kullanıcı", + "UserName": "Kullanıcı adı", + "EmailAddress": "E-posta adresi", + "DisplayName:IsDefault": "Varsayılan", + "DisplayName:IsStatic": "Sabit", + "DisplayName:IsPublic": "Herkese Açık", + "PhoneNumber": "Telefon numarası", + "UserInformations": "Kullanıcı bilgileri", + "Roles": "Roller", + "Password": "Şifre", + "PersonalInfo": "Profilim", + "PersonalSettings": "Kişisel Ayarlar", + "UserDeletionConfirmationMessage": "{0} kullanıcısı silinecektir. Onaylıyor musunuz?", + "RoleDeletionConfirmationMessage": "'{0}' rolü silinecektir. Onaylıyor musunuz?", + "DisplayName:RoleName": "Rol adı", + "DisplayName:UserName": "Kullanıcı adı", + "DisplayName:Name": "Adı", + "DisplayName:Surname": "Soyadı", + "DisplayName:Password": "Şifre", + "DisplayName:Email": "E-posta adresi", + "DisplayName:PhoneNumber": "Telefon numarası", + "DisplayName:TwoFactorEnabled": "İki aşamalı doğrulama", + "DisplayName:LockoutEnabled": "Başarısız giriş denemeleri sonrası hesabı kilitleme", + "NewRole": "Yeni rol", + "RoleName": "Rol adı", + "CreationTime": "Oluşturma zamanı", + "Permissions": "İzinler", + "DisplayName:CurrentPassword": "Mevcut şifre", + "DisplayName:NewPassword": "Yeni şifre", + "DisplayName:NewPasswordConfirm": "Yeni şifre (tekrar)", + "PasswordChangedMessage": "Şifreniz başarıyla değiştirildi.", + "PersonalSettingsSavedMessage": "Kişisel bilgileriniz başarıyla kaydedildi.", + "Identity.StaticRoleRenamingErrorMessage": "Bir Sabit rolün ismi değiştirilemez.", + "Identity.StaticRoleDeletionErrorMessage": "Bir Sabit rol silinemez.", + "Identity.DefaultError": "Bilinmeyen bir hata oluştu.", + "Identity.ConcurrencyFailure": "İyimser eşzamanlılık hatası. Nesne değiştirilmiş.", + "Identity.DuplicateEmail": "'{0}' email adresi zaten alınmış.", + "Identity.DuplicateRoleName": "'{0}' rol ismi zaten alınmış.", + "Identity.DuplicateUserName": "'{0}' kullanıcı adı zaten alınmış.", + "Identity.InvalidEmail": "'{0}' email adresi hatalı.", + "Identity.InvalidPasswordHasherCompatibilityMode": "Belirtilen PasswordHasherCompatibilityMode geçersiz.", + "Identity.InvalidPasswordHasherIterationCount": "Iterasyon sayısı sıfırdan büyük bir sayı olmalı.", + "Identity.InvalidRoleName": "'{0}' rol ismi geçersizdir.", + "Identity.InvalidToken": "Geçersiz token.", + "Identity.InvalidUserName": "'{0}' kullanıcı adı geçersiz, sadece harf ve rakamlardan oluşmalı.", + "Identity.LoginAlreadyAssociated": "Bu giriş bilgilerine sahip bir kullanıcı zaten var.", + "Identity.PasswordMismatch": "Hatalı şifre.", + "Identity.PasswordRequiresDigit": "Şifre en az bir sayı içermeli ('0'-'9').", + "Identity.PasswordRequiresLower": "Şifre en az bir küçük harf içermeli ('a'-'z').", + "Identity.PasswordRequiresNonAlphanumeric": "Şifre en az bir sayı ya da harf olmayan karakter içermeli.", + "Identity.PasswordRequiresUpper": "Şifre en az bir büyük harf içermeli ('A'-'Z').", + "Identity.PasswordTooShort": "Şifre en az {0} karakter uzunluğunda olmalı.", + "Identity.RoleNotFound": "{0} rolü bulunamadı.", + "Identity.UserAlreadyHasPassword": "Kullanıcının zaten bir şifresi var.", + "Identity.UserAlreadyInRole": "Kullanıcı zaten '{0}' rolünde.", + "Identity.UserLockedOut": "Kullanıcı hesabı kilitlenmiş.", + "Identity.UserLockoutNotEnabled": "Bu kullanıcı için hesap kilitleme etkin değil.", + "Identity.UserNameNotFound": "{0} kullanıcısı bulunamadı.", + "Identity.UserNotInRole": "Kullanıcı '{0}' rolünde değil.", + "Identity.PasswordConfirmationFailed": "Yeni şifre ile onay şifresi uyuşmuyor.", + "Volo.Abp.Identity:010001": "Kendi hesabınızı silemezsiniz!", + "Permission:IdentityManagement": "Kimlik yönetimi", + "Permission:RoleManagement": "Rol yönetimi", + "Permission:Create": "Oluşturma", + "Permission:Edit": "Düzenleme", + "Permission:Delete": "Silme", + "Permission:ChangePermissions": "İzinleri değiştirme", + "Permission:UserManagement": "Kullanıcı yönetimi", + "Permission:UserLookup": "Kullanıcı sorgulama" + } +} diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json new file mode 100644 index 00000000000..64690959b75 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json @@ -0,0 +1,76 @@ +{ + "culture": "vi", + "texts": { + "Menu:IdentityManagement": "Quản lý danh tính", + "Users": "Người dùng", + "NewUser": "Tạo người dùng mới", + "UserName": "Tên đăng nhập", + "EmailAddress": "Địa chỉ email", + "PhoneNumber": "Số điện thoại", + "UserInformations": "Thông tin người dùng", + "DisplayName:IsDefault": "Mặc định", + "DisplayName:IsStatic": "Cố định", + "DisplayName:IsPublic": "Công khai", + "Roles": "Vai trò", + "Password": "Mật khẩu", + "PersonalInfo": "Thông tin của tôi", + "PersonalSettings": "Thiết lập cá nhân", + "UserDeletionConfirmationMessage": "Người '{0}' sẽ bị xóa. Bạn có xác nhận điều này không?", + "RoleDeletionConfirmationMessage": "vai trò '{0}' sẽ bị xóa. Bạn có xác nhận điều này không?", + "DisplayName:RoleName": "Tên vai trò", + "DisplayName:UserName": "Tên người dùng", + "DisplayName:Name": "Tên", + "DisplayName:Surname": "Họ", + "DisplayName:Password": "mật khẩu", + "DisplayName:Email": "Địa chỉ email", + "DisplayName:PhoneNumber": "Số điện thoại", + "DisplayName:TwoFactorEnabled": "Xác thực hai yếu tố", + "DisplayName:LockoutEnabled": "Khóa tài khoản sau những lần đăng nhập thất bại", + "NewRole": "Vai trò mới", + "RoleName": "Tên vai trò", + "CreationTime": "Thời gian tạo", + "Permissions": "Quyền", + "DisplayName:CurrentPassword": "Mật khẩu hiện tại", + "DisplayName:NewPassword": "Mật khẩu mới", + "DisplayName:NewPasswordConfirm": "Xác nhận mật khẩu", + "PasswordChangedMessage": "Mật khẩu của bạn đã được thay đổi thành công.", + "PersonalSettingsSavedMessage": "Thiết lập của bạn đã được lưu lại thành công.", + "Identity.DefaultError": "Một thất bại chưa biết đã xảy ra.", + "Identity.ConcurrencyFailure": "Thất bại đồng thời lạc quan, đối tượng đã được sửa đổi.", + "Identity.DuplicateEmail": "Email '{0}' đã được sử dụng.", + "Identity.DuplicateRoleName": "Tên vài trò '{0}' đã được sử dụng.", + "Identity.DuplicateUserName": "User name '{0}' đã được sử dụng.", + "Identity.InvalidEmail": "Email '{0}' Không hợp lệ.", + "Identity.InvalidPasswordHasherCompatibilityMode": "PasswordHasherCompatibilityMode được cung cấp không hợp lệ.", + "Identity.InvalidPasswordHasherIterationCount": "Số lần lặp phải là số nguyên dương.", + "Identity.InvalidRoleName": "Tên người dùng '{0}' Không hợp lệ.", + "Identity.InvalidToken": "Token không hợp lệ.", + "Identity.InvalidUserName": "Tên người dùng '{0}' không hợp lệ, chỉ có thể chứa chữ cái hoặc chữ số.", + "Identity.LoginAlreadyAssociated": "Một người dùng có thông tin đăng nhập này đã tồn tại.", + "Identity.PasswordMismatch": "Mật khẩu không đúng.", + "Identity.PasswordRequiresDigit": "Mật khẩu phải có ít nhất một chữ số ('0'-'9').", + "Identity.PasswordRequiresLower": "Mật khẩu phải có ít nhất một chữ thường ('a'-'z').", + "Identity.PasswordRequiresNonAlphanumeric": "Mật khẩu phải có ít nhất một ký tự không phải là chữ và số.", + "Identity.PasswordRequiresUpper": "Mật khẩu phải có ít nhất một chữ hoa ('A'-'Z').", + "Identity.PasswordTooShort": "Mật khẩu phải ít nhất {0} kí tự.", + "Identity.RoleNotFound": "Vai trò {0} không tồn tại.", + "Identity.UserAlreadyHasPassword": "Người dùng đã có một mật khẩu.", + "Identity.UserAlreadyInRole": "Người dùng đã có vai trò '{0}'.", + "Identity.UserLockedOut": "Người dùng bị khóa.", + "Identity.UserLockoutNotEnabled": "Khóa không được kích hoạt cho người dùng này.", + "Identity.UserNameNotFound": "Người dùng {0} không tồn tại.", + "Identity.UserNotInRole": "Người dùng không có vai trò '{0}'.", + "Identity.PasswordConfirmationFailed": "Mật khẩu không khớp với mật khẩu xác nhận.", + "Identity.StaticRoleRenamingErrorMessage": "Vai trò này là cố định không được phép đổi tên.", + "Identity.StaticRoleDeletionErrorMessage": "Vai trò này là cố định không được phép xóa.", + "Volo.Abp.Identity:010001": "Bạn không thể xóa tài khoản của riêng bạn!", + "Permission:IdentityManagement": "Quản lý danh tính", + "Permission:RoleManagement": "Quản lý vai trò", + "Permission:Create": "Tạo", + "Permission:Edit": "Sửa", + "Permission:Delete": "Xóa", + "Permission:ChangePermissions": "Thay đổi quyền", + "Permission:UserManagement": "Quản lý người dùng", + "Permission:UserLookup": "Tra cứu người dùng" + } +} diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json new file mode 100644 index 00000000000..732dc1aad05 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json @@ -0,0 +1,76 @@ +{ + "culture": "zh-Hans", + "texts": { + "Menu:IdentityManagement": "身份认证管理", + "Users": "用户", + "NewUser": "新用户", + "UserName": "用户名称", + "EmailAddress": "邮箱地址", + "PhoneNumber": "手机号", + "UserInformations": "用户信息", + "DisplayName:IsDefault": "默认", + "DisplayName:IsStatic": "静态", + "DisplayName:IsPublic": "公开", + "Roles": "角色", + "Password": "密码", + "PersonalInfo": " 个人信息", + "PersonalSettings": "个人设置", + "UserDeletionConfirmationMessage": "用户 '{0}' 将被删除. 你确定吗?", + "RoleDeletionConfirmationMessage": "角色 '{0}' 将被删除. 你确定吗?", + "DisplayName:RoleName": "角色名称", + "DisplayName:UserName": "用户名称", + "DisplayName:Name": "名", + "DisplayName:Surname": "姓", + "DisplayName:Password": "密码", + "DisplayName:Email": "邮箱地址", + "DisplayName:PhoneNumber": "手机号码", + "DisplayName:TwoFactorEnabled": "二次认证", + "DisplayName:LockoutEnabled": "登录失败,账户被锁定", + "NewRole": "新角色", + "RoleName": "角色名称", + "CreationTime": "创建时间", + "Permissions": "权限", + "DisplayName:CurrentPassword": "当前密码", + "DisplayName:NewPassword": "新密码", + "DisplayName:NewPasswordConfirm": "确认新密码", + "PasswordChangedMessage": "你已成功更改密码.", + "PersonalSettingsSavedMessage": "你的个人设置保存成功.", + "Identity.DefaultError": "发生了一个未知错误.", + "Identity.ConcurrencyFailure": "对象已被修改,乐观并发失败.", + "Identity.DuplicateEmail": "邮箱 '{0}' 已存在.", + "Identity.DuplicateRoleName": "角色名 '{0}' 已存在.", + "Identity.DuplicateUserName": "用户名 '{0}' 已存在.", + "Identity.InvalidEmail": "邮箱 '{0}' 无效.", + "Identity.InvalidPasswordHasherCompatibilityMode": "提供的 PasswordHasherCompatibilityMode 无效.", + "Identity.InvalidPasswordHasherIterationCount": "迭代计数必须是正整数.", + "Identity.InvalidRoleName": "角色名 '{0}' 无效.", + "Identity.InvalidToken": "token无效.", + "Identity.InvalidUserName": "用户名 '{0}' 无效, 只能包含字母或数字.", + "Identity.LoginAlreadyAssociated": "此登录名的用户已存在.", + "Identity.PasswordMismatch": "密码错误.", + "Identity.PasswordRequiresDigit": "密码至少包含一位数字 ('0'-'9').", + "Identity.PasswordRequiresLower": "密码至少包含一位小写字母 ('a'-'z').", + "Identity.PasswordRequiresNonAlphanumeric": "密码至少包含一位非字母数字字符.", + "Identity.PasswordRequiresUpper": "密码至少包含一位大写字母 ('A'-'Z').", + "Identity.PasswordTooShort": "密码至少为{0}个字符.", + "Identity.RoleNotFound": "角色 {0} 不存在.", + "Identity.UserAlreadyHasPassword": "用户已设置密码.", + "Identity.UserAlreadyInRole": "用户已具有角色 '{0}'.", + "Identity.UserLockedOut": "用户被锁定.", + "Identity.UserLockoutNotEnabled": "该用户未启用锁定.", + "Identity.UserNameNotFound": "用户 {0} 不存在.", + "Identity.UserNotInRole": "用户不具有 '{0}' 角色.", + "Identity.PasswordConfirmationFailed": "密码或确认密码不一致.", + "Identity.StaticRoleRenamingErrorMessage": "无法重命名静态角色.", + "Identity.StaticRoleDeletionErrorMessage": "无法删除静态角色.", + "Volo.Abp.Identity:010001": "您无法删除自己的帐户!", + "Permission:IdentityManagement": "身份标识管理", + "Permission:RoleManagement": "角色管理", + "Permission:Create": "创建", + "Permission:Edit": "编辑", + "Permission:Delete": "删除", + "Permission:ChangePermissions": "更改权限", + "Permission:UserManagement": "用户管理", + "Permission:UserLookup": "用户查询" + } + } \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj b/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj index 3bf35eedd1e..95036d9efbc 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj @@ -13,10 +13,6 @@ - - - - diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs index 0569eee563f..7080f9c406b 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs @@ -25,27 +25,6 @@ public class AbpIdentityDomainModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { - Configure(options => - { - options.FileSets.AddEmbedded(); - }); - - Configure(options => - { - options.Resources - .Get() - .AddVirtualJson("/Volo/Abp/Identity/Localization/Domain"); - }); - - Configure(options => - { - //options.Templates - // .Add( - // new EmailTemplateDefinition(IdentitySettingNames.User.EmailConfirmed, isLayout: true, layout: null) - // .SetVirtualFilePath("/Volo/Abp/Identity/Templates/default.html") - // ); - }); - Configure(options => { options.EtoMappings.Add(); diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/cs.json b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/cs.json deleted file mode 100644 index f6fdea467dd..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/cs.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "culture": "cs", - "texts": { - "Identity.DefaultError": "Došlo k neznámé chybě.", - "Identity.ConcurrencyFailure": "Selhání optimistické souběžnosti, objekt byl změněn.", - "Identity.DuplicateEmail": "Email '{0}' již existuje.", - "Identity.DuplicateRoleName": "Role '{0}' již existuje.", - "Identity.DuplicateUserName": "Uživatelské jméno '{0}' již existuje.", - "Identity.InvalidEmail": "Email '{0}' je neplatný.", - "Identity.InvalidPasswordHasherCompatibilityMode": "Dodaný PasswordHasherCompatibilityMode je neplatný.", - "Identity.InvalidPasswordHasherIterationCount": "Počet iterací musí být kladné celé číslo.", - "Identity.InvalidRoleName": "Role '{0}' je neplatná.", - "Identity.InvalidToken": "Neplatný token.", - "Identity.InvalidUserName": "Uživatelské jméno '{0}' je neplatné, může obsahovat pouze písmena a číslice.", - "Identity.LoginAlreadyAssociated": "Uživatel s tímto přihlášením již existuje.", - "Identity.PasswordMismatch": "Chybné heslo.", - "Identity.PasswordRequiresDigit": "Hesla musí obsahovat alespoň jednu číslici ('0'-'9').", - "Identity.PasswordRequiresLower": "Hesla musí obsahovat alespoň jedno malé písmeno ('a'-'z').", - "Identity.PasswordRequiresNonAlphanumeric": "Hesla musí obsahovat alespoň jeden nealfanumerický znak.", - "Identity.PasswordRequiresUpper": "Hesla musí obsahovat alespoň jedno velké písmeno ('A'-'Z').", - "Identity.PasswordTooShort": "Hesla musí být dlouhá alespoň {0} znaků.", - "Identity.RoleNotFound": "Role {0} neexistuje.", - "Identity.UserAlreadyHasPassword": "Uživatel již má nastavené heslo.", - "Identity.UserAlreadyInRole": "Uživatel již je v roli '{0}'.", - "Identity.UserLockedOut": "Uživatel je uzamčen.", - "Identity.UserLockoutNotEnabled": "Uzamčení není umožněno pro tohoto uživatele.", - "Identity.UserNameNotFound": "Uživatel {0} neexistuje.", - "Identity.UserNotInRole": "Uživatel není v roli '{0}'.", - "Identity.PasswordConfirmationFailed": "Heslo nesouhlasí s potvrzovacím heslem.", - "Identity.StaticRoleRenamingErrorMessage": "Statické role nemohou být přejmenovány.", - "Identity.StaticRoleDeletionErrorMessage": "Statické role nemohou být smazány." - } -} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/en.json b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/en.json deleted file mode 100644 index 6ecf7122c67..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/en.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "culture": "en", - "texts": { - "Identity.DefaultError": "An unknown failure has occurred.", - "Identity.ConcurrencyFailure": "Optimistic concurrency failure, object has been modified.", - "Identity.DuplicateEmail": "Email '{0}' is already taken.", - "Identity.DuplicateRoleName": "Role name '{0}' is already taken.", - "Identity.DuplicateUserName": "User name '{0}' is already taken.", - "Identity.InvalidEmail": "Email '{0}' is invalid.", - "Identity.InvalidPasswordHasherCompatibilityMode": "The provided PasswordHasherCompatibilityMode is invalid.", - "Identity.InvalidPasswordHasherIterationCount": "The iteration count must be a positive integer.", - "Identity.InvalidRoleName": "Role name '{0}' is invalid.", - "Identity.InvalidToken": "Invalid token.", - "Identity.InvalidUserName": "User name '{0}' is invalid, can only contain letters or digits.", - "Identity.LoginAlreadyAssociated": "A user with this login already exists.", - "Identity.PasswordMismatch": "Incorrect password.", - "Identity.PasswordRequiresDigit": "Passwords must have at least one digit ('0'-'9').", - "Identity.PasswordRequiresLower": "Passwords must have at least one lowercase ('a'-'z').", - "Identity.PasswordRequiresNonAlphanumeric": "Passwords must have at least one non alphanumeric character.", - "Identity.PasswordRequiresUpper": "Passwords must have at least one uppercase ('A'-'Z').", - "Identity.PasswordTooShort": "Passwords must be at least {0} characters.", - "Identity.RoleNotFound": "Role {0} does not exist.", - "Identity.UserAlreadyHasPassword": "User already has a password set.", - "Identity.UserAlreadyInRole": "User already in role '{0}'.", - "Identity.UserLockedOut": "User is locked out.", - "Identity.UserLockoutNotEnabled": "Lockout is not enabled for this user.", - "Identity.UserNameNotFound": "User {0} does not exist.", - "Identity.UserNotInRole": "User is not in role '{0}'.", - "Identity.PasswordConfirmationFailed": "Password does not match the confirm password.", - "Identity.StaticRoleRenamingErrorMessage": "Static roles can not be renamed.", - "Identity.StaticRoleDeletionErrorMessage": "Static roles can not be deleted." - } -} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/pl.json b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/pl.json deleted file mode 100644 index 7a1011ef96f..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/pl.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "culture": "pl", - "texts": { - "Identity.DefaultError": "Wystąpił niespodziewany błąd.", - "Identity.ConcurrencyFailure": "Optymistyczny błąd współbierzności, obiekt został zmodyfikowany.", - "Identity.DuplicateEmail": "Email '{0}' już istnieje.", - "Identity.DuplicateRoleName": "Rola '{0}' już istnieje.", - "Identity.DuplicateUserName": "Nazwa użytkownika '{0}' już istnieje.", - "Identity.InvalidEmail": "Email '{0}' jest niepoprawny.", - "Identity.InvalidPasswordHasherCompatibilityMode": "Dostawca PasswordHasherCompatibilityMode jest niepoprawny.", - "Identity.InvalidPasswordHasherIterationCount": "Wartość iteracji musi być większa od zera.", - "Identity.InvalidRoleName": "Rola '{0}' jest niepoprawna.", - "Identity.InvalidToken": "Niepoprawny token.", - "Identity.InvalidUserName": "Nazwa użytkownika '{0}' jest niepoprawna, może zawierać tylko litery i cyfry.", - "Identity.LoginAlreadyAssociated": "Użytkownik o tym loginie już istnieje.", - "Identity.PasswordMismatch": "Niepoprawne hasło.", - "Identity.PasswordRequiresDigit": "Hasło musi zawierać przynajmniej jedną cyfrę ('0'-'9').", - "Identity.PasswordRequiresLower": "Hasło musi zawierać przynajmniej jedną małą literę ('a'-'z').", - "Identity.PasswordRequiresNonAlphanumeric": "Hasło musi zawierać przynajmniej jeden znak alfanumeryczny.", - "Identity.PasswordRequiresUpper": "Hasło musi zawierać przynajmniej jedną wielką literę ('A'-'Z').", - "Identity.PasswordTooShort": "Hasło musi zawierać przynajmnie {0} znaków.", - "Identity.RoleNotFound": "Rola {0} nie istnieje.", - "Identity.UserAlreadyHasPassword": "Użytkownik ma już ustawione hasło.", - "Identity.UserAlreadyInRole": "Użytkownik jest już przypisany do roli '{0}'.", - "Identity.UserLockedOut": "Użytkownik jest zablokowany.", - "Identity.UserLockoutNotEnabled": "Blokada nie jest włączona dla tego użytkownika.", - "Identity.UserNameNotFound": "Użytkownik {0} nie istnieje.", - "Identity.UserNotInRole": "Użytkownik nie posiada roli '{0}'.", - "Identity.PasswordConfirmationFailed": "Podane hasła różnią się od siebie.", - "Identity.StaticRoleRenamingErrorMessage": "Statyczna rola nie może mieć zmienionej nazwy.", - "Identity.StaticRoleDeletionErrorMessage": "Statyczna rola nie może zostać usunięta." - } -} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/pt-BR.json b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/pt-BR.json deleted file mode 100644 index 6b0f7949e2e..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/pt-BR.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "culture": "pt-BR", - "texts": { - "Identity.DefaultError": "Ocorreu uma falha desconhecida.", - "Identity.ConcurrencyFailure": "Falha de concorrência otimista, o objeto foi modificado.", - "Identity.DuplicateEmail": "O e-mail '{0}' já está em uso.", - "Identity.DuplicateRoleName": "O nome de perfil '{0}' já está em uso.", - "Identity.DuplicateUserName": "O usuário '{0}' já está em uso.", - "Identity.InvalidEmail": "E-mail '{0}' inválido.", - "Identity.InvalidPasswordHasherCompatibilityMode": "O PasswordHasherCompatibilityMode é inválido.", - "Identity.InvalidPasswordHasherIterationCount": "A contagem de iterações deve ser um inteiro positivo.", - "Identity.InvalidRoleName": "Perfil '{0}' inválido.", - "Identity.InvalidToken": "Token inválido.", - "Identity.InvalidUserName": "Usuário '{0}' é inválido, somente pode conter letras ou números.", - "Identity.LoginAlreadyAssociated": "Um usuário com este login já existe.", - "Identity.PasswordMismatch": "Senha incorreta.", - "Identity.PasswordRequiresDigit": "Senhas devem possuir pelo menos um dígito ('0'-'9').", - "Identity.PasswordRequiresLower": "Senhas devem possuir pelo menos uma letra minúscula ('a'-'z').", - "Identity.PasswordRequiresNonAlphanumeric": "Senhas devem possuir pelo menos um caractere especial.", - "Identity.PasswordRequiresUpper": "Senhas devem possuir pelo menos uma letra maiúscula ('A'-'Z').", - "Identity.PasswordTooShort": "Senhas devem possuir pelo menos {0} caracteres.", - "Identity.RoleNotFound": "Perfil {0} não existe.", - "Identity.UserAlreadyHasPassword": "O usuário já possui uma senha.", - "Identity.UserAlreadyInRole": "Usuário já possui o perfil '{0}'.", - "Identity.UserLockedOut": "O usuário está bloqueado.", - "Identity.UserLockoutNotEnabled": "Este usuário não pode ser bloqueado.", - "Identity.UserNameNotFound": "Usuário {0} não existe.", - "Identity.UserNotInRole": "Usuário não está no perfil '{0}'.", - "Identity.PasswordConfirmationFailed": "A senha não confere com a confirmação de senha.", - "Identity.StaticRoleRenamingErrorMessage": "Perfis estáticos não podem ser renomeados.", - "Identity.StaticRoleDeletionErrorMessage": "Perfis estáticos não podem ser excluídos." - } -} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/tr.json b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/tr.json deleted file mode 100644 index 96cf510ff80..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/tr.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "culture": "tr", - "texts": { - "Identity.DefaultError": "Bilinmeyen bir hata oluştu.", - "Identity.ConcurrencyFailure": "İyimser eşzamanlılık hatası. Nesne değiştirilmiş.", - "Identity.DuplicateEmail": "'{0}' email adresi zaten alınmış.", - "Identity.DuplicateRoleName": "'{0}' rol ismi zaten alınmış.", - "Identity.DuplicateUserName": "'{0}' kullanıcı adı zaten alınmış.", - "Identity.InvalidEmail": "'{0}' email adresi hatalı.", - "Identity.InvalidPasswordHasherCompatibilityMode": "Belirtilen PasswordHasherCompatibilityMode geçersiz.", - "Identity.InvalidPasswordHasherIterationCount": "Iterasyon sayısı sıfırdan büyük bir sayı olmalı.", - "Identity.InvalidRoleName": "'{0}' rol ismi geçersizdir.", - "Identity.InvalidToken": "Geçersiz token.", - "Identity.InvalidUserName": "'{0}' kullanıcı adı geçersiz, sadece harf ve rakamlardan oluşmalı.", - "Identity.LoginAlreadyAssociated": "Bu giriş bilgilerine sahip bir kullanıcı zaten var.", - "Identity.PasswordMismatch": "Hatalı şifre.", - "Identity.PasswordRequiresDigit": "Şifre en az bir sayı içermeli ('0'-'9').", - "Identity.PasswordRequiresLower": "Şifre en az bir küçük harf içermeli ('a'-'z').", - "Identity.PasswordRequiresNonAlphanumeric": "Şifre en az bir sayı ya da harf olmayan karakter içermeli.", - "Identity.PasswordRequiresUpper": "Şifre en az bir büyük harf içermeli ('A'-'Z').", - "Identity.PasswordTooShort": "Şifre en az {0} karakter uzunluğunda olmalı.", - "Identity.RoleNotFound": "{0} rolü bulunamadı.", - "Identity.UserAlreadyHasPassword": "Kullanıcının zaten bir şifresi var.", - "Identity.UserAlreadyInRole": "Kullanıcı zaten '{0}' rolünde.", - "Identity.UserLockedOut": "Kullanıcı hesabı kilitlenmiş.", - "Identity.UserLockoutNotEnabled": "Bu kullanıcı için hesap kilitleme etkin değil.", - "Identity.UserNameNotFound": "{0} kullanıcısı bulunamadı.", - "Identity.UserNotInRole": "Kullanıcı '{0}' rolünde değil.", - "Identity.PasswordConfirmationFailed": "Yeni şifre ile onay şifresi uyuşmuyor." - } -} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/vi.json b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/vi.json deleted file mode 100644 index 7546865cfcb..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/vi.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "culture": "vi", - "texts": { - "Identity.DefaultError": "Một thất bại chưa biết đã xảy ra.", - "Identity.ConcurrencyFailure": "Thất bại đồng thời lạc quan, đối tượng đã được sửa đổi.", - "Identity.DuplicateEmail": "Email '{0}' đã được sử dụng.", - "Identity.DuplicateRoleName": "Tên vài trò '{0}' đã được sử dụng.", - "Identity.DuplicateUserName": "User name '{0}' đã được sử dụng.", - "Identity.InvalidEmail": "Email '{0}' Không hợp lệ.", - "Identity.InvalidPasswordHasherCompatibilityMode": "PasswordHasherCompatibilityMode được cung cấp không hợp lệ.", - "Identity.InvalidPasswordHasherIterationCount": "Số lần lặp phải là số nguyên dương.", - "Identity.InvalidRoleName": "Tên người dùng '{0}' Không hợp lệ.", - "Identity.InvalidToken": "Token không hợp lệ.", - "Identity.InvalidUserName": "Tên người dùng '{0}' không hợp lệ, chỉ có thể chứa chữ cái hoặc chữ số.", - "Identity.LoginAlreadyAssociated": "Một người dùng có thông tin đăng nhập này đã tồn tại.", - "Identity.PasswordMismatch": "Mật khẩu không đúng.", - "Identity.PasswordRequiresDigit": "Mật khẩu phải có ít nhất một chữ số ('0'-'9').", - "Identity.PasswordRequiresLower": "Mật khẩu phải có ít nhất một chữ thường ('a'-'z').", - "Identity.PasswordRequiresNonAlphanumeric": "Mật khẩu phải có ít nhất một ký tự không phải là chữ và số.", - "Identity.PasswordRequiresUpper": "Mật khẩu phải có ít nhất một chữ hoa ('A'-'Z').", - "Identity.PasswordTooShort": "Mật khẩu phải ít nhất {0} kí tự.", - "Identity.RoleNotFound": "Vai trò {0} không tồn tại.", - "Identity.UserAlreadyHasPassword": "Người dùng đã có một mật khẩu.", - "Identity.UserAlreadyInRole": "Người dùng đã có vai trò '{0}'.", - "Identity.UserLockedOut": "Người dùng bị khóa.", - "Identity.UserLockoutNotEnabled": "Khóa không được kích hoạt cho người dùng này.", - "Identity.UserNameNotFound": "Người dùng {0} không tồn tại.", - "Identity.UserNotInRole": "Người dùng không có vai trò '{0}'.", - "Identity.PasswordConfirmationFailed": "Mật khẩu không khớp với mật khẩu xác nhận.", - "Identity.StaticRoleRenamingErrorMessage": "Vai trò này là cố định không được phép đổi tên.", - "Identity.StaticRoleDeletionErrorMessage": "Vai trò này là cố định không được phép xóa." - } -} diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/zh-Hans.json b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/zh-Hans.json deleted file mode 100644 index cb285fc6eb6..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/zh-Hans.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "culture": "zh-Hans", - "texts": { - "Identity.DefaultError": "发生了一个未知错误.", - "Identity.ConcurrencyFailure": "对象已被修改,乐观并发失败.", - "Identity.DuplicateEmail": "邮箱 '{0}' 已存在.", - "Identity.DuplicateRoleName": "角色名 '{0}' 已存在.", - "Identity.DuplicateUserName": "用户名 '{0}' 已存在.", - "Identity.InvalidEmail": "邮箱 '{0}' 无效.", - "Identity.InvalidPasswordHasherCompatibilityMode": "提供的 PasswordHasherCompatibilityMode 无效.", - "Identity.InvalidPasswordHasherIterationCount": "迭代计数必须是正整数.", - "Identity.InvalidRoleName": "角色名 '{0}' 无效.", - "Identity.InvalidToken": "token无效.", - "Identity.InvalidUserName": "用户名 '{0}' 无效, 只能包含字母或数字.", - "Identity.LoginAlreadyAssociated": "此登录名的用户已存在.", - "Identity.PasswordMismatch": "密码错误.", - "Identity.PasswordRequiresDigit": "密码至少包含一位数字 ('0'-'9').", - "Identity.PasswordRequiresLower": "密码至少包含一位小写字母 ('a'-'z').", - "Identity.PasswordRequiresNonAlphanumeric": "密码至少包含一位非字母数字字符.", - "Identity.PasswordRequiresUpper": "密码至少包含一位大写字母 ('A'-'Z').", - "Identity.PasswordTooShort": "密码至少为{0}个字符.", - "Identity.RoleNotFound": "角色 {0} 不存在.", - "Identity.UserAlreadyHasPassword": "用户已设置密码.", - "Identity.UserAlreadyInRole": "用户已具有角色 '{0}'.", - "Identity.UserLockedOut": "用户被锁定.", - "Identity.UserLockoutNotEnabled": "该用户未启用锁定.", - "Identity.UserNameNotFound": "用户 {0} 不存在.", - "Identity.UserNotInRole": "用户不具有 '{0}' 角色.", - "Identity.PasswordConfirmationFailed": "密码或确认密码不一致.", - "Identity.StaticRoleRenamingErrorMessage": "无法重命名静态角色.", - "Identity.StaticRoleDeletionErrorMessage": "无法删除静态角色." - } - } \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/AbpIdentityHttpApiModule.cs b/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/AbpIdentityHttpApiModule.cs index a7ee084847e..6c451229426 100644 --- a/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/AbpIdentityHttpApiModule.cs +++ b/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/AbpIdentityHttpApiModule.cs @@ -1,11 +1,24 @@ using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Identity.Localization; +using Volo.Abp.Localization; using Volo.Abp.Modularity; +using Localization.Resources.AbpUi; namespace Volo.Abp.Identity { [DependsOn(typeof(AbpIdentityApplicationContractsModule), typeof(AbpAspNetCoreMvcModule))] public class AbpIdentityHttpApiModule : AbpModule { - + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes( + typeof(AbpUiResource) + ); + }); + } } } \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/IdentityRoleController.cs b/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/IdentityRoleController.cs index ca11d75f485..35ec928f5c0 100644 --- a/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/IdentityRoleController.cs +++ b/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/IdentityRoleController.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Volo.Abp.Application.Dtos; @@ -21,16 +20,16 @@ public IdentityRoleController(IIdentityRoleAppService roleAppService) } [HttpGet] - [Route("{id}")] - public virtual Task GetAsync(Guid id) + public virtual Task> GetListAsync() { - return _roleAppService.GetAsync(id); + return _roleAppService.GetListAsync(); } [HttpGet] - public virtual Task> GetListAsync(GetIdentityRolesInput input) + [Route("{id}")] + public virtual Task GetAsync(Guid id) { - return _roleAppService.GetListAsync(input); + return _roleAppService.GetAsync(id); } [HttpPost] @@ -52,12 +51,5 @@ public virtual Task DeleteAsync(Guid id) { return _roleAppService.DeleteAsync(id); } - - [HttpGet] - [Route("all")] - public virtual Task> GetAllListAsync() - { - return _roleAppService.GetAllListAsync(); - } } } diff --git a/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/ProfileController.cs b/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/ProfileController.cs index de05b9bdea1..a87af4eef61 100644 --- a/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/ProfileController.cs +++ b/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/ProfileController.cs @@ -31,9 +31,9 @@ public Task UpdateAsync(UpdateProfileDto input) [HttpPost] [Route("change-password")] - public Task ChangePasswordAsync(string currentPassword, string newPassword) + public Task ChangePasswordAsync(ChangePasswordInput input) { - return _profileAppService.ChangePasswordAsync(currentPassword, newPassword); + return _profileAppService.ChangePasswordAsync(input); } } } diff --git a/modules/identity/src/Volo.Abp.Identity.Web/AbpIdentityWebModule.cs b/modules/identity/src/Volo.Abp.Identity.Web/AbpIdentityWebModule.cs index be24e1b3bbe..072c8f3584e 100644 --- a/modules/identity/src/Volo.Abp.Identity.Web/AbpIdentityWebModule.cs +++ b/modules/identity/src/Volo.Abp.Identity.Web/AbpIdentityWebModule.cs @@ -45,16 +45,6 @@ public override void ConfigureServices(ServiceConfigurationContext context) options.FileSets.AddEmbedded("Volo.Abp.Identity.Web"); }); - Configure(options => - { - options.Resources - .Get() - .AddBaseTypes( - typeof(AbpValidationResource), - typeof(AbpUiResource) - ).AddVirtualJson("/Localization/Resources/AbpIdentity"); - }); - Configure(options => { options.AddProfile(validate: true); diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/cs.json b/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/cs.json deleted file mode 100644 index 30217206f48..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/cs.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "culture": "cs", - "texts": { - "Menu:IdentityManagement": "Správa identit", - "Users": "Uživatelé", - "NewUser": "Nový uživatel", - "UserName": "Uživatelské jméno", - "EmailAddress": "Email", - "PhoneNumber": "Telefonní číslo", - "UserInformations": "Uživatelské informace", - "DisplayName:IsDefault": "Výchozí", - "DisplayName:IsStatic": "Statické", - "DisplayName:IsPublic": "Veřejné", - "Roles": "Role", - "Password": "Heslo", - "PersonalInfo": "Můj profil", - "PersonalSettings": "Osobní nastavení", - "UserDeletionConfirmationMessage": "Uživatel '{0}' bude smazán. Jste si jistí?", - "RoleDeletionConfirmationMessage": "Role '{0}' bude smazána. Jste si jistí?", - "DisplayName:RoleName": "Název role", - "DisplayName:UserName": "Uživatelské jméno", - "DisplayName:Name": "Jméno", - "DisplayName:Surname": "Příjmení", - "DisplayName:Password": "Heslo", - "DisplayName:Email": "Email", - "DisplayName:PhoneNumber": "Telefonní číslo", - "DisplayName:TwoFactorEnabled": "Dvoufázové ověřování", - "DisplayName:LockoutEnabled": "Zamčení účtu po neúspěšných pokusech", - "NewRole": "Nová role", - "RoleName": "Název role", - "CreationTime": "Vytvořeno", - "Permissions": "Oprávnění", - "DisplayName:CurrentPassword": "Stávající heslo", - "DisplayName:NewPassword": "Nové heslo", - "DisplayName:NewPasswordConfirm": "Potvrzení nového hesla", - "PasswordChangedMessage": "Vaše heslo bylo úspěšně změněno.", - "PersonalSettingsSavedMessage": "Vaše osobní nastavení bylo úspěšně uloženo." - } -} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/en.json b/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/en.json deleted file mode 100644 index 9cb6ef2609d..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/en.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "culture": "en", - "texts": { - "Menu:IdentityManagement": "Identity management", - "Users": "Users", - "NewUser": "New user", - "UserName": "User name", - "EmailAddress": "Email address", - "PhoneNumber": "Phone number", - "UserInformations": "User informations", - "DisplayName:IsDefault": "Default", - "DisplayName:IsStatic": "Static", - "DisplayName:IsPublic": "Public", - "Roles": "Roles", - "Password": "Password", - "PersonalInfo": "My profile", - "PersonalSettings": "Personal settings", - "UserDeletionConfirmationMessage": "User '{0}' will be deleted. Do you confirm that?", - "RoleDeletionConfirmationMessage": "Role '{0}' will be deleted. Do you confirm that?", - "DisplayName:RoleName": "Role name", - "DisplayName:UserName": "User name", - "DisplayName:Name": "Name", - "DisplayName:Surname": "Surname", - "DisplayName:Password": "Password", - "DisplayName:Email": "Email address", - "DisplayName:PhoneNumber": "Phone number", - "DisplayName:TwoFactorEnabled": "Two factor verification", - "DisplayName:LockoutEnabled": "Locking account after failed login attempts", - "NewRole": "New role", - "RoleName": "Role name", - "CreationTime": "Creation time", - "Permissions": "Permissions", - "DisplayName:CurrentPassword": "Current password", - "DisplayName:NewPassword": "New password", - "DisplayName:NewPasswordConfirm": "Confirm new password", - "PasswordChangedMessage": "Your password has been changed successfully.", - "PersonalSettingsSavedMessage": "Your personal settings has been saved successfully." - } -} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/pl.json b/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/pl.json deleted file mode 100644 index 922e20b042d..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/pl.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "culture": "pl", - "texts": { - "Menu:IdentityManagement": "Zarządzanie tożsamością", - "Users": "Użytkownicy", - "NewUser": "Nowy użytkownik", - "UserName": "Nazwa użytkownika", - "EmailAddress": "Adres email", - "PhoneNumber": "Numer telefonu", - "UserInformations": "Notyfikacje użytkownika", - "DisplayName:IsDefault": "Domyślny", - "DisplayName:IsStatic": "Statyczny", - "DisplayName:IsPublic": "Publiczny", - "Roles": "Role", - "Password": "Hasło", - "PersonalInfo": "Mój profil", - "PersonalSettings": "Ustawienia personalne", - "UserDeletionConfirmationMessage": "Użytkownik '{0}' zostanie usunięty. Czy na pewno?", - "RoleDeletionConfirmationMessage": "Rola '{0}' zostanie usunięta. Czy na pewno?", - "DisplayName:RoleName": "Nazwa roli", - "DisplayName:UserName": "Nazwa użytkownika", - "DisplayName:Name": "Imię", - "DisplayName:Surname": "Nazwisko", - "DisplayName:Password": "Hasło", - "DisplayName:Email": "Adres email", - "DisplayName:PhoneNumber": "Numer telefonu", - "DisplayName:TwoFactorEnabled": "Dwustopniowa weryfikacja", - "DisplayName:LockoutEnabled": "Blokowanie konta po nieudanych próbach zalogowania", - "NewRole": "Nowa rola", - "RoleName": "Nazwa roli", - "CreationTime": "Data utworzenia", - "Permissions": "Uprawnienia", - "DisplayName:CurrentPassword": "Aktualne hasło", - "DisplayName:NewPassword": "Nowe hasło", - "DisplayName:NewPasswordConfirm": "Powtierdź nowe hasło", - "PasswordChangedMessage": "Twoje hasło zostało zmienione pomyślnie.", - "PersonalSettingsSavedMessage": "Twoje personalne ustawienia zostały zapisane pomyślnie." - } -} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/pt-BR.json b/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/pt-BR.json deleted file mode 100644 index 153b821b478..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/pt-BR.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "culture": "pt-BR", - "texts": { - "Menu:IdentityManagement": "Acessos", - "Users": "Usuários", - "NewUser": "Novo Usuário", - "UserName": "Usuário", - "EmailAddress": "E-mail", - "PhoneNumber": "Telefone", - "UserInformations": "Informações do Usuário", - "DisplayName:IsDefault": "Padrão", - "DisplayName:IsStatic": "Estático", - "DisplayName:IsPublic": "Público", - "Roles": "Perfis", - "Password": "Senha", - "PersonalInfo": "Meu Perfil", - "PersonalSettings": "Configurações Pessoais", - "UserDeletionConfirmationMessage": "O Usuário '{0}' será excluído. Você tem certeza?", - "RoleDeletionConfirmationMessage": "O Perfil '{0}' será excluído. Você tem certeza?", - "DisplayName:RoleName": "Perfil", - "DisplayName:UserName": "Usuário", - "DisplayName:Name": "Nome", - "DisplayName:Surname": "Sobrenome", - "DisplayName:Password": "Senha", - "DisplayName:Email": "E-mail", - "DisplayName:PhoneNumber": "Telefone", - "DisplayName:TwoFactorEnabled": "Verificação em dois fatores", - "DisplayName:LockoutEnabled": "Bloquear conta após falhas ao entrar", - "NewRole": "Novo Perfil", - "RoleName": "Perfil", - "CreationTime": "Data de Criação", - "Permissions": "Permissões", - "DisplayName:CurrentPassword": "Senha Atual", - "DisplayName:NewPassword": "Nova Senha", - "DisplayName:NewPasswordConfirm": "Confirmar nova senha", - "PasswordChangedMessage": "Sua senha foi alterada com sucesso.", - "PersonalSettingsSavedMessage": "Suas configurações pessoais foram salvas com sucesso." - } -} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/tr.json b/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/tr.json deleted file mode 100644 index aa0ef48843a..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/tr.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "culture": "tr", - "texts": { - "Menu:IdentityManagement": "Kimlik yönetimi", - "Users": "Kullanıcılar", - "NewUser": "Yeni kullanıcı", - "UserName": "Kullanıcı adı", - "EmailAddress": "E-posta adresi", - "DisplayName:IsDefault": "Varsayılan", - "DisplayName:IsStatic": "Sabit", - "DisplayName:IsPublic": "Herkese Açık", - "PhoneNumber": "Telefon numarası", - "UserInformations": "Kullanıcı bilgileri", - "Roles": "Roller", - "Password": "Şifre", - "PersonalInfo": "Profilim", - "PersonalSettings": "Kişisel Ayarlar", - "UserDeletionConfirmationMessage": "{0} kullanıcısı silinecektir. Onaylıyor musunuz?", - "RoleDeletionConfirmationMessage": "'{0}' rolü silinecektir. Onaylıyor musunuz?", - "DisplayName:RoleName": "Rol adı", - "DisplayName:UserName": "Kullanıcı adı", - "DisplayName:Name": "Adı", - "DisplayName:Surname": "Soyadı", - "DisplayName:Password": "Şifre", - "DisplayName:Email": "E-posta adresi", - "DisplayName:PhoneNumber": "Telefon numarası", - "DisplayName:TwoFactorEnabled": "İki aşamalı doğrumala", - "DisplayName:LockoutEnabled": "Başarısız giriş denemeleri sonrası hesabı kilitleme", - "NewRole": "Yeni rol", - "RoleName": "Rol adı", - "CreationTime": "Oluşturma zamanı", - "Permissions": "İzinler", - "DisplayName:CurrentPassword": "Mevcut şifre", - "DisplayName:NewPassword": "Yeni şifre", - "DisplayName:NewPasswordConfirm": "Yeni şifre (tekrar)", - "PasswordChangedMessage": "Şifreniz başarıyla değiştirildi.", - "PersonalSettingsSavedMessage": "Kişisel bilgileriniz başarıyla kaydedildi.", - "Identity.StaticRoleRenamingErrorMessage": "Bir Sabit rolün ismi değiştirilemez.", - "Identity.StaticRoleDeletionErrorMessage": "Bir Sabit rol silinemez." - } -} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/vi.json b/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/vi.json deleted file mode 100644 index b43484b0c84..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/vi.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "culture": "vi", - "texts": { - "Menu:IdentityManagement": "Quản lý danh tính", - "Users": "Người dùng", - "NewUser": "Tạo người dùng mới", - "UserName": "Tên đăng nhập", - "EmailAddress": "Địa chỉ email", - "PhoneNumber": "Số điện thoại", - "UserInformations": "Thông tin người dùng", - "DisplayName:IsDefault": "Mặc định", - "DisplayName:IsStatic": "Cố định", - "DisplayName:IsPublic": "Công khai", - "Roles": "Vai trò", - "Password": "Mật khẩu", - "PersonalInfo": "Thông tin của tôi", - "PersonalSettings": "Thiết lập cá nhân", - "UserDeletionConfirmationMessage": "Người '{0}' sẽ bị xóa. Bạn có xác nhận điều này không?", - "RoleDeletionConfirmationMessage": "vai trò '{0}' sẽ bị xóa. Bạn có xác nhận điều này không?", - "DisplayName:RoleName": "Tên vai trò", - "DisplayName:UserName": "Tên người dùng", - "DisplayName:Name": "Tên", - "DisplayName:Surname": "Họ", - "DisplayName:Password": "mật khẩu", - "DisplayName:Email": "Địa chỉ email", - "DisplayName:PhoneNumber": "Số điện thoại", - "DisplayName:TwoFactorEnabled": "Xác thực hai yếu tố", - "DisplayName:LockoutEnabled": "Khóa tài khoản sau những lần đăng nhập thất bại", - "NewRole": "Vai trò mới", - "RoleName": "Tên vai trò", - "CreationTime": "Thời gian tạo", - "Permissions": "Quyền", - "DisplayName:CurrentPassword": "Mật khẩu hiện tại", - "DisplayName:NewPassword": "Mật khẩu mới", - "DisplayName:NewPasswordConfirm": "Xác nhận mật khẩu", - "PasswordChangedMessage": "Mật khẩu của bạn đã được thay đổi thành công.", - "PersonalSettingsSavedMessage": "Thiết lập của bạn đã được lưu lại thành công." - } -} diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/zh-Hans.json b/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/zh-Hans.json deleted file mode 100644 index 5aefa452102..00000000000 --- a/modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/zh-Hans.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "culture": "zh-Hans", - "texts": { - "Menu:IdentityManagement": "身份认证管理", - "Users": "用户", - "NewUser": "新用户", - "UserName": "用户名称", - "EmailAddress": "邮箱地址", - "PhoneNumber": "手机号", - "UserInformations": "用户信息", - "DisplayName:IsDefault": "默认", - "DisplayName:IsStatic": "静态", - "DisplayName:IsPublic": "公开", - "Roles": "角色", - "Password": "密码", - "PersonalInfo": " 个人信息", - "PersonalSettings": "个人设置", - "UserDeletionConfirmationMessage": "用户 '{0}' 将被删除. 你确定吗?", - "RoleDeletionConfirmationMessage": "角色 '{0}' 将被删除. 你确定吗?", - "DisplayName:RoleName": "角色名称", - "DisplayName:UserName": "用户名称", - "DisplayName:Name": "名", - "DisplayName:Surname": "姓", - "DisplayName:Password": "密码", - "DisplayName:Email": "邮箱地址", - "DisplayName:PhoneNumber": "手机号码", - "DisplayName:TwoFactorEnabled": "二次认证", - "DisplayName:LockoutEnabled": "登录失败,账户被锁定", - "NewRole": "新角色", - "RoleName": "角色名称", - "CreationTime": "创建时间", - "Permissions": "权限", - "DisplayName:CurrentPassword": "当前密码", - "DisplayName:NewPassword": "新密码", - "DisplayName:NewPasswordConfirm": "确认新密码", - "PasswordChangedMessage": "你已成功更改密码.", - "PersonalSettingsSavedMessage": "你的个人设置保存成功." - } - } \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js index 385b53f2576..cde584cf203 100644 --- a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js +++ b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js @@ -14,6 +14,9 @@ var _dataTable = _$table.DataTable(abp.libs.datatables.normalizeConfiguration({ order: [[1, "asc"]], + searching:false, + paging:false, + info:false, ajax: abp.libs.datatables.createAjax(_identityRoleAppService.getList), columnDefs: [ { diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Shared/ChangePasswordModal.cshtml.cs b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Shared/ChangePasswordModal.cshtml.cs index 29dda11426c..c698b6b6f60 100644 --- a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Shared/ChangePasswordModal.cshtml.cs +++ b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Shared/ChangePasswordModal.cshtml.cs @@ -33,8 +33,11 @@ public async Task OnPostAsync() } await _profileAppService.ChangePasswordAsync( - ChangePasswordInfoModel.CurrentPassword, - ChangePasswordInfoModel.NewPassword + new ChangePasswordInput() + { + CurrentPassword = ChangePasswordInfoModel.CurrentPassword, + NewPassword = ChangePasswordInfoModel.NewPassword + } ); return NoContent(); diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/CreateModal.cshtml.cs b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/CreateModal.cshtml.cs index 526d9dd3a75..7bdf65372b7 100644 --- a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/CreateModal.cshtml.cs +++ b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/CreateModal.cshtml.cs @@ -28,9 +28,9 @@ public async Task OnGetAsync() { UserInfo = new UserInfoViewModel(); - var roleDtoList = await _identityRoleAppService.GetAllListAsync(); + var roleDtoList = await _identityRoleAppService.GetListAsync(); - Roles = ObjectMapper.Map, AssignedRoleViewModel[]>(roleDtoList); + Roles = ObjectMapper.Map, AssignedRoleViewModel[]>(roleDtoList.Items); foreach (var role in Roles) { diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml.cs b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml.cs index 0655331fb90..1b166b881fe 100644 --- a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml.cs +++ b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml.cs @@ -30,8 +30,8 @@ public async Task OnGetAsync(Guid id) { UserInfo = ObjectMapper.Map(await _identityUserAppService.GetAsync(id)); - Roles = ObjectMapper.Map, AssignedRoleViewModel[]>( - await _identityRoleAppService.GetAllListAsync() + Roles = ObjectMapper.Map, AssignedRoleViewModel[]>( + (await _identityRoleAppService.GetListAsync()).Items ); var userRoleNames = (await _identityUserAppService.GetRolesAsync(UserInfo.Id)).Items.Select(r => r.Name).ToList(); diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj b/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj index 51b2b7ca58f..8209c1c3037 100644 --- a/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj +++ b/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj @@ -16,14 +16,12 @@ - - diff --git a/modules/identity/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/IdentityRoleAppService_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/IdentityRoleAppService_Tests.cs index d20294da5c3..03e872271f1 100644 --- a/modules/identity/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/IdentityRoleAppService_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/IdentityRoleAppService_Tests.cs @@ -38,11 +38,10 @@ public async Task GetListAsync() { //Act - var result = await _roleAppService.GetListAsync(new GetIdentityRolesInput()); + var result = await _roleAppService.GetListAsync(); //Assert - result.TotalCount.ShouldBeGreaterThan(0); result.Items.Count.ShouldBeGreaterThan(0); } diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/Localization_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/Localization_Tests.cs new file mode 100644 index 00000000000..2a3c870eb3c --- /dev/null +++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/Localization_Tests.cs @@ -0,0 +1,25 @@ +using Microsoft.Extensions.Localization; +using Shouldly; +using Volo.Abp.Identity; +using Volo.Abp.Identity.Localization; +using Xunit; + +namespace Volo.Abp.TenantManagement +{ + public class Localization_Tests : AbpIdentityDomainTestBase + { + private readonly IStringLocalizer _stringLocalizer; + + public Localization_Tests() + { + _stringLocalizer = GetRequiredService>(); + } + + [Fact] + public void Test() + { + _stringLocalizer["PersonalSettingsSavedMessage"].Value + .ShouldBe("Your personal settings has been saved successfully."); + } + } +} \ No newline at end of file diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo.Abp.PermissionManagement.Domain.Shared.csproj b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo.Abp.PermissionManagement.Domain.Shared.csproj index d922ef73577..300065764fc 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo.Abp.PermissionManagement.Domain.Shared.csproj +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo.Abp.PermissionManagement.Domain.Shared.csproj @@ -13,6 +13,14 @@ + + + + + + + + diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainSharedModule.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainSharedModule.cs index d7bafccea8f..adae5109453 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainSharedModule.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainSharedModule.cs @@ -1,6 +1,8 @@ using Volo.Abp.Localization; +using Volo.Abp.Localization.Resources.AbpValidation; using Volo.Abp.Modularity; using Volo.Abp.PermissionManagement.Localization; +using Volo.Abp.VirtualFileSystem; namespace Volo.Abp.PermissionManagement { @@ -11,10 +13,18 @@ public class AbpPermissionManagementDomainSharedModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + Configure(options => { options.Resources - .Add("en"); + .Add("en") + .AddBaseTypes( + typeof(AbpValidationResource) + ).AddVirtualJson("/Volo/Abp/PermissionManagement/Localization/Domain"); }); } } diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/cs.json b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/cs.json similarity index 100% rename from modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/cs.json rename to modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/cs.json diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/en.json b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/en.json similarity index 100% rename from modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/en.json rename to modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/en.json diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/pl.json b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/pl.json similarity index 100% rename from modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/pl.json rename to modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/pl.json diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/pt-BR.json b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/pt-BR.json similarity index 100% rename from modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/pt-BR.json rename to modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/pt-BR.json diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/tr.json b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/tr.json similarity index 100% rename from modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/tr.json rename to modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/tr.json diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/vi.json b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/vi.json similarity index 100% rename from modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/vi.json rename to modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/vi.json diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/zh-Hans.json b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/zh-Hans.json similarity index 100% rename from modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/zh-Hans.json rename to modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/zh-Hans.json diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi/Volo/Abp/PermissionManagement/AbpPermissionManagementHttpApiModule.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi/Volo/Abp/PermissionManagement/AbpPermissionManagementHttpApiModule.cs index 9b30d360bd8..9f8c69be1e8 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi/Volo/Abp/PermissionManagement/AbpPermissionManagementHttpApiModule.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi/Volo/Abp/PermissionManagement/AbpPermissionManagementHttpApiModule.cs @@ -1,5 +1,8 @@ -using Volo.Abp.AspNetCore.Mvc; +using Localization.Resources.AbpUi; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Localization; using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement.Localization; namespace Volo.Abp.PermissionManagement.HttpApi { @@ -9,6 +12,16 @@ namespace Volo.Abp.PermissionManagement.HttpApi )] public class AbpPermissionManagementHttpApiModule : AbpModule { - + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes( + typeof(AbpUiResource) + ); + }); + } } } diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/AbpPermissionManagementWebModule.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/AbpPermissionManagementWebModule.cs index e42f2523ac7..75e81aa1e57 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/AbpPermissionManagementWebModule.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/AbpPermissionManagementWebModule.cs @@ -32,16 +32,6 @@ public override void ConfigureServices(ServiceConfigurationContext context) options.FileSets.AddEmbedded("Volo.Abp.PermissionManagement.Web"); }); - Configure(options => - { - options.Resources - .Get() - .AddBaseTypes( - typeof(AbpValidationResource), - typeof(AbpUiResource) - ).AddVirtualJson("/Localization/Resources/AbpPermissionManagement"); - }); - Configure(options => { options.AddProfile(validate: true); diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Volo.Abp.PermissionManagement.Web.csproj b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Volo.Abp.PermissionManagement.Web.csproj index 2fdf1de2ca9..820d477af32 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Volo.Abp.PermissionManagement.Web.csproj +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Volo.Abp.PermissionManagement.Web.csproj @@ -15,11 +15,9 @@ - - diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj index 12a5fa86378..a7ba339c3ee 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj @@ -14,7 +14,15 @@ - + + + + + + + + + diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/AbpSettingManagementDomainSharedModule.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/AbpSettingManagementDomainSharedModule.cs index 42c00968369..5f6f174f823 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/AbpSettingManagementDomainSharedModule.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/AbpSettingManagementDomainSharedModule.cs @@ -1,9 +1,26 @@ using Volo.Abp.Modularity; +using Volo.Abp.Localization; +using Volo.Abp.SettingManagement.Localization; +using Volo.Abp.VirtualFileSystem; namespace Volo.Abp.SettingManagement { + [DependsOn(typeof(AbpLocalizationModule))] public class AbpSettingManagementDomainSharedModule : AbpModule { - + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + Configure(options => + { + options.Resources + .Add("en") + .AddVirtualJson("/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement"); + }); + } } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Localization/AbpSettingManagementResource.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/AbpSettingManagementResource.cs similarity index 100% rename from modules/setting-management/src/Volo.Abp.SettingManagement.Web/Localization/AbpSettingManagementResource.cs rename to modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/AbpSettingManagementResource.cs diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Localization/Resources/AbpSettingManagement/cs.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/cs.json similarity index 100% rename from modules/setting-management/src/Volo.Abp.SettingManagement.Web/Localization/Resources/AbpSettingManagement/cs.json rename to modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/cs.json diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Localization/Resources/AbpSettingManagement/en.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json similarity index 100% rename from modules/setting-management/src/Volo.Abp.SettingManagement.Web/Localization/Resources/AbpSettingManagement/en.json rename to modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Localization/Resources/AbpSettingManagement/pl.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/pl.json similarity index 100% rename from modules/setting-management/src/Volo.Abp.SettingManagement.Web/Localization/Resources/AbpSettingManagement/pl.json rename to modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/pl.json diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Localization/Resources/AbpSettingManagement/pt-BR.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/pt-BR.json similarity index 100% rename from modules/setting-management/src/Volo.Abp.SettingManagement.Web/Localization/Resources/AbpSettingManagement/pt-BR.json rename to modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/pt-BR.json diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Localization/Resources/AbpSettingManagement/tr.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json similarity index 100% rename from modules/setting-management/src/Volo.Abp.SettingManagement.Web/Localization/Resources/AbpSettingManagement/tr.json rename to modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Localization/Resources/AbpSettingManagement/vi.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/vi.json similarity index 100% rename from modules/setting-management/src/Volo.Abp.SettingManagement.Web/Localization/Resources/AbpSettingManagement/vi.json rename to modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/vi.json diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Localization/Resources/AbpSettingManagement/zh-Hans.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json similarity index 100% rename from modules/setting-management/src/Volo.Abp.SettingManagement.Web/Localization/Resources/AbpSettingManagement/zh-Hans.json rename to modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/AbpSettingManagementWebModule.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/AbpSettingManagementWebModule.cs index f1fae6b2f36..8f1250e4feb 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/AbpSettingManagementWebModule.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/AbpSettingManagementWebModule.cs @@ -1,7 +1,5 @@ using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; -using Volo.Abp.Localization; using Volo.Abp.Modularity; -using Volo.Abp.SettingManagement.Localization; using Volo.Abp.SettingManagement.Web.Navigation; using Volo.Abp.UI.Navigation; using Volo.Abp.VirtualFileSystem; @@ -9,7 +7,8 @@ namespace Volo.Abp.SettingManagement.Web { [DependsOn( - typeof(AbpAspNetCoreMvcUiThemeSharedModule) + typeof(AbpAspNetCoreMvcUiThemeSharedModule), + typeof(AbpSettingManagementDomainSharedModule) )] public class AbpSettingManagementWebModule : AbpModule { @@ -24,19 +23,6 @@ public override void ConfigureServices(ServiceConfigurationContext context) { options.FileSets.AddEmbedded("Volo.Abp.SettingManagement.Web"); }); - - Configure(options => - { - options.Resources - .Add("en"); - }); - - Configure(options => - { - options.Resources - .Get() - .AddVirtualJson("/Localization/Resources/AbpSettingManagement"); - }); } } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs index 9d622e6a7a3..8aee74c56cf 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs @@ -4,9 +4,9 @@ using Microsoft.Extensions.Options; using System.Linq; using System.Threading.Tasks; -using Volo.Abp.SettingManagement.Localization; using Volo.Abp.SettingManagement.Web.Pages.SettingManagement; using Volo.Abp.UI.Navigation; +using Volo.Abp.SettingManagement.Localization; namespace Volo.Abp.SettingManagement.Web.Navigation { diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Volo.Abp.SettingManagement.Web.csproj b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Volo.Abp.SettingManagement.Web.csproj index 77497112714..3361037ae1c 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Volo.Abp.SettingManagement.Web.csproj +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Volo.Abp.SettingManagement.Web.csproj @@ -15,18 +15,17 @@ + - - diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.csproj b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.csproj index 6182de936d5..81c0265dd8d 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.csproj +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.csproj @@ -1,4 +1,4 @@ - + @@ -13,6 +13,14 @@ + + + + + + + + diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/AbpTenantManagementDomainSharedModule.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/AbpTenantManagementDomainSharedModule.cs index 06dc2a4c51a..873593f9ca7 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/AbpTenantManagementDomainSharedModule.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/AbpTenantManagementDomainSharedModule.cs @@ -1,7 +1,8 @@ -using Microsoft.Extensions.DependencyInjection; -using Volo.Abp.Localization; +using Volo.Abp.Localization; +using Volo.Abp.Localization.Resources.AbpValidation; using Volo.Abp.Modularity; using Volo.Abp.TenantManagement.Localization; +using Volo.Abp.VirtualFileSystem; namespace Volo.Abp.TenantManagement { @@ -9,9 +10,18 @@ public class AbpTenantManagementDomainSharedModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + Configure(options => { - options.Resources.Add("en"); + options.Resources + .Add("en") + .AddBaseTypes( + typeof(AbpValidationResource) + ).AddVirtualJson("/Volo/Abp/TenantManagement/Localization/Resources"); }); } } diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Localization/Resources/AbpTenantManagement/Web/cs.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/cs.json similarity index 100% rename from modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Localization/Resources/AbpTenantManagement/Web/cs.json rename to modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/cs.json diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Localization/Resources/AbpTenantManagement/Web/en.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/en.json similarity index 100% rename from modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Localization/Resources/AbpTenantManagement/Web/en.json rename to modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/en.json diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Localization/Resources/AbpTenantManagement/Web/pl.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/pl.json similarity index 100% rename from modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Localization/Resources/AbpTenantManagement/Web/pl.json rename to modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/pl.json diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Localization/Resources/AbpTenantManagement/Web/pt-BR.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/pt-BR.json similarity index 100% rename from modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Localization/Resources/AbpTenantManagement/Web/pt-BR.json rename to modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/pt-BR.json diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Localization/Resources/AbpTenantManagement/Web/tr.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/tr.json similarity index 100% rename from modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Localization/Resources/AbpTenantManagement/Web/tr.json rename to modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/tr.json diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Localization/Resources/AbpTenantManagement/Web/vi.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/vi.json similarity index 100% rename from modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Localization/Resources/AbpTenantManagement/Web/vi.json rename to modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/vi.json diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Localization/Resources/AbpTenantManagement/Web/zh-Hans.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hans.json similarity index 100% rename from modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Localization/Resources/AbpTenantManagement/Web/zh-Hans.json rename to modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hans.json diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi/Volo.Abp.TenantManagement.HttpApi.csproj b/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi/Volo.Abp.TenantManagement.HttpApi.csproj index 542fdb303f8..28fb85137ca 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi/Volo.Abp.TenantManagement.HttpApi.csproj +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi/Volo.Abp.TenantManagement.HttpApi.csproj @@ -1,4 +1,4 @@ - + @@ -17,6 +17,7 @@ + diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi/Volo/Abp/TenantManagement/AbpTenantManagementHttpApiModule.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi/Volo/Abp/TenantManagement/AbpTenantManagementHttpApiModule.cs index 58a8f7106c4..7f7e6747612 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi/Volo/Abp/TenantManagement/AbpTenantManagementHttpApiModule.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi/Volo/Abp/TenantManagement/AbpTenantManagementHttpApiModule.cs @@ -1,14 +1,30 @@ -using Volo.Abp.AspNetCore.Mvc; +using Localization.Resources.AbpUi; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.FeatureManagement; +using Volo.Abp.FeatureManagement.Localization; +using Volo.Abp.Localization; using Volo.Abp.Modularity; +using Volo.Abp.TenantManagement.Localization; namespace Volo.Abp.TenantManagement { [DependsOn( typeof(AbpTenantManagementApplicationContractsModule), + typeof(AbpFeatureManagementHttpApiModule), typeof(AbpAspNetCoreMvcModule) )] public class AbpTenantManagementHttpApiModule : AbpModule { - + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes( + typeof(AbpFeatureManagementResource), + typeof(AbpUiResource)); + }); + } } } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/AbpTenantManagementWebModule.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/AbpTenantManagementWebModule.cs index 1549664c276..0ff8b1ae8e4 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/AbpTenantManagementWebModule.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/AbpTenantManagementWebModule.cs @@ -42,17 +42,6 @@ public override void ConfigureServices(ServiceConfigurationContext context) options.FileSets.AddEmbedded("Volo.Abp.TenantManagement.Web"); }); - Configure(options => - { - options.Resources - .Get() - .AddBaseTypes( - typeof(AbpValidationResource), - typeof(AbpFeatureManagementResource), - typeof(AbpUiResource) - ).AddVirtualJson("/Localization/Resources/AbpTenantManagement/Web"); - }); - Configure(options => { options.AddProfile(validate: true); diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.csproj b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.csproj index f644ff2f7b7..1bcf4f99a9c 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.csproj +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.csproj @@ -13,14 +13,12 @@ - - diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.Domain.Tests/Volo/Abp/TenantManagement/Localization_Tests.cs b/modules/tenant-management/test/Volo.Abp.TenantManagement.Domain.Tests/Volo/Abp/TenantManagement/Localization_Tests.cs new file mode 100644 index 00000000000..27185126419 --- /dev/null +++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.Domain.Tests/Volo/Abp/TenantManagement/Localization_Tests.cs @@ -0,0 +1,24 @@ +using Microsoft.Extensions.Localization; +using Shouldly; +using Volo.Abp.TenantManagement.Localization; +using Xunit; + +namespace Volo.Abp.TenantManagement +{ + public class Localization_Tests : AbpTenantManagementDomainTestBase + { + private readonly IStringLocalizer _stringLocalizer; + + public Localization_Tests() + { + _stringLocalizer = GetRequiredService>(); + } + + [Fact] + public void Test() + { + _stringLocalizer["TenantDeletionConfirmationMessage"].Value + .ShouldBe("Tenant '{0}' will be deleted. Do you confirm that?"); + } + } +} diff --git a/npm/lerna.json b/npm/lerna.json index 3220751b4fc..c8098eb9918 100644 --- a/npm/lerna.json +++ b/npm/lerna.json @@ -1,6 +1,7 @@ { - "version": "0.6.6", + "version": "0.8.1", "packages": [ + "ng-packs/dist/*", "packs/*" ], "npmClient": "yarn", diff --git a/npm/ng-packs/.editorconfig b/npm/ng-packs/.editorconfig new file mode 100644 index 00000000000..e89330a618c --- /dev/null +++ b/npm/ng-packs/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/npm/ng-packs/.gitignore b/npm/ng-packs/.gitignore new file mode 100644 index 00000000000..7f282e1aa35 --- /dev/null +++ b/npm/ng-packs/.gitignore @@ -0,0 +1,49 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events.json +speed-measure-plugin.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings +yarn.lock + +# System Files +.DS_Store +Thumbs.db + +# Packages +!**/[Pp]ackages/* diff --git a/npm/ng-packs/.prettierrc b/npm/ng-packs/.prettierrc new file mode 100644 index 00000000000..4b9a2d97d0b --- /dev/null +++ b/npm/ng-packs/.prettierrc @@ -0,0 +1,5 @@ +{ + "printWidth": 120, + "singleQuote": true, + "trailingComma": "all" +} diff --git a/npm/ng-packs/.vscode/settings.json b/npm/ng-packs/.vscode/settings.json new file mode 100644 index 00000000000..a768ac15eb6 --- /dev/null +++ b/npm/ng-packs/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "search.exclude": { + "**/dist": true + } +} \ No newline at end of file diff --git a/npm/ng-packs/README.md b/npm/ng-packs/README.md new file mode 100644 index 00000000000..454e4ec858e --- /dev/null +++ b/npm/ng-packs/README.md @@ -0,0 +1 @@ +

Abp Ng Packages

diff --git a/npm/ng-packs/angular.json b/npm/ng-packs/angular.json new file mode 100644 index 00000000000..09c07777df7 --- /dev/null +++ b/npm/ng-packs/angular.json @@ -0,0 +1,252 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "packages", + "projects": { + "core": { + "projectType": "library", + "root": "packages/core", + "sourceRoot": "packages/core/src", + "prefix": "abp", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "packages/core/tsconfig.lib.json", + "project": "packages/core/ng-package.json" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "packages/core/src/test.ts", + "tsConfig": "packages/core/tsconfig.spec.json", + "karmaConfig": "packages/core/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "packages/core/tsconfig.lib.json", + "packages/core/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "theme-shared": { + "projectType": "library", + "root": "packages/theme-shared", + "sourceRoot": "packages/theme-shared/src", + "prefix": "abp", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "packages/theme-shared/tsconfig.lib.json", + "project": "packages/theme-shared/ng-package.json" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "packages/theme-shared/src/test.ts", + "tsConfig": "packages/theme-shared/tsconfig.spec.json", + "karmaConfig": "packages/theme-shared/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "packages/theme-shared/tsconfig.lib.json", + "packages/theme-shared/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "account": { + "projectType": "library", + "root": "packages/account", + "sourceRoot": "packages/account/src", + "prefix": "abp", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "packages/account/tsconfig.lib.json", + "project": "packages/account/ng-package.json" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "packages/account/src/test.ts", + "tsConfig": "packages/account/tsconfig.spec.json", + "karmaConfig": "packages/account/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "packages/account/tsconfig.lib.json", + "packages/account/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "permission-management": { + "projectType": "library", + "root": "packages/permission-management", + "sourceRoot": "packages/permission-management/src", + "prefix": "abp", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "packages/permission-management/tsconfig.lib.json", + "project": "packages/permission-management/ng-package.json" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "packages/permission-management/src/test.ts", + "tsConfig": "packages/permission-management/tsconfig.spec.json", + "karmaConfig": "packages/permission-management/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "packages/permission-management/tsconfig.lib.json", + "packages/permission-management/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "identity": { + "projectType": "library", + "root": "packages/identity", + "sourceRoot": "packages/identity/src", + "prefix": "abp", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "packages/identity/tsconfig.lib.json", + "project": "packages/identity/ng-package.json" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "packages/identity/src/test.ts", + "tsConfig": "packages/identity/tsconfig.spec.json", + "karmaConfig": "packages/identity/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "packages/identity/tsconfig.lib.json", + "packages/identity/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "theme-basic": { + "projectType": "library", + "root": "packages/theme-basic", + "sourceRoot": "packages/theme-basic/src", + "prefix": "abp", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "packages/theme-basic/tsconfig.lib.json", + "project": "packages/theme-basic/ng-package.json" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "packages/theme-basic/src/test.ts", + "tsConfig": "packages/theme-basic/tsconfig.spec.json", + "karmaConfig": "packages/theme-basic/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "packages/theme-basic/tsconfig.lib.json", + "packages/theme-basic/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "tenant-management": { + "projectType": "library", + "root": "packages/tenant-management", + "sourceRoot": "packages/tenant-management/src", + "prefix": "abp", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "packages/tenant-management/tsconfig.lib.json", + "project": "packages/tenant-management/ng-package.json" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "packages/tenant-management/src/test.ts", + "tsConfig": "packages/tenant-management/tsconfig.spec.json", + "karmaConfig": "packages/tenant-management/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "packages/tenant-management/tsconfig.lib.json", + "packages/tenant-management/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }}, + "defaultProject": "core" +} diff --git a/npm/ng-packs/dist/account/README.md b/npm/ng-packs/dist/account/README.md new file mode 100644 index 00000000000..dc2cd4534aa --- /dev/null +++ b/npm/ng-packs/dist/account/README.md @@ -0,0 +1 @@ +

@abp/ng.account

diff --git a/npm/ng-packs/dist/account/abp-ng.account.d.ts b/npm/ng-packs/dist/account/abp-ng.account.d.ts new file mode 100644 index 00000000000..d0a8886eab6 --- /dev/null +++ b/npm/ng-packs/dist/account/abp-ng.account.d.ts @@ -0,0 +1,10 @@ +/** + * Generated bundle index. Do not edit. + */ +export * from './public-api'; +export { AccountRoutingModule as ɵe } from './lib/account-routing.module'; +export { LoginComponent as ɵa } from './lib/components/login/login.component'; +export { RegisterComponent as ɵc } from './lib/components/register/register.component'; +export { TenantBoxComponent as ɵd } from './lib/components/tenant-box/tenant-box.component'; +export { Options as ɵb } from './lib/models/options'; +export { ACCOUNT_OPTIONS as ɵg, optionsFactory as ɵf } from './lib/tokens/options.token'; diff --git a/npm/ng-packs/dist/account/abp-ng.account.metadata.json b/npm/ng-packs/dist/account/abp-ng.account.metadata.json new file mode 100644 index 00000000000..c4066659b57 --- /dev/null +++ b/npm/ng-packs/dist/account/abp-ng.account.metadata.json @@ -0,0 +1 @@ +{"__symbolic":"module","version":4,"exports":[{"from":"./lib/options"},{"from":"./lib/register/register.component"}],"metadata":{"AccountModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵd"}],"imports":[{"__symbolic":"reference","module":"@abp/ng.core","name":"CoreModule","line":15,"character":12},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","module":"@abp/ng.theme.shared","name":"ThemeSharedModule","line":15,"character":46},{"__symbolic":"reference","module":"primeng/table","name":"TableModule","line":15,"character":65},{"__symbolic":"reference","module":"@ng-bootstrap/ng-bootstrap","name":"NgbDropdownModule","line":15,"character":78},{"__symbolic":"reference","module":"@ngx-validate/core","name":"NgxValidateCoreModule","line":15,"character":97}],"exports":[]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["options"],"defaults":[{}],"value":{"ngModule":{"__symbolic":"reference","name":"AccountModule"},"providers":[{"provide":{"__symbolic":"reference","name":"ɵg"},"useValue":{"__symbolic":"reference","name":"options"}},{"provide":"ACCOUNT_OPTIONS","useFactory":{"__symbolic":"reference","name":"ɵf"},"deps":[{"__symbolic":"reference","name":"ɵg"}]}]}}}},"ACCOUNT_ROUTES":[{"name":"Account","path":"account","invisible":true,"layout":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@abp/ng.core","name":"eLayoutType","line":7,"character":12},"member":"application"},"children":[{"path":"login","name":"Login","order":1},{"path":"register","name":"Register","order":2}]}],"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":14,"character":1},"arguments":[{"selector":"abp-login","template":"
\n
\n \n\n \n
\n
\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":28,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":28,"character":17},"arguments":["ACCOUNT_OPTIONS"]}]],"parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":24,"character":16},{"__symbolic":"reference","module":"angular-oauth2-oidc","name":"OAuthService","line":25,"character":26},{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":26,"character":19},{"__symbolic":"reference","module":"@abp/ng.theme.shared","name":"ToasterService","line":27,"character":28},{"__symbolic":"reference","name":"ɵb"}]}],"onSubmit":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"interface"},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"abp-register","template":"
\n
\n \n\n \n
\n
\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":15,"character":26},{"__symbolic":"reference","module":"angular-oauth2-oidc","name":"OAuthService","line":15,"character":61},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":15,"character":91}]}],"onSubmit":[{"__symbolic":"method"}]}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"abp-tenant-box","template":"\n {{ 'AbpUiMultiTenancy::Tenant' | abpLocalization }}: \n \n {{ selected?.name ? selected.name : ('AbpUiMultiTenancy::NotSelected' | abpLocalization) }}\n \n ({{\n 'AbpUiMultiTenancy::Switch' | abpLocalization\n }})\n
\n\n\n
\n
\n SwitchTenant\n
\n \n
\n
\n
\n
\n
\n \n \n
\n

{{ 'AbpUiMultiTenancy::SwitchTenantHint' | abpLocalization }}

\n
\n
\n\n
\n \n \n
\n
\n
\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ng-bootstrap/ng-bootstrap","name":"NgbModal","line":10,"character":36},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":10,"character":58}]}],"modalContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":16,"character":3},"arguments":["modalContent",{"static":false}]}]}],"createForm":[{"__symbolic":"method"}],"openModal":[{"__symbolic":"method"}],"onSwitch":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}]}},"ɵe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":15,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":16,"character":12},"member":"forChild"},"arguments":[[{"path":"","pathMatch":"full","redirectTo":"login"},{"path":"","component":{"__symbolic":"reference","module":"@abp/ng.core","name":"DynamicLayoutComponent","line":10,"character":15},"children":[{"path":"login","component":{"__symbolic":"reference","name":"ɵa"}},{"path":"register","component":{"__symbolic":"reference","name":"ɵc"}}]}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":17,"character":12}]}]}],"members":{}},"ɵf":{"__symbolic":"function","parameters":["options"],"value":{"redirectUrl":"/"}},"ɵg":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":10,"character":35},"arguments":["ACCOUNT_OPTIONS"]}},"origins":{"AccountModule":"./lib/account.module","ACCOUNT_ROUTES":"./lib/constants/routes","ɵa":"./lib/components/login/login.component","ɵb":"./lib/models/options","ɵc":"./lib/components/register/register.component","ɵd":"./lib/components/tenant-box/tenant-box.component","ɵe":"./lib/account-routing.module","ɵf":"./lib/tokens/options.token","ɵg":"./lib/tokens/options.token"},"importAs":"@abp/ng.account"} \ No newline at end of file diff --git a/npm/ng-packs/dist/account/bundles/abp-ng.account.umd.js b/npm/ng-packs/dist/account/bundles/abp-ng.account.umd.js new file mode 100644 index 00000000000..41ffd45aca3 --- /dev/null +++ b/npm/ng-packs/dist/account/bundles/abp-ng.account.umd.js @@ -0,0 +1,334 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@abp/ng.core'), require('@angular/core'), require('@angular/router'), require('@angular/forms'), require('@ngxs/router-plugin'), require('@ngxs/store'), require('angular-oauth2-oidc'), require('rxjs'), require('@abp/ng.theme.shared'), require('rxjs/operators'), require('snq'), require('@ngx-validate/core'), require('@ng-bootstrap/ng-bootstrap'), require('primeng/table')) : + typeof define === 'function' && define.amd ? define('@abp/ng.account', ['exports', '@abp/ng.core', '@angular/core', '@angular/router', '@angular/forms', '@ngxs/router-plugin', '@ngxs/store', 'angular-oauth2-oidc', 'rxjs', '@abp/ng.theme.shared', 'rxjs/operators', 'snq', '@ngx-validate/core', '@ng-bootstrap/ng-bootstrap', 'primeng/table'], factory) : + (global = global || self, factory((global.abp = global.abp || {}, global.abp.ng = global.abp.ng || {}, global.abp.ng.account = {}), global.ng_core, global.ng.core, global.ng.router, global.ng.forms, global.routerPlugin, global.store, global.angularOauth2Oidc, global.rxjs, global.ng_theme_shared, global.rxjs.operators, global.snq, global.core$1, global.ngBootstrap, global.table)); +}(this, function (exports, ng_core, core, router, forms, routerPlugin, store, angularOauth2Oidc, rxjs, ng_theme_shared, operators, snq, core$1, ngBootstrap, table) { 'use strict'; + + snq = snq && snq.hasOwnProperty('default') ? snq['default'] : snq; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var maxLength = forms.Validators.maxLength, minLength = forms.Validators.minLength, required = forms.Validators.required; + var LoginComponent = /** @class */ (function () { + function LoginComponent(fb, oauthService, store, toasterService, options) { + this.fb = fb; + this.oauthService = oauthService; + this.store = store; + this.toasterService = toasterService; + this.options = options; + this.oauthService.configure(this.store.selectSnapshot(ng_core.ConfigState.getOne('environment')).oAuthConfig); + this.oauthService.loadDiscoveryDocument(); + this.form = this.fb.group({ + username: ['', [required, maxLength(255)]], + password: ['', [required, maxLength(32)]], + remember: [false], + }); + } + /** + * @return {?} + */ + LoginComponent.prototype.onSubmit = /** + * @return {?} + */ + function () { + var _this = this; + if (this.form.invalid) + return; + this.oauthService.setStorage(this.form.value.remember ? localStorage : sessionStorage); + this.inProgress = true; + rxjs.from(this.oauthService.fetchTokenUsingPasswordFlow(this.form.get('username').value, this.form.get('password').value)) + .pipe(operators.switchMap((/** + * @return {?} + */ + function () { return _this.store.dispatch(new ng_core.ConfigGetAppConfiguration()); })), operators.tap((/** + * @return {?} + */ + function () { + /** @type {?} */ + var redirectUrl = snq((/** + * @return {?} + */ + function () { return window.history.state; })).redirectUrl || (_this.options || {}).redirectUrl || '/'; + _this.store.dispatch(new routerPlugin.Navigate([redirectUrl])); + })), operators.catchError((/** + * @param {?} err + * @return {?} + */ + function (err) { + _this.toasterService.error(snq((/** + * @return {?} + */ + function () { return err.error.error_description; }), 'An error occured.'), 'Error'); + return rxjs.throwError(err); + })), operators.finalize((/** + * @return {?} + */ + function () { return (_this.inProgress = false); }))) + .subscribe(); + }; + LoginComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-login', + template: "
\n" + }] } + ]; + /** @nocollapse */ + LoginComponent.ctorParameters = function () { return [ + { type: forms.FormBuilder }, + { type: angularOauth2Oidc.OAuthService }, + { type: store.Store }, + { type: ng_theme_shared.ToasterService }, + { type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: ['ACCOUNT_OPTIONS',] }] } + ]; }; + return LoginComponent; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var maxLength$1 = forms.Validators.maxLength, minLength$1 = forms.Validators.minLength, required$1 = forms.Validators.required, email = forms.Validators.email; + var RegisterComponent = /** @class */ (function () { + function RegisterComponent(fb, oauthService, router) { + this.fb = fb; + this.oauthService = oauthService; + this.router = router; + this.form = this.fb.group({ + username: ['', [required$1, maxLength$1(255)]], + password: [ + '', + [required$1, maxLength$1(32), minLength$1(6), core$1.validatePassword(['small', 'capital', 'number', 'special'])], + ], + email: ['', [required$1, email]], + }); + } + /** + * @return {?} + */ + RegisterComponent.prototype.onSubmit = /** + * @return {?} + */ + function () { + if (this.form.invalid) + return; + }; + RegisterComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-register', + template: "
\n
\n \n\n \n
\n
\n" + }] } + ]; + /** @nocollapse */ + RegisterComponent.ctorParameters = function () { return [ + { type: forms.FormBuilder }, + { type: angularOauth2Oidc.OAuthService }, + { type: router.Router } + ]; }; + return RegisterComponent; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + /** @type {?} */ + var routes = [ + { path: '', pathMatch: 'full', redirectTo: 'login' }, + { + path: '', + component: ng_core.DynamicLayoutComponent, + children: [{ path: 'login', component: LoginComponent }, { path: 'register', component: RegisterComponent }], + }, + ]; + var AccountRoutingModule = /** @class */ (function () { + function AccountRoutingModule() { + } + AccountRoutingModule.decorators = [ + { type: core.NgModule, args: [{ + imports: [router.RouterModule.forChild(routes)], + exports: [router.RouterModule], + },] } + ]; + return AccountRoutingModule; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var TenantBoxComponent = /** @class */ (function () { + function TenantBoxComponent(modalService, fb) { + this.modalService = modalService; + this.fb = fb; + } + /** + * @return {?} + */ + TenantBoxComponent.prototype.createForm = /** + * @return {?} + */ + function () { + this.form = this.fb.group({ + name: [this.selected.name], + }); + }; + /** + * @return {?} + */ + TenantBoxComponent.prototype.openModal = /** + * @return {?} + */ + function () { + this.createForm(); + this.modalService.open(this.modalContent); + }; + /** + * @return {?} + */ + TenantBoxComponent.prototype.onSwitch = /** + * @return {?} + */ + function () { + this.selected = (/** @type {?} */ ({})); + this.openModal(); + }; + /** + * @return {?} + */ + TenantBoxComponent.prototype.save = /** + * @return {?} + */ + function () { + this.selected = this.form.value; + this.modalService.dismissAll(); + }; + TenantBoxComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-tenant-box', + template: "\n {{ 'AbpUiMultiTenancy::Tenant' | abpLocalization }}: \n \n {{ selected?.name ? selected.name : ('AbpUiMultiTenancy::NotSelected' | abpLocalization) }}\n \n ({{\n 'AbpUiMultiTenancy::Switch' | abpLocalization\n }})\n\n\n\n
\n
\n SwitchTenant\n
\n \n
\n
\n
\n
\n
\n \n \n
\n

{{ 'AbpUiMultiTenancy::SwitchTenantHint' | abpLocalization }}

\n
\n
\n\n
\n \n \n
\n
\n
\n" + }] } + ]; + /** @nocollapse */ + TenantBoxComponent.ctorParameters = function () { return [ + { type: ngBootstrap.NgbModal }, + { type: forms.FormBuilder } + ]; }; + TenantBoxComponent.propDecorators = { + modalContent: [{ type: core.ViewChild, args: ['modalContent', { static: false },] }] + }; + return TenantBoxComponent; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + /** + * @param {?} options + * @return {?} + */ + function optionsFactory(options) { + return __assign({ redirectUrl: '/' }, options); + } + /** @type {?} */ + var ACCOUNT_OPTIONS = new core.InjectionToken('ACCOUNT_OPTIONS'); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var AccountModule = /** @class */ (function () { + function AccountModule() { + } + /** + * @param {?=} options + * @return {?} + */ + AccountModule.forRoot = /** + * @param {?=} options + * @return {?} + */ + function (options) { + if (options === void 0) { options = (/** @type {?} */ ({})); } + return { + ngModule: AccountModule, + providers: [ + { provide: ACCOUNT_OPTIONS, useValue: options }, + { + provide: 'ACCOUNT_OPTIONS', + useFactory: optionsFactory, + deps: [ACCOUNT_OPTIONS], + }, + ], + }; + }; + AccountModule.decorators = [ + { type: core.NgModule, args: [{ + declarations: [LoginComponent, RegisterComponent, TenantBoxComponent], + imports: [ng_core.CoreModule, AccountRoutingModule, ng_theme_shared.ThemeSharedModule, table.TableModule, ngBootstrap.NgbDropdownModule, core$1.NgxValidateCoreModule], + exports: [], + },] } + ]; + return AccountModule; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + /** @type {?} */ + var ACCOUNT_ROUTES = (/** @type {?} */ ([ + { + name: 'Account', + path: 'account', + invisible: true, + layout: "application" /* application */, + children: [{ path: 'login', name: 'Login', order: 1 }, { path: 'register', name: 'Register', order: 2 }], + }, + ])); + + exports.ACCOUNT_OPTIONS = ACCOUNT_OPTIONS; + exports.ACCOUNT_ROUTES = ACCOUNT_ROUTES; + exports.AccountModule = AccountModule; + exports.LoginComponent = LoginComponent; + exports.RegisterComponent = RegisterComponent; + exports.optionsFactory = optionsFactory; + exports.ɵa = LoginComponent; + exports.ɵc = RegisterComponent; + exports.ɵd = TenantBoxComponent; + exports.ɵe = AccountRoutingModule; + exports.ɵf = optionsFactory; + exports.ɵg = ACCOUNT_OPTIONS; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); +//# sourceMappingURL=abp-ng.account.umd.js.map diff --git a/npm/ng-packs/dist/account/bundles/abp-ng.account.umd.js.map b/npm/ng-packs/dist/account/bundles/abp-ng.account.umd.js.map new file mode 100644 index 00000000000..0f1e4949a29 --- /dev/null +++ b/npm/ng-packs/dist/account/bundles/abp-ng.account.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.account.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","ng://@abp/ng.account/lib/components/login/login.component.ts","ng://@abp/ng.account/lib/components/register/register.component.ts","ng://@abp/ng.account/lib/account-routing.module.ts","ng://@abp/ng.account/lib/components/tenant-box/tenant-box.component.ts","ng://@abp/ng.account/lib/tokens/options.token.ts","ng://@abp/ng.account/lib/account.module.ts","ng://@abp/ng.account/lib/constants/routes.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { ConfigGetAppConfiguration, ConfigState } from '@abp/ng.core';\nimport { Component, Inject, Optional } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Navigate } from '@ngxs/router-plugin';\nimport { Store } from '@ngxs/store';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { from, throwError } from 'rxjs';\nimport { Options } from '../../models/options';\nimport { ToasterService } from '@abp/ng.theme.shared';\nimport { catchError, finalize, switchMap, tap } from 'rxjs/operators';\nimport snq from 'snq';\n\nconst { maxLength, minLength, required } = Validators;\n\n@Component({\n selector: 'abp-login',\n templateUrl: './login.component.html',\n})\nexport class LoginComponent {\n form: FormGroup;\n\n inProgress: boolean;\n\n constructor(\n private fb: FormBuilder,\n private oauthService: OAuthService,\n private store: Store,\n private toasterService: ToasterService,\n @Optional() @Inject('ACCOUNT_OPTIONS') private options: Options,\n ) {\n this.oauthService.configure(this.store.selectSnapshot(ConfigState.getOne('environment')).oAuthConfig);\n this.oauthService.loadDiscoveryDocument();\n\n this.form = this.fb.group({\n username: ['', [required, maxLength(255)]],\n password: ['', [required, maxLength(32)]],\n remember: [false],\n });\n }\n\n onSubmit() {\n if (this.form.invalid) return;\n this.oauthService.setStorage(this.form.value.remember ? localStorage : sessionStorage);\n\n this.inProgress = true;\n from(\n this.oauthService.fetchTokenUsingPasswordFlow(this.form.get('username').value, this.form.get('password').value),\n )\n .pipe(\n switchMap(() => this.store.dispatch(new ConfigGetAppConfiguration())),\n tap(() => {\n const redirectUrl = snq(() => window.history.state).redirectUrl || (this.options || {}).redirectUrl || '/';\n this.store.dispatch(new Navigate([redirectUrl]));\n }),\n catchError(err => {\n this.toasterService.error(snq(() => err.error.error_description, 'An error occured.'), 'Error');\n return throwError(err);\n }),\n finalize(() => (this.inProgress = false)),\n )\n .subscribe();\n }\n}\n","import { Component } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { validatePassword } from '@ngx-validate/core';\nimport { OAuthService } from 'angular-oauth2-oidc';\n\nconst { maxLength, minLength, required, email } = Validators;\n\n@Component({\n selector: 'abp-register',\n templateUrl: './register.component.html',\n})\nexport class RegisterComponent {\n form: FormGroup;\n\n constructor(private fb: FormBuilder, private oauthService: OAuthService, private router: Router) {\n this.form = this.fb.group({\n username: ['', [required, maxLength(255)]],\n password: [\n '',\n [required, maxLength(32), minLength(6), validatePassword(['small', 'capital', 'number', 'special'])],\n ],\n email: ['', [required, email]],\n });\n }\n\n onSubmit() {\n if (this.form.invalid) return;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { LoginComponent } from './components/login/login.component';\nimport { RegisterComponent } from './components/register/register.component';\nimport { DynamicLayoutComponent } from '@abp/ng.core';\n\nconst routes: Routes = [\n { path: '', pathMatch: 'full', redirectTo: 'login' },\n {\n path: '',\n component: DynamicLayoutComponent,\n children: [{ path: 'login', component: LoginComponent }, { path: 'register', component: RegisterComponent }],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class AccountRoutingModule {}\n","import { Component, TemplateRef, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ABP } from '@abp/ng.core';\n\n@Component({\n selector: 'abp-tenant-box',\n templateUrl: './tenant-box.component.html',\n})\nexport class TenantBoxComponent {\n constructor(private modalService: NgbModal, private fb: FormBuilder) {}\n\n form: FormGroup;\n\n selected: ABP.BasicItem;\n\n @ViewChild('modalContent', { static: false })\n modalContent: TemplateRef;\n\n createForm() {\n this.form = this.fb.group({\n name: [this.selected.name],\n });\n }\n\n openModal() {\n this.createForm();\n this.modalService.open(this.modalContent);\n }\n\n onSwitch() {\n this.selected = {} as ABP.BasicItem;\n this.openModal();\n }\n\n save() {\n this.selected = this.form.value;\n this.modalService.dismissAll();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Options } from '../models/options';\n\nexport function optionsFactory(options: Options) {\n return {\n redirectUrl: '/',\n ...options,\n };\n}\n\nexport const ACCOUNT_OPTIONS = new InjectionToken('ACCOUNT_OPTIONS');\n","import { CoreModule } from '@abp/ng.core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { AccountRoutingModule } from './account-routing.module';\nimport { LoginComponent } from './components/login/login.component';\nimport { RegisterComponent } from './components/register/register.component';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { TenantBoxComponent } from './components/tenant-box/tenant-box.component';\nimport { Options } from './models/options';\nimport { ACCOUNT_OPTIONS, optionsFactory } from './tokens/options.token';\nimport { TableModule } from 'primeng/table';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\n\n@NgModule({\n declarations: [LoginComponent, RegisterComponent, TenantBoxComponent],\n imports: [CoreModule, AccountRoutingModule, ThemeSharedModule, TableModule, NgbDropdownModule, NgxValidateCoreModule],\n exports: [],\n})\nexport class AccountModule {\n static forRoot(options = {} as Options): ModuleWithProviders {\n return {\n ngModule: AccountModule,\n providers: [\n { provide: ACCOUNT_OPTIONS, useValue: options },\n {\n provide: 'ACCOUNT_OPTIONS',\n useFactory: optionsFactory,\n deps: [ACCOUNT_OPTIONS],\n },\n ],\n };\n }\n}\n","import { ABP, eLayoutType } from '@abp/ng.core';\n\nexport const ACCOUNT_ROUTES = [\n {\n name: 'Account',\n path: 'account',\n invisible: true,\n layout: eLayoutType.application,\n children: [{ path: 'login', name: 'Login', order: 1 }, { path: 'register', name: 'Register', order: 2 }],\n },\n] as ABP.FullRoute[];\n"],"names":["ConfigState","from","switchMap","ConfigGetAppConfiguration","tap","Navigate","catchError","throwError","finalize","Component","FormBuilder","OAuthService","Store","ToasterService","Optional","Inject","maxLength","minLength","required","validatePassword","Router","DynamicLayoutComponent","NgModule","RouterModule","NgbModal","ViewChild","InjectionToken","CoreModule","ThemeSharedModule","TableModule","NgbDropdownModule","NgxValidateCoreModule"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/account/bundles/abp-ng.account.umd.min.js b/npm/ng-packs/dist/account/bundles/abp-ng.account.umd.min.js new file mode 100644 index 00000000000..1aaa51650ed --- /dev/null +++ b/npm/ng-packs/dist/account/bundles/abp-ng.account.umd.min.js @@ -0,0 +1,2 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("@abp/ng.core"),require("@angular/core"),require("@angular/router"),require("@angular/forms"),require("@ngxs/router-plugin"),require("@ngxs/store"),require("angular-oauth2-oidc"),require("rxjs"),require("@abp/ng.theme.shared"),require("rxjs/operators"),require("snq"),require("@ngx-validate/core"),require("@ng-bootstrap/ng-bootstrap"),require("primeng/table")):"function"==typeof define&&define.amd?define("@abp/ng.account",["exports","@abp/ng.core","@angular/core","@angular/router","@angular/forms","@ngxs/router-plugin","@ngxs/store","angular-oauth2-oidc","rxjs","@abp/ng.theme.shared","rxjs/operators","snq","@ngx-validate/core","@ng-bootstrap/ng-bootstrap","primeng/table"],n):n(((e=e||self).abp=e.abp||{},e.abp.ng=e.abp.ng||{},e.abp.ng.account={}),e.ng_core,e.ng.core,e.ng.router,e.ng.forms,e.routerPlugin,e.store,e.angularOauth2Oidc,e.rxjs,e.ng_theme_shared,e.rxjs.operators,e.snq,e.core$1,e.ngBootstrap,e.table)}(this,function(e,n,t,o,r,a,i,s,l,c,p,u,d,m,b){"use strict";u=u&&u.hasOwnProperty("default")?u.default:u;var f=function(){return(f=Object.assign||function(e){for(var n,t=1,o=arguments.length;t\n
\n\n'}]}],e.ctorParameters=function(){return[{type:r.FormBuilder},{type:s.OAuthService},{type:i.Store},{type:c.ToasterService},{type:void 0,decorators:[{type:t.Optional},{type:t.Inject,args:["ACCOUNT_OPTIONS"]}]}]},e}(),y=r.Validators.maxLength,S=r.Validators.minLength,C=r.Validators.required,A=r.Validators.email,w=function(){function e(e,n,t){this.fb=e,this.oauthService=n,this.router=t,this.form=this.fb.group({username:["",[C,y(255)]],password:["",[C,y(32),S(6),d.validatePassword(["small","capital","number","special"])]],email:["",[C,A]]})}return e.prototype.onSubmit=function(){this.form.invalid},e.decorators=[{type:t.Component,args:[{selector:"abp-register",template:'
\n
\n \n\n \n
\n
\n'}]}],e.ctorParameters=function(){return[{type:r.FormBuilder},{type:s.OAuthService},{type:o.Router}]},e}(),x=[{path:"",pathMatch:"full",redirectTo:"login"},{path:"",component:n.DynamicLayoutComponent,children:[{path:"login",component:v},{path:"register",component:w}]}],T=function(){function e(){}return e.decorators=[{type:t.NgModule,args:[{imports:[o.RouterModule.forChild(x)],exports:[o.RouterModule]}]}],e}(),O=function(){function e(e,n){this.modalService=e,this.fb=n}return e.prototype.createForm=function(){this.form=this.fb.group({name:[this.selected.name]})},e.prototype.openModal=function(){this.createForm(),this.modalService.open(this.modalContent)},e.prototype.onSwitch=function(){this.selected={},this.openModal()},e.prototype.save=function(){this.selected=this.form.value,this.modalService.dismissAll()},e.decorators=[{type:t.Component,args:[{selector:"abp-tenant-box",template:'\n {{ \'AbpUiMultiTenancy::Tenant\' | abpLocalization }}: \n \n {{ selected?.name ? selected.name : (\'AbpUiMultiTenancy::NotSelected\' | abpLocalization) }}\n \n ({{\n \'AbpUiMultiTenancy::Switch\' | abpLocalization\n }})\n\n\n\n \n
\n \n\n \n
\n
\n'}]}],e.ctorParameters=function(){return[{type:m.NgbModal},{type:r.FormBuilder}]},e.propDecorators={modalContent:[{type:t.ViewChild,args:["modalContent",{static:!1}]}]},e}();function L(e){return f({redirectUrl:"/"},e)}var M=new t.InjectionToken("ACCOUNT_OPTIONS"),N=function(){function e(){}return e.forRoot=function(n){return void 0===n&&(n={}),{ngModule:e,providers:[{provide:M,useValue:n},{provide:"ACCOUNT_OPTIONS",useFactory:L,deps:[M]}]}},e.decorators=[{type:t.NgModule,args:[{declarations:[v,w,O],imports:[n.CoreModule,T,c.ThemeSharedModule,b.TableModule,m.NgbDropdownModule,d.NgxValidateCoreModule],exports:[]}]}],e}();e.ACCOUNT_OPTIONS=M,e.ACCOUNT_ROUTES=[{name:"Account",path:"account",invisible:!0,layout:"application",children:[{path:"login",name:"Login",order:1},{path:"register",name:"Register",order:2}]}],e.AccountModule=N,e.LoginComponent=v,e.RegisterComponent=w,e.optionsFactory=L,e.ɵa=v,e.ɵc=w,e.ɵd=O,e.ɵe=T,e.ɵf=L,e.ɵg=M,Object.defineProperty(e,"__esModule",{value:!0})}); +//# sourceMappingURL=abp-ng.account.umd.min.js.map \ No newline at end of file diff --git a/npm/ng-packs/dist/account/bundles/abp-ng.account.umd.min.js.map b/npm/ng-packs/dist/account/bundles/abp-ng.account.umd.min.js.map new file mode 100644 index 00000000000..8f0c67cca70 --- /dev/null +++ b/npm/ng-packs/dist/account/bundles/abp-ng.account.umd.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@abp/ng.account/lib/components/login/login.component.ts","ng://@abp/ng.account/lib/components/register/register.component.ts","ng://@abp/ng.account/lib/account-routing.module.ts","ng://@abp/ng.account/lib/components/tenant-box/tenant-box.component.ts","ng://@abp/ng.account/lib/tokens/options.token.ts","ng://@abp/ng.account/lib/account.module.ts","ng://@abp/ng.account/lib/constants/routes.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","maxLength","forms","Validators","required","minLength","LoginComponent","fb","oauthService","store","toasterService","options","configure","selectSnapshot","ConfigState","getOne","oAuthConfig","loadDiscoveryDocument","form","group","username","password","remember","onSubmit","_this","invalid","setStorage","value","localStorage","sessionStorage","inProgress","from","fetchTokenUsingPasswordFlow","get","pipe","switchMap","dispatch","ConfigGetAppConfiguration","tap","redirectUrl","snq","window","history","state","Navigate","catchError","err","error","error_description","throwError","finalize","subscribe","Component","args","selector","template","FormBuilder","OAuthService","Store","ToasterService","Optional","type","Inject","email","RegisterComponent","router","validatePassword","Router","routes","path","pathMatch","redirectTo","component","DynamicLayoutComponent","children","AccountRoutingModule","NgModule","imports","RouterModule","forChild","exports","TenantBoxComponent","modalService","createForm","name","selected","openModal","open","modalContent","onSwitch","save","dismissAll","NgbModal","ViewChild","static","optionsFactory","ACCOUNT_OPTIONS","InjectionToken","AccountModule","forRoot","ngModule","providers","provide","useValue","useFactory","deps","declarations","CoreModule","ThemeSharedModule","TableModule","NgbDropdownModule","NgxValidateCoreModule","invisible","layout","order"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { ConfigGetAppConfiguration, ConfigState } from '@abp/ng.core';\nimport { Component, Inject, Optional } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Navigate } from '@ngxs/router-plugin';\nimport { Store } from '@ngxs/store';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { from, throwError } from 'rxjs';\nimport { Options } from '../../models/options';\nimport { ToasterService } from '@abp/ng.theme.shared';\nimport { catchError, finalize, switchMap, tap } from 'rxjs/operators';\nimport snq from 'snq';\n\nconst { maxLength, minLength, required } = Validators;\n\n@Component({\n selector: 'abp-login',\n templateUrl: './login.component.html',\n})\nexport class LoginComponent {\n form: FormGroup;\n\n inProgress: boolean;\n\n constructor(\n private fb: FormBuilder,\n private oauthService: OAuthService,\n private store: Store,\n private toasterService: ToasterService,\n @Optional() @Inject('ACCOUNT_OPTIONS') private options: Options,\n ) {\n this.oauthService.configure(this.store.selectSnapshot(ConfigState.getOne('environment')).oAuthConfig);\n this.oauthService.loadDiscoveryDocument();\n\n this.form = this.fb.group({\n username: ['', [required, maxLength(255)]],\n password: ['', [required, maxLength(32)]],\n remember: [false],\n });\n }\n\n onSubmit() {\n if (this.form.invalid) return;\n this.oauthService.setStorage(this.form.value.remember ? localStorage : sessionStorage);\n\n this.inProgress = true;\n from(\n this.oauthService.fetchTokenUsingPasswordFlow(this.form.get('username').value, this.form.get('password').value),\n )\n .pipe(\n switchMap(() => this.store.dispatch(new ConfigGetAppConfiguration())),\n tap(() => {\n const redirectUrl = snq(() => window.history.state).redirectUrl || (this.options || {}).redirectUrl || '/';\n this.store.dispatch(new Navigate([redirectUrl]));\n }),\n catchError(err => {\n this.toasterService.error(snq(() => err.error.error_description, 'An error occured.'), 'Error');\n return throwError(err);\n }),\n finalize(() => (this.inProgress = false)),\n )\n .subscribe();\n }\n}\n","import { Component } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { validatePassword } from '@ngx-validate/core';\nimport { OAuthService } from 'angular-oauth2-oidc';\n\nconst { maxLength, minLength, required, email } = Validators;\n\n@Component({\n selector: 'abp-register',\n templateUrl: './register.component.html',\n})\nexport class RegisterComponent {\n form: FormGroup;\n\n constructor(private fb: FormBuilder, private oauthService: OAuthService, private router: Router) {\n this.form = this.fb.group({\n username: ['', [required, maxLength(255)]],\n password: [\n '',\n [required, maxLength(32), minLength(6), validatePassword(['small', 'capital', 'number', 'special'])],\n ],\n email: ['', [required, email]],\n });\n }\n\n onSubmit() {\n if (this.form.invalid) return;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { LoginComponent } from './components/login/login.component';\nimport { RegisterComponent } from './components/register/register.component';\nimport { DynamicLayoutComponent } from '@abp/ng.core';\n\nconst routes: Routes = [\n { path: '', pathMatch: 'full', redirectTo: 'login' },\n {\n path: '',\n component: DynamicLayoutComponent,\n children: [{ path: 'login', component: LoginComponent }, { path: 'register', component: RegisterComponent }],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class AccountRoutingModule {}\n","import { Component, TemplateRef, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ABP } from '@abp/ng.core';\n\n@Component({\n selector: 'abp-tenant-box',\n templateUrl: './tenant-box.component.html',\n})\nexport class TenantBoxComponent {\n constructor(private modalService: NgbModal, private fb: FormBuilder) {}\n\n form: FormGroup;\n\n selected: ABP.BasicItem;\n\n @ViewChild('modalContent', { static: false })\n modalContent: TemplateRef;\n\n createForm() {\n this.form = this.fb.group({\n name: [this.selected.name],\n });\n }\n\n openModal() {\n this.createForm();\n this.modalService.open(this.modalContent);\n }\n\n onSwitch() {\n this.selected = {} as ABP.BasicItem;\n this.openModal();\n }\n\n save() {\n this.selected = this.form.value;\n this.modalService.dismissAll();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Options } from '../models/options';\n\nexport function optionsFactory(options: Options) {\n return {\n redirectUrl: '/',\n ...options,\n };\n}\n\nexport const ACCOUNT_OPTIONS = new InjectionToken('ACCOUNT_OPTIONS');\n","import { CoreModule } from '@abp/ng.core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { AccountRoutingModule } from './account-routing.module';\nimport { LoginComponent } from './components/login/login.component';\nimport { RegisterComponent } from './components/register/register.component';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { TenantBoxComponent } from './components/tenant-box/tenant-box.component';\nimport { Options } from './models/options';\nimport { ACCOUNT_OPTIONS, optionsFactory } from './tokens/options.token';\nimport { TableModule } from 'primeng/table';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\n\n@NgModule({\n declarations: [LoginComponent, RegisterComponent, TenantBoxComponent],\n imports: [CoreModule, AccountRoutingModule, ThemeSharedModule, TableModule, NgbDropdownModule, NgxValidateCoreModule],\n exports: [],\n})\nexport class AccountModule {\n static forRoot(options = {} as Options): ModuleWithProviders {\n return {\n ngModule: AccountModule,\n providers: [\n { provide: ACCOUNT_OPTIONS, useValue: options },\n {\n provide: 'ACCOUNT_OPTIONS',\n useFactory: optionsFactory,\n deps: [ACCOUNT_OPTIONS],\n },\n ],\n };\n }\n}\n","import { ABP, eLayoutType } from '@abp/ng.core';\n\nexport const ACCOUNT_ROUTES = [\n {\n name: 'Account',\n path: 'account',\n invisible: true,\n layout: eLayoutType.application,\n children: [{ path: 'login', name: 'Login', order: 1 }, { path: 'register', name: 'Register', order: 2 }],\n },\n] as ABP.FullRoute[];\n"]} \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm2015/abp-ng.account.js b/npm/ng-packs/dist/account/esm2015/abp-ng.account.js new file mode 100644 index 00000000000..296db7f0419 --- /dev/null +++ b/npm/ng-packs/dist/account/esm2015/abp-ng.account.js @@ -0,0 +1,14 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { AccountModule, LoginComponent, RegisterComponent, ACCOUNT_ROUTES, optionsFactory, ACCOUNT_OPTIONS } from './public-api'; +export { AccountRoutingModule as ɵe } from './lib/account-routing.module'; +export { LoginComponent as ɵa } from './lib/components/login/login.component'; +export { RegisterComponent as ɵc } from './lib/components/register/register.component'; +export { TenantBoxComponent as ɵd } from './lib/components/tenant-box/tenant-box.component'; +export { ACCOUNT_OPTIONS as ɵg, optionsFactory as ɵf } from './lib/tokens/options.token'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLmFjY291bnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmFjY291bnQvIiwic291cmNlcyI6WyJhYnAtbmcuYWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsa0hBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUMsY0FBYyxJQUFJLEVBQUUsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxpQkFBaUIsSUFBSSxFQUFFLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUMsa0JBQWtCLElBQUksRUFBRSxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFFMUYsT0FBTyxFQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUMsY0FBYyxJQUFJLEVBQUUsRUFBQyxNQUFNLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuXG5leHBvcnQge0FjY291bnRSb3V0aW5nTW9kdWxlIGFzIMm1ZX0gZnJvbSAnLi9saWIvYWNjb3VudC1yb3V0aW5nLm1vZHVsZSc7XG5leHBvcnQge0xvZ2luQ29tcG9uZW50IGFzIMm1YX0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQnO1xuZXhwb3J0IHtSZWdpc3RlckNvbXBvbmVudCBhcyDJtWN9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvcmVnaXN0ZXIvcmVnaXN0ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7VGVuYW50Qm94Q29tcG9uZW50IGFzIMm1ZH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy90ZW5hbnQtYm94L3RlbmFudC1ib3guY29tcG9uZW50JztcbmV4cG9ydCB7T3B0aW9ucyBhcyDJtWJ9IGZyb20gJy4vbGliL21vZGVscy9vcHRpb25zJztcbmV4cG9ydCB7QUNDT1VOVF9PUFRJT05TIGFzIMm1ZyxvcHRpb25zRmFjdG9yeSBhcyDJtWZ9IGZyb20gJy4vbGliL3Rva2Vucy9vcHRpb25zLnRva2VuJzsiXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm2015/lib/account-routing.module.js b/npm/ng-packs/dist/account/esm2015/lib/account-routing.module.js new file mode 100644 index 00000000000..8e133376f83 --- /dev/null +++ b/npm/ng-packs/dist/account/esm2015/lib/account-routing.module.js @@ -0,0 +1,27 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { LoginComponent } from './components/login/login.component'; +import { RegisterComponent } from './components/register/register.component'; +import { DynamicLayoutComponent } from '@abp/ng.core'; +/** @type {?} */ +const routes = [ + { path: '', pathMatch: 'full', redirectTo: 'login' }, + { + path: '', + component: DynamicLayoutComponent, + children: [{ path: 'login', component: LoginComponent }, { path: 'register', component: RegisterComponent }], + }, +]; +export class AccountRoutingModule { +} +AccountRoutingModule.decorators = [ + { type: NgModule, args: [{ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], + },] } +]; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC1yb3V0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuYWNjb3VudC8iLCJzb3VyY2VzIjpbImxpYi9hY2NvdW50LXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDOztNQUVoRCxNQUFNLEdBQVc7SUFDckIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRTtJQUNwRDtRQUNFLElBQUksRUFBRSxFQUFFO1FBQ1IsU0FBUyxFQUFFLHNCQUFzQjtRQUNqQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztLQUM3RztDQUNGO0FBTUQsTUFBTSxPQUFPLG9CQUFvQjs7O1lBSmhDLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7YUFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVzLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTG9naW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50JztcbmltcG9ydCB7IFJlZ2lzdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JlZ2lzdGVyL3JlZ2lzdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnQGFicC9uZy5jb3JlJztcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHsgcGF0aDogJycsIHBhdGhNYXRjaDogJ2Z1bGwnLCByZWRpcmVjdFRvOiAnbG9naW4nIH0sXG4gIHtcbiAgICBwYXRoOiAnJyxcbiAgICBjb21wb25lbnQ6IER5bmFtaWNMYXlvdXRDb21wb25lbnQsXG4gICAgY2hpbGRyZW46IFt7IHBhdGg6ICdsb2dpbicsIGNvbXBvbmVudDogTG9naW5Db21wb25lbnQgfSwgeyBwYXRoOiAncmVnaXN0ZXInLCBjb21wb25lbnQ6IFJlZ2lzdGVyQ29tcG9uZW50IH1dLFxuICB9LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpXSxcbiAgZXhwb3J0czogW1JvdXRlck1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFjY291bnRSb3V0aW5nTW9kdWxlIHt9XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm2015/lib/account.module.js b/npm/ng-packs/dist/account/esm2015/lib/account.module.js new file mode 100644 index 00000000000..6ef606c818a --- /dev/null +++ b/npm/ng-packs/dist/account/esm2015/lib/account.module.js @@ -0,0 +1,42 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { CoreModule } from '@abp/ng.core'; +import { NgModule } from '@angular/core'; +import { AccountRoutingModule } from './account-routing.module'; +import { LoginComponent } from './components/login/login.component'; +import { RegisterComponent } from './components/register/register.component'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { TenantBoxComponent } from './components/tenant-box/tenant-box.component'; +import { ACCOUNT_OPTIONS, optionsFactory } from './tokens/options.token'; +import { TableModule } from 'primeng/table'; +import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { NgxValidateCoreModule } from '@ngx-validate/core'; +export class AccountModule { + /** + * @param {?=} options + * @return {?} + */ + static forRoot(options = (/** @type {?} */ ({}))) { + return { + ngModule: AccountModule, + providers: [ + { provide: ACCOUNT_OPTIONS, useValue: options }, + { + provide: 'ACCOUNT_OPTIONS', + useFactory: optionsFactory, + deps: [ACCOUNT_OPTIONS], + }, + ], + }; + } +} +AccountModule.decorators = [ + { type: NgModule, args: [{ + declarations: [LoginComponent, RegisterComponent, TenantBoxComponent], + imports: [CoreModule, AccountRoutingModule, ThemeSharedModule, TableModule, NgbDropdownModule, NgxValidateCoreModule], + exports: [], + },] } +]; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmFjY291bnQvIiwic291cmNlcyI6WyJsaWIvYWNjb3VudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQU8zRCxNQUFNLE9BQU8sYUFBYTs7Ozs7SUFDeEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsbUJBQUEsRUFBRSxFQUFXO1FBQ3BDLE9BQU87WUFDTCxRQUFRLEVBQUUsYUFBYTtZQUN2QixTQUFTLEVBQUU7Z0JBQ1QsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7Z0JBQy9DO29CQUNFLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFVBQVUsRUFBRSxjQUFjO29CQUMxQixJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUM7aUJBQ3hCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7O1lBbEJGLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUM7Z0JBQ3JFLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLENBQUM7Z0JBQ3JILE9BQU8sRUFBRSxFQUFFO2FBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3JlTW9kdWxlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY2NvdW50Um91dGluZ01vZHVsZSB9IGZyb20gJy4vYWNjb3VudC1yb3V0aW5nLm1vZHVsZSc7XG5pbXBvcnQgeyBMb2dpbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVnaXN0ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVnaXN0ZXIvcmVnaXN0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRoZW1lU2hhcmVkTW9kdWxlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xuaW1wb3J0IHsgVGVuYW50Qm94Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RlbmFudC1ib3gvdGVuYW50LWJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzL29wdGlvbnMnO1xuaW1wb3J0IHsgQUNDT1VOVF9PUFRJT05TLCBvcHRpb25zRmFjdG9yeSB9IGZyb20gJy4vdG9rZW5zL29wdGlvbnMudG9rZW4nO1xuaW1wb3J0IHsgVGFibGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcbmltcG9ydCB7IE5nYkRyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgTmd4VmFsaWRhdGVDb3JlTW9kdWxlIH0gZnJvbSAnQG5neC12YWxpZGF0ZS9jb3JlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTG9naW5Db21wb25lbnQsIFJlZ2lzdGVyQ29tcG9uZW50LCBUZW5hbnRCb3hDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29yZU1vZHVsZSwgQWNjb3VudFJvdXRpbmdNb2R1bGUsIFRoZW1lU2hhcmVkTW9kdWxlLCBUYWJsZU1vZHVsZSwgTmdiRHJvcGRvd25Nb2R1bGUsIE5neFZhbGlkYXRlQ29yZU1vZHVsZV0sXG4gIGV4cG9ydHM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBBY2NvdW50TW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3Qob3B0aW9ucyA9IHt9IGFzIE9wdGlvbnMpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFjY291bnRNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBBQ0NPVU5UX09QVElPTlMsIHVzZVZhbHVlOiBvcHRpb25zIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiAnQUNDT1VOVF9PUFRJT05TJyxcbiAgICAgICAgICB1c2VGYWN0b3J5OiBvcHRpb25zRmFjdG9yeSxcbiAgICAgICAgICBkZXBzOiBbQUNDT1VOVF9PUFRJT05TXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm2015/lib/components/index.js b/npm/ng-packs/dist/account/esm2015/lib/components/index.js new file mode 100644 index 00000000000..13392b51fc9 --- /dev/null +++ b/npm/ng-packs/dist/account/esm2015/lib/components/index.js @@ -0,0 +1,7 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { LoginComponent } from './login/login.component'; +export { RegisterComponent } from './register/register.component'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmFjY291bnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsK0JBQWMseUJBQXlCLENBQUM7QUFDeEMsa0NBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xvZ2luL2xvZ2luLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3JlZ2lzdGVyL3JlZ2lzdGVyLmNvbXBvbmVudCc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm2015/lib/components/login/login.component.js b/npm/ng-packs/dist/account/esm2015/lib/components/login/login.component.js new file mode 100644 index 00000000000..ad6bb46af2d --- /dev/null +++ b/npm/ng-packs/dist/account/esm2015/lib/components/login/login.component.js @@ -0,0 +1,122 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { ConfigGetAppConfiguration, ConfigState } from '@abp/ng.core'; +import { Component, Inject, Optional } from '@angular/core'; +import { FormBuilder, Validators } from '@angular/forms'; +import { Navigate } from '@ngxs/router-plugin'; +import { Store } from '@ngxs/store'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { from, throwError } from 'rxjs'; +import { ToasterService } from '@abp/ng.theme.shared'; +import { catchError, finalize, switchMap, tap } from 'rxjs/operators'; +import snq from 'snq'; +const { maxLength, minLength, required } = Validators; +export class LoginComponent { + /** + * @param {?} fb + * @param {?} oauthService + * @param {?} store + * @param {?} toasterService + * @param {?} options + */ + constructor(fb, oauthService, store, toasterService, options) { + this.fb = fb; + this.oauthService = oauthService; + this.store = store; + this.toasterService = toasterService; + this.options = options; + this.oauthService.configure(this.store.selectSnapshot(ConfigState.getOne('environment')).oAuthConfig); + this.oauthService.loadDiscoveryDocument(); + this.form = this.fb.group({ + username: ['', [required, maxLength(255)]], + password: ['', [required, maxLength(32)]], + remember: [false], + }); + } + /** + * @return {?} + */ + onSubmit() { + if (this.form.invalid) + return; + this.oauthService.setStorage(this.form.value.remember ? localStorage : sessionStorage); + this.inProgress = true; + from(this.oauthService.fetchTokenUsingPasswordFlow(this.form.get('username').value, this.form.get('password').value)) + .pipe(switchMap((/** + * @return {?} + */ + () => this.store.dispatch(new ConfigGetAppConfiguration()))), tap((/** + * @return {?} + */ + () => { + /** @type {?} */ + const redirectUrl = snq((/** + * @return {?} + */ + () => window.history.state)).redirectUrl || (this.options || {}).redirectUrl || '/'; + this.store.dispatch(new Navigate([redirectUrl])); + })), catchError((/** + * @param {?} err + * @return {?} + */ + err => { + this.toasterService.error(snq((/** + * @return {?} + */ + () => err.error.error_description), 'An error occured.'), 'Error'); + return throwError(err); + })), finalize((/** + * @return {?} + */ + () => (this.inProgress = false)))) + .subscribe(); + } +} +LoginComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-login', + template: "
\n" + }] } +]; +/** @nocollapse */ +LoginComponent.ctorParameters = () => [ + { type: FormBuilder }, + { type: OAuthService }, + { type: Store }, + { type: ToasterService }, + { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: ['ACCOUNT_OPTIONS',] }] } +]; +if (false) { + /** @type {?} */ + LoginComponent.prototype.form; + /** @type {?} */ + LoginComponent.prototype.inProgress; + /** + * @type {?} + * @private + */ + LoginComponent.prototype.fb; + /** + * @type {?} + * @private + */ + LoginComponent.prototype.oauthService; + /** + * @type {?} + * @private + */ + LoginComponent.prototype.store; + /** + * @type {?} + * @private + */ + LoginComponent.prototype.toasterService; + /** + * @type {?} + * @private + */ + LoginComponent.prototype.options; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5hY2NvdW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztNQUVoQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsVUFBVTtBQU1yRCxNQUFNLE9BQU8sY0FBYzs7Ozs7Ozs7SUFLekIsWUFDVSxFQUFlLEVBQ2YsWUFBMEIsRUFDMUIsS0FBWSxFQUNaLGNBQThCLEVBQ1MsT0FBZ0I7UUFKdkQsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQU87UUFDWixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDUyxZ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ZmlnR2V0QXBwQ29uZmlndXJhdGlvbiwgQ29uZmlnU3RhdGUgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmF2aWdhdGUgfSBmcm9tICdAbmd4cy9yb3V0ZXItcGx1Z2luJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgeyBmcm9tLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL29wdGlvbnMnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgc25xIGZyb20gJ3NucSc7XG5cbmNvbnN0IHsgbWF4TGVuZ3RoLCBtaW5MZW5ndGgsIHJlcXVpcmVkIH0gPSBWYWxpZGF0b3JzO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtbG9naW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9naW4uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBMb2dpbkNvbXBvbmVudCB7XG4gIGZvcm06IEZvcm1Hcm91cDtcblxuICBpblByb2dyZXNzOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgb2F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnQUNDT1VOVF9PUFRJT05TJykgcHJpdmF0ZSBvcHRpb25zOiBPcHRpb25zLFxuICApIHtcbiAgICB0aGlzLm9hdXRoU2VydmljZS5jb25maWd1cmUodGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChDb25maWdTdGF0ZS5nZXRPbmUoJ2Vudmlyb25tZW50JykpLm9BdXRoQ29uZmlnKTtcbiAgICB0aGlzLm9hdXRoU2VydmljZS5sb2FkRGlzY292ZXJ5RG9jdW1lbnQoKTtcblxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgdXNlcm5hbWU6IFsnJywgW3JlcXVpcmVkLCBtYXhMZW5ndGgoMjU1KV1dLFxuICAgICAgcGFzc3dvcmQ6IFsnJywgW3JlcXVpcmVkLCBtYXhMZW5ndGgoMzIpXV0sXG4gICAgICByZW1lbWJlcjogW2ZhbHNlXSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uU3VibWl0KCkge1xuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkgcmV0dXJuO1xuICAgIHRoaXMub2F1dGhTZXJ2aWNlLnNldFN0b3JhZ2UodGhpcy5mb3JtLnZhbHVlLnJlbWVtYmVyID8gbG9jYWxTdG9yYWdlIDogc2Vzc2lvblN0b3JhZ2UpO1xuXG4gICAgdGhpcy5pblByb2dyZXNzID0gdHJ1ZTtcbiAgICBmcm9tKFxuICAgICAgdGhpcy5vYXV0aFNlcnZpY2UuZmV0Y2hUb2tlblVzaW5nUGFzc3dvcmRGbG93KHRoaXMuZm9ybS5nZXQoJ3VzZXJuYW1lJykudmFsdWUsIHRoaXMuZm9ybS5nZXQoJ3Bhc3N3b3JkJykudmFsdWUpLFxuICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgQ29uZmlnR2V0QXBwQ29uZmlndXJhdGlvbigpKSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVkaXJlY3RVcmwgPSBzbnEoKCkgPT4gd2luZG93Lmhpc3Rvcnkuc3RhdGUpLnJlZGlyZWN0VXJsIHx8ICh0aGlzLm9wdGlvbnMgfHwge30pLnJlZGlyZWN0VXJsIHx8ICcvJztcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOYXZpZ2F0ZShbcmVkaXJlY3RVcmxdKSk7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihzbnEoKCkgPT4gZXJyLmVycm9yLmVycm9yX2Rlc2NyaXB0aW9uLCAnQW4gZXJyb3Igb2NjdXJlZC4nKSwgJ0Vycm9yJyk7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+ICh0aGlzLmluUHJvZ3Jlc3MgPSBmYWxzZSkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm2015/lib/components/register/register.component.js b/npm/ng-packs/dist/account/esm2015/lib/components/register/register.component.js new file mode 100644 index 00000000000..6b43d2db2c1 --- /dev/null +++ b/npm/ng-packs/dist/account/esm2015/lib/components/register/register.component.js @@ -0,0 +1,69 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component } from '@angular/core'; +import { FormBuilder, Validators } from '@angular/forms'; +import { Router } from '@angular/router'; +import { validatePassword } from '@ngx-validate/core'; +import { OAuthService } from 'angular-oauth2-oidc'; +const { maxLength, minLength, required, email } = Validators; +export class RegisterComponent { + /** + * @param {?} fb + * @param {?} oauthService + * @param {?} router + */ + constructor(fb, oauthService, router) { + this.fb = fb; + this.oauthService = oauthService; + this.router = router; + this.form = this.fb.group({ + username: ['', [required, maxLength(255)]], + password: [ + '', + [required, maxLength(32), minLength(6), validatePassword(['small', 'capital', 'number', 'special'])], + ], + email: ['', [required, email]], + }); + } + /** + * @return {?} + */ + onSubmit() { + if (this.form.invalid) + return; + } +} +RegisterComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-register', + template: "
\n
\n \n\n \n
\n
\n" + }] } +]; +/** @nocollapse */ +RegisterComponent.ctorParameters = () => [ + { type: FormBuilder }, + { type: OAuthService }, + { type: Router } +]; +if (false) { + /** @type {?} */ + RegisterComponent.prototype.form; + /** + * @type {?} + * @private + */ + RegisterComponent.prototype.fb; + /** + * @type {?} + * @private + */ + RegisterComponent.prototype.oauthService; + /** + * @type {?} + * @private + */ + RegisterComponent.prototype.router; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5hY2NvdW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcmVnaXN0ZXIvcmVnaXN0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztNQUU3QyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHLFVBQVU7QUFNNUQsTUFBTSxPQUFPLGlCQUFpQjs7Ozs7O0lBRzVCLFlBQW9CLEVBQWUsRUFBVSxZQUEwQixFQUFVLE1BQWM7UUFBM0UsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUM3RixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMxQyxRQUFRLEVBQUU7Z0JBQ1IsRUFBRTtnQkFDRixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQzthQUNyRztZQUNELEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDOzs7O0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztJQUNoQyxDQUFDOzs7WUFwQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxjQUFjO2dCQUN4QiwybENBQXdDO2FBQ3pDOzs7O1lBVlEsV0FBVztZQUdYLFlBQVk7WUFGWixNQUFNOzs7O0lBV2IsaUNBQWdCOzs7OztJQUVKLCtCQUF1Qjs7Ozs7SUFBRSx5Q0FBa0M7Ozs7O0lBQUUsbUNBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHZhbGlkYXRlUGFzc3dvcmQgfSBmcm9tICdAbmd4LXZhbGlkYXRlL2NvcmUnO1xuaW1wb3J0IHsgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5cbmNvbnN0IHsgbWF4TGVuZ3RoLCBtaW5MZW5ndGgsIHJlcXVpcmVkLCBlbWFpbCB9ID0gVmFsaWRhdG9ycztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWJwLXJlZ2lzdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlZ2lzdGVyLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgUmVnaXN0ZXJDb21wb25lbnQge1xuICBmb3JtOiBGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgb2F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIHVzZXJuYW1lOiBbJycsIFtyZXF1aXJlZCwgbWF4TGVuZ3RoKDI1NSldXSxcbiAgICAgIHBhc3N3b3JkOiBbXG4gICAgICAgICcnLFxuICAgICAgICBbcmVxdWlyZWQsIG1heExlbmd0aCgzMiksIG1pbkxlbmd0aCg2KSwgdmFsaWRhdGVQYXNzd29yZChbJ3NtYWxsJywgJ2NhcGl0YWwnLCAnbnVtYmVyJywgJ3NwZWNpYWwnXSldLFxuICAgICAgXSxcbiAgICAgIGVtYWlsOiBbJycsIFtyZXF1aXJlZCwgZW1haWxdXSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uU3VibWl0KCkge1xuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkgcmV0dXJuO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm2015/lib/components/tenant-box/tenant-box.component.js b/npm/ng-packs/dist/account/esm2015/lib/components/tenant-box/tenant-box.component.js new file mode 100644 index 00000000000..078e56c9cd2 --- /dev/null +++ b/npm/ng-packs/dist/account/esm2015/lib/components/tenant-box/tenant-box.component.js @@ -0,0 +1,79 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component, TemplateRef, ViewChild } from '@angular/core'; +import { FormBuilder } from '@angular/forms'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +export class TenantBoxComponent { + /** + * @param {?} modalService + * @param {?} fb + */ + constructor(modalService, fb) { + this.modalService = modalService; + this.fb = fb; + } + /** + * @return {?} + */ + createForm() { + this.form = this.fb.group({ + name: [this.selected.name], + }); + } + /** + * @return {?} + */ + openModal() { + this.createForm(); + this.modalService.open(this.modalContent); + } + /** + * @return {?} + */ + onSwitch() { + this.selected = (/** @type {?} */ ({})); + this.openModal(); + } + /** + * @return {?} + */ + save() { + this.selected = this.form.value; + this.modalService.dismissAll(); + } +} +TenantBoxComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-tenant-box', + template: "\n {{ 'AbpUiMultiTenancy::Tenant' | abpLocalization }}: \n \n {{ selected?.name ? selected.name : ('AbpUiMultiTenancy::NotSelected' | abpLocalization) }}\n \n ({{\n 'AbpUiMultiTenancy::Switch' | abpLocalization\n }})\n\n\n\n
\n
\n SwitchTenant\n
\n \n
\n
\n
\n
\n
\n \n \n
\n

{{ 'AbpUiMultiTenancy::SwitchTenantHint' | abpLocalization }}

\n
\n
\n\n
\n \n \n
\n
\n
\n" + }] } +]; +/** @nocollapse */ +TenantBoxComponent.ctorParameters = () => [ + { type: NgbModal }, + { type: FormBuilder } +]; +TenantBoxComponent.propDecorators = { + modalContent: [{ type: ViewChild, args: ['modalContent', { static: false },] }] +}; +if (false) { + /** @type {?} */ + TenantBoxComponent.prototype.form; + /** @type {?} */ + TenantBoxComponent.prototype.selected; + /** @type {?} */ + TenantBoxComponent.prototype.modalContent; + /** + * @type {?} + * @private + */ + TenantBoxComponent.prototype.modalService; + /** + * @type {?} + * @private + */ + TenantBoxComponent.prototype.fb; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmFjY291bnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy90ZW5hbnQtYm94L3RlbmFudC1ib3guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU90RCxNQUFNLE9BQU8sa0JBQWtCOzs7OztJQUM3QixZQUFvQixZQUFzQixFQUFVLEVBQWU7UUFBL0MsaUJBQVksR0FBWixZQUFZLENBQVU7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFhO0lBQUcsQ0FBQzs7OztJQVN2RSxVQUFVO1FBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDOzs7O0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDNUMsQ0FBQzs7OztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLG1CQUFBLEVBQUUsRUFBaUIsQ0FBQztRQUNwQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQzs7OztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDakMsQ0FBQzs7O1lBakNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQiwydkRBQTBDO2FBQzNDOzs7O1lBTlEsUUFBUTtZQURSLFdBQVc7OzsyQkFlakIsU0FBUyxTQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Ozs7SUFKNUMsa0NBQWdCOztJQUVoQixzQ0FBd0I7O0lBRXhCLDBDQUMrQjs7Ozs7SUFQbkIsMENBQThCOzs7OztJQUFFLGdDQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgQUJQIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWJwLXRlbmFudC1ib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGVuYW50LWJveC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFRlbmFudEJveENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIpIHt9XG5cbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIHNlbGVjdGVkOiBBQlAuQmFzaWNJdGVtO1xuXG4gIEBWaWV3Q2hpbGQoJ21vZGFsQ29udGVudCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBtb2RhbENvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY3JlYXRlRm9ybSgpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIG5hbWU6IFt0aGlzLnNlbGVjdGVkLm5hbWVdLFxuICAgIH0pO1xuICB9XG5cbiAgb3Blbk1vZGFsKCkge1xuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5tb2RhbENvbnRlbnQpO1xuICB9XG5cbiAgb25Td2l0Y2goKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHt9IGFzIEFCUC5CYXNpY0l0ZW07XG4gICAgdGhpcy5vcGVuTW9kYWwoKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMuZm9ybS52YWx1ZTtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm2015/lib/constants/routes.js b/npm/ng-packs/dist/account/esm2015/lib/constants/routes.js new file mode 100644 index 00000000000..9a32a8a71c9 --- /dev/null +++ b/npm/ng-packs/dist/account/esm2015/lib/constants/routes.js @@ -0,0 +1,15 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +export const ACCOUNT_ROUTES = (/** @type {?} */ ([ + { + name: 'Account', + path: 'account', + invisible: true, + layout: "application" /* application */, + children: [{ path: 'login', name: 'Login', order: 1 }, { path: 'register', name: 'Register', order: 2 }], + }, +])); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5hY2NvdW50LyIsInNvdXJjZXMiOlsibGliL2NvbnN0YW50cy9yb3V0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSxNQUFNLE9BQU8sY0FBYyxHQUFHLG1CQUFBO0lBQzVCO1FBQ0UsSUFBSSxFQUFFLFNBQVM7UUFDZixJQUFJLEVBQUUsU0FBUztRQUNmLFNBQVMsRUFBRSxJQUFJO1FBQ2YsTUFBTSxpQ0FBeUI7UUFDL0IsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztLQUN6RztDQUNGLEVBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUJQLCBlTGF5b3V0VHlwZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5cbmV4cG9ydCBjb25zdCBBQ0NPVU5UX1JPVVRFUyA9IFtcbiAge1xuICAgIG5hbWU6ICdBY2NvdW50JyxcbiAgICBwYXRoOiAnYWNjb3VudCcsXG4gICAgaW52aXNpYmxlOiB0cnVlLFxuICAgIGxheW91dDogZUxheW91dFR5cGUuYXBwbGljYXRpb24sXG4gICAgY2hpbGRyZW46IFt7IHBhdGg6ICdsb2dpbicsIG5hbWU6ICdMb2dpbicsIG9yZGVyOiAxIH0sIHsgcGF0aDogJ3JlZ2lzdGVyJywgbmFtZTogJ1JlZ2lzdGVyJywgb3JkZXI6IDIgfV0sXG4gIH0sXG5dIGFzIEFCUC5GdWxsUm91dGVbXTtcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm2015/lib/models/index.js b/npm/ng-packs/dist/account/esm2015/lib/models/index.js new file mode 100644 index 00000000000..2c32b7ae5c3 --- /dev/null +++ b/npm/ng-packs/dist/account/esm2015/lib/models/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export {} from './options'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmFjY291bnQvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxlQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vb3B0aW9ucyc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm2015/lib/models/options.js b/npm/ng-packs/dist/account/esm2015/lib/models/options.js new file mode 100644 index 00000000000..085067c71d0 --- /dev/null +++ b/npm/ng-packs/dist/account/esm2015/lib/models/options.js @@ -0,0 +1,13 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @record + */ +export function Options() { } +if (false) { + /** @type {?|undefined} */ + Options.prototype.redirectUrl; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuYWNjb3VudC8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsNkJBRUM7OztJQURDLDhCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIHJlZGlyZWN0VXJsPzogc3RyaW5nO1xufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm2015/lib/tokens/index.js b/npm/ng-packs/dist/account/esm2015/lib/tokens/index.js new file mode 100644 index 00000000000..7336809f0ae --- /dev/null +++ b/npm/ng-packs/dist/account/esm2015/lib/tokens/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { optionsFactory, ACCOUNT_OPTIONS } from './options.token'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmFjY291bnQvIiwic291cmNlcyI6WyJsaWIvdG9rZW5zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxnREFBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vb3B0aW9ucy50b2tlbic7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm2015/lib/tokens/options.token.js b/npm/ng-packs/dist/account/esm2015/lib/tokens/options.token.js new file mode 100644 index 00000000000..68576d93827 --- /dev/null +++ b/npm/ng-packs/dist/account/esm2015/lib/tokens/options.token.js @@ -0,0 +1,15 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { InjectionToken } from '@angular/core'; +/** + * @param {?} options + * @return {?} + */ +export function optionsFactory(options) { + return Object.assign({ redirectUrl: '/' }, options); +} +/** @type {?} */ +export const ACCOUNT_OPTIONS = new InjectionToken('ACCOUNT_OPTIONS'); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuYWNjb3VudC8iLCJzb3VyY2VzIjpbImxpYi90b2tlbnMvb3B0aW9ucy50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFHL0MsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUFnQjtJQUM3Qyx1QkFDRSxXQUFXLEVBQUUsR0FBRyxJQUNiLE9BQU8sRUFDVjtBQUNKLENBQUM7O0FBRUQsTUFBTSxPQUFPLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAnLi4vbW9kZWxzL29wdGlvbnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gb3B0aW9uc0ZhY3Rvcnkob3B0aW9uczogT3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIHJlZGlyZWN0VXJsOiAnLycsXG4gICAgLi4ub3B0aW9ucyxcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IEFDQ09VTlRfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbignQUNDT1VOVF9PUFRJT05TJyk7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm2015/public-api.js b/npm/ng-packs/dist/account/esm2015/public-api.js new file mode 100644 index 00000000000..420e775c781 --- /dev/null +++ b/npm/ng-packs/dist/account/esm2015/public-api.js @@ -0,0 +1,13 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/* + * Public API Surface of auth + */ +export { AccountModule } from './lib/account.module'; +export { LoginComponent, RegisterComponent } from './lib/components'; +export { ACCOUNT_ROUTES } from './lib/constants/routes'; +export { optionsFactory, ACCOUNT_OPTIONS } from './lib/tokens'; +export {} from './lib/models'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuYWNjb3VudC8iLCJzb3VyY2VzIjpbInB1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBLDhCQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGtEQUFjLGtCQUFrQixDQUFDO0FBQ2pDLCtCQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGdEQUFjLGNBQWMsQ0FBQztBQUM3QixlQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYXV0aFxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2FjY291bnQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uc3RhbnRzL3JvdXRlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2tlbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm5/abp-ng.account.js b/npm/ng-packs/dist/account/esm5/abp-ng.account.js new file mode 100644 index 00000000000..296db7f0419 --- /dev/null +++ b/npm/ng-packs/dist/account/esm5/abp-ng.account.js @@ -0,0 +1,14 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { AccountModule, LoginComponent, RegisterComponent, ACCOUNT_ROUTES, optionsFactory, ACCOUNT_OPTIONS } from './public-api'; +export { AccountRoutingModule as ɵe } from './lib/account-routing.module'; +export { LoginComponent as ɵa } from './lib/components/login/login.component'; +export { RegisterComponent as ɵc } from './lib/components/register/register.component'; +export { TenantBoxComponent as ɵd } from './lib/components/tenant-box/tenant-box.component'; +export { ACCOUNT_OPTIONS as ɵg, optionsFactory as ɵf } from './lib/tokens/options.token'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLmFjY291bnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmFjY291bnQvIiwic291cmNlcyI6WyJhYnAtbmcuYWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsa0hBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUMsY0FBYyxJQUFJLEVBQUUsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxpQkFBaUIsSUFBSSxFQUFFLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUMsa0JBQWtCLElBQUksRUFBRSxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFFMUYsT0FBTyxFQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUMsY0FBYyxJQUFJLEVBQUUsRUFBQyxNQUFNLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuXG5leHBvcnQge0FjY291bnRSb3V0aW5nTW9kdWxlIGFzIMm1ZX0gZnJvbSAnLi9saWIvYWNjb3VudC1yb3V0aW5nLm1vZHVsZSc7XG5leHBvcnQge0xvZ2luQ29tcG9uZW50IGFzIMm1YX0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQnO1xuZXhwb3J0IHtSZWdpc3RlckNvbXBvbmVudCBhcyDJtWN9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvcmVnaXN0ZXIvcmVnaXN0ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7VGVuYW50Qm94Q29tcG9uZW50IGFzIMm1ZH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy90ZW5hbnQtYm94L3RlbmFudC1ib3guY29tcG9uZW50JztcbmV4cG9ydCB7T3B0aW9ucyBhcyDJtWJ9IGZyb20gJy4vbGliL21vZGVscy9vcHRpb25zJztcbmV4cG9ydCB7QUNDT1VOVF9PUFRJT05TIGFzIMm1ZyxvcHRpb25zRmFjdG9yeSBhcyDJtWZ9IGZyb20gJy4vbGliL3Rva2Vucy9vcHRpb25zLnRva2VuJzsiXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm5/lib/account-routing.module.js b/npm/ng-packs/dist/account/esm5/lib/account-routing.module.js new file mode 100644 index 00000000000..2d6afc188a0 --- /dev/null +++ b/npm/ng-packs/dist/account/esm5/lib/account-routing.module.js @@ -0,0 +1,31 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { LoginComponent } from './components/login/login.component'; +import { RegisterComponent } from './components/register/register.component'; +import { DynamicLayoutComponent } from '@abp/ng.core'; +/** @type {?} */ +var routes = [ + { path: '', pathMatch: 'full', redirectTo: 'login' }, + { + path: '', + component: DynamicLayoutComponent, + children: [{ path: 'login', component: LoginComponent }, { path: 'register', component: RegisterComponent }], + }, +]; +var AccountRoutingModule = /** @class */ (function () { + function AccountRoutingModule() { + } + AccountRoutingModule.decorators = [ + { type: NgModule, args: [{ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], + },] } + ]; + return AccountRoutingModule; +}()); +export { AccountRoutingModule }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC1yb3V0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuYWNjb3VudC8iLCJzb3VyY2VzIjpbImxpYi9hY2NvdW50LXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDOztJQUVoRCxNQUFNLEdBQVc7SUFDckIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRTtJQUNwRDtRQUNFLElBQUksRUFBRSxFQUFFO1FBQ1IsU0FBUyxFQUFFLHNCQUFzQjtRQUNqQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztLQUM3RztDQUNGO0FBRUQ7SUFBQTtJQUltQyxDQUFDOztnQkFKbkMsUUFBUSxTQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEI7O0lBQ2tDLDJCQUFDO0NBQUEsQUFKcEMsSUFJb0M7U0FBdkIsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlcywgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExvZ2luQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWdpc3RlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZWdpc3Rlci9yZWdpc3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0xheW91dENvbXBvbmVudCB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5cbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICB7IHBhdGg6ICcnLCBwYXRoTWF0Y2g6ICdmdWxsJywgcmVkaXJlY3RUbzogJ2xvZ2luJyB9LFxuICB7XG4gICAgcGF0aDogJycsXG4gICAgY29tcG9uZW50OiBEeW5hbWljTGF5b3V0Q29tcG9uZW50LFxuICAgIGNoaWxkcmVuOiBbeyBwYXRoOiAnbG9naW4nLCBjb21wb25lbnQ6IExvZ2luQ29tcG9uZW50IH0sIHsgcGF0aDogJ3JlZ2lzdGVyJywgY29tcG9uZW50OiBSZWdpc3RlckNvbXBvbmVudCB9XSxcbiAgfSxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKV0sXG4gIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBBY2NvdW50Um91dGluZ01vZHVsZSB7fVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm5/lib/account.module.js b/npm/ng-packs/dist/account/esm5/lib/account.module.js new file mode 100644 index 00000000000..29e32a120cb --- /dev/null +++ b/npm/ng-packs/dist/account/esm5/lib/account.module.js @@ -0,0 +1,51 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { CoreModule } from '@abp/ng.core'; +import { NgModule } from '@angular/core'; +import { AccountRoutingModule } from './account-routing.module'; +import { LoginComponent } from './components/login/login.component'; +import { RegisterComponent } from './components/register/register.component'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { TenantBoxComponent } from './components/tenant-box/tenant-box.component'; +import { ACCOUNT_OPTIONS, optionsFactory } from './tokens/options.token'; +import { TableModule } from 'primeng/table'; +import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { NgxValidateCoreModule } from '@ngx-validate/core'; +var AccountModule = /** @class */ (function () { + function AccountModule() { + } + /** + * @param {?=} options + * @return {?} + */ + AccountModule.forRoot = /** + * @param {?=} options + * @return {?} + */ + function (options) { + if (options === void 0) { options = (/** @type {?} */ ({})); } + return { + ngModule: AccountModule, + providers: [ + { provide: ACCOUNT_OPTIONS, useValue: options }, + { + provide: 'ACCOUNT_OPTIONS', + useFactory: optionsFactory, + deps: [ACCOUNT_OPTIONS], + }, + ], + }; + }; + AccountModule.decorators = [ + { type: NgModule, args: [{ + declarations: [LoginComponent, RegisterComponent, TenantBoxComponent], + imports: [CoreModule, AccountRoutingModule, ThemeSharedModule, TableModule, NgbDropdownModule, NgxValidateCoreModule], + exports: [], + },] } + ]; + return AccountModule; +}()); +export { AccountModule }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmFjY291bnQvIiwic291cmNlcyI6WyJsaWIvYWNjb3VudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUzRDtJQUFBO0lBbUJBLENBQUM7Ozs7O0lBYlEscUJBQU87Ozs7SUFBZCxVQUFlLE9BQXVCO1FBQXZCLHdCQUFBLEVBQUEsNkJBQVUsRUFBRSxFQUFXO1FBQ3BDLE9BQU87WUFDTCxRQUFRLEVBQUUsYUFBYTtZQUN2QixTQUFTLEVBQUU7Z0JBQ1QsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7Z0JBQy9DO29CQUNFLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFVBQVUsRUFBRSxjQUFjO29CQUMxQixJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUM7aUJBQ3hCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7Z0JBbEJGLFFBQVEsU0FBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUM7b0JBQ3JFLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLENBQUM7b0JBQ3JILE9BQU8sRUFBRSxFQUFFO2lCQUNaOztJQWVELG9CQUFDO0NBQUEsQUFuQkQsSUFtQkM7U0FkWSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWNjb3VudFJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2FjY291bnQtcm91dGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgTG9naW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50JztcbmltcG9ydCB7IFJlZ2lzdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JlZ2lzdGVyL3JlZ2lzdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaGVtZVNoYXJlZE1vZHVsZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IFRlbmFudEJveENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90ZW5hbnQtYm94L3RlbmFudC1ib3guY29tcG9uZW50JztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICcuL21vZGVscy9vcHRpb25zJztcbmltcG9ydCB7IEFDQ09VTlRfT1BUSU9OUywgb3B0aW9uc0ZhY3RvcnkgfSBmcm9tICcuL3Rva2Vucy9vcHRpb25zLnRva2VuJztcbmltcG9ydCB7IFRhYmxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5pbXBvcnQgeyBOZ2JEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IE5neFZhbGlkYXRlQ29yZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdmFsaWRhdGUvY29yZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0xvZ2luQ29tcG9uZW50LCBSZWdpc3RlckNvbXBvbmVudCwgVGVuYW50Qm94Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIEFjY291bnRSb3V0aW5nTW9kdWxlLCBUaGVtZVNoYXJlZE1vZHVsZSwgVGFibGVNb2R1bGUsIE5nYkRyb3Bkb3duTW9kdWxlLCBOZ3hWYWxpZGF0ZUNvcmVNb2R1bGVdLFxuICBleHBvcnRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQWNjb3VudE1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KG9wdGlvbnMgPSB7fSBhcyBPcHRpb25zKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBY2NvdW50TW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQUNDT1VOVF9PUFRJT05TLCB1c2VWYWx1ZTogb3B0aW9ucyB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogJ0FDQ09VTlRfT1BUSU9OUycsXG4gICAgICAgICAgdXNlRmFjdG9yeTogb3B0aW9uc0ZhY3RvcnksXG4gICAgICAgICAgZGVwczogW0FDQ09VTlRfT1BUSU9OU10sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm5/lib/components/index.js b/npm/ng-packs/dist/account/esm5/lib/components/index.js new file mode 100644 index 00000000000..13392b51fc9 --- /dev/null +++ b/npm/ng-packs/dist/account/esm5/lib/components/index.js @@ -0,0 +1,7 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { LoginComponent } from './login/login.component'; +export { RegisterComponent } from './register/register.component'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmFjY291bnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsK0JBQWMseUJBQXlCLENBQUM7QUFDeEMsa0NBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xvZ2luL2xvZ2luLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3JlZ2lzdGVyL3JlZ2lzdGVyLmNvbXBvbmVudCc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm5/lib/components/login/login.component.js b/npm/ng-packs/dist/account/esm5/lib/components/login/login.component.js new file mode 100644 index 00000000000..d9054ef8b28 --- /dev/null +++ b/npm/ng-packs/dist/account/esm5/lib/components/login/login.component.js @@ -0,0 +1,121 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { ConfigGetAppConfiguration, ConfigState } from '@abp/ng.core'; +import { Component, Inject, Optional } from '@angular/core'; +import { FormBuilder, Validators } from '@angular/forms'; +import { Navigate } from '@ngxs/router-plugin'; +import { Store } from '@ngxs/store'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { from, throwError } from 'rxjs'; +import { ToasterService } from '@abp/ng.theme.shared'; +import { catchError, finalize, switchMap, tap } from 'rxjs/operators'; +import snq from 'snq'; +var maxLength = Validators.maxLength, minLength = Validators.minLength, required = Validators.required; +var LoginComponent = /** @class */ (function () { + function LoginComponent(fb, oauthService, store, toasterService, options) { + this.fb = fb; + this.oauthService = oauthService; + this.store = store; + this.toasterService = toasterService; + this.options = options; + this.oauthService.configure(this.store.selectSnapshot(ConfigState.getOne('environment')).oAuthConfig); + this.oauthService.loadDiscoveryDocument(); + this.form = this.fb.group({ + username: ['', [required, maxLength(255)]], + password: ['', [required, maxLength(32)]], + remember: [false], + }); + } + /** + * @return {?} + */ + LoginComponent.prototype.onSubmit = /** + * @return {?} + */ + function () { + var _this = this; + if (this.form.invalid) + return; + this.oauthService.setStorage(this.form.value.remember ? localStorage : sessionStorage); + this.inProgress = true; + from(this.oauthService.fetchTokenUsingPasswordFlow(this.form.get('username').value, this.form.get('password').value)) + .pipe(switchMap((/** + * @return {?} + */ + function () { return _this.store.dispatch(new ConfigGetAppConfiguration()); })), tap((/** + * @return {?} + */ + function () { + /** @type {?} */ + var redirectUrl = snq((/** + * @return {?} + */ + function () { return window.history.state; })).redirectUrl || (_this.options || {}).redirectUrl || '/'; + _this.store.dispatch(new Navigate([redirectUrl])); + })), catchError((/** + * @param {?} err + * @return {?} + */ + function (err) { + _this.toasterService.error(snq((/** + * @return {?} + */ + function () { return err.error.error_description; }), 'An error occured.'), 'Error'); + return throwError(err); + })), finalize((/** + * @return {?} + */ + function () { return (_this.inProgress = false); }))) + .subscribe(); + }; + LoginComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-login', + template: "
\n" + }] } + ]; + /** @nocollapse */ + LoginComponent.ctorParameters = function () { return [ + { type: FormBuilder }, + { type: OAuthService }, + { type: Store }, + { type: ToasterService }, + { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: ['ACCOUNT_OPTIONS',] }] } + ]; }; + return LoginComponent; +}()); +export { LoginComponent }; +if (false) { + /** @type {?} */ + LoginComponent.prototype.form; + /** @type {?} */ + LoginComponent.prototype.inProgress; + /** + * @type {?} + * @private + */ + LoginComponent.prototype.fb; + /** + * @type {?} + * @private + */ + LoginComponent.prototype.oauthService; + /** + * @type {?} + * @private + */ + LoginComponent.prototype.store; + /** + * @type {?} + * @private + */ + LoginComponent.prototype.toasterService; + /** + * @type {?} + * @private + */ + LoginComponent.prototype.options; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5hY2NvdW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztBQUVkLElBQUEsZ0NBQVMsRUFBRSxnQ0FBUyxFQUFFLDhCQUFRO0FBRXRDO0lBU0Usd0JBQ1UsRUFBZSxFQUNmLFlBQTBCLEVBQzFCLEtBQVksRUFDWixjQUE4QixFQUNTLE9BQWdCO1FBSnZELE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ1MsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUUvRCxJQUFJLENBQUMs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SUFDdEMsaUNBQStEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlnR2V0QXBwQ29uZmlndXJhdGlvbiwgQ29uZmlnU3RhdGUgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmF2aWdhdGUgfSBmcm9tICdAbmd4cy9yb3V0ZXItcGx1Z2luJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgeyBmcm9tLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL29wdGlvbnMnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgc25xIGZyb20gJ3NucSc7XG5cbmNvbnN0IHsgbWF4TGVuZ3RoLCBtaW5MZW5ndGgsIHJlcXVpcmVkIH0gPSBWYWxpZGF0b3JzO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtbG9naW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9naW4uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBMb2dpbkNvbXBvbmVudCB7XG4gIGZvcm06IEZvcm1Hcm91cDtcblxuICBpblByb2dyZXNzOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgb2F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnQUNDT1VOVF9PUFRJT05TJykgcHJpdmF0ZSBvcHRpb25zOiBPcHRpb25zLFxuICApIHtcbiAgICB0aGlzLm9hdXRoU2VydmljZS5jb25maWd1cmUodGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChDb25maWdTdGF0ZS5nZXRPbmUoJ2Vudmlyb25tZW50JykpLm9BdXRoQ29uZmlnKTtcbiAgICB0aGlzLm9hdXRoU2VydmljZS5sb2FkRGlzY292ZXJ5RG9jdW1lbnQoKTtcblxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgdXNlcm5hbWU6IFsnJywgW3JlcXVpcmVkLCBtYXhMZW5ndGgoMjU1KV1dLFxuICAgICAgcGFzc3dvcmQ6IFsnJywgW3JlcXVpcmVkLCBtYXhMZW5ndGgoMzIpXV0sXG4gICAgICByZW1lbWJlcjogW2ZhbHNlXSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uU3VibWl0KCkge1xuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkgcmV0dXJuO1xuICAgIHRoaXMub2F1dGhTZXJ2aWNlLnNldFN0b3JhZ2UodGhpcy5mb3JtLnZhbHVlLnJlbWVtYmVyID8gbG9jYWxTdG9yYWdlIDogc2Vzc2lvblN0b3JhZ2UpO1xuXG4gICAgdGhpcy5pblByb2dyZXNzID0gdHJ1ZTtcbiAgICBmcm9tKFxuICAgICAgdGhpcy5vYXV0aFNlcnZpY2UuZmV0Y2hUb2tlblVzaW5nUGFzc3dvcmRGbG93KHRoaXMuZm9ybS5nZXQoJ3VzZXJuYW1lJykudmFsdWUsIHRoaXMuZm9ybS5nZXQoJ3Bhc3N3b3JkJykudmFsdWUpLFxuICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgQ29uZmlnR2V0QXBwQ29uZmlndXJhdGlvbigpKSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVkaXJlY3RVcmwgPSBzbnEoKCkgPT4gd2luZG93Lmhpc3Rvcnkuc3RhdGUpLnJlZGlyZWN0VXJsIHx8ICh0aGlzLm9wdGlvbnMgfHwge30pLnJlZGlyZWN0VXJsIHx8ICcvJztcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOYXZpZ2F0ZShbcmVkaXJlY3RVcmxdKSk7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihzbnEoKCkgPT4gZXJyLmVycm9yLmVycm9yX2Rlc2NyaXB0aW9uLCAnQW4gZXJyb3Igb2NjdXJlZC4nKSwgJ0Vycm9yJyk7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+ICh0aGlzLmluUHJvZ3Jlc3MgPSBmYWxzZSkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm5/lib/components/register/register.component.js b/npm/ng-packs/dist/account/esm5/lib/components/register/register.component.js new file mode 100644 index 00000000000..2034a3fa9e4 --- /dev/null +++ b/npm/ng-packs/dist/account/esm5/lib/components/register/register.component.js @@ -0,0 +1,69 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component } from '@angular/core'; +import { FormBuilder, Validators } from '@angular/forms'; +import { Router } from '@angular/router'; +import { validatePassword } from '@ngx-validate/core'; +import { OAuthService } from 'angular-oauth2-oidc'; +var maxLength = Validators.maxLength, minLength = Validators.minLength, required = Validators.required, email = Validators.email; +var RegisterComponent = /** @class */ (function () { + function RegisterComponent(fb, oauthService, router) { + this.fb = fb; + this.oauthService = oauthService; + this.router = router; + this.form = this.fb.group({ + username: ['', [required, maxLength(255)]], + password: [ + '', + [required, maxLength(32), minLength(6), validatePassword(['small', 'capital', 'number', 'special'])], + ], + email: ['', [required, email]], + }); + } + /** + * @return {?} + */ + RegisterComponent.prototype.onSubmit = /** + * @return {?} + */ + function () { + if (this.form.invalid) + return; + }; + RegisterComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-register', + template: "
\n
\n \n\n \n
\n
\n" + }] } + ]; + /** @nocollapse */ + RegisterComponent.ctorParameters = function () { return [ + { type: FormBuilder }, + { type: OAuthService }, + { type: Router } + ]; }; + return RegisterComponent; +}()); +export { RegisterComponent }; +if (false) { + /** @type {?} */ + RegisterComponent.prototype.form; + /** + * @type {?} + * @private + */ + RegisterComponent.prototype.fb; + /** + * @type {?} + * @private + */ + RegisterComponent.prototype.oauthService; + /** + * @type {?} + * @private + */ + RegisterComponent.prototype.router; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5hY2NvdW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcmVnaXN0ZXIvcmVnaXN0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUzQyxJQUFBLGdDQUFTLEVBQUUsZ0NBQVMsRUFBRSw4QkFBUSxFQUFFLHdCQUFLO0FBRTdDO0lBT0UsMkJBQW9CLEVBQWUsRUFBVSxZQUEwQixFQUFVLE1BQWM7UUFBM0UsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUM3RixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMxQyxRQUFRLEVBQUU7Z0JBQ1IsRUFBRTtnQkFDRixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQzthQUNyRztZQUNELEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDOzs7O0lBRUQsb0NBQVE7OztJQUFSO1FBQ0UsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO0lBQ2hDLENBQUM7O2dCQXBCRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLDJsQ0FBd0M7aUJBQ3pDOzs7O2dCQVZRLFdBQVc7Z0JBR1gsWUFBWTtnQkFGWixNQUFNOztJQTJCZix3QkFBQztDQUFBLEFBckJELElBcUJDO1NBakJZLGlCQUFpQjs7O0lBQzVCLGlDQUFnQjs7Ozs7SUFFSiwrQkFBdUI7Ozs7O0lBQUUseUNBQWtDOzs7OztJQUFFLG1DQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB2YWxpZGF0ZVBhc3N3b3JkIH0gZnJvbSAnQG5neC12YWxpZGF0ZS9jb3JlJztcbmltcG9ydCB7IE9BdXRoU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xuXG5jb25zdCB7IG1heExlbmd0aCwgbWluTGVuZ3RoLCByZXF1aXJlZCwgZW1haWwgfSA9IFZhbGlkYXRvcnM7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FicC1yZWdpc3RlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWdpc3Rlci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFJlZ2lzdGVyQ29tcG9uZW50IHtcbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIG9hdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICB1c2VybmFtZTogWycnLCBbcmVxdWlyZWQsIG1heExlbmd0aCgyNTUpXV0sXG4gICAgICBwYXNzd29yZDogW1xuICAgICAgICAnJyxcbiAgICAgICAgW3JlcXVpcmVkLCBtYXhMZW5ndGgoMzIpLCBtaW5MZW5ndGgoNiksIHZhbGlkYXRlUGFzc3dvcmQoWydzbWFsbCcsICdjYXBpdGFsJywgJ251bWJlcicsICdzcGVjaWFsJ10pXSxcbiAgICAgIF0sXG4gICAgICBlbWFpbDogWycnLCBbcmVxdWlyZWQsIGVtYWlsXV0sXG4gICAgfSk7XG4gIH1cblxuICBvblN1Ym1pdCgpIHtcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHJldHVybjtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm5/lib/components/tenant-box/tenant-box.component.js b/npm/ng-packs/dist/account/esm5/lib/components/tenant-box/tenant-box.component.js new file mode 100644 index 00000000000..5a20c66ee8c --- /dev/null +++ b/npm/ng-packs/dist/account/esm5/lib/components/tenant-box/tenant-box.component.js @@ -0,0 +1,89 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component, TemplateRef, ViewChild } from '@angular/core'; +import { FormBuilder } from '@angular/forms'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +var TenantBoxComponent = /** @class */ (function () { + function TenantBoxComponent(modalService, fb) { + this.modalService = modalService; + this.fb = fb; + } + /** + * @return {?} + */ + TenantBoxComponent.prototype.createForm = /** + * @return {?} + */ + function () { + this.form = this.fb.group({ + name: [this.selected.name], + }); + }; + /** + * @return {?} + */ + TenantBoxComponent.prototype.openModal = /** + * @return {?} + */ + function () { + this.createForm(); + this.modalService.open(this.modalContent); + }; + /** + * @return {?} + */ + TenantBoxComponent.prototype.onSwitch = /** + * @return {?} + */ + function () { + this.selected = (/** @type {?} */ ({})); + this.openModal(); + }; + /** + * @return {?} + */ + TenantBoxComponent.prototype.save = /** + * @return {?} + */ + function () { + this.selected = this.form.value; + this.modalService.dismissAll(); + }; + TenantBoxComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-tenant-box', + template: "\n {{ 'AbpUiMultiTenancy::Tenant' | abpLocalization }}: \n \n {{ selected?.name ? selected.name : ('AbpUiMultiTenancy::NotSelected' | abpLocalization) }}\n \n ({{\n 'AbpUiMultiTenancy::Switch' | abpLocalization\n }})\n\n\n\n
\n
\n SwitchTenant\n
\n \n
\n
\n
\n
\n
\n \n \n
\n

{{ 'AbpUiMultiTenancy::SwitchTenantHint' | abpLocalization }}

\n
\n
\n\n
\n \n \n
\n
\n
\n" + }] } + ]; + /** @nocollapse */ + TenantBoxComponent.ctorParameters = function () { return [ + { type: NgbModal }, + { type: FormBuilder } + ]; }; + TenantBoxComponent.propDecorators = { + modalContent: [{ type: ViewChild, args: ['modalContent', { static: false },] }] + }; + return TenantBoxComponent; +}()); +export { TenantBoxComponent }; +if (false) { + /** @type {?} */ + TenantBoxComponent.prototype.form; + /** @type {?} */ + TenantBoxComponent.prototype.selected; + /** @type {?} */ + TenantBoxComponent.prototype.modalContent; + /** + * @type {?} + * @private + */ + TenantBoxComponent.prototype.modalService; + /** + * @type {?} + * @private + */ + TenantBoxComponent.prototype.fb; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmFjY291bnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy90ZW5hbnQtYm94L3RlbmFudC1ib3guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUd0RDtJQUtFLDRCQUFvQixZQUFzQixFQUFVLEVBQWU7UUFBL0MsaUJBQVksR0FBWixZQUFZLENBQVU7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFhO0lBQUcsQ0FBQzs7OztJQVN2RSx1Q0FBVTs7O0lBQVY7UUFDRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3hCLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7Ozs7SUFFRCxzQ0FBUzs7O0lBQVQ7UUFDRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzVDLENBQUM7Ozs7SUFFRCxxQ0FBUTs7O0lBQVI7UUFDRSxJQUFJLENBQUMsUUFBUSxHQUFHLG1CQUFBLEVBQUUsRUFBaUIsQ0FBQztRQUNwQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQzs7OztJQUVELGlDQUFJOzs7SUFBSjtRQUNFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNqQyxDQUFDOztnQkFqQ0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLDJ2REFBMEM7aUJBQzNDOzs7O2dCQU5RLFFBQVE7Z0JBRFIsV0FBVzs7OytCQWVqQixTQUFTLFNBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7SUF1QjlDLHlCQUFDO0NBQUEsQUFsQ0QsSUFrQ0M7U0E5Qlksa0JBQWtCOzs7SUFHN0Isa0NBQWdCOztJQUVoQixzQ0FBd0I7O0lBRXhCLDBDQUMrQjs7Ozs7SUFQbkIsMENBQThCOzs7OztJQUFFLGdDQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgQUJQIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWJwLXRlbmFudC1ib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGVuYW50LWJveC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFRlbmFudEJveENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIpIHt9XG5cbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIHNlbGVjdGVkOiBBQlAuQmFzaWNJdGVtO1xuXG4gIEBWaWV3Q2hpbGQoJ21vZGFsQ29udGVudCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBtb2RhbENvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY3JlYXRlRm9ybSgpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIG5hbWU6IFt0aGlzLnNlbGVjdGVkLm5hbWVdLFxuICAgIH0pO1xuICB9XG5cbiAgb3Blbk1vZGFsKCkge1xuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5tb2RhbENvbnRlbnQpO1xuICB9XG5cbiAgb25Td2l0Y2goKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHt9IGFzIEFCUC5CYXNpY0l0ZW07XG4gICAgdGhpcy5vcGVuTW9kYWwoKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMuZm9ybS52YWx1ZTtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm5/lib/constants/routes.js b/npm/ng-packs/dist/account/esm5/lib/constants/routes.js new file mode 100644 index 00000000000..28d22408007 --- /dev/null +++ b/npm/ng-packs/dist/account/esm5/lib/constants/routes.js @@ -0,0 +1,15 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +export var ACCOUNT_ROUTES = (/** @type {?} */ ([ + { + name: 'Account', + path: 'account', + invisible: true, + layout: "application" /* application */, + children: [{ path: 'login', name: 'Login', order: 1 }, { path: 'register', name: 'Register', order: 2 }], + }, +])); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5hY2NvdW50LyIsInNvdXJjZXMiOlsibGliL2NvbnN0YW50cy9yb3V0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSxNQUFNLEtBQU8sY0FBYyxHQUFHLG1CQUFBO0lBQzVCO1FBQ0UsSUFBSSxFQUFFLFNBQVM7UUFDZixJQUFJLEVBQUUsU0FBUztRQUNmLFNBQVMsRUFBRSxJQUFJO1FBQ2YsTUFBTSxpQ0FBeUI7UUFDL0IsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztLQUN6RztDQUNGLEVBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUJQLCBlTGF5b3V0VHlwZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5cbmV4cG9ydCBjb25zdCBBQ0NPVU5UX1JPVVRFUyA9IFtcbiAge1xuICAgIG5hbWU6ICdBY2NvdW50JyxcbiAgICBwYXRoOiAnYWNjb3VudCcsXG4gICAgaW52aXNpYmxlOiB0cnVlLFxuICAgIGxheW91dDogZUxheW91dFR5cGUuYXBwbGljYXRpb24sXG4gICAgY2hpbGRyZW46IFt7IHBhdGg6ICdsb2dpbicsIG5hbWU6ICdMb2dpbicsIG9yZGVyOiAxIH0sIHsgcGF0aDogJ3JlZ2lzdGVyJywgbmFtZTogJ1JlZ2lzdGVyJywgb3JkZXI6IDIgfV0sXG4gIH0sXG5dIGFzIEFCUC5GdWxsUm91dGVbXTtcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm5/lib/models/index.js b/npm/ng-packs/dist/account/esm5/lib/models/index.js new file mode 100644 index 00000000000..2c32b7ae5c3 --- /dev/null +++ b/npm/ng-packs/dist/account/esm5/lib/models/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export {} from './options'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmFjY291bnQvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxlQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vb3B0aW9ucyc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm5/lib/models/options.js b/npm/ng-packs/dist/account/esm5/lib/models/options.js new file mode 100644 index 00000000000..085067c71d0 --- /dev/null +++ b/npm/ng-packs/dist/account/esm5/lib/models/options.js @@ -0,0 +1,13 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @record + */ +export function Options() { } +if (false) { + /** @type {?|undefined} */ + Options.prototype.redirectUrl; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuYWNjb3VudC8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsNkJBRUM7OztJQURDLDhCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIHJlZGlyZWN0VXJsPzogc3RyaW5nO1xufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm5/lib/tokens/index.js b/npm/ng-packs/dist/account/esm5/lib/tokens/index.js new file mode 100644 index 00000000000..7336809f0ae --- /dev/null +++ b/npm/ng-packs/dist/account/esm5/lib/tokens/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { optionsFactory, ACCOUNT_OPTIONS } from './options.token'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmFjY291bnQvIiwic291cmNlcyI6WyJsaWIvdG9rZW5zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxnREFBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vb3B0aW9ucy50b2tlbic7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm5/lib/tokens/options.token.js b/npm/ng-packs/dist/account/esm5/lib/tokens/options.token.js new file mode 100644 index 00000000000..f5241eb3657 --- /dev/null +++ b/npm/ng-packs/dist/account/esm5/lib/tokens/options.token.js @@ -0,0 +1,16 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { InjectionToken } from '@angular/core'; +/** + * @param {?} options + * @return {?} + */ +export function optionsFactory(options) { + return tslib_1.__assign({ redirectUrl: '/' }, options); +} +/** @type {?} */ +export var ACCOUNT_OPTIONS = new InjectionToken('ACCOUNT_OPTIONS'); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuYWNjb3VudC8iLCJzb3VyY2VzIjpbImxpYi90b2tlbnMvb3B0aW9ucy50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBRy9DLE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBZ0I7SUFDN0MsMEJBQ0UsV0FBVyxFQUFFLEdBQUcsSUFDYixPQUFPLEVBQ1Y7QUFDSixDQUFDOztBQUVELE1BQU0sS0FBTyxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQUMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJy4uL21vZGVscy9vcHRpb25zJztcblxuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbnNGYWN0b3J5KG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgcmV0dXJuIHtcbiAgICByZWRpcmVjdFVybDogJy8nLFxuICAgIC4uLm9wdGlvbnMsXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBBQ0NPVU5UX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0FDQ09VTlRfT1BUSU9OUycpO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/account/esm5/public-api.js b/npm/ng-packs/dist/account/esm5/public-api.js new file mode 100644 index 00000000000..420e775c781 --- /dev/null +++ b/npm/ng-packs/dist/account/esm5/public-api.js @@ -0,0 +1,13 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/* + * Public API Surface of auth + */ +export { AccountModule } from './lib/account.module'; +export { LoginComponent, RegisterComponent } from './lib/components'; +export { ACCOUNT_ROUTES } from './lib/constants/routes'; +export { optionsFactory, ACCOUNT_OPTIONS } from './lib/tokens'; +export {} from './lib/models'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuYWNjb3VudC8iLCJzb3VyY2VzIjpbInB1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBLDhCQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGtEQUFjLGtCQUFrQixDQUFDO0FBQ2pDLCtCQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGdEQUFjLGNBQWMsQ0FBQztBQUM3QixlQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYXV0aFxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2FjY291bnQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uc3RhbnRzL3JvdXRlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2tlbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/account/fesm2015/abp-ng.account.js b/npm/ng-packs/dist/account/fesm2015/abp-ng.account.js new file mode 100644 index 00000000000..9f53d99bfcf --- /dev/null +++ b/npm/ng-packs/dist/account/fesm2015/abp-ng.account.js @@ -0,0 +1,283 @@ +import { ConfigState, ConfigGetAppConfiguration, DynamicLayoutComponent, CoreModule } from '@abp/ng.core'; +import { Component, Optional, Inject, NgModule, ViewChild, InjectionToken } from '@angular/core'; +import { Router, RouterModule } from '@angular/router'; +import { FormBuilder, Validators } from '@angular/forms'; +import { Navigate } from '@ngxs/router-plugin'; +import { Store } from '@ngxs/store'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { from, throwError } from 'rxjs'; +import { ToasterService, ThemeSharedModule } from '@abp/ng.theme.shared'; +import { switchMap, tap, catchError, finalize } from 'rxjs/operators'; +import snq from 'snq'; +import { validatePassword, NgxValidateCoreModule } from '@ngx-validate/core'; +import { NgbModal, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { TableModule } from 'primeng/table'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +const { maxLength, minLength, required } = Validators; +class LoginComponent { + /** + * @param {?} fb + * @param {?} oauthService + * @param {?} store + * @param {?} toasterService + * @param {?} options + */ + constructor(fb, oauthService, store, toasterService, options) { + this.fb = fb; + this.oauthService = oauthService; + this.store = store; + this.toasterService = toasterService; + this.options = options; + this.oauthService.configure(this.store.selectSnapshot(ConfigState.getOne('environment')).oAuthConfig); + this.oauthService.loadDiscoveryDocument(); + this.form = this.fb.group({ + username: ['', [required, maxLength(255)]], + password: ['', [required, maxLength(32)]], + remember: [false], + }); + } + /** + * @return {?} + */ + onSubmit() { + if (this.form.invalid) + return; + this.oauthService.setStorage(this.form.value.remember ? localStorage : sessionStorage); + this.inProgress = true; + from(this.oauthService.fetchTokenUsingPasswordFlow(this.form.get('username').value, this.form.get('password').value)) + .pipe(switchMap((/** + * @return {?} + */ + () => this.store.dispatch(new ConfigGetAppConfiguration()))), tap((/** + * @return {?} + */ + () => { + /** @type {?} */ + const redirectUrl = snq((/** + * @return {?} + */ + () => window.history.state)).redirectUrl || (this.options || {}).redirectUrl || '/'; + this.store.dispatch(new Navigate([redirectUrl])); + })), catchError((/** + * @param {?} err + * @return {?} + */ + err => { + this.toasterService.error(snq((/** + * @return {?} + */ + () => err.error.error_description), 'An error occured.'), 'Error'); + return throwError(err); + })), finalize((/** + * @return {?} + */ + () => (this.inProgress = false)))) + .subscribe(); + } +} +LoginComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-login', + template: "
\n" + }] } +]; +/** @nocollapse */ +LoginComponent.ctorParameters = () => [ + { type: FormBuilder }, + { type: OAuthService }, + { type: Store }, + { type: ToasterService }, + { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: ['ACCOUNT_OPTIONS',] }] } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +const { maxLength: maxLength$1, minLength: minLength$1, required: required$1, email } = Validators; +class RegisterComponent { + /** + * @param {?} fb + * @param {?} oauthService + * @param {?} router + */ + constructor(fb, oauthService, router) { + this.fb = fb; + this.oauthService = oauthService; + this.router = router; + this.form = this.fb.group({ + username: ['', [required$1, maxLength$1(255)]], + password: [ + '', + [required$1, maxLength$1(32), minLength$1(6), validatePassword(['small', 'capital', 'number', 'special'])], + ], + email: ['', [required$1, email]], + }); + } + /** + * @return {?} + */ + onSubmit() { + if (this.form.invalid) + return; + } +} +RegisterComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-register', + template: "
\n
\n \n\n \n
\n
\n" + }] } +]; +/** @nocollapse */ +RegisterComponent.ctorParameters = () => [ + { type: FormBuilder }, + { type: OAuthService }, + { type: Router } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +const routes = [ + { path: '', pathMatch: 'full', redirectTo: 'login' }, + { + path: '', + component: DynamicLayoutComponent, + children: [{ path: 'login', component: LoginComponent }, { path: 'register', component: RegisterComponent }], + }, +]; +class AccountRoutingModule { +} +AccountRoutingModule.decorators = [ + { type: NgModule, args: [{ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], + },] } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class TenantBoxComponent { + /** + * @param {?} modalService + * @param {?} fb + */ + constructor(modalService, fb) { + this.modalService = modalService; + this.fb = fb; + } + /** + * @return {?} + */ + createForm() { + this.form = this.fb.group({ + name: [this.selected.name], + }); + } + /** + * @return {?} + */ + openModal() { + this.createForm(); + this.modalService.open(this.modalContent); + } + /** + * @return {?} + */ + onSwitch() { + this.selected = (/** @type {?} */ ({})); + this.openModal(); + } + /** + * @return {?} + */ + save() { + this.selected = this.form.value; + this.modalService.dismissAll(); + } +} +TenantBoxComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-tenant-box', + template: "\n {{ 'AbpUiMultiTenancy::Tenant' | abpLocalization }}: \n \n {{ selected?.name ? selected.name : ('AbpUiMultiTenancy::NotSelected' | abpLocalization) }}\n \n ({{\n 'AbpUiMultiTenancy::Switch' | abpLocalization\n }})\n\n\n\n
\n
\n SwitchTenant\n
\n \n
\n
\n
\n
\n
\n \n \n
\n

{{ 'AbpUiMultiTenancy::SwitchTenantHint' | abpLocalization }}

\n
\n
\n\n
\n \n \n
\n
\n
\n" + }] } +]; +/** @nocollapse */ +TenantBoxComponent.ctorParameters = () => [ + { type: NgbModal }, + { type: FormBuilder } +]; +TenantBoxComponent.propDecorators = { + modalContent: [{ type: ViewChild, args: ['modalContent', { static: false },] }] +}; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @param {?} options + * @return {?} + */ +function optionsFactory(options) { + return Object.assign({ redirectUrl: '/' }, options); +} +/** @type {?} */ +const ACCOUNT_OPTIONS = new InjectionToken('ACCOUNT_OPTIONS'); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class AccountModule { + /** + * @param {?=} options + * @return {?} + */ + static forRoot(options = (/** @type {?} */ ({}))) { + return { + ngModule: AccountModule, + providers: [ + { provide: ACCOUNT_OPTIONS, useValue: options }, + { + provide: 'ACCOUNT_OPTIONS', + useFactory: optionsFactory, + deps: [ACCOUNT_OPTIONS], + }, + ], + }; + } +} +AccountModule.decorators = [ + { type: NgModule, args: [{ + declarations: [LoginComponent, RegisterComponent, TenantBoxComponent], + imports: [CoreModule, AccountRoutingModule, ThemeSharedModule, TableModule, NgbDropdownModule, NgxValidateCoreModule], + exports: [], + },] } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +const ACCOUNT_ROUTES = (/** @type {?} */ ([ + { + name: 'Account', + path: 'account', + invisible: true, + layout: "application" /* application */, + children: [{ path: 'login', name: 'Login', order: 1 }, { path: 'register', name: 'Register', order: 2 }], + }, +])); + +export { ACCOUNT_OPTIONS, ACCOUNT_ROUTES, AccountModule, LoginComponent, RegisterComponent, optionsFactory, LoginComponent as ɵa, RegisterComponent as ɵc, TenantBoxComponent as ɵd, AccountRoutingModule as ɵe, optionsFactory as ɵf, ACCOUNT_OPTIONS as ɵg }; +//# sourceMappingURL=abp-ng.account.js.map diff --git a/npm/ng-packs/dist/account/fesm2015/abp-ng.account.js.map b/npm/ng-packs/dist/account/fesm2015/abp-ng.account.js.map new file mode 100644 index 00000000000..14703f67e9e --- /dev/null +++ b/npm/ng-packs/dist/account/fesm2015/abp-ng.account.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.account.js","sources":["ng://@abp/ng.account/lib/components/login/login.component.ts","ng://@abp/ng.account/lib/components/register/register.component.ts","ng://@abp/ng.account/lib/account-routing.module.ts","ng://@abp/ng.account/lib/components/tenant-box/tenant-box.component.ts","ng://@abp/ng.account/lib/tokens/options.token.ts","ng://@abp/ng.account/lib/account.module.ts","ng://@abp/ng.account/lib/constants/routes.ts"],"sourcesContent":["import { ConfigGetAppConfiguration, ConfigState } from '@abp/ng.core';\nimport { Component, Inject, Optional } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Navigate } from '@ngxs/router-plugin';\nimport { Store } from '@ngxs/store';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { from, throwError } from 'rxjs';\nimport { Options } from '../../models/options';\nimport { ToasterService } from '@abp/ng.theme.shared';\nimport { catchError, finalize, switchMap, tap } from 'rxjs/operators';\nimport snq from 'snq';\n\nconst { maxLength, minLength, required } = Validators;\n\n@Component({\n selector: 'abp-login',\n templateUrl: './login.component.html',\n})\nexport class LoginComponent {\n form: FormGroup;\n\n inProgress: boolean;\n\n constructor(\n private fb: FormBuilder,\n private oauthService: OAuthService,\n private store: Store,\n private toasterService: ToasterService,\n @Optional() @Inject('ACCOUNT_OPTIONS') private options: Options,\n ) {\n this.oauthService.configure(this.store.selectSnapshot(ConfigState.getOne('environment')).oAuthConfig);\n this.oauthService.loadDiscoveryDocument();\n\n this.form = this.fb.group({\n username: ['', [required, maxLength(255)]],\n password: ['', [required, maxLength(32)]],\n remember: [false],\n });\n }\n\n onSubmit() {\n if (this.form.invalid) return;\n this.oauthService.setStorage(this.form.value.remember ? localStorage : sessionStorage);\n\n this.inProgress = true;\n from(\n this.oauthService.fetchTokenUsingPasswordFlow(this.form.get('username').value, this.form.get('password').value),\n )\n .pipe(\n switchMap(() => this.store.dispatch(new ConfigGetAppConfiguration())),\n tap(() => {\n const redirectUrl = snq(() => window.history.state).redirectUrl || (this.options || {}).redirectUrl || '/';\n this.store.dispatch(new Navigate([redirectUrl]));\n }),\n catchError(err => {\n this.toasterService.error(snq(() => err.error.error_description, 'An error occured.'), 'Error');\n return throwError(err);\n }),\n finalize(() => (this.inProgress = false)),\n )\n .subscribe();\n }\n}\n","import { Component } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { validatePassword } from '@ngx-validate/core';\nimport { OAuthService } from 'angular-oauth2-oidc';\n\nconst { maxLength, minLength, required, email } = Validators;\n\n@Component({\n selector: 'abp-register',\n templateUrl: './register.component.html',\n})\nexport class RegisterComponent {\n form: FormGroup;\n\n constructor(private fb: FormBuilder, private oauthService: OAuthService, private router: Router) {\n this.form = this.fb.group({\n username: ['', [required, maxLength(255)]],\n password: [\n '',\n [required, maxLength(32), minLength(6), validatePassword(['small', 'capital', 'number', 'special'])],\n ],\n email: ['', [required, email]],\n });\n }\n\n onSubmit() {\n if (this.form.invalid) return;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { LoginComponent } from './components/login/login.component';\nimport { RegisterComponent } from './components/register/register.component';\nimport { DynamicLayoutComponent } from '@abp/ng.core';\n\nconst routes: Routes = [\n { path: '', pathMatch: 'full', redirectTo: 'login' },\n {\n path: '',\n component: DynamicLayoutComponent,\n children: [{ path: 'login', component: LoginComponent }, { path: 'register', component: RegisterComponent }],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class AccountRoutingModule {}\n","import { Component, TemplateRef, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ABP } from '@abp/ng.core';\n\n@Component({\n selector: 'abp-tenant-box',\n templateUrl: './tenant-box.component.html',\n})\nexport class TenantBoxComponent {\n constructor(private modalService: NgbModal, private fb: FormBuilder) {}\n\n form: FormGroup;\n\n selected: ABP.BasicItem;\n\n @ViewChild('modalContent', { static: false })\n modalContent: TemplateRef;\n\n createForm() {\n this.form = this.fb.group({\n name: [this.selected.name],\n });\n }\n\n openModal() {\n this.createForm();\n this.modalService.open(this.modalContent);\n }\n\n onSwitch() {\n this.selected = {} as ABP.BasicItem;\n this.openModal();\n }\n\n save() {\n this.selected = this.form.value;\n this.modalService.dismissAll();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Options } from '../models/options';\n\nexport function optionsFactory(options: Options) {\n return {\n redirectUrl: '/',\n ...options,\n };\n}\n\nexport const ACCOUNT_OPTIONS = new InjectionToken('ACCOUNT_OPTIONS');\n","import { CoreModule } from '@abp/ng.core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { AccountRoutingModule } from './account-routing.module';\nimport { LoginComponent } from './components/login/login.component';\nimport { RegisterComponent } from './components/register/register.component';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { TenantBoxComponent } from './components/tenant-box/tenant-box.component';\nimport { Options } from './models/options';\nimport { ACCOUNT_OPTIONS, optionsFactory } from './tokens/options.token';\nimport { TableModule } from 'primeng/table';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\n\n@NgModule({\n declarations: [LoginComponent, RegisterComponent, TenantBoxComponent],\n imports: [CoreModule, AccountRoutingModule, ThemeSharedModule, TableModule, NgbDropdownModule, NgxValidateCoreModule],\n exports: [],\n})\nexport class AccountModule {\n static forRoot(options = {} as Options): ModuleWithProviders {\n return {\n ngModule: AccountModule,\n providers: [\n { provide: ACCOUNT_OPTIONS, useValue: options },\n {\n provide: 'ACCOUNT_OPTIONS',\n useFactory: optionsFactory,\n deps: [ACCOUNT_OPTIONS],\n },\n ],\n };\n }\n}\n","import { ABP, eLayoutType } from '@abp/ng.core';\n\nexport const ACCOUNT_ROUTES = [\n {\n name: 'Account',\n path: 'account',\n invisible: true,\n layout: eLayoutType.application,\n children: [{ path: 'login', name: 'Login', order: 1 }, { path: 'register', name: 'Register', order: 2 }],\n },\n] as ABP.FullRoute[];\n"],"names":["maxLength","minLength","required"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/account/fesm5/abp-ng.account.js b/npm/ng-packs/dist/account/fesm5/abp-ng.account.js new file mode 100644 index 00000000000..f8575622dae --- /dev/null +++ b/npm/ng-packs/dist/account/fesm5/abp-ng.account.js @@ -0,0 +1,301 @@ +import { ConfigGetAppConfiguration, ConfigState, DynamicLayoutComponent, CoreModule } from '@abp/ng.core'; +import { Component, Optional, Inject, NgModule, ViewChild, InjectionToken } from '@angular/core'; +import { Router, RouterModule } from '@angular/router'; +import { Validators, FormBuilder } from '@angular/forms'; +import { Navigate } from '@ngxs/router-plugin'; +import { Store } from '@ngxs/store'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { from, throwError } from 'rxjs'; +import { ToasterService, ThemeSharedModule } from '@abp/ng.theme.shared'; +import { switchMap, tap, catchError, finalize } from 'rxjs/operators'; +import snq from 'snq'; +import { validatePassword, NgxValidateCoreModule } from '@ngx-validate/core'; +import { NgbModal, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { __assign } from 'tslib'; +import { TableModule } from 'primeng/table'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var maxLength = Validators.maxLength, minLength = Validators.minLength, required = Validators.required; +var LoginComponent = /** @class */ (function () { + function LoginComponent(fb, oauthService, store, toasterService, options) { + this.fb = fb; + this.oauthService = oauthService; + this.store = store; + this.toasterService = toasterService; + this.options = options; + this.oauthService.configure(this.store.selectSnapshot(ConfigState.getOne('environment')).oAuthConfig); + this.oauthService.loadDiscoveryDocument(); + this.form = this.fb.group({ + username: ['', [required, maxLength(255)]], + password: ['', [required, maxLength(32)]], + remember: [false], + }); + } + /** + * @return {?} + */ + LoginComponent.prototype.onSubmit = /** + * @return {?} + */ + function () { + var _this = this; + if (this.form.invalid) + return; + this.oauthService.setStorage(this.form.value.remember ? localStorage : sessionStorage); + this.inProgress = true; + from(this.oauthService.fetchTokenUsingPasswordFlow(this.form.get('username').value, this.form.get('password').value)) + .pipe(switchMap((/** + * @return {?} + */ + function () { return _this.store.dispatch(new ConfigGetAppConfiguration()); })), tap((/** + * @return {?} + */ + function () { + /** @type {?} */ + var redirectUrl = snq((/** + * @return {?} + */ + function () { return window.history.state; })).redirectUrl || (_this.options || {}).redirectUrl || '/'; + _this.store.dispatch(new Navigate([redirectUrl])); + })), catchError((/** + * @param {?} err + * @return {?} + */ + function (err) { + _this.toasterService.error(snq((/** + * @return {?} + */ + function () { return err.error.error_description; }), 'An error occured.'), 'Error'); + return throwError(err); + })), finalize((/** + * @return {?} + */ + function () { return (_this.inProgress = false); }))) + .subscribe(); + }; + LoginComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-login', + template: "
\n" + }] } + ]; + /** @nocollapse */ + LoginComponent.ctorParameters = function () { return [ + { type: FormBuilder }, + { type: OAuthService }, + { type: Store }, + { type: ToasterService }, + { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: ['ACCOUNT_OPTIONS',] }] } + ]; }; + return LoginComponent; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var maxLength$1 = Validators.maxLength, minLength$1 = Validators.minLength, required$1 = Validators.required, email = Validators.email; +var RegisterComponent = /** @class */ (function () { + function RegisterComponent(fb, oauthService, router) { + this.fb = fb; + this.oauthService = oauthService; + this.router = router; + this.form = this.fb.group({ + username: ['', [required$1, maxLength$1(255)]], + password: [ + '', + [required$1, maxLength$1(32), minLength$1(6), validatePassword(['small', 'capital', 'number', 'special'])], + ], + email: ['', [required$1, email]], + }); + } + /** + * @return {?} + */ + RegisterComponent.prototype.onSubmit = /** + * @return {?} + */ + function () { + if (this.form.invalid) + return; + }; + RegisterComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-register', + template: "
\n
\n \n\n \n
\n
\n" + }] } + ]; + /** @nocollapse */ + RegisterComponent.ctorParameters = function () { return [ + { type: FormBuilder }, + { type: OAuthService }, + { type: Router } + ]; }; + return RegisterComponent; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var routes = [ + { path: '', pathMatch: 'full', redirectTo: 'login' }, + { + path: '', + component: DynamicLayoutComponent, + children: [{ path: 'login', component: LoginComponent }, { path: 'register', component: RegisterComponent }], + }, +]; +var AccountRoutingModule = /** @class */ (function () { + function AccountRoutingModule() { + } + AccountRoutingModule.decorators = [ + { type: NgModule, args: [{ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], + },] } + ]; + return AccountRoutingModule; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var TenantBoxComponent = /** @class */ (function () { + function TenantBoxComponent(modalService, fb) { + this.modalService = modalService; + this.fb = fb; + } + /** + * @return {?} + */ + TenantBoxComponent.prototype.createForm = /** + * @return {?} + */ + function () { + this.form = this.fb.group({ + name: [this.selected.name], + }); + }; + /** + * @return {?} + */ + TenantBoxComponent.prototype.openModal = /** + * @return {?} + */ + function () { + this.createForm(); + this.modalService.open(this.modalContent); + }; + /** + * @return {?} + */ + TenantBoxComponent.prototype.onSwitch = /** + * @return {?} + */ + function () { + this.selected = (/** @type {?} */ ({})); + this.openModal(); + }; + /** + * @return {?} + */ + TenantBoxComponent.prototype.save = /** + * @return {?} + */ + function () { + this.selected = this.form.value; + this.modalService.dismissAll(); + }; + TenantBoxComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-tenant-box', + template: "\n {{ 'AbpUiMultiTenancy::Tenant' | abpLocalization }}: \n \n {{ selected?.name ? selected.name : ('AbpUiMultiTenancy::NotSelected' | abpLocalization) }}\n \n ({{\n 'AbpUiMultiTenancy::Switch' | abpLocalization\n }})\n\n\n\n
\n
\n SwitchTenant\n
\n \n
\n
\n
\n
\n
\n \n \n
\n

{{ 'AbpUiMultiTenancy::SwitchTenantHint' | abpLocalization }}

\n
\n
\n\n
\n \n \n
\n
\n
\n" + }] } + ]; + /** @nocollapse */ + TenantBoxComponent.ctorParameters = function () { return [ + { type: NgbModal }, + { type: FormBuilder } + ]; }; + TenantBoxComponent.propDecorators = { + modalContent: [{ type: ViewChild, args: ['modalContent', { static: false },] }] + }; + return TenantBoxComponent; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @param {?} options + * @return {?} + */ +function optionsFactory(options) { + return __assign({ redirectUrl: '/' }, options); +} +/** @type {?} */ +var ACCOUNT_OPTIONS = new InjectionToken('ACCOUNT_OPTIONS'); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var AccountModule = /** @class */ (function () { + function AccountModule() { + } + /** + * @param {?=} options + * @return {?} + */ + AccountModule.forRoot = /** + * @param {?=} options + * @return {?} + */ + function (options) { + if (options === void 0) { options = (/** @type {?} */ ({})); } + return { + ngModule: AccountModule, + providers: [ + { provide: ACCOUNT_OPTIONS, useValue: options }, + { + provide: 'ACCOUNT_OPTIONS', + useFactory: optionsFactory, + deps: [ACCOUNT_OPTIONS], + }, + ], + }; + }; + AccountModule.decorators = [ + { type: NgModule, args: [{ + declarations: [LoginComponent, RegisterComponent, TenantBoxComponent], + imports: [CoreModule, AccountRoutingModule, ThemeSharedModule, TableModule, NgbDropdownModule, NgxValidateCoreModule], + exports: [], + },] } + ]; + return AccountModule; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var ACCOUNT_ROUTES = (/** @type {?} */ ([ + { + name: 'Account', + path: 'account', + invisible: true, + layout: "application" /* application */, + children: [{ path: 'login', name: 'Login', order: 1 }, { path: 'register', name: 'Register', order: 2 }], + }, +])); + +export { ACCOUNT_OPTIONS, ACCOUNT_ROUTES, AccountModule, LoginComponent, RegisterComponent, optionsFactory, LoginComponent as ɵa, RegisterComponent as ɵc, TenantBoxComponent as ɵd, AccountRoutingModule as ɵe, optionsFactory as ɵf, ACCOUNT_OPTIONS as ɵg }; +//# sourceMappingURL=abp-ng.account.js.map diff --git a/npm/ng-packs/dist/account/fesm5/abp-ng.account.js.map b/npm/ng-packs/dist/account/fesm5/abp-ng.account.js.map new file mode 100644 index 00000000000..c61db039dd5 --- /dev/null +++ b/npm/ng-packs/dist/account/fesm5/abp-ng.account.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.account.js","sources":["ng://@abp/ng.account/lib/components/login/login.component.ts","ng://@abp/ng.account/lib/components/register/register.component.ts","ng://@abp/ng.account/lib/account-routing.module.ts","ng://@abp/ng.account/lib/components/tenant-box/tenant-box.component.ts","ng://@abp/ng.account/lib/tokens/options.token.ts","ng://@abp/ng.account/lib/account.module.ts","ng://@abp/ng.account/lib/constants/routes.ts"],"sourcesContent":["import { ConfigGetAppConfiguration, ConfigState } from '@abp/ng.core';\nimport { Component, Inject, Optional } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Navigate } from '@ngxs/router-plugin';\nimport { Store } from '@ngxs/store';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { from, throwError } from 'rxjs';\nimport { Options } from '../../models/options';\nimport { ToasterService } from '@abp/ng.theme.shared';\nimport { catchError, finalize, switchMap, tap } from 'rxjs/operators';\nimport snq from 'snq';\n\nconst { maxLength, minLength, required } = Validators;\n\n@Component({\n selector: 'abp-login',\n templateUrl: './login.component.html',\n})\nexport class LoginComponent {\n form: FormGroup;\n\n inProgress: boolean;\n\n constructor(\n private fb: FormBuilder,\n private oauthService: OAuthService,\n private store: Store,\n private toasterService: ToasterService,\n @Optional() @Inject('ACCOUNT_OPTIONS') private options: Options,\n ) {\n this.oauthService.configure(this.store.selectSnapshot(ConfigState.getOne('environment')).oAuthConfig);\n this.oauthService.loadDiscoveryDocument();\n\n this.form = this.fb.group({\n username: ['', [required, maxLength(255)]],\n password: ['', [required, maxLength(32)]],\n remember: [false],\n });\n }\n\n onSubmit() {\n if (this.form.invalid) return;\n this.oauthService.setStorage(this.form.value.remember ? localStorage : sessionStorage);\n\n this.inProgress = true;\n from(\n this.oauthService.fetchTokenUsingPasswordFlow(this.form.get('username').value, this.form.get('password').value),\n )\n .pipe(\n switchMap(() => this.store.dispatch(new ConfigGetAppConfiguration())),\n tap(() => {\n const redirectUrl = snq(() => window.history.state).redirectUrl || (this.options || {}).redirectUrl || '/';\n this.store.dispatch(new Navigate([redirectUrl]));\n }),\n catchError(err => {\n this.toasterService.error(snq(() => err.error.error_description, 'An error occured.'), 'Error');\n return throwError(err);\n }),\n finalize(() => (this.inProgress = false)),\n )\n .subscribe();\n }\n}\n","import { Component } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { validatePassword } from '@ngx-validate/core';\nimport { OAuthService } from 'angular-oauth2-oidc';\n\nconst { maxLength, minLength, required, email } = Validators;\n\n@Component({\n selector: 'abp-register',\n templateUrl: './register.component.html',\n})\nexport class RegisterComponent {\n form: FormGroup;\n\n constructor(private fb: FormBuilder, private oauthService: OAuthService, private router: Router) {\n this.form = this.fb.group({\n username: ['', [required, maxLength(255)]],\n password: [\n '',\n [required, maxLength(32), minLength(6), validatePassword(['small', 'capital', 'number', 'special'])],\n ],\n email: ['', [required, email]],\n });\n }\n\n onSubmit() {\n if (this.form.invalid) return;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { LoginComponent } from './components/login/login.component';\nimport { RegisterComponent } from './components/register/register.component';\nimport { DynamicLayoutComponent } from '@abp/ng.core';\n\nconst routes: Routes = [\n { path: '', pathMatch: 'full', redirectTo: 'login' },\n {\n path: '',\n component: DynamicLayoutComponent,\n children: [{ path: 'login', component: LoginComponent }, { path: 'register', component: RegisterComponent }],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class AccountRoutingModule {}\n","import { Component, TemplateRef, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ABP } from '@abp/ng.core';\n\n@Component({\n selector: 'abp-tenant-box',\n templateUrl: './tenant-box.component.html',\n})\nexport class TenantBoxComponent {\n constructor(private modalService: NgbModal, private fb: FormBuilder) {}\n\n form: FormGroup;\n\n selected: ABP.BasicItem;\n\n @ViewChild('modalContent', { static: false })\n modalContent: TemplateRef;\n\n createForm() {\n this.form = this.fb.group({\n name: [this.selected.name],\n });\n }\n\n openModal() {\n this.createForm();\n this.modalService.open(this.modalContent);\n }\n\n onSwitch() {\n this.selected = {} as ABP.BasicItem;\n this.openModal();\n }\n\n save() {\n this.selected = this.form.value;\n this.modalService.dismissAll();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Options } from '../models/options';\n\nexport function optionsFactory(options: Options) {\n return {\n redirectUrl: '/',\n ...options,\n };\n}\n\nexport const ACCOUNT_OPTIONS = new InjectionToken('ACCOUNT_OPTIONS');\n","import { CoreModule } from '@abp/ng.core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { AccountRoutingModule } from './account-routing.module';\nimport { LoginComponent } from './components/login/login.component';\nimport { RegisterComponent } from './components/register/register.component';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { TenantBoxComponent } from './components/tenant-box/tenant-box.component';\nimport { Options } from './models/options';\nimport { ACCOUNT_OPTIONS, optionsFactory } from './tokens/options.token';\nimport { TableModule } from 'primeng/table';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\n\n@NgModule({\n declarations: [LoginComponent, RegisterComponent, TenantBoxComponent],\n imports: [CoreModule, AccountRoutingModule, ThemeSharedModule, TableModule, NgbDropdownModule, NgxValidateCoreModule],\n exports: [],\n})\nexport class AccountModule {\n static forRoot(options = {} as Options): ModuleWithProviders {\n return {\n ngModule: AccountModule,\n providers: [\n { provide: ACCOUNT_OPTIONS, useValue: options },\n {\n provide: 'ACCOUNT_OPTIONS',\n useFactory: optionsFactory,\n deps: [ACCOUNT_OPTIONS],\n },\n ],\n };\n }\n}\n","import { ABP, eLayoutType } from '@abp/ng.core';\n\nexport const ACCOUNT_ROUTES = [\n {\n name: 'Account',\n path: 'account',\n invisible: true,\n layout: eLayoutType.application,\n children: [{ path: 'login', name: 'Login', order: 1 }, { path: 'register', name: 'Register', order: 2 }],\n },\n] as ABP.FullRoute[];\n"],"names":["maxLength","minLength","required"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/account/lib/account-routing.module.d.ts b/npm/ng-packs/dist/account/lib/account-routing.module.d.ts new file mode 100644 index 00000000000..7909dc0d719 --- /dev/null +++ b/npm/ng-packs/dist/account/lib/account-routing.module.d.ts @@ -0,0 +1,2 @@ +export declare class AccountRoutingModule { +} diff --git a/npm/ng-packs/dist/account/lib/account.module.d.ts b/npm/ng-packs/dist/account/lib/account.module.d.ts new file mode 100644 index 00000000000..5d54404161c --- /dev/null +++ b/npm/ng-packs/dist/account/lib/account.module.d.ts @@ -0,0 +1,5 @@ +import { ModuleWithProviders } from '@angular/core'; +import { Options } from './models/options'; +export declare class AccountModule { + static forRoot(options?: Options): ModuleWithProviders; +} diff --git a/npm/ng-packs/dist/account/lib/components/index.d.ts b/npm/ng-packs/dist/account/lib/components/index.d.ts new file mode 100644 index 00000000000..8e943f0bad4 --- /dev/null +++ b/npm/ng-packs/dist/account/lib/components/index.d.ts @@ -0,0 +1,2 @@ +export * from './login/login.component'; +export * from './register/register.component'; diff --git a/npm/ng-packs/dist/account/lib/components/login/login.component.d.ts b/npm/ng-packs/dist/account/lib/components/login/login.component.d.ts new file mode 100644 index 00000000000..16cfcad9a15 --- /dev/null +++ b/npm/ng-packs/dist/account/lib/components/login/login.component.d.ts @@ -0,0 +1,16 @@ +import { FormBuilder, FormGroup } from '@angular/forms'; +import { Store } from '@ngxs/store'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { Options } from '../../models/options'; +import { ToasterService } from '@abp/ng.theme.shared'; +export declare class LoginComponent { + private fb; + private oauthService; + private store; + private toasterService; + private options; + form: FormGroup; + inProgress: boolean; + constructor(fb: FormBuilder, oauthService: OAuthService, store: Store, toasterService: ToasterService, options: Options); + onSubmit(): void; +} diff --git a/npm/ng-packs/dist/account/lib/components/register/register.component.d.ts b/npm/ng-packs/dist/account/lib/components/register/register.component.d.ts new file mode 100644 index 00000000000..bc5154f0955 --- /dev/null +++ b/npm/ng-packs/dist/account/lib/components/register/register.component.d.ts @@ -0,0 +1,11 @@ +import { FormBuilder, FormGroup } from '@angular/forms'; +import { Router } from '@angular/router'; +import { OAuthService } from 'angular-oauth2-oidc'; +export declare class RegisterComponent { + private fb; + private oauthService; + private router; + form: FormGroup; + constructor(fb: FormBuilder, oauthService: OAuthService, router: Router); + onSubmit(): void; +} diff --git a/npm/ng-packs/dist/account/lib/components/tenant-box/tenant-box.component.d.ts b/npm/ng-packs/dist/account/lib/components/tenant-box/tenant-box.component.d.ts new file mode 100644 index 00000000000..779fd7f5b78 --- /dev/null +++ b/npm/ng-packs/dist/account/lib/components/tenant-box/tenant-box.component.d.ts @@ -0,0 +1,16 @@ +import { TemplateRef } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { ABP } from '@abp/ng.core'; +export declare class TenantBoxComponent { + private modalService; + private fb; + constructor(modalService: NgbModal, fb: FormBuilder); + form: FormGroup; + selected: ABP.BasicItem; + modalContent: TemplateRef; + createForm(): void; + openModal(): void; + onSwitch(): void; + save(): void; +} diff --git a/npm/ng-packs/dist/account/lib/constants/routes.d.ts b/npm/ng-packs/dist/account/lib/constants/routes.d.ts new file mode 100644 index 00000000000..8407711441a --- /dev/null +++ b/npm/ng-packs/dist/account/lib/constants/routes.d.ts @@ -0,0 +1,2 @@ +import { ABP } from '@abp/ng.core'; +export declare const ACCOUNT_ROUTES: ABP.FullRoute[]; diff --git a/npm/ng-packs/dist/account/lib/models/index.d.ts b/npm/ng-packs/dist/account/lib/models/index.d.ts new file mode 100644 index 00000000000..5f30ef383a5 --- /dev/null +++ b/npm/ng-packs/dist/account/lib/models/index.d.ts @@ -0,0 +1 @@ +export * from './options'; diff --git a/npm/ng-packs/dist/account/lib/models/options.d.ts b/npm/ng-packs/dist/account/lib/models/options.d.ts new file mode 100644 index 00000000000..3bcfa0bb683 --- /dev/null +++ b/npm/ng-packs/dist/account/lib/models/options.d.ts @@ -0,0 +1,3 @@ +export interface Options { + redirectUrl?: string; +} diff --git a/npm/ng-packs/dist/account/lib/tokens/index.d.ts b/npm/ng-packs/dist/account/lib/tokens/index.d.ts new file mode 100644 index 00000000000..683bc4b3dba --- /dev/null +++ b/npm/ng-packs/dist/account/lib/tokens/index.d.ts @@ -0,0 +1 @@ +export * from './options.token'; diff --git a/npm/ng-packs/dist/account/lib/tokens/options.token.d.ts b/npm/ng-packs/dist/account/lib/tokens/options.token.d.ts new file mode 100644 index 00000000000..e1248cb3879 --- /dev/null +++ b/npm/ng-packs/dist/account/lib/tokens/options.token.d.ts @@ -0,0 +1,6 @@ +import { InjectionToken } from '@angular/core'; +import { Options } from '../models/options'; +export declare function optionsFactory(options: Options): { + redirectUrl: string; +}; +export declare const ACCOUNT_OPTIONS: InjectionToken<{}>; diff --git a/npm/ng-packs/dist/account/package.json b/npm/ng-packs/dist/account/package.json new file mode 100644 index 00000000000..2d038654873 --- /dev/null +++ b/npm/ng-packs/dist/account/package.json @@ -0,0 +1,21 @@ +{ + "name": "@abp/ng.account", + "version": "0.8.0", + "dependencies": { + "@abp/ng.theme.shared": "^0.8.0", + "tslib": "^1.9.0" + }, + "publishConfig": { + "access": "public" + }, + "main": "bundles/abp-ng.account.umd.js", + "module": "fesm5/abp-ng.account.js", + "es2015": "fesm2015/abp-ng.account.js", + "esm5": "esm5/abp-ng.account.js", + "esm2015": "esm2015/abp-ng.account.js", + "fesm5": "fesm5/abp-ng.account.js", + "fesm2015": "fesm2015/abp-ng.account.js", + "typings": "abp-ng.account.d.ts", + "metadata": "abp-ng.account.metadata.json", + "sideEffects": false +} diff --git a/npm/ng-packs/dist/account/public-api.d.ts b/npm/ng-packs/dist/account/public-api.d.ts new file mode 100644 index 00000000000..0e845f07688 --- /dev/null +++ b/npm/ng-packs/dist/account/public-api.d.ts @@ -0,0 +1,5 @@ +export * from './lib/account.module'; +export * from './lib/components'; +export * from './lib/constants/routes'; +export * from './lib/tokens'; +export * from './lib/models'; diff --git a/npm/ng-packs/dist/core/README.md b/npm/ng-packs/dist/core/README.md new file mode 100644 index 00000000000..aeef2da4122 --- /dev/null +++ b/npm/ng-packs/dist/core/README.md @@ -0,0 +1 @@ +

@abp/ng.core

diff --git a/npm/ng-packs/dist/core/abp-ng.core.d.ts b/npm/ng-packs/dist/core/abp-ng.core.d.ts new file mode 100644 index 00000000000..6439608ba74 --- /dev/null +++ b/npm/ng-packs/dist/core/abp-ng.core.d.ts @@ -0,0 +1,24 @@ +/** + * Generated bundle index. Do not edit. + */ +export * from './public-api'; +export { ConfigGetAppConfiguration as ɵm, PatchRouteByName as ɵl } from './lib/actions/config.actions'; +export { ProfileChangePassword as ɵf, ProfileGet as ɵd, ProfileUpdate as ɵe } from './lib/actions/profile.actions'; +export { SessionSetLanguage as ɵi } from './lib/actions/session.actions'; +export { DynamicLayoutComponent as ɵo } from './lib/components/dynamic-layout.component'; +export { RouterOutletComponent as ɵn } from './lib/components/router-outlet.component'; +export { EllipsisDirective as ɵt } from './lib/directives/ellipsis.directive'; +export { PermissionDirective as ɵq } from './lib/directives/permission.directive'; +export { VisibilityDirective as ɵr } from './lib/directives/visibility.directive'; +export { ApiInterceptor as ɵx } from './lib/interceptors/api.interceptor'; +export { ABP as ɵw, Profile as ɵg } from './lib/models'; +export { LocalizationPipe as ɵs } from './lib/pipes/localization.pipe'; +export { ConfigPlugin as ɵv, NGXS_CONFIG_PLUGIN_OPTIONS as ɵu } from './lib/plugins/config.plugin'; +export { ApplicationConfigurationService as ɵk } from './lib/services/application-configuration.service'; +export { ProfileService as ɵb } from './lib/services/profile.service'; +export { RestService as ɵc } from './lib/services/rest.service'; +export { ConfigState as ɵp } from './lib/states'; +export { ConfigState as ɵj } from './lib/states/config.state'; +export { ProfileState as ɵa } from './lib/states/profile.state'; +export { SessionState as ɵh } from './lib/states/session.state'; +export { getInitialData as ɵy } from './lib/utils/initial-utils'; diff --git a/npm/ng-packs/dist/core/abp-ng.core.metadata.json b/npm/ng-packs/dist/core/abp-ng.core.metadata.json new file mode 100644 index 00000000000..5ed45f0ab98 --- /dev/null +++ b/npm/ng-packs/dist/core/abp-ng.core.metadata.json @@ -0,0 +1 @@ +{"__symbolic":"module","version":4,"exports":[{"from":"./lib/generator-utils"},{"from":"./lib/initial-utils"},{"from":"./lib/route-utils"},{"from":"./lib/rxjs-utils"},{"from":"./lib/profile.service"},{"from":"./lib/rest.service"}],"metadata":{"CoreModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":22,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"NgxsModule","line":24,"character":4},"member":"forFeature"},"arguments":[[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵj"}]]},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngxs/storage-plugin","name":"NgxsStoragePluginModule","line":25,"character":4},"member":"forRoot"},"arguments":[{"key":"SessionState"}]},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngxs/router-plugin","name":"NgxsRouterPluginModule","line":26,"character":4},"member":"forRoot"}},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":27,"character":4},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":28,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":29,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":30,"character":4},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":31,"character":4}],"declarations":[{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵs"},{"__symbolic":"reference","name":"ɵt"}],"exports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":42,"character":4},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":43,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":44,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":45,"character":4},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":46,"character":4},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"ɵs"}],"providers":[{"__symbolic":"reference","name":"ɵs"}],"entryComponents":[{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵo"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["options"],"defaults":[{}],"value":{"ngModule":{"__symbolic":"reference","name":"CoreModule"},"providers":[{"provide":{"__symbolic":"reference","module":"@ngxs/store","name":"NGXS_PLUGINS","line":63,"character":19},"useClass":{"__symbolic":"reference","name":"ɵv"},"multi":true},{"provide":{"__symbolic":"reference","name":"ɵu"},"useValue":{"__symbolic":"reference","name":"options"}},{"provide":{"__symbolic":"reference","module":"@angular/common/http","name":"HTTP_INTERCEPTORS","line":72,"character":19},"useClass":{"__symbolic":"reference","name":"ɵx"},"multi":true},{"provide":{"__symbolic":"reference","module":"@angular/core","name":"APP_INITIALIZER","line":77,"character":19},"multi":true,"deps":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":79,"character":17}],"useFactory":{"__symbolic":"reference","name":"ɵy"}}]}}}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"State","line":6,"character":1},"arguments":[{"name":"ProfileState","defaults":{}}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵb"}]}],"profileGet":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":18,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵd"}]}]}],"profileUpdate":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":29,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵe"}]}]}],"changePassword":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":40,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵf"}]}]}]},"statics":{"getProfile":{"__symbolic":"function","parameters":["profile"],"value":{"__symbolic":"reference","name":"profile"}}}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵc"}]}],"get":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"changePassword":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":13,"character":28},{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":13,"character":55}]}],"handleError":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵd":{"__symbolic":"class","members":{},"statics":{"type":"[Profile] Get"}},"ɵe":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵg"},"member":"Response"}]}]},"statics":{"type":"[Profile] Update"}},"ɵf":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵg"},"member":"ChangePasswordRequest"}]}]},"statics":{"type":"[Profile] Change Password"}},"ɵh":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"State","line":4,"character":1},"arguments":[{"name":"SessionState","defaults":{}}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"sessionSetLanguage":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":16,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵi"}]}]}]},"statics":{"getLanguage":{"__symbolic":"function","parameters":["language"],"value":{"__symbolic":"reference","name":"language"}}}},"ɵi":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}]},"statics":{"type":"[Session] Set Language"}},"ɵj":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"State","line":11,"character":1},"arguments":[{"name":"ConfigState","defaults":{}}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":153,"character":95}]}],"addData":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":155,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵm"}]}]}],"patchRoute":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":173,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵl"}]}]}]},"statics":{"getAll":{"__symbolic":"function","parameters":["state"],"value":{"__symbolic":"reference","name":"state"}}}},"ɵk":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵc"}]}],"getConfiguration":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵl":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Could not resolve type","line":4,"character":52,"context":{"typeName":"Partial"},"module":"./lib/actions/config.actions"}]}]},"statics":{"type":"[Config] Patch Route By Name"}},"ɵm":{"__symbolic":"class","members":{},"statics":{"type":"[Config] Get App Configuration"}},"ɵn":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"abp-router-outlet","template":"\n \n "}]}],"members":{}},"ɵo":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"abp-dynamic-layout","template":"\n \n\n \n \n "}]}],"members":{"requirements$":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Select","line":20,"character":3},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵp"},"member":"getOne"},"arguments":["requirements"]}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":25,"character":30},{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":25,"character":53}]}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵq":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"[abpPermission]"}]}],"members":{"condition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3},"arguments":["abpPermission"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":11,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":11,"character":41},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":11,"character":71},{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":11,"character":97}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵr":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":4,"character":1},"arguments":[{"selector":"[abpVisibility]"}]}],"members":{"focusedElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":8,"character":3},"arguments":["abpVisibility"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":13,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":13,"character":41},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":13,"character":71}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"disconnect":[{"__symbolic":"method"}]}},"ɵs":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":6,"character":1},"arguments":[{"name":"abpLocalization","pure":false}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":15,"character":29}]}],"transform":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵt":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":2,"character":1},"arguments":[{"selector":"[abpEllipsis]"}]}],"members":{"witdh":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":6,"character":3},"arguments":["abpEllipsis"]}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":9,"character":3},"arguments":["title"]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"enabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3},"arguments":["abpEllipsisEnabled"]}]}],"class":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":16,"character":3},"arguments":["class.abp-ellipsis"]}]}],"maxWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":21,"character":3},"arguments":["style.max-width"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":26,"character":29},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":26,"character":63}]}],"ngAfterContentInit":[{"__symbolic":"method"}]}},"ɵu":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":7,"character":46},"arguments":["NGXS_CONFIG_PLUGIN_OPTIONS"]},"ɵv":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":13,"character":15},"arguments":[{"__symbolic":"reference","name":"ɵu"}]}],null],"parameters":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵw"},"member":"Root"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":13,"character":93}]}],"handle":[{"__symbolic":"method"}]}},"ɵx":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"angular-oauth2-oidc","name":"OAuthService","line":10,"character":36},{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":10,"character":65}]}],"intercept":[{"__symbolic":"method"}]}},"ɵy":{"__symbolic":"function"}},"origins":{"CoreModule":"./lib/core.module","ɵa":"./lib/states/profile.state","ɵb":"./lib/services/profile.service","ɵc":"./lib/services/rest.service","ɵd":"./lib/actions/profile.actions","ɵe":"./lib/actions/profile.actions","ɵf":"./lib/actions/profile.actions","ɵg":"./lib/models","ɵh":"./lib/states/session.state","ɵi":"./lib/actions/session.actions","ɵj":"./lib/states/config.state","ɵk":"./lib/services/application-configuration.service","ɵl":"./lib/actions/config.actions","ɵm":"./lib/actions/config.actions","ɵn":"./lib/components/router-outlet.component","ɵo":"./lib/components/dynamic-layout.component","ɵp":"./lib/states","ɵq":"./lib/directives/permission.directive","ɵr":"./lib/directives/visibility.directive","ɵs":"./lib/pipes/localization.pipe","ɵt":"./lib/directives/ellipsis.directive","ɵu":"./lib/plugins/config.plugin","ɵv":"./lib/plugins/config.plugin","ɵw":"./lib/models","ɵx":"./lib/interceptors/api.interceptor","ɵy":"./lib/utils/initial-utils"},"importAs":"@abp/ng.core"} \ No newline at end of file diff --git a/npm/ng-packs/dist/core/bundles/abp-ng.core.umd.js b/npm/ng-packs/dist/core/bundles/abp-ng.core.umd.js new file mode 100644 index 00000000000..8524fc7648b --- /dev/null +++ b/npm/ng-packs/dist/core/bundles/abp-ng.core.umd.js @@ -0,0 +1,2096 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/router'), require('@ngxs/store'), require('rxjs'), require('@angular/common/http'), require('rxjs/operators'), require('snq'), require('angular-oauth2-oidc'), require('@ngxs/router-plugin'), require('@angular/common'), require('@angular/forms'), require('@ngxs/storage-plugin')) : + typeof define === 'function' && define.amd ? define('@abp/ng.core', ['exports', '@angular/core', '@angular/router', '@ngxs/store', 'rxjs', '@angular/common/http', 'rxjs/operators', 'snq', 'angular-oauth2-oidc', '@ngxs/router-plugin', '@angular/common', '@angular/forms', '@ngxs/storage-plugin'], factory) : + (global = global || self, factory((global.abp = global.abp || {}, global.abp.ng = global.abp.ng || {}, global.abp.ng.core = {}), global.ng.core, global.ng.router, global.store, global.rxjs, global.ng.common.http, global.rxjs.operators, global.snq, global.angularOauth2Oidc, global.routerPlugin, global.ng.common, global.ng.forms, global.storagePlugin)); +}(this, function (exports, core, router, store, rxjs, http, operators, snq, angularOauth2Oidc, routerPlugin, common, forms, storagePlugin) { 'use strict'; + + snq = snq && snq.hasOwnProperty('default') ? snq['default'] : snq; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; + } + + function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + } + + function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); + } + + function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; + } + + function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; + } + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var PatchRouteByName = /** @class */ (function () { + function PatchRouteByName(name, newValue) { + this.name = name; + this.newValue = newValue; + } + PatchRouteByName.type = '[Config] Patch Route By Name'; + return PatchRouteByName; + }()); + var ConfigGetAppConfiguration = /** @class */ (function () { + function ConfigGetAppConfiguration() { + } + ConfigGetAppConfiguration.type = '[Config] Get App Configuration'; + return ConfigGetAppConfiguration; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var LoaderStart = /** @class */ (function () { + function LoaderStart(payload) { + this.payload = payload; + } + LoaderStart.type = '[Loader] Start'; + return LoaderStart; + }()); + var LoaderStop = /** @class */ (function () { + function LoaderStop(payload) { + this.payload = payload; + } + LoaderStop.type = '[Loader] Stop'; + return LoaderStop; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var ProfileGet = /** @class */ (function () { + function ProfileGet() { + } + ProfileGet.type = '[Profile] Get'; + return ProfileGet; + }()); + var ProfileUpdate = /** @class */ (function () { + function ProfileUpdate(payload) { + this.payload = payload; + } + ProfileUpdate.type = '[Profile] Update'; + return ProfileUpdate; + }()); + var ProfileChangePassword = /** @class */ (function () { + function ProfileChangePassword(payload) { + this.payload = payload; + } + ProfileChangePassword.type = '[Profile] Change Password'; + return ProfileChangePassword; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var RestOccurError = /** @class */ (function () { + function RestOccurError(payload) { + this.payload = payload; + } + RestOccurError.type = '[Rest] Error'; + return RestOccurError; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var SessionSetLanguage = /** @class */ (function () { + function SessionSetLanguage(payload) { + this.payload = payload; + } + SessionSetLanguage.type = '[Session] Set Language'; + return SessionSetLanguage; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var RestService = /** @class */ (function () { + function RestService(http, store) { + this.http = http; + this.store = store; + } + /** + * @param {?} err + * @return {?} + */ + RestService.prototype.handleError = /** + * @param {?} err + * @return {?} + */ + function (err) { + this.store.dispatch(new RestOccurError(err)); + console.error(err); + return rxjs.NEVER; + }; + /** + * @template T, R + * @param {?} request + * @param {?=} config + * @param {?=} api + * @return {?} + */ + RestService.prototype.request = /** + * @template T, R + * @param {?} request + * @param {?=} config + * @param {?=} api + * @return {?} + */ + function (request, config, api) { + var _this = this; + if (config === void 0) { config = {}; } + var _a = config.observe, observe = _a === void 0 ? "body" /* Body */ : _a, throwErr = config.throwErr; + /** @type {?} */ + var url = api || this.store.selectSnapshot(ConfigState.getApiUrl()) + request.url; + var method = request.method, options = __rest(request, ["method"]); + return this.http.request(method, url, (/** @type {?} */ (__assign({ observe: observe }, options)))).pipe(observe === "body" /* Body */ ? operators.take(1) : null, operators.catchError((/** + * @param {?} err + * @return {?} + */ + function (err) { + if (throwErr) { + return rxjs.throwError(err); + } + return _this.handleError(err); + }))); + }; + RestService.decorators = [ + { type: core.Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + RestService.ctorParameters = function () { return [ + { type: http.HttpClient }, + { type: store.Store } + ]; }; + /** @nocollapse */ RestService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function RestService_Factory() { return new RestService(core.ɵɵinject(http.HttpClient), core.ɵɵinject(store.Store)); }, token: RestService, providedIn: "root" }); + return RestService; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var ProfileService = /** @class */ (function () { + function ProfileService(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + ProfileService.prototype.get = /** + * @return {?} + */ + function () { + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/identity/my-profile', + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + ProfileService.prototype.update = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var request = { + method: 'PUT', + url: '/api/identity/my-profile', + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + ProfileService.prototype.changePassword = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var request = { + method: 'POST', + url: '/api/identity/my-profile/changePassword', + body: body, + }; + return this.rest.request(request); + }; + ProfileService.decorators = [ + { type: core.Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + ProfileService.ctorParameters = function () { return [ + { type: RestService } + ]; }; + /** @nocollapse */ ProfileService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function ProfileService_Factory() { return new ProfileService(core.ɵɵinject(RestService)); }, token: ProfileService, providedIn: "root" }); + return ProfileService; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var ProfileState = /** @class */ (function () { + function ProfileState(profileService) { + this.profileService = profileService; + } + /** + * @param {?} __0 + * @return {?} + */ + ProfileState.getProfile = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var profile = _a.profile; + return profile; + }; + /** + * @param {?} __0 + * @return {?} + */ + ProfileState.prototype.profileGet = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var patchState = _a.patchState; + return this.profileService.get().pipe(operators.tap((/** + * @param {?} profile + * @return {?} + */ + function (profile) { + return patchState({ + profile: profile, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + ProfileState.prototype.profileUpdate = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.profileService.update(payload).pipe(operators.tap((/** + * @param {?} profile + * @return {?} + */ + function (profile) { + return patchState({ + profile: profile, + }); + }))); + }; + /** + * @param {?} _ + * @param {?} __1 + * @return {?} + */ + ProfileState.prototype.changePassword = /** + * @param {?} _ + * @param {?} __1 + * @return {?} + */ + function (_, _a) { + var payload = _a.payload; + return this.profileService.changePassword(payload); + }; + __decorate([ + store.Action(ProfileGet), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) + ], ProfileState.prototype, "profileGet", null); + __decorate([ + store.Action(ProfileUpdate), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, ProfileUpdate]), + __metadata("design:returntype", void 0) + ], ProfileState.prototype, "profileUpdate", null); + __decorate([ + store.Action(ProfileChangePassword), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, ProfileChangePassword]), + __metadata("design:returntype", void 0) + ], ProfileState.prototype, "changePassword", null); + __decorate([ + store.Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Object) + ], ProfileState, "getProfile", null); + ProfileState = __decorate([ + store.State({ + name: 'ProfileState', + defaults: (/** @type {?} */ ({})), + }), + __metadata("design:paramtypes", [ProfileService]) + ], ProfileState); + return ProfileState; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var ApplicationConfigurationService = /** @class */ (function () { + function ApplicationConfigurationService(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + ApplicationConfigurationService.prototype.getConfiguration = /** + * @return {?} + */ + function () { + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/abp/application-configuration', + }; + return this.rest.request(request); + }; + ApplicationConfigurationService.decorators = [ + { type: core.Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + ApplicationConfigurationService.ctorParameters = function () { return [ + { type: RestService } + ]; }; + /** @nocollapse */ ApplicationConfigurationService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function ApplicationConfigurationService_Factory() { return new ApplicationConfigurationService(core.ɵɵinject(RestService)); }, token: ApplicationConfigurationService, providedIn: "root" }); + return ApplicationConfigurationService; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var SessionState = /** @class */ (function () { + function SessionState() { + } + /** + * @param {?} __0 + * @return {?} + */ + SessionState.getLanguage = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var language = _a.language; + return language; + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + SessionState.prototype.sessionSetLanguage = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + patchState({ + language: payload, + }); + }; + __decorate([ + store.Action(SessionSetLanguage), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, SessionSetLanguage]), + __metadata("design:returntype", void 0) + ], SessionState.prototype, "sessionSetLanguage", null); + __decorate([ + store.Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", String) + ], SessionState, "getLanguage", null); + SessionState = __decorate([ + store.State({ + name: 'SessionState', + defaults: (/** @type {?} */ ({})), + }), + __metadata("design:paramtypes", []) + ], SessionState); + return SessionState; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + /** + * @param {?} routes + * @param {?=} wrappers + * @param {?=} parentNameArr + * @param {?=} parentName + * @return {?} + */ + function organizeRoutes(routes, wrappers, parentNameArr, parentName) { + if (wrappers === void 0) { wrappers = []; } + if (parentNameArr === void 0) { parentNameArr = (/** @type {?} */ ([])); } + if (parentName === void 0) { parentName = null; } + /** @type {?} */ + var filter = (/** + * @param {?} route + * @return {?} + */ + function (route) { + if (route.children) { + route.children = organizeRoutes(route.children, wrappers, parentNameArr, route.name); + } + if (route.parentName && route.parentName !== parentName) { + parentNameArr.push(route); + return false; + } + return true; + }); + if (parentName) { + // recursive block + return routes.filter(filter); + } + /** @type {?} */ + var filteredRoutes = routes.filter(filter); + if (parentNameArr.length) { + return sortRoutes(setChildRoute(__spread(filteredRoutes, wrappers), parentNameArr)); + } + return filteredRoutes; + } + /** + * @param {?} routes + * @param {?} parentNameArr + * @return {?} + */ + function setChildRoute(routes, parentNameArr) { + return routes + .map((/** + * @param {?} route + * @return {?} + */ + function (route) { + if (route.children && route.children.length) { + route.children = setChildRoute(route.children, parentNameArr); + } + /** @type {?} */ + var foundedChildren = parentNameArr.filter((/** + * @param {?} parent + * @return {?} + */ + function (parent) { return parent.parentName === route.name; })); + if (foundedChildren && foundedChildren.length) { + route.children = __spread((route.children || []), foundedChildren); + } + return route; + })) + .filter((/** + * @param {?} route + * @return {?} + */ + function (route) { return route.path || (route.children && route.children.length); })); + } + /** + * @param {?=} routes + * @return {?} + */ + function sortRoutes(routes) { + if (routes === void 0) { routes = []; } + if (!routes.length) + return []; + return routes + .sort((/** + * @param {?} a + * @param {?} b + * @return {?} + */ + function (a, b) { return a.order - b.order; })) + .map((/** + * @param {?} route + * @return {?} + */ + function (route) { + if (route.children && route.children.length) { + route.children = sortRoutes(route.children); + } + return route; + })); + } + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var ConfigState = /** @class */ (function () { + function ConfigState(appConfigurationService, store) { + this.appConfigurationService = appConfigurationService; + this.store = store; + } + ConfigState_1 = ConfigState; + /** + * @param {?} state + * @return {?} + */ + ConfigState.getAll = /** + * @param {?} state + * @return {?} + */ + function (state) { + return state; + }; + /** + * @param {?} key + * @return {?} + */ + ConfigState.getOne = /** + * @param {?} key + * @return {?} + */ + function (key) { + /** @type {?} */ + var selector = store.createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return state[key]; + })); + return selector; + }; + /** + * @param {?} keys + * @return {?} + */ + ConfigState.getDeep = /** + * @param {?} keys + * @return {?} + */ + function (keys) { + if (typeof keys === 'string') { + keys = keys.split('.'); + } + if (!Array.isArray(keys)) { + throw new Error('The argument must be a dot string or an string array.'); + } + /** @type {?} */ + var selector = store.createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return ((/** @type {?} */ (keys))).reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { + if (acc) { + return acc[val]; + } + return undefined; + }), state); + })); + return selector; + }; + /** + * @param {?=} key + * @return {?} + */ + ConfigState.getApiUrl = /** + * @param {?=} key + * @return {?} + */ + function (key) { + /** @type {?} */ + var selector = store.createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return state.environment.apis[key || 'default'].url; + })); + return selector; + }; + /** + * @param {?} key + * @return {?} + */ + ConfigState.getSetting = /** + * @param {?} key + * @return {?} + */ + function (key) { + /** @type {?} */ + var selector = store.createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return snq((/** + * @return {?} + */ + function () { return state.setting.values[key]; })); + })); + return selector; + }; + /** + * @param {?=} condition + * @return {?} + */ + ConfigState.getGrantedPolicy = /** + * @param {?=} condition + * @return {?} + */ + function (condition) { + if (condition === void 0) { condition = ''; } + /** @type {?} */ + var keys = condition + .replace(/\(|\)|\!|\s/g, '') + .split(/\|\||&&/) + .filter((/** + * @param {?} key + * @return {?} + */ + function (key) { return key; })); + /** @type {?} */ + var selector = store.createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + if (!keys.length) + return true; + /** @type {?} */ + var getPolicy = (/** + * @param {?} key + * @return {?} + */ + function (key) { return snq((/** + * @return {?} + */ + function () { return state.auth.grantedPolicies[key]; }), false); }); + if (keys.length > 1) { + keys.forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { + /** @type {?} */ + var value = getPolicy(key); + condition = condition.replace(key, value); + })); + // tslint:disable-next-line: no-eval + return eval("!!" + condition); + } + return getPolicy(condition); + })); + return selector; + }; + /** + * @param {?} key + * @param {...?} interpolateParams + * @return {?} + */ + ConfigState.getCopy = /** + * @param {?} key + * @param {...?} interpolateParams + * @return {?} + */ + function (key) { + var interpolateParams = []; + for (var _i = 1; _i < arguments.length; _i++) { + interpolateParams[_i - 1] = arguments[_i]; + } + if (!key) + key = ''; + /** @type {?} */ + var keys = (/** @type {?} */ (key.split('::'))); + /** @type {?} */ + var selector = store.createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + var defaultResourceName = state.environment.localization.defaultResourceName; + if (keys[0] === '') { + if (!defaultResourceName) { + throw new Error("Please check your environment. May you forget set defaultResourceName? \n Here is the example:\n { production: false,\n localization: {\n defaultResourceName: 'MyProjectName'\n }\n }"); + } + keys[0] = snq((/** + * @return {?} + */ + function () { return defaultResourceName; })); + } + /** @type {?} */ + var copy = keys.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { + if (acc) { + return acc[val]; + } + return undefined; + }), state.localization.values); + if (copy && interpolateParams && interpolateParams.length) { + interpolateParams.forEach((/** + * @param {?} param + * @param {?} index + * @return {?} + */ + function (param, index) { + copy = copy.replace("'{" + index + "}'", param); + })); + } + return copy || key; + })); + return selector; + }; + /** + * @param {?} __0 + * @return {?} + */ + ConfigState.prototype.addData = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var _this = this; + var patchState = _a.patchState, dispatch = _a.dispatch; + return this.appConfigurationService.getConfiguration().pipe(operators.tap((/** + * @param {?} configuration + * @return {?} + */ + function (configuration) { + return patchState(__assign({}, configuration)); + })), operators.switchMap((/** + * @param {?} configuration + * @return {?} + */ + function (configuration) { + return _this.store.selectSnapshot(SessionState.getLanguage) + ? rxjs.of(null) + : dispatch(new SessionSetLanguage(snq((/** + * @return {?} + */ + function () { return configuration.setting.values['Abp.Localization.DefaultLanguage']; })))); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + ConfigState.prototype.patchRoute = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState, getState = _a.getState; + var name = _b.name, newValue = _b.newValue; + /** @type {?} */ + var routes = getState().routes; + /** @type {?} */ + var index = routes.findIndex((/** + * @param {?} route + * @return {?} + */ + function (route) { return route.name === name; })); + routes = patchRouteDeep(routes, name, newValue); + return patchState({ + routes: routes, + }); + }; + var ConfigState_1; + __decorate([ + store.Action(ConfigGetAppConfiguration), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) + ], ConfigState.prototype, "addData", null); + __decorate([ + store.Action(PatchRouteByName), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, PatchRouteByName]), + __metadata("design:returntype", void 0) + ], ConfigState.prototype, "patchRoute", null); + __decorate([ + store.Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) + ], ConfigState, "getAll", null); + ConfigState = ConfigState_1 = __decorate([ + store.State({ + name: 'ConfigState', + defaults: (/** @type {?} */ ({})), + }), + __metadata("design:paramtypes", [ApplicationConfigurationService, store.Store]) + ], ConfigState); + return ConfigState; + }()); + /** + * @param {?} routes + * @param {?} name + * @param {?} newValue + * @param {?=} parentUrl + * @return {?} + */ + function patchRouteDeep(routes, name, newValue, parentUrl) { + if (parentUrl === void 0) { parentUrl = null; } + routes = routes.map((/** + * @param {?} route + * @return {?} + */ + function (route) { + if (route.name === name) { + if (newValue.path) { + newValue.url = parentUrl + "/" + newValue.path; + } + if (newValue.children && newValue.children.length) { + newValue.children = newValue.children.map((/** + * @param {?} child + * @return {?} + */ + function (child) { return (__assign({}, child, { url: parentUrl + "/" + route.path + "/" + child.path })); })); + } + return __assign({}, route, newValue); + } + else if (route.children && route.children.length) { + route.children = patchRouteDeep(route.children, name, newValue, (parentUrl || '/') + route.path); + } + return route; + })); + if (parentUrl) { + // recursive block + return routes; + } + return organizeRoutes(routes); + } + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + /** + * @param {?=} a + * @return {?} + */ + function uuid(a) { + return a + ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16) + : ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid); + } + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + /** + * @param {?} injector + * @return {?} + */ + function getInitialData(injector) { + /** @type {?} */ + var fn = (/** + * @return {?} + */ + function () { + /** @type {?} */ + var store$1 = injector.get(store.Store); + return store$1.dispatch(new ConfigGetAppConfiguration()).toPromise(); + }); + return fn; + } + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + /** + * @param {?} value + * @return {?} + */ + function isFunction(value) { + return typeof value === 'function'; + } + /** @type {?} */ + var takeUntilDestroy = (/** + * @param {?} componentInstance + * @param {?=} destroyMethodName + * @return {?} + */ + function (componentInstance, destroyMethodName) { + if (destroyMethodName === void 0) { destroyMethodName = 'ngOnDestroy'; } + return (/** + * @template T + * @param {?} source + * @return {?} + */ + function (source) { + /** @type {?} */ + var originalDestroy = componentInstance[destroyMethodName]; + if (isFunction(originalDestroy) === false) { + throw new Error(componentInstance.constructor.name + " is using untilDestroyed but doesn't implement " + destroyMethodName); + } + if (!componentInstance['__takeUntilDestroy']) { + componentInstance['__takeUntilDestroy'] = new rxjs.Subject(); + componentInstance[destroyMethodName] = (/** + * @return {?} + */ + function () { + isFunction(originalDestroy) && originalDestroy.apply(this, arguments); + componentInstance['__takeUntilDestroy'].next(true); + componentInstance['__takeUntilDestroy'].complete(); + }); + } + return source.pipe(operators.takeUntil(componentInstance['__takeUntilDestroy'])); + }); + }); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var DynamicLayoutComponent = /** @class */ (function () { + function DynamicLayoutComponent(router$1, store) { + var _this = this; + this.router = router$1; + this.store = store; + this.router.events.pipe(takeUntilDestroy(this)).subscribe((/** + * @param {?} event + * @return {?} + */ + function (event) { + if (event instanceof router.NavigationEnd) { + var segments = _this.router.parseUrl(event.url).root.children.primary.segments; + var _a = _this.store.selectSnapshot(ConfigState.getAll), layouts = _a.requirements.layouts, routes = _a.routes; + /** @type {?} */ + var layout_1 = findLayout(segments, routes); + _this.layout = layouts.filter((/** + * @param {?} l + * @return {?} + */ + function (l) { return !!l; })).find((/** + * @param {?} l + * @return {?} + */ + function (l) { return snq((/** + * @return {?} + */ + function () { return l.type.toLowerCase().indexOf(layout_1); }), -1) > -1; })); + } + })); + } + /** + * @return {?} + */ + DynamicLayoutComponent.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { }; + DynamicLayoutComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-dynamic-layout', + template: "\n \n\n \n \n " + }] } + ]; + /** @nocollapse */ + DynamicLayoutComponent.ctorParameters = function () { return [ + { type: router.Router }, + { type: store.Store } + ]; }; + __decorate([ + store.Select(ConfigState.getOne('requirements')), + __metadata("design:type", rxjs.Observable) + ], DynamicLayoutComponent.prototype, "requirements$", void 0); + return DynamicLayoutComponent; + }()); + /** + * @param {?} segments + * @param {?} routes + * @return {?} + */ + function findLayout(segments, routes) { + /** @type {?} */ + var layout = "empty" /* empty */; + /** @type {?} */ + var route = routes + .reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { return (val.wrapper ? __spread(acc, val.children) : __spread(acc, [val])); }), []) + .find((/** + * @param {?} r + * @return {?} + */ + function (r) { return r.path === segments[0].path; })); + if (route) { + if (route.layout) { + layout = route.layout; + } + if (route.children && route.children.length) { + /** @type {?} */ + var child = route.children.find((/** + * @param {?} c + * @return {?} + */ + function (c) { return c.path === segments[1].path; })); + if (child.layout) { + layout = child.layout; + } + } + } + return layout; + } + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var RouterOutletComponent = /** @class */ (function () { + function RouterOutletComponent() { + } + RouterOutletComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-router-outlet', + template: "\n \n " + }] } + ]; + return RouterOutletComponent; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var EllipsisDirective = /** @class */ (function () { + function EllipsisDirective(cdRef, elRef) { + this.cdRef = cdRef; + this.elRef = elRef; + this.enabled = true; + } + Object.defineProperty(EllipsisDirective.prototype, "class", { + get: /** + * @return {?} + */ + function () { + return this.enabled; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(EllipsisDirective.prototype, "maxWidth", { + get: /** + * @return {?} + */ + function () { + return this.enabled ? this.witdh || '180px' : undefined; + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + EllipsisDirective.prototype.ngAfterContentInit = /** + * @return {?} + */ + function () { + var _this = this; + setTimeout((/** + * @return {?} + */ + function () { + /** @type {?} */ + var title = _this.title; + _this.title = title || ((/** @type {?} */ (_this.elRef.nativeElement))).innerText; + if (_this.title !== title) { + _this.cdRef.detectChanges(); + } + }), 0); + }; + EllipsisDirective.decorators = [ + { type: core.Directive, args: [{ + selector: '[abpEllipsis]', + },] } + ]; + /** @nocollapse */ + EllipsisDirective.ctorParameters = function () { return [ + { type: core.ChangeDetectorRef }, + { type: core.ElementRef } + ]; }; + EllipsisDirective.propDecorators = { + witdh: [{ type: core.Input, args: ['abpEllipsis',] }], + title: [{ type: core.HostBinding, args: ['title',] }, { type: core.Input }], + enabled: [{ type: core.Input, args: ['abpEllipsisEnabled',] }], + class: [{ type: core.HostBinding, args: ['class.abp-ellipsis',] }], + maxWidth: [{ type: core.HostBinding, args: ['style.max-width',] }] + }; + return EllipsisDirective; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var PermissionDirective = /** @class */ (function () { + function PermissionDirective(elRef, renderer, store) { + this.elRef = elRef; + this.renderer = renderer; + this.store = store; + } + /** + * @return {?} + */ + PermissionDirective.prototype.ngOnInit = /** + * @return {?} + */ + function () { + var _this = this; + if (this.condition) { + this.store + .select(ConfigState.getGrantedPolicy(this.condition)) + .pipe(takeUntilDestroy(this)) + .subscribe((/** + * @param {?} isGranted + * @return {?} + */ + function (isGranted) { + if (!isGranted) { + _this.renderer.removeChild(((/** @type {?} */ (_this.elRef.nativeElement))).parentElement, _this.elRef.nativeElement); + } + })); + } + }; + /** + * @return {?} + */ + PermissionDirective.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { }; + PermissionDirective.decorators = [ + { type: core.Directive, args: [{ + selector: '[abpPermission]', + },] } + ]; + /** @nocollapse */ + PermissionDirective.ctorParameters = function () { return [ + { type: core.ElementRef, decorators: [{ type: core.Optional }] }, + { type: core.Renderer2 }, + { type: store.Store } + ]; }; + PermissionDirective.propDecorators = { + condition: [{ type: core.Input, args: ['abpPermission',] }] + }; + return PermissionDirective; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var VisibilityDirective = /** @class */ (function () { + function VisibilityDirective(elRef, renderer) { + this.elRef = elRef; + this.renderer = renderer; + this.completed$ = new rxjs.Subject(); + } + /** + * @return {?} + */ + VisibilityDirective.prototype.ngAfterViewInit = /** + * @return {?} + */ + function () { + var _this = this; + /** @type {?} */ + var observer = new MutationObserver((/** + * @param {?} mutations + * @return {?} + */ + function (mutations) { + mutations.forEach((/** + * @param {?} mutation + * @return {?} + */ + function (mutation) { + if (!mutation.target) + return; + /** @type {?} */ + var htmlNodes = snq((/** + * @return {?} + */ + function () { return Array.from(mutation.target.childNodes).filter((/** + * @param {?} node + * @return {?} + */ + function (node) { return node instanceof HTMLElement; })); }), []); + if (!htmlNodes.length) { + _this.renderer.removeChild(_this.elRef.nativeElement.parentElement, _this.elRef.nativeElement); + _this.disconnect(); + } + else { + setTimeout((/** + * @return {?} + */ + function () { + _this.disconnect(); + }), 0); + } + })); + })); + observer.observe(this.focusedElement, { + childList: true, + }); + this.completed$.subscribe((/** + * @return {?} + */ + function () { return observer.disconnect(); })); + }; + /** + * @return {?} + */ + VisibilityDirective.prototype.disconnect = /** + * @return {?} + */ + function () { + this.completed$.next(); + this.completed$.complete(); + }; + VisibilityDirective.decorators = [ + { type: core.Directive, args: [{ + selector: '[abpVisibility]', + },] } + ]; + /** @nocollapse */ + VisibilityDirective.ctorParameters = function () { return [ + { type: core.ElementRef, decorators: [{ type: core.Optional }] }, + { type: core.Renderer2 } + ]; }; + VisibilityDirective.propDecorators = { + focusedElement: [{ type: core.Input, args: ['abpVisibility',] }] + }; + return VisibilityDirective; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var AuthGuard = /** @class */ (function () { + function AuthGuard(oauthService, store) { + this.oauthService = oauthService; + this.store = store; + } + /** + * @param {?} _ + * @param {?} state + * @return {?} + */ + AuthGuard.prototype.canActivate = /** + * @param {?} _ + * @param {?} state + * @return {?} + */ + function (_, state) { + /** @type {?} */ + var hasValidAccessToken = this.oauthService.hasValidAccessToken(); + if (hasValidAccessToken) { + return hasValidAccessToken; + } + this.store.dispatch(new routerPlugin.Navigate(['/account/login'], null, { state: { redirectUrl: state.url } })); + return false; + }; + AuthGuard.decorators = [ + { type: core.Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + AuthGuard.ctorParameters = function () { return [ + { type: angularOauth2Oidc.OAuthService }, + { type: store.Store } + ]; }; + /** @nocollapse */ AuthGuard.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function AuthGuard_Factory() { return new AuthGuard(core.ɵɵinject(angularOauth2Oidc.OAuthService), core.ɵɵinject(store.Store)); }, token: AuthGuard, providedIn: "root" }); + return AuthGuard; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var PermissionGuard = /** @class */ (function () { + function PermissionGuard(store) { + this.store = store; + } + /** + * @param {?} __0 + * @return {?} + */ + PermissionGuard.prototype.canActivate = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var data = _a.data; + /** @type {?} */ + var resource = (/** @type {?} */ (data.requiredPolicy)); + return this.store.select(ConfigState.getGrantedPolicy(resource)); + }; + PermissionGuard.decorators = [ + { type: core.Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + PermissionGuard.ctorParameters = function () { return [ + { type: store.Store } + ]; }; + /** @nocollapse */ PermissionGuard.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function PermissionGuard_Factory() { return new PermissionGuard(core.ɵɵinject(store.Store)); }, token: PermissionGuard, providedIn: "root" }); + return PermissionGuard; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var ApiInterceptor = /** @class */ (function () { + function ApiInterceptor(oAuthService, store) { + this.oAuthService = oAuthService; + this.store = store; + } + /** + * @param {?} request + * @param {?} next + * @return {?} + */ + ApiInterceptor.prototype.intercept = /** + * @param {?} request + * @param {?} next + * @return {?} + */ + function (request, next) { + var _this = this; + this.store.dispatch(new LoaderStart(request)); + /** @type {?} */ + var headers = (/** @type {?} */ ({})); + /** @type {?} */ + var token = this.oAuthService.getAccessToken(); + if (!request.headers.has('Authorization') && token) { + headers['Authorization'] = "Bearer " + token; + } + /** @type {?} */ + var lang = this.store.selectSnapshot(SessionState.getLanguage); + if (!request.headers.has('Accept-Language') && lang) { + headers['Accept-Language'] = lang; + } + return next + .handle(request.clone({ + setHeaders: headers, + })) + .pipe(operators.finalize((/** + * @return {?} + */ + function () { return _this.store.dispatch(new LoaderStop(request)); }))); + }; + ApiInterceptor.decorators = [ + { type: core.Injectable } + ]; + /** @nocollapse */ + ApiInterceptor.ctorParameters = function () { return [ + { type: angularOauth2Oidc.OAuthService }, + { type: store.Store } + ]; }; + return ApiInterceptor; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + + (function (Rest) { + /** + * @record + */ + function Config() { } + Rest.Config = Config; + /** + * @record + * @template T + */ + function Request() { } + Rest.Request = Request; + })(exports.Rest || (exports.Rest = {})); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + /** @type {?} */ + var NGXS_CONFIG_PLUGIN_OPTIONS = new core.InjectionToken('NGXS_CONFIG_PLUGIN_OPTIONS'); + var ConfigPlugin = /** @class */ (function () { + function ConfigPlugin(options, router) { + this.options = options; + this.router = router; + this.initialized = false; + } + /** + * @param {?} state + * @param {?} event + * @param {?} next + * @return {?} + */ + ConfigPlugin.prototype.handle = /** + * @param {?} state + * @param {?} event + * @param {?} next + * @return {?} + */ + function (state, event, next) { + /** @type {?} */ + var matches = store.actionMatcher(event); + /** @type {?} */ + var isInitAction = matches(store.InitState) || matches(store.UpdateState); + // const layouts = snq(() => this.options.requirements.layouts.filter(layout => layout instanceof Type), []); + if (isInitAction && !this.initialized) { + var _a = transformRoutes(this.router.config), routes = _a.routes, wrappers = _a.wrappers; + routes = organizeRoutes(routes, wrappers); + state = store.setValue(state, 'ConfigState', __assign({}, (state.ConfigState && __assign({}, state.ConfigState)), this.options, { routes: routes })); + this.initialized = true; + } + return next(state, event); + }; + ConfigPlugin.decorators = [ + { type: core.Injectable } + ]; + /** @nocollapse */ + ConfigPlugin.ctorParameters = function () { return [ + { type: undefined, decorators: [{ type: core.Inject, args: [NGXS_CONFIG_PLUGIN_OPTIONS,] }] }, + { type: router.Router } + ]; }; + return ConfigPlugin; + }()); + /** + * @param {?=} routes + * @param {?=} wrappers + * @return {?} + */ + function transformRoutes(routes, wrappers) { + if (routes === void 0) { routes = []; } + if (wrappers === void 0) { wrappers = []; } + /** @type {?} */ + var abpRoutes = routes + .filter((/** + * @param {?} route + * @return {?} + */ + function (route) { + return snq((/** + * @return {?} + */ + function () { return route.data.routes.find((/** + * @param {?} r + * @return {?} + */ + function (r) { return r.path === route.path; })); }), false); + })) + .reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { return __spread(acc, val.data.routes); }), []); + wrappers = abpRoutes.filter((/** + * @param {?} ar + * @return {?} + */ + function (ar) { return ar.wrapper; })); + /** @type {?} */ + var transformed = (/** @type {?} */ ([])); + routes + .filter((/** + * @param {?} route + * @return {?} + */ + function (route) { return route.component || route.loadChildren; })) + .forEach((/** + * @param {?} route + * @return {?} + */ + function (route) { + /** @type {?} */ + var abpPackage = abpRoutes.find((/** + * @param {?} abp + * @return {?} + */ + function (abp) { return abp.path.toLowerCase() === route.path.toLowerCase(); })); + var length = transformed.length; + if (abpPackage) { + transformed.push(abpPackage); + } + if (transformed.length === length) { + transformed.push((/** @type {?} */ ({ + path: route.path, + name: snq((/** + * @return {?} + */ + function () { return route.data.routes.name; }), route.path), + children: route.data.routes.children || [], + }))); + } + })); + return { routes: setUrls(transformed), wrappers: wrappers }; + } + /** + * @param {?} routes + * @param {?=} parentUrl + * @return {?} + */ + function setUrls(routes, parentUrl) { + if (parentUrl) { + // this if block using for only recursive call + return routes.map((/** + * @param {?} route + * @return {?} + */ + function (route) { return (__assign({}, route, { url: parentUrl + "/" + route.path }, (route.children && + route.children.length && { + children: setUrls(route.children, parentUrl + "/" + route.path), + }))); })); + } + return routes.map((/** + * @param {?} route + * @return {?} + */ + function (route) { return (__assign({}, route, { url: "/" + route.path }, (route.children && + route.children.length && { + children: setUrls(route.children, "/" + route.path), + }))); })); + } + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var ConfigService = /** @class */ (function () { + function ConfigService(store) { + this.store = store; + } + /** + * @return {?} + */ + ConfigService.prototype.getAll = /** + * @return {?} + */ + function () { + return this.store.selectSnapshot(ConfigState.getAll); + }; + /** + * @param {?} key + * @return {?} + */ + ConfigService.prototype.getOne = /** + * @param {?} key + * @return {?} + */ + function (key) { + return this.store.selectSnapshot(ConfigState.getOne(key)); + }; + /** + * @param {?} keys + * @return {?} + */ + ConfigService.prototype.getDeep = /** + * @param {?} keys + * @return {?} + */ + function (keys) { + return this.store.selectSnapshot(ConfigState.getDeep(keys)); + }; + /** + * @param {?} key + * @return {?} + */ + ConfigService.prototype.getSetting = /** + * @param {?} key + * @return {?} + */ + function (key) { + return this.store.selectSnapshot(ConfigState.getSetting(key)); + }; + ConfigService.decorators = [ + { type: core.Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + ConfigService.ctorParameters = function () { return [ + { type: store.Store } + ]; }; + /** @nocollapse */ ConfigService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function ConfigService_Factory() { return new ConfigService(core.ɵɵinject(store.Store)); }, token: ConfigService, providedIn: "root" }); + return ConfigService; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var LazyLoadService = /** @class */ (function () { + function LazyLoadService() { + this.loadedLibraries = {}; + } + /** + * @param {?} url + * @param {?} type + * @param {?=} content + * @param {?=} targetQuery + * @param {?=} position + * @return {?} + */ + LazyLoadService.prototype.load = /** + * @param {?} url + * @param {?} type + * @param {?=} content + * @param {?=} targetQuery + * @param {?=} position + * @return {?} + */ + function (url, type, content, targetQuery, position) { + var _this = this; + if (content === void 0) { content = ''; } + if (targetQuery === void 0) { targetQuery = 'body'; } + if (position === void 0) { position = 'afterend'; } + if (!url && !content) + return; + /** @type {?} */ + var key = url ? url.slice(url.lastIndexOf('/') + 1) : uuid(); + if (this.loadedLibraries[key]) { + return this.loadedLibraries[key].asObservable(); + } + this.loadedLibraries[key] = new rxjs.ReplaySubject(); + /** @type {?} */ + var library; + if (type === 'script') { + library = document.createElement('script'); + library.type = 'text/javascript'; + if (url) { + ((/** @type {?} */ (library))).src = url; + } + ((/** @type {?} */ (library))).text = content; + } + else if (url) { + library = document.createElement('link'); + library.type = 'text/css'; + ((/** @type {?} */ (library))).rel = 'stylesheet'; + if (url) { + ((/** @type {?} */ (library))).href = url; + } + } + else { + library = document.createElement('style'); + ((/** @type {?} */ (library))).textContent = content; + } + library.onload = (/** + * @return {?} + */ + function () { + _this.loadedLibraries[key].next(); + _this.loadedLibraries[key].complete(); + }); + document.querySelector(targetQuery).insertAdjacentElement(position, library); + return this.loadedLibraries[key].asObservable(); + }; + LazyLoadService.decorators = [ + { type: core.Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ LazyLoadService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function LazyLoadService_Factory() { return new LazyLoadService(); }, token: LazyLoadService, providedIn: "root" }); + return LazyLoadService; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var LocalizationService = /** @class */ (function () { + function LocalizationService(store) { + this.store = store; + } + /** + * @param {?} keys + * @param {...?} interpolateParams + * @return {?} + */ + LocalizationService.prototype.get = /** + * @param {?} keys + * @param {...?} interpolateParams + * @return {?} + */ + function (keys) { + var interpolateParams = []; + for (var _i = 1; _i < arguments.length; _i++) { + interpolateParams[_i - 1] = arguments[_i]; + } + return this.store.select(ConfigState.getCopy.apply(ConfigState, __spread([keys], interpolateParams))); + }; + /** + * @param {?} keys + * @param {...?} interpolateParams + * @return {?} + */ + LocalizationService.prototype.instant = /** + * @param {?} keys + * @param {...?} interpolateParams + * @return {?} + */ + function (keys) { + var interpolateParams = []; + for (var _i = 1; _i < arguments.length; _i++) { + interpolateParams[_i - 1] = arguments[_i]; + } + return this.store.selectSnapshot(ConfigState.getCopy.apply(ConfigState, __spread([keys], interpolateParams))); + }; + LocalizationService.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] } + ]; + /** @nocollapse */ + LocalizationService.ctorParameters = function () { return [ + { type: store.Store } + ]; }; + /** @nocollapse */ LocalizationService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function LocalizationService_Factory() { return new LocalizationService(core.ɵɵinject(store.Store)); }, token: LocalizationService, providedIn: "root" }); + return LocalizationService; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + /** + * @param {?} environment + * @return {?} + */ + function environmentFactory(environment) { + return __assign({}, environment); + } + /** + * @param {?} config + * @return {?} + */ + function configFactory(config) { + return __assign({}, config); + } + /** @type {?} */ + var ENVIRONMENT = new core.InjectionToken('ENVIRONMENT'); + /** @type {?} */ + var CONFIG = new core.InjectionToken('CONFIG'); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var LocalizationPipe = /** @class */ (function () { + function LocalizationPipe(store) { + this.store = store; + this.initialized = false; + } + /** + * @param {?} value + * @param {...?} interpolateParams + * @return {?} + */ + LocalizationPipe.prototype.transform = /** + * @param {?} value + * @param {...?} interpolateParams + * @return {?} + */ + function (value) { + var _this = this; + var interpolateParams = []; + for (var _i = 1; _i < arguments.length; _i++) { + interpolateParams[_i - 1] = arguments[_i]; + } + if (!this.initialized) { + this.initialized = true; + this.store + .select(ConfigState.getCopy.apply(ConfigState, __spread([value], interpolateParams.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { return (Array.isArray(val) ? __spread(acc, val) : __spread(acc, [val])); }), [])))) + .pipe(takeUntilDestroy(this), operators.distinctUntilChanged()) + .subscribe((/** + * @param {?} copy + * @return {?} + */ + function (copy) { return (_this.value = copy); })); + } + return this.value; + }; + /** + * @return {?} + */ + LocalizationPipe.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { }; + LocalizationPipe.decorators = [ + { type: core.Pipe, args: [{ + name: 'abpLocalization', + pure: false, + },] } + ]; + /** @nocollapse */ + LocalizationPipe.ctorParameters = function () { return [ + { type: store.Store } + ]; }; + return LocalizationPipe; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var CoreModule = /** @class */ (function () { + function CoreModule() { + } + /** + * @param {?=} options + * @return {?} + */ + CoreModule.forRoot = /** + * @param {?=} options + * @return {?} + */ + function (options) { + if (options === void 0) { options = (/** @type {?} */ ({})); } + return { + ngModule: CoreModule, + providers: [ + { + provide: store.NGXS_PLUGINS, + useClass: ConfigPlugin, + multi: true, + }, + { + provide: NGXS_CONFIG_PLUGIN_OPTIONS, + useValue: options, + }, + { + provide: http.HTTP_INTERCEPTORS, + useClass: ApiInterceptor, + multi: true, + }, + { + provide: core.APP_INITIALIZER, + multi: true, + deps: [core.Injector], + useFactory: getInitialData, + }, + ], + }; + }; + CoreModule.decorators = [ + { type: core.NgModule, args: [{ + imports: [ + store.NgxsModule.forFeature([ProfileState, SessionState, ConfigState]), + storagePlugin.NgxsStoragePluginModule.forRoot({ key: 'SessionState' }), + routerPlugin.NgxsRouterPluginModule.forRoot(), + common.CommonModule, + http.HttpClientModule, + forms.FormsModule, + forms.ReactiveFormsModule, + router.RouterModule, + ], + declarations: [ + RouterOutletComponent, + DynamicLayoutComponent, + PermissionDirective, + VisibilityDirective, + LocalizationPipe, + EllipsisDirective, + ], + exports: [ + common.CommonModule, + http.HttpClientModule, + forms.FormsModule, + forms.ReactiveFormsModule, + router.RouterModule, + RouterOutletComponent, + DynamicLayoutComponent, + PermissionDirective, + VisibilityDirective, + EllipsisDirective, + LocalizationPipe, + ], + providers: [LocalizationPipe], + entryComponents: [RouterOutletComponent, DynamicLayoutComponent], + },] } + ]; + return CoreModule; + }()); + + exports.ApiInterceptor = ApiInterceptor; + exports.ApplicationConfigurationService = ApplicationConfigurationService; + exports.AuthGuard = AuthGuard; + exports.CONFIG = CONFIG; + exports.ConfigGetAppConfiguration = ConfigGetAppConfiguration; + exports.ConfigPlugin = ConfigPlugin; + exports.ConfigService = ConfigService; + exports.ConfigState = ConfigState; + exports.CoreModule = CoreModule; + exports.DynamicLayoutComponent = DynamicLayoutComponent; + exports.ENVIRONMENT = ENVIRONMENT; + exports.EllipsisDirective = EllipsisDirective; + exports.LazyLoadService = LazyLoadService; + exports.LoaderStart = LoaderStart; + exports.LoaderStop = LoaderStop; + exports.LocalizationService = LocalizationService; + exports.NGXS_CONFIG_PLUGIN_OPTIONS = NGXS_CONFIG_PLUGIN_OPTIONS; + exports.PatchRouteByName = PatchRouteByName; + exports.PermissionDirective = PermissionDirective; + exports.PermissionGuard = PermissionGuard; + exports.ProfileChangePassword = ProfileChangePassword; + exports.ProfileGet = ProfileGet; + exports.ProfileService = ProfileService; + exports.ProfileState = ProfileState; + exports.ProfileUpdate = ProfileUpdate; + exports.RestOccurError = RestOccurError; + exports.RestService = RestService; + exports.RouterOutletComponent = RouterOutletComponent; + exports.SessionSetLanguage = SessionSetLanguage; + exports.SessionState = SessionState; + exports.VisibilityDirective = VisibilityDirective; + exports.configFactory = configFactory; + exports.environmentFactory = environmentFactory; + exports.getInitialData = getInitialData; + exports.organizeRoutes = organizeRoutes; + exports.setChildRoute = setChildRoute; + exports.sortRoutes = sortRoutes; + exports.takeUntilDestroy = takeUntilDestroy; + exports.uuid = uuid; + exports.ɵa = ProfileState; + exports.ɵb = ProfileService; + exports.ɵc = RestService; + exports.ɵd = ProfileGet; + exports.ɵe = ProfileUpdate; + exports.ɵf = ProfileChangePassword; + exports.ɵh = SessionState; + exports.ɵi = SessionSetLanguage; + exports.ɵj = ConfigState; + exports.ɵk = ApplicationConfigurationService; + exports.ɵl = PatchRouteByName; + exports.ɵm = ConfigGetAppConfiguration; + exports.ɵn = RouterOutletComponent; + exports.ɵo = DynamicLayoutComponent; + exports.ɵp = ConfigState; + exports.ɵq = PermissionDirective; + exports.ɵr = VisibilityDirective; + exports.ɵs = LocalizationPipe; + exports.ɵt = EllipsisDirective; + exports.ɵu = NGXS_CONFIG_PLUGIN_OPTIONS; + exports.ɵv = ConfigPlugin; + exports.ɵx = ApiInterceptor; + exports.ɵy = getInitialData; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); +//# sourceMappingURL=abp-ng.core.umd.js.map diff --git a/npm/ng-packs/dist/core/bundles/abp-ng.core.umd.js.map b/npm/ng-packs/dist/core/bundles/abp-ng.core.umd.js.map new file mode 100644 index 00000000000..6d491ea98d8 --- /dev/null +++ b/npm/ng-packs/dist/core/bundles/abp-ng.core.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.core.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","ng://@abp/ng.core/lib/actions/config.actions.ts","ng://@abp/ng.core/lib/actions/loader.actions.ts","ng://@abp/ng.core/lib/actions/profile.actions.ts","ng://@abp/ng.core/lib/actions/rest.actions.ts","ng://@abp/ng.core/lib/actions/session.actions.ts","ng://@abp/ng.core/lib/services/rest.service.ts","ng://@abp/ng.core/lib/services/profile.service.ts","ng://@abp/ng.core/lib/states/profile.state.ts","ng://@abp/ng.core/lib/services/application-configuration.service.ts","ng://@abp/ng.core/lib/states/session.state.ts","ng://@abp/ng.core/lib/utils/route-utils.ts","ng://@abp/ng.core/lib/states/config.state.ts","ng://@abp/ng.core/lib/utils/generator-utils.ts","ng://@abp/ng.core/lib/utils/initial-utils.ts","ng://@abp/ng.core/lib/utils/rxjs-utils.ts","ng://@abp/ng.core/lib/components/dynamic-layout.component.ts","ng://@abp/ng.core/lib/components/router-outlet.component.ts","ng://@abp/ng.core/lib/directives/ellipsis.directive.ts","ng://@abp/ng.core/lib/directives/permission.directive.ts","ng://@abp/ng.core/lib/directives/visibility.directive.ts","ng://@abp/ng.core/lib/guards/auth.guard.ts","ng://@abp/ng.core/lib/guards/permission.guard.ts","ng://@abp/ng.core/lib/interceptors/api.interceptor.ts","ng://@abp/ng.core/lib/models/rest.ts","ng://@abp/ng.core/lib/plugins/config.plugin.ts","ng://@abp/ng.core/lib/services/config.service.ts","ng://@abp/ng.core/lib/services/lazy-load.service.ts","ng://@abp/ng.core/lib/services/localization.service.ts","ng://@abp/ng.core/lib/tokens/common.token.ts","ng://@abp/ng.core/lib/pipes/localization.pipe.ts","ng://@abp/ng.core/lib/core.module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { ABP } from '../models';\n\nexport class PatchRouteByName {\n static readonly type = '[Config] Patch Route By Name';\n constructor(public name: string, public newValue: Partial) {}\n}\n\nexport class ConfigGetAppConfiguration {\n static readonly type = '[Config] Get App Configuration';\n}\n","import { HttpRequest } from '@angular/common/http';\n\nexport class LoaderStart {\n static readonly type = '[Loader] Start';\n constructor(public payload: HttpRequest) {}\n}\n\nexport class LoaderStop {\n static readonly type = '[Loader] Stop';\n constructor(public payload: HttpRequest) {}\n}\n","import { Profile } from '../models';\n\nexport class ProfileGet {\n static readonly type = '[Profile] Get';\n}\n\nexport class ProfileUpdate {\n static readonly type = '[Profile] Update';\n constructor(public payload: Profile.Response) {}\n}\n\nexport class ProfileChangePassword {\n static readonly type = '[Profile] Change Password';\n constructor(public payload: Profile.ChangePasswordRequest) {}\n}\n","import { HttpErrorResponse } from '@angular/common/http';\n\nexport class RestOccurError {\n static readonly type = '[Rest] Error';\n constructor(public payload: HttpErrorResponse | any) {}\n}\n","export class SessionSetLanguage {\n static readonly type = '[Session] Set Language';\n constructor(public payload: string) {}\n}\n","import { HttpClient, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { NEVER, Observable, throwError } from 'rxjs';\nimport { catchError, take } from 'rxjs/operators';\nimport { Rest } from '../models/rest';\nimport { ConfigState } from '../states';\nimport { RestOccurError } from '../actions';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RestService {\n constructor(private http: HttpClient, private store: Store) {}\n\n handleError(err: any): Observable {\n this.store.dispatch(new RestOccurError(err));\n console.error(err);\n return NEVER;\n }\n\n request(request: HttpRequest | Rest.Request, config: Rest.Config = {}, api?: string): Observable {\n const { observe = Rest.Observe.Body, throwErr } = config;\n const url = api || this.store.selectSnapshot(ConfigState.getApiUrl()) + request.url;\n const { method, ...options } = request;\n return this.http.request(method, url, { observe, ...options } as any).pipe(\n observe === Rest.Observe.Body ? take(1) : null,\n catchError(err => {\n if (throwErr) {\n return throwError(err);\n }\n\n return this.handleError(err);\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RestService } from './rest.service';\nimport { Profile, Rest } from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProfileService {\n constructor(private rest: RestService) {}\n\n get(): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/identity/my-profile',\n };\n\n return this.rest.request(request);\n }\n\n update(body: Profile.Response): Observable {\n const request: Rest.Request = {\n method: 'PUT',\n url: '/api/identity/my-profile',\n body,\n };\n\n return this.rest.request(request);\n }\n\n changePassword(body: Profile.ChangePasswordRequest): Observable {\n const request: Rest.Request = {\n method: 'POST',\n url: '/api/identity/my-profile/changePassword',\n body,\n };\n\n return this.rest.request(request);\n }\n}\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\nimport { ProfileGet, ProfileChangePassword, ProfileUpdate } from '../actions/profile.actions';\nimport { Profile } from '../models/profile';\nimport { ProfileService } from '../services/profile.service';\nimport { tap } from 'rxjs/operators';\n\n@State({\n name: 'ProfileState',\n defaults: {} as Profile.State,\n})\nexport class ProfileState {\n @Selector()\n static getProfile({ profile }: Profile.State): Profile.Response {\n return profile;\n }\n\n constructor(private profileService: ProfileService) {}\n\n @Action(ProfileGet)\n profileGet({ patchState }: StateContext) {\n return this.profileService.get().pipe(\n tap(profile =>\n patchState({\n profile,\n }),\n ),\n );\n }\n\n @Action(ProfileUpdate)\n profileUpdate({ patchState }: StateContext, { payload }: ProfileUpdate) {\n return this.profileService.update(payload).pipe(\n tap(profile =>\n patchState({\n profile,\n }),\n ),\n );\n }\n\n @Action(ProfileChangePassword)\n changePassword(_, { payload }: ProfileChangePassword) {\n return this.profileService.changePassword(payload);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApplicationConfiguration, Rest } from '../models';\nimport { RestService } from './rest.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApplicationConfigurationService {\n constructor(private rest: RestService) {}\n\n getConfiguration(): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/abp/application-configuration',\n };\n\n return this.rest.request(request);\n }\n}\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\nimport { SessionSetLanguage } from '../actions/session.actions';\nimport { Session } from '../models/session';\n\n@State({\n name: 'SessionState',\n defaults: {} as Session.State,\n})\nexport class SessionState {\n @Selector()\n static getLanguage({ language }: Session.State): string {\n return language;\n }\n\n constructor() {}\n\n @Action(SessionSetLanguage)\n sessionSetLanguage({ patchState }: StateContext, { payload }: SessionSetLanguage) {\n patchState({\n language: payload,\n });\n }\n}\n","import { ABP } from '../models';\n\nexport function organizeRoutes(\n routes: ABP.FullRoute[],\n wrappers: ABP.FullRoute[] = [],\n parentNameArr = [] as ABP.FullRoute[],\n parentName: string = null,\n): ABP.FullRoute[] {\n const filter = route => {\n if (route.children) {\n route.children = organizeRoutes(route.children, wrappers, parentNameArr, route.name);\n }\n\n if (route.parentName && route.parentName !== parentName) {\n parentNameArr.push(route);\n return false;\n }\n\n return true;\n };\n\n if (parentName) {\n // recursive block\n return routes.filter(filter);\n }\n\n const filteredRoutes = routes.filter(filter);\n\n if (parentNameArr.length) {\n return sortRoutes(setChildRoute([...filteredRoutes, ...wrappers], parentNameArr));\n }\n\n return filteredRoutes;\n}\n\nexport function setChildRoute(routes: ABP.FullRoute[], parentNameArr: ABP.FullRoute[]): ABP.FullRoute[] {\n return routes\n .map(route => {\n if (route.children && route.children.length) {\n route.children = setChildRoute(route.children, parentNameArr);\n }\n\n const foundedChildren = parentNameArr.filter(parent => parent.parentName === route.name);\n if (foundedChildren && foundedChildren.length) {\n route.children = [...(route.children || []), ...foundedChildren];\n }\n\n return route;\n })\n .filter(route => route.path || (route.children && route.children.length));\n}\n\nexport function sortRoutes(routes: ABP.FullRoute[] = []): ABP.FullRoute[] {\n if (!routes.length) return [];\n return routes\n .sort((a, b) => a.order - b.order)\n .map(route => {\n if (route.children && route.children.length) {\n route.children = sortRoutes(route.children);\n }\n\n return route;\n });\n}\n","import { State, Selector, createSelector, Action, StateContext, Store } from '@ngxs/store';\nimport { Config, ABP } from '../models';\nimport { ConfigGetAppConfiguration, PatchRouteByName } from '../actions/config.actions';\nimport { ApplicationConfigurationService } from '../services/application-configuration.service';\nimport { tap, switchMap } from 'rxjs/operators';\nimport snq from 'snq';\nimport { SessionSetLanguage } from '../actions';\nimport { SessionState } from './session.state';\nimport { of } from 'rxjs';\nimport { setChildRoute, sortRoutes, organizeRoutes } from '../utils/route-utils';\n\n@State({\n name: 'ConfigState',\n defaults: {} as Config.State,\n})\nexport class ConfigState {\n @Selector()\n static getAll(state: Config.State) {\n return state;\n }\n\n static getOne(key: string) {\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State) {\n return state[key];\n },\n );\n\n return selector;\n }\n\n static getDeep(keys: string[] | string) {\n if (typeof keys === 'string') {\n keys = keys.split('.');\n }\n\n if (!Array.isArray(keys)) {\n throw new Error('The argument must be a dot string or an string array.');\n }\n\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State) {\n return (keys as string[]).reduce((acc, val) => {\n if (acc) {\n return acc[val];\n }\n\n return undefined;\n }, state);\n },\n );\n\n return selector;\n }\n\n static getApiUrl(key?: string) {\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State): string {\n return state.environment.apis[key || 'default'].url;\n },\n );\n\n return selector;\n }\n\n static getSetting(key: string) {\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State) {\n return snq(() => state.setting.values[key]);\n },\n );\n\n return selector;\n }\n\n static getGrantedPolicy(condition: string = '') {\n const keys = condition\n .replace(/\\(|\\)|\\!|\\s/g, '')\n .split(/\\|\\||&&/)\n .filter(key => key);\n\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State): boolean {\n if (!keys.length) return true;\n\n const getPolicy = key => snq(() => state.auth.grantedPolicies[key], false);\n if (keys.length > 1) {\n keys.forEach(key => {\n const value = getPolicy(key);\n condition = condition.replace(key, value);\n });\n\n // tslint:disable-next-line: no-eval\n return eval(`!!${condition}`);\n }\n\n return getPolicy(condition);\n },\n );\n\n return selector;\n }\n\n static getCopy(key: string, ...interpolateParams: string[]) {\n if (!key) key = '';\n\n const keys = key.split('::') as string[];\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State) {\n const { defaultResourceName } = state.environment.localization;\n if (keys[0] === '') {\n if (!defaultResourceName) {\n throw new Error(\n `Please check your environment. May you forget set defaultResourceName? \n Here is the example:\n { production: false,\n localization: {\n defaultResourceName: 'MyProjectName'\n }\n }`,\n );\n }\n\n keys[0] = snq(() => defaultResourceName);\n }\n\n let copy = keys.reduce((acc, val) => {\n if (acc) {\n return acc[val];\n }\n\n return undefined;\n }, state.localization.values);\n\n if (copy && interpolateParams && interpolateParams.length) {\n interpolateParams.forEach((param, index) => {\n copy = copy.replace(`'{${index}}'`, param);\n });\n }\n\n return copy || key;\n },\n );\n\n return selector;\n }\n\n constructor(private appConfigurationService: ApplicationConfigurationService, private store: Store) {}\n\n @Action(ConfigGetAppConfiguration)\n addData({ patchState, dispatch }: StateContext) {\n return this.appConfigurationService.getConfiguration().pipe(\n tap(configuration =>\n patchState({\n ...configuration,\n }),\n ),\n switchMap(configuration =>\n this.store.selectSnapshot(SessionState.getLanguage)\n ? of(null)\n : dispatch(\n new SessionSetLanguage(snq(() => configuration.setting.values['Abp.Localization.DefaultLanguage'])),\n ),\n ),\n );\n }\n\n @Action(PatchRouteByName)\n patchRoute({ patchState, getState }: StateContext, { name, newValue }: PatchRouteByName) {\n let routes: ABP.FullRoute[] = getState().routes;\n\n const index = routes.findIndex(route => route.name === name);\n\n routes = patchRouteDeep(routes, name, newValue);\n\n return patchState({\n routes,\n });\n }\n}\n\nfunction patchRouteDeep(\n routes: ABP.FullRoute[],\n name: string,\n newValue: Partial,\n parentUrl: string = null,\n): ABP.FullRoute[] {\n routes = routes.map(route => {\n if (route.name === name) {\n if (newValue.path) {\n newValue.url = `${parentUrl}/${newValue.path}`;\n }\n\n if (newValue.children && newValue.children.length) {\n newValue.children = newValue.children.map(child => ({\n ...child,\n url: `${parentUrl}/${route.path}/${child.path}`,\n }));\n }\n\n return { ...route, ...newValue };\n } else if (route.children && route.children.length) {\n route.children = patchRouteDeep(route.children, name, newValue, (parentUrl || '/') + route.path);\n }\n\n return route;\n });\n\n if (parentUrl) {\n // recursive block\n return routes;\n }\n\n return organizeRoutes(routes);\n}\n","export function uuid(a?: any): string {\n return a\n ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16)\n : ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid);\n}\n","import { Injector } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigGetAppConfiguration } from '../actions/config.actions';\n\nexport function getInitialData(injector: Injector) {\n const fn = function() {\n const store: Store = injector.get(Store);\n\n return store.dispatch(new ConfigGetAppConfiguration()).toPromise();\n };\n\n return fn;\n}\n","import { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nexport const takeUntilDestroy = (componentInstance, destroyMethodName = 'ngOnDestroy') => (\n source: Observable,\n) => {\n const originalDestroy = componentInstance[destroyMethodName];\n if (isFunction(originalDestroy) === false) {\n throw new Error(\n `${componentInstance.constructor.name} is using untilDestroyed but doesn't implement ${destroyMethodName}`,\n );\n }\n if (!componentInstance['__takeUntilDestroy']) {\n componentInstance['__takeUntilDestroy'] = new Subject();\n\n componentInstance[destroyMethodName] = function() {\n isFunction(originalDestroy) && originalDestroy.apply(this, arguments);\n componentInstance['__takeUntilDestroy'].next(true);\n componentInstance['__takeUntilDestroy'].complete();\n };\n }\n return source.pipe(takeUntil(componentInstance['__takeUntilDestroy']));\n};\n","import { Component, OnDestroy, Type } from '@angular/core';\nimport { NavigationEnd, Router, UrlSegment } from '@angular/router';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { eLayoutType } from '../enums';\nimport { ABP, Config } from '../models';\nimport { ConfigState } from '../states';\nimport { takeUntilDestroy } from '../utils';\nimport snq from 'snq';\n\n@Component({\n selector: 'abp-dynamic-layout',\n template: `\n \n\n \n \n `,\n})\nexport class DynamicLayoutComponent implements OnDestroy {\n @Select(ConfigState.getOne('requirements'))\n requirements$: Observable;\n\n layout: Type;\n\n constructor(private router: Router, private store: Store) {\n this.router.events.pipe(takeUntilDestroy(this)).subscribe(event => {\n if (event instanceof NavigationEnd) {\n const { segments } = this.router.parseUrl(event.url).root.children.primary;\n const {\n requirements: { layouts },\n routes,\n } = this.store.selectSnapshot(ConfigState.getAll);\n\n const layout = findLayout(segments, routes);\n\n this.layout = layouts.filter(l => !!l).find(l => snq(() => l.type.toLowerCase().indexOf(layout), -1) > -1);\n }\n });\n }\n\n ngOnDestroy() {}\n}\n\nfunction findLayout(segments: UrlSegment[], routes: ABP.FullRoute[]): eLayoutType {\n let layout = eLayoutType.empty;\n\n const route = routes\n .reduce((acc, val) => (val.wrapper ? [...acc, ...val.children] : [...acc, val]), [])\n .find(r => r.path === segments[0].path);\n\n if (route) {\n if (route.layout) {\n layout = route.layout;\n }\n\n if (route.children && route.children.length) {\n const child = route.children.find(c => c.path === segments[1].path);\n\n if (child.layout) {\n layout = child.layout;\n }\n }\n }\n\n return layout;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'abp-router-outlet',\n template: `\n \n `,\n})\nexport class RouterOutletComponent {}\n","import { AfterContentInit, ChangeDetectorRef, Directive, ElementRef, HostBinding, Input } from '@angular/core';\n\n@Directive({\n selector: '[abpEllipsis]',\n})\nexport class EllipsisDirective implements AfterContentInit {\n @Input('abpEllipsis')\n witdh: string;\n\n @HostBinding('title')\n @Input()\n title: string;\n\n @Input('abpEllipsisEnabled')\n enabled = true;\n\n @HostBinding('class.abp-ellipsis')\n get class() {\n return this.enabled;\n }\n\n @HostBinding('style.max-width')\n get maxWidth() {\n return this.enabled ? this.witdh || '180px' : undefined;\n }\n\n constructor(private cdRef: ChangeDetectorRef, private elRef: ElementRef) {}\n\n ngAfterContentInit() {\n setTimeout(() => {\n const title = this.title;\n this.title = title || (this.elRef.nativeElement as HTMLElement).innerText;\n\n if (this.title !== title) {\n this.cdRef.detectChanges();\n }\n }, 0);\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Optional, Renderer2 } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigState } from '../states';\nimport { takeUntilDestroy } from '../utils';\n\n@Directive({\n selector: '[abpPermission]',\n})\nexport class PermissionDirective implements OnInit, OnDestroy {\n @Input('abpPermission') condition: string;\n\n constructor(@Optional() private elRef: ElementRef, private renderer: Renderer2, private store: Store) {}\n\n ngOnInit() {\n if (this.condition) {\n this.store\n .select(ConfigState.getGrantedPolicy(this.condition))\n .pipe(takeUntilDestroy(this))\n .subscribe(isGranted => {\n if (!isGranted) {\n this.renderer.removeChild(\n (this.elRef.nativeElement as HTMLElement).parentElement,\n this.elRef.nativeElement,\n );\n }\n });\n }\n }\n\n ngOnDestroy(): void {}\n}\n","import { Directive, Input, Optional, ElementRef, Renderer2, AfterViewInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport snq from 'snq';\n\n@Directive({\n selector: '[abpVisibility]',\n})\nexport class VisibilityDirective implements AfterViewInit {\n @Input('abpVisibility')\n focusedElement: HTMLElement;\n\n completed$ = new Subject();\n\n constructor(@Optional() private elRef: ElementRef, private renderer: Renderer2) {}\n\n ngAfterViewInit() {\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (!mutation.target) return;\n\n const htmlNodes = snq(\n () => Array.from(mutation.target.childNodes).filter(node => node instanceof HTMLElement),\n [],\n );\n\n if (!htmlNodes.length) {\n this.renderer.removeChild(this.elRef.nativeElement.parentElement, this.elRef.nativeElement);\n this.disconnect();\n } else {\n setTimeout(() => {\n this.disconnect();\n }, 0);\n }\n });\n });\n\n observer.observe(this.focusedElement, {\n childList: true,\n });\n\n this.completed$.subscribe(() => observer.disconnect());\n }\n\n disconnect() {\n this.completed$.next();\n this.completed$.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { Observable } from 'rxjs';\nimport { Navigate } from '@ngxs/router-plugin';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGuard implements CanActivate {\n constructor(private oauthService: OAuthService, private store: Store) {}\n canActivate(_: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | boolean | UrlTree {\n const hasValidAccessToken = this.oauthService.hasValidAccessToken();\n if (hasValidAccessToken) {\n return hasValidAccessToken;\n }\n\n this.store.dispatch(new Navigate(['/account/login'], null, { state: { redirectUrl: state.url } }));\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { ConfigState } from '../states';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PermissionGuard implements CanActivate {\n constructor(private store: Store) {}\n\n canActivate({ data }: ActivatedRouteSnapshot): Observable {\n const resource = data.requiredPolicy as string;\n return this.store.select(ConfigState.getGrantedPolicy(resource));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { Store } from '@ngxs/store';\nimport { SessionState } from '../states';\nimport { LoaderStart, LoaderStop } from '../actions/loader.actions';\nimport { finalize } from 'rxjs/operators';\n\n@Injectable()\nexport class ApiInterceptor implements HttpInterceptor {\n constructor(private oAuthService: OAuthService, private store: Store) {}\n\n intercept(request: HttpRequest, next: HttpHandler) {\n this.store.dispatch(new LoaderStart(request));\n\n const headers = {} as any;\n\n const token = this.oAuthService.getAccessToken();\n if (!request.headers.has('Authorization') && token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n\n const lang = this.store.selectSnapshot(SessionState.getLanguage);\n if (!request.headers.has('Accept-Language') && lang) {\n headers['Accept-Language'] = lang;\n }\n\n return next\n .handle(\n request.clone({\n setHeaders: headers,\n }),\n )\n .pipe(finalize(() => this.store.dispatch(new LoaderStop(request))));\n }\n}\n","import { HttpHeaders, HttpParams } from '@angular/common/http';\n\nexport namespace Rest {\n export interface Config {\n throwErr?: boolean;\n observe?: Observe;\n }\n\n export const enum Observe {\n Body = 'body',\n Events = 'events',\n Response = 'response',\n }\n\n export const enum ResponseType {\n ArrayBuffer = 'arraybuffer',\n Blob = 'blob',\n JSON = 'json',\n Text = 'text',\n }\n\n export interface Request {\n body?: T;\n headers?:\n | HttpHeaders\n | {\n [header: string]: string | string[];\n };\n method: string;\n params?:\n | HttpParams\n | {\n [param: string]: any;\n };\n reportProgress?: boolean;\n responseType?: ResponseType;\n url: string;\n withCredentials?: boolean;\n }\n}\n","import { Injectable, Inject, InjectionToken, Type } from '@angular/core';\nimport { NgxsPlugin, setValue, actionMatcher, InitState, UpdateState, NgxsNextPluginFn } from '@ngxs/store';\nimport { Router, Routes } from '@angular/router';\nimport { ABP } from '../models';\nimport snq from 'snq';\nimport { setChildRoute, sortRoutes, organizeRoutes } from '../utils/route-utils';\n\nexport const NGXS_CONFIG_PLUGIN_OPTIONS = new InjectionToken('NGXS_CONFIG_PLUGIN_OPTIONS');\n\n@Injectable()\nexport class ConfigPlugin implements NgxsPlugin {\n private initialized: boolean = false;\n\n constructor(@Inject(NGXS_CONFIG_PLUGIN_OPTIONS) private options: ABP.Root, private router: Router) {}\n\n handle(state: any, event: any, next: NgxsNextPluginFn) {\n const matches = actionMatcher(event);\n const isInitAction = matches(InitState) || matches(UpdateState);\n\n // const layouts = snq(() => this.options.requirements.layouts.filter(layout => layout instanceof Type), []);\n if (isInitAction && !this.initialized) {\n let { routes, wrappers } = transformRoutes(this.router.config);\n routes = organizeRoutes(routes, wrappers);\n\n state = setValue(state, 'ConfigState', {\n ...(state.ConfigState && { ...state.ConfigState }),\n ...this.options,\n routes,\n });\n\n this.initialized = true;\n }\n\n return next(state, event);\n }\n}\n\nfunction transformRoutes(routes: Routes = [], wrappers: ABP.FullRoute[] = []): any {\n const abpRoutes: ABP.FullRoute[] = routes\n .filter(route => {\n return snq(() => route.data.routes.find(r => r.path === route.path), false);\n })\n .reduce((acc, val) => [...acc, ...val.data.routes], []);\n\n wrappers = abpRoutes.filter(ar => ar.wrapper);\n const transformed = [] as ABP.FullRoute[];\n routes\n .filter(route => route.component || route.loadChildren)\n .forEach(route => {\n const abpPackage = abpRoutes.find(abp => abp.path.toLowerCase() === route.path.toLowerCase());\n const { length } = transformed;\n\n if (abpPackage) {\n transformed.push(abpPackage);\n }\n\n if (transformed.length === length) {\n transformed.push({\n path: route.path,\n name: snq(() => route.data.routes.name, route.path),\n children: route.data.routes.children || [],\n } as ABP.FullRoute);\n }\n });\n\n return { routes: setUrls(transformed), wrappers };\n}\n\nfunction setUrls(routes: ABP.FullRoute[], parentUrl?: string): ABP.FullRoute[] {\n if (parentUrl) {\n // this if block using for only recursive call\n\n return routes.map(route => ({\n ...route,\n url: `${parentUrl}/${route.path}`,\n ...(route.children &&\n route.children.length && {\n children: setUrls(route.children, `${parentUrl}/${route.path}`),\n }),\n }));\n }\n\n return routes.map(route => ({\n ...route,\n url: `/${route.path}`,\n ...(route.children &&\n route.children.length && {\n children: setUrls(route.children, `/${route.path}`),\n }),\n }));\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigState } from '../states';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigService {\n constructor(private store: Store) {}\n\n getAll() {\n return this.store.selectSnapshot(ConfigState.getAll);\n }\n\n getOne(key: string) {\n return this.store.selectSnapshot(ConfigState.getOne(key));\n }\n\n getDeep(keys: string[] | string) {\n return this.store.selectSnapshot(ConfigState.getDeep(keys));\n }\n\n getSetting(key: string) {\n return this.store.selectSnapshot(ConfigState.getSetting(key));\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { uuid } from '../utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LazyLoadService {\n loadedLibraries: { [url: string]: ReplaySubject } = {};\n\n load(\n url: string,\n type: 'script' | 'style',\n content: string = '',\n targetQuery: string = 'body',\n position: InsertPosition = 'afterend',\n ): Observable {\n if (!url && !content) return;\n const key = url ? url.slice(url.lastIndexOf('/') + 1) : uuid();\n\n if (this.loadedLibraries[key]) {\n return this.loadedLibraries[key].asObservable();\n }\n\n this.loadedLibraries[key] = new ReplaySubject();\n\n let library;\n if (type === 'script') {\n library = document.createElement('script');\n library.type = 'text/javascript';\n if (url) {\n (library as HTMLScriptElement).src = url;\n }\n\n (library as HTMLScriptElement).text = content;\n } else if (url) {\n library = document.createElement('link');\n library.type = 'text/css';\n (library as HTMLLinkElement).rel = 'stylesheet';\n\n if (url) {\n (library as HTMLLinkElement).href = url;\n }\n } else {\n library = document.createElement('style');\n (library as HTMLStyleElement).textContent = content;\n }\n\n library.onload = () => {\n this.loadedLibraries[key].next();\n this.loadedLibraries[key].complete();\n };\n\n document.querySelector(targetQuery).insertAdjacentElement(position, library);\n\n return this.loadedLibraries[key].asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigState } from '../states';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class LocalizationService {\n constructor(private store: Store) {}\n\n get(keys: string, ...interpolateParams: string[]): Observable {\n return this.store.select(ConfigState.getCopy(keys, ...interpolateParams));\n }\n\n instant(keys: string, ...interpolateParams: string[]): string {\n return this.store.selectSnapshot(ConfigState.getCopy(keys, ...interpolateParams));\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Config } from '../models';\n\nexport function environmentFactory(environment: Config.Environment) {\n return {\n ...environment,\n };\n}\n\nexport function configFactory(config: Config.Requirements) {\n return {\n ...config,\n };\n}\n\nexport const ENVIRONMENT = new InjectionToken('ENVIRONMENT');\n\nexport const CONFIG = new InjectionToken('CONFIG');\n","import { Pipe, PipeTransform, OnDestroy } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigState } from '../states';\nimport { takeUntilDestroy } from '../utils';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n@Pipe({\n name: 'abpLocalization',\n pure: false, // required to update the value\n})\nexport class LocalizationPipe implements PipeTransform, OnDestroy {\n initialized: boolean = false;\n\n value: string;\n\n constructor(private store: Store) {}\n\n transform(value: string, ...interpolateParams: string[]): string {\n if (!this.initialized) {\n this.initialized = true;\n\n this.store\n .select(\n ConfigState.getCopy(\n value,\n ...interpolateParams.reduce((acc, val) => (Array.isArray(val) ? [...acc, ...val] : [...acc, val]), []),\n ),\n )\n .pipe(\n takeUntilDestroy(this),\n distinctUntilChanged(),\n )\n .subscribe(copy => (this.value = copy));\n }\n\n return this.value;\n }\n\n ngOnDestroy() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { NgxsRouterPluginModule } from '@ngxs/router-plugin';\nimport { NgxsStoragePluginModule } from '@ngxs/storage-plugin';\nimport { NgxsModule, NGXS_PLUGINS } from '@ngxs/store';\nimport { DynamicLayoutComponent } from './components/dynamic-layout.component';\nimport { RouterOutletComponent } from './components/router-outlet.component';\nimport { PermissionDirective } from './directives/permission.directive';\nimport { VisibilityDirective } from './directives/visibility.directive';\nimport { ApiInterceptor } from './interceptors/api.interceptor';\nimport { ABP } from './models/common';\nimport { LocalizationPipe } from './pipes/localization.pipe';\nimport { ConfigPlugin, NGXS_CONFIG_PLUGIN_OPTIONS } from './plugins/config.plugin';\nimport { ConfigState } from './states/config.state';\nimport { ProfileState } from './states/profile.state';\nimport { SessionState } from './states/session.state';\nimport { getInitialData } from './utils/initial-utils';\nimport { EllipsisDirective } from './directives/ellipsis.directive';\n\n@NgModule({\n imports: [\n NgxsModule.forFeature([ProfileState, SessionState, ConfigState]),\n NgxsStoragePluginModule.forRoot({ key: 'SessionState' }),\n NgxsRouterPluginModule.forRoot(),\n CommonModule,\n HttpClientModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n ],\n declarations: [\n RouterOutletComponent,\n DynamicLayoutComponent,\n PermissionDirective,\n VisibilityDirective,\n LocalizationPipe,\n EllipsisDirective,\n ],\n exports: [\n CommonModule,\n HttpClientModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n RouterOutletComponent,\n DynamicLayoutComponent,\n PermissionDirective,\n VisibilityDirective,\n EllipsisDirective,\n LocalizationPipe,\n ],\n providers: [LocalizationPipe],\n entryComponents: [RouterOutletComponent, DynamicLayoutComponent],\n})\nexport class CoreModule {\n static forRoot(options = {} as ABP.Root): ModuleWithProviders {\n return {\n ngModule: CoreModule,\n providers: [\n {\n provide: NGXS_PLUGINS,\n useClass: ConfigPlugin,\n multi: true,\n },\n {\n provide: NGXS_CONFIG_PLUGIN_OPTIONS,\n useValue: options,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: ApiInterceptor,\n multi: true,\n },\n {\n provide: APP_INITIALIZER,\n multi: true,\n deps: [Injector],\n useFactory: getInitialData,\n },\n ],\n };\n }\n}\n"],"names":["NEVER","take","catchError","throwError","Injectable","HttpClient","Store","tap","tslib_1.__decorate","Action","Selector","State","createSelector","switchMap","of","store","Subject","takeUntil","router","NavigationEnd","Component","Router","Select","Observable","Directive","ChangeDetectorRef","ElementRef","Input","HostBinding","Optional","Renderer2","Navigate","OAuthService","finalize","Rest","InjectionToken","actionMatcher","InitState","UpdateState","setValue","Inject","ReplaySubject","distinctUntilChanged","Pipe","NGXS_PLUGINS","HTTP_INTERCEPTORS","APP_INITIALIZER","Injector","NgModule","NgxsModule","NgxsStoragePluginModule","NgxsRouterPluginModule","CommonModule","HttpClientModule","FormsModule","ReactiveFormsModule","RouterModule"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/core/bundles/abp-ng.core.umd.min.js b/npm/ng-packs/dist/core/bundles/abp-ng.core.umd.min.js new file mode 100644 index 00000000000..ac838abce0f --- /dev/null +++ b/npm/ng-packs/dist/core/bundles/abp-ng.core.umd.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/router"),require("@ngxs/store"),require("rxjs"),require("@angular/common/http"),require("rxjs/operators"),require("snq"),require("angular-oauth2-oidc"),require("@ngxs/router-plugin"),require("@angular/common"),require("@angular/forms"),require("@ngxs/storage-plugin")):"function"==typeof define&&define.amd?define("@abp/ng.core",["exports","@angular/core","@angular/router","@ngxs/store","rxjs","@angular/common/http","rxjs/operators","snq","angular-oauth2-oidc","@ngxs/router-plugin","@angular/common","@angular/forms","@ngxs/storage-plugin"],t):t(((e=e||self).abp=e.abp||{},e.abp.ng=e.abp.ng||{},e.abp.ng.core={}),e.ng.core,e.ng.router,e.store,e.rxjs,e.ng.common.http,e.rxjs.operators,e.snq,e.angularOauth2Oidc,e.routerPlugin,e.ng.common,e.ng.forms,e.storagePlugin)}(this,function(exports,core,router,store,rxjs,http,operators,snq,angularOauth2Oidc,routerPlugin,common,forms,storagePlugin){"use strict";snq=snq&&snq.hasOwnProperty("default")?snq.default:snq;var __assign=function(){return(__assign=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a);return i>3&&a&&Object.defineProperty(t,r,a),a}function __metadata(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function __read(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}function __spread(){for(var e=[],t=0;t1?(keys.forEach(function(e){var t=getPolicy(e);condition=condition.replace(e,t)}),eval("!!"+condition)):getPolicy(condition)});return selector},ConfigState.getCopy=function(e){for(var t=[],r=1;r>e/4).toString(16):(""+1e7+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,uuid)}function getInitialData(e){return function(){return e.get(store.Store).dispatch(new ConfigGetAppConfiguration).toPromise()}}function isFunction(e){return"function"==typeof e}var takeUntilDestroy=function(e,t){return void 0===t&&(t="ngOnDestroy"),function(r){var n=e[t];if(!1===isFunction(n))throw new Error(e.constructor.name+" is using untilDestroyed but doesn't implement "+t);return e.__takeUntilDestroy||(e.__takeUntilDestroy=new rxjs.Subject,e[t]=function(){isFunction(n)&&n.apply(this,arguments),e.__takeUntilDestroy.next(!0),e.__takeUntilDestroy.complete()}),r.pipe(operators.takeUntil(e.__takeUntilDestroy))}},DynamicLayoutComponent=function(){function e(e,t){var r=this;this.router=e,this.store=t,this.router.events.pipe(takeUntilDestroy(this)).subscribe(function(e){if(e instanceof router.NavigationEnd){var t=r.router.parseUrl(e.url).root.children.primary.segments,n=r.store.selectSnapshot(ConfigState.getAll),o=n.requirements.layouts,i=findLayout(t,n.routes);r.layout=o.filter(function(e){return!!e}).find(function(e){return snq(function(){return e.type.toLowerCase().indexOf(i)},-1)>-1})}})}return e.prototype.ngOnDestroy=function(){},e.decorators=[{type:core.Component,args:[{selector:"abp-dynamic-layout",template:'\n \n\n \n \n '}]}],e.ctorParameters=function(){return[{type:router.Router},{type:store.Store}]},__decorate([store.Select(ConfigState.getOne("requirements")),__metadata("design:type",rxjs.Observable)],e.prototype,"requirements$",void 0),e}();function findLayout(e,t){var r="empty",n=t.reduce(function(e,t){return t.wrapper?__spread(e,t.children):__spread(e,[t])},[]).find(function(t){return t.path===e[0].path});if(n&&(n.layout&&(r=n.layout),n.children&&n.children.length)){var o=n.children.find(function(t){return t.path===e[1].path});o.layout&&(r=o.layout)}return r}var RouterOutletComponent=function(){function e(){}return e.decorators=[{type:core.Component,args:[{selector:"abp-router-outlet",template:"\n \n "}]}],e}(),EllipsisDirective=function(){function e(e,t){this.cdRef=e,this.elRef=t,this.enabled=!0}return Object.defineProperty(e.prototype,"class",{get:function(){return this.enabled},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maxWidth",{get:function(){return this.enabled?this.witdh||"180px":void 0},enumerable:!0,configurable:!0}),e.prototype.ngAfterContentInit=function(){var e=this;setTimeout(function(){var t=e.title;e.title=t||e.elRef.nativeElement.innerText,e.title!==t&&e.cdRef.detectChanges()},0)},e.decorators=[{type:core.Directive,args:[{selector:"[abpEllipsis]"}]}],e.ctorParameters=function(){return[{type:core.ChangeDetectorRef},{type:core.ElementRef}]},e.propDecorators={witdh:[{type:core.Input,args:["abpEllipsis"]}],title:[{type:core.HostBinding,args:["title"]},{type:core.Input}],enabled:[{type:core.Input,args:["abpEllipsisEnabled"]}],class:[{type:core.HostBinding,args:["class.abp-ellipsis"]}],maxWidth:[{type:core.HostBinding,args:["style.max-width"]}]},e}(),PermissionDirective=function(){function e(e,t,r){this.elRef=e,this.renderer=t,this.store=r}return e.prototype.ngOnInit=function(){var e=this;this.condition&&this.store.select(ConfigState.getGrantedPolicy(this.condition)).pipe(takeUntilDestroy(this)).subscribe(function(t){t||e.renderer.removeChild(e.elRef.nativeElement.parentElement,e.elRef.nativeElement)})},e.prototype.ngOnDestroy=function(){},e.decorators=[{type:core.Directive,args:[{selector:"[abpPermission]"}]}],e.ctorParameters=function(){return[{type:core.ElementRef,decorators:[{type:core.Optional}]},{type:core.Renderer2},{type:store.Store}]},e.propDecorators={condition:[{type:core.Input,args:["abpPermission"]}]},e}(),VisibilityDirective=function(){function e(e,t){this.elRef=e,this.renderer=t,this.completed$=new rxjs.Subject}return e.prototype.ngAfterViewInit=function(){var e=this,t=new MutationObserver(function(t){t.forEach(function(t){t.target&&(snq(function(){return Array.from(t.target.childNodes).filter(function(e){return e instanceof HTMLElement})},[]).length?setTimeout(function(){e.disconnect()},0):(e.renderer.removeChild(e.elRef.nativeElement.parentElement,e.elRef.nativeElement),e.disconnect()))})});t.observe(this.focusedElement,{childList:!0}),this.completed$.subscribe(function(){return t.disconnect()})},e.prototype.disconnect=function(){this.completed$.next(),this.completed$.complete()},e.decorators=[{type:core.Directive,args:[{selector:"[abpVisibility]"}]}],e.ctorParameters=function(){return[{type:core.ElementRef,decorators:[{type:core.Optional}]},{type:core.Renderer2}]},e.propDecorators={focusedElement:[{type:core.Input,args:["abpVisibility"]}]},e}(),AuthGuard=function(){function e(e,t){this.oauthService=e,this.store=t}return e.prototype.canActivate=function(e,t){var r=this.oauthService.hasValidAccessToken();return r||(this.store.dispatch(new routerPlugin.Navigate(["/account/login"],null,{state:{redirectUrl:t.url}})),!1)},e.decorators=[{type:core.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:angularOauth2Oidc.OAuthService},{type:store.Store}]},e.ngInjectableDef=core.ɵɵdefineInjectable({factory:function(){return new e(core.ɵɵinject(angularOauth2Oidc.OAuthService),core.ɵɵinject(store.Store))},token:e,providedIn:"root"}),e}(),PermissionGuard=function(){function e(e){this.store=e}return e.prototype.canActivate=function(e){var t=e.data.requiredPolicy;return this.store.select(ConfigState.getGrantedPolicy(t))},e.decorators=[{type:core.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:store.Store}]},e.ngInjectableDef=core.ɵɵdefineInjectable({factory:function(){return new e(core.ɵɵinject(store.Store))},token:e,providedIn:"root"}),e}(),ApiInterceptor=function(){function e(e,t){this.oAuthService=e,this.store=t}return e.prototype.intercept=function(e,t){var r=this;this.store.dispatch(new LoaderStart(e));var n={},o=this.oAuthService.getAccessToken();!e.headers.has("Authorization")&&o&&(n.Authorization="Bearer "+o);var i=this.store.selectSnapshot(SessionState.getLanguage);return!e.headers.has("Accept-Language")&&i&&(n["Accept-Language"]=i),t.handle(e.clone({setHeaders:n})).pipe(operators.finalize(function(){return r.store.dispatch(new LoaderStop(e))}))},e.decorators=[{type:core.Injectable}],e.ctorParameters=function(){return[{type:angularOauth2Oidc.OAuthService},{type:store.Store}]},e}(),Rest;Rest=exports.Rest||(exports.Rest={}),Rest.Config=function(){},Rest.Request=function(){};var NGXS_CONFIG_PLUGIN_OPTIONS=new core.InjectionToken("NGXS_CONFIG_PLUGIN_OPTIONS"),ConfigPlugin=function(){function e(e,t){this.options=e,this.router=t,this.initialized=!1}return e.prototype.handle=function(e,t,r){var n=store.actionMatcher(t);if((n(store.InitState)||n(store.UpdateState))&&!this.initialized){var o=transformRoutes(this.router.config),i=o.routes;i=organizeRoutes(i,o.wrappers),e=store.setValue(e,"ConfigState",__assign({},e.ConfigState&&__assign({},e.ConfigState),this.options,{routes:i})),this.initialized=!0}return r(e,t)},e.decorators=[{type:core.Injectable}],e.ctorParameters=function(){return[{type:void 0,decorators:[{type:core.Inject,args:[NGXS_CONFIG_PLUGIN_OPTIONS]}]},{type:router.Router}]},e}();function transformRoutes(e,t){void 0===e&&(e=[]),void 0===t&&(t=[]);var r=e.filter(function(e){return snq(function(){return e.data.routes.find(function(t){return t.path===e.path})},!1)}).reduce(function(e,t){return __spread(e,t.data.routes)},[]);t=r.filter(function(e){return e.wrapper});var n=[];return e.filter(function(e){return e.component||e.loadChildren}).forEach(function(e){var t=r.find(function(t){return t.path.toLowerCase()===e.path.toLowerCase()}),o=n.length;t&&n.push(t),n.length===o&&n.push({path:e.path,name:snq(function(){return e.data.routes.name},e.path),children:e.data.routes.children||[]})}),{routes:setUrls(n),wrappers:t}}function setUrls(e,t){return t?e.map(function(e){return __assign({},e,{url:t+"/"+e.path},e.children&&e.children.length&&{children:setUrls(e.children,t+"/"+e.path)})}):e.map(function(e){return __assign({},e,{url:"/"+e.path},e.children&&e.children.length&&{children:setUrls(e.children,"/"+e.path)})})}var ConfigService=function(){function e(e){this.store=e}return e.prototype.getAll=function(){return this.store.selectSnapshot(ConfigState.getAll)},e.prototype.getOne=function(e){return this.store.selectSnapshot(ConfigState.getOne(e))},e.prototype.getDeep=function(e){return this.store.selectSnapshot(ConfigState.getDeep(e))},e.prototype.getSetting=function(e){return this.store.selectSnapshot(ConfigState.getSetting(e))},e.decorators=[{type:core.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:store.Store}]},e.ngInjectableDef=core.ɵɵdefineInjectable({factory:function(){return new e(core.ɵɵinject(store.Store))},token:e,providedIn:"root"}),e}(),LazyLoadService=function(){function e(){this.loadedLibraries={}}return e.prototype.load=function(e,t,r,n,o){var i=this;if(void 0===r&&(r=""),void 0===n&&(n="body"),void 0===o&&(o="afterend"),e||r){var a,s=e?e.slice(e.lastIndexOf("/")+1):uuid();return this.loadedLibraries[s]?this.loadedLibraries[s].asObservable():(this.loadedLibraries[s]=new rxjs.ReplaySubject,"script"===t?((a=document.createElement("script")).type="text/javascript",e&&(a.src=e),a.text=r):e?((a=document.createElement("link")).type="text/css",a.rel="stylesheet",e&&(a.href=e)):(a=document.createElement("style")).textContent=r,a.onload=function(){i.loadedLibraries[s].next(),i.loadedLibraries[s].complete()},document.querySelector(n).insertAdjacentElement(o,a),this.loadedLibraries[s].asObservable())}},e.decorators=[{type:core.Injectable,args:[{providedIn:"root"}]}],e.ngInjectableDef=core.ɵɵdefineInjectable({factory:function(){return new e},token:e,providedIn:"root"}),e}(),LocalizationService=function(){function e(e){this.store=e}return e.prototype.get=function(e){for(var t=[],r=1;r= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { ABP } from '../models';\n\nexport class PatchRouteByName {\n static readonly type = '[Config] Patch Route By Name';\n constructor(public name: string, public newValue: Partial) {}\n}\n\nexport class ConfigGetAppConfiguration {\n static readonly type = '[Config] Get App Configuration';\n}\n","import { HttpRequest } from '@angular/common/http';\n\nexport class LoaderStart {\n static readonly type = '[Loader] Start';\n constructor(public payload: HttpRequest) {}\n}\n\nexport class LoaderStop {\n static readonly type = '[Loader] Stop';\n constructor(public payload: HttpRequest) {}\n}\n","import { Profile } from '../models';\n\nexport class ProfileGet {\n static readonly type = '[Profile] Get';\n}\n\nexport class ProfileUpdate {\n static readonly type = '[Profile] Update';\n constructor(public payload: Profile.Response) {}\n}\n\nexport class ProfileChangePassword {\n static readonly type = '[Profile] Change Password';\n constructor(public payload: Profile.ChangePasswordRequest) {}\n}\n","import { HttpErrorResponse } from '@angular/common/http';\n\nexport class RestOccurError {\n static readonly type = '[Rest] Error';\n constructor(public payload: HttpErrorResponse | any) {}\n}\n","export class SessionSetLanguage {\n static readonly type = '[Session] Set Language';\n constructor(public payload: string) {}\n}\n","import { HttpClient, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { NEVER, Observable, throwError } from 'rxjs';\nimport { catchError, take } from 'rxjs/operators';\nimport { Rest } from '../models/rest';\nimport { ConfigState } from '../states';\nimport { RestOccurError } from '../actions';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RestService {\n constructor(private http: HttpClient, private store: Store) {}\n\n handleError(err: any): Observable {\n this.store.dispatch(new RestOccurError(err));\n console.error(err);\n return NEVER;\n }\n\n request(request: HttpRequest | Rest.Request, config: Rest.Config = {}, api?: string): Observable {\n const { observe = Rest.Observe.Body, throwErr } = config;\n const url = api || this.store.selectSnapshot(ConfigState.getApiUrl()) + request.url;\n const { method, ...options } = request;\n return this.http.request(method, url, { observe, ...options } as any).pipe(\n observe === Rest.Observe.Body ? take(1) : null,\n catchError(err => {\n if (throwErr) {\n return throwError(err);\n }\n\n return this.handleError(err);\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RestService } from './rest.service';\nimport { Profile, Rest } from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProfileService {\n constructor(private rest: RestService) {}\n\n get(): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/identity/my-profile',\n };\n\n return this.rest.request(request);\n }\n\n update(body: Profile.Response): Observable {\n const request: Rest.Request = {\n method: 'PUT',\n url: '/api/identity/my-profile',\n body,\n };\n\n return this.rest.request(request);\n }\n\n changePassword(body: Profile.ChangePasswordRequest): Observable {\n const request: Rest.Request = {\n method: 'POST',\n url: '/api/identity/my-profile/changePassword',\n body,\n };\n\n return this.rest.request(request);\n }\n}\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\nimport { ProfileGet, ProfileChangePassword, ProfileUpdate } from '../actions/profile.actions';\nimport { Profile } from '../models/profile';\nimport { ProfileService } from '../services/profile.service';\nimport { tap } from 'rxjs/operators';\n\n@State({\n name: 'ProfileState',\n defaults: {} as Profile.State,\n})\nexport class ProfileState {\n @Selector()\n static getProfile({ profile }: Profile.State): Profile.Response {\n return profile;\n }\n\n constructor(private profileService: ProfileService) {}\n\n @Action(ProfileGet)\n profileGet({ patchState }: StateContext) {\n return this.profileService.get().pipe(\n tap(profile =>\n patchState({\n profile,\n }),\n ),\n );\n }\n\n @Action(ProfileUpdate)\n profileUpdate({ patchState }: StateContext, { payload }: ProfileUpdate) {\n return this.profileService.update(payload).pipe(\n tap(profile =>\n patchState({\n profile,\n }),\n ),\n );\n }\n\n @Action(ProfileChangePassword)\n changePassword(_, { payload }: ProfileChangePassword) {\n return this.profileService.changePassword(payload);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApplicationConfiguration, Rest } from '../models';\nimport { RestService } from './rest.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApplicationConfigurationService {\n constructor(private rest: RestService) {}\n\n getConfiguration(): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/abp/application-configuration',\n };\n\n return this.rest.request(request);\n }\n}\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\nimport { SessionSetLanguage } from '../actions/session.actions';\nimport { Session } from '../models/session';\n\n@State({\n name: 'SessionState',\n defaults: {} as Session.State,\n})\nexport class SessionState {\n @Selector()\n static getLanguage({ language }: Session.State): string {\n return language;\n }\n\n constructor() {}\n\n @Action(SessionSetLanguage)\n sessionSetLanguage({ patchState }: StateContext, { payload }: SessionSetLanguage) {\n patchState({\n language: payload,\n });\n }\n}\n","import { ABP } from '../models';\n\nexport function organizeRoutes(\n routes: ABP.FullRoute[],\n wrappers: ABP.FullRoute[] = [],\n parentNameArr = [] as ABP.FullRoute[],\n parentName: string = null,\n): ABP.FullRoute[] {\n const filter = route => {\n if (route.children) {\n route.children = organizeRoutes(route.children, wrappers, parentNameArr, route.name);\n }\n\n if (route.parentName && route.parentName !== parentName) {\n parentNameArr.push(route);\n return false;\n }\n\n return true;\n };\n\n if (parentName) {\n // recursive block\n return routes.filter(filter);\n }\n\n const filteredRoutes = routes.filter(filter);\n\n if (parentNameArr.length) {\n return sortRoutes(setChildRoute([...filteredRoutes, ...wrappers], parentNameArr));\n }\n\n return filteredRoutes;\n}\n\nexport function setChildRoute(routes: ABP.FullRoute[], parentNameArr: ABP.FullRoute[]): ABP.FullRoute[] {\n return routes\n .map(route => {\n if (route.children && route.children.length) {\n route.children = setChildRoute(route.children, parentNameArr);\n }\n\n const foundedChildren = parentNameArr.filter(parent => parent.parentName === route.name);\n if (foundedChildren && foundedChildren.length) {\n route.children = [...(route.children || []), ...foundedChildren];\n }\n\n return route;\n })\n .filter(route => route.path || (route.children && route.children.length));\n}\n\nexport function sortRoutes(routes: ABP.FullRoute[] = []): ABP.FullRoute[] {\n if (!routes.length) return [];\n return routes\n .sort((a, b) => a.order - b.order)\n .map(route => {\n if (route.children && route.children.length) {\n route.children = sortRoutes(route.children);\n }\n\n return route;\n });\n}\n","import { State, Selector, createSelector, Action, StateContext, Store } from '@ngxs/store';\nimport { Config, ABP } from '../models';\nimport { ConfigGetAppConfiguration, PatchRouteByName } from '../actions/config.actions';\nimport { ApplicationConfigurationService } from '../services/application-configuration.service';\nimport { tap, switchMap } from 'rxjs/operators';\nimport snq from 'snq';\nimport { SessionSetLanguage } from '../actions';\nimport { SessionState } from './session.state';\nimport { of } from 'rxjs';\nimport { setChildRoute, sortRoutes, organizeRoutes } from '../utils/route-utils';\n\n@State({\n name: 'ConfigState',\n defaults: {} as Config.State,\n})\nexport class ConfigState {\n @Selector()\n static getAll(state: Config.State) {\n return state;\n }\n\n static getOne(key: string) {\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State) {\n return state[key];\n },\n );\n\n return selector;\n }\n\n static getDeep(keys: string[] | string) {\n if (typeof keys === 'string') {\n keys = keys.split('.');\n }\n\n if (!Array.isArray(keys)) {\n throw new Error('The argument must be a dot string or an string array.');\n }\n\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State) {\n return (keys as string[]).reduce((acc, val) => {\n if (acc) {\n return acc[val];\n }\n\n return undefined;\n }, state);\n },\n );\n\n return selector;\n }\n\n static getApiUrl(key?: string) {\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State): string {\n return state.environment.apis[key || 'default'].url;\n },\n );\n\n return selector;\n }\n\n static getSetting(key: string) {\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State) {\n return snq(() => state.setting.values[key]);\n },\n );\n\n return selector;\n }\n\n static getGrantedPolicy(condition: string = '') {\n const keys = condition\n .replace(/\\(|\\)|\\!|\\s/g, '')\n .split(/\\|\\||&&/)\n .filter(key => key);\n\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State): boolean {\n if (!keys.length) return true;\n\n const getPolicy = key => snq(() => state.auth.grantedPolicies[key], false);\n if (keys.length > 1) {\n keys.forEach(key => {\n const value = getPolicy(key);\n condition = condition.replace(key, value);\n });\n\n // tslint:disable-next-line: no-eval\n return eval(`!!${condition}`);\n }\n\n return getPolicy(condition);\n },\n );\n\n return selector;\n }\n\n static getCopy(key: string, ...interpolateParams: string[]) {\n if (!key) key = '';\n\n const keys = key.split('::') as string[];\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State) {\n const { defaultResourceName } = state.environment.localization;\n if (keys[0] === '') {\n if (!defaultResourceName) {\n throw new Error(\n `Please check your environment. May you forget set defaultResourceName? \n Here is the example:\n { production: false,\n localization: {\n defaultResourceName: 'MyProjectName'\n }\n }`,\n );\n }\n\n keys[0] = snq(() => defaultResourceName);\n }\n\n let copy = keys.reduce((acc, val) => {\n if (acc) {\n return acc[val];\n }\n\n return undefined;\n }, state.localization.values);\n\n if (copy && interpolateParams && interpolateParams.length) {\n interpolateParams.forEach((param, index) => {\n copy = copy.replace(`'{${index}}'`, param);\n });\n }\n\n return copy || key;\n },\n );\n\n return selector;\n }\n\n constructor(private appConfigurationService: ApplicationConfigurationService, private store: Store) {}\n\n @Action(ConfigGetAppConfiguration)\n addData({ patchState, dispatch }: StateContext) {\n return this.appConfigurationService.getConfiguration().pipe(\n tap(configuration =>\n patchState({\n ...configuration,\n }),\n ),\n switchMap(configuration =>\n this.store.selectSnapshot(SessionState.getLanguage)\n ? of(null)\n : dispatch(\n new SessionSetLanguage(snq(() => configuration.setting.values['Abp.Localization.DefaultLanguage'])),\n ),\n ),\n );\n }\n\n @Action(PatchRouteByName)\n patchRoute({ patchState, getState }: StateContext, { name, newValue }: PatchRouteByName) {\n let routes: ABP.FullRoute[] = getState().routes;\n\n const index = routes.findIndex(route => route.name === name);\n\n routes = patchRouteDeep(routes, name, newValue);\n\n return patchState({\n routes,\n });\n }\n}\n\nfunction patchRouteDeep(\n routes: ABP.FullRoute[],\n name: string,\n newValue: Partial,\n parentUrl: string = null,\n): ABP.FullRoute[] {\n routes = routes.map(route => {\n if (route.name === name) {\n if (newValue.path) {\n newValue.url = `${parentUrl}/${newValue.path}`;\n }\n\n if (newValue.children && newValue.children.length) {\n newValue.children = newValue.children.map(child => ({\n ...child,\n url: `${parentUrl}/${route.path}/${child.path}`,\n }));\n }\n\n return { ...route, ...newValue };\n } else if (route.children && route.children.length) {\n route.children = patchRouteDeep(route.children, name, newValue, (parentUrl || '/') + route.path);\n }\n\n return route;\n });\n\n if (parentUrl) {\n // recursive block\n return routes;\n }\n\n return organizeRoutes(routes);\n}\n","export function uuid(a?: any): string {\n return a\n ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16)\n : ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid);\n}\n","import { Injector } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigGetAppConfiguration } from '../actions/config.actions';\n\nexport function getInitialData(injector: Injector) {\n const fn = function() {\n const store: Store = injector.get(Store);\n\n return store.dispatch(new ConfigGetAppConfiguration()).toPromise();\n };\n\n return fn;\n}\n","import { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nexport const takeUntilDestroy = (componentInstance, destroyMethodName = 'ngOnDestroy') => (\n source: Observable,\n) => {\n const originalDestroy = componentInstance[destroyMethodName];\n if (isFunction(originalDestroy) === false) {\n throw new Error(\n `${componentInstance.constructor.name} is using untilDestroyed but doesn't implement ${destroyMethodName}`,\n );\n }\n if (!componentInstance['__takeUntilDestroy']) {\n componentInstance['__takeUntilDestroy'] = new Subject();\n\n componentInstance[destroyMethodName] = function() {\n isFunction(originalDestroy) && originalDestroy.apply(this, arguments);\n componentInstance['__takeUntilDestroy'].next(true);\n componentInstance['__takeUntilDestroy'].complete();\n };\n }\n return source.pipe(takeUntil(componentInstance['__takeUntilDestroy']));\n};\n","import { Component, OnDestroy, Type } from '@angular/core';\nimport { NavigationEnd, Router, UrlSegment } from '@angular/router';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { eLayoutType } from '../enums';\nimport { ABP, Config } from '../models';\nimport { ConfigState } from '../states';\nimport { takeUntilDestroy } from '../utils';\nimport snq from 'snq';\n\n@Component({\n selector: 'abp-dynamic-layout',\n template: `\n \n\n \n \n `,\n})\nexport class DynamicLayoutComponent implements OnDestroy {\n @Select(ConfigState.getOne('requirements'))\n requirements$: Observable;\n\n layout: Type;\n\n constructor(private router: Router, private store: Store) {\n this.router.events.pipe(takeUntilDestroy(this)).subscribe(event => {\n if (event instanceof NavigationEnd) {\n const { segments } = this.router.parseUrl(event.url).root.children.primary;\n const {\n requirements: { layouts },\n routes,\n } = this.store.selectSnapshot(ConfigState.getAll);\n\n const layout = findLayout(segments, routes);\n\n this.layout = layouts.filter(l => !!l).find(l => snq(() => l.type.toLowerCase().indexOf(layout), -1) > -1);\n }\n });\n }\n\n ngOnDestroy() {}\n}\n\nfunction findLayout(segments: UrlSegment[], routes: ABP.FullRoute[]): eLayoutType {\n let layout = eLayoutType.empty;\n\n const route = routes\n .reduce((acc, val) => (val.wrapper ? [...acc, ...val.children] : [...acc, val]), [])\n .find(r => r.path === segments[0].path);\n\n if (route) {\n if (route.layout) {\n layout = route.layout;\n }\n\n if (route.children && route.children.length) {\n const child = route.children.find(c => c.path === segments[1].path);\n\n if (child.layout) {\n layout = child.layout;\n }\n }\n }\n\n return layout;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'abp-router-outlet',\n template: `\n \n `,\n})\nexport class RouterOutletComponent {}\n","import { AfterContentInit, ChangeDetectorRef, Directive, ElementRef, HostBinding, Input } from '@angular/core';\n\n@Directive({\n selector: '[abpEllipsis]',\n})\nexport class EllipsisDirective implements AfterContentInit {\n @Input('abpEllipsis')\n witdh: string;\n\n @HostBinding('title')\n @Input()\n title: string;\n\n @Input('abpEllipsisEnabled')\n enabled = true;\n\n @HostBinding('class.abp-ellipsis')\n get class() {\n return this.enabled;\n }\n\n @HostBinding('style.max-width')\n get maxWidth() {\n return this.enabled ? this.witdh || '180px' : undefined;\n }\n\n constructor(private cdRef: ChangeDetectorRef, private elRef: ElementRef) {}\n\n ngAfterContentInit() {\n setTimeout(() => {\n const title = this.title;\n this.title = title || (this.elRef.nativeElement as HTMLElement).innerText;\n\n if (this.title !== title) {\n this.cdRef.detectChanges();\n }\n }, 0);\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Optional, Renderer2 } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigState } from '../states';\nimport { takeUntilDestroy } from '../utils';\n\n@Directive({\n selector: '[abpPermission]',\n})\nexport class PermissionDirective implements OnInit, OnDestroy {\n @Input('abpPermission') condition: string;\n\n constructor(@Optional() private elRef: ElementRef, private renderer: Renderer2, private store: Store) {}\n\n ngOnInit() {\n if (this.condition) {\n this.store\n .select(ConfigState.getGrantedPolicy(this.condition))\n .pipe(takeUntilDestroy(this))\n .subscribe(isGranted => {\n if (!isGranted) {\n this.renderer.removeChild(\n (this.elRef.nativeElement as HTMLElement).parentElement,\n this.elRef.nativeElement,\n );\n }\n });\n }\n }\n\n ngOnDestroy(): void {}\n}\n","import { Directive, Input, Optional, ElementRef, Renderer2, AfterViewInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport snq from 'snq';\n\n@Directive({\n selector: '[abpVisibility]',\n})\nexport class VisibilityDirective implements AfterViewInit {\n @Input('abpVisibility')\n focusedElement: HTMLElement;\n\n completed$ = new Subject();\n\n constructor(@Optional() private elRef: ElementRef, private renderer: Renderer2) {}\n\n ngAfterViewInit() {\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (!mutation.target) return;\n\n const htmlNodes = snq(\n () => Array.from(mutation.target.childNodes).filter(node => node instanceof HTMLElement),\n [],\n );\n\n if (!htmlNodes.length) {\n this.renderer.removeChild(this.elRef.nativeElement.parentElement, this.elRef.nativeElement);\n this.disconnect();\n } else {\n setTimeout(() => {\n this.disconnect();\n }, 0);\n }\n });\n });\n\n observer.observe(this.focusedElement, {\n childList: true,\n });\n\n this.completed$.subscribe(() => observer.disconnect());\n }\n\n disconnect() {\n this.completed$.next();\n this.completed$.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { Observable } from 'rxjs';\nimport { Navigate } from '@ngxs/router-plugin';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGuard implements CanActivate {\n constructor(private oauthService: OAuthService, private store: Store) {}\n canActivate(_: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | boolean | UrlTree {\n const hasValidAccessToken = this.oauthService.hasValidAccessToken();\n if (hasValidAccessToken) {\n return hasValidAccessToken;\n }\n\n this.store.dispatch(new Navigate(['/account/login'], null, { state: { redirectUrl: state.url } }));\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { ConfigState } from '../states';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PermissionGuard implements CanActivate {\n constructor(private store: Store) {}\n\n canActivate({ data }: ActivatedRouteSnapshot): Observable {\n const resource = data.requiredPolicy as string;\n return this.store.select(ConfigState.getGrantedPolicy(resource));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { Store } from '@ngxs/store';\nimport { SessionState } from '../states';\nimport { LoaderStart, LoaderStop } from '../actions/loader.actions';\nimport { finalize } from 'rxjs/operators';\n\n@Injectable()\nexport class ApiInterceptor implements HttpInterceptor {\n constructor(private oAuthService: OAuthService, private store: Store) {}\n\n intercept(request: HttpRequest, next: HttpHandler) {\n this.store.dispatch(new LoaderStart(request));\n\n const headers = {} as any;\n\n const token = this.oAuthService.getAccessToken();\n if (!request.headers.has('Authorization') && token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n\n const lang = this.store.selectSnapshot(SessionState.getLanguage);\n if (!request.headers.has('Accept-Language') && lang) {\n headers['Accept-Language'] = lang;\n }\n\n return next\n .handle(\n request.clone({\n setHeaders: headers,\n }),\n )\n .pipe(finalize(() => this.store.dispatch(new LoaderStop(request))));\n }\n}\n","import { HttpHeaders, HttpParams } from '@angular/common/http';\n\nexport namespace Rest {\n export interface Config {\n throwErr?: boolean;\n observe?: Observe;\n }\n\n export const enum Observe {\n Body = 'body',\n Events = 'events',\n Response = 'response',\n }\n\n export const enum ResponseType {\n ArrayBuffer = 'arraybuffer',\n Blob = 'blob',\n JSON = 'json',\n Text = 'text',\n }\n\n export interface Request {\n body?: T;\n headers?:\n | HttpHeaders\n | {\n [header: string]: string | string[];\n };\n method: string;\n params?:\n | HttpParams\n | {\n [param: string]: any;\n };\n reportProgress?: boolean;\n responseType?: ResponseType;\n url: string;\n withCredentials?: boolean;\n }\n}\n","import { Injectable, Inject, InjectionToken, Type } from '@angular/core';\nimport { NgxsPlugin, setValue, actionMatcher, InitState, UpdateState, NgxsNextPluginFn } from '@ngxs/store';\nimport { Router, Routes } from '@angular/router';\nimport { ABP } from '../models';\nimport snq from 'snq';\nimport { setChildRoute, sortRoutes, organizeRoutes } from '../utils/route-utils';\n\nexport const NGXS_CONFIG_PLUGIN_OPTIONS = new InjectionToken('NGXS_CONFIG_PLUGIN_OPTIONS');\n\n@Injectable()\nexport class ConfigPlugin implements NgxsPlugin {\n private initialized: boolean = false;\n\n constructor(@Inject(NGXS_CONFIG_PLUGIN_OPTIONS) private options: ABP.Root, private router: Router) {}\n\n handle(state: any, event: any, next: NgxsNextPluginFn) {\n const matches = actionMatcher(event);\n const isInitAction = matches(InitState) || matches(UpdateState);\n\n // const layouts = snq(() => this.options.requirements.layouts.filter(layout => layout instanceof Type), []);\n if (isInitAction && !this.initialized) {\n let { routes, wrappers } = transformRoutes(this.router.config);\n routes = organizeRoutes(routes, wrappers);\n\n state = setValue(state, 'ConfigState', {\n ...(state.ConfigState && { ...state.ConfigState }),\n ...this.options,\n routes,\n });\n\n this.initialized = true;\n }\n\n return next(state, event);\n }\n}\n\nfunction transformRoutes(routes: Routes = [], wrappers: ABP.FullRoute[] = []): any {\n const abpRoutes: ABP.FullRoute[] = routes\n .filter(route => {\n return snq(() => route.data.routes.find(r => r.path === route.path), false);\n })\n .reduce((acc, val) => [...acc, ...val.data.routes], []);\n\n wrappers = abpRoutes.filter(ar => ar.wrapper);\n const transformed = [] as ABP.FullRoute[];\n routes\n .filter(route => route.component || route.loadChildren)\n .forEach(route => {\n const abpPackage = abpRoutes.find(abp => abp.path.toLowerCase() === route.path.toLowerCase());\n const { length } = transformed;\n\n if (abpPackage) {\n transformed.push(abpPackage);\n }\n\n if (transformed.length === length) {\n transformed.push({\n path: route.path,\n name: snq(() => route.data.routes.name, route.path),\n children: route.data.routes.children || [],\n } as ABP.FullRoute);\n }\n });\n\n return { routes: setUrls(transformed), wrappers };\n}\n\nfunction setUrls(routes: ABP.FullRoute[], parentUrl?: string): ABP.FullRoute[] {\n if (parentUrl) {\n // this if block using for only recursive call\n\n return routes.map(route => ({\n ...route,\n url: `${parentUrl}/${route.path}`,\n ...(route.children &&\n route.children.length && {\n children: setUrls(route.children, `${parentUrl}/${route.path}`),\n }),\n }));\n }\n\n return routes.map(route => ({\n ...route,\n url: `/${route.path}`,\n ...(route.children &&\n route.children.length && {\n children: setUrls(route.children, `/${route.path}`),\n }),\n }));\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigState } from '../states';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigService {\n constructor(private store: Store) {}\n\n getAll() {\n return this.store.selectSnapshot(ConfigState.getAll);\n }\n\n getOne(key: string) {\n return this.store.selectSnapshot(ConfigState.getOne(key));\n }\n\n getDeep(keys: string[] | string) {\n return this.store.selectSnapshot(ConfigState.getDeep(keys));\n }\n\n getSetting(key: string) {\n return this.store.selectSnapshot(ConfigState.getSetting(key));\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { uuid } from '../utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LazyLoadService {\n loadedLibraries: { [url: string]: ReplaySubject } = {};\n\n load(\n url: string,\n type: 'script' | 'style',\n content: string = '',\n targetQuery: string = 'body',\n position: InsertPosition = 'afterend',\n ): Observable {\n if (!url && !content) return;\n const key = url ? url.slice(url.lastIndexOf('/') + 1) : uuid();\n\n if (this.loadedLibraries[key]) {\n return this.loadedLibraries[key].asObservable();\n }\n\n this.loadedLibraries[key] = new ReplaySubject();\n\n let library;\n if (type === 'script') {\n library = document.createElement('script');\n library.type = 'text/javascript';\n if (url) {\n (library as HTMLScriptElement).src = url;\n }\n\n (library as HTMLScriptElement).text = content;\n } else if (url) {\n library = document.createElement('link');\n library.type = 'text/css';\n (library as HTMLLinkElement).rel = 'stylesheet';\n\n if (url) {\n (library as HTMLLinkElement).href = url;\n }\n } else {\n library = document.createElement('style');\n (library as HTMLStyleElement).textContent = content;\n }\n\n library.onload = () => {\n this.loadedLibraries[key].next();\n this.loadedLibraries[key].complete();\n };\n\n document.querySelector(targetQuery).insertAdjacentElement(position, library);\n\n return this.loadedLibraries[key].asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigState } from '../states';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class LocalizationService {\n constructor(private store: Store) {}\n\n get(keys: string, ...interpolateParams: string[]): Observable {\n return this.store.select(ConfigState.getCopy(keys, ...interpolateParams));\n }\n\n instant(keys: string, ...interpolateParams: string[]): string {\n return this.store.selectSnapshot(ConfigState.getCopy(keys, ...interpolateParams));\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Config } from '../models';\n\nexport function environmentFactory(environment: Config.Environment) {\n return {\n ...environment,\n };\n}\n\nexport function configFactory(config: Config.Requirements) {\n return {\n ...config,\n };\n}\n\nexport const ENVIRONMENT = new InjectionToken('ENVIRONMENT');\n\nexport const CONFIG = new InjectionToken('CONFIG');\n","import { Pipe, PipeTransform, OnDestroy } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigState } from '../states';\nimport { takeUntilDestroy } from '../utils';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n@Pipe({\n name: 'abpLocalization',\n pure: false, // required to update the value\n})\nexport class LocalizationPipe implements PipeTransform, OnDestroy {\n initialized: boolean = false;\n\n value: string;\n\n constructor(private store: Store) {}\n\n transform(value: string, ...interpolateParams: string[]): string {\n if (!this.initialized) {\n this.initialized = true;\n\n this.store\n .select(\n ConfigState.getCopy(\n value,\n ...interpolateParams.reduce((acc, val) => (Array.isArray(val) ? [...acc, ...val] : [...acc, val]), []),\n ),\n )\n .pipe(\n takeUntilDestroy(this),\n distinctUntilChanged(),\n )\n .subscribe(copy => (this.value = copy));\n }\n\n return this.value;\n }\n\n ngOnDestroy() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { NgxsRouterPluginModule } from '@ngxs/router-plugin';\nimport { NgxsStoragePluginModule } from '@ngxs/storage-plugin';\nimport { NgxsModule, NGXS_PLUGINS } from '@ngxs/store';\nimport { DynamicLayoutComponent } from './components/dynamic-layout.component';\nimport { RouterOutletComponent } from './components/router-outlet.component';\nimport { PermissionDirective } from './directives/permission.directive';\nimport { VisibilityDirective } from './directives/visibility.directive';\nimport { ApiInterceptor } from './interceptors/api.interceptor';\nimport { ABP } from './models/common';\nimport { LocalizationPipe } from './pipes/localization.pipe';\nimport { ConfigPlugin, NGXS_CONFIG_PLUGIN_OPTIONS } from './plugins/config.plugin';\nimport { ConfigState } from './states/config.state';\nimport { ProfileState } from './states/profile.state';\nimport { SessionState } from './states/session.state';\nimport { getInitialData } from './utils/initial-utils';\nimport { EllipsisDirective } from './directives/ellipsis.directive';\n\n@NgModule({\n imports: [\n NgxsModule.forFeature([ProfileState, SessionState, ConfigState]),\n NgxsStoragePluginModule.forRoot({ key: 'SessionState' }),\n NgxsRouterPluginModule.forRoot(),\n CommonModule,\n HttpClientModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n ],\n declarations: [\n RouterOutletComponent,\n DynamicLayoutComponent,\n PermissionDirective,\n VisibilityDirective,\n LocalizationPipe,\n EllipsisDirective,\n ],\n exports: [\n CommonModule,\n HttpClientModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n RouterOutletComponent,\n DynamicLayoutComponent,\n PermissionDirective,\n VisibilityDirective,\n EllipsisDirective,\n LocalizationPipe,\n ],\n providers: [LocalizationPipe],\n entryComponents: [RouterOutletComponent, DynamicLayoutComponent],\n})\nexport class CoreModule {\n static forRoot(options = {} as ABP.Root): ModuleWithProviders {\n return {\n ngModule: CoreModule,\n providers: [\n {\n provide: NGXS_PLUGINS,\n useClass: ConfigPlugin,\n multi: true,\n },\n {\n provide: NGXS_CONFIG_PLUGIN_OPTIONS,\n useValue: options,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: ApiInterceptor,\n multi: true,\n },\n {\n provide: APP_INITIALIZER,\n multi: true,\n deps: [Injector],\n useFactory: getInitialData,\n },\n ],\n };\n }\n}\n"]} \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/abp-ng.core.js b/npm/ng-packs/dist/core/esm2015/abp-ng.core.js new file mode 100644 index 00000000000..b2b7632fa91 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/abp-ng.core.js @@ -0,0 +1,28 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { PatchRouteByName, ConfigGetAppConfiguration, LoaderStart, LoaderStop, ProfileGet, ProfileUpdate, ProfileChangePassword, RestOccurError, SessionSetLanguage, DynamicLayoutComponent, RouterOutletComponent, EllipsisDirective, PermissionDirective, VisibilityDirective, AuthGuard, PermissionGuard, ApiInterceptor, Rest, NGXS_CONFIG_PLUGIN_OPTIONS, ConfigPlugin, ApplicationConfigurationService, ConfigService, LazyLoadService, LocalizationService, ProfileService, RestService, ProfileState, ConfigState, SessionState, environmentFactory, configFactory, ENVIRONMENT, CONFIG, uuid, getInitialData, organizeRoutes, setChildRoute, sortRoutes, takeUntilDestroy, CoreModule } from './public-api'; +export { ConfigGetAppConfiguration as ɵm, PatchRouteByName as ɵl } from './lib/actions/config.actions'; +export { ProfileChangePassword as ɵf, ProfileGet as ɵd, ProfileUpdate as ɵe } from './lib/actions/profile.actions'; +export { SessionSetLanguage as ɵi } from './lib/actions/session.actions'; +export { DynamicLayoutComponent as ɵo } from './lib/components/dynamic-layout.component'; +export { RouterOutletComponent as ɵn } from './lib/components/router-outlet.component'; +export { EllipsisDirective as ɵt } from './lib/directives/ellipsis.directive'; +export { PermissionDirective as ɵq } from './lib/directives/permission.directive'; +export { VisibilityDirective as ɵr } from './lib/directives/visibility.directive'; +export { ApiInterceptor as ɵx } from './lib/interceptors/api.interceptor'; +export { LocalizationPipe as ɵs } from './lib/pipes/localization.pipe'; +export { ConfigPlugin as ɵv, NGXS_CONFIG_PLUGIN_OPTIONS as ɵu } from './lib/plugins/config.plugin'; +export { ApplicationConfigurationService as ɵk } from './lib/services/application-configuration.service'; +export { ProfileService as ɵb } from './lib/services/profile.service'; +export { RestService as ɵc } from './lib/services/rest.service'; +export { ConfigState as ɵp } from './lib/states'; +export { ConfigState as ɵj } from './lib/states/config.state'; +export { ProfileState as ɵa } from './lib/states/profile.state'; +export { SessionState as ɵh } from './lib/states/session.state'; +export { getInitialData as ɵy } from './lib/utils/initial-utils'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLmNvcmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJhYnAtbmcuY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsc3FCQUFjLGNBQWMsQ0FBQztBQUU3QixPQUFPLEVBQUMseUJBQXlCLElBQUksRUFBRSxFQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3BHLE9BQU8sRUFBQyxxQkFBcUIsSUFBSSxFQUFFLEVBQUMsVUFBVSxJQUFJLEVBQUUsRUFBQyxhQUFhLElBQUksRUFBRSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDL0csT0FBTyxFQUFDLGtCQUFrQixJQUFJLEVBQUUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUN2RixPQUFPLEVBQUMscUJBQXFCLElBQUksRUFBRSxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDckYsT0FBTyxFQUFDLGlCQUFpQixJQUFJLEVBQUUsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUV4RSxPQUFPLEVBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUFDLFlBQVksSUFBSSxFQUFFLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDaEcsT0FBTyxFQUFDLCtCQUErQixJQUFJLEVBQUUsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBQyxjQUFjLElBQUksRUFBRSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsV0FBVyxJQUFJLEVBQUUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUMsV0FBVyxJQUFJLEVBQUUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBQyxZQUFZLElBQUksRUFBRSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFlBQVksSUFBSSxFQUFFLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsY0FBYyxJQUFJLEVBQUUsRUFBQyxNQUFNLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuXG5leHBvcnQge0NvbmZpZ0dldEFwcENvbmZpZ3VyYXRpb24gYXMgybVtLFBhdGNoUm91dGVCeU5hbWUgYXMgybVsfSBmcm9tICcuL2xpYi9hY3Rpb25zL2NvbmZpZy5hY3Rpb25zJztcbmV4cG9ydCB7UHJvZmlsZUNoYW5nZVBhc3N3b3JkIGFzIMm1ZixQcm9maWxlR2V0IGFzIMm1ZCxQcm9maWxlVXBkYXRlIGFzIMm1ZX0gZnJvbSAnLi9saWIvYWN0aW9ucy9wcm9maWxlLmFjdGlvbnMnO1xuZXhwb3J0IHtTZXNzaW9uU2V0TGFuZ3VhZ2UgYXMgybVpfSBmcm9tICcuL2xpYi9hY3Rpb25zL3Nlc3Npb24uYWN0aW9ucyc7XG5leHBvcnQge0R5bmFtaWNMYXlvdXRDb21wb25lbnQgYXMgybVvfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtbGF5b3V0LmNvbXBvbmVudCc7XG5leHBvcnQge1JvdXRlck91dGxldENvbXBvbmVudCBhcyDJtW59IGZyb20gJy4vbGliL2NvbXBvbmVudHMvcm91dGVyLW91dGxldC5jb21wb25lbnQnO1xuZXhwb3J0IHtFbGxpcHNpc0RpcmVjdGl2ZSBhcyDJtXR9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvZWxsaXBzaXMuZGlyZWN0aXZlJztcbmV4cG9ydCB7UGVybWlzc2lvbkRpcmVjdGl2ZSBhcyDJtXF9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvcGVybWlzc2lvbi5kaXJlY3RpdmUnO1xuZXhwb3J0IHtWaXNpYmlsaXR5RGlyZWN0aXZlIGFzIMm1cn0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy92aXNpYmlsaXR5LmRpcmVjdGl2ZSc7XG5leHBvcnQge0FwaUludGVyY2VwdG9yIGFzIMm1eH0gZnJvbSAnLi9saWIvaW50ZXJjZXB0b3JzL2FwaS5pbnRlcmNlcHRvcic7XG5leHBvcnQge0FCUCBhcyDJtXcsUHJvZmlsZSBhcyDJtWd9IGZyb20gJy4vbGliL21vZGVscyc7XG5leHBvcnQge0xvY2FsaXphdGlvblBpcGUgYXMgybVzfSBmcm9tICcuL2xpYi9waXBlcy9sb2NhbGl6YXRpb24ucGlwZSc7XG5leHBvcnQge0NvbmZpZ1BsdWdpbiBhcyDJtXYsTkdYU19DT05GSUdfUExVR0lOX09QVElPTlMgYXMgybV1fSBmcm9tICcuL2xpYi9wbHVnaW5zL2NvbmZpZy5wbHVnaW4nO1xuZXhwb3J0IHtBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25TZXJ2aWNlIGFzIMm1a30gZnJvbSAnLi9saWIvc2VydmljZXMvYXBwbGljYXRpb24tY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCB7UHJvZmlsZVNlcnZpY2UgYXMgybVifSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9wcm9maWxlLnNlcnZpY2UnO1xuZXhwb3J0IHtSZXN0U2VydmljZSBhcyDJtWN9IGZyb20gJy4vbGliL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XG5leHBvcnQge0NvbmZpZ1N0YXRlIGFzIMm1cH0gZnJvbSAnLi9saWIvc3RhdGVzJztcbmV4cG9ydCB7Q29uZmlnU3RhdGUgYXMgybVqfSBmcm9tICcuL2xpYi9zdGF0ZXMvY29uZmlnLnN0YXRlJztcbmV4cG9ydCB7UHJvZmlsZVN0YXRlIGFzIMm1YX0gZnJvbSAnLi9saWIvc3RhdGVzL3Byb2ZpbGUuc3RhdGUnO1xuZXhwb3J0IHtTZXNzaW9uU3RhdGUgYXMgybVofSBmcm9tICcuL2xpYi9zdGF0ZXMvc2Vzc2lvbi5zdGF0ZSc7XG5leHBvcnQge2dldEluaXRpYWxEYXRhIGFzIMm1eX0gZnJvbSAnLi9saWIvdXRpbHMvaW5pdGlhbC11dGlscyc7Il19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/actions/config.actions.js b/npm/ng-packs/dist/core/esm2015/lib/actions/config.actions.js new file mode 100644 index 00000000000..11aa8de8791 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/actions/config.actions.js @@ -0,0 +1,31 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export class PatchRouteByName { + /** + * @param {?} name + * @param {?} newValue + */ + constructor(name, newValue) { + this.name = name; + this.newValue = newValue; + } +} +PatchRouteByName.type = '[Config] Patch Route By Name'; +if (false) { + /** @type {?} */ + PatchRouteByName.type; + /** @type {?} */ + PatchRouteByName.prototype.name; + /** @type {?} */ + PatchRouteByName.prototype.newValue; +} +export class ConfigGetAppConfiguration { +} +ConfigGetAppConfiguration.type = '[Config] Get App Configuration'; +if (false) { + /** @type {?} */ + ConfigGetAppConfiguration.type; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmFjdGlvbnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvYWN0aW9ucy9jb25maWcuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsTUFBTSxPQUFPLGdCQUFnQjs7Ozs7SUFFM0IsWUFBbUIsSUFBWSxFQUFTLFFBQTRCO1FBQWpELFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFvQjtJQUFHLENBQUM7O0FBRHhELHFCQUFJLEdBQUcsOEJBQThCLENBQUM7OztJQUF0RCxzQkFBc0Q7O0lBQzFDLGdDQUFtQjs7SUFBRSxvQ0FBbUM7O0FBR3RFLE1BQU0sT0FBTyx5QkFBeUI7O0FBQ3BCLDhCQUFJLEdBQUcsZ0NBQWdDLENBQUM7OztJQUF4RCwrQkFBd0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBQlAgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5leHBvcnQgY2xhc3MgUGF0Y2hSb3V0ZUJ5TmFtZSB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tDb25maWddIFBhdGNoIFJvdXRlIEJ5IE5hbWUnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nLCBwdWJsaWMgbmV3VmFsdWU6IFBhcnRpYWw8QUJQLlJvdXRlPikge31cbn1cblxuZXhwb3J0IGNsYXNzIENvbmZpZ0dldEFwcENvbmZpZ3VyYXRpb24ge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbQ29uZmlnXSBHZXQgQXBwIENvbmZpZ3VyYXRpb24nO1xufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/actions/index.js b/npm/ng-packs/dist/core/esm2015/lib/actions/index.js new file mode 100644 index 00000000000..1b4928b55d9 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/actions/index.js @@ -0,0 +1,10 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { PatchRouteByName, ConfigGetAppConfiguration } from './config.actions'; +export { LoaderStart, LoaderStop } from './loader.actions'; +export { ProfileGet, ProfileUpdate, ProfileChangePassword } from './profile.actions'; +export { RestOccurError } from './rest.actions'; +export { SessionSetLanguage } from './session.actions'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvYWN0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsNERBQWMsa0JBQWtCLENBQUM7QUFDakMsd0NBQWMsa0JBQWtCLENBQUM7QUFDakMsaUVBQWMsbUJBQW1CLENBQUM7QUFDbEMsK0JBQWMsZ0JBQWdCLENBQUM7QUFDL0IsbUNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbmZpZy5hY3Rpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbG9hZGVyLmFjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9maWxlLmFjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXN0LmFjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXNzaW9uLmFjdGlvbnMnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/actions/loader.actions.js b/npm/ng-packs/dist/core/esm2015/lib/actions/loader.actions.js new file mode 100644 index 00000000000..cb090bfb937 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/actions/loader.actions.js @@ -0,0 +1,35 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export class LoaderStart { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +LoaderStart.type = '[Loader] Start'; +if (false) { + /** @type {?} */ + LoaderStart.type; + /** @type {?} */ + LoaderStart.prototype.payload; +} +export class LoaderStop { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +LoaderStop.type = '[Loader] Stop'; +if (false) { + /** @type {?} */ + LoaderStop.type; + /** @type {?} */ + LoaderStop.prototype.payload; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmFjdGlvbnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvYWN0aW9ucy9sb2FkZXIuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsTUFBTSxPQUFPLFdBQVc7Ozs7SUFFdEIsWUFBbUIsT0FBeUI7UUFBekIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7SUFBRyxDQUFDOztBQURoQyxnQkFBSSxHQUFHLGdCQUFnQixDQUFDOzs7SUFBeEMsaUJBQXdDOztJQUM1Qiw4QkFBZ0M7O0FBRzlDLE1BQU0sT0FBTyxVQUFVOzs7O0lBRXJCLFlBQW1CLE9BQXlCO1FBQXpCLFlBQU8sR0FBUCxPQUFPLENBQWtCO0lBQUcsQ0FBQzs7QUFEaEMsZUFBSSxHQUFHLGVBQWUsQ0FBQzs7O0lBQXZDLGdCQUF1Qzs7SUFDM0IsNkJBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmV4cG9ydCBjbGFzcyBMb2FkZXJTdGFydCB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tMb2FkZXJdIFN0YXJ0JztcbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IEh0dHBSZXF1ZXN0PGFueT4pIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBMb2FkZXJTdG9wIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0xvYWRlcl0gU3RvcCc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBIdHRwUmVxdWVzdDxhbnk+KSB7fVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/actions/profile.actions.js b/npm/ng-packs/dist/core/esm2015/lib/actions/profile.actions.js new file mode 100644 index 00000000000..cfa7bf35e4c --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/actions/profile.actions.js @@ -0,0 +1,42 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export class ProfileGet { +} +ProfileGet.type = '[Profile] Get'; +if (false) { + /** @type {?} */ + ProfileGet.type; +} +export class ProfileUpdate { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +ProfileUpdate.type = '[Profile] Update'; +if (false) { + /** @type {?} */ + ProfileUpdate.type; + /** @type {?} */ + ProfileUpdate.prototype.payload; +} +export class ProfileChangePassword { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +ProfileChangePassword.type = '[Profile] Change Password'; +if (false) { + /** @type {?} */ + ProfileChangePassword.type; + /** @type {?} */ + ProfileChangePassword.prototype.payload; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL2FjdGlvbnMvcHJvZmlsZS5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxNQUFNLE9BQU8sVUFBVTs7QUFDTCxlQUFJLEdBQUcsZUFBZSxDQUFDOzs7SUFBdkMsZ0JBQXVDOztBQUd6QyxNQUFNLE9BQU8sYUFBYTs7OztJQUV4QixZQUFtQixPQUF5QjtRQUF6QixZQUFPLEdBQVAsT0FBTyxDQUFrQjtJQUFHLENBQUM7O0FBRGhDLGtCQUFJLEdBQUcsa0JBQWtCLENBQUM7OztJQUExQyxtQkFBMEM7O0lBQzlCLGdDQUFnQzs7QUFHOUMsTUFBTSxPQUFPLHFCQUFxQjs7OztJQUVoQyxZQUFtQixPQUFzQztRQUF0QyxZQUFPLEdBQVAsT0FBTyxDQUErQjtJQUFHLENBQUM7O0FBRDdDLDBCQUFJLEdBQUcsMkJBQTJCLENBQUM7OztJQUFuRCwyQkFBbUQ7O0lBQ3ZDLHdDQUE2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2ZpbGUgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5leHBvcnQgY2xhc3MgUHJvZmlsZUdldCB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tQcm9maWxlXSBHZXQnO1xufVxuXG5leHBvcnQgY2xhc3MgUHJvZmlsZVVwZGF0ZSB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tQcm9maWxlXSBVcGRhdGUnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogUHJvZmlsZS5SZXNwb25zZSkge31cbn1cblxuZXhwb3J0IGNsYXNzIFByb2ZpbGVDaGFuZ2VQYXNzd29yZCB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tQcm9maWxlXSBDaGFuZ2UgUGFzc3dvcmQnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogUHJvZmlsZS5DaGFuZ2VQYXNzd29yZFJlcXVlc3QpIHt9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/actions/rest.actions.js b/npm/ng-packs/dist/core/esm2015/lib/actions/rest.actions.js new file mode 100644 index 00000000000..119ca38e872 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/actions/rest.actions.js @@ -0,0 +1,20 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export class RestOccurError { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +RestOccurError.type = '[Rest] Error'; +if (false) { + /** @type {?} */ + RestOccurError.type; + /** @type {?} */ + RestOccurError.prototype.payload; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL2FjdGlvbnMvcmVzdC5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxNQUFNLE9BQU8sY0FBYzs7OztJQUV6QixZQUFtQixPQUFnQztRQUFoQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtJQUFHLENBQUM7O0FBRHZDLG1CQUFJLEdBQUcsY0FBYyxDQUFDOzs7SUFBdEMsb0JBQXNDOztJQUMxQixpQ0FBdUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuZXhwb3J0IGNsYXNzIFJlc3RPY2N1ckVycm9yIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1Jlc3RdIEVycm9yJztcbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSB7fVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/actions/session.actions.js b/npm/ng-packs/dist/core/esm2015/lib/actions/session.actions.js new file mode 100644 index 00000000000..c50105a8bf8 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/actions/session.actions.js @@ -0,0 +1,20 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export class SessionSetLanguage { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +SessionSetLanguage.type = '[Session] Set Language'; +if (false) { + /** @type {?} */ + SessionSetLanguage.type; + /** @type {?} */ + SessionSetLanguage.prototype.payload; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL2FjdGlvbnMvc2Vzc2lvbi5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxNQUFNLE9BQU8sa0JBQWtCOzs7O0lBRTdCLFlBQW1CLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO0lBQUcsQ0FBQzs7QUFEdEIsdUJBQUksR0FBRyx3QkFBd0IsQ0FBQzs7O0lBQWhELHdCQUFnRDs7SUFDcEMscUNBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFNlc3Npb25TZXRMYW5ndWFnZSB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tTZXNzaW9uXSBTZXQgTGFuZ3VhZ2UnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogc3RyaW5nKSB7fVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/components/dynamic-layout.component.js b/npm/ng-packs/dist/core/esm2015/lib/components/dynamic-layout.component.js new file mode 100644 index 00000000000..f8aade9e9ec --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/components/dynamic-layout.component.js @@ -0,0 +1,126 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Component } from '@angular/core'; +import { NavigationEnd, Router } from '@angular/router'; +import { Select, Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { ConfigState } from '../states'; +import { takeUntilDestroy } from '../utils'; +import snq from 'snq'; +export class DynamicLayoutComponent { + /** + * @param {?} router + * @param {?} store + */ + constructor(router, store) { + this.router = router; + this.store = store; + this.router.events.pipe(takeUntilDestroy(this)).subscribe((/** + * @param {?} event + * @return {?} + */ + event => { + if (event instanceof NavigationEnd) { + const { segments } = this.router.parseUrl(event.url).root.children.primary; + const { requirements: { layouts }, routes, } = this.store.selectSnapshot(ConfigState.getAll); + /** @type {?} */ + const layout = findLayout(segments, routes); + this.layout = layouts.filter((/** + * @param {?} l + * @return {?} + */ + l => !!l)).find((/** + * @param {?} l + * @return {?} + */ + l => snq((/** + * @return {?} + */ + () => l.type.toLowerCase().indexOf(layout)), -1) > -1)); + } + })); + } + /** + * @return {?} + */ + ngOnDestroy() { } +} +DynamicLayoutComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-dynamic-layout', + template: ` + + + + + ` + }] } +]; +/** @nocollapse */ +DynamicLayoutComponent.ctorParameters = () => [ + { type: Router }, + { type: Store } +]; +tslib_1.__decorate([ + Select(ConfigState.getOne('requirements')), + tslib_1.__metadata("design:type", Observable) +], DynamicLayoutComponent.prototype, "requirements$", void 0); +if (false) { + /** @type {?} */ + DynamicLayoutComponent.prototype.requirements$; + /** @type {?} */ + DynamicLayoutComponent.prototype.layout; + /** + * @type {?} + * @private + */ + DynamicLayoutComponent.prototype.router; + /** + * @type {?} + * @private + */ + DynamicLayoutComponent.prototype.store; +} +/** + * @param {?} segments + * @param {?} routes + * @return {?} + */ +function findLayout(segments, routes) { + /** @type {?} */ + let layout = "empty" /* empty */; + /** @type {?} */ + const route = routes + .reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + (acc, val) => (val.wrapper ? [...acc, ...val.children] : [...acc, val])), []) + .find((/** + * @param {?} r + * @return {?} + */ + r => r.path === segments[0].path)); + if (route) { + if (route.layout) { + layout = route.layout; + } + if (route.children && route.children.length) { + /** @type {?} */ + const child = route.children.find((/** + * @param {?} c + * @return {?} + */ + c => c.path === segments[1].path)); + if (child.layout) { + layout = child.layout; + } + } + } + return layout; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZHluYW1pYy1sYXlvdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQWMsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR2xDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVDLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztBQVd0QixNQUFNLE9BQU8sc0JBQXNCOzs7OztJQU1qQyxZQUFvQixNQUFjLEVBQVUsS0FBWTtRQUFwQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTOzs7O1FBQUMsS0FBSyxDQUFDLEVBQUU7WUFDaEUsSUFBSSxLQUFLLFlBQVksYUFBYSxFQUFFO3NCQUM1QixFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU87c0JBQ3BFLEVBQ0osWUFBWSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQ3pCLE1BQU0sR0FDUCxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7O3NCQUUzQyxNQUFNLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7Z0JBRTNDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU07Ozs7Z0JBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSTs7OztnQkFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUc7OztnQkFBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLENBQUM7YUFDNUc7UUFDSCxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7SUFFRCxXQUFXLEtBQUksQ0FBQzs7O1lBL0JqQixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsUUFBUSxFQUFFOzs7OztHQUtUO2FBQ0Y7Ozs7WUFqQnVCLE1BQU07WUFDYixLQUFLOztBQW1CcEI7SUFEQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztzQ0FDNUIsVUFBVTs2REFBc0I7OztJQUQvQywrQ0FDK0M7O0lBRS9DLHdDQUFrQjs7Ozs7SUFFTix3Q0FBc0I7Ozs7O0lBQUUsdUNBQW9COzs7Ozs7O0FBbUIxRCxTQUFTLFVBQVUsQ0FBQyxRQUFzQixFQUFFLE1BQXVCOztRQUM3RCxNQUFNLHNCQUFvQjs7VUFFeEIsS0FBSyxHQUFHLE1BQU07U0FDakIsTUFBTTs7Ozs7SUFBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQztTQUNuRixJQUFJOzs7O0lBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUM7SUFFekMsSUFBSSxLQUFLLEVBQUU7UUFDVCxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDaEIsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7U0FDdkI7UUFFRCxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7O2tCQUNyQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJOzs7O1lBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUM7WUFFbkUsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO2dCQUNoQixNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQzthQUN2QjtTQUNGO0tBQ0Y7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciwgVXJsU2VnbWVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZUxheW91dFR5cGUgfSBmcm9tICcuLi9lbnVtcyc7XG5pbXBvcnQgeyBBQlAsIENvbmZpZyB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBDb25maWdTdGF0ZSB9IGZyb20gJy4uL3N0YXRlcyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHNucSBmcm9tICdzbnEnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtZHluYW1pYy1sYXlvdXQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYXlvdXQgPyBjb21wb25lbnRPdXRsZXQgOiByb3V0ZXJPdXRsZXRcIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjcm91dGVyT3V0bGV0Pjxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY29tcG9uZW50T3V0bGV0PjxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwibGF5b3V0XCI+PC9uZy1jb250YWluZXI+PC9uZy10ZW1wbGF0ZT5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0xheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBTZWxlY3QoQ29uZmlnU3RhdGUuZ2V0T25lKCdyZXF1aXJlbWVudHMnKSlcbiAgcmVxdWlyZW1lbnRzJDogT2JzZXJ2YWJsZTxDb25maWcuUmVxdWlyZW1lbnRzPjtcblxuICBsYXlvdXQ6IFR5cGU8YW55PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHN0b3JlOiBTdG9yZSkge1xuICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKHRha2VVbnRpbERlc3Ryb3kodGhpcykpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgIGNvbnN0IHsgc2VnbWVudHMgfSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKGV2ZW50LnVybCkucm9vdC5jaGlsZHJlbi5wcmltYXJ5O1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgcmVxdWlyZW1lbnRzOiB7IGxheW91dHMgfSxcbiAgICAgICAgICByb3V0ZXMsXG4gICAgICAgIH0gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KENvbmZpZ1N0YXRlLmdldEFsbCk7XG5cbiAgICAgICAgY29uc3QgbGF5b3V0ID0gZmluZExheW91dChzZWdtZW50cywgcm91dGVzKTtcblxuICAgICAgICB0aGlzLmxheW91dCA9IGxheW91dHMuZmlsdGVyKGwgPT4gISFsKS5maW5kKGwgPT4gc25xKCgpID0+IGwudHlwZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YobGF5b3V0KSwgLTEpID4gLTEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7fVxufVxuXG5mdW5jdGlvbiBmaW5kTGF5b3V0KHNlZ21lbnRzOiBVcmxTZWdtZW50W10sIHJvdXRlczogQUJQLkZ1bGxSb3V0ZVtdKTogZUxheW91dFR5cGUge1xuICBsZXQgbGF5b3V0ID0gZUxheW91dFR5cGUuZW1wdHk7XG5cbiAgY29uc3Qgcm91dGUgPSByb3V0ZXNcbiAgICAucmVkdWNlKChhY2MsIHZhbCkgPT4gKHZhbC53cmFwcGVyID8gWy4uLmFjYywgLi4udmFsLmNoaWxkcmVuXSA6IFsuLi5hY2MsIHZhbF0pLCBbXSlcbiAgICAuZmluZChyID0+IHIucGF0aCA9PT0gc2VnbWVudHNbMF0ucGF0aCk7XG5cbiAgaWYgKHJvdXRlKSB7XG4gICAgaWYgKHJvdXRlLmxheW91dCkge1xuICAgICAgbGF5b3V0ID0gcm91dGUubGF5b3V0O1xuICAgIH1cblxuICAgIGlmIChyb3V0ZS5jaGlsZHJlbiAmJiByb3V0ZS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGNoaWxkID0gcm91dGUuY2hpbGRyZW4uZmluZChjID0+IGMucGF0aCA9PT0gc2VnbWVudHNbMV0ucGF0aCk7XG5cbiAgICAgIGlmIChjaGlsZC5sYXlvdXQpIHtcbiAgICAgICAgbGF5b3V0ID0gY2hpbGQubGF5b3V0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsYXlvdXQ7XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/components/index.js b/npm/ng-packs/dist/core/esm2015/lib/components/index.js new file mode 100644 index 00000000000..ddc4caca23f --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/components/index.js @@ -0,0 +1,7 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { DynamicLayoutComponent } from './dynamic-layout.component'; +export { RouterOutletComponent } from './router-outlet.component'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsdUNBQWMsNEJBQTRCLENBQUM7QUFDM0Msc0NBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2R5bmFtaWMtbGF5b3V0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3JvdXRlci1vdXRsZXQuY29tcG9uZW50JztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/components/router-outlet.component.js b/npm/ng-packs/dist/core/esm2015/lib/components/router-outlet.component.js new file mode 100644 index 00000000000..a0d43f78d56 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/components/router-outlet.component.js @@ -0,0 +1,16 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component } from '@angular/core'; +export class RouterOutletComponent { +} +RouterOutletComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-router-outlet', + template: ` + + ` + }] } +]; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLW91dGxldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9yb3V0ZXItb3V0bGV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVExQyxNQUFNLE9BQU8scUJBQXFCOzs7WUFOakMsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFFBQVEsRUFBRTs7R0FFVDthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FicC1yb3V0ZXItb3V0bGV0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlck91dGxldENvbXBvbmVudCB7fVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/core.module.js b/npm/ng-packs/dist/core/esm2015/lib/core.module.js new file mode 100644 index 00000000000..ca881df30aa --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/core.module.js @@ -0,0 +1,95 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { CommonModule } from '@angular/common'; +import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; +import { APP_INITIALIZER, Injector, NgModule } from '@angular/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { RouterModule } from '@angular/router'; +import { NgxsRouterPluginModule } from '@ngxs/router-plugin'; +import { NgxsStoragePluginModule } from '@ngxs/storage-plugin'; +import { NgxsModule, NGXS_PLUGINS } from '@ngxs/store'; +import { DynamicLayoutComponent } from './components/dynamic-layout.component'; +import { RouterOutletComponent } from './components/router-outlet.component'; +import { PermissionDirective } from './directives/permission.directive'; +import { VisibilityDirective } from './directives/visibility.directive'; +import { ApiInterceptor } from './interceptors/api.interceptor'; +import { LocalizationPipe } from './pipes/localization.pipe'; +import { ConfigPlugin, NGXS_CONFIG_PLUGIN_OPTIONS } from './plugins/config.plugin'; +import { ConfigState } from './states/config.state'; +import { ProfileState } from './states/profile.state'; +import { SessionState } from './states/session.state'; +import { getInitialData } from './utils/initial-utils'; +import { EllipsisDirective } from './directives/ellipsis.directive'; +export class CoreModule { + /** + * @param {?=} options + * @return {?} + */ + static forRoot(options = (/** @type {?} */ ({}))) { + return { + ngModule: CoreModule, + providers: [ + { + provide: NGXS_PLUGINS, + useClass: ConfigPlugin, + multi: true, + }, + { + provide: NGXS_CONFIG_PLUGIN_OPTIONS, + useValue: options, + }, + { + provide: HTTP_INTERCEPTORS, + useClass: ApiInterceptor, + multi: true, + }, + { + provide: APP_INITIALIZER, + multi: true, + deps: [Injector], + useFactory: getInitialData, + }, + ], + }; + } +} +CoreModule.decorators = [ + { type: NgModule, args: [{ + imports: [ + NgxsModule.forFeature([ProfileState, SessionState, ConfigState]), + NgxsStoragePluginModule.forRoot({ key: 'SessionState' }), + NgxsRouterPluginModule.forRoot(), + CommonModule, + HttpClientModule, + FormsModule, + ReactiveFormsModule, + RouterModule, + ], + declarations: [ + RouterOutletComponent, + DynamicLayoutComponent, + PermissionDirective, + VisibilityDirective, + LocalizationPipe, + EllipsisDirective, + ], + exports: [ + CommonModule, + HttpClientModule, + FormsModule, + ReactiveFormsModule, + RouterModule, + RouterOutletComponent, + DynamicLayoutComponent, + PermissionDirective, + VisibilityDirective, + EllipsisDirective, + LocalizationPipe, + ], + providers: [LocalizationPipe], + entryComponents: [RouterOutletComponent, DynamicLayoutComponent], + },] } +]; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvY29yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFxQ3BFLE1BQU0sT0FBTyxVQUFVOzs7OztJQUNyQixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxtQkFBQSxFQUFFLEVBQVk7UUFDckMsT0FBTztZQUNMLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsWUFBWTtvQkFDckIsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLEtBQUssRUFBRSxJQUFJO2lCQUNaO2dCQUNEO29CQUNFLE9BQU8sRUFBRSwwQkFBMEI7b0JBQ25DLFFBQVEsRUFBRSxPQUFPO2lCQUNsQjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsaUJBQWlCO29CQUMxQixRQUFRLEVBQUUsY0FBYztvQkFDeEIsS0FBSyxFQUFFLElBQUk7aUJBQ1o7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLEtBQUssRUFBRSxJQUFJO29CQUNYLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQztvQkFDaEIsVUFBVSxFQUFFLGNBQWM7aUJBQzNCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7O1lBOURGLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7b0JBQ2hFLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsQ0FBQztvQkFDeEQsc0JBQXNCLENBQUMsT0FBTyxFQUFFO29CQUNoQyxZQUFZO29CQUNaLGdCQUFnQjtvQkFDaEIsV0FBVztvQkFDWCxtQkFBbUI7b0JBQ25CLFlBQVk7aUJBQ2I7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLHFCQUFxQjtvQkFDckIsc0JBQXNCO29CQUN0QixtQkFBbUI7b0JBQ25CLG1CQUFtQjtvQkFDbkIsZ0JBQWdCO29CQUNoQixpQkFBaUI7aUJBQ2xCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLGdCQUFnQjtvQkFDaEIsV0FBVztvQkFDWCxtQkFBbUI7b0JBQ25CLFlBQVk7b0JBQ1oscUJBQXFCO29CQUNyQixzQkFBc0I7b0JBQ3RCLG1CQUFtQjtvQkFDbkIsbUJBQW1CO29CQUNuQixpQkFBaUI7b0JBQ2pCLGdCQUFnQjtpQkFDakI7Z0JBQ0QsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzdCLGVBQWUsRUFBRSxDQUFDLHFCQUFxQixFQUFFLHNCQUFzQixDQUFDO2FBQ2pFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUsIEhUVFBfSU5URVJDRVBUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBJbmplY3RvciwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE5neHNSb3V0ZXJQbHVnaW5Nb2R1bGUgfSBmcm9tICdAbmd4cy9yb3V0ZXItcGx1Z2luJztcbmltcG9ydCB7IE5neHNTdG9yYWdlUGx1Z2luTW9kdWxlIH0gZnJvbSAnQG5neHMvc3RvcmFnZS1wbHVnaW4nO1xuaW1wb3J0IHsgTmd4c01vZHVsZSwgTkdYU19QTFVHSU5TIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgRHluYW1pY0xheW91dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9keW5hbWljLWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUm91dGVyT3V0bGV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JvdXRlci1vdXRsZXQuY29tcG9uZW50JztcbmltcG9ydCB7IFBlcm1pc3Npb25EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcGVybWlzc2lvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVmlzaWJpbGl0eURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92aXNpYmlsaXR5LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBcGlJbnRlcmNlcHRvciB9IGZyb20gJy4vaW50ZXJjZXB0b3JzL2FwaS5pbnRlcmNlcHRvcic7XG5pbXBvcnQgeyBBQlAgfSBmcm9tICcuL21vZGVscy9jb21tb24nO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uUGlwZSB9IGZyb20gJy4vcGlwZXMvbG9jYWxpemF0aW9uLnBpcGUnO1xuaW1wb3J0IHsgQ29uZmlnUGx1Z2luLCBOR1hTX0NPTkZJR19QTFVHSU5fT1BUSU9OUyB9IGZyb20gJy4vcGx1Z2lucy9jb25maWcucGx1Z2luJztcbmltcG9ydCB7IENvbmZpZ1N0YXRlIH0gZnJvbSAnLi9zdGF0ZXMvY29uZmlnLnN0YXRlJztcbmltcG9ydCB7IFByb2ZpbGVTdGF0ZSB9IGZyb20gJy4vc3RhdGVzL3Byb2ZpbGUuc3RhdGUnO1xuaW1wb3J0IHsgU2Vzc2lvblN0YXRlIH0gZnJvbSAnLi9zdGF0ZXMvc2Vzc2lvbi5zdGF0ZSc7XG5pbXBvcnQgeyBnZXRJbml0aWFsRGF0YSB9IGZyb20gJy4vdXRpbHMvaW5pdGlhbC11dGlscyc7XG5pbXBvcnQgeyBFbGxpcHNpc0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9lbGxpcHNpcy5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgTmd4c01vZHVsZS5mb3JGZWF0dXJlKFtQcm9maWxlU3RhdGUsIFNlc3Npb25TdGF0ZSwgQ29uZmlnU3RhdGVdKSxcbiAgICBOZ3hzU3RvcmFnZVBsdWdpbk1vZHVsZS5mb3JSb290KHsga2V5OiAnU2Vzc2lvblN0YXRlJyB9KSxcbiAgICBOZ3hzUm91dGVyUGx1Z2luTW9kdWxlLmZvclJvb3QoKSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSHR0cENsaWVudE1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgUm91dGVyT3V0bGV0Q29tcG9uZW50LFxuICAgIER5bmFtaWNMYXlvdXRDb21wb25lbnQsXG4gICAgUGVybWlzc2lvbkRpcmVjdGl2ZSxcbiAgICBWaXNpYmlsaXR5RGlyZWN0aXZlLFxuICAgIExvY2FsaXphdGlvblBpcGUsXG4gICAgRWxsaXBzaXNEaXJlY3RpdmUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSHR0cENsaWVudE1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBSb3V0ZXJPdXRsZXRDb21wb25lbnQsXG4gICAgRHluYW1pY0xheW91dENvbXBvbmVudCxcbiAgICBQZXJtaXNzaW9uRGlyZWN0aXZlLFxuICAgIFZpc2liaWxpdHlEaXJlY3RpdmUsXG4gICAgRWxsaXBzaXNEaXJlY3RpdmUsXG4gICAgTG9jYWxpemF0aW9uUGlwZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbTG9jYWxpemF0aW9uUGlwZV0sXG4gIGVudHJ5Q29tcG9uZW50czogW1JvdXRlck91dGxldENvbXBvbmVudCwgRHluYW1pY0xheW91dENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIENvcmVNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChvcHRpb25zID0ge30gYXMgQUJQLlJvb3QpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IENvcmVNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IE5HWFNfUExVR0lOUyxcbiAgICAgICAgICB1c2VDbGFzczogQ29uZmlnUGx1Z2luLFxuICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogTkdYU19DT05GSUdfUExVR0lOX09QVElPTlMsXG4gICAgICAgICAgdXNlVmFsdWU6IG9wdGlvbnMsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcbiAgICAgICAgICB1c2VDbGFzczogQXBpSW50ZXJjZXB0b3IsXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgZGVwczogW0luamVjdG9yXSxcbiAgICAgICAgICB1c2VGYWN0b3J5OiBnZXRJbml0aWFsRGF0YSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/directives/ellipsis.directive.js b/npm/ng-packs/dist/core/esm2015/lib/directives/ellipsis.directive.js new file mode 100644 index 00000000000..5743a25846d --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/directives/ellipsis.directive.js @@ -0,0 +1,80 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { ChangeDetectorRef, Directive, ElementRef, HostBinding, Input } from '@angular/core'; +export class EllipsisDirective { + /** + * @param {?} cdRef + * @param {?} elRef + */ + constructor(cdRef, elRef) { + this.cdRef = cdRef; + this.elRef = elRef; + this.enabled = true; + } + /** + * @return {?} + */ + get class() { + return this.enabled; + } + /** + * @return {?} + */ + get maxWidth() { + return this.enabled ? this.witdh || '180px' : undefined; + } + /** + * @return {?} + */ + ngAfterContentInit() { + setTimeout((/** + * @return {?} + */ + () => { + /** @type {?} */ + const title = this.title; + this.title = title || ((/** @type {?} */ (this.elRef.nativeElement))).innerText; + if (this.title !== title) { + this.cdRef.detectChanges(); + } + }), 0); + } +} +EllipsisDirective.decorators = [ + { type: Directive, args: [{ + selector: '[abpEllipsis]', + },] } +]; +/** @nocollapse */ +EllipsisDirective.ctorParameters = () => [ + { type: ChangeDetectorRef }, + { type: ElementRef } +]; +EllipsisDirective.propDecorators = { + witdh: [{ type: Input, args: ['abpEllipsis',] }], + title: [{ type: HostBinding, args: ['title',] }, { type: Input }], + enabled: [{ type: Input, args: ['abpEllipsisEnabled',] }], + class: [{ type: HostBinding, args: ['class.abp-ellipsis',] }], + maxWidth: [{ type: HostBinding, args: ['style.max-width',] }] +}; +if (false) { + /** @type {?} */ + EllipsisDirective.prototype.witdh; + /** @type {?} */ + EllipsisDirective.prototype.title; + /** @type {?} */ + EllipsisDirective.prototype.enabled; + /** + * @type {?} + * @private + */ + EllipsisDirective.prototype.cdRef; + /** + * @type {?} + * @private + */ + EllipsisDirective.prototype.elRef; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzaXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL2RpcmVjdGl2ZXMvZWxsaXBzaXMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQW9CLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUsvRyxNQUFNLE9BQU8saUJBQWlCOzs7OztJQXFCNUIsWUFBb0IsS0FBd0IsRUFBVSxLQUFpQjtRQUFuRCxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUFVLFVBQUssR0FBTCxLQUFLLENBQVk7UUFadkUsWUFBTyxHQUFHLElBQUksQ0FBQztJQVkyRCxDQUFDOzs7O0lBVjNFLElBQ0ksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDOzs7O0lBRUQsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzFELENBQUM7Ozs7SUFJRCxrQkFBa0I7UUFDaEIsVUFBVTs7O1FBQUMsR0FBRyxFQUFFOztrQkFDUixLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUs7WUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksQ0FBQyxtQkFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBRTFFLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDNUI7UUFDSCxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDOzs7WUFuQ0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2FBQzFCOzs7O1lBSjBCLGlCQUFpQjtZQUFhLFVBQVU7OztvQkFNaEUsS0FBSyxTQUFDLGFBQWE7b0JBR25CLFdBQVcsU0FBQyxPQUFPLGNBQ25CLEtBQUs7c0JBR0wsS0FBSyxTQUFDLG9CQUFvQjtvQkFHMUIsV0FBVyxTQUFDLG9CQUFvQjt1QkFLaEMsV0FBVyxTQUFDLGlCQUFpQjs7OztJQWY5QixrQ0FDYzs7SUFFZCxrQ0FFYzs7SUFFZCxvQ0FDZTs7Ozs7SUFZSCxrQ0FBZ0M7Ozs7O0lBQUUsa0NBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thYnBFbGxpcHNpc10nLFxufSlcbmV4cG9ydCBjbGFzcyBFbGxpcHNpc0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICBASW5wdXQoJ2FicEVsbGlwc2lzJylcbiAgd2l0ZGg6IHN0cmluZztcblxuICBASG9zdEJpbmRpbmcoJ3RpdGxlJylcbiAgQElucHV0KClcbiAgdGl0bGU6IHN0cmluZztcblxuICBASW5wdXQoJ2FicEVsbGlwc2lzRW5hYmxlZCcpXG4gIGVuYWJsZWQgPSB0cnVlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWJwLWVsbGlwc2lzJylcbiAgZ2V0IGNsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLmVuYWJsZWQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1heC13aWR0aCcpXG4gIGdldCBtYXhXaWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVkID8gdGhpcy53aXRkaCB8fCAnMTgwcHgnIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLnRpdGxlO1xuICAgICAgdGhpcy50aXRsZSA9IHRpdGxlIHx8ICh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dDtcblxuICAgICAgaWYgKHRoaXMudGl0bGUgIT09IHRpdGxlKSB7XG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0sIDApO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/directives/index.js b/npm/ng-packs/dist/core/esm2015/lib/directives/index.js new file mode 100644 index 00000000000..f4318663b7f --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/directives/index.js @@ -0,0 +1,8 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { EllipsisDirective } from './ellipsis.directive'; +export { PermissionDirective } from './permission.directive'; +export { VisibilityDirective } from './visibility.directive'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsa0NBQWMsc0JBQXNCLENBQUM7QUFDckMsb0NBQWMsd0JBQXdCLENBQUM7QUFDdkMsb0NBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VsbGlwc2lzLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3Blcm1pc3Npb24uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vdmlzaWJpbGl0eS5kaXJlY3RpdmUnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/directives/permission.directive.js b/npm/ng-packs/dist/core/esm2015/lib/directives/permission.directive.js new file mode 100644 index 00000000000..159ff2d2a30 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/directives/permission.directive.js @@ -0,0 +1,77 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Directive, ElementRef, Input, Optional, Renderer2 } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { ConfigState } from '../states'; +import { takeUntilDestroy } from '../utils'; +export class PermissionDirective { + /** + * @param {?} elRef + * @param {?} renderer + * @param {?} store + */ + constructor(elRef, renderer, store) { + this.elRef = elRef; + this.renderer = renderer; + this.store = store; + } + /** + * @return {?} + */ + ngOnInit() { + if (this.condition) { + this.store + .select(ConfigState.getGrantedPolicy(this.condition)) + .pipe(takeUntilDestroy(this)) + .subscribe((/** + * @param {?} isGranted + * @return {?} + */ + isGranted => { + if (!isGranted) { + this.renderer.removeChild(((/** @type {?} */ (this.elRef.nativeElement))).parentElement, this.elRef.nativeElement); + } + })); + } + } + /** + * @return {?} + */ + ngOnDestroy() { } +} +PermissionDirective.decorators = [ + { type: Directive, args: [{ + selector: '[abpPermission]', + },] } +]; +/** @nocollapse */ +PermissionDirective.ctorParameters = () => [ + { type: ElementRef, decorators: [{ type: Optional }] }, + { type: Renderer2 }, + { type: Store } +]; +PermissionDirective.propDecorators = { + condition: [{ type: Input, args: ['abpPermission',] }] +}; +if (false) { + /** @type {?} */ + PermissionDirective.prototype.condition; + /** + * @type {?} + * @private + */ + PermissionDirective.prototype.elRef; + /** + * @type {?} + * @private + */ + PermissionDirective.prototype.renderer; + /** + * @type {?} + * @private + */ + PermissionDirective.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy9wZXJtaXNzaW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFLNUMsTUFBTSxPQUFPLG1CQUFtQjs7Ozs7O0lBRzlCLFlBQWdDLEtBQWlCLEVBQVUsUUFBbUIsRUFBVSxLQUFZO1FBQXBFLFVBQUssR0FBTCxLQUFLLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBTztJQUFHLENBQUM7Ozs7SUFFeEcsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSztpQkFDUCxNQUFNLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUM1QixTQUFTOzs7O1lBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQ3ZCLENBQUMsbUJBQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQWUsQ0FBQyxDQUFDLGFBQWEsRUFDdkQsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQ3pCLENBQUM7aUJBQ0g7WUFDSCxDQUFDLEVBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQzs7OztJQUVELFdBQVcsS0FBVSxDQUFDOzs7WUF4QnZCLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2FBQzVCOzs7O1lBUG1CLFVBQVUsdUJBV2YsUUFBUTtZQVg2QyxTQUFTO1lBQ3BFLEtBQUs7Ozt3QkFRWCxLQUFLLFNBQUMsZUFBZTs7OztJQUF0Qix3Q0FBMEM7Ozs7O0lBRTlCLG9DQUFxQzs7Ozs7SUFBRSx1Q0FBMkI7Ozs7O0lBQUUsb0NBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgQ29uZmlnU3RhdGUgfSBmcm9tICcuLi9zdGF0ZXMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveSB9IGZyb20gJy4uL3V0aWxzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FicFBlcm1pc3Npb25dJyxcbn0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCdhYnBQZXJtaXNzaW9uJykgY29uZGl0aW9uOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIHN0b3JlOiBTdG9yZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5jb25kaXRpb24pIHtcbiAgICAgIHRoaXMuc3RvcmVcbiAgICAgICAgLnNlbGVjdChDb25maWdTdGF0ZS5nZXRHcmFudGVkUG9saWN5KHRoaXMuY29uZGl0aW9uKSlcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveSh0aGlzKSlcbiAgICAgICAgLnN1YnNjcmliZShpc0dyYW50ZWQgPT4ge1xuICAgICAgICAgIGlmICghaXNHcmFudGVkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKFxuICAgICAgICAgICAgICAodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50LFxuICAgICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7fVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/directives/visibility.directive.js b/npm/ng-packs/dist/core/esm2015/lib/directives/visibility.directive.js new file mode 100644 index 00000000000..87d5635fcf0 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/directives/visibility.directive.js @@ -0,0 +1,103 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Directive, Input, Optional, ElementRef, Renderer2 } from '@angular/core'; +import { Subject } from 'rxjs'; +import snq from 'snq'; +export class VisibilityDirective { + /** + * @param {?} elRef + * @param {?} renderer + */ + constructor(elRef, renderer) { + this.elRef = elRef; + this.renderer = renderer; + this.completed$ = new Subject(); + } + /** + * @return {?} + */ + ngAfterViewInit() { + /** @type {?} */ + const observer = new MutationObserver((/** + * @param {?} mutations + * @return {?} + */ + mutations => { + mutations.forEach((/** + * @param {?} mutation + * @return {?} + */ + mutation => { + if (!mutation.target) + return; + /** @type {?} */ + const htmlNodes = snq((/** + * @return {?} + */ + () => Array.from(mutation.target.childNodes).filter((/** + * @param {?} node + * @return {?} + */ + node => node instanceof HTMLElement))), []); + if (!htmlNodes.length) { + this.renderer.removeChild(this.elRef.nativeElement.parentElement, this.elRef.nativeElement); + this.disconnect(); + } + else { + setTimeout((/** + * @return {?} + */ + () => { + this.disconnect(); + }), 0); + } + })); + })); + observer.observe(this.focusedElement, { + childList: true, + }); + this.completed$.subscribe((/** + * @return {?} + */ + () => observer.disconnect())); + } + /** + * @return {?} + */ + disconnect() { + this.completed$.next(); + this.completed$.complete(); + } +} +VisibilityDirective.decorators = [ + { type: Directive, args: [{ + selector: '[abpVisibility]', + },] } +]; +/** @nocollapse */ +VisibilityDirective.ctorParameters = () => [ + { type: ElementRef, decorators: [{ type: Optional }] }, + { type: Renderer2 } +]; +VisibilityDirective.propDecorators = { + focusedElement: [{ type: Input, args: ['abpVisibility',] }] +}; +if (false) { + /** @type {?} */ + VisibilityDirective.prototype.focusedElement; + /** @type {?} */ + VisibilityDirective.prototype.completed$; + /** + * @type {?} + * @private + */ + VisibilityDirective.prototype.elRef; + /** + * @type {?} + * @private + */ + VisibilityDirective.prototype.renderer; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaWJpbGl0eS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy92aXNpYmlsaXR5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBS3RCLE1BQU0sT0FBTyxtQkFBbUI7Ozs7O0lBTTlCLFlBQWdDLEtBQWlCLEVBQVUsUUFBbUI7UUFBOUMsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFGOUUsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFFNkMsQ0FBQzs7OztJQUVsRixlQUFlOztjQUNQLFFBQVEsR0FBRyxJQUFJLGdCQUFnQjs7OztRQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2hELFNBQVMsQ0FBQyxPQUFPOzs7O1lBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTtvQkFBRSxPQUFPOztzQkFFdkIsU0FBUyxHQUFHLEdBQUc7OztnQkFDbkIsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU07Ozs7Z0JBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLFlBQVksV0FBVyxFQUFDLEdBQ3hGLEVBQUUsQ0FDSDtnQkFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtvQkFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQzVGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztpQkFDbkI7cUJBQU07b0JBQ0wsVUFBVTs7O29CQUFDLEdBQUcsRUFBRTt3QkFDZCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ3BCLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQztpQkFDUDtZQUNILENBQUMsRUFBQyxDQUFDO1FBQ0wsQ0FBQyxFQUFDO1FBRUYsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3BDLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUzs7O1FBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxFQUFDLENBQUM7SUFDekQsQ0FBQzs7OztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs7O1lBMUNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2FBQzVCOzs7O1lBTm9DLFVBQVUsdUJBYWhDLFFBQVE7WUFiMEIsU0FBUzs7OzZCQVF2RCxLQUFLLFNBQUMsZUFBZTs7OztJQUF0Qiw2Q0FDNEI7O0lBRTVCLHlDQUFvQzs7Ozs7SUFFeEIsb0NBQXFDOzs7OztJQUFFLHVDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9wdGlvbmFsLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCBzbnEgZnJvbSAnc25xJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FicFZpc2liaWxpdHldJyxcbn0pXG5leHBvcnQgY2xhc3MgVmlzaWJpbGl0eURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoJ2FicFZpc2liaWxpdHknKVxuICBmb2N1c2VkRWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgY29tcGxldGVkJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG11dGF0aW9ucyA9PiB7XG4gICAgICBtdXRhdGlvbnMuZm9yRWFjaChtdXRhdGlvbiA9PiB7XG4gICAgICAgIGlmICghbXV0YXRpb24udGFyZ2V0KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgaHRtbE5vZGVzID0gc25xKFxuICAgICAgICAgICgpID0+IEFycmF5LmZyb20obXV0YXRpb24udGFyZ2V0LmNoaWxkTm9kZXMpLmZpbHRlcihub2RlID0+IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCksXG4gICAgICAgICAgW10sXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFodG1sTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCwgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5mb2N1c2VkRWxlbWVudCwge1xuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb21wbGV0ZWQkLnN1YnNjcmliZSgoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCkpO1xuICB9XG5cbiAgZGlzY29ubmVjdCgpIHtcbiAgICB0aGlzLmNvbXBsZXRlZCQubmV4dCgpO1xuICAgIHRoaXMuY29tcGxldGVkJC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/enums/common.js b/npm/ng-packs/dist/core/esm2015/lib/enums/common.js new file mode 100644 index 00000000000..335239be34c --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/enums/common.js @@ -0,0 +1,12 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @enum {string} */ +const eLayoutType = { + account: 'account', + application: 'application', + empty: 'empty', +}; +export { eLayoutType }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL2VudW1zL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7SUFDRSxTQUFVLFNBQVM7SUFDbkIsYUFBYyxhQUFhO0lBQzNCLE9BQVEsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBlbnVtIGVMYXlvdXRUeXBlIHtcbiAgYWNjb3VudCA9ICdhY2NvdW50JyxcbiAgYXBwbGljYXRpb24gPSAnYXBwbGljYXRpb24nLFxuICBlbXB0eSA9ICdlbXB0eScsXG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/enums/index.js b/npm/ng-packs/dist/core/esm2015/lib/enums/index.js new file mode 100644 index 00000000000..f4377e4d9c4 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/enums/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export {} from './common'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvZW51bXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGVBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21tb24nO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/guards/auth.guard.js b/npm/ng-packs/dist/core/esm2015/lib/guards/auth.guard.js new file mode 100644 index 00000000000..62b4f7a2b32 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/guards/auth.guard.js @@ -0,0 +1,59 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { Navigate } from '@ngxs/router-plugin'; +import * as i0 from "@angular/core"; +import * as i1 from "angular-oauth2-oidc"; +import * as i2 from "@ngxs/store"; +export class AuthGuard { + /** + * @param {?} oauthService + * @param {?} store + */ + constructor(oauthService, store) { + this.oauthService = oauthService; + this.store = store; + } + /** + * @param {?} _ + * @param {?} state + * @return {?} + */ + canActivate(_, state) { + /** @type {?} */ + const hasValidAccessToken = this.oauthService.hasValidAccessToken(); + if (hasValidAccessToken) { + return hasValidAccessToken; + } + this.store.dispatch(new Navigate(['/account/login'], null, { state: { redirectUrl: state.url } })); + return false; + } +} +AuthGuard.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +AuthGuard.ctorParameters = () => [ + { type: OAuthService }, + { type: Store } +]; +/** @nocollapse */ AuthGuard.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function AuthGuard_Factory() { return new AuthGuard(i0.ɵɵinject(i1.OAuthService), i0.ɵɵinject(i2.Store)); }, token: AuthGuard, providedIn: "root" }); +if (false) { + /** + * @type {?} + * @private + */ + AuthGuard.prototype.oauthService; + /** + * @type {?} + * @private + */ + AuthGuard.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ndWFyZHMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFLL0MsTUFBTSxPQUFPLFNBQVM7Ozs7O0lBQ3BCLFlBQW9CLFlBQTBCLEVBQVUsS0FBWTtRQUFoRCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLFVBQUssR0FBTCxLQUFLLENBQU87SUFBRyxDQUFDOzs7Ozs7SUFDeEUsV0FBVyxDQUFDLENBQXlCLEVBQUUsS0FBMEI7O2NBQ3pELG1CQUFtQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUU7UUFDbkUsSUFBSSxtQkFBbUIsRUFBRTtZQUN2QixPQUFPLG1CQUFtQixDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFbkcsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7WUFkRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7WUFOUSxZQUFZO1lBRFosS0FBSzs7Ozs7Ozs7SUFTQSxpQ0FBa0M7Ozs7O0lBQUUsMEJBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGUsIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5hdmlnYXRlIH0gZnJvbSAnQG5neHMvcm91dGVyLXBsdWdpbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb2F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UsIHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuICBjYW5BY3RpdmF0ZShfOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBib29sZWFuIHwgVXJsVHJlZSB7XG4gICAgY29uc3QgaGFzVmFsaWRBY2Nlc3NUb2tlbiA9IHRoaXMub2F1dGhTZXJ2aWNlLmhhc1ZhbGlkQWNjZXNzVG9rZW4oKTtcbiAgICBpZiAoaGFzVmFsaWRBY2Nlc3NUb2tlbikge1xuICAgICAgcmV0dXJuIGhhc1ZhbGlkQWNjZXNzVG9rZW47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmF2aWdhdGUoWycvYWNjb3VudC9sb2dpbiddLCBudWxsLCB7IHN0YXRlOiB7IHJlZGlyZWN0VXJsOiBzdGF0ZS51cmwgfSB9KSk7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/guards/index.js b/npm/ng-packs/dist/core/esm2015/lib/guards/index.js new file mode 100644 index 00000000000..54f4b94a2f0 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/guards/index.js @@ -0,0 +1,7 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { AuthGuard } from './auth.guard'; +export { PermissionGuard } from './permission.guard'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvZ3VhcmRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSwwQkFBYyxjQUFjLENBQUM7QUFDN0IsZ0NBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dGguZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9wZXJtaXNzaW9uLmd1YXJkJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/guards/permission.guard.js b/npm/ng-packs/dist/core/esm2015/lib/guards/permission.guard.js new file mode 100644 index 00000000000..6193247499a --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/guards/permission.guard.js @@ -0,0 +1,44 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { ConfigState } from '../states'; +import * as i0 from "@angular/core"; +import * as i1 from "@ngxs/store"; +export class PermissionGuard { + /** + * @param {?} store + */ + constructor(store) { + this.store = store; + } + /** + * @param {?} __0 + * @return {?} + */ + canActivate({ data }) { + /** @type {?} */ + const resource = (/** @type {?} */ (data.requiredPolicy)); + return this.store.select(ConfigState.getGrantedPolicy(resource)); + } +} +PermissionGuard.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +PermissionGuard.ctorParameters = () => [ + { type: Store } +]; +/** @nocollapse */ PermissionGuard.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PermissionGuard_Factory() { return new PermissionGuard(i0.ɵɵinject(i1.Store)); }, token: PermissionGuard, providedIn: "root" }); +if (false) { + /** + * @type {?} + * @private + */ + PermissionGuard.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ndWFyZHMvcGVybWlzc2lvbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7OztBQUt4QyxNQUFNLE9BQU8sZUFBZTs7OztJQUMxQixZQUFvQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztJQUFHLENBQUM7Ozs7O0lBRXBDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBMEI7O2NBQ3BDLFFBQVEsR0FBRyxtQkFBQSxJQUFJLENBQUMsY0FBYyxFQUFVO1FBQzlDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQzs7O1lBVEYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBTlEsS0FBSzs7Ozs7Ozs7SUFRQSxnQ0FBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbmZpZ1N0YXRlIH0gZnJvbSAnLi4vc3RhdGVzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25HdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUpIHt9XG5cbiAgY2FuQWN0aXZhdGUoeyBkYXRhIH06IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNvdXJjZSA9IGRhdGEucmVxdWlyZWRQb2xpY3kgYXMgc3RyaW5nO1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTdGF0ZS5nZXRHcmFudGVkUG9saWN5KHJlc291cmNlKSk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/interceptors/api.interceptor.js b/npm/ng-packs/dist/core/esm2015/lib/interceptors/api.interceptor.js new file mode 100644 index 00000000000..4a1478c4b79 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/interceptors/api.interceptor.js @@ -0,0 +1,69 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { Store } from '@ngxs/store'; +import { SessionState } from '../states'; +import { LoaderStart, LoaderStop } from '../actions/loader.actions'; +import { finalize } from 'rxjs/operators'; +export class ApiInterceptor { + /** + * @param {?} oAuthService + * @param {?} store + */ + constructor(oAuthService, store) { + this.oAuthService = oAuthService; + this.store = store; + } + /** + * @param {?} request + * @param {?} next + * @return {?} + */ + intercept(request, next) { + this.store.dispatch(new LoaderStart(request)); + /** @type {?} */ + const headers = (/** @type {?} */ ({})); + /** @type {?} */ + const token = this.oAuthService.getAccessToken(); + if (!request.headers.has('Authorization') && token) { + headers['Authorization'] = `Bearer ${token}`; + } + /** @type {?} */ + const lang = this.store.selectSnapshot(SessionState.getLanguage); + if (!request.headers.has('Accept-Language') && lang) { + headers['Accept-Language'] = lang; + } + return next + .handle(request.clone({ + setHeaders: headers, + })) + .pipe(finalize((/** + * @return {?} + */ + () => this.store.dispatch(new LoaderStop(request))))); + } +} +ApiInterceptor.decorators = [ + { type: Injectable } +]; +/** @nocollapse */ +ApiInterceptor.ctorParameters = () => [ + { type: OAuthService }, + { type: Store } +]; +if (false) { + /** + * @type {?} + * @private + */ + ApiInterceptor.prototype.oAuthService; + /** + * @type {?} + * @private + */ + ApiInterceptor.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL2ludGVyY2VwdG9ycy9hcGkuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcxQyxNQUFNLE9BQU8sY0FBYzs7Ozs7SUFDekIsWUFBb0IsWUFBMEIsRUFBVSxLQUFZO1FBQWhELGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBTztJQUFHLENBQUM7Ozs7OztJQUV4RSxTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDOztjQUV4QyxPQUFPLEdBQUcsbUJBQUEsRUFBRSxFQUFPOztjQUVuQixLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUU7UUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEtBQUssRUFBRTtZQUNsRCxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsVUFBVSxLQUFLLEVBQUUsQ0FBQztTQUM5Qzs7Y0FFSyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztRQUNoRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJLEVBQUU7WUFDbkQsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ25DO1FBRUQsT0FBTyxJQUFJO2FBQ1IsTUFBTSxDQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDWixVQUFVLEVBQUUsT0FBTztTQUNwQixDQUFDLENBQ0g7YUFDQSxJQUFJLENBQUMsUUFBUTs7O1FBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQzs7O1lBMUJGLFVBQVU7Ozs7WUFORixZQUFZO1lBQ1osS0FBSzs7Ozs7OztJQU9BLHNDQUFrQzs7Ozs7SUFBRSwrQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwSW50ZXJjZXB0b3IsIEh0dHBIYW5kbGVyLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9BdXRoU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBTZXNzaW9uU3RhdGUgfSBmcm9tICcuLi9zdGF0ZXMnO1xuaW1wb3J0IHsgTG9hZGVyU3RhcnQsIExvYWRlclN0b3AgfSBmcm9tICcuLi9hY3Rpb25zL2xvYWRlci5hY3Rpb25zJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXBpSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9BdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlLCBwcml2YXRlIHN0b3JlOiBTdG9yZSkge31cblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBMb2FkZXJTdGFydChyZXF1ZXN0KSk7XG5cbiAgICBjb25zdCBoZWFkZXJzID0ge30gYXMgYW55O1xuXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLm9BdXRoU2VydmljZS5nZXRBY2Nlc3NUb2tlbigpO1xuICAgIGlmICghcmVxdWVzdC5oZWFkZXJzLmhhcygnQXV0aG9yaXphdGlvbicpICYmIHRva2VuKSB7XG4gICAgICBoZWFkZXJzWydBdXRob3JpemF0aW9uJ10gPSBgQmVhcmVyICR7dG9rZW59YDtcbiAgICB9XG5cbiAgICBjb25zdCBsYW5nID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTZXNzaW9uU3RhdGUuZ2V0TGFuZ3VhZ2UpO1xuICAgIGlmICghcmVxdWVzdC5oZWFkZXJzLmhhcygnQWNjZXB0LUxhbmd1YWdlJykgJiYgbGFuZykge1xuICAgICAgaGVhZGVyc1snQWNjZXB0LUxhbmd1YWdlJ10gPSBsYW5nO1xuICAgIH1cblxuICAgIHJldHVybiBuZXh0XG4gICAgICAuaGFuZGxlKFxuICAgICAgICByZXF1ZXN0LmNsb25lKHtcbiAgICAgICAgICBzZXRIZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IExvYWRlclN0b3AocmVxdWVzdCkpKSk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/interceptors/index.js b/npm/ng-packs/dist/core/esm2015/lib/interceptors/index.js new file mode 100644 index 00000000000..f1671a034e6 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/interceptors/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { ApiInterceptor } from './api.interceptor'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvaW50ZXJjZXB0b3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSwrQkFBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBpLmludGVyY2VwdG9yJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/models/application-configuration.js b/npm/ng-packs/dist/core/esm2015/lib/models/application-configuration.js new file mode 100644 index 00000000000..a1bc510083c --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/models/application-configuration.js @@ -0,0 +1,105 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var ApplicationConfiguration; +(function (ApplicationConfiguration) { + /** + * @record + */ + function Response() { } + ApplicationConfiguration.Response = Response; + if (false) { + /** @type {?} */ + Response.prototype.localization; + /** @type {?} */ + Response.prototype.auth; + /** @type {?} */ + Response.prototype.setting; + /** @type {?} */ + Response.prototype.currentUser; + /** @type {?} */ + Response.prototype.features; + } + /** + * @record + */ + function Localization() { } + ApplicationConfiguration.Localization = Localization; + if (false) { + /** @type {?} */ + Localization.prototype.values; + /** @type {?} */ + Localization.prototype.languages; + } + /** + * @record + */ + function LocalizationValue() { } + ApplicationConfiguration.LocalizationValue = LocalizationValue; + /** + * @record + */ + function Language() { } + ApplicationConfiguration.Language = Language; + if (false) { + /** @type {?} */ + Language.prototype.cultureName; + /** @type {?} */ + Language.prototype.uiCultureName; + /** @type {?} */ + Language.prototype.displayName; + /** @type {?} */ + Language.prototype.flagIcon; + } + /** + * @record + */ + function Auth() { } + ApplicationConfiguration.Auth = Auth; + if (false) { + /** @type {?} */ + Auth.prototype.policies; + /** @type {?} */ + Auth.prototype.grantedPolicies; + } + /** + * @record + */ + function Policy() { } + ApplicationConfiguration.Policy = Policy; + /** + * @record + */ + function Setting() { } + ApplicationConfiguration.Setting = Setting; + if (false) { + /** @type {?} */ + Setting.prototype.values; + } + /** + * @record + */ + function CurrentUser() { } + ApplicationConfiguration.CurrentUser = CurrentUser; + if (false) { + /** @type {?} */ + CurrentUser.prototype.isAuthenticated; + /** @type {?} */ + CurrentUser.prototype.id; + /** @type {?} */ + CurrentUser.prototype.tenantId; + /** @type {?} */ + CurrentUser.prototype.userName; + } + /** + * @record + */ + function Features() { } + ApplicationConfiguration.Features = Features; + if (false) { + /** @type {?} */ + Features.prototype.values; + } +})(ApplicationConfiguration || (ApplicationConfiguration = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvYXBwbGljYXRpb24tY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsTUFBTSxLQUFXLHdCQUF3QixDQWdEeEM7QUFoREQsV0FBaUIsd0JBQXdCOzs7O0lBQ3ZDLHVCQU1DOzs7O1FBTEMsZ0NBQTJCOztRQUMzQix3QkFBVzs7UUFDWCwyQkFBaUI7O1FBQ2pCLCtCQUF5Qjs7UUFDekIsNEJBQW1COzs7OztJQUdyQiwyQkFHQzs7OztRQUZDLDhCQUEwQjs7UUFDMUIsaUNBQXNCOzs7OztJQUd4QixnQ0FFQzs7Ozs7SUFFRCx1QkFLQzs7OztRQUpDLCtCQUFvQjs7UUFDcEIsaUNBQXNCOztRQUN0QiwrQkFBb0I7O1FBQ3BCLDRCQUFpQjs7Ozs7SUFHbkIsbUJBR0M7Ozs7UUFGQyx3QkFBaUI7O1FBQ2pCLCtCQUF3Qjs7Ozs7SUFHMUIscUJBRUM7Ozs7O0lBRUQsc0JBRUM7Ozs7UUFEQyx5QkFBOEQ7Ozs7O0lBR2hFLDBCQUtDOzs7O1FBSkMsc0NBQXlCOztRQUN6Qix5QkFBVzs7UUFDWCwrQkFBaUI7O1FBQ2pCLCtCQUFpQjs7Ozs7SUFHbkIsdUJBRUM7Ozs7UUFEQywwQkFBZ0I7O0FBRXBCLENBQUMsRUFoRGdCLHdCQUF3QixLQUF4Qix3QkFBd0IsUUFnRHhDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IG5hbWVzcGFjZSBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb24ge1xuICBleHBvcnQgaW50ZXJmYWNlIFJlc3BvbnNlIHtcbiAgICBsb2NhbGl6YXRpb246IExvY2FsaXphdGlvbjtcbiAgICBhdXRoOiBBdXRoO1xuICAgIHNldHRpbmc6IFNldHRpbmc7XG4gICAgY3VycmVudFVzZXI6IEN1cnJlbnRVc2VyO1xuICAgIGZlYXR1cmVzOiBGZWF0dXJlcztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTG9jYWxpemF0aW9uIHtcbiAgICB2YWx1ZXM6IExvY2FsaXphdGlvblZhbHVlO1xuICAgIGxhbmd1YWdlczogTGFuZ3VhZ2VbXTtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTG9jYWxpemF0aW9uVmFsdWUge1xuICAgIFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIExhbmd1YWdlIHtcbiAgICBjdWx0dXJlTmFtZTogc3RyaW5nO1xuICAgIHVpQ3VsdHVyZU5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIGZsYWdJY29uOiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEF1dGgge1xuICAgIHBvbGljaWVzOiBQb2xpY3k7XG4gICAgZ3JhbnRlZFBvbGljaWVzOiBQb2xpY3k7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFBvbGljeSB7XG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgU2V0dGluZyB7XG4gICAgdmFsdWVzOiB7IFtrZXk6IHN0cmluZ106ICdBYnAuTG9jYWxpemF0aW9uLkRlZmF1bHRMYW5ndWFnZScgfTtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQ3VycmVudFVzZXIge1xuICAgIGlzQXV0aGVudGljYXRlZDogYm9vbGVhbjtcbiAgICBpZDogc3RyaW5nO1xuICAgIHRlbmFudElkOiBzdHJpbmc7XG4gICAgdXNlck5hbWU6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZXMge1xuICAgIHZhbHVlczogU2V0dGluZztcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/models/common.js b/npm/ng-packs/dist/core/esm2015/lib/models/common.js new file mode 100644 index 00000000000..5f4bc9a50a4 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/models/common.js @@ -0,0 +1,89 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var ABP; +(function (ABP) { + /** + * @record + */ + function Root() { } + ABP.Root = Root; + if (false) { + /** @type {?} */ + Root.prototype.environment; + /** @type {?} */ + Root.prototype.requirements; + } + /** + * @record + * @template T + */ + function PagedItemsResponse() { } + ABP.PagedItemsResponse = PagedItemsResponse; + if (false) { + /** @type {?} */ + PagedItemsResponse.prototype.items; + } + /** + * @record + */ + function PageQueryParams() { } + ABP.PageQueryParams = PageQueryParams; + if (false) { + /** @type {?|undefined} */ + PageQueryParams.prototype.filter; + /** @type {?|undefined} */ + PageQueryParams.prototype.sorting; + /** @type {?|undefined} */ + PageQueryParams.prototype.skipCount; + /** @type {?|undefined} */ + PageQueryParams.prototype.maxResultCount; + } + /** + * @record + */ + function Route() { } + ABP.Route = Route; + if (false) { + /** @type {?|undefined} */ + Route.prototype.children; + /** @type {?|undefined} */ + Route.prototype.invisible; + /** @type {?|undefined} */ + Route.prototype.layout; + /** @type {?} */ + Route.prototype.name; + /** @type {?|undefined} */ + Route.prototype.order; + /** @type {?|undefined} */ + Route.prototype.parentName; + /** @type {?} */ + Route.prototype.path; + /** @type {?|undefined} */ + Route.prototype.requiredPolicy; + } + /** + * @record + */ + function FullRoute() { } + ABP.FullRoute = FullRoute; + if (false) { + /** @type {?|undefined} */ + FullRoute.prototype.url; + /** @type {?|undefined} */ + FullRoute.prototype.wrapper; + } + /** + * @record + */ + function BasicItem() { } + ABP.BasicItem = BasicItem; + if (false) { + /** @type {?} */ + BasicItem.prototype.id; + /** @type {?} */ + BasicItem.prototype.name; + } +})(ABP || (ABP = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL21vZGVscy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUdBLE1BQU0sS0FBVyxHQUFHLENBeUNuQjtBQXpDRCxXQUFpQixHQUFHOzs7O0lBQ2xCLG1CQUdDOzs7O1FBRkMsMkJBQXlDOztRQUN6Qyw0QkFBa0M7Ozs7OztJQU9wQyxpQ0FFQzs7OztRQURDLG1DQUFXOzs7OztJQUdiLDhCQUtDOzs7O1FBSkMsaUNBQWdCOztRQUNoQixrQ0FBaUI7O1FBQ2pCLG9DQUFtQjs7UUFDbkIseUNBQXdCOzs7OztJQUcxQixvQkFTQzs7OztRQVJDLHlCQUFtQjs7UUFDbkIsMEJBQW9COztRQUNwQix1QkFBcUI7O1FBQ3JCLHFCQUFhOztRQUNiLHNCQUFlOztRQUNmLDJCQUFvQjs7UUFDcEIscUJBQWE7O1FBQ2IsK0JBQXdCOzs7OztJQUcxQix3QkFHQzs7OztRQUZDLHdCQUFhOztRQUNiLDRCQUFrQjs7Ozs7SUFHcEIsd0JBR0M7Ozs7UUFGQyx1QkFBVzs7UUFDWCx5QkFBYTs7QUFFakIsQ0FBQyxFQXpDZ0IsR0FBRyxLQUFILEdBQUcsUUF5Q25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgZUxheW91dFR5cGUgfSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgQUJQIHtcbiAgZXhwb3J0IGludGVyZmFjZSBSb290IHtcbiAgICBlbnZpcm9ubWVudDogUGFydGlhbDxDb25maWcuRW52aXJvbm1lbnQ+O1xuICAgIHJlcXVpcmVtZW50czogQ29uZmlnLlJlcXVpcmVtZW50cztcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFBhZ2VkUmVzcG9uc2U8VD4gPSB7XG4gICAgdG90YWxDb3VudDogbnVtYmVyO1xuICB9ICYgUGFnZWRJdGVtc1Jlc3BvbnNlPFQ+O1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUGFnZWRJdGVtc1Jlc3BvbnNlPFQ+IHtcbiAgICBpdGVtczogVFtdO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBQYWdlUXVlcnlQYXJhbXMge1xuICAgIGZpbHRlcj86IHN0cmluZztcbiAgICBzb3J0aW5nPzogc3RyaW5nO1xuICAgIHNraXBDb3VudD86IG51bWJlcjtcbiAgICBtYXhSZXN1bHRDb3VudD86IG51bWJlcjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUm91dGUge1xuICAgIGNoaWxkcmVuPzogUm91dGVbXTtcbiAgICBpbnZpc2libGU/OiBib29sZWFuO1xuICAgIGxheW91dD86IGVMYXlvdXRUeXBlO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBvcmRlcj86IG51bWJlcjtcbiAgICBwYXJlbnROYW1lPzogc3RyaW5nO1xuICAgIHBhdGg6IHN0cmluZztcbiAgICByZXF1aXJlZFBvbGljeT86IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgRnVsbFJvdXRlIGV4dGVuZHMgUm91dGUge1xuICAgIHVybD86IHN0cmluZztcbiAgICB3cmFwcGVyPzogYm9vbGVhbjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQmFzaWNJdGVtIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/models/config.js b/npm/ng-packs/dist/core/esm2015/lib/models/config.js new file mode 100644 index 00000000000..d79d225037c --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/models/config.js @@ -0,0 +1,40 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var Config; +(function (Config) { + /** + * @record + */ + function State() { } + Config.State = State; + /** + * @record + */ + function Environment() { } + Config.Environment = Environment; + if (false) { + /** @type {?} */ + Environment.prototype.production; + /** @type {?} */ + Environment.prototype.oAuthConfig; + /** @type {?} */ + Environment.prototype.apis; + } + /** + * @record + */ + function Apis() { } + Config.Apis = Apis; + /** + * @record + */ + function Requirements() { } + Config.Requirements = Requirements; + if (false) { + /** @type {?} */ + Requirements.prototype.layouts; + } +})(Config || (Config = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL21vZGVscy9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUdBLE1BQU0sS0FBVyxNQUFNLENBa0J0QjtBQWxCRCxXQUFpQixNQUFNOzs7O0lBQ3JCLG9CQUVDOzs7OztJQUVELDBCQUlDOzs7O1FBSEMsaUNBQW9COztRQUNwQixrQ0FBd0I7O1FBQ3hCLDJCQUFXOzs7OztJQUdiLG1CQUVDOzs7OztJQUVELDJCQUVDOzs7O1FBREMsK0JBQXFCOztBQUV6QixDQUFDLEVBbEJnQixNQUFNLEtBQU4sTUFBTSxRQWtCdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoQ29uZmlnIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ29uZmlnIHtcbiAgZXhwb3J0IGludGVyZmFjZSBTdGF0ZSB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudCB7XG4gICAgcHJvZHVjdGlvbjogYm9vbGVhbjtcbiAgICBvQXV0aENvbmZpZzogQXV0aENvbmZpZztcbiAgICBhcGlzOiBBcGlzO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBBcGlzIHtcbiAgICBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBSZXF1aXJlbWVudHMge1xuICAgIGxheW91dHM6IFR5cGU8YW55PltdO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/models/index.js b/npm/ng-packs/dist/core/esm2015/lib/models/index.js new file mode 100644 index 00000000000..e5a05808191 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/models/index.js @@ -0,0 +1,11 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export {} from './application-configuration'; +export {} from './common'; +export {} from './config'; +export { Rest } from './rest'; +export {} from './session'; +export {} from './profile'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxlQUFjLDZCQUE2QixDQUFDO0FBQzVDLGVBQWMsVUFBVSxDQUFDO0FBQ3pCLGVBQWMsVUFBVSxDQUFDO0FBQ3pCLHFCQUFjLFFBQVEsQ0FBQztBQUN2QixlQUFjLFdBQVcsQ0FBQztBQUMxQixlQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBwbGljYXRpb24tY29uZmlndXJhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbic7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXNzaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvZmlsZSc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/models/profile.js b/npm/ng-packs/dist/core/esm2015/lib/models/profile.js new file mode 100644 index 00000000000..63711ddf03c --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/models/profile.js @@ -0,0 +1,45 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var Profile; +(function (Profile) { + /** + * @record + */ + function State() { } + Profile.State = State; + if (false) { + /** @type {?} */ + State.prototype.profile; + } + /** + * @record + */ + function Response() { } + Profile.Response = Response; + if (false) { + /** @type {?} */ + Response.prototype.userName; + /** @type {?} */ + Response.prototype.email; + /** @type {?} */ + Response.prototype.name; + /** @type {?} */ + Response.prototype.surname; + /** @type {?} */ + Response.prototype.phoneNumber; + } + /** + * @record + */ + function ChangePasswordRequest() { } + Profile.ChangePasswordRequest = ChangePasswordRequest; + if (false) { + /** @type {?} */ + ChangePasswordRequest.prototype.currentPassword; + /** @type {?} */ + ChangePasswordRequest.prototype.newPassword; + } +})(Profile || (Profile = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvcHJvZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsTUFBTSxLQUFXLE9BQU8sQ0FpQnZCO0FBakJELFdBQWlCLE9BQU87Ozs7SUFDdEIsb0JBRUM7Ozs7UUFEQyx3QkFBa0I7Ozs7O0lBR3BCLHVCQU1DOzs7O1FBTEMsNEJBQWlCOztRQUNqQix5QkFBYzs7UUFDZCx3QkFBYTs7UUFDYiwyQkFBZ0I7O1FBQ2hCLCtCQUFvQjs7Ozs7SUFHdEIsb0NBR0M7Ozs7UUFGQyxnREFBd0I7O1FBQ3hCLDRDQUFvQjs7QUFFeEIsQ0FBQyxFQWpCZ0IsT0FBTyxLQUFQLE9BQU8sUUFpQnZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IG5hbWVzcGFjZSBQcm9maWxlIHtcbiAgZXhwb3J0IGludGVyZmFjZSBTdGF0ZSB7XG4gICAgcHJvZmlsZTogUmVzcG9uc2U7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFJlc3BvbnNlIHtcbiAgICB1c2VyTmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHN1cm5hbWU6IHN0cmluZztcbiAgICBwaG9uZU51bWJlcjogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VQYXNzd29yZFJlcXVlc3Qge1xuICAgIGN1cnJlbnRQYXNzd29yZDogc3RyaW5nO1xuICAgIG5ld1Bhc3N3b3JkOiBzdHJpbmc7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/models/rest.js b/npm/ng-packs/dist/core/esm2015/lib/models/rest.js new file mode 100644 index 00000000000..5ae10ff1107 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/models/rest.js @@ -0,0 +1,43 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var Rest; +(function (Rest) { + /** + * @record + */ + function Config() { } + Rest.Config = Config; + if (false) { + /** @type {?|undefined} */ + Config.prototype.throwErr; + /** @type {?|undefined} */ + Config.prototype.observe; + } + /** + * @record + * @template T + */ + function Request() { } + Rest.Request = Request; + if (false) { + /** @type {?|undefined} */ + Request.prototype.body; + /** @type {?|undefined} */ + Request.prototype.headers; + /** @type {?} */ + Request.prototype.method; + /** @type {?|undefined} */ + Request.prototype.params; + /** @type {?|undefined} */ + Request.prototype.reportProgress; + /** @type {?|undefined} */ + Request.prototype.responseType; + /** @type {?} */ + Request.prototype.url; + /** @type {?|undefined} */ + Request.prototype.withCredentials; + } +})(Rest || (Rest = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvcmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsTUFBTSxLQUFXLElBQUksQ0FxQ3BCO0FBckNELFdBQWlCLElBQUk7Ozs7SUFDbkIscUJBR0M7Ozs7UUFGQywwQkFBbUI7O1FBQ25CLHlCQUFrQjs7Ozs7O0lBZ0JwQixzQkFpQkM7Ozs7UUFoQkMsdUJBQVM7O1FBQ1QsMEJBSU07O1FBQ04seUJBQWU7O1FBQ2YseUJBSU07O1FBQ04saUNBQXlCOztRQUN6QiwrQkFBNEI7O1FBQzVCLHNCQUFZOztRQUNaLGtDQUEwQjs7QUFFOUIsQ0FBQyxFQXJDZ0IsSUFBSSxLQUFKLElBQUksUUFxQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgUmVzdCB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnIHtcbiAgICB0aHJvd0Vycj86IGJvb2xlYW47XG4gICAgb2JzZXJ2ZT86IE9ic2VydmU7XG4gIH1cblxuICBleHBvcnQgY29uc3QgZW51bSBPYnNlcnZlIHtcbiAgICBCb2R5ID0gJ2JvZHknLFxuICAgIEV2ZW50cyA9ICdldmVudHMnLFxuICAgIFJlc3BvbnNlID0gJ3Jlc3BvbnNlJyxcbiAgfVxuXG4gIGV4cG9ydCBjb25zdCBlbnVtIFJlc3BvbnNlVHlwZSB7XG4gICAgQXJyYXlCdWZmZXIgPSAnYXJyYXlidWZmZXInLFxuICAgIEJsb2IgPSAnYmxvYicsXG4gICAgSlNPTiA9ICdqc29uJyxcbiAgICBUZXh0ID0gJ3RleHQnLFxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0PFQ+IHtcbiAgICBib2R5PzogVDtcbiAgICBoZWFkZXJzPzpcbiAgICAgIHwgSHR0cEhlYWRlcnNcbiAgICAgIHwge1xuICAgICAgICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgICB9O1xuICAgIG1ldGhvZDogc3RyaW5nO1xuICAgIHBhcmFtcz86XG4gICAgICB8IEh0dHBQYXJhbXNcbiAgICAgIHwge1xuICAgICAgICAgIFtwYXJhbTogc3RyaW5nXTogYW55O1xuICAgICAgICB9O1xuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICByZXNwb25zZVR5cGU/OiBSZXNwb25zZVR5cGU7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/models/session.js b/npm/ng-packs/dist/core/esm2015/lib/models/session.js new file mode 100644 index 00000000000..900196e920e --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/models/session.js @@ -0,0 +1,17 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var Session; +(function (Session) { + /** + * @record + */ + function State() { } + Session.State = State; + if (false) { + /** @type {?} */ + State.prototype.language; + } +})(Session || (Session = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvc2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsTUFBTSxLQUFXLE9BQU8sQ0FJdkI7QUFKRCxXQUFpQixPQUFPOzs7O0lBQ3RCLG9CQUVDOzs7O1FBREMseUJBQWlCOztBQUVyQixDQUFDLEVBSmdCLE9BQU8sS0FBUCxPQUFPLFFBSXZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IG5hbWVzcGFjZSBTZXNzaW9uIHtcbiAgZXhwb3J0IGludGVyZmFjZSBTdGF0ZSB7XG4gICAgbGFuZ3VhZ2U6IHN0cmluZztcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/pipes/localization.pipe.js b/npm/ng-packs/dist/core/esm2015/lib/pipes/localization.pipe.js new file mode 100644 index 00000000000..ee0673bbab1 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/pipes/localization.pipe.js @@ -0,0 +1,68 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Pipe } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { ConfigState } from '../states'; +import { takeUntilDestroy } from '../utils'; +import { distinctUntilChanged } from 'rxjs/operators'; +export class LocalizationPipe { + /** + * @param {?} store + */ + constructor(store) { + this.store = store; + this.initialized = false; + } + /** + * @param {?} value + * @param {...?} interpolateParams + * @return {?} + */ + transform(value, ...interpolateParams) { + if (!this.initialized) { + this.initialized = true; + this.store + .select(ConfigState.getCopy(value, ...interpolateParams.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + (acc, val) => (Array.isArray(val) ? [...acc, ...val] : [...acc, val])), []))) + .pipe(takeUntilDestroy(this), distinctUntilChanged()) + .subscribe((/** + * @param {?} copy + * @return {?} + */ + copy => (this.value = copy))); + } + return this.value; + } + /** + * @return {?} + */ + ngOnDestroy() { } +} +LocalizationPipe.decorators = [ + { type: Pipe, args: [{ + name: 'abpLocalization', + pure: false, + },] } +]; +/** @nocollapse */ +LocalizationPipe.ctorParameters = () => [ + { type: Store } +]; +if (false) { + /** @type {?} */ + LocalizationPipe.prototype.initialized; + /** @type {?} */ + LocalizationPipe.prototype.value; + /** + * @type {?} + * @private + */ + LocalizationPipe.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnBpcGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvcGlwZXMvbG9jYWxpemF0aW9uLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNdEQsTUFBTSxPQUFPLGdCQUFnQjs7OztJQUszQixZQUFvQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztRQUpoQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztJQUlNLENBQUM7Ozs7OztJQUVwQyxTQUFTLENBQUMsS0FBYSxFQUFFLEdBQUcsaUJBQTJCO1FBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBRXhCLElBQUksQ0FBQyxLQUFLO2lCQUNQLE1BQU0sQ0FDTCxXQUFXLENBQUMsT0FBTyxDQUNqQixLQUFLLEVBQ0wsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNOzs7OztZQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FDdkcsQ0FDRjtpQkFDQSxJQUFJLENBQ0gsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQ3RCLG9CQUFvQixFQUFFLENBQ3ZCO2lCQUNBLFNBQVM7Ozs7WUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBQyxDQUFDO1NBQzNDO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7Ozs7SUFFRCxXQUFXLEtBQUksQ0FBQzs7O1lBaENqQixJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsSUFBSSxFQUFFLEtBQUs7YUFDWjs7OztZQVJRLEtBQUs7Ozs7SUFVWix1Q0FBNkI7O0lBRTdCLGlDQUFjOzs7OztJQUVGLGlDQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBDb25maWdTdGF0ZSB9IGZyb20gJy4uL3N0YXRlcyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2FicExvY2FsaXphdGlvbicsXG4gIHB1cmU6IGZhbHNlLCAvLyByZXF1aXJlZCB0byB1cGRhdGUgdGhlIHZhbHVlXG59KVxuZXhwb3J0IGNsYXNzIExvY2FsaXphdGlvblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3kge1xuICBpbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHZhbHVlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUpIHt9XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIC4uLmludGVycG9sYXRlUGFyYW1zOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgICAgdGhpcy5zdG9yZVxuICAgICAgICAuc2VsZWN0KFxuICAgICAgICAgIENvbmZpZ1N0YXRlLmdldENvcHkoXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIC4uLmludGVycG9sYXRlUGFyYW1zLnJlZHVjZSgoYWNjLCB2YWwpID0+IChBcnJheS5pc0FycmF5KHZhbCkgPyBbLi4uYWNjLCAuLi52YWxdIDogWy4uLmFjYywgdmFsXSksIFtdKSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3kodGhpcyksXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKGNvcHkgPT4gKHRoaXMudmFsdWUgPSBjb3B5KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHt9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/plugins/config.plugin.js b/npm/ng-packs/dist/core/esm2015/lib/plugins/config.plugin.js new file mode 100644 index 00000000000..e44693e4d11 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/plugins/config.plugin.js @@ -0,0 +1,163 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable, Inject, InjectionToken } from '@angular/core'; +import { setValue, actionMatcher, InitState, UpdateState } from '@ngxs/store'; +import { Router } from '@angular/router'; +import snq from 'snq'; +import { organizeRoutes } from '../utils/route-utils'; +/** @type {?} */ +export const NGXS_CONFIG_PLUGIN_OPTIONS = new InjectionToken('NGXS_CONFIG_PLUGIN_OPTIONS'); +export class ConfigPlugin { + /** + * @param {?} options + * @param {?} router + */ + constructor(options, router) { + this.options = options; + this.router = router; + this.initialized = false; + } + /** + * @param {?} state + * @param {?} event + * @param {?} next + * @return {?} + */ + handle(state, event, next) { + /** @type {?} */ + const matches = actionMatcher(event); + /** @type {?} */ + const isInitAction = matches(InitState) || matches(UpdateState); + // const layouts = snq(() => this.options.requirements.layouts.filter(layout => layout instanceof Type), []); + if (isInitAction && !this.initialized) { + let { routes, wrappers } = transformRoutes(this.router.config); + routes = organizeRoutes(routes, wrappers); + state = setValue(state, 'ConfigState', Object.assign({}, (state.ConfigState && Object.assign({}, state.ConfigState)), this.options, { routes })); + this.initialized = true; + } + return next(state, event); + } +} +ConfigPlugin.decorators = [ + { type: Injectable } +]; +/** @nocollapse */ +ConfigPlugin.ctorParameters = () => [ + { type: undefined, decorators: [{ type: Inject, args: [NGXS_CONFIG_PLUGIN_OPTIONS,] }] }, + { type: Router } +]; +if (false) { + /** + * @type {?} + * @private + */ + ConfigPlugin.prototype.initialized; + /** + * @type {?} + * @private + */ + ConfigPlugin.prototype.options; + /** + * @type {?} + * @private + */ + ConfigPlugin.prototype.router; +} +/** + * @param {?=} routes + * @param {?=} wrappers + * @return {?} + */ +function transformRoutes(routes = [], wrappers = []) { + /** @type {?} */ + const abpRoutes = routes + .filter((/** + * @param {?} route + * @return {?} + */ + route => { + return snq((/** + * @return {?} + */ + () => route.data.routes.find((/** + * @param {?} r + * @return {?} + */ + r => r.path === route.path))), false); + })) + .reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + (acc, val) => [...acc, ...val.data.routes]), []); + wrappers = abpRoutes.filter((/** + * @param {?} ar + * @return {?} + */ + ar => ar.wrapper)); + /** @type {?} */ + const transformed = (/** @type {?} */ ([])); + routes + .filter((/** + * @param {?} route + * @return {?} + */ + route => route.component || route.loadChildren)) + .forEach((/** + * @param {?} route + * @return {?} + */ + route => { + /** @type {?} */ + const abpPackage = abpRoutes.find((/** + * @param {?} abp + * @return {?} + */ + abp => abp.path.toLowerCase() === route.path.toLowerCase())); + const { length } = transformed; + if (abpPackage) { + transformed.push(abpPackage); + } + if (transformed.length === length) { + transformed.push((/** @type {?} */ ({ + path: route.path, + name: snq((/** + * @return {?} + */ + () => route.data.routes.name), route.path), + children: route.data.routes.children || [], + }))); + } + })); + return { routes: setUrls(transformed), wrappers }; +} +/** + * @param {?} routes + * @param {?=} parentUrl + * @return {?} + */ +function setUrls(routes, parentUrl) { + if (parentUrl) { + // this if block using for only recursive call + return routes.map((/** + * @param {?} route + * @return {?} + */ + route => (Object.assign({}, route, { url: `${parentUrl}/${route.path}` }, (route.children && + route.children.length && { + children: setUrls(route.children, `${parentUrl}/${route.path}`), + }))))); + } + return routes.map((/** + * @param {?} route + * @return {?} + */ + route => (Object.assign({}, route, { url: `/${route.path}` }, (route.children && + route.children.length && { + children: setUrls(route.children, `/${route.path}`), + }))))); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9wbHVnaW5zL2NvbmZpZy5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQWMsUUFBUSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFvQixNQUFNLGFBQWEsQ0FBQztBQUM1RyxPQUFPLEVBQUUsTUFBTSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQ3RCLE9BQU8sRUFBNkIsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRWpGLE1BQU0sT0FBTywwQkFBMEIsR0FBRyxJQUFJLGNBQWMsQ0FBQyw0QkFBNEIsQ0FBQztBQUcxRixNQUFNLE9BQU8sWUFBWTs7Ozs7SUFHdkIsWUFBd0QsT0FBaUIsRUFBVSxNQUFjO1FBQXpDLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRnpGLGdCQUFXLEdBQVksS0FBSyxDQUFDO0lBRStELENBQUM7Ozs7Ozs7SUFFckcsTUFBTSxDQUFDLEtBQVUsRUFBRSxLQUFVLEVBQUUsSUFBc0I7O2NBQzdDLE9BQU8sR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDOztjQUM5QixZQUFZLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFFL0QsNkdBQTZHO1FBQzdHLElBQUksWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDakMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQzlELE1BQU0sR0FBRyxjQUFjLENBQUMs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QVMsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQzlCLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDaEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUk7WUFDdkIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEdBQUcsU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNoRSxDQUFDLEVBQ0osRUFBQyxDQUFDO0tBQ0w7SUFFRCxPQUFPLE1BQU0sQ0FBQyxHQUFHOzs7O0lBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxtQkFDdEIsS0FBSyxJQUNSLEdBQUcsRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFDbEIsQ0FBQyxLQUFLLENBQUMsUUFBUTtRQUNoQixLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSTtRQUN2QixRQUFRLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7S0FDcEQsQ0FBQyxFQUNKLEVBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIEluamVjdGlvblRva2VuLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hzUGx1Z2luLCBzZXRWYWx1ZSwgYWN0aW9uTWF0Y2hlciwgSW5pdFN0YXRlLCBVcGRhdGVTdGF0ZSwgTmd4c05leHRQbHVnaW5GbiB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IFJvdXRlciwgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFCUCB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgc25xIGZyb20gJ3NucSc7XG5pbXBvcnQgeyBzZXRDaGlsZFJvdXRlLCBzb3J0Um91dGVzLCBvcmdhbml6ZVJvdXRlcyB9IGZyb20gJy4uL3V0aWxzL3JvdXRlLXV0aWxzJztcblxuZXhwb3J0IGNvbnN0IE5HWFNfQ09ORklHX1BMVUdJTl9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuKCdOR1hTX0NPTkZJR19QTFVHSU5fT1BUSU9OUycpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29uZmlnUGx1Z2luIGltcGxlbWVudHMgTmd4c1BsdWdpbiB7XG4gIHByaXZhdGUgaW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KE5HWFNfQ09ORklHX1BMVUdJTl9PUFRJT05TKSBwcml2YXRlIG9wdGlvbnM6IEFCUC5Sb290LCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7fVxuXG4gIGhhbmRsZShzdGF0ZTogYW55LCBldmVudDogYW55LCBuZXh0OiBOZ3hzTmV4dFBsdWdpbkZuKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IGFjdGlvbk1hdGNoZXIoZXZlbnQpO1xuICAgIGNvbnN0IGlzSW5pdEFjdGlvbiA9IG1hdGNoZXMoSW5pdFN0YXRlKSB8fCBtYXRjaGVzKFVwZGF0ZVN0YXRlKTtcblxuICAgIC8vIGNvbnN0IGxheW91dHMgPSBzbnEoKCkgPT4gdGhpcy5vcHRpb25zLnJlcXVpcmVtZW50cy5sYXlvdXRzLmZpbHRlcihsYXlvdXQgPT4gbGF5b3V0IGluc3RhbmNlb2YgVHlwZSksIFtdKTtcbiAgICBpZiAoaXNJbml0QWN0aW9uICYmICF0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICBsZXQgeyByb3V0ZXMsIHdyYXBwZXJzIH0gPSB0cmFuc2Zvcm1Sb3V0ZXModGhpcy5yb3V0ZXIuY29uZmlnKTtcbiAgICAgIHJvdXRlcyA9IG9yZ2FuaXplUm91dGVzKHJvdXRlcywgd3JhcHBlcnMpO1xuXG4gICAgICBzdGF0ZSA9IHNldFZhbHVlKHN0YXRlLCAnQ29uZmlnU3RhdGUnLCB7XG4gICAgICAgIC4uLihzdGF0ZS5Db25maWdTdGF0ZSAmJiB7IC4uLnN0YXRlLkNvbmZpZ1N0YXRlIH0pLFxuICAgICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICAgIHJvdXRlcyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dChzdGF0ZSwgZXZlbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVJvdXRlcyhyb3V0ZXM6IFJvdXRlcyA9IFtdLCB3cmFwcGVyczogQUJQLkZ1bGxSb3V0ZVtdID0gW10pOiBhbnkge1xuICBjb25zdCBhYnBSb3V0ZXM6IEFCUC5GdWxsUm91dGVbXSA9IHJvdXRlc1xuICAgIC5maWx0ZXIocm91dGUgPT4ge1xuICAgICAgcmV0dXJuIHNucSgoKSA9PiByb3V0ZS5kYXRhLnJvdXRlcy5maW5kKHIgPT4gci5wYXRoID09PSByb3V0ZS5wYXRoKSwgZmFsc2UpO1xuICAgIH0pXG4gICAgLnJlZHVjZSgoYWNjLCB2YWwpID0+IFsuLi5hY2MsIC4uLnZhbC5kYXRhLnJvdXRlc10sIFtdKTtcblxuICB3cmFwcGVycyA9IGFicFJvdXRlcy5maWx0ZXIoYXIgPT4gYXIud3JhcHBlcik7XG4gIGNvbnN0IHRyYW5zZm9ybWVkID0gW10gYXMgQUJQLkZ1bGxSb3V0ZVtdO1xuICByb3V0ZXNcbiAgICAuZmlsdGVyKHJvdXRlID0+IHJvdXRlLmNvbXBvbmVudCB8fCByb3V0ZS5sb2FkQ2hpbGRyZW4pXG4gICAgLmZvckVhY2gocm91dGUgPT4ge1xuICAgICAgY29uc3QgYWJwUGFja2FnZSA9IGFicFJvdXRlcy5maW5kKGFicCA9PiBhYnAucGF0aC50b0xvd2VyQ2FzZSgpID09PSByb3V0ZS5wYXRoLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgY29uc3QgeyBsZW5ndGggfSA9IHRyYW5zZm9ybWVkO1xuXG4gICAgICBpZiAoYWJwUGFja2FnZSkge1xuICAgICAgICB0cmFuc2Zvcm1lZC5wdXNoKGFicFBhY2thZ2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHJhbnNmb3JtZWQubGVuZ3RoID09PSBsZW5ndGgpIHtcbiAgICAgICAgdHJhbnNmb3JtZWQucHVzaCh7XG4gICAgICAgICAgcGF0aDogcm91dGUucGF0aCxcbiAgICAgICAgICBuYW1lOiBzbnEoKCkgPT4gcm91dGUuZGF0YS5yb3V0ZXMubmFtZSwgcm91dGUucGF0aCksXG4gICAgICAgICAgY2hpbGRyZW46IHJvdXRlLmRhdGEucm91dGVzLmNoaWxkcmVuIHx8IFtdLFxuICAgICAgICB9IGFzIEFCUC5GdWxsUm91dGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIHJldHVybiB7IHJvdXRlczogc2V0VXJscyh0cmFuc2Zvcm1lZCksIHdyYXBwZXJzIH07XG59XG5cbmZ1bmN0aW9uIHNldFVybHMocm91dGVzOiBBQlAuRnVsbFJvdXRlW10sIHBhcmVudFVybD86IHN0cmluZyk6IEFCUC5GdWxsUm91dGVbXSB7XG4gIGlmIChwYXJlbnRVcmwpIHtcbiAgICAvLyB0aGlzIGlmIGJsb2NrIHVzaW5nIGZvciBvbmx5IHJlY3Vyc2l2ZSBjYWxsXG5cbiAgICByZXR1cm4gcm91dGVzLm1hcChyb3V0ZSA9PiAoe1xuICAgICAgLi4ucm91dGUsXG4gICAgICB1cmw6IGAke3BhcmVudFVybH0vJHtyb3V0ZS5wYXRofWAsXG4gICAgICAuLi4ocm91dGUuY2hpbGRyZW4gJiZcbiAgICAgICAgcm91dGUuY2hpbGRyZW4ubGVuZ3RoICYmIHtcbiAgICAgICAgICBjaGlsZHJlbjogc2V0VXJscyhyb3V0ZS5jaGlsZHJlbiwgYCR7cGFyZW50VXJsfS8ke3JvdXRlLnBhdGh9YCksXG4gICAgICAgIH0pLFxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiByb3V0ZXMubWFwKHJvdXRlID0+ICh7XG4gICAgLi4ucm91dGUsXG4gICAgdXJsOiBgLyR7cm91dGUucGF0aH1gLFxuICAgIC4uLihyb3V0ZS5jaGlsZHJlbiAmJlxuICAgICAgcm91dGUuY2hpbGRyZW4ubGVuZ3RoICYmIHtcbiAgICAgICAgY2hpbGRyZW46IHNldFVybHMocm91dGUuY2hpbGRyZW4sIGAvJHtyb3V0ZS5wYXRofWApLFxuICAgICAgfSksXG4gIH0pKTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/plugins/index.js b/npm/ng-packs/dist/core/esm2015/lib/plugins/index.js new file mode 100644 index 00000000000..451fc91aad1 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/plugins/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { NGXS_CONFIG_PLUGIN_OPTIONS, ConfigPlugin } from './config.plugin'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvcGx1Z2lucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEseURBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbmZpZy5wbHVnaW4nO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/services/application-configuration.service.js b/npm/ng-packs/dist/core/esm2015/lib/services/application-configuration.service.js new file mode 100644 index 00000000000..94bbf80f66c --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/services/application-configuration.service.js @@ -0,0 +1,45 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { RestService } from './rest.service'; +import * as i0 from "@angular/core"; +import * as i1 from "./rest.service"; +export class ApplicationConfigurationService { + /** + * @param {?} rest + */ + constructor(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + getConfiguration() { + /** @type {?} */ + const request = { + method: 'GET', + url: '/api/abp/application-configuration', + }; + return this.rest.request(request); + } +} +ApplicationConfigurationService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +ApplicationConfigurationService.ctorParameters = () => [ + { type: RestService } +]; +/** @nocollapse */ ApplicationConfigurationService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ApplicationConfigurationService_Factory() { return new ApplicationConfigurationService(i0.ɵɵinject(i1.RestService)); }, token: ApplicationConfigurationService, providedIn: "root" }); +if (false) { + /** + * @type {?} + * @private + */ + ApplicationConfigurationService.prototype.rest; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2FwcGxpY2F0aW9uLWNvbmZpZ3VyYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUs3QyxNQUFNLE9BQU8sK0JBQStCOzs7O0lBQzFDLFlBQW9CLElBQWlCO1FBQWpCLFNBQUksR0FBSixJQUFJLENBQWE7SUFBRyxDQUFDOzs7O0lBRXpDLGdCQUFnQjs7Y0FDUixPQUFPLEdBQXVCO1lBQ2xDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxFQUFFLG9DQUFvQztTQUMxQztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQTBDLE9BQU8sQ0FBQyxDQUFDO0lBQzdFLENBQUM7OztZQWJGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OztZQUpRLFdBQVc7Ozs7Ozs7O0lBTU4sK0NBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db25maWd1cmF0aW9uLCBSZXN0IH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXN0LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25Db25maWd1cmF0aW9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzdDogUmVzdFNlcnZpY2UpIHt9XG5cbiAgZ2V0Q29uZmlndXJhdGlvbigpOiBPYnNlcnZhYmxlPEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbi5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlc3QuUmVxdWVzdDxudWxsPiA9IHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB1cmw6ICcvYXBpL2FicC9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9uJyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PG51bGwsIEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbi5SZXNwb25zZT4ocmVxdWVzdCk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/services/config.service.js b/npm/ng-packs/dist/core/esm2015/lib/services/config.service.js new file mode 100644 index 00000000000..c3ff83f9c58 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/services/config.service.js @@ -0,0 +1,62 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { ConfigState } from '../states'; +import * as i0 from "@angular/core"; +import * as i1 from "@ngxs/store"; +export class ConfigService { + /** + * @param {?} store + */ + constructor(store) { + this.store = store; + } + /** + * @return {?} + */ + getAll() { + return this.store.selectSnapshot(ConfigState.getAll); + } + /** + * @param {?} key + * @return {?} + */ + getOne(key) { + return this.store.selectSnapshot(ConfigState.getOne(key)); + } + /** + * @param {?} keys + * @return {?} + */ + getDeep(keys) { + return this.store.selectSnapshot(ConfigState.getDeep(keys)); + } + /** + * @param {?} key + * @return {?} + */ + getSetting(key) { + return this.store.selectSnapshot(ConfigState.getSetting(key)); + } +} +ConfigService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +ConfigService.ctorParameters = () => [ + { type: Store } +]; +/** @nocollapse */ ConfigService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ConfigService_Factory() { return new ConfigService(i0.ɵɵinject(i1.Store)); }, token: ConfigService, providedIn: "root" }); +if (false) { + /** + * @type {?} + * @private + */ + ConfigService.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFLeEMsTUFBTSxPQUFPLGFBQWE7Ozs7SUFDeEIsWUFBb0IsS0FBWTtRQUFaLFVBQUssR0FBTCxLQUFLLENBQU87SUFBRyxDQUFDOzs7O0lBRXBDLE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2RCxDQUFDOzs7OztJQUVELE1BQU0sQ0FBQyxHQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7Ozs7O0lBRUQsT0FBTyxDQUFDLElBQXVCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7Ozs7O0lBRUQsVUFBVSxDQUFDLEdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7O1lBcEJGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OztZQUxRLEtBQUs7Ozs7Ozs7O0lBT0EsOEJBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBDb25maWdTdGF0ZSB9IGZyb20gJy4uL3N0YXRlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDb25maWdTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUpIHt9XG5cbiAgZ2V0QWxsKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KENvbmZpZ1N0YXRlLmdldEFsbCk7XG4gIH1cblxuICBnZXRPbmUoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChDb25maWdTdGF0ZS5nZXRPbmUoa2V5KSk7XG4gIH1cblxuICBnZXREZWVwKGtleXM6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoQ29uZmlnU3RhdGUuZ2V0RGVlcChrZXlzKSk7XG4gIH1cblxuICBnZXRTZXR0aW5nKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoQ29uZmlnU3RhdGUuZ2V0U2V0dGluZyhrZXkpKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/services/index.js b/npm/ng-packs/dist/core/esm2015/lib/services/index.js new file mode 100644 index 00000000000..b7113ca26f0 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/services/index.js @@ -0,0 +1,11 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { ApplicationConfigurationService } from './application-configuration.service'; +export { ConfigService } from './config.service'; +export { LazyLoadService } from './lazy-load.service'; +export { LocalizationService } from './localization.service'; +export { ProfileService } from './profile.service'; +export { RestService } from './rest.service'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGdEQUFjLHFDQUFxQyxDQUFDO0FBQ3BELDhCQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGdDQUFjLHFCQUFxQixDQUFDO0FBQ3BDLG9DQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLCtCQUFjLG1CQUFtQixDQUFDO0FBQ2xDLDRCQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xhenktbG9hZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWxpemF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9maWxlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXN0LnNlcnZpY2UnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/services/lazy-load.service.js b/npm/ng-packs/dist/core/esm2015/lib/services/lazy-load.service.js new file mode 100644 index 00000000000..16eb66f6a4b --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/services/lazy-load.service.js @@ -0,0 +1,73 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { ReplaySubject } from 'rxjs'; +import { uuid } from '../utils'; +import * as i0 from "@angular/core"; +export class LazyLoadService { + constructor() { + this.loadedLibraries = {}; + } + /** + * @param {?} url + * @param {?} type + * @param {?=} content + * @param {?=} targetQuery + * @param {?=} position + * @return {?} + */ + load(url, type, content = '', targetQuery = 'body', position = 'afterend') { + if (!url && !content) + return; + /** @type {?} */ + const key = url ? url.slice(url.lastIndexOf('/') + 1) : uuid(); + if (this.loadedLibraries[key]) { + return this.loadedLibraries[key].asObservable(); + } + this.loadedLibraries[key] = new ReplaySubject(); + /** @type {?} */ + let library; + if (type === 'script') { + library = document.createElement('script'); + library.type = 'text/javascript'; + if (url) { + ((/** @type {?} */ (library))).src = url; + } + ((/** @type {?} */ (library))).text = content; + } + else if (url) { + library = document.createElement('link'); + library.type = 'text/css'; + ((/** @type {?} */ (library))).rel = 'stylesheet'; + if (url) { + ((/** @type {?} */ (library))).href = url; + } + } + else { + library = document.createElement('style'); + ((/** @type {?} */ (library))).textContent = content; + } + library.onload = (/** + * @return {?} + */ + () => { + this.loadedLibraries[key].next(); + this.loadedLibraries[key].complete(); + }); + document.querySelector(targetQuery).insertAdjacentElement(position, library); + return this.loadedLibraries[key].asObservable(); + } +} +LazyLoadService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ LazyLoadService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function LazyLoadService_Factory() { return new LazyLoadService(); }, token: LazyLoadService, providedIn: "root" }); +if (false) { + /** @type {?} */ + LazyLoadService.prototype.loadedLibraries; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvbGF6eS1sb2FkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUtoQyxNQUFNLE9BQU8sZUFBZTtJQUg1QjtRQUlFLG9CQUFlLEdBQTJDLEVBQUUsQ0FBQztLQWlEOUQ7Ozs7Ozs7OztJQS9DQyxJQUFJLENBQ0YsR0FBVyxFQUNYLElBQXdCLEVBQ3hCLFVBQWtCLEVBQUUsRUFDcEIsY0FBc0IsTUFBTSxFQUM1QixXQUEyQixVQUFVO1FBRXJDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTzs7Y0FDdkIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7UUFFOUQsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzdCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNqRDtRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQzs7WUFFNUMsT0FBTztRQUNYLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUNyQixPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzQyxPQUFPLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1lBQ2pDLElBQUksR0FBRyxFQUFFO2dCQUNQLENBQUMsbUJBQUEsT0FBTyxFQUFxQixDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQzthQUMxQztZQUVELENBQUMsbUJBQUEsT0FBTyxFQUFxQixDQUFDLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztTQUMvQzthQUFNLElBQUksR0FBRyxFQUFFO1lBQ2QsT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekMsT0FBTyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7WUFDMUIsQ0FBQyxtQkFBQSxPQUFPLEVBQW1CLENBQUMsQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDO1lBRWhELElBQUksR0FBRyxFQUFFO2dCQUNQLENBQUMsbUJBQUEsT0FBTyxFQUFtQixDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQzthQUN6QztTQUNGO2FBQU07WUFDTCxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQyxDQUFDLG1CQUFBLE9BQU8sRUFBb0IsQ0FBQyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7U0FDckQ7UUFFRCxPQUFPLENBQUMsTUFBTTs7O1FBQUcsR0FBRyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxDQUFDLENBQUEsQ0FBQztRQUVGLFFBQVEsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTdFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsRCxDQUFDOzs7WUFwREYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7OztJQUVDLDBDQUE2RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdXVpZCB9IGZyb20gJy4uL3V0aWxzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExhenlMb2FkU2VydmljZSB7XG4gIGxvYWRlZExpYnJhcmllczogeyBbdXJsOiBzdHJpbmddOiBSZXBsYXlTdWJqZWN0PHZvaWQ+IH0gPSB7fTtcblxuICBsb2FkKFxuICAgIHVybDogc3RyaW5nLFxuICAgIHR5cGU6ICdzY3JpcHQnIHwgJ3N0eWxlJyxcbiAgICBjb250ZW50OiBzdHJpbmcgPSAnJyxcbiAgICB0YXJnZXRRdWVyeTogc3RyaW5nID0gJ2JvZHknLFxuICAgIHBvc2l0aW9uOiBJbnNlcnRQb3NpdGlvbiA9ICdhZnRlcmVuZCcsXG4gICk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGlmICghdXJsICYmICFjb250ZW50KSByZXR1cm47XG4gICAgY29uc3Qga2V5ID0gdXJsID8gdXJsLnNsaWNlKHVybC5sYXN0SW5kZXhPZignLycpICsgMSkgOiB1dWlkKCk7XG5cbiAgICBpZiAodGhpcy5sb2FkZWRMaWJyYXJpZXNba2V5XSkge1xuICAgICAgcmV0dXJuIHRoaXMubG9hZGVkTGlicmFyaWVzW2tleV0uYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2FkZWRMaWJyYXJpZXNba2V5XSA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XG5cbiAgICBsZXQgbGlicmFyeTtcbiAgICBpZiAodHlwZSA9PT0gJ3NjcmlwdCcpIHtcbiAgICAgIGxpYnJhcnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgIGxpYnJhcnkudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgICAgaWYgKHVybCkge1xuICAgICAgICAobGlicmFyeSBhcyBIVE1MU2NyaXB0RWxlbWVudCkuc3JjID0gdXJsO1xuICAgICAgfVxuXG4gICAgICAobGlicmFyeSBhcyBIVE1MU2NyaXB0RWxlbWVudCkudGV4dCA9IGNvbnRlbnQ7XG4gICAgfSBlbHNlIGlmICh1cmwpIHtcbiAgICAgIGxpYnJhcnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XG4gICAgICBsaWJyYXJ5LnR5cGUgPSAndGV4dC9jc3MnO1xuICAgICAgKGxpYnJhcnkgYXMgSFRNTExpbmtFbGVtZW50KS5yZWwgPSAnc3R5bGVzaGVldCc7XG5cbiAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgKGxpYnJhcnkgYXMgSFRNTExpbmtFbGVtZW50KS5ocmVmID0gdXJsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsaWJyYXJ5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgIChsaWJyYXJ5IGFzIEhUTUxTdHlsZUVsZW1lbnQpLnRleHRDb250ZW50ID0gY29udGVudDtcbiAgICB9XG5cbiAgICBsaWJyYXJ5Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIHRoaXMubG9hZGVkTGlicmFyaWVzW2tleV0ubmV4dCgpO1xuICAgICAgdGhpcy5sb2FkZWRMaWJyYXJpZXNba2V5XS5jb21wbGV0ZSgpO1xuICAgIH07XG5cbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldFF1ZXJ5KS5pbnNlcnRBZGphY2VudEVsZW1lbnQocG9zaXRpb24sIGxpYnJhcnkpO1xuXG4gICAgcmV0dXJuIHRoaXMubG9hZGVkTGlicmFyaWVzW2tleV0uYXNPYnNlcnZhYmxlKCk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/services/localization.service.js b/npm/ng-packs/dist/core/esm2015/lib/services/localization.service.js new file mode 100644 index 00000000000..ec0c7969f21 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/services/localization.service.js @@ -0,0 +1,49 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { ConfigState } from '../states'; +import * as i0 from "@angular/core"; +import * as i1 from "@ngxs/store"; +export class LocalizationService { + /** + * @param {?} store + */ + constructor(store) { + this.store = store; + } + /** + * @param {?} keys + * @param {...?} interpolateParams + * @return {?} + */ + get(keys, ...interpolateParams) { + return this.store.select(ConfigState.getCopy(keys, ...interpolateParams)); + } + /** + * @param {?} keys + * @param {...?} interpolateParams + * @return {?} + */ + instant(keys, ...interpolateParams) { + return this.store.selectSnapshot(ConfigState.getCopy(keys, ...interpolateParams)); + } +} +LocalizationService.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] } +]; +/** @nocollapse */ +LocalizationService.ctorParameters = () => [ + { type: Store } +]; +/** @nocollapse */ LocalizationService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function LocalizationService_Factory() { return new LocalizationService(i0.ɵɵinject(i1.Store)); }, token: LocalizationService, providedIn: "root" }); +if (false) { + /** + * @type {?} + * @private + */ + LocalizationService.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFJeEMsTUFBTSxPQUFPLG1CQUFtQjs7OztJQUM5QixZQUFvQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztJQUFHLENBQUM7Ozs7OztJQUVwQyxHQUFHLENBQUMsSUFBWSxFQUFFLEdBQUcsaUJBQTJCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQzs7Ozs7O0lBRUQsT0FBTyxDQUFDLElBQVksRUFBRSxHQUFHLGlCQUEyQjtRQUNsRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7OztZQVZGLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7Ozs7WUFKekIsS0FBSzs7Ozs7Ozs7SUFNQSxvQ0FBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IENvbmZpZ1N0YXRlIH0gZnJvbSAnLi4vc3RhdGVzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBMb2NhbGl6YXRpb25TZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUpIHt9XG5cbiAgZ2V0KGtleXM6IHN0cmluZywgLi4uaW50ZXJwb2xhdGVQYXJhbXM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU3RhdGUuZ2V0Q29weShrZXlzLCAuLi5pbnRlcnBvbGF0ZVBhcmFtcykpO1xuICB9XG5cbiAgaW5zdGFudChrZXlzOiBzdHJpbmcsIC4uLmludGVycG9sYXRlUGFyYW1zOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoQ29uZmlnU3RhdGUuZ2V0Q29weShrZXlzLCAuLi5pbnRlcnBvbGF0ZVBhcmFtcykpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/services/profile.service.js b/npm/ng-packs/dist/core/esm2015/lib/services/profile.service.js new file mode 100644 index 00000000000..73ac0ccfc6c --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/services/profile.service.js @@ -0,0 +1,71 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { RestService } from './rest.service'; +import * as i0 from "@angular/core"; +import * as i1 from "./rest.service"; +export class ProfileService { + /** + * @param {?} rest + */ + constructor(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + get() { + /** @type {?} */ + const request = { + method: 'GET', + url: '/api/identity/my-profile', + }; + return this.rest.request(request); + } + /** + * @param {?} body + * @return {?} + */ + update(body) { + /** @type {?} */ + const request = { + method: 'PUT', + url: '/api/identity/my-profile', + body, + }; + return this.rest.request(request); + } + /** + * @param {?} body + * @return {?} + */ + changePassword(body) { + /** @type {?} */ + const request = { + method: 'POST', + url: '/api/identity/my-profile/changePassword', + body, + }; + return this.rest.request(request); + } +} +ProfileService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +ProfileService.ctorParameters = () => [ + { type: RestService } +]; +/** @nocollapse */ ProfileService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ProfileService_Factory() { return new ProfileService(i0.ɵɵinject(i1.RestService)); }, token: ProfileService, providedIn: "root" }); +if (false) { + /** + * @type {?} + * @private + */ + ProfileService.prototype.rest; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3Byb2ZpbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU03QyxNQUFNLE9BQU8sY0FBYzs7OztJQUN6QixZQUFvQixJQUFpQjtRQUFqQixTQUFJLEdBQUosSUFBSSxDQUFhO0lBQUcsQ0FBQzs7OztJQUV6QyxHQUFHOztjQUNLLE9BQU8sR0FBdUI7WUFDbEMsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEVBQUUsMEJBQTBCO1NBQ2hDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBeUIsT0FBTyxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7Ozs7SUFFRCxNQUFNLENBQUMsSUFBc0I7O2NBQ3JCLE9BQU8sR0FBbUM7WUFDOUMsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEVBQUUsMEJBQTBCO1lBQy9CLElBQUk7U0FDTDtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQXFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hFLENBQUM7Ozs7O0lBRUQsY0FBYyxDQUFDLElBQW1DOztjQUMxQyxPQUFPLEdBQWdEO1lBQzNELE1BQU0sRUFBRSxNQUFNO1lBQ2QsR0FBRyxFQUFFLHlDQUF5QztZQUM5QyxJQUFJO1NBQ0w7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFzQyxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDOzs7WUFqQ0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBTFEsV0FBVzs7Ozs7Ozs7SUFPTiw4QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4vcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2ZpbGUsIFJlc3QgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZmlsZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3Q6IFJlc3RTZXJ2aWNlKSB7fVxuXG4gIGdldCgpOiBPYnNlcnZhYmxlPFByb2ZpbGUuUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8bnVsbD4gPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgdXJsOiAnL2FwaS9pZGVudGl0eS9teS1wcm9maWxlJyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PG51bGwsIFByb2ZpbGUuUmVzcG9uc2U+KHJlcXVlc3QpO1xuICB9XG5cbiAgdXBkYXRlKGJvZHk6IFByb2ZpbGUuUmVzcG9uc2UpOiBPYnNlcnZhYmxlPFByb2ZpbGUuUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8UHJvZmlsZS5SZXNwb25zZT4gPSB7XG4gICAgICBtZXRob2Q6ICdQVVQnLFxuICAgICAgdXJsOiAnL2FwaS9pZGVudGl0eS9teS1wcm9maWxlJyxcbiAgICAgIGJvZHksXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDxQcm9maWxlLlJlc3BvbnNlLCBQcm9maWxlLlJlc3BvbnNlPihyZXF1ZXN0KTtcbiAgfVxuXG4gIGNoYW5nZVBhc3N3b3JkKGJvZHk6IFByb2ZpbGUuQ2hhbmdlUGFzc3dvcmRSZXF1ZXN0KTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgY29uc3QgcmVxdWVzdDogUmVzdC5SZXF1ZXN0PFByb2ZpbGUuQ2hhbmdlUGFzc3dvcmRSZXF1ZXN0PiA9IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgdXJsOiAnL2FwaS9pZGVudGl0eS9teS1wcm9maWxlL2NoYW5nZVBhc3N3b3JkJyxcbiAgICAgIGJvZHksXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDxQcm9maWxlLkNoYW5nZVBhc3N3b3JkUmVxdWVzdCwgbnVsbD4ocmVxdWVzdCk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/services/rest.service.js b/npm/ng-packs/dist/core/esm2015/lib/services/rest.service.js new file mode 100644 index 00000000000..bce18259b20 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/services/rest.service.js @@ -0,0 +1,81 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { NEVER, throwError } from 'rxjs'; +import { catchError, take } from 'rxjs/operators'; +import { ConfigState } from '../states'; +import { RestOccurError } from '../actions'; +import * as i0 from "@angular/core"; +import * as i1 from "@angular/common/http"; +import * as i2 from "@ngxs/store"; +export class RestService { + /** + * @param {?} http + * @param {?} store + */ + constructor(http, store) { + this.http = http; + this.store = store; + } + /** + * @param {?} err + * @return {?} + */ + handleError(err) { + this.store.dispatch(new RestOccurError(err)); + console.error(err); + return NEVER; + } + /** + * @template T, R + * @param {?} request + * @param {?=} config + * @param {?=} api + * @return {?} + */ + request(request, config = {}, api) { + const { observe = "body" /* Body */, throwErr } = config; + /** @type {?} */ + const url = api || this.store.selectSnapshot(ConfigState.getApiUrl()) + request.url; + const { method } = request, options = tslib_1.__rest(request, ["method"]); + return this.http.request(method, url, (/** @type {?} */ (Object.assign({ observe }, options)))).pipe(observe === "body" /* Body */ ? take(1) : null, catchError((/** + * @param {?} err + * @return {?} + */ + err => { + if (throwErr) { + return throwError(err); + } + return this.handleError(err); + }))); + } +} +RestService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +RestService.ctorParameters = () => [ + { type: HttpClient }, + { type: Store } +]; +/** @nocollapse */ RestService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function RestService_Factory() { return new RestService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.Store)); }, token: RestService, providedIn: "root" }); +if (false) { + /** + * @type {?} + * @private + */ + RestService.prototype.http; + /** + * @type {?} + * @private + */ + RestService.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3Jlc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLEtBQUssRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7QUFLNUMsTUFBTSxPQUFPLFdBQVc7Ozs7O0lBQ3RCLFlBQW9CLElBQWdCLEVBQVUsS0FBWTtRQUF0QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBTztJQUFHLENBQUM7Ozs7O0lBRTlELFdBQVcsQ0FBQyxHQUFRO1FBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Ozs7Ozs7O0lBRUQsT0FBTyxDQUFPLE9BQXlDLEVBQUUsU0FBc0IsRUFBRSxFQUFFLEdBQVk7Y0FDdkYsRUFBRSxPQUFPLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU07O2NBQ2xELEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUc7Y0FDN0UsRUFBRSxNQUFNLEtBQWlCLE9BQU8sRUFBdEIsNkNBQVU7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBSSxNQUFNLEVBQUUsR0FBRyxFQUFFLG1DQUFFLE9BQU8sSUFBSyxPQUFPLEdBQVMsQ0FBQyxDQUFDLElBQUksQ0FDM0UsT0FBTyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQzlDLFVBQVU7Ozs7UUFBQyxHQUFHLENBQUMsRUFBRTtZQUNmLElBQUksUUFBUSxFQUFFO2dCQUNaLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3hCO1lBRUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLENBQUMsRUFBQyxDQUNILENBQUM7SUFDSixDQUFDOzs7WUExQkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBWFEsVUFBVTtZQUVWLEtBQUs7Ozs7Ozs7O0lBV0EsMkJBQXdCOzs7OztJQUFFLDRCQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBORVZFUiwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJlc3QgfSBmcm9tICcuLi9tb2RlbHMvcmVzdCc7XG5pbXBvcnQgeyBDb25maWdTdGF0ZSB9IGZyb20gJy4uL3N0YXRlcyc7XG5pbXBvcnQgeyBSZXN0T2NjdXJFcnJvciB9IGZyb20gJy4uL2FjdGlvbnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUmVzdFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIGhhbmRsZUVycm9yKGVycjogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSZXN0T2NjdXJFcnJvcihlcnIpKTtcbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgcmV0dXJuIE5FVkVSO1xuICB9XG5cbiAgcmVxdWVzdDxULCBSPihyZXF1ZXN0OiBIdHRwUmVxdWVzdDxUPiB8IFJlc3QuUmVxdWVzdDxUPiwgY29uZmlnOiBSZXN0LkNvbmZpZyA9IHt9LCBhcGk/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFI+IHtcbiAgICBjb25zdCB7IG9ic2VydmUgPSBSZXN0Lk9ic2VydmUuQm9keSwgdGhyb3dFcnIgfSA9IGNvbmZpZztcbiAgICBjb25zdCB1cmwgPSBhcGkgfHwgdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChDb25maWdTdGF0ZS5nZXRBcGlVcmwoKSkgKyByZXF1ZXN0LnVybDtcbiAgICBjb25zdCB7IG1ldGhvZCwgLi4ub3B0aW9ucyB9ID0gcmVxdWVzdDtcbiAgICByZXR1cm4gdGhpcy5odHRwLnJlcXVlc3Q8VD4obWV0aG9kLCB1cmwsIHsgb2JzZXJ2ZSwgLi4ub3B0aW9ucyB9IGFzIGFueSkucGlwZShcbiAgICAgIG9ic2VydmUgPT09IFJlc3QuT2JzZXJ2ZS5Cb2R5ID8gdGFrZSgxKSA6IG51bGwsXG4gICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgIGlmICh0aHJvd0Vycikge1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcihlcnIpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/states/config.state.js b/npm/ng-packs/dist/core/esm2015/lib/states/config.state.js new file mode 100644 index 00000000000..6c72fb2e31c --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/states/config.state.js @@ -0,0 +1,332 @@ +import * as tslib_1 from "tslib"; +var ConfigState_1; +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { State, Selector, createSelector, Action, Store } from '@ngxs/store'; +import { ConfigGetAppConfiguration, PatchRouteByName } from '../actions/config.actions'; +import { ApplicationConfigurationService } from '../services/application-configuration.service'; +import { tap, switchMap } from 'rxjs/operators'; +import snq from 'snq'; +import { SessionSetLanguage } from '../actions'; +import { SessionState } from './session.state'; +import { of } from 'rxjs'; +import { organizeRoutes } from '../utils/route-utils'; +let ConfigState = ConfigState_1 = class ConfigState { + /** + * @param {?} appConfigurationService + * @param {?} store + */ + constructor(appConfigurationService, store) { + this.appConfigurationService = appConfigurationService; + this.store = store; + } + /** + * @param {?} state + * @return {?} + */ + static getAll(state) { + return state; + } + /** + * @param {?} key + * @return {?} + */ + static getOne(key) { + /** @type {?} */ + const selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return state[key]; + })); + return selector; + } + /** + * @param {?} keys + * @return {?} + */ + static getDeep(keys) { + if (typeof keys === 'string') { + keys = keys.split('.'); + } + if (!Array.isArray(keys)) { + throw new Error('The argument must be a dot string or an string array.'); + } + /** @type {?} */ + const selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return ((/** @type {?} */ (keys))).reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + (acc, val) => { + if (acc) { + return acc[val]; + } + return undefined; + }), state); + })); + return selector; + } + /** + * @param {?=} key + * @return {?} + */ + static getApiUrl(key) { + /** @type {?} */ + const selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return state.environment.apis[key || 'default'].url; + })); + return selector; + } + /** + * @param {?} key + * @return {?} + */ + static getSetting(key) { + /** @type {?} */ + const selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return snq((/** + * @return {?} + */ + () => state.setting.values[key])); + })); + return selector; + } + /** + * @param {?=} condition + * @return {?} + */ + static getGrantedPolicy(condition = '') { + /** @type {?} */ + const keys = condition + .replace(/\(|\)|\!|\s/g, '') + .split(/\|\||&&/) + .filter((/** + * @param {?} key + * @return {?} + */ + key => key)); + /** @type {?} */ + const selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + if (!keys.length) + return true; + /** @type {?} */ + const getPolicy = (/** + * @param {?} key + * @return {?} + */ + key => snq((/** + * @return {?} + */ + () => state.auth.grantedPolicies[key]), false)); + if (keys.length > 1) { + keys.forEach((/** + * @param {?} key + * @return {?} + */ + key => { + /** @type {?} */ + const value = getPolicy(key); + condition = condition.replace(key, value); + })); + // tslint:disable-next-line: no-eval + return eval(`!!${condition}`); + } + return getPolicy(condition); + })); + return selector; + } + /** + * @param {?} key + * @param {...?} interpolateParams + * @return {?} + */ + static getCopy(key, ...interpolateParams) { + if (!key) + key = ''; + /** @type {?} */ + const keys = (/** @type {?} */ (key.split('::'))); + /** @type {?} */ + const selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + const { defaultResourceName } = state.environment.localization; + if (keys[0] === '') { + if (!defaultResourceName) { + throw new Error(`Please check your environment. May you forget set defaultResourceName? + Here is the example: + { production: false, + localization: { + defaultResourceName: 'MyProjectName' + } + }`); + } + keys[0] = snq((/** + * @return {?} + */ + () => defaultResourceName)); + } + /** @type {?} */ + let copy = keys.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + (acc, val) => { + if (acc) { + return acc[val]; + } + return undefined; + }), state.localization.values); + if (copy && interpolateParams && interpolateParams.length) { + interpolateParams.forEach((/** + * @param {?} param + * @param {?} index + * @return {?} + */ + (param, index) => { + copy = copy.replace(`'{${index}}'`, param); + })); + } + return copy || key; + })); + return selector; + } + /** + * @param {?} __0 + * @return {?} + */ + addData({ patchState, dispatch }) { + return this.appConfigurationService.getConfiguration().pipe(tap((/** + * @param {?} configuration + * @return {?} + */ + configuration => patchState(Object.assign({}, configuration)))), switchMap((/** + * @param {?} configuration + * @return {?} + */ + configuration => this.store.selectSnapshot(SessionState.getLanguage) + ? of(null) + : dispatch(new SessionSetLanguage(snq((/** + * @return {?} + */ + () => configuration.setting.values['Abp.Localization.DefaultLanguage']))))))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + patchRoute({ patchState, getState }, { name, newValue }) { + /** @type {?} */ + let routes = getState().routes; + /** @type {?} */ + const index = routes.findIndex((/** + * @param {?} route + * @return {?} + */ + route => route.name === name)); + routes = patchRouteDeep(routes, name, newValue); + return patchState({ + routes, + }); + } +}; +tslib_1.__decorate([ + Action(ConfigGetAppConfiguration), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", void 0) +], ConfigState.prototype, "addData", null); +tslib_1.__decorate([ + Action(PatchRouteByName), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, PatchRouteByName]), + tslib_1.__metadata("design:returntype", void 0) +], ConfigState.prototype, "patchRoute", null); +tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", void 0) +], ConfigState, "getAll", null); +ConfigState = ConfigState_1 = tslib_1.__decorate([ + State({ + name: 'ConfigState', + defaults: (/** @type {?} */ ({})), + }), + tslib_1.__metadata("design:paramtypes", [ApplicationConfigurationService, Store]) +], ConfigState); +export { ConfigState }; +if (false) { + /** + * @type {?} + * @private + */ + ConfigState.prototype.appConfigurationService; + /** + * @type {?} + * @private + */ + ConfigState.prototype.store; +} +/** + * @param {?} routes + * @param {?} name + * @param {?} newValue + * @param {?=} parentUrl + * @return {?} + */ +function patchRouteDeep(routes, name, newValue, parentUrl = null) { + routes = routes.map((/** + * @param {?} route + * @return {?} + */ + route => { + if (route.name === name) { + if (newValue.path) { + newValue.url = `${parentUrl}/${newValue.path}`; + } + if (newValue.children && newValue.children.length) { + newValue.children = newValue.children.map((/** + * @param {?} child + * @return {?} + */ + child => (Object.assign({}, child, { url: `${parentUrl}/${route.path}/${child.path}` })))); + } + return Object.assign({}, route, newValue); + } + else if (route.children && route.children.length) { + route.children = patchRouteDeep(route.children, name, newValue, (parentUrl || '/') + route.path); + } + return route; + })); + if (parentUrl) { + // recursive block + return routes; + } + return organizeRoutes(routes); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnN0YXRlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL3N0YXRlcy9jb25maWcuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQTZCLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0lBTXBFLFdBQVcseUJBQVgsV0FBVzs7Ozs7SUEwSXRCLFlBQW9CLHVCQUF3RCxFQUFVLEtBQVk7UUFBOUUsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFpQztRQUFVLFVBQUssR0FBTCxLQUFLLENBQU87SUFBRyxDQUFDOzs7OztJQXhJdEcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFtQjtRQUMvQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Ozs7O0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFXOztjQUNqQixRQUFRLEdBQUcsY0FBYyxDQUM3QixDQUFDLGFBQVcsQ0FBQzs7OztRQUNiLFVBQVMsS0FBbUI7WUFDMUIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENB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QUssQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEc7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsRUFBQyxDQUFDO0lBRUgsSUFBSSxTQUFTLEVBQUU7UUFDYixrQkFBa0I7UUFDbEIsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUVELE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGF0ZSwgU2VsZWN0b3IsIGNyZWF0ZVNlbGVjdG9yLCBBY3Rpb24sIFN0YXRlQ29udGV4dCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBDb25maWcsIEFCUCB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBDb25maWdHZXRBcHBDb25maWd1cmF0aW9uLCBQYXRjaFJvdXRlQnlOYW1lIH0gZnJvbSAnLi4vYWN0aW9ucy9jb25maWcuYWN0aW9ucyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwbGljYXRpb24tY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IHRhcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHNucSBmcm9tICdzbnEnO1xuaW1wb3J0IHsgU2Vzc2lvblNldExhbmd1YWdlIH0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBTZXNzaW9uU3RhdGUgfSBmcm9tICcuL3Nlc3Npb24uc3RhdGUnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNldENoaWxkUm91dGUsIHNvcnRSb3V0ZXMsIG9yZ2FuaXplUm91dGVzIH0gZnJvbSAnLi4vdXRpbHMvcm91dGUtdXRpbHMnO1xuXG5AU3RhdGU8Q29uZmlnLlN0YXRlPih7XG4gIG5hbWU6ICdDb25maWdTdGF0ZScsXG4gIGRlZmF1bHRzOiB7fSBhcyBDb25maWcuU3RhdGUsXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpZ1N0YXRlIHtcbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldEFsbChzdGF0ZTogQ29uZmlnLlN0YXRlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgc3RhdGljIGdldE9uZShrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICBbQ29uZmlnU3RhdGVdLFxuICAgICAgZnVuY3Rpb24oc3RhdGU6IENvbmZpZy5TdGF0ZSkge1xuICAgICAgICByZXR1cm4gc3RhdGVba2V5XTtcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXREZWVwKGtleXM6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiBrZXlzID09PSAnc3RyaW5nJykge1xuICAgICAga2V5cyA9IGtleXMuc3BsaXQoJy4nKTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBkb3Qgc3RyaW5nIG9yIGFuIHN0cmluZyBhcnJheS4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgW0NvbmZpZ1N0YXRlXSxcbiAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDb25maWcuU3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIChrZXlzIGFzIHN0cmluZ1tdKS5yZWR1Y2UoKGFjYywgdmFsKSA9PiB7XG4gICAgICAgICAgaWYgKGFjYykge1xuICAgICAgICAgICAgcmV0dXJuIGFjY1t2YWxdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0sIHN0YXRlKTtcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRBcGlVcmwoa2V5Pzogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIFtDb25maWdTdGF0ZV0sXG4gICAgICBmdW5jdGlvbihzdGF0ZTogQ29uZmlnLlN0YXRlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlLmVudmlyb25tZW50LmFwaXNba2V5IHx8ICdkZWZhdWx0J10udXJsO1xuICAgICAgfSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHNlbGVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldFNldHRpbmcoa2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgW0NvbmZpZ1N0YXRlXSxcbiAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDb25maWcuU3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIHNucSgoKSA9PiBzdGF0ZS5zZXR0aW5nLnZhbHVlc1trZXldKTtcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRHcmFudGVkUG9saWN5KGNvbmRpdGlvbjogc3RyaW5nID0gJycpIHtcbiAgICBjb25zdCBrZXlzID0gY29uZGl0aW9uXG4gICAgICAucmVwbGFjZSgvXFwofFxcKXxcXCF8XFxzL2csICcnKVxuICAgICAgLnNwbGl0KC9cXHxcXHx8JiYvKVxuICAgICAgLmZpbHRlcihrZXkgPT4ga2V5KTtcblxuICAgIGNvbnN0IHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICBbQ29uZmlnU3RhdGVdLFxuICAgICAgZnVuY3Rpb24oc3RhdGU6IENvbmZpZy5TdGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWtleXMubGVuZ3RoKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBjb25zdCBnZXRQb2xpY3kgPSBrZXkgPT4gc25xKCgpID0+IHN0YXRlLmF1dGguZ3JhbnRlZFBvbGljaWVzW2tleV0sIGZhbHNlKTtcbiAgICAgICAgaWYgKGtleXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRQb2xpY3koa2V5KTtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGNvbmRpdGlvbi5yZXBsYWNlKGtleSwgdmFsdWUpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1ldmFsXG4gICAgICAgICAgcmV0dXJuIGV2YWwoYCEhJHtjb25kaXRpb259YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0UG9saWN5KGNvbmRpdGlvbik7XG4gICAgICB9LFxuICAgICk7XG5cbiAgICByZXR1cm4gc2VsZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgZ2V0Q29weShrZXk6IHN0cmluZywgLi4uaW50ZXJwb2xhdGVQYXJhbXM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKCFrZXkpIGtleSA9ICcnO1xuXG4gICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdCgnOjonKSBhcyBzdHJpbmdbXTtcbiAgICBjb25zdCBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgW0NvbmZpZ1N0YXRlXSxcbiAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDb25maWcuU3RhdGUpIHtcbiAgICAgICAgY29uc3QgeyBkZWZhdWx0UmVzb3VyY2VOYW1lIH0gPSBzdGF0ZS5lbnZpcm9ubWVudC5sb2NhbGl6YXRpb247XG4gICAgICAgIGlmIChrZXlzWzBdID09PSAnJykge1xuICAgICAgICAgIGlmICghZGVmYXVsdFJlc291cmNlTmFtZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgUGxlYXNlIGNoZWNrIHlvdXIgZW52aXJvbm1lbnQuIE1heSB5b3UgZm9yZ2V0IHNldCBkZWZhdWx0UmVzb3VyY2VOYW1lPyBcbiAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgZXhhbXBsZTpcbiAgICAgICAgICAgICAgIHsgcHJvZHVjdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgIGxvY2FsaXphdGlvbjoge1xuICAgICAgICAgICAgICAgICAgIGRlZmF1bHRSZXNvdXJjZU5hbWU6ICdNeVByb2plY3ROYW1lJ1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGtleXNbMF0gPSBzbnEoKCkgPT4gZGVmYXVsdFJlc291cmNlTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY29weSA9IGtleXMucmVkdWNlKChhY2MsIHZhbCkgPT4ge1xuICAgICAgICAgIGlmIChhY2MpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2NbdmFsXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9LCBzdGF0ZS5sb2NhbGl6YXRpb24udmFsdWVzKTtcblxuICAgICAgICBpZiAoY29weSAmJiBpbnRlcnBvbGF0ZVBhcmFtcyAmJiBpbnRlcnBvbGF0ZVBhcmFtcy5sZW5ndGgpIHtcbiAgICAgICAgICBpbnRlcnBvbGF0ZVBhcmFtcy5mb3JFYWNoKChwYXJhbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvcHkgPSBjb3B5LnJlcGxhY2UoYCd7JHtpbmRleH19J2AsIHBhcmFtKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb3B5IHx8IGtleTtcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBwQ29uZmlndXJhdGlvblNlcnZpY2U6IEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvblNlcnZpY2UsIHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIEBBY3Rpb24oQ29uZmlnR2V0QXBwQ29uZmlndXJhdGlvbilcbiAgYWRkRGF0YSh7IHBhdGNoU3RhdGUsIGRpc3BhdGNoIH06IFN0YXRlQ29udGV4dDxDb25maWcuU3RhdGU+KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwQ29uZmlndXJhdGlvblNlcnZpY2UuZ2V0Q29uZmlndXJhdGlvbigpLnBpcGUoXG4gICAgICB0YXAoY29uZmlndXJhdGlvbiA9PlxuICAgICAgICBwYXRjaFN0YXRlKHtcbiAgICAgICAgICAuLi5jb25maWd1cmF0aW9uLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgICBzd2l0Y2hNYXAoY29uZmlndXJhdGlvbiA9PlxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNlc3Npb25TdGF0ZS5nZXRMYW5ndWFnZSlcbiAgICAgICAgICA/IG9mKG51bGwpXG4gICAgICAgICAgOiBkaXNwYXRjaChcbiAgICAgICAgICAgICAgbmV3IFNlc3Npb25TZXRMYW5ndWFnZShzbnEoKCkgPT4gY29uZmlndXJhdGlvbi5zZXR0aW5nLnZhbHVlc1snQWJwLkxvY2FsaXphdGlvbi5EZWZhdWx0TGFuZ3VhZ2UnXSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIEBBY3Rpb24oUGF0Y2hSb3V0ZUJ5TmFtZSlcbiAgcGF0Y2hSb3V0ZSh7IHBhdGNoU3RhdGUsIGdldFN0YXRlIH06IFN0YXRlQ29udGV4dDxDb25maWcuU3RhdGU+LCB7IG5hbWUsIG5ld1ZhbHVlIH06IFBhdGNoUm91dGVCeU5hbWUpIHtcbiAgICBsZXQgcm91dGVzOiBBQlAuRnVsbFJvdXRlW10gPSBnZXRTdGF0ZSgpLnJvdXRlcztcblxuICAgIGNvbnN0IGluZGV4ID0gcm91dGVzLmZpbmRJbmRleChyb3V0ZSA9PiByb3V0ZS5uYW1lID09PSBuYW1lKTtcblxuICAgIHJvdXRlcyA9IHBhdGNoUm91dGVEZWVwKHJvdXRlcywgbmFtZSwgbmV3VmFsdWUpO1xuXG4gICAgcmV0dXJuIHBhdGNoU3RhdGUoe1xuICAgICAgcm91dGVzLFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhdGNoUm91dGVEZWVwKFxuICByb3V0ZXM6IEFCUC5GdWxsUm91dGVbXSxcbiAgbmFtZTogc3RyaW5nLFxuICBuZXdWYWx1ZTogUGFydGlhbDxBQlAuRnVsbFJvdXRlPixcbiAgcGFyZW50VXJsOiBzdHJpbmcgPSBudWxsLFxuKTogQUJQLkZ1bGxSb3V0ZVtdIHtcbiAgcm91dGVzID0gcm91dGVzLm1hcChyb3V0ZSA9PiB7XG4gICAgaWYgKHJvdXRlLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIGlmIChuZXdWYWx1ZS5wYXRoKSB7XG4gICAgICAgIG5ld1ZhbHVlLnVybCA9IGAke3BhcmVudFVybH0vJHtuZXdWYWx1ZS5wYXRofWA7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXdWYWx1ZS5jaGlsZHJlbiAmJiBuZXdWYWx1ZS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgbmV3VmFsdWUuY2hpbGRyZW4gPSBuZXdWYWx1ZS5jaGlsZHJlbi5tYXAoY2hpbGQgPT4gKHtcbiAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICB1cmw6IGAke3BhcmVudFVybH0vJHtyb3V0ZS5wYXRofS8ke2NoaWxkLnBhdGh9YCxcbiAgICAgICAgfSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geyAuLi5yb3V0ZSwgLi4ubmV3VmFsdWUgfTtcbiAgICB9IGVsc2UgaWYgKHJvdXRlLmNoaWxkcmVuICYmIHJvdXRlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgcm91dGUuY2hpbGRyZW4gPSBwYXRjaFJvdXRlRGVlcChyb3V0ZS5jaGlsZHJlbiwgbmFtZSwgbmV3VmFsdWUsIChwYXJlbnRVcmwgfHwgJy8nKSArIHJvdXRlLnBhdGgpO1xuICAgIH1cblxuICAgIHJldHVybiByb3V0ZTtcbiAgfSk7XG5cbiAgaWYgKHBhcmVudFVybCkge1xuICAgIC8vIHJlY3Vyc2l2ZSBibG9ja1xuICAgIHJldHVybiByb3V0ZXM7XG4gIH1cblxuICByZXR1cm4gb3JnYW5pemVSb3V0ZXMocm91dGVzKTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/states/index.js b/npm/ng-packs/dist/core/esm2015/lib/states/index.js new file mode 100644 index 00000000000..8b1dd2e36a7 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/states/index.js @@ -0,0 +1,8 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { ProfileState } from './profile.state'; +export { ConfigState } from './config.state'; +export { SessionState } from './session.state'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvc3RhdGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBYyxpQkFBaUIsQ0FBQztBQUNoQyw0QkFBYyxnQkFBZ0IsQ0FBQztBQUMvQiw2QkFBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcHJvZmlsZS5zdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy5zdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL3Nlc3Npb24uc3RhdGUnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/states/profile.state.js b/npm/ng-packs/dist/core/esm2015/lib/states/profile.state.js new file mode 100644 index 00000000000..9ee53298a79 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/states/profile.state.js @@ -0,0 +1,99 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { State, Action, Selector } from '@ngxs/store'; +import { ProfileGet, ProfileChangePassword, ProfileUpdate } from '../actions/profile.actions'; +import { ProfileService } from '../services/profile.service'; +import { tap } from 'rxjs/operators'; +let ProfileState = class ProfileState { + /** + * @param {?} profileService + */ + constructor(profileService) { + this.profileService = profileService; + } + /** + * @param {?} __0 + * @return {?} + */ + static getProfile({ profile }) { + return profile; + } + /** + * @param {?} __0 + * @return {?} + */ + profileGet({ patchState }) { + return this.profileService.get().pipe(tap((/** + * @param {?} profile + * @return {?} + */ + profile => patchState({ + profile, + })))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + profileUpdate({ patchState }, { payload }) { + return this.profileService.update(payload).pipe(tap((/** + * @param {?} profile + * @return {?} + */ + profile => patchState({ + profile, + })))); + } + /** + * @param {?} _ + * @param {?} __1 + * @return {?} + */ + changePassword(_, { payload }) { + return this.profileService.changePassword(payload); + } +}; +tslib_1.__decorate([ + Action(ProfileGet), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", void 0) +], ProfileState.prototype, "profileGet", null); +tslib_1.__decorate([ + Action(ProfileUpdate), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, ProfileUpdate]), + tslib_1.__metadata("design:returntype", void 0) +], ProfileState.prototype, "profileUpdate", null); +tslib_1.__decorate([ + Action(ProfileChangePassword), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, ProfileChangePassword]), + tslib_1.__metadata("design:returntype", void 0) +], ProfileState.prototype, "changePassword", null); +tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", Object) +], ProfileState, "getProfile", null); +ProfileState = tslib_1.__decorate([ + State({ + name: 'ProfileState', + defaults: (/** @type {?} */ ({})), + }), + tslib_1.__metadata("design:paramtypes", [ProfileService]) +], ProfileState); +export { ProfileState }; +if (false) { + /** + * @type {?} + * @private + */ + ProfileState.prototype.profileService; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zdGF0ZXMvcHJvZmlsZS5zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFnQixRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0lBTXhCLFlBQVksU0FBWixZQUFZOzs7O0lBTXZCLFlBQW9CLGNBQThCO1FBQTlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUFHLENBQUM7Ozs7O0lBSnRELE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQWlCO1FBQzFDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Ozs7O0lBS0QsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUErQjtRQUNwRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUNuQyxHQUFHOzs7O1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FDWixVQUFVLENBQUM7WUFDVCxPQUFPO1NBQ1IsQ0FBQyxFQUNILENBQ0YsQ0FBQztJQUNKLENBQUM7Ozs7OztJQUdELGFBQWEsQ0FBQyxFQUFFLFVBQVUsRUFBK0IsRUFBRSxFQUFFLE9BQU8sRUFBaUI7UUFDbkYsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzdDLEdBQUc7Ozs7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUNaLFVBQVUsQ0FBQztZQUNULE9BQU87U0FDUixDQUFDLEVBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7Ozs7O0lBR0QsY0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBeUI7UUFDbEQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0YsQ0FBQTtBQXpCQztJQURDLE1BQU0sQ0FBQyxVQUFVLENBQUM7Ozs7OENBU2xCO0FBR0Q7SUFEQyxNQUFNLENBQUMsYUFBYSxDQUFDOztxREFDa0QsYUFBYTs7aURBUXBGO0FBR0Q7SUFEQyxNQUFNLENBQUMscUJBQXFCLENBQUM7O3FEQUNDLHFCQUFxQjs7a0RBRW5EO0FBL0JEO0lBREMsUUFBUSxFQUFFOzs7O29DQUdWO0FBSlUsWUFBWTtJQUp4QixLQUFLLENBQWdCO1FBQ3BCLElBQUksRUFBRSxjQUFjO1FBQ3BCLFFBQVEsRUFBRSxtQkFBQSxFQUFFLEVBQWlCO0tBQzlCLENBQUM7NkNBT29DLGNBQWM7R0FOdkMsWUFBWSxDQWtDeEI7U0FsQ1ksWUFBWTs7Ozs7O0lBTVgsc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhdGUsIEFjdGlvbiwgU3RhdGVDb250ZXh0LCBTZWxlY3RvciB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IFByb2ZpbGVHZXQsIFByb2ZpbGVDaGFuZ2VQYXNzd29yZCwgUHJvZmlsZVVwZGF0ZSB9IGZyb20gJy4uL2FjdGlvbnMvcHJvZmlsZS5hY3Rpb25zJztcbmltcG9ydCB7IFByb2ZpbGUgfSBmcm9tICcuLi9tb2RlbHMvcHJvZmlsZSc7XG5pbXBvcnQgeyBQcm9maWxlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBTdGF0ZTxQcm9maWxlLlN0YXRlPih7XG4gIG5hbWU6ICdQcm9maWxlU3RhdGUnLFxuICBkZWZhdWx0czoge30gYXMgUHJvZmlsZS5TdGF0ZSxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZmlsZVN0YXRlIHtcbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldFByb2ZpbGUoeyBwcm9maWxlIH06IFByb2ZpbGUuU3RhdGUpOiBQcm9maWxlLlJlc3BvbnNlIHtcbiAgICByZXR1cm4gcHJvZmlsZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJvZmlsZVNlcnZpY2U6IFByb2ZpbGVTZXJ2aWNlKSB7fVxuXG4gIEBBY3Rpb24oUHJvZmlsZUdldClcbiAgcHJvZmlsZUdldCh7IHBhdGNoU3RhdGUgfTogU3RhdGVDb250ZXh0PFByb2ZpbGUuU3RhdGU+KSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0KCkucGlwZShcbiAgICAgIHRhcChwcm9maWxlID0+XG4gICAgICAgIHBhdGNoU3RhdGUoe1xuICAgICAgICAgIHByb2ZpbGUsXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgQEFjdGlvbihQcm9maWxlVXBkYXRlKVxuICBwcm9maWxlVXBkYXRlKHsgcGF0Y2hTdGF0ZSB9OiBTdGF0ZUNvbnRleHQ8UHJvZmlsZS5TdGF0ZT4sIHsgcGF5bG9hZCB9OiBQcm9maWxlVXBkYXRlKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlKHBheWxvYWQpLnBpcGUoXG4gICAgICB0YXAocHJvZmlsZSA9PlxuICAgICAgICBwYXRjaFN0YXRlKHtcbiAgICAgICAgICBwcm9maWxlLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIEBBY3Rpb24oUHJvZmlsZUNoYW5nZVBhc3N3b3JkKVxuICBjaGFuZ2VQYXNzd29yZChfLCB7IHBheWxvYWQgfTogUHJvZmlsZUNoYW5nZVBhc3N3b3JkKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZVNlcnZpY2UuY2hhbmdlUGFzc3dvcmQocGF5bG9hZCk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/states/session.state.js b/npm/ng-packs/dist/core/esm2015/lib/states/session.state.js new file mode 100644 index 00000000000..acfb6e5af74 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/states/session.state.js @@ -0,0 +1,48 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { State, Action, Selector } from '@ngxs/store'; +import { SessionSetLanguage } from '../actions/session.actions'; +let SessionState = class SessionState { + constructor() { } + /** + * @param {?} __0 + * @return {?} + */ + static getLanguage({ language }) { + return language; + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + sessionSetLanguage({ patchState }, { payload }) { + patchState({ + language: payload, + }); + } +}; +tslib_1.__decorate([ + Action(SessionSetLanguage), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, SessionSetLanguage]), + tslib_1.__metadata("design:returntype", void 0) +], SessionState.prototype, "sessionSetLanguage", null); +tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", String) +], SessionState, "getLanguage", null); +SessionState = tslib_1.__decorate([ + State({ + name: 'SessionState', + defaults: (/** @type {?} */ ({})), + }), + tslib_1.__metadata("design:paramtypes", []) +], SessionState); +export { SessionState }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zdGF0ZXMvc2Vzc2lvbi5zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFnQixRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7SUFPbkQsWUFBWSxTQUFaLFlBQVk7SUFNdkIsZ0JBQWUsQ0FBQzs7Ozs7SUFKaEIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBaUI7UUFDNUMsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs7Ozs7O0lBS0Qsa0JBQWtCLENBQUMsRUFBRSxVQUFVLEVBQStCLEVBQUUsRUFBRSxPQUFPLEVBQXNCO1FBQzdGLFVBQVUsQ0FBQztZQUNULFFBQVEsRUFBRSxPQUFPO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFBO0FBTEM7SUFEQyxNQUFNLENBQUMsa0JBQWtCLENBQUM7O3FEQUNrRCxrQkFBa0I7O3NEQUk5RjtBQVhEO0lBREMsUUFBUSxFQUFFOzs7O3FDQUdWO0FBSlUsWUFBWTtJQUp4QixLQUFLLENBQWdCO1FBQ3BCLElBQUksRUFBRSxjQUFjO1FBQ3BCLFFBQVEsRUFBRSxtQkFBQSxFQUFFLEVBQWlCO0tBQzlCLENBQUM7O0dBQ1csWUFBWSxDQWN4QjtTQWRZLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGF0ZSwgQWN0aW9uLCBTdGF0ZUNvbnRleHQsIFNlbGVjdG9yIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgU2Vzc2lvblNldExhbmd1YWdlIH0gZnJvbSAnLi4vYWN0aW9ucy9zZXNzaW9uLmFjdGlvbnMnO1xuaW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gJy4uL21vZGVscy9zZXNzaW9uJztcblxuQFN0YXRlPFNlc3Npb24uU3RhdGU+KHtcbiAgbmFtZTogJ1Nlc3Npb25TdGF0ZScsXG4gIGRlZmF1bHRzOiB7fSBhcyBTZXNzaW9uLlN0YXRlLFxufSlcbmV4cG9ydCBjbGFzcyBTZXNzaW9uU3RhdGUge1xuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0TGFuZ3VhZ2UoeyBsYW5ndWFnZSB9OiBTZXNzaW9uLlN0YXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbGFuZ3VhZ2U7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgQEFjdGlvbihTZXNzaW9uU2V0TGFuZ3VhZ2UpXG4gIHNlc3Npb25TZXRMYW5ndWFnZSh7IHBhdGNoU3RhdGUgfTogU3RhdGVDb250ZXh0PFNlc3Npb24uU3RhdGU+LCB7IHBheWxvYWQgfTogU2Vzc2lvblNldExhbmd1YWdlKSB7XG4gICAgcGF0Y2hTdGF0ZSh7XG4gICAgICBsYW5ndWFnZTogcGF5bG9hZCxcbiAgICB9KTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/tokens/common.token.js b/npm/ng-packs/dist/core/esm2015/lib/tokens/common.token.js new file mode 100644 index 00000000000..d76c042973b --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/tokens/common.token.js @@ -0,0 +1,24 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { InjectionToken } from '@angular/core'; +/** + * @param {?} environment + * @return {?} + */ +export function environmentFactory(environment) { + return Object.assign({}, environment); +} +/** + * @param {?} config + * @return {?} + */ +export function configFactory(config) { + return Object.assign({}, config); +} +/** @type {?} */ +export const ENVIRONMENT = new InjectionToken('ENVIRONMENT'); +/** @type {?} */ +export const CONFIG = new InjectionToken('CONFIG'); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnRva2VuLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL3Rva2Vucy9jb21tb24udG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBRy9DLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxXQUErQjtJQUNoRSx5QkFDSyxXQUFXLEVBQ2Q7QUFDSixDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsTUFBMkI7SUFDdkQseUJBQ0ssTUFBTSxFQUNUO0FBQ0osQ0FBQzs7QUFFRCxNQUFNLE9BQU8sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFDLGFBQWEsQ0FBQzs7QUFFNUQsTUFBTSxPQUFPLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudmlyb25tZW50RmFjdG9yeShlbnZpcm9ubWVudDogQ29uZmlnLkVudmlyb25tZW50KSB7XG4gIHJldHVybiB7XG4gICAgLi4uZW52aXJvbm1lbnQsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25maWdGYWN0b3J5KGNvbmZpZzogQ29uZmlnLlJlcXVpcmVtZW50cykge1xuICByZXR1cm4ge1xuICAgIC4uLmNvbmZpZyxcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IEVOVklST05NRU5UID0gbmV3IEluamVjdGlvblRva2VuKCdFTlZJUk9OTUVOVCcpO1xuXG5leHBvcnQgY29uc3QgQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuKCdDT05GSUcnKTtcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/tokens/index.js b/npm/ng-packs/dist/core/esm2015/lib/tokens/index.js new file mode 100644 index 00000000000..22a50773ebb --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/tokens/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { environmentFactory, configFactory, ENVIRONMENT, CONFIG } from './common.token'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvdG9rZW5zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSx1RUFBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tbW9uLnRva2VuJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/utils/generator-utils.js b/npm/ng-packs/dist/core/esm2015/lib/utils/generator-utils.js new file mode 100644 index 00000000000..9e840a80412 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/utils/generator-utils.js @@ -0,0 +1,14 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @param {?=} a + * @return {?} + */ +export function uuid(a) { + return a + ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16) + : ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLXV0aWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL2dlbmVyYXRvci11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLE1BQU0sVUFBVSxJQUFJLENBQUMsQ0FBTztJQUMxQixPQUFPLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHV1aWQoYT86IGFueSk6IHN0cmluZyB7XG4gIHJldHVybiBhXG4gICAgPyAoYSBeICgoTWF0aC5yYW5kb20oKSAqIDE2KSA+PiAoYSAvIDQpKSkudG9TdHJpbmcoMTYpXG4gICAgOiAoJycgKyAxZTcgKyAtMWUzICsgLTRlMyArIC04ZTMgKyAtMWUxMSkucmVwbGFjZSgvWzAxOF0vZywgdXVpZCk7XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/utils/index.js b/npm/ng-packs/dist/core/esm2015/lib/utils/index.js new file mode 100644 index 00000000000..f75166e0ed0 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/utils/index.js @@ -0,0 +1,9 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { uuid } from './generator-utils'; +export { getInitialData } from './initial-utils'; +export { organizeRoutes, setChildRoute, sortRoutes } from './route-utils'; +export { takeUntilDestroy } from './rxjs-utils'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHFCQUFjLG1CQUFtQixDQUFDO0FBQ2xDLCtCQUFjLGlCQUFpQixDQUFDO0FBQ2hDLDBEQUFjLGVBQWUsQ0FBQztBQUM5QixpQ0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2dlbmVyYXRvci11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2luaXRpYWwtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0ZS11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3J4anMtdXRpbHMnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/utils/initial-utils.js b/npm/ng-packs/dist/core/esm2015/lib/utils/initial-utils.js new file mode 100644 index 00000000000..cd07b11c5bb --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/utils/initial-utils.js @@ -0,0 +1,23 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Store } from '@ngxs/store'; +import { ConfigGetAppConfiguration } from '../actions/config.actions'; +/** + * @param {?} injector + * @return {?} + */ +export function getInitialData(injector) { + /** @type {?} */ + const fn = (/** + * @return {?} + */ + function () { + /** @type {?} */ + const store = injector.get(Store); + return store.dispatch(new ConfigGetAppConfiguration()).toPromise(); + }); + return fn; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi91dGlscy9pbml0aWFsLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7OztBQUV0RSxNQUFNLFVBQVUsY0FBYyxDQUFDLFFBQWtCOztVQUN6QyxFQUFFOzs7SUFBRzs7Y0FDSCxLQUFLLEdBQVUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFFeEMsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUkseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JFLENBQUMsQ0FBQTtJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IENvbmZpZ0dldEFwcENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9hY3Rpb25zL2NvbmZpZy5hY3Rpb25zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxEYXRhKGluamVjdG9yOiBJbmplY3Rvcikge1xuICBjb25zdCBmbiA9IGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IHN0b3JlOiBTdG9yZSA9IGluamVjdG9yLmdldChTdG9yZSk7XG5cbiAgICByZXR1cm4gc3RvcmUuZGlzcGF0Y2gobmV3IENvbmZpZ0dldEFwcENvbmZpZ3VyYXRpb24oKSkudG9Qcm9taXNlKCk7XG4gIH07XG5cbiAgcmV0dXJuIGZuO1xufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/utils/route-utils.js b/npm/ng-packs/dist/core/esm2015/lib/utils/route-utils.js new file mode 100644 index 00000000000..379be51051c --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/utils/route-utils.js @@ -0,0 +1,96 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @param {?} routes + * @param {?=} wrappers + * @param {?=} parentNameArr + * @param {?=} parentName + * @return {?} + */ +export function organizeRoutes(routes, wrappers = [], parentNameArr = (/** @type {?} */ ([])), parentName = null) { + /** @type {?} */ + const filter = (/** + * @param {?} route + * @return {?} + */ + route => { + if (route.children) { + route.children = organizeRoutes(route.children, wrappers, parentNameArr, route.name); + } + if (route.parentName && route.parentName !== parentName) { + parentNameArr.push(route); + return false; + } + return true; + }); + if (parentName) { + // recursive block + return routes.filter(filter); + } + /** @type {?} */ + const filteredRoutes = routes.filter(filter); + if (parentNameArr.length) { + return sortRoutes(setChildRoute([...filteredRoutes, ...wrappers], parentNameArr)); + } + return filteredRoutes; +} +/** + * @param {?} routes + * @param {?} parentNameArr + * @return {?} + */ +export function setChildRoute(routes, parentNameArr) { + return routes + .map((/** + * @param {?} route + * @return {?} + */ + route => { + if (route.children && route.children.length) { + route.children = setChildRoute(route.children, parentNameArr); + } + /** @type {?} */ + const foundedChildren = parentNameArr.filter((/** + * @param {?} parent + * @return {?} + */ + parent => parent.parentName === route.name)); + if (foundedChildren && foundedChildren.length) { + route.children = [...(route.children || []), ...foundedChildren]; + } + return route; + })) + .filter((/** + * @param {?} route + * @return {?} + */ + route => route.path || (route.children && route.children.length))); +} +/** + * @param {?=} routes + * @return {?} + */ +export function sortRoutes(routes = []) { + if (!routes.length) + return []; + return routes + .sort((/** + * @param {?} a + * @param {?} b + * @return {?} + */ + (a, b) => a.order - b.order)) + .map((/** + * @param {?} route + * @return {?} + */ + route => { + if (route.children && route.children.length) { + route.children = sortRoutes(route.children); + } + return route; + })); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtdXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvcm91dGUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFQSxNQUFNLFVBQVUsY0FBYyxDQUM1QixNQUF1QixFQUN2QixXQUE0QixFQUFFLEVBQzlCLGFBQWEsR0FBRyxtQkFBQSxFQUFFLEVBQW1CLEVBQ3JDLGFBQXFCLElBQUk7O1VBRW5CLE1BQU07Ozs7SUFBRyxLQUFLLENBQUMsRUFBRTtRQUNyQixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDbEIsS0FBSyxDQUFDLFFBQVEsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0RjtRQUVELElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRTtZQUN2RCxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQTtJQUVELElBQUksVUFBVSxFQUFFO1FBQ2Qsa0JBQWtCO1FBQ2xCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUM5Qjs7VUFFSyxjQUFjLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFFNUMsSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFO1FBQ3hCLE9BQU8sVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsY0FBYyxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztLQUNuRjtJQUVELE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUM7Ozs7OztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsTUFBdUIsRUFBRSxhQUE4QjtJQUNuRixPQUFPLE1BQU07U0FDVixHQUFHOzs7O0lBQUMsS0FBSyxDQUFDLEVBQUU7UUFDWCxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDM0MsS0FBSyxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztTQUMvRDs7Y0FFSyxlQUFlLEdBQUcsYUFBYSxDQUFDLE1BQU07Ozs7UUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEtBQUssS0FBSyxDQUFDLElBQUksRUFBQztRQUN4RixJQUFJLGVBQWUsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFO1lBQzdDLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLGVBQWUsQ0FBQyxDQUFDO1NBQ2xFO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLEVBQUM7U0FDRCxNQUFNOzs7O0lBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUM7QUFDOUUsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLFNBQTBCLEVBQUU7SUFDckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDOUIsT0FBTyxNQUFNO1NBQ1YsSUFBSTs7Ozs7SUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBQztTQUNqQyxHQUFHOzs7O0lBQUMsS0FBSyxDQUFDLEVBQUU7UUFDWCxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDM0MsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzdDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLEVBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBQlAgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gb3JnYW5pemVSb3V0ZXMoXG4gIHJvdXRlczogQUJQLkZ1bGxSb3V0ZVtdLFxuICB3cmFwcGVyczogQUJQLkZ1bGxSb3V0ZVtdID0gW10sXG4gIHBhcmVudE5hbWVBcnIgPSBbXSBhcyBBQlAuRnVsbFJvdXRlW10sXG4gIHBhcmVudE5hbWU6IHN0cmluZyA9IG51bGwsXG4pOiBBQlAuRnVsbFJvdXRlW10ge1xuICBjb25zdCBmaWx0ZXIgPSByb3V0ZSA9PiB7XG4gICAgaWYgKHJvdXRlLmNoaWxkcmVuKSB7XG4gICAgICByb3V0ZS5jaGlsZHJlbiA9IG9yZ2FuaXplUm91dGVzKHJvdXRlLmNoaWxkcmVuLCB3cmFwcGVycywgcGFyZW50TmFtZUFyciwgcm91dGUubmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKHJvdXRlLnBhcmVudE5hbWUgJiYgcm91dGUucGFyZW50TmFtZSAhPT0gcGFyZW50TmFtZSkge1xuICAgICAgcGFyZW50TmFtZUFyci5wdXNoKHJvdXRlKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICBpZiAocGFyZW50TmFtZSkge1xuICAgIC8vIHJlY3Vyc2l2ZSBibG9ja1xuICAgIHJldHVybiByb3V0ZXMuZmlsdGVyKGZpbHRlcik7XG4gIH1cblxuICBjb25zdCBmaWx0ZXJlZFJvdXRlcyA9IHJvdXRlcy5maWx0ZXIoZmlsdGVyKTtcblxuICBpZiAocGFyZW50TmFtZUFyci5sZW5ndGgpIHtcbiAgICByZXR1cm4gc29ydFJvdXRlcyhzZXRDaGlsZFJvdXRlKFsuLi5maWx0ZXJlZFJvdXRlcywgLi4ud3JhcHBlcnNdLCBwYXJlbnROYW1lQXJyKSk7XG4gIH1cblxuICByZXR1cm4gZmlsdGVyZWRSb3V0ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDaGlsZFJvdXRlKHJvdXRlczogQUJQLkZ1bGxSb3V0ZVtdLCBwYXJlbnROYW1lQXJyOiBBQlAuRnVsbFJvdXRlW10pOiBBQlAuRnVsbFJvdXRlW10ge1xuICByZXR1cm4gcm91dGVzXG4gICAgLm1hcChyb3V0ZSA9PiB7XG4gICAgICBpZiAocm91dGUuY2hpbGRyZW4gJiYgcm91dGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIHJvdXRlLmNoaWxkcmVuID0gc2V0Q2hpbGRSb3V0ZShyb3V0ZS5jaGlsZHJlbiwgcGFyZW50TmFtZUFycik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvdW5kZWRDaGlsZHJlbiA9IHBhcmVudE5hbWVBcnIuZmlsdGVyKHBhcmVudCA9PiBwYXJlbnQucGFyZW50TmFtZSA9PT0gcm91dGUubmFtZSk7XG4gICAgICBpZiAoZm91bmRlZENoaWxkcmVuICYmIGZvdW5kZWRDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcm91dGUuY2hpbGRyZW4gPSBbLi4uKHJvdXRlLmNoaWxkcmVuIHx8IFtdKSwgLi4uZm91bmRlZENoaWxkcmVuXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJvdXRlO1xuICAgIH0pXG4gICAgLmZpbHRlcihyb3V0ZSA9PiByb3V0ZS5wYXRoIHx8IChyb3V0ZS5jaGlsZHJlbiAmJiByb3V0ZS5jaGlsZHJlbi5sZW5ndGgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRSb3V0ZXMocm91dGVzOiBBQlAuRnVsbFJvdXRlW10gPSBbXSk6IEFCUC5GdWxsUm91dGVbXSB7XG4gIGlmICghcm91dGVzLmxlbmd0aCkgcmV0dXJuIFtdO1xuICByZXR1cm4gcm91dGVzXG4gICAgLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKVxuICAgIC5tYXAocm91dGUgPT4ge1xuICAgICAgaWYgKHJvdXRlLmNoaWxkcmVuICYmIHJvdXRlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICByb3V0ZS5jaGlsZHJlbiA9IHNvcnRSb3V0ZXMocm91dGUuY2hpbGRyZW4pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcm91dGU7XG4gICAgfSk7XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/lib/utils/rxjs-utils.js b/npm/ng-packs/dist/core/esm2015/lib/utils/rxjs-utils.js new file mode 100644 index 00000000000..8737be0f4f1 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/lib/utils/rxjs-utils.js @@ -0,0 +1,44 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; +/** + * @param {?} value + * @return {?} + */ +function isFunction(value) { + return typeof value === 'function'; +} +/** @type {?} */ +export const takeUntilDestroy = (/** + * @param {?} componentInstance + * @param {?=} destroyMethodName + * @return {?} + */ +(componentInstance, destroyMethodName = 'ngOnDestroy') => (/** + * @template T + * @param {?} source + * @return {?} + */ +(source) => { + /** @type {?} */ + const originalDestroy = componentInstance[destroyMethodName]; + if (isFunction(originalDestroy) === false) { + throw new Error(`${componentInstance.constructor.name} is using untilDestroyed but doesn't implement ${destroyMethodName}`); + } + if (!componentInstance['__takeUntilDestroy']) { + componentInstance['__takeUntilDestroy'] = new Subject(); + componentInstance[destroyMethodName] = (/** + * @return {?} + */ + function () { + isFunction(originalDestroy) && originalDestroy.apply(this, arguments); + componentInstance['__takeUntilDestroy'].next(true); + componentInstance['__takeUntilDestroy'].complete(); + }); + } + return source.pipe(takeUntil(componentInstance['__takeUntilDestroy'])); +})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnhqcy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi91dGlscy9yeGpzLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFFM0MsU0FBUyxVQUFVLENBQUMsS0FBSztJQUN2QixPQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztBQUNyQyxDQUFDOztBQUVELE1BQU0sT0FBTyxnQkFBZ0I7Ozs7O0FBQUcsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsR0FBRyxhQUFhLEVBQUUsRUFBRTs7Ozs7QUFBQyxDQUN4RixNQUFxQixFQUNyQixFQUFFOztVQUNJLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQztJQUM1RCxJQUFJLFVBQVUsQ0FBQyxlQUFlLENBQUMsS0FBSyxLQUFLLEVBQUU7UUFDekMsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLGtEQUFrRCxpQkFBaUIsRUFBRSxDQUMzRyxDQUFDO0tBQ0g7SUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsRUFBRTtRQUM1QyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFeEQsaUJBQWlCLENBQUMsaUJBQWlCLENBQUM7OztRQUFHO1lBQ3JDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN0RSxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRCxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JELENBQUMsQ0FBQSxDQUFDO0tBQ0g7SUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFJLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVFLENBQUMsQ0FBQSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBjb25zdCB0YWtlVW50aWxEZXN0cm95ID0gKGNvbXBvbmVudEluc3RhbmNlLCBkZXN0cm95TWV0aG9kTmFtZSA9ICduZ09uRGVzdHJveScpID0+IDxUPihcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+LFxuKSA9PiB7XG4gIGNvbnN0IG9yaWdpbmFsRGVzdHJveSA9IGNvbXBvbmVudEluc3RhbmNlW2Rlc3Ryb3lNZXRob2ROYW1lXTtcbiAgaWYgKGlzRnVuY3Rpb24ob3JpZ2luYWxEZXN0cm95KSA9PT0gZmFsc2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHtjb21wb25lbnRJbnN0YW5jZS5jb25zdHJ1Y3Rvci5uYW1lfSBpcyB1c2luZyB1bnRpbERlc3Ryb3llZCBidXQgZG9lc24ndCBpbXBsZW1lbnQgJHtkZXN0cm95TWV0aG9kTmFtZX1gLFxuICAgICk7XG4gIH1cbiAgaWYgKCFjb21wb25lbnRJbnN0YW5jZVsnX190YWtlVW50aWxEZXN0cm95J10pIHtcbiAgICBjb21wb25lbnRJbnN0YW5jZVsnX190YWtlVW50aWxEZXN0cm95J10gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29tcG9uZW50SW5zdGFuY2VbZGVzdHJveU1ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICBpc0Z1bmN0aW9uKG9yaWdpbmFsRGVzdHJveSkgJiYgb3JpZ2luYWxEZXN0cm95LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICBjb21wb25lbnRJbnN0YW5jZVsnX190YWtlVW50aWxEZXN0cm95J10ubmV4dCh0cnVlKTtcbiAgICAgIGNvbXBvbmVudEluc3RhbmNlWydfX3Rha2VVbnRpbERlc3Ryb3knXS5jb21wbGV0ZSgpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIHNvdXJjZS5waXBlKHRha2VVbnRpbDxUPihjb21wb25lbnRJbnN0YW5jZVsnX190YWtlVW50aWxEZXN0cm95J10pKTtcbn07XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm2015/public-api.js b/npm/ng-packs/dist/core/esm2015/public-api.js new file mode 100644 index 00000000000..122dd3e6b50 --- /dev/null +++ b/npm/ng-packs/dist/core/esm2015/public-api.js @@ -0,0 +1,23 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/* + * Public API Surface of core + */ +// export * from './lib/handlers'; +export { PatchRouteByName, ConfigGetAppConfiguration, LoaderStart, LoaderStop, ProfileGet, ProfileUpdate, ProfileChangePassword, RestOccurError, SessionSetLanguage } from './lib/actions'; +export { DynamicLayoutComponent, RouterOutletComponent } from './lib/components'; +// export * from './lib/constants'; +export { EllipsisDirective, PermissionDirective, VisibilityDirective } from './lib/directives'; +export {} from './lib/enums'; +export { AuthGuard, PermissionGuard } from './lib/guards'; +export { ApiInterceptor } from './lib/interceptors'; +export { Rest } from './lib/models'; +export { NGXS_CONFIG_PLUGIN_OPTIONS, ConfigPlugin } from './lib/plugins'; +export { ApplicationConfigurationService, ConfigService, LazyLoadService, LocalizationService, ProfileService, RestService } from './lib/services'; +export { ProfileState, ConfigState, SessionState } from './lib/states'; +export { environmentFactory, configFactory, ENVIRONMENT, CONFIG } from './lib/tokens'; +export { uuid, getInitialData, organizeRoutes, setChildRoute, sortRoutes, takeUntilDestroy } from './lib/utils'; +export { CoreModule } from './lib/core.module'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbInB1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFLQSwyS0FBYyxlQUFlLENBQUM7QUFDOUIsOERBQWMsa0JBQWtCLENBQUM7O0FBRWpDLDRFQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGVBQWMsYUFBYSxDQUFDO0FBQzVCLDJDQUFjLGNBQWMsQ0FBQztBQUM3QiwrQkFBYyxvQkFBb0IsQ0FBQztBQUNuQyxxQkFBYyxjQUFjLENBQUM7QUFDN0IseURBQWMsZUFBZSxDQUFDO0FBQzlCLGtJQUFjLGdCQUFnQixDQUFDO0FBQy9CLHdEQUFjLGNBQWMsQ0FBQztBQUM3Qix1RUFBYyxjQUFjLENBQUM7QUFDN0Isa0dBQWMsYUFBYSxDQUFDO0FBRTVCLDJCQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjb3JlXG4gKi9cblxuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvaGFuZGxlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VudW1zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2d1YXJkcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmNlcHRvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BsdWdpbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUubW9kdWxlJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/abp-ng.core.js b/npm/ng-packs/dist/core/esm5/abp-ng.core.js new file mode 100644 index 00000000000..b2b7632fa91 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/abp-ng.core.js @@ -0,0 +1,28 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { PatchRouteByName, ConfigGetAppConfiguration, LoaderStart, LoaderStop, ProfileGet, ProfileUpdate, ProfileChangePassword, RestOccurError, SessionSetLanguage, DynamicLayoutComponent, RouterOutletComponent, EllipsisDirective, PermissionDirective, VisibilityDirective, AuthGuard, PermissionGuard, ApiInterceptor, Rest, NGXS_CONFIG_PLUGIN_OPTIONS, ConfigPlugin, ApplicationConfigurationService, ConfigService, LazyLoadService, LocalizationService, ProfileService, RestService, ProfileState, ConfigState, SessionState, environmentFactory, configFactory, ENVIRONMENT, CONFIG, uuid, getInitialData, organizeRoutes, setChildRoute, sortRoutes, takeUntilDestroy, CoreModule } from './public-api'; +export { ConfigGetAppConfiguration as ɵm, PatchRouteByName as ɵl } from './lib/actions/config.actions'; +export { ProfileChangePassword as ɵf, ProfileGet as ɵd, ProfileUpdate as ɵe } from './lib/actions/profile.actions'; +export { SessionSetLanguage as ɵi } from './lib/actions/session.actions'; +export { DynamicLayoutComponent as ɵo } from './lib/components/dynamic-layout.component'; +export { RouterOutletComponent as ɵn } from './lib/components/router-outlet.component'; +export { EllipsisDirective as ɵt } from './lib/directives/ellipsis.directive'; +export { PermissionDirective as ɵq } from './lib/directives/permission.directive'; +export { VisibilityDirective as ɵr } from './lib/directives/visibility.directive'; +export { ApiInterceptor as ɵx } from './lib/interceptors/api.interceptor'; +export { LocalizationPipe as ɵs } from './lib/pipes/localization.pipe'; +export { ConfigPlugin as ɵv, NGXS_CONFIG_PLUGIN_OPTIONS as ɵu } from './lib/plugins/config.plugin'; +export { ApplicationConfigurationService as ɵk } from './lib/services/application-configuration.service'; +export { ProfileService as ɵb } from './lib/services/profile.service'; +export { RestService as ɵc } from './lib/services/rest.service'; +export { ConfigState as ɵp } from './lib/states'; +export { ConfigState as ɵj } from './lib/states/config.state'; +export { ProfileState as ɵa } from './lib/states/profile.state'; +export { SessionState as ɵh } from './lib/states/session.state'; +export { getInitialData as ɵy } from './lib/utils/initial-utils'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLmNvcmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJhYnAtbmcuY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsc3FCQUFjLGNBQWMsQ0FBQztBQUU3QixPQUFPLEVBQUMseUJBQXlCLElBQUksRUFBRSxFQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3BHLE9BQU8sRUFBQyxxQkFBcUIsSUFBSSxFQUFFLEVBQUMsVUFBVSxJQUFJLEVBQUUsRUFBQyxhQUFhLElBQUksRUFBRSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDL0csT0FBTyxFQUFDLGtCQUFrQixJQUFJLEVBQUUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUN2RixPQUFPLEVBQUMscUJBQXFCLElBQUksRUFBRSxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDckYsT0FBTyxFQUFDLGlCQUFpQixJQUFJLEVBQUUsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUV4RSxPQUFPLEVBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUFDLFlBQVksSUFBSSxFQUFFLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDaEcsT0FBTyxFQUFDLCtCQUErQixJQUFJLEVBQUUsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBQyxjQUFjLElBQUksRUFBRSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsV0FBVyxJQUFJLEVBQUUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUMsV0FBVyxJQUFJLEVBQUUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBQyxZQUFZLElBQUksRUFBRSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFlBQVksSUFBSSxFQUFFLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsY0FBYyxJQUFJLEVBQUUsRUFBQyxNQUFNLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuXG5leHBvcnQge0NvbmZpZ0dldEFwcENvbmZpZ3VyYXRpb24gYXMgybVtLFBhdGNoUm91dGVCeU5hbWUgYXMgybVsfSBmcm9tICcuL2xpYi9hY3Rpb25zL2NvbmZpZy5hY3Rpb25zJztcbmV4cG9ydCB7UHJvZmlsZUNoYW5nZVBhc3N3b3JkIGFzIMm1ZixQcm9maWxlR2V0IGFzIMm1ZCxQcm9maWxlVXBkYXRlIGFzIMm1ZX0gZnJvbSAnLi9saWIvYWN0aW9ucy9wcm9maWxlLmFjdGlvbnMnO1xuZXhwb3J0IHtTZXNzaW9uU2V0TGFuZ3VhZ2UgYXMgybVpfSBmcm9tICcuL2xpYi9hY3Rpb25zL3Nlc3Npb24uYWN0aW9ucyc7XG5leHBvcnQge0R5bmFtaWNMYXlvdXRDb21wb25lbnQgYXMgybVvfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtbGF5b3V0LmNvbXBvbmVudCc7XG5leHBvcnQge1JvdXRlck91dGxldENvbXBvbmVudCBhcyDJtW59IGZyb20gJy4vbGliL2NvbXBvbmVudHMvcm91dGVyLW91dGxldC5jb21wb25lbnQnO1xuZXhwb3J0IHtFbGxpcHNpc0RpcmVjdGl2ZSBhcyDJtXR9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvZWxsaXBzaXMuZGlyZWN0aXZlJztcbmV4cG9ydCB7UGVybWlzc2lvbkRpcmVjdGl2ZSBhcyDJtXF9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvcGVybWlzc2lvbi5kaXJlY3RpdmUnO1xuZXhwb3J0IHtWaXNpYmlsaXR5RGlyZWN0aXZlIGFzIMm1cn0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy92aXNpYmlsaXR5LmRpcmVjdGl2ZSc7XG5leHBvcnQge0FwaUludGVyY2VwdG9yIGFzIMm1eH0gZnJvbSAnLi9saWIvaW50ZXJjZXB0b3JzL2FwaS5pbnRlcmNlcHRvcic7XG5leHBvcnQge0FCUCBhcyDJtXcsUHJvZmlsZSBhcyDJtWd9IGZyb20gJy4vbGliL21vZGVscyc7XG5leHBvcnQge0xvY2FsaXphdGlvblBpcGUgYXMgybVzfSBmcm9tICcuL2xpYi9waXBlcy9sb2NhbGl6YXRpb24ucGlwZSc7XG5leHBvcnQge0NvbmZpZ1BsdWdpbiBhcyDJtXYsTkdYU19DT05GSUdfUExVR0lOX09QVElPTlMgYXMgybV1fSBmcm9tICcuL2xpYi9wbHVnaW5zL2NvbmZpZy5wbHVnaW4nO1xuZXhwb3J0IHtBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25TZXJ2aWNlIGFzIMm1a30gZnJvbSAnLi9saWIvc2VydmljZXMvYXBwbGljYXRpb24tY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCB7UHJvZmlsZVNlcnZpY2UgYXMgybVifSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9wcm9maWxlLnNlcnZpY2UnO1xuZXhwb3J0IHtSZXN0U2VydmljZSBhcyDJtWN9IGZyb20gJy4vbGliL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XG5leHBvcnQge0NvbmZpZ1N0YXRlIGFzIMm1cH0gZnJvbSAnLi9saWIvc3RhdGVzJztcbmV4cG9ydCB7Q29uZmlnU3RhdGUgYXMgybVqfSBmcm9tICcuL2xpYi9zdGF0ZXMvY29uZmlnLnN0YXRlJztcbmV4cG9ydCB7UHJvZmlsZVN0YXRlIGFzIMm1YX0gZnJvbSAnLi9saWIvc3RhdGVzL3Byb2ZpbGUuc3RhdGUnO1xuZXhwb3J0IHtTZXNzaW9uU3RhdGUgYXMgybVofSBmcm9tICcuL2xpYi9zdGF0ZXMvc2Vzc2lvbi5zdGF0ZSc7XG5leHBvcnQge2dldEluaXRpYWxEYXRhIGFzIMm1eX0gZnJvbSAnLi9saWIvdXRpbHMvaW5pdGlhbC11dGlscyc7Il19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/actions/config.actions.js b/npm/ng-packs/dist/core/esm5/lib/actions/config.actions.js new file mode 100644 index 00000000000..fc8458ce1e3 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/actions/config.actions.js @@ -0,0 +1,33 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var PatchRouteByName = /** @class */ (function () { + function PatchRouteByName(name, newValue) { + this.name = name; + this.newValue = newValue; + } + PatchRouteByName.type = '[Config] Patch Route By Name'; + return PatchRouteByName; +}()); +export { PatchRouteByName }; +if (false) { + /** @type {?} */ + PatchRouteByName.type; + /** @type {?} */ + PatchRouteByName.prototype.name; + /** @type {?} */ + PatchRouteByName.prototype.newValue; +} +var ConfigGetAppConfiguration = /** @class */ (function () { + function ConfigGetAppConfiguration() { + } + ConfigGetAppConfiguration.type = '[Config] Get App Configuration'; + return ConfigGetAppConfiguration; +}()); +export { ConfigGetAppConfiguration }; +if (false) { + /** @type {?} */ + ConfigGetAppConfiguration.type; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmFjdGlvbnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvYWN0aW9ucy9jb25maWcuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUE7SUFFRSwwQkFBbUIsSUFBWSxFQUFTLFFBQTRCO1FBQWpELFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFvQjtJQUFHLENBQUM7SUFEeEQscUJBQUksR0FBRyw4QkFBOEIsQ0FBQztJQUV4RCx1QkFBQztDQUFBLEFBSEQsSUFHQztTQUhZLGdCQUFnQjs7O0lBQzNCLHNCQUFzRDs7SUFDMUMsZ0NBQW1COztJQUFFLG9DQUFtQzs7QUFHdEU7SUFBQTtJQUVBLENBQUM7SUFEaUIsOEJBQUksR0FBRyxnQ0FBZ0MsQ0FBQztJQUMxRCxnQ0FBQztDQUFBLEFBRkQsSUFFQztTQUZZLHlCQUF5Qjs7O0lBQ3BDLCtCQUF3RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCB9IGZyb20gJy4uL21vZGVscyc7XG5cbmV4cG9ydCBjbGFzcyBQYXRjaFJvdXRlQnlOYW1lIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0NvbmZpZ10gUGF0Y2ggUm91dGUgQnkgTmFtZSc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyBuZXdWYWx1ZTogUGFydGlhbDxBQlAuUm91dGU+KSB7fVxufVxuXG5leHBvcnQgY2xhc3MgQ29uZmlnR2V0QXBwQ29uZmlndXJhdGlvbiB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tDb25maWddIEdldCBBcHAgQ29uZmlndXJhdGlvbic7XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/actions/index.js b/npm/ng-packs/dist/core/esm5/lib/actions/index.js new file mode 100644 index 00000000000..1b4928b55d9 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/actions/index.js @@ -0,0 +1,10 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { PatchRouteByName, ConfigGetAppConfiguration } from './config.actions'; +export { LoaderStart, LoaderStop } from './loader.actions'; +export { ProfileGet, ProfileUpdate, ProfileChangePassword } from './profile.actions'; +export { RestOccurError } from './rest.actions'; +export { SessionSetLanguage } from './session.actions'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvYWN0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsNERBQWMsa0JBQWtCLENBQUM7QUFDakMsd0NBQWMsa0JBQWtCLENBQUM7QUFDakMsaUVBQWMsbUJBQW1CLENBQUM7QUFDbEMsK0JBQWMsZ0JBQWdCLENBQUM7QUFDL0IsbUNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbmZpZy5hY3Rpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbG9hZGVyLmFjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9maWxlLmFjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXN0LmFjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXNzaW9uLmFjdGlvbnMnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/actions/loader.actions.js b/npm/ng-packs/dist/core/esm5/lib/actions/loader.actions.js new file mode 100644 index 00000000000..ec3461bec14 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/actions/loader.actions.js @@ -0,0 +1,33 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var LoaderStart = /** @class */ (function () { + function LoaderStart(payload) { + this.payload = payload; + } + LoaderStart.type = '[Loader] Start'; + return LoaderStart; +}()); +export { LoaderStart }; +if (false) { + /** @type {?} */ + LoaderStart.type; + /** @type {?} */ + LoaderStart.prototype.payload; +} +var LoaderStop = /** @class */ (function () { + function LoaderStop(payload) { + this.payload = payload; + } + LoaderStop.type = '[Loader] Stop'; + return LoaderStop; +}()); +export { LoaderStop }; +if (false) { + /** @type {?} */ + LoaderStop.type; + /** @type {?} */ + LoaderStop.prototype.payload; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmFjdGlvbnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvYWN0aW9ucy9sb2FkZXIuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUE7SUFFRSxxQkFBbUIsT0FBeUI7UUFBekIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7SUFBRyxDQUFDO0lBRGhDLGdCQUFJLEdBQUcsZ0JBQWdCLENBQUM7SUFFMUMsa0JBQUM7Q0FBQSxBQUhELElBR0M7U0FIWSxXQUFXOzs7SUFDdEIsaUJBQXdDOztJQUM1Qiw4QkFBZ0M7O0FBRzlDO0lBRUUsb0JBQW1CLE9BQXlCO1FBQXpCLFlBQU8sR0FBUCxPQUFPLENBQWtCO0lBQUcsQ0FBQztJQURoQyxlQUFJLEdBQUcsZUFBZSxDQUFDO0lBRXpDLGlCQUFDO0NBQUEsQUFIRCxJQUdDO1NBSFksVUFBVTs7O0lBQ3JCLGdCQUF1Qzs7SUFDM0IsNkJBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmV4cG9ydCBjbGFzcyBMb2FkZXJTdGFydCB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tMb2FkZXJdIFN0YXJ0JztcbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IEh0dHBSZXF1ZXN0PGFueT4pIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBMb2FkZXJTdG9wIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0xvYWRlcl0gU3RvcCc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBIdHRwUmVxdWVzdDxhbnk+KSB7fVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/actions/profile.actions.js b/npm/ng-packs/dist/core/esm5/lib/actions/profile.actions.js new file mode 100644 index 00000000000..d69577dd496 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/actions/profile.actions.js @@ -0,0 +1,44 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ProfileGet = /** @class */ (function () { + function ProfileGet() { + } + ProfileGet.type = '[Profile] Get'; + return ProfileGet; +}()); +export { ProfileGet }; +if (false) { + /** @type {?} */ + ProfileGet.type; +} +var ProfileUpdate = /** @class */ (function () { + function ProfileUpdate(payload) { + this.payload = payload; + } + ProfileUpdate.type = '[Profile] Update'; + return ProfileUpdate; +}()); +export { ProfileUpdate }; +if (false) { + /** @type {?} */ + ProfileUpdate.type; + /** @type {?} */ + ProfileUpdate.prototype.payload; +} +var ProfileChangePassword = /** @class */ (function () { + function ProfileChangePassword(payload) { + this.payload = payload; + } + ProfileChangePassword.type = '[Profile] Change Password'; + return ProfileChangePassword; +}()); +export { ProfileChangePassword }; +if (false) { + /** @type {?} */ + ProfileChangePassword.type; + /** @type {?} */ + ProfileChangePassword.prototype.payload; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL2FjdGlvbnMvcHJvZmlsZS5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQTtJQUFBO0lBRUEsQ0FBQztJQURpQixlQUFJLEdBQUcsZUFBZSxDQUFDO0lBQ3pDLGlCQUFDO0NBQUEsQUFGRCxJQUVDO1NBRlksVUFBVTs7O0lBQ3JCLGdCQUF1Qzs7QUFHekM7SUFFRSx1QkFBbUIsT0FBeUI7UUFBekIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7SUFBRyxDQUFDO0lBRGhDLGtCQUFJLEdBQUcsa0JBQWtCLENBQUM7SUFFNUMsb0JBQUM7Q0FBQSxBQUhELElBR0M7U0FIWSxhQUFhOzs7SUFDeEIsbUJBQTBDOztJQUM5QixnQ0FBZ0M7O0FBRzlDO0lBRUUsK0JBQW1CLE9BQXNDO1FBQXRDLFlBQU8sR0FBUCxPQUFPLENBQStCO0lBQUcsQ0FBQztJQUQ3QywwQkFBSSxHQUFHLDJCQUEyQixDQUFDO0lBRXJELDRCQUFDO0NBQUEsQUFIRCxJQUdDO1NBSFkscUJBQXFCOzs7SUFDaEMsMkJBQW1EOztJQUN2Qyx3Q0FBNkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9maWxlIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGNsYXNzIFByb2ZpbGVHZXQge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbUHJvZmlsZV0gR2V0Jztcbn1cblxuZXhwb3J0IGNsYXNzIFByb2ZpbGVVcGRhdGUge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbUHJvZmlsZV0gVXBkYXRlJztcbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IFByb2ZpbGUuUmVzcG9uc2UpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9maWxlQ2hhbmdlUGFzc3dvcmQge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbUHJvZmlsZV0gQ2hhbmdlIFBhc3N3b3JkJztcbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IFByb2ZpbGUuQ2hhbmdlUGFzc3dvcmRSZXF1ZXN0KSB7fVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/actions/rest.actions.js b/npm/ng-packs/dist/core/esm5/lib/actions/rest.actions.js new file mode 100644 index 00000000000..1b75d995006 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/actions/rest.actions.js @@ -0,0 +1,19 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var RestOccurError = /** @class */ (function () { + function RestOccurError(payload) { + this.payload = payload; + } + RestOccurError.type = '[Rest] Error'; + return RestOccurError; +}()); +export { RestOccurError }; +if (false) { + /** @type {?} */ + RestOccurError.type; + /** @type {?} */ + RestOccurError.prototype.payload; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL2FjdGlvbnMvcmVzdC5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQTtJQUVFLHdCQUFtQixPQUFnQztRQUFoQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtJQUFHLENBQUM7SUFEdkMsbUJBQUksR0FBRyxjQUFjLENBQUM7SUFFeEMscUJBQUM7Q0FBQSxBQUhELElBR0M7U0FIWSxjQUFjOzs7SUFDekIsb0JBQXNDOztJQUMxQixpQ0FBdUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuZXhwb3J0IGNsYXNzIFJlc3RPY2N1ckVycm9yIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1Jlc3RdIEVycm9yJztcbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSB7fVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/actions/session.actions.js b/npm/ng-packs/dist/core/esm5/lib/actions/session.actions.js new file mode 100644 index 00000000000..a76613b257a --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/actions/session.actions.js @@ -0,0 +1,19 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var SessionSetLanguage = /** @class */ (function () { + function SessionSetLanguage(payload) { + this.payload = payload; + } + SessionSetLanguage.type = '[Session] Set Language'; + return SessionSetLanguage; +}()); +export { SessionSetLanguage }; +if (false) { + /** @type {?} */ + SessionSetLanguage.type; + /** @type {?} */ + SessionSetLanguage.prototype.payload; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL2FjdGlvbnMvc2Vzc2lvbi5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtJQUVFLDRCQUFtQixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7SUFEdEIsdUJBQUksR0FBRyx3QkFBd0IsQ0FBQztJQUVsRCx5QkFBQztDQUFBLEFBSEQsSUFHQztTQUhZLGtCQUFrQjs7O0lBQzdCLHdCQUFnRDs7SUFDcEMscUNBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFNlc3Npb25TZXRMYW5ndWFnZSB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tTZXNzaW9uXSBTZXQgTGFuZ3VhZ2UnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogc3RyaW5nKSB7fVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/components/dynamic-layout.component.js b/npm/ng-packs/dist/core/esm5/lib/components/dynamic-layout.component.js new file mode 100644 index 00000000000..945f8d48df7 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/components/dynamic-layout.component.js @@ -0,0 +1,123 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Component } from '@angular/core'; +import { NavigationEnd, Router } from '@angular/router'; +import { Select, Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { ConfigState } from '../states'; +import { takeUntilDestroy } from '../utils'; +import snq from 'snq'; +var DynamicLayoutComponent = /** @class */ (function () { + function DynamicLayoutComponent(router, store) { + var _this = this; + this.router = router; + this.store = store; + this.router.events.pipe(takeUntilDestroy(this)).subscribe((/** + * @param {?} event + * @return {?} + */ + function (event) { + if (event instanceof NavigationEnd) { + var segments = _this.router.parseUrl(event.url).root.children.primary.segments; + var _a = _this.store.selectSnapshot(ConfigState.getAll), layouts = _a.requirements.layouts, routes = _a.routes; + /** @type {?} */ + var layout_1 = findLayout(segments, routes); + _this.layout = layouts.filter((/** + * @param {?} l + * @return {?} + */ + function (l) { return !!l; })).find((/** + * @param {?} l + * @return {?} + */ + function (l) { return snq((/** + * @return {?} + */ + function () { return l.type.toLowerCase().indexOf(layout_1); }), -1) > -1; })); + } + })); + } + /** + * @return {?} + */ + DynamicLayoutComponent.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { }; + DynamicLayoutComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-dynamic-layout', + template: "\n \n\n \n \n " + }] } + ]; + /** @nocollapse */ + DynamicLayoutComponent.ctorParameters = function () { return [ + { type: Router }, + { type: Store } + ]; }; + tslib_1.__decorate([ + Select(ConfigState.getOne('requirements')), + tslib_1.__metadata("design:type", Observable) + ], DynamicLayoutComponent.prototype, "requirements$", void 0); + return DynamicLayoutComponent; +}()); +export { DynamicLayoutComponent }; +if (false) { + /** @type {?} */ + DynamicLayoutComponent.prototype.requirements$; + /** @type {?} */ + DynamicLayoutComponent.prototype.layout; + /** + * @type {?} + * @private + */ + DynamicLayoutComponent.prototype.router; + /** + * @type {?} + * @private + */ + DynamicLayoutComponent.prototype.store; +} +/** + * @param {?} segments + * @param {?} routes + * @return {?} + */ +function findLayout(segments, routes) { + /** @type {?} */ + var layout = "empty" /* empty */; + /** @type {?} */ + var route = routes + .reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { return (val.wrapper ? tslib_1.__spread(acc, val.children) : tslib_1.__spread(acc, [val])); }), []) + .find((/** + * @param {?} r + * @return {?} + */ + function (r) { return r.path === segments[0].path; })); + if (route) { + if (route.layout) { + layout = route.layout; + } + if (route.children && route.children.length) { + /** @type {?} */ + var child = route.children.find((/** + * @param {?} c + * @return {?} + */ + function (c) { return c.path === segments[1].path; })); + if (child.layout) { + layout = child.layout; + } + } + } + return layout; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZHluYW1pYy1sYXlvdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQWMsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR2xDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVDLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztBQUV0QjtJQWVFLGdDQUFvQixNQUFjLEVBQVUsS0FBWTtRQUF4RCxpQkFjQztRQWRtQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTOzs7O1FBQUMsVUFBQSxLQUFLO1lBQzdELElBQUksS0FBSyxZQUFZLGFBQWEsRUFBRTtnQkFDMUIsSUFBQSwwRUFBUTtnQkFDVixJQUFBLG1EQUcyQyxFQUYvQixpQ0FBTyxFQUN2QixrQkFDK0M7O29CQUUzQyxRQUFNLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7Z0JBRTNDLEtBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU07Ozs7Z0JBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsQ0FBQyxFQUFILENBQUcsRUFBQyxDQUFDLElBQUk7Ozs7Z0JBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxHQUFHOzs7Z0JBQUMsY0FBTSxPQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQU0sQ0FBQyxFQUFwQyxDQUFvQyxHQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQXhELENBQXdELEVBQUMsQ0FBQzthQUM1RztRQUNILENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUVELDRDQUFXOzs7SUFBWCxjQUFlLENBQUM7O2dCQS9CakIsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRSxvU0FLVDtpQkFDRjs7OztnQkFqQnVCLE1BQU07Z0JBQ2IsS0FBSzs7SUFtQnBCO1FBREMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7MENBQzVCLFVBQVU7aUVBQXNCO0lBcUJqRCw2QkFBQztDQUFBLEFBaENELElBZ0NDO1NBdkJZLHNCQUFzQjs7O0lBQ2pDLCtDQUMrQzs7SUFFL0Msd0NBQWtCOzs7OztJQUVOLHdDQUFzQjs7Ozs7SUFBRSx1Q0FBb0I7Ozs7Ozs7QUFtQjFELFNBQVMsVUFBVSxDQUFDLFFBQXNCLEVBQUUsTUFBdUI7O1FBQzdELE1BQU0sc0JBQW9COztRQUV4QixLQUFLLEdBQUcsTUFBTTtTQUNqQixNQUFNOzs7OztJQUFDLFVBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSyxPQUFBLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGtCQUFLLEdBQUcsRUFBSyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsa0JBQUssR0FBRyxHQUFFLEdBQUcsRUFBQyxDQUFDLEVBQXpELENBQXlELEdBQUUsRUFBRSxDQUFDO1NBQ25GLElBQUk7Ozs7SUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBM0IsQ0FBMkIsRUFBQztJQUV6QyxJQUFJLEtBQUssRUFBRTtRQUNULElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNoQixNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUN2QjtRQUVELElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTs7Z0JBQ3JDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUk7Ozs7WUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBM0IsQ0FBMkIsRUFBQztZQUVuRSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQ2hCLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO2FBQ3ZCO1NBQ0Y7S0FDRjtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBVcmxTZWdtZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBlTGF5b3V0VHlwZSB9IGZyb20gJy4uL2VudW1zJztcbmltcG9ydCB7IEFCUCwgQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IENvbmZpZ1N0YXRlIH0gZnJvbSAnLi4vc3RhdGVzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3kgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgc25xIGZyb20gJ3NucSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FicC1keW5hbWljLWxheW91dCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxheW91dCA/IGNvbXBvbmVudE91dGxldCA6IHJvdXRlck91dGxldFwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNyb3V0ZXJPdXRsZXQ+PHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjb21wb25lbnRPdXRsZXQ+PG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJsYXlvdXRcIj48L25nLWNvbnRhaW5lcj48L25nLXRlbXBsYXRlPlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQFNlbGVjdChDb25maWdTdGF0ZS5nZXRPbmUoJ3JlcXVpcmVtZW50cycpKVxuICByZXF1aXJlbWVudHMkOiBPYnNlcnZhYmxlPENvbmZpZy5SZXF1aXJlbWVudHM+O1xuXG4gIGxheW91dDogVHlwZTxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUodGFrZVVudGlsRGVzdHJveSh0aGlzKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgY29uc3QgeyBzZWdtZW50cyB9ID0gdGhpcy5yb3V0ZXIucGFyc2VVcmwoZXZlbnQudXJsKS5yb290LmNoaWxkcmVuLnByaW1hcnk7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICByZXF1aXJlbWVudHM6IHsgbGF5b3V0cyB9LFxuICAgICAgICAgIHJvdXRlcyxcbiAgICAgICAgfSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoQ29uZmlnU3RhdGUuZ2V0QWxsKTtcblxuICAgICAgICBjb25zdCBsYXlvdXQgPSBmaW5kTGF5b3V0KHNlZ21lbnRzLCByb3V0ZXMpO1xuXG4gICAgICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0cy5maWx0ZXIobCA9PiAhIWwpLmZpbmQobCA9PiBzbnEoKCkgPT4gbC50eXBlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihsYXlvdXQpLCAtMSkgPiAtMSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHt9XG59XG5cbmZ1bmN0aW9uIGZpbmRMYXlvdXQoc2VnbWVudHM6IFVybFNlZ21lbnRbXSwgcm91dGVzOiBBQlAuRnVsbFJvdXRlW10pOiBlTGF5b3V0VHlwZSB7XG4gIGxldCBsYXlvdXQgPSBlTGF5b3V0VHlwZS5lbXB0eTtcblxuICBjb25zdCByb3V0ZSA9IHJvdXRlc1xuICAgIC5yZWR1Y2UoKGFjYywgdmFsKSA9PiAodmFsLndyYXBwZXIgPyBbLi4uYWNjLCAuLi52YWwuY2hpbGRyZW5dIDogWy4uLmFjYywgdmFsXSksIFtdKVxuICAgIC5maW5kKHIgPT4gci5wYXRoID09PSBzZWdtZW50c1swXS5wYXRoKTtcblxuICBpZiAocm91dGUpIHtcbiAgICBpZiAocm91dGUubGF5b3V0KSB7XG4gICAgICBsYXlvdXQgPSByb3V0ZS5sYXlvdXQ7XG4gICAgfVxuXG4gICAgaWYgKHJvdXRlLmNoaWxkcmVuICYmIHJvdXRlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgY29uc3QgY2hpbGQgPSByb3V0ZS5jaGlsZHJlbi5maW5kKGMgPT4gYy5wYXRoID09PSBzZWdtZW50c1sxXS5wYXRoKTtcblxuICAgICAgaWYgKGNoaWxkLmxheW91dCkge1xuICAgICAgICBsYXlvdXQgPSBjaGlsZC5sYXlvdXQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxheW91dDtcbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/components/index.js b/npm/ng-packs/dist/core/esm5/lib/components/index.js new file mode 100644 index 00000000000..ddc4caca23f --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/components/index.js @@ -0,0 +1,7 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { DynamicLayoutComponent } from './dynamic-layout.component'; +export { RouterOutletComponent } from './router-outlet.component'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsdUNBQWMsNEJBQTRCLENBQUM7QUFDM0Msc0NBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2R5bmFtaWMtbGF5b3V0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3JvdXRlci1vdXRsZXQuY29tcG9uZW50JztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/components/router-outlet.component.js b/npm/ng-packs/dist/core/esm5/lib/components/router-outlet.component.js new file mode 100644 index 00000000000..94c22f170a5 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/components/router-outlet.component.js @@ -0,0 +1,18 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component } from '@angular/core'; +var RouterOutletComponent = /** @class */ (function () { + function RouterOutletComponent() { + } + RouterOutletComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-router-outlet', + template: "\n \n " + }] } + ]; + return RouterOutletComponent; +}()); +export { RouterOutletComponent }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLW91dGxldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9yb3V0ZXItb3V0bGV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQztJQUFBO0lBTW9DLENBQUM7O2dCQU5wQyxTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsUUFBUSxFQUFFLDJDQUVUO2lCQUNGOztJQUNtQyw0QkFBQztDQUFBLEFBTnJDLElBTXFDO1NBQXhCLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtcm91dGVyLW91dGxldCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBSb3V0ZXJPdXRsZXRDb21wb25lbnQge31cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/core.module.js b/npm/ng-packs/dist/core/esm5/lib/core.module.js new file mode 100644 index 00000000000..c128a3ddf87 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/core.module.js @@ -0,0 +1,104 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { CommonModule } from '@angular/common'; +import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; +import { APP_INITIALIZER, Injector, NgModule } from '@angular/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { RouterModule } from '@angular/router'; +import { NgxsRouterPluginModule } from '@ngxs/router-plugin'; +import { NgxsStoragePluginModule } from '@ngxs/storage-plugin'; +import { NgxsModule, NGXS_PLUGINS } from '@ngxs/store'; +import { DynamicLayoutComponent } from './components/dynamic-layout.component'; +import { RouterOutletComponent } from './components/router-outlet.component'; +import { PermissionDirective } from './directives/permission.directive'; +import { VisibilityDirective } from './directives/visibility.directive'; +import { ApiInterceptor } from './interceptors/api.interceptor'; +import { LocalizationPipe } from './pipes/localization.pipe'; +import { ConfigPlugin, NGXS_CONFIG_PLUGIN_OPTIONS } from './plugins/config.plugin'; +import { ConfigState } from './states/config.state'; +import { ProfileState } from './states/profile.state'; +import { SessionState } from './states/session.state'; +import { getInitialData } from './utils/initial-utils'; +import { EllipsisDirective } from './directives/ellipsis.directive'; +var CoreModule = /** @class */ (function () { + function CoreModule() { + } + /** + * @param {?=} options + * @return {?} + */ + CoreModule.forRoot = /** + * @param {?=} options + * @return {?} + */ + function (options) { + if (options === void 0) { options = (/** @type {?} */ ({})); } + return { + ngModule: CoreModule, + providers: [ + { + provide: NGXS_PLUGINS, + useClass: ConfigPlugin, + multi: true, + }, + { + provide: NGXS_CONFIG_PLUGIN_OPTIONS, + useValue: options, + }, + { + provide: HTTP_INTERCEPTORS, + useClass: ApiInterceptor, + multi: true, + }, + { + provide: APP_INITIALIZER, + multi: true, + deps: [Injector], + useFactory: getInitialData, + }, + ], + }; + }; + CoreModule.decorators = [ + { type: NgModule, args: [{ + imports: [ + NgxsModule.forFeature([ProfileState, SessionState, ConfigState]), + NgxsStoragePluginModule.forRoot({ key: 'SessionState' }), + NgxsRouterPluginModule.forRoot(), + CommonModule, + HttpClientModule, + FormsModule, + ReactiveFormsModule, + RouterModule, + ], + declarations: [ + RouterOutletComponent, + DynamicLayoutComponent, + PermissionDirective, + VisibilityDirective, + LocalizationPipe, + EllipsisDirective, + ], + exports: [ + CommonModule, + HttpClientModule, + FormsModule, + ReactiveFormsModule, + RouterModule, + RouterOutletComponent, + DynamicLayoutComponent, + PermissionDirective, + VisibilityDirective, + EllipsisDirective, + LocalizationPipe, + ], + providers: [LocalizationPipe], + entryComponents: [RouterOutletComponent, DynamicLayoutComponent], + },] } + ]; + return CoreModule; +}()); +export { CoreModule }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvY29yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFcEU7SUFBQTtJQStEQSxDQUFDOzs7OztJQTNCUSxrQkFBTzs7OztJQUFkLFVBQWUsT0FBd0I7UUFBeEIsd0JBQUEsRUFBQSw2QkFBVSxFQUFFLEVBQVk7UUFDckMsT0FBTztZQUNMLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsWUFBWTtvQkFDckIsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLEtBQUssRUFBRSxJQUFJO2lCQUNaO2dCQUNEO29CQUNFLE9BQU8sRUFBRSwwQkFBMEI7b0JBQ25DLFFBQVEsRUFBRSxPQUFPO2lCQUNsQjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsaUJBQWlCO29CQUMxQixRQUFRLEVBQUUsY0FBYztvQkFDeEIsS0FBSyxFQUFFLElBQUk7aUJBQ1o7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLEtBQUssRUFBRSxJQUFJO29CQUNYLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQztvQkFDaEIsVUFBVSxFQUFFLGNBQWM7aUJBQzNCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7Z0JBOURGLFFBQVEsU0FBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7d0JBQ2hFLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsQ0FBQzt3QkFDeEQsc0JBQXNCLENBQUMsT0FBTyxFQUFFO3dCQUNoQyxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLFlBQVk7cUJBQ2I7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0QixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixpQkFBaUI7cUJBQ2xCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1oscUJBQXFCO3dCQUNyQixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixpQkFBaUI7d0JBQ2pCLGdCQUFnQjtxQkFDakI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzdCLGVBQWUsRUFBRSxDQUFDLHFCQUFxQixFQUFFLHNCQUFzQixDQUFDO2lCQUNqRTs7SUE2QkQsaUJBQUM7Q0FBQSxBQS9ERCxJQStEQztTQTVCWSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUsIEhUVFBfSU5URVJDRVBUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBJbmplY3RvciwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE5neHNSb3V0ZXJQbHVnaW5Nb2R1bGUgfSBmcm9tICdAbmd4cy9yb3V0ZXItcGx1Z2luJztcbmltcG9ydCB7IE5neHNTdG9yYWdlUGx1Z2luTW9kdWxlIH0gZnJvbSAnQG5neHMvc3RvcmFnZS1wbHVnaW4nO1xuaW1wb3J0IHsgTmd4c01vZHVsZSwgTkdYU19QTFVHSU5TIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgRHluYW1pY0xheW91dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9keW5hbWljLWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUm91dGVyT3V0bGV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JvdXRlci1vdXRsZXQuY29tcG9uZW50JztcbmltcG9ydCB7IFBlcm1pc3Npb25EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcGVybWlzc2lvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVmlzaWJpbGl0eURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy92aXNpYmlsaXR5LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBcGlJbnRlcmNlcHRvciB9IGZyb20gJy4vaW50ZXJjZXB0b3JzL2FwaS5pbnRlcmNlcHRvcic7XG5pbXBvcnQgeyBBQlAgfSBmcm9tICcuL21vZGVscy9jb21tb24nO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uUGlwZSB9IGZyb20gJy4vcGlwZXMvbG9jYWxpemF0aW9uLnBpcGUnO1xuaW1wb3J0IHsgQ29uZmlnUGx1Z2luLCBOR1hTX0NPTkZJR19QTFVHSU5fT1BUSU9OUyB9IGZyb20gJy4vcGx1Z2lucy9jb25maWcucGx1Z2luJztcbmltcG9ydCB7IENvbmZpZ1N0YXRlIH0gZnJvbSAnLi9zdGF0ZXMvY29uZmlnLnN0YXRlJztcbmltcG9ydCB7IFByb2ZpbGVTdGF0ZSB9IGZyb20gJy4vc3RhdGVzL3Byb2ZpbGUuc3RhdGUnO1xuaW1wb3J0IHsgU2Vzc2lvblN0YXRlIH0gZnJvbSAnLi9zdGF0ZXMvc2Vzc2lvbi5zdGF0ZSc7XG5pbXBvcnQgeyBnZXRJbml0aWFsRGF0YSB9IGZyb20gJy4vdXRpbHMvaW5pdGlhbC11dGlscyc7XG5pbXBvcnQgeyBFbGxpcHNpc0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9lbGxpcHNpcy5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgTmd4c01vZHVsZS5mb3JGZWF0dXJlKFtQcm9maWxlU3RhdGUsIFNlc3Npb25TdGF0ZSwgQ29uZmlnU3RhdGVdKSxcbiAgICBOZ3hzU3RvcmFnZVBsdWdpbk1vZHVsZS5mb3JSb290KHsga2V5OiAnU2Vzc2lvblN0YXRlJyB9KSxcbiAgICBOZ3hzUm91dGVyUGx1Z2luTW9kdWxlLmZvclJvb3QoKSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSHR0cENsaWVudE1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgUm91dGVyT3V0bGV0Q29tcG9uZW50LFxuICAgIER5bmFtaWNMYXlvdXRDb21wb25lbnQsXG4gICAgUGVybWlzc2lvbkRpcmVjdGl2ZSxcbiAgICBWaXNpYmlsaXR5RGlyZWN0aXZlLFxuICAgIExvY2FsaXphdGlvblBpcGUsXG4gICAgRWxsaXBzaXNEaXJlY3RpdmUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSHR0cENsaWVudE1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBSb3V0ZXJPdXRsZXRDb21wb25lbnQsXG4gICAgRHluYW1pY0xheW91dENvbXBvbmVudCxcbiAgICBQZXJtaXNzaW9uRGlyZWN0aXZlLFxuICAgIFZpc2liaWxpdHlEaXJlY3RpdmUsXG4gICAgRWxsaXBzaXNEaXJlY3RpdmUsXG4gICAgTG9jYWxpemF0aW9uUGlwZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbTG9jYWxpemF0aW9uUGlwZV0sXG4gIGVudHJ5Q29tcG9uZW50czogW1JvdXRlck91dGxldENvbXBvbmVudCwgRHluYW1pY0xheW91dENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIENvcmVNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChvcHRpb25zID0ge30gYXMgQUJQLlJvb3QpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IENvcmVNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IE5HWFNfUExVR0lOUyxcbiAgICAgICAgICB1c2VDbGFzczogQ29uZmlnUGx1Z2luLFxuICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogTkdYU19DT05GSUdfUExVR0lOX09QVElPTlMsXG4gICAgICAgICAgdXNlVmFsdWU6IG9wdGlvbnMsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcbiAgICAgICAgICB1c2VDbGFzczogQXBpSW50ZXJjZXB0b3IsXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgZGVwczogW0luamVjdG9yXSxcbiAgICAgICAgICB1c2VGYWN0b3J5OiBnZXRJbml0aWFsRGF0YSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/directives/ellipsis.directive.js b/npm/ng-packs/dist/core/esm5/lib/directives/ellipsis.directive.js new file mode 100644 index 00000000000..fc92fe99ec8 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/directives/ellipsis.directive.js @@ -0,0 +1,90 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { ChangeDetectorRef, Directive, ElementRef, HostBinding, Input } from '@angular/core'; +var EllipsisDirective = /** @class */ (function () { + function EllipsisDirective(cdRef, elRef) { + this.cdRef = cdRef; + this.elRef = elRef; + this.enabled = true; + } + Object.defineProperty(EllipsisDirective.prototype, "class", { + get: /** + * @return {?} + */ + function () { + return this.enabled; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(EllipsisDirective.prototype, "maxWidth", { + get: /** + * @return {?} + */ + function () { + return this.enabled ? this.witdh || '180px' : undefined; + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + EllipsisDirective.prototype.ngAfterContentInit = /** + * @return {?} + */ + function () { + var _this = this; + setTimeout((/** + * @return {?} + */ + function () { + /** @type {?} */ + var title = _this.title; + _this.title = title || ((/** @type {?} */ (_this.elRef.nativeElement))).innerText; + if (_this.title !== title) { + _this.cdRef.detectChanges(); + } + }), 0); + }; + EllipsisDirective.decorators = [ + { type: Directive, args: [{ + selector: '[abpEllipsis]', + },] } + ]; + /** @nocollapse */ + EllipsisDirective.ctorParameters = function () { return [ + { type: ChangeDetectorRef }, + { type: ElementRef } + ]; }; + EllipsisDirective.propDecorators = { + witdh: [{ type: Input, args: ['abpEllipsis',] }], + title: [{ type: HostBinding, args: ['title',] }, { type: Input }], + enabled: [{ type: Input, args: ['abpEllipsisEnabled',] }], + class: [{ type: HostBinding, args: ['class.abp-ellipsis',] }], + maxWidth: [{ type: HostBinding, args: ['style.max-width',] }] + }; + return EllipsisDirective; +}()); +export { EllipsisDirective }; +if (false) { + /** @type {?} */ + EllipsisDirective.prototype.witdh; + /** @type {?} */ + EllipsisDirective.prototype.title; + /** @type {?} */ + EllipsisDirective.prototype.enabled; + /** + * @type {?} + * @private + */ + EllipsisDirective.prototype.cdRef; + /** + * @type {?} + * @private + */ + EllipsisDirective.prototype.elRef; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzaXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL2RpcmVjdGl2ZXMvZWxsaXBzaXMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQW9CLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRztJQXdCRSwyQkFBb0IsS0FBd0IsRUFBVSxLQUFpQjtRQUFuRCxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUFVLFVBQUssR0FBTCxLQUFLLENBQVk7UUFadkUsWUFBTyxHQUFHLElBQUksQ0FBQztJQVkyRCxDQUFDO0lBVjNFLHNCQUNJLG9DQUFLOzs7O1FBRFQ7WUFFRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDdEIsQ0FBQzs7O09BQUE7SUFFRCxzQkFDSSx1Q0FBUTs7OztRQURaO1lBRUUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzFELENBQUM7OztPQUFBOzs7O0lBSUQsOENBQWtCOzs7SUFBbEI7UUFBQSxpQkFTQztRQVJDLFVBQVU7OztRQUFDOztnQkFDSCxLQUFLLEdBQUcsS0FBSSxDQUFDLEtBQUs7WUFDeEIsS0FBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksQ0FBQyxtQkFBQSxLQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBRTFFLElBQUksS0FBSSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7Z0JBQ3hCLEtBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDNUI7UUFDSCxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDOztnQkFuQ0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO2lCQUMxQjs7OztnQkFKMEIsaUJBQWlCO2dCQUFhLFVBQVU7Ozt3QkFNaEUsS0FBSyxTQUFDLGFBQWE7d0JBR25CLFdBQVcsU0FBQyxPQUFPLGNBQ25CLEtBQUs7MEJBR0wsS0FBSyxTQUFDLG9CQUFvQjt3QkFHMUIsV0FBVyxTQUFDLG9CQUFvQjsyQkFLaEMsV0FBVyxTQUFDLGlCQUFpQjs7SUFpQmhDLHdCQUFDO0NBQUEsQUFwQ0QsSUFvQ0M7U0FqQ1ksaUJBQWlCOzs7SUFDNUIsa0NBQ2M7O0lBRWQsa0NBRWM7O0lBRWQsb0NBQ2U7Ozs7O0lBWUgsa0NBQWdDOzs7OztJQUFFLGtDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWJwRWxsaXBzaXNdJyxcbn0pXG5leHBvcnQgY2xhc3MgRWxsaXBzaXNEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgQElucHV0KCdhYnBFbGxpcHNpcycpXG4gIHdpdGRoOiBzdHJpbmc7XG5cbiAgQEhvc3RCaW5kaW5nKCd0aXRsZScpXG4gIEBJbnB1dCgpXG4gIHRpdGxlOiBzdHJpbmc7XG5cbiAgQElucHV0KCdhYnBFbGxpcHNpc0VuYWJsZWQnKVxuICBlbmFibGVkID0gdHJ1ZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFicC1lbGxpcHNpcycpXG4gIGdldCBjbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVkO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtd2lkdGgnKVxuICBnZXQgbWF4V2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlZCA/IHRoaXMud2l0ZGggfHwgJzE4MHB4JyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHRpdGxlID0gdGhpcy50aXRsZTtcbiAgICAgIHRoaXMudGl0bGUgPSB0aXRsZSB8fCAodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQ7XG5cbiAgICAgIGlmICh0aGlzLnRpdGxlICE9PSB0aXRsZSkge1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9LCAwKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/directives/index.js b/npm/ng-packs/dist/core/esm5/lib/directives/index.js new file mode 100644 index 00000000000..f4318663b7f --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/directives/index.js @@ -0,0 +1,8 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { EllipsisDirective } from './ellipsis.directive'; +export { PermissionDirective } from './permission.directive'; +export { VisibilityDirective } from './visibility.directive'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsa0NBQWMsc0JBQXNCLENBQUM7QUFDckMsb0NBQWMsd0JBQXdCLENBQUM7QUFDdkMsb0NBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VsbGlwc2lzLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3Blcm1pc3Npb24uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vdmlzaWJpbGl0eS5kaXJlY3RpdmUnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/directives/permission.directive.js b/npm/ng-packs/dist/core/esm5/lib/directives/permission.directive.js new file mode 100644 index 00000000000..0d45dcdb495 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/directives/permission.directive.js @@ -0,0 +1,81 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Directive, ElementRef, Input, Optional, Renderer2 } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { ConfigState } from '../states'; +import { takeUntilDestroy } from '../utils'; +var PermissionDirective = /** @class */ (function () { + function PermissionDirective(elRef, renderer, store) { + this.elRef = elRef; + this.renderer = renderer; + this.store = store; + } + /** + * @return {?} + */ + PermissionDirective.prototype.ngOnInit = /** + * @return {?} + */ + function () { + var _this = this; + if (this.condition) { + this.store + .select(ConfigState.getGrantedPolicy(this.condition)) + .pipe(takeUntilDestroy(this)) + .subscribe((/** + * @param {?} isGranted + * @return {?} + */ + function (isGranted) { + if (!isGranted) { + _this.renderer.removeChild(((/** @type {?} */ (_this.elRef.nativeElement))).parentElement, _this.elRef.nativeElement); + } + })); + } + }; + /** + * @return {?} + */ + PermissionDirective.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { }; + PermissionDirective.decorators = [ + { type: Directive, args: [{ + selector: '[abpPermission]', + },] } + ]; + /** @nocollapse */ + PermissionDirective.ctorParameters = function () { return [ + { type: ElementRef, decorators: [{ type: Optional }] }, + { type: Renderer2 }, + { type: Store } + ]; }; + PermissionDirective.propDecorators = { + condition: [{ type: Input, args: ['abpPermission',] }] + }; + return PermissionDirective; +}()); +export { PermissionDirective }; +if (false) { + /** @type {?} */ + PermissionDirective.prototype.condition; + /** + * @type {?} + * @private + */ + PermissionDirective.prototype.elRef; + /** + * @type {?} + * @private + */ + PermissionDirective.prototype.renderer; + /** + * @type {?} + * @private + */ + PermissionDirective.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy9wZXJtaXNzaW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFNUM7SUFNRSw2QkFBZ0MsS0FBaUIsRUFBVSxRQUFtQixFQUFVLEtBQVk7UUFBcEUsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFPO0lBQUcsQ0FBQzs7OztJQUV4RyxzQ0FBUTs7O0lBQVI7UUFBQSxpQkFjQztRQWJDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSztpQkFDUCxNQUFNLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUM1QixTQUFTOzs7O1lBQUMsVUFBQSxTQUFTO2dCQUNsQixJQUFJLENBQUMsU0FBUyxFQUFFO29CQUNkLEtBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUN2QixDQUFDLG1CQUFBLEtBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFlLENBQUMsQ0FBQyxhQUFhLEVBQ3ZELEtBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUN6QixDQUFDO2lCQUNIO1lBQ0gsQ0FBQyxFQUFDLENBQUM7U0FDTjtJQUNILENBQUM7Ozs7SUFFRCx5Q0FBVzs7O0lBQVgsY0FBcUIsQ0FBQzs7Z0JBeEJ2QixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtpQkFDNUI7Ozs7Z0JBUG1CLFVBQVUsdUJBV2YsUUFBUTtnQkFYNkMsU0FBUztnQkFDcEUsS0FBSzs7OzRCQVFYLEtBQUssU0FBQyxlQUFlOztJQXFCeEIsMEJBQUM7Q0FBQSxBQXpCRCxJQXlCQztTQXRCWSxtQkFBbUI7OztJQUM5Qix3Q0FBMEM7Ozs7O0lBRTlCLG9DQUFxQzs7Ozs7SUFBRSx1Q0FBMkI7Ozs7O0lBQUUsb0NBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgQ29uZmlnU3RhdGUgfSBmcm9tICcuLi9zdGF0ZXMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveSB9IGZyb20gJy4uL3V0aWxzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FicFBlcm1pc3Npb25dJyxcbn0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCdhYnBQZXJtaXNzaW9uJykgY29uZGl0aW9uOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIHN0b3JlOiBTdG9yZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5jb25kaXRpb24pIHtcbiAgICAgIHRoaXMuc3RvcmVcbiAgICAgICAgLnNlbGVjdChDb25maWdTdGF0ZS5nZXRHcmFudGVkUG9saWN5KHRoaXMuY29uZGl0aW9uKSlcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveSh0aGlzKSlcbiAgICAgICAgLnN1YnNjcmliZShpc0dyYW50ZWQgPT4ge1xuICAgICAgICAgIGlmICghaXNHcmFudGVkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKFxuICAgICAgICAgICAgICAodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50LFxuICAgICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7fVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/directives/visibility.directive.js b/npm/ng-packs/dist/core/esm5/lib/directives/visibility.directive.js new file mode 100644 index 00000000000..3d208599db6 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/directives/visibility.directive.js @@ -0,0 +1,108 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Directive, Input, Optional, ElementRef, Renderer2 } from '@angular/core'; +import { Subject } from 'rxjs'; +import snq from 'snq'; +var VisibilityDirective = /** @class */ (function () { + function VisibilityDirective(elRef, renderer) { + this.elRef = elRef; + this.renderer = renderer; + this.completed$ = new Subject(); + } + /** + * @return {?} + */ + VisibilityDirective.prototype.ngAfterViewInit = /** + * @return {?} + */ + function () { + var _this = this; + /** @type {?} */ + var observer = new MutationObserver((/** + * @param {?} mutations + * @return {?} + */ + function (mutations) { + mutations.forEach((/** + * @param {?} mutation + * @return {?} + */ + function (mutation) { + if (!mutation.target) + return; + /** @type {?} */ + var htmlNodes = snq((/** + * @return {?} + */ + function () { return Array.from(mutation.target.childNodes).filter((/** + * @param {?} node + * @return {?} + */ + function (node) { return node instanceof HTMLElement; })); }), []); + if (!htmlNodes.length) { + _this.renderer.removeChild(_this.elRef.nativeElement.parentElement, _this.elRef.nativeElement); + _this.disconnect(); + } + else { + setTimeout((/** + * @return {?} + */ + function () { + _this.disconnect(); + }), 0); + } + })); + })); + observer.observe(this.focusedElement, { + childList: true, + }); + this.completed$.subscribe((/** + * @return {?} + */ + function () { return observer.disconnect(); })); + }; + /** + * @return {?} + */ + VisibilityDirective.prototype.disconnect = /** + * @return {?} + */ + function () { + this.completed$.next(); + this.completed$.complete(); + }; + VisibilityDirective.decorators = [ + { type: Directive, args: [{ + selector: '[abpVisibility]', + },] } + ]; + /** @nocollapse */ + VisibilityDirective.ctorParameters = function () { return [ + { type: ElementRef, decorators: [{ type: Optional }] }, + { type: Renderer2 } + ]; }; + VisibilityDirective.propDecorators = { + focusedElement: [{ type: Input, args: ['abpVisibility',] }] + }; + return VisibilityDirective; +}()); +export { VisibilityDirective }; +if (false) { + /** @type {?} */ + VisibilityDirective.prototype.focusedElement; + /** @type {?} */ + VisibilityDirective.prototype.completed$; + /** + * @type {?} + * @private + */ + VisibilityDirective.prototype.elRef; + /** + * @type {?} + * @private + */ + VisibilityDirective.prototype.renderer; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaWJpbGl0eS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy92aXNpYmlsaXR5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBRXRCO0lBU0UsNkJBQWdDLEtBQWlCLEVBQVUsUUFBbUI7UUFBOUMsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFGOUUsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFFNkMsQ0FBQzs7OztJQUVsRiw2Q0FBZTs7O0lBQWY7UUFBQSxpQkEwQkM7O1lBekJPLFFBQVEsR0FBRyxJQUFJLGdCQUFnQjs7OztRQUFDLFVBQUEsU0FBUztZQUM3QyxTQUFTLENBQUMsT0FBTzs7OztZQUFDLFVBQUEsUUFBUTtnQkFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO29CQUFFLE9BQU87O29CQUV2QixTQUFTLEdBQUcsR0FBRzs7O2dCQUNuQixjQUFNLE9BQUEsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU07Ozs7Z0JBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxJQUFJLFlBQVksV0FBVyxFQUEzQixDQUEyQixFQUFDLEVBQWxGLENBQWtGLEdBQ3hGLEVBQUUsQ0FDSDtnQkFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtvQkFDckIsS0FBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLEtBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQzVGLEtBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztpQkFDbkI7cUJBQU07b0JBQ0wsVUFBVTs7O29CQUFDO3dCQUNULEtBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDcEIsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUNQO1lBQ0gsQ0FBQyxFQUFDLENBQUM7UUFDTCxDQUFDLEVBQUM7UUFFRixRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDcEMsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTOzs7UUFBQyxjQUFNLE9BQUEsUUFBUSxDQUFDLFVBQVUsRUFBRSxFQUFyQixDQUFxQixFQUFDLENBQUM7SUFDekQsQ0FBQzs7OztJQUVELHdDQUFVOzs7SUFBVjtRQUNFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDOztnQkExQ0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7aUJBQzVCOzs7O2dCQU5vQyxVQUFVLHVCQWFoQyxRQUFRO2dCQWIwQixTQUFTOzs7aUNBUXZELEtBQUssU0FBQyxlQUFlOztJQXVDeEIsMEJBQUM7Q0FBQSxBQTNDRCxJQTJDQztTQXhDWSxtQkFBbUI7OztJQUM5Qiw2Q0FDNEI7O0lBRTVCLHlDQUFvQzs7Ozs7SUFFeEIsb0NBQXFDOzs7OztJQUFFLHVDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9wdGlvbmFsLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCBzbnEgZnJvbSAnc25xJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FicFZpc2liaWxpdHldJyxcbn0pXG5leHBvcnQgY2xhc3MgVmlzaWJpbGl0eURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoJ2FicFZpc2liaWxpdHknKVxuICBmb2N1c2VkRWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgY29tcGxldGVkJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG11dGF0aW9ucyA9PiB7XG4gICAgICBtdXRhdGlvbnMuZm9yRWFjaChtdXRhdGlvbiA9PiB7XG4gICAgICAgIGlmICghbXV0YXRpb24udGFyZ2V0KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgaHRtbE5vZGVzID0gc25xKFxuICAgICAgICAgICgpID0+IEFycmF5LmZyb20obXV0YXRpb24udGFyZ2V0LmNoaWxkTm9kZXMpLmZpbHRlcihub2RlID0+IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCksXG4gICAgICAgICAgW10sXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFodG1sTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCwgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5mb2N1c2VkRWxlbWVudCwge1xuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb21wbGV0ZWQkLnN1YnNjcmliZSgoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCkpO1xuICB9XG5cbiAgZGlzY29ubmVjdCgpIHtcbiAgICB0aGlzLmNvbXBsZXRlZCQubmV4dCgpO1xuICAgIHRoaXMuY29tcGxldGVkJC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/enums/common.js b/npm/ng-packs/dist/core/esm5/lib/enums/common.js new file mode 100644 index 00000000000..0d3c14b3337 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/enums/common.js @@ -0,0 +1,12 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @enum {string} */ +var eLayoutType = { + account: 'account', + application: 'application', + empty: 'empty', +}; +export { eLayoutType }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL2VudW1zL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7SUFDRSxTQUFVLFNBQVM7SUFDbkIsYUFBYyxhQUFhO0lBQzNCLE9BQVEsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBlbnVtIGVMYXlvdXRUeXBlIHtcbiAgYWNjb3VudCA9ICdhY2NvdW50JyxcbiAgYXBwbGljYXRpb24gPSAnYXBwbGljYXRpb24nLFxuICBlbXB0eSA9ICdlbXB0eScsXG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/enums/index.js b/npm/ng-packs/dist/core/esm5/lib/enums/index.js new file mode 100644 index 00000000000..f4377e4d9c4 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/enums/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export {} from './common'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvZW51bXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGVBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21tb24nO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/guards/auth.guard.js b/npm/ng-packs/dist/core/esm5/lib/guards/auth.guard.js new file mode 100644 index 00000000000..ab1ba105a80 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/guards/auth.guard.js @@ -0,0 +1,62 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { Navigate } from '@ngxs/router-plugin'; +import * as i0 from "@angular/core"; +import * as i1 from "angular-oauth2-oidc"; +import * as i2 from "@ngxs/store"; +var AuthGuard = /** @class */ (function () { + function AuthGuard(oauthService, store) { + this.oauthService = oauthService; + this.store = store; + } + /** + * @param {?} _ + * @param {?} state + * @return {?} + */ + AuthGuard.prototype.canActivate = /** + * @param {?} _ + * @param {?} state + * @return {?} + */ + function (_, state) { + /** @type {?} */ + var hasValidAccessToken = this.oauthService.hasValidAccessToken(); + if (hasValidAccessToken) { + return hasValidAccessToken; + } + this.store.dispatch(new Navigate(['/account/login'], null, { state: { redirectUrl: state.url } })); + return false; + }; + AuthGuard.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + AuthGuard.ctorParameters = function () { return [ + { type: OAuthService }, + { type: Store } + ]; }; + /** @nocollapse */ AuthGuard.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function AuthGuard_Factory() { return new AuthGuard(i0.ɵɵinject(i1.OAuthService), i0.ɵɵinject(i2.Store)); }, token: AuthGuard, providedIn: "root" }); + return AuthGuard; +}()); +export { AuthGuard }; +if (false) { + /** + * @type {?} + * @private + */ + AuthGuard.prototype.oauthService; + /** + * @type {?} + * @private + */ + AuthGuard.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ndWFyZHMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFFL0M7SUFJRSxtQkFBb0IsWUFBMEIsRUFBVSxLQUFZO1FBQWhELGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBTztJQUFHLENBQUM7Ozs7OztJQUN4RSwrQkFBVzs7Ozs7SUFBWCxVQUFZLENBQXlCLEVBQUUsS0FBMEI7O1lBQ3pELG1CQUFtQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUU7UUFDbkUsSUFBSSxtQkFBbUIsRUFBRTtZQUN2QixPQUFPLG1CQUFtQixDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFbkcsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOztnQkFkRixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7O2dCQU5RLFlBQVk7Z0JBRFosS0FBSzs7O29CQUZkO0NBc0JDLEFBZkQsSUFlQztTQVpZLFNBQVM7Ozs7OztJQUNSLGlDQUFrQzs7Ozs7SUFBRSwwQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IE9BdXRoU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTmF2aWdhdGUgfSBmcm9tICdAbmd4cy9yb3V0ZXItcGx1Z2luJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvYXV0aFNlcnZpY2U6IE9BdXRoU2VydmljZSwgcHJpdmF0ZSBzdG9yZTogU3RvcmUpIHt9XG4gIGNhbkFjdGl2YXRlKF86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB8IGJvb2xlYW4gfCBVcmxUcmVlIHtcbiAgICBjb25zdCBoYXNWYWxpZEFjY2Vzc1Rva2VuID0gdGhpcy5vYXV0aFNlcnZpY2UuaGFzVmFsaWRBY2Nlc3NUb2tlbigpO1xuICAgIGlmIChoYXNWYWxpZEFjY2Vzc1Rva2VuKSB7XG4gICAgICByZXR1cm4gaGFzVmFsaWRBY2Nlc3NUb2tlbjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOYXZpZ2F0ZShbJy9hY2NvdW50L2xvZ2luJ10sIG51bGwsIHsgc3RhdGU6IHsgcmVkaXJlY3RVcmw6IHN0YXRlLnVybCB9IH0pKTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/guards/index.js b/npm/ng-packs/dist/core/esm5/lib/guards/index.js new file mode 100644 index 00000000000..54f4b94a2f0 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/guards/index.js @@ -0,0 +1,7 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { AuthGuard } from './auth.guard'; +export { PermissionGuard } from './permission.guard'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvZ3VhcmRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSwwQkFBYyxjQUFjLENBQUM7QUFDN0IsZ0NBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dGguZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9wZXJtaXNzaW9uLmd1YXJkJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/guards/permission.guard.js b/npm/ng-packs/dist/core/esm5/lib/guards/permission.guard.js new file mode 100644 index 00000000000..a868ab62d7c --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/guards/permission.guard.js @@ -0,0 +1,48 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { ConfigState } from '../states'; +import * as i0 from "@angular/core"; +import * as i1 from "@ngxs/store"; +var PermissionGuard = /** @class */ (function () { + function PermissionGuard(store) { + this.store = store; + } + /** + * @param {?} __0 + * @return {?} + */ + PermissionGuard.prototype.canActivate = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var data = _a.data; + /** @type {?} */ + var resource = (/** @type {?} */ (data.requiredPolicy)); + return this.store.select(ConfigState.getGrantedPolicy(resource)); + }; + PermissionGuard.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + PermissionGuard.ctorParameters = function () { return [ + { type: Store } + ]; }; + /** @nocollapse */ PermissionGuard.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PermissionGuard_Factory() { return new PermissionGuard(i0.ɵɵinject(i1.Store)); }, token: PermissionGuard, providedIn: "root" }); + return PermissionGuard; +}()); +export { PermissionGuard }; +if (false) { + /** + * @type {?} + * @private + */ + PermissionGuard.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ndWFyZHMvcGVybWlzc2lvbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7OztBQUV4QztJQUlFLHlCQUFvQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztJQUFHLENBQUM7Ozs7O0lBRXBDLHFDQUFXOzs7O0lBQVgsVUFBWSxFQUFnQztZQUE5QixjQUFJOztZQUNWLFFBQVEsR0FBRyxtQkFBQSxJQUFJLENBQUMsY0FBYyxFQUFVO1FBQzlDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQzs7Z0JBVEYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFOUSxLQUFLOzs7MEJBRmQ7Q0FnQkMsQUFWRCxJQVVDO1NBUFksZUFBZTs7Ozs7O0lBQ2QsZ0NBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb25maWdTdGF0ZSB9IGZyb20gJy4uL3N0YXRlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIGNhbkFjdGl2YXRlKHsgZGF0YSB9OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgcmVzb3VyY2UgPSBkYXRhLnJlcXVpcmVkUG9saWN5IGFzIHN0cmluZztcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU3RhdGUuZ2V0R3JhbnRlZFBvbGljeShyZXNvdXJjZSkpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/interceptors/api.interceptor.js b/npm/ng-packs/dist/core/esm5/lib/interceptors/api.interceptor.js new file mode 100644 index 00000000000..6cad5147417 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/interceptors/api.interceptor.js @@ -0,0 +1,73 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { Store } from '@ngxs/store'; +import { SessionState } from '../states'; +import { LoaderStart, LoaderStop } from '../actions/loader.actions'; +import { finalize } from 'rxjs/operators'; +var ApiInterceptor = /** @class */ (function () { + function ApiInterceptor(oAuthService, store) { + this.oAuthService = oAuthService; + this.store = store; + } + /** + * @param {?} request + * @param {?} next + * @return {?} + */ + ApiInterceptor.prototype.intercept = /** + * @param {?} request + * @param {?} next + * @return {?} + */ + function (request, next) { + var _this = this; + this.store.dispatch(new LoaderStart(request)); + /** @type {?} */ + var headers = (/** @type {?} */ ({})); + /** @type {?} */ + var token = this.oAuthService.getAccessToken(); + if (!request.headers.has('Authorization') && token) { + headers['Authorization'] = "Bearer " + token; + } + /** @type {?} */ + var lang = this.store.selectSnapshot(SessionState.getLanguage); + if (!request.headers.has('Accept-Language') && lang) { + headers['Accept-Language'] = lang; + } + return next + .handle(request.clone({ + setHeaders: headers, + })) + .pipe(finalize((/** + * @return {?} + */ + function () { return _this.store.dispatch(new LoaderStop(request)); }))); + }; + ApiInterceptor.decorators = [ + { type: Injectable } + ]; + /** @nocollapse */ + ApiInterceptor.ctorParameters = function () { return [ + { type: OAuthService }, + { type: Store } + ]; }; + return ApiInterceptor; +}()); +export { ApiInterceptor }; +if (false) { + /** + * @type {?} + * @private + */ + ApiInterceptor.prototype.oAuthService; + /** + * @type {?} + * @private + */ + ApiInterceptor.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL2ludGVyY2VwdG9ycy9hcGkuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQztJQUVFLHdCQUFvQixZQUEwQixFQUFVLEtBQVk7UUFBaEQsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFPO0lBQUcsQ0FBQzs7Ozs7O0lBRXhFLGtDQUFTOzs7OztJQUFULFVBQVUsT0FBeUIsRUFBRSxJQUFpQjtRQUF0RCxpQkFzQkM7UUFyQkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzs7WUFFeEMsT0FBTyxHQUFHLG1CQUFBLEVBQUUsRUFBTzs7WUFFbkIsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFO1FBQ2hELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxLQUFLLEVBQUU7WUFDbEQsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLFlBQVUsS0FBTyxDQUFDO1NBQzlDOztZQUVLLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksRUFBRTtZQUNuRCxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDbkM7UUFFRCxPQUFPLElBQUk7YUFDUixNQUFNLENBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNaLFVBQVUsRUFBRSxPQUFPO1NBQ3BCLENBQUMsQ0FDSDthQUNBLElBQUksQ0FBQyxRQUFROzs7UUFBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBNUMsQ0FBNEMsRUFBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQzs7Z0JBMUJGLFVBQVU7Ozs7Z0JBTkYsWUFBWTtnQkFDWixLQUFLOztJQWdDZCxxQkFBQztDQUFBLEFBM0JELElBMkJDO1NBMUJZLGNBQWM7Ozs7OztJQUNiLHNDQUFrQzs7Ozs7SUFBRSwrQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwSW50ZXJjZXB0b3IsIEh0dHBIYW5kbGVyLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9BdXRoU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBTZXNzaW9uU3RhdGUgfSBmcm9tICcuLi9zdGF0ZXMnO1xuaW1wb3J0IHsgTG9hZGVyU3RhcnQsIExvYWRlclN0b3AgfSBmcm9tICcuLi9hY3Rpb25zL2xvYWRlci5hY3Rpb25zJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXBpSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9BdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlLCBwcml2YXRlIHN0b3JlOiBTdG9yZSkge31cblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBMb2FkZXJTdGFydChyZXF1ZXN0KSk7XG5cbiAgICBjb25zdCBoZWFkZXJzID0ge30gYXMgYW55O1xuXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLm9BdXRoU2VydmljZS5nZXRBY2Nlc3NUb2tlbigpO1xuICAgIGlmICghcmVxdWVzdC5oZWFkZXJzLmhhcygnQXV0aG9yaXphdGlvbicpICYmIHRva2VuKSB7XG4gICAgICBoZWFkZXJzWydBdXRob3JpemF0aW9uJ10gPSBgQmVhcmVyICR7dG9rZW59YDtcbiAgICB9XG5cbiAgICBjb25zdCBsYW5nID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTZXNzaW9uU3RhdGUuZ2V0TGFuZ3VhZ2UpO1xuICAgIGlmICghcmVxdWVzdC5oZWFkZXJzLmhhcygnQWNjZXB0LUxhbmd1YWdlJykgJiYgbGFuZykge1xuICAgICAgaGVhZGVyc1snQWNjZXB0LUxhbmd1YWdlJ10gPSBsYW5nO1xuICAgIH1cblxuICAgIHJldHVybiBuZXh0XG4gICAgICAuaGFuZGxlKFxuICAgICAgICByZXF1ZXN0LmNsb25lKHtcbiAgICAgICAgICBzZXRIZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IExvYWRlclN0b3AocmVxdWVzdCkpKSk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/interceptors/index.js b/npm/ng-packs/dist/core/esm5/lib/interceptors/index.js new file mode 100644 index 00000000000..f1671a034e6 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/interceptors/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { ApiInterceptor } from './api.interceptor'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvaW50ZXJjZXB0b3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSwrQkFBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBpLmludGVyY2VwdG9yJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/models/application-configuration.js b/npm/ng-packs/dist/core/esm5/lib/models/application-configuration.js new file mode 100644 index 00000000000..a1bc510083c --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/models/application-configuration.js @@ -0,0 +1,105 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var ApplicationConfiguration; +(function (ApplicationConfiguration) { + /** + * @record + */ + function Response() { } + ApplicationConfiguration.Response = Response; + if (false) { + /** @type {?} */ + Response.prototype.localization; + /** @type {?} */ + Response.prototype.auth; + /** @type {?} */ + Response.prototype.setting; + /** @type {?} */ + Response.prototype.currentUser; + /** @type {?} */ + Response.prototype.features; + } + /** + * @record + */ + function Localization() { } + ApplicationConfiguration.Localization = Localization; + if (false) { + /** @type {?} */ + Localization.prototype.values; + /** @type {?} */ + Localization.prototype.languages; + } + /** + * @record + */ + function LocalizationValue() { } + ApplicationConfiguration.LocalizationValue = LocalizationValue; + /** + * @record + */ + function Language() { } + ApplicationConfiguration.Language = Language; + if (false) { + /** @type {?} */ + Language.prototype.cultureName; + /** @type {?} */ + Language.prototype.uiCultureName; + /** @type {?} */ + Language.prototype.displayName; + /** @type {?} */ + Language.prototype.flagIcon; + } + /** + * @record + */ + function Auth() { } + ApplicationConfiguration.Auth = Auth; + if (false) { + /** @type {?} */ + Auth.prototype.policies; + /** @type {?} */ + Auth.prototype.grantedPolicies; + } + /** + * @record + */ + function Policy() { } + ApplicationConfiguration.Policy = Policy; + /** + * @record + */ + function Setting() { } + ApplicationConfiguration.Setting = Setting; + if (false) { + /** @type {?} */ + Setting.prototype.values; + } + /** + * @record + */ + function CurrentUser() { } + ApplicationConfiguration.CurrentUser = CurrentUser; + if (false) { + /** @type {?} */ + CurrentUser.prototype.isAuthenticated; + /** @type {?} */ + CurrentUser.prototype.id; + /** @type {?} */ + CurrentUser.prototype.tenantId; + /** @type {?} */ + CurrentUser.prototype.userName; + } + /** + * @record + */ + function Features() { } + ApplicationConfiguration.Features = Features; + if (false) { + /** @type {?} */ + Features.prototype.values; + } +})(ApplicationConfiguration || (ApplicationConfiguration = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvYXBwbGljYXRpb24tY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsTUFBTSxLQUFXLHdCQUF3QixDQWdEeEM7QUFoREQsV0FBaUIsd0JBQXdCOzs7O0lBQ3ZDLHVCQU1DOzs7O1FBTEMsZ0NBQTJCOztRQUMzQix3QkFBVzs7UUFDWCwyQkFBaUI7O1FBQ2pCLCtCQUF5Qjs7UUFDekIsNEJBQW1COzs7OztJQUdyQiwyQkFHQzs7OztRQUZDLDhCQUEwQjs7UUFDMUIsaUNBQXNCOzs7OztJQUd4QixnQ0FFQzs7Ozs7SUFFRCx1QkFLQzs7OztRQUpDLCtCQUFvQjs7UUFDcEIsaUNBQXNCOztRQUN0QiwrQkFBb0I7O1FBQ3BCLDRCQUFpQjs7Ozs7SUFHbkIsbUJBR0M7Ozs7UUFGQyx3QkFBaUI7O1FBQ2pCLCtCQUF3Qjs7Ozs7SUFHMUIscUJBRUM7Ozs7O0lBRUQsc0JBRUM7Ozs7UUFEQyx5QkFBOEQ7Ozs7O0lBR2hFLDBCQUtDOzs7O1FBSkMsc0NBQXlCOztRQUN6Qix5QkFBVzs7UUFDWCwrQkFBaUI7O1FBQ2pCLCtCQUFpQjs7Ozs7SUFHbkIsdUJBRUM7Ozs7UUFEQywwQkFBZ0I7O0FBRXBCLENBQUMsRUFoRGdCLHdCQUF3QixLQUF4Qix3QkFBd0IsUUFnRHhDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IG5hbWVzcGFjZSBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb24ge1xuICBleHBvcnQgaW50ZXJmYWNlIFJlc3BvbnNlIHtcbiAgICBsb2NhbGl6YXRpb246IExvY2FsaXphdGlvbjtcbiAgICBhdXRoOiBBdXRoO1xuICAgIHNldHRpbmc6IFNldHRpbmc7XG4gICAgY3VycmVudFVzZXI6IEN1cnJlbnRVc2VyO1xuICAgIGZlYXR1cmVzOiBGZWF0dXJlcztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTG9jYWxpemF0aW9uIHtcbiAgICB2YWx1ZXM6IExvY2FsaXphdGlvblZhbHVlO1xuICAgIGxhbmd1YWdlczogTGFuZ3VhZ2VbXTtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTG9jYWxpemF0aW9uVmFsdWUge1xuICAgIFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIExhbmd1YWdlIHtcbiAgICBjdWx0dXJlTmFtZTogc3RyaW5nO1xuICAgIHVpQ3VsdHVyZU5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIGZsYWdJY29uOiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEF1dGgge1xuICAgIHBvbGljaWVzOiBQb2xpY3k7XG4gICAgZ3JhbnRlZFBvbGljaWVzOiBQb2xpY3k7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFBvbGljeSB7XG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgU2V0dGluZyB7XG4gICAgdmFsdWVzOiB7IFtrZXk6IHN0cmluZ106ICdBYnAuTG9jYWxpemF0aW9uLkRlZmF1bHRMYW5ndWFnZScgfTtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQ3VycmVudFVzZXIge1xuICAgIGlzQXV0aGVudGljYXRlZDogYm9vbGVhbjtcbiAgICBpZDogc3RyaW5nO1xuICAgIHRlbmFudElkOiBzdHJpbmc7XG4gICAgdXNlck5hbWU6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZXMge1xuICAgIHZhbHVlczogU2V0dGluZztcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/models/common.js b/npm/ng-packs/dist/core/esm5/lib/models/common.js new file mode 100644 index 00000000000..5f4bc9a50a4 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/models/common.js @@ -0,0 +1,89 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var ABP; +(function (ABP) { + /** + * @record + */ + function Root() { } + ABP.Root = Root; + if (false) { + /** @type {?} */ + Root.prototype.environment; + /** @type {?} */ + Root.prototype.requirements; + } + /** + * @record + * @template T + */ + function PagedItemsResponse() { } + ABP.PagedItemsResponse = PagedItemsResponse; + if (false) { + /** @type {?} */ + PagedItemsResponse.prototype.items; + } + /** + * @record + */ + function PageQueryParams() { } + ABP.PageQueryParams = PageQueryParams; + if (false) { + /** @type {?|undefined} */ + PageQueryParams.prototype.filter; + /** @type {?|undefined} */ + PageQueryParams.prototype.sorting; + /** @type {?|undefined} */ + PageQueryParams.prototype.skipCount; + /** @type {?|undefined} */ + PageQueryParams.prototype.maxResultCount; + } + /** + * @record + */ + function Route() { } + ABP.Route = Route; + if (false) { + /** @type {?|undefined} */ + Route.prototype.children; + /** @type {?|undefined} */ + Route.prototype.invisible; + /** @type {?|undefined} */ + Route.prototype.layout; + /** @type {?} */ + Route.prototype.name; + /** @type {?|undefined} */ + Route.prototype.order; + /** @type {?|undefined} */ + Route.prototype.parentName; + /** @type {?} */ + Route.prototype.path; + /** @type {?|undefined} */ + Route.prototype.requiredPolicy; + } + /** + * @record + */ + function FullRoute() { } + ABP.FullRoute = FullRoute; + if (false) { + /** @type {?|undefined} */ + FullRoute.prototype.url; + /** @type {?|undefined} */ + FullRoute.prototype.wrapper; + } + /** + * @record + */ + function BasicItem() { } + ABP.BasicItem = BasicItem; + if (false) { + /** @type {?} */ + BasicItem.prototype.id; + /** @type {?} */ + BasicItem.prototype.name; + } +})(ABP || (ABP = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL21vZGVscy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUdBLE1BQU0sS0FBVyxHQUFHLENBeUNuQjtBQXpDRCxXQUFpQixHQUFHOzs7O0lBQ2xCLG1CQUdDOzs7O1FBRkMsMkJBQXlDOztRQUN6Qyw0QkFBa0M7Ozs7OztJQU9wQyxpQ0FFQzs7OztRQURDLG1DQUFXOzs7OztJQUdiLDhCQUtDOzs7O1FBSkMsaUNBQWdCOztRQUNoQixrQ0FBaUI7O1FBQ2pCLG9DQUFtQjs7UUFDbkIseUNBQXdCOzs7OztJQUcxQixvQkFTQzs7OztRQVJDLHlCQUFtQjs7UUFDbkIsMEJBQW9COztRQUNwQix1QkFBcUI7O1FBQ3JCLHFCQUFhOztRQUNiLHNCQUFlOztRQUNmLDJCQUFvQjs7UUFDcEIscUJBQWE7O1FBQ2IsK0JBQXdCOzs7OztJQUcxQix3QkFHQzs7OztRQUZDLHdCQUFhOztRQUNiLDRCQUFrQjs7Ozs7SUFHcEIsd0JBR0M7Ozs7UUFGQyx1QkFBVzs7UUFDWCx5QkFBYTs7QUFFakIsQ0FBQyxFQXpDZ0IsR0FBRyxLQUFILEdBQUcsUUF5Q25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgZUxheW91dFR5cGUgfSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgQUJQIHtcbiAgZXhwb3J0IGludGVyZmFjZSBSb290IHtcbiAgICBlbnZpcm9ubWVudDogUGFydGlhbDxDb25maWcuRW52aXJvbm1lbnQ+O1xuICAgIHJlcXVpcmVtZW50czogQ29uZmlnLlJlcXVpcmVtZW50cztcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFBhZ2VkUmVzcG9uc2U8VD4gPSB7XG4gICAgdG90YWxDb3VudDogbnVtYmVyO1xuICB9ICYgUGFnZWRJdGVtc1Jlc3BvbnNlPFQ+O1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUGFnZWRJdGVtc1Jlc3BvbnNlPFQ+IHtcbiAgICBpdGVtczogVFtdO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBQYWdlUXVlcnlQYXJhbXMge1xuICAgIGZpbHRlcj86IHN0cmluZztcbiAgICBzb3J0aW5nPzogc3RyaW5nO1xuICAgIHNraXBDb3VudD86IG51bWJlcjtcbiAgICBtYXhSZXN1bHRDb3VudD86IG51bWJlcjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUm91dGUge1xuICAgIGNoaWxkcmVuPzogUm91dGVbXTtcbiAgICBpbnZpc2libGU/OiBib29sZWFuO1xuICAgIGxheW91dD86IGVMYXlvdXRUeXBlO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBvcmRlcj86IG51bWJlcjtcbiAgICBwYXJlbnROYW1lPzogc3RyaW5nO1xuICAgIHBhdGg6IHN0cmluZztcbiAgICByZXF1aXJlZFBvbGljeT86IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgRnVsbFJvdXRlIGV4dGVuZHMgUm91dGUge1xuICAgIHVybD86IHN0cmluZztcbiAgICB3cmFwcGVyPzogYm9vbGVhbjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQmFzaWNJdGVtIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/models/config.js b/npm/ng-packs/dist/core/esm5/lib/models/config.js new file mode 100644 index 00000000000..d79d225037c --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/models/config.js @@ -0,0 +1,40 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var Config; +(function (Config) { + /** + * @record + */ + function State() { } + Config.State = State; + /** + * @record + */ + function Environment() { } + Config.Environment = Environment; + if (false) { + /** @type {?} */ + Environment.prototype.production; + /** @type {?} */ + Environment.prototype.oAuthConfig; + /** @type {?} */ + Environment.prototype.apis; + } + /** + * @record + */ + function Apis() { } + Config.Apis = Apis; + /** + * @record + */ + function Requirements() { } + Config.Requirements = Requirements; + if (false) { + /** @type {?} */ + Requirements.prototype.layouts; + } +})(Config || (Config = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL21vZGVscy9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUdBLE1BQU0sS0FBVyxNQUFNLENBa0J0QjtBQWxCRCxXQUFpQixNQUFNOzs7O0lBQ3JCLG9CQUVDOzs7OztJQUVELDBCQUlDOzs7O1FBSEMsaUNBQW9COztRQUNwQixrQ0FBd0I7O1FBQ3hCLDJCQUFXOzs7OztJQUdiLG1CQUVDOzs7OztJQUVELDJCQUVDOzs7O1FBREMsK0JBQXFCOztBQUV6QixDQUFDLEVBbEJnQixNQUFNLEtBQU4sTUFBTSxRQWtCdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoQ29uZmlnIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ29uZmlnIHtcbiAgZXhwb3J0IGludGVyZmFjZSBTdGF0ZSB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudCB7XG4gICAgcHJvZHVjdGlvbjogYm9vbGVhbjtcbiAgICBvQXV0aENvbmZpZzogQXV0aENvbmZpZztcbiAgICBhcGlzOiBBcGlzO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBBcGlzIHtcbiAgICBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBSZXF1aXJlbWVudHMge1xuICAgIGxheW91dHM6IFR5cGU8YW55PltdO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/models/index.js b/npm/ng-packs/dist/core/esm5/lib/models/index.js new file mode 100644 index 00000000000..e5a05808191 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/models/index.js @@ -0,0 +1,11 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export {} from './application-configuration'; +export {} from './common'; +export {} from './config'; +export { Rest } from './rest'; +export {} from './session'; +export {} from './profile'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxlQUFjLDZCQUE2QixDQUFDO0FBQzVDLGVBQWMsVUFBVSxDQUFDO0FBQ3pCLGVBQWMsVUFBVSxDQUFDO0FBQ3pCLHFCQUFjLFFBQVEsQ0FBQztBQUN2QixlQUFjLFdBQVcsQ0FBQztBQUMxQixlQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBwbGljYXRpb24tY29uZmlndXJhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbic7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXNzaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvZmlsZSc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/models/profile.js b/npm/ng-packs/dist/core/esm5/lib/models/profile.js new file mode 100644 index 00000000000..63711ddf03c --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/models/profile.js @@ -0,0 +1,45 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var Profile; +(function (Profile) { + /** + * @record + */ + function State() { } + Profile.State = State; + if (false) { + /** @type {?} */ + State.prototype.profile; + } + /** + * @record + */ + function Response() { } + Profile.Response = Response; + if (false) { + /** @type {?} */ + Response.prototype.userName; + /** @type {?} */ + Response.prototype.email; + /** @type {?} */ + Response.prototype.name; + /** @type {?} */ + Response.prototype.surname; + /** @type {?} */ + Response.prototype.phoneNumber; + } + /** + * @record + */ + function ChangePasswordRequest() { } + Profile.ChangePasswordRequest = ChangePasswordRequest; + if (false) { + /** @type {?} */ + ChangePasswordRequest.prototype.currentPassword; + /** @type {?} */ + ChangePasswordRequest.prototype.newPassword; + } +})(Profile || (Profile = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvcHJvZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsTUFBTSxLQUFXLE9BQU8sQ0FpQnZCO0FBakJELFdBQWlCLE9BQU87Ozs7SUFDdEIsb0JBRUM7Ozs7UUFEQyx3QkFBa0I7Ozs7O0lBR3BCLHVCQU1DOzs7O1FBTEMsNEJBQWlCOztRQUNqQix5QkFBYzs7UUFDZCx3QkFBYTs7UUFDYiwyQkFBZ0I7O1FBQ2hCLCtCQUFvQjs7Ozs7SUFHdEIsb0NBR0M7Ozs7UUFGQyxnREFBd0I7O1FBQ3hCLDRDQUFvQjs7QUFFeEIsQ0FBQyxFQWpCZ0IsT0FBTyxLQUFQLE9BQU8sUUFpQnZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IG5hbWVzcGFjZSBQcm9maWxlIHtcbiAgZXhwb3J0IGludGVyZmFjZSBTdGF0ZSB7XG4gICAgcHJvZmlsZTogUmVzcG9uc2U7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFJlc3BvbnNlIHtcbiAgICB1c2VyTmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHN1cm5hbWU6IHN0cmluZztcbiAgICBwaG9uZU51bWJlcjogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VQYXNzd29yZFJlcXVlc3Qge1xuICAgIGN1cnJlbnRQYXNzd29yZDogc3RyaW5nO1xuICAgIG5ld1Bhc3N3b3JkOiBzdHJpbmc7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/models/rest.js b/npm/ng-packs/dist/core/esm5/lib/models/rest.js new file mode 100644 index 00000000000..5ae10ff1107 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/models/rest.js @@ -0,0 +1,43 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var Rest; +(function (Rest) { + /** + * @record + */ + function Config() { } + Rest.Config = Config; + if (false) { + /** @type {?|undefined} */ + Config.prototype.throwErr; + /** @type {?|undefined} */ + Config.prototype.observe; + } + /** + * @record + * @template T + */ + function Request() { } + Rest.Request = Request; + if (false) { + /** @type {?|undefined} */ + Request.prototype.body; + /** @type {?|undefined} */ + Request.prototype.headers; + /** @type {?} */ + Request.prototype.method; + /** @type {?|undefined} */ + Request.prototype.params; + /** @type {?|undefined} */ + Request.prototype.reportProgress; + /** @type {?|undefined} */ + Request.prototype.responseType; + /** @type {?} */ + Request.prototype.url; + /** @type {?|undefined} */ + Request.prototype.withCredentials; + } +})(Rest || (Rest = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvcmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsTUFBTSxLQUFXLElBQUksQ0FxQ3BCO0FBckNELFdBQWlCLElBQUk7Ozs7SUFDbkIscUJBR0M7Ozs7UUFGQywwQkFBbUI7O1FBQ25CLHlCQUFrQjs7Ozs7O0lBZ0JwQixzQkFpQkM7Ozs7UUFoQkMsdUJBQVM7O1FBQ1QsMEJBSU07O1FBQ04seUJBQWU7O1FBQ2YseUJBSU07O1FBQ04saUNBQXlCOztRQUN6QiwrQkFBNEI7O1FBQzVCLHNCQUFZOztRQUNaLGtDQUEwQjs7QUFFOUIsQ0FBQyxFQXJDZ0IsSUFBSSxLQUFKLElBQUksUUFxQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgUmVzdCB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnIHtcbiAgICB0aHJvd0Vycj86IGJvb2xlYW47XG4gICAgb2JzZXJ2ZT86IE9ic2VydmU7XG4gIH1cblxuICBleHBvcnQgY29uc3QgZW51bSBPYnNlcnZlIHtcbiAgICBCb2R5ID0gJ2JvZHknLFxuICAgIEV2ZW50cyA9ICdldmVudHMnLFxuICAgIFJlc3BvbnNlID0gJ3Jlc3BvbnNlJyxcbiAgfVxuXG4gIGV4cG9ydCBjb25zdCBlbnVtIFJlc3BvbnNlVHlwZSB7XG4gICAgQXJyYXlCdWZmZXIgPSAnYXJyYXlidWZmZXInLFxuICAgIEJsb2IgPSAnYmxvYicsXG4gICAgSlNPTiA9ICdqc29uJyxcbiAgICBUZXh0ID0gJ3RleHQnLFxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0PFQ+IHtcbiAgICBib2R5PzogVDtcbiAgICBoZWFkZXJzPzpcbiAgICAgIHwgSHR0cEhlYWRlcnNcbiAgICAgIHwge1xuICAgICAgICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgICB9O1xuICAgIG1ldGhvZDogc3RyaW5nO1xuICAgIHBhcmFtcz86XG4gICAgICB8IEh0dHBQYXJhbXNcbiAgICAgIHwge1xuICAgICAgICAgIFtwYXJhbTogc3RyaW5nXTogYW55O1xuICAgICAgICB9O1xuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICByZXNwb25zZVR5cGU/OiBSZXNwb25zZVR5cGU7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/models/session.js b/npm/ng-packs/dist/core/esm5/lib/models/session.js new file mode 100644 index 00000000000..900196e920e --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/models/session.js @@ -0,0 +1,17 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var Session; +(function (Session) { + /** + * @record + */ + function State() { } + Session.State = State; + if (false) { + /** @type {?} */ + State.prototype.language; + } +})(Session || (Session = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvc2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsTUFBTSxLQUFXLE9BQU8sQ0FJdkI7QUFKRCxXQUFpQixPQUFPOzs7O0lBQ3RCLG9CQUVDOzs7O1FBREMseUJBQWlCOztBQUVyQixDQUFDLEVBSmdCLE9BQU8sS0FBUCxPQUFPLFFBSXZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IG5hbWVzcGFjZSBTZXNzaW9uIHtcbiAgZXhwb3J0IGludGVyZmFjZSBTdGF0ZSB7XG4gICAgbGFuZ3VhZ2U6IHN0cmluZztcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/pipes/localization.pipe.js b/npm/ng-packs/dist/core/esm5/lib/pipes/localization.pipe.js new file mode 100644 index 00000000000..dc98b4716d7 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/pipes/localization.pipe.js @@ -0,0 +1,81 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Pipe } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { ConfigState } from '../states'; +import { takeUntilDestroy } from '../utils'; +import { distinctUntilChanged } from 'rxjs/operators'; +var LocalizationPipe = /** @class */ (function () { + function LocalizationPipe(store) { + this.store = store; + this.initialized = false; + } + /** + * @param {?} value + * @param {...?} interpolateParams + * @return {?} + */ + LocalizationPipe.prototype.transform = /** + * @param {?} value + * @param {...?} interpolateParams + * @return {?} + */ + function (value) { + var _this = this; + var interpolateParams = []; + for (var _i = 1; _i < arguments.length; _i++) { + interpolateParams[_i - 1] = arguments[_i]; + } + if (!this.initialized) { + this.initialized = true; + this.store + .select(ConfigState.getCopy.apply(ConfigState, tslib_1.__spread([value], interpolateParams.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { return (Array.isArray(val) ? tslib_1.__spread(acc, val) : tslib_1.__spread(acc, [val])); }), [])))) + .pipe(takeUntilDestroy(this), distinctUntilChanged()) + .subscribe((/** + * @param {?} copy + * @return {?} + */ + function (copy) { return (_this.value = copy); })); + } + return this.value; + }; + /** + * @return {?} + */ + LocalizationPipe.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { }; + LocalizationPipe.decorators = [ + { type: Pipe, args: [{ + name: 'abpLocalization', + pure: false, + },] } + ]; + /** @nocollapse */ + LocalizationPipe.ctorParameters = function () { return [ + { type: Store } + ]; }; + return LocalizationPipe; +}()); +export { LocalizationPipe }; +if (false) { + /** @type {?} */ + LocalizationPipe.prototype.initialized; + /** @type {?} */ + LocalizationPipe.prototype.value; + /** + * @type {?} + * @private + */ + LocalizationPipe.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnBpcGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvcGlwZXMvbG9jYWxpemF0aW9uLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXREO0lBU0UsMEJBQW9CLEtBQVk7UUFBWixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBSmhDLGdCQUFXLEdBQVksS0FBSyxDQUFDO0lBSU0sQ0FBQzs7Ozs7O0lBRXBDLG9DQUFTOzs7OztJQUFULFVBQVUsS0FBYTtRQUF2QixpQkFtQkM7UUFuQndCLDJCQUE4QjthQUE5QixVQUE4QixFQUE5QixxQkFBOEIsRUFBOUIsSUFBOEI7WUFBOUIsMENBQThCOztRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUV4QixJQUFJLENBQUMsS0FBSztpQkFDUCxNQUFNLENBQ0wsV0FBVyxDQUFDLE9BQU8sT0FBbkIsV0FBVyxvQkFDVCxLQUFLLEdBQ0YsaUJBQWlCLENBQUMsTUFBTTs7Ozs7WUFBQyxVQUFDLEdBQUcsRUFBRSxHQUFHLElBQUssT0FBQSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxrQkFBSyxHQUFHLEVBQUssR0FBRyxFQUFFLENBQUMsa0JBQUssR0FBRyxHQUFFLEdBQUcsRUFBQyxDQUFDLEVBQXZELENBQXVELEdBQUUsRUFBRSxDQUFDLEdBRXpHO2lCQUNBLElBQUksQ0FDSCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFDdEIsb0JBQW9CLEVBQUUsQ0FDdkI7aUJBQ0EsU0FBUzs7OztZQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEsQ0FBQyxLQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFuQixDQUFtQixFQUFDLENBQUM7U0FDM0M7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQzs7OztJQUVELHNDQUFXOzs7SUFBWCxjQUFlLENBQUM7O2dCQWhDakIsSUFBSSxTQUFDO29CQUNKLElBQUksRUFBRSxpQkFBaUI7b0JBQ3ZCLElBQUksRUFBRSxLQUFLO2lCQUNaOzs7O2dCQVJRLEtBQUs7O0lBc0NkLHVCQUFDO0NBQUEsQUFqQ0QsSUFpQ0M7U0E3QlksZ0JBQWdCOzs7SUFDM0IsdUNBQTZCOztJQUU3QixpQ0FBYzs7Ozs7SUFFRixpQ0FBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgQ29uZmlnU3RhdGUgfSBmcm9tICcuLi9zdGF0ZXMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdhYnBMb2NhbGl6YXRpb24nLFxuICBwdXJlOiBmYWxzZSwgLy8gcmVxdWlyZWQgdG8gdXBkYXRlIHRoZSB2YWx1ZVxufSlcbmV4cG9ydCBjbGFzcyBMb2NhbGl6YXRpb25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSwgT25EZXN0cm95IHtcbiAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICB2YWx1ZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCAuLi5pbnRlcnBvbGF0ZVBhcmFtczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICAgIHRoaXMuc3RvcmVcbiAgICAgICAgLnNlbGVjdChcbiAgICAgICAgICBDb25maWdTdGF0ZS5nZXRDb3B5KFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAuLi5pbnRlcnBvbGF0ZVBhcmFtcy5yZWR1Y2UoKGFjYywgdmFsKSA9PiAoQXJyYXkuaXNBcnJheSh2YWwpID8gWy4uLmFjYywgLi4udmFsXSA6IFsuLi5hY2MsIHZhbF0pLCBbXSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWxEZXN0cm95KHRoaXMpLFxuICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZShjb3B5ID0+ICh0aGlzLnZhbHVlID0gY29weSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7fVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/plugins/config.plugin.js b/npm/ng-packs/dist/core/esm5/lib/plugins/config.plugin.js new file mode 100644 index 00000000000..dcb9eb9a572 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/plugins/config.plugin.js @@ -0,0 +1,170 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Injectable, Inject, InjectionToken } from '@angular/core'; +import { setValue, actionMatcher, InitState, UpdateState } from '@ngxs/store'; +import { Router } from '@angular/router'; +import snq from 'snq'; +import { organizeRoutes } from '../utils/route-utils'; +/** @type {?} */ +export var NGXS_CONFIG_PLUGIN_OPTIONS = new InjectionToken('NGXS_CONFIG_PLUGIN_OPTIONS'); +var ConfigPlugin = /** @class */ (function () { + function ConfigPlugin(options, router) { + this.options = options; + this.router = router; + this.initialized = false; + } + /** + * @param {?} state + * @param {?} event + * @param {?} next + * @return {?} + */ + ConfigPlugin.prototype.handle = /** + * @param {?} state + * @param {?} event + * @param {?} next + * @return {?} + */ + function (state, event, next) { + /** @type {?} */ + var matches = actionMatcher(event); + /** @type {?} */ + var isInitAction = matches(InitState) || matches(UpdateState); + // const layouts = snq(() => this.options.requirements.layouts.filter(layout => layout instanceof Type), []); + if (isInitAction && !this.initialized) { + var _a = transformRoutes(this.router.config), routes = _a.routes, wrappers = _a.wrappers; + routes = organizeRoutes(routes, wrappers); + state = setValue(state, 'ConfigState', tslib_1.__assign({}, (state.ConfigState && tslib_1.__assign({}, state.ConfigState)), this.options, { routes: routes })); + this.initialized = true; + } + return next(state, event); + }; + ConfigPlugin.decorators = [ + { type: Injectable } + ]; + /** @nocollapse */ + ConfigPlugin.ctorParameters = function () { return [ + { type: undefined, decorators: [{ type: Inject, args: [NGXS_CONFIG_PLUGIN_OPTIONS,] }] }, + { type: Router } + ]; }; + return ConfigPlugin; +}()); +export { ConfigPlugin }; +if (false) { + /** + * @type {?} + * @private + */ + ConfigPlugin.prototype.initialized; + /** + * @type {?} + * @private + */ + ConfigPlugin.prototype.options; + /** + * @type {?} + * @private + */ + ConfigPlugin.prototype.router; +} +/** + * @param {?=} routes + * @param {?=} wrappers + * @return {?} + */ +function transformRoutes(routes, wrappers) { + if (routes === void 0) { routes = []; } + if (wrappers === void 0) { wrappers = []; } + /** @type {?} */ + var abpRoutes = routes + .filter((/** + * @param {?} route + * @return {?} + */ + function (route) { + return snq((/** + * @return {?} + */ + function () { return route.data.routes.find((/** + * @param {?} r + * @return {?} + */ + function (r) { return r.path === route.path; })); }), false); + })) + .reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { return tslib_1.__spread(acc, val.data.routes); }), []); + wrappers = abpRoutes.filter((/** + * @param {?} ar + * @return {?} + */ + function (ar) { return ar.wrapper; })); + /** @type {?} */ + var transformed = (/** @type {?} */ ([])); + routes + .filter((/** + * @param {?} route + * @return {?} + */ + function (route) { return route.component || route.loadChildren; })) + .forEach((/** + * @param {?} route + * @return {?} + */ + function (route) { + /** @type {?} */ + var abpPackage = abpRoutes.find((/** + * @param {?} abp + * @return {?} + */ + function (abp) { return abp.path.toLowerCase() === route.path.toLowerCase(); })); + var length = transformed.length; + if (abpPackage) { + transformed.push(abpPackage); + } + if (transformed.length === length) { + transformed.push((/** @type {?} */ ({ + path: route.path, + name: snq((/** + * @return {?} + */ + function () { return route.data.routes.name; }), route.path), + children: route.data.routes.children || [], + }))); + } + })); + return { routes: setUrls(transformed), wrappers: wrappers }; +} +/** + * @param {?} routes + * @param {?=} parentUrl + * @return {?} + */ +function setUrls(routes, parentUrl) { + if (parentUrl) { + // this if block using for only recursive call + return routes.map((/** + * @param {?} route + * @return {?} + */ + function (route) { return (tslib_1.__assign({}, route, { url: parentUrl + "/" + route.path }, (route.children && + route.children.length && { + children: setUrls(route.children, parentUrl + "/" + route.path), + }))); })); + } + return routes.map((/** + * @param {?} route + * @return {?} + */ + function (route) { return (tslib_1.__assign({}, route, { url: "/" + route.path }, (route.children && + route.children.length && { + children: setUrls(route.children, "/" + route.path), + }))); })); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9wbHVnaW5zL2NvbmZpZy5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFjLFFBQVEsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBb0IsTUFBTSxhQUFhLENBQUM7QUFDNUcsT0FBTyxFQUFFLE1BQU0sRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztBQUN0QixPQUFPLEVBQTZCLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQUVqRixNQUFNLEtBQU8sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQUMsNEJBQTRCLENBQUM7QUFFMUY7SUFJRSxzQkFBd0QsT0FBaUIsRUFBVSxNQUFjO1FBQXpDLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRnpGLGdCQUFXLEdBQVksS0FBSyxDQUFDO0lBRStELENBQUM7Ozs7Ozs7SUFFckcsNkJBQU07Ozs7OztJQUFOLFVBQU8sS0FBVSxFQUFFLEtBQVUsRUFBRSxJQUFzQjs7WUFDN0MsT0FBTyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUM7O1lBQzlCLFlBQVksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUUvRCw2R0FBNkc7UUFDN0csSUFBSSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2pDLElBQUEsd0NBQTBELEVBQXhELGtCQUFNLEVBQUUsc0JBQWdEO1lBQzlELE1BQU0sR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRTFDLEtBQUssR0FBRyxR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LEdBQUc7Ozs7UUFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLHNCQUN0QixLQUFLLElBQ1IsR0FBRyxFQUFLLFNBQVMsU0FBSSxLQUFLLENBQUMsSUFBTSxJQUM5QixDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQ2hCLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJO1lBQ3ZCLFFBQVEsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBSyxTQUFTLFNBQUksS0FBSyxDQUFDLElBQU0sQ0FBQztTQUNoRSxDQUFDLEVBQ0osRUFQeUIsQ0FPekIsRUFBQyxDQUFDO0tBQ0w7SUFFRCxPQUFPLE1BQU0sQ0FBQyxHQUFHOzs7O0lBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxzQkFDdEIsS0FBSyxJQUNSLEdBQUcsRUFBRSxNQUFJLEtBQUssQ0FBQyxJQUFNLElBQ2xCLENBQUMsS0FBSyxDQUFDLFFBQVE7UUFDaEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUk7UUFDdkIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQUksS0FBSyxDQUFDLElBQU0sQ0FBQztLQUNwRCxDQUFDLEVBQ0osRUFQeUIsQ0FPekIsRUFBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neHNQbHVnaW4sIHNldFZhbHVlLCBhY3Rpb25NYXRjaGVyLCBJbml0U3RhdGUsIFVwZGF0ZVN0YXRlLCBOZ3hzTmV4dFBsdWdpbkZuIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQUJQIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCBzbnEgZnJvbSAnc25xJztcbmltcG9ydCB7IHNldENoaWxkUm91dGUsIHNvcnRSb3V0ZXMsIG9yZ2FuaXplUm91dGVzIH0gZnJvbSAnLi4vdXRpbHMvcm91dGUtdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgTkdYU19DT05GSUdfUExVR0lOX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ05HWFNfQ09ORklHX1BMVUdJTl9PUFRJT05TJyk7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb25maWdQbHVnaW4gaW1wbGVtZW50cyBOZ3hzUGx1Z2luIHtcbiAgcHJpdmF0ZSBpbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTkdYU19DT05GSUdfUExVR0lOX09QVElPTlMpIHByaXZhdGUgb3B0aW9uczogQUJQLlJvb3QsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHt9XG5cbiAgaGFuZGxlKHN0YXRlOiBhbnksIGV2ZW50OiBhbnksIG5leHQ6IE5neHNOZXh0UGx1Z2luRm4pIHtcbiAgICBjb25zdCBtYXRjaGVzID0gYWN0aW9uTWF0Y2hlcihldmVudCk7XG4gICAgY29uc3QgaXNJbml0QWN0aW9uID0gbWF0Y2hlcyhJbml0U3RhdGUpIHx8IG1hdGNoZXMoVXBkYXRlU3RhdGUpO1xuXG4gICAgLy8gY29uc3QgbGF5b3V0cyA9IHNucSgoKSA9PiB0aGlzLm9wdGlvbnMucmVxdWlyZW1lbnRzLmxheW91dHMuZmlsdGVyKGxheW91dCA9PiBsYXlvdXQgaW5zdGFuY2VvZiBUeXBlKSwgW10pO1xuICAgIGlmIChpc0luaXRBY3Rpb24gJiYgIXRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGxldCB7IHJvdXRlcywgd3JhcHBlcnMgfSA9IHRyYW5zZm9ybVJvdXRlcyh0aGlzLnJvdXRlci5jb25maWcpO1xuICAgICAgcm91dGVzID0gb3JnYW5pemVSb3V0ZXMocm91dGVzLCB3cmFwcGVycyk7XG5cbiAgICAgIHN0YXRlID0gc2V0VmFsdWUoc3RhdGUsICdDb25maWdTdGF0ZScsIHtcbiAgICAgICAgLi4uKHN0YXRlLkNvbmZpZ1N0YXRlICYmIHsgLi4uc3RhdGUuQ29uZmlnU3RhdGUgfSksXG4gICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgICAgcm91dGVzLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBuZXh0KHN0YXRlLCBldmVudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtUm91dGVzKHJvdXRlczogUm91dGVzID0gW10sIHdyYXBwZXJzOiBBQlAuRnVsbFJvdXRlW10gPSBbXSk6IGFueSB7XG4gIGNvbnN0IGFicFJvdXRlczogQUJQLkZ1bGxSb3V0ZVtdID0gcm91dGVzXG4gICAgLmZpbHRlcihyb3V0ZSA9PiB7XG4gICAgICByZXR1cm4gc25xKCgpID0+IHJvdXRlLmRhdGEucm91dGVzLmZpbmQociA9PiByLnBhdGggPT09IHJvdXRlLnBhdGgpLCBmYWxzZSk7XG4gICAgfSlcbiAgICAucmVkdWNlKChhY2MsIHZhbCkgPT4gWy4uLmFjYywgLi4udmFsLmRhdGEucm91dGVzXSwgW10pO1xuXG4gIHdyYXBwZXJzID0gYWJwUm91dGVzLmZpbHRlcihhciA9PiBhci53cmFwcGVyKTtcbiAgY29uc3QgdHJhbnNmb3JtZWQgPSBbXSBhcyBBQlAuRnVsbFJvdXRlW107XG4gIHJvdXRlc1xuICAgIC5maWx0ZXIocm91dGUgPT4gcm91dGUuY29tcG9uZW50IHx8IHJvdXRlLmxvYWRDaGlsZHJlbilcbiAgICAuZm9yRWFjaChyb3V0ZSA9PiB7XG4gICAgICBjb25zdCBhYnBQYWNrYWdlID0gYWJwUm91dGVzLmZpbmQoYWJwID0+IGFicC5wYXRoLnRvTG93ZXJDYXNlKCkgPT09IHJvdXRlLnBhdGgudG9Mb3dlckNhc2UoKSk7XG4gICAgICBjb25zdCB7IGxlbmd0aCB9ID0gdHJhbnNmb3JtZWQ7XG5cbiAgICAgIGlmIChhYnBQYWNrYWdlKSB7XG4gICAgICAgIHRyYW5zZm9ybWVkLnB1c2goYWJwUGFja2FnZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0cmFuc2Zvcm1lZC5sZW5ndGggPT09IGxlbmd0aCkge1xuICAgICAgICB0cmFuc2Zvcm1lZC5wdXNoKHtcbiAgICAgICAgICBwYXRoOiByb3V0ZS5wYXRoLFxuICAgICAgICAgIG5hbWU6IHNucSgoKSA9PiByb3V0ZS5kYXRhLnJvdXRlcy5uYW1lLCByb3V0ZS5wYXRoKSxcbiAgICAgICAgICBjaGlsZHJlbjogcm91dGUuZGF0YS5yb3V0ZXMuY2hpbGRyZW4gfHwgW10sXG4gICAgICAgIH0gYXMgQUJQLkZ1bGxSb3V0ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgcmV0dXJuIHsgcm91dGVzOiBzZXRVcmxzKHRyYW5zZm9ybWVkKSwgd3JhcHBlcnMgfTtcbn1cblxuZnVuY3Rpb24gc2V0VXJscyhyb3V0ZXM6IEFCUC5GdWxsUm91dGVbXSwgcGFyZW50VXJsPzogc3RyaW5nKTogQUJQLkZ1bGxSb3V0ZVtdIHtcbiAgaWYgKHBhcmVudFVybCkge1xuICAgIC8vIHRoaXMgaWYgYmxvY2sgdXNpbmcgZm9yIG9ubHkgcmVjdXJzaXZlIGNhbGxcblxuICAgIHJldHVybiByb3V0ZXMubWFwKHJvdXRlID0+ICh7XG4gICAgICAuLi5yb3V0ZSxcbiAgICAgIHVybDogYCR7cGFyZW50VXJsfS8ke3JvdXRlLnBhdGh9YCxcbiAgICAgIC4uLihyb3V0ZS5jaGlsZHJlbiAmJlxuICAgICAgICByb3V0ZS5jaGlsZHJlbi5sZW5ndGggJiYge1xuICAgICAgICAgIGNoaWxkcmVuOiBzZXRVcmxzKHJvdXRlLmNoaWxkcmVuLCBgJHtwYXJlbnRVcmx9LyR7cm91dGUucGF0aH1gKSxcbiAgICAgICAgfSksXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIHJvdXRlcy5tYXAocm91dGUgPT4gKHtcbiAgICAuLi5yb3V0ZSxcbiAgICB1cmw6IGAvJHtyb3V0ZS5wYXRofWAsXG4gICAgLi4uKHJvdXRlLmNoaWxkcmVuICYmXG4gICAgICByb3V0ZS5jaGlsZHJlbi5sZW5ndGggJiYge1xuICAgICAgICBjaGlsZHJlbjogc2V0VXJscyhyb3V0ZS5jaGlsZHJlbiwgYC8ke3JvdXRlLnBhdGh9YCksXG4gICAgICB9KSxcbiAgfSkpO1xufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/plugins/index.js b/npm/ng-packs/dist/core/esm5/lib/plugins/index.js new file mode 100644 index 00000000000..451fc91aad1 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/plugins/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { NGXS_CONFIG_PLUGIN_OPTIONS, ConfigPlugin } from './config.plugin'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvcGx1Z2lucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEseURBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbmZpZy5wbHVnaW4nO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/services/application-configuration.service.js b/npm/ng-packs/dist/core/esm5/lib/services/application-configuration.service.js new file mode 100644 index 00000000000..a8e94ac60ae --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/services/application-configuration.service.js @@ -0,0 +1,47 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { RestService } from './rest.service'; +import * as i0 from "@angular/core"; +import * as i1 from "./rest.service"; +var ApplicationConfigurationService = /** @class */ (function () { + function ApplicationConfigurationService(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + ApplicationConfigurationService.prototype.getConfiguration = /** + * @return {?} + */ + function () { + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/abp/application-configuration', + }; + return this.rest.request(request); + }; + ApplicationConfigurationService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + ApplicationConfigurationService.ctorParameters = function () { return [ + { type: RestService } + ]; }; + /** @nocollapse */ ApplicationConfigurationService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ApplicationConfigurationService_Factory() { return new ApplicationConfigurationService(i0.ɵɵinject(i1.RestService)); }, token: ApplicationConfigurationService, providedIn: "root" }); + return ApplicationConfigurationService; +}()); +export { ApplicationConfigurationService }; +if (false) { + /** + * @type {?} + * @private + */ + ApplicationConfigurationService.prototype.rest; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2FwcGxpY2F0aW9uLWNvbmZpZ3VyYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUU3QztJQUlFLHlDQUFvQixJQUFpQjtRQUFqQixTQUFJLEdBQUosSUFBSSxDQUFhO0lBQUcsQ0FBQzs7OztJQUV6QywwREFBZ0I7OztJQUFoQjs7WUFDUSxPQUFPLEdBQXVCO1lBQ2xDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxFQUFFLG9DQUFvQztTQUMxQztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQTBDLE9BQU8sQ0FBQyxDQUFDO0lBQzdFLENBQUM7O2dCQWJGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBSlEsV0FBVzs7OzBDQUhwQjtDQW1CQyxBQWRELElBY0M7U0FYWSwrQkFBK0I7Ozs7OztJQUM5QiwrQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb24sIFJlc3QgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuL3Jlc3Quc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0OiBSZXN0U2VydmljZSkge31cblxuICBnZXRDb25maWd1cmF0aW9uKCk6IE9ic2VydmFibGU8QXBwbGljYXRpb25Db25maWd1cmF0aW9uLlJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVxdWVzdDogUmVzdC5SZXF1ZXN0PG51bGw+ID0ge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIHVybDogJy9hcGkvYWJwL2FwcGxpY2F0aW9uLWNvbmZpZ3VyYXRpb24nLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5yZXN0LnJlcXVlc3Q8bnVsbCwgQXBwbGljYXRpb25Db25maWd1cmF0aW9uLlJlc3BvbnNlPihyZXF1ZXN0KTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/services/config.service.js b/npm/ng-packs/dist/core/esm5/lib/services/config.service.js new file mode 100644 index 00000000000..5157384594d --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/services/config.service.js @@ -0,0 +1,76 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { ConfigState } from '../states'; +import * as i0 from "@angular/core"; +import * as i1 from "@ngxs/store"; +var ConfigService = /** @class */ (function () { + function ConfigService(store) { + this.store = store; + } + /** + * @return {?} + */ + ConfigService.prototype.getAll = /** + * @return {?} + */ + function () { + return this.store.selectSnapshot(ConfigState.getAll); + }; + /** + * @param {?} key + * @return {?} + */ + ConfigService.prototype.getOne = /** + * @param {?} key + * @return {?} + */ + function (key) { + return this.store.selectSnapshot(ConfigState.getOne(key)); + }; + /** + * @param {?} keys + * @return {?} + */ + ConfigService.prototype.getDeep = /** + * @param {?} keys + * @return {?} + */ + function (keys) { + return this.store.selectSnapshot(ConfigState.getDeep(keys)); + }; + /** + * @param {?} key + * @return {?} + */ + ConfigService.prototype.getSetting = /** + * @param {?} key + * @return {?} + */ + function (key) { + return this.store.selectSnapshot(ConfigState.getSetting(key)); + }; + ConfigService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + ConfigService.ctorParameters = function () { return [ + { type: Store } + ]; }; + /** @nocollapse */ ConfigService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ConfigService_Factory() { return new ConfigService(i0.ɵɵinject(i1.Store)); }, token: ConfigService, providedIn: "root" }); + return ConfigService; +}()); +export { ConfigService }; +if (false) { + /** + * @type {?} + * @private + */ + ConfigService.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFFeEM7SUFJRSx1QkFBb0IsS0FBWTtRQUFaLFVBQUssR0FBTCxLQUFLLENBQU87SUFBRyxDQUFDOzs7O0lBRXBDLDhCQUFNOzs7SUFBTjtRQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Ozs7O0lBRUQsOEJBQU07Ozs7SUFBTixVQUFPLEdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7Ozs7SUFFRCwrQkFBTzs7OztJQUFQLFVBQVEsSUFBdUI7UUFDN0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7Ozs7SUFFRCxrQ0FBVTs7OztJQUFWLFVBQVcsR0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDOztnQkFwQkYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFMUSxLQUFLOzs7d0JBRGQ7Q0F5QkMsQUFyQkQsSUFxQkM7U0FsQlksYUFBYTs7Ozs7O0lBQ1osOEJBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBDb25maWdTdGF0ZSB9IGZyb20gJy4uL3N0YXRlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDb25maWdTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUpIHt9XG5cbiAgZ2V0QWxsKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KENvbmZpZ1N0YXRlLmdldEFsbCk7XG4gIH1cblxuICBnZXRPbmUoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChDb25maWdTdGF0ZS5nZXRPbmUoa2V5KSk7XG4gIH1cblxuICBnZXREZWVwKGtleXM6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoQ29uZmlnU3RhdGUuZ2V0RGVlcChrZXlzKSk7XG4gIH1cblxuICBnZXRTZXR0aW5nKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoQ29uZmlnU3RhdGUuZ2V0U2V0dGluZyhrZXkpKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/services/index.js b/npm/ng-packs/dist/core/esm5/lib/services/index.js new file mode 100644 index 00000000000..b7113ca26f0 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/services/index.js @@ -0,0 +1,11 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { ApplicationConfigurationService } from './application-configuration.service'; +export { ConfigService } from './config.service'; +export { LazyLoadService } from './lazy-load.service'; +export { LocalizationService } from './localization.service'; +export { ProfileService } from './profile.service'; +export { RestService } from './rest.service'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGdEQUFjLHFDQUFxQyxDQUFDO0FBQ3BELDhCQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGdDQUFjLHFCQUFxQixDQUFDO0FBQ3BDLG9DQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLCtCQUFjLG1CQUFtQixDQUFDO0FBQ2xDLDRCQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xhenktbG9hZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWxpemF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9maWxlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXN0LnNlcnZpY2UnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/services/lazy-load.service.js b/npm/ng-packs/dist/core/esm5/lib/services/lazy-load.service.js new file mode 100644 index 00000000000..795a12d8d08 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/services/lazy-load.service.js @@ -0,0 +1,87 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { ReplaySubject } from 'rxjs'; +import { uuid } from '../utils'; +import * as i0 from "@angular/core"; +var LazyLoadService = /** @class */ (function () { + function LazyLoadService() { + this.loadedLibraries = {}; + } + /** + * @param {?} url + * @param {?} type + * @param {?=} content + * @param {?=} targetQuery + * @param {?=} position + * @return {?} + */ + LazyLoadService.prototype.load = /** + * @param {?} url + * @param {?} type + * @param {?=} content + * @param {?=} targetQuery + * @param {?=} position + * @return {?} + */ + function (url, type, content, targetQuery, position) { + var _this = this; + if (content === void 0) { content = ''; } + if (targetQuery === void 0) { targetQuery = 'body'; } + if (position === void 0) { position = 'afterend'; } + if (!url && !content) + return; + /** @type {?} */ + var key = url ? url.slice(url.lastIndexOf('/') + 1) : uuid(); + if (this.loadedLibraries[key]) { + return this.loadedLibraries[key].asObservable(); + } + this.loadedLibraries[key] = new ReplaySubject(); + /** @type {?} */ + var library; + if (type === 'script') { + library = document.createElement('script'); + library.type = 'text/javascript'; + if (url) { + ((/** @type {?} */ (library))).src = url; + } + ((/** @type {?} */ (library))).text = content; + } + else if (url) { + library = document.createElement('link'); + library.type = 'text/css'; + ((/** @type {?} */ (library))).rel = 'stylesheet'; + if (url) { + ((/** @type {?} */ (library))).href = url; + } + } + else { + library = document.createElement('style'); + ((/** @type {?} */ (library))).textContent = content; + } + library.onload = (/** + * @return {?} + */ + function () { + _this.loadedLibraries[key].next(); + _this.loadedLibraries[key].complete(); + }); + document.querySelector(targetQuery).insertAdjacentElement(position, library); + return this.loadedLibraries[key].asObservable(); + }; + LazyLoadService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ LazyLoadService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function LazyLoadService_Factory() { return new LazyLoadService(); }, token: LazyLoadService, providedIn: "root" }); + return LazyLoadService; +}()); +export { LazyLoadService }; +if (false) { + /** @type {?} */ + LazyLoadService.prototype.loadedLibraries; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvbGF6eS1sb2FkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUVoQztJQUFBO1FBSUUsb0JBQWUsR0FBMkMsRUFBRSxDQUFDO0tBaUQ5RDs7Ozs7Ozs7O0lBL0NDLDhCQUFJOzs7Ozs7OztJQUFKLFVBQ0UsR0FBVyxFQUNYLElBQXdCLEVBQ3hCLE9BQW9CLEVBQ3BCLFdBQTRCLEVBQzVCLFFBQXFDO1FBTHZDLGlCQThDQztRQTNDQyx3QkFBQSxFQUFBLFlBQW9CO1FBQ3BCLDRCQUFBLEVBQUEsb0JBQTRCO1FBQzVCLHlCQUFBLEVBQUEscUJBQXFDO1FBRXJDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTzs7WUFDdkIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7UUFFOUQsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzdCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNqRDtRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQzs7WUFFNUMsT0FBTztRQUNYLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUNyQixPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzQyxPQUFPLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1lBQ2pDLElBQUksR0FBRyxFQUFFO2dCQUNQLENBQUMsbUJBQUEsT0FBTyxFQUFxQixDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQzthQUMxQztZQUVELENBQUMsbUJBQUEsT0FBTyxFQUFxQixDQUFDLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztTQUMvQzthQUFNLElBQUksR0FBRyxFQUFFO1lBQ2QsT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekMsT0FBTyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7WUFDMUIsQ0FBQyxtQkFBQSxPQUFPLEVBQW1CLENBQUMsQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDO1lBRWhELElBQUksR0FBRyxFQUFFO2dCQUNQLENBQUMsbUJBQUEsT0FBTyxFQUFtQixDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQzthQUN6QztTQUNGO2FBQU07WUFDTCxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQyxDQUFDLG1CQUFBLE9BQU8sRUFBb0IsQ0FBQyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7U0FDckQ7UUFFRCxPQUFPLENBQUMsTUFBTTs7O1FBQUc7WUFDZixLQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLEtBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkMsQ0FBQyxDQUFBLENBQUM7UUFFRixRQUFRLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUU3RSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEQsQ0FBQzs7Z0JBcERGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzswQkFORDtDQXlEQyxBQXJERCxJQXFEQztTQWxEWSxlQUFlOzs7SUFDMUIsMENBQTZEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTGF6eUxvYWRTZXJ2aWNlIHtcbiAgbG9hZGVkTGlicmFyaWVzOiB7IFt1cmw6IHN0cmluZ106IFJlcGxheVN1YmplY3Q8dm9pZD4gfSA9IHt9O1xuXG4gIGxvYWQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgdHlwZTogJ3NjcmlwdCcgfCAnc3R5bGUnLFxuICAgIGNvbnRlbnQ6IHN0cmluZyA9ICcnLFxuICAgIHRhcmdldFF1ZXJ5OiBzdHJpbmcgPSAnYm9keScsXG4gICAgcG9zaXRpb246IEluc2VydFBvc2l0aW9uID0gJ2FmdGVyZW5kJyxcbiAgKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgaWYgKCF1cmwgJiYgIWNvbnRlbnQpIHJldHVybjtcbiAgICBjb25zdCBrZXkgPSB1cmwgPyB1cmwuc2xpY2UodXJsLmxhc3RJbmRleE9mKCcvJykgKyAxKSA6IHV1aWQoKTtcblxuICAgIGlmICh0aGlzLmxvYWRlZExpYnJhcmllc1trZXldKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2FkZWRMaWJyYXJpZXNba2V5XS5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRlZExpYnJhcmllc1trZXldID0gbmV3IFJlcGxheVN1YmplY3QoKTtcblxuICAgIGxldCBsaWJyYXJ5O1xuICAgIGlmICh0eXBlID09PSAnc2NyaXB0Jykge1xuICAgICAgbGlicmFyeSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgbGlicmFyeS50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4gICAgICBpZiAodXJsKSB7XG4gICAgICAgIChsaWJyYXJ5IGFzIEhUTUxTY3JpcHRFbGVtZW50KS5zcmMgPSB1cmw7XG4gICAgICB9XG5cbiAgICAgIChsaWJyYXJ5IGFzIEhUTUxTY3JpcHRFbGVtZW50KS50ZXh0ID0gY29udGVudDtcbiAgICB9IGVsc2UgaWYgKHVybCkge1xuICAgICAgbGlicmFyeSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcbiAgICAgIGxpYnJhcnkudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICAobGlicmFyeSBhcyBIVE1MTGlua0VsZW1lbnQpLnJlbCA9ICdzdHlsZXNoZWV0JztcblxuICAgICAgaWYgKHVybCkge1xuICAgICAgICAobGlicmFyeSBhcyBIVE1MTGlua0VsZW1lbnQpLmhyZWYgPSB1cmw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpYnJhcnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgKGxpYnJhcnkgYXMgSFRNTFN0eWxlRWxlbWVudCkudGV4dENvbnRlbnQgPSBjb250ZW50O1xuICAgIH1cblxuICAgIGxpYnJhcnkub25sb2FkID0gKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkZWRMaWJyYXJpZXNba2V5XS5uZXh0KCk7XG4gICAgICB0aGlzLmxvYWRlZExpYnJhcmllc1trZXldLmNvbXBsZXRlKCk7XG4gICAgfTtcblxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0UXVlcnkpLmluc2VydEFkamFjZW50RWxlbWVudChwb3NpdGlvbiwgbGlicmFyeSk7XG5cbiAgICByZXR1cm4gdGhpcy5sb2FkZWRMaWJyYXJpZXNba2V5XS5hc09ic2VydmFibGUoKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/services/localization.service.js b/npm/ng-packs/dist/core/esm5/lib/services/localization.service.js new file mode 100644 index 00000000000..5c194a3d3c8 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/services/localization.service.js @@ -0,0 +1,67 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { ConfigState } from '../states'; +import * as i0 from "@angular/core"; +import * as i1 from "@ngxs/store"; +var LocalizationService = /** @class */ (function () { + function LocalizationService(store) { + this.store = store; + } + /** + * @param {?} keys + * @param {...?} interpolateParams + * @return {?} + */ + LocalizationService.prototype.get = /** + * @param {?} keys + * @param {...?} interpolateParams + * @return {?} + */ + function (keys) { + var interpolateParams = []; + for (var _i = 1; _i < arguments.length; _i++) { + interpolateParams[_i - 1] = arguments[_i]; + } + return this.store.select(ConfigState.getCopy.apply(ConfigState, tslib_1.__spread([keys], interpolateParams))); + }; + /** + * @param {?} keys + * @param {...?} interpolateParams + * @return {?} + */ + LocalizationService.prototype.instant = /** + * @param {?} keys + * @param {...?} interpolateParams + * @return {?} + */ + function (keys) { + var interpolateParams = []; + for (var _i = 1; _i < arguments.length; _i++) { + interpolateParams[_i - 1] = arguments[_i]; + } + return this.store.selectSnapshot(ConfigState.getCopy.apply(ConfigState, tslib_1.__spread([keys], interpolateParams))); + }; + LocalizationService.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] } + ]; + /** @nocollapse */ + LocalizationService.ctorParameters = function () { return [ + { type: Store } + ]; }; + /** @nocollapse */ LocalizationService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function LocalizationService_Factory() { return new LocalizationService(i0.ɵɵinject(i1.Store)); }, token: LocalizationService, providedIn: "root" }); + return LocalizationService; +}()); +export { LocalizationService }; +if (false) { + /** + * @type {?} + * @private + */ + LocalizationService.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBR3hDO0lBRUUsNkJBQW9CLEtBQVk7UUFBWixVQUFLLEdBQUwsS0FBSyxDQUFPO0lBQUcsQ0FBQzs7Ozs7O0lBRXBDLGlDQUFHOzs7OztJQUFILFVBQUksSUFBWTtRQUFFLDJCQUE4QjthQUE5QixVQUE4QixFQUE5QixxQkFBOEIsRUFBOUIsSUFBOEI7WUFBOUIsMENBQThCOztRQUM5QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLE9BQW5CLFdBQVcsb0JBQVMsSUFBSSxHQUFLLGlCQUFpQixHQUFFLENBQUM7SUFDNUUsQ0FBQzs7Ozs7O0lBRUQscUNBQU87Ozs7O0lBQVAsVUFBUSxJQUFZO1FBQUUsMkJBQThCO2FBQTlCLFVBQThCLEVBQTlCLHFCQUE4QixFQUE5QixJQUE4QjtZQUE5QiwwQ0FBOEI7O1FBQ2xELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLE9BQU8sT0FBbkIsV0FBVyxvQkFBUyxJQUFJLEdBQUssaUJBQWlCLEdBQUUsQ0FBQztJQUNwRixDQUFDOztnQkFWRixVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzs7O2dCQUp6QixLQUFLOzs7OEJBRGQ7Q0FnQkMsQUFYRCxJQVdDO1NBVlksbUJBQW1COzs7Ozs7SUFDbEIsb0NBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBDb25maWdTdGF0ZSB9IGZyb20gJy4uL3N0YXRlcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIGdldChrZXlzOiBzdHJpbmcsIC4uLmludGVycG9sYXRlUGFyYW1zOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1N0YXRlLmdldENvcHkoa2V5cywgLi4uaW50ZXJwb2xhdGVQYXJhbXMpKTtcbiAgfVxuXG4gIGluc3RhbnQoa2V5czogc3RyaW5nLCAuLi5pbnRlcnBvbGF0ZVBhcmFtczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KENvbmZpZ1N0YXRlLmdldENvcHkoa2V5cywgLi4uaW50ZXJwb2xhdGVQYXJhbXMpKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/services/profile.service.js b/npm/ng-packs/dist/core/esm5/lib/services/profile.service.js new file mode 100644 index 00000000000..2664e90c254 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/services/profile.service.js @@ -0,0 +1,81 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { RestService } from './rest.service'; +import * as i0 from "@angular/core"; +import * as i1 from "./rest.service"; +var ProfileService = /** @class */ (function () { + function ProfileService(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + ProfileService.prototype.get = /** + * @return {?} + */ + function () { + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/identity/my-profile', + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + ProfileService.prototype.update = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var request = { + method: 'PUT', + url: '/api/identity/my-profile', + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + ProfileService.prototype.changePassword = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var request = { + method: 'POST', + url: '/api/identity/my-profile/changePassword', + body: body, + }; + return this.rest.request(request); + }; + ProfileService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + ProfileService.ctorParameters = function () { return [ + { type: RestService } + ]; }; + /** @nocollapse */ ProfileService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ProfileService_Factory() { return new ProfileService(i0.ɵɵinject(i1.RestService)); }, token: ProfileService, providedIn: "root" }); + return ProfileService; +}()); +export { ProfileService }; +if (false) { + /** + * @type {?} + * @private + */ + ProfileService.prototype.rest; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3Byb2ZpbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUc3QztJQUlFLHdCQUFvQixJQUFpQjtRQUFqQixTQUFJLEdBQUosSUFBSSxDQUFhO0lBQUcsQ0FBQzs7OztJQUV6Qyw0QkFBRzs7O0lBQUg7O1lBQ1EsT0FBTyxHQUF1QjtZQUNsQyxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsRUFBRSwwQkFBMEI7U0FDaEM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUF5QixPQUFPLENBQUMsQ0FBQztJQUM1RCxDQUFDOzs7OztJQUVELCtCQUFNOzs7O0lBQU4sVUFBTyxJQUFzQjs7WUFDckIsT0FBTyxHQUFtQztZQUM5QyxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsRUFBRSwwQkFBMEI7WUFDL0IsSUFBSSxNQUFBO1NBQ0w7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFxQyxPQUFPLENBQUMsQ0FBQztJQUN4RSxDQUFDOzs7OztJQUVELHVDQUFjOzs7O0lBQWQsVUFBZSxJQUFtQzs7WUFDMUMsT0FBTyxHQUFnRDtZQUMzRCxNQUFNLEVBQUUsTUFBTTtZQUNkLEdBQUcsRUFBRSx5Q0FBeUM7WUFDOUMsSUFBSSxNQUFBO1NBQ0w7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFzQyxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDOztnQkFqQ0YsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFMUSxXQUFXOzs7eUJBRnBCO0NBdUNDLEFBbENELElBa0NDO1NBL0JZLGNBQWM7Ozs7OztJQUNiLDhCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZmlsZSwgUmVzdCB9IGZyb20gJy4uL21vZGVscyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzdDogUmVzdFNlcnZpY2UpIHt9XG5cbiAgZ2V0KCk6IE9ic2VydmFibGU8UHJvZmlsZS5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlc3QuUmVxdWVzdDxudWxsPiA9IHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB1cmw6ICcvYXBpL2lkZW50aXR5L215LXByb2ZpbGUnLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5yZXN0LnJlcXVlc3Q8bnVsbCwgUHJvZmlsZS5SZXNwb25zZT4ocmVxdWVzdCk7XG4gIH1cblxuICB1cGRhdGUoYm9keTogUHJvZmlsZS5SZXNwb25zZSk6IE9ic2VydmFibGU8UHJvZmlsZS5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlc3QuUmVxdWVzdDxQcm9maWxlLlJlc3BvbnNlPiA9IHtcbiAgICAgIG1ldGhvZDogJ1BVVCcsXG4gICAgICB1cmw6ICcvYXBpL2lkZW50aXR5L215LXByb2ZpbGUnLFxuICAgICAgYm9keSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PFByb2ZpbGUuUmVzcG9uc2UsIFByb2ZpbGUuUmVzcG9uc2U+KHJlcXVlc3QpO1xuICB9XG5cbiAgY2hhbmdlUGFzc3dvcmQoYm9keTogUHJvZmlsZS5DaGFuZ2VQYXNzd29yZFJlcXVlc3QpOiBPYnNlcnZhYmxlPG51bGw+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8UHJvZmlsZS5DaGFuZ2VQYXNzd29yZFJlcXVlc3Q+ID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICB1cmw6ICcvYXBpL2lkZW50aXR5L215LXByb2ZpbGUvY2hhbmdlUGFzc3dvcmQnLFxuICAgICAgYm9keSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PFByb2ZpbGUuQ2hhbmdlUGFzc3dvcmRSZXF1ZXN0LCBudWxsPihyZXF1ZXN0KTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/services/rest.service.js b/npm/ng-packs/dist/core/esm5/lib/services/rest.service.js new file mode 100644 index 00000000000..b63e292b7fe --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/services/rest.service.js @@ -0,0 +1,92 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { NEVER, throwError } from 'rxjs'; +import { catchError, take } from 'rxjs/operators'; +import { ConfigState } from '../states'; +import { RestOccurError } from '../actions'; +import * as i0 from "@angular/core"; +import * as i1 from "@angular/common/http"; +import * as i2 from "@ngxs/store"; +var RestService = /** @class */ (function () { + function RestService(http, store) { + this.http = http; + this.store = store; + } + /** + * @param {?} err + * @return {?} + */ + RestService.prototype.handleError = /** + * @param {?} err + * @return {?} + */ + function (err) { + this.store.dispatch(new RestOccurError(err)); + console.error(err); + return NEVER; + }; + /** + * @template T, R + * @param {?} request + * @param {?=} config + * @param {?=} api + * @return {?} + */ + RestService.prototype.request = /** + * @template T, R + * @param {?} request + * @param {?=} config + * @param {?=} api + * @return {?} + */ + function (request, config, api) { + var _this = this; + if (config === void 0) { config = {}; } + var _a = config.observe, observe = _a === void 0 ? "body" /* Body */ : _a, throwErr = config.throwErr; + /** @type {?} */ + var url = api || this.store.selectSnapshot(ConfigState.getApiUrl()) + request.url; + var method = request.method, options = tslib_1.__rest(request, ["method"]); + return this.http.request(method, url, (/** @type {?} */ (tslib_1.__assign({ observe: observe }, options)))).pipe(observe === "body" /* Body */ ? take(1) : null, catchError((/** + * @param {?} err + * @return {?} + */ + function (err) { + if (throwErr) { + return throwError(err); + } + return _this.handleError(err); + }))); + }; + RestService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + RestService.ctorParameters = function () { return [ + { type: HttpClient }, + { type: Store } + ]; }; + /** @nocollapse */ RestService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function RestService_Factory() { return new RestService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.Store)); }, token: RestService, providedIn: "root" }); + return RestService; +}()); +export { RestService }; +if (false) { + /** + * @type {?} + * @private + */ + RestService.prototype.http; + /** + * @type {?} + * @private + */ + RestService.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3Jlc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLEtBQUssRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7QUFFNUM7SUFJRSxxQkFBb0IsSUFBZ0IsRUFBVSxLQUFZO1FBQXRDLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFPO0lBQUcsQ0FBQzs7Ozs7SUFFOUQsaUNBQVc7Ozs7SUFBWCxVQUFZLEdBQVE7UUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3QyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7Ozs7Ozs7SUFFRCw2QkFBTzs7Ozs7OztJQUFQLFVBQWMsT0FBeUMsRUFBRSxNQUF3QixFQUFFLEdBQVk7UUFBL0YsaUJBY0M7UUFkd0QsdUJBQUEsRUFBQSxXQUF3QjtRQUN2RSxJQUFBLG1CQUEyQixFQUEzQixnREFBMkIsRUFBRSwwQkFBUTs7WUFDdkMsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRztRQUMzRSxJQUFBLHVCQUFNLEVBQUUsNkNBQVU7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBSSxNQUFNLEVBQUUsR0FBRyxFQUFFLHNDQUFFLE9BQU8sU0FBQSxJQUFLLE9BQU8sR0FBUyxDQUFDLENBQUMsSUFBSSxDQUMzRSxPQUFPLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDOUMsVUFBVTs7OztRQUFDLFVBQUEsR0FBRztZQUNaLElBQUksUUFBUSxFQUFFO2dCQUNaLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3hCO1lBRUQsT0FBTyxLQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLENBQUMsRUFBQyxDQUNILENBQUM7SUFDSixDQUFDOztnQkExQkYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFYUSxVQUFVO2dCQUVWLEtBQUs7OztzQkFGZDtDQW9DQyxBQTNCRCxJQTJCQztTQXhCWSxXQUFXOzs7Ozs7SUFDViwyQkFBd0I7Ozs7O0lBQUUsNEJBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IE5FVkVSLCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUmVzdCB9IGZyb20gJy4uL21vZGVscy9yZXN0JztcbmltcG9ydCB7IENvbmZpZ1N0YXRlIH0gZnJvbSAnLi4vc3RhdGVzJztcbmltcG9ydCB7IFJlc3RPY2N1ckVycm9yIH0gZnJvbSAnLi4vYWN0aW9ucyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBSZXN0U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBzdG9yZTogU3RvcmUpIHt9XG5cbiAgaGFuZGxlRXJyb3IoZXJyOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJlc3RPY2N1ckVycm9yKGVycikpO1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICByZXR1cm4gTkVWRVI7XG4gIH1cblxuICByZXF1ZXN0PFQsIFI+KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PFQ+IHwgUmVzdC5SZXF1ZXN0PFQ+LCBjb25maWc6IFJlc3QuQ29uZmlnID0ge30sIGFwaT86IHN0cmluZyk6IE9ic2VydmFibGU8Uj4ge1xuICAgIGNvbnN0IHsgb2JzZXJ2ZSA9IFJlc3QuT2JzZXJ2ZS5Cb2R5LCB0aHJvd0VyciB9ID0gY29uZmlnO1xuICAgIGNvbnN0IHVybCA9IGFwaSB8fCB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KENvbmZpZ1N0YXRlLmdldEFwaVVybCgpKSArIHJlcXVlc3QudXJsO1xuICAgIGNvbnN0IHsgbWV0aG9kLCAuLi5vcHRpb25zIH0gPSByZXF1ZXN0O1xuICAgIHJldHVybiB0aGlzLmh0dHAucmVxdWVzdDxUPihtZXRob2QsIHVybCwgeyBvYnNlcnZlLCAuLi5vcHRpb25zIH0gYXMgYW55KS5waXBlKFxuICAgICAgb2JzZXJ2ZSA9PT0gUmVzdC5PYnNlcnZlLkJvZHkgPyB0YWtlKDEpIDogbnVsbCxcbiAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgaWYgKHRocm93RXJyKSB7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9yKGVycik7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/states/config.state.js b/npm/ng-packs/dist/core/esm5/lib/states/config.state.js new file mode 100644 index 00000000000..a5c999b86c8 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/states/config.state.js @@ -0,0 +1,376 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { State, Selector, createSelector, Action, Store } from '@ngxs/store'; +import { ConfigGetAppConfiguration, PatchRouteByName } from '../actions/config.actions'; +import { ApplicationConfigurationService } from '../services/application-configuration.service'; +import { tap, switchMap } from 'rxjs/operators'; +import snq from 'snq'; +import { SessionSetLanguage } from '../actions'; +import { SessionState } from './session.state'; +import { of } from 'rxjs'; +import { organizeRoutes } from '../utils/route-utils'; +var ConfigState = /** @class */ (function () { + function ConfigState(appConfigurationService, store) { + this.appConfigurationService = appConfigurationService; + this.store = store; + } + ConfigState_1 = ConfigState; + /** + * @param {?} state + * @return {?} + */ + ConfigState.getAll = /** + * @param {?} state + * @return {?} + */ + function (state) { + return state; + }; + /** + * @param {?} key + * @return {?} + */ + ConfigState.getOne = /** + * @param {?} key + * @return {?} + */ + function (key) { + /** @type {?} */ + var selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return state[key]; + })); + return selector; + }; + /** + * @param {?} keys + * @return {?} + */ + ConfigState.getDeep = /** + * @param {?} keys + * @return {?} + */ + function (keys) { + if (typeof keys === 'string') { + keys = keys.split('.'); + } + if (!Array.isArray(keys)) { + throw new Error('The argument must be a dot string or an string array.'); + } + /** @type {?} */ + var selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return ((/** @type {?} */ (keys))).reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { + if (acc) { + return acc[val]; + } + return undefined; + }), state); + })); + return selector; + }; + /** + * @param {?=} key + * @return {?} + */ + ConfigState.getApiUrl = /** + * @param {?=} key + * @return {?} + */ + function (key) { + /** @type {?} */ + var selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return state.environment.apis[key || 'default'].url; + })); + return selector; + }; + /** + * @param {?} key + * @return {?} + */ + ConfigState.getSetting = /** + * @param {?} key + * @return {?} + */ + function (key) { + /** @type {?} */ + var selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return snq((/** + * @return {?} + */ + function () { return state.setting.values[key]; })); + })); + return selector; + }; + /** + * @param {?=} condition + * @return {?} + */ + ConfigState.getGrantedPolicy = /** + * @param {?=} condition + * @return {?} + */ + function (condition) { + if (condition === void 0) { condition = ''; } + /** @type {?} */ + var keys = condition + .replace(/\(|\)|\!|\s/g, '') + .split(/\|\||&&/) + .filter((/** + * @param {?} key + * @return {?} + */ + function (key) { return key; })); + /** @type {?} */ + var selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + if (!keys.length) + return true; + /** @type {?} */ + var getPolicy = (/** + * @param {?} key + * @return {?} + */ + function (key) { return snq((/** + * @return {?} + */ + function () { return state.auth.grantedPolicies[key]; }), false); }); + if (keys.length > 1) { + keys.forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { + /** @type {?} */ + var value = getPolicy(key); + condition = condition.replace(key, value); + })); + // tslint:disable-next-line: no-eval + return eval("!!" + condition); + } + return getPolicy(condition); + })); + return selector; + }; + /** + * @param {?} key + * @param {...?} interpolateParams + * @return {?} + */ + ConfigState.getCopy = /** + * @param {?} key + * @param {...?} interpolateParams + * @return {?} + */ + function (key) { + var interpolateParams = []; + for (var _i = 1; _i < arguments.length; _i++) { + interpolateParams[_i - 1] = arguments[_i]; + } + if (!key) + key = ''; + /** @type {?} */ + var keys = (/** @type {?} */ (key.split('::'))); + /** @type {?} */ + var selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + var defaultResourceName = state.environment.localization.defaultResourceName; + if (keys[0] === '') { + if (!defaultResourceName) { + throw new Error("Please check your environment. May you forget set defaultResourceName? \n Here is the example:\n { production: false,\n localization: {\n defaultResourceName: 'MyProjectName'\n }\n }"); + } + keys[0] = snq((/** + * @return {?} + */ + function () { return defaultResourceName; })); + } + /** @type {?} */ + var copy = keys.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { + if (acc) { + return acc[val]; + } + return undefined; + }), state.localization.values); + if (copy && interpolateParams && interpolateParams.length) { + interpolateParams.forEach((/** + * @param {?} param + * @param {?} index + * @return {?} + */ + function (param, index) { + copy = copy.replace("'{" + index + "}'", param); + })); + } + return copy || key; + })); + return selector; + }; + /** + * @param {?} __0 + * @return {?} + */ + ConfigState.prototype.addData = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var _this = this; + var patchState = _a.patchState, dispatch = _a.dispatch; + return this.appConfigurationService.getConfiguration().pipe(tap((/** + * @param {?} configuration + * @return {?} + */ + function (configuration) { + return patchState(tslib_1.__assign({}, configuration)); + })), switchMap((/** + * @param {?} configuration + * @return {?} + */ + function (configuration) { + return _this.store.selectSnapshot(SessionState.getLanguage) + ? of(null) + : dispatch(new SessionSetLanguage(snq((/** + * @return {?} + */ + function () { return configuration.setting.values['Abp.Localization.DefaultLanguage']; })))); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + ConfigState.prototype.patchRoute = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState, getState = _a.getState; + var name = _b.name, newValue = _b.newValue; + /** @type {?} */ + var routes = getState().routes; + /** @type {?} */ + var index = routes.findIndex((/** + * @param {?} route + * @return {?} + */ + function (route) { return route.name === name; })); + routes = patchRouteDeep(routes, name, newValue); + return patchState({ + routes: routes, + }); + }; + var ConfigState_1; + tslib_1.__decorate([ + Action(ConfigGetAppConfiguration), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", void 0) + ], ConfigState.prototype, "addData", null); + tslib_1.__decorate([ + Action(PatchRouteByName), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, PatchRouteByName]), + tslib_1.__metadata("design:returntype", void 0) + ], ConfigState.prototype, "patchRoute", null); + tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", void 0) + ], ConfigState, "getAll", null); + ConfigState = ConfigState_1 = tslib_1.__decorate([ + State({ + name: 'ConfigState', + defaults: (/** @type {?} */ ({})), + }), + tslib_1.__metadata("design:paramtypes", [ApplicationConfigurationService, Store]) + ], ConfigState); + return ConfigState; +}()); +export { ConfigState }; +if (false) { + /** + * @type {?} + * @private + */ + ConfigState.prototype.appConfigurationService; + /** + * @type {?} + * @private + */ + ConfigState.prototype.store; +} +/** + * @param {?} routes + * @param {?} name + * @param {?} newValue + * @param {?=} parentUrl + * @return {?} + */ +function patchRouteDeep(routes, name, newValue, parentUrl) { + if (parentUrl === void 0) { parentUrl = null; } + routes = routes.map((/** + * @param {?} route + * @return {?} + */ + function (route) { + if (route.name === name) { + if (newValue.path) { + newValue.url = parentUrl + "/" + newValue.path; + } + if (newValue.children && newValue.children.length) { + newValue.children = newValue.children.map((/** + * @param {?} child + * @return {?} + */ + function (child) { return (tslib_1.__assign({}, child, { url: parentUrl + "/" + route.path + "/" + child.path })); })); + } + return tslib_1.__assign({}, route, newValue); + } + else if (route.children && route.children.length) { + route.children = patchRouteDeep(route.children, name, newValue, (parentUrl || '/') + route.path); + } + return route; + })); + if (parentUrl) { + // recursive block + return routes; + } + return organizeRoutes(routes); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnN0YXRlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL3N0YXRlcy9jb25maWcuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFnQixLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFM0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEYsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDaEcsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUM7QUFDdEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBNkIsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0lBZ0ovRSxxQkFBb0IsdUJBQXdELEVBQVUsS0FBWTtRQUE5RSw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQWlDO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBTztJQUFHLENBQUM7b0JBMUkzRixXQUFXOzs7OztJQUVmLGtCQUFNOzs7O0lBQWIsVUFBYyxLQUFtQjtRQUMvQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Ozs7O0lBRU0sa0JBQU07Ozs7SUFBYixVQUFjLEdBQVc7O1lBQ2pCLFFBQVEsR0FBRyxjQUFjLENBQzdCLENBQUMsYUFBVyxDQUFDOzs7O1FBQ2IsVUFBUyxLQUFtQjtZQUMxQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQixDQUFDLEVB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QUFDO2FBQ0w7WUFFRCw0QkFBWSxLQUFLLEVBQUssUUFBUSxFQUFHO1NBQ2xDO2FBQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ2xELEtBQUssQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEc7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsRUFBQyxDQUFDO0lBRUgsSUFBSSxTQUFTLEVBQUU7UUFDYixrQkFBa0I7UUFDbEIsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUVELE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGF0ZSwgU2VsZWN0b3IsIGNyZWF0ZVNlbGVjdG9yLCBBY3Rpb24sIFN0YXRlQ29udGV4dCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBDb25maWcsIEFCUCB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBDb25maWdHZXRBcHBDb25maWd1cmF0aW9uLCBQYXRjaFJvdXRlQnlOYW1lIH0gZnJvbSAnLi4vYWN0aW9ucy9jb25maWcuYWN0aW9ucyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwbGljYXRpb24tY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IHRhcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHNucSBmcm9tICdzbnEnO1xuaW1wb3J0IHsgU2Vzc2lvblNldExhbmd1YWdlIH0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBTZXNzaW9uU3RhdGUgfSBmcm9tICcuL3Nlc3Npb24uc3RhdGUnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNldENoaWxkUm91dGUsIHNvcnRSb3V0ZXMsIG9yZ2FuaXplUm91dGVzIH0gZnJvbSAnLi4vdXRpbHMvcm91dGUtdXRpbHMnO1xuXG5AU3RhdGU8Q29uZmlnLlN0YXRlPih7XG4gIG5hbWU6ICdDb25maWdTdGF0ZScsXG4gIGRlZmF1bHRzOiB7fSBhcyBDb25maWcuU3RhdGUsXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpZ1N0YXRlIHtcbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldEFsbChzdGF0ZTogQ29uZmlnLlN0YXRlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgc3RhdGljIGdldE9uZShrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICBbQ29uZmlnU3RhdGVdLFxuICAgICAgZnVuY3Rpb24oc3RhdGU6IENvbmZpZy5TdGF0ZSkge1xuICAgICAgICByZXR1cm4gc3RhdGVba2V5XTtcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXREZWVwKGtleXM6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiBrZXlzID09PSAnc3RyaW5nJykge1xuICAgICAga2V5cyA9IGtleXMuc3BsaXQoJy4nKTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBkb3Qgc3RyaW5nIG9yIGFuIHN0cmluZyBhcnJheS4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgW0NvbmZpZ1N0YXRlXSxcbiAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDb25maWcuU3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIChrZXlzIGFzIHN0cmluZ1tdKS5yZWR1Y2UoKGFjYywgdmFsKSA9PiB7XG4gICAgICAgICAgaWYgKGFjYykge1xuICAgICAgICAgICAgcmV0dXJuIGFjY1t2YWxdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0sIHN0YXRlKTtcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRBcGlVcmwoa2V5Pzogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIFtDb25maWdTdGF0ZV0sXG4gICAgICBmdW5jdGlvbihzdGF0ZTogQ29uZmlnLlN0YXRlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlLmVudmlyb25tZW50LmFwaXNba2V5IHx8ICdkZWZhdWx0J10udXJsO1xuICAgICAgfSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHNlbGVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldFNldHRpbmcoa2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgW0NvbmZpZ1N0YXRlXSxcbiAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDb25maWcuU3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIHNucSgoKSA9PiBzdGF0ZS5zZXR0aW5nLnZhbHVlc1trZXldKTtcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRHcmFudGVkUG9saWN5KGNvbmRpdGlvbjogc3RyaW5nID0gJycpIHtcbiAgICBjb25zdCBrZXlzID0gY29uZGl0aW9uXG4gICAgICAucmVwbGFjZSgvXFwofFxcKXxcXCF8XFxzL2csICcnKVxuICAgICAgLnNwbGl0KC9cXHxcXHx8JiYvKVxuICAgICAgLmZpbHRlcihrZXkgPT4ga2V5KTtcblxuICAgIGNvbnN0IHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICBbQ29uZmlnU3RhdGVdLFxuICAgICAgZnVuY3Rpb24oc3RhdGU6IENvbmZpZy5TdGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWtleXMubGVuZ3RoKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBjb25zdCBnZXRQb2xpY3kgPSBrZXkgPT4gc25xKCgpID0+IHN0YXRlLmF1dGguZ3JhbnRlZFBvbGljaWVzW2tleV0sIGZhbHNlKTtcbiAgICAgICAgaWYgKGtleXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRQb2xpY3koa2V5KTtcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGNvbmRpdGlvbi5yZXBsYWNlKGtleSwgdmFsdWUpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1ldmFsXG4gICAgICAgICAgcmV0dXJuIGV2YWwoYCEhJHtjb25kaXRpb259YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0UG9saWN5KGNvbmRpdGlvbik7XG4gICAgICB9LFxuICAgICk7XG5cbiAgICByZXR1cm4gc2VsZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgZ2V0Q29weShrZXk6IHN0cmluZywgLi4uaW50ZXJwb2xhdGVQYXJhbXM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKCFrZXkpIGtleSA9ICcnO1xuXG4gICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdCgnOjonKSBhcyBzdHJpbmdbXTtcbiAgICBjb25zdCBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgW0NvbmZpZ1N0YXRlXSxcbiAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDb25maWcuU3RhdGUpIHtcbiAgICAgICAgY29uc3QgeyBkZWZhdWx0UmVzb3VyY2VOYW1lIH0gPSBzdGF0ZS5lbnZpcm9ubWVudC5sb2NhbGl6YXRpb247XG4gICAgICAgIGlmIChrZXlzWzBdID09PSAnJykge1xuICAgICAgICAgIGlmICghZGVmYXVsdFJlc291cmNlTmFtZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgUGxlYXNlIGNoZWNrIHlvdXIgZW52aXJvbm1lbnQuIE1heSB5b3UgZm9yZ2V0IHNldCBkZWZhdWx0UmVzb3VyY2VOYW1lPyBcbiAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgZXhhbXBsZTpcbiAgICAgICAgICAgICAgIHsgcHJvZHVjdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgIGxvY2FsaXphdGlvbjoge1xuICAgICAgICAgICAgICAgICAgIGRlZmF1bHRSZXNvdXJjZU5hbWU6ICdNeVByb2plY3ROYW1lJ1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGtleXNbMF0gPSBzbnEoKCkgPT4gZGVmYXVsdFJlc291cmNlTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY29weSA9IGtleXMucmVkdWNlKChhY2MsIHZhbCkgPT4ge1xuICAgICAgICAgIGlmIChhY2MpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2NbdmFsXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9LCBzdGF0ZS5sb2NhbGl6YXRpb24udmFsdWVzKTtcblxuICAgICAgICBpZiAoY29weSAmJiBpbnRlcnBvbGF0ZVBhcmFtcyAmJiBpbnRlcnBvbGF0ZVBhcmFtcy5sZW5ndGgpIHtcbiAgICAgICAgICBpbnRlcnBvbGF0ZVBhcmFtcy5mb3JFYWNoKChwYXJhbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvcHkgPSBjb3B5LnJlcGxhY2UoYCd7JHtpbmRleH19J2AsIHBhcmFtKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb3B5IHx8IGtleTtcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBwQ29uZmlndXJhdGlvblNlcnZpY2U6IEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvblNlcnZpY2UsIHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIEBBY3Rpb24oQ29uZmlnR2V0QXBwQ29uZmlndXJhdGlvbilcbiAgYWRkRGF0YSh7IHBhdGNoU3RhdGUsIGRpc3BhdGNoIH06IFN0YXRlQ29udGV4dDxDb25maWcuU3RhdGU+KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwQ29uZmlndXJhdGlvblNlcnZpY2UuZ2V0Q29uZmlndXJhdGlvbigpLnBpcGUoXG4gICAgICB0YXAoY29uZmlndXJhdGlvbiA9PlxuICAgICAgICBwYXRjaFN0YXRlKHtcbiAgICAgICAgICAuLi5jb25maWd1cmF0aW9uLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgICBzd2l0Y2hNYXAoY29uZmlndXJhdGlvbiA9PlxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNlc3Npb25TdGF0ZS5nZXRMYW5ndWFnZSlcbiAgICAgICAgICA/IG9mKG51bGwpXG4gICAgICAgICAgOiBkaXNwYXRjaChcbiAgICAgICAgICAgICAgbmV3IFNlc3Npb25TZXRMYW5ndWFnZShzbnEoKCkgPT4gY29uZmlndXJhdGlvbi5zZXR0aW5nLnZhbHVlc1snQWJwLkxvY2FsaXphdGlvbi5EZWZhdWx0TGFuZ3VhZ2UnXSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIEBBY3Rpb24oUGF0Y2hSb3V0ZUJ5TmFtZSlcbiAgcGF0Y2hSb3V0ZSh7IHBhdGNoU3RhdGUsIGdldFN0YXRlIH06IFN0YXRlQ29udGV4dDxDb25maWcuU3RhdGU+LCB7IG5hbWUsIG5ld1ZhbHVlIH06IFBhdGNoUm91dGVCeU5hbWUpIHtcbiAgICBsZXQgcm91dGVzOiBBQlAuRnVsbFJvdXRlW10gPSBnZXRTdGF0ZSgpLnJvdXRlcztcblxuICAgIGNvbnN0IGluZGV4ID0gcm91dGVzLmZpbmRJbmRleChyb3V0ZSA9PiByb3V0ZS5uYW1lID09PSBuYW1lKTtcblxuICAgIHJvdXRlcyA9IHBhdGNoUm91dGVEZWVwKHJvdXRlcywgbmFtZSwgbmV3VmFsdWUpO1xuXG4gICAgcmV0dXJuIHBhdGNoU3RhdGUoe1xuICAgICAgcm91dGVzLFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhdGNoUm91dGVEZWVwKFxuICByb3V0ZXM6IEFCUC5GdWxsUm91dGVbXSxcbiAgbmFtZTogc3RyaW5nLFxuICBuZXdWYWx1ZTogUGFydGlhbDxBQlAuRnVsbFJvdXRlPixcbiAgcGFyZW50VXJsOiBzdHJpbmcgPSBudWxsLFxuKTogQUJQLkZ1bGxSb3V0ZVtdIHtcbiAgcm91dGVzID0gcm91dGVzLm1hcChyb3V0ZSA9PiB7XG4gICAgaWYgKHJvdXRlLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIGlmIChuZXdWYWx1ZS5wYXRoKSB7XG4gICAgICAgIG5ld1ZhbHVlLnVybCA9IGAke3BhcmVudFVybH0vJHtuZXdWYWx1ZS5wYXRofWA7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXdWYWx1ZS5jaGlsZHJlbiAmJiBuZXdWYWx1ZS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgbmV3VmFsdWUuY2hpbGRyZW4gPSBuZXdWYWx1ZS5jaGlsZHJlbi5tYXAoY2hpbGQgPT4gKHtcbiAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICB1cmw6IGAke3BhcmVudFVybH0vJHtyb3V0ZS5wYXRofS8ke2NoaWxkLnBhdGh9YCxcbiAgICAgICAgfSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geyAuLi5yb3V0ZSwgLi4ubmV3VmFsdWUgfTtcbiAgICB9IGVsc2UgaWYgKHJvdXRlLmNoaWxkcmVuICYmIHJvdXRlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgcm91dGUuY2hpbGRyZW4gPSBwYXRjaFJvdXRlRGVlcChyb3V0ZS5jaGlsZHJlbiwgbmFtZSwgbmV3VmFsdWUsIChwYXJlbnRVcmwgfHwgJy8nKSArIHJvdXRlLnBhdGgpO1xuICAgIH1cblxuICAgIHJldHVybiByb3V0ZTtcbiAgfSk7XG5cbiAgaWYgKHBhcmVudFVybCkge1xuICAgIC8vIHJlY3Vyc2l2ZSBibG9ja1xuICAgIHJldHVybiByb3V0ZXM7XG4gIH1cblxuICByZXR1cm4gb3JnYW5pemVSb3V0ZXMocm91dGVzKTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/states/index.js b/npm/ng-packs/dist/core/esm5/lib/states/index.js new file mode 100644 index 00000000000..8b1dd2e36a7 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/states/index.js @@ -0,0 +1,8 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { ProfileState } from './profile.state'; +export { ConfigState } from './config.state'; +export { SessionState } from './session.state'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvc3RhdGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBYyxpQkFBaUIsQ0FBQztBQUNoQyw0QkFBYyxnQkFBZ0IsQ0FBQztBQUMvQiw2QkFBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcHJvZmlsZS5zdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy5zdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL3Nlc3Npb24uc3RhdGUnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/states/profile.state.js b/npm/ng-packs/dist/core/esm5/lib/states/profile.state.js new file mode 100644 index 00000000000..f089fa52c5e --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/states/profile.state.js @@ -0,0 +1,124 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { State, Action, Selector } from '@ngxs/store'; +import { ProfileGet, ProfileChangePassword, ProfileUpdate } from '../actions/profile.actions'; +import { ProfileService } from '../services/profile.service'; +import { tap } from 'rxjs/operators'; +var ProfileState = /** @class */ (function () { + function ProfileState(profileService) { + this.profileService = profileService; + } + /** + * @param {?} __0 + * @return {?} + */ + ProfileState.getProfile = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var profile = _a.profile; + return profile; + }; + /** + * @param {?} __0 + * @return {?} + */ + ProfileState.prototype.profileGet = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var patchState = _a.patchState; + return this.profileService.get().pipe(tap((/** + * @param {?} profile + * @return {?} + */ + function (profile) { + return patchState({ + profile: profile, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + ProfileState.prototype.profileUpdate = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.profileService.update(payload).pipe(tap((/** + * @param {?} profile + * @return {?} + */ + function (profile) { + return patchState({ + profile: profile, + }); + }))); + }; + /** + * @param {?} _ + * @param {?} __1 + * @return {?} + */ + ProfileState.prototype.changePassword = /** + * @param {?} _ + * @param {?} __1 + * @return {?} + */ + function (_, _a) { + var payload = _a.payload; + return this.profileService.changePassword(payload); + }; + tslib_1.__decorate([ + Action(ProfileGet), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", void 0) + ], ProfileState.prototype, "profileGet", null); + tslib_1.__decorate([ + Action(ProfileUpdate), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, ProfileUpdate]), + tslib_1.__metadata("design:returntype", void 0) + ], ProfileState.prototype, "profileUpdate", null); + tslib_1.__decorate([ + Action(ProfileChangePassword), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, ProfileChangePassword]), + tslib_1.__metadata("design:returntype", void 0) + ], ProfileState.prototype, "changePassword", null); + tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", Object) + ], ProfileState, "getProfile", null); + ProfileState = tslib_1.__decorate([ + State({ + name: 'ProfileState', + defaults: (/** @type {?} */ ({})), + }), + tslib_1.__metadata("design:paramtypes", [ProfileService]) + ], ProfileState); + return ProfileState; +}()); +export { ProfileState }; +if (false) { + /** + * @type {?} + * @private + */ + ProfileState.prototype.profileService; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zdGF0ZXMvcHJvZmlsZS5zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFnQixRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztJQVluQyxzQkFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQUcsQ0FBQzs7Ozs7SUFKL0MsdUJBQVU7Ozs7SUFBakIsVUFBa0IsRUFBMEI7WUFBeEIsb0JBQU87UUFDekIsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs7Ozs7SUFLRCxpQ0FBVTs7OztJQUFWLFVBQVcsRUFBMkM7WUFBekMsMEJBQVU7UUFDckIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FDbkMsR0FBRzs7OztRQUFDLFVBQUEsT0FBTztZQUNULE9BQUEsVUFBVSxDQUFDO2dCQUNULE9BQU8sU0FBQTthQUNSLENBQUM7UUFGRixDQUVFLEVBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7Ozs7O0lBR0Qsb0NBQWE7Ozs7O0lBQWIsVUFBYyxFQUEyQyxFQUFFLEVBQTBCO1lBQXJFLDBCQUFVO1lBQW1DLG9CQUFPO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM3QyxHQUFHOzs7O1FBQUMsVUFBQSxPQUFPO1lBQ1QsT0FBQSxVQUFVLENBQUM7Z0JBQ1QsT0FBTyxTQUFBO2FBQ1IsQ0FBQztRQUZGLENBRUUsRUFDSCxDQUNGLENBQUM7SUFDSixDQUFDOzs7Ozs7SUFHRCxxQ0FBYzs7Ozs7SUFBZCxVQUFlLENBQUMsRUFBRSxFQUFrQztZQUFoQyxvQkFBTztRQUN6QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUF4QkQ7UUFEQyxNQUFNLENBQUMsVUFBVSxDQUFDOzs7O2tEQVNsQjtJQUdEO1FBREMsTUFBTSxDQUFDLGFBQWEsQ0FBQzs7eURBQ2tELGFBQWE7O3FEQVFwRjtJQUdEO1FBREMsTUFBTSxDQUFDLHFCQUFxQixDQUFDOzt5REFDQyxxQkFBcUI7O3NEQUVuRDtJQS9CRDtRQURDLFFBQVEsRUFBRTs7Ozt3Q0FHVjtJQUpVLFlBQVk7UUFKeEIsS0FBSyxDQUFnQjtZQUNwQixJQUFJLEVBQUUsY0FBYztZQUNwQixRQUFRLEVBQUUsbUJBQUEsRUFBRSxFQUFpQjtTQUM5QixDQUFDO2lEQU9vQyxjQUFjO09BTnZDLFlBQVksQ0FrQ3hCO0lBQUQsbUJBQUM7Q0FBQSxJQUFBO1NBbENZLFlBQVk7Ozs7OztJQU1YLHNDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXRlLCBBY3Rpb24sIFN0YXRlQ29udGV4dCwgU2VsZWN0b3IgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBQcm9maWxlR2V0LCBQcm9maWxlQ2hhbmdlUGFzc3dvcmQsIFByb2ZpbGVVcGRhdGUgfSBmcm9tICcuLi9hY3Rpb25zL3Byb2ZpbGUuYWN0aW9ucyc7XG5pbXBvcnQgeyBQcm9maWxlIH0gZnJvbSAnLi4vbW9kZWxzL3Byb2ZpbGUnO1xuaW1wb3J0IHsgUHJvZmlsZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcm9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AU3RhdGU8UHJvZmlsZS5TdGF0ZT4oe1xuICBuYW1lOiAnUHJvZmlsZVN0YXRlJyxcbiAgZGVmYXVsdHM6IHt9IGFzIFByb2ZpbGUuU3RhdGUsXG59KVxuZXhwb3J0IGNsYXNzIFByb2ZpbGVTdGF0ZSB7XG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRQcm9maWxlKHsgcHJvZmlsZSB9OiBQcm9maWxlLlN0YXRlKTogUHJvZmlsZS5SZXNwb25zZSB7XG4gICAgcmV0dXJuIHByb2ZpbGU7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHByb2ZpbGVTZXJ2aWNlOiBQcm9maWxlU2VydmljZSkge31cblxuICBAQWN0aW9uKFByb2ZpbGVHZXQpXG4gIHByb2ZpbGVHZXQoeyBwYXRjaFN0YXRlIH06IFN0YXRlQ29udGV4dDxQcm9maWxlLlN0YXRlPikge1xuICAgIHJldHVybiB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldCgpLnBpcGUoXG4gICAgICB0YXAocHJvZmlsZSA9PlxuICAgICAgICBwYXRjaFN0YXRlKHtcbiAgICAgICAgICBwcm9maWxlLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIEBBY3Rpb24oUHJvZmlsZVVwZGF0ZSlcbiAgcHJvZmlsZVVwZGF0ZSh7IHBhdGNoU3RhdGUgfTogU3RhdGVDb250ZXh0PFByb2ZpbGUuU3RhdGU+LCB7IHBheWxvYWQgfTogUHJvZmlsZVVwZGF0ZSkge1xuICAgIHJldHVybiB0aGlzLnByb2ZpbGVTZXJ2aWNlLnVwZGF0ZShwYXlsb2FkKS5waXBlKFxuICAgICAgdGFwKHByb2ZpbGUgPT5cbiAgICAgICAgcGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgcHJvZmlsZSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBAQWN0aW9uKFByb2ZpbGVDaGFuZ2VQYXNzd29yZClcbiAgY2hhbmdlUGFzc3dvcmQoXywgeyBwYXlsb2FkIH06IFByb2ZpbGVDaGFuZ2VQYXNzd29yZCkge1xuICAgIHJldHVybiB0aGlzLnByb2ZpbGVTZXJ2aWNlLmNoYW5nZVBhc3N3b3JkKHBheWxvYWQpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/states/session.state.js b/npm/ng-packs/dist/core/esm5/lib/states/session.state.js new file mode 100644 index 00000000000..70428cc835b --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/states/session.state.js @@ -0,0 +1,62 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { State, Action, Selector } from '@ngxs/store'; +import { SessionSetLanguage } from '../actions/session.actions'; +var SessionState = /** @class */ (function () { + function SessionState() { + } + /** + * @param {?} __0 + * @return {?} + */ + SessionState.getLanguage = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var language = _a.language; + return language; + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + SessionState.prototype.sessionSetLanguage = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + patchState({ + language: payload, + }); + }; + tslib_1.__decorate([ + Action(SessionSetLanguage), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, SessionSetLanguage]), + tslib_1.__metadata("design:returntype", void 0) + ], SessionState.prototype, "sessionSetLanguage", null); + tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", String) + ], SessionState, "getLanguage", null); + SessionState = tslib_1.__decorate([ + State({ + name: 'SessionState', + defaults: (/** @type {?} */ ({})), + }), + tslib_1.__metadata("design:paramtypes", []) + ], SessionState); + return SessionState; +}()); +export { SessionState }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zdGF0ZXMvc2Vzc2lvbi5zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFnQixRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0lBYTlEO0lBQWUsQ0FBQzs7Ozs7SUFKVCx3QkFBVzs7OztJQUFsQixVQUFtQixFQUEyQjtZQUF6QixzQkFBUTtRQUMzQixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOzs7Ozs7SUFLRCx5Q0FBa0I7Ozs7O0lBQWxCLFVBQW1CLEVBQTJDLEVBQUUsRUFBK0I7WUFBMUUsMEJBQVU7WUFBbUMsb0JBQU87UUFDdkUsVUFBVSxDQUFDO1lBQ1QsUUFBUSxFQUFFLE9BQU87U0FDbEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUpEO1FBREMsTUFBTSxDQUFDLGtCQUFrQixDQUFDOzt5REFDa0Qsa0JBQWtCOzswREFJOUY7SUFYRDtRQURDLFFBQVEsRUFBRTs7Ozt5Q0FHVjtJQUpVLFlBQVk7UUFKeEIsS0FBSyxDQUFnQjtZQUNwQixJQUFJLEVBQUUsY0FBYztZQUNwQixRQUFRLEVBQUUsbUJBQUEsRUFBRSxFQUFpQjtTQUM5QixDQUFDOztPQUNXLFlBQVksQ0FjeEI7SUFBRCxtQkFBQztDQUFBLElBQUE7U0FkWSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhdGUsIEFjdGlvbiwgU3RhdGVDb250ZXh0LCBTZWxlY3RvciB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IFNlc3Npb25TZXRMYW5ndWFnZSB9IGZyb20gJy4uL2FjdGlvbnMvc2Vzc2lvbi5hY3Rpb25zJztcbmltcG9ydCB7IFNlc3Npb24gfSBmcm9tICcuLi9tb2RlbHMvc2Vzc2lvbic7XG5cbkBTdGF0ZTxTZXNzaW9uLlN0YXRlPih7XG4gIG5hbWU6ICdTZXNzaW9uU3RhdGUnLFxuICBkZWZhdWx0czoge30gYXMgU2Vzc2lvbi5TdGF0ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2Vzc2lvblN0YXRlIHtcbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldExhbmd1YWdlKHsgbGFuZ3VhZ2UgfTogU2Vzc2lvbi5TdGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxhbmd1YWdlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIEBBY3Rpb24oU2Vzc2lvblNldExhbmd1YWdlKVxuICBzZXNzaW9uU2V0TGFuZ3VhZ2UoeyBwYXRjaFN0YXRlIH06IFN0YXRlQ29udGV4dDxTZXNzaW9uLlN0YXRlPiwgeyBwYXlsb2FkIH06IFNlc3Npb25TZXRMYW5ndWFnZSkge1xuICAgIHBhdGNoU3RhdGUoe1xuICAgICAgbGFuZ3VhZ2U6IHBheWxvYWQsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/tokens/common.token.js b/npm/ng-packs/dist/core/esm5/lib/tokens/common.token.js new file mode 100644 index 00000000000..a01d12d6859 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/tokens/common.token.js @@ -0,0 +1,25 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { InjectionToken } from '@angular/core'; +/** + * @param {?} environment + * @return {?} + */ +export function environmentFactory(environment) { + return tslib_1.__assign({}, environment); +} +/** + * @param {?} config + * @return {?} + */ +export function configFactory(config) { + return tslib_1.__assign({}, config); +} +/** @type {?} */ +export var ENVIRONMENT = new InjectionToken('ENVIRONMENT'); +/** @type {?} */ +export var CONFIG = new InjectionToken('CONFIG'); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnRva2VuLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL3Rva2Vucy9jb21tb24udG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQUcvQyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsV0FBK0I7SUFDaEUsNEJBQ0ssV0FBVyxFQUNkO0FBQ0osQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQTJCO0lBQ3ZELDRCQUNLLE1BQU0sRUFDVDtBQUNKLENBQUM7O0FBRUQsTUFBTSxLQUFPLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBQyxhQUFhLENBQUM7O0FBRTVELE1BQU0sS0FBTyxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4uL21vZGVscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnZpcm9ubWVudEZhY3RvcnkoZW52aXJvbm1lbnQ6IENvbmZpZy5FbnZpcm9ubWVudCkge1xuICByZXR1cm4ge1xuICAgIC4uLmVudmlyb25tZW50LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uZmlnRmFjdG9yeShjb25maWc6IENvbmZpZy5SZXF1aXJlbWVudHMpIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5jb25maWcsXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBFTlZJUk9OTUVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbignRU5WSVJPTk1FTlQnKTtcblxuZXhwb3J0IGNvbnN0IENPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbignQ09ORklHJyk7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/tokens/index.js b/npm/ng-packs/dist/core/esm5/lib/tokens/index.js new file mode 100644 index 00000000000..22a50773ebb --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/tokens/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { environmentFactory, configFactory, ENVIRONMENT, CONFIG } from './common.token'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvdG9rZW5zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSx1RUFBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tbW9uLnRva2VuJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/utils/generator-utils.js b/npm/ng-packs/dist/core/esm5/lib/utils/generator-utils.js new file mode 100644 index 00000000000..9e840a80412 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/utils/generator-utils.js @@ -0,0 +1,14 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @param {?=} a + * @return {?} + */ +export function uuid(a) { + return a + ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16) + : ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLXV0aWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5jb3JlLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL2dlbmVyYXRvci11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLE1BQU0sVUFBVSxJQUFJLENBQUMsQ0FBTztJQUMxQixPQUFPLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHV1aWQoYT86IGFueSk6IHN0cmluZyB7XG4gIHJldHVybiBhXG4gICAgPyAoYSBeICgoTWF0aC5yYW5kb20oKSAqIDE2KSA+PiAoYSAvIDQpKSkudG9TdHJpbmcoMTYpXG4gICAgOiAoJycgKyAxZTcgKyAtMWUzICsgLTRlMyArIC04ZTMgKyAtMWUxMSkucmVwbGFjZSgvWzAxOF0vZywgdXVpZCk7XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/utils/index.js b/npm/ng-packs/dist/core/esm5/lib/utils/index.js new file mode 100644 index 00000000000..f75166e0ed0 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/utils/index.js @@ -0,0 +1,9 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { uuid } from './generator-utils'; +export { getInitialData } from './initial-utils'; +export { organizeRoutes, setChildRoute, sortRoutes } from './route-utils'; +export { takeUntilDestroy } from './rxjs-utils'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHFCQUFjLG1CQUFtQixDQUFDO0FBQ2xDLCtCQUFjLGlCQUFpQixDQUFDO0FBQ2hDLDBEQUFjLGVBQWUsQ0FBQztBQUM5QixpQ0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2dlbmVyYXRvci11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2luaXRpYWwtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0ZS11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3J4anMtdXRpbHMnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/utils/initial-utils.js b/npm/ng-packs/dist/core/esm5/lib/utils/initial-utils.js new file mode 100644 index 00000000000..447c670bd23 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/utils/initial-utils.js @@ -0,0 +1,23 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Store } from '@ngxs/store'; +import { ConfigGetAppConfiguration } from '../actions/config.actions'; +/** + * @param {?} injector + * @return {?} + */ +export function getInitialData(injector) { + /** @type {?} */ + var fn = (/** + * @return {?} + */ + function () { + /** @type {?} */ + var store = injector.get(Store); + return store.dispatch(new ConfigGetAppConfiguration()).toPromise(); + }); + return fn; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi91dGlscy9pbml0aWFsLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7OztBQUV0RSxNQUFNLFVBQVUsY0FBYyxDQUFDLFFBQWtCOztRQUN6QyxFQUFFOzs7SUFBRzs7WUFDSCxLQUFLLEdBQVUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFFeEMsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUkseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JFLENBQUMsQ0FBQTtJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IENvbmZpZ0dldEFwcENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9hY3Rpb25zL2NvbmZpZy5hY3Rpb25zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxEYXRhKGluamVjdG9yOiBJbmplY3Rvcikge1xuICBjb25zdCBmbiA9IGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IHN0b3JlOiBTdG9yZSA9IGluamVjdG9yLmdldChTdG9yZSk7XG5cbiAgICByZXR1cm4gc3RvcmUuZGlzcGF0Y2gobmV3IENvbmZpZ0dldEFwcENvbmZpZ3VyYXRpb24oKSkudG9Qcm9taXNlKCk7XG4gIH07XG5cbiAgcmV0dXJuIGZuO1xufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/utils/route-utils.js b/npm/ng-packs/dist/core/esm5/lib/utils/route-utils.js new file mode 100644 index 00000000000..09f678bf07a --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/utils/route-utils.js @@ -0,0 +1,101 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +/** + * @param {?} routes + * @param {?=} wrappers + * @param {?=} parentNameArr + * @param {?=} parentName + * @return {?} + */ +export function organizeRoutes(routes, wrappers, parentNameArr, parentName) { + if (wrappers === void 0) { wrappers = []; } + if (parentNameArr === void 0) { parentNameArr = (/** @type {?} */ ([])); } + if (parentName === void 0) { parentName = null; } + /** @type {?} */ + var filter = (/** + * @param {?} route + * @return {?} + */ + function (route) { + if (route.children) { + route.children = organizeRoutes(route.children, wrappers, parentNameArr, route.name); + } + if (route.parentName && route.parentName !== parentName) { + parentNameArr.push(route); + return false; + } + return true; + }); + if (parentName) { + // recursive block + return routes.filter(filter); + } + /** @type {?} */ + var filteredRoutes = routes.filter(filter); + if (parentNameArr.length) { + return sortRoutes(setChildRoute(tslib_1.__spread(filteredRoutes, wrappers), parentNameArr)); + } + return filteredRoutes; +} +/** + * @param {?} routes + * @param {?} parentNameArr + * @return {?} + */ +export function setChildRoute(routes, parentNameArr) { + return routes + .map((/** + * @param {?} route + * @return {?} + */ + function (route) { + if (route.children && route.children.length) { + route.children = setChildRoute(route.children, parentNameArr); + } + /** @type {?} */ + var foundedChildren = parentNameArr.filter((/** + * @param {?} parent + * @return {?} + */ + function (parent) { return parent.parentName === route.name; })); + if (foundedChildren && foundedChildren.length) { + route.children = tslib_1.__spread((route.children || []), foundedChildren); + } + return route; + })) + .filter((/** + * @param {?} route + * @return {?} + */ + function (route) { return route.path || (route.children && route.children.length); })); +} +/** + * @param {?=} routes + * @return {?} + */ +export function sortRoutes(routes) { + if (routes === void 0) { routes = []; } + if (!routes.length) + return []; + return routes + .sort((/** + * @param {?} a + * @param {?} b + * @return {?} + */ + function (a, b) { return a.order - b.order; })) + .map((/** + * @param {?} route + * @return {?} + */ + function (route) { + if (route.children && route.children.length) { + route.children = sortRoutes(route.children); + } + return route; + })); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtdXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmNvcmUvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvcm91dGUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBRUEsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsTUFBdUIsRUFDdkIsUUFBOEIsRUFDOUIsYUFBcUMsRUFDckMsVUFBeUI7SUFGekIseUJBQUEsRUFBQSxhQUE4QjtJQUM5Qiw4QkFBQSxFQUFBLG1DQUFnQixFQUFFLEVBQW1CO0lBQ3JDLDJCQUFBLEVBQUEsaUJBQXlCOztRQUVuQixNQUFNOzs7O0lBQUcsVUFBQSxLQUFLO1FBQ2xCLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUNsQixLQUFLLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RGO1FBRUQsSUFBSSxLQUFLLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO1lBQ3ZELGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFBO0lBRUQsSUFBSSxVQUFVLEVBQUU7UUFDZCxrQkFBa0I7UUFDbEIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQzlCOztRQUVLLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUU1QyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEVBQUU7UUFDeEIsT0FBTyxVQUFVLENBQUMsYUFBYSxrQkFBSyxjQUFjLEVBQUssUUFBUSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUM7S0FDbkY7SUFFRCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDOzs7Ozs7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQXVCLEVBQUUsYUFBOEI7SUFDbkYsT0FBTyxNQUFNO1NBQ1YsR0FBRzs7OztJQUFDLFVBQUEsS0FBSztRQUNSLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUMzQyxLQUFLLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQy9EOztZQUVLLGVBQWUsR0FBRyxhQUFhLENBQUMsTUFBTTs7OztRQUFDLFVBQUEsTUFBTSxJQUFJLE9BQUEsTUFBTSxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUMsSUFBSSxFQUFoQyxDQUFnQyxFQUFDO1FBQ3hGLElBQUksZUFBZSxJQUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUU7WUFDN0MsS0FBSyxDQUFDLFFBQVEsb0JBQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUFLLGVBQWUsQ0FBQyxDQUFDO1NBQ2xFO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLEVBQUM7U0FDRCxNQUFNOzs7O0lBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUF2RCxDQUF1RCxFQUFDLENBQUM7QUFDOUUsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLE1BQTRCO0lBQTVCLHVCQUFBLEVBQUEsV0FBNEI7SUFDckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDOUIsT0FBTyxNQUFNO1NBQ1YsSUFBSTs7Ozs7SUFBQyxVQUFDLENBQUMsRUFBRSxDQUFDLElBQUssT0FBQSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQWpCLENBQWlCLEVBQUM7U0FDakMsR0FBRzs7OztJQUFDLFVBQUEsS0FBSztRQUNSLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUMzQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDN0M7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsRUFBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCB9IGZyb20gJy4uL21vZGVscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBvcmdhbml6ZVJvdXRlcyhcbiAgcm91dGVzOiBBQlAuRnVsbFJvdXRlW10sXG4gIHdyYXBwZXJzOiBBQlAuRnVsbFJvdXRlW10gPSBbXSxcbiAgcGFyZW50TmFtZUFyciA9IFtdIGFzIEFCUC5GdWxsUm91dGVbXSxcbiAgcGFyZW50TmFtZTogc3RyaW5nID0gbnVsbCxcbik6IEFCUC5GdWxsUm91dGVbXSB7XG4gIGNvbnN0IGZpbHRlciA9IHJvdXRlID0+IHtcbiAgICBpZiAocm91dGUuY2hpbGRyZW4pIHtcbiAgICAgIHJvdXRlLmNoaWxkcmVuID0gb3JnYW5pemVSb3V0ZXMocm91dGUuY2hpbGRyZW4sIHdyYXBwZXJzLCBwYXJlbnROYW1lQXJyLCByb3V0ZS5uYW1lKTtcbiAgICB9XG5cbiAgICBpZiAocm91dGUucGFyZW50TmFtZSAmJiByb3V0ZS5wYXJlbnROYW1lICE9PSBwYXJlbnROYW1lKSB7XG4gICAgICBwYXJlbnROYW1lQXJyLnB1c2gocm91dGUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIGlmIChwYXJlbnROYW1lKSB7XG4gICAgLy8gcmVjdXJzaXZlIGJsb2NrXG4gICAgcmV0dXJuIHJvdXRlcy5maWx0ZXIoZmlsdGVyKTtcbiAgfVxuXG4gIGNvbnN0IGZpbHRlcmVkUm91dGVzID0gcm91dGVzLmZpbHRlcihmaWx0ZXIpO1xuXG4gIGlmIChwYXJlbnROYW1lQXJyLmxlbmd0aCkge1xuICAgIHJldHVybiBzb3J0Um91dGVzKHNldENoaWxkUm91dGUoWy4uLmZpbHRlcmVkUm91dGVzLCAuLi53cmFwcGVyc10sIHBhcmVudE5hbWVBcnIpKTtcbiAgfVxuXG4gIHJldHVybiBmaWx0ZXJlZFJvdXRlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldENoaWxkUm91dGUocm91dGVzOiBBQlAuRnVsbFJvdXRlW10sIHBhcmVudE5hbWVBcnI6IEFCUC5GdWxsUm91dGVbXSk6IEFCUC5GdWxsUm91dGVbXSB7XG4gIHJldHVybiByb3V0ZXNcbiAgICAubWFwKHJvdXRlID0+IHtcbiAgICAgIGlmIChyb3V0ZS5jaGlsZHJlbiAmJiByb3V0ZS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcm91dGUuY2hpbGRyZW4gPSBzZXRDaGlsZFJvdXRlKHJvdXRlLmNoaWxkcmVuLCBwYXJlbnROYW1lQXJyKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm91bmRlZENoaWxkcmVuID0gcGFyZW50TmFtZUFyci5maWx0ZXIocGFyZW50ID0+IHBhcmVudC5wYXJlbnROYW1lID09PSByb3V0ZS5uYW1lKTtcbiAgICAgIGlmIChmb3VuZGVkQ2hpbGRyZW4gJiYgZm91bmRlZENoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICByb3V0ZS5jaGlsZHJlbiA9IFsuLi4ocm91dGUuY2hpbGRyZW4gfHwgW10pLCAuLi5mb3VuZGVkQ2hpbGRyZW5dO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcm91dGU7XG4gICAgfSlcbiAgICAuZmlsdGVyKHJvdXRlID0+IHJvdXRlLnBhdGggfHwgKHJvdXRlLmNoaWxkcmVuICYmIHJvdXRlLmNoaWxkcmVuLmxlbmd0aCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29ydFJvdXRlcyhyb3V0ZXM6IEFCUC5GdWxsUm91dGVbXSA9IFtdKTogQUJQLkZ1bGxSb3V0ZVtdIHtcbiAgaWYgKCFyb3V0ZXMubGVuZ3RoKSByZXR1cm4gW107XG4gIHJldHVybiByb3V0ZXNcbiAgICAuc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpXG4gICAgLm1hcChyb3V0ZSA9PiB7XG4gICAgICBpZiAocm91dGUuY2hpbGRyZW4gJiYgcm91dGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIHJvdXRlLmNoaWxkcmVuID0gc29ydFJvdXRlcyhyb3V0ZS5jaGlsZHJlbik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByb3V0ZTtcbiAgICB9KTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/lib/utils/rxjs-utils.js b/npm/ng-packs/dist/core/esm5/lib/utils/rxjs-utils.js new file mode 100644 index 00000000000..8367c7521b4 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/lib/utils/rxjs-utils.js @@ -0,0 +1,47 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; +/** + * @param {?} value + * @return {?} + */ +function isFunction(value) { + return typeof value === 'function'; +} +/** @type {?} */ +export var takeUntilDestroy = (/** + * @param {?} componentInstance + * @param {?=} destroyMethodName + * @return {?} + */ +function (componentInstance, destroyMethodName) { + if (destroyMethodName === void 0) { destroyMethodName = 'ngOnDestroy'; } + return (/** + * @template T + * @param {?} source + * @return {?} + */ + function (source) { + /** @type {?} */ + var originalDestroy = componentInstance[destroyMethodName]; + if (isFunction(originalDestroy) === false) { + throw new Error(componentInstance.constructor.name + " is using untilDestroyed but doesn't implement " + destroyMethodName); + } + if (!componentInstance['__takeUntilDestroy']) { + componentInstance['__takeUntilDestroy'] = new Subject(); + componentInstance[destroyMethodName] = (/** + * @return {?} + */ + function () { + isFunction(originalDestroy) && originalDestroy.apply(this, arguments); + componentInstance['__takeUntilDestroy'].next(true); + componentInstance['__takeUntilDestroy'].complete(); + }); + } + return source.pipe(takeUntil(componentInstance['__takeUntilDestroy'])); + }); +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnhqcy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbImxpYi91dGlscy9yeGpzLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFFM0MsU0FBUyxVQUFVLENBQUMsS0FBSztJQUN2QixPQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztBQUNyQyxDQUFDOztBQUVELE1BQU0sS0FBTyxnQkFBZ0I7Ozs7O0FBQUcsVUFBQyxpQkFBaUIsRUFBRSxpQkFBaUM7SUFBakMsa0NBQUEsRUFBQSxpQ0FBaUM7Ozs7OztJQUFLLFVBQ3hGLE1BQXFCOztZQUVmLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQztRQUM1RCxJQUFJLFVBQVUsQ0FBQyxlQUFlLENBQUMsS0FBSyxLQUFLLEVBQUU7WUFDekMsTUFBTSxJQUFJLEtBQUssQ0FDVixpQkFBaUIsQ0FBQyxXQUFXLENBQUMsSUFBSSx1REFBa0QsaUJBQW1CLENBQzNHLENBQUM7U0FDSDtRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1lBQzVDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUV4RCxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQzs7O1lBQUc7Z0JBQ3JDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDdEUsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckQsQ0FBQyxDQUFBLENBQUM7U0FDSDtRQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUksaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztDQUFBLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGNvbnN0IHRha2VVbnRpbERlc3Ryb3kgPSAoY29tcG9uZW50SW5zdGFuY2UsIGRlc3Ryb3lNZXRob2ROYW1lID0gJ25nT25EZXN0cm95JykgPT4gPFQ+KFxuICBzb3VyY2U6IE9ic2VydmFibGU8VD4sXG4pID0+IHtcbiAgY29uc3Qgb3JpZ2luYWxEZXN0cm95ID0gY29tcG9uZW50SW5zdGFuY2VbZGVzdHJveU1ldGhvZE5hbWVdO1xuICBpZiAoaXNGdW5jdGlvbihvcmlnaW5hbERlc3Ryb3kpID09PSBmYWxzZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke2NvbXBvbmVudEluc3RhbmNlLmNvbnN0cnVjdG9yLm5hbWV9IGlzIHVzaW5nIHVudGlsRGVzdHJveWVkIGJ1dCBkb2Vzbid0IGltcGxlbWVudCAke2Rlc3Ryb3lNZXRob2ROYW1lfWAsXG4gICAgKTtcbiAgfVxuICBpZiAoIWNvbXBvbmVudEluc3RhbmNlWydfX3Rha2VVbnRpbERlc3Ryb3knXSkge1xuICAgIGNvbXBvbmVudEluc3RhbmNlWydfX3Rha2VVbnRpbERlc3Ryb3knXSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBjb21wb25lbnRJbnN0YW5jZVtkZXN0cm95TWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgIGlzRnVuY3Rpb24ob3JpZ2luYWxEZXN0cm95KSAmJiBvcmlnaW5hbERlc3Ryb3kuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIGNvbXBvbmVudEluc3RhbmNlWydfX3Rha2VVbnRpbERlc3Ryb3knXS5uZXh0KHRydWUpO1xuICAgICAgY29tcG9uZW50SW5zdGFuY2VbJ19fdGFrZVVudGlsRGVzdHJveSddLmNvbXBsZXRlKCk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gc291cmNlLnBpcGUodGFrZVVudGlsPFQ+KGNvbXBvbmVudEluc3RhbmNlWydfX3Rha2VVbnRpbERlc3Ryb3knXSkpO1xufTtcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/esm5/public-api.js b/npm/ng-packs/dist/core/esm5/public-api.js new file mode 100644 index 00000000000..122dd3e6b50 --- /dev/null +++ b/npm/ng-packs/dist/core/esm5/public-api.js @@ -0,0 +1,23 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/* + * Public API Surface of core + */ +// export * from './lib/handlers'; +export { PatchRouteByName, ConfigGetAppConfiguration, LoaderStart, LoaderStop, ProfileGet, ProfileUpdate, ProfileChangePassword, RestOccurError, SessionSetLanguage } from './lib/actions'; +export { DynamicLayoutComponent, RouterOutletComponent } from './lib/components'; +// export * from './lib/constants'; +export { EllipsisDirective, PermissionDirective, VisibilityDirective } from './lib/directives'; +export {} from './lib/enums'; +export { AuthGuard, PermissionGuard } from './lib/guards'; +export { ApiInterceptor } from './lib/interceptors'; +export { Rest } from './lib/models'; +export { NGXS_CONFIG_PLUGIN_OPTIONS, ConfigPlugin } from './lib/plugins'; +export { ApplicationConfigurationService, ConfigService, LazyLoadService, LocalizationService, ProfileService, RestService } from './lib/services'; +export { ProfileState, ConfigState, SessionState } from './lib/states'; +export { environmentFactory, configFactory, ENVIRONMENT, CONFIG } from './lib/tokens'; +export { uuid, getInitialData, organizeRoutes, setChildRoute, sortRoutes, takeUntilDestroy } from './lib/utils'; +export { CoreModule } from './lib/core.module'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuY29yZS8iLCJzb3VyY2VzIjpbInB1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFLQSwyS0FBYyxlQUFlLENBQUM7QUFDOUIsOERBQWMsa0JBQWtCLENBQUM7O0FBRWpDLDRFQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGVBQWMsYUFBYSxDQUFDO0FBQzVCLDJDQUFjLGNBQWMsQ0FBQztBQUM3QiwrQkFBYyxvQkFBb0IsQ0FBQztBQUNuQyxxQkFBYyxjQUFjLENBQUM7QUFDN0IseURBQWMsZUFBZSxDQUFDO0FBQzlCLGtJQUFjLGdCQUFnQixDQUFDO0FBQy9CLHdEQUFjLGNBQWMsQ0FBQztBQUM3Qix1RUFBYyxjQUFjLENBQUM7QUFDN0Isa0dBQWMsYUFBYSxDQUFDO0FBRTVCLDJCQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjb3JlXG4gKi9cblxuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvaGFuZGxlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VudW1zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2d1YXJkcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmNlcHRvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BsdWdpbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUubW9kdWxlJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/core/fesm2015/abp-ng.core.js b/npm/ng-packs/dist/core/fesm2015/abp-ng.core.js new file mode 100644 index 00000000000..60056e8dcbb --- /dev/null +++ b/npm/ng-packs/dist/core/fesm2015/abp-ng.core.js @@ -0,0 +1,1773 @@ +import { __rest, __decorate, __metadata } from 'tslib'; +import { Injectable, ɵɵdefineInjectable, ɵɵinject, Component, Directive, ChangeDetectorRef, ElementRef, Input, HostBinding, Optional, Renderer2, InjectionToken, Inject, Pipe, APP_INITIALIZER, Injector, NgModule } from '@angular/core'; +import { NavigationEnd, Router, RouterModule } from '@angular/router'; +import { Store, Action, Selector, State, createSelector, Select, actionMatcher, InitState, UpdateState, setValue, NGXS_PLUGINS, NgxsModule } from '@ngxs/store'; +import { NEVER, throwError, of, Subject, Observable, ReplaySubject } from 'rxjs'; +import { HttpClient, HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'; +import { take, catchError, tap, switchMap, takeUntil, finalize, distinctUntilChanged } from 'rxjs/operators'; +import snq from 'snq'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { Navigate, NgxsRouterPluginModule } from '@ngxs/router-plugin'; +import { CommonModule } from '@angular/common'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { NgxsStoragePluginModule } from '@ngxs/storage-plugin'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class PatchRouteByName { + /** + * @param {?} name + * @param {?} newValue + */ + constructor(name, newValue) { + this.name = name; + this.newValue = newValue; + } +} +PatchRouteByName.type = '[Config] Patch Route By Name'; +class ConfigGetAppConfiguration { +} +ConfigGetAppConfiguration.type = '[Config] Get App Configuration'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class LoaderStart { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +LoaderStart.type = '[Loader] Start'; +class LoaderStop { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +LoaderStop.type = '[Loader] Stop'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class ProfileGet { +} +ProfileGet.type = '[Profile] Get'; +class ProfileUpdate { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +ProfileUpdate.type = '[Profile] Update'; +class ProfileChangePassword { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +ProfileChangePassword.type = '[Profile] Change Password'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class RestOccurError { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +RestOccurError.type = '[Rest] Error'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class SessionSetLanguage { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +SessionSetLanguage.type = '[Session] Set Language'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class RestService { + /** + * @param {?} http + * @param {?} store + */ + constructor(http, store) { + this.http = http; + this.store = store; + } + /** + * @param {?} err + * @return {?} + */ + handleError(err) { + this.store.dispatch(new RestOccurError(err)); + console.error(err); + return NEVER; + } + /** + * @template T, R + * @param {?} request + * @param {?=} config + * @param {?=} api + * @return {?} + */ + request(request, config = {}, api) { + const { observe = "body" /* Body */, throwErr } = config; + /** @type {?} */ + const url = api || this.store.selectSnapshot(ConfigState.getApiUrl()) + request.url; + const { method } = request, options = __rest(request, ["method"]); + return this.http.request(method, url, (/** @type {?} */ (Object.assign({ observe }, options)))).pipe(observe === "body" /* Body */ ? take(1) : null, catchError((/** + * @param {?} err + * @return {?} + */ + err => { + if (throwErr) { + return throwError(err); + } + return this.handleError(err); + }))); + } +} +RestService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +RestService.ctorParameters = () => [ + { type: HttpClient }, + { type: Store } +]; +/** @nocollapse */ RestService.ngInjectableDef = ɵɵdefineInjectable({ factory: function RestService_Factory() { return new RestService(ɵɵinject(HttpClient), ɵɵinject(Store)); }, token: RestService, providedIn: "root" }); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class ProfileService { + /** + * @param {?} rest + */ + constructor(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + get() { + /** @type {?} */ + const request = { + method: 'GET', + url: '/api/identity/my-profile', + }; + return this.rest.request(request); + } + /** + * @param {?} body + * @return {?} + */ + update(body) { + /** @type {?} */ + const request = { + method: 'PUT', + url: '/api/identity/my-profile', + body, + }; + return this.rest.request(request); + } + /** + * @param {?} body + * @return {?} + */ + changePassword(body) { + /** @type {?} */ + const request = { + method: 'POST', + url: '/api/identity/my-profile/changePassword', + body, + }; + return this.rest.request(request); + } +} +ProfileService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +ProfileService.ctorParameters = () => [ + { type: RestService } +]; +/** @nocollapse */ ProfileService.ngInjectableDef = ɵɵdefineInjectable({ factory: function ProfileService_Factory() { return new ProfileService(ɵɵinject(RestService)); }, token: ProfileService, providedIn: "root" }); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +let ProfileState = class ProfileState { + /** + * @param {?} profileService + */ + constructor(profileService) { + this.profileService = profileService; + } + /** + * @param {?} __0 + * @return {?} + */ + static getProfile({ profile }) { + return profile; + } + /** + * @param {?} __0 + * @return {?} + */ + profileGet({ patchState }) { + return this.profileService.get().pipe(tap((/** + * @param {?} profile + * @return {?} + */ + profile => patchState({ + profile, + })))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + profileUpdate({ patchState }, { payload }) { + return this.profileService.update(payload).pipe(tap((/** + * @param {?} profile + * @return {?} + */ + profile => patchState({ + profile, + })))); + } + /** + * @param {?} _ + * @param {?} __1 + * @return {?} + */ + changePassword(_, { payload }) { + return this.profileService.changePassword(payload); + } +}; +__decorate([ + Action(ProfileGet), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) +], ProfileState.prototype, "profileGet", null); +__decorate([ + Action(ProfileUpdate), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, ProfileUpdate]), + __metadata("design:returntype", void 0) +], ProfileState.prototype, "profileUpdate", null); +__decorate([ + Action(ProfileChangePassword), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, ProfileChangePassword]), + __metadata("design:returntype", void 0) +], ProfileState.prototype, "changePassword", null); +__decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Object) +], ProfileState, "getProfile", null); +ProfileState = __decorate([ + State({ + name: 'ProfileState', + defaults: (/** @type {?} */ ({})), + }), + __metadata("design:paramtypes", [ProfileService]) +], ProfileState); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class ApplicationConfigurationService { + /** + * @param {?} rest + */ + constructor(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + getConfiguration() { + /** @type {?} */ + const request = { + method: 'GET', + url: '/api/abp/application-configuration', + }; + return this.rest.request(request); + } +} +ApplicationConfigurationService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +ApplicationConfigurationService.ctorParameters = () => [ + { type: RestService } +]; +/** @nocollapse */ ApplicationConfigurationService.ngInjectableDef = ɵɵdefineInjectable({ factory: function ApplicationConfigurationService_Factory() { return new ApplicationConfigurationService(ɵɵinject(RestService)); }, token: ApplicationConfigurationService, providedIn: "root" }); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +let SessionState = class SessionState { + constructor() { } + /** + * @param {?} __0 + * @return {?} + */ + static getLanguage({ language }) { + return language; + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + sessionSetLanguage({ patchState }, { payload }) { + patchState({ + language: payload, + }); + } +}; +__decorate([ + Action(SessionSetLanguage), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, SessionSetLanguage]), + __metadata("design:returntype", void 0) +], SessionState.prototype, "sessionSetLanguage", null); +__decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", String) +], SessionState, "getLanguage", null); +SessionState = __decorate([ + State({ + name: 'SessionState', + defaults: (/** @type {?} */ ({})), + }), + __metadata("design:paramtypes", []) +], SessionState); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @param {?} routes + * @param {?=} wrappers + * @param {?=} parentNameArr + * @param {?=} parentName + * @return {?} + */ +function organizeRoutes(routes, wrappers = [], parentNameArr = (/** @type {?} */ ([])), parentName = null) { + /** @type {?} */ + const filter = (/** + * @param {?} route + * @return {?} + */ + route => { + if (route.children) { + route.children = organizeRoutes(route.children, wrappers, parentNameArr, route.name); + } + if (route.parentName && route.parentName !== parentName) { + parentNameArr.push(route); + return false; + } + return true; + }); + if (parentName) { + // recursive block + return routes.filter(filter); + } + /** @type {?} */ + const filteredRoutes = routes.filter(filter); + if (parentNameArr.length) { + return sortRoutes(setChildRoute([...filteredRoutes, ...wrappers], parentNameArr)); + } + return filteredRoutes; +} +/** + * @param {?} routes + * @param {?} parentNameArr + * @return {?} + */ +function setChildRoute(routes, parentNameArr) { + return routes + .map((/** + * @param {?} route + * @return {?} + */ + route => { + if (route.children && route.children.length) { + route.children = setChildRoute(route.children, parentNameArr); + } + /** @type {?} */ + const foundedChildren = parentNameArr.filter((/** + * @param {?} parent + * @return {?} + */ + parent => parent.parentName === route.name)); + if (foundedChildren && foundedChildren.length) { + route.children = [...(route.children || []), ...foundedChildren]; + } + return route; + })) + .filter((/** + * @param {?} route + * @return {?} + */ + route => route.path || (route.children && route.children.length))); +} +/** + * @param {?=} routes + * @return {?} + */ +function sortRoutes(routes = []) { + if (!routes.length) + return []; + return routes + .sort((/** + * @param {?} a + * @param {?} b + * @return {?} + */ + (a, b) => a.order - b.order)) + .map((/** + * @param {?} route + * @return {?} + */ + route => { + if (route.children && route.children.length) { + route.children = sortRoutes(route.children); + } + return route; + })); +} + +var ConfigState_1; +let ConfigState = ConfigState_1 = class ConfigState { + /** + * @param {?} appConfigurationService + * @param {?} store + */ + constructor(appConfigurationService, store) { + this.appConfigurationService = appConfigurationService; + this.store = store; + } + /** + * @param {?} state + * @return {?} + */ + static getAll(state) { + return state; + } + /** + * @param {?} key + * @return {?} + */ + static getOne(key) { + /** @type {?} */ + const selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return state[key]; + })); + return selector; + } + /** + * @param {?} keys + * @return {?} + */ + static getDeep(keys) { + if (typeof keys === 'string') { + keys = keys.split('.'); + } + if (!Array.isArray(keys)) { + throw new Error('The argument must be a dot string or an string array.'); + } + /** @type {?} */ + const selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return ((/** @type {?} */ (keys))).reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + (acc, val) => { + if (acc) { + return acc[val]; + } + return undefined; + }), state); + })); + return selector; + } + /** + * @param {?=} key + * @return {?} + */ + static getApiUrl(key) { + /** @type {?} */ + const selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return state.environment.apis[key || 'default'].url; + })); + return selector; + } + /** + * @param {?} key + * @return {?} + */ + static getSetting(key) { + /** @type {?} */ + const selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return snq((/** + * @return {?} + */ + () => state.setting.values[key])); + })); + return selector; + } + /** + * @param {?=} condition + * @return {?} + */ + static getGrantedPolicy(condition = '') { + /** @type {?} */ + const keys = condition + .replace(/\(|\)|\!|\s/g, '') + .split(/\|\||&&/) + .filter((/** + * @param {?} key + * @return {?} + */ + key => key)); + /** @type {?} */ + const selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + if (!keys.length) + return true; + /** @type {?} */ + const getPolicy = (/** + * @param {?} key + * @return {?} + */ + key => snq((/** + * @return {?} + */ + () => state.auth.grantedPolicies[key]), false)); + if (keys.length > 1) { + keys.forEach((/** + * @param {?} key + * @return {?} + */ + key => { + /** @type {?} */ + const value = getPolicy(key); + condition = condition.replace(key, value); + })); + // tslint:disable-next-line: no-eval + return eval(`!!${condition}`); + } + return getPolicy(condition); + })); + return selector; + } + /** + * @param {?} key + * @param {...?} interpolateParams + * @return {?} + */ + static getCopy(key, ...interpolateParams) { + if (!key) + key = ''; + /** @type {?} */ + const keys = (/** @type {?} */ (key.split('::'))); + /** @type {?} */ + const selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + const { defaultResourceName } = state.environment.localization; + if (keys[0] === '') { + if (!defaultResourceName) { + throw new Error(`Please check your environment. May you forget set defaultResourceName? + Here is the example: + { production: false, + localization: { + defaultResourceName: 'MyProjectName' + } + }`); + } + keys[0] = snq((/** + * @return {?} + */ + () => defaultResourceName)); + } + /** @type {?} */ + let copy = keys.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + (acc, val) => { + if (acc) { + return acc[val]; + } + return undefined; + }), state.localization.values); + if (copy && interpolateParams && interpolateParams.length) { + interpolateParams.forEach((/** + * @param {?} param + * @param {?} index + * @return {?} + */ + (param, index) => { + copy = copy.replace(`'{${index}}'`, param); + })); + } + return copy || key; + })); + return selector; + } + /** + * @param {?} __0 + * @return {?} + */ + addData({ patchState, dispatch }) { + return this.appConfigurationService.getConfiguration().pipe(tap((/** + * @param {?} configuration + * @return {?} + */ + configuration => patchState(Object.assign({}, configuration)))), switchMap((/** + * @param {?} configuration + * @return {?} + */ + configuration => this.store.selectSnapshot(SessionState.getLanguage) + ? of(null) + : dispatch(new SessionSetLanguage(snq((/** + * @return {?} + */ + () => configuration.setting.values['Abp.Localization.DefaultLanguage']))))))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + patchRoute({ patchState, getState }, { name, newValue }) { + /** @type {?} */ + let routes = getState().routes; + /** @type {?} */ + const index = routes.findIndex((/** + * @param {?} route + * @return {?} + */ + route => route.name === name)); + routes = patchRouteDeep(routes, name, newValue); + return patchState({ + routes, + }); + } +}; +__decorate([ + Action(ConfigGetAppConfiguration), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) +], ConfigState.prototype, "addData", null); +__decorate([ + Action(PatchRouteByName), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, PatchRouteByName]), + __metadata("design:returntype", void 0) +], ConfigState.prototype, "patchRoute", null); +__decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) +], ConfigState, "getAll", null); +ConfigState = ConfigState_1 = __decorate([ + State({ + name: 'ConfigState', + defaults: (/** @type {?} */ ({})), + }), + __metadata("design:paramtypes", [ApplicationConfigurationService, Store]) +], ConfigState); +/** + * @param {?} routes + * @param {?} name + * @param {?} newValue + * @param {?=} parentUrl + * @return {?} + */ +function patchRouteDeep(routes, name, newValue, parentUrl = null) { + routes = routes.map((/** + * @param {?} route + * @return {?} + */ + route => { + if (route.name === name) { + if (newValue.path) { + newValue.url = `${parentUrl}/${newValue.path}`; + } + if (newValue.children && newValue.children.length) { + newValue.children = newValue.children.map((/** + * @param {?} child + * @return {?} + */ + child => (Object.assign({}, child, { url: `${parentUrl}/${route.path}/${child.path}` })))); + } + return Object.assign({}, route, newValue); + } + else if (route.children && route.children.length) { + route.children = patchRouteDeep(route.children, name, newValue, (parentUrl || '/') + route.path); + } + return route; + })); + if (parentUrl) { + // recursive block + return routes; + } + return organizeRoutes(routes); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @param {?=} a + * @return {?} + */ +function uuid(a) { + return a + ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16) + : ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @param {?} injector + * @return {?} + */ +function getInitialData(injector) { + /** @type {?} */ + const fn = (/** + * @return {?} + */ + function () { + /** @type {?} */ + const store = injector.get(Store); + return store.dispatch(new ConfigGetAppConfiguration()).toPromise(); + }); + return fn; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @param {?} value + * @return {?} + */ +function isFunction(value) { + return typeof value === 'function'; +} +/** @type {?} */ +const takeUntilDestroy = (/** + * @param {?} componentInstance + * @param {?=} destroyMethodName + * @return {?} + */ +(componentInstance, destroyMethodName = 'ngOnDestroy') => (/** + * @template T + * @param {?} source + * @return {?} + */ +(source) => { + /** @type {?} */ + const originalDestroy = componentInstance[destroyMethodName]; + if (isFunction(originalDestroy) === false) { + throw new Error(`${componentInstance.constructor.name} is using untilDestroyed but doesn't implement ${destroyMethodName}`); + } + if (!componentInstance['__takeUntilDestroy']) { + componentInstance['__takeUntilDestroy'] = new Subject(); + componentInstance[destroyMethodName] = (/** + * @return {?} + */ + function () { + isFunction(originalDestroy) && originalDestroy.apply(this, arguments); + componentInstance['__takeUntilDestroy'].next(true); + componentInstance['__takeUntilDestroy'].complete(); + }); + } + return source.pipe(takeUntil(componentInstance['__takeUntilDestroy'])); +})); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class DynamicLayoutComponent { + /** + * @param {?} router + * @param {?} store + */ + constructor(router, store) { + this.router = router; + this.store = store; + this.router.events.pipe(takeUntilDestroy(this)).subscribe((/** + * @param {?} event + * @return {?} + */ + event => { + if (event instanceof NavigationEnd) { + const { segments } = this.router.parseUrl(event.url).root.children.primary; + const { requirements: { layouts }, routes, } = this.store.selectSnapshot(ConfigState.getAll); + /** @type {?} */ + const layout = findLayout(segments, routes); + this.layout = layouts.filter((/** + * @param {?} l + * @return {?} + */ + l => !!l)).find((/** + * @param {?} l + * @return {?} + */ + l => snq((/** + * @return {?} + */ + () => l.type.toLowerCase().indexOf(layout)), -1) > -1)); + } + })); + } + /** + * @return {?} + */ + ngOnDestroy() { } +} +DynamicLayoutComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-dynamic-layout', + template: ` + + + + + ` + }] } +]; +/** @nocollapse */ +DynamicLayoutComponent.ctorParameters = () => [ + { type: Router }, + { type: Store } +]; +__decorate([ + Select(ConfigState.getOne('requirements')), + __metadata("design:type", Observable) +], DynamicLayoutComponent.prototype, "requirements$", void 0); +/** + * @param {?} segments + * @param {?} routes + * @return {?} + */ +function findLayout(segments, routes) { + /** @type {?} */ + let layout = "empty" /* empty */; + /** @type {?} */ + const route = routes + .reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + (acc, val) => (val.wrapper ? [...acc, ...val.children] : [...acc, val])), []) + .find((/** + * @param {?} r + * @return {?} + */ + r => r.path === segments[0].path)); + if (route) { + if (route.layout) { + layout = route.layout; + } + if (route.children && route.children.length) { + /** @type {?} */ + const child = route.children.find((/** + * @param {?} c + * @return {?} + */ + c => c.path === segments[1].path)); + if (child.layout) { + layout = child.layout; + } + } + } + return layout; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class RouterOutletComponent { +} +RouterOutletComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-router-outlet', + template: ` + + ` + }] } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class EllipsisDirective { + /** + * @param {?} cdRef + * @param {?} elRef + */ + constructor(cdRef, elRef) { + this.cdRef = cdRef; + this.elRef = elRef; + this.enabled = true; + } + /** + * @return {?} + */ + get class() { + return this.enabled; + } + /** + * @return {?} + */ + get maxWidth() { + return this.enabled ? this.witdh || '180px' : undefined; + } + /** + * @return {?} + */ + ngAfterContentInit() { + setTimeout((/** + * @return {?} + */ + () => { + /** @type {?} */ + const title = this.title; + this.title = title || ((/** @type {?} */ (this.elRef.nativeElement))).innerText; + if (this.title !== title) { + this.cdRef.detectChanges(); + } + }), 0); + } +} +EllipsisDirective.decorators = [ + { type: Directive, args: [{ + selector: '[abpEllipsis]', + },] } +]; +/** @nocollapse */ +EllipsisDirective.ctorParameters = () => [ + { type: ChangeDetectorRef }, + { type: ElementRef } +]; +EllipsisDirective.propDecorators = { + witdh: [{ type: Input, args: ['abpEllipsis',] }], + title: [{ type: HostBinding, args: ['title',] }, { type: Input }], + enabled: [{ type: Input, args: ['abpEllipsisEnabled',] }], + class: [{ type: HostBinding, args: ['class.abp-ellipsis',] }], + maxWidth: [{ type: HostBinding, args: ['style.max-width',] }] +}; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class PermissionDirective { + /** + * @param {?} elRef + * @param {?} renderer + * @param {?} store + */ + constructor(elRef, renderer, store) { + this.elRef = elRef; + this.renderer = renderer; + this.store = store; + } + /** + * @return {?} + */ + ngOnInit() { + if (this.condition) { + this.store + .select(ConfigState.getGrantedPolicy(this.condition)) + .pipe(takeUntilDestroy(this)) + .subscribe((/** + * @param {?} isGranted + * @return {?} + */ + isGranted => { + if (!isGranted) { + this.renderer.removeChild(((/** @type {?} */ (this.elRef.nativeElement))).parentElement, this.elRef.nativeElement); + } + })); + } + } + /** + * @return {?} + */ + ngOnDestroy() { } +} +PermissionDirective.decorators = [ + { type: Directive, args: [{ + selector: '[abpPermission]', + },] } +]; +/** @nocollapse */ +PermissionDirective.ctorParameters = () => [ + { type: ElementRef, decorators: [{ type: Optional }] }, + { type: Renderer2 }, + { type: Store } +]; +PermissionDirective.propDecorators = { + condition: [{ type: Input, args: ['abpPermission',] }] +}; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class VisibilityDirective { + /** + * @param {?} elRef + * @param {?} renderer + */ + constructor(elRef, renderer) { + this.elRef = elRef; + this.renderer = renderer; + this.completed$ = new Subject(); + } + /** + * @return {?} + */ + ngAfterViewInit() { + /** @type {?} */ + const observer = new MutationObserver((/** + * @param {?} mutations + * @return {?} + */ + mutations => { + mutations.forEach((/** + * @param {?} mutation + * @return {?} + */ + mutation => { + if (!mutation.target) + return; + /** @type {?} */ + const htmlNodes = snq((/** + * @return {?} + */ + () => Array.from(mutation.target.childNodes).filter((/** + * @param {?} node + * @return {?} + */ + node => node instanceof HTMLElement))), []); + if (!htmlNodes.length) { + this.renderer.removeChild(this.elRef.nativeElement.parentElement, this.elRef.nativeElement); + this.disconnect(); + } + else { + setTimeout((/** + * @return {?} + */ + () => { + this.disconnect(); + }), 0); + } + })); + })); + observer.observe(this.focusedElement, { + childList: true, + }); + this.completed$.subscribe((/** + * @return {?} + */ + () => observer.disconnect())); + } + /** + * @return {?} + */ + disconnect() { + this.completed$.next(); + this.completed$.complete(); + } +} +VisibilityDirective.decorators = [ + { type: Directive, args: [{ + selector: '[abpVisibility]', + },] } +]; +/** @nocollapse */ +VisibilityDirective.ctorParameters = () => [ + { type: ElementRef, decorators: [{ type: Optional }] }, + { type: Renderer2 } +]; +VisibilityDirective.propDecorators = { + focusedElement: [{ type: Input, args: ['abpVisibility',] }] +}; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class AuthGuard { + /** + * @param {?} oauthService + * @param {?} store + */ + constructor(oauthService, store) { + this.oauthService = oauthService; + this.store = store; + } + /** + * @param {?} _ + * @param {?} state + * @return {?} + */ + canActivate(_, state) { + /** @type {?} */ + const hasValidAccessToken = this.oauthService.hasValidAccessToken(); + if (hasValidAccessToken) { + return hasValidAccessToken; + } + this.store.dispatch(new Navigate(['/account/login'], null, { state: { redirectUrl: state.url } })); + return false; + } +} +AuthGuard.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +AuthGuard.ctorParameters = () => [ + { type: OAuthService }, + { type: Store } +]; +/** @nocollapse */ AuthGuard.ngInjectableDef = ɵɵdefineInjectable({ factory: function AuthGuard_Factory() { return new AuthGuard(ɵɵinject(OAuthService), ɵɵinject(Store)); }, token: AuthGuard, providedIn: "root" }); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class PermissionGuard { + /** + * @param {?} store + */ + constructor(store) { + this.store = store; + } + /** + * @param {?} __0 + * @return {?} + */ + canActivate({ data }) { + /** @type {?} */ + const resource = (/** @type {?} */ (data.requiredPolicy)); + return this.store.select(ConfigState.getGrantedPolicy(resource)); + } +} +PermissionGuard.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +PermissionGuard.ctorParameters = () => [ + { type: Store } +]; +/** @nocollapse */ PermissionGuard.ngInjectableDef = ɵɵdefineInjectable({ factory: function PermissionGuard_Factory() { return new PermissionGuard(ɵɵinject(Store)); }, token: PermissionGuard, providedIn: "root" }); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class ApiInterceptor { + /** + * @param {?} oAuthService + * @param {?} store + */ + constructor(oAuthService, store) { + this.oAuthService = oAuthService; + this.store = store; + } + /** + * @param {?} request + * @param {?} next + * @return {?} + */ + intercept(request, next) { + this.store.dispatch(new LoaderStart(request)); + /** @type {?} */ + const headers = (/** @type {?} */ ({})); + /** @type {?} */ + const token = this.oAuthService.getAccessToken(); + if (!request.headers.has('Authorization') && token) { + headers['Authorization'] = `Bearer ${token}`; + } + /** @type {?} */ + const lang = this.store.selectSnapshot(SessionState.getLanguage); + if (!request.headers.has('Accept-Language') && lang) { + headers['Accept-Language'] = lang; + } + return next + .handle(request.clone({ + setHeaders: headers, + })) + .pipe(finalize((/** + * @return {?} + */ + () => this.store.dispatch(new LoaderStop(request))))); + } +} +ApiInterceptor.decorators = [ + { type: Injectable } +]; +/** @nocollapse */ +ApiInterceptor.ctorParameters = () => [ + { type: OAuthService }, + { type: Store } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var Rest; +(function (Rest) { + /** + * @record + */ + function Config() { } + Rest.Config = Config; + /** + * @record + * @template T + */ + function Request() { } + Rest.Request = Request; +})(Rest || (Rest = {})); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +const NGXS_CONFIG_PLUGIN_OPTIONS = new InjectionToken('NGXS_CONFIG_PLUGIN_OPTIONS'); +class ConfigPlugin { + /** + * @param {?} options + * @param {?} router + */ + constructor(options, router) { + this.options = options; + this.router = router; + this.initialized = false; + } + /** + * @param {?} state + * @param {?} event + * @param {?} next + * @return {?} + */ + handle(state, event, next) { + /** @type {?} */ + const matches = actionMatcher(event); + /** @type {?} */ + const isInitAction = matches(InitState) || matches(UpdateState); + // const layouts = snq(() => this.options.requirements.layouts.filter(layout => layout instanceof Type), []); + if (isInitAction && !this.initialized) { + let { routes, wrappers } = transformRoutes(this.router.config); + routes = organizeRoutes(routes, wrappers); + state = setValue(state, 'ConfigState', Object.assign({}, (state.ConfigState && Object.assign({}, state.ConfigState)), this.options, { routes })); + this.initialized = true; + } + return next(state, event); + } +} +ConfigPlugin.decorators = [ + { type: Injectable } +]; +/** @nocollapse */ +ConfigPlugin.ctorParameters = () => [ + { type: undefined, decorators: [{ type: Inject, args: [NGXS_CONFIG_PLUGIN_OPTIONS,] }] }, + { type: Router } +]; +/** + * @param {?=} routes + * @param {?=} wrappers + * @return {?} + */ +function transformRoutes(routes = [], wrappers = []) { + /** @type {?} */ + const abpRoutes = routes + .filter((/** + * @param {?} route + * @return {?} + */ + route => { + return snq((/** + * @return {?} + */ + () => route.data.routes.find((/** + * @param {?} r + * @return {?} + */ + r => r.path === route.path))), false); + })) + .reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + (acc, val) => [...acc, ...val.data.routes]), []); + wrappers = abpRoutes.filter((/** + * @param {?} ar + * @return {?} + */ + ar => ar.wrapper)); + /** @type {?} */ + const transformed = (/** @type {?} */ ([])); + routes + .filter((/** + * @param {?} route + * @return {?} + */ + route => route.component || route.loadChildren)) + .forEach((/** + * @param {?} route + * @return {?} + */ + route => { + /** @type {?} */ + const abpPackage = abpRoutes.find((/** + * @param {?} abp + * @return {?} + */ + abp => abp.path.toLowerCase() === route.path.toLowerCase())); + const { length } = transformed; + if (abpPackage) { + transformed.push(abpPackage); + } + if (transformed.length === length) { + transformed.push((/** @type {?} */ ({ + path: route.path, + name: snq((/** + * @return {?} + */ + () => route.data.routes.name), route.path), + children: route.data.routes.children || [], + }))); + } + })); + return { routes: setUrls(transformed), wrappers }; +} +/** + * @param {?} routes + * @param {?=} parentUrl + * @return {?} + */ +function setUrls(routes, parentUrl) { + if (parentUrl) { + // this if block using for only recursive call + return routes.map((/** + * @param {?} route + * @return {?} + */ + route => (Object.assign({}, route, { url: `${parentUrl}/${route.path}` }, (route.children && + route.children.length && { + children: setUrls(route.children, `${parentUrl}/${route.path}`), + }))))); + } + return routes.map((/** + * @param {?} route + * @return {?} + */ + route => (Object.assign({}, route, { url: `/${route.path}` }, (route.children && + route.children.length && { + children: setUrls(route.children, `/${route.path}`), + }))))); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class ConfigService { + /** + * @param {?} store + */ + constructor(store) { + this.store = store; + } + /** + * @return {?} + */ + getAll() { + return this.store.selectSnapshot(ConfigState.getAll); + } + /** + * @param {?} key + * @return {?} + */ + getOne(key) { + return this.store.selectSnapshot(ConfigState.getOne(key)); + } + /** + * @param {?} keys + * @return {?} + */ + getDeep(keys) { + return this.store.selectSnapshot(ConfigState.getDeep(keys)); + } + /** + * @param {?} key + * @return {?} + */ + getSetting(key) { + return this.store.selectSnapshot(ConfigState.getSetting(key)); + } +} +ConfigService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +ConfigService.ctorParameters = () => [ + { type: Store } +]; +/** @nocollapse */ ConfigService.ngInjectableDef = ɵɵdefineInjectable({ factory: function ConfigService_Factory() { return new ConfigService(ɵɵinject(Store)); }, token: ConfigService, providedIn: "root" }); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class LazyLoadService { + constructor() { + this.loadedLibraries = {}; + } + /** + * @param {?} url + * @param {?} type + * @param {?=} content + * @param {?=} targetQuery + * @param {?=} position + * @return {?} + */ + load(url, type, content = '', targetQuery = 'body', position = 'afterend') { + if (!url && !content) + return; + /** @type {?} */ + const key = url ? url.slice(url.lastIndexOf('/') + 1) : uuid(); + if (this.loadedLibraries[key]) { + return this.loadedLibraries[key].asObservable(); + } + this.loadedLibraries[key] = new ReplaySubject(); + /** @type {?} */ + let library; + if (type === 'script') { + library = document.createElement('script'); + library.type = 'text/javascript'; + if (url) { + ((/** @type {?} */ (library))).src = url; + } + ((/** @type {?} */ (library))).text = content; + } + else if (url) { + library = document.createElement('link'); + library.type = 'text/css'; + ((/** @type {?} */ (library))).rel = 'stylesheet'; + if (url) { + ((/** @type {?} */ (library))).href = url; + } + } + else { + library = document.createElement('style'); + ((/** @type {?} */ (library))).textContent = content; + } + library.onload = (/** + * @return {?} + */ + () => { + this.loadedLibraries[key].next(); + this.loadedLibraries[key].complete(); + }); + document.querySelector(targetQuery).insertAdjacentElement(position, library); + return this.loadedLibraries[key].asObservable(); + } +} +LazyLoadService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ LazyLoadService.ngInjectableDef = ɵɵdefineInjectable({ factory: function LazyLoadService_Factory() { return new LazyLoadService(); }, token: LazyLoadService, providedIn: "root" }); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class LocalizationService { + /** + * @param {?} store + */ + constructor(store) { + this.store = store; + } + /** + * @param {?} keys + * @param {...?} interpolateParams + * @return {?} + */ + get(keys, ...interpolateParams) { + return this.store.select(ConfigState.getCopy(keys, ...interpolateParams)); + } + /** + * @param {?} keys + * @param {...?} interpolateParams + * @return {?} + */ + instant(keys, ...interpolateParams) { + return this.store.selectSnapshot(ConfigState.getCopy(keys, ...interpolateParams)); + } +} +LocalizationService.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] } +]; +/** @nocollapse */ +LocalizationService.ctorParameters = () => [ + { type: Store } +]; +/** @nocollapse */ LocalizationService.ngInjectableDef = ɵɵdefineInjectable({ factory: function LocalizationService_Factory() { return new LocalizationService(ɵɵinject(Store)); }, token: LocalizationService, providedIn: "root" }); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @param {?} environment + * @return {?} + */ +function environmentFactory(environment) { + return Object.assign({}, environment); +} +/** + * @param {?} config + * @return {?} + */ +function configFactory(config) { + return Object.assign({}, config); +} +/** @type {?} */ +const ENVIRONMENT = new InjectionToken('ENVIRONMENT'); +/** @type {?} */ +const CONFIG = new InjectionToken('CONFIG'); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class LocalizationPipe { + /** + * @param {?} store + */ + constructor(store) { + this.store = store; + this.initialized = false; + } + /** + * @param {?} value + * @param {...?} interpolateParams + * @return {?} + */ + transform(value, ...interpolateParams) { + if (!this.initialized) { + this.initialized = true; + this.store + .select(ConfigState.getCopy(value, ...interpolateParams.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + (acc, val) => (Array.isArray(val) ? [...acc, ...val] : [...acc, val])), []))) + .pipe(takeUntilDestroy(this), distinctUntilChanged()) + .subscribe((/** + * @param {?} copy + * @return {?} + */ + copy => (this.value = copy))); + } + return this.value; + } + /** + * @return {?} + */ + ngOnDestroy() { } +} +LocalizationPipe.decorators = [ + { type: Pipe, args: [{ + name: 'abpLocalization', + pure: false, + },] } +]; +/** @nocollapse */ +LocalizationPipe.ctorParameters = () => [ + { type: Store } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class CoreModule { + /** + * @param {?=} options + * @return {?} + */ + static forRoot(options = (/** @type {?} */ ({}))) { + return { + ngModule: CoreModule, + providers: [ + { + provide: NGXS_PLUGINS, + useClass: ConfigPlugin, + multi: true, + }, + { + provide: NGXS_CONFIG_PLUGIN_OPTIONS, + useValue: options, + }, + { + provide: HTTP_INTERCEPTORS, + useClass: ApiInterceptor, + multi: true, + }, + { + provide: APP_INITIALIZER, + multi: true, + deps: [Injector], + useFactory: getInitialData, + }, + ], + }; + } +} +CoreModule.decorators = [ + { type: NgModule, args: [{ + imports: [ + NgxsModule.forFeature([ProfileState, SessionState, ConfigState]), + NgxsStoragePluginModule.forRoot({ key: 'SessionState' }), + NgxsRouterPluginModule.forRoot(), + CommonModule, + HttpClientModule, + FormsModule, + ReactiveFormsModule, + RouterModule, + ], + declarations: [ + RouterOutletComponent, + DynamicLayoutComponent, + PermissionDirective, + VisibilityDirective, + LocalizationPipe, + EllipsisDirective, + ], + exports: [ + CommonModule, + HttpClientModule, + FormsModule, + ReactiveFormsModule, + RouterModule, + RouterOutletComponent, + DynamicLayoutComponent, + PermissionDirective, + VisibilityDirective, + EllipsisDirective, + LocalizationPipe, + ], + providers: [LocalizationPipe], + entryComponents: [RouterOutletComponent, DynamicLayoutComponent], + },] } +]; + +export { ApiInterceptor, ApplicationConfigurationService, AuthGuard, CONFIG, ConfigGetAppConfiguration, ConfigPlugin, ConfigService, ConfigState, CoreModule, DynamicLayoutComponent, ENVIRONMENT, EllipsisDirective, LazyLoadService, LoaderStart, LoaderStop, LocalizationService, NGXS_CONFIG_PLUGIN_OPTIONS, PatchRouteByName, PermissionDirective, PermissionGuard, ProfileChangePassword, ProfileGet, ProfileService, ProfileState, ProfileUpdate, Rest, RestOccurError, RestService, RouterOutletComponent, SessionSetLanguage, SessionState, VisibilityDirective, configFactory, environmentFactory, getInitialData, organizeRoutes, setChildRoute, sortRoutes, takeUntilDestroy, uuid, ProfileState as ɵa, ProfileService as ɵb, RestService as ɵc, ProfileGet as ɵd, ProfileUpdate as ɵe, ProfileChangePassword as ɵf, SessionState as ɵh, SessionSetLanguage as ɵi, ConfigState as ɵj, ApplicationConfigurationService as ɵk, PatchRouteByName as ɵl, ConfigGetAppConfiguration as ɵm, RouterOutletComponent as ɵn, DynamicLayoutComponent as ɵo, ConfigState as ɵp, PermissionDirective as ɵq, VisibilityDirective as ɵr, LocalizationPipe as ɵs, EllipsisDirective as ɵt, NGXS_CONFIG_PLUGIN_OPTIONS as ɵu, ConfigPlugin as ɵv, ApiInterceptor as ɵx, getInitialData as ɵy }; +//# sourceMappingURL=abp-ng.core.js.map diff --git a/npm/ng-packs/dist/core/fesm2015/abp-ng.core.js.map b/npm/ng-packs/dist/core/fesm2015/abp-ng.core.js.map new file mode 100644 index 00000000000..440aad87e18 --- /dev/null +++ b/npm/ng-packs/dist/core/fesm2015/abp-ng.core.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.core.js","sources":["ng://@abp/ng.core/lib/actions/config.actions.ts","ng://@abp/ng.core/lib/actions/loader.actions.ts","ng://@abp/ng.core/lib/actions/profile.actions.ts","ng://@abp/ng.core/lib/actions/rest.actions.ts","ng://@abp/ng.core/lib/actions/session.actions.ts","ng://@abp/ng.core/lib/services/rest.service.ts","ng://@abp/ng.core/lib/services/profile.service.ts","ng://@abp/ng.core/lib/states/profile.state.ts","ng://@abp/ng.core/lib/services/application-configuration.service.ts","ng://@abp/ng.core/lib/states/session.state.ts","ng://@abp/ng.core/lib/utils/route-utils.ts","ng://@abp/ng.core/lib/states/config.state.ts","ng://@abp/ng.core/lib/utils/generator-utils.ts","ng://@abp/ng.core/lib/utils/initial-utils.ts","ng://@abp/ng.core/lib/utils/rxjs-utils.ts","ng://@abp/ng.core/lib/components/dynamic-layout.component.ts","ng://@abp/ng.core/lib/components/router-outlet.component.ts","ng://@abp/ng.core/lib/directives/ellipsis.directive.ts","ng://@abp/ng.core/lib/directives/permission.directive.ts","ng://@abp/ng.core/lib/directives/visibility.directive.ts","ng://@abp/ng.core/lib/guards/auth.guard.ts","ng://@abp/ng.core/lib/guards/permission.guard.ts","ng://@abp/ng.core/lib/interceptors/api.interceptor.ts","ng://@abp/ng.core/lib/models/rest.ts","ng://@abp/ng.core/lib/plugins/config.plugin.ts","ng://@abp/ng.core/lib/services/config.service.ts","ng://@abp/ng.core/lib/services/lazy-load.service.ts","ng://@abp/ng.core/lib/services/localization.service.ts","ng://@abp/ng.core/lib/tokens/common.token.ts","ng://@abp/ng.core/lib/pipes/localization.pipe.ts","ng://@abp/ng.core/lib/core.module.ts"],"sourcesContent":["import { ABP } from '../models';\n\nexport class PatchRouteByName {\n static readonly type = '[Config] Patch Route By Name';\n constructor(public name: string, public newValue: Partial) {}\n}\n\nexport class ConfigGetAppConfiguration {\n static readonly type = '[Config] Get App Configuration';\n}\n","import { HttpRequest } from '@angular/common/http';\n\nexport class LoaderStart {\n static readonly type = '[Loader] Start';\n constructor(public payload: HttpRequest) {}\n}\n\nexport class LoaderStop {\n static readonly type = '[Loader] Stop';\n constructor(public payload: HttpRequest) {}\n}\n","import { Profile } from '../models';\n\nexport class ProfileGet {\n static readonly type = '[Profile] Get';\n}\n\nexport class ProfileUpdate {\n static readonly type = '[Profile] Update';\n constructor(public payload: Profile.Response) {}\n}\n\nexport class ProfileChangePassword {\n static readonly type = '[Profile] Change Password';\n constructor(public payload: Profile.ChangePasswordRequest) {}\n}\n","import { HttpErrorResponse } from '@angular/common/http';\n\nexport class RestOccurError {\n static readonly type = '[Rest] Error';\n constructor(public payload: HttpErrorResponse | any) {}\n}\n","export class SessionSetLanguage {\n static readonly type = '[Session] Set Language';\n constructor(public payload: string) {}\n}\n","import { HttpClient, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { NEVER, Observable, throwError } from 'rxjs';\nimport { catchError, take } from 'rxjs/operators';\nimport { Rest } from '../models/rest';\nimport { ConfigState } from '../states';\nimport { RestOccurError } from '../actions';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RestService {\n constructor(private http: HttpClient, private store: Store) {}\n\n handleError(err: any): Observable {\n this.store.dispatch(new RestOccurError(err));\n console.error(err);\n return NEVER;\n }\n\n request(request: HttpRequest | Rest.Request, config: Rest.Config = {}, api?: string): Observable {\n const { observe = Rest.Observe.Body, throwErr } = config;\n const url = api || this.store.selectSnapshot(ConfigState.getApiUrl()) + request.url;\n const { method, ...options } = request;\n return this.http.request(method, url, { observe, ...options } as any).pipe(\n observe === Rest.Observe.Body ? take(1) : null,\n catchError(err => {\n if (throwErr) {\n return throwError(err);\n }\n\n return this.handleError(err);\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RestService } from './rest.service';\nimport { Profile, Rest } from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProfileService {\n constructor(private rest: RestService) {}\n\n get(): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/identity/my-profile',\n };\n\n return this.rest.request(request);\n }\n\n update(body: Profile.Response): Observable {\n const request: Rest.Request = {\n method: 'PUT',\n url: '/api/identity/my-profile',\n body,\n };\n\n return this.rest.request(request);\n }\n\n changePassword(body: Profile.ChangePasswordRequest): Observable {\n const request: Rest.Request = {\n method: 'POST',\n url: '/api/identity/my-profile/changePassword',\n body,\n };\n\n return this.rest.request(request);\n }\n}\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\nimport { ProfileGet, ProfileChangePassword, ProfileUpdate } from '../actions/profile.actions';\nimport { Profile } from '../models/profile';\nimport { ProfileService } from '../services/profile.service';\nimport { tap } from 'rxjs/operators';\n\n@State({\n name: 'ProfileState',\n defaults: {} as Profile.State,\n})\nexport class ProfileState {\n @Selector()\n static getProfile({ profile }: Profile.State): Profile.Response {\n return profile;\n }\n\n constructor(private profileService: ProfileService) {}\n\n @Action(ProfileGet)\n profileGet({ patchState }: StateContext) {\n return this.profileService.get().pipe(\n tap(profile =>\n patchState({\n profile,\n }),\n ),\n );\n }\n\n @Action(ProfileUpdate)\n profileUpdate({ patchState }: StateContext, { payload }: ProfileUpdate) {\n return this.profileService.update(payload).pipe(\n tap(profile =>\n patchState({\n profile,\n }),\n ),\n );\n }\n\n @Action(ProfileChangePassword)\n changePassword(_, { payload }: ProfileChangePassword) {\n return this.profileService.changePassword(payload);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApplicationConfiguration, Rest } from '../models';\nimport { RestService } from './rest.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApplicationConfigurationService {\n constructor(private rest: RestService) {}\n\n getConfiguration(): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/abp/application-configuration',\n };\n\n return this.rest.request(request);\n }\n}\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\nimport { SessionSetLanguage } from '../actions/session.actions';\nimport { Session } from '../models/session';\n\n@State({\n name: 'SessionState',\n defaults: {} as Session.State,\n})\nexport class SessionState {\n @Selector()\n static getLanguage({ language }: Session.State): string {\n return language;\n }\n\n constructor() {}\n\n @Action(SessionSetLanguage)\n sessionSetLanguage({ patchState }: StateContext, { payload }: SessionSetLanguage) {\n patchState({\n language: payload,\n });\n }\n}\n","import { ABP } from '../models';\n\nexport function organizeRoutes(\n routes: ABP.FullRoute[],\n wrappers: ABP.FullRoute[] = [],\n parentNameArr = [] as ABP.FullRoute[],\n parentName: string = null,\n): ABP.FullRoute[] {\n const filter = route => {\n if (route.children) {\n route.children = organizeRoutes(route.children, wrappers, parentNameArr, route.name);\n }\n\n if (route.parentName && route.parentName !== parentName) {\n parentNameArr.push(route);\n return false;\n }\n\n return true;\n };\n\n if (parentName) {\n // recursive block\n return routes.filter(filter);\n }\n\n const filteredRoutes = routes.filter(filter);\n\n if (parentNameArr.length) {\n return sortRoutes(setChildRoute([...filteredRoutes, ...wrappers], parentNameArr));\n }\n\n return filteredRoutes;\n}\n\nexport function setChildRoute(routes: ABP.FullRoute[], parentNameArr: ABP.FullRoute[]): ABP.FullRoute[] {\n return routes\n .map(route => {\n if (route.children && route.children.length) {\n route.children = setChildRoute(route.children, parentNameArr);\n }\n\n const foundedChildren = parentNameArr.filter(parent => parent.parentName === route.name);\n if (foundedChildren && foundedChildren.length) {\n route.children = [...(route.children || []), ...foundedChildren];\n }\n\n return route;\n })\n .filter(route => route.path || (route.children && route.children.length));\n}\n\nexport function sortRoutes(routes: ABP.FullRoute[] = []): ABP.FullRoute[] {\n if (!routes.length) return [];\n return routes\n .sort((a, b) => a.order - b.order)\n .map(route => {\n if (route.children && route.children.length) {\n route.children = sortRoutes(route.children);\n }\n\n return route;\n });\n}\n","import { State, Selector, createSelector, Action, StateContext, Store } from '@ngxs/store';\nimport { Config, ABP } from '../models';\nimport { ConfigGetAppConfiguration, PatchRouteByName } from '../actions/config.actions';\nimport { ApplicationConfigurationService } from '../services/application-configuration.service';\nimport { tap, switchMap } from 'rxjs/operators';\nimport snq from 'snq';\nimport { SessionSetLanguage } from '../actions';\nimport { SessionState } from './session.state';\nimport { of } from 'rxjs';\nimport { setChildRoute, sortRoutes, organizeRoutes } from '../utils/route-utils';\n\n@State({\n name: 'ConfigState',\n defaults: {} as Config.State,\n})\nexport class ConfigState {\n @Selector()\n static getAll(state: Config.State) {\n return state;\n }\n\n static getOne(key: string) {\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State) {\n return state[key];\n },\n );\n\n return selector;\n }\n\n static getDeep(keys: string[] | string) {\n if (typeof keys === 'string') {\n keys = keys.split('.');\n }\n\n if (!Array.isArray(keys)) {\n throw new Error('The argument must be a dot string or an string array.');\n }\n\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State) {\n return (keys as string[]).reduce((acc, val) => {\n if (acc) {\n return acc[val];\n }\n\n return undefined;\n }, state);\n },\n );\n\n return selector;\n }\n\n static getApiUrl(key?: string) {\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State): string {\n return state.environment.apis[key || 'default'].url;\n },\n );\n\n return selector;\n }\n\n static getSetting(key: string) {\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State) {\n return snq(() => state.setting.values[key]);\n },\n );\n\n return selector;\n }\n\n static getGrantedPolicy(condition: string = '') {\n const keys = condition\n .replace(/\\(|\\)|\\!|\\s/g, '')\n .split(/\\|\\||&&/)\n .filter(key => key);\n\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State): boolean {\n if (!keys.length) return true;\n\n const getPolicy = key => snq(() => state.auth.grantedPolicies[key], false);\n if (keys.length > 1) {\n keys.forEach(key => {\n const value = getPolicy(key);\n condition = condition.replace(key, value);\n });\n\n // tslint:disable-next-line: no-eval\n return eval(`!!${condition}`);\n }\n\n return getPolicy(condition);\n },\n );\n\n return selector;\n }\n\n static getCopy(key: string, ...interpolateParams: string[]) {\n if (!key) key = '';\n\n const keys = key.split('::') as string[];\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State) {\n const { defaultResourceName } = state.environment.localization;\n if (keys[0] === '') {\n if (!defaultResourceName) {\n throw new Error(\n `Please check your environment. May you forget set defaultResourceName? \n Here is the example:\n { production: false,\n localization: {\n defaultResourceName: 'MyProjectName'\n }\n }`,\n );\n }\n\n keys[0] = snq(() => defaultResourceName);\n }\n\n let copy = keys.reduce((acc, val) => {\n if (acc) {\n return acc[val];\n }\n\n return undefined;\n }, state.localization.values);\n\n if (copy && interpolateParams && interpolateParams.length) {\n interpolateParams.forEach((param, index) => {\n copy = copy.replace(`'{${index}}'`, param);\n });\n }\n\n return copy || key;\n },\n );\n\n return selector;\n }\n\n constructor(private appConfigurationService: ApplicationConfigurationService, private store: Store) {}\n\n @Action(ConfigGetAppConfiguration)\n addData({ patchState, dispatch }: StateContext) {\n return this.appConfigurationService.getConfiguration().pipe(\n tap(configuration =>\n patchState({\n ...configuration,\n }),\n ),\n switchMap(configuration =>\n this.store.selectSnapshot(SessionState.getLanguage)\n ? of(null)\n : dispatch(\n new SessionSetLanguage(snq(() => configuration.setting.values['Abp.Localization.DefaultLanguage'])),\n ),\n ),\n );\n }\n\n @Action(PatchRouteByName)\n patchRoute({ patchState, getState }: StateContext, { name, newValue }: PatchRouteByName) {\n let routes: ABP.FullRoute[] = getState().routes;\n\n const index = routes.findIndex(route => route.name === name);\n\n routes = patchRouteDeep(routes, name, newValue);\n\n return patchState({\n routes,\n });\n }\n}\n\nfunction patchRouteDeep(\n routes: ABP.FullRoute[],\n name: string,\n newValue: Partial,\n parentUrl: string = null,\n): ABP.FullRoute[] {\n routes = routes.map(route => {\n if (route.name === name) {\n if (newValue.path) {\n newValue.url = `${parentUrl}/${newValue.path}`;\n }\n\n if (newValue.children && newValue.children.length) {\n newValue.children = newValue.children.map(child => ({\n ...child,\n url: `${parentUrl}/${route.path}/${child.path}`,\n }));\n }\n\n return { ...route, ...newValue };\n } else if (route.children && route.children.length) {\n route.children = patchRouteDeep(route.children, name, newValue, (parentUrl || '/') + route.path);\n }\n\n return route;\n });\n\n if (parentUrl) {\n // recursive block\n return routes;\n }\n\n return organizeRoutes(routes);\n}\n","export function uuid(a?: any): string {\n return a\n ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16)\n : ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid);\n}\n","import { Injector } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigGetAppConfiguration } from '../actions/config.actions';\n\nexport function getInitialData(injector: Injector) {\n const fn = function() {\n const store: Store = injector.get(Store);\n\n return store.dispatch(new ConfigGetAppConfiguration()).toPromise();\n };\n\n return fn;\n}\n","import { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nexport const takeUntilDestroy = (componentInstance, destroyMethodName = 'ngOnDestroy') => (\n source: Observable,\n) => {\n const originalDestroy = componentInstance[destroyMethodName];\n if (isFunction(originalDestroy) === false) {\n throw new Error(\n `${componentInstance.constructor.name} is using untilDestroyed but doesn't implement ${destroyMethodName}`,\n );\n }\n if (!componentInstance['__takeUntilDestroy']) {\n componentInstance['__takeUntilDestroy'] = new Subject();\n\n componentInstance[destroyMethodName] = function() {\n isFunction(originalDestroy) && originalDestroy.apply(this, arguments);\n componentInstance['__takeUntilDestroy'].next(true);\n componentInstance['__takeUntilDestroy'].complete();\n };\n }\n return source.pipe(takeUntil(componentInstance['__takeUntilDestroy']));\n};\n","import { Component, OnDestroy, Type } from '@angular/core';\nimport { NavigationEnd, Router, UrlSegment } from '@angular/router';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { eLayoutType } from '../enums';\nimport { ABP, Config } from '../models';\nimport { ConfigState } from '../states';\nimport { takeUntilDestroy } from '../utils';\nimport snq from 'snq';\n\n@Component({\n selector: 'abp-dynamic-layout',\n template: `\n \n\n \n \n `,\n})\nexport class DynamicLayoutComponent implements OnDestroy {\n @Select(ConfigState.getOne('requirements'))\n requirements$: Observable;\n\n layout: Type;\n\n constructor(private router: Router, private store: Store) {\n this.router.events.pipe(takeUntilDestroy(this)).subscribe(event => {\n if (event instanceof NavigationEnd) {\n const { segments } = this.router.parseUrl(event.url).root.children.primary;\n const {\n requirements: { layouts },\n routes,\n } = this.store.selectSnapshot(ConfigState.getAll);\n\n const layout = findLayout(segments, routes);\n\n this.layout = layouts.filter(l => !!l).find(l => snq(() => l.type.toLowerCase().indexOf(layout), -1) > -1);\n }\n });\n }\n\n ngOnDestroy() {}\n}\n\nfunction findLayout(segments: UrlSegment[], routes: ABP.FullRoute[]): eLayoutType {\n let layout = eLayoutType.empty;\n\n const route = routes\n .reduce((acc, val) => (val.wrapper ? [...acc, ...val.children] : [...acc, val]), [])\n .find(r => r.path === segments[0].path);\n\n if (route) {\n if (route.layout) {\n layout = route.layout;\n }\n\n if (route.children && route.children.length) {\n const child = route.children.find(c => c.path === segments[1].path);\n\n if (child.layout) {\n layout = child.layout;\n }\n }\n }\n\n return layout;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'abp-router-outlet',\n template: `\n \n `,\n})\nexport class RouterOutletComponent {}\n","import { AfterContentInit, ChangeDetectorRef, Directive, ElementRef, HostBinding, Input } from '@angular/core';\n\n@Directive({\n selector: '[abpEllipsis]',\n})\nexport class EllipsisDirective implements AfterContentInit {\n @Input('abpEllipsis')\n witdh: string;\n\n @HostBinding('title')\n @Input()\n title: string;\n\n @Input('abpEllipsisEnabled')\n enabled = true;\n\n @HostBinding('class.abp-ellipsis')\n get class() {\n return this.enabled;\n }\n\n @HostBinding('style.max-width')\n get maxWidth() {\n return this.enabled ? this.witdh || '180px' : undefined;\n }\n\n constructor(private cdRef: ChangeDetectorRef, private elRef: ElementRef) {}\n\n ngAfterContentInit() {\n setTimeout(() => {\n const title = this.title;\n this.title = title || (this.elRef.nativeElement as HTMLElement).innerText;\n\n if (this.title !== title) {\n this.cdRef.detectChanges();\n }\n }, 0);\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Optional, Renderer2 } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigState } from '../states';\nimport { takeUntilDestroy } from '../utils';\n\n@Directive({\n selector: '[abpPermission]',\n})\nexport class PermissionDirective implements OnInit, OnDestroy {\n @Input('abpPermission') condition: string;\n\n constructor(@Optional() private elRef: ElementRef, private renderer: Renderer2, private store: Store) {}\n\n ngOnInit() {\n if (this.condition) {\n this.store\n .select(ConfigState.getGrantedPolicy(this.condition))\n .pipe(takeUntilDestroy(this))\n .subscribe(isGranted => {\n if (!isGranted) {\n this.renderer.removeChild(\n (this.elRef.nativeElement as HTMLElement).parentElement,\n this.elRef.nativeElement,\n );\n }\n });\n }\n }\n\n ngOnDestroy(): void {}\n}\n","import { Directive, Input, Optional, ElementRef, Renderer2, AfterViewInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport snq from 'snq';\n\n@Directive({\n selector: '[abpVisibility]',\n})\nexport class VisibilityDirective implements AfterViewInit {\n @Input('abpVisibility')\n focusedElement: HTMLElement;\n\n completed$ = new Subject();\n\n constructor(@Optional() private elRef: ElementRef, private renderer: Renderer2) {}\n\n ngAfterViewInit() {\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (!mutation.target) return;\n\n const htmlNodes = snq(\n () => Array.from(mutation.target.childNodes).filter(node => node instanceof HTMLElement),\n [],\n );\n\n if (!htmlNodes.length) {\n this.renderer.removeChild(this.elRef.nativeElement.parentElement, this.elRef.nativeElement);\n this.disconnect();\n } else {\n setTimeout(() => {\n this.disconnect();\n }, 0);\n }\n });\n });\n\n observer.observe(this.focusedElement, {\n childList: true,\n });\n\n this.completed$.subscribe(() => observer.disconnect());\n }\n\n disconnect() {\n this.completed$.next();\n this.completed$.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { Observable } from 'rxjs';\nimport { Navigate } from '@ngxs/router-plugin';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGuard implements CanActivate {\n constructor(private oauthService: OAuthService, private store: Store) {}\n canActivate(_: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | boolean | UrlTree {\n const hasValidAccessToken = this.oauthService.hasValidAccessToken();\n if (hasValidAccessToken) {\n return hasValidAccessToken;\n }\n\n this.store.dispatch(new Navigate(['/account/login'], null, { state: { redirectUrl: state.url } }));\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { ConfigState } from '../states';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PermissionGuard implements CanActivate {\n constructor(private store: Store) {}\n\n canActivate({ data }: ActivatedRouteSnapshot): Observable {\n const resource = data.requiredPolicy as string;\n return this.store.select(ConfigState.getGrantedPolicy(resource));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { Store } from '@ngxs/store';\nimport { SessionState } from '../states';\nimport { LoaderStart, LoaderStop } from '../actions/loader.actions';\nimport { finalize } from 'rxjs/operators';\n\n@Injectable()\nexport class ApiInterceptor implements HttpInterceptor {\n constructor(private oAuthService: OAuthService, private store: Store) {}\n\n intercept(request: HttpRequest, next: HttpHandler) {\n this.store.dispatch(new LoaderStart(request));\n\n const headers = {} as any;\n\n const token = this.oAuthService.getAccessToken();\n if (!request.headers.has('Authorization') && token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n\n const lang = this.store.selectSnapshot(SessionState.getLanguage);\n if (!request.headers.has('Accept-Language') && lang) {\n headers['Accept-Language'] = lang;\n }\n\n return next\n .handle(\n request.clone({\n setHeaders: headers,\n }),\n )\n .pipe(finalize(() => this.store.dispatch(new LoaderStop(request))));\n }\n}\n","import { HttpHeaders, HttpParams } from '@angular/common/http';\n\nexport namespace Rest {\n export interface Config {\n throwErr?: boolean;\n observe?: Observe;\n }\n\n export const enum Observe {\n Body = 'body',\n Events = 'events',\n Response = 'response',\n }\n\n export const enum ResponseType {\n ArrayBuffer = 'arraybuffer',\n Blob = 'blob',\n JSON = 'json',\n Text = 'text',\n }\n\n export interface Request {\n body?: T;\n headers?:\n | HttpHeaders\n | {\n [header: string]: string | string[];\n };\n method: string;\n params?:\n | HttpParams\n | {\n [param: string]: any;\n };\n reportProgress?: boolean;\n responseType?: ResponseType;\n url: string;\n withCredentials?: boolean;\n }\n}\n","import { Injectable, Inject, InjectionToken, Type } from '@angular/core';\nimport { NgxsPlugin, setValue, actionMatcher, InitState, UpdateState, NgxsNextPluginFn } from '@ngxs/store';\nimport { Router, Routes } from '@angular/router';\nimport { ABP } from '../models';\nimport snq from 'snq';\nimport { setChildRoute, sortRoutes, organizeRoutes } from '../utils/route-utils';\n\nexport const NGXS_CONFIG_PLUGIN_OPTIONS = new InjectionToken('NGXS_CONFIG_PLUGIN_OPTIONS');\n\n@Injectable()\nexport class ConfigPlugin implements NgxsPlugin {\n private initialized: boolean = false;\n\n constructor(@Inject(NGXS_CONFIG_PLUGIN_OPTIONS) private options: ABP.Root, private router: Router) {}\n\n handle(state: any, event: any, next: NgxsNextPluginFn) {\n const matches = actionMatcher(event);\n const isInitAction = matches(InitState) || matches(UpdateState);\n\n // const layouts = snq(() => this.options.requirements.layouts.filter(layout => layout instanceof Type), []);\n if (isInitAction && !this.initialized) {\n let { routes, wrappers } = transformRoutes(this.router.config);\n routes = organizeRoutes(routes, wrappers);\n\n state = setValue(state, 'ConfigState', {\n ...(state.ConfigState && { ...state.ConfigState }),\n ...this.options,\n routes,\n });\n\n this.initialized = true;\n }\n\n return next(state, event);\n }\n}\n\nfunction transformRoutes(routes: Routes = [], wrappers: ABP.FullRoute[] = []): any {\n const abpRoutes: ABP.FullRoute[] = routes\n .filter(route => {\n return snq(() => route.data.routes.find(r => r.path === route.path), false);\n })\n .reduce((acc, val) => [...acc, ...val.data.routes], []);\n\n wrappers = abpRoutes.filter(ar => ar.wrapper);\n const transformed = [] as ABP.FullRoute[];\n routes\n .filter(route => route.component || route.loadChildren)\n .forEach(route => {\n const abpPackage = abpRoutes.find(abp => abp.path.toLowerCase() === route.path.toLowerCase());\n const { length } = transformed;\n\n if (abpPackage) {\n transformed.push(abpPackage);\n }\n\n if (transformed.length === length) {\n transformed.push({\n path: route.path,\n name: snq(() => route.data.routes.name, route.path),\n children: route.data.routes.children || [],\n } as ABP.FullRoute);\n }\n });\n\n return { routes: setUrls(transformed), wrappers };\n}\n\nfunction setUrls(routes: ABP.FullRoute[], parentUrl?: string): ABP.FullRoute[] {\n if (parentUrl) {\n // this if block using for only recursive call\n\n return routes.map(route => ({\n ...route,\n url: `${parentUrl}/${route.path}`,\n ...(route.children &&\n route.children.length && {\n children: setUrls(route.children, `${parentUrl}/${route.path}`),\n }),\n }));\n }\n\n return routes.map(route => ({\n ...route,\n url: `/${route.path}`,\n ...(route.children &&\n route.children.length && {\n children: setUrls(route.children, `/${route.path}`),\n }),\n }));\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigState } from '../states';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigService {\n constructor(private store: Store) {}\n\n getAll() {\n return this.store.selectSnapshot(ConfigState.getAll);\n }\n\n getOne(key: string) {\n return this.store.selectSnapshot(ConfigState.getOne(key));\n }\n\n getDeep(keys: string[] | string) {\n return this.store.selectSnapshot(ConfigState.getDeep(keys));\n }\n\n getSetting(key: string) {\n return this.store.selectSnapshot(ConfigState.getSetting(key));\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { uuid } from '../utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LazyLoadService {\n loadedLibraries: { [url: string]: ReplaySubject } = {};\n\n load(\n url: string,\n type: 'script' | 'style',\n content: string = '',\n targetQuery: string = 'body',\n position: InsertPosition = 'afterend',\n ): Observable {\n if (!url && !content) return;\n const key = url ? url.slice(url.lastIndexOf('/') + 1) : uuid();\n\n if (this.loadedLibraries[key]) {\n return this.loadedLibraries[key].asObservable();\n }\n\n this.loadedLibraries[key] = new ReplaySubject();\n\n let library;\n if (type === 'script') {\n library = document.createElement('script');\n library.type = 'text/javascript';\n if (url) {\n (library as HTMLScriptElement).src = url;\n }\n\n (library as HTMLScriptElement).text = content;\n } else if (url) {\n library = document.createElement('link');\n library.type = 'text/css';\n (library as HTMLLinkElement).rel = 'stylesheet';\n\n if (url) {\n (library as HTMLLinkElement).href = url;\n }\n } else {\n library = document.createElement('style');\n (library as HTMLStyleElement).textContent = content;\n }\n\n library.onload = () => {\n this.loadedLibraries[key].next();\n this.loadedLibraries[key].complete();\n };\n\n document.querySelector(targetQuery).insertAdjacentElement(position, library);\n\n return this.loadedLibraries[key].asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigState } from '../states';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class LocalizationService {\n constructor(private store: Store) {}\n\n get(keys: string, ...interpolateParams: string[]): Observable {\n return this.store.select(ConfigState.getCopy(keys, ...interpolateParams));\n }\n\n instant(keys: string, ...interpolateParams: string[]): string {\n return this.store.selectSnapshot(ConfigState.getCopy(keys, ...interpolateParams));\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Config } from '../models';\n\nexport function environmentFactory(environment: Config.Environment) {\n return {\n ...environment,\n };\n}\n\nexport function configFactory(config: Config.Requirements) {\n return {\n ...config,\n };\n}\n\nexport const ENVIRONMENT = new InjectionToken('ENVIRONMENT');\n\nexport const CONFIG = new InjectionToken('CONFIG');\n","import { Pipe, PipeTransform, OnDestroy } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigState } from '../states';\nimport { takeUntilDestroy } from '../utils';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n@Pipe({\n name: 'abpLocalization',\n pure: false, // required to update the value\n})\nexport class LocalizationPipe implements PipeTransform, OnDestroy {\n initialized: boolean = false;\n\n value: string;\n\n constructor(private store: Store) {}\n\n transform(value: string, ...interpolateParams: string[]): string {\n if (!this.initialized) {\n this.initialized = true;\n\n this.store\n .select(\n ConfigState.getCopy(\n value,\n ...interpolateParams.reduce((acc, val) => (Array.isArray(val) ? [...acc, ...val] : [...acc, val]), []),\n ),\n )\n .pipe(\n takeUntilDestroy(this),\n distinctUntilChanged(),\n )\n .subscribe(copy => (this.value = copy));\n }\n\n return this.value;\n }\n\n ngOnDestroy() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { NgxsRouterPluginModule } from '@ngxs/router-plugin';\nimport { NgxsStoragePluginModule } from '@ngxs/storage-plugin';\nimport { NgxsModule, NGXS_PLUGINS } from '@ngxs/store';\nimport { DynamicLayoutComponent } from './components/dynamic-layout.component';\nimport { RouterOutletComponent } from './components/router-outlet.component';\nimport { PermissionDirective } from './directives/permission.directive';\nimport { VisibilityDirective } from './directives/visibility.directive';\nimport { ApiInterceptor } from './interceptors/api.interceptor';\nimport { ABP } from './models/common';\nimport { LocalizationPipe } from './pipes/localization.pipe';\nimport { ConfigPlugin, NGXS_CONFIG_PLUGIN_OPTIONS } from './plugins/config.plugin';\nimport { ConfigState } from './states/config.state';\nimport { ProfileState } from './states/profile.state';\nimport { SessionState } from './states/session.state';\nimport { getInitialData } from './utils/initial-utils';\nimport { EllipsisDirective } from './directives/ellipsis.directive';\n\n@NgModule({\n imports: [\n NgxsModule.forFeature([ProfileState, SessionState, ConfigState]),\n NgxsStoragePluginModule.forRoot({ key: 'SessionState' }),\n NgxsRouterPluginModule.forRoot(),\n CommonModule,\n HttpClientModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n ],\n declarations: [\n RouterOutletComponent,\n DynamicLayoutComponent,\n PermissionDirective,\n VisibilityDirective,\n LocalizationPipe,\n EllipsisDirective,\n ],\n exports: [\n CommonModule,\n HttpClientModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n RouterOutletComponent,\n DynamicLayoutComponent,\n PermissionDirective,\n VisibilityDirective,\n EllipsisDirective,\n LocalizationPipe,\n ],\n providers: [LocalizationPipe],\n entryComponents: [RouterOutletComponent, DynamicLayoutComponent],\n})\nexport class CoreModule {\n static forRoot(options = {} as ABP.Root): ModuleWithProviders {\n return {\n ngModule: CoreModule,\n providers: [\n {\n provide: NGXS_PLUGINS,\n useClass: ConfigPlugin,\n multi: true,\n },\n {\n provide: NGXS_CONFIG_PLUGIN_OPTIONS,\n useValue: options,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: ApiInterceptor,\n multi: true,\n },\n {\n provide: APP_INITIALIZER,\n multi: true,\n deps: [Injector],\n useFactory: getInitialData,\n },\n ],\n };\n }\n}\n"],"names":["tslib_1.__decorate"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/core/fesm5/abp-ng.core.js b/npm/ng-packs/dist/core/fesm5/abp-ng.core.js new file mode 100644 index 00000000000..295a103a143 --- /dev/null +++ b/npm/ng-packs/dist/core/fesm5/abp-ng.core.js @@ -0,0 +1,1965 @@ +import { __rest, __assign, __decorate, __metadata, __spread } from 'tslib'; +import { Injectable, ɵɵdefineInjectable, ɵɵinject, Component, Directive, ChangeDetectorRef, ElementRef, Input, HostBinding, Optional, Renderer2, InjectionToken, Inject, Pipe, NgModule, APP_INITIALIZER, Injector } from '@angular/core'; +import { Router, NavigationEnd, RouterModule } from '@angular/router'; +import { Store, Action, Selector, State, createSelector, Select, actionMatcher, InitState, UpdateState, setValue, NgxsModule, NGXS_PLUGINS } from '@ngxs/store'; +import { NEVER, throwError, of, Subject, Observable, ReplaySubject } from 'rxjs'; +import { HttpClient, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; +import { take, catchError, tap, switchMap, takeUntil, finalize, distinctUntilChanged } from 'rxjs/operators'; +import snq from 'snq'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { Navigate, NgxsRouterPluginModule } from '@ngxs/router-plugin'; +import { CommonModule } from '@angular/common'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { NgxsStoragePluginModule } from '@ngxs/storage-plugin'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var PatchRouteByName = /** @class */ (function () { + function PatchRouteByName(name, newValue) { + this.name = name; + this.newValue = newValue; + } + PatchRouteByName.type = '[Config] Patch Route By Name'; + return PatchRouteByName; +}()); +var ConfigGetAppConfiguration = /** @class */ (function () { + function ConfigGetAppConfiguration() { + } + ConfigGetAppConfiguration.type = '[Config] Get App Configuration'; + return ConfigGetAppConfiguration; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var LoaderStart = /** @class */ (function () { + function LoaderStart(payload) { + this.payload = payload; + } + LoaderStart.type = '[Loader] Start'; + return LoaderStart; +}()); +var LoaderStop = /** @class */ (function () { + function LoaderStop(payload) { + this.payload = payload; + } + LoaderStop.type = '[Loader] Stop'; + return LoaderStop; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ProfileGet = /** @class */ (function () { + function ProfileGet() { + } + ProfileGet.type = '[Profile] Get'; + return ProfileGet; +}()); +var ProfileUpdate = /** @class */ (function () { + function ProfileUpdate(payload) { + this.payload = payload; + } + ProfileUpdate.type = '[Profile] Update'; + return ProfileUpdate; +}()); +var ProfileChangePassword = /** @class */ (function () { + function ProfileChangePassword(payload) { + this.payload = payload; + } + ProfileChangePassword.type = '[Profile] Change Password'; + return ProfileChangePassword; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var RestOccurError = /** @class */ (function () { + function RestOccurError(payload) { + this.payload = payload; + } + RestOccurError.type = '[Rest] Error'; + return RestOccurError; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var SessionSetLanguage = /** @class */ (function () { + function SessionSetLanguage(payload) { + this.payload = payload; + } + SessionSetLanguage.type = '[Session] Set Language'; + return SessionSetLanguage; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var RestService = /** @class */ (function () { + function RestService(http, store) { + this.http = http; + this.store = store; + } + /** + * @param {?} err + * @return {?} + */ + RestService.prototype.handleError = /** + * @param {?} err + * @return {?} + */ + function (err) { + this.store.dispatch(new RestOccurError(err)); + console.error(err); + return NEVER; + }; + /** + * @template T, R + * @param {?} request + * @param {?=} config + * @param {?=} api + * @return {?} + */ + RestService.prototype.request = /** + * @template T, R + * @param {?} request + * @param {?=} config + * @param {?=} api + * @return {?} + */ + function (request, config, api) { + var _this = this; + if (config === void 0) { config = {}; } + var _a = config.observe, observe = _a === void 0 ? "body" /* Body */ : _a, throwErr = config.throwErr; + /** @type {?} */ + var url = api || this.store.selectSnapshot(ConfigState.getApiUrl()) + request.url; + var method = request.method, options = __rest(request, ["method"]); + return this.http.request(method, url, (/** @type {?} */ (__assign({ observe: observe }, options)))).pipe(observe === "body" /* Body */ ? take(1) : null, catchError((/** + * @param {?} err + * @return {?} + */ + function (err) { + if (throwErr) { + return throwError(err); + } + return _this.handleError(err); + }))); + }; + RestService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + RestService.ctorParameters = function () { return [ + { type: HttpClient }, + { type: Store } + ]; }; + /** @nocollapse */ RestService.ngInjectableDef = ɵɵdefineInjectable({ factory: function RestService_Factory() { return new RestService(ɵɵinject(HttpClient), ɵɵinject(Store)); }, token: RestService, providedIn: "root" }); + return RestService; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ProfileService = /** @class */ (function () { + function ProfileService(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + ProfileService.prototype.get = /** + * @return {?} + */ + function () { + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/identity/my-profile', + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + ProfileService.prototype.update = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var request = { + method: 'PUT', + url: '/api/identity/my-profile', + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + ProfileService.prototype.changePassword = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var request = { + method: 'POST', + url: '/api/identity/my-profile/changePassword', + body: body, + }; + return this.rest.request(request); + }; + ProfileService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + ProfileService.ctorParameters = function () { return [ + { type: RestService } + ]; }; + /** @nocollapse */ ProfileService.ngInjectableDef = ɵɵdefineInjectable({ factory: function ProfileService_Factory() { return new ProfileService(ɵɵinject(RestService)); }, token: ProfileService, providedIn: "root" }); + return ProfileService; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ProfileState = /** @class */ (function () { + function ProfileState(profileService) { + this.profileService = profileService; + } + /** + * @param {?} __0 + * @return {?} + */ + ProfileState.getProfile = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var profile = _a.profile; + return profile; + }; + /** + * @param {?} __0 + * @return {?} + */ + ProfileState.prototype.profileGet = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var patchState = _a.patchState; + return this.profileService.get().pipe(tap((/** + * @param {?} profile + * @return {?} + */ + function (profile) { + return patchState({ + profile: profile, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + ProfileState.prototype.profileUpdate = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.profileService.update(payload).pipe(tap((/** + * @param {?} profile + * @return {?} + */ + function (profile) { + return patchState({ + profile: profile, + }); + }))); + }; + /** + * @param {?} _ + * @param {?} __1 + * @return {?} + */ + ProfileState.prototype.changePassword = /** + * @param {?} _ + * @param {?} __1 + * @return {?} + */ + function (_, _a) { + var payload = _a.payload; + return this.profileService.changePassword(payload); + }; + __decorate([ + Action(ProfileGet), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) + ], ProfileState.prototype, "profileGet", null); + __decorate([ + Action(ProfileUpdate), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, ProfileUpdate]), + __metadata("design:returntype", void 0) + ], ProfileState.prototype, "profileUpdate", null); + __decorate([ + Action(ProfileChangePassword), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, ProfileChangePassword]), + __metadata("design:returntype", void 0) + ], ProfileState.prototype, "changePassword", null); + __decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Object) + ], ProfileState, "getProfile", null); + ProfileState = __decorate([ + State({ + name: 'ProfileState', + defaults: (/** @type {?} */ ({})), + }), + __metadata("design:paramtypes", [ProfileService]) + ], ProfileState); + return ProfileState; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ApplicationConfigurationService = /** @class */ (function () { + function ApplicationConfigurationService(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + ApplicationConfigurationService.prototype.getConfiguration = /** + * @return {?} + */ + function () { + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/abp/application-configuration', + }; + return this.rest.request(request); + }; + ApplicationConfigurationService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + ApplicationConfigurationService.ctorParameters = function () { return [ + { type: RestService } + ]; }; + /** @nocollapse */ ApplicationConfigurationService.ngInjectableDef = ɵɵdefineInjectable({ factory: function ApplicationConfigurationService_Factory() { return new ApplicationConfigurationService(ɵɵinject(RestService)); }, token: ApplicationConfigurationService, providedIn: "root" }); + return ApplicationConfigurationService; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var SessionState = /** @class */ (function () { + function SessionState() { + } + /** + * @param {?} __0 + * @return {?} + */ + SessionState.getLanguage = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var language = _a.language; + return language; + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + SessionState.prototype.sessionSetLanguage = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + patchState({ + language: payload, + }); + }; + __decorate([ + Action(SessionSetLanguage), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, SessionSetLanguage]), + __metadata("design:returntype", void 0) + ], SessionState.prototype, "sessionSetLanguage", null); + __decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", String) + ], SessionState, "getLanguage", null); + SessionState = __decorate([ + State({ + name: 'SessionState', + defaults: (/** @type {?} */ ({})), + }), + __metadata("design:paramtypes", []) + ], SessionState); + return SessionState; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @param {?} routes + * @param {?=} wrappers + * @param {?=} parentNameArr + * @param {?=} parentName + * @return {?} + */ +function organizeRoutes(routes, wrappers, parentNameArr, parentName) { + if (wrappers === void 0) { wrappers = []; } + if (parentNameArr === void 0) { parentNameArr = (/** @type {?} */ ([])); } + if (parentName === void 0) { parentName = null; } + /** @type {?} */ + var filter = (/** + * @param {?} route + * @return {?} + */ + function (route) { + if (route.children) { + route.children = organizeRoutes(route.children, wrappers, parentNameArr, route.name); + } + if (route.parentName && route.parentName !== parentName) { + parentNameArr.push(route); + return false; + } + return true; + }); + if (parentName) { + // recursive block + return routes.filter(filter); + } + /** @type {?} */ + var filteredRoutes = routes.filter(filter); + if (parentNameArr.length) { + return sortRoutes(setChildRoute(__spread(filteredRoutes, wrappers), parentNameArr)); + } + return filteredRoutes; +} +/** + * @param {?} routes + * @param {?} parentNameArr + * @return {?} + */ +function setChildRoute(routes, parentNameArr) { + return routes + .map((/** + * @param {?} route + * @return {?} + */ + function (route) { + if (route.children && route.children.length) { + route.children = setChildRoute(route.children, parentNameArr); + } + /** @type {?} */ + var foundedChildren = parentNameArr.filter((/** + * @param {?} parent + * @return {?} + */ + function (parent) { return parent.parentName === route.name; })); + if (foundedChildren && foundedChildren.length) { + route.children = __spread((route.children || []), foundedChildren); + } + return route; + })) + .filter((/** + * @param {?} route + * @return {?} + */ + function (route) { return route.path || (route.children && route.children.length); })); +} +/** + * @param {?=} routes + * @return {?} + */ +function sortRoutes(routes) { + if (routes === void 0) { routes = []; } + if (!routes.length) + return []; + return routes + .sort((/** + * @param {?} a + * @param {?} b + * @return {?} + */ + function (a, b) { return a.order - b.order; })) + .map((/** + * @param {?} route + * @return {?} + */ + function (route) { + if (route.children && route.children.length) { + route.children = sortRoutes(route.children); + } + return route; + })); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ConfigState = /** @class */ (function () { + function ConfigState(appConfigurationService, store) { + this.appConfigurationService = appConfigurationService; + this.store = store; + } + ConfigState_1 = ConfigState; + /** + * @param {?} state + * @return {?} + */ + ConfigState.getAll = /** + * @param {?} state + * @return {?} + */ + function (state) { + return state; + }; + /** + * @param {?} key + * @return {?} + */ + ConfigState.getOne = /** + * @param {?} key + * @return {?} + */ + function (key) { + /** @type {?} */ + var selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return state[key]; + })); + return selector; + }; + /** + * @param {?} keys + * @return {?} + */ + ConfigState.getDeep = /** + * @param {?} keys + * @return {?} + */ + function (keys) { + if (typeof keys === 'string') { + keys = keys.split('.'); + } + if (!Array.isArray(keys)) { + throw new Error('The argument must be a dot string or an string array.'); + } + /** @type {?} */ + var selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return ((/** @type {?} */ (keys))).reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { + if (acc) { + return acc[val]; + } + return undefined; + }), state); + })); + return selector; + }; + /** + * @param {?=} key + * @return {?} + */ + ConfigState.getApiUrl = /** + * @param {?=} key + * @return {?} + */ + function (key) { + /** @type {?} */ + var selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return state.environment.apis[key || 'default'].url; + })); + return selector; + }; + /** + * @param {?} key + * @return {?} + */ + ConfigState.getSetting = /** + * @param {?} key + * @return {?} + */ + function (key) { + /** @type {?} */ + var selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + return snq((/** + * @return {?} + */ + function () { return state.setting.values[key]; })); + })); + return selector; + }; + /** + * @param {?=} condition + * @return {?} + */ + ConfigState.getGrantedPolicy = /** + * @param {?=} condition + * @return {?} + */ + function (condition) { + if (condition === void 0) { condition = ''; } + /** @type {?} */ + var keys = condition + .replace(/\(|\)|\!|\s/g, '') + .split(/\|\||&&/) + .filter((/** + * @param {?} key + * @return {?} + */ + function (key) { return key; })); + /** @type {?} */ + var selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + if (!keys.length) + return true; + /** @type {?} */ + var getPolicy = (/** + * @param {?} key + * @return {?} + */ + function (key) { return snq((/** + * @return {?} + */ + function () { return state.auth.grantedPolicies[key]; }), false); }); + if (keys.length > 1) { + keys.forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { + /** @type {?} */ + var value = getPolicy(key); + condition = condition.replace(key, value); + })); + // tslint:disable-next-line: no-eval + return eval("!!" + condition); + } + return getPolicy(condition); + })); + return selector; + }; + /** + * @param {?} key + * @param {...?} interpolateParams + * @return {?} + */ + ConfigState.getCopy = /** + * @param {?} key + * @param {...?} interpolateParams + * @return {?} + */ + function (key) { + var interpolateParams = []; + for (var _i = 1; _i < arguments.length; _i++) { + interpolateParams[_i - 1] = arguments[_i]; + } + if (!key) + key = ''; + /** @type {?} */ + var keys = (/** @type {?} */ (key.split('::'))); + /** @type {?} */ + var selector = createSelector([ConfigState_1], (/** + * @param {?} state + * @return {?} + */ + function (state) { + var defaultResourceName = state.environment.localization.defaultResourceName; + if (keys[0] === '') { + if (!defaultResourceName) { + throw new Error("Please check your environment. May you forget set defaultResourceName? \n Here is the example:\n { production: false,\n localization: {\n defaultResourceName: 'MyProjectName'\n }\n }"); + } + keys[0] = snq((/** + * @return {?} + */ + function () { return defaultResourceName; })); + } + /** @type {?} */ + var copy = keys.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { + if (acc) { + return acc[val]; + } + return undefined; + }), state.localization.values); + if (copy && interpolateParams && interpolateParams.length) { + interpolateParams.forEach((/** + * @param {?} param + * @param {?} index + * @return {?} + */ + function (param, index) { + copy = copy.replace("'{" + index + "}'", param); + })); + } + return copy || key; + })); + return selector; + }; + /** + * @param {?} __0 + * @return {?} + */ + ConfigState.prototype.addData = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var _this = this; + var patchState = _a.patchState, dispatch = _a.dispatch; + return this.appConfigurationService.getConfiguration().pipe(tap((/** + * @param {?} configuration + * @return {?} + */ + function (configuration) { + return patchState(__assign({}, configuration)); + })), switchMap((/** + * @param {?} configuration + * @return {?} + */ + function (configuration) { + return _this.store.selectSnapshot(SessionState.getLanguage) + ? of(null) + : dispatch(new SessionSetLanguage(snq((/** + * @return {?} + */ + function () { return configuration.setting.values['Abp.Localization.DefaultLanguage']; })))); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + ConfigState.prototype.patchRoute = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState, getState = _a.getState; + var name = _b.name, newValue = _b.newValue; + /** @type {?} */ + var routes = getState().routes; + /** @type {?} */ + var index = routes.findIndex((/** + * @param {?} route + * @return {?} + */ + function (route) { return route.name === name; })); + routes = patchRouteDeep(routes, name, newValue); + return patchState({ + routes: routes, + }); + }; + var ConfigState_1; + __decorate([ + Action(ConfigGetAppConfiguration), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) + ], ConfigState.prototype, "addData", null); + __decorate([ + Action(PatchRouteByName), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, PatchRouteByName]), + __metadata("design:returntype", void 0) + ], ConfigState.prototype, "patchRoute", null); + __decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) + ], ConfigState, "getAll", null); + ConfigState = ConfigState_1 = __decorate([ + State({ + name: 'ConfigState', + defaults: (/** @type {?} */ ({})), + }), + __metadata("design:paramtypes", [ApplicationConfigurationService, Store]) + ], ConfigState); + return ConfigState; +}()); +/** + * @param {?} routes + * @param {?} name + * @param {?} newValue + * @param {?=} parentUrl + * @return {?} + */ +function patchRouteDeep(routes, name, newValue, parentUrl) { + if (parentUrl === void 0) { parentUrl = null; } + routes = routes.map((/** + * @param {?} route + * @return {?} + */ + function (route) { + if (route.name === name) { + if (newValue.path) { + newValue.url = parentUrl + "/" + newValue.path; + } + if (newValue.children && newValue.children.length) { + newValue.children = newValue.children.map((/** + * @param {?} child + * @return {?} + */ + function (child) { return (__assign({}, child, { url: parentUrl + "/" + route.path + "/" + child.path })); })); + } + return __assign({}, route, newValue); + } + else if (route.children && route.children.length) { + route.children = patchRouteDeep(route.children, name, newValue, (parentUrl || '/') + route.path); + } + return route; + })); + if (parentUrl) { + // recursive block + return routes; + } + return organizeRoutes(routes); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @param {?=} a + * @return {?} + */ +function uuid(a) { + return a + ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16) + : ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @param {?} injector + * @return {?} + */ +function getInitialData(injector) { + /** @type {?} */ + var fn = (/** + * @return {?} + */ + function () { + /** @type {?} */ + var store = injector.get(Store); + return store.dispatch(new ConfigGetAppConfiguration()).toPromise(); + }); + return fn; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @param {?} value + * @return {?} + */ +function isFunction(value) { + return typeof value === 'function'; +} +/** @type {?} */ +var takeUntilDestroy = (/** + * @param {?} componentInstance + * @param {?=} destroyMethodName + * @return {?} + */ +function (componentInstance, destroyMethodName) { + if (destroyMethodName === void 0) { destroyMethodName = 'ngOnDestroy'; } + return (/** + * @template T + * @param {?} source + * @return {?} + */ + function (source) { + /** @type {?} */ + var originalDestroy = componentInstance[destroyMethodName]; + if (isFunction(originalDestroy) === false) { + throw new Error(componentInstance.constructor.name + " is using untilDestroyed but doesn't implement " + destroyMethodName); + } + if (!componentInstance['__takeUntilDestroy']) { + componentInstance['__takeUntilDestroy'] = new Subject(); + componentInstance[destroyMethodName] = (/** + * @return {?} + */ + function () { + isFunction(originalDestroy) && originalDestroy.apply(this, arguments); + componentInstance['__takeUntilDestroy'].next(true); + componentInstance['__takeUntilDestroy'].complete(); + }); + } + return source.pipe(takeUntil(componentInstance['__takeUntilDestroy'])); + }); +}); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var DynamicLayoutComponent = /** @class */ (function () { + function DynamicLayoutComponent(router, store) { + var _this = this; + this.router = router; + this.store = store; + this.router.events.pipe(takeUntilDestroy(this)).subscribe((/** + * @param {?} event + * @return {?} + */ + function (event) { + if (event instanceof NavigationEnd) { + var segments = _this.router.parseUrl(event.url).root.children.primary.segments; + var _a = _this.store.selectSnapshot(ConfigState.getAll), layouts = _a.requirements.layouts, routes = _a.routes; + /** @type {?} */ + var layout_1 = findLayout(segments, routes); + _this.layout = layouts.filter((/** + * @param {?} l + * @return {?} + */ + function (l) { return !!l; })).find((/** + * @param {?} l + * @return {?} + */ + function (l) { return snq((/** + * @return {?} + */ + function () { return l.type.toLowerCase().indexOf(layout_1); }), -1) > -1; })); + } + })); + } + /** + * @return {?} + */ + DynamicLayoutComponent.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { }; + DynamicLayoutComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-dynamic-layout', + template: "\n \n\n \n \n " + }] } + ]; + /** @nocollapse */ + DynamicLayoutComponent.ctorParameters = function () { return [ + { type: Router }, + { type: Store } + ]; }; + __decorate([ + Select(ConfigState.getOne('requirements')), + __metadata("design:type", Observable) + ], DynamicLayoutComponent.prototype, "requirements$", void 0); + return DynamicLayoutComponent; +}()); +/** + * @param {?} segments + * @param {?} routes + * @return {?} + */ +function findLayout(segments, routes) { + /** @type {?} */ + var layout = "empty" /* empty */; + /** @type {?} */ + var route = routes + .reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { return (val.wrapper ? __spread(acc, val.children) : __spread(acc, [val])); }), []) + .find((/** + * @param {?} r + * @return {?} + */ + function (r) { return r.path === segments[0].path; })); + if (route) { + if (route.layout) { + layout = route.layout; + } + if (route.children && route.children.length) { + /** @type {?} */ + var child = route.children.find((/** + * @param {?} c + * @return {?} + */ + function (c) { return c.path === segments[1].path; })); + if (child.layout) { + layout = child.layout; + } + } + } + return layout; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var RouterOutletComponent = /** @class */ (function () { + function RouterOutletComponent() { + } + RouterOutletComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-router-outlet', + template: "\n \n " + }] } + ]; + return RouterOutletComponent; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var EllipsisDirective = /** @class */ (function () { + function EllipsisDirective(cdRef, elRef) { + this.cdRef = cdRef; + this.elRef = elRef; + this.enabled = true; + } + Object.defineProperty(EllipsisDirective.prototype, "class", { + get: /** + * @return {?} + */ + function () { + return this.enabled; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(EllipsisDirective.prototype, "maxWidth", { + get: /** + * @return {?} + */ + function () { + return this.enabled ? this.witdh || '180px' : undefined; + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + EllipsisDirective.prototype.ngAfterContentInit = /** + * @return {?} + */ + function () { + var _this = this; + setTimeout((/** + * @return {?} + */ + function () { + /** @type {?} */ + var title = _this.title; + _this.title = title || ((/** @type {?} */ (_this.elRef.nativeElement))).innerText; + if (_this.title !== title) { + _this.cdRef.detectChanges(); + } + }), 0); + }; + EllipsisDirective.decorators = [ + { type: Directive, args: [{ + selector: '[abpEllipsis]', + },] } + ]; + /** @nocollapse */ + EllipsisDirective.ctorParameters = function () { return [ + { type: ChangeDetectorRef }, + { type: ElementRef } + ]; }; + EllipsisDirective.propDecorators = { + witdh: [{ type: Input, args: ['abpEllipsis',] }], + title: [{ type: HostBinding, args: ['title',] }, { type: Input }], + enabled: [{ type: Input, args: ['abpEllipsisEnabled',] }], + class: [{ type: HostBinding, args: ['class.abp-ellipsis',] }], + maxWidth: [{ type: HostBinding, args: ['style.max-width',] }] + }; + return EllipsisDirective; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var PermissionDirective = /** @class */ (function () { + function PermissionDirective(elRef, renderer, store) { + this.elRef = elRef; + this.renderer = renderer; + this.store = store; + } + /** + * @return {?} + */ + PermissionDirective.prototype.ngOnInit = /** + * @return {?} + */ + function () { + var _this = this; + if (this.condition) { + this.store + .select(ConfigState.getGrantedPolicy(this.condition)) + .pipe(takeUntilDestroy(this)) + .subscribe((/** + * @param {?} isGranted + * @return {?} + */ + function (isGranted) { + if (!isGranted) { + _this.renderer.removeChild(((/** @type {?} */ (_this.elRef.nativeElement))).parentElement, _this.elRef.nativeElement); + } + })); + } + }; + /** + * @return {?} + */ + PermissionDirective.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { }; + PermissionDirective.decorators = [ + { type: Directive, args: [{ + selector: '[abpPermission]', + },] } + ]; + /** @nocollapse */ + PermissionDirective.ctorParameters = function () { return [ + { type: ElementRef, decorators: [{ type: Optional }] }, + { type: Renderer2 }, + { type: Store } + ]; }; + PermissionDirective.propDecorators = { + condition: [{ type: Input, args: ['abpPermission',] }] + }; + return PermissionDirective; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var VisibilityDirective = /** @class */ (function () { + function VisibilityDirective(elRef, renderer) { + this.elRef = elRef; + this.renderer = renderer; + this.completed$ = new Subject(); + } + /** + * @return {?} + */ + VisibilityDirective.prototype.ngAfterViewInit = /** + * @return {?} + */ + function () { + var _this = this; + /** @type {?} */ + var observer = new MutationObserver((/** + * @param {?} mutations + * @return {?} + */ + function (mutations) { + mutations.forEach((/** + * @param {?} mutation + * @return {?} + */ + function (mutation) { + if (!mutation.target) + return; + /** @type {?} */ + var htmlNodes = snq((/** + * @return {?} + */ + function () { return Array.from(mutation.target.childNodes).filter((/** + * @param {?} node + * @return {?} + */ + function (node) { return node instanceof HTMLElement; })); }), []); + if (!htmlNodes.length) { + _this.renderer.removeChild(_this.elRef.nativeElement.parentElement, _this.elRef.nativeElement); + _this.disconnect(); + } + else { + setTimeout((/** + * @return {?} + */ + function () { + _this.disconnect(); + }), 0); + } + })); + })); + observer.observe(this.focusedElement, { + childList: true, + }); + this.completed$.subscribe((/** + * @return {?} + */ + function () { return observer.disconnect(); })); + }; + /** + * @return {?} + */ + VisibilityDirective.prototype.disconnect = /** + * @return {?} + */ + function () { + this.completed$.next(); + this.completed$.complete(); + }; + VisibilityDirective.decorators = [ + { type: Directive, args: [{ + selector: '[abpVisibility]', + },] } + ]; + /** @nocollapse */ + VisibilityDirective.ctorParameters = function () { return [ + { type: ElementRef, decorators: [{ type: Optional }] }, + { type: Renderer2 } + ]; }; + VisibilityDirective.propDecorators = { + focusedElement: [{ type: Input, args: ['abpVisibility',] }] + }; + return VisibilityDirective; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var AuthGuard = /** @class */ (function () { + function AuthGuard(oauthService, store) { + this.oauthService = oauthService; + this.store = store; + } + /** + * @param {?} _ + * @param {?} state + * @return {?} + */ + AuthGuard.prototype.canActivate = /** + * @param {?} _ + * @param {?} state + * @return {?} + */ + function (_, state) { + /** @type {?} */ + var hasValidAccessToken = this.oauthService.hasValidAccessToken(); + if (hasValidAccessToken) { + return hasValidAccessToken; + } + this.store.dispatch(new Navigate(['/account/login'], null, { state: { redirectUrl: state.url } })); + return false; + }; + AuthGuard.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + AuthGuard.ctorParameters = function () { return [ + { type: OAuthService }, + { type: Store } + ]; }; + /** @nocollapse */ AuthGuard.ngInjectableDef = ɵɵdefineInjectable({ factory: function AuthGuard_Factory() { return new AuthGuard(ɵɵinject(OAuthService), ɵɵinject(Store)); }, token: AuthGuard, providedIn: "root" }); + return AuthGuard; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var PermissionGuard = /** @class */ (function () { + function PermissionGuard(store) { + this.store = store; + } + /** + * @param {?} __0 + * @return {?} + */ + PermissionGuard.prototype.canActivate = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var data = _a.data; + /** @type {?} */ + var resource = (/** @type {?} */ (data.requiredPolicy)); + return this.store.select(ConfigState.getGrantedPolicy(resource)); + }; + PermissionGuard.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + PermissionGuard.ctorParameters = function () { return [ + { type: Store } + ]; }; + /** @nocollapse */ PermissionGuard.ngInjectableDef = ɵɵdefineInjectable({ factory: function PermissionGuard_Factory() { return new PermissionGuard(ɵɵinject(Store)); }, token: PermissionGuard, providedIn: "root" }); + return PermissionGuard; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ApiInterceptor = /** @class */ (function () { + function ApiInterceptor(oAuthService, store) { + this.oAuthService = oAuthService; + this.store = store; + } + /** + * @param {?} request + * @param {?} next + * @return {?} + */ + ApiInterceptor.prototype.intercept = /** + * @param {?} request + * @param {?} next + * @return {?} + */ + function (request, next) { + var _this = this; + this.store.dispatch(new LoaderStart(request)); + /** @type {?} */ + var headers = (/** @type {?} */ ({})); + /** @type {?} */ + var token = this.oAuthService.getAccessToken(); + if (!request.headers.has('Authorization') && token) { + headers['Authorization'] = "Bearer " + token; + } + /** @type {?} */ + var lang = this.store.selectSnapshot(SessionState.getLanguage); + if (!request.headers.has('Accept-Language') && lang) { + headers['Accept-Language'] = lang; + } + return next + .handle(request.clone({ + setHeaders: headers, + })) + .pipe(finalize((/** + * @return {?} + */ + function () { return _this.store.dispatch(new LoaderStop(request)); }))); + }; + ApiInterceptor.decorators = [ + { type: Injectable } + ]; + /** @nocollapse */ + ApiInterceptor.ctorParameters = function () { return [ + { type: OAuthService }, + { type: Store } + ]; }; + return ApiInterceptor; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var Rest; +(function (Rest) { + /** + * @record + */ + function Config() { } + Rest.Config = Config; + /** + * @record + * @template T + */ + function Request() { } + Rest.Request = Request; +})(Rest || (Rest = {})); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var NGXS_CONFIG_PLUGIN_OPTIONS = new InjectionToken('NGXS_CONFIG_PLUGIN_OPTIONS'); +var ConfigPlugin = /** @class */ (function () { + function ConfigPlugin(options, router) { + this.options = options; + this.router = router; + this.initialized = false; + } + /** + * @param {?} state + * @param {?} event + * @param {?} next + * @return {?} + */ + ConfigPlugin.prototype.handle = /** + * @param {?} state + * @param {?} event + * @param {?} next + * @return {?} + */ + function (state, event, next) { + /** @type {?} */ + var matches = actionMatcher(event); + /** @type {?} */ + var isInitAction = matches(InitState) || matches(UpdateState); + // const layouts = snq(() => this.options.requirements.layouts.filter(layout => layout instanceof Type), []); + if (isInitAction && !this.initialized) { + var _a = transformRoutes(this.router.config), routes = _a.routes, wrappers = _a.wrappers; + routes = organizeRoutes(routes, wrappers); + state = setValue(state, 'ConfigState', __assign({}, (state.ConfigState && __assign({}, state.ConfigState)), this.options, { routes: routes })); + this.initialized = true; + } + return next(state, event); + }; + ConfigPlugin.decorators = [ + { type: Injectable } + ]; + /** @nocollapse */ + ConfigPlugin.ctorParameters = function () { return [ + { type: undefined, decorators: [{ type: Inject, args: [NGXS_CONFIG_PLUGIN_OPTIONS,] }] }, + { type: Router } + ]; }; + return ConfigPlugin; +}()); +/** + * @param {?=} routes + * @param {?=} wrappers + * @return {?} + */ +function transformRoutes(routes, wrappers) { + if (routes === void 0) { routes = []; } + if (wrappers === void 0) { wrappers = []; } + /** @type {?} */ + var abpRoutes = routes + .filter((/** + * @param {?} route + * @return {?} + */ + function (route) { + return snq((/** + * @return {?} + */ + function () { return route.data.routes.find((/** + * @param {?} r + * @return {?} + */ + function (r) { return r.path === route.path; })); }), false); + })) + .reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { return __spread(acc, val.data.routes); }), []); + wrappers = abpRoutes.filter((/** + * @param {?} ar + * @return {?} + */ + function (ar) { return ar.wrapper; })); + /** @type {?} */ + var transformed = (/** @type {?} */ ([])); + routes + .filter((/** + * @param {?} route + * @return {?} + */ + function (route) { return route.component || route.loadChildren; })) + .forEach((/** + * @param {?} route + * @return {?} + */ + function (route) { + /** @type {?} */ + var abpPackage = abpRoutes.find((/** + * @param {?} abp + * @return {?} + */ + function (abp) { return abp.path.toLowerCase() === route.path.toLowerCase(); })); + var length = transformed.length; + if (abpPackage) { + transformed.push(abpPackage); + } + if (transformed.length === length) { + transformed.push((/** @type {?} */ ({ + path: route.path, + name: snq((/** + * @return {?} + */ + function () { return route.data.routes.name; }), route.path), + children: route.data.routes.children || [], + }))); + } + })); + return { routes: setUrls(transformed), wrappers: wrappers }; +} +/** + * @param {?} routes + * @param {?=} parentUrl + * @return {?} + */ +function setUrls(routes, parentUrl) { + if (parentUrl) { + // this if block using for only recursive call + return routes.map((/** + * @param {?} route + * @return {?} + */ + function (route) { return (__assign({}, route, { url: parentUrl + "/" + route.path }, (route.children && + route.children.length && { + children: setUrls(route.children, parentUrl + "/" + route.path), + }))); })); + } + return routes.map((/** + * @param {?} route + * @return {?} + */ + function (route) { return (__assign({}, route, { url: "/" + route.path }, (route.children && + route.children.length && { + children: setUrls(route.children, "/" + route.path), + }))); })); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ConfigService = /** @class */ (function () { + function ConfigService(store) { + this.store = store; + } + /** + * @return {?} + */ + ConfigService.prototype.getAll = /** + * @return {?} + */ + function () { + return this.store.selectSnapshot(ConfigState.getAll); + }; + /** + * @param {?} key + * @return {?} + */ + ConfigService.prototype.getOne = /** + * @param {?} key + * @return {?} + */ + function (key) { + return this.store.selectSnapshot(ConfigState.getOne(key)); + }; + /** + * @param {?} keys + * @return {?} + */ + ConfigService.prototype.getDeep = /** + * @param {?} keys + * @return {?} + */ + function (keys) { + return this.store.selectSnapshot(ConfigState.getDeep(keys)); + }; + /** + * @param {?} key + * @return {?} + */ + ConfigService.prototype.getSetting = /** + * @param {?} key + * @return {?} + */ + function (key) { + return this.store.selectSnapshot(ConfigState.getSetting(key)); + }; + ConfigService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + ConfigService.ctorParameters = function () { return [ + { type: Store } + ]; }; + /** @nocollapse */ ConfigService.ngInjectableDef = ɵɵdefineInjectable({ factory: function ConfigService_Factory() { return new ConfigService(ɵɵinject(Store)); }, token: ConfigService, providedIn: "root" }); + return ConfigService; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var LazyLoadService = /** @class */ (function () { + function LazyLoadService() { + this.loadedLibraries = {}; + } + /** + * @param {?} url + * @param {?} type + * @param {?=} content + * @param {?=} targetQuery + * @param {?=} position + * @return {?} + */ + LazyLoadService.prototype.load = /** + * @param {?} url + * @param {?} type + * @param {?=} content + * @param {?=} targetQuery + * @param {?=} position + * @return {?} + */ + function (url, type, content, targetQuery, position) { + var _this = this; + if (content === void 0) { content = ''; } + if (targetQuery === void 0) { targetQuery = 'body'; } + if (position === void 0) { position = 'afterend'; } + if (!url && !content) + return; + /** @type {?} */ + var key = url ? url.slice(url.lastIndexOf('/') + 1) : uuid(); + if (this.loadedLibraries[key]) { + return this.loadedLibraries[key].asObservable(); + } + this.loadedLibraries[key] = new ReplaySubject(); + /** @type {?} */ + var library; + if (type === 'script') { + library = document.createElement('script'); + library.type = 'text/javascript'; + if (url) { + ((/** @type {?} */ (library))).src = url; + } + ((/** @type {?} */ (library))).text = content; + } + else if (url) { + library = document.createElement('link'); + library.type = 'text/css'; + ((/** @type {?} */ (library))).rel = 'stylesheet'; + if (url) { + ((/** @type {?} */ (library))).href = url; + } + } + else { + library = document.createElement('style'); + ((/** @type {?} */ (library))).textContent = content; + } + library.onload = (/** + * @return {?} + */ + function () { + _this.loadedLibraries[key].next(); + _this.loadedLibraries[key].complete(); + }); + document.querySelector(targetQuery).insertAdjacentElement(position, library); + return this.loadedLibraries[key].asObservable(); + }; + LazyLoadService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ LazyLoadService.ngInjectableDef = ɵɵdefineInjectable({ factory: function LazyLoadService_Factory() { return new LazyLoadService(); }, token: LazyLoadService, providedIn: "root" }); + return LazyLoadService; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var LocalizationService = /** @class */ (function () { + function LocalizationService(store) { + this.store = store; + } + /** + * @param {?} keys + * @param {...?} interpolateParams + * @return {?} + */ + LocalizationService.prototype.get = /** + * @param {?} keys + * @param {...?} interpolateParams + * @return {?} + */ + function (keys) { + var interpolateParams = []; + for (var _i = 1; _i < arguments.length; _i++) { + interpolateParams[_i - 1] = arguments[_i]; + } + return this.store.select(ConfigState.getCopy.apply(ConfigState, __spread([keys], interpolateParams))); + }; + /** + * @param {?} keys + * @param {...?} interpolateParams + * @return {?} + */ + LocalizationService.prototype.instant = /** + * @param {?} keys + * @param {...?} interpolateParams + * @return {?} + */ + function (keys) { + var interpolateParams = []; + for (var _i = 1; _i < arguments.length; _i++) { + interpolateParams[_i - 1] = arguments[_i]; + } + return this.store.selectSnapshot(ConfigState.getCopy.apply(ConfigState, __spread([keys], interpolateParams))); + }; + LocalizationService.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] } + ]; + /** @nocollapse */ + LocalizationService.ctorParameters = function () { return [ + { type: Store } + ]; }; + /** @nocollapse */ LocalizationService.ngInjectableDef = ɵɵdefineInjectable({ factory: function LocalizationService_Factory() { return new LocalizationService(ɵɵinject(Store)); }, token: LocalizationService, providedIn: "root" }); + return LocalizationService; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @param {?} environment + * @return {?} + */ +function environmentFactory(environment) { + return __assign({}, environment); +} +/** + * @param {?} config + * @return {?} + */ +function configFactory(config) { + return __assign({}, config); +} +/** @type {?} */ +var ENVIRONMENT = new InjectionToken('ENVIRONMENT'); +/** @type {?} */ +var CONFIG = new InjectionToken('CONFIG'); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var LocalizationPipe = /** @class */ (function () { + function LocalizationPipe(store) { + this.store = store; + this.initialized = false; + } + /** + * @param {?} value + * @param {...?} interpolateParams + * @return {?} + */ + LocalizationPipe.prototype.transform = /** + * @param {?} value + * @param {...?} interpolateParams + * @return {?} + */ + function (value) { + var _this = this; + var interpolateParams = []; + for (var _i = 1; _i < arguments.length; _i++) { + interpolateParams[_i - 1] = arguments[_i]; + } + if (!this.initialized) { + this.initialized = true; + this.store + .select(ConfigState.getCopy.apply(ConfigState, __spread([value], interpolateParams.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { return (Array.isArray(val) ? __spread(acc, val) : __spread(acc, [val])); }), [])))) + .pipe(takeUntilDestroy(this), distinctUntilChanged()) + .subscribe((/** + * @param {?} copy + * @return {?} + */ + function (copy) { return (_this.value = copy); })); + } + return this.value; + }; + /** + * @return {?} + */ + LocalizationPipe.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { }; + LocalizationPipe.decorators = [ + { type: Pipe, args: [{ + name: 'abpLocalization', + pure: false, + },] } + ]; + /** @nocollapse */ + LocalizationPipe.ctorParameters = function () { return [ + { type: Store } + ]; }; + return LocalizationPipe; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var CoreModule = /** @class */ (function () { + function CoreModule() { + } + /** + * @param {?=} options + * @return {?} + */ + CoreModule.forRoot = /** + * @param {?=} options + * @return {?} + */ + function (options) { + if (options === void 0) { options = (/** @type {?} */ ({})); } + return { + ngModule: CoreModule, + providers: [ + { + provide: NGXS_PLUGINS, + useClass: ConfigPlugin, + multi: true, + }, + { + provide: NGXS_CONFIG_PLUGIN_OPTIONS, + useValue: options, + }, + { + provide: HTTP_INTERCEPTORS, + useClass: ApiInterceptor, + multi: true, + }, + { + provide: APP_INITIALIZER, + multi: true, + deps: [Injector], + useFactory: getInitialData, + }, + ], + }; + }; + CoreModule.decorators = [ + { type: NgModule, args: [{ + imports: [ + NgxsModule.forFeature([ProfileState, SessionState, ConfigState]), + NgxsStoragePluginModule.forRoot({ key: 'SessionState' }), + NgxsRouterPluginModule.forRoot(), + CommonModule, + HttpClientModule, + FormsModule, + ReactiveFormsModule, + RouterModule, + ], + declarations: [ + RouterOutletComponent, + DynamicLayoutComponent, + PermissionDirective, + VisibilityDirective, + LocalizationPipe, + EllipsisDirective, + ], + exports: [ + CommonModule, + HttpClientModule, + FormsModule, + ReactiveFormsModule, + RouterModule, + RouterOutletComponent, + DynamicLayoutComponent, + PermissionDirective, + VisibilityDirective, + EllipsisDirective, + LocalizationPipe, + ], + providers: [LocalizationPipe], + entryComponents: [RouterOutletComponent, DynamicLayoutComponent], + },] } + ]; + return CoreModule; +}()); + +export { ApiInterceptor, ApplicationConfigurationService, AuthGuard, CONFIG, ConfigGetAppConfiguration, ConfigPlugin, ConfigService, ConfigState, CoreModule, DynamicLayoutComponent, ENVIRONMENT, EllipsisDirective, LazyLoadService, LoaderStart, LoaderStop, LocalizationService, NGXS_CONFIG_PLUGIN_OPTIONS, PatchRouteByName, PermissionDirective, PermissionGuard, ProfileChangePassword, ProfileGet, ProfileService, ProfileState, ProfileUpdate, Rest, RestOccurError, RestService, RouterOutletComponent, SessionSetLanguage, SessionState, VisibilityDirective, configFactory, environmentFactory, getInitialData, organizeRoutes, setChildRoute, sortRoutes, takeUntilDestroy, uuid, ProfileState as ɵa, ProfileService as ɵb, RestService as ɵc, ProfileGet as ɵd, ProfileUpdate as ɵe, ProfileChangePassword as ɵf, SessionState as ɵh, SessionSetLanguage as ɵi, ConfigState as ɵj, ApplicationConfigurationService as ɵk, PatchRouteByName as ɵl, ConfigGetAppConfiguration as ɵm, RouterOutletComponent as ɵn, DynamicLayoutComponent as ɵo, ConfigState as ɵp, PermissionDirective as ɵq, VisibilityDirective as ɵr, LocalizationPipe as ɵs, EllipsisDirective as ɵt, NGXS_CONFIG_PLUGIN_OPTIONS as ɵu, ConfigPlugin as ɵv, ApiInterceptor as ɵx, getInitialData as ɵy }; +//# sourceMappingURL=abp-ng.core.js.map diff --git a/npm/ng-packs/dist/core/fesm5/abp-ng.core.js.map b/npm/ng-packs/dist/core/fesm5/abp-ng.core.js.map new file mode 100644 index 00000000000..ce1530adfb4 --- /dev/null +++ b/npm/ng-packs/dist/core/fesm5/abp-ng.core.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.core.js","sources":["ng://@abp/ng.core/lib/actions/config.actions.ts","ng://@abp/ng.core/lib/actions/loader.actions.ts","ng://@abp/ng.core/lib/actions/profile.actions.ts","ng://@abp/ng.core/lib/actions/rest.actions.ts","ng://@abp/ng.core/lib/actions/session.actions.ts","ng://@abp/ng.core/lib/services/rest.service.ts","ng://@abp/ng.core/lib/services/profile.service.ts","ng://@abp/ng.core/lib/states/profile.state.ts","ng://@abp/ng.core/lib/services/application-configuration.service.ts","ng://@abp/ng.core/lib/states/session.state.ts","ng://@abp/ng.core/lib/utils/route-utils.ts","ng://@abp/ng.core/lib/states/config.state.ts","ng://@abp/ng.core/lib/utils/generator-utils.ts","ng://@abp/ng.core/lib/utils/initial-utils.ts","ng://@abp/ng.core/lib/utils/rxjs-utils.ts","ng://@abp/ng.core/lib/components/dynamic-layout.component.ts","ng://@abp/ng.core/lib/components/router-outlet.component.ts","ng://@abp/ng.core/lib/directives/ellipsis.directive.ts","ng://@abp/ng.core/lib/directives/permission.directive.ts","ng://@abp/ng.core/lib/directives/visibility.directive.ts","ng://@abp/ng.core/lib/guards/auth.guard.ts","ng://@abp/ng.core/lib/guards/permission.guard.ts","ng://@abp/ng.core/lib/interceptors/api.interceptor.ts","ng://@abp/ng.core/lib/models/rest.ts","ng://@abp/ng.core/lib/plugins/config.plugin.ts","ng://@abp/ng.core/lib/services/config.service.ts","ng://@abp/ng.core/lib/services/lazy-load.service.ts","ng://@abp/ng.core/lib/services/localization.service.ts","ng://@abp/ng.core/lib/tokens/common.token.ts","ng://@abp/ng.core/lib/pipes/localization.pipe.ts","ng://@abp/ng.core/lib/core.module.ts"],"sourcesContent":["import { ABP } from '../models';\n\nexport class PatchRouteByName {\n static readonly type = '[Config] Patch Route By Name';\n constructor(public name: string, public newValue: Partial) {}\n}\n\nexport class ConfigGetAppConfiguration {\n static readonly type = '[Config] Get App Configuration';\n}\n","import { HttpRequest } from '@angular/common/http';\n\nexport class LoaderStart {\n static readonly type = '[Loader] Start';\n constructor(public payload: HttpRequest) {}\n}\n\nexport class LoaderStop {\n static readonly type = '[Loader] Stop';\n constructor(public payload: HttpRequest) {}\n}\n","import { Profile } from '../models';\n\nexport class ProfileGet {\n static readonly type = '[Profile] Get';\n}\n\nexport class ProfileUpdate {\n static readonly type = '[Profile] Update';\n constructor(public payload: Profile.Response) {}\n}\n\nexport class ProfileChangePassword {\n static readonly type = '[Profile] Change Password';\n constructor(public payload: Profile.ChangePasswordRequest) {}\n}\n","import { HttpErrorResponse } from '@angular/common/http';\n\nexport class RestOccurError {\n static readonly type = '[Rest] Error';\n constructor(public payload: HttpErrorResponse | any) {}\n}\n","export class SessionSetLanguage {\n static readonly type = '[Session] Set Language';\n constructor(public payload: string) {}\n}\n","import { HttpClient, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { NEVER, Observable, throwError } from 'rxjs';\nimport { catchError, take } from 'rxjs/operators';\nimport { Rest } from '../models/rest';\nimport { ConfigState } from '../states';\nimport { RestOccurError } from '../actions';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RestService {\n constructor(private http: HttpClient, private store: Store) {}\n\n handleError(err: any): Observable {\n this.store.dispatch(new RestOccurError(err));\n console.error(err);\n return NEVER;\n }\n\n request(request: HttpRequest | Rest.Request, config: Rest.Config = {}, api?: string): Observable {\n const { observe = Rest.Observe.Body, throwErr } = config;\n const url = api || this.store.selectSnapshot(ConfigState.getApiUrl()) + request.url;\n const { method, ...options } = request;\n return this.http.request(method, url, { observe, ...options } as any).pipe(\n observe === Rest.Observe.Body ? take(1) : null,\n catchError(err => {\n if (throwErr) {\n return throwError(err);\n }\n\n return this.handleError(err);\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RestService } from './rest.service';\nimport { Profile, Rest } from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProfileService {\n constructor(private rest: RestService) {}\n\n get(): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/identity/my-profile',\n };\n\n return this.rest.request(request);\n }\n\n update(body: Profile.Response): Observable {\n const request: Rest.Request = {\n method: 'PUT',\n url: '/api/identity/my-profile',\n body,\n };\n\n return this.rest.request(request);\n }\n\n changePassword(body: Profile.ChangePasswordRequest): Observable {\n const request: Rest.Request = {\n method: 'POST',\n url: '/api/identity/my-profile/changePassword',\n body,\n };\n\n return this.rest.request(request);\n }\n}\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\nimport { ProfileGet, ProfileChangePassword, ProfileUpdate } from '../actions/profile.actions';\nimport { Profile } from '../models/profile';\nimport { ProfileService } from '../services/profile.service';\nimport { tap } from 'rxjs/operators';\n\n@State({\n name: 'ProfileState',\n defaults: {} as Profile.State,\n})\nexport class ProfileState {\n @Selector()\n static getProfile({ profile }: Profile.State): Profile.Response {\n return profile;\n }\n\n constructor(private profileService: ProfileService) {}\n\n @Action(ProfileGet)\n profileGet({ patchState }: StateContext) {\n return this.profileService.get().pipe(\n tap(profile =>\n patchState({\n profile,\n }),\n ),\n );\n }\n\n @Action(ProfileUpdate)\n profileUpdate({ patchState }: StateContext, { payload }: ProfileUpdate) {\n return this.profileService.update(payload).pipe(\n tap(profile =>\n patchState({\n profile,\n }),\n ),\n );\n }\n\n @Action(ProfileChangePassword)\n changePassword(_, { payload }: ProfileChangePassword) {\n return this.profileService.changePassword(payload);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApplicationConfiguration, Rest } from '../models';\nimport { RestService } from './rest.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApplicationConfigurationService {\n constructor(private rest: RestService) {}\n\n getConfiguration(): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/abp/application-configuration',\n };\n\n return this.rest.request(request);\n }\n}\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\nimport { SessionSetLanguage } from '../actions/session.actions';\nimport { Session } from '../models/session';\n\n@State({\n name: 'SessionState',\n defaults: {} as Session.State,\n})\nexport class SessionState {\n @Selector()\n static getLanguage({ language }: Session.State): string {\n return language;\n }\n\n constructor() {}\n\n @Action(SessionSetLanguage)\n sessionSetLanguage({ patchState }: StateContext, { payload }: SessionSetLanguage) {\n patchState({\n language: payload,\n });\n }\n}\n","import { ABP } from '../models';\n\nexport function organizeRoutes(\n routes: ABP.FullRoute[],\n wrappers: ABP.FullRoute[] = [],\n parentNameArr = [] as ABP.FullRoute[],\n parentName: string = null,\n): ABP.FullRoute[] {\n const filter = route => {\n if (route.children) {\n route.children = organizeRoutes(route.children, wrappers, parentNameArr, route.name);\n }\n\n if (route.parentName && route.parentName !== parentName) {\n parentNameArr.push(route);\n return false;\n }\n\n return true;\n };\n\n if (parentName) {\n // recursive block\n return routes.filter(filter);\n }\n\n const filteredRoutes = routes.filter(filter);\n\n if (parentNameArr.length) {\n return sortRoutes(setChildRoute([...filteredRoutes, ...wrappers], parentNameArr));\n }\n\n return filteredRoutes;\n}\n\nexport function setChildRoute(routes: ABP.FullRoute[], parentNameArr: ABP.FullRoute[]): ABP.FullRoute[] {\n return routes\n .map(route => {\n if (route.children && route.children.length) {\n route.children = setChildRoute(route.children, parentNameArr);\n }\n\n const foundedChildren = parentNameArr.filter(parent => parent.parentName === route.name);\n if (foundedChildren && foundedChildren.length) {\n route.children = [...(route.children || []), ...foundedChildren];\n }\n\n return route;\n })\n .filter(route => route.path || (route.children && route.children.length));\n}\n\nexport function sortRoutes(routes: ABP.FullRoute[] = []): ABP.FullRoute[] {\n if (!routes.length) return [];\n return routes\n .sort((a, b) => a.order - b.order)\n .map(route => {\n if (route.children && route.children.length) {\n route.children = sortRoutes(route.children);\n }\n\n return route;\n });\n}\n","import { State, Selector, createSelector, Action, StateContext, Store } from '@ngxs/store';\nimport { Config, ABP } from '../models';\nimport { ConfigGetAppConfiguration, PatchRouteByName } from '../actions/config.actions';\nimport { ApplicationConfigurationService } from '../services/application-configuration.service';\nimport { tap, switchMap } from 'rxjs/operators';\nimport snq from 'snq';\nimport { SessionSetLanguage } from '../actions';\nimport { SessionState } from './session.state';\nimport { of } from 'rxjs';\nimport { setChildRoute, sortRoutes, organizeRoutes } from '../utils/route-utils';\n\n@State({\n name: 'ConfigState',\n defaults: {} as Config.State,\n})\nexport class ConfigState {\n @Selector()\n static getAll(state: Config.State) {\n return state;\n }\n\n static getOne(key: string) {\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State) {\n return state[key];\n },\n );\n\n return selector;\n }\n\n static getDeep(keys: string[] | string) {\n if (typeof keys === 'string') {\n keys = keys.split('.');\n }\n\n if (!Array.isArray(keys)) {\n throw new Error('The argument must be a dot string or an string array.');\n }\n\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State) {\n return (keys as string[]).reduce((acc, val) => {\n if (acc) {\n return acc[val];\n }\n\n return undefined;\n }, state);\n },\n );\n\n return selector;\n }\n\n static getApiUrl(key?: string) {\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State): string {\n return state.environment.apis[key || 'default'].url;\n },\n );\n\n return selector;\n }\n\n static getSetting(key: string) {\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State) {\n return snq(() => state.setting.values[key]);\n },\n );\n\n return selector;\n }\n\n static getGrantedPolicy(condition: string = '') {\n const keys = condition\n .replace(/\\(|\\)|\\!|\\s/g, '')\n .split(/\\|\\||&&/)\n .filter(key => key);\n\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State): boolean {\n if (!keys.length) return true;\n\n const getPolicy = key => snq(() => state.auth.grantedPolicies[key], false);\n if (keys.length > 1) {\n keys.forEach(key => {\n const value = getPolicy(key);\n condition = condition.replace(key, value);\n });\n\n // tslint:disable-next-line: no-eval\n return eval(`!!${condition}`);\n }\n\n return getPolicy(condition);\n },\n );\n\n return selector;\n }\n\n static getCopy(key: string, ...interpolateParams: string[]) {\n if (!key) key = '';\n\n const keys = key.split('::') as string[];\n const selector = createSelector(\n [ConfigState],\n function(state: Config.State) {\n const { defaultResourceName } = state.environment.localization;\n if (keys[0] === '') {\n if (!defaultResourceName) {\n throw new Error(\n `Please check your environment. May you forget set defaultResourceName? \n Here is the example:\n { production: false,\n localization: {\n defaultResourceName: 'MyProjectName'\n }\n }`,\n );\n }\n\n keys[0] = snq(() => defaultResourceName);\n }\n\n let copy = keys.reduce((acc, val) => {\n if (acc) {\n return acc[val];\n }\n\n return undefined;\n }, state.localization.values);\n\n if (copy && interpolateParams && interpolateParams.length) {\n interpolateParams.forEach((param, index) => {\n copy = copy.replace(`'{${index}}'`, param);\n });\n }\n\n return copy || key;\n },\n );\n\n return selector;\n }\n\n constructor(private appConfigurationService: ApplicationConfigurationService, private store: Store) {}\n\n @Action(ConfigGetAppConfiguration)\n addData({ patchState, dispatch }: StateContext) {\n return this.appConfigurationService.getConfiguration().pipe(\n tap(configuration =>\n patchState({\n ...configuration,\n }),\n ),\n switchMap(configuration =>\n this.store.selectSnapshot(SessionState.getLanguage)\n ? of(null)\n : dispatch(\n new SessionSetLanguage(snq(() => configuration.setting.values['Abp.Localization.DefaultLanguage'])),\n ),\n ),\n );\n }\n\n @Action(PatchRouteByName)\n patchRoute({ patchState, getState }: StateContext, { name, newValue }: PatchRouteByName) {\n let routes: ABP.FullRoute[] = getState().routes;\n\n const index = routes.findIndex(route => route.name === name);\n\n routes = patchRouteDeep(routes, name, newValue);\n\n return patchState({\n routes,\n });\n }\n}\n\nfunction patchRouteDeep(\n routes: ABP.FullRoute[],\n name: string,\n newValue: Partial,\n parentUrl: string = null,\n): ABP.FullRoute[] {\n routes = routes.map(route => {\n if (route.name === name) {\n if (newValue.path) {\n newValue.url = `${parentUrl}/${newValue.path}`;\n }\n\n if (newValue.children && newValue.children.length) {\n newValue.children = newValue.children.map(child => ({\n ...child,\n url: `${parentUrl}/${route.path}/${child.path}`,\n }));\n }\n\n return { ...route, ...newValue };\n } else if (route.children && route.children.length) {\n route.children = patchRouteDeep(route.children, name, newValue, (parentUrl || '/') + route.path);\n }\n\n return route;\n });\n\n if (parentUrl) {\n // recursive block\n return routes;\n }\n\n return organizeRoutes(routes);\n}\n","export function uuid(a?: any): string {\n return a\n ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16)\n : ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid);\n}\n","import { Injector } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigGetAppConfiguration } from '../actions/config.actions';\n\nexport function getInitialData(injector: Injector) {\n const fn = function() {\n const store: Store = injector.get(Store);\n\n return store.dispatch(new ConfigGetAppConfiguration()).toPromise();\n };\n\n return fn;\n}\n","import { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nexport const takeUntilDestroy = (componentInstance, destroyMethodName = 'ngOnDestroy') => (\n source: Observable,\n) => {\n const originalDestroy = componentInstance[destroyMethodName];\n if (isFunction(originalDestroy) === false) {\n throw new Error(\n `${componentInstance.constructor.name} is using untilDestroyed but doesn't implement ${destroyMethodName}`,\n );\n }\n if (!componentInstance['__takeUntilDestroy']) {\n componentInstance['__takeUntilDestroy'] = new Subject();\n\n componentInstance[destroyMethodName] = function() {\n isFunction(originalDestroy) && originalDestroy.apply(this, arguments);\n componentInstance['__takeUntilDestroy'].next(true);\n componentInstance['__takeUntilDestroy'].complete();\n };\n }\n return source.pipe(takeUntil(componentInstance['__takeUntilDestroy']));\n};\n","import { Component, OnDestroy, Type } from '@angular/core';\nimport { NavigationEnd, Router, UrlSegment } from '@angular/router';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { eLayoutType } from '../enums';\nimport { ABP, Config } from '../models';\nimport { ConfigState } from '../states';\nimport { takeUntilDestroy } from '../utils';\nimport snq from 'snq';\n\n@Component({\n selector: 'abp-dynamic-layout',\n template: `\n \n\n \n \n `,\n})\nexport class DynamicLayoutComponent implements OnDestroy {\n @Select(ConfigState.getOne('requirements'))\n requirements$: Observable;\n\n layout: Type;\n\n constructor(private router: Router, private store: Store) {\n this.router.events.pipe(takeUntilDestroy(this)).subscribe(event => {\n if (event instanceof NavigationEnd) {\n const { segments } = this.router.parseUrl(event.url).root.children.primary;\n const {\n requirements: { layouts },\n routes,\n } = this.store.selectSnapshot(ConfigState.getAll);\n\n const layout = findLayout(segments, routes);\n\n this.layout = layouts.filter(l => !!l).find(l => snq(() => l.type.toLowerCase().indexOf(layout), -1) > -1);\n }\n });\n }\n\n ngOnDestroy() {}\n}\n\nfunction findLayout(segments: UrlSegment[], routes: ABP.FullRoute[]): eLayoutType {\n let layout = eLayoutType.empty;\n\n const route = routes\n .reduce((acc, val) => (val.wrapper ? [...acc, ...val.children] : [...acc, val]), [])\n .find(r => r.path === segments[0].path);\n\n if (route) {\n if (route.layout) {\n layout = route.layout;\n }\n\n if (route.children && route.children.length) {\n const child = route.children.find(c => c.path === segments[1].path);\n\n if (child.layout) {\n layout = child.layout;\n }\n }\n }\n\n return layout;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'abp-router-outlet',\n template: `\n \n `,\n})\nexport class RouterOutletComponent {}\n","import { AfterContentInit, ChangeDetectorRef, Directive, ElementRef, HostBinding, Input } from '@angular/core';\n\n@Directive({\n selector: '[abpEllipsis]',\n})\nexport class EllipsisDirective implements AfterContentInit {\n @Input('abpEllipsis')\n witdh: string;\n\n @HostBinding('title')\n @Input()\n title: string;\n\n @Input('abpEllipsisEnabled')\n enabled = true;\n\n @HostBinding('class.abp-ellipsis')\n get class() {\n return this.enabled;\n }\n\n @HostBinding('style.max-width')\n get maxWidth() {\n return this.enabled ? this.witdh || '180px' : undefined;\n }\n\n constructor(private cdRef: ChangeDetectorRef, private elRef: ElementRef) {}\n\n ngAfterContentInit() {\n setTimeout(() => {\n const title = this.title;\n this.title = title || (this.elRef.nativeElement as HTMLElement).innerText;\n\n if (this.title !== title) {\n this.cdRef.detectChanges();\n }\n }, 0);\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Optional, Renderer2 } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigState } from '../states';\nimport { takeUntilDestroy } from '../utils';\n\n@Directive({\n selector: '[abpPermission]',\n})\nexport class PermissionDirective implements OnInit, OnDestroy {\n @Input('abpPermission') condition: string;\n\n constructor(@Optional() private elRef: ElementRef, private renderer: Renderer2, private store: Store) {}\n\n ngOnInit() {\n if (this.condition) {\n this.store\n .select(ConfigState.getGrantedPolicy(this.condition))\n .pipe(takeUntilDestroy(this))\n .subscribe(isGranted => {\n if (!isGranted) {\n this.renderer.removeChild(\n (this.elRef.nativeElement as HTMLElement).parentElement,\n this.elRef.nativeElement,\n );\n }\n });\n }\n }\n\n ngOnDestroy(): void {}\n}\n","import { Directive, Input, Optional, ElementRef, Renderer2, AfterViewInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport snq from 'snq';\n\n@Directive({\n selector: '[abpVisibility]',\n})\nexport class VisibilityDirective implements AfterViewInit {\n @Input('abpVisibility')\n focusedElement: HTMLElement;\n\n completed$ = new Subject();\n\n constructor(@Optional() private elRef: ElementRef, private renderer: Renderer2) {}\n\n ngAfterViewInit() {\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (!mutation.target) return;\n\n const htmlNodes = snq(\n () => Array.from(mutation.target.childNodes).filter(node => node instanceof HTMLElement),\n [],\n );\n\n if (!htmlNodes.length) {\n this.renderer.removeChild(this.elRef.nativeElement.parentElement, this.elRef.nativeElement);\n this.disconnect();\n } else {\n setTimeout(() => {\n this.disconnect();\n }, 0);\n }\n });\n });\n\n observer.observe(this.focusedElement, {\n childList: true,\n });\n\n this.completed$.subscribe(() => observer.disconnect());\n }\n\n disconnect() {\n this.completed$.next();\n this.completed$.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { Observable } from 'rxjs';\nimport { Navigate } from '@ngxs/router-plugin';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGuard implements CanActivate {\n constructor(private oauthService: OAuthService, private store: Store) {}\n canActivate(_: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | boolean | UrlTree {\n const hasValidAccessToken = this.oauthService.hasValidAccessToken();\n if (hasValidAccessToken) {\n return hasValidAccessToken;\n }\n\n this.store.dispatch(new Navigate(['/account/login'], null, { state: { redirectUrl: state.url } }));\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { ConfigState } from '../states';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PermissionGuard implements CanActivate {\n constructor(private store: Store) {}\n\n canActivate({ data }: ActivatedRouteSnapshot): Observable {\n const resource = data.requiredPolicy as string;\n return this.store.select(ConfigState.getGrantedPolicy(resource));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { Store } from '@ngxs/store';\nimport { SessionState } from '../states';\nimport { LoaderStart, LoaderStop } from '../actions/loader.actions';\nimport { finalize } from 'rxjs/operators';\n\n@Injectable()\nexport class ApiInterceptor implements HttpInterceptor {\n constructor(private oAuthService: OAuthService, private store: Store) {}\n\n intercept(request: HttpRequest, next: HttpHandler) {\n this.store.dispatch(new LoaderStart(request));\n\n const headers = {} as any;\n\n const token = this.oAuthService.getAccessToken();\n if (!request.headers.has('Authorization') && token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n\n const lang = this.store.selectSnapshot(SessionState.getLanguage);\n if (!request.headers.has('Accept-Language') && lang) {\n headers['Accept-Language'] = lang;\n }\n\n return next\n .handle(\n request.clone({\n setHeaders: headers,\n }),\n )\n .pipe(finalize(() => this.store.dispatch(new LoaderStop(request))));\n }\n}\n","import { HttpHeaders, HttpParams } from '@angular/common/http';\n\nexport namespace Rest {\n export interface Config {\n throwErr?: boolean;\n observe?: Observe;\n }\n\n export const enum Observe {\n Body = 'body',\n Events = 'events',\n Response = 'response',\n }\n\n export const enum ResponseType {\n ArrayBuffer = 'arraybuffer',\n Blob = 'blob',\n JSON = 'json',\n Text = 'text',\n }\n\n export interface Request {\n body?: T;\n headers?:\n | HttpHeaders\n | {\n [header: string]: string | string[];\n };\n method: string;\n params?:\n | HttpParams\n | {\n [param: string]: any;\n };\n reportProgress?: boolean;\n responseType?: ResponseType;\n url: string;\n withCredentials?: boolean;\n }\n}\n","import { Injectable, Inject, InjectionToken, Type } from '@angular/core';\nimport { NgxsPlugin, setValue, actionMatcher, InitState, UpdateState, NgxsNextPluginFn } from '@ngxs/store';\nimport { Router, Routes } from '@angular/router';\nimport { ABP } from '../models';\nimport snq from 'snq';\nimport { setChildRoute, sortRoutes, organizeRoutes } from '../utils/route-utils';\n\nexport const NGXS_CONFIG_PLUGIN_OPTIONS = new InjectionToken('NGXS_CONFIG_PLUGIN_OPTIONS');\n\n@Injectable()\nexport class ConfigPlugin implements NgxsPlugin {\n private initialized: boolean = false;\n\n constructor(@Inject(NGXS_CONFIG_PLUGIN_OPTIONS) private options: ABP.Root, private router: Router) {}\n\n handle(state: any, event: any, next: NgxsNextPluginFn) {\n const matches = actionMatcher(event);\n const isInitAction = matches(InitState) || matches(UpdateState);\n\n // const layouts = snq(() => this.options.requirements.layouts.filter(layout => layout instanceof Type), []);\n if (isInitAction && !this.initialized) {\n let { routes, wrappers } = transformRoutes(this.router.config);\n routes = organizeRoutes(routes, wrappers);\n\n state = setValue(state, 'ConfigState', {\n ...(state.ConfigState && { ...state.ConfigState }),\n ...this.options,\n routes,\n });\n\n this.initialized = true;\n }\n\n return next(state, event);\n }\n}\n\nfunction transformRoutes(routes: Routes = [], wrappers: ABP.FullRoute[] = []): any {\n const abpRoutes: ABP.FullRoute[] = routes\n .filter(route => {\n return snq(() => route.data.routes.find(r => r.path === route.path), false);\n })\n .reduce((acc, val) => [...acc, ...val.data.routes], []);\n\n wrappers = abpRoutes.filter(ar => ar.wrapper);\n const transformed = [] as ABP.FullRoute[];\n routes\n .filter(route => route.component || route.loadChildren)\n .forEach(route => {\n const abpPackage = abpRoutes.find(abp => abp.path.toLowerCase() === route.path.toLowerCase());\n const { length } = transformed;\n\n if (abpPackage) {\n transformed.push(abpPackage);\n }\n\n if (transformed.length === length) {\n transformed.push({\n path: route.path,\n name: snq(() => route.data.routes.name, route.path),\n children: route.data.routes.children || [],\n } as ABP.FullRoute);\n }\n });\n\n return { routes: setUrls(transformed), wrappers };\n}\n\nfunction setUrls(routes: ABP.FullRoute[], parentUrl?: string): ABP.FullRoute[] {\n if (parentUrl) {\n // this if block using for only recursive call\n\n return routes.map(route => ({\n ...route,\n url: `${parentUrl}/${route.path}`,\n ...(route.children &&\n route.children.length && {\n children: setUrls(route.children, `${parentUrl}/${route.path}`),\n }),\n }));\n }\n\n return routes.map(route => ({\n ...route,\n url: `/${route.path}`,\n ...(route.children &&\n route.children.length && {\n children: setUrls(route.children, `/${route.path}`),\n }),\n }));\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigState } from '../states';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigService {\n constructor(private store: Store) {}\n\n getAll() {\n return this.store.selectSnapshot(ConfigState.getAll);\n }\n\n getOne(key: string) {\n return this.store.selectSnapshot(ConfigState.getOne(key));\n }\n\n getDeep(keys: string[] | string) {\n return this.store.selectSnapshot(ConfigState.getDeep(keys));\n }\n\n getSetting(key: string) {\n return this.store.selectSnapshot(ConfigState.getSetting(key));\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { uuid } from '../utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LazyLoadService {\n loadedLibraries: { [url: string]: ReplaySubject } = {};\n\n load(\n url: string,\n type: 'script' | 'style',\n content: string = '',\n targetQuery: string = 'body',\n position: InsertPosition = 'afterend',\n ): Observable {\n if (!url && !content) return;\n const key = url ? url.slice(url.lastIndexOf('/') + 1) : uuid();\n\n if (this.loadedLibraries[key]) {\n return this.loadedLibraries[key].asObservable();\n }\n\n this.loadedLibraries[key] = new ReplaySubject();\n\n let library;\n if (type === 'script') {\n library = document.createElement('script');\n library.type = 'text/javascript';\n if (url) {\n (library as HTMLScriptElement).src = url;\n }\n\n (library as HTMLScriptElement).text = content;\n } else if (url) {\n library = document.createElement('link');\n library.type = 'text/css';\n (library as HTMLLinkElement).rel = 'stylesheet';\n\n if (url) {\n (library as HTMLLinkElement).href = url;\n }\n } else {\n library = document.createElement('style');\n (library as HTMLStyleElement).textContent = content;\n }\n\n library.onload = () => {\n this.loadedLibraries[key].next();\n this.loadedLibraries[key].complete();\n };\n\n document.querySelector(targetQuery).insertAdjacentElement(position, library);\n\n return this.loadedLibraries[key].asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigState } from '../states';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class LocalizationService {\n constructor(private store: Store) {}\n\n get(keys: string, ...interpolateParams: string[]): Observable {\n return this.store.select(ConfigState.getCopy(keys, ...interpolateParams));\n }\n\n instant(keys: string, ...interpolateParams: string[]): string {\n return this.store.selectSnapshot(ConfigState.getCopy(keys, ...interpolateParams));\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Config } from '../models';\n\nexport function environmentFactory(environment: Config.Environment) {\n return {\n ...environment,\n };\n}\n\nexport function configFactory(config: Config.Requirements) {\n return {\n ...config,\n };\n}\n\nexport const ENVIRONMENT = new InjectionToken('ENVIRONMENT');\n\nexport const CONFIG = new InjectionToken('CONFIG');\n","import { Pipe, PipeTransform, OnDestroy } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { ConfigState } from '../states';\nimport { takeUntilDestroy } from '../utils';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n@Pipe({\n name: 'abpLocalization',\n pure: false, // required to update the value\n})\nexport class LocalizationPipe implements PipeTransform, OnDestroy {\n initialized: boolean = false;\n\n value: string;\n\n constructor(private store: Store) {}\n\n transform(value: string, ...interpolateParams: string[]): string {\n if (!this.initialized) {\n this.initialized = true;\n\n this.store\n .select(\n ConfigState.getCopy(\n value,\n ...interpolateParams.reduce((acc, val) => (Array.isArray(val) ? [...acc, ...val] : [...acc, val]), []),\n ),\n )\n .pipe(\n takeUntilDestroy(this),\n distinctUntilChanged(),\n )\n .subscribe(copy => (this.value = copy));\n }\n\n return this.value;\n }\n\n ngOnDestroy() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { NgxsRouterPluginModule } from '@ngxs/router-plugin';\nimport { NgxsStoragePluginModule } from '@ngxs/storage-plugin';\nimport { NgxsModule, NGXS_PLUGINS } from '@ngxs/store';\nimport { DynamicLayoutComponent } from './components/dynamic-layout.component';\nimport { RouterOutletComponent } from './components/router-outlet.component';\nimport { PermissionDirective } from './directives/permission.directive';\nimport { VisibilityDirective } from './directives/visibility.directive';\nimport { ApiInterceptor } from './interceptors/api.interceptor';\nimport { ABP } from './models/common';\nimport { LocalizationPipe } from './pipes/localization.pipe';\nimport { ConfigPlugin, NGXS_CONFIG_PLUGIN_OPTIONS } from './plugins/config.plugin';\nimport { ConfigState } from './states/config.state';\nimport { ProfileState } from './states/profile.state';\nimport { SessionState } from './states/session.state';\nimport { getInitialData } from './utils/initial-utils';\nimport { EllipsisDirective } from './directives/ellipsis.directive';\n\n@NgModule({\n imports: [\n NgxsModule.forFeature([ProfileState, SessionState, ConfigState]),\n NgxsStoragePluginModule.forRoot({ key: 'SessionState' }),\n NgxsRouterPluginModule.forRoot(),\n CommonModule,\n HttpClientModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n ],\n declarations: [\n RouterOutletComponent,\n DynamicLayoutComponent,\n PermissionDirective,\n VisibilityDirective,\n LocalizationPipe,\n EllipsisDirective,\n ],\n exports: [\n CommonModule,\n HttpClientModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n RouterOutletComponent,\n DynamicLayoutComponent,\n PermissionDirective,\n VisibilityDirective,\n EllipsisDirective,\n LocalizationPipe,\n ],\n providers: [LocalizationPipe],\n entryComponents: [RouterOutletComponent, DynamicLayoutComponent],\n})\nexport class CoreModule {\n static forRoot(options = {} as ABP.Root): ModuleWithProviders {\n return {\n ngModule: CoreModule,\n providers: [\n {\n provide: NGXS_PLUGINS,\n useClass: ConfigPlugin,\n multi: true,\n },\n {\n provide: NGXS_CONFIG_PLUGIN_OPTIONS,\n useValue: options,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: ApiInterceptor,\n multi: true,\n },\n {\n provide: APP_INITIALIZER,\n multi: true,\n deps: [Injector],\n useFactory: getInitialData,\n },\n ],\n };\n }\n}\n"],"names":["tslib_1.__decorate"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/core/lib/actions/config.actions.d.ts b/npm/ng-packs/dist/core/lib/actions/config.actions.d.ts new file mode 100644 index 00000000000..0a61f1bef73 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/actions/config.actions.d.ts @@ -0,0 +1,10 @@ +import { ABP } from '../models'; +export declare class PatchRouteByName { + name: string; + newValue: Partial; + static readonly type = "[Config] Patch Route By Name"; + constructor(name: string, newValue: Partial); +} +export declare class ConfigGetAppConfiguration { + static readonly type = "[Config] Get App Configuration"; +} diff --git a/npm/ng-packs/dist/core/lib/actions/index.d.ts b/npm/ng-packs/dist/core/lib/actions/index.d.ts new file mode 100644 index 00000000000..cf05aac81d9 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/actions/index.d.ts @@ -0,0 +1,5 @@ +export * from './config.actions'; +export * from './loader.actions'; +export * from './profile.actions'; +export * from './rest.actions'; +export * from './session.actions'; diff --git a/npm/ng-packs/dist/core/lib/actions/loader.actions.d.ts b/npm/ng-packs/dist/core/lib/actions/loader.actions.d.ts new file mode 100644 index 00000000000..e6080e24c22 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/actions/loader.actions.d.ts @@ -0,0 +1,11 @@ +import { HttpRequest } from '@angular/common/http'; +export declare class LoaderStart { + payload: HttpRequest; + static readonly type = "[Loader] Start"; + constructor(payload: HttpRequest); +} +export declare class LoaderStop { + payload: HttpRequest; + static readonly type = "[Loader] Stop"; + constructor(payload: HttpRequest); +} diff --git a/npm/ng-packs/dist/core/lib/actions/profile.actions.d.ts b/npm/ng-packs/dist/core/lib/actions/profile.actions.d.ts new file mode 100644 index 00000000000..c50747a28c0 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/actions/profile.actions.d.ts @@ -0,0 +1,14 @@ +import { Profile } from '../models'; +export declare class ProfileGet { + static readonly type = "[Profile] Get"; +} +export declare class ProfileUpdate { + payload: Profile.Response; + static readonly type = "[Profile] Update"; + constructor(payload: Profile.Response); +} +export declare class ProfileChangePassword { + payload: Profile.ChangePasswordRequest; + static readonly type = "[Profile] Change Password"; + constructor(payload: Profile.ChangePasswordRequest); +} diff --git a/npm/ng-packs/dist/core/lib/actions/rest.actions.d.ts b/npm/ng-packs/dist/core/lib/actions/rest.actions.d.ts new file mode 100644 index 00000000000..d825955588a --- /dev/null +++ b/npm/ng-packs/dist/core/lib/actions/rest.actions.d.ts @@ -0,0 +1,6 @@ +import { HttpErrorResponse } from '@angular/common/http'; +export declare class RestOccurError { + payload: HttpErrorResponse | any; + static readonly type = "[Rest] Error"; + constructor(payload: HttpErrorResponse | any); +} diff --git a/npm/ng-packs/dist/core/lib/actions/session.actions.d.ts b/npm/ng-packs/dist/core/lib/actions/session.actions.d.ts new file mode 100644 index 00000000000..6156f5e9227 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/actions/session.actions.d.ts @@ -0,0 +1,5 @@ +export declare class SessionSetLanguage { + payload: string; + static readonly type = "[Session] Set Language"; + constructor(payload: string); +} diff --git a/npm/ng-packs/dist/core/lib/components/dynamic-layout.component.d.ts b/npm/ng-packs/dist/core/lib/components/dynamic-layout.component.d.ts new file mode 100644 index 00000000000..713ad7fbc91 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/components/dynamic-layout.component.d.ts @@ -0,0 +1,13 @@ +import { OnDestroy, Type } from '@angular/core'; +import { Router } from '@angular/router'; +import { Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { Config } from '../models'; +export declare class DynamicLayoutComponent implements OnDestroy { + private router; + private store; + requirements$: Observable; + layout: Type; + constructor(router: Router, store: Store); + ngOnDestroy(): void; +} diff --git a/npm/ng-packs/dist/core/lib/components/index.d.ts b/npm/ng-packs/dist/core/lib/components/index.d.ts new file mode 100644 index 00000000000..d54b2d21751 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/components/index.d.ts @@ -0,0 +1,2 @@ +export * from './dynamic-layout.component'; +export * from './router-outlet.component'; diff --git a/npm/ng-packs/dist/core/lib/components/router-outlet.component.d.ts b/npm/ng-packs/dist/core/lib/components/router-outlet.component.d.ts new file mode 100644 index 00000000000..c5cde5406ae --- /dev/null +++ b/npm/ng-packs/dist/core/lib/components/router-outlet.component.d.ts @@ -0,0 +1,2 @@ +export declare class RouterOutletComponent { +} diff --git a/npm/ng-packs/dist/core/lib/core.module.d.ts b/npm/ng-packs/dist/core/lib/core.module.d.ts new file mode 100644 index 00000000000..808bf66b098 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/core.module.d.ts @@ -0,0 +1,5 @@ +import { ModuleWithProviders } from '@angular/core'; +import { ABP } from './models/common'; +export declare class CoreModule { + static forRoot(options?: ABP.Root): ModuleWithProviders; +} diff --git a/npm/ng-packs/dist/core/lib/directives/ellipsis.directive.d.ts b/npm/ng-packs/dist/core/lib/directives/ellipsis.directive.d.ts new file mode 100644 index 00000000000..25b011d787b --- /dev/null +++ b/npm/ng-packs/dist/core/lib/directives/ellipsis.directive.d.ts @@ -0,0 +1,12 @@ +import { AfterContentInit, ChangeDetectorRef, ElementRef } from '@angular/core'; +export declare class EllipsisDirective implements AfterContentInit { + private cdRef; + private elRef; + witdh: string; + title: string; + enabled: boolean; + readonly class: boolean; + readonly maxWidth: string; + constructor(cdRef: ChangeDetectorRef, elRef: ElementRef); + ngAfterContentInit(): void; +} diff --git a/npm/ng-packs/dist/core/lib/directives/index.d.ts b/npm/ng-packs/dist/core/lib/directives/index.d.ts new file mode 100644 index 00000000000..a20dd40c554 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/directives/index.d.ts @@ -0,0 +1,3 @@ +export * from './ellipsis.directive'; +export * from './permission.directive'; +export * from './visibility.directive'; diff --git a/npm/ng-packs/dist/core/lib/directives/permission.directive.d.ts b/npm/ng-packs/dist/core/lib/directives/permission.directive.d.ts new file mode 100644 index 00000000000..0d5a9bb1889 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/directives/permission.directive.d.ts @@ -0,0 +1,11 @@ +import { ElementRef, OnDestroy, OnInit, Renderer2 } from '@angular/core'; +import { Store } from '@ngxs/store'; +export declare class PermissionDirective implements OnInit, OnDestroy { + private elRef; + private renderer; + private store; + condition: string; + constructor(elRef: ElementRef, renderer: Renderer2, store: Store); + ngOnInit(): void; + ngOnDestroy(): void; +} diff --git a/npm/ng-packs/dist/core/lib/directives/visibility.directive.d.ts b/npm/ng-packs/dist/core/lib/directives/visibility.directive.d.ts new file mode 100644 index 00000000000..29c45c67c9b --- /dev/null +++ b/npm/ng-packs/dist/core/lib/directives/visibility.directive.d.ts @@ -0,0 +1,11 @@ +import { ElementRef, Renderer2, AfterViewInit } from '@angular/core'; +import { Subject } from 'rxjs'; +export declare class VisibilityDirective implements AfterViewInit { + private elRef; + private renderer; + focusedElement: HTMLElement; + completed$: Subject; + constructor(elRef: ElementRef, renderer: Renderer2); + ngAfterViewInit(): void; + disconnect(): void; +} diff --git a/npm/ng-packs/dist/core/lib/enums/common.d.ts b/npm/ng-packs/dist/core/lib/enums/common.d.ts new file mode 100644 index 00000000000..f0347beff56 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/enums/common.d.ts @@ -0,0 +1,5 @@ +export declare const enum eLayoutType { + account = "account", + application = "application", + empty = "empty" +} diff --git a/npm/ng-packs/dist/core/lib/enums/index.d.ts b/npm/ng-packs/dist/core/lib/enums/index.d.ts new file mode 100644 index 00000000000..d0b93236650 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/enums/index.d.ts @@ -0,0 +1 @@ +export * from './common'; diff --git a/npm/ng-packs/dist/core/lib/guards/auth.guard.d.ts b/npm/ng-packs/dist/core/lib/guards/auth.guard.d.ts new file mode 100644 index 00000000000..9693b10e429 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/guards/auth.guard.d.ts @@ -0,0 +1,10 @@ +import { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router'; +import { Store } from '@ngxs/store'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { Observable } from 'rxjs'; +export declare class AuthGuard implements CanActivate { + private oauthService; + private store; + constructor(oauthService: OAuthService, store: Store); + canActivate(_: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | boolean | UrlTree; +} diff --git a/npm/ng-packs/dist/core/lib/guards/index.d.ts b/npm/ng-packs/dist/core/lib/guards/index.d.ts new file mode 100644 index 00000000000..6d31d6bf146 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/guards/index.d.ts @@ -0,0 +1,2 @@ +export * from './auth.guard'; +export * from './permission.guard'; diff --git a/npm/ng-packs/dist/core/lib/guards/permission.guard.d.ts b/npm/ng-packs/dist/core/lib/guards/permission.guard.d.ts new file mode 100644 index 00000000000..5c061fbde23 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/guards/permission.guard.d.ts @@ -0,0 +1,8 @@ +import { ActivatedRouteSnapshot, CanActivate } from '@angular/router'; +import { Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +export declare class PermissionGuard implements CanActivate { + private store; + constructor(store: Store); + canActivate({ data }: ActivatedRouteSnapshot): Observable; +} diff --git a/npm/ng-packs/dist/core/lib/interceptors/api.interceptor.d.ts b/npm/ng-packs/dist/core/lib/interceptors/api.interceptor.d.ts new file mode 100644 index 00000000000..4cc131ae286 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/interceptors/api.interceptor.d.ts @@ -0,0 +1,9 @@ +import { HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { Store } from '@ngxs/store'; +export declare class ApiInterceptor implements HttpInterceptor { + private oAuthService; + private store; + constructor(oAuthService: OAuthService, store: Store); + intercept(request: HttpRequest, next: HttpHandler): import("rxjs").Observable>; +} diff --git a/npm/ng-packs/dist/core/lib/interceptors/index.d.ts b/npm/ng-packs/dist/core/lib/interceptors/index.d.ts new file mode 100644 index 00000000000..d7479a76848 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/interceptors/index.d.ts @@ -0,0 +1 @@ +export * from './api.interceptor'; diff --git a/npm/ng-packs/dist/core/lib/models/application-configuration.d.ts b/npm/ng-packs/dist/core/lib/models/application-configuration.d.ts new file mode 100644 index 00000000000..218eaa8b1e6 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/models/application-configuration.d.ts @@ -0,0 +1,45 @@ +export declare namespace ApplicationConfiguration { + interface Response { + localization: Localization; + auth: Auth; + setting: Setting; + currentUser: CurrentUser; + features: Features; + } + interface Localization { + values: LocalizationValue; + languages: Language[]; + } + interface LocalizationValue { + [key: string]: { + [key: string]: string; + }; + } + interface Language { + cultureName: string; + uiCultureName: string; + displayName: string; + flagIcon: string; + } + interface Auth { + policies: Policy; + grantedPolicies: Policy; + } + interface Policy { + [key: string]: boolean; + } + interface Setting { + values: { + [key: string]: 'Abp.Localization.DefaultLanguage'; + }; + } + interface CurrentUser { + isAuthenticated: boolean; + id: string; + tenantId: string; + userName: string; + } + interface Features { + values: Setting; + } +} diff --git a/npm/ng-packs/dist/core/lib/models/common.d.ts b/npm/ng-packs/dist/core/lib/models/common.d.ts new file mode 100644 index 00000000000..441cc67ec81 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/models/common.d.ts @@ -0,0 +1,38 @@ +import { Config } from './config'; +import { eLayoutType } from '../enums'; +export declare namespace ABP { + interface Root { + environment: Partial; + requirements: Config.Requirements; + } + type PagedResponse = { + totalCount: number; + } & PagedItemsResponse; + interface PagedItemsResponse { + items: T[]; + } + interface PageQueryParams { + filter?: string; + sorting?: string; + skipCount?: number; + maxResultCount?: number; + } + interface Route { + children?: Route[]; + invisible?: boolean; + layout?: eLayoutType; + name: string; + order?: number; + parentName?: string; + path: string; + requiredPolicy?: string; + } + interface FullRoute extends Route { + url?: string; + wrapper?: boolean; + } + interface BasicItem { + id: string; + name: string; + } +} diff --git a/npm/ng-packs/dist/core/lib/models/config.d.ts b/npm/ng-packs/dist/core/lib/models/config.d.ts new file mode 100644 index 00000000000..c04cfb90a70 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/models/config.d.ts @@ -0,0 +1,20 @@ +import { AuthConfig } from 'angular-oauth2-oidc'; +import { Type } from '@angular/core'; +export declare namespace Config { + interface State { + [key: string]: any; + } + interface Environment { + production: boolean; + oAuthConfig: AuthConfig; + apis: Apis; + } + interface Apis { + [key: string]: { + [key: string]: string; + }; + } + interface Requirements { + layouts: Type[]; + } +} diff --git a/npm/ng-packs/dist/core/lib/models/index.d.ts b/npm/ng-packs/dist/core/lib/models/index.d.ts new file mode 100644 index 00000000000..63302c9ab8b --- /dev/null +++ b/npm/ng-packs/dist/core/lib/models/index.d.ts @@ -0,0 +1,6 @@ +export * from './application-configuration'; +export * from './common'; +export * from './config'; +export * from './rest'; +export * from './session'; +export * from './profile'; diff --git a/npm/ng-packs/dist/core/lib/models/profile.d.ts b/npm/ng-packs/dist/core/lib/models/profile.d.ts new file mode 100644 index 00000000000..c535ef09fa5 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/models/profile.d.ts @@ -0,0 +1,16 @@ +export declare namespace Profile { + interface State { + profile: Response; + } + interface Response { + userName: string; + email: string; + name: string; + surname: string; + phoneNumber: string; + } + interface ChangePasswordRequest { + currentPassword: string; + newPassword: string; + } +} diff --git a/npm/ng-packs/dist/core/lib/models/rest.d.ts b/npm/ng-packs/dist/core/lib/models/rest.d.ts new file mode 100644 index 00000000000..4c995110ce2 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/models/rest.d.ts @@ -0,0 +1,32 @@ +import { HttpHeaders, HttpParams } from '@angular/common/http'; +export declare namespace Rest { + interface Config { + throwErr?: boolean; + observe?: Observe; + } + const enum Observe { + Body = "body", + Events = "events", + Response = "response" + } + const enum ResponseType { + ArrayBuffer = "arraybuffer", + Blob = "blob", + JSON = "json", + Text = "text" + } + interface Request { + body?: T; + headers?: HttpHeaders | { + [header: string]: string | string[]; + }; + method: string; + params?: HttpParams | { + [param: string]: any; + }; + reportProgress?: boolean; + responseType?: ResponseType; + url: string; + withCredentials?: boolean; + } +} diff --git a/npm/ng-packs/dist/core/lib/models/session.d.ts b/npm/ng-packs/dist/core/lib/models/session.d.ts new file mode 100644 index 00000000000..3aed4722423 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/models/session.d.ts @@ -0,0 +1,5 @@ +export declare namespace Session { + interface State { + language: string; + } +} diff --git a/npm/ng-packs/dist/core/lib/pipes/localization.pipe.d.ts b/npm/ng-packs/dist/core/lib/pipes/localization.pipe.d.ts new file mode 100644 index 00000000000..fcfd42a7869 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/pipes/localization.pipe.d.ts @@ -0,0 +1,10 @@ +import { PipeTransform, OnDestroy } from '@angular/core'; +import { Store } from '@ngxs/store'; +export declare class LocalizationPipe implements PipeTransform, OnDestroy { + private store; + initialized: boolean; + value: string; + constructor(store: Store); + transform(value: string, ...interpolateParams: string[]): string; + ngOnDestroy(): void; +} diff --git a/npm/ng-packs/dist/core/lib/plugins/config.plugin.d.ts b/npm/ng-packs/dist/core/lib/plugins/config.plugin.d.ts new file mode 100644 index 00000000000..5f7024a1cab --- /dev/null +++ b/npm/ng-packs/dist/core/lib/plugins/config.plugin.d.ts @@ -0,0 +1,12 @@ +import { InjectionToken } from '@angular/core'; +import { NgxsPlugin, NgxsNextPluginFn } from '@ngxs/store'; +import { Router } from '@angular/router'; +import { ABP } from '../models'; +export declare const NGXS_CONFIG_PLUGIN_OPTIONS: InjectionToken<{}>; +export declare class ConfigPlugin implements NgxsPlugin { + private options; + private router; + private initialized; + constructor(options: ABP.Root, router: Router); + handle(state: any, event: any, next: NgxsNextPluginFn): any; +} diff --git a/npm/ng-packs/dist/core/lib/plugins/index.d.ts b/npm/ng-packs/dist/core/lib/plugins/index.d.ts new file mode 100644 index 00000000000..42ab2f291ce --- /dev/null +++ b/npm/ng-packs/dist/core/lib/plugins/index.d.ts @@ -0,0 +1 @@ +export * from './config.plugin'; diff --git a/npm/ng-packs/dist/core/lib/services/application-configuration.service.d.ts b/npm/ng-packs/dist/core/lib/services/application-configuration.service.d.ts new file mode 100644 index 00000000000..6d8d37b660c --- /dev/null +++ b/npm/ng-packs/dist/core/lib/services/application-configuration.service.d.ts @@ -0,0 +1,8 @@ +import { Observable } from 'rxjs'; +import { ApplicationConfiguration } from '../models'; +import { RestService } from './rest.service'; +export declare class ApplicationConfigurationService { + private rest; + constructor(rest: RestService); + getConfiguration(): Observable; +} diff --git a/npm/ng-packs/dist/core/lib/services/config.service.d.ts b/npm/ng-packs/dist/core/lib/services/config.service.d.ts new file mode 100644 index 00000000000..07b485ff4c7 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/services/config.service.d.ts @@ -0,0 +1,9 @@ +import { Store } from '@ngxs/store'; +export declare class ConfigService { + private store; + constructor(store: Store); + getAll(): import("../models").Config.State; + getOne(key: string): any; + getDeep(keys: string[] | string): any; + getSetting(key: string): any; +} diff --git a/npm/ng-packs/dist/core/lib/services/index.d.ts b/npm/ng-packs/dist/core/lib/services/index.d.ts new file mode 100644 index 00000000000..8ae05cabaa4 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/services/index.d.ts @@ -0,0 +1,6 @@ +export * from './application-configuration.service'; +export * from './config.service'; +export * from './lazy-load.service'; +export * from './localization.service'; +export * from './profile.service'; +export * from './rest.service'; diff --git a/npm/ng-packs/dist/core/lib/services/lazy-load.service.d.ts b/npm/ng-packs/dist/core/lib/services/lazy-load.service.d.ts new file mode 100644 index 00000000000..01149d3b19c --- /dev/null +++ b/npm/ng-packs/dist/core/lib/services/lazy-load.service.d.ts @@ -0,0 +1,7 @@ +import { Observable, ReplaySubject } from 'rxjs'; +export declare class LazyLoadService { + loadedLibraries: { + [url: string]: ReplaySubject; + }; + load(url: string, type: 'script' | 'style', content?: string, targetQuery?: string, position?: InsertPosition): Observable; +} diff --git a/npm/ng-packs/dist/core/lib/services/localization.service.d.ts b/npm/ng-packs/dist/core/lib/services/localization.service.d.ts new file mode 100644 index 00000000000..56dfa5f0a13 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/services/localization.service.d.ts @@ -0,0 +1,8 @@ +import { Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +export declare class LocalizationService { + private store; + constructor(store: Store); + get(keys: string, ...interpolateParams: string[]): Observable; + instant(keys: string, ...interpolateParams: string[]): string; +} diff --git a/npm/ng-packs/dist/core/lib/services/profile.service.d.ts b/npm/ng-packs/dist/core/lib/services/profile.service.d.ts new file mode 100644 index 00000000000..eac7ac9961b --- /dev/null +++ b/npm/ng-packs/dist/core/lib/services/profile.service.d.ts @@ -0,0 +1,10 @@ +import { Observable } from 'rxjs'; +import { RestService } from './rest.service'; +import { Profile } from '../models'; +export declare class ProfileService { + private rest; + constructor(rest: RestService); + get(): Observable; + update(body: Profile.Response): Observable; + changePassword(body: Profile.ChangePasswordRequest): Observable; +} diff --git a/npm/ng-packs/dist/core/lib/services/rest.service.d.ts b/npm/ng-packs/dist/core/lib/services/rest.service.d.ts new file mode 100644 index 00000000000..d26818e6a67 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/services/rest.service.d.ts @@ -0,0 +1,11 @@ +import { HttpClient, HttpRequest } from '@angular/common/http'; +import { Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { Rest } from '../models/rest'; +export declare class RestService { + private http; + private store; + constructor(http: HttpClient, store: Store); + handleError(err: any): Observable; + request(request: HttpRequest | Rest.Request, config?: Rest.Config, api?: string): Observable; +} diff --git a/npm/ng-packs/dist/core/lib/states/config.state.d.ts b/npm/ng-packs/dist/core/lib/states/config.state.d.ts new file mode 100644 index 00000000000..d54039bacb4 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/states/config.state.d.ts @@ -0,0 +1,18 @@ +import { StateContext, Store } from '@ngxs/store'; +import { Config } from '../models'; +import { PatchRouteByName } from '../actions/config.actions'; +import { ApplicationConfigurationService } from '../services/application-configuration.service'; +export declare class ConfigState { + private appConfigurationService; + private store; + static getAll(state: Config.State): Config.State; + static getOne(key: string): (state: Config.State) => any; + static getDeep(keys: string[] | string): (state: Config.State) => any; + static getApiUrl(key?: string): (state: Config.State) => string; + static getSetting(key: string): (state: Config.State) => any; + static getGrantedPolicy(condition?: string): (state: Config.State) => boolean; + static getCopy(key: string, ...interpolateParams: string[]): (state: Config.State) => any; + constructor(appConfigurationService: ApplicationConfigurationService, store: Store); + addData({ patchState, dispatch }: StateContext): import("rxjs").Observable; + patchRoute({ patchState, getState }: StateContext, { name, newValue }: PatchRouteByName): Config.State; +} diff --git a/npm/ng-packs/dist/core/lib/states/index.d.ts b/npm/ng-packs/dist/core/lib/states/index.d.ts new file mode 100644 index 00000000000..b7626c28427 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/states/index.d.ts @@ -0,0 +1,3 @@ +export * from './profile.state'; +export * from './config.state'; +export * from './session.state'; diff --git a/npm/ng-packs/dist/core/lib/states/profile.state.d.ts b/npm/ng-packs/dist/core/lib/states/profile.state.d.ts new file mode 100644 index 00000000000..344ab3a8a80 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/states/profile.state.d.ts @@ -0,0 +1,12 @@ +import { StateContext } from '@ngxs/store'; +import { ProfileChangePassword, ProfileUpdate } from '../actions/profile.actions'; +import { Profile } from '../models/profile'; +import { ProfileService } from '../services/profile.service'; +export declare class ProfileState { + private profileService; + static getProfile({ profile }: Profile.State): Profile.Response; + constructor(profileService: ProfileService); + profileGet({ patchState }: StateContext): import("rxjs").Observable; + profileUpdate({ patchState }: StateContext, { payload }: ProfileUpdate): import("rxjs").Observable; + changePassword(_: any, { payload }: ProfileChangePassword): import("rxjs").Observable; +} diff --git a/npm/ng-packs/dist/core/lib/states/session.state.d.ts b/npm/ng-packs/dist/core/lib/states/session.state.d.ts new file mode 100644 index 00000000000..5771f223f5a --- /dev/null +++ b/npm/ng-packs/dist/core/lib/states/session.state.d.ts @@ -0,0 +1,8 @@ +import { StateContext } from '@ngxs/store'; +import { SessionSetLanguage } from '../actions/session.actions'; +import { Session } from '../models/session'; +export declare class SessionState { + static getLanguage({ language }: Session.State): string; + constructor(); + sessionSetLanguage({ patchState }: StateContext, { payload }: SessionSetLanguage): void; +} diff --git a/npm/ng-packs/dist/core/lib/tokens/common.token.d.ts b/npm/ng-packs/dist/core/lib/tokens/common.token.d.ts new file mode 100644 index 00000000000..a6725528063 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/tokens/common.token.d.ts @@ -0,0 +1,12 @@ +import { InjectionToken } from '@angular/core'; +import { Config } from '../models'; +export declare function environmentFactory(environment: Config.Environment): { + production: boolean; + oAuthConfig: import("angular-oauth2-oidc").AuthConfig; + apis: Config.Apis; +}; +export declare function configFactory(config: Config.Requirements): { + layouts: import("@angular/core").Type[]; +}; +export declare const ENVIRONMENT: InjectionToken<{}>; +export declare const CONFIG: InjectionToken<{}>; diff --git a/npm/ng-packs/dist/core/lib/tokens/index.d.ts b/npm/ng-packs/dist/core/lib/tokens/index.d.ts new file mode 100644 index 00000000000..1472bbfee9f --- /dev/null +++ b/npm/ng-packs/dist/core/lib/tokens/index.d.ts @@ -0,0 +1 @@ +export * from './common.token'; diff --git a/npm/ng-packs/dist/core/lib/utils/generator-utils.d.ts b/npm/ng-packs/dist/core/lib/utils/generator-utils.d.ts new file mode 100644 index 00000000000..2e98cc6b403 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/utils/generator-utils.d.ts @@ -0,0 +1 @@ +export declare function uuid(a?: any): string; diff --git a/npm/ng-packs/dist/core/lib/utils/index.d.ts b/npm/ng-packs/dist/core/lib/utils/index.d.ts new file mode 100644 index 00000000000..e2a72ebd3f5 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/utils/index.d.ts @@ -0,0 +1,4 @@ +export * from './generator-utils'; +export * from './initial-utils'; +export * from './route-utils'; +export * from './rxjs-utils'; diff --git a/npm/ng-packs/dist/core/lib/utils/initial-utils.d.ts b/npm/ng-packs/dist/core/lib/utils/initial-utils.d.ts new file mode 100644 index 00000000000..7237b867ba4 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/utils/initial-utils.d.ts @@ -0,0 +1,2 @@ +import { Injector } from '@angular/core'; +export declare function getInitialData(injector: Injector): () => Promise; diff --git a/npm/ng-packs/dist/core/lib/utils/route-utils.d.ts b/npm/ng-packs/dist/core/lib/utils/route-utils.d.ts new file mode 100644 index 00000000000..82d932fbdd1 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/utils/route-utils.d.ts @@ -0,0 +1,4 @@ +import { ABP } from '../models'; +export declare function organizeRoutes(routes: ABP.FullRoute[], wrappers?: ABP.FullRoute[], parentNameArr?: ABP.FullRoute[], parentName?: string): ABP.FullRoute[]; +export declare function setChildRoute(routes: ABP.FullRoute[], parentNameArr: ABP.FullRoute[]): ABP.FullRoute[]; +export declare function sortRoutes(routes?: ABP.FullRoute[]): ABP.FullRoute[]; diff --git a/npm/ng-packs/dist/core/lib/utils/rxjs-utils.d.ts b/npm/ng-packs/dist/core/lib/utils/rxjs-utils.d.ts new file mode 100644 index 00000000000..f1fb5ef4f84 --- /dev/null +++ b/npm/ng-packs/dist/core/lib/utils/rxjs-utils.d.ts @@ -0,0 +1,2 @@ +import { Observable } from 'rxjs'; +export declare const takeUntilDestroy: (componentInstance: any, destroyMethodName?: string) => (source: Observable) => Observable; diff --git a/npm/ng-packs/dist/core/package.json b/npm/ng-packs/dist/core/package.json new file mode 100644 index 00000000000..fb387a2b25e --- /dev/null +++ b/npm/ng-packs/dist/core/package.json @@ -0,0 +1,33 @@ +{ + "name": "@abp/ng.core", + "version": "0.8.0", + "dependencies": { + "@ngxs/router-plugin": "^3.5.0", + "@ngxs/storage-plugin": "^3.5.0", + "@ngxs/store": "^3.5.0", + "angular-oauth2-oidc": "^8.0.1", + "just-compare": "^1.3.0", + "snq": "^1.0.3", + "tslib": "^1.9.0" + }, + "peerDependencies": { + "@angular/common": "~8.1.2", + "@angular/core": "~8.1.2", + "@angular/forms": "~8.1.2", + "@angular/router": "~8.1.2", + "rxjs": "~6.4.0" + }, + "publishConfig": { + "access": "public" + }, + "main": "bundles/abp-ng.core.umd.js", + "module": "fesm5/abp-ng.core.js", + "es2015": "fesm2015/abp-ng.core.js", + "esm5": "esm5/abp-ng.core.js", + "esm2015": "esm2015/abp-ng.core.js", + "fesm5": "fesm5/abp-ng.core.js", + "fesm2015": "fesm2015/abp-ng.core.js", + "typings": "abp-ng.core.d.ts", + "metadata": "abp-ng.core.metadata.json", + "sideEffects": false +} diff --git a/npm/ng-packs/dist/core/public-api.d.ts b/npm/ng-packs/dist/core/public-api.d.ts new file mode 100644 index 00000000000..74dc2a778b1 --- /dev/null +++ b/npm/ng-packs/dist/core/public-api.d.ts @@ -0,0 +1,13 @@ +export * from './lib/actions'; +export * from './lib/components'; +export * from './lib/directives'; +export * from './lib/enums'; +export * from './lib/guards'; +export * from './lib/interceptors'; +export * from './lib/models'; +export * from './lib/plugins'; +export * from './lib/services'; +export * from './lib/states'; +export * from './lib/tokens'; +export * from './lib/utils'; +export * from './lib/core.module'; diff --git a/npm/ng-packs/dist/identity/README.md b/npm/ng-packs/dist/identity/README.md new file mode 100644 index 00000000000..7d4c7a28146 --- /dev/null +++ b/npm/ng-packs/dist/identity/README.md @@ -0,0 +1 @@ +

@abp/ng.identity

diff --git a/npm/ng-packs/dist/identity/abp-ng.identity.d.ts b/npm/ng-packs/dist/identity/abp-ng.identity.d.ts new file mode 100644 index 00000000000..df156251058 --- /dev/null +++ b/npm/ng-packs/dist/identity/abp-ng.identity.d.ts @@ -0,0 +1,8 @@ +/** + * Generated bundle index. Do not edit. + */ +export * from './public-api'; +export { UsersComponent as ɵb } from './lib/components/users/users.component'; +export { IdentityRoutingModule as ɵc } from './lib/identity-routing.module'; +export { Identity as ɵa } from './lib/models/identity'; +export { UserResolver as ɵd } from './lib/resolvers/users.resolver'; diff --git a/npm/ng-packs/dist/identity/abp-ng.identity.metadata.json b/npm/ng-packs/dist/identity/abp-ng.identity.metadata.json new file mode 100644 index 00000000000..8ca8d8530be --- /dev/null +++ b/npm/ng-packs/dist/identity/abp-ng.identity.metadata.json @@ -0,0 +1 @@ +{"__symbolic":"module","version":4,"exports":[{"from":"./lib/models/identity"}],"metadata":{"IdentityModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":14,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"RolesComponent"},{"__symbolic":"reference","name":"ɵb"}],"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"NgxsModule","line":17,"character":4},"member":"forFeature"},"arguments":[[{"__symbolic":"reference","name":"IdentityState"}]]},{"__symbolic":"reference","module":"@abp/ng.core","name":"CoreModule","line":18,"character":4},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","module":"@ng-bootstrap/ng-bootstrap","name":"NgbTabsetModule","line":20,"character":4},{"__symbolic":"reference","module":"@abp/ng.theme.shared","name":"ThemeSharedModule","line":21,"character":4},{"__symbolic":"reference","module":"primeng/table","name":"TableModule","line":22,"character":4},{"__symbolic":"reference","module":"@ng-bootstrap/ng-bootstrap","name":"NgbDropdownModule","line":23,"character":4},{"__symbolic":"reference","module":"@abp/ng.permission-management","name":"PermissionManagementModule","line":24,"character":4},{"__symbolic":"reference","module":"@ngx-validate/core","name":"NgxValidateCoreModule","line":25,"character":4},{"__symbolic":"reference","module":"ngx-perfect-scrollbar","name":"PerfectScrollbarModule","line":26,"character":4}]}]}],"members":{}},"IdentityGetRoles":{"__symbolic":"class","members":{},"statics":{"type":"[Identity] Get Roles"}},"IdentityGetRoleById":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}]},"statics":{"type":"[Identity] Get Role By Id"}},"IdentityDeleteRole":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}]},"statics":{"type":"[Identity] Delete Role"}},"IdentityAddRole":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"RoleSaveRequest"}]}]},"statics":{"type":"[Identity] Add Role"}},"IdentityUpdateRole":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"RoleItem"}]}]},"statics":{"type":"[Identity] Update Role"}},"IdentityGetUsers":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@abp/ng.core","name":"ABP","line":29,"character":31},"member":"PageQueryParams"}]}]},"statics":{"type":"[Identity] Get Users"}},"IdentityGetUserById":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}]},"statics":{"type":"[Identity] Get User By Id"}},"IdentityDeleteUser":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}]},"statics":{"type":"[Identity] Delete User"}},"IdentityAddUser":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"UserSaveRequest"}]}]},"statics":{"type":"[Identity] Add User"}},"IdentityUpdateUser":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":49,"character":30,"module":"./lib/actions/identity.actions"}]}]},"statics":{"type":"[Identity] Update User"}},"IdentityGetUserRoles":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}]},"statics":{"type":"[Identity] Get User Roles"}},"RolesComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"abp-roles","template":"
\n
\n
\n
\n
{{ 'AbpIdentity::Roles' | abpLocalization }}
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n {{ 'AbpIdentity::RoleName' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n \n
\n \n \n \n
\n
\n \n {{ data.name }}\n \n
\n
\n
\n
\n\n\n \n

{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}

\n
\n\n \n
\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n
\n\n \n \n \n \n
\n\n\n"}]}],"members":{"roles$":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Select","line":20,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"IdentityState"},"member":"getRoles"}]}]}],"modalContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":33,"character":3},"arguments":["modalContent",{"static":false}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@abp/ng.theme.shared","name":"ConfirmationService","line":36,"character":43},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":36,"character":76},{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":36,"character":104}]}],"createForm":[{"__symbolic":"method"}],"openModal":[{"__symbolic":"method"}],"onAdd":[{"__symbolic":"method"}],"onEdit":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}]}},"IDENTITY_ROUTES":[{"name":"Administration","path":"","order":1,"wrapper":true},{"name":"Identity","path":"identity","order":1,"parentName":"Administration","layout":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@abp/ng.core","name":"eLayoutType","line":14,"character":12},"member":"application"},"children":[{"path":"roles","name":"Roles","order":2,"requiredPolicy":"AbpIdentity.Roles"},{"path":"users","name":"Users","order":1,"requiredPolicy":"AbpIdentity.Users"}]}],"RoleResolver":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":9,"character":29}]}],"resolve":[{"__symbolic":"method"}]}},"IdentityService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@abp/ng.core","name":"RestService","line":9,"character":28}]}],"getRoles":[{"__symbolic":"method"}],"getRoleById":[{"__symbolic":"method"}],"deleteRole":[{"__symbolic":"method"}],"addRole":[{"__symbolic":"method"}],"updateRole":[{"__symbolic":"method"}],"getUsers":[{"__symbolic":"method"}],"getUserById":[{"__symbolic":"method"}],"getUserRoles":[{"__symbolic":"method"}],"deleteUser":[{"__symbolic":"method"}],"addUser":[{"__symbolic":"method"}],"updateUser":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"IdentityState":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"State","line":18,"character":1},"arguments":[{"name":"IdentityState","defaults":{"roles":{},"selectedRole":{},"users":{},"selectedUser":{}}}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"IdentityService"}]}],"getRoles":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":45,"character":3},"arguments":[{"__symbolic":"reference","name":"IdentityGetRoles"}]}]}],"getRole":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":56,"character":3},"arguments":[{"__symbolic":"reference","name":"IdentityGetRoleById"}]}]}],"deleteRole":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":67,"character":3},"arguments":[{"__symbolic":"reference","name":"IdentityDeleteRole"}]}]}],"addRole":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":72,"character":3},"arguments":[{"__symbolic":"reference","name":"IdentityAddRole"}]}]}],"updateRole":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":77,"character":3},"arguments":[{"__symbolic":"reference","name":"IdentityUpdateRole"}]}]}],"getUsers":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":85,"character":3},"arguments":[{"__symbolic":"reference","name":"IdentityGetUsers"}]}]}],"getUser":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":96,"character":3},"arguments":[{"__symbolic":"reference","name":"IdentityGetUserById"}]}]}],"deleteUser":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":107,"character":3},"arguments":[{"__symbolic":"reference","name":"IdentityDeleteUser"}]}]}],"addUser":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":112,"character":3},"arguments":[{"__symbolic":"reference","name":"IdentityAddUser"}]}]}],"updateUser":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":117,"character":3},"arguments":[{"__symbolic":"reference","name":"IdentityUpdateUser"}]}]}],"getUserRoles":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":125,"character":3},"arguments":[{"__symbolic":"reference","name":"IdentityGetUserRoles"}]}]}]},"statics":{"getRoles":{"__symbolic":"function","parameters":["roles"],"value":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"roles"},"member":"items"}},"getRolesTotalCount":{"__symbolic":"function","parameters":["roles"],"value":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"roles"},"member":"totalCount"}},"getUsers":{"__symbolic":"function","parameters":["users"],"value":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"users"},"member":"items"}},"getUsersTotalCount":{"__symbolic":"function","parameters":["users"],"value":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"users"},"member":"totalCount"}}}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":19,"character":1},"arguments":[{"selector":"abp-users","template":"
\n
\n
\n
\n
{{ 'AbpIdentity::Users' | abpLocalization }}
\n
\n
\n \n {{ 'AbpIdentity::NewUser' | abpLocalization }}\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n {{ 'AbpIdentity::UserName' | abpLocalization }}\n {{ 'AbpIdentity::EmailAddress' | abpLocalization }}\n {{ 'AbpIdentity::PhoneNumber' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n \n
\n \n \n \n
\n
\n \n {{ data.userName }}\n {{ data.email }}\n {{ data.phoneNumber }}\n \n
\n \n
\n
\n\n\n \n

{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}

\n
\n\n \n \n
\n \n \n \n
\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n \n \n
\n \n
\n
\n
\n
\n
\n
\n\n \n \n \n \n
\n\n\n"}]}],"members":{"data$":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Select","line":24,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"IdentityState"},"member":"getUsers"}]}]}],"totalCount$":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Select","line":27,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"IdentityState"},"member":"getUsersTotalCount"}]}]}],"modalContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":30,"character":3},"arguments":["modalContent",{"static":false}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@abp/ng.theme.shared","name":"ConfirmationService","line":61,"character":43},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":61,"character":76},{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":61,"character":104}]}],"ngOnInit":[{"__symbolic":"method"}],"buildForm":[{"__symbolic":"method"}],"openModal":[{"__symbolic":"method"}],"onAdd":[{"__symbolic":"method"}],"onEdit":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"onPageChange":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":32,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":33,"character":12},"member":"forChild"},"arguments":[[{"path":"","redirectTo":"roles","pathMatch":"full"},{"path":"roles","component":{"__symbolic":"reference","module":"@abp/ng.core","name":"DynamicLayoutComponent","line":12,"character":15},"canActivate":[{"__symbolic":"reference","module":"@abp/ng.core","name":"AuthGuard","line":13,"character":18},{"__symbolic":"reference","module":"@abp/ng.core","name":"PermissionGuard","line":13,"character":29}],"data":{"requiredPolicy":"AbpIdentity.Roles"},"children":[{"path":"","component":{"__symbolic":"reference","name":"RolesComponent"},"resolve":[{"__symbolic":"reference","name":"RoleResolver"}]}]},{"path":"users","component":{"__symbolic":"reference","module":"@abp/ng.core","name":"DynamicLayoutComponent","line":19,"character":15},"canActivate":[{"__symbolic":"reference","module":"@abp/ng.core","name":"AuthGuard","line":20,"character":18},{"__symbolic":"reference","module":"@abp/ng.core","name":"PermissionGuard","line":20,"character":29}],"data":{"requiredPolicy":"AbpIdentity.Users"},"children":[{"path":"","component":{"__symbolic":"reference","name":"ɵb"},"resolve":[{"__symbolic":"reference","name":"RoleResolver"},{"__symbolic":"reference","name":"ɵd"}]}]}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":34,"character":12}],"providers":[{"__symbolic":"reference","name":"RoleResolver"},{"__symbolic":"reference","name":"ɵd"}]}]}],"members":{}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":9,"character":29}]}],"resolve":[{"__symbolic":"method"}]}}},"origins":{"IdentityModule":"./lib/identity.module","IdentityGetRoles":"./lib/actions/identity.actions","IdentityGetRoleById":"./lib/actions/identity.actions","IdentityDeleteRole":"./lib/actions/identity.actions","IdentityAddRole":"./lib/actions/identity.actions","IdentityUpdateRole":"./lib/actions/identity.actions","IdentityGetUsers":"./lib/actions/identity.actions","IdentityGetUserById":"./lib/actions/identity.actions","IdentityDeleteUser":"./lib/actions/identity.actions","IdentityAddUser":"./lib/actions/identity.actions","IdentityUpdateUser":"./lib/actions/identity.actions","IdentityGetUserRoles":"./lib/actions/identity.actions","RolesComponent":"./lib/components/roles/roles.component","IDENTITY_ROUTES":"./lib/constants/routes","RoleResolver":"./lib/resolvers/roles.resolver","IdentityService":"./lib/services/identity.service","IdentityState":"./lib/states/identity.state","ɵa":"./lib/models/identity","ɵb":"./lib/components/users/users.component","ɵc":"./lib/identity-routing.module","ɵd":"./lib/resolvers/users.resolver"},"importAs":"@abp/ng.identity"} \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/bundles/abp-ng.identity.umd.js b/npm/ng-packs/dist/identity/bundles/abp-ng.identity.umd.js new file mode 100644 index 00000000000..2d4d3afd683 --- /dev/null +++ b/npm/ng-packs/dist/identity/bundles/abp-ng.identity.umd.js @@ -0,0 +1,1353 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@abp/ng.core'), require('@angular/core'), require('@ngxs/store'), require('rxjs'), require('@angular/forms'), require('rxjs/operators'), require('@abp/ng.theme.shared'), require('@angular/router'), require('@ngx-validate/core'), require('snq'), require('@ng-bootstrap/ng-bootstrap'), require('@abp/ng.permission-management'), require('primeng/table'), require('ngx-perfect-scrollbar')) : + typeof define === 'function' && define.amd ? define('@abp/ng.identity', ['exports', '@abp/ng.core', '@angular/core', '@ngxs/store', 'rxjs', '@angular/forms', 'rxjs/operators', '@abp/ng.theme.shared', '@angular/router', '@ngx-validate/core', 'snq', '@ng-bootstrap/ng-bootstrap', '@abp/ng.permission-management', 'primeng/table', 'ngx-perfect-scrollbar'], factory) : + (global = global || self, factory((global.abp = global.abp || {}, global.abp.ng = global.abp.ng || {}, global.abp.ng.identity = {}), global.ng_core, global.ng.core, global.store, global.rxjs, global.ng.forms, global.rxjs.operators, global.ng_theme_shared, global.ng.router, global.core$1, global.snq, global.ngBootstrap, global.ng_permissionManagement, global.table, global.ngxPerfectScrollbar)); +}(this, function (exports, ng_core, core, store, rxjs, forms, operators, ng_theme_shared, router, core$1, snq, ngBootstrap, ng_permissionManagement, table, ngxPerfectScrollbar) { 'use strict'; + + snq = snq && snq.hasOwnProperty('default') ? snq['default'] : snq; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + } + + function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); + } + + function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; + } + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var IdentityGetRoles = /** @class */ (function () { + function IdentityGetRoles() { + } + IdentityGetRoles.type = '[Identity] Get Roles'; + return IdentityGetRoles; + }()); + var IdentityGetRoleById = /** @class */ (function () { + function IdentityGetRoleById(payload) { + this.payload = payload; + } + IdentityGetRoleById.type = '[Identity] Get Role By Id'; + return IdentityGetRoleById; + }()); + var IdentityDeleteRole = /** @class */ (function () { + function IdentityDeleteRole(payload) { + this.payload = payload; + } + IdentityDeleteRole.type = '[Identity] Delete Role'; + return IdentityDeleteRole; + }()); + var IdentityAddRole = /** @class */ (function () { + function IdentityAddRole(payload) { + this.payload = payload; + } + IdentityAddRole.type = '[Identity] Add Role'; + return IdentityAddRole; + }()); + var IdentityUpdateRole = /** @class */ (function () { + function IdentityUpdateRole(payload) { + this.payload = payload; + } + IdentityUpdateRole.type = '[Identity] Update Role'; + return IdentityUpdateRole; + }()); + var IdentityGetUsers = /** @class */ (function () { + function IdentityGetUsers(payload) { + this.payload = payload; + } + IdentityGetUsers.type = '[Identity] Get Users'; + return IdentityGetUsers; + }()); + var IdentityGetUserById = /** @class */ (function () { + function IdentityGetUserById(payload) { + this.payload = payload; + } + IdentityGetUserById.type = '[Identity] Get User By Id'; + return IdentityGetUserById; + }()); + var IdentityDeleteUser = /** @class */ (function () { + function IdentityDeleteUser(payload) { + this.payload = payload; + } + IdentityDeleteUser.type = '[Identity] Delete User'; + return IdentityDeleteUser; + }()); + var IdentityAddUser = /** @class */ (function () { + function IdentityAddUser(payload) { + this.payload = payload; + } + IdentityAddUser.type = '[Identity] Add User'; + return IdentityAddUser; + }()); + var IdentityUpdateUser = /** @class */ (function () { + function IdentityUpdateUser(payload) { + this.payload = payload; + } + IdentityUpdateUser.type = '[Identity] Update User'; + return IdentityUpdateUser; + }()); + var IdentityGetUserRoles = /** @class */ (function () { + function IdentityGetUserRoles(payload) { + this.payload = payload; + } + IdentityGetUserRoles.type = '[Identity] Get User Roles'; + return IdentityGetUserRoles; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var IdentityService = /** @class */ (function () { + function IdentityService(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + IdentityService.prototype.getRoles = /** + * @return {?} + */ + function () { + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/identity/roles', + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + IdentityService.prototype.getRoleById = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'GET', + url: "/api/identity/roles/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + IdentityService.prototype.deleteRole = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'DELETE', + url: "/api/identity/roles/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + IdentityService.prototype.addRole = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var request = { + method: 'POST', + url: '/api/identity/roles', + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + IdentityService.prototype.updateRole = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var url = "/api/identity/roles/" + body.id; + delete body.id; + /** @type {?} */ + var request = { + method: 'PUT', + url: url, + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?=} params + * @return {?} + */ + IdentityService.prototype.getUsers = /** + * @param {?=} params + * @return {?} + */ + function (params) { + if (params === void 0) { params = (/** @type {?} */ ({})); } + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/identity/users', + params: params, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + IdentityService.prototype.getUserById = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'GET', + url: "/api/identity/users/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + IdentityService.prototype.getUserRoles = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'GET', + url: "/api/identity/users/" + id + "/roles", + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + IdentityService.prototype.deleteUser = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'DELETE', + url: "/api/identity/users/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + IdentityService.prototype.addUser = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var request = { + method: 'POST', + url: '/api/identity/users', + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + IdentityService.prototype.updateUser = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var url = "/identity/users/" + body.id; + delete body.id; + /** @type {?} */ + var request = { + method: 'PUT', + url: url, + body: body, + }; + return this.rest.request(request); + }; + IdentityService.decorators = [ + { type: core.Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + IdentityService.ctorParameters = function () { return [ + { type: ng_core.RestService } + ]; }; + /** @nocollapse */ IdentityService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function IdentityService_Factory() { return new IdentityService(core.ɵɵinject(ng_core.RestService)); }, token: IdentityService, providedIn: "root" }); + return IdentityService; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var IdentityState = /** @class */ (function () { + function IdentityState(identityService) { + this.identityService = identityService; + } + /** + * @param {?} __0 + * @return {?} + */ + IdentityState.getRoles = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var roles = _a.roles; + return roles.items; + }; + /** + * @param {?} __0 + * @return {?} + */ + IdentityState.getRolesTotalCount = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var roles = _a.roles; + return roles.totalCount; + }; + /** + * @param {?} __0 + * @return {?} + */ + IdentityState.getUsers = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var users = _a.users; + return users.items; + }; + /** + * @param {?} __0 + * @return {?} + */ + IdentityState.getUsersTotalCount = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var users = _a.users; + return users.totalCount; + }; + /** + * @param {?} __0 + * @return {?} + */ + IdentityState.prototype.getRoles = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var patchState = _a.patchState; + return this.identityService.getRoles().pipe(operators.tap((/** + * @param {?} roles + * @return {?} + */ + function (roles) { + return patchState({ + roles: roles, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.getRole = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.identityService.getRoleById(payload).pipe(operators.tap((/** + * @param {?} selectedRole + * @return {?} + */ + function (selectedRole) { + return patchState({ + selectedRole: selectedRole, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.deleteRole = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.identityService.deleteRole(payload).pipe(operators.switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetRoles()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.addRole = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.identityService.addRole(payload).pipe(operators.switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetRoles()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.updateRole = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var _this = this; + var getState = _a.getState, dispatch = _a.dispatch; + var payload = _b.payload; + return dispatch(new IdentityGetRoleById(payload.id)).pipe(operators.switchMap((/** + * @return {?} + */ + function () { return _this.identityService.updateRole(__assign({}, getState().selectedRole, payload)); })), operators.switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetRoles()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.getUsers = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.identityService.getUsers(payload).pipe(operators.tap((/** + * @param {?} users + * @return {?} + */ + function (users) { + return patchState({ + users: users, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.getUser = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.identityService.getUserById(payload).pipe(operators.tap((/** + * @param {?} selectedUser + * @return {?} + */ + function (selectedUser) { + return patchState({ + selectedUser: selectedUser, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.deleteUser = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.identityService.deleteUser(payload).pipe(operators.switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetUsers()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.addUser = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.identityService.addUser(payload).pipe(operators.switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetUsers()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.updateUser = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var _this = this; + var getState = _a.getState, dispatch = _a.dispatch; + var payload = _b.payload; + return dispatch(new IdentityGetUserById(payload.id)).pipe(operators.switchMap((/** + * @return {?} + */ + function () { return _this.identityService.updateUser(__assign({}, getState().selectedUser, payload)); })), operators.switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetUsers()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.getUserRoles = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.identityService.getUserRoles(payload).pipe(operators.pluck('items'), operators.tap((/** + * @param {?} selectedUserRoles + * @return {?} + */ + function (selectedUserRoles) { + return patchState({ + selectedUserRoles: selectedUserRoles, + }); + }))); + }; + __decorate([ + store.Action(IdentityGetRoles), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "getRoles", null); + __decorate([ + store.Action(IdentityGetRoleById), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetRoleById]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "getRole", null); + __decorate([ + store.Action(IdentityDeleteRole), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetRoleById]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "deleteRole", null); + __decorate([ + store.Action(IdentityAddRole), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityAddRole]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "addRole", null); + __decorate([ + store.Action(IdentityUpdateRole), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityUpdateRole]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "updateRole", null); + __decorate([ + store.Action(IdentityGetUsers), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetUsers]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "getUsers", null); + __decorate([ + store.Action(IdentityGetUserById), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetUserById]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "getUser", null); + __decorate([ + store.Action(IdentityDeleteUser), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetUserById]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "deleteUser", null); + __decorate([ + store.Action(IdentityAddUser), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityAddUser]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "addUser", null); + __decorate([ + store.Action(IdentityUpdateUser), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityUpdateUser]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "updateUser", null); + __decorate([ + store.Action(IdentityGetUserRoles), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetUserRoles]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "getUserRoles", null); + __decorate([ + store.Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Array) + ], IdentityState, "getRoles", null); + __decorate([ + store.Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Number) + ], IdentityState, "getRolesTotalCount", null); + __decorate([ + store.Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Array) + ], IdentityState, "getUsers", null); + __decorate([ + store.Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Number) + ], IdentityState, "getUsersTotalCount", null); + IdentityState = __decorate([ + store.State({ + name: 'IdentityState', + defaults: (/** @type {?} */ ({ roles: {}, selectedRole: {}, users: {}, selectedUser: {} })), + }), + __metadata("design:paramtypes", [IdentityService]) + ], IdentityState); + return IdentityState; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var RolesComponent = /** @class */ (function () { + function RolesComponent(confirmationService, fb, store) { + this.confirmationService = confirmationService; + this.fb = fb; + this.store = store; + this.visiblePermissions = false; + } + /** + * @return {?} + */ + RolesComponent.prototype.createForm = /** + * @return {?} + */ + function () { + this.form = this.fb.group({ + name: [this.selected.name || '', [forms.Validators.required, forms.Validators.maxLength(256)]], + isDefault: [this.selected.isDefault || false], + isPublic: [this.selected.isPublic || false], + }); + }; + /** + * @return {?} + */ + RolesComponent.prototype.openModal = /** + * @return {?} + */ + function () { + this.createForm(); + this.isModalVisible = true; + }; + /** + * @return {?} + */ + RolesComponent.prototype.onAdd = /** + * @return {?} + */ + function () { + this.selected = (/** @type {?} */ ({})); + this.openModal(); + }; + /** + * @param {?} id + * @return {?} + */ + RolesComponent.prototype.onEdit = /** + * @param {?} id + * @return {?} + */ + function (id) { + var _this = this; + this.store + .dispatch(new IdentityGetRoleById(id)) + .pipe(operators.pluck('IdentityState', 'selectedRole')) + .subscribe((/** + * @param {?} selectedRole + * @return {?} + */ + function (selectedRole) { + _this.selected = selectedRole; + _this.openModal(); + })); + }; + /** + * @return {?} + */ + RolesComponent.prototype.save = /** + * @return {?} + */ + function () { + var _this = this; + if (!this.form.valid) + return; + this.store + .dispatch(this.selected.id + ? new IdentityUpdateRole(__assign({}, this.form.value, { id: this.selected.id })) + : new IdentityAddRole(this.form.value)) + .subscribe((/** + * @return {?} + */ + function () { + _this.isModalVisible = false; + })); + }; + /** + * @param {?} id + * @param {?} name + * @return {?} + */ + RolesComponent.prototype.delete = /** + * @param {?} id + * @param {?} name + * @return {?} + */ + function (id, name) { + var _this = this; + this.confirmationService + .warn('AbpIdentity::RoleDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', { + messageLocalizationParams: [name], + }) + .subscribe((/** + * @param {?} status + * @return {?} + */ + function (status) { + if (status === "confirm" /* confirm */) { + _this.store.dispatch(new IdentityDeleteRole(id)); + } + })); + }; + RolesComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-roles', + template: "
\n
\n
\n
\n
{{ 'AbpIdentity::Roles' | abpLocalization }}
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n {{ 'AbpIdentity::RoleName' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n \n
\n \n \n \n
\n
\n \n {{ data.name }}\n \n
\n
\n
\n
\n\n\n \n

{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}

\n
\n\n \n
\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n
\n\n \n \n \n \n
\n\n\n" + }] } + ]; + /** @nocollapse */ + RolesComponent.ctorParameters = function () { return [ + { type: ng_theme_shared.ConfirmationService }, + { type: forms.FormBuilder }, + { type: store.Store } + ]; }; + RolesComponent.propDecorators = { + modalContent: [{ type: core.ViewChild, args: ['modalContent', { static: false },] }] + }; + __decorate([ + store.Select(IdentityState.getRoles), + __metadata("design:type", rxjs.Observable) + ], RolesComponent.prototype, "roles$", void 0); + return RolesComponent; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var RoleResolver = /** @class */ (function () { + function RoleResolver(store) { + this.store = store; + } + /** + * @return {?} + */ + RoleResolver.prototype.resolve = /** + * @return {?} + */ + function () { + /** @type {?} */ + var roles = this.store.selectSnapshot(IdentityState.getRoles); + return roles && roles.length ? null : this.store.dispatch(new IdentityGetRoles()); + }; + RoleResolver.decorators = [ + { type: core.Injectable } + ]; + /** @nocollapse */ + RoleResolver.ctorParameters = function () { return [ + { type: store.Store } + ]; }; + return RoleResolver; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var UsersComponent = /** @class */ (function () { + function UsersComponent(confirmationService, fb, store) { + this.confirmationService = confirmationService; + this.fb = fb; + this.store = store; + this.visiblePermissions = false; + this.pageQuery = { + sorting: 'userName', + }; + this.loading = false; + this.search$ = new rxjs.Subject(); + this.trackByFn = (/** + * @param {?} index + * @param {?} item + * @return {?} + */ + function (index, item) { return Object.keys(item)[0] || index; }); + } + Object.defineProperty(UsersComponent.prototype, "roleGroups", { + get: /** + * @return {?} + */ + function () { + var _this = this; + return snq((/** + * @return {?} + */ + function () { return (/** @type {?} */ (((/** @type {?} */ (_this.form.get('roleNames')))).controls)); }), []); + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + UsersComponent.prototype.ngOnInit = /** + * @return {?} + */ + function () { + var _this = this; + this.search$.pipe(operators.debounceTime(300)).subscribe((/** + * @param {?} value + * @return {?} + */ + function (value) { + _this.pageQuery.filter = value; + _this.get(); + })); + }; + /** + * @return {?} + */ + UsersComponent.prototype.buildForm = /** + * @return {?} + */ + function () { + var _this = this; + this.roles = this.store.selectSnapshot(IdentityState.getRoles); + this.form = this.fb.group({ + password: [ + '', + [ + forms.Validators.required, + forms.Validators.maxLength(32), + forms.Validators.minLength(6), + core$1.validatePassword(['small', 'capital', 'number', 'special']), + ], + ], + userName: [this.selected.userName || '', [forms.Validators.required, forms.Validators.maxLength(256)]], + email: [this.selected.email || '', [forms.Validators.required, forms.Validators.email, forms.Validators.maxLength(256)]], + name: [this.selected.name || '', [forms.Validators.maxLength(64)]], + surname: [this.selected.surname || '', [forms.Validators.maxLength(64)]], + phoneNumber: [this.selected.phoneNumber || '', [forms.Validators.maxLength(16)]], + lockoutEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)], + twoFactorEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)], + roleNames: this.fb.array(this.roles.map((/** + * @param {?} role + * @return {?} + */ + function (role) { + var _a; + return _this.fb.group((_a = {}, + _a[role.name] = [!!snq((/** + * @return {?} + */ + function () { return _this.selectedUserRoles.find((/** + * @param {?} userRole + * @return {?} + */ + function (userRole) { return userRole.id === role.id; })); }))], + _a)); + }))), + }); + }; + /** + * @return {?} + */ + UsersComponent.prototype.openModal = /** + * @return {?} + */ + function () { + this.buildForm(); + this.isModalVisible = true; + }; + /** + * @return {?} + */ + UsersComponent.prototype.onAdd = /** + * @return {?} + */ + function () { + this.selected = (/** @type {?} */ ({})); + this.selectedUserRoles = (/** @type {?} */ ([])); + this.openModal(); + }; + /** + * @param {?} id + * @return {?} + */ + UsersComponent.prototype.onEdit = /** + * @param {?} id + * @return {?} + */ + function (id) { + var _this = this; + rxjs.combineLatest([this.store.dispatch(new IdentityGetUserById(id)), this.store.dispatch(new IdentityGetUserRoles(id))]) + .pipe(operators.filter((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var _b = __read(_a, 2), res1 = _b[0], res2 = _b[1]; + return res1 && res2; + })), operators.map((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var _b = __read(_a, 2), state = _b[0], _ = _b[1]; + return state; + })), operators.pluck('IdentityState'), operators.take(1)) + .subscribe((/** + * @param {?} state + * @return {?} + */ + function (state) { + _this.selected = state.selectedUser; + _this.selectedUserRoles = state.selectedUserRoles; + _this.openModal(); + })); + }; + /** + * @return {?} + */ + UsersComponent.prototype.save = /** + * @return {?} + */ + function () { + var _this = this; + if (!this.form.valid) + return; + var roleNames = this.form.value.roleNames; + /** @type {?} */ + var mappedRoleNames = snq((/** + * @return {?} + */ + function () { return roleNames.filter((/** + * @param {?} role + * @return {?} + */ + function (role) { return !!role[Object.keys(role)[0]]; })).map((/** + * @param {?} role + * @return {?} + */ + function (role) { return Object.keys(role)[0]; })); }), []); + this.store + .dispatch(this.selected.id + ? new IdentityUpdateUser(__assign({}, this.form.value, { id: this.selected.id, roleNames: mappedRoleNames })) + : new IdentityAddUser(__assign({}, this.form.value, { roleNames: mappedRoleNames }))) + .subscribe((/** + * @return {?} + */ + function () { + _this.isModalVisible = false; + })); + }; + /** + * @param {?} id + * @param {?} userName + * @return {?} + */ + UsersComponent.prototype.delete = /** + * @param {?} id + * @param {?} userName + * @return {?} + */ + function (id, userName) { + var _this = this; + this.confirmationService + .warn('AbpIdentity::UserDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', { + messageLocalizationParams: [userName], + }) + .subscribe((/** + * @param {?} status + * @return {?} + */ + function (status) { + if (status === "confirm" /* confirm */) { + _this.store.dispatch(new IdentityDeleteUser(id)); + } + })); + }; + /** + * @param {?} data + * @return {?} + */ + UsersComponent.prototype.onPageChange = /** + * @param {?} data + * @return {?} + */ + function (data) { + this.pageQuery.skipCount = data.first; + this.pageQuery.maxResultCount = data.rows; + this.get(); + }; + /** + * @return {?} + */ + UsersComponent.prototype.get = /** + * @return {?} + */ + function () { + var _this = this; + this.loading = true; + this.store.dispatch(new IdentityGetUsers(this.pageQuery)).subscribe((/** + * @return {?} + */ + function () { return (_this.loading = false); })); + }; + UsersComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-users', + template: "
\n
\n
\n
\n
{{ 'AbpIdentity::Users' | abpLocalization }}
\n
\n
\n \n {{ 'AbpIdentity::NewUser' | abpLocalization }}\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n {{ 'AbpIdentity::UserName' | abpLocalization }}\n {{ 'AbpIdentity::EmailAddress' | abpLocalization }}\n {{ 'AbpIdentity::PhoneNumber' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n \n
\n \n \n \n
\n
\n \n {{ data.userName }}\n {{ data.email }}\n {{ data.phoneNumber }}\n \n
\n \n
\n
\n\n\n \n

{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}

\n
\n\n \n \n
\n \n \n \n
\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n \n \n
\n \n
\n
\n
\n
\n
\n
\n\n \n \n \n \n
\n\n\n" + }] } + ]; + /** @nocollapse */ + UsersComponent.ctorParameters = function () { return [ + { type: ng_theme_shared.ConfirmationService }, + { type: forms.FormBuilder }, + { type: store.Store } + ]; }; + UsersComponent.propDecorators = { + modalContent: [{ type: core.ViewChild, args: ['modalContent', { static: false },] }] + }; + __decorate([ + store.Select(IdentityState.getUsers), + __metadata("design:type", rxjs.Observable) + ], UsersComponent.prototype, "data$", void 0); + __decorate([ + store.Select(IdentityState.getUsersTotalCount), + __metadata("design:type", rxjs.Observable) + ], UsersComponent.prototype, "totalCount$", void 0); + return UsersComponent; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var UserResolver = /** @class */ (function () { + function UserResolver(store) { + this.store = store; + } + /** + * @return {?} + */ + UserResolver.prototype.resolve = /** + * @return {?} + */ + function () { + /** @type {?} */ + var users = this.store.selectSnapshot(IdentityState.getUsers); + return users && users.length ? null : this.store.dispatch(new IdentityGetUsers()); + }; + UserResolver.decorators = [ + { type: core.Injectable } + ]; + /** @nocollapse */ + UserResolver.ctorParameters = function () { return [ + { type: store.Store } + ]; }; + return UserResolver; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var ɵ0 = { requiredPolicy: 'AbpIdentity.Roles' }, ɵ1 = { requiredPolicy: 'AbpIdentity.Users' }; + /** @type {?} */ + var routes = [ + { path: '', redirectTo: 'roles', pathMatch: 'full' }, + { + path: 'roles', + component: ng_core.DynamicLayoutComponent, + canActivate: [ng_core.AuthGuard, ng_core.PermissionGuard], + data: ɵ0, + children: [{ path: '', component: RolesComponent, resolve: [RoleResolver] }], + }, + { + path: 'users', + component: ng_core.DynamicLayoutComponent, + canActivate: [ng_core.AuthGuard, ng_core.PermissionGuard], + data: ɵ1, + children: [ + { + path: '', + component: UsersComponent, + resolve: [RoleResolver, UserResolver], + }, + ], + }, + ]; + var IdentityRoutingModule = /** @class */ (function () { + function IdentityRoutingModule() { + } + IdentityRoutingModule.decorators = [ + { type: core.NgModule, args: [{ + imports: [router.RouterModule.forChild(routes)], + exports: [router.RouterModule], + providers: [RoleResolver, UserResolver], + },] } + ]; + return IdentityRoutingModule; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var IdentityModule = /** @class */ (function () { + function IdentityModule() { + } + IdentityModule.decorators = [ + { type: core.NgModule, args: [{ + declarations: [RolesComponent, UsersComponent], + imports: [ + store.NgxsModule.forFeature([IdentityState]), + ng_core.CoreModule, + IdentityRoutingModule, + ngBootstrap.NgbTabsetModule, + ng_theme_shared.ThemeSharedModule, + table.TableModule, + ngBootstrap.NgbDropdownModule, + ng_permissionManagement.PermissionManagementModule, + core$1.NgxValidateCoreModule, + ngxPerfectScrollbar.PerfectScrollbarModule, + ], + },] } + ]; + return IdentityModule; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + /** @type {?} */ + var IDENTITY_ROUTES = (/** @type {?} */ ([ + { + name: 'Administration', + path: '', + order: 1, + wrapper: true, + }, + { + name: 'Identity', + path: 'identity', + order: 1, + parentName: 'Administration', + layout: "application" /* application */, + children: [ + { path: 'roles', name: 'Roles', order: 2, requiredPolicy: 'AbpIdentity.Roles' }, + { path: 'users', name: 'Users', order: 1, requiredPolicy: 'AbpIdentity.Users' }, + ], + }, + ])); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var Identity; + (function (Identity) { + /** + * @record + */ + function State() { } + Identity.State = State; + /** + * @record + */ + function RoleSaveRequest() { } + Identity.RoleSaveRequest = RoleSaveRequest; + /** + * @record + */ + function RoleItem() { } + Identity.RoleItem = RoleItem; + /** + * @record + */ + function UserItem() { } + Identity.UserItem = UserItem; + /** + * @record + */ + function User() { } + Identity.User = User; + /** + * @record + */ + function UserSaveRequest() { } + Identity.UserSaveRequest = UserSaveRequest; + })(Identity || (Identity = {})); + + exports.IDENTITY_ROUTES = IDENTITY_ROUTES; + exports.IdentityAddRole = IdentityAddRole; + exports.IdentityAddUser = IdentityAddUser; + exports.IdentityDeleteRole = IdentityDeleteRole; + exports.IdentityDeleteUser = IdentityDeleteUser; + exports.IdentityGetRoleById = IdentityGetRoleById; + exports.IdentityGetRoles = IdentityGetRoles; + exports.IdentityGetUserById = IdentityGetUserById; + exports.IdentityGetUserRoles = IdentityGetUserRoles; + exports.IdentityGetUsers = IdentityGetUsers; + exports.IdentityModule = IdentityModule; + exports.IdentityService = IdentityService; + exports.IdentityState = IdentityState; + exports.IdentityUpdateRole = IdentityUpdateRole; + exports.IdentityUpdateUser = IdentityUpdateUser; + exports.RoleResolver = RoleResolver; + exports.RolesComponent = RolesComponent; + exports.ɵb = UsersComponent; + exports.ɵc = IdentityRoutingModule; + exports.ɵd = UserResolver; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); +//# sourceMappingURL=abp-ng.identity.umd.js.map diff --git a/npm/ng-packs/dist/identity/bundles/abp-ng.identity.umd.js.map b/npm/ng-packs/dist/identity/bundles/abp-ng.identity.umd.js.map new file mode 100644 index 00000000000..2de0d944302 --- /dev/null +++ b/npm/ng-packs/dist/identity/bundles/abp-ng.identity.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.identity.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","ng://@abp/ng.identity/lib/actions/identity.actions.ts","ng://@abp/ng.identity/lib/services/identity.service.ts","ng://@abp/ng.identity/lib/states/identity.state.ts","ng://@abp/ng.identity/lib/components/roles/roles.component.ts","ng://@abp/ng.identity/lib/resolvers/roles.resolver.ts","ng://@abp/ng.identity/lib/components/users/users.component.ts","ng://@abp/ng.identity/lib/resolvers/users.resolver.ts","ng://@abp/ng.identity/lib/identity-routing.module.ts","ng://@abp/ng.identity/lib/identity.module.ts","ng://@abp/ng.identity/lib/constants/routes.ts","ng://@abp/ng.identity/lib/models/identity.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Identity } from '../models/identity';\nimport { ABP } from '@abp/ng.core';\n\nexport class IdentityGetRoles {\n static readonly type = '[Identity] Get Roles';\n}\n\nexport class IdentityGetRoleById {\n static readonly type = '[Identity] Get Role By Id';\n constructor(public payload: string) {}\n}\n\nexport class IdentityDeleteRole {\n static readonly type = '[Identity] Delete Role';\n constructor(public payload: string) {}\n}\n\nexport class IdentityAddRole {\n static readonly type = '[Identity] Add Role';\n constructor(public payload: Identity.RoleSaveRequest) {}\n}\n\nexport class IdentityUpdateRole {\n static readonly type = '[Identity] Update Role';\n constructor(public payload: Identity.RoleItem) {}\n}\n\nexport class IdentityGetUsers {\n static readonly type = '[Identity] Get Users';\n constructor(public payload?: ABP.PageQueryParams) {}\n}\n\nexport class IdentityGetUserById {\n static readonly type = '[Identity] Get User By Id';\n constructor(public payload: string) {}\n}\n\nexport class IdentityDeleteUser {\n static readonly type = '[Identity] Delete User';\n constructor(public payload: string) {}\n}\n\nexport class IdentityAddUser {\n static readonly type = '[Identity] Add User';\n constructor(public payload: Identity.UserSaveRequest) {}\n}\n\nexport class IdentityUpdateUser {\n static readonly type = '[Identity] Update User';\n constructor(public payload: Identity.UserSaveRequest & { id: string }) {}\n}\n\nexport class IdentityGetUserRoles {\n static readonly type = '[Identity] Get User Roles';\n constructor(public payload: string) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RestService, Rest, ABP } from '@abp/ng.core';\nimport { Identity } from '../models/identity';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IdentityService {\n constructor(private rest: RestService) {}\n\n getRoles(): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/identity/roles',\n };\n\n return this.rest.request(request);\n }\n\n getRoleById(id: string): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: `/api/identity/roles/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n deleteRole(id: string): Observable {\n const request: Rest.Request = {\n method: 'DELETE',\n url: `/api/identity/roles/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n addRole(body: Identity.RoleSaveRequest): Observable {\n const request: Rest.Request = {\n method: 'POST',\n url: '/api/identity/roles',\n body,\n };\n\n return this.rest.request(request);\n }\n\n updateRole(body: Identity.RoleItem): Observable {\n const url = `/api/identity/roles/${body.id}`;\n delete body.id;\n\n const request: Rest.Request = {\n method: 'PUT',\n url,\n body,\n };\n\n return this.rest.request(request);\n }\n\n getUsers(params = {} as ABP.PageQueryParams): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/identity/users',\n params,\n };\n\n return this.rest.request(request);\n }\n\n getUserById(id: string): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: `/api/identity/users/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n getUserRoles(id: string): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: `/api/identity/users/${id}/roles`,\n };\n\n return this.rest.request(request);\n }\n\n deleteUser(id: string): Observable {\n const request: Rest.Request = {\n method: 'DELETE',\n url: `/api/identity/users/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n addUser(body: Identity.UserSaveRequest): Observable {\n const request: Rest.Request = {\n method: 'POST',\n url: '/api/identity/users',\n body,\n };\n\n return this.rest.request(request);\n }\n\n updateUser(body: Identity.UserItem): Observable {\n const url = `/identity/users/${body.id}`;\n delete body.id;\n\n const request: Rest.Request = {\n method: 'PUT',\n url,\n body,\n };\n\n return this.rest.request(request);\n }\n}\n","import { Action, Selector, State, StateContext } from '@ngxs/store';\nimport { switchMap, tap, pluck } from 'rxjs/operators';\nimport {\n IdentityAddRole,\n IdentityAddUser,\n IdentityDeleteRole,\n IdentityDeleteUser,\n IdentityGetRoleById,\n IdentityGetRoles,\n IdentityGetUserById,\n IdentityGetUsers,\n IdentityUpdateRole,\n IdentityUpdateUser,\n IdentityGetUserRoles,\n} from '../actions/identity.actions';\nimport { Identity } from '../models/identity';\nimport { IdentityService } from '../services/identity.service';\n\n@State({\n name: 'IdentityState',\n defaults: { roles: {}, selectedRole: {}, users: {}, selectedUser: {} } as Identity.State,\n})\nexport class IdentityState {\n @Selector()\n static getRoles({ roles }: Identity.State): Identity.RoleItem[] {\n return roles.items;\n }\n\n @Selector()\n static getRolesTotalCount({ roles }: Identity.State): number {\n return roles.totalCount;\n }\n\n @Selector()\n static getUsers({ users }: Identity.State): Identity.UserItem[] {\n return users.items;\n }\n\n @Selector()\n static getUsersTotalCount({ users }: Identity.State): number {\n return users.totalCount;\n }\n\n constructor(private identityService: IdentityService) {}\n\n @Action(IdentityGetRoles)\n getRoles({ patchState }: StateContext) {\n return this.identityService.getRoles().pipe(\n tap(roles =>\n patchState({\n roles,\n }),\n ),\n );\n }\n\n @Action(IdentityGetRoleById)\n getRole({ patchState }: StateContext, { payload }: IdentityGetRoleById) {\n return this.identityService.getRoleById(payload).pipe(\n tap(selectedRole =>\n patchState({\n selectedRole,\n }),\n ),\n );\n }\n\n @Action(IdentityDeleteRole)\n deleteRole({ dispatch }: StateContext, { payload }: IdentityGetRoleById) {\n return this.identityService.deleteRole(payload).pipe(switchMap(() => dispatch(new IdentityGetRoles())));\n }\n\n @Action(IdentityAddRole)\n addRole({ dispatch }: StateContext, { payload }: IdentityAddRole) {\n return this.identityService.addRole(payload).pipe(switchMap(() => dispatch(new IdentityGetRoles())));\n }\n\n @Action(IdentityUpdateRole)\n updateRole({ getState, dispatch }: StateContext, { payload }: IdentityUpdateRole) {\n return dispatch(new IdentityGetRoleById(payload.id)).pipe(\n switchMap(() => this.identityService.updateRole({ ...getState().selectedRole, ...payload })),\n switchMap(() => dispatch(new IdentityGetRoles())),\n );\n }\n\n @Action(IdentityGetUsers)\n getUsers({ patchState }: StateContext, { payload }: IdentityGetUsers) {\n return this.identityService.getUsers(payload).pipe(\n tap(users =>\n patchState({\n users,\n }),\n ),\n );\n }\n\n @Action(IdentityGetUserById)\n getUser({ patchState }: StateContext, { payload }: IdentityGetUserById) {\n return this.identityService.getUserById(payload).pipe(\n tap(selectedUser =>\n patchState({\n selectedUser,\n }),\n ),\n );\n }\n\n @Action(IdentityDeleteUser)\n deleteUser({ dispatch }: StateContext, { payload }: IdentityGetUserById) {\n return this.identityService.deleteUser(payload).pipe(switchMap(() => dispatch(new IdentityGetUsers())));\n }\n\n @Action(IdentityAddUser)\n addUser({ dispatch }: StateContext, { payload }: IdentityAddUser) {\n return this.identityService.addUser(payload).pipe(switchMap(() => dispatch(new IdentityGetUsers())));\n }\n\n @Action(IdentityUpdateUser)\n updateUser({ getState, dispatch }: StateContext, { payload }: IdentityUpdateUser) {\n return dispatch(new IdentityGetUserById(payload.id)).pipe(\n switchMap(() => this.identityService.updateUser({ ...getState().selectedUser, ...payload })),\n switchMap(() => dispatch(new IdentityGetUsers())),\n );\n }\n\n @Action(IdentityGetUserRoles)\n getUserRoles({ patchState }: StateContext, { payload }: IdentityGetUserRoles) {\n return this.identityService.getUserRoles(payload).pipe(\n pluck('items'),\n tap(selectedUserRoles =>\n patchState({\n selectedUserRoles,\n }),\n ),\n );\n }\n}\n","import { Component, TemplateRef, ViewChild } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { IdentityState } from '../../states/identity.state';\nimport { Identity } from '../../models/identity';\nimport {\n IdentityUpdateRole,\n IdentityAddRole,\n IdentityDeleteRole,\n IdentityGetRoleById,\n} from '../../actions/identity.actions';\nimport { pluck } from 'rxjs/operators';\nimport { ConfirmationService, Toaster } from '@abp/ng.theme.shared';\n\n@Component({\n selector: 'abp-roles',\n templateUrl: './roles.component.html',\n})\nexport class RolesComponent {\n @Select(IdentityState.getRoles)\n roles$: Observable;\n\n form: FormGroup;\n\n selected: Identity.RoleItem;\n\n isModalVisible: boolean;\n\n visiblePermissions: boolean = false;\n\n providerKey: string;\n\n @ViewChild('modalContent', { static: false })\n modalContent: TemplateRef;\n\n constructor(private confirmationService: ConfirmationService, private fb: FormBuilder, private store: Store) {}\n\n createForm() {\n this.form = this.fb.group({\n name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]],\n isDefault: [this.selected.isDefault || false],\n isPublic: [this.selected.isPublic || false],\n });\n }\n\n openModal() {\n this.createForm();\n this.isModalVisible = true;\n }\n\n onAdd() {\n this.selected = {} as Identity.RoleItem;\n this.openModal();\n }\n\n onEdit(id: string) {\n this.store\n .dispatch(new IdentityGetRoleById(id))\n .pipe(pluck('IdentityState', 'selectedRole'))\n .subscribe(selectedRole => {\n this.selected = selectedRole;\n this.openModal();\n });\n }\n\n save() {\n if (!this.form.valid) return;\n\n this.store\n .dispatch(\n this.selected.id\n ? new IdentityUpdateRole({ ...this.form.value, id: this.selected.id })\n : new IdentityAddRole(this.form.value),\n )\n .subscribe(() => {\n this.isModalVisible = false;\n });\n }\n\n delete(id: string, name: string) {\n this.confirmationService\n .warn('AbpIdentity::RoleDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\n messageLocalizationParams: [name],\n })\n .subscribe((status: Toaster.Status) => {\n if (status === Toaster.Status.confirm) {\n this.store.dispatch(new IdentityDeleteRole(id));\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Resolve } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { IdentityGetRoles } from '../actions/identity.actions';\nimport { Identity } from '../models/identity';\nimport { IdentityState } from '../states/identity.state';\n\n@Injectable()\nexport class RoleResolver implements Resolve {\n constructor(private store: Store) {}\n\n resolve() {\n const roles = this.store.selectSnapshot(IdentityState.getRoles);\n return roles && roles.length ? null : this.store.dispatch(new IdentityGetRoles());\n }\n}\n","import { ABP } from '@abp/ng.core';\nimport { ConfirmationService, Toaster } from '@abp/ng.theme.shared';\nimport { Component, OnInit, TemplateRef, TrackByFunction, ViewChild } from '@angular/core';\nimport { AbstractControl, FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { validatePassword } from '@ngx-validate/core';\nimport { Select, Store } from '@ngxs/store';\nimport { combineLatest, Observable, Subject } from 'rxjs';\nimport { debounceTime, filter, map, pluck, take } from 'rxjs/operators';\nimport snq from 'snq';\nimport {\n IdentityAddUser,\n IdentityDeleteUser,\n IdentityGetUserById,\n IdentityGetUserRoles,\n IdentityGetUsers,\n IdentityUpdateUser,\n} from '../../actions/identity.actions';\nimport { Identity } from '../../models/identity';\nimport { IdentityState } from '../../states/identity.state';\n@Component({\n selector: 'abp-users',\n templateUrl: './users.component.html',\n})\nexport class UsersComponent implements OnInit {\n @Select(IdentityState.getUsers)\n data$: Observable;\n\n @Select(IdentityState.getUsersTotalCount)\n totalCount$: Observable;\n\n @ViewChild('modalContent', { static: false })\n modalContent: TemplateRef;\n\n form: FormGroup;\n\n selected: Identity.UserItem;\n\n selectedUserRoles: Identity.RoleItem[];\n\n roles: Identity.RoleItem[];\n\n visiblePermissions: boolean = false;\n\n providerKey: string;\n\n pageQuery: ABP.PageQueryParams = {\n sorting: 'userName',\n };\n\n isModalVisible: boolean;\n\n loading: boolean = false;\n\n search$ = new Subject();\n\n trackByFn: TrackByFunction = (index, item) => Object.keys(item)[0] || index;\n\n get roleGroups(): FormGroup[] {\n return snq(() => (this.form.get('roleNames') as FormArray).controls as FormGroup[], []);\n }\n\n constructor(private confirmationService: ConfirmationService, private fb: FormBuilder, private store: Store) {}\n\n ngOnInit() {\n this.search$.pipe(debounceTime(300)).subscribe(value => {\n this.pageQuery.filter = value;\n this.get();\n });\n }\n\n buildForm() {\n this.roles = this.store.selectSnapshot(IdentityState.getRoles);\n\n this.form = this.fb.group({\n password: [\n '',\n [\n Validators.required,\n Validators.maxLength(32),\n Validators.minLength(6),\n validatePassword(['small', 'capital', 'number', 'special']),\n ],\n ],\n userName: [this.selected.userName || '', [Validators.required, Validators.maxLength(256)]],\n email: [this.selected.email || '', [Validators.required, Validators.email, Validators.maxLength(256)]],\n name: [this.selected.name || '', [Validators.maxLength(64)]],\n surname: [this.selected.surname || '', [Validators.maxLength(64)]],\n phoneNumber: [this.selected.phoneNumber || '', [Validators.maxLength(16)]],\n lockoutEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)],\n twoFactorEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)],\n roleNames: this.fb.array(\n this.roles.map(role =>\n this.fb.group({\n [role.name]: [!!snq(() => this.selectedUserRoles.find(userRole => userRole.id === role.id))],\n }),\n ),\n ),\n });\n }\n\n openModal() {\n this.buildForm();\n this.isModalVisible = true;\n }\n\n onAdd() {\n this.selected = {} as Identity.UserItem;\n this.selectedUserRoles = [] as Identity.RoleItem[];\n this.openModal();\n }\n\n onEdit(id: string) {\n combineLatest([this.store.dispatch(new IdentityGetUserById(id)), this.store.dispatch(new IdentityGetUserRoles(id))])\n .pipe(\n filter(([res1, res2]) => res1 && res2),\n map(([state, _]) => state),\n pluck('IdentityState'),\n take(1),\n )\n .subscribe((state: Identity.State) => {\n this.selected = state.selectedUser;\n this.selectedUserRoles = state.selectedUserRoles;\n this.openModal();\n });\n }\n\n save() {\n if (!this.form.valid) return;\n\n const { roleNames } = this.form.value;\n const mappedRoleNames = snq(\n () => roleNames.filter(role => !!role[Object.keys(role)[0]]).map(role => Object.keys(role)[0]),\n [],\n );\n\n this.store\n .dispatch(\n this.selected.id\n ? new IdentityUpdateUser({\n ...this.form.value,\n id: this.selected.id,\n roleNames: mappedRoleNames,\n })\n : new IdentityAddUser({\n ...this.form.value,\n roleNames: mappedRoleNames,\n }),\n )\n .subscribe(() => {\n this.isModalVisible = false;\n });\n }\n\n delete(id: string, userName: string) {\n this.confirmationService\n .warn('AbpIdentity::UserDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\n messageLocalizationParams: [userName],\n })\n .subscribe((status: Toaster.Status) => {\n if (status === Toaster.Status.confirm) {\n this.store.dispatch(new IdentityDeleteUser(id));\n }\n });\n }\n\n onPageChange(data) {\n this.pageQuery.skipCount = data.first;\n this.pageQuery.maxResultCount = data.rows;\n\n this.get();\n }\n\n get() {\n this.loading = true;\n this.store.dispatch(new IdentityGetUsers(this.pageQuery)).subscribe(() => (this.loading = false));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Resolve } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { IdentityGetUsers } from '../actions/identity.actions';\nimport { Identity } from '../models/identity';\nimport { IdentityState } from '../states/identity.state';\n\n@Injectable()\nexport class UserResolver implements Resolve {\n constructor(private store: Store) {}\n\n resolve() {\n const users = this.store.selectSnapshot(IdentityState.getUsers);\n return users && users.length ? null : this.store.dispatch(new IdentityGetUsers());\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { RolesComponent } from './components/roles/roles.component';\nimport { RoleResolver } from './resolvers/roles.resolver';\nimport { DynamicLayoutComponent, AuthGuard, PermissionGuard } from '@abp/ng.core';\nimport { UsersComponent } from './components/users/users.component';\nimport { UserResolver } from './resolvers/users.resolver';\n\nconst routes: Routes = [\n { path: '', redirectTo: 'roles', pathMatch: 'full' },\n {\n path: 'roles',\n component: DynamicLayoutComponent,\n canActivate: [AuthGuard, PermissionGuard],\n data: { requiredPolicy: 'AbpIdentity.Roles' },\n children: [{ path: '', component: RolesComponent, resolve: [RoleResolver] }],\n },\n {\n path: 'users',\n component: DynamicLayoutComponent,\n canActivate: [AuthGuard, PermissionGuard],\n data: { requiredPolicy: 'AbpIdentity.Users' },\n children: [\n {\n path: '',\n component: UsersComponent,\n resolve: [RoleResolver, UserResolver],\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n providers: [RoleResolver, UserResolver],\n})\nexport class IdentityRoutingModule {}\n","import { CoreModule } from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { NgxsModule } from '@ngxs/store';\nimport { RolesComponent } from './components/roles/roles.component';\nimport { IdentityRoutingModule } from './identity-routing.module';\nimport { IdentityState } from './states/identity.state';\nimport { NgbTabsetModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { UsersComponent } from './components/users/users.component';\nimport { PermissionManagementModule } from '@abp/ng.permission-management';\nimport { TableModule } from 'primeng/table';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';\n\n@NgModule({\n declarations: [RolesComponent, UsersComponent],\n imports: [\n NgxsModule.forFeature([IdentityState]),\n CoreModule,\n IdentityRoutingModule,\n NgbTabsetModule,\n ThemeSharedModule,\n TableModule,\n NgbDropdownModule,\n PermissionManagementModule,\n NgxValidateCoreModule,\n PerfectScrollbarModule,\n ],\n})\nexport class IdentityModule {}\n","import { eLayoutType, ABP } from '@abp/ng.core';\n\nexport const IDENTITY_ROUTES = [\n {\n name: 'Administration',\n path: '',\n order: 1,\n wrapper: true,\n },\n {\n name: 'Identity',\n path: 'identity',\n order: 1,\n parentName: 'Administration',\n layout: eLayoutType.application,\n children: [\n { path: 'roles', name: 'Roles', order: 2, requiredPolicy: 'AbpIdentity.Roles' },\n { path: 'users', name: 'Users', order: 1, requiredPolicy: 'AbpIdentity.Users' },\n ],\n },\n] as ABP.FullRoute[];\n","import { ABP } from '@abp/ng.core';\n\nexport namespace Identity {\n export interface State {\n roles: RoleResponse;\n users: UserResponse;\n selectedRole: RoleItem;\n selectedUser: UserItem;\n selectedUserRoles: RoleItem[];\n }\n\n export type RoleResponse = ABP.PagedResponse;\n\n export interface RoleSaveRequest {\n name: string;\n isDefault: boolean;\n isPublic: boolean;\n }\n\n export interface RoleItem extends RoleSaveRequest {\n isStatic: boolean;\n concurrencyStamp: string;\n id: string;\n }\n\n export type UserResponse = ABP.PagedResponse;\n\n export interface UserItem extends User {\n tenantId: string;\n emailConfirmed: boolean;\n phoneNumberConfirmed: boolean;\n isLockedOut: boolean;\n concurrencyStamp: string;\n id: string;\n }\n\n export interface User {\n userName: string;\n name: string;\n surname: string;\n email: string;\n phoneNumber: string;\n twoFactorEnabled: true;\n lockoutEnabled: true;\n }\n\n export interface UserSaveRequest extends User {\n password: string;\n roleNames: string[];\n }\n}\n"],"names":["Injectable","RestService","tap","switchMap","pluck","tslib_1.__decorate","Action","Selector","State","Validators","Component","ConfirmationService","FormBuilder","Store","ViewChild","Select","Observable","Subject","debounceTime","validatePassword","combineLatest","filter","map","take","DynamicLayoutComponent","AuthGuard","PermissionGuard","NgModule","RouterModule","NgxsModule","CoreModule","NgbTabsetModule","ThemeSharedModule","TableModule","NgbDropdownModule","PermissionManagementModule","NgxValidateCoreModule","PerfectScrollbarModule"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/bundles/abp-ng.identity.umd.min.js b/npm/ng-packs/dist/identity/bundles/abp-ng.identity.umd.min.js new file mode 100644 index 00000000000..06bb0cb2a2d --- /dev/null +++ b/npm/ng-packs/dist/identity/bundles/abp-ng.identity.umd.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@abp/ng.core"),require("@angular/core"),require("@ngxs/store"),require("rxjs"),require("@angular/forms"),require("rxjs/operators"),require("@abp/ng.theme.shared"),require("@angular/router"),require("@ngx-validate/core"),require("snq"),require("@ng-bootstrap/ng-bootstrap"),require("@abp/ng.permission-management"),require("primeng/table"),require("ngx-perfect-scrollbar")):"function"==typeof define&&define.amd?define("@abp/ng.identity",["exports","@abp/ng.core","@angular/core","@ngxs/store","rxjs","@angular/forms","rxjs/operators","@abp/ng.theme.shared","@angular/router","@ngx-validate/core","snq","@ng-bootstrap/ng-bootstrap","@abp/ng.permission-management","primeng/table","ngx-perfect-scrollbar"],t):t(((e=e||self).abp=e.abp||{},e.abp.ng=e.abp.ng||{},e.abp.ng.identity={}),e.ng_core,e.ng.core,e.store,e.rxjs,e.ng.forms,e.rxjs.operators,e.ng_theme_shared,e.ng.router,e.core$1,e.snq,e.ngBootstrap,e.ng_permissionManagement,e.table,e.ngxPerfectScrollbar)}(this,function(e,t,n,o,r,i,a,s,l,p,d,c,u,b,y){"use strict";d=d&&d.hasOwnProperty("default")?d.default:d;var m=function(){return(m=Object.assign||function(e){for(var t,n=1,o=arguments.length;n=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function h(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function g(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var o,r,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(o=i.next()).done;)a.push(o.value)}catch(e){r={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return a}var v,I=function(){function e(){}return e.type="[Identity] Get Roles",e}(),w=function(){function e(e){this.payload=e}return e.type="[Identity] Get Role By Id",e}(),A=function(){function e(e){this.payload=e}return e.type="[Identity] Delete Role",e}(),R=function(){function e(e){this.payload=e}return e.type="[Identity] Add Role",e}(),U=function(){function e(e){this.payload=e}return e.type="[Identity] Update Role",e}(),S=function(){function e(e){this.payload=e}return e.type="[Identity] Get Users",e}(),L=function(){function e(e){this.payload=e}return e.type="[Identity] Get User By Id",e}(),N=function(){function e(e){this.payload=e}return e.type="[Identity] Delete User",e}(),x=function(){function e(e){this.payload=e}return e.type="[Identity] Add User",e}(),C=function(){function e(e){this.payload=e}return e.type="[Identity] Update User",e}(),k=function(){function e(e){this.payload=e}return e.type="[Identity] Get User Roles",e}(),P=function(){function e(e){this.rest=e}return e.prototype.getRoles=function(){return this.rest.request({method:"GET",url:"/api/identity/roles"})},e.prototype.getRoleById=function(e){var t={method:"GET",url:"/api/identity/roles/"+e};return this.rest.request(t)},e.prototype.deleteRole=function(e){var t={method:"DELETE",url:"/api/identity/roles/"+e};return this.rest.request(t)},e.prototype.addRole=function(e){var t={method:"POST",url:"/api/identity/roles",body:e};return this.rest.request(t)},e.prototype.updateRole=function(e){var t="/api/identity/roles/"+e.id;delete e.id;var n={method:"PUT",url:t,body:e};return this.rest.request(n)},e.prototype.getUsers=function(e){void 0===e&&(e={});var t={method:"GET",url:"/api/identity/users",params:e};return this.rest.request(t)},e.prototype.getUserById=function(e){var t={method:"GET",url:"/api/identity/users/"+e};return this.rest.request(t)},e.prototype.getUserRoles=function(e){var t={method:"GET",url:"/api/identity/users/"+e+"/roles"};return this.rest.request(t)},e.prototype.deleteUser=function(e){var t={method:"DELETE",url:"/api/identity/users/"+e};return this.rest.request(t)},e.prototype.addUser=function(e){var t={method:"POST",url:"/api/identity/users",body:e};return this.rest.request(t)},e.prototype.updateUser=function(e){var t="/identity/users/"+e.id;delete e.id;var n={method:"PUT",url:t,body:e};return this.rest.request(n)},e.decorators=[{type:n.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:t.RestService}]},e.ngInjectableDef=n.ɵɵdefineInjectable({factory:function(){return new e(n.ɵɵinject(t.RestService))},token:e,providedIn:"root"}),e}(),M=function(){function e(e){this.identityService=e}return e.getRoles=function(e){return e.roles.items},e.getRolesTotalCount=function(e){return e.roles.totalCount},e.getUsers=function(e){return e.users.items},e.getUsersTotalCount=function(e){return e.users.totalCount},e.prototype.getRoles=function(e){var t=e.patchState;return this.identityService.getRoles().pipe(a.tap(function(e){return t({roles:e})}))},e.prototype.getRole=function(e,t){var n=e.patchState,o=t.payload;return this.identityService.getRoleById(o).pipe(a.tap(function(e){return n({selectedRole:e})}))},e.prototype.deleteRole=function(e,t){var n=e.dispatch,o=t.payload;return this.identityService.deleteRole(o).pipe(a.switchMap(function(){return n(new I)}))},e.prototype.addRole=function(e,t){var n=e.dispatch,o=t.payload;return this.identityService.addRole(o).pipe(a.switchMap(function(){return n(new I)}))},e.prototype.updateRole=function(e,t){var n=this,o=e.getState,r=e.dispatch,i=t.payload;return r(new w(i.id)).pipe(a.switchMap(function(){return n.identityService.updateRole(m({},o().selectedRole,i))}),a.switchMap(function(){return r(new I)}))},e.prototype.getUsers=function(e,t){var n=e.patchState,o=t.payload;return this.identityService.getUsers(o).pipe(a.tap(function(e){return n({users:e})}))},e.prototype.getUser=function(e,t){var n=e.patchState,o=t.payload;return this.identityService.getUserById(o).pipe(a.tap(function(e){return n({selectedUser:e})}))},e.prototype.deleteUser=function(e,t){var n=e.dispatch,o=t.payload;return this.identityService.deleteUser(o).pipe(a.switchMap(function(){return n(new S)}))},e.prototype.addUser=function(e,t){var n=e.dispatch,o=t.payload;return this.identityService.addUser(o).pipe(a.switchMap(function(){return n(new S)}))},e.prototype.updateUser=function(e,t){var n=this,o=e.getState,r=e.dispatch,i=t.payload;return r(new L(i.id)).pipe(a.switchMap(function(){return n.identityService.updateUser(m({},o().selectedUser,i))}),a.switchMap(function(){return r(new S)}))},e.prototype.getUserRoles=function(e,t){var n=e.patchState,o=t.payload;return this.identityService.getUserRoles(o).pipe(a.pluck("items"),a.tap(function(e){return n({selectedUserRoles:e})}))},f([o.Action(I),h("design:type",Function),h("design:paramtypes",[Object]),h("design:returntype",void 0)],e.prototype,"getRoles",null),f([o.Action(w),h("design:type",Function),h("design:paramtypes",[Object,w]),h("design:returntype",void 0)],e.prototype,"getRole",null),f([o.Action(A),h("design:type",Function),h("design:paramtypes",[Object,w]),h("design:returntype",void 0)],e.prototype,"deleteRole",null),f([o.Action(R),h("design:type",Function),h("design:paramtypes",[Object,R]),h("design:returntype",void 0)],e.prototype,"addRole",null),f([o.Action(U),h("design:type",Function),h("design:paramtypes",[Object,U]),h("design:returntype",void 0)],e.prototype,"updateRole",null),f([o.Action(S),h("design:type",Function),h("design:paramtypes",[Object,S]),h("design:returntype",void 0)],e.prototype,"getUsers",null),f([o.Action(L),h("design:type",Function),h("design:paramtypes",[Object,L]),h("design:returntype",void 0)],e.prototype,"getUser",null),f([o.Action(N),h("design:type",Function),h("design:paramtypes",[Object,L]),h("design:returntype",void 0)],e.prototype,"deleteUser",null),f([o.Action(x),h("design:type",Function),h("design:paramtypes",[Object,x]),h("design:returntype",void 0)],e.prototype,"addUser",null),f([o.Action(C),h("design:type",Function),h("design:paramtypes",[Object,C]),h("design:returntype",void 0)],e.prototype,"updateUser",null),f([o.Action(k),h("design:type",Function),h("design:paramtypes",[Object,k]),h("design:returntype",void 0)],e.prototype,"getUserRoles",null),f([o.Selector(),h("design:type",Function),h("design:paramtypes",[Object]),h("design:returntype",Array)],e,"getRoles",null),f([o.Selector(),h("design:type",Function),h("design:paramtypes",[Object]),h("design:returntype",Number)],e,"getRolesTotalCount",null),f([o.Selector(),h("design:type",Function),h("design:paramtypes",[Object]),h("design:returntype",Array)],e,"getUsers",null),f([o.Selector(),h("design:type",Function),h("design:paramtypes",[Object]),h("design:returntype",Number)],e,"getUsersTotalCount",null),e=f([o.State({name:"IdentityState",defaults:{roles:{},selectedRole:{},users:{},selectedUser:{}}}),h("design:paramtypes",[P])],e)}(),z=function(){function e(e,t,n){this.confirmationService=e,this.fb=t,this.store=n,this.visiblePermissions=!1}return e.prototype.createForm=function(){this.form=this.fb.group({name:[this.selected.name||"",[i.Validators.required,i.Validators.maxLength(256)]],isDefault:[this.selected.isDefault||!1],isPublic:[this.selected.isPublic||!1]})},e.prototype.openModal=function(){this.createForm(),this.isModalVisible=!0},e.prototype.onAdd=function(){this.selected={},this.openModal()},e.prototype.onEdit=function(e){var t=this;this.store.dispatch(new w(e)).pipe(a.pluck("IdentityState","selectedRole")).subscribe(function(e){t.selected=e,t.openModal()})},e.prototype.save=function(){var e=this;this.form.valid&&this.store.dispatch(this.selected.id?new U(m({},this.form.value,{id:this.selected.id})):new R(this.form.value)).subscribe(function(){e.isModalVisible=!1})},e.prototype.delete=function(e,t){var n=this;this.confirmationService.warn("AbpIdentity::RoleDeletionConfirmationMessage","AbpIdentity::AreYouSure",{messageLocalizationParams:[t]}).subscribe(function(t){"confirm"===t&&n.store.dispatch(new A(e))})},e.decorators=[{type:n.Component,args:[{selector:"abp-roles",template:'
\n
\n
\n
\n
{{ \'AbpIdentity::Roles\' | abpLocalization }}
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ \'AbpIdentity::Actions\' | abpLocalization }}\n {{ \'AbpIdentity::RoleName\' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ \'AbpIdentity::Actions\' | abpLocalization }}\n \n
\n \n \n \n
\n
\n \n {{ data.name }}\n \n
\n
\n
\n
\n\n\n \n

{{ (selected?.id ? \'AbpIdentity::Edit\' : \'AbpIdentity::NewRole\') | abpLocalization }}

\n
\n\n \n
\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n
\n\n \n \n \n \n
\n\n\n'}]}],e.ctorParameters=function(){return[{type:s.ConfirmationService},{type:i.FormBuilder},{type:o.Store}]},e.propDecorators={modalContent:[{type:n.ViewChild,args:["modalContent",{static:!1}]}]},f([o.Select(M.getRoles),h("design:type",r.Observable)],e.prototype,"roles$",void 0),e}(),j=function(){function e(e){this.store=e}return e.prototype.resolve=function(){var e=this.store.selectSnapshot(M.getRoles);return e&&e.length?null:this.store.dispatch(new I)},e.decorators=[{type:n.Injectable}],e.ctorParameters=function(){return[{type:o.Store}]},e}(),D=function(){function e(e,t,n){this.confirmationService=e,this.fb=t,this.store=n,this.visiblePermissions=!1,this.pageQuery={sorting:"userName"},this.loading=!1,this.search$=new r.Subject,this.trackByFn=function(e,t){return Object.keys(t)[0]||e}}return Object.defineProperty(e.prototype,"roleGroups",{get:function(){var e=this;return d(function(){return e.form.get("roleNames").controls},[])},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){var e=this;this.search$.pipe(a.debounceTime(300)).subscribe(function(t){e.pageQuery.filter=t,e.get()})},e.prototype.buildForm=function(){var e=this;this.roles=this.store.selectSnapshot(M.getRoles),this.form=this.fb.group({password:["",[i.Validators.required,i.Validators.maxLength(32),i.Validators.minLength(6),p.validatePassword(["small","capital","number","special"])]],userName:[this.selected.userName||"",[i.Validators.required,i.Validators.maxLength(256)]],email:[this.selected.email||"",[i.Validators.required,i.Validators.email,i.Validators.maxLength(256)]],name:[this.selected.name||"",[i.Validators.maxLength(64)]],surname:[this.selected.surname||"",[i.Validators.maxLength(64)]],phoneNumber:[this.selected.phoneNumber||"",[i.Validators.maxLength(16)]],lockoutEnabled:[this.selected.twoFactorEnabled||!this.selected.id],twoFactorEnabled:[this.selected.twoFactorEnabled||!this.selected.id],roleNames:this.fb.array(this.roles.map(function(t){var n;return e.fb.group(((n={})[t.name]=[!!d(function(){return e.selectedUserRoles.find(function(e){return e.id===t.id})})],n))}))})},e.prototype.openModal=function(){this.buildForm(),this.isModalVisible=!0},e.prototype.onAdd=function(){this.selected={},this.selectedUserRoles=[],this.openModal()},e.prototype.onEdit=function(e){var t=this;r.combineLatest([this.store.dispatch(new L(e)),this.store.dispatch(new k(e))]).pipe(a.filter(function(e){var t=g(e,2),n=t[0],o=t[1];return n&&o}),a.map(function(e){var t=g(e,2),n=t[0];t[1];return n}),a.pluck("IdentityState"),a.take(1)).subscribe(function(e){t.selected=e.selectedUser,t.selectedUserRoles=e.selectedUserRoles,t.openModal()})},e.prototype.save=function(){var e=this;if(this.form.valid){var t=this.form.value.roleNames,n=d(function(){return t.filter(function(e){return!!e[Object.keys(e)[0]]}).map(function(e){return Object.keys(e)[0]})},[]);this.store.dispatch(this.selected.id?new C(m({},this.form.value,{id:this.selected.id,roleNames:n})):new x(m({},this.form.value,{roleNames:n}))).subscribe(function(){e.isModalVisible=!1})}},e.prototype.delete=function(e,t){var n=this;this.confirmationService.warn("AbpIdentity::UserDeletionConfirmationMessage","AbpIdentity::AreYouSure",{messageLocalizationParams:[t]}).subscribe(function(t){"confirm"===t&&n.store.dispatch(new N(e))})},e.prototype.onPageChange=function(e){this.pageQuery.skipCount=e.first,this.pageQuery.maxResultCount=e.rows,this.get()},e.prototype.get=function(){var e=this;this.loading=!0,this.store.dispatch(new S(this.pageQuery)).subscribe(function(){return e.loading=!1})},e.decorators=[{type:n.Component,args:[{selector:"abp-users",template:'
\n
\n
\n
\n
{{ \'AbpIdentity::Users\' | abpLocalization }}
\n
\n
\n \n {{ \'AbpIdentity::NewUser\' | abpLocalization }}\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ \'AbpIdentity::Actions\' | abpLocalization }}\n {{ \'AbpIdentity::UserName\' | abpLocalization }}\n {{ \'AbpIdentity::EmailAddress\' | abpLocalization }}\n {{ \'AbpIdentity::PhoneNumber\' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ \'AbpIdentity::Actions\' | abpLocalization }}\n \n
\n \n \n \n
\n
\n \n {{ data.userName }}\n {{ data.email }}\n {{ data.phoneNumber }}\n \n
\n \n
\n
\n\n\n \n

{{ (selected?.id ? \'AbpIdentity::Edit\' : \'AbpIdentity::NewUser\') | abpLocalization }}

\n
\n\n \n \n
\n \n \n \n
\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n \n \n
\n \n
\n
\n
\n
\n
\n
\n\n \n \n \n \n
\n\n\n'}]}],e.ctorParameters=function(){return[{type:s.ConfirmationService},{type:i.FormBuilder},{type:o.Store}]},e.propDecorators={modalContent:[{type:n.ViewChild,args:["modalContent",{static:!1}]}]},f([o.Select(M.getUsers),h("design:type",r.Observable)],e.prototype,"data$",void 0),f([o.Select(M.getUsersTotalCount),h("design:type",r.Observable)],e.prototype,"totalCount$",void 0),e}(),q=function(){function e(e){this.store=e}return e.prototype.resolve=function(){var e=this.store.selectSnapshot(M.getUsers);return e&&e.length?null:this.store.dispatch(new S)},e.decorators=[{type:n.Injectable}],e.ctorParameters=function(){return[{type:o.Store}]},e}(),O=[{path:"",redirectTo:"roles",pathMatch:"full"},{path:"roles",component:t.DynamicLayoutComponent,canActivate:[t.AuthGuard,t.PermissionGuard],data:{requiredPolicy:"AbpIdentity.Roles"},children:[{path:"",component:z,resolve:[j]}]},{path:"users",component:t.DynamicLayoutComponent,canActivate:[t.AuthGuard,t.PermissionGuard],data:{requiredPolicy:"AbpIdentity.Users"},children:[{path:"",component:D,resolve:[j,q]}]}],F=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[l.RouterModule.forChild(O)],exports:[l.RouterModule],providers:[j,q]}]}],e}(),T=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{declarations:[z,D],imports:[o.NgxsModule.forFeature([M]),t.CoreModule,F,c.NgbTabsetModule,s.ThemeSharedModule,b.TableModule,c.NgbDropdownModule,u.PermissionManagementModule,p.NgxValidateCoreModule,y.PerfectScrollbarModule]}]}],e}();!function(e){e.State=function(){},e.RoleSaveRequest=function(){},e.RoleItem=function(){},e.UserItem=function(){},e.User=function(){},e.UserSaveRequest=function(){}}(v||(v={})),e.IDENTITY_ROUTES=[{name:"Administration",path:"",order:1,wrapper:!0},{name:"Identity",path:"identity",order:1,parentName:"Administration",layout:"application",children:[{path:"roles",name:"Roles",order:2,requiredPolicy:"AbpIdentity.Roles"},{path:"users",name:"Users",order:1,requiredPolicy:"AbpIdentity.Users"}]}],e.IdentityAddRole=R,e.IdentityAddUser=x,e.IdentityDeleteRole=A,e.IdentityDeleteUser=N,e.IdentityGetRoleById=w,e.IdentityGetRoles=I,e.IdentityGetUserById=L,e.IdentityGetUserRoles=k,e.IdentityGetUsers=S,e.IdentityModule=T,e.IdentityService=P,e.IdentityState=M,e.IdentityUpdateRole=U,e.IdentityUpdateUser=C,e.RoleResolver=j,e.RolesComponent=z,e.ɵb=D,e.ɵc=F,e.ɵd=q,Object.defineProperty(e,"__esModule",{value:!0})}); +//# sourceMappingURL=abp-ng.identity.umd.min.js.map \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/bundles/abp-ng.identity.umd.min.js.map b/npm/ng-packs/dist/identity/bundles/abp-ng.identity.umd.min.js.map new file mode 100644 index 00000000000..8d0504bfa99 --- /dev/null +++ b/npm/ng-packs/dist/identity/bundles/abp-ng.identity.umd.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@abp/ng.identity/lib/actions/identity.actions.ts","ng://@abp/ng.identity/lib/models/identity.ts","ng://@abp/ng.identity/lib/services/identity.service.ts","ng://@abp/ng.identity/lib/states/identity.state.ts","ng://@abp/ng.identity/lib/components/roles/roles.component.ts","ng://@abp/ng.identity/lib/resolvers/roles.resolver.ts","ng://@abp/ng.identity/lib/components/users/users.component.ts","ng://@abp/ng.identity/lib/resolvers/users.resolver.ts","ng://@abp/ng.identity/lib/identity-routing.module.ts","ng://@abp/ng.identity/lib/identity.module.ts","ng://@abp/ng.identity/lib/constants/routes.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__metadata","metadataKey","metadataValue","metadata","__read","o","m","Symbol","iterator","e","ar","next","done","push","value","error","Identity","IdentityGetRoles","type","IdentityGetRoleById","payload","IdentityDeleteRole","IdentityAddRole","IdentityUpdateRole","IdentityGetUsers","IdentityGetUserById","IdentityDeleteUser","IdentityAddUser","IdentityUpdateUser","IdentityGetUserRoles","IdentityService","rest","getRoles","request","method","url","getRoleById","id","deleteRole","addRole","body","updateRole","getUsers","params","getUserById","getUserRoles","deleteUser","addUser","updateUser","Injectable","args","providedIn","RestService","IdentityState","identityService","_a","roles","items","getRolesTotalCount","totalCount","users","getUsersTotalCount","patchState","pipe","tap","getRole","_b","selectedRole","dispatch","switchMap","_this","getState","getUser","selectedUser","pluck","selectedUserRoles","tslib_1.__decorate","Action","Selector","State","name","defaults","RolesComponent","confirmationService","fb","store","visiblePermissions","createForm","form","group","selected","Validators","required","maxLength","isDefault","isPublic","openModal","isModalVisible","onAdd","onEdit","subscribe","save","valid","delete","warn","messageLocalizationParams","status","Component","selector","template","ConfirmationService","FormBuilder","Store","ViewChild","static","Select","Observable","RoleResolver","resolve","selectSnapshot","UsersComponent","pageQuery","sorting","loading","search$","Subject","trackByFn","index","item","keys","snq","get","ngOnInit","debounceTime","filter","buildForm","password","minLength","validatePassword","userName","email","surname","phoneNumber","lockoutEnabled","twoFactorEnabled","roleNames","array","map","role","find","userRole","combineLatest","res1","res2","state","take","mappedRoleNames","onPageChange","data","skipCount","first","maxResultCount","rows","UserResolver","routes","path","redirectTo","pathMatch","component","DynamicLayoutComponent","canActivate","AuthGuard","PermissionGuard","requiredPolicy","children","IdentityRoutingModule","NgModule","imports","RouterModule","forChild","exports","providers","IdentityModule","declarations","NgxsModule","forFeature","CoreModule","NgbTabsetModule","ThemeSharedModule","TableModule","NgbDropdownModule","PermissionManagementModule","NgxValidateCoreModule","PerfectScrollbarModule","order","wrapper","parentName","layout"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Identity } from '../models/identity';\nimport { ABP } from '@abp/ng.core';\n\nexport class IdentityGetRoles {\n static readonly type = '[Identity] Get Roles';\n}\n\nexport class IdentityGetRoleById {\n static readonly type = '[Identity] Get Role By Id';\n constructor(public payload: string) {}\n}\n\nexport class IdentityDeleteRole {\n static readonly type = '[Identity] Delete Role';\n constructor(public payload: string) {}\n}\n\nexport class IdentityAddRole {\n static readonly type = '[Identity] Add Role';\n constructor(public payload: Identity.RoleSaveRequest) {}\n}\n\nexport class IdentityUpdateRole {\n static readonly type = '[Identity] Update Role';\n constructor(public payload: Identity.RoleItem) {}\n}\n\nexport class IdentityGetUsers {\n static readonly type = '[Identity] Get Users';\n constructor(public payload?: ABP.PageQueryParams) {}\n}\n\nexport class IdentityGetUserById {\n static readonly type = '[Identity] Get User By Id';\n constructor(public payload: string) {}\n}\n\nexport class IdentityDeleteUser {\n static readonly type = '[Identity] Delete User';\n constructor(public payload: string) {}\n}\n\nexport class IdentityAddUser {\n static readonly type = '[Identity] Add User';\n constructor(public payload: Identity.UserSaveRequest) {}\n}\n\nexport class IdentityUpdateUser {\n static readonly type = '[Identity] Update User';\n constructor(public payload: Identity.UserSaveRequest & { id: string }) {}\n}\n\nexport class IdentityGetUserRoles {\n static readonly type = '[Identity] Get User Roles';\n constructor(public payload: string) {}\n}\n","import { ABP } from '@abp/ng.core';\n\nexport namespace Identity {\n export interface State {\n roles: RoleResponse;\n users: UserResponse;\n selectedRole: RoleItem;\n selectedUser: UserItem;\n selectedUserRoles: RoleItem[];\n }\n\n export type RoleResponse = ABP.PagedResponse;\n\n export interface RoleSaveRequest {\n name: string;\n isDefault: boolean;\n isPublic: boolean;\n }\n\n export interface RoleItem extends RoleSaveRequest {\n isStatic: boolean;\n concurrencyStamp: string;\n id: string;\n }\n\n export type UserResponse = ABP.PagedResponse;\n\n export interface UserItem extends User {\n tenantId: string;\n emailConfirmed: boolean;\n phoneNumberConfirmed: boolean;\n isLockedOut: boolean;\n concurrencyStamp: string;\n id: string;\n }\n\n export interface User {\n userName: string;\n name: string;\n surname: string;\n email: string;\n phoneNumber: string;\n twoFactorEnabled: true;\n lockoutEnabled: true;\n }\n\n export interface UserSaveRequest extends User {\n password: string;\n roleNames: string[];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RestService, Rest, ABP } from '@abp/ng.core';\nimport { Identity } from '../models/identity';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IdentityService {\n constructor(private rest: RestService) {}\n\n getRoles(): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/identity/roles',\n };\n\n return this.rest.request(request);\n }\n\n getRoleById(id: string): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: `/api/identity/roles/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n deleteRole(id: string): Observable {\n const request: Rest.Request = {\n method: 'DELETE',\n url: `/api/identity/roles/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n addRole(body: Identity.RoleSaveRequest): Observable {\n const request: Rest.Request = {\n method: 'POST',\n url: '/api/identity/roles',\n body,\n };\n\n return this.rest.request(request);\n }\n\n updateRole(body: Identity.RoleItem): Observable {\n const url = `/api/identity/roles/${body.id}`;\n delete body.id;\n\n const request: Rest.Request = {\n method: 'PUT',\n url,\n body,\n };\n\n return this.rest.request(request);\n }\n\n getUsers(params = {} as ABP.PageQueryParams): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/identity/users',\n params,\n };\n\n return this.rest.request(request);\n }\n\n getUserById(id: string): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: `/api/identity/users/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n getUserRoles(id: string): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: `/api/identity/users/${id}/roles`,\n };\n\n return this.rest.request(request);\n }\n\n deleteUser(id: string): Observable {\n const request: Rest.Request = {\n method: 'DELETE',\n url: `/api/identity/users/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n addUser(body: Identity.UserSaveRequest): Observable {\n const request: Rest.Request = {\n method: 'POST',\n url: '/api/identity/users',\n body,\n };\n\n return this.rest.request(request);\n }\n\n updateUser(body: Identity.UserItem): Observable {\n const url = `/identity/users/${body.id}`;\n delete body.id;\n\n const request: Rest.Request = {\n method: 'PUT',\n url,\n body,\n };\n\n return this.rest.request(request);\n }\n}\n","import { Action, Selector, State, StateContext } from '@ngxs/store';\nimport { switchMap, tap, pluck } from 'rxjs/operators';\nimport {\n IdentityAddRole,\n IdentityAddUser,\n IdentityDeleteRole,\n IdentityDeleteUser,\n IdentityGetRoleById,\n IdentityGetRoles,\n IdentityGetUserById,\n IdentityGetUsers,\n IdentityUpdateRole,\n IdentityUpdateUser,\n IdentityGetUserRoles,\n} from '../actions/identity.actions';\nimport { Identity } from '../models/identity';\nimport { IdentityService } from '../services/identity.service';\n\n@State({\n name: 'IdentityState',\n defaults: { roles: {}, selectedRole: {}, users: {}, selectedUser: {} } as Identity.State,\n})\nexport class IdentityState {\n @Selector()\n static getRoles({ roles }: Identity.State): Identity.RoleItem[] {\n return roles.items;\n }\n\n @Selector()\n static getRolesTotalCount({ roles }: Identity.State): number {\n return roles.totalCount;\n }\n\n @Selector()\n static getUsers({ users }: Identity.State): Identity.UserItem[] {\n return users.items;\n }\n\n @Selector()\n static getUsersTotalCount({ users }: Identity.State): number {\n return users.totalCount;\n }\n\n constructor(private identityService: IdentityService) {}\n\n @Action(IdentityGetRoles)\n getRoles({ patchState }: StateContext) {\n return this.identityService.getRoles().pipe(\n tap(roles =>\n patchState({\n roles,\n }),\n ),\n );\n }\n\n @Action(IdentityGetRoleById)\n getRole({ patchState }: StateContext, { payload }: IdentityGetRoleById) {\n return this.identityService.getRoleById(payload).pipe(\n tap(selectedRole =>\n patchState({\n selectedRole,\n }),\n ),\n );\n }\n\n @Action(IdentityDeleteRole)\n deleteRole({ dispatch }: StateContext, { payload }: IdentityGetRoleById) {\n return this.identityService.deleteRole(payload).pipe(switchMap(() => dispatch(new IdentityGetRoles())));\n }\n\n @Action(IdentityAddRole)\n addRole({ dispatch }: StateContext, { payload }: IdentityAddRole) {\n return this.identityService.addRole(payload).pipe(switchMap(() => dispatch(new IdentityGetRoles())));\n }\n\n @Action(IdentityUpdateRole)\n updateRole({ getState, dispatch }: StateContext, { payload }: IdentityUpdateRole) {\n return dispatch(new IdentityGetRoleById(payload.id)).pipe(\n switchMap(() => this.identityService.updateRole({ ...getState().selectedRole, ...payload })),\n switchMap(() => dispatch(new IdentityGetRoles())),\n );\n }\n\n @Action(IdentityGetUsers)\n getUsers({ patchState }: StateContext, { payload }: IdentityGetUsers) {\n return this.identityService.getUsers(payload).pipe(\n tap(users =>\n patchState({\n users,\n }),\n ),\n );\n }\n\n @Action(IdentityGetUserById)\n getUser({ patchState }: StateContext, { payload }: IdentityGetUserById) {\n return this.identityService.getUserById(payload).pipe(\n tap(selectedUser =>\n patchState({\n selectedUser,\n }),\n ),\n );\n }\n\n @Action(IdentityDeleteUser)\n deleteUser({ dispatch }: StateContext, { payload }: IdentityGetUserById) {\n return this.identityService.deleteUser(payload).pipe(switchMap(() => dispatch(new IdentityGetUsers())));\n }\n\n @Action(IdentityAddUser)\n addUser({ dispatch }: StateContext, { payload }: IdentityAddUser) {\n return this.identityService.addUser(payload).pipe(switchMap(() => dispatch(new IdentityGetUsers())));\n }\n\n @Action(IdentityUpdateUser)\n updateUser({ getState, dispatch }: StateContext, { payload }: IdentityUpdateUser) {\n return dispatch(new IdentityGetUserById(payload.id)).pipe(\n switchMap(() => this.identityService.updateUser({ ...getState().selectedUser, ...payload })),\n switchMap(() => dispatch(new IdentityGetUsers())),\n );\n }\n\n @Action(IdentityGetUserRoles)\n getUserRoles({ patchState }: StateContext, { payload }: IdentityGetUserRoles) {\n return this.identityService.getUserRoles(payload).pipe(\n pluck('items'),\n tap(selectedUserRoles =>\n patchState({\n selectedUserRoles,\n }),\n ),\n );\n }\n}\n","import { Component, TemplateRef, ViewChild } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { IdentityState } from '../../states/identity.state';\nimport { Identity } from '../../models/identity';\nimport {\n IdentityUpdateRole,\n IdentityAddRole,\n IdentityDeleteRole,\n IdentityGetRoleById,\n} from '../../actions/identity.actions';\nimport { pluck } from 'rxjs/operators';\nimport { ConfirmationService, Toaster } from '@abp/ng.theme.shared';\n\n@Component({\n selector: 'abp-roles',\n templateUrl: './roles.component.html',\n})\nexport class RolesComponent {\n @Select(IdentityState.getRoles)\n roles$: Observable;\n\n form: FormGroup;\n\n selected: Identity.RoleItem;\n\n isModalVisible: boolean;\n\n visiblePermissions: boolean = false;\n\n providerKey: string;\n\n @ViewChild('modalContent', { static: false })\n modalContent: TemplateRef;\n\n constructor(private confirmationService: ConfirmationService, private fb: FormBuilder, private store: Store) {}\n\n createForm() {\n this.form = this.fb.group({\n name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]],\n isDefault: [this.selected.isDefault || false],\n isPublic: [this.selected.isPublic || false],\n });\n }\n\n openModal() {\n this.createForm();\n this.isModalVisible = true;\n }\n\n onAdd() {\n this.selected = {} as Identity.RoleItem;\n this.openModal();\n }\n\n onEdit(id: string) {\n this.store\n .dispatch(new IdentityGetRoleById(id))\n .pipe(pluck('IdentityState', 'selectedRole'))\n .subscribe(selectedRole => {\n this.selected = selectedRole;\n this.openModal();\n });\n }\n\n save() {\n if (!this.form.valid) return;\n\n this.store\n .dispatch(\n this.selected.id\n ? new IdentityUpdateRole({ ...this.form.value, id: this.selected.id })\n : new IdentityAddRole(this.form.value),\n )\n .subscribe(() => {\n this.isModalVisible = false;\n });\n }\n\n delete(id: string, name: string) {\n this.confirmationService\n .warn('AbpIdentity::RoleDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\n messageLocalizationParams: [name],\n })\n .subscribe((status: Toaster.Status) => {\n if (status === Toaster.Status.confirm) {\n this.store.dispatch(new IdentityDeleteRole(id));\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Resolve } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { IdentityGetRoles } from '../actions/identity.actions';\nimport { Identity } from '../models/identity';\nimport { IdentityState } from '../states/identity.state';\n\n@Injectable()\nexport class RoleResolver implements Resolve {\n constructor(private store: Store) {}\n\n resolve() {\n const roles = this.store.selectSnapshot(IdentityState.getRoles);\n return roles && roles.length ? null : this.store.dispatch(new IdentityGetRoles());\n }\n}\n","import { ABP } from '@abp/ng.core';\nimport { ConfirmationService, Toaster } from '@abp/ng.theme.shared';\nimport { Component, OnInit, TemplateRef, TrackByFunction, ViewChild } from '@angular/core';\nimport { AbstractControl, FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { validatePassword } from '@ngx-validate/core';\nimport { Select, Store } from '@ngxs/store';\nimport { combineLatest, Observable, Subject } from 'rxjs';\nimport { debounceTime, filter, map, pluck, take } from 'rxjs/operators';\nimport snq from 'snq';\nimport {\n IdentityAddUser,\n IdentityDeleteUser,\n IdentityGetUserById,\n IdentityGetUserRoles,\n IdentityGetUsers,\n IdentityUpdateUser,\n} from '../../actions/identity.actions';\nimport { Identity } from '../../models/identity';\nimport { IdentityState } from '../../states/identity.state';\n@Component({\n selector: 'abp-users',\n templateUrl: './users.component.html',\n})\nexport class UsersComponent implements OnInit {\n @Select(IdentityState.getUsers)\n data$: Observable;\n\n @Select(IdentityState.getUsersTotalCount)\n totalCount$: Observable;\n\n @ViewChild('modalContent', { static: false })\n modalContent: TemplateRef;\n\n form: FormGroup;\n\n selected: Identity.UserItem;\n\n selectedUserRoles: Identity.RoleItem[];\n\n roles: Identity.RoleItem[];\n\n visiblePermissions: boolean = false;\n\n providerKey: string;\n\n pageQuery: ABP.PageQueryParams = {\n sorting: 'userName',\n };\n\n isModalVisible: boolean;\n\n loading: boolean = false;\n\n search$ = new Subject();\n\n trackByFn: TrackByFunction = (index, item) => Object.keys(item)[0] || index;\n\n get roleGroups(): FormGroup[] {\n return snq(() => (this.form.get('roleNames') as FormArray).controls as FormGroup[], []);\n }\n\n constructor(private confirmationService: ConfirmationService, private fb: FormBuilder, private store: Store) {}\n\n ngOnInit() {\n this.search$.pipe(debounceTime(300)).subscribe(value => {\n this.pageQuery.filter = value;\n this.get();\n });\n }\n\n buildForm() {\n this.roles = this.store.selectSnapshot(IdentityState.getRoles);\n\n this.form = this.fb.group({\n password: [\n '',\n [\n Validators.required,\n Validators.maxLength(32),\n Validators.minLength(6),\n validatePassword(['small', 'capital', 'number', 'special']),\n ],\n ],\n userName: [this.selected.userName || '', [Validators.required, Validators.maxLength(256)]],\n email: [this.selected.email || '', [Validators.required, Validators.email, Validators.maxLength(256)]],\n name: [this.selected.name || '', [Validators.maxLength(64)]],\n surname: [this.selected.surname || '', [Validators.maxLength(64)]],\n phoneNumber: [this.selected.phoneNumber || '', [Validators.maxLength(16)]],\n lockoutEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)],\n twoFactorEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)],\n roleNames: this.fb.array(\n this.roles.map(role =>\n this.fb.group({\n [role.name]: [!!snq(() => this.selectedUserRoles.find(userRole => userRole.id === role.id))],\n }),\n ),\n ),\n });\n }\n\n openModal() {\n this.buildForm();\n this.isModalVisible = true;\n }\n\n onAdd() {\n this.selected = {} as Identity.UserItem;\n this.selectedUserRoles = [] as Identity.RoleItem[];\n this.openModal();\n }\n\n onEdit(id: string) {\n combineLatest([this.store.dispatch(new IdentityGetUserById(id)), this.store.dispatch(new IdentityGetUserRoles(id))])\n .pipe(\n filter(([res1, res2]) => res1 && res2),\n map(([state, _]) => state),\n pluck('IdentityState'),\n take(1),\n )\n .subscribe((state: Identity.State) => {\n this.selected = state.selectedUser;\n this.selectedUserRoles = state.selectedUserRoles;\n this.openModal();\n });\n }\n\n save() {\n if (!this.form.valid) return;\n\n const { roleNames } = this.form.value;\n const mappedRoleNames = snq(\n () => roleNames.filter(role => !!role[Object.keys(role)[0]]).map(role => Object.keys(role)[0]),\n [],\n );\n\n this.store\n .dispatch(\n this.selected.id\n ? new IdentityUpdateUser({\n ...this.form.value,\n id: this.selected.id,\n roleNames: mappedRoleNames,\n })\n : new IdentityAddUser({\n ...this.form.value,\n roleNames: mappedRoleNames,\n }),\n )\n .subscribe(() => {\n this.isModalVisible = false;\n });\n }\n\n delete(id: string, userName: string) {\n this.confirmationService\n .warn('AbpIdentity::UserDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\n messageLocalizationParams: [userName],\n })\n .subscribe((status: Toaster.Status) => {\n if (status === Toaster.Status.confirm) {\n this.store.dispatch(new IdentityDeleteUser(id));\n }\n });\n }\n\n onPageChange(data) {\n this.pageQuery.skipCount = data.first;\n this.pageQuery.maxResultCount = data.rows;\n\n this.get();\n }\n\n get() {\n this.loading = true;\n this.store.dispatch(new IdentityGetUsers(this.pageQuery)).subscribe(() => (this.loading = false));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Resolve } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { IdentityGetUsers } from '../actions/identity.actions';\nimport { Identity } from '../models/identity';\nimport { IdentityState } from '../states/identity.state';\n\n@Injectable()\nexport class UserResolver implements Resolve {\n constructor(private store: Store) {}\n\n resolve() {\n const users = this.store.selectSnapshot(IdentityState.getUsers);\n return users && users.length ? null : this.store.dispatch(new IdentityGetUsers());\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { RolesComponent } from './components/roles/roles.component';\nimport { RoleResolver } from './resolvers/roles.resolver';\nimport { DynamicLayoutComponent, AuthGuard, PermissionGuard } from '@abp/ng.core';\nimport { UsersComponent } from './components/users/users.component';\nimport { UserResolver } from './resolvers/users.resolver';\n\nconst routes: Routes = [\n { path: '', redirectTo: 'roles', pathMatch: 'full' },\n {\n path: 'roles',\n component: DynamicLayoutComponent,\n canActivate: [AuthGuard, PermissionGuard],\n data: { requiredPolicy: 'AbpIdentity.Roles' },\n children: [{ path: '', component: RolesComponent, resolve: [RoleResolver] }],\n },\n {\n path: 'users',\n component: DynamicLayoutComponent,\n canActivate: [AuthGuard, PermissionGuard],\n data: { requiredPolicy: 'AbpIdentity.Users' },\n children: [\n {\n path: '',\n component: UsersComponent,\n resolve: [RoleResolver, UserResolver],\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n providers: [RoleResolver, UserResolver],\n})\nexport class IdentityRoutingModule {}\n","import { CoreModule } from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { NgxsModule } from '@ngxs/store';\nimport { RolesComponent } from './components/roles/roles.component';\nimport { IdentityRoutingModule } from './identity-routing.module';\nimport { IdentityState } from './states/identity.state';\nimport { NgbTabsetModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { UsersComponent } from './components/users/users.component';\nimport { PermissionManagementModule } from '@abp/ng.permission-management';\nimport { TableModule } from 'primeng/table';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';\n\n@NgModule({\n declarations: [RolesComponent, UsersComponent],\n imports: [\n NgxsModule.forFeature([IdentityState]),\n CoreModule,\n IdentityRoutingModule,\n NgbTabsetModule,\n ThemeSharedModule,\n TableModule,\n NgbDropdownModule,\n PermissionManagementModule,\n NgxValidateCoreModule,\n PerfectScrollbarModule,\n ],\n})\nexport class IdentityModule {}\n","import { eLayoutType, ABP } from '@abp/ng.core';\n\nexport const IDENTITY_ROUTES = [\n {\n name: 'Administration',\n path: '',\n order: 1,\n wrapper: true,\n },\n {\n name: 'Identity',\n path: 'identity',\n order: 1,\n parentName: 'Administration',\n layout: eLayoutType.application,\n children: [\n { path: 'roles', name: 'Roles', order: 2, requiredPolicy: 'AbpIdentity.Roles' },\n { path: 'users', name: 'Users', order: 1, requiredPolicy: 'AbpIdentity.Users' },\n ],\n },\n] as ABP.FullRoute[];\n"]} \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm2015/abp-ng.identity.js b/npm/ng-packs/dist/identity/esm2015/abp-ng.identity.js new file mode 100644 index 00000000000..ae772c9508b --- /dev/null +++ b/npm/ng-packs/dist/identity/esm2015/abp-ng.identity.js @@ -0,0 +1,12 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { IdentityModule, IdentityGetRoles, IdentityGetRoleById, IdentityDeleteRole, IdentityAddRole, IdentityUpdateRole, IdentityGetUsers, IdentityGetUserById, IdentityDeleteUser, IdentityAddUser, IdentityUpdateUser, IdentityGetUserRoles, RolesComponent, IDENTITY_ROUTES, RoleResolver, IdentityService, IdentityState } from './public-api'; +export { UsersComponent as ɵb } from './lib/components/users/users.component'; +export { IdentityRoutingModule as ɵc } from './lib/identity-routing.module'; +export { UserResolver as ɵd } from './lib/resolvers/users.resolver'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLmlkZW50aXR5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5pZGVudGl0eS8iLCJzb3VyY2VzIjpbImFicC1uZy5pZGVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsb1VBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxjQUFjLElBQUksRUFBRSxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFDLHFCQUFxQixJQUFJLEVBQUUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBRTFFLE9BQU8sRUFBQyxZQUFZLElBQUksRUFBRSxFQUFDLE1BQU0sZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG5cbmV4cG9ydCB7VXNlcnNDb21wb25lbnQgYXMgybVifSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3VzZXJzL3VzZXJzLmNvbXBvbmVudCc7XG5leHBvcnQge0lkZW50aXR5Um91dGluZ01vZHVsZSBhcyDJtWN9IGZyb20gJy4vbGliL2lkZW50aXR5LXJvdXRpbmcubW9kdWxlJztcbmV4cG9ydCB7SWRlbnRpdHkgYXMgybVhfSBmcm9tICcuL2xpYi9tb2RlbHMvaWRlbnRpdHknO1xuZXhwb3J0IHtVc2VyUmVzb2x2ZXIgYXMgybVkfSBmcm9tICcuL2xpYi9yZXNvbHZlcnMvdXNlcnMucmVzb2x2ZXInOyJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm2015/lib/actions/identity.actions.js b/npm/ng-packs/dist/identity/esm2015/lib/actions/identity.actions.js new file mode 100644 index 00000000000..240cdab5a36 --- /dev/null +++ b/npm/ng-packs/dist/identity/esm2015/lib/actions/identity.actions.js @@ -0,0 +1,162 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export class IdentityGetRoles { +} +IdentityGetRoles.type = '[Identity] Get Roles'; +if (false) { + /** @type {?} */ + IdentityGetRoles.type; +} +export class IdentityGetRoleById { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityGetRoleById.type = '[Identity] Get Role By Id'; +if (false) { + /** @type {?} */ + IdentityGetRoleById.type; + /** @type {?} */ + IdentityGetRoleById.prototype.payload; +} +export class IdentityDeleteRole { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityDeleteRole.type = '[Identity] Delete Role'; +if (false) { + /** @type {?} */ + IdentityDeleteRole.type; + /** @type {?} */ + IdentityDeleteRole.prototype.payload; +} +export class IdentityAddRole { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityAddRole.type = '[Identity] Add Role'; +if (false) { + /** @type {?} */ + IdentityAddRole.type; + /** @type {?} */ + IdentityAddRole.prototype.payload; +} +export class IdentityUpdateRole { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityUpdateRole.type = '[Identity] Update Role'; +if (false) { + /** @type {?} */ + IdentityUpdateRole.type; + /** @type {?} */ + IdentityUpdateRole.prototype.payload; +} +export class IdentityGetUsers { + /** + * @param {?=} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityGetUsers.type = '[Identity] Get Users'; +if (false) { + /** @type {?} */ + IdentityGetUsers.type; + /** @type {?} */ + IdentityGetUsers.prototype.payload; +} +export class IdentityGetUserById { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityGetUserById.type = '[Identity] Get User By Id'; +if (false) { + /** @type {?} */ + IdentityGetUserById.type; + /** @type {?} */ + IdentityGetUserById.prototype.payload; +} +export class IdentityDeleteUser { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityDeleteUser.type = '[Identity] Delete User'; +if (false) { + /** @type {?} */ + IdentityDeleteUser.type; + /** @type {?} */ + IdentityDeleteUser.prototype.payload; +} +export class IdentityAddUser { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityAddUser.type = '[Identity] Add User'; +if (false) { + /** @type {?} */ + IdentityAddUser.type; + /** @type {?} */ + IdentityAddUser.prototype.payload; +} +export class IdentityUpdateUser { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityUpdateUser.type = '[Identity] Update User'; +if (false) { + /** @type {?} */ + IdentityUpdateUser.type; + /** @type {?} */ + IdentityUpdateUser.prototype.payload; +} +export class IdentityGetUserRoles { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityGetUserRoles.type = '[Identity] Get User Roles'; +if (false) { + /** @type {?} */ + IdentityGetUserRoles.type; + /** @type {?} */ + IdentityGetUserRoles.prototype.payload; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuaWRlbnRpdHkvIiwic291cmNlcyI6WyJsaWIvYWN0aW9ucy9pZGVudGl0eS5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFHQSxNQUFNLE9BQU8sZ0JBQWdCOztBQUNYLHFCQUFJLEdBQUcsc0JBQXNCLENBQUM7OztJQUE5QyxzQkFBOEM7O0FBR2hELE1BQU0sT0FBTyxtQkFBbUI7Ozs7SUFFOUIsWUFBbUIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDOztBQUR0Qix3QkFBSSxHQUFHLDJCQUEyQixDQUFDOzs7SUFBbkQseUJBQW1EOztJQUN2QyxzQ0FBc0I7O0FBR3BDLE1BQU0sT0FBTyxrQkFBa0I7Ozs7SUFFN0IsWUFBbUIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDOztBQUR0Qix1QkFBSSxHQUFHLHdCQUF3QixDQUFDOzs7SUFBaEQsd0JBQWdEOztJQUNwQyxxQ0FBc0I7O0FBR3BDLE1BQU0sT0FBTyxlQUFlOzs7O0lBRTFCLFlBQW1CLE9BQWlDO1FBQWpDLFlBQU8sR0FBUCxPQUFPLENBQTBCO0lBQUcsQ0FBQzs7QUFEeEMsb0JBQUksR0FBRyxxQkFBcUIsQ0FBQzs7O0lBQTdDLHFCQUE2Qzs7SUFDakMsa0NBQXdDOztBQUd0RCxNQUFNLE9BQU8sa0JBQWtCOzs7O0lBRTdCLFlBQW1CLE9BQTBCO1FBQTFCLFlBQU8sR0FBUCxPQUFPLENBQW1CO0lBQUcsQ0FBQzs7QUFEakMsdUJBQUksR0FBRyx3QkFBd0IsQ0FBQzs7O0lBQWhELHdCQUFnRDs7SUFDcEMscUNBQWlDOztBQUcvQyxNQUFNLE9BQU8sZ0JBQWdCOzs7O0lBRTNCLFlBQW1CLE9BQTZCO1FBQTdCLFlBQU8sR0FBUCxPQUFPLENBQXNCO0lBQUcsQ0FBQzs7QUFEcEMscUJBQUksR0FBRyxzQkFBc0IsQ0FBQzs7O0lBQTlDLHNCQUE4Qzs7SUFDbEMsbUNBQW9DOztBQUdsRCxNQUFNLE9BQU8sbUJBQW1COzs7O0lBRTlCLFlBQW1CLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO0lBQUcsQ0FBQzs7QUFEdEIsd0JBQUksR0FBRywyQkFBMkIsQ0FBQzs7O0lBQW5ELHlCQUFtRDs7SUFDdkMsc0NBQXNCOztBQUdwQyxNQUFNLE9BQU8sa0JBQWtCOzs7O0lBRTdCLFlBQW1CLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO0lBQUcsQ0FBQzs7QUFEdEIsdUJBQUksR0FBRyx3QkFBd0IsQ0FBQzs7O0lBQWhELHdCQUFnRDs7SUFDcEMscUNBQXNCOztBQUdwQyxNQUFNLE9BQU8sZUFBZTs7OztJQUUxQixZQUFtQixPQUFpQztRQUFqQyxZQUFPLEdBQVAsT0FBTyxDQUEwQjtJQUFHLENBQUM7O0FBRHhDLG9CQUFJLEdBQUcscUJBQXFCLENBQUM7OztJQUE3QyxxQkFBNkM7O0lBQ2pDLGtDQUF3Qzs7QUFHdEQsTUFBTSxPQUFPLGtCQUFrQjs7OztJQUU3QixZQUFtQixPQUFrRDtRQUFsRCxZQUFPLEdBQVAsT0FBTyxDQUEyQztJQUFHLENBQUM7O0FBRHpELHVCQUFJLEdBQUcsd0JBQXdCLENBQUM7OztJQUFoRCx3QkFBZ0Q7O0lBQ3BDLHFDQUF5RDs7QUFHdkUsTUFBTSxPQUFPLG9CQUFvQjs7OztJQUUvQixZQUFtQixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7O0FBRHRCLHlCQUFJLEdBQUcsMkJBQTJCLENBQUM7OztJQUFuRCwwQkFBbUQ7O0lBQ3ZDLHVDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElkZW50aXR5IH0gZnJvbSAnLi4vbW9kZWxzL2lkZW50aXR5JztcbmltcG9ydCB7IEFCUCB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBJZGVudGl0eUdldFJvbGVzIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0lkZW50aXR5XSBHZXQgUm9sZXMnO1xufVxuXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlHZXRSb2xlQnlJZCB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tJZGVudGl0eV0gR2V0IFJvbGUgQnkgSWQnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogc3RyaW5nKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlEZWxldGVSb2xlIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0lkZW50aXR5XSBEZWxldGUgUm9sZSc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBzdHJpbmcpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBJZGVudGl0eUFkZFJvbGUge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbSWRlbnRpdHldIEFkZCBSb2xlJztcbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IElkZW50aXR5LlJvbGVTYXZlUmVxdWVzdCkge31cbn1cblxuZXhwb3J0IGNsYXNzIElkZW50aXR5VXBkYXRlUm9sZSB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tJZGVudGl0eV0gVXBkYXRlIFJvbGUnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogSWRlbnRpdHkuUm9sZUl0ZW0pIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBJZGVudGl0eUdldFVzZXJzIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0lkZW50aXR5XSBHZXQgVXNlcnMnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZD86IEFCUC5QYWdlUXVlcnlQYXJhbXMpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBJZGVudGl0eUdldFVzZXJCeUlkIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0lkZW50aXR5XSBHZXQgVXNlciBCeSBJZCc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBzdHJpbmcpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBJZGVudGl0eURlbGV0ZVVzZXIge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbSWRlbnRpdHldIERlbGV0ZSBVc2VyJztcbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IHN0cmluZykge31cbn1cblxuZXhwb3J0IGNsYXNzIElkZW50aXR5QWRkVXNlciB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tJZGVudGl0eV0gQWRkIFVzZXInO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogSWRlbnRpdHkuVXNlclNhdmVSZXF1ZXN0KSB7fVxufVxuXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlVcGRhdGVVc2VyIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0lkZW50aXR5XSBVcGRhdGUgVXNlcic7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBJZGVudGl0eS5Vc2VyU2F2ZVJlcXVlc3QgJiB7IGlkOiBzdHJpbmcgfSkge31cbn1cblxuZXhwb3J0IGNsYXNzIElkZW50aXR5R2V0VXNlclJvbGVzIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0lkZW50aXR5XSBHZXQgVXNlciBSb2xlcyc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBzdHJpbmcpIHt9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm2015/lib/components/roles/roles.component.js b/npm/ng-packs/dist/identity/esm2015/lib/components/roles/roles.component.js new file mode 100644 index 00000000000..842ad96399e --- /dev/null +++ b/npm/ng-packs/dist/identity/esm2015/lib/components/roles/roles.component.js @@ -0,0 +1,155 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Component, TemplateRef, ViewChild } from '@angular/core'; +import { Select, Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { FormBuilder, Validators } from '@angular/forms'; +import { IdentityState } from '../../states/identity.state'; +import { IdentityUpdateRole, IdentityAddRole, IdentityDeleteRole, IdentityGetRoleById, } from '../../actions/identity.actions'; +import { pluck } from 'rxjs/operators'; +import { ConfirmationService } from '@abp/ng.theme.shared'; +export class RolesComponent { + /** + * @param {?} confirmationService + * @param {?} fb + * @param {?} store + */ + constructor(confirmationService, fb, store) { + this.confirmationService = confirmationService; + this.fb = fb; + this.store = store; + this.visiblePermissions = false; + } + /** + * @return {?} + */ + createForm() { + this.form = this.fb.group({ + name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]], + isDefault: [this.selected.isDefault || false], + isPublic: [this.selected.isPublic || false], + }); + } + /** + * @return {?} + */ + openModal() { + this.createForm(); + this.isModalVisible = true; + } + /** + * @return {?} + */ + onAdd() { + this.selected = (/** @type {?} */ ({})); + this.openModal(); + } + /** + * @param {?} id + * @return {?} + */ + onEdit(id) { + this.store + .dispatch(new IdentityGetRoleById(id)) + .pipe(pluck('IdentityState', 'selectedRole')) + .subscribe((/** + * @param {?} selectedRole + * @return {?} + */ + selectedRole => { + this.selected = selectedRole; + this.openModal(); + })); + } + /** + * @return {?} + */ + save() { + if (!this.form.valid) + return; + this.store + .dispatch(this.selected.id + ? new IdentityUpdateRole(Object.assign({}, this.form.value, { id: this.selected.id })) + : new IdentityAddRole(this.form.value)) + .subscribe((/** + * @return {?} + */ + () => { + this.isModalVisible = false; + })); + } + /** + * @param {?} id + * @param {?} name + * @return {?} + */ + delete(id, name) { + this.confirmationService + .warn('AbpIdentity::RoleDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', { + messageLocalizationParams: [name], + }) + .subscribe((/** + * @param {?} status + * @return {?} + */ + (status) => { + if (status === "confirm" /* confirm */) { + this.store.dispatch(new IdentityDeleteRole(id)); + } + })); + } +} +RolesComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-roles', + template: "
\n
\n
\n
\n
{{ 'AbpIdentity::Roles' | abpLocalization }}
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n {{ 'AbpIdentity::RoleName' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n \n
\n \n \n \n
\n
\n \n {{ data.name }}\n \n
\n
\n
\n
\n\n\n \n

{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}

\n
\n\n \n
\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n
\n\n \n \n \n \n
\n\n\n" + }] } +]; +/** @nocollapse */ +RolesComponent.ctorParameters = () => [ + { type: ConfirmationService }, + { type: FormBuilder }, + { type: Store } +]; +RolesComponent.propDecorators = { + modalContent: [{ type: ViewChild, args: ['modalContent', { static: false },] }] +}; +tslib_1.__decorate([ + Select(IdentityState.getRoles), + tslib_1.__metadata("design:type", Observable) +], RolesComponent.prototype, "roles$", void 0); +if (false) { + /** @type {?} */ + RolesComponent.prototype.roles$; + /** @type {?} */ + RolesComponent.prototype.form; + /** @type {?} */ + RolesComponent.prototype.selected; + /** @type {?} */ + RolesComponent.prototype.isModalVisible; + /** @type {?} */ + RolesComponent.prototype.visiblePermissions; + /** @type {?} */ + RolesComponent.prototype.providerKey; + /** @type {?} */ + RolesComponent.prototype.modalContent; + /** + * @type {?} + * @private + */ + RolesComponent.prototype.confirmationService; + /** + * @type {?} + * @private + */ + RolesComponent.prototype.fb; + /** + * @type {?} + * @private + */ + RolesComponent.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5pZGVudGl0eS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3JvbGVzL3JvbGVzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVELE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixtQkFBbUIsR0FDcEIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFXLE1BQU0sc0JBQXNCLENBQUM7QUFNcEUsTUFBTSxPQUFPLGNBQWM7Ozs7OztJQWlCekIsWUFBb0IsbUJBQXdDLEVBQVUsRUFBZSxFQUFVLEtBQVk7UUFBdkYsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUFVLE9BQUUsR0FBRixFQUFFLENBQWE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBUDNHLHVCQUFrQixHQUFZLEtBQUssQ0FBQztJQU8wRSxDQUFDOzs7O0lBRS9HLFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3hCLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFD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aWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElkZW50aXR5U3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZXMvaWRlbnRpdHkuc3RhdGUnO1xuaW1wb3J0IHsgSWRlbnRpdHkgfSBmcm9tICcuLi8uLi9tb2RlbHMvaWRlbnRpdHknO1xuaW1wb3J0IHtcbiAgSWRlbnRpdHlVcGRhdGVSb2xlLFxuICBJZGVudGl0eUFkZFJvbGUsXG4gIElkZW50aXR5RGVsZXRlUm9sZSxcbiAgSWRlbnRpdHlHZXRSb2xlQnlJZCxcbn0gZnJvbSAnLi4vLi4vYWN0aW9ucy9pZGVudGl0eS5hY3Rpb25zJztcbmltcG9ydCB7IHBsdWNrIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgVG9hc3RlciB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWJwLXJvbGVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JvbGVzLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgUm9sZXNDb21wb25lbnQge1xuICBAU2VsZWN0KElkZW50aXR5U3RhdGUuZ2V0Um9sZXMpXG4gIHJvbGVzJDogT2JzZXJ2YWJsZTxJZGVudGl0eS5Sb2xlSXRlbVtdPjtcblxuICBmb3JtOiBGb3JtR3JvdXA7XG5cbiAgc2VsZWN0ZWQ6IElkZW50aXR5LlJvbGVJdGVtO1xuXG4gIGlzTW9kYWxWaXNpYmxlOiBib29sZWFuO1xuXG4gIHZpc2libGVQZXJtaXNzaW9uczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByb3ZpZGVyS2V5OiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgnbW9kYWxDb250ZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIG1vZGFsQ29udGVudDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIHN0b3JlOiBTdG9yZSkge31cblxuICBjcmVhdGVGb3JtKCkge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgbmFtZTogW3RoaXMuc2VsZWN0ZWQubmFtZSB8fCAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcbiAgICAgIGlzRGVmYXVsdDogW3RoaXMuc2VsZWN0ZWQuaXNEZWZhdWx0IHx8IGZhbHNlXSxcbiAgICAgIGlzUHVibGljOiBbdGhpcy5zZWxlY3RlZC5pc1B1YmxpYyB8fCBmYWxzZV0sXG4gICAgfSk7XG4gIH1cblxuICBvcGVuTW9kYWwoKSB7XG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gICAgdGhpcy5pc01vZGFsVmlzaWJsZSA9IHRydWU7XG4gIH1cblxuICBvbkFkZCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkID0ge30gYXMgSWRlbnRpdHkuUm9sZUl0ZW07XG4gICAgdGhpcy5vcGVuTW9kYWwoKTtcbiAgfVxuXG4gIG9uRWRpdChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZVxuICAgICAgLmRpc3BhdGNoKG5ldyBJZGVudGl0eUdldFJvbGVCeUlkKGlkKSlcbiAgICAgIC5waXBlKHBsdWNrKCdJZGVudGl0eVN0YXRlJywgJ3NlbGVjdGVkUm9sZScpKVxuICAgICAgLnN1YnNjcmliZShzZWxlY3RlZFJvbGUgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWRSb2xlO1xuICAgICAgICB0aGlzLm9wZW5Nb2RhbCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSByZXR1cm47XG5cbiAgICB0aGlzLnN0b3JlXG4gICAgICAuZGlzcGF0Y2goXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuaWRcbiAgICAgICAgICA/IG5ldyBJZGVudGl0eVVwZGF0ZVJvbGUoeyAuLi50aGlzLmZvcm0udmFsdWUsIGlkOiB0aGlzLnNlbGVjdGVkLmlkIH0pXG4gICAgICAgICAgOiBuZXcgSWRlbnRpdHlBZGRSb2xlKHRoaXMuZm9ybS52YWx1ZSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc01vZGFsVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgfSk7XG4gIH1cblxuICBkZWxldGUoaWQ6IHN0cmluZywgbmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlXG4gICAgICAud2FybignQWJwSWRlbnRpdHk6OlJvbGVEZWxldGlvbkNvbmZpcm1hdGlvbk1lc3NhZ2UnLCAnQWJwSWRlbnRpdHk6OkFyZVlvdVN1cmUnLCB7XG4gICAgICAgIG1lc3NhZ2VMb2NhbGl6YXRpb25QYXJhbXM6IFtuYW1lXSxcbiAgICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKChzdGF0dXM6IFRvYXN0ZXIuU3RhdHVzKSA9PiB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09IFRvYXN0ZXIuU3RhdHVzLmNvbmZpcm0pIHtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBJZGVudGl0eURlbGV0ZVJvbGUoaWQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm2015/lib/components/users/users.component.js b/npm/ng-packs/dist/identity/esm2015/lib/components/users/users.component.js new file mode 100644 index 00000000000..819cf0b9430 --- /dev/null +++ b/npm/ng-packs/dist/identity/esm2015/lib/components/users/users.component.js @@ -0,0 +1,278 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { ConfirmationService } from '@abp/ng.theme.shared'; +import { Component, TemplateRef, ViewChild } from '@angular/core'; +import { FormBuilder, Validators } from '@angular/forms'; +import { validatePassword } from '@ngx-validate/core'; +import { Select, Store } from '@ngxs/store'; +import { combineLatest, Observable, Subject } from 'rxjs'; +import { debounceTime, filter, map, pluck, take } from 'rxjs/operators'; +import snq from 'snq'; +import { IdentityAddUser, IdentityDeleteUser, IdentityGetUserById, IdentityGetUserRoles, IdentityGetUsers, IdentityUpdateUser, } from '../../actions/identity.actions'; +import { IdentityState } from '../../states/identity.state'; +export class UsersComponent { + /** + * @param {?} confirmationService + * @param {?} fb + * @param {?} store + */ + constructor(confirmationService, fb, store) { + this.confirmationService = confirmationService; + this.fb = fb; + this.store = store; + this.visiblePermissions = false; + this.pageQuery = { + sorting: 'userName', + }; + this.loading = false; + this.search$ = new Subject(); + this.trackByFn = (/** + * @param {?} index + * @param {?} item + * @return {?} + */ + (index, item) => Object.keys(item)[0] || index); + } + /** + * @return {?} + */ + get roleGroups() { + return snq((/** + * @return {?} + */ + () => (/** @type {?} */ (((/** @type {?} */ (this.form.get('roleNames')))).controls))), []); + } + /** + * @return {?} + */ + ngOnInit() { + this.search$.pipe(debounceTime(300)).subscribe((/** + * @param {?} value + * @return {?} + */ + value => { + this.pageQuery.filter = value; + this.get(); + })); + } + /** + * @return {?} + */ + buildForm() { + this.roles = this.store.selectSnapshot(IdentityState.getRoles); + this.form = this.fb.group({ + password: [ + '', + [ + Validators.required, + Validators.maxLength(32), + Validators.minLength(6), + validatePassword(['small', 'capital', 'number', 'special']), + ], + ], + userName: [this.selected.userName || '', [Validators.required, Validators.maxLength(256)]], + email: [this.selected.email || '', [Validators.required, Validators.email, Validators.maxLength(256)]], + name: [this.selected.name || '', [Validators.maxLength(64)]], + surname: [this.selected.surname || '', [Validators.maxLength(64)]], + phoneNumber: [this.selected.phoneNumber || '', [Validators.maxLength(16)]], + lockoutEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)], + twoFactorEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)], + roleNames: this.fb.array(this.roles.map((/** + * @param {?} role + * @return {?} + */ + role => this.fb.group({ + [role.name]: [!!snq((/** + * @return {?} + */ + () => this.selectedUserRoles.find((/** + * @param {?} userRole + * @return {?} + */ + userRole => userRole.id === role.id))))], + })))), + }); + } + /** + * @return {?} + */ + openModal() { + this.buildForm(); + this.isModalVisible = true; + } + /** + * @return {?} + */ + onAdd() { + this.selected = (/** @type {?} */ ({})); + this.selectedUserRoles = (/** @type {?} */ ([])); + this.openModal(); + } + /** + * @param {?} id + * @return {?} + */ + onEdit(id) { + combineLatest([this.store.dispatch(new IdentityGetUserById(id)), this.store.dispatch(new IdentityGetUserRoles(id))]) + .pipe(filter((/** + * @param {?} __0 + * @return {?} + */ + ([res1, res2]) => res1 && res2)), map((/** + * @param {?} __0 + * @return {?} + */ + ([state, _]) => state)), pluck('IdentityState'), take(1)) + .subscribe((/** + * @param {?} state + * @return {?} + */ + (state) => { + this.selected = state.selectedUser; + this.selectedUserRoles = state.selectedUserRoles; + this.openModal(); + })); + } + /** + * @return {?} + */ + save() { + if (!this.form.valid) + return; + const { roleNames } = this.form.value; + /** @type {?} */ + const mappedRoleNames = snq((/** + * @return {?} + */ + () => roleNames.filter((/** + * @param {?} role + * @return {?} + */ + role => !!role[Object.keys(role)[0]])).map((/** + * @param {?} role + * @return {?} + */ + role => Object.keys(role)[0]))), []); + this.store + .dispatch(this.selected.id + ? new IdentityUpdateUser(Object.assign({}, this.form.value, { id: this.selected.id, roleNames: mappedRoleNames })) + : new IdentityAddUser(Object.assign({}, this.form.value, { roleNames: mappedRoleNames }))) + .subscribe((/** + * @return {?} + */ + () => { + this.isModalVisible = false; + })); + } + /** + * @param {?} id + * @param {?} userName + * @return {?} + */ + delete(id, userName) { + this.confirmationService + .warn('AbpIdentity::UserDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', { + messageLocalizationParams: [userName], + }) + .subscribe((/** + * @param {?} status + * @return {?} + */ + (status) => { + if (status === "confirm" /* confirm */) { + this.store.dispatch(new IdentityDeleteUser(id)); + } + })); + } + /** + * @param {?} data + * @return {?} + */ + onPageChange(data) { + this.pageQuery.skipCount = data.first; + this.pageQuery.maxResultCount = data.rows; + this.get(); + } + /** + * @return {?} + */ + get() { + this.loading = true; + this.store.dispatch(new IdentityGetUsers(this.pageQuery)).subscribe((/** + * @return {?} + */ + () => (this.loading = false))); + } +} +UsersComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-users', + template: "
\n
\n
\n
\n
{{ 'AbpIdentity::Users' | abpLocalization }}
\n
\n
\n \n {{ 'AbpIdentity::NewUser' | abpLocalization }}\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n {{ 'AbpIdentity::UserName' | abpLocalization }}\n {{ 'AbpIdentity::EmailAddress' | abpLocalization }}\n {{ 'AbpIdentity::PhoneNumber' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n \n
\n \n \n \n
\n
\n \n {{ data.userName }}\n {{ data.email }}\n {{ data.phoneNumber }}\n \n
\n \n
\n
\n\n\n \n

{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}

\n
\n\n \n \n
\n \n \n \n
\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n \n \n
\n \n
\n
\n
\n
\n
\n
\n\n \n \n \n \n
\n\n\n" + }] } +]; +/** @nocollapse */ +UsersComponent.ctorParameters = () => [ + { type: ConfirmationService }, + { type: FormBuilder }, + { type: Store } +]; +UsersComponent.propDecorators = { + modalContent: [{ type: ViewChild, args: ['modalContent', { static: false },] }] +}; +tslib_1.__decorate([ + Select(IdentityState.getUsers), + tslib_1.__metadata("design:type", Observable) +], UsersComponent.prototype, "data$", void 0); +tslib_1.__decorate([ + Select(IdentityState.getUsersTotalCount), + tslib_1.__metadata("design:type", Observable) +], UsersComponent.prototype, "totalCount$", void 0); +if (false) { + /** @type {?} */ + UsersComponent.prototype.data$; + /** @type {?} */ + UsersComponent.prototype.totalCount$; + /** @type {?} */ + UsersComponent.prototype.modalContent; + /** @type {?} */ + UsersComponent.prototype.form; + /** @type {?} */ + UsersComponent.prototype.selected; + /** @type {?} */ + UsersComponent.prototype.selectedUserRoles; + /** @type {?} */ + UsersComponent.prototype.roles; + /** @type {?} */ + UsersComponent.prototype.visiblePermissions; + /** @type {?} */ + UsersComponent.prototype.providerKey; + /** @type {?} */ + UsersComponent.prototype.pageQuery; + /** @type {?} */ + UsersComponent.prototype.isModalVisible; + /** @type {?} */ + UsersComponent.prototype.loading; + /** @type {?} */ + UsersComponent.prototype.search$; + /** @type {?} */ + UsersComponent.prototype.trackByFn; + /** + * @type {?} + * @private + */ + UsersComponent.prototype.confirmationService; + /** + * @type {?} + * @private + */ + UsersComponent.prototype.fb; + /** + * @type {?} + * @private + */ + UsersComponent.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5pZGVudGl0eS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3VzZXJzL3VzZXJzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBVyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFtQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUE4QixXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEUsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQ3RCLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixHQUNuQixNQUFNLGdDQUFnQyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUs1RCxNQUFNLE9BQU8sY0FBYzs7Ozs7O0lBc0N6QixZQUFvQixtQkFBd0MsRUFBVSxFQUFlLEVBQVUsS0FBWTtRQUF2Rix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQU87UUFwQjNHLHVC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LEVBQUMsQ0FBQztJQUNwRyxDQUFDOzs7WUE1SkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxXQUFXO2dCQUNyQiwwNVBBQXFDO2FBQ3RDOzs7O1lBckJRLG1CQUFtQjtZQUVTLFdBQVc7WUFFL0IsS0FBSzs7OzJCQXlCbkIsU0FBUyxTQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O0FBTDVDO0lBREMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7c0NBQ3hCLFVBQVU7NkNBQXNCO0FBR3ZDO0lBREMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQztzQ0FDNUIsVUFBVTttREFBUzs7O0lBSmhDLCtCQUN1Qzs7SUFFdkMscUNBQ2dDOztJQUVoQyxzQ0FDK0I7O0lBRS9CLDhCQUFnQjs7SUFFaEIsa0NBQTRCOztJQUU1QiwyQ0FBdUM7O0lBRXZDLCtCQUEyQjs7SUFFM0IsNENBQW9DOztJQUVwQyxxQ0FBb0I7O0lBRXBCLG1DQUVFOztJQUVGLHdDQUF3Qjs7SUFFeEIsaUNBQXlCOztJQUV6QixpQ0FBZ0M7O0lBRWhDLG1DQUE2Rjs7Ozs7SUFNakYsNkNBQWdEOzs7OztJQUFFLDRCQUF1Qjs7Ozs7SUFBRSwrQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBQlAgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgVG9hc3RlciB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVHJhY2tCeUZ1bmN0aW9uLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdmFsaWRhdGVQYXNzd29yZCB9IGZyb20gJ0BuZ3gtdmFsaWRhdGUvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgcGx1Y2ssIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgc25xIGZyb20gJ3NucSc7XG5pbXBvcnQge1xuICBJZGVudGl0eUFkZFVzZXIsXG4gIElkZW50aXR5RGVsZXRlVXNlcixcbiAgSWRlbnRpdHlHZXRVc2VyQnlJZCxcbiAgSWRlbnRpdHlHZXRVc2VyUm9sZXMsXG4gIElkZW50aXR5R2V0VXNlcnMsXG4gIElkZW50aXR5VXBkYXRlVXNlcixcbn0gZnJvbSAnLi4vLi4vYWN0aW9ucy9pZGVudGl0eS5hY3Rpb25zJztcbmltcG9ydCB7IElkZW50aXR5IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2lkZW50aXR5JztcbmltcG9ydCB7IElkZW50aXR5U3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZXMvaWRlbnRpdHkuc3RhdGUnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWJwLXVzZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXJzLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgVXNlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAU2VsZWN0KElkZW50aXR5U3RhdGUuZ2V0VXNlcnMpXG4gIGRhdGEkOiBPYnNlcnZhYmxlPElkZW50aXR5LlVzZXJJdGVtW10+O1xuXG4gIEBTZWxlY3QoSWRlbnRpdHlTdGF0ZS5nZXRVc2Vyc1RvdGFsQ291bnQpXG4gIHRvdGFsQ291bnQkOiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgQFZpZXdDaGlsZCgnbW9kYWxDb250ZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIG1vZGFsQ29udGVudDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBmb3JtOiBGb3JtR3JvdXA7XG5cbiAgc2VsZWN0ZWQ6IElkZW50aXR5LlVzZXJJdGVtO1xuXG4gIHNlbGVjdGVkVXNlclJvbGVzOiBJZGVudGl0eS5Sb2xlSXRlbVtdO1xuXG4gIHJvbGVzOiBJZGVudGl0eS5Sb2xlSXRlbVtdO1xuXG4gIHZpc2libGVQZXJtaXNzaW9uczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByb3ZpZGVyS2V5OiBzdHJpbmc7XG5cbiAgcGFnZVF1ZXJ5OiBBQlAuUGFnZVF1ZXJ5UGFyYW1zID0ge1xuICAgIHNvcnRpbmc6ICd1c2VyTmFtZScsXG4gIH07XG5cbiAgaXNNb2RhbFZpc2libGU6IGJvb2xlYW47XG5cbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHNlYXJjaCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgdHJhY2tCeUZuOiBUcmFja0J5RnVuY3Rpb248QWJzdHJhY3RDb250cm9sPiA9IChpbmRleCwgaXRlbSkgPT4gT2JqZWN0LmtleXMoaXRlbSlbMF0gfHwgaW5kZXg7XG5cbiAgZ2V0IHJvbGVHcm91cHMoKTogRm9ybUdyb3VwW10ge1xuICAgIHJldHVybiBzbnEoKCkgPT4gKHRoaXMuZm9ybS5nZXQoJ3JvbGVOYW1lcycpIGFzIEZvcm1BcnJheSkuY29udHJvbHMgYXMgRm9ybUdyb3VwW10sIFtdKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSwgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2VhcmNoJC5waXBlKGRlYm91bmNlVGltZSgzMDApKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgdGhpcy5wYWdlUXVlcnkuZmlsdGVyID0gdmFsdWU7XG4gICAgICB0aGlzLmdldCgpO1xuICAgIH0pO1xuICB9XG5cbiAgYnVpbGRGb3JtKCkge1xuICAgIHRoaXMucm9sZXMgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KElkZW50aXR5U3RhdGUuZ2V0Um9sZXMpO1xuXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBwYXNzd29yZDogW1xuICAgICAgICAnJyxcbiAgICAgICAgW1xuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzIpLFxuICAgICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDYpLFxuICAgICAgICAgIHZhbGlkYXRlUGFzc3dvcmQoWydzbWFsbCcsICdjYXBpdGFsJywgJ251bWJlcicsICdzcGVjaWFsJ10pLFxuICAgICAgICBdLFxuICAgICAgXSxcbiAgICAgIHVzZXJOYW1lOiBbdGhpcy5zZWxlY3RlZC51c2VyTmFtZSB8fCAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcbiAgICAgIGVtYWlsOiBbdGhpcy5zZWxlY3RlZC5lbWFpbCB8fCAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcbiAgICAgIG5hbWU6IFt0aGlzLnNlbGVjdGVkLm5hbWUgfHwgJycsIFtWYWxpZGF0b3JzLm1heExlbmd0aCg2NCldXSxcbiAgICAgIHN1cm5hbWU6IFt0aGlzLnNlbGVjdGVkLnN1cm5hbWUgfHwgJycsIFtWYWxpZGF0b3JzLm1heExlbmd0aCg2NCldXSxcbiAgICAgIHBob25lTnVtYmVyOiBbdGhpcy5zZWxlY3RlZC5waG9uZU51bWJlciB8fCAnJywgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDE2KV1dLFxuICAgICAgbG9ja291dEVuYWJsZWQ6IFt0aGlzLnNlbGVjdGVkLnR3b0ZhY3RvckVuYWJsZWQgfHwgKHRoaXMuc2VsZWN0ZWQuaWQgPyBmYWxzZSA6IHRydWUpXSxcbiAgICAgIHR3b0ZhY3RvckVuYWJsZWQ6IFt0aGlzLnNlbGVjdGVkLnR3b0ZhY3RvckVuYWJsZWQgfHwgKHRoaXMuc2VsZWN0ZWQuaWQgPyBmYWxzZSA6IHRydWUpXSxcbiAgICAgIHJvbGVOYW1lczogdGhpcy5mYi5hcnJheShcbiAgICAgICAgdGhpcy5yb2xlcy5tYXAocm9sZSA9PlxuICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgW3JvbGUubmFtZV06IFshIXNucSgoKSA9PiB0aGlzLnNlbGVjdGVkVXNlclJvbGVzLmZpbmQodXNlclJvbGUgPT4gdXNlclJvbGUuaWQgPT09IHJvbGUuaWQpKV0sXG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgIH0pO1xuICB9XG5cbiAgb3Blbk1vZGFsKCkge1xuICAgIHRoaXMuYnVpbGRGb3JtKCk7XG4gICAgdGhpcy5pc01vZGFsVmlzaWJsZSA9IHRydWU7XG4gIH1cblxuICBvbkFkZCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkID0ge30gYXMgSWRlbnRpdHkuVXNlckl0ZW07XG4gICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlcyA9IFtdIGFzIElkZW50aXR5LlJvbGVJdGVtW107XG4gICAgdGhpcy5vcGVuTW9kYWwoKTtcbiAgfVxuXG4gIG9uRWRpdChpZDogc3RyaW5nKSB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgSWRlbnRpdHlHZXRVc2VyQnlJZChpZCkpLCB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBJZGVudGl0eUdldFVzZXJSb2xlcyhpZCkpXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKFtyZXMxLCByZXMyXSkgPT4gcmVzMSAmJiByZXMyKSxcbiAgICAgICAgbWFwKChbc3RhdGUsIF9dKSA9PiBzdGF0ZSksXG4gICAgICAgIHBsdWNrKCdJZGVudGl0eVN0YXRlJyksXG4gICAgICAgIHRha2UoMSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChzdGF0ZTogSWRlbnRpdHkuU3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHN0YXRlLnNlbGVjdGVkVXNlcjtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlcyA9IHN0YXRlLnNlbGVjdGVkVXNlclJvbGVzO1xuICAgICAgICB0aGlzLm9wZW5Nb2RhbCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSByZXR1cm47XG5cbiAgICBjb25zdCB7IHJvbGVOYW1lcyB9ID0gdGhpcy5mb3JtLnZhbHVlO1xuICAgIGNvbnN0IG1hcHBlZFJvbGVOYW1lcyA9IHNucShcbiAgICAgICgpID0+IHJvbGVOYW1lcy5maWx0ZXIocm9sZSA9PiAhIXJvbGVbT2JqZWN0LmtleXMocm9sZSlbMF1dKS5tYXAocm9sZSA9PiBPYmplY3Qua2V5cyhyb2xlKVswXSksXG4gICAgICBbXSxcbiAgICApO1xuXG4gICAgdGhpcy5zdG9yZVxuICAgICAgLmRpc3BhdGNoKFxuICAgICAgICB0aGlzLnNlbGVjdGVkLmlkXG4gICAgICAgICAgPyBuZXcgSWRlbnRpdHlVcGRhdGVVc2VyKHtcbiAgICAgICAgICAgICAgLi4udGhpcy5mb3JtLnZhbHVlLFxuICAgICAgICAgICAgICBpZDogdGhpcy5zZWxlY3RlZC5pZCxcbiAgICAgICAgICAgICAgcm9sZU5hbWVzOiBtYXBwZWRSb2xlTmFtZXMsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIDogbmV3IElkZW50aXR5QWRkVXNlcih7XG4gICAgICAgICAgICAgIC4uLnRoaXMuZm9ybS52YWx1ZSxcbiAgICAgICAgICAgICAgcm9sZU5hbWVzOiBtYXBwZWRSb2xlTmFtZXMsXG4gICAgICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gICAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZShpZDogc3RyaW5nLCB1c2VyTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlXG4gICAgICAud2FybignQWJwSWRlbnRpdHk6OlVzZXJEZWxldGlvbkNvbmZpcm1hdGlvbk1lc3NhZ2UnLCAnQWJwSWRlbnRpdHk6OkFyZVlvdVN1cmUnLCB7XG4gICAgICAgIG1lc3NhZ2VMb2NhbGl6YXRpb25QYXJhbXM6IFt1c2VyTmFtZV0sXG4gICAgICB9KVxuICAgICAgLnN1YnNjcmliZSgoc3RhdHVzOiBUb2FzdGVyLlN0YXR1cykgPT4ge1xuICAgICAgICBpZiAoc3RhdHVzID09PSBUb2FzdGVyLlN0YXR1cy5jb25maXJtKSB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgSWRlbnRpdHlEZWxldGVVc2VyKGlkKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlKGRhdGEpIHtcbiAgICB0aGlzLnBhZ2VRdWVyeS5za2lwQ291bnQgPSBkYXRhLmZpcnN0O1xuICAgIHRoaXMucGFnZVF1ZXJ5Lm1heFJlc3VsdENvdW50ID0gZGF0YS5yb3dzO1xuXG4gICAgdGhpcy5nZXQoKTtcbiAgfVxuXG4gIGdldCgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IElkZW50aXR5R2V0VXNlcnModGhpcy5wYWdlUXVlcnkpKS5zdWJzY3JpYmUoKCkgPT4gKHRoaXMubG9hZGluZyA9IGZhbHNlKSk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm2015/lib/constants/routes.js b/npm/ng-packs/dist/identity/esm2015/lib/constants/routes.js new file mode 100644 index 00000000000..e49d2708ba1 --- /dev/null +++ b/npm/ng-packs/dist/identity/esm2015/lib/constants/routes.js @@ -0,0 +1,25 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +export const IDENTITY_ROUTES = (/** @type {?} */ ([ + { + name: 'Administration', + path: '', + order: 1, + wrapper: true, + }, + { + name: 'Identity', + path: 'identity', + order: 1, + parentName: 'Administration', + layout: "application" /* application */, + children: [ + { path: 'roles', name: 'Roles', order: 2, requiredPolicy: 'AbpIdentity.Roles' }, + { path: 'users', name: 'Users', order: 1, requiredPolicy: 'AbpIdentity.Users' }, + ], + }, +])); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5pZGVudGl0eS8iLCJzb3VyY2VzIjpbImxpYi9jb25zdGFudHMvcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsTUFBTSxPQUFPLGVBQWUsR0FBRyxtQkFBQTtJQUM3QjtRQUNFLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsSUFBSSxFQUFFLEVBQUU7UUFDUixLQUFLLEVBQUUsQ0FBQztRQUNSLE9BQU8sRUFBRSxJQUFJO0tBQ2Q7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxDQUFDO1FBQ1IsVUFBVSxFQUFFLGdCQUFnQjtRQUM1QixNQUFNLGlDQUF5QjtRQUMvQixRQUFRLEVBQUU7WUFDUixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRTtZQUMvRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRTtTQUNoRjtLQUNGO0NBQ0YsRUFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlTGF5b3V0VHlwZSwgQUJQIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcblxuZXhwb3J0IGNvbnN0IElERU5USVRZX1JPVVRFUyA9IFtcbiAge1xuICAgIG5hbWU6ICdBZG1pbmlzdHJhdGlvbicsXG4gICAgcGF0aDogJycsXG4gICAgb3JkZXI6IDEsXG4gICAgd3JhcHBlcjogdHJ1ZSxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdJZGVudGl0eScsXG4gICAgcGF0aDogJ2lkZW50aXR5JyxcbiAgICBvcmRlcjogMSxcbiAgICBwYXJlbnROYW1lOiAnQWRtaW5pc3RyYXRpb24nLFxuICAgIGxheW91dDogZUxheW91dFR5cGUuYXBwbGljYXRpb24sXG4gICAgY2hpbGRyZW46IFtcbiAgICAgIHsgcGF0aDogJ3JvbGVzJywgbmFtZTogJ1JvbGVzJywgb3JkZXI6IDIsIHJlcXVpcmVkUG9saWN5OiAnQWJwSWRlbnRpdHkuUm9sZXMnIH0sXG4gICAgICB7IHBhdGg6ICd1c2VycycsIG5hbWU6ICdVc2VycycsIG9yZGVyOiAxLCByZXF1aXJlZFBvbGljeTogJ0FicElkZW50aXR5LlVzZXJzJyB9LFxuICAgIF0sXG4gIH0sXG5dIGFzIEFCUC5GdWxsUm91dGVbXTtcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm2015/lib/identity-routing.module.js b/npm/ng-packs/dist/identity/esm2015/lib/identity-routing.module.js new file mode 100644 index 00000000000..e733f5d6f82 --- /dev/null +++ b/npm/ng-packs/dist/identity/esm2015/lib/identity-routing.module.js @@ -0,0 +1,47 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { RolesComponent } from './components/roles/roles.component'; +import { RoleResolver } from './resolvers/roles.resolver'; +import { DynamicLayoutComponent, AuthGuard, PermissionGuard } from '@abp/ng.core'; +import { UsersComponent } from './components/users/users.component'; +import { UserResolver } from './resolvers/users.resolver'; +const ɵ0 = { requiredPolicy: 'AbpIdentity.Roles' }, ɵ1 = { requiredPolicy: 'AbpIdentity.Users' }; +/** @type {?} */ +const routes = [ + { path: '', redirectTo: 'roles', pathMatch: 'full' }, + { + path: 'roles', + component: DynamicLayoutComponent, + canActivate: [AuthGuard, PermissionGuard], + data: ɵ0, + children: [{ path: '', component: RolesComponent, resolve: [RoleResolver] }], + }, + { + path: 'users', + component: DynamicLayoutComponent, + canActivate: [AuthGuard, PermissionGuard], + data: ɵ1, + children: [ + { + path: '', + component: UsersComponent, + resolve: [RoleResolver, UserResolver], + }, + ], + }, +]; +export class IdentityRoutingModule { +} +IdentityRoutingModule.decorators = [ + { type: NgModule, args: [{ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], + providers: [RoleResolver, UserResolver], + },] } +]; +export { ɵ0, ɵ1 }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmlkZW50aXR5LyIsInNvdXJjZXMiOlsibGliL2lkZW50aXR5LXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7V0FRaEQsRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsT0FPdkMsRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUU7O01BYjNDLE1BQU0sR0FBVztJQUNyQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO0lBQ3BEO1FBQ0UsSUFBSSxFQUFFLE9BQU87UUFDYixTQUFTLEVBQUUsc0JBQXNCO1FBQ2pDLFdBQVcsRUFBRSxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUM7UUFDekMsSUFBSSxJQUF5QztRQUM3QyxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO0tBQzdFO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsT0FBTztRQUNiLFNBQVMsRUFBRSxzQkFBc0I7UUFDakMsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQztRQUN6QyxJQUFJLElBQXlDO1FBQzdDLFFBQVEsRUFBRTtZQUNSO2dCQUNFLElBQUksRUFBRSxFQUFFO2dCQUNSLFNBQVMsRUFBRSxjQUFjO2dCQUN6QixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDO2FBQ3RDO1NBQ0Y7S0FDRjtDQUNGO0FBT0QsTUFBTSxPQUFPLHFCQUFxQjs7O1lBTGpDLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZCLFNBQVMsRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7YUFDeEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVzLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUm9sZXNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcm9sZXMvcm9sZXMuY29tcG9uZW50JztcbmltcG9ydCB7IFJvbGVSZXNvbHZlciB9IGZyb20gJy4vcmVzb2x2ZXJzL3JvbGVzLnJlc29sdmVyJztcbmltcG9ydCB7IER5bmFtaWNMYXlvdXRDb21wb25lbnQsIEF1dGhHdWFyZCwgUGVybWlzc2lvbkd1YXJkIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IFVzZXJzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3VzZXJzL3VzZXJzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyUmVzb2x2ZXIgfSBmcm9tICcuL3Jlc29sdmVycy91c2Vycy5yZXNvbHZlcic7XG5cbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICB7IHBhdGg6ICcnLCByZWRpcmVjdFRvOiAncm9sZXMnLCBwYXRoTWF0Y2g6ICdmdWxsJyB9LFxuICB7XG4gICAgcGF0aDogJ3JvbGVzJyxcbiAgICBjb21wb25lbnQ6IER5bmFtaWNMYXlvdXRDb21wb25lbnQsXG4gICAgY2FuQWN0aXZhdGU6IFtBdXRoR3VhcmQsIFBlcm1pc3Npb25HdWFyZF0sXG4gICAgZGF0YTogeyByZXF1aXJlZFBvbGljeTogJ0FicElkZW50aXR5LlJvbGVzJyB9LFxuICAgIGNoaWxkcmVuOiBbeyBwYXRoOiAnJywgY29tcG9uZW50OiBSb2xlc0NvbXBvbmVudCwgcmVzb2x2ZTogW1JvbGVSZXNvbHZlcl0gfV0sXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAndXNlcnMnLFxuICAgIGNvbXBvbmVudDogRHluYW1pY0xheW91dENvbXBvbmVudCxcbiAgICBjYW5BY3RpdmF0ZTogW0F1dGhHdWFyZCwgUGVybWlzc2lvbkd1YXJkXSxcbiAgICBkYXRhOiB7IHJlcXVpcmVkUG9saWN5OiAnQWJwSWRlbnRpdHkuVXNlcnMnIH0sXG4gICAgY2hpbGRyZW46IFtcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJycsXG4gICAgICAgIGNvbXBvbmVudDogVXNlcnNDb21wb25lbnQsXG4gICAgICAgIHJlc29sdmU6IFtSb2xlUmVzb2x2ZXIsIFVzZXJSZXNvbHZlcl0sXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbUm9sZVJlc29sdmVyLCBVc2VyUmVzb2x2ZXJdLFxufSlcbmV4cG9ydCBjbGFzcyBJZGVudGl0eVJvdXRpbmdNb2R1bGUge31cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm2015/lib/identity.module.js b/npm/ng-packs/dist/identity/esm2015/lib/identity.module.js new file mode 100644 index 00000000000..54493dc9516 --- /dev/null +++ b/npm/ng-packs/dist/identity/esm2015/lib/identity.module.js @@ -0,0 +1,37 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { CoreModule } from '@abp/ng.core'; +import { NgModule } from '@angular/core'; +import { NgxsModule } from '@ngxs/store'; +import { RolesComponent } from './components/roles/roles.component'; +import { IdentityRoutingModule } from './identity-routing.module'; +import { IdentityState } from './states/identity.state'; +import { NgbTabsetModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { UsersComponent } from './components/users/users.component'; +import { PermissionManagementModule } from '@abp/ng.permission-management'; +import { TableModule } from 'primeng/table'; +import { NgxValidateCoreModule } from '@ngx-validate/core'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; +export class IdentityModule { +} +IdentityModule.decorators = [ + { type: NgModule, args: [{ + declarations: [RolesComponent, UsersComponent], + imports: [ + NgxsModule.forFeature([IdentityState]), + CoreModule, + IdentityRoutingModule, + NgbTabsetModule, + ThemeSharedModule, + TableModule, + NgbDropdownModule, + PermissionManagementModule, + NgxValidateCoreModule, + PerfectScrollbarModule, + ], + },] } +]; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5pZGVudGl0eS8iLCJzb3VyY2VzIjpbImxpYi9pZGVudGl0eS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBaUIvRCxNQUFNLE9BQU8sY0FBYzs7O1lBZjFCLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDO2dCQUM5QyxPQUFPLEVBQUU7b0JBQ1AsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUN0QyxVQUFVO29CQUNWLHFCQUFxQjtvQkFDckIsZUFBZTtvQkFDZixpQkFBaUI7b0JBQ2pCLFdBQVc7b0JBQ1gsaUJBQWlCO29CQUNqQiwwQkFBMEI7b0JBQzFCLHFCQUFxQjtvQkFDckIsc0JBQXNCO2lCQUN2QjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd4c01vZHVsZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IFJvbGVzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JvbGVzL3JvbGVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZGVudGl0eVJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2lkZW50aXR5LXJvdXRpbmcubW9kdWxlJztcbmltcG9ydCB7IElkZW50aXR5U3RhdGUgfSBmcm9tICcuL3N0YXRlcy9pZGVudGl0eS5zdGF0ZSc7XG5pbXBvcnQgeyBOZ2JUYWJzZXRNb2R1bGUsIE5nYkRyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgVGhlbWVTaGFyZWRNb2R1bGUgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyBVc2Vyc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy91c2Vycy91c2Vycy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGVybWlzc2lvbk1hbmFnZW1lbnRNb2R1bGUgfSBmcm9tICdAYWJwL25nLnBlcm1pc3Npb24tbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBUYWJsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuaW1wb3J0IHsgTmd4VmFsaWRhdGVDb3JlTW9kdWxlIH0gZnJvbSAnQG5neC12YWxpZGF0ZS9jb3JlJztcbmltcG9ydCB7IFBlcmZlY3RTY3JvbGxiYXJNb2R1bGUgfSBmcm9tICduZ3gtcGVyZmVjdC1zY3JvbGxiYXInO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtSb2xlc0NvbXBvbmVudCwgVXNlcnNDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgTmd4c01vZHVsZS5mb3JGZWF0dXJlKFtJZGVudGl0eVN0YXRlXSksXG4gICAgQ29yZU1vZHVsZSxcbiAgICBJZGVudGl0eVJvdXRpbmdNb2R1bGUsXG4gICAgTmdiVGFic2V0TW9kdWxlLFxuICAgIFRoZW1lU2hhcmVkTW9kdWxlLFxuICAgIFRhYmxlTW9kdWxlLFxuICAgIE5nYkRyb3Bkb3duTW9kdWxlLFxuICAgIFBlcm1pc3Npb25NYW5hZ2VtZW50TW9kdWxlLFxuICAgIE5neFZhbGlkYXRlQ29yZU1vZHVsZSxcbiAgICBQZXJmZWN0U2Nyb2xsYmFyTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBJZGVudGl0eU1vZHVsZSB7fVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm2015/lib/models/identity.js b/npm/ng-packs/dist/identity/esm2015/lib/models/identity.js new file mode 100644 index 00000000000..c727c77125c --- /dev/null +++ b/npm/ng-packs/dist/identity/esm2015/lib/models/identity.js @@ -0,0 +1,102 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var Identity; +(function (Identity) { + /** + * @record + */ + function State() { } + Identity.State = State; + if (false) { + /** @type {?} */ + State.prototype.roles; + /** @type {?} */ + State.prototype.users; + /** @type {?} */ + State.prototype.selectedRole; + /** @type {?} */ + State.prototype.selectedUser; + /** @type {?} */ + State.prototype.selectedUserRoles; + } + /** + * @record + */ + function RoleSaveRequest() { } + Identity.RoleSaveRequest = RoleSaveRequest; + if (false) { + /** @type {?} */ + RoleSaveRequest.prototype.name; + /** @type {?} */ + RoleSaveRequest.prototype.isDefault; + /** @type {?} */ + RoleSaveRequest.prototype.isPublic; + } + /** + * @record + */ + function RoleItem() { } + Identity.RoleItem = RoleItem; + if (false) { + /** @type {?} */ + RoleItem.prototype.isStatic; + /** @type {?} */ + RoleItem.prototype.concurrencyStamp; + /** @type {?} */ + RoleItem.prototype.id; + } + /** + * @record + */ + function UserItem() { } + Identity.UserItem = UserItem; + if (false) { + /** @type {?} */ + UserItem.prototype.tenantId; + /** @type {?} */ + UserItem.prototype.emailConfirmed; + /** @type {?} */ + UserItem.prototype.phoneNumberConfirmed; + /** @type {?} */ + UserItem.prototype.isLockedOut; + /** @type {?} */ + UserItem.prototype.concurrencyStamp; + /** @type {?} */ + UserItem.prototype.id; + } + /** + * @record + */ + function User() { } + Identity.User = User; + if (false) { + /** @type {?} */ + User.prototype.userName; + /** @type {?} */ + User.prototype.name; + /** @type {?} */ + User.prototype.surname; + /** @type {?} */ + User.prototype.email; + /** @type {?} */ + User.prototype.phoneNumber; + /** @type {?} */ + User.prototype.twoFactorEnabled; + /** @type {?} */ + User.prototype.lockoutEnabled; + } + /** + * @record + */ + function UserSaveRequest() { } + Identity.UserSaveRequest = UserSaveRequest; + if (false) { + /** @type {?} */ + UserSaveRequest.prototype.password; + /** @type {?} */ + UserSaveRequest.prototype.roleNames; + } +})(Identity || (Identity = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmlkZW50aXR5LyIsInNvdXJjZXMiOlsibGliL21vZGVscy9pZGVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsTUFBTSxLQUFXLFFBQVEsQ0FnRHhCO0FBaERELFdBQWlCLFFBQVE7Ozs7SUFDdkIsb0JBTUM7Ozs7UUFMQyxzQkFBb0I7O1FBQ3BCLHNCQUFvQjs7UUFDcEIsNkJBQXVCOztRQUN2Qiw2QkFBdUI7O1FBQ3ZCLGtDQUE4Qjs7Ozs7SUFLaEMsOEJBSUM7Ozs7UUFIQywrQkFBYTs7UUFDYixvQ0FBbUI7O1FBQ25CLG1DQUFrQjs7Ozs7SUFHcEIsdUJBSUM7Ozs7UUFIQyw0QkFBa0I7O1FBQ2xCLG9DQUF5Qjs7UUFDekIsc0JBQVc7Ozs7O0lBS2IsdUJBT0M7Ozs7UUFOQyw0QkFBaUI7O1FBQ2pCLGtDQUF3Qjs7UUFDeEIsd0NBQThCOztRQUM5QiwrQkFBcUI7O1FBQ3JCLG9DQUF5Qjs7UUFDekIsc0JBQVc7Ozs7O0lBR2IsbUJBUUM7Ozs7UUFQQyx3QkFBaUI7O1FBQ2pCLG9CQUFhOztRQUNiLHVCQUFnQjs7UUFDaEIscUJBQWM7O1FBQ2QsMkJBQW9COztRQUNwQixnQ0FBdUI7O1FBQ3ZCLDhCQUFxQjs7Ozs7SUFHdkIsOEJBR0M7Ozs7UUFGQyxtQ0FBaUI7O1FBQ2pCLG9DQUFvQjs7QUFFeEIsQ0FBQyxFQWhEZ0IsUUFBUSxLQUFSLFFBQVEsUUFnRHhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUJQIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcblxuZXhwb3J0IG5hbWVzcGFjZSBJZGVudGl0eSB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgU3RhdGUge1xuICAgIHJvbGVzOiBSb2xlUmVzcG9uc2U7XG4gICAgdXNlcnM6IFVzZXJSZXNwb25zZTtcbiAgICBzZWxlY3RlZFJvbGU6IFJvbGVJdGVtO1xuICAgIHNlbGVjdGVkVXNlcjogVXNlckl0ZW07XG4gICAgc2VsZWN0ZWRVc2VyUm9sZXM6IFJvbGVJdGVtW107XG4gIH1cblxuICBleHBvcnQgdHlwZSBSb2xlUmVzcG9uc2UgPSBBQlAuUGFnZWRSZXNwb25zZTxSb2xlSXRlbT47XG5cbiAgZXhwb3J0IGludGVyZmFjZSBSb2xlU2F2ZVJlcXVlc3Qge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpc0RlZmF1bHQ6IGJvb2xlYW47XG4gICAgaXNQdWJsaWM6IGJvb2xlYW47XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFJvbGVJdGVtIGV4dGVuZHMgUm9sZVNhdmVSZXF1ZXN0IHtcbiAgICBpc1N0YXRpYzogYm9vbGVhbjtcbiAgICBjb25jdXJyZW5jeVN0YW1wOiBzdHJpbmc7XG4gICAgaWQ6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFVzZXJSZXNwb25zZSA9IEFCUC5QYWdlZFJlc3BvbnNlPFVzZXJJdGVtPjtcblxuICBleHBvcnQgaW50ZXJmYWNlIFVzZXJJdGVtIGV4dGVuZHMgVXNlciB7XG4gICAgdGVuYW50SWQ6IHN0cmluZztcbiAgICBlbWFpbENvbmZpcm1lZDogYm9vbGVhbjtcbiAgICBwaG9uZU51bWJlckNvbmZpcm1lZDogYm9vbGVhbjtcbiAgICBpc0xvY2tlZE91dDogYm9vbGVhbjtcbiAgICBjb25jdXJyZW5jeVN0YW1wOiBzdHJpbmc7XG4gICAgaWQ6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XG4gICAgdXNlck5hbWU6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc3VybmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgICB0d29GYWN0b3JFbmFibGVkOiB0cnVlO1xuICAgIGxvY2tvdXRFbmFibGVkOiB0cnVlO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBVc2VyU2F2ZVJlcXVlc3QgZXh0ZW5kcyBVc2VyIHtcbiAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgIHJvbGVOYW1lczogc3RyaW5nW107XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm2015/lib/resolvers/roles.resolver.js b/npm/ng-packs/dist/identity/esm2015/lib/resolvers/roles.resolver.js new file mode 100644 index 00000000000..4e75247cf61 --- /dev/null +++ b/npm/ng-packs/dist/identity/esm2015/lib/resolvers/roles.resolver.js @@ -0,0 +1,39 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { IdentityGetRoles } from '../actions/identity.actions'; +import { IdentityState } from '../states/identity.state'; +export class RoleResolver { + /** + * @param {?} store + */ + constructor(store) { + this.store = store; + } + /** + * @return {?} + */ + resolve() { + /** @type {?} */ + const roles = this.store.selectSnapshot(IdentityState.getRoles); + return roles && roles.length ? null : this.store.dispatch(new IdentityGetRoles()); + } +} +RoleResolver.decorators = [ + { type: Injectable } +]; +/** @nocollapse */ +RoleResolver.ctorParameters = () => [ + { type: Store } +]; +if (false) { + /** + * @type {?} + * @private + */ + RoleResolver.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmlkZW50aXR5LyIsInNvdXJjZXMiOlsibGliL3Jlc29sdmVycy9yb2xlcy5yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd6RCxNQUFNLE9BQU8sWUFBWTs7OztJQUN2QixZQUFvQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztJQUFHLENBQUM7Ozs7SUFFcEMsT0FBTzs7Y0FDQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUMvRCxPQUFPLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7OztZQVBGLFVBQVU7Ozs7WUFMRixLQUFLOzs7Ozs7O0lBT0EsNkJBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzb2x2ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IElkZW50aXR5R2V0Um9sZXMgfSBmcm9tICcuLi9hY3Rpb25zL2lkZW50aXR5LmFjdGlvbnMnO1xuaW1wb3J0IHsgSWRlbnRpdHkgfSBmcm9tICcuLi9tb2RlbHMvaWRlbnRpdHknO1xuaW1wb3J0IHsgSWRlbnRpdHlTdGF0ZSB9IGZyb20gJy4uL3N0YXRlcy9pZGVudGl0eS5zdGF0ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSb2xlUmVzb2x2ZXIgaW1wbGVtZW50cyBSZXNvbHZlPElkZW50aXR5LlN0YXRlPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIHJlc29sdmUoKSB7XG4gICAgY29uc3Qgcm9sZXMgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KElkZW50aXR5U3RhdGUuZ2V0Um9sZXMpO1xuICAgIHJldHVybiByb2xlcyAmJiByb2xlcy5sZW5ndGggPyBudWxsIDogdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgSWRlbnRpdHlHZXRSb2xlcygpKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm2015/lib/resolvers/users.resolver.js b/npm/ng-packs/dist/identity/esm2015/lib/resolvers/users.resolver.js new file mode 100644 index 00000000000..010dd25f03b --- /dev/null +++ b/npm/ng-packs/dist/identity/esm2015/lib/resolvers/users.resolver.js @@ -0,0 +1,39 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { IdentityGetUsers } from '../actions/identity.actions'; +import { IdentityState } from '../states/identity.state'; +export class UserResolver { + /** + * @param {?} store + */ + constructor(store) { + this.store = store; + } + /** + * @return {?} + */ + resolve() { + /** @type {?} */ + const users = this.store.selectSnapshot(IdentityState.getUsers); + return users && users.length ? null : this.store.dispatch(new IdentityGetUsers()); + } +} +UserResolver.decorators = [ + { type: Injectable } +]; +/** @nocollapse */ +UserResolver.ctorParameters = () => [ + { type: Store } +]; +if (false) { + /** + * @type {?} + * @private + */ + UserResolver.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmlkZW50aXR5LyIsInNvdXJjZXMiOlsibGliL3Jlc29sdmVycy91c2Vycy5yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd6RCxNQUFNLE9BQU8sWUFBWTs7OztJQUN2QixZQUFvQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztJQUFHLENBQUM7Ozs7SUFFcEMsT0FBTzs7Y0FDQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUMvRCxPQUFPLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7OztZQVBGLFVBQVU7Ozs7WUFMRixLQUFLOzs7Ozs7O0lBT0EsNkJBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzb2x2ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IElkZW50aXR5R2V0VXNlcnMgfSBmcm9tICcuLi9hY3Rpb25zL2lkZW50aXR5LmFjdGlvbnMnO1xuaW1wb3J0IHsgSWRlbnRpdHkgfSBmcm9tICcuLi9tb2RlbHMvaWRlbnRpdHknO1xuaW1wb3J0IHsgSWRlbnRpdHlTdGF0ZSB9IGZyb20gJy4uL3N0YXRlcy9pZGVudGl0eS5zdGF0ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVc2VyUmVzb2x2ZXIgaW1wbGVtZW50cyBSZXNvbHZlPElkZW50aXR5LlN0YXRlPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIHJlc29sdmUoKSB7XG4gICAgY29uc3QgdXNlcnMgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KElkZW50aXR5U3RhdGUuZ2V0VXNlcnMpO1xuICAgIHJldHVybiB1c2VycyAmJiB1c2Vycy5sZW5ndGggPyBudWxsIDogdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgSWRlbnRpdHlHZXRVc2VycygpKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm2015/lib/services/identity.service.js b/npm/ng-packs/dist/identity/esm2015/lib/services/identity.service.js new file mode 100644 index 00000000000..efac4827352 --- /dev/null +++ b/npm/ng-packs/dist/identity/esm2015/lib/services/identity.service.js @@ -0,0 +1,176 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { RestService } from '@abp/ng.core'; +import * as i0 from "@angular/core"; +import * as i1 from "@abp/ng.core"; +export class IdentityService { + /** + * @param {?} rest + */ + constructor(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + getRoles() { + /** @type {?} */ + const request = { + method: 'GET', + url: '/api/identity/roles', + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + getRoleById(id) { + /** @type {?} */ + const request = { + method: 'GET', + url: `/api/identity/roles/${id}`, + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + deleteRole(id) { + /** @type {?} */ + const request = { + method: 'DELETE', + url: `/api/identity/roles/${id}`, + }; + return this.rest.request(request); + } + /** + * @param {?} body + * @return {?} + */ + addRole(body) { + /** @type {?} */ + const request = { + method: 'POST', + url: '/api/identity/roles', + body, + }; + return this.rest.request(request); + } + /** + * @param {?} body + * @return {?} + */ + updateRole(body) { + /** @type {?} */ + const url = `/api/identity/roles/${body.id}`; + delete body.id; + /** @type {?} */ + const request = { + method: 'PUT', + url, + body, + }; + return this.rest.request(request); + } + /** + * @param {?=} params + * @return {?} + */ + getUsers(params = (/** @type {?} */ ({}))) { + /** @type {?} */ + const request = { + method: 'GET', + url: '/api/identity/users', + params, + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + getUserById(id) { + /** @type {?} */ + const request = { + method: 'GET', + url: `/api/identity/users/${id}`, + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + getUserRoles(id) { + /** @type {?} */ + const request = { + method: 'GET', + url: `/api/identity/users/${id}/roles`, + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + deleteUser(id) { + /** @type {?} */ + const request = { + method: 'DELETE', + url: `/api/identity/users/${id}`, + }; + return this.rest.request(request); + } + /** + * @param {?} body + * @return {?} + */ + addUser(body) { + /** @type {?} */ + const request = { + method: 'POST', + url: '/api/identity/users', + body, + }; + return this.rest.request(request); + } + /** + * @param {?} body + * @return {?} + */ + updateUser(body) { + /** @type {?} */ + const url = `/identity/users/${body.id}`; + delete body.id; + /** @type {?} */ + const request = { + method: 'PUT', + url, + body, + }; + return this.rest.request(request); + } +} +IdentityService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +IdentityService.ctorParameters = () => [ + { type: RestService } +]; +/** @nocollapse */ IdentityService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function IdentityService_Factory() { return new IdentityService(i0.ɵɵinject(i1.RestService)); }, token: IdentityService, providedIn: "root" }); +if (false) { + /** + * @type {?} + * @private + */ + IdentityService.prototype.rest; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuaWRlbnRpdHkvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvaWRlbnRpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsV0FBVyxFQUFhLE1BQU0sY0FBYyxDQUFDOzs7QUFNdEQsTUFBTSxPQUFPLGVBQWU7Ozs7SUFDMUIsWUFBb0IsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUFHLENBQUM7Ozs7SUFFekMsUUFBUTs7Y0FDQSxPQUFPLEdBQXVCO1lBQ2xDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxFQUFFLHFCQUFxQjtTQUMzQjtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQThCLE9BQU8sQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Ozs7O0lBRUQsV0FBVyxDQUFDLEVBQVU7O2NBQ2QsT0FBTyxHQUF1QjtZQUNsQyxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsRUFBRSx1QkFBdUIsRUFBRSxFQUFFO1NBQ2pDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBMEIsT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs7Ozs7SUFFRCxVQUFVLENBQUMsRUFBVTs7Y0FDYixPQUFPLEdBQXVCO1lBQ2xDLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLEdBQUcsRUFBRSx1QkFBdUIsRUFBRSxFQUFFO1NBQ2pDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBMEIsT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs7Ozs7SUFFRCxPQUFPLENBQUMsSUFBOEI7O2NBQzlCLE9BQU8sR0FBMkM7WUFDdEQsTUFBTSxFQUFFLE1BQU07WUFDZCxHQUFHLEVBQUUscUJBQXFCO1lBQzFCLElBQUk7U0FDTDtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQThDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pGLENBQUM7Ozs7O0lBRUQsVUFBVSxDQUFDLElBQXVCOztjQUMxQixHQUFHLEdBQUcsdUJBQXVCLElBQUksQ0FBQyxFQUFFLEVBQUU7UUFDNUMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDOztjQUVULE9BQU8sR0FBb0M7WUFDL0MsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHO1lBQ0gsSUFBSTtTQUNMO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBdUMsT0FBTyxDQUFDLENBQUM7SUFDMUUsQ0FBQzs7Ozs7SUFFRCxRQUFRLENBQUMsTUFBTSxHQUFHLG1CQUFBLEVBQUUsRUFBdUI7O2NBQ25DLE9BQU8sR0FBdUI7WUFDbEMsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEVBQUUscUJBQXFCO1lBQzFCLE1BQU07U0FDUDtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQThCLE9BQU8sQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Ozs7O0lBRUQsV0FBVyxDQUFDLEVBQVU7O2NBQ2QsT0FBTyxHQUF1QjtZQUNsQyxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsRUFBRSx1QkFBdUIsRUFBRSxFQUFFO1NBQ2pDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBMEIsT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs7Ozs7SUFFRCxZQUFZLENBQUMsRUFBVTs7Y0FDZixPQUFPLEdBQXVCO1lBQ2xDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxFQUFFLHVCQUF1QixFQUFFLFFBQVE7U0FDdkM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUE4QixPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDOzs7OztJQUVELFVBQVUsQ0FBQyxFQUFVOztjQUNiLE9BQU8sR0FBdUI7WUFDbEMsTUFBTSxFQUFFLFFBQVE7WUFDaEIsR0FBRyxFQUFFLHVCQUF1QixFQUFFLEVBQUU7U0FDakM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFhLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7Ozs7O0lBRUQsT0FBTyxDQUFDLElBQThCOztjQUM5QixPQUFPLEdBQTJDO1lBQ3RELE1BQU0sRUFBRSxNQUFNO1lBQ2QsR0FBRyxFQUFFLHFCQUFxQjtZQUMxQixJQUFJO1NBQ0w7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUE4QyxPQUFPLENBQUMsQ0FBQztJQUNqRixDQUFDOzs7OztJQUVELFVBQVUsQ0FBQyxJQUF1Qjs7Y0FDMUIsR0FBRyxHQUFHLG1CQUFtQixJQUFJLENBQUMsRUFBRSxFQUFFO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQzs7Y0FFVCxPQUFPLEdBQW9DO1lBQy9DLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRztZQUNILElBQUk7U0FDTDtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQXVDLE9BQU8sQ0FBQyxDQUFDO0lBQzFFLENBQUM7OztZQWxIRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7WUFMUSxXQUFXOzs7Ozs7OztJQU9OLCtCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlLCBSZXN0LCBBQlAgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgSWRlbnRpdHkgfSBmcm9tICcuLi9tb2RlbHMvaWRlbnRpdHknO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0OiBSZXN0U2VydmljZSkge31cblxuICBnZXRSb2xlcygpOiBPYnNlcnZhYmxlPElkZW50aXR5LlJvbGVSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlc3QuUmVxdWVzdDxudWxsPiA9IHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB1cmw6ICcvYXBpL2lkZW50aXR5L3JvbGVzJyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PG51bGwsIElkZW50aXR5LlJvbGVSZXNwb25zZT4ocmVxdWVzdCk7XG4gIH1cblxuICBnZXRSb2xlQnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxJZGVudGl0eS5Sb2xlSXRlbT4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlc3QuUmVxdWVzdDxudWxsPiA9IHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB1cmw6IGAvYXBpL2lkZW50aXR5L3JvbGVzLyR7aWR9YCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PG51bGwsIElkZW50aXR5LlJvbGVJdGVtPihyZXF1ZXN0KTtcbiAgfVxuXG4gIGRlbGV0ZVJvbGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8SWRlbnRpdHkuUm9sZUl0ZW0+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8bnVsbD4gPSB7XG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgdXJsOiBgL2FwaS9pZGVudGl0eS9yb2xlcy8ke2lkfWAsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDxudWxsLCBJZGVudGl0eS5Sb2xlSXRlbT4ocmVxdWVzdCk7XG4gIH1cblxuICBhZGRSb2xlKGJvZHk6IElkZW50aXR5LlJvbGVTYXZlUmVxdWVzdCk6IE9ic2VydmFibGU8SWRlbnRpdHkuUm9sZUl0ZW0+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8SWRlbnRpdHkuUm9sZVNhdmVSZXF1ZXN0PiA9IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgdXJsOiAnL2FwaS9pZGVudGl0eS9yb2xlcycsXG4gICAgICBib2R5LFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5yZXN0LnJlcXVlc3Q8SWRlbnRpdHkuUm9sZVNhdmVSZXF1ZXN0LCBJZGVudGl0eS5Sb2xlSXRlbT4ocmVxdWVzdCk7XG4gIH1cblxuICB1cGRhdGVSb2xlKGJvZHk6IElkZW50aXR5LlJvbGVJdGVtKTogT2JzZXJ2YWJsZTxJZGVudGl0eS5Sb2xlSXRlbT4ge1xuICAgIGNvbnN0IHVybCA9IGAvYXBpL2lkZW50aXR5L3JvbGVzLyR7Ym9keS5pZH1gO1xuICAgIGRlbGV0ZSBib2R5LmlkO1xuXG4gICAgY29uc3QgcmVxdWVzdDogUmVzdC5SZXF1ZXN0PElkZW50aXR5LlJvbGVJdGVtPiA9IHtcbiAgICAgIG1ldGhvZDogJ1BVVCcsXG4gICAgICB1cmwsXG4gICAgICBib2R5LFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5yZXN0LnJlcXVlc3Q8SWRlbnRpdHkuUm9sZUl0ZW0sIElkZW50aXR5LlJvbGVJdGVtPihyZXF1ZXN0KTtcbiAgfVxuXG4gIGdldFVzZXJzKHBhcmFtcyA9IHt9IGFzIEFCUC5QYWdlUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPElkZW50aXR5LlVzZXJSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlc3QuUmVxdWVzdDxudWxsPiA9IHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB1cmw6ICcvYXBpL2lkZW50aXR5L3VzZXJzJyxcbiAgICAgIHBhcmFtcyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PG51bGwsIElkZW50aXR5LlVzZXJSZXNwb25zZT4ocmVxdWVzdCk7XG4gIH1cblxuICBnZXRVc2VyQnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxJZGVudGl0eS5Vc2VySXRlbT4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlc3QuUmVxdWVzdDxudWxsPiA9IHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB1cmw6IGAvYXBpL2lkZW50aXR5L3VzZXJzLyR7aWR9YCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PG51bGwsIElkZW50aXR5LlVzZXJJdGVtPihyZXF1ZXN0KTtcbiAgfVxuXG4gIGdldFVzZXJSb2xlcyhpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxJZGVudGl0eS5Sb2xlUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8bnVsbD4gPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgdXJsOiBgL2FwaS9pZGVudGl0eS91c2Vycy8ke2lkfS9yb2xlc2AsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDxudWxsLCBJZGVudGl0eS5Sb2xlUmVzcG9uc2U+KHJlcXVlc3QpO1xuICB9XG5cbiAgZGVsZXRlVXNlcihpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgY29uc3QgcmVxdWVzdDogUmVzdC5SZXF1ZXN0PG51bGw+ID0ge1xuICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgIHVybDogYC9hcGkvaWRlbnRpdHkvdXNlcnMvJHtpZH1gLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5yZXN0LnJlcXVlc3Q8bnVsbCwgbnVsbD4ocmVxdWVzdCk7XG4gIH1cblxuICBhZGRVc2VyKGJvZHk6IElkZW50aXR5LlVzZXJTYXZlUmVxdWVzdCk6IE9ic2VydmFibGU8SWRlbnRpdHkuVXNlckl0ZW0+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8SWRlbnRpdHkuVXNlclNhdmVSZXF1ZXN0PiA9IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgdXJsOiAnL2FwaS9pZGVudGl0eS91c2VycycsXG4gICAgICBib2R5LFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5yZXN0LnJlcXVlc3Q8SWRlbnRpdHkuVXNlclNhdmVSZXF1ZXN0LCBJZGVudGl0eS5Vc2VySXRlbT4ocmVxdWVzdCk7XG4gIH1cblxuICB1cGRhdGVVc2VyKGJvZHk6IElkZW50aXR5LlVzZXJJdGVtKTogT2JzZXJ2YWJsZTxJZGVudGl0eS5Vc2VySXRlbT4ge1xuICAgIGNvbnN0IHVybCA9IGAvaWRlbnRpdHkvdXNlcnMvJHtib2R5LmlkfWA7XG4gICAgZGVsZXRlIGJvZHkuaWQ7XG5cbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8SWRlbnRpdHkuVXNlckl0ZW0+ID0ge1xuICAgICAgbWV0aG9kOiAnUFVUJyxcbiAgICAgIHVybCxcbiAgICAgIGJvZHksXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDxJZGVudGl0eS5Vc2VySXRlbSwgSWRlbnRpdHkuVXNlckl0ZW0+KHJlcXVlc3QpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm2015/lib/states/identity.state.js b/npm/ng-packs/dist/identity/esm2015/lib/states/identity.state.js new file mode 100644 index 00000000000..48c629a2d4e --- /dev/null +++ b/npm/ng-packs/dist/identity/esm2015/lib/states/identity.state.js @@ -0,0 +1,292 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Action, Selector, State } from '@ngxs/store'; +import { switchMap, tap, pluck } from 'rxjs/operators'; +import { IdentityAddRole, IdentityAddUser, IdentityDeleteRole, IdentityDeleteUser, IdentityGetRoleById, IdentityGetRoles, IdentityGetUserById, IdentityGetUsers, IdentityUpdateRole, IdentityUpdateUser, IdentityGetUserRoles, } from '../actions/identity.actions'; +import { IdentityService } from '../services/identity.service'; +let IdentityState = class IdentityState { + /** + * @param {?} identityService + */ + constructor(identityService) { + this.identityService = identityService; + } + /** + * @param {?} __0 + * @return {?} + */ + static getRoles({ roles }) { + return roles.items; + } + /** + * @param {?} __0 + * @return {?} + */ + static getRolesTotalCount({ roles }) { + return roles.totalCount; + } + /** + * @param {?} __0 + * @return {?} + */ + static getUsers({ users }) { + return users.items; + } + /** + * @param {?} __0 + * @return {?} + */ + static getUsersTotalCount({ users }) { + return users.totalCount; + } + /** + * @param {?} __0 + * @return {?} + */ + getRoles({ patchState }) { + return this.identityService.getRoles().pipe(tap((/** + * @param {?} roles + * @return {?} + */ + roles => patchState({ + roles, + })))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + getRole({ patchState }, { payload }) { + return this.identityService.getRoleById(payload).pipe(tap((/** + * @param {?} selectedRole + * @return {?} + */ + selectedRole => patchState({ + selectedRole, + })))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + deleteRole({ dispatch }, { payload }) { + return this.identityService.deleteRole(payload).pipe(switchMap((/** + * @return {?} + */ + () => dispatch(new IdentityGetRoles())))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + addRole({ dispatch }, { payload }) { + return this.identityService.addRole(payload).pipe(switchMap((/** + * @return {?} + */ + () => dispatch(new IdentityGetRoles())))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + updateRole({ getState, dispatch }, { payload }) { + return dispatch(new IdentityGetRoleById(payload.id)).pipe(switchMap((/** + * @return {?} + */ + () => this.identityService.updateRole(Object.assign({}, getState().selectedRole, payload)))), switchMap((/** + * @return {?} + */ + () => dispatch(new IdentityGetRoles())))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + getUsers({ patchState }, { payload }) { + return this.identityService.getUsers(payload).pipe(tap((/** + * @param {?} users + * @return {?} + */ + users => patchState({ + users, + })))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + getUser({ patchState }, { payload }) { + return this.identityService.getUserById(payload).pipe(tap((/** + * @param {?} selectedUser + * @return {?} + */ + selectedUser => patchState({ + selectedUser, + })))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + deleteUser({ dispatch }, { payload }) { + return this.identityService.deleteUser(payload).pipe(switchMap((/** + * @return {?} + */ + () => dispatch(new IdentityGetUsers())))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + addUser({ dispatch }, { payload }) { + return this.identityService.addUser(payload).pipe(switchMap((/** + * @return {?} + */ + () => dispatch(new IdentityGetUsers())))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + updateUser({ getState, dispatch }, { payload }) { + return dispatch(new IdentityGetUserById(payload.id)).pipe(switchMap((/** + * @return {?} + */ + () => this.identityService.updateUser(Object.assign({}, getState().selectedUser, payload)))), switchMap((/** + * @return {?} + */ + () => dispatch(new IdentityGetUsers())))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + getUserRoles({ patchState }, { payload }) { + return this.identityService.getUserRoles(payload).pipe(pluck('items'), tap((/** + * @param {?} selectedUserRoles + * @return {?} + */ + selectedUserRoles => patchState({ + selectedUserRoles, + })))); + } +}; +tslib_1.__decorate([ + Action(IdentityGetRoles), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", void 0) +], IdentityState.prototype, "getRoles", null); +tslib_1.__decorate([ + Action(IdentityGetRoleById), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityGetRoleById]), + tslib_1.__metadata("design:returntype", void 0) +], IdentityState.prototype, "getRole", null); +tslib_1.__decorate([ + Action(IdentityDeleteRole), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityGetRoleById]), + tslib_1.__metadata("design:returntype", void 0) +], IdentityState.prototype, "deleteRole", null); +tslib_1.__decorate([ + Action(IdentityAddRole), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityAddRole]), + tslib_1.__metadata("design:returntype", void 0) +], IdentityState.prototype, "addRole", null); +tslib_1.__decorate([ + Action(IdentityUpdateRole), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityUpdateRole]), + tslib_1.__metadata("design:returntype", void 0) +], IdentityState.prototype, "updateRole", null); +tslib_1.__decorate([ + Action(IdentityGetUsers), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityGetUsers]), + tslib_1.__metadata("design:returntype", void 0) +], IdentityState.prototype, "getUsers", null); +tslib_1.__decorate([ + Action(IdentityGetUserById), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityGetUserById]), + tslib_1.__metadata("design:returntype", void 0) +], IdentityState.prototype, "getUser", null); +tslib_1.__decorate([ + Action(IdentityDeleteUser), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityGetUserById]), + tslib_1.__metadata("design:returntype", void 0) +], IdentityState.prototype, "deleteUser", null); +tslib_1.__decorate([ + Action(IdentityAddUser), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityAddUser]), + tslib_1.__metadata("design:returntype", void 0) +], IdentityState.prototype, "addUser", null); +tslib_1.__decorate([ + Action(IdentityUpdateUser), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityUpdateUser]), + tslib_1.__metadata("design:returntype", void 0) +], IdentityState.prototype, "updateUser", null); +tslib_1.__decorate([ + Action(IdentityGetUserRoles), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityGetUserRoles]), + tslib_1.__metadata("design:returntype", void 0) +], IdentityState.prototype, "getUserRoles", null); +tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", Array) +], IdentityState, "getRoles", null); +tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", Number) +], IdentityState, "getRolesTotalCount", null); +tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", Array) +], IdentityState, "getUsers", null); +tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", Number) +], IdentityState, "getUsersTotalCount", null); +IdentityState = tslib_1.__decorate([ + State({ + name: 'IdentityState', + defaults: (/** @type {?} */ ({ roles: {}, selectedRole: {}, users: {}, selectedUser: {} })), + }), + tslib_1.__metadata("design:paramtypes", [IdentityService]) +], IdentityState); +export { IdentityState }; +if (false) { + /** + * @type {?} + * @private + */ + IdentityState.prototype.identityService; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuc3RhdGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmlkZW50aXR5LyIsInNvdXJjZXMiOlsibGliL3N0YXRlcy9pZGVudGl0eS5zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBZ0IsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUNMLGVBQWUsRUFDZixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixvQkFBb0IsR0FDckIsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7SUFNbEQsYUFBYSxTQUFiLGFBQWE7Ozs7SUFxQnhCLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUFHLENBQUM7Ozs7O0lBbkJ4RCxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFrQjtRQUN2QyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDckIsQ0FBQzs7Ozs7SUFHRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsRUFBRSxLQUFLLEVBQWtCO1FBQ2pELE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUMxQixDQUFDOzs7OztJQUdELE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQWtCO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNyQixDQUFDOzs7OztJQUdELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEtBQUssRUFBa0I7UUFDakQsT0FBTyxLQUFLLENBQUMs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QyxNQUFNLENBQUMsa0JBQWtCLENBQUM7O3FEQUN5QyxtQkFBbUI7OytDQUV0RjtBQUdEO0lBREMsTUFBTSxDQUFDLGVBQWUsQ0FBQzs7cURBQ3lDLGVBQWU7OzRDQUUvRTtBQUdEO0lBREMsTUFBTSxDQUFDLGtCQUFrQixDQUFDOztxREFDbUQsa0JBQWtCOzsrQ0FLL0Y7QUFHRDtJQURDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQzs7cURBQzJDLGdCQUFnQjs7NkNBUW5GO0FBR0Q7SUFEQyxNQUFNLENBQUMsbUJBQW1CLENBQUM7O3FEQUN1QyxtQkFBbUI7OzRDQVFyRjtBQUdEO0lBREMsTUFBTSxDQUFDLGtCQUFrQixDQUFDOztxREFDeUMsbUJBQW1COzsrQ0FFdEY7QUFHRDtJQURDLE1BQU0sQ0FBQyxlQUFlLENBQUM7O3FEQUN5QyxlQUFlOzs0Q0FFL0U7QUFHRDtJQURDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQzs7cURBQ21ELGtCQUFrQjs7K0NBSy9GO0FBR0Q7SUFEQyxNQUFNLENBQUMsb0JBQW9CLENBQUM7O3FEQUMyQyxvQkFBb0I7O2lEQVMzRjtBQS9HRDtJQURDLFFBQVEsRUFBRTs7OzttQ0FHVjtBQUdEO0lBREMsUUFBUSxFQUFFOzs7OzZDQUdWO0FBR0Q7SUFEQyxRQUFRLEVBQUU7Ozs7bUNBR1Y7QUFHRDtJQURDLFFBQVEsRUFBRTs7Ozs2Q0FHVjtBQW5CVSxhQUFhO0lBSnpCLEtBQUssQ0FBaUI7UUFDckIsSUFBSSxFQUFFLGVBQWU7UUFDckIsUUFBUSxFQUFFLG1CQUFBLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFrQjtLQUN6RixDQUFDOzZDQXNCcUMsZUFBZTtHQXJCekMsYUFBYSxDQWtIekI7U0FsSFksYUFBYTs7Ozs7O0lBcUJaLHdDQUF3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiwgU2VsZWN0b3IsIFN0YXRlLCBTdGF0ZUNvbnRleHQgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRhcCwgcGx1Y2sgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBJZGVudGl0eUFkZFJvbGUsXG4gIElkZW50aXR5QWRkVXNlcixcbiAgSWRlbnRpdHlEZWxldGVSb2xlLFxuICBJZGVudGl0eURlbGV0ZVVzZXIsXG4gIElkZW50aXR5R2V0Um9sZUJ5SWQsXG4gIElkZW50aXR5R2V0Um9sZXMsXG4gIElkZW50aXR5R2V0VXNlckJ5SWQsXG4gIElkZW50aXR5R2V0VXNlcnMsXG4gIElkZW50aXR5VXBkYXRlUm9sZSxcbiAgSWRlbnRpdHlVcGRhdGVVc2VyLFxuICBJZGVudGl0eUdldFVzZXJSb2xlcyxcbn0gZnJvbSAnLi4vYWN0aW9ucy9pZGVudGl0eS5hY3Rpb25zJztcbmltcG9ydCB7IElkZW50aXR5IH0gZnJvbSAnLi4vbW9kZWxzL2lkZW50aXR5JztcbmltcG9ydCB7IElkZW50aXR5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2lkZW50aXR5LnNlcnZpY2UnO1xuXG5AU3RhdGU8SWRlbnRpdHkuU3RhdGU+KHtcbiAgbmFtZTogJ0lkZW50aXR5U3RhdGUnLFxuICBkZWZhdWx0czogeyByb2xlczoge30sIHNlbGVjdGVkUm9sZToge30sIHVzZXJzOiB7fSwgc2VsZWN0ZWRVc2VyOiB7fSB9IGFzIElkZW50aXR5LlN0YXRlLFxufSlcbmV4cG9ydCBjbGFzcyBJZGVudGl0eVN0YXRlIHtcbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldFJvbGVzKHsgcm9sZXMgfTogSWRlbnRpdHkuU3RhdGUpOiBJZGVudGl0eS5Sb2xlSXRlbVtdIHtcbiAgICByZXR1cm4gcm9sZXMuaXRlbXM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0Um9sZXNUb3RhbENvdW50KHsgcm9sZXMgfTogSWRlbnRpdHkuU3RhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiByb2xlcy50b3RhbENvdW50O1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldFVzZXJzKHsgdXNlcnMgfTogSWRlbnRpdHkuU3RhdGUpOiBJZGVudGl0eS5Vc2VySXRlbVtdIHtcbiAgICByZXR1cm4gdXNlcnMuaXRlbXM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0VXNlcnNUb3RhbENvdW50KHsgdXNlcnMgfTogSWRlbnRpdHkuU3RhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiB1c2Vycy50b3RhbENvdW50O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpZGVudGl0eVNlcnZpY2U6IElkZW50aXR5U2VydmljZSkge31cblxuICBAQWN0aW9uKElkZW50aXR5R2V0Um9sZXMpXG4gIGdldFJvbGVzKHsgcGF0Y2hTdGF0ZSB9OiBTdGF0ZUNvbnRleHQ8SWRlbnRpdHkuU3RhdGU+KSB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdHlTZXJ2aWNlLmdldFJvbGVzKCkucGlwZShcbiAgICAgIHRhcChyb2xlcyA9PlxuICAgICAgICBwYXRjaFN0YXRlKHtcbiAgICAgICAgICByb2xlcyxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBAQWN0aW9uKElkZW50aXR5R2V0Um9sZUJ5SWQpXG4gIGdldFJvbGUoeyBwYXRjaFN0YXRlIH06IFN0YXRlQ29udGV4dDxJZGVudGl0eS5TdGF0ZT4sIHsgcGF5bG9hZCB9OiBJZGVudGl0eUdldFJvbGVCeUlkKSB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdHlTZXJ2aWNlLmdldFJvbGVCeUlkKHBheWxvYWQpLnBpcGUoXG4gICAgICB0YXAoc2VsZWN0ZWRSb2xlID0+XG4gICAgICAgIHBhdGNoU3RhdGUoe1xuICAgICAgICAgIHNlbGVjdGVkUm9sZSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBAQWN0aW9uKElkZW50aXR5RGVsZXRlUm9sZSlcbiAgZGVsZXRlUm9sZSh7IGRpc3BhdGNoIH06IFN0YXRlQ29udGV4dDxJZGVudGl0eS5TdGF0ZT4sIHsgcGF5bG9hZCB9OiBJZGVudGl0eUdldFJvbGVCeUlkKSB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdHlTZXJ2aWNlLmRlbGV0ZVJvbGUocGF5bG9hZCkucGlwZShzd2l0Y2hNYXAoKCkgPT4gZGlzcGF0Y2gobmV3IElkZW50aXR5R2V0Um9sZXMoKSkpKTtcbiAgfVxuXG4gIEBBY3Rpb24oSWRlbnRpdHlBZGRSb2xlKVxuICBhZGRSb2xlKHsgZGlzcGF0Y2ggfTogU3RhdGVDb250ZXh0PElkZW50aXR5LlN0YXRlPiwgeyBwYXlsb2FkIH06IElkZW50aXR5QWRkUm9sZSkge1xuICAgIHJldHVybiB0aGlzLmlkZW50aXR5U2VydmljZS5hZGRSb2xlKHBheWxvYWQpLnBpcGUoc3dpdGNoTWFwKCgpID0+IGRpc3BhdGNoKG5ldyBJZGVudGl0eUdldFJvbGVzKCkpKSk7XG4gIH1cblxuICBAQWN0aW9uKElkZW50aXR5VXBkYXRlUm9sZSlcbiAgdXBkYXRlUm9sZSh7IGdldFN0YXRlLCBkaXNwYXRjaCB9OiBTdGF0ZUNvbnRleHQ8SWRlbnRpdHkuU3RhdGU+LCB7IHBheWxvYWQgfTogSWRlbnRpdHlVcGRhdGVSb2xlKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoKG5ldyBJZGVudGl0eUdldFJvbGVCeUlkKHBheWxvYWQuaWQpKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuaWRlbnRpdHlTZXJ2aWNlLnVwZGF0ZVJvbGUoeyAuLi5nZXRTdGF0ZSgpLnNlbGVjdGVkUm9sZSwgLi4ucGF5bG9hZCB9KSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gZGlzcGF0Y2gobmV3IElkZW50aXR5R2V0Um9sZXMoKSkpLFxuICAgICk7XG4gIH1cblxuICBAQWN0aW9uKElkZW50aXR5R2V0VXNlcnMpXG4gIGdldFVzZXJzKHsgcGF0Y2hTdGF0ZSB9OiBTdGF0ZUNvbnRleHQ8SWRlbnRpdHkuU3RhdGU+LCB7IHBheWxvYWQgfTogSWRlbnRpdHlHZXRVc2Vycykge1xuICAgIHJldHVybiB0aGlzLmlkZW50aXR5U2VydmljZS5nZXRVc2VycyhwYXlsb2FkKS5waXBlKFxuICAgICAgdGFwKHVzZXJzID0+XG4gICAgICAgIHBhdGNoU3RhdGUoe1xuICAgICAgICAgIHVzZXJzLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIEBBY3Rpb24oSWRlbnRpdHlHZXRVc2VyQnlJZClcbiAgZ2V0VXNlcih7IHBhdGNoU3RhdGUgfTogU3RhdGVDb250ZXh0PElkZW50aXR5LlN0YXRlPiwgeyBwYXlsb2FkIH06IElkZW50aXR5R2V0VXNlckJ5SWQpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0eVNlcnZpY2UuZ2V0VXNlckJ5SWQocGF5bG9hZCkucGlwZShcbiAgICAgIHRhcChzZWxlY3RlZFVzZXIgPT5cbiAgICAgICAgcGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgc2VsZWN0ZWRVc2VyLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIEBBY3Rpb24oSWRlbnRpdHlEZWxldGVVc2VyKVxuICBkZWxldGVVc2VyKHsgZGlzcGF0Y2ggfTogU3RhdGVDb250ZXh0PElkZW50aXR5LlN0YXRlPiwgeyBwYXlsb2FkIH06IElkZW50aXR5R2V0VXNlckJ5SWQpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0eVNlcnZpY2UuZGVsZXRlVXNlcihwYXlsb2FkKS5waXBlKHN3aXRjaE1hcCgoKSA9PiBkaXNwYXRjaChuZXcgSWRlbnRpdHlHZXRVc2VycygpKSkpO1xuICB9XG5cbiAgQEFjdGlvbihJZGVudGl0eUFkZFVzZXIpXG4gIGFkZFVzZXIoeyBkaXNwYXRjaCB9OiBTdGF0ZUNvbnRleHQ8SWRlbnRpdHkuU3RhdGU+LCB7IHBheWxvYWQgfTogSWRlbnRpdHlBZGRVc2VyKSB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdHlTZXJ2aWNlLmFkZFVzZXIocGF5bG9hZCkucGlwZShzd2l0Y2hNYXAoKCkgPT4gZGlzcGF0Y2gobmV3IElkZW50aXR5R2V0VXNlcnMoKSkpKTtcbiAgfVxuXG4gIEBBY3Rpb24oSWRlbnRpdHlVcGRhdGVVc2VyKVxuICB1cGRhdGVVc2VyKHsgZ2V0U3RhdGUsIGRpc3BhdGNoIH06IFN0YXRlQ29udGV4dDxJZGVudGl0eS5TdGF0ZT4sIHsgcGF5bG9hZCB9OiBJZGVudGl0eVVwZGF0ZVVzZXIpIHtcbiAgICByZXR1cm4gZGlzcGF0Y2gobmV3IElkZW50aXR5R2V0VXNlckJ5SWQocGF5bG9hZC5pZCkpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5pZGVudGl0eVNlcnZpY2UudXBkYXRlVXNlcih7IC4uLmdldFN0YXRlKCkuc2VsZWN0ZWRVc2VyLCAuLi5wYXlsb2FkIH0pKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiBkaXNwYXRjaChuZXcgSWRlbnRpdHlHZXRVc2VycygpKSksXG4gICAgKTtcbiAgfVxuXG4gIEBBY3Rpb24oSWRlbnRpdHlHZXRVc2VyUm9sZXMpXG4gIGdldFVzZXJSb2xlcyh7IHBhdGNoU3RhdGUgfTogU3RhdGVDb250ZXh0PElkZW50aXR5LlN0YXRlPiwgeyBwYXlsb2FkIH06IElkZW50aXR5R2V0VXNlclJvbGVzKSB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdHlTZXJ2aWNlLmdldFVzZXJSb2xlcyhwYXlsb2FkKS5waXBlKFxuICAgICAgcGx1Y2soJ2l0ZW1zJyksXG4gICAgICB0YXAoc2VsZWN0ZWRVc2VyUm9sZXMgPT5cbiAgICAgICAgcGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgc2VsZWN0ZWRVc2VyUm9sZXMsXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm2015/public-api.js b/npm/ng-packs/dist/identity/esm2015/public-api.js new file mode 100644 index 00000000000..196a6c17812 --- /dev/null +++ b/npm/ng-packs/dist/identity/esm2015/public-api.js @@ -0,0 +1,16 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/* + * Public API Surface of identity + */ +export { IdentityModule } from './lib/identity.module'; +export { IdentityGetRoles, IdentityGetRoleById, IdentityDeleteRole, IdentityAddRole, IdentityUpdateRole, IdentityGetUsers, IdentityGetUserById, IdentityDeleteUser, IdentityAddUser, IdentityUpdateUser, IdentityGetUserRoles } from './lib/actions/identity.actions'; +export { RolesComponent } from './lib/components/roles/roles.component'; +export { IDENTITY_ROUTES } from './lib/constants/routes'; +export {} from './lib/models/identity'; +export { RoleResolver } from './lib/resolvers/roles.resolver'; +export { IdentityService } from './lib/services/identity.service'; +export { IdentityState } from './lib/states/identity.state'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuaWRlbnRpdHkvIiwic291cmNlcyI6WyJwdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwrQkFBYyx1QkFBdUIsQ0FBQztBQUN0QyxxT0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQywrQkFBYyx3Q0FBd0MsQ0FBQztBQUN2RCxnQ0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxlQUFjLHVCQUF1QixDQUFDO0FBQ3RDLDZCQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGdDQUFjLGlDQUFpQyxDQUFDO0FBQ2hELDhCQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBpZGVudGl0eVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2lkZW50aXR5Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY3Rpb25zL2lkZW50aXR5LmFjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9yb2xlcy9yb2xlcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uc3RhbnRzL3JvdXRlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvaWRlbnRpdHknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzb2x2ZXJzL3JvbGVzLnJlc29sdmVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2lkZW50aXR5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdGVzL2lkZW50aXR5LnN0YXRlJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm5/abp-ng.identity.js b/npm/ng-packs/dist/identity/esm5/abp-ng.identity.js new file mode 100644 index 00000000000..ae772c9508b --- /dev/null +++ b/npm/ng-packs/dist/identity/esm5/abp-ng.identity.js @@ -0,0 +1,12 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { IdentityModule, IdentityGetRoles, IdentityGetRoleById, IdentityDeleteRole, IdentityAddRole, IdentityUpdateRole, IdentityGetUsers, IdentityGetUserById, IdentityDeleteUser, IdentityAddUser, IdentityUpdateUser, IdentityGetUserRoles, RolesComponent, IDENTITY_ROUTES, RoleResolver, IdentityService, IdentityState } from './public-api'; +export { UsersComponent as ɵb } from './lib/components/users/users.component'; +export { IdentityRoutingModule as ɵc } from './lib/identity-routing.module'; +export { UserResolver as ɵd } from './lib/resolvers/users.resolver'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLmlkZW50aXR5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5pZGVudGl0eS8iLCJzb3VyY2VzIjpbImFicC1uZy5pZGVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsb1VBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxjQUFjLElBQUksRUFBRSxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFDLHFCQUFxQixJQUFJLEVBQUUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBRTFFLE9BQU8sRUFBQyxZQUFZLElBQUksRUFBRSxFQUFDLE1BQU0sZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG5cbmV4cG9ydCB7VXNlcnNDb21wb25lbnQgYXMgybVifSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3VzZXJzL3VzZXJzLmNvbXBvbmVudCc7XG5leHBvcnQge0lkZW50aXR5Um91dGluZ01vZHVsZSBhcyDJtWN9IGZyb20gJy4vbGliL2lkZW50aXR5LXJvdXRpbmcubW9kdWxlJztcbmV4cG9ydCB7SWRlbnRpdHkgYXMgybVhfSBmcm9tICcuL2xpYi9tb2RlbHMvaWRlbnRpdHknO1xuZXhwb3J0IHtVc2VyUmVzb2x2ZXIgYXMgybVkfSBmcm9tICcuL2xpYi9yZXNvbHZlcnMvdXNlcnMucmVzb2x2ZXInOyJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm5/lib/actions/identity.actions.js b/npm/ng-packs/dist/identity/esm5/lib/actions/identity.actions.js new file mode 100644 index 00000000000..a723bf94861 --- /dev/null +++ b/npm/ng-packs/dist/identity/esm5/lib/actions/identity.actions.js @@ -0,0 +1,156 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var IdentityGetRoles = /** @class */ (function () { + function IdentityGetRoles() { + } + IdentityGetRoles.type = '[Identity] Get Roles'; + return IdentityGetRoles; +}()); +export { IdentityGetRoles }; +if (false) { + /** @type {?} */ + IdentityGetRoles.type; +} +var IdentityGetRoleById = /** @class */ (function () { + function IdentityGetRoleById(payload) { + this.payload = payload; + } + IdentityGetRoleById.type = '[Identity] Get Role By Id'; + return IdentityGetRoleById; +}()); +export { IdentityGetRoleById }; +if (false) { + /** @type {?} */ + IdentityGetRoleById.type; + /** @type {?} */ + IdentityGetRoleById.prototype.payload; +} +var IdentityDeleteRole = /** @class */ (function () { + function IdentityDeleteRole(payload) { + this.payload = payload; + } + IdentityDeleteRole.type = '[Identity] Delete Role'; + return IdentityDeleteRole; +}()); +export { IdentityDeleteRole }; +if (false) { + /** @type {?} */ + IdentityDeleteRole.type; + /** @type {?} */ + IdentityDeleteRole.prototype.payload; +} +var IdentityAddRole = /** @class */ (function () { + function IdentityAddRole(payload) { + this.payload = payload; + } + IdentityAddRole.type = '[Identity] Add Role'; + return IdentityAddRole; +}()); +export { IdentityAddRole }; +if (false) { + /** @type {?} */ + IdentityAddRole.type; + /** @type {?} */ + IdentityAddRole.prototype.payload; +} +var IdentityUpdateRole = /** @class */ (function () { + function IdentityUpdateRole(payload) { + this.payload = payload; + } + IdentityUpdateRole.type = '[Identity] Update Role'; + return IdentityUpdateRole; +}()); +export { IdentityUpdateRole }; +if (false) { + /** @type {?} */ + IdentityUpdateRole.type; + /** @type {?} */ + IdentityUpdateRole.prototype.payload; +} +var IdentityGetUsers = /** @class */ (function () { + function IdentityGetUsers(payload) { + this.payload = payload; + } + IdentityGetUsers.type = '[Identity] Get Users'; + return IdentityGetUsers; +}()); +export { IdentityGetUsers }; +if (false) { + /** @type {?} */ + IdentityGetUsers.type; + /** @type {?} */ + IdentityGetUsers.prototype.payload; +} +var IdentityGetUserById = /** @class */ (function () { + function IdentityGetUserById(payload) { + this.payload = payload; + } + IdentityGetUserById.type = '[Identity] Get User By Id'; + return IdentityGetUserById; +}()); +export { IdentityGetUserById }; +if (false) { + /** @type {?} */ + IdentityGetUserById.type; + /** @type {?} */ + IdentityGetUserById.prototype.payload; +} +var IdentityDeleteUser = /** @class */ (function () { + function IdentityDeleteUser(payload) { + this.payload = payload; + } + IdentityDeleteUser.type = '[Identity] Delete User'; + return IdentityDeleteUser; +}()); +export { IdentityDeleteUser }; +if (false) { + /** @type {?} */ + IdentityDeleteUser.type; + /** @type {?} */ + IdentityDeleteUser.prototype.payload; +} +var IdentityAddUser = /** @class */ (function () { + function IdentityAddUser(payload) { + this.payload = payload; + } + IdentityAddUser.type = '[Identity] Add User'; + return IdentityAddUser; +}()); +export { IdentityAddUser }; +if (false) { + /** @type {?} */ + IdentityAddUser.type; + /** @type {?} */ + IdentityAddUser.prototype.payload; +} +var IdentityUpdateUser = /** @class */ (function () { + function IdentityUpdateUser(payload) { + this.payload = payload; + } + IdentityUpdateUser.type = '[Identity] Update User'; + return IdentityUpdateUser; +}()); +export { IdentityUpdateUser }; +if (false) { + /** @type {?} */ + IdentityUpdateUser.type; + /** @type {?} */ + IdentityUpdateUser.prototype.payload; +} +var IdentityGetUserRoles = /** @class */ (function () { + function IdentityGetUserRoles(payload) { + this.payload = payload; + } + IdentityGetUserRoles.type = '[Identity] Get User Roles'; + return IdentityGetUserRoles; +}()); +export { IdentityGetUserRoles }; +if (false) { + /** @type {?} */ + IdentityGetUserRoles.type; + /** @type {?} */ + IdentityGetUserRoles.prototype.payload; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuaWRlbnRpdHkvIiwic291cmNlcyI6WyJsaWIvYWN0aW9ucy9pZGVudGl0eS5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFHQTtJQUFBO0lBRUEsQ0FBQztJQURpQixxQkFBSSxHQUFHLHNCQUFzQixDQUFDO0lBQ2hELHVCQUFDO0NBQUEsQUFGRCxJQUVDO1NBRlksZ0JBQWdCOzs7SUFDM0Isc0JBQThDOztBQUdoRDtJQUVFLDZCQUFtQixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7SUFEdEIsd0JBQUksR0FBRywyQkFBMkIsQ0FBQztJQUVyRCwwQkFBQztDQUFBLEFBSEQsSUFHQztTQUhZLG1CQUFtQjs7O0lBQzlCLHlCQUFtRDs7SUFDdkMsc0NBQXNCOztBQUdwQztJQUVFLDRCQUFtQixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7SUFEdEIsdUJBQUksR0FBRyx3QkFBd0IsQ0FBQztJQUVsRCx5QkFBQztDQUFBLEFBSEQsSUFHQztTQUhZLGtCQUFrQjs7O0lBQzdCLHdCQUFnRDs7SUFDcEMscUNBQXNCOztBQUdwQztJQUVFLHlCQUFtQixPQUFpQztRQUFqQyxZQUFPLEdBQVAsT0FBTyxDQUEwQjtJQUFHLENBQUM7SUFEeEMsb0JBQUksR0FBRyxxQkFBcUIsQ0FBQztJQUUvQyxzQkFBQztDQUFBLEFBSEQsSUFHQztTQUhZLGVBQWU7OztJQUMxQixxQkFBNkM7O0lBQ2pDLGtDQUF3Qzs7QUFHdEQ7SUFFRSw0QkFBbUIsT0FBMEI7UUFBMUIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7SUFBRyxDQUFDO0lBRGpDLHVCQUFJLEdBQUcsd0JBQXdCLENBQUM7SUFFbEQseUJBQUM7Q0FBQSxBQUhELElBR0M7U0FIWSxrQkFBa0I7OztJQUM3Qix3QkFBZ0Q7O0lBQ3BDLHFDQUFpQzs7QUFHL0M7SUFFRSwwQkFBbUIsT0FBNkI7UUFBN0IsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7SUFBRyxDQUFDO0lBRHBDLHFCQUFJLEdBQUcsc0JBQXNCLENBQUM7SUFFaEQsdUJBQUM7Q0FBQSxBQUhELElBR0M7U0FIWSxnQkFBZ0I7OztJQUMzQixzQkFBOEM7O0lBQ2xDLG1DQUFvQzs7QUFHbEQ7SUFFRSw2QkFBbUIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDO0lBRHRCLHdCQUFJLEdBQUcsMkJBQTJCLENBQUM7SUFFckQsMEJBQUM7Q0FBQSxBQUhELElBR0M7U0FIWSxtQkFBbUI7OztJQUM5Qix5QkFBbUQ7O0lBQ3ZDLHNDQUFzQjs7QUFHcEM7SUFFRSw0QkFBbUIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDO0lBRHRCLHVCQUFJLEdBQUcsd0JBQXdCLENBQUM7SUFFbEQseUJBQUM7Q0FBQSxBQUhELElBR0M7U0FIWSxrQkFBa0I7OztJQUM3Qix3QkFBZ0Q7O0lBQ3BDLHFDQUFzQjs7QUFHcEM7SUFFRSx5QkFBbUIsT0FBaUM7UUFBakMsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7SUFBRyxDQUFDO0lBRHhDLG9CQUFJLEdBQUcscUJBQXFCLENBQUM7SUFFL0Msc0JBQUM7Q0FBQSxBQUhELElBR0M7U0FIWSxlQUFlOzs7SUFDMUIscUJBQTZDOztJQUNqQyxrQ0FBd0M7O0FBR3REO0lBRUUsNEJBQW1CLE9BQWtEO1FBQWxELFlBQU8sR0FBUCxPQUFPLENBQTJDO0lBQUcsQ0FBQztJQUR6RCx1QkFBSSxHQUFHLHdCQUF3QixDQUFDO0lBRWxELHlCQUFDO0NBQUEsQUFIRCxJQUdDO1NBSFksa0JBQWtCOzs7SUFDN0Isd0JBQWdEOztJQUNwQyxxQ0FBeUQ7O0FBR3ZFO0lBRUUsOEJBQW1CLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO0lBQUcsQ0FBQztJQUR0Qix5QkFBSSxHQUFHLDJCQUEyQixDQUFDO0lBRXJELDJCQUFDO0NBQUEsQUFIRCxJQUdDO1NBSFksb0JBQW9COzs7SUFDL0IsMEJBQW1EOztJQUN2Qyx1Q0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJZGVudGl0eSB9IGZyb20gJy4uL21vZGVscy9pZGVudGl0eSc7XG5pbXBvcnQgeyBBQlAgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlHZXRSb2xlcyB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tJZGVudGl0eV0gR2V0IFJvbGVzJztcbn1cblxuZXhwb3J0IGNsYXNzIElkZW50aXR5R2V0Um9sZUJ5SWQge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbSWRlbnRpdHldIEdldCBSb2xlIEJ5IElkJztcbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IHN0cmluZykge31cbn1cblxuZXhwb3J0IGNsYXNzIElkZW50aXR5RGVsZXRlUm9sZSB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tJZGVudGl0eV0gRGVsZXRlIFJvbGUnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogc3RyaW5nKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlBZGRSb2xlIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0lkZW50aXR5XSBBZGQgUm9sZSc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBJZGVudGl0eS5Sb2xlU2F2ZVJlcXVlc3QpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBJZGVudGl0eVVwZGF0ZVJvbGUge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbSWRlbnRpdHldIFVwZGF0ZSBSb2xlJztcbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IElkZW50aXR5LlJvbGVJdGVtKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlHZXRVc2VycyB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tJZGVudGl0eV0gR2V0IFVzZXJzJztcbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ/OiBBQlAuUGFnZVF1ZXJ5UGFyYW1zKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlHZXRVc2VyQnlJZCB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tJZGVudGl0eV0gR2V0IFVzZXIgQnkgSWQnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogc3RyaW5nKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlEZWxldGVVc2VyIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0lkZW50aXR5XSBEZWxldGUgVXNlcic7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBzdHJpbmcpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBJZGVudGl0eUFkZFVzZXIge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbSWRlbnRpdHldIEFkZCBVc2VyJztcbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IElkZW50aXR5LlVzZXJTYXZlUmVxdWVzdCkge31cbn1cblxuZXhwb3J0IGNsYXNzIElkZW50aXR5VXBkYXRlVXNlciB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tJZGVudGl0eV0gVXBkYXRlIFVzZXInO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogSWRlbnRpdHkuVXNlclNhdmVSZXF1ZXN0ICYgeyBpZDogc3RyaW5nIH0pIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBJZGVudGl0eUdldFVzZXJSb2xlcyB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tJZGVudGl0eV0gR2V0IFVzZXIgUm9sZXMnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogc3RyaW5nKSB7fVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm5/lib/components/roles/roles.component.js b/npm/ng-packs/dist/identity/esm5/lib/components/roles/roles.component.js new file mode 100644 index 00000000000..1996c37e10a --- /dev/null +++ b/npm/ng-packs/dist/identity/esm5/lib/components/roles/roles.component.js @@ -0,0 +1,176 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Component, TemplateRef, ViewChild } from '@angular/core'; +import { Select, Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { FormBuilder, Validators } from '@angular/forms'; +import { IdentityState } from '../../states/identity.state'; +import { IdentityUpdateRole, IdentityAddRole, IdentityDeleteRole, IdentityGetRoleById, } from '../../actions/identity.actions'; +import { pluck } from 'rxjs/operators'; +import { ConfirmationService } from '@abp/ng.theme.shared'; +var RolesComponent = /** @class */ (function () { + function RolesComponent(confirmationService, fb, store) { + this.confirmationService = confirmationService; + this.fb = fb; + this.store = store; + this.visiblePermissions = false; + } + /** + * @return {?} + */ + RolesComponent.prototype.createForm = /** + * @return {?} + */ + function () { + this.form = this.fb.group({ + name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]], + isDefault: [this.selected.isDefault || false], + isPublic: [this.selected.isPublic || false], + }); + }; + /** + * @return {?} + */ + RolesComponent.prototype.openModal = /** + * @return {?} + */ + function () { + this.createForm(); + this.isModalVisible = true; + }; + /** + * @return {?} + */ + RolesComponent.prototype.onAdd = /** + * @return {?} + */ + function () { + this.selected = (/** @type {?} */ ({})); + this.openModal(); + }; + /** + * @param {?} id + * @return {?} + */ + RolesComponent.prototype.onEdit = /** + * @param {?} id + * @return {?} + */ + function (id) { + var _this = this; + this.store + .dispatch(new IdentityGetRoleById(id)) + .pipe(pluck('IdentityState', 'selectedRole')) + .subscribe((/** + * @param {?} selectedRole + * @return {?} + */ + function (selectedRole) { + _this.selected = selectedRole; + _this.openModal(); + })); + }; + /** + * @return {?} + */ + RolesComponent.prototype.save = /** + * @return {?} + */ + function () { + var _this = this; + if (!this.form.valid) + return; + this.store + .dispatch(this.selected.id + ? new IdentityUpdateRole(tslib_1.__assign({}, this.form.value, { id: this.selected.id })) + : new IdentityAddRole(this.form.value)) + .subscribe((/** + * @return {?} + */ + function () { + _this.isModalVisible = false; + })); + }; + /** + * @param {?} id + * @param {?} name + * @return {?} + */ + RolesComponent.prototype.delete = /** + * @param {?} id + * @param {?} name + * @return {?} + */ + function (id, name) { + var _this = this; + this.confirmationService + .warn('AbpIdentity::RoleDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', { + messageLocalizationParams: [name], + }) + .subscribe((/** + * @param {?} status + * @return {?} + */ + function (status) { + if (status === "confirm" /* confirm */) { + _this.store.dispatch(new IdentityDeleteRole(id)); + } + })); + }; + RolesComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-roles', + template: "
\n
\n
\n
\n
{{ 'AbpIdentity::Roles' | abpLocalization }}
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n {{ 'AbpIdentity::RoleName' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n \n
\n \n \n \n
\n
\n \n {{ data.name }}\n \n
\n
\n
\n
\n\n\n \n

{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}

\n
\n\n \n
\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n
\n\n \n \n \n \n
\n\n\n" + }] } + ]; + /** @nocollapse */ + RolesComponent.ctorParameters = function () { return [ + { type: ConfirmationService }, + { type: FormBuilder }, + { type: Store } + ]; }; + RolesComponent.propDecorators = { + modalContent: [{ type: ViewChild, args: ['modalContent', { static: false },] }] + }; + tslib_1.__decorate([ + Select(IdentityState.getRoles), + tslib_1.__metadata("design:type", Observable) + ], RolesComponent.prototype, "roles$", void 0); + return RolesComponent; +}()); +export { RolesComponent }; +if (false) { + /** @type {?} */ + RolesComponent.prototype.roles$; + /** @type {?} */ + RolesComponent.prototype.form; + /** @type {?} */ + RolesComponent.prototype.selected; + /** @type {?} */ + RolesComponent.prototype.isModalVisible; + /** @type {?} */ + RolesComponent.prototype.visiblePermissions; + /** @type {?} */ + RolesComponent.prototype.providerKey; + /** @type {?} */ + RolesComponent.prototype.modalContent; + /** + * @type {?} + * @private + */ + RolesComponent.prototype.confirmationService; + /** + * @type {?} + * @private + */ + RolesComponent.prototype.fb; + /** + * @type {?} + * @private + */ + RolesComponent.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5pZGVudGl0eS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3JvbGVzL3JvbGVzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVELE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixtQkFBbUIsR0FDcEIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFXLE1BQU0sc0JBQXNCLENBQUM7QUFFcEU7SUFxQkUsd0JBQW9CLG1CQUF3QyxFQUFVLEVBQWUsRUFBVSxLQUFZO1FBQXZGLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBTztRQVAzRyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7SUFPMEUsQ0FBQzs7OztJQUUvRyxtQ0FBVTs7O0lBQVY7UUFDRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3hCLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2xGLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztZQUM3QyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7U0FDNUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUVELGtDQUFTOzs7SUFBVDtRQUNFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDOzs7O0lBRUQsOEJBQUs7OztJQUFMO1FBQ0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxtQkFBQSxFQUFFLEVBQXFCLENBQUM7UUFDeEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7Ozs7O0lBRUQsK0JBQU07Ozs7SUFBTixVQUFPLEVBQVU7UUFBakIsaUJBUUM7UUFQQyxJQUFJLENBQUMsS0FBSzthQUNQLFFBQVEsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO2FBQzVDLFNBQVM7Ozs7UUFBQyxVQUFBLFlBQVk7WUFDckIsS0FBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUM7WUFDN0IsS0FBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7OztJQUVELDZCQUFJOzs7SUFBSjtRQUFBLGlCQVlDO1FBWEMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFFN0IsSUFBSSxDQUFDLEtBQUs7YUFDUCxRQUFRLENBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2QsQ0FBQyxDQUFDLElBQUksa0JBQWtCLHNCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBRztZQUN0RSxDQUFDLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FDekM7YUFDQSxTQUFTOzs7UUFBQztZQUNULEtBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7Ozs7O0lBRUQsK0JBQU07Ozs7O0lBQU4sVUFBTyxFQUFVLEVBQUUsSUFBWTtRQUEvQixpQkFVQztRQVRDLElBQUksQ0FBQyxtQkFBbUI7YUFDckIsSUFBSSxDQUFDLDhDQUE4QyxFQUFFLHlCQUF5QixFQUFFO1lBQy9FLHlCQUF5QixFQUFFLENBQUMsSUFBSSxDQUFDO1NBQ2xDLENBQUM7YUFDRCxTQUFTOzs7O1FBQUMsVUFBQyxNQUFzQjtZQUNoQyxJQUFJLE1BQU0sNEJBQTJCLEVBQUU7Z0JBQ3JDLEtBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNqRDtRQUNILENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7Z0JBM0VGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztvQkFDckIsMHJJQUFxQztpQkFDdEM7Ozs7Z0JBTFEsbUJBQW1CO2dCQVZuQixXQUFXO2dCQUZILEtBQUs7OzsrQkFnQ25CLFNBQVMsU0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOztJQVo1QztRQURDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDOzBDQUN2QixVQUFVO2tEQUFzQjtJQXNFMUMscUJBQUM7Q0FBQSxBQTVFRCxJQTRFQztTQXhFWSxjQUFjOzs7SUFDekIsZ0NBQ3dDOztJQUV4Qyw4QkFBZ0I7O0lBRWhCLGtDQUE0Qjs7SUFFNUIsd0NBQXdCOztJQUV4Qiw0Q0FBb0M7O0lBRXBDLHFDQUFvQjs7SUFFcEIsc0NBQytCOzs7OztJQUVuQiw2Q0FBZ0Q7Ozs7O0lBQUUsNEJBQXVCOzs7OztJQUFFLCtCQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJZGVudGl0eVN0YXRlIH0gZnJvbSAnLi4vLi4vc3RhdGVzL2lkZW50aXR5LnN0YXRlJztcbmltcG9ydCB7IElkZW50aXR5IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2lkZW50aXR5JztcbmltcG9ydCB7XG4gIElkZW50aXR5VXBkYXRlUm9sZSxcbiAgSWRlbnRpdHlBZGRSb2xlLFxuICBJZGVudGl0eURlbGV0ZVJvbGUsXG4gIElkZW50aXR5R2V0Um9sZUJ5SWQsXG59IGZyb20gJy4uLy4uL2FjdGlvbnMvaWRlbnRpdHkuYWN0aW9ucyc7XG5pbXBvcnQgeyBwbHVjayB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIFRvYXN0ZXIgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FicC1yb2xlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yb2xlcy5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFJvbGVzQ29tcG9uZW50IHtcbiAgQFNlbGVjdChJZGVudGl0eVN0YXRlLmdldFJvbGVzKVxuICByb2xlcyQ6IE9ic2VydmFibGU8SWRlbnRpdHkuUm9sZUl0ZW1bXT47XG5cbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIHNlbGVjdGVkOiBJZGVudGl0eS5Sb2xlSXRlbTtcblxuICBpc01vZGFsVmlzaWJsZTogYm9vbGVhbjtcblxuICB2aXNpYmxlUGVybWlzc2lvbnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcm92aWRlcktleTogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ21vZGFsQ29udGVudCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBtb2RhbENvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLCBwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBzdG9yZTogU3RvcmUpIHt9XG5cbiAgY3JlYXRlRm9ybSgpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIG5hbWU6IFt0aGlzLnNlbGVjdGVkLm5hbWUgfHwgJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXV0sXG4gICAgICBpc0RlZmF1bHQ6IFt0aGlzLnNlbGVjdGVkLmlzRGVmYXVsdCB8fCBmYWxzZV0sXG4gICAgICBpc1B1YmxpYzogW3RoaXMuc2VsZWN0ZWQuaXNQdWJsaWMgfHwgZmFsc2VdLFxuICAgIH0pO1xuICB9XG5cbiAgb3Blbk1vZGFsKCkge1xuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgIHRoaXMuaXNNb2RhbFZpc2libGUgPSB0cnVlO1xuICB9XG5cbiAgb25BZGQoKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHt9IGFzIElkZW50aXR5LlJvbGVJdGVtO1xuICAgIHRoaXMub3Blbk1vZGFsKCk7XG4gIH1cblxuICBvbkVkaXQoaWQ6IHN0cmluZykge1xuICAgIHRoaXMuc3RvcmVcbiAgICAgIC5kaXNwYXRjaChuZXcgSWRlbnRpdHlHZXRSb2xlQnlJZChpZCkpXG4gICAgICAucGlwZShwbHVjaygnSWRlbnRpdHlTdGF0ZScsICdzZWxlY3RlZFJvbGUnKSlcbiAgICAgIC5zdWJzY3JpYmUoc2VsZWN0ZWRSb2xlID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkUm9sZTtcbiAgICAgICAgdGhpcy5vcGVuTW9kYWwoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5zdG9yZVxuICAgICAgLmRpc3BhdGNoKFxuICAgICAgICB0aGlzLnNlbGVjdGVkLmlkXG4gICAgICAgICAgPyBuZXcgSWRlbnRpdHlVcGRhdGVSb2xlKHsgLi4udGhpcy5mb3JtLnZhbHVlLCBpZDogdGhpcy5zZWxlY3RlZC5pZCB9KVxuICAgICAgICAgIDogbmV3IElkZW50aXR5QWRkUm9sZSh0aGlzLmZvcm0udmFsdWUpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlKGlkOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZVxuICAgICAgLndhcm4oJ0FicElkZW50aXR5OjpSb2xlRGVsZXRpb25Db25maXJtYXRpb25NZXNzYWdlJywgJ0FicElkZW50aXR5OjpBcmVZb3VTdXJlJywge1xuICAgICAgICBtZXNzYWdlTG9jYWxpemF0aW9uUGFyYW1zOiBbbmFtZV0sXG4gICAgICB9KVxuICAgICAgLnN1YnNjcmliZSgoc3RhdHVzOiBUb2FzdGVyLlN0YXR1cykgPT4ge1xuICAgICAgICBpZiAoc3RhdHVzID09PSBUb2FzdGVyLlN0YXR1cy5jb25maXJtKSB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgSWRlbnRpdHlEZWxldGVSb2xlKGlkKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm5/lib/components/users/users.component.js b/npm/ng-packs/dist/identity/esm5/lib/components/users/users.component.js new file mode 100644 index 00000000000..898de723da1 --- /dev/null +++ b/npm/ng-packs/dist/identity/esm5/lib/components/users/users.component.js @@ -0,0 +1,326 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { ConfirmationService } from '@abp/ng.theme.shared'; +import { Component, TemplateRef, ViewChild } from '@angular/core'; +import { FormBuilder, Validators } from '@angular/forms'; +import { validatePassword } from '@ngx-validate/core'; +import { Select, Store } from '@ngxs/store'; +import { combineLatest, Observable, Subject } from 'rxjs'; +import { debounceTime, filter, map, pluck, take } from 'rxjs/operators'; +import snq from 'snq'; +import { IdentityAddUser, IdentityDeleteUser, IdentityGetUserById, IdentityGetUserRoles, IdentityGetUsers, IdentityUpdateUser, } from '../../actions/identity.actions'; +import { IdentityState } from '../../states/identity.state'; +var UsersComponent = /** @class */ (function () { + function UsersComponent(confirmationService, fb, store) { + this.confirmationService = confirmationService; + this.fb = fb; + this.store = store; + this.visiblePermissions = false; + this.pageQuery = { + sorting: 'userName', + }; + this.loading = false; + this.search$ = new Subject(); + this.trackByFn = (/** + * @param {?} index + * @param {?} item + * @return {?} + */ + function (index, item) { return Object.keys(item)[0] || index; }); + } + Object.defineProperty(UsersComponent.prototype, "roleGroups", { + get: /** + * @return {?} + */ + function () { + var _this = this; + return snq((/** + * @return {?} + */ + function () { return (/** @type {?} */ (((/** @type {?} */ (_this.form.get('roleNames')))).controls)); }), []); + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + UsersComponent.prototype.ngOnInit = /** + * @return {?} + */ + function () { + var _this = this; + this.search$.pipe(debounceTime(300)).subscribe((/** + * @param {?} value + * @return {?} + */ + function (value) { + _this.pageQuery.filter = value; + _this.get(); + })); + }; + /** + * @return {?} + */ + UsersComponent.prototype.buildForm = /** + * @return {?} + */ + function () { + var _this = this; + this.roles = this.store.selectSnapshot(IdentityState.getRoles); + this.form = this.fb.group({ + password: [ + '', + [ + Validators.required, + Validators.maxLength(32), + Validators.minLength(6), + validatePassword(['small', 'capital', 'number', 'special']), + ], + ], + userName: [this.selected.userName || '', [Validators.required, Validators.maxLength(256)]], + email: [this.selected.email || '', [Validators.required, Validators.email, Validators.maxLength(256)]], + name: [this.selected.name || '', [Validators.maxLength(64)]], + surname: [this.selected.surname || '', [Validators.maxLength(64)]], + phoneNumber: [this.selected.phoneNumber || '', [Validators.maxLength(16)]], + lockoutEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)], + twoFactorEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)], + roleNames: this.fb.array(this.roles.map((/** + * @param {?} role + * @return {?} + */ + function (role) { + var _a; + return _this.fb.group((_a = {}, + _a[role.name] = [!!snq((/** + * @return {?} + */ + function () { return _this.selectedUserRoles.find((/** + * @param {?} userRole + * @return {?} + */ + function (userRole) { return userRole.id === role.id; })); }))], + _a)); + }))), + }); + }; + /** + * @return {?} + */ + UsersComponent.prototype.openModal = /** + * @return {?} + */ + function () { + this.buildForm(); + this.isModalVisible = true; + }; + /** + * @return {?} + */ + UsersComponent.prototype.onAdd = /** + * @return {?} + */ + function () { + this.selected = (/** @type {?} */ ({})); + this.selectedUserRoles = (/** @type {?} */ ([])); + this.openModal(); + }; + /** + * @param {?} id + * @return {?} + */ + UsersComponent.prototype.onEdit = /** + * @param {?} id + * @return {?} + */ + function (id) { + var _this = this; + combineLatest([this.store.dispatch(new IdentityGetUserById(id)), this.store.dispatch(new IdentityGetUserRoles(id))]) + .pipe(filter((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var _b = tslib_1.__read(_a, 2), res1 = _b[0], res2 = _b[1]; + return res1 && res2; + })), map((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var _b = tslib_1.__read(_a, 2), state = _b[0], _ = _b[1]; + return state; + })), pluck('IdentityState'), take(1)) + .subscribe((/** + * @param {?} state + * @return {?} + */ + function (state) { + _this.selected = state.selectedUser; + _this.selectedUserRoles = state.selectedUserRoles; + _this.openModal(); + })); + }; + /** + * @return {?} + */ + UsersComponent.prototype.save = /** + * @return {?} + */ + function () { + var _this = this; + if (!this.form.valid) + return; + var roleNames = this.form.value.roleNames; + /** @type {?} */ + var mappedRoleNames = snq((/** + * @return {?} + */ + function () { return roleNames.filter((/** + * @param {?} role + * @return {?} + */ + function (role) { return !!role[Object.keys(role)[0]]; })).map((/** + * @param {?} role + * @return {?} + */ + function (role) { return Object.keys(role)[0]; })); }), []); + this.store + .dispatch(this.selected.id + ? new IdentityUpdateUser(tslib_1.__assign({}, this.form.value, { id: this.selected.id, roleNames: mappedRoleNames })) + : new IdentityAddUser(tslib_1.__assign({}, this.form.value, { roleNames: mappedRoleNames }))) + .subscribe((/** + * @return {?} + */ + function () { + _this.isModalVisible = false; + })); + }; + /** + * @param {?} id + * @param {?} userName + * @return {?} + */ + UsersComponent.prototype.delete = /** + * @param {?} id + * @param {?} userName + * @return {?} + */ + function (id, userName) { + var _this = this; + this.confirmationService + .warn('AbpIdentity::UserDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', { + messageLocalizationParams: [userName], + }) + .subscribe((/** + * @param {?} status + * @return {?} + */ + function (status) { + if (status === "confirm" /* confirm */) { + _this.store.dispatch(new IdentityDeleteUser(id)); + } + })); + }; + /** + * @param {?} data + * @return {?} + */ + UsersComponent.prototype.onPageChange = /** + * @param {?} data + * @return {?} + */ + function (data) { + this.pageQuery.skipCount = data.first; + this.pageQuery.maxResultCount = data.rows; + this.get(); + }; + /** + * @return {?} + */ + UsersComponent.prototype.get = /** + * @return {?} + */ + function () { + var _this = this; + this.loading = true; + this.store.dispatch(new IdentityGetUsers(this.pageQuery)).subscribe((/** + * @return {?} + */ + function () { return (_this.loading = false); })); + }; + UsersComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-users', + template: "
\n
\n
\n
\n
{{ 'AbpIdentity::Users' | abpLocalization }}
\n
\n
\n \n {{ 'AbpIdentity::NewUser' | abpLocalization }}\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n {{ 'AbpIdentity::UserName' | abpLocalization }}\n {{ 'AbpIdentity::EmailAddress' | abpLocalization }}\n {{ 'AbpIdentity::PhoneNumber' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n \n
\n \n \n \n
\n
\n \n {{ data.userName }}\n {{ data.email }}\n {{ data.phoneNumber }}\n \n
\n \n
\n
\n\n\n \n

{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}

\n
\n\n \n \n
\n \n \n \n
\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n \n \n
\n \n
\n
\n
\n
\n
\n
\n\n \n \n \n \n
\n\n\n" + }] } + ]; + /** @nocollapse */ + UsersComponent.ctorParameters = function () { return [ + { type: ConfirmationService }, + { type: FormBuilder }, + { type: Store } + ]; }; + UsersComponent.propDecorators = { + modalContent: [{ type: ViewChild, args: ['modalContent', { static: false },] }] + }; + tslib_1.__decorate([ + Select(IdentityState.getUsers), + tslib_1.__metadata("design:type", Observable) + ], UsersComponent.prototype, "data$", void 0); + tslib_1.__decorate([ + Select(IdentityState.getUsersTotalCount), + tslib_1.__metadata("design:type", Observable) + ], UsersComponent.prototype, "totalCount$", void 0); + return UsersComponent; +}()); +export { UsersComponent }; +if (false) { + /** @type {?} */ + UsersComponent.prototype.data$; + /** @type {?} */ + UsersComponent.prototype.totalCount$; + /** @type {?} */ + UsersComponent.prototype.modalContent; + /** @type {?} */ + UsersComponent.prototype.form; + /** @type {?} */ + UsersComponent.prototype.selected; + /** @type {?} */ + UsersComponent.prototype.selectedUserRoles; + /** @type {?} */ + UsersComponent.prototype.roles; + /** @type {?} */ + UsersComponent.prototype.visiblePermissions; + /** @type {?} */ + UsersComponent.prototype.providerKey; + /** @type {?} */ + UsersComponent.prototype.pageQuery; + /** @type {?} */ + UsersComponent.prototype.isModalVisible; + /** @type {?} */ + UsersComponent.prototype.loading; + /** @type {?} */ + UsersComponent.prototype.search$; + /** @type {?} */ + UsersComponent.prototype.trackByFn; + /** + * @type {?} + * @private + */ + UsersComponent.prototype.confirmationService; + /** + * @type {?} + * @private + */ + UsersComponent.prototype.fb; + /** + * @type {?} + * @private + */ + UsersComponent.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5pZGVudGl0eS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3VzZXJzL3VzZXJzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBVyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFtQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUE4QixXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEUsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQ3RCLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixHQUNuQixNQUFNLGdDQUFnQyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RDtJQTBDRSx3QkFBb0IsbUJBQXdDLEVBQVUsRUFBZSxFQUFVLEtBQVk7UUFBdkYsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUFVLE9BQUUsR0FBRixFQUFFLENBQWE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBcEIzRyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7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QUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVM7OztRQUFDLGNBQU0sT0FBQSxDQUFDLEtBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLEVBQXRCLENBQXNCLEVBQUMsQ0FBQztJQUNwRyxDQUFDOztnQkE1SkYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQiwwNVBBQXFDO2lCQUN0Qzs7OztnQkFyQlEsbUJBQW1CO2dCQUVTLFdBQVc7Z0JBRS9CLEtBQUs7OzsrQkF5Qm5CLFNBQVMsU0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOztJQUw1QztRQURDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDOzBDQUN4QixVQUFVO2lEQUFzQjtJQUd2QztRQURDLE1BQU0sQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUM7MENBQzVCLFVBQVU7dURBQVM7SUFvSmxDLHFCQUFDO0NBQUEsQUE3SkQsSUE2SkM7U0F6SlksY0FBYzs7O0lBQ3pCLCtCQUN1Qzs7SUFFdkMscUNBQ2dDOztJQUVoQyxzQ0FDK0I7O0lBRS9CLDhCQUFnQjs7SUFFaEIsa0NBQTRCOztJQUU1QiwyQ0FBdUM7O0lBRXZDLCtCQUEyQjs7SUFFM0IsNENBQW9DOztJQUVwQyxxQ0FBb0I7O0lBRXBCLG1DQUVFOztJQUVGLHdDQUF3Qjs7SUFFeEIsaUNBQXlCOztJQUV6QixpQ0FBZ0M7O0lBRWhDLG1DQUE2Rjs7Ozs7SUFNakYsNkNBQWdEOzs7OztJQUFFLDRCQUF1Qjs7Ozs7SUFBRSwrQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBQlAgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgVG9hc3RlciB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVHJhY2tCeUZ1bmN0aW9uLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdmFsaWRhdGVQYXNzd29yZCB9IGZyb20gJ0BuZ3gtdmFsaWRhdGUvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgcGx1Y2ssIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgc25xIGZyb20gJ3NucSc7XG5pbXBvcnQge1xuICBJZGVudGl0eUFkZFVzZXIsXG4gIElkZW50aXR5RGVsZXRlVXNlcixcbiAgSWRlbnRpdHlHZXRVc2VyQnlJZCxcbiAgSWRlbnRpdHlHZXRVc2VyUm9sZXMsXG4gIElkZW50aXR5R2V0VXNlcnMsXG4gIElkZW50aXR5VXBkYXRlVXNlcixcbn0gZnJvbSAnLi4vLi4vYWN0aW9ucy9pZGVudGl0eS5hY3Rpb25zJztcbmltcG9ydCB7IElkZW50aXR5IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2lkZW50aXR5JztcbmltcG9ydCB7IElkZW50aXR5U3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZXMvaWRlbnRpdHkuc3RhdGUnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWJwLXVzZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXJzLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgVXNlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAU2VsZWN0KElkZW50aXR5U3RhdGUuZ2V0VXNlcnMpXG4gIGRhdGEkOiBPYnNlcnZhYmxlPElkZW50aXR5LlVzZXJJdGVtW10+O1xuXG4gIEBTZWxlY3QoSWRlbnRpdHlTdGF0ZS5nZXRVc2Vyc1RvdGFsQ291bnQpXG4gIHRvdGFsQ291bnQkOiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgQFZpZXdDaGlsZCgnbW9kYWxDb250ZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIG1vZGFsQ29udGVudDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBmb3JtOiBGb3JtR3JvdXA7XG5cbiAgc2VsZWN0ZWQ6IElkZW50aXR5LlVzZXJJdGVtO1xuXG4gIHNlbGVjdGVkVXNlclJvbGVzOiBJZGVudGl0eS5Sb2xlSXRlbVtdO1xuXG4gIHJvbGVzOiBJZGVudGl0eS5Sb2xlSXRlbVtdO1xuXG4gIHZpc2libGVQZXJtaXNzaW9uczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByb3ZpZGVyS2V5OiBzdHJpbmc7XG5cbiAgcGFnZVF1ZXJ5OiBBQlAuUGFnZVF1ZXJ5UGFyYW1zID0ge1xuICAgIHNvcnRpbmc6ICd1c2VyTmFtZScsXG4gIH07XG5cbiAgaXNNb2RhbFZpc2libGU6IGJvb2xlYW47XG5cbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHNlYXJjaCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgdHJhY2tCeUZuOiBUcmFja0J5RnVuY3Rpb248QWJzdHJhY3RDb250cm9sPiA9IChpbmRleCwgaXRlbSkgPT4gT2JqZWN0LmtleXMoaXRlbSlbMF0gfHwgaW5kZXg7XG5cbiAgZ2V0IHJvbGVHcm91cHMoKTogRm9ybUdyb3VwW10ge1xuICAgIHJldHVybiBzbnEoKCkgPT4gKHRoaXMuZm9ybS5nZXQoJ3JvbGVOYW1lcycpIGFzIEZvcm1BcnJheSkuY29udHJvbHMgYXMgRm9ybUdyb3VwW10sIFtdKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSwgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2VhcmNoJC5waXBlKGRlYm91bmNlVGltZSgzMDApKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgdGhpcy5wYWdlUXVlcnkuZmlsdGVyID0gdmFsdWU7XG4gICAgICB0aGlzLmdldCgpO1xuICAgIH0pO1xuICB9XG5cbiAgYnVpbGRGb3JtKCkge1xuICAgIHRoaXMucm9sZXMgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KElkZW50aXR5U3RhdGUuZ2V0Um9sZXMpO1xuXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBwYXNzd29yZDogW1xuICAgICAgICAnJyxcbiAgICAgICAgW1xuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzIpLFxuICAgICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDYpLFxuICAgICAgICAgIHZhbGlkYXRlUGFzc3dvcmQoWydzbWFsbCcsICdjYXBpdGFsJywgJ251bWJlcicsICdzcGVjaWFsJ10pLFxuICAgICAgICBdLFxuICAgICAgXSxcbiAgICAgIHVzZXJOYW1lOiBbdGhpcy5zZWxlY3RlZC51c2VyTmFtZSB8fCAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcbiAgICAgIGVtYWlsOiBbdGhpcy5zZWxlY3RlZC5lbWFpbCB8fCAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcbiAgICAgIG5hbWU6IFt0aGlzLnNlbGVjdGVkLm5hbWUgfHwgJycsIFtWYWxpZGF0b3JzLm1heExlbmd0aCg2NCldXSxcbiAgICAgIHN1cm5hbWU6IFt0aGlzLnNlbGVjdGVkLnN1cm5hbWUgfHwgJycsIFtWYWxpZGF0b3JzLm1heExlbmd0aCg2NCldXSxcbiAgICAgIHBob25lTnVtYmVyOiBbdGhpcy5zZWxlY3RlZC5waG9uZU51bWJlciB8fCAnJywgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDE2KV1dLFxuICAgICAgbG9ja291dEVuYWJsZWQ6IFt0aGlzLnNlbGVjdGVkLnR3b0ZhY3RvckVuYWJsZWQgfHwgKHRoaXMuc2VsZWN0ZWQuaWQgPyBmYWxzZSA6IHRydWUpXSxcbiAgICAgIHR3b0ZhY3RvckVuYWJsZWQ6IFt0aGlzLnNlbGVjdGVkLnR3b0ZhY3RvckVuYWJsZWQgfHwgKHRoaXMuc2VsZWN0ZWQuaWQgPyBmYWxzZSA6IHRydWUpXSxcbiAgICAgIHJvbGVOYW1lczogdGhpcy5mYi5hcnJheShcbiAgICAgICAgdGhpcy5yb2xlcy5tYXAocm9sZSA9PlxuICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgW3JvbGUubmFtZV06IFshIXNucSgoKSA9PiB0aGlzLnNlbGVjdGVkVXNlclJvbGVzLmZpbmQodXNlclJvbGUgPT4gdXNlclJvbGUuaWQgPT09IHJvbGUuaWQpKV0sXG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgIH0pO1xuICB9XG5cbiAgb3Blbk1vZGFsKCkge1xuICAgIHRoaXMuYnVpbGRGb3JtKCk7XG4gICAgdGhpcy5pc01vZGFsVmlzaWJsZSA9IHRydWU7XG4gIH1cblxuICBvbkFkZCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkID0ge30gYXMgSWRlbnRpdHkuVXNlckl0ZW07XG4gICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlcyA9IFtdIGFzIElkZW50aXR5LlJvbGVJdGVtW107XG4gICAgdGhpcy5vcGVuTW9kYWwoKTtcbiAgfVxuXG4gIG9uRWRpdChpZDogc3RyaW5nKSB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgSWRlbnRpdHlHZXRVc2VyQnlJZChpZCkpLCB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBJZGVudGl0eUdldFVzZXJSb2xlcyhpZCkpXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKFtyZXMxLCByZXMyXSkgPT4gcmVzMSAmJiByZXMyKSxcbiAgICAgICAgbWFwKChbc3RhdGUsIF9dKSA9PiBzdGF0ZSksXG4gICAgICAgIHBsdWNrKCdJZGVudGl0eVN0YXRlJyksXG4gICAgICAgIHRha2UoMSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChzdGF0ZTogSWRlbnRpdHkuU3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHN0YXRlLnNlbGVjdGVkVXNlcjtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlcyA9IHN0YXRlLnNlbGVjdGVkVXNlclJvbGVzO1xuICAgICAgICB0aGlzLm9wZW5Nb2RhbCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSByZXR1cm47XG5cbiAgICBjb25zdCB7IHJvbGVOYW1lcyB9ID0gdGhpcy5mb3JtLnZhbHVlO1xuICAgIGNvbnN0IG1hcHBlZFJvbGVOYW1lcyA9IHNucShcbiAgICAgICgpID0+IHJvbGVOYW1lcy5maWx0ZXIocm9sZSA9PiAhIXJvbGVbT2JqZWN0LmtleXMocm9sZSlbMF1dKS5tYXAocm9sZSA9PiBPYmplY3Qua2V5cyhyb2xlKVswXSksXG4gICAgICBbXSxcbiAgICApO1xuXG4gICAgdGhpcy5zdG9yZVxuICAgICAgLmRpc3BhdGNoKFxuICAgICAgICB0aGlzLnNlbGVjdGVkLmlkXG4gICAgICAgICAgPyBuZXcgSWRlbnRpdHlVcGRhdGVVc2VyKHtcbiAgICAgICAgICAgICAgLi4udGhpcy5mb3JtLnZhbHVlLFxuICAgICAgICAgICAgICBpZDogdGhpcy5zZWxlY3RlZC5pZCxcbiAgICAgICAgICAgICAgcm9sZU5hbWVzOiBtYXBwZWRSb2xlTmFtZXMsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIDogbmV3IElkZW50aXR5QWRkVXNlcih7XG4gICAgICAgICAgICAgIC4uLnRoaXMuZm9ybS52YWx1ZSxcbiAgICAgICAgICAgICAgcm9sZU5hbWVzOiBtYXBwZWRSb2xlTmFtZXMsXG4gICAgICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gICAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZShpZDogc3RyaW5nLCB1c2VyTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlXG4gICAgICAud2FybignQWJwSWRlbnRpdHk6OlVzZXJEZWxldGlvbkNvbmZpcm1hdGlvbk1lc3NhZ2UnLCAnQWJwSWRlbnRpdHk6OkFyZVlvdVN1cmUnLCB7XG4gICAgICAgIG1lc3NhZ2VMb2NhbGl6YXRpb25QYXJhbXM6IFt1c2VyTmFtZV0sXG4gICAgICB9KVxuICAgICAgLnN1YnNjcmliZSgoc3RhdHVzOiBUb2FzdGVyLlN0YXR1cykgPT4ge1xuICAgICAgICBpZiAoc3RhdHVzID09PSBUb2FzdGVyLlN0YXR1cy5jb25maXJtKSB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgSWRlbnRpdHlEZWxldGVVc2VyKGlkKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlKGRhdGEpIHtcbiAgICB0aGlzLnBhZ2VRdWVyeS5za2lwQ291bnQgPSBkYXRhLmZpcnN0O1xuICAgIHRoaXMucGFnZVF1ZXJ5Lm1heFJlc3VsdENvdW50ID0gZGF0YS5yb3dzO1xuXG4gICAgdGhpcy5nZXQoKTtcbiAgfVxuXG4gIGdldCgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IElkZW50aXR5R2V0VXNlcnModGhpcy5wYWdlUXVlcnkpKS5zdWJzY3JpYmUoKCkgPT4gKHRoaXMubG9hZGluZyA9IGZhbHNlKSk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm5/lib/constants/routes.js b/npm/ng-packs/dist/identity/esm5/lib/constants/routes.js new file mode 100644 index 00000000000..119719ce9c7 --- /dev/null +++ b/npm/ng-packs/dist/identity/esm5/lib/constants/routes.js @@ -0,0 +1,25 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +export var IDENTITY_ROUTES = (/** @type {?} */ ([ + { + name: 'Administration', + path: '', + order: 1, + wrapper: true, + }, + { + name: 'Identity', + path: 'identity', + order: 1, + parentName: 'Administration', + layout: "application" /* application */, + children: [ + { path: 'roles', name: 'Roles', order: 2, requiredPolicy: 'AbpIdentity.Roles' }, + { path: 'users', name: 'Users', order: 1, requiredPolicy: 'AbpIdentity.Users' }, + ], + }, +])); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5pZGVudGl0eS8iLCJzb3VyY2VzIjpbImxpYi9jb25zdGFudHMvcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsTUFBTSxLQUFPLGVBQWUsR0FBRyxtQkFBQTtJQUM3QjtRQUNFLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsSUFBSSxFQUFFLEVBQUU7UUFDUixLQUFLLEVBQUUsQ0FBQztRQUNSLE9BQU8sRUFBRSxJQUFJO0tBQ2Q7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxDQUFDO1FBQ1IsVUFBVSxFQUFFLGdCQUFnQjtRQUM1QixNQUFNLGlDQUF5QjtRQUMvQixRQUFRLEVBQUU7WUFDUixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRTtZQUMvRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRTtTQUNoRjtLQUNGO0NBQ0YsRUFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlTGF5b3V0VHlwZSwgQUJQIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcblxuZXhwb3J0IGNvbnN0IElERU5USVRZX1JPVVRFUyA9IFtcbiAge1xuICAgIG5hbWU6ICdBZG1pbmlzdHJhdGlvbicsXG4gICAgcGF0aDogJycsXG4gICAgb3JkZXI6IDEsXG4gICAgd3JhcHBlcjogdHJ1ZSxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdJZGVudGl0eScsXG4gICAgcGF0aDogJ2lkZW50aXR5JyxcbiAgICBvcmRlcjogMSxcbiAgICBwYXJlbnROYW1lOiAnQWRtaW5pc3RyYXRpb24nLFxuICAgIGxheW91dDogZUxheW91dFR5cGUuYXBwbGljYXRpb24sXG4gICAgY2hpbGRyZW46IFtcbiAgICAgIHsgcGF0aDogJ3JvbGVzJywgbmFtZTogJ1JvbGVzJywgb3JkZXI6IDIsIHJlcXVpcmVkUG9saWN5OiAnQWJwSWRlbnRpdHkuUm9sZXMnIH0sXG4gICAgICB7IHBhdGg6ICd1c2VycycsIG5hbWU6ICdVc2VycycsIG9yZGVyOiAxLCByZXF1aXJlZFBvbGljeTogJ0FicElkZW50aXR5LlVzZXJzJyB9LFxuICAgIF0sXG4gIH0sXG5dIGFzIEFCUC5GdWxsUm91dGVbXTtcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm5/lib/identity-routing.module.js b/npm/ng-packs/dist/identity/esm5/lib/identity-routing.module.js new file mode 100644 index 00000000000..28f18f85d4b --- /dev/null +++ b/npm/ng-packs/dist/identity/esm5/lib/identity-routing.module.js @@ -0,0 +1,51 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { RolesComponent } from './components/roles/roles.component'; +import { RoleResolver } from './resolvers/roles.resolver'; +import { DynamicLayoutComponent, AuthGuard, PermissionGuard } from '@abp/ng.core'; +import { UsersComponent } from './components/users/users.component'; +import { UserResolver } from './resolvers/users.resolver'; +var ɵ0 = { requiredPolicy: 'AbpIdentity.Roles' }, ɵ1 = { requiredPolicy: 'AbpIdentity.Users' }; +/** @type {?} */ +var routes = [ + { path: '', redirectTo: 'roles', pathMatch: 'full' }, + { + path: 'roles', + component: DynamicLayoutComponent, + canActivate: [AuthGuard, PermissionGuard], + data: ɵ0, + children: [{ path: '', component: RolesComponent, resolve: [RoleResolver] }], + }, + { + path: 'users', + component: DynamicLayoutComponent, + canActivate: [AuthGuard, PermissionGuard], + data: ɵ1, + children: [ + { + path: '', + component: UsersComponent, + resolve: [RoleResolver, UserResolver], + }, + ], + }, +]; +var IdentityRoutingModule = /** @class */ (function () { + function IdentityRoutingModule() { + } + IdentityRoutingModule.decorators = [ + { type: NgModule, args: [{ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], + providers: [RoleResolver, UserResolver], + },] } + ]; + return IdentityRoutingModule; +}()); +export { IdentityRoutingModule }; +export { ɵ0, ɵ1 }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmlkZW50aXR5LyIsInNvdXJjZXMiOlsibGliL2lkZW50aXR5LXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7U0FRaEQsRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsT0FPdkMsRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUU7O0lBYjNDLE1BQU0sR0FBVztJQUNyQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO0lBQ3BEO1FBQ0UsSUFBSSxFQUFFLE9BQU87UUFDYixTQUFTLEVBQUUsc0JBQXNCO1FBQ2pDLFdBQVcsRUFBRSxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUM7UUFDekMsSUFBSSxJQUF5QztRQUM3QyxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO0tBQzdFO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsT0FBTztRQUNiLFNBQVMsRUFBRSxzQkFBc0I7UUFDakMsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQztRQUN6QyxJQUFJLElBQXlDO1FBQzdDLFFBQVEsRUFBRTtZQUNSO2dCQUNFLElBQUksRUFBRSxFQUFFO2dCQUNSLFNBQVMsRUFBRSxjQUFjO2dCQUN6QixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDO2FBQ3RDO1NBQ0Y7S0FDRjtDQUNGO0FBRUQ7SUFBQTtJQUtvQyxDQUFDOztnQkFMcEMsUUFBUSxTQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsU0FBUyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQztpQkFDeEM7O0lBQ21DLDRCQUFDO0NBQUEsQUFMckMsSUFLcUM7U0FBeEIscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlcywgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFJvbGVzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JvbGVzL3JvbGVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSb2xlUmVzb2x2ZXIgfSBmcm9tICcuL3Jlc29sdmVycy9yb2xlcy5yZXNvbHZlcic7XG5pbXBvcnQgeyBEeW5hbWljTGF5b3V0Q29tcG9uZW50LCBBdXRoR3VhcmQsIFBlcm1pc3Npb25HdWFyZCB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBVc2Vyc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy91c2Vycy91c2Vycy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlclJlc29sdmVyIH0gZnJvbSAnLi9yZXNvbHZlcnMvdXNlcnMucmVzb2x2ZXInO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAgeyBwYXRoOiAnJywgcmVkaXJlY3RUbzogJ3JvbGVzJywgcGF0aE1hdGNoOiAnZnVsbCcgfSxcbiAge1xuICAgIHBhdGg6ICdyb2xlcycsXG4gICAgY29tcG9uZW50OiBEeW5hbWljTGF5b3V0Q29tcG9uZW50LFxuICAgIGNhbkFjdGl2YXRlOiBbQXV0aEd1YXJkLCBQZXJtaXNzaW9uR3VhcmRdLFxuICAgIGRhdGE6IHsgcmVxdWlyZWRQb2xpY3k6ICdBYnBJZGVudGl0eS5Sb2xlcycgfSxcbiAgICBjaGlsZHJlbjogW3sgcGF0aDogJycsIGNvbXBvbmVudDogUm9sZXNDb21wb25lbnQsIHJlc29sdmU6IFtSb2xlUmVzb2x2ZXJdIH1dLFxuICB9LFxuICB7XG4gICAgcGF0aDogJ3VzZXJzJyxcbiAgICBjb21wb25lbnQ6IER5bmFtaWNMYXlvdXRDb21wb25lbnQsXG4gICAgY2FuQWN0aXZhdGU6IFtBdXRoR3VhcmQsIFBlcm1pc3Npb25HdWFyZF0sXG4gICAgZGF0YTogeyByZXF1aXJlZFBvbGljeTogJ0FicElkZW50aXR5LlVzZXJzJyB9LFxuICAgIGNoaWxkcmVuOiBbXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICcnLFxuICAgICAgICBjb21wb25lbnQ6IFVzZXJzQ29tcG9uZW50LFxuICAgICAgICByZXNvbHZlOiBbUm9sZVJlc29sdmVyLCBVc2VyUmVzb2x2ZXJdLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpXSxcbiAgZXhwb3J0czogW1JvdXRlck1vZHVsZV0sXG4gIHByb3ZpZGVyczogW1JvbGVSZXNvbHZlciwgVXNlclJlc29sdmVyXSxcbn0pXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlSb3V0aW5nTW9kdWxlIHt9XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm5/lib/identity.module.js b/npm/ng-packs/dist/identity/esm5/lib/identity.module.js new file mode 100644 index 00000000000..186f7603343 --- /dev/null +++ b/npm/ng-packs/dist/identity/esm5/lib/identity.module.js @@ -0,0 +1,41 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { CoreModule } from '@abp/ng.core'; +import { NgModule } from '@angular/core'; +import { NgxsModule } from '@ngxs/store'; +import { RolesComponent } from './components/roles/roles.component'; +import { IdentityRoutingModule } from './identity-routing.module'; +import { IdentityState } from './states/identity.state'; +import { NgbTabsetModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { UsersComponent } from './components/users/users.component'; +import { PermissionManagementModule } from '@abp/ng.permission-management'; +import { TableModule } from 'primeng/table'; +import { NgxValidateCoreModule } from '@ngx-validate/core'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; +var IdentityModule = /** @class */ (function () { + function IdentityModule() { + } + IdentityModule.decorators = [ + { type: NgModule, args: [{ + declarations: [RolesComponent, UsersComponent], + imports: [ + NgxsModule.forFeature([IdentityState]), + CoreModule, + IdentityRoutingModule, + NgbTabsetModule, + ThemeSharedModule, + TableModule, + NgbDropdownModule, + PermissionManagementModule, + NgxValidateCoreModule, + PerfectScrollbarModule, + ], + },] } + ]; + return IdentityModule; +}()); +export { IdentityModule }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5pZGVudGl0eS8iLCJzb3VyY2VzIjpbImxpYi9pZGVudGl0eS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRS9EO0lBQUE7SUFlNkIsQ0FBQzs7Z0JBZjdCLFFBQVEsU0FBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDO29CQUM5QyxPQUFPLEVBQUU7d0JBQ1AsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUN0QyxVQUFVO3dCQUNWLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLFdBQVc7d0JBQ1gsaUJBQWlCO3dCQUNqQiwwQkFBMEI7d0JBQzFCLHFCQUFxQjt3QkFDckIsc0JBQXNCO3FCQUN2QjtpQkFDRjs7SUFDNEIscUJBQUM7Q0FBQSxBQWY5QixJQWU4QjtTQUFqQixjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd4c01vZHVsZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IFJvbGVzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JvbGVzL3JvbGVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZGVudGl0eVJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2lkZW50aXR5LXJvdXRpbmcubW9kdWxlJztcbmltcG9ydCB7IElkZW50aXR5U3RhdGUgfSBmcm9tICcuL3N0YXRlcy9pZGVudGl0eS5zdGF0ZSc7XG5pbXBvcnQgeyBOZ2JUYWJzZXRNb2R1bGUsIE5nYkRyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgVGhlbWVTaGFyZWRNb2R1bGUgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyBVc2Vyc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy91c2Vycy91c2Vycy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGVybWlzc2lvbk1hbmFnZW1lbnRNb2R1bGUgfSBmcm9tICdAYWJwL25nLnBlcm1pc3Npb24tbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBUYWJsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuaW1wb3J0IHsgTmd4VmFsaWRhdGVDb3JlTW9kdWxlIH0gZnJvbSAnQG5neC12YWxpZGF0ZS9jb3JlJztcbmltcG9ydCB7IFBlcmZlY3RTY3JvbGxiYXJNb2R1bGUgfSBmcm9tICduZ3gtcGVyZmVjdC1zY3JvbGxiYXInO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtSb2xlc0NvbXBvbmVudCwgVXNlcnNDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgTmd4c01vZHVsZS5mb3JGZWF0dXJlKFtJZGVudGl0eVN0YXRlXSksXG4gICAgQ29yZU1vZHVsZSxcbiAgICBJZGVudGl0eVJvdXRpbmdNb2R1bGUsXG4gICAgTmdiVGFic2V0TW9kdWxlLFxuICAgIFRoZW1lU2hhcmVkTW9kdWxlLFxuICAgIFRhYmxlTW9kdWxlLFxuICAgIE5nYkRyb3Bkb3duTW9kdWxlLFxuICAgIFBlcm1pc3Npb25NYW5hZ2VtZW50TW9kdWxlLFxuICAgIE5neFZhbGlkYXRlQ29yZU1vZHVsZSxcbiAgICBQZXJmZWN0U2Nyb2xsYmFyTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBJZGVudGl0eU1vZHVsZSB7fVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm5/lib/models/identity.js b/npm/ng-packs/dist/identity/esm5/lib/models/identity.js new file mode 100644 index 00000000000..c727c77125c --- /dev/null +++ b/npm/ng-packs/dist/identity/esm5/lib/models/identity.js @@ -0,0 +1,102 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var Identity; +(function (Identity) { + /** + * @record + */ + function State() { } + Identity.State = State; + if (false) { + /** @type {?} */ + State.prototype.roles; + /** @type {?} */ + State.prototype.users; + /** @type {?} */ + State.prototype.selectedRole; + /** @type {?} */ + State.prototype.selectedUser; + /** @type {?} */ + State.prototype.selectedUserRoles; + } + /** + * @record + */ + function RoleSaveRequest() { } + Identity.RoleSaveRequest = RoleSaveRequest; + if (false) { + /** @type {?} */ + RoleSaveRequest.prototype.name; + /** @type {?} */ + RoleSaveRequest.prototype.isDefault; + /** @type {?} */ + RoleSaveRequest.prototype.isPublic; + } + /** + * @record + */ + function RoleItem() { } + Identity.RoleItem = RoleItem; + if (false) { + /** @type {?} */ + RoleItem.prototype.isStatic; + /** @type {?} */ + RoleItem.prototype.concurrencyStamp; + /** @type {?} */ + RoleItem.prototype.id; + } + /** + * @record + */ + function UserItem() { } + Identity.UserItem = UserItem; + if (false) { + /** @type {?} */ + UserItem.prototype.tenantId; + /** @type {?} */ + UserItem.prototype.emailConfirmed; + /** @type {?} */ + UserItem.prototype.phoneNumberConfirmed; + /** @type {?} */ + UserItem.prototype.isLockedOut; + /** @type {?} */ + UserItem.prototype.concurrencyStamp; + /** @type {?} */ + UserItem.prototype.id; + } + /** + * @record + */ + function User() { } + Identity.User = User; + if (false) { + /** @type {?} */ + User.prototype.userName; + /** @type {?} */ + User.prototype.name; + /** @type {?} */ + User.prototype.surname; + /** @type {?} */ + User.prototype.email; + /** @type {?} */ + User.prototype.phoneNumber; + /** @type {?} */ + User.prototype.twoFactorEnabled; + /** @type {?} */ + User.prototype.lockoutEnabled; + } + /** + * @record + */ + function UserSaveRequest() { } + Identity.UserSaveRequest = UserSaveRequest; + if (false) { + /** @type {?} */ + UserSaveRequest.prototype.password; + /** @type {?} */ + UserSaveRequest.prototype.roleNames; + } +})(Identity || (Identity = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmlkZW50aXR5LyIsInNvdXJjZXMiOlsibGliL21vZGVscy9pZGVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsTUFBTSxLQUFXLFFBQVEsQ0FnRHhCO0FBaERELFdBQWlCLFFBQVE7Ozs7SUFDdkIsb0JBTUM7Ozs7UUFMQyxzQkFBb0I7O1FBQ3BCLHNCQUFvQjs7UUFDcEIsNkJBQXVCOztRQUN2Qiw2QkFBdUI7O1FBQ3ZCLGtDQUE4Qjs7Ozs7SUFLaEMsOEJBSUM7Ozs7UUFIQywrQkFBYTs7UUFDYixvQ0FBbUI7O1FBQ25CLG1DQUFrQjs7Ozs7SUFHcEIsdUJBSUM7Ozs7UUFIQyw0QkFBa0I7O1FBQ2xCLG9DQUF5Qjs7UUFDekIsc0JBQVc7Ozs7O0lBS2IsdUJBT0M7Ozs7UUFOQyw0QkFBaUI7O1FBQ2pCLGtDQUF3Qjs7UUFDeEIsd0NBQThCOztRQUM5QiwrQkFBcUI7O1FBQ3JCLG9DQUF5Qjs7UUFDekIsc0JBQVc7Ozs7O0lBR2IsbUJBUUM7Ozs7UUFQQyx3QkFBaUI7O1FBQ2pCLG9CQUFhOztRQUNiLHVCQUFnQjs7UUFDaEIscUJBQWM7O1FBQ2QsMkJBQW9COztRQUNwQixnQ0FBdUI7O1FBQ3ZCLDhCQUFxQjs7Ozs7SUFHdkIsOEJBR0M7Ozs7UUFGQyxtQ0FBaUI7O1FBQ2pCLG9DQUFvQjs7QUFFeEIsQ0FBQyxFQWhEZ0IsUUFBUSxLQUFSLFFBQVEsUUFnRHhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUJQIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcblxuZXhwb3J0IG5hbWVzcGFjZSBJZGVudGl0eSB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgU3RhdGUge1xuICAgIHJvbGVzOiBSb2xlUmVzcG9uc2U7XG4gICAgdXNlcnM6IFVzZXJSZXNwb25zZTtcbiAgICBzZWxlY3RlZFJvbGU6IFJvbGVJdGVtO1xuICAgIHNlbGVjdGVkVXNlcjogVXNlckl0ZW07XG4gICAgc2VsZWN0ZWRVc2VyUm9sZXM6IFJvbGVJdGVtW107XG4gIH1cblxuICBleHBvcnQgdHlwZSBSb2xlUmVzcG9uc2UgPSBBQlAuUGFnZWRSZXNwb25zZTxSb2xlSXRlbT47XG5cbiAgZXhwb3J0IGludGVyZmFjZSBSb2xlU2F2ZVJlcXVlc3Qge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpc0RlZmF1bHQ6IGJvb2xlYW47XG4gICAgaXNQdWJsaWM6IGJvb2xlYW47XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFJvbGVJdGVtIGV4dGVuZHMgUm9sZVNhdmVSZXF1ZXN0IHtcbiAgICBpc1N0YXRpYzogYm9vbGVhbjtcbiAgICBjb25jdXJyZW5jeVN0YW1wOiBzdHJpbmc7XG4gICAgaWQ6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFVzZXJSZXNwb25zZSA9IEFCUC5QYWdlZFJlc3BvbnNlPFVzZXJJdGVtPjtcblxuICBleHBvcnQgaW50ZXJmYWNlIFVzZXJJdGVtIGV4dGVuZHMgVXNlciB7XG4gICAgdGVuYW50SWQ6IHN0cmluZztcbiAgICBlbWFpbENvbmZpcm1lZDogYm9vbGVhbjtcbiAgICBwaG9uZU51bWJlckNvbmZpcm1lZDogYm9vbGVhbjtcbiAgICBpc0xvY2tlZE91dDogYm9vbGVhbjtcbiAgICBjb25jdXJyZW5jeVN0YW1wOiBzdHJpbmc7XG4gICAgaWQ6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XG4gICAgdXNlck5hbWU6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc3VybmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgICB0d29GYWN0b3JFbmFibGVkOiB0cnVlO1xuICAgIGxvY2tvdXRFbmFibGVkOiB0cnVlO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBVc2VyU2F2ZVJlcXVlc3QgZXh0ZW5kcyBVc2VyIHtcbiAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgIHJvbGVOYW1lczogc3RyaW5nW107XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm5/lib/resolvers/roles.resolver.js b/npm/ng-packs/dist/identity/esm5/lib/resolvers/roles.resolver.js new file mode 100644 index 00000000000..3dfe3b78292 --- /dev/null +++ b/npm/ng-packs/dist/identity/esm5/lib/resolvers/roles.resolver.js @@ -0,0 +1,41 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { IdentityGetRoles } from '../actions/identity.actions'; +import { IdentityState } from '../states/identity.state'; +var RoleResolver = /** @class */ (function () { + function RoleResolver(store) { + this.store = store; + } + /** + * @return {?} + */ + RoleResolver.prototype.resolve = /** + * @return {?} + */ + function () { + /** @type {?} */ + var roles = this.store.selectSnapshot(IdentityState.getRoles); + return roles && roles.length ? null : this.store.dispatch(new IdentityGetRoles()); + }; + RoleResolver.decorators = [ + { type: Injectable } + ]; + /** @nocollapse */ + RoleResolver.ctorParameters = function () { return [ + { type: Store } + ]; }; + return RoleResolver; +}()); +export { RoleResolver }; +if (false) { + /** + * @type {?} + * @private + */ + RoleResolver.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmlkZW50aXR5LyIsInNvdXJjZXMiOlsibGliL3Jlc29sdmVycy9yb2xlcy5yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RDtJQUVFLHNCQUFvQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztJQUFHLENBQUM7Ozs7SUFFcEMsOEJBQU87OztJQUFQOztZQUNRLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQy9ELE9BQU8sS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQzs7Z0JBUEYsVUFBVTs7OztnQkFMRixLQUFLOztJQWFkLG1CQUFDO0NBQUEsQUFSRCxJQVFDO1NBUFksWUFBWTs7Ozs7O0lBQ1gsNkJBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzb2x2ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IElkZW50aXR5R2V0Um9sZXMgfSBmcm9tICcuLi9hY3Rpb25zL2lkZW50aXR5LmFjdGlvbnMnO1xuaW1wb3J0IHsgSWRlbnRpdHkgfSBmcm9tICcuLi9tb2RlbHMvaWRlbnRpdHknO1xuaW1wb3J0IHsgSWRlbnRpdHlTdGF0ZSB9IGZyb20gJy4uL3N0YXRlcy9pZGVudGl0eS5zdGF0ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSb2xlUmVzb2x2ZXIgaW1wbGVtZW50cyBSZXNvbHZlPElkZW50aXR5LlN0YXRlPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIHJlc29sdmUoKSB7XG4gICAgY29uc3Qgcm9sZXMgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KElkZW50aXR5U3RhdGUuZ2V0Um9sZXMpO1xuICAgIHJldHVybiByb2xlcyAmJiByb2xlcy5sZW5ndGggPyBudWxsIDogdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgSWRlbnRpdHlHZXRSb2xlcygpKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm5/lib/resolvers/users.resolver.js b/npm/ng-packs/dist/identity/esm5/lib/resolvers/users.resolver.js new file mode 100644 index 00000000000..596b2837f99 --- /dev/null +++ b/npm/ng-packs/dist/identity/esm5/lib/resolvers/users.resolver.js @@ -0,0 +1,41 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { IdentityGetUsers } from '../actions/identity.actions'; +import { IdentityState } from '../states/identity.state'; +var UserResolver = /** @class */ (function () { + function UserResolver(store) { + this.store = store; + } + /** + * @return {?} + */ + UserResolver.prototype.resolve = /** + * @return {?} + */ + function () { + /** @type {?} */ + var users = this.store.selectSnapshot(IdentityState.getUsers); + return users && users.length ? null : this.store.dispatch(new IdentityGetUsers()); + }; + UserResolver.decorators = [ + { type: Injectable } + ]; + /** @nocollapse */ + UserResolver.ctorParameters = function () { return [ + { type: Store } + ]; }; + return UserResolver; +}()); +export { UserResolver }; +if (false) { + /** + * @type {?} + * @private + */ + UserResolver.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmlkZW50aXR5LyIsInNvdXJjZXMiOlsibGliL3Jlc29sdmVycy91c2Vycy5yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RDtJQUVFLHNCQUFvQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztJQUFHLENBQUM7Ozs7SUFFcEMsOEJBQU87OztJQUFQOztZQUNRLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQy9ELE9BQU8sS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQzs7Z0JBUEYsVUFBVTs7OztnQkFMRixLQUFLOztJQWFkLG1CQUFDO0NBQUEsQUFSRCxJQVFDO1NBUFksWUFBWTs7Ozs7O0lBQ1gsNkJBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzb2x2ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IElkZW50aXR5R2V0VXNlcnMgfSBmcm9tICcuLi9hY3Rpb25zL2lkZW50aXR5LmFjdGlvbnMnO1xuaW1wb3J0IHsgSWRlbnRpdHkgfSBmcm9tICcuLi9tb2RlbHMvaWRlbnRpdHknO1xuaW1wb3J0IHsgSWRlbnRpdHlTdGF0ZSB9IGZyb20gJy4uL3N0YXRlcy9pZGVudGl0eS5zdGF0ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVc2VyUmVzb2x2ZXIgaW1wbGVtZW50cyBSZXNvbHZlPElkZW50aXR5LlN0YXRlPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIHJlc29sdmUoKSB7XG4gICAgY29uc3QgdXNlcnMgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KElkZW50aXR5U3RhdGUuZ2V0VXNlcnMpO1xuICAgIHJldHVybiB1c2VycyAmJiB1c2Vycy5sZW5ndGggPyBudWxsIDogdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgSWRlbnRpdHlHZXRVc2VycygpKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm5/lib/services/identity.service.js b/npm/ng-packs/dist/identity/esm5/lib/services/identity.service.js new file mode 100644 index 00000000000..3f311fa6442 --- /dev/null +++ b/npm/ng-packs/dist/identity/esm5/lib/services/identity.service.js @@ -0,0 +1,219 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { RestService } from '@abp/ng.core'; +import * as i0 from "@angular/core"; +import * as i1 from "@abp/ng.core"; +var IdentityService = /** @class */ (function () { + function IdentityService(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + IdentityService.prototype.getRoles = /** + * @return {?} + */ + function () { + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/identity/roles', + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + IdentityService.prototype.getRoleById = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'GET', + url: "/api/identity/roles/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + IdentityService.prototype.deleteRole = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'DELETE', + url: "/api/identity/roles/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + IdentityService.prototype.addRole = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var request = { + method: 'POST', + url: '/api/identity/roles', + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + IdentityService.prototype.updateRole = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var url = "/api/identity/roles/" + body.id; + delete body.id; + /** @type {?} */ + var request = { + method: 'PUT', + url: url, + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?=} params + * @return {?} + */ + IdentityService.prototype.getUsers = /** + * @param {?=} params + * @return {?} + */ + function (params) { + if (params === void 0) { params = (/** @type {?} */ ({})); } + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/identity/users', + params: params, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + IdentityService.prototype.getUserById = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'GET', + url: "/api/identity/users/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + IdentityService.prototype.getUserRoles = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'GET', + url: "/api/identity/users/" + id + "/roles", + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + IdentityService.prototype.deleteUser = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'DELETE', + url: "/api/identity/users/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + IdentityService.prototype.addUser = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var request = { + method: 'POST', + url: '/api/identity/users', + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + IdentityService.prototype.updateUser = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var url = "/identity/users/" + body.id; + delete body.id; + /** @type {?} */ + var request = { + method: 'PUT', + url: url, + body: body, + }; + return this.rest.request(request); + }; + IdentityService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + IdentityService.ctorParameters = function () { return [ + { type: RestService } + ]; }; + /** @nocollapse */ IdentityService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function IdentityService_Factory() { return new IdentityService(i0.ɵɵinject(i1.RestService)); }, token: IdentityService, providedIn: "root" }); + return IdentityService; +}()); +export { IdentityService }; +if (false) { + /** + * @type {?} + * @private + */ + IdentityService.prototype.rest; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuaWRlbnRpdHkvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvaWRlbnRpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsV0FBVyxFQUFhLE1BQU0sY0FBYyxDQUFDOzs7QUFHdEQ7SUFJRSx5QkFBb0IsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUFHLENBQUM7Ozs7SUFFekMsa0NBQVE7OztJQUFSOztZQUNRLE9BQU8sR0FBdUI7WUFDbEMsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEVBQUUscUJBQXFCO1NBQzNCO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBOEIsT0FBTyxDQUFDLENBQUM7SUFDakUsQ0FBQzs7Ozs7SUFFRCxxQ0FBVzs7OztJQUFYLFVBQVksRUFBVTs7WUFDZCxPQUFPLEdBQXVCO1lBQ2xDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxFQUFFLHlCQUF1QixFQUFJO1NBQ2pDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBMEIsT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs7Ozs7SUFFRCxvQ0FBVTs7OztJQUFWLFVBQVcsRUFBVTs7WUFDYixPQUFPLEdBQXVCO1lBQ2xDLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLEdBQUcsRUFBRSx5QkFBdUIsRUFBSTtTQUNqQztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQTBCLE9BQU8sQ0FBQyxDQUFDO0lBQzdELENBQUM7Ozs7O0lBRUQsaUNBQU87Ozs7SUFBUCxVQUFRLElBQThCOztZQUM5QixPQUFPLEdBQTJDO1lBQ3RELE1BQU0sRUFBRSxNQUFNO1lBQ2QsR0FBRyxFQUFFLHFCQUFxQjtZQUMxQixJQUFJLE1BQUE7U0FDTDtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQThDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pGLENBQUM7Ozs7O0lBRUQsb0NBQVU7Ozs7SUFBVixVQUFXLElBQXVCOztZQUMxQixHQUFHLEdBQUcseUJBQXVCLElBQUksQ0FBQyxFQUFJO1FBQzVDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQzs7WUFFVCxPQUFPLEdBQW9DO1lBQy9DLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxLQUFBO1lBQ0gsSUFBSSxNQUFBO1NBQ0w7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUF1QyxPQUFPLENBQUMsQ0FBQztJQUMxRSxDQUFDOzs7OztJQUVELGtDQUFROzs7O0lBQVIsVUFBUyxNQUFrQztRQUFsQyx1QkFBQSxFQUFBLDRCQUFTLEVBQUUsRUFBdUI7O1lBQ25DLE9BQU8sR0FBdUI7WUFDbEMsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEVBQUUscUJBQXFCO1lBQzFCLE1BQU0sUUFBQTtTQUNQO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBOEIsT0FBTyxDQUFDLENBQUM7SUFDakUsQ0FBQzs7Ozs7SUFFRCxxQ0FBVzs7OztJQUFYLFVBQVksRUFBVTs7WUFDZCxPQUFPLEdBQXVCO1lBQ2xDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxFQUFFLHlCQUF1QixFQUFJO1NBQ2pDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBMEIsT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs7Ozs7SUFFRCxzQ0FBWTs7OztJQUFaLFVBQWEsRUFBVTs7WUFDZixPQUFPLEdBQXVCO1lBQ2xDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxFQUFFLHlCQUF1QixFQUFFLFdBQVE7U0FDdkM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUE4QixPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDOzs7OztJQUVELG9DQUFVOzs7O0lBQVYsVUFBVyxFQUFVOztZQUNiLE9BQU8sR0FBdUI7WUFDbEMsTUFBTSxFQUFFLFFBQVE7WUFDaEIsR0FBRyxFQUFFLHlCQUF1QixFQUFJO1NBQ2pDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBYSxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDOzs7OztJQUVELGlDQUFPOzs7O0lBQVAsVUFBUSxJQUE4Qjs7WUFDOUIsT0FBTyxHQUEyQztZQUN0RCxNQUFNLEVBQUUsTUFBTTtZQUNkLEdBQUcsRUFBRSxxQkFBcUI7WUFDMUIsSUFBSSxNQUFBO1NBQ0w7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUE4QyxPQUFPLENBQUMsQ0FBQztJQUNqRixDQUFDOzs7OztJQUVELG9DQUFVOzs7O0lBQVYsVUFBVyxJQUF1Qjs7WUFDMUIsR0FBRyxHQUFHLHFCQUFtQixJQUFJLENBQUMsRUFBSTtRQUN4QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7O1lBRVQsT0FBTyxHQUFvQztZQUMvQyxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsS0FBQTtZQUNILElBQUksTUFBQTtTQUNMO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBdUMsT0FBTyxDQUFDLENBQUM7SUFDMUUsQ0FBQzs7Z0JBbEhGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBTFEsV0FBVzs7OzBCQUZwQjtDQXdIQyxBQW5IRCxJQW1IQztTQWhIWSxlQUFlOzs7Ozs7SUFDZCwrQkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXN0U2VydmljZSwgUmVzdCwgQUJQIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IElkZW50aXR5IH0gZnJvbSAnLi4vbW9kZWxzL2lkZW50aXR5JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIElkZW50aXR5U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzdDogUmVzdFNlcnZpY2UpIHt9XG5cbiAgZ2V0Um9sZXMoKTogT2JzZXJ2YWJsZTxJZGVudGl0eS5Sb2xlUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8bnVsbD4gPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgdXJsOiAnL2FwaS9pZGVudGl0eS9yb2xlcycsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDxudWxsLCBJZGVudGl0eS5Sb2xlUmVzcG9uc2U+KHJlcXVlc3QpO1xuICB9XG5cbiAgZ2V0Um9sZUJ5SWQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8SWRlbnRpdHkuUm9sZUl0ZW0+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8bnVsbD4gPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgdXJsOiBgL2FwaS9pZGVudGl0eS9yb2xlcy8ke2lkfWAsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDxudWxsLCBJZGVudGl0eS5Sb2xlSXRlbT4ocmVxdWVzdCk7XG4gIH1cblxuICBkZWxldGVSb2xlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElkZW50aXR5LlJvbGVJdGVtPiB7XG4gICAgY29uc3QgcmVxdWVzdDogUmVzdC5SZXF1ZXN0PG51bGw+ID0ge1xuICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgIHVybDogYC9hcGkvaWRlbnRpdHkvcm9sZXMvJHtpZH1gLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5yZXN0LnJlcXVlc3Q8bnVsbCwgSWRlbnRpdHkuUm9sZUl0ZW0+KHJlcXVlc3QpO1xuICB9XG5cbiAgYWRkUm9sZShib2R5OiBJZGVudGl0eS5Sb2xlU2F2ZVJlcXVlc3QpOiBPYnNlcnZhYmxlPElkZW50aXR5LlJvbGVJdGVtPiB7XG4gICAgY29uc3QgcmVxdWVzdDogUmVzdC5SZXF1ZXN0PElkZW50aXR5LlJvbGVTYXZlUmVxdWVzdD4gPSB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHVybDogJy9hcGkvaWRlbnRpdHkvcm9sZXMnLFxuICAgICAgYm9keSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PElkZW50aXR5LlJvbGVTYXZlUmVxdWVzdCwgSWRlbnRpdHkuUm9sZUl0ZW0+KHJlcXVlc3QpO1xuICB9XG5cbiAgdXBkYXRlUm9sZShib2R5OiBJZGVudGl0eS5Sb2xlSXRlbSk6IE9ic2VydmFibGU8SWRlbnRpdHkuUm9sZUl0ZW0+IHtcbiAgICBjb25zdCB1cmwgPSBgL2FwaS9pZGVudGl0eS9yb2xlcy8ke2JvZHkuaWR9YDtcbiAgICBkZWxldGUgYm9keS5pZDtcblxuICAgIGNvbnN0IHJlcXVlc3Q6IFJlc3QuUmVxdWVzdDxJZGVudGl0eS5Sb2xlSXRlbT4gPSB7XG4gICAgICBtZXRob2Q6ICdQVVQnLFxuICAgICAgdXJsLFxuICAgICAgYm9keSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PElkZW50aXR5LlJvbGVJdGVtLCBJZGVudGl0eS5Sb2xlSXRlbT4ocmVxdWVzdCk7XG4gIH1cblxuICBnZXRVc2VycyhwYXJhbXMgPSB7fSBhcyBBQlAuUGFnZVF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxJZGVudGl0eS5Vc2VyUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8bnVsbD4gPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgdXJsOiAnL2FwaS9pZGVudGl0eS91c2VycycsXG4gICAgICBwYXJhbXMsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDxudWxsLCBJZGVudGl0eS5Vc2VyUmVzcG9uc2U+KHJlcXVlc3QpO1xuICB9XG5cbiAgZ2V0VXNlckJ5SWQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8SWRlbnRpdHkuVXNlckl0ZW0+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8bnVsbD4gPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgdXJsOiBgL2FwaS9pZGVudGl0eS91c2Vycy8ke2lkfWAsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDxudWxsLCBJZGVudGl0eS5Vc2VySXRlbT4ocmVxdWVzdCk7XG4gIH1cblxuICBnZXRVc2VyUm9sZXMoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8SWRlbnRpdHkuUm9sZVJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVxdWVzdDogUmVzdC5SZXF1ZXN0PG51bGw+ID0ge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIHVybDogYC9hcGkvaWRlbnRpdHkvdXNlcnMvJHtpZH0vcm9sZXNgLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5yZXN0LnJlcXVlc3Q8bnVsbCwgSWRlbnRpdHkuUm9sZVJlc3BvbnNlPihyZXF1ZXN0KTtcbiAgfVxuXG4gIGRlbGV0ZVVzZXIoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlc3QuUmVxdWVzdDxudWxsPiA9IHtcbiAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICB1cmw6IGAvYXBpL2lkZW50aXR5L3VzZXJzLyR7aWR9YCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PG51bGwsIG51bGw+KHJlcXVlc3QpO1xuICB9XG5cbiAgYWRkVXNlcihib2R5OiBJZGVudGl0eS5Vc2VyU2F2ZVJlcXVlc3QpOiBPYnNlcnZhYmxlPElkZW50aXR5LlVzZXJJdGVtPiB7XG4gICAgY29uc3QgcmVxdWVzdDogUmVzdC5SZXF1ZXN0PElkZW50aXR5LlVzZXJTYXZlUmVxdWVzdD4gPSB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHVybDogJy9hcGkvaWRlbnRpdHkvdXNlcnMnLFxuICAgICAgYm9keSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PElkZW50aXR5LlVzZXJTYXZlUmVxdWVzdCwgSWRlbnRpdHkuVXNlckl0ZW0+KHJlcXVlc3QpO1xuICB9XG5cbiAgdXBkYXRlVXNlcihib2R5OiBJZGVudGl0eS5Vc2VySXRlbSk6IE9ic2VydmFibGU8SWRlbnRpdHkuVXNlckl0ZW0+IHtcbiAgICBjb25zdCB1cmwgPSBgL2lkZW50aXR5L3VzZXJzLyR7Ym9keS5pZH1gO1xuICAgIGRlbGV0ZSBib2R5LmlkO1xuXG4gICAgY29uc3QgcmVxdWVzdDogUmVzdC5SZXF1ZXN0PElkZW50aXR5LlVzZXJJdGVtPiA9IHtcbiAgICAgIG1ldGhvZDogJ1BVVCcsXG4gICAgICB1cmwsXG4gICAgICBib2R5LFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5yZXN0LnJlcXVlc3Q8SWRlbnRpdHkuVXNlckl0ZW0sIElkZW50aXR5LlVzZXJJdGVtPihyZXF1ZXN0KTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm5/lib/states/identity.state.js b/npm/ng-packs/dist/identity/esm5/lib/states/identity.state.js new file mode 100644 index 00000000000..fbaffaaae9a --- /dev/null +++ b/npm/ng-packs/dist/identity/esm5/lib/states/identity.state.js @@ -0,0 +1,397 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Action, Selector, State } from '@ngxs/store'; +import { switchMap, tap, pluck } from 'rxjs/operators'; +import { IdentityAddRole, IdentityAddUser, IdentityDeleteRole, IdentityDeleteUser, IdentityGetRoleById, IdentityGetRoles, IdentityGetUserById, IdentityGetUsers, IdentityUpdateRole, IdentityUpdateUser, IdentityGetUserRoles, } from '../actions/identity.actions'; +import { IdentityService } from '../services/identity.service'; +var IdentityState = /** @class */ (function () { + function IdentityState(identityService) { + this.identityService = identityService; + } + /** + * @param {?} __0 + * @return {?} + */ + IdentityState.getRoles = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var roles = _a.roles; + return roles.items; + }; + /** + * @param {?} __0 + * @return {?} + */ + IdentityState.getRolesTotalCount = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var roles = _a.roles; + return roles.totalCount; + }; + /** + * @param {?} __0 + * @return {?} + */ + IdentityState.getUsers = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var users = _a.users; + return users.items; + }; + /** + * @param {?} __0 + * @return {?} + */ + IdentityState.getUsersTotalCount = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var users = _a.users; + return users.totalCount; + }; + /** + * @param {?} __0 + * @return {?} + */ + IdentityState.prototype.getRoles = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var patchState = _a.patchState; + return this.identityService.getRoles().pipe(tap((/** + * @param {?} roles + * @return {?} + */ + function (roles) { + return patchState({ + roles: roles, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.getRole = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.identityService.getRoleById(payload).pipe(tap((/** + * @param {?} selectedRole + * @return {?} + */ + function (selectedRole) { + return patchState({ + selectedRole: selectedRole, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.deleteRole = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.identityService.deleteRole(payload).pipe(switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetRoles()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.addRole = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.identityService.addRole(payload).pipe(switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetRoles()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.updateRole = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var _this = this; + var getState = _a.getState, dispatch = _a.dispatch; + var payload = _b.payload; + return dispatch(new IdentityGetRoleById(payload.id)).pipe(switchMap((/** + * @return {?} + */ + function () { return _this.identityService.updateRole(tslib_1.__assign({}, getState().selectedRole, payload)); })), switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetRoles()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.getUsers = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.identityService.getUsers(payload).pipe(tap((/** + * @param {?} users + * @return {?} + */ + function (users) { + return patchState({ + users: users, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.getUser = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.identityService.getUserById(payload).pipe(tap((/** + * @param {?} selectedUser + * @return {?} + */ + function (selectedUser) { + return patchState({ + selectedUser: selectedUser, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.deleteUser = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.identityService.deleteUser(payload).pipe(switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetUsers()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.addUser = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.identityService.addUser(payload).pipe(switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetUsers()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.updateUser = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var _this = this; + var getState = _a.getState, dispatch = _a.dispatch; + var payload = _b.payload; + return dispatch(new IdentityGetUserById(payload.id)).pipe(switchMap((/** + * @return {?} + */ + function () { return _this.identityService.updateUser(tslib_1.__assign({}, getState().selectedUser, payload)); })), switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetUsers()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.getUserRoles = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.identityService.getUserRoles(payload).pipe(pluck('items'), tap((/** + * @param {?} selectedUserRoles + * @return {?} + */ + function (selectedUserRoles) { + return patchState({ + selectedUserRoles: selectedUserRoles, + }); + }))); + }; + tslib_1.__decorate([ + Action(IdentityGetRoles), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", void 0) + ], IdentityState.prototype, "getRoles", null); + tslib_1.__decorate([ + Action(IdentityGetRoleById), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityGetRoleById]), + tslib_1.__metadata("design:returntype", void 0) + ], IdentityState.prototype, "getRole", null); + tslib_1.__decorate([ + Action(IdentityDeleteRole), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityGetRoleById]), + tslib_1.__metadata("design:returntype", void 0) + ], IdentityState.prototype, "deleteRole", null); + tslib_1.__decorate([ + Action(IdentityAddRole), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityAddRole]), + tslib_1.__metadata("design:returntype", void 0) + ], IdentityState.prototype, "addRole", null); + tslib_1.__decorate([ + Action(IdentityUpdateRole), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityUpdateRole]), + tslib_1.__metadata("design:returntype", void 0) + ], IdentityState.prototype, "updateRole", null); + tslib_1.__decorate([ + Action(IdentityGetUsers), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityGetUsers]), + tslib_1.__metadata("design:returntype", void 0) + ], IdentityState.prototype, "getUsers", null); + tslib_1.__decorate([ + Action(IdentityGetUserById), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityGetUserById]), + tslib_1.__metadata("design:returntype", void 0) + ], IdentityState.prototype, "getUser", null); + tslib_1.__decorate([ + Action(IdentityDeleteUser), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityGetUserById]), + tslib_1.__metadata("design:returntype", void 0) + ], IdentityState.prototype, "deleteUser", null); + tslib_1.__decorate([ + Action(IdentityAddUser), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityAddUser]), + tslib_1.__metadata("design:returntype", void 0) + ], IdentityState.prototype, "addUser", null); + tslib_1.__decorate([ + Action(IdentityUpdateUser), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityUpdateUser]), + tslib_1.__metadata("design:returntype", void 0) + ], IdentityState.prototype, "updateUser", null); + tslib_1.__decorate([ + Action(IdentityGetUserRoles), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, IdentityGetUserRoles]), + tslib_1.__metadata("design:returntype", void 0) + ], IdentityState.prototype, "getUserRoles", null); + tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", Array) + ], IdentityState, "getRoles", null); + tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", Number) + ], IdentityState, "getRolesTotalCount", null); + tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", Array) + ], IdentityState, "getUsers", null); + tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", Number) + ], IdentityState, "getUsersTotalCount", null); + IdentityState = tslib_1.__decorate([ + State({ + name: 'IdentityState', + defaults: (/** @type {?} */ ({ roles: {}, selectedRole: {}, users: {}, selectedUser: {} })), + }), + tslib_1.__metadata("design:paramtypes", [IdentityService]) + ], IdentityState); + return IdentityState; +}()); +export { IdentityState }; +if (false) { + /** + * @type {?} + * @private + */ + IdentityState.prototype.identityService; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuc3RhdGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLmlkZW50aXR5LyIsInNvdXJjZXMiOlsibGliL3N0YXRlcy9pZGVudGl0eS5zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBZ0IsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUNMLGVBQWUsRUFDZixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixvQkFBb0IsR0FDckIsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0lBMkI3RCx1QkFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQUcsQ0FBQzs7Ozs7SUFuQmpELHNCQUFROzs7O0lBQWYsVUFBZ0IsRUFBeUI7WUFBdkIsZ0JBQUs7UUFDckIsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3JCLENBQUM7Ozs7O0lBR00sZ0NBQWtCOzs7O0lBQXpCLFVBQTBCLEVBQXlCO1lBQXZCLGdCQUFLO1FBQy9CLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUMxQixDQUFDOzs7OztJQUdNLHNCQUFROzs7O0lBQWYsVUFBZ0IsRUFBeUI7WUFBdkIsZ0JBQUs7UUFDckIsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3JCLENBQUM7Ozs7O0lBR00sZ0NBQWtCOzs7O0lBQXpCLFVBQTBCLEVBQXlCO1lBQXZCLGdCQUFLO1FBQy9CLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUMx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QUFLLENBQWlCO1lBQ3JCLElBQUksRUFBRSxlQUFlO1lBQ3JCLFFBQVEsRUFBRSxtQkFBQSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsRUFBa0I7U0FDekYsQ0FBQztpREFzQnFDLGVBQWU7T0FyQnpDLGFBQWEsQ0FrSHpCO0lBQUQsb0JBQUM7Q0FBQSxJQUFBO1NBbEhZLGFBQWE7Ozs7OztJQXFCWix3Q0FBd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24sIFNlbGVjdG9yLCBTdGF0ZSwgU3RhdGVDb250ZXh0IH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YXAsIHBsdWNrIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgSWRlbnRpdHlBZGRSb2xlLFxuICBJZGVudGl0eUFkZFVzZXIsXG4gIElkZW50aXR5RGVsZXRlUm9sZSxcbiAgSWRlbnRpdHlEZWxldGVVc2VyLFxuICBJZGVudGl0eUdldFJvbGVCeUlkLFxuICBJZGVudGl0eUdldFJvbGVzLFxuICBJZGVudGl0eUdldFVzZXJCeUlkLFxuICBJZGVudGl0eUdldFVzZXJzLFxuICBJZGVudGl0eVVwZGF0ZVJvbGUsXG4gIElkZW50aXR5VXBkYXRlVXNlcixcbiAgSWRlbnRpdHlHZXRVc2VyUm9sZXMsXG59IGZyb20gJy4uL2FjdGlvbnMvaWRlbnRpdHkuYWN0aW9ucyc7XG5pbXBvcnQgeyBJZGVudGl0eSB9IGZyb20gJy4uL21vZGVscy9pZGVudGl0eSc7XG5pbXBvcnQgeyBJZGVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pZGVudGl0eS5zZXJ2aWNlJztcblxuQFN0YXRlPElkZW50aXR5LlN0YXRlPih7XG4gIG5hbWU6ICdJZGVudGl0eVN0YXRlJyxcbiAgZGVmYXVsdHM6IHsgcm9sZXM6IHt9LCBzZWxlY3RlZFJvbGU6IHt9LCB1c2Vyczoge30sIHNlbGVjdGVkVXNlcjoge30gfSBhcyBJZGVudGl0eS5TdGF0ZSxcbn0pXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlTdGF0ZSB7XG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRSb2xlcyh7IHJvbGVzIH06IElkZW50aXR5LlN0YXRlKTogSWRlbnRpdHkuUm9sZUl0ZW1bXSB7XG4gICAgcmV0dXJuIHJvbGVzLml0ZW1zO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldFJvbGVzVG90YWxDb3VudCh7IHJvbGVzIH06IElkZW50aXR5LlN0YXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcm9sZXMudG90YWxDb3VudDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRVc2Vycyh7IHVzZXJzIH06IElkZW50aXR5LlN0YXRlKTogSWRlbnRpdHkuVXNlckl0ZW1bXSB7XG4gICAgcmV0dXJuIHVzZXJzLml0ZW1zO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldFVzZXJzVG90YWxDb3VudCh7IHVzZXJzIH06IElkZW50aXR5LlN0YXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdXNlcnMudG90YWxDb3VudDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaWRlbnRpdHlTZXJ2aWNlOiBJZGVudGl0eVNlcnZpY2UpIHt9XG5cbiAgQEFjdGlvbihJZGVudGl0eUdldFJvbGVzKVxuICBnZXRSb2xlcyh7IHBhdGNoU3RhdGUgfTogU3RhdGVDb250ZXh0PElkZW50aXR5LlN0YXRlPikge1xuICAgIHJldHVybiB0aGlzLmlkZW50aXR5U2VydmljZS5nZXRSb2xlcygpLnBpcGUoXG4gICAgICB0YXAocm9sZXMgPT5cbiAgICAgICAgcGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgcm9sZXMsXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgQEFjdGlvbihJZGVudGl0eUdldFJvbGVCeUlkKVxuICBnZXRSb2xlKHsgcGF0Y2hTdGF0ZSB9OiBTdGF0ZUNvbnRleHQ8SWRlbnRpdHkuU3RhdGU+LCB7IHBheWxvYWQgfTogSWRlbnRpdHlHZXRSb2xlQnlJZCkge1xuICAgIHJldHVybiB0aGlzLmlkZW50aXR5U2VydmljZS5nZXRSb2xlQnlJZChwYXlsb2FkKS5waXBlKFxuICAgICAgdGFwKHNlbGVjdGVkUm9sZSA9PlxuICAgICAgICBwYXRjaFN0YXRlKHtcbiAgICAgICAgICBzZWxlY3RlZFJvbGUsXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgQEFjdGlvbihJZGVudGl0eURlbGV0ZVJvbGUpXG4gIGRlbGV0ZVJvbGUoeyBkaXNwYXRjaCB9OiBTdGF0ZUNvbnRleHQ8SWRlbnRpdHkuU3RhdGU+LCB7IHBheWxvYWQgfTogSWRlbnRpdHlHZXRSb2xlQnlJZCkge1xuICAgIHJldHVybiB0aGlzLmlkZW50aXR5U2VydmljZS5kZWxldGVSb2xlKHBheWxvYWQpLnBpcGUoc3dpdGNoTWFwKCgpID0+IGRpc3BhdGNoKG5ldyBJZGVudGl0eUdldFJvbGVzKCkpKSk7XG4gIH1cblxuICBAQWN0aW9uKElkZW50aXR5QWRkUm9sZSlcbiAgYWRkUm9sZSh7IGRpc3BhdGNoIH06IFN0YXRlQ29udGV4dDxJZGVudGl0eS5TdGF0ZT4sIHsgcGF5bG9hZCB9OiBJZGVudGl0eUFkZFJvbGUpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0eVNlcnZpY2UuYWRkUm9sZShwYXlsb2FkKS5waXBlKHN3aXRjaE1hcCgoKSA9PiBkaXNwYXRjaChuZXcgSWRlbnRpdHlHZXRSb2xlcygpKSkpO1xuICB9XG5cbiAgQEFjdGlvbihJZGVudGl0eVVwZGF0ZVJvbGUpXG4gIHVwZGF0ZVJvbGUoeyBnZXRTdGF0ZSwgZGlzcGF0Y2ggfTogU3RhdGVDb250ZXh0PElkZW50aXR5LlN0YXRlPiwgeyBwYXlsb2FkIH06IElkZW50aXR5VXBkYXRlUm9sZSkge1xuICAgIHJldHVybiBkaXNwYXRjaChuZXcgSWRlbnRpdHlHZXRSb2xlQnlJZChwYXlsb2FkLmlkKSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmlkZW50aXR5U2VydmljZS51cGRhdGVSb2xlKHsgLi4uZ2V0U3RhdGUoKS5zZWxlY3RlZFJvbGUsIC4uLnBheWxvYWQgfSkpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IGRpc3BhdGNoKG5ldyBJZGVudGl0eUdldFJvbGVzKCkpKSxcbiAgICApO1xuICB9XG5cbiAgQEFjdGlvbihJZGVudGl0eUdldFVzZXJzKVxuICBnZXRVc2Vycyh7IHBhdGNoU3RhdGUgfTogU3RhdGVDb250ZXh0PElkZW50aXR5LlN0YXRlPiwgeyBwYXlsb2FkIH06IElkZW50aXR5R2V0VXNlcnMpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0eVNlcnZpY2UuZ2V0VXNlcnMocGF5bG9hZCkucGlwZShcbiAgICAgIHRhcCh1c2VycyA9PlxuICAgICAgICBwYXRjaFN0YXRlKHtcbiAgICAgICAgICB1c2VycyxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBAQWN0aW9uKElkZW50aXR5R2V0VXNlckJ5SWQpXG4gIGdldFVzZXIoeyBwYXRjaFN0YXRlIH06IFN0YXRlQ29udGV4dDxJZGVudGl0eS5TdGF0ZT4sIHsgcGF5bG9hZCB9OiBJZGVudGl0eUdldFVzZXJCeUlkKSB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdHlTZXJ2aWNlLmdldFVzZXJCeUlkKHBheWxvYWQpLnBpcGUoXG4gICAgICB0YXAoc2VsZWN0ZWRVc2VyID0+XG4gICAgICAgIHBhdGNoU3RhdGUoe1xuICAgICAgICAgIHNlbGVjdGVkVXNlcixcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBAQWN0aW9uKElkZW50aXR5RGVsZXRlVXNlcilcbiAgZGVsZXRlVXNlcih7IGRpc3BhdGNoIH06IFN0YXRlQ29udGV4dDxJZGVudGl0eS5TdGF0ZT4sIHsgcGF5bG9hZCB9OiBJZGVudGl0eUdldFVzZXJCeUlkKSB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdHlTZXJ2aWNlLmRlbGV0ZVVzZXIocGF5bG9hZCkucGlwZShzd2l0Y2hNYXAoKCkgPT4gZGlzcGF0Y2gobmV3IElkZW50aXR5R2V0VXNlcnMoKSkpKTtcbiAgfVxuXG4gIEBBY3Rpb24oSWRlbnRpdHlBZGRVc2VyKVxuICBhZGRVc2VyKHsgZGlzcGF0Y2ggfTogU3RhdGVDb250ZXh0PElkZW50aXR5LlN0YXRlPiwgeyBwYXlsb2FkIH06IElkZW50aXR5QWRkVXNlcikge1xuICAgIHJldHVybiB0aGlzLmlkZW50aXR5U2VydmljZS5hZGRVc2VyKHBheWxvYWQpLnBpcGUoc3dpdGNoTWFwKCgpID0+IGRpc3BhdGNoKG5ldyBJZGVudGl0eUdldFVzZXJzKCkpKSk7XG4gIH1cblxuICBAQWN0aW9uKElkZW50aXR5VXBkYXRlVXNlcilcbiAgdXBkYXRlVXNlcih7IGdldFN0YXRlLCBkaXNwYXRjaCB9OiBTdGF0ZUNvbnRleHQ8SWRlbnRpdHkuU3RhdGU+LCB7IHBheWxvYWQgfTogSWRlbnRpdHlVcGRhdGVVc2VyKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoKG5ldyBJZGVudGl0eUdldFVzZXJCeUlkKHBheWxvYWQuaWQpKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuaWRlbnRpdHlTZXJ2aWNlLnVwZGF0ZVVzZXIoeyAuLi5nZXRTdGF0ZSgpLnNlbGVjdGVkVXNlciwgLi4ucGF5bG9hZCB9KSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gZGlzcGF0Y2gobmV3IElkZW50aXR5R2V0VXNlcnMoKSkpLFxuICAgICk7XG4gIH1cblxuICBAQWN0aW9uKElkZW50aXR5R2V0VXNlclJvbGVzKVxuICBnZXRVc2VyUm9sZXMoeyBwYXRjaFN0YXRlIH06IFN0YXRlQ29udGV4dDxJZGVudGl0eS5TdGF0ZT4sIHsgcGF5bG9hZCB9OiBJZGVudGl0eUdldFVzZXJSb2xlcykge1xuICAgIHJldHVybiB0aGlzLmlkZW50aXR5U2VydmljZS5nZXRVc2VyUm9sZXMocGF5bG9hZCkucGlwZShcbiAgICAgIHBsdWNrKCdpdGVtcycpLFxuICAgICAgdGFwKHNlbGVjdGVkVXNlclJvbGVzID0+XG4gICAgICAgIHBhdGNoU3RhdGUoe1xuICAgICAgICAgIHNlbGVjdGVkVXNlclJvbGVzLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/esm5/public-api.js b/npm/ng-packs/dist/identity/esm5/public-api.js new file mode 100644 index 00000000000..196a6c17812 --- /dev/null +++ b/npm/ng-packs/dist/identity/esm5/public-api.js @@ -0,0 +1,16 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/* + * Public API Surface of identity + */ +export { IdentityModule } from './lib/identity.module'; +export { IdentityGetRoles, IdentityGetRoleById, IdentityDeleteRole, IdentityAddRole, IdentityUpdateRole, IdentityGetUsers, IdentityGetUserById, IdentityDeleteUser, IdentityAddUser, IdentityUpdateUser, IdentityGetUserRoles } from './lib/actions/identity.actions'; +export { RolesComponent } from './lib/components/roles/roles.component'; +export { IDENTITY_ROUTES } from './lib/constants/routes'; +export {} from './lib/models/identity'; +export { RoleResolver } from './lib/resolvers/roles.resolver'; +export { IdentityService } from './lib/services/identity.service'; +export { IdentityState } from './lib/states/identity.state'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcuaWRlbnRpdHkvIiwic291cmNlcyI6WyJwdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwrQkFBYyx1QkFBdUIsQ0FBQztBQUN0QyxxT0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQywrQkFBYyx3Q0FBd0MsQ0FBQztBQUN2RCxnQ0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxlQUFjLHVCQUF1QixDQUFDO0FBQ3RDLDZCQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGdDQUFjLGlDQUFpQyxDQUFDO0FBQ2hELDhCQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBpZGVudGl0eVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2lkZW50aXR5Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY3Rpb25zL2lkZW50aXR5LmFjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9yb2xlcy9yb2xlcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uc3RhbnRzL3JvdXRlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvaWRlbnRpdHknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzb2x2ZXJzL3JvbGVzLnJlc29sdmVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2lkZW50aXR5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdGVzL2lkZW50aXR5LnN0YXRlJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/fesm2015/abp-ng.identity.js b/npm/ng-packs/dist/identity/fesm2015/abp-ng.identity.js new file mode 100644 index 00000000000..85d377691ba --- /dev/null +++ b/npm/ng-packs/dist/identity/fesm2015/abp-ng.identity.js @@ -0,0 +1,1079 @@ +import { RestService, DynamicLayoutComponent, AuthGuard, PermissionGuard, CoreModule } from '@abp/ng.core'; +import { Injectable, ɵɵdefineInjectable, ɵɵinject, Component, ViewChild, NgModule } from '@angular/core'; +import { Action, Selector, State, Store, Select, NgxsModule } from '@ngxs/store'; +import { __decorate, __metadata } from 'tslib'; +import { Observable, Subject, combineLatest } from 'rxjs'; +import { Validators, FormBuilder } from '@angular/forms'; +import { tap, switchMap, pluck, debounceTime, filter, map, take } from 'rxjs/operators'; +import { ConfirmationService, ThemeSharedModule } from '@abp/ng.theme.shared'; +import { RouterModule } from '@angular/router'; +import { validatePassword, NgxValidateCoreModule } from '@ngx-validate/core'; +import snq from 'snq'; +import { NgbTabsetModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { PermissionManagementModule } from '@abp/ng.permission-management'; +import { TableModule } from 'primeng/table'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class IdentityGetRoles { +} +IdentityGetRoles.type = '[Identity] Get Roles'; +class IdentityGetRoleById { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityGetRoleById.type = '[Identity] Get Role By Id'; +class IdentityDeleteRole { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityDeleteRole.type = '[Identity] Delete Role'; +class IdentityAddRole { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityAddRole.type = '[Identity] Add Role'; +class IdentityUpdateRole { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityUpdateRole.type = '[Identity] Update Role'; +class IdentityGetUsers { + /** + * @param {?=} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityGetUsers.type = '[Identity] Get Users'; +class IdentityGetUserById { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityGetUserById.type = '[Identity] Get User By Id'; +class IdentityDeleteUser { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityDeleteUser.type = '[Identity] Delete User'; +class IdentityAddUser { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityAddUser.type = '[Identity] Add User'; +class IdentityUpdateUser { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityUpdateUser.type = '[Identity] Update User'; +class IdentityGetUserRoles { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +IdentityGetUserRoles.type = '[Identity] Get User Roles'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class IdentityService { + /** + * @param {?} rest + */ + constructor(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + getRoles() { + /** @type {?} */ + const request = { + method: 'GET', + url: '/api/identity/roles', + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + getRoleById(id) { + /** @type {?} */ + const request = { + method: 'GET', + url: `/api/identity/roles/${id}`, + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + deleteRole(id) { + /** @type {?} */ + const request = { + method: 'DELETE', + url: `/api/identity/roles/${id}`, + }; + return this.rest.request(request); + } + /** + * @param {?} body + * @return {?} + */ + addRole(body) { + /** @type {?} */ + const request = { + method: 'POST', + url: '/api/identity/roles', + body, + }; + return this.rest.request(request); + } + /** + * @param {?} body + * @return {?} + */ + updateRole(body) { + /** @type {?} */ + const url = `/api/identity/roles/${body.id}`; + delete body.id; + /** @type {?} */ + const request = { + method: 'PUT', + url, + body, + }; + return this.rest.request(request); + } + /** + * @param {?=} params + * @return {?} + */ + getUsers(params = (/** @type {?} */ ({}))) { + /** @type {?} */ + const request = { + method: 'GET', + url: '/api/identity/users', + params, + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + getUserById(id) { + /** @type {?} */ + const request = { + method: 'GET', + url: `/api/identity/users/${id}`, + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + getUserRoles(id) { + /** @type {?} */ + const request = { + method: 'GET', + url: `/api/identity/users/${id}/roles`, + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + deleteUser(id) { + /** @type {?} */ + const request = { + method: 'DELETE', + url: `/api/identity/users/${id}`, + }; + return this.rest.request(request); + } + /** + * @param {?} body + * @return {?} + */ + addUser(body) { + /** @type {?} */ + const request = { + method: 'POST', + url: '/api/identity/users', + body, + }; + return this.rest.request(request); + } + /** + * @param {?} body + * @return {?} + */ + updateUser(body) { + /** @type {?} */ + const url = `/identity/users/${body.id}`; + delete body.id; + /** @type {?} */ + const request = { + method: 'PUT', + url, + body, + }; + return this.rest.request(request); + } +} +IdentityService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +IdentityService.ctorParameters = () => [ + { type: RestService } +]; +/** @nocollapse */ IdentityService.ngInjectableDef = ɵɵdefineInjectable({ factory: function IdentityService_Factory() { return new IdentityService(ɵɵinject(RestService)); }, token: IdentityService, providedIn: "root" }); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +let IdentityState = class IdentityState { + /** + * @param {?} identityService + */ + constructor(identityService) { + this.identityService = identityService; + } + /** + * @param {?} __0 + * @return {?} + */ + static getRoles({ roles }) { + return roles.items; + } + /** + * @param {?} __0 + * @return {?} + */ + static getRolesTotalCount({ roles }) { + return roles.totalCount; + } + /** + * @param {?} __0 + * @return {?} + */ + static getUsers({ users }) { + return users.items; + } + /** + * @param {?} __0 + * @return {?} + */ + static getUsersTotalCount({ users }) { + return users.totalCount; + } + /** + * @param {?} __0 + * @return {?} + */ + getRoles({ patchState }) { + return this.identityService.getRoles().pipe(tap((/** + * @param {?} roles + * @return {?} + */ + roles => patchState({ + roles, + })))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + getRole({ patchState }, { payload }) { + return this.identityService.getRoleById(payload).pipe(tap((/** + * @param {?} selectedRole + * @return {?} + */ + selectedRole => patchState({ + selectedRole, + })))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + deleteRole({ dispatch }, { payload }) { + return this.identityService.deleteRole(payload).pipe(switchMap((/** + * @return {?} + */ + () => dispatch(new IdentityGetRoles())))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + addRole({ dispatch }, { payload }) { + return this.identityService.addRole(payload).pipe(switchMap((/** + * @return {?} + */ + () => dispatch(new IdentityGetRoles())))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + updateRole({ getState, dispatch }, { payload }) { + return dispatch(new IdentityGetRoleById(payload.id)).pipe(switchMap((/** + * @return {?} + */ + () => this.identityService.updateRole(Object.assign({}, getState().selectedRole, payload)))), switchMap((/** + * @return {?} + */ + () => dispatch(new IdentityGetRoles())))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + getUsers({ patchState }, { payload }) { + return this.identityService.getUsers(payload).pipe(tap((/** + * @param {?} users + * @return {?} + */ + users => patchState({ + users, + })))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + getUser({ patchState }, { payload }) { + return this.identityService.getUserById(payload).pipe(tap((/** + * @param {?} selectedUser + * @return {?} + */ + selectedUser => patchState({ + selectedUser, + })))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + deleteUser({ dispatch }, { payload }) { + return this.identityService.deleteUser(payload).pipe(switchMap((/** + * @return {?} + */ + () => dispatch(new IdentityGetUsers())))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + addUser({ dispatch }, { payload }) { + return this.identityService.addUser(payload).pipe(switchMap((/** + * @return {?} + */ + () => dispatch(new IdentityGetUsers())))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + updateUser({ getState, dispatch }, { payload }) { + return dispatch(new IdentityGetUserById(payload.id)).pipe(switchMap((/** + * @return {?} + */ + () => this.identityService.updateUser(Object.assign({}, getState().selectedUser, payload)))), switchMap((/** + * @return {?} + */ + () => dispatch(new IdentityGetUsers())))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + getUserRoles({ patchState }, { payload }) { + return this.identityService.getUserRoles(payload).pipe(pluck('items'), tap((/** + * @param {?} selectedUserRoles + * @return {?} + */ + selectedUserRoles => patchState({ + selectedUserRoles, + })))); + } +}; +__decorate([ + Action(IdentityGetRoles), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) +], IdentityState.prototype, "getRoles", null); +__decorate([ + Action(IdentityGetRoleById), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetRoleById]), + __metadata("design:returntype", void 0) +], IdentityState.prototype, "getRole", null); +__decorate([ + Action(IdentityDeleteRole), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetRoleById]), + __metadata("design:returntype", void 0) +], IdentityState.prototype, "deleteRole", null); +__decorate([ + Action(IdentityAddRole), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityAddRole]), + __metadata("design:returntype", void 0) +], IdentityState.prototype, "addRole", null); +__decorate([ + Action(IdentityUpdateRole), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityUpdateRole]), + __metadata("design:returntype", void 0) +], IdentityState.prototype, "updateRole", null); +__decorate([ + Action(IdentityGetUsers), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetUsers]), + __metadata("design:returntype", void 0) +], IdentityState.prototype, "getUsers", null); +__decorate([ + Action(IdentityGetUserById), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetUserById]), + __metadata("design:returntype", void 0) +], IdentityState.prototype, "getUser", null); +__decorate([ + Action(IdentityDeleteUser), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetUserById]), + __metadata("design:returntype", void 0) +], IdentityState.prototype, "deleteUser", null); +__decorate([ + Action(IdentityAddUser), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityAddUser]), + __metadata("design:returntype", void 0) +], IdentityState.prototype, "addUser", null); +__decorate([ + Action(IdentityUpdateUser), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityUpdateUser]), + __metadata("design:returntype", void 0) +], IdentityState.prototype, "updateUser", null); +__decorate([ + Action(IdentityGetUserRoles), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetUserRoles]), + __metadata("design:returntype", void 0) +], IdentityState.prototype, "getUserRoles", null); +__decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Array) +], IdentityState, "getRoles", null); +__decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Number) +], IdentityState, "getRolesTotalCount", null); +__decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Array) +], IdentityState, "getUsers", null); +__decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Number) +], IdentityState, "getUsersTotalCount", null); +IdentityState = __decorate([ + State({ + name: 'IdentityState', + defaults: (/** @type {?} */ ({ roles: {}, selectedRole: {}, users: {}, selectedUser: {} })), + }), + __metadata("design:paramtypes", [IdentityService]) +], IdentityState); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class RolesComponent { + /** + * @param {?} confirmationService + * @param {?} fb + * @param {?} store + */ + constructor(confirmationService, fb, store) { + this.confirmationService = confirmationService; + this.fb = fb; + this.store = store; + this.visiblePermissions = false; + } + /** + * @return {?} + */ + createForm() { + this.form = this.fb.group({ + name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]], + isDefault: [this.selected.isDefault || false], + isPublic: [this.selected.isPublic || false], + }); + } + /** + * @return {?} + */ + openModal() { + this.createForm(); + this.isModalVisible = true; + } + /** + * @return {?} + */ + onAdd() { + this.selected = (/** @type {?} */ ({})); + this.openModal(); + } + /** + * @param {?} id + * @return {?} + */ + onEdit(id) { + this.store + .dispatch(new IdentityGetRoleById(id)) + .pipe(pluck('IdentityState', 'selectedRole')) + .subscribe((/** + * @param {?} selectedRole + * @return {?} + */ + selectedRole => { + this.selected = selectedRole; + this.openModal(); + })); + } + /** + * @return {?} + */ + save() { + if (!this.form.valid) + return; + this.store + .dispatch(this.selected.id + ? new IdentityUpdateRole(Object.assign({}, this.form.value, { id: this.selected.id })) + : new IdentityAddRole(this.form.value)) + .subscribe((/** + * @return {?} + */ + () => { + this.isModalVisible = false; + })); + } + /** + * @param {?} id + * @param {?} name + * @return {?} + */ + delete(id, name) { + this.confirmationService + .warn('AbpIdentity::RoleDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', { + messageLocalizationParams: [name], + }) + .subscribe((/** + * @param {?} status + * @return {?} + */ + (status) => { + if (status === "confirm" /* confirm */) { + this.store.dispatch(new IdentityDeleteRole(id)); + } + })); + } +} +RolesComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-roles', + template: "
\n
\n
\n
\n
{{ 'AbpIdentity::Roles' | abpLocalization }}
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n {{ 'AbpIdentity::RoleName' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n \n
\n \n \n \n
\n
\n \n {{ data.name }}\n \n
\n
\n
\n
\n\n\n \n

{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}

\n
\n\n \n
\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n
\n\n \n \n \n \n
\n\n\n" + }] } +]; +/** @nocollapse */ +RolesComponent.ctorParameters = () => [ + { type: ConfirmationService }, + { type: FormBuilder }, + { type: Store } +]; +RolesComponent.propDecorators = { + modalContent: [{ type: ViewChild, args: ['modalContent', { static: false },] }] +}; +__decorate([ + Select(IdentityState.getRoles), + __metadata("design:type", Observable) +], RolesComponent.prototype, "roles$", void 0); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class RoleResolver { + /** + * @param {?} store + */ + constructor(store) { + this.store = store; + } + /** + * @return {?} + */ + resolve() { + /** @type {?} */ + const roles = this.store.selectSnapshot(IdentityState.getRoles); + return roles && roles.length ? null : this.store.dispatch(new IdentityGetRoles()); + } +} +RoleResolver.decorators = [ + { type: Injectable } +]; +/** @nocollapse */ +RoleResolver.ctorParameters = () => [ + { type: Store } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class UsersComponent { + /** + * @param {?} confirmationService + * @param {?} fb + * @param {?} store + */ + constructor(confirmationService, fb, store) { + this.confirmationService = confirmationService; + this.fb = fb; + this.store = store; + this.visiblePermissions = false; + this.pageQuery = { + sorting: 'userName', + }; + this.loading = false; + this.search$ = new Subject(); + this.trackByFn = (/** + * @param {?} index + * @param {?} item + * @return {?} + */ + (index, item) => Object.keys(item)[0] || index); + } + /** + * @return {?} + */ + get roleGroups() { + return snq((/** + * @return {?} + */ + () => (/** @type {?} */ (((/** @type {?} */ (this.form.get('roleNames')))).controls))), []); + } + /** + * @return {?} + */ + ngOnInit() { + this.search$.pipe(debounceTime(300)).subscribe((/** + * @param {?} value + * @return {?} + */ + value => { + this.pageQuery.filter = value; + this.get(); + })); + } + /** + * @return {?} + */ + buildForm() { + this.roles = this.store.selectSnapshot(IdentityState.getRoles); + this.form = this.fb.group({ + password: [ + '', + [ + Validators.required, + Validators.maxLength(32), + Validators.minLength(6), + validatePassword(['small', 'capital', 'number', 'special']), + ], + ], + userName: [this.selected.userName || '', [Validators.required, Validators.maxLength(256)]], + email: [this.selected.email || '', [Validators.required, Validators.email, Validators.maxLength(256)]], + name: [this.selected.name || '', [Validators.maxLength(64)]], + surname: [this.selected.surname || '', [Validators.maxLength(64)]], + phoneNumber: [this.selected.phoneNumber || '', [Validators.maxLength(16)]], + lockoutEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)], + twoFactorEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)], + roleNames: this.fb.array(this.roles.map((/** + * @param {?} role + * @return {?} + */ + role => this.fb.group({ + [role.name]: [!!snq((/** + * @return {?} + */ + () => this.selectedUserRoles.find((/** + * @param {?} userRole + * @return {?} + */ + userRole => userRole.id === role.id))))], + })))), + }); + } + /** + * @return {?} + */ + openModal() { + this.buildForm(); + this.isModalVisible = true; + } + /** + * @return {?} + */ + onAdd() { + this.selected = (/** @type {?} */ ({})); + this.selectedUserRoles = (/** @type {?} */ ([])); + this.openModal(); + } + /** + * @param {?} id + * @return {?} + */ + onEdit(id) { + combineLatest([this.store.dispatch(new IdentityGetUserById(id)), this.store.dispatch(new IdentityGetUserRoles(id))]) + .pipe(filter((/** + * @param {?} __0 + * @return {?} + */ + ([res1, res2]) => res1 && res2)), map((/** + * @param {?} __0 + * @return {?} + */ + ([state, _]) => state)), pluck('IdentityState'), take(1)) + .subscribe((/** + * @param {?} state + * @return {?} + */ + (state) => { + this.selected = state.selectedUser; + this.selectedUserRoles = state.selectedUserRoles; + this.openModal(); + })); + } + /** + * @return {?} + */ + save() { + if (!this.form.valid) + return; + const { roleNames } = this.form.value; + /** @type {?} */ + const mappedRoleNames = snq((/** + * @return {?} + */ + () => roleNames.filter((/** + * @param {?} role + * @return {?} + */ + role => !!role[Object.keys(role)[0]])).map((/** + * @param {?} role + * @return {?} + */ + role => Object.keys(role)[0]))), []); + this.store + .dispatch(this.selected.id + ? new IdentityUpdateUser(Object.assign({}, this.form.value, { id: this.selected.id, roleNames: mappedRoleNames })) + : new IdentityAddUser(Object.assign({}, this.form.value, { roleNames: mappedRoleNames }))) + .subscribe((/** + * @return {?} + */ + () => { + this.isModalVisible = false; + })); + } + /** + * @param {?} id + * @param {?} userName + * @return {?} + */ + delete(id, userName) { + this.confirmationService + .warn('AbpIdentity::UserDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', { + messageLocalizationParams: [userName], + }) + .subscribe((/** + * @param {?} status + * @return {?} + */ + (status) => { + if (status === "confirm" /* confirm */) { + this.store.dispatch(new IdentityDeleteUser(id)); + } + })); + } + /** + * @param {?} data + * @return {?} + */ + onPageChange(data) { + this.pageQuery.skipCount = data.first; + this.pageQuery.maxResultCount = data.rows; + this.get(); + } + /** + * @return {?} + */ + get() { + this.loading = true; + this.store.dispatch(new IdentityGetUsers(this.pageQuery)).subscribe((/** + * @return {?} + */ + () => (this.loading = false))); + } +} +UsersComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-users', + template: "
\n
\n
\n
\n
{{ 'AbpIdentity::Users' | abpLocalization }}
\n
\n
\n \n {{ 'AbpIdentity::NewUser' | abpLocalization }}\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n {{ 'AbpIdentity::UserName' | abpLocalization }}\n {{ 'AbpIdentity::EmailAddress' | abpLocalization }}\n {{ 'AbpIdentity::PhoneNumber' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n \n
\n \n \n \n
\n
\n \n {{ data.userName }}\n {{ data.email }}\n {{ data.phoneNumber }}\n \n
\n \n
\n
\n\n\n \n

{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}

\n
\n\n \n \n
\n \n \n \n
\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n \n \n
\n \n
\n
\n
\n
\n
\n
\n\n \n \n \n \n
\n\n\n" + }] } +]; +/** @nocollapse */ +UsersComponent.ctorParameters = () => [ + { type: ConfirmationService }, + { type: FormBuilder }, + { type: Store } +]; +UsersComponent.propDecorators = { + modalContent: [{ type: ViewChild, args: ['modalContent', { static: false },] }] +}; +__decorate([ + Select(IdentityState.getUsers), + __metadata("design:type", Observable) +], UsersComponent.prototype, "data$", void 0); +__decorate([ + Select(IdentityState.getUsersTotalCount), + __metadata("design:type", Observable) +], UsersComponent.prototype, "totalCount$", void 0); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class UserResolver { + /** + * @param {?} store + */ + constructor(store) { + this.store = store; + } + /** + * @return {?} + */ + resolve() { + /** @type {?} */ + const users = this.store.selectSnapshot(IdentityState.getUsers); + return users && users.length ? null : this.store.dispatch(new IdentityGetUsers()); + } +} +UserResolver.decorators = [ + { type: Injectable } +]; +/** @nocollapse */ +UserResolver.ctorParameters = () => [ + { type: Store } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +const ɵ0 = { requiredPolicy: 'AbpIdentity.Roles' }, ɵ1 = { requiredPolicy: 'AbpIdentity.Users' }; +/** @type {?} */ +const routes = [ + { path: '', redirectTo: 'roles', pathMatch: 'full' }, + { + path: 'roles', + component: DynamicLayoutComponent, + canActivate: [AuthGuard, PermissionGuard], + data: ɵ0, + children: [{ path: '', component: RolesComponent, resolve: [RoleResolver] }], + }, + { + path: 'users', + component: DynamicLayoutComponent, + canActivate: [AuthGuard, PermissionGuard], + data: ɵ1, + children: [ + { + path: '', + component: UsersComponent, + resolve: [RoleResolver, UserResolver], + }, + ], + }, +]; +class IdentityRoutingModule { +} +IdentityRoutingModule.decorators = [ + { type: NgModule, args: [{ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], + providers: [RoleResolver, UserResolver], + },] } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class IdentityModule { +} +IdentityModule.decorators = [ + { type: NgModule, args: [{ + declarations: [RolesComponent, UsersComponent], + imports: [ + NgxsModule.forFeature([IdentityState]), + CoreModule, + IdentityRoutingModule, + NgbTabsetModule, + ThemeSharedModule, + TableModule, + NgbDropdownModule, + PermissionManagementModule, + NgxValidateCoreModule, + PerfectScrollbarModule, + ], + },] } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +const IDENTITY_ROUTES = (/** @type {?} */ ([ + { + name: 'Administration', + path: '', + order: 1, + wrapper: true, + }, + { + name: 'Identity', + path: 'identity', + order: 1, + parentName: 'Administration', + layout: "application" /* application */, + children: [ + { path: 'roles', name: 'Roles', order: 2, requiredPolicy: 'AbpIdentity.Roles' }, + { path: 'users', name: 'Users', order: 1, requiredPolicy: 'AbpIdentity.Users' }, + ], + }, +])); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var Identity; +(function (Identity) { + /** + * @record + */ + function State() { } + Identity.State = State; + /** + * @record + */ + function RoleSaveRequest() { } + Identity.RoleSaveRequest = RoleSaveRequest; + /** + * @record + */ + function RoleItem() { } + Identity.RoleItem = RoleItem; + /** + * @record + */ + function UserItem() { } + Identity.UserItem = UserItem; + /** + * @record + */ + function User() { } + Identity.User = User; + /** + * @record + */ + function UserSaveRequest() { } + Identity.UserSaveRequest = UserSaveRequest; +})(Identity || (Identity = {})); + +export { IDENTITY_ROUTES, IdentityAddRole, IdentityAddUser, IdentityDeleteRole, IdentityDeleteUser, IdentityGetRoleById, IdentityGetRoles, IdentityGetUserById, IdentityGetUserRoles, IdentityGetUsers, IdentityModule, IdentityService, IdentityState, IdentityUpdateRole, IdentityUpdateUser, RoleResolver, RolesComponent, UsersComponent as ɵb, IdentityRoutingModule as ɵc, UserResolver as ɵd }; +//# sourceMappingURL=abp-ng.identity.js.map diff --git a/npm/ng-packs/dist/identity/fesm2015/abp-ng.identity.js.map b/npm/ng-packs/dist/identity/fesm2015/abp-ng.identity.js.map new file mode 100644 index 00000000000..9cb4ffc10df --- /dev/null +++ b/npm/ng-packs/dist/identity/fesm2015/abp-ng.identity.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.identity.js","sources":["ng://@abp/ng.identity/lib/actions/identity.actions.ts","ng://@abp/ng.identity/lib/services/identity.service.ts","ng://@abp/ng.identity/lib/states/identity.state.ts","ng://@abp/ng.identity/lib/components/roles/roles.component.ts","ng://@abp/ng.identity/lib/resolvers/roles.resolver.ts","ng://@abp/ng.identity/lib/components/users/users.component.ts","ng://@abp/ng.identity/lib/resolvers/users.resolver.ts","ng://@abp/ng.identity/lib/identity-routing.module.ts","ng://@abp/ng.identity/lib/identity.module.ts","ng://@abp/ng.identity/lib/constants/routes.ts","ng://@abp/ng.identity/lib/models/identity.ts"],"sourcesContent":["import { Identity } from '../models/identity';\nimport { ABP } from '@abp/ng.core';\n\nexport class IdentityGetRoles {\n static readonly type = '[Identity] Get Roles';\n}\n\nexport class IdentityGetRoleById {\n static readonly type = '[Identity] Get Role By Id';\n constructor(public payload: string) {}\n}\n\nexport class IdentityDeleteRole {\n static readonly type = '[Identity] Delete Role';\n constructor(public payload: string) {}\n}\n\nexport class IdentityAddRole {\n static readonly type = '[Identity] Add Role';\n constructor(public payload: Identity.RoleSaveRequest) {}\n}\n\nexport class IdentityUpdateRole {\n static readonly type = '[Identity] Update Role';\n constructor(public payload: Identity.RoleItem) {}\n}\n\nexport class IdentityGetUsers {\n static readonly type = '[Identity] Get Users';\n constructor(public payload?: ABP.PageQueryParams) {}\n}\n\nexport class IdentityGetUserById {\n static readonly type = '[Identity] Get User By Id';\n constructor(public payload: string) {}\n}\n\nexport class IdentityDeleteUser {\n static readonly type = '[Identity] Delete User';\n constructor(public payload: string) {}\n}\n\nexport class IdentityAddUser {\n static readonly type = '[Identity] Add User';\n constructor(public payload: Identity.UserSaveRequest) {}\n}\n\nexport class IdentityUpdateUser {\n static readonly type = '[Identity] Update User';\n constructor(public payload: Identity.UserSaveRequest & { id: string }) {}\n}\n\nexport class IdentityGetUserRoles {\n static readonly type = '[Identity] Get User Roles';\n constructor(public payload: string) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RestService, Rest, ABP } from '@abp/ng.core';\nimport { Identity } from '../models/identity';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IdentityService {\n constructor(private rest: RestService) {}\n\n getRoles(): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/identity/roles',\n };\n\n return this.rest.request(request);\n }\n\n getRoleById(id: string): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: `/api/identity/roles/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n deleteRole(id: string): Observable {\n const request: Rest.Request = {\n method: 'DELETE',\n url: `/api/identity/roles/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n addRole(body: Identity.RoleSaveRequest): Observable {\n const request: Rest.Request = {\n method: 'POST',\n url: '/api/identity/roles',\n body,\n };\n\n return this.rest.request(request);\n }\n\n updateRole(body: Identity.RoleItem): Observable {\n const url = `/api/identity/roles/${body.id}`;\n delete body.id;\n\n const request: Rest.Request = {\n method: 'PUT',\n url,\n body,\n };\n\n return this.rest.request(request);\n }\n\n getUsers(params = {} as ABP.PageQueryParams): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/identity/users',\n params,\n };\n\n return this.rest.request(request);\n }\n\n getUserById(id: string): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: `/api/identity/users/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n getUserRoles(id: string): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: `/api/identity/users/${id}/roles`,\n };\n\n return this.rest.request(request);\n }\n\n deleteUser(id: string): Observable {\n const request: Rest.Request = {\n method: 'DELETE',\n url: `/api/identity/users/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n addUser(body: Identity.UserSaveRequest): Observable {\n const request: Rest.Request = {\n method: 'POST',\n url: '/api/identity/users',\n body,\n };\n\n return this.rest.request(request);\n }\n\n updateUser(body: Identity.UserItem): Observable {\n const url = `/identity/users/${body.id}`;\n delete body.id;\n\n const request: Rest.Request = {\n method: 'PUT',\n url,\n body,\n };\n\n return this.rest.request(request);\n }\n}\n","import { Action, Selector, State, StateContext } from '@ngxs/store';\nimport { switchMap, tap, pluck } from 'rxjs/operators';\nimport {\n IdentityAddRole,\n IdentityAddUser,\n IdentityDeleteRole,\n IdentityDeleteUser,\n IdentityGetRoleById,\n IdentityGetRoles,\n IdentityGetUserById,\n IdentityGetUsers,\n IdentityUpdateRole,\n IdentityUpdateUser,\n IdentityGetUserRoles,\n} from '../actions/identity.actions';\nimport { Identity } from '../models/identity';\nimport { IdentityService } from '../services/identity.service';\n\n@State({\n name: 'IdentityState',\n defaults: { roles: {}, selectedRole: {}, users: {}, selectedUser: {} } as Identity.State,\n})\nexport class IdentityState {\n @Selector()\n static getRoles({ roles }: Identity.State): Identity.RoleItem[] {\n return roles.items;\n }\n\n @Selector()\n static getRolesTotalCount({ roles }: Identity.State): number {\n return roles.totalCount;\n }\n\n @Selector()\n static getUsers({ users }: Identity.State): Identity.UserItem[] {\n return users.items;\n }\n\n @Selector()\n static getUsersTotalCount({ users }: Identity.State): number {\n return users.totalCount;\n }\n\n constructor(private identityService: IdentityService) {}\n\n @Action(IdentityGetRoles)\n getRoles({ patchState }: StateContext) {\n return this.identityService.getRoles().pipe(\n tap(roles =>\n patchState({\n roles,\n }),\n ),\n );\n }\n\n @Action(IdentityGetRoleById)\n getRole({ patchState }: StateContext, { payload }: IdentityGetRoleById) {\n return this.identityService.getRoleById(payload).pipe(\n tap(selectedRole =>\n patchState({\n selectedRole,\n }),\n ),\n );\n }\n\n @Action(IdentityDeleteRole)\n deleteRole({ dispatch }: StateContext, { payload }: IdentityGetRoleById) {\n return this.identityService.deleteRole(payload).pipe(switchMap(() => dispatch(new IdentityGetRoles())));\n }\n\n @Action(IdentityAddRole)\n addRole({ dispatch }: StateContext, { payload }: IdentityAddRole) {\n return this.identityService.addRole(payload).pipe(switchMap(() => dispatch(new IdentityGetRoles())));\n }\n\n @Action(IdentityUpdateRole)\n updateRole({ getState, dispatch }: StateContext, { payload }: IdentityUpdateRole) {\n return dispatch(new IdentityGetRoleById(payload.id)).pipe(\n switchMap(() => this.identityService.updateRole({ ...getState().selectedRole, ...payload })),\n switchMap(() => dispatch(new IdentityGetRoles())),\n );\n }\n\n @Action(IdentityGetUsers)\n getUsers({ patchState }: StateContext, { payload }: IdentityGetUsers) {\n return this.identityService.getUsers(payload).pipe(\n tap(users =>\n patchState({\n users,\n }),\n ),\n );\n }\n\n @Action(IdentityGetUserById)\n getUser({ patchState }: StateContext, { payload }: IdentityGetUserById) {\n return this.identityService.getUserById(payload).pipe(\n tap(selectedUser =>\n patchState({\n selectedUser,\n }),\n ),\n );\n }\n\n @Action(IdentityDeleteUser)\n deleteUser({ dispatch }: StateContext, { payload }: IdentityGetUserById) {\n return this.identityService.deleteUser(payload).pipe(switchMap(() => dispatch(new IdentityGetUsers())));\n }\n\n @Action(IdentityAddUser)\n addUser({ dispatch }: StateContext, { payload }: IdentityAddUser) {\n return this.identityService.addUser(payload).pipe(switchMap(() => dispatch(new IdentityGetUsers())));\n }\n\n @Action(IdentityUpdateUser)\n updateUser({ getState, dispatch }: StateContext, { payload }: IdentityUpdateUser) {\n return dispatch(new IdentityGetUserById(payload.id)).pipe(\n switchMap(() => this.identityService.updateUser({ ...getState().selectedUser, ...payload })),\n switchMap(() => dispatch(new IdentityGetUsers())),\n );\n }\n\n @Action(IdentityGetUserRoles)\n getUserRoles({ patchState }: StateContext, { payload }: IdentityGetUserRoles) {\n return this.identityService.getUserRoles(payload).pipe(\n pluck('items'),\n tap(selectedUserRoles =>\n patchState({\n selectedUserRoles,\n }),\n ),\n );\n }\n}\n","import { Component, TemplateRef, ViewChild } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { IdentityState } from '../../states/identity.state';\nimport { Identity } from '../../models/identity';\nimport {\n IdentityUpdateRole,\n IdentityAddRole,\n IdentityDeleteRole,\n IdentityGetRoleById,\n} from '../../actions/identity.actions';\nimport { pluck } from 'rxjs/operators';\nimport { ConfirmationService, Toaster } from '@abp/ng.theme.shared';\n\n@Component({\n selector: 'abp-roles',\n templateUrl: './roles.component.html',\n})\nexport class RolesComponent {\n @Select(IdentityState.getRoles)\n roles$: Observable;\n\n form: FormGroup;\n\n selected: Identity.RoleItem;\n\n isModalVisible: boolean;\n\n visiblePermissions: boolean = false;\n\n providerKey: string;\n\n @ViewChild('modalContent', { static: false })\n modalContent: TemplateRef;\n\n constructor(private confirmationService: ConfirmationService, private fb: FormBuilder, private store: Store) {}\n\n createForm() {\n this.form = this.fb.group({\n name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]],\n isDefault: [this.selected.isDefault || false],\n isPublic: [this.selected.isPublic || false],\n });\n }\n\n openModal() {\n this.createForm();\n this.isModalVisible = true;\n }\n\n onAdd() {\n this.selected = {} as Identity.RoleItem;\n this.openModal();\n }\n\n onEdit(id: string) {\n this.store\n .dispatch(new IdentityGetRoleById(id))\n .pipe(pluck('IdentityState', 'selectedRole'))\n .subscribe(selectedRole => {\n this.selected = selectedRole;\n this.openModal();\n });\n }\n\n save() {\n if (!this.form.valid) return;\n\n this.store\n .dispatch(\n this.selected.id\n ? new IdentityUpdateRole({ ...this.form.value, id: this.selected.id })\n : new IdentityAddRole(this.form.value),\n )\n .subscribe(() => {\n this.isModalVisible = false;\n });\n }\n\n delete(id: string, name: string) {\n this.confirmationService\n .warn('AbpIdentity::RoleDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\n messageLocalizationParams: [name],\n })\n .subscribe((status: Toaster.Status) => {\n if (status === Toaster.Status.confirm) {\n this.store.dispatch(new IdentityDeleteRole(id));\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Resolve } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { IdentityGetRoles } from '../actions/identity.actions';\nimport { Identity } from '../models/identity';\nimport { IdentityState } from '../states/identity.state';\n\n@Injectable()\nexport class RoleResolver implements Resolve {\n constructor(private store: Store) {}\n\n resolve() {\n const roles = this.store.selectSnapshot(IdentityState.getRoles);\n return roles && roles.length ? null : this.store.dispatch(new IdentityGetRoles());\n }\n}\n","import { ABP } from '@abp/ng.core';\nimport { ConfirmationService, Toaster } from '@abp/ng.theme.shared';\nimport { Component, OnInit, TemplateRef, TrackByFunction, ViewChild } from '@angular/core';\nimport { AbstractControl, FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { validatePassword } from '@ngx-validate/core';\nimport { Select, Store } from '@ngxs/store';\nimport { combineLatest, Observable, Subject } from 'rxjs';\nimport { debounceTime, filter, map, pluck, take } from 'rxjs/operators';\nimport snq from 'snq';\nimport {\n IdentityAddUser,\n IdentityDeleteUser,\n IdentityGetUserById,\n IdentityGetUserRoles,\n IdentityGetUsers,\n IdentityUpdateUser,\n} from '../../actions/identity.actions';\nimport { Identity } from '../../models/identity';\nimport { IdentityState } from '../../states/identity.state';\n@Component({\n selector: 'abp-users',\n templateUrl: './users.component.html',\n})\nexport class UsersComponent implements OnInit {\n @Select(IdentityState.getUsers)\n data$: Observable;\n\n @Select(IdentityState.getUsersTotalCount)\n totalCount$: Observable;\n\n @ViewChild('modalContent', { static: false })\n modalContent: TemplateRef;\n\n form: FormGroup;\n\n selected: Identity.UserItem;\n\n selectedUserRoles: Identity.RoleItem[];\n\n roles: Identity.RoleItem[];\n\n visiblePermissions: boolean = false;\n\n providerKey: string;\n\n pageQuery: ABP.PageQueryParams = {\n sorting: 'userName',\n };\n\n isModalVisible: boolean;\n\n loading: boolean = false;\n\n search$ = new Subject();\n\n trackByFn: TrackByFunction = (index, item) => Object.keys(item)[0] || index;\n\n get roleGroups(): FormGroup[] {\n return snq(() => (this.form.get('roleNames') as FormArray).controls as FormGroup[], []);\n }\n\n constructor(private confirmationService: ConfirmationService, private fb: FormBuilder, private store: Store) {}\n\n ngOnInit() {\n this.search$.pipe(debounceTime(300)).subscribe(value => {\n this.pageQuery.filter = value;\n this.get();\n });\n }\n\n buildForm() {\n this.roles = this.store.selectSnapshot(IdentityState.getRoles);\n\n this.form = this.fb.group({\n password: [\n '',\n [\n Validators.required,\n Validators.maxLength(32),\n Validators.minLength(6),\n validatePassword(['small', 'capital', 'number', 'special']),\n ],\n ],\n userName: [this.selected.userName || '', [Validators.required, Validators.maxLength(256)]],\n email: [this.selected.email || '', [Validators.required, Validators.email, Validators.maxLength(256)]],\n name: [this.selected.name || '', [Validators.maxLength(64)]],\n surname: [this.selected.surname || '', [Validators.maxLength(64)]],\n phoneNumber: [this.selected.phoneNumber || '', [Validators.maxLength(16)]],\n lockoutEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)],\n twoFactorEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)],\n roleNames: this.fb.array(\n this.roles.map(role =>\n this.fb.group({\n [role.name]: [!!snq(() => this.selectedUserRoles.find(userRole => userRole.id === role.id))],\n }),\n ),\n ),\n });\n }\n\n openModal() {\n this.buildForm();\n this.isModalVisible = true;\n }\n\n onAdd() {\n this.selected = {} as Identity.UserItem;\n this.selectedUserRoles = [] as Identity.RoleItem[];\n this.openModal();\n }\n\n onEdit(id: string) {\n combineLatest([this.store.dispatch(new IdentityGetUserById(id)), this.store.dispatch(new IdentityGetUserRoles(id))])\n .pipe(\n filter(([res1, res2]) => res1 && res2),\n map(([state, _]) => state),\n pluck('IdentityState'),\n take(1),\n )\n .subscribe((state: Identity.State) => {\n this.selected = state.selectedUser;\n this.selectedUserRoles = state.selectedUserRoles;\n this.openModal();\n });\n }\n\n save() {\n if (!this.form.valid) return;\n\n const { roleNames } = this.form.value;\n const mappedRoleNames = snq(\n () => roleNames.filter(role => !!role[Object.keys(role)[0]]).map(role => Object.keys(role)[0]),\n [],\n );\n\n this.store\n .dispatch(\n this.selected.id\n ? new IdentityUpdateUser({\n ...this.form.value,\n id: this.selected.id,\n roleNames: mappedRoleNames,\n })\n : new IdentityAddUser({\n ...this.form.value,\n roleNames: mappedRoleNames,\n }),\n )\n .subscribe(() => {\n this.isModalVisible = false;\n });\n }\n\n delete(id: string, userName: string) {\n this.confirmationService\n .warn('AbpIdentity::UserDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\n messageLocalizationParams: [userName],\n })\n .subscribe((status: Toaster.Status) => {\n if (status === Toaster.Status.confirm) {\n this.store.dispatch(new IdentityDeleteUser(id));\n }\n });\n }\n\n onPageChange(data) {\n this.pageQuery.skipCount = data.first;\n this.pageQuery.maxResultCount = data.rows;\n\n this.get();\n }\n\n get() {\n this.loading = true;\n this.store.dispatch(new IdentityGetUsers(this.pageQuery)).subscribe(() => (this.loading = false));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Resolve } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { IdentityGetUsers } from '../actions/identity.actions';\nimport { Identity } from '../models/identity';\nimport { IdentityState } from '../states/identity.state';\n\n@Injectable()\nexport class UserResolver implements Resolve {\n constructor(private store: Store) {}\n\n resolve() {\n const users = this.store.selectSnapshot(IdentityState.getUsers);\n return users && users.length ? null : this.store.dispatch(new IdentityGetUsers());\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { RolesComponent } from './components/roles/roles.component';\nimport { RoleResolver } from './resolvers/roles.resolver';\nimport { DynamicLayoutComponent, AuthGuard, PermissionGuard } from '@abp/ng.core';\nimport { UsersComponent } from './components/users/users.component';\nimport { UserResolver } from './resolvers/users.resolver';\n\nconst routes: Routes = [\n { path: '', redirectTo: 'roles', pathMatch: 'full' },\n {\n path: 'roles',\n component: DynamicLayoutComponent,\n canActivate: [AuthGuard, PermissionGuard],\n data: { requiredPolicy: 'AbpIdentity.Roles' },\n children: [{ path: '', component: RolesComponent, resolve: [RoleResolver] }],\n },\n {\n path: 'users',\n component: DynamicLayoutComponent,\n canActivate: [AuthGuard, PermissionGuard],\n data: { requiredPolicy: 'AbpIdentity.Users' },\n children: [\n {\n path: '',\n component: UsersComponent,\n resolve: [RoleResolver, UserResolver],\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n providers: [RoleResolver, UserResolver],\n})\nexport class IdentityRoutingModule {}\n","import { CoreModule } from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { NgxsModule } from '@ngxs/store';\nimport { RolesComponent } from './components/roles/roles.component';\nimport { IdentityRoutingModule } from './identity-routing.module';\nimport { IdentityState } from './states/identity.state';\nimport { NgbTabsetModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { UsersComponent } from './components/users/users.component';\nimport { PermissionManagementModule } from '@abp/ng.permission-management';\nimport { TableModule } from 'primeng/table';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';\n\n@NgModule({\n declarations: [RolesComponent, UsersComponent],\n imports: [\n NgxsModule.forFeature([IdentityState]),\n CoreModule,\n IdentityRoutingModule,\n NgbTabsetModule,\n ThemeSharedModule,\n TableModule,\n NgbDropdownModule,\n PermissionManagementModule,\n NgxValidateCoreModule,\n PerfectScrollbarModule,\n ],\n})\nexport class IdentityModule {}\n","import { eLayoutType, ABP } from '@abp/ng.core';\n\nexport const IDENTITY_ROUTES = [\n {\n name: 'Administration',\n path: '',\n order: 1,\n wrapper: true,\n },\n {\n name: 'Identity',\n path: 'identity',\n order: 1,\n parentName: 'Administration',\n layout: eLayoutType.application,\n children: [\n { path: 'roles', name: 'Roles', order: 2, requiredPolicy: 'AbpIdentity.Roles' },\n { path: 'users', name: 'Users', order: 1, requiredPolicy: 'AbpIdentity.Users' },\n ],\n },\n] as ABP.FullRoute[];\n","import { ABP } from '@abp/ng.core';\n\nexport namespace Identity {\n export interface State {\n roles: RoleResponse;\n users: UserResponse;\n selectedRole: RoleItem;\n selectedUser: UserItem;\n selectedUserRoles: RoleItem[];\n }\n\n export type RoleResponse = ABP.PagedResponse;\n\n export interface RoleSaveRequest {\n name: string;\n isDefault: boolean;\n isPublic: boolean;\n }\n\n export interface RoleItem extends RoleSaveRequest {\n isStatic: boolean;\n concurrencyStamp: string;\n id: string;\n }\n\n export type UserResponse = ABP.PagedResponse;\n\n export interface UserItem extends User {\n tenantId: string;\n emailConfirmed: boolean;\n phoneNumberConfirmed: boolean;\n isLockedOut: boolean;\n concurrencyStamp: string;\n id: string;\n }\n\n export interface User {\n userName: string;\n name: string;\n surname: string;\n email: string;\n phoneNumber: string;\n twoFactorEnabled: true;\n lockoutEnabled: true;\n }\n\n export interface UserSaveRequest extends User {\n password: string;\n roleNames: string[];\n }\n}\n"],"names":["tslib_1.__decorate"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/fesm5/abp-ng.identity.js b/npm/ng-packs/dist/identity/fesm5/abp-ng.identity.js new file mode 100644 index 00000000000..8d37e646684 --- /dev/null +++ b/npm/ng-packs/dist/identity/fesm5/abp-ng.identity.js @@ -0,0 +1,1284 @@ +import { RestService, DynamicLayoutComponent, AuthGuard, PermissionGuard, CoreModule } from '@abp/ng.core'; +import { Injectable, ɵɵdefineInjectable, ɵɵinject, Component, ViewChild, NgModule } from '@angular/core'; +import { Action, Selector, State, Store, Select, NgxsModule } from '@ngxs/store'; +import { __assign, __decorate, __metadata, __read } from 'tslib'; +import { Observable, combineLatest, Subject } from 'rxjs'; +import { Validators, FormBuilder } from '@angular/forms'; +import { tap, switchMap, pluck, debounceTime, filter, map, take } from 'rxjs/operators'; +import { ConfirmationService, ThemeSharedModule } from '@abp/ng.theme.shared'; +import { RouterModule } from '@angular/router'; +import { validatePassword, NgxValidateCoreModule } from '@ngx-validate/core'; +import snq from 'snq'; +import { NgbTabsetModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { PermissionManagementModule } from '@abp/ng.permission-management'; +import { TableModule } from 'primeng/table'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var IdentityGetRoles = /** @class */ (function () { + function IdentityGetRoles() { + } + IdentityGetRoles.type = '[Identity] Get Roles'; + return IdentityGetRoles; +}()); +var IdentityGetRoleById = /** @class */ (function () { + function IdentityGetRoleById(payload) { + this.payload = payload; + } + IdentityGetRoleById.type = '[Identity] Get Role By Id'; + return IdentityGetRoleById; +}()); +var IdentityDeleteRole = /** @class */ (function () { + function IdentityDeleteRole(payload) { + this.payload = payload; + } + IdentityDeleteRole.type = '[Identity] Delete Role'; + return IdentityDeleteRole; +}()); +var IdentityAddRole = /** @class */ (function () { + function IdentityAddRole(payload) { + this.payload = payload; + } + IdentityAddRole.type = '[Identity] Add Role'; + return IdentityAddRole; +}()); +var IdentityUpdateRole = /** @class */ (function () { + function IdentityUpdateRole(payload) { + this.payload = payload; + } + IdentityUpdateRole.type = '[Identity] Update Role'; + return IdentityUpdateRole; +}()); +var IdentityGetUsers = /** @class */ (function () { + function IdentityGetUsers(payload) { + this.payload = payload; + } + IdentityGetUsers.type = '[Identity] Get Users'; + return IdentityGetUsers; +}()); +var IdentityGetUserById = /** @class */ (function () { + function IdentityGetUserById(payload) { + this.payload = payload; + } + IdentityGetUserById.type = '[Identity] Get User By Id'; + return IdentityGetUserById; +}()); +var IdentityDeleteUser = /** @class */ (function () { + function IdentityDeleteUser(payload) { + this.payload = payload; + } + IdentityDeleteUser.type = '[Identity] Delete User'; + return IdentityDeleteUser; +}()); +var IdentityAddUser = /** @class */ (function () { + function IdentityAddUser(payload) { + this.payload = payload; + } + IdentityAddUser.type = '[Identity] Add User'; + return IdentityAddUser; +}()); +var IdentityUpdateUser = /** @class */ (function () { + function IdentityUpdateUser(payload) { + this.payload = payload; + } + IdentityUpdateUser.type = '[Identity] Update User'; + return IdentityUpdateUser; +}()); +var IdentityGetUserRoles = /** @class */ (function () { + function IdentityGetUserRoles(payload) { + this.payload = payload; + } + IdentityGetUserRoles.type = '[Identity] Get User Roles'; + return IdentityGetUserRoles; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var IdentityService = /** @class */ (function () { + function IdentityService(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + IdentityService.prototype.getRoles = /** + * @return {?} + */ + function () { + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/identity/roles', + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + IdentityService.prototype.getRoleById = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'GET', + url: "/api/identity/roles/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + IdentityService.prototype.deleteRole = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'DELETE', + url: "/api/identity/roles/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + IdentityService.prototype.addRole = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var request = { + method: 'POST', + url: '/api/identity/roles', + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + IdentityService.prototype.updateRole = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var url = "/api/identity/roles/" + body.id; + delete body.id; + /** @type {?} */ + var request = { + method: 'PUT', + url: url, + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?=} params + * @return {?} + */ + IdentityService.prototype.getUsers = /** + * @param {?=} params + * @return {?} + */ + function (params) { + if (params === void 0) { params = (/** @type {?} */ ({})); } + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/identity/users', + params: params, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + IdentityService.prototype.getUserById = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'GET', + url: "/api/identity/users/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + IdentityService.prototype.getUserRoles = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'GET', + url: "/api/identity/users/" + id + "/roles", + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + IdentityService.prototype.deleteUser = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'DELETE', + url: "/api/identity/users/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + IdentityService.prototype.addUser = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var request = { + method: 'POST', + url: '/api/identity/users', + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + IdentityService.prototype.updateUser = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var url = "/identity/users/" + body.id; + delete body.id; + /** @type {?} */ + var request = { + method: 'PUT', + url: url, + body: body, + }; + return this.rest.request(request); + }; + IdentityService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + IdentityService.ctorParameters = function () { return [ + { type: RestService } + ]; }; + /** @nocollapse */ IdentityService.ngInjectableDef = ɵɵdefineInjectable({ factory: function IdentityService_Factory() { return new IdentityService(ɵɵinject(RestService)); }, token: IdentityService, providedIn: "root" }); + return IdentityService; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var IdentityState = /** @class */ (function () { + function IdentityState(identityService) { + this.identityService = identityService; + } + /** + * @param {?} __0 + * @return {?} + */ + IdentityState.getRoles = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var roles = _a.roles; + return roles.items; + }; + /** + * @param {?} __0 + * @return {?} + */ + IdentityState.getRolesTotalCount = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var roles = _a.roles; + return roles.totalCount; + }; + /** + * @param {?} __0 + * @return {?} + */ + IdentityState.getUsers = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var users = _a.users; + return users.items; + }; + /** + * @param {?} __0 + * @return {?} + */ + IdentityState.getUsersTotalCount = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var users = _a.users; + return users.totalCount; + }; + /** + * @param {?} __0 + * @return {?} + */ + IdentityState.prototype.getRoles = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var patchState = _a.patchState; + return this.identityService.getRoles().pipe(tap((/** + * @param {?} roles + * @return {?} + */ + function (roles) { + return patchState({ + roles: roles, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.getRole = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.identityService.getRoleById(payload).pipe(tap((/** + * @param {?} selectedRole + * @return {?} + */ + function (selectedRole) { + return patchState({ + selectedRole: selectedRole, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.deleteRole = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.identityService.deleteRole(payload).pipe(switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetRoles()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.addRole = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.identityService.addRole(payload).pipe(switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetRoles()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.updateRole = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var _this = this; + var getState = _a.getState, dispatch = _a.dispatch; + var payload = _b.payload; + return dispatch(new IdentityGetRoleById(payload.id)).pipe(switchMap((/** + * @return {?} + */ + function () { return _this.identityService.updateRole(__assign({}, getState().selectedRole, payload)); })), switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetRoles()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.getUsers = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.identityService.getUsers(payload).pipe(tap((/** + * @param {?} users + * @return {?} + */ + function (users) { + return patchState({ + users: users, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.getUser = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.identityService.getUserById(payload).pipe(tap((/** + * @param {?} selectedUser + * @return {?} + */ + function (selectedUser) { + return patchState({ + selectedUser: selectedUser, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.deleteUser = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.identityService.deleteUser(payload).pipe(switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetUsers()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.addUser = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.identityService.addUser(payload).pipe(switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetUsers()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.updateUser = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var _this = this; + var getState = _a.getState, dispatch = _a.dispatch; + var payload = _b.payload; + return dispatch(new IdentityGetUserById(payload.id)).pipe(switchMap((/** + * @return {?} + */ + function () { return _this.identityService.updateUser(__assign({}, getState().selectedUser, payload)); })), switchMap((/** + * @return {?} + */ + function () { return dispatch(new IdentityGetUsers()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + IdentityState.prototype.getUserRoles = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.identityService.getUserRoles(payload).pipe(pluck('items'), tap((/** + * @param {?} selectedUserRoles + * @return {?} + */ + function (selectedUserRoles) { + return patchState({ + selectedUserRoles: selectedUserRoles, + }); + }))); + }; + __decorate([ + Action(IdentityGetRoles), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "getRoles", null); + __decorate([ + Action(IdentityGetRoleById), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetRoleById]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "getRole", null); + __decorate([ + Action(IdentityDeleteRole), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetRoleById]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "deleteRole", null); + __decorate([ + Action(IdentityAddRole), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityAddRole]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "addRole", null); + __decorate([ + Action(IdentityUpdateRole), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityUpdateRole]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "updateRole", null); + __decorate([ + Action(IdentityGetUsers), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetUsers]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "getUsers", null); + __decorate([ + Action(IdentityGetUserById), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetUserById]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "getUser", null); + __decorate([ + Action(IdentityDeleteUser), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetUserById]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "deleteUser", null); + __decorate([ + Action(IdentityAddUser), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityAddUser]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "addUser", null); + __decorate([ + Action(IdentityUpdateUser), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityUpdateUser]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "updateUser", null); + __decorate([ + Action(IdentityGetUserRoles), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, IdentityGetUserRoles]), + __metadata("design:returntype", void 0) + ], IdentityState.prototype, "getUserRoles", null); + __decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Array) + ], IdentityState, "getRoles", null); + __decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Number) + ], IdentityState, "getRolesTotalCount", null); + __decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Array) + ], IdentityState, "getUsers", null); + __decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Number) + ], IdentityState, "getUsersTotalCount", null); + IdentityState = __decorate([ + State({ + name: 'IdentityState', + defaults: (/** @type {?} */ ({ roles: {}, selectedRole: {}, users: {}, selectedUser: {} })), + }), + __metadata("design:paramtypes", [IdentityService]) + ], IdentityState); + return IdentityState; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var RolesComponent = /** @class */ (function () { + function RolesComponent(confirmationService, fb, store) { + this.confirmationService = confirmationService; + this.fb = fb; + this.store = store; + this.visiblePermissions = false; + } + /** + * @return {?} + */ + RolesComponent.prototype.createForm = /** + * @return {?} + */ + function () { + this.form = this.fb.group({ + name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]], + isDefault: [this.selected.isDefault || false], + isPublic: [this.selected.isPublic || false], + }); + }; + /** + * @return {?} + */ + RolesComponent.prototype.openModal = /** + * @return {?} + */ + function () { + this.createForm(); + this.isModalVisible = true; + }; + /** + * @return {?} + */ + RolesComponent.prototype.onAdd = /** + * @return {?} + */ + function () { + this.selected = (/** @type {?} */ ({})); + this.openModal(); + }; + /** + * @param {?} id + * @return {?} + */ + RolesComponent.prototype.onEdit = /** + * @param {?} id + * @return {?} + */ + function (id) { + var _this = this; + this.store + .dispatch(new IdentityGetRoleById(id)) + .pipe(pluck('IdentityState', 'selectedRole')) + .subscribe((/** + * @param {?} selectedRole + * @return {?} + */ + function (selectedRole) { + _this.selected = selectedRole; + _this.openModal(); + })); + }; + /** + * @return {?} + */ + RolesComponent.prototype.save = /** + * @return {?} + */ + function () { + var _this = this; + if (!this.form.valid) + return; + this.store + .dispatch(this.selected.id + ? new IdentityUpdateRole(__assign({}, this.form.value, { id: this.selected.id })) + : new IdentityAddRole(this.form.value)) + .subscribe((/** + * @return {?} + */ + function () { + _this.isModalVisible = false; + })); + }; + /** + * @param {?} id + * @param {?} name + * @return {?} + */ + RolesComponent.prototype.delete = /** + * @param {?} id + * @param {?} name + * @return {?} + */ + function (id, name) { + var _this = this; + this.confirmationService + .warn('AbpIdentity::RoleDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', { + messageLocalizationParams: [name], + }) + .subscribe((/** + * @param {?} status + * @return {?} + */ + function (status) { + if (status === "confirm" /* confirm */) { + _this.store.dispatch(new IdentityDeleteRole(id)); + } + })); + }; + RolesComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-roles', + template: "
\n
\n
\n
\n
{{ 'AbpIdentity::Roles' | abpLocalization }}
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n {{ 'AbpIdentity::RoleName' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n \n
\n \n \n \n
\n
\n \n {{ data.name }}\n \n
\n
\n
\n
\n\n\n \n

{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}

\n
\n\n \n
\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n
\n\n \n \n \n \n
\n\n\n" + }] } + ]; + /** @nocollapse */ + RolesComponent.ctorParameters = function () { return [ + { type: ConfirmationService }, + { type: FormBuilder }, + { type: Store } + ]; }; + RolesComponent.propDecorators = { + modalContent: [{ type: ViewChild, args: ['modalContent', { static: false },] }] + }; + __decorate([ + Select(IdentityState.getRoles), + __metadata("design:type", Observable) + ], RolesComponent.prototype, "roles$", void 0); + return RolesComponent; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var RoleResolver = /** @class */ (function () { + function RoleResolver(store) { + this.store = store; + } + /** + * @return {?} + */ + RoleResolver.prototype.resolve = /** + * @return {?} + */ + function () { + /** @type {?} */ + var roles = this.store.selectSnapshot(IdentityState.getRoles); + return roles && roles.length ? null : this.store.dispatch(new IdentityGetRoles()); + }; + RoleResolver.decorators = [ + { type: Injectable } + ]; + /** @nocollapse */ + RoleResolver.ctorParameters = function () { return [ + { type: Store } + ]; }; + return RoleResolver; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var UsersComponent = /** @class */ (function () { + function UsersComponent(confirmationService, fb, store) { + this.confirmationService = confirmationService; + this.fb = fb; + this.store = store; + this.visiblePermissions = false; + this.pageQuery = { + sorting: 'userName', + }; + this.loading = false; + this.search$ = new Subject(); + this.trackByFn = (/** + * @param {?} index + * @param {?} item + * @return {?} + */ + function (index, item) { return Object.keys(item)[0] || index; }); + } + Object.defineProperty(UsersComponent.prototype, "roleGroups", { + get: /** + * @return {?} + */ + function () { + var _this = this; + return snq((/** + * @return {?} + */ + function () { return (/** @type {?} */ (((/** @type {?} */ (_this.form.get('roleNames')))).controls)); }), []); + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + UsersComponent.prototype.ngOnInit = /** + * @return {?} + */ + function () { + var _this = this; + this.search$.pipe(debounceTime(300)).subscribe((/** + * @param {?} value + * @return {?} + */ + function (value) { + _this.pageQuery.filter = value; + _this.get(); + })); + }; + /** + * @return {?} + */ + UsersComponent.prototype.buildForm = /** + * @return {?} + */ + function () { + var _this = this; + this.roles = this.store.selectSnapshot(IdentityState.getRoles); + this.form = this.fb.group({ + password: [ + '', + [ + Validators.required, + Validators.maxLength(32), + Validators.minLength(6), + validatePassword(['small', 'capital', 'number', 'special']), + ], + ], + userName: [this.selected.userName || '', [Validators.required, Validators.maxLength(256)]], + email: [this.selected.email || '', [Validators.required, Validators.email, Validators.maxLength(256)]], + name: [this.selected.name || '', [Validators.maxLength(64)]], + surname: [this.selected.surname || '', [Validators.maxLength(64)]], + phoneNumber: [this.selected.phoneNumber || '', [Validators.maxLength(16)]], + lockoutEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)], + twoFactorEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)], + roleNames: this.fb.array(this.roles.map((/** + * @param {?} role + * @return {?} + */ + function (role) { + var _a; + return _this.fb.group((_a = {}, + _a[role.name] = [!!snq((/** + * @return {?} + */ + function () { return _this.selectedUserRoles.find((/** + * @param {?} userRole + * @return {?} + */ + function (userRole) { return userRole.id === role.id; })); }))], + _a)); + }))), + }); + }; + /** + * @return {?} + */ + UsersComponent.prototype.openModal = /** + * @return {?} + */ + function () { + this.buildForm(); + this.isModalVisible = true; + }; + /** + * @return {?} + */ + UsersComponent.prototype.onAdd = /** + * @return {?} + */ + function () { + this.selected = (/** @type {?} */ ({})); + this.selectedUserRoles = (/** @type {?} */ ([])); + this.openModal(); + }; + /** + * @param {?} id + * @return {?} + */ + UsersComponent.prototype.onEdit = /** + * @param {?} id + * @return {?} + */ + function (id) { + var _this = this; + combineLatest([this.store.dispatch(new IdentityGetUserById(id)), this.store.dispatch(new IdentityGetUserRoles(id))]) + .pipe(filter((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var _b = __read(_a, 2), res1 = _b[0], res2 = _b[1]; + return res1 && res2; + })), map((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var _b = __read(_a, 2), state = _b[0], _ = _b[1]; + return state; + })), pluck('IdentityState'), take(1)) + .subscribe((/** + * @param {?} state + * @return {?} + */ + function (state) { + _this.selected = state.selectedUser; + _this.selectedUserRoles = state.selectedUserRoles; + _this.openModal(); + })); + }; + /** + * @return {?} + */ + UsersComponent.prototype.save = /** + * @return {?} + */ + function () { + var _this = this; + if (!this.form.valid) + return; + var roleNames = this.form.value.roleNames; + /** @type {?} */ + var mappedRoleNames = snq((/** + * @return {?} + */ + function () { return roleNames.filter((/** + * @param {?} role + * @return {?} + */ + function (role) { return !!role[Object.keys(role)[0]]; })).map((/** + * @param {?} role + * @return {?} + */ + function (role) { return Object.keys(role)[0]; })); }), []); + this.store + .dispatch(this.selected.id + ? new IdentityUpdateUser(__assign({}, this.form.value, { id: this.selected.id, roleNames: mappedRoleNames })) + : new IdentityAddUser(__assign({}, this.form.value, { roleNames: mappedRoleNames }))) + .subscribe((/** + * @return {?} + */ + function () { + _this.isModalVisible = false; + })); + }; + /** + * @param {?} id + * @param {?} userName + * @return {?} + */ + UsersComponent.prototype.delete = /** + * @param {?} id + * @param {?} userName + * @return {?} + */ + function (id, userName) { + var _this = this; + this.confirmationService + .warn('AbpIdentity::UserDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', { + messageLocalizationParams: [userName], + }) + .subscribe((/** + * @param {?} status + * @return {?} + */ + function (status) { + if (status === "confirm" /* confirm */) { + _this.store.dispatch(new IdentityDeleteUser(id)); + } + })); + }; + /** + * @param {?} data + * @return {?} + */ + UsersComponent.prototype.onPageChange = /** + * @param {?} data + * @return {?} + */ + function (data) { + this.pageQuery.skipCount = data.first; + this.pageQuery.maxResultCount = data.rows; + this.get(); + }; + /** + * @return {?} + */ + UsersComponent.prototype.get = /** + * @return {?} + */ + function () { + var _this = this; + this.loading = true; + this.store.dispatch(new IdentityGetUsers(this.pageQuery)).subscribe((/** + * @return {?} + */ + function () { return (_this.loading = false); })); + }; + UsersComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-users', + template: "
\n
\n
\n
\n
{{ 'AbpIdentity::Users' | abpLocalization }}
\n
\n
\n \n {{ 'AbpIdentity::NewUser' | abpLocalization }}\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n {{ 'AbpIdentity::UserName' | abpLocalization }}\n {{ 'AbpIdentity::EmailAddress' | abpLocalization }}\n {{ 'AbpIdentity::PhoneNumber' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpIdentity::Actions' | abpLocalization }}\n \n
\n \n \n \n
\n
\n \n {{ data.userName }}\n {{ data.email }}\n {{ data.phoneNumber }}\n \n
\n \n
\n
\n\n\n \n

{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}

\n
\n\n \n \n
\n \n \n \n
\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n\n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n \n \n
\n \n
\n
\n
\n
\n
\n
\n\n \n \n \n \n
\n\n\n" + }] } + ]; + /** @nocollapse */ + UsersComponent.ctorParameters = function () { return [ + { type: ConfirmationService }, + { type: FormBuilder }, + { type: Store } + ]; }; + UsersComponent.propDecorators = { + modalContent: [{ type: ViewChild, args: ['modalContent', { static: false },] }] + }; + __decorate([ + Select(IdentityState.getUsers), + __metadata("design:type", Observable) + ], UsersComponent.prototype, "data$", void 0); + __decorate([ + Select(IdentityState.getUsersTotalCount), + __metadata("design:type", Observable) + ], UsersComponent.prototype, "totalCount$", void 0); + return UsersComponent; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var UserResolver = /** @class */ (function () { + function UserResolver(store) { + this.store = store; + } + /** + * @return {?} + */ + UserResolver.prototype.resolve = /** + * @return {?} + */ + function () { + /** @type {?} */ + var users = this.store.selectSnapshot(IdentityState.getUsers); + return users && users.length ? null : this.store.dispatch(new IdentityGetUsers()); + }; + UserResolver.decorators = [ + { type: Injectable } + ]; + /** @nocollapse */ + UserResolver.ctorParameters = function () { return [ + { type: Store } + ]; }; + return UserResolver; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ɵ0 = { requiredPolicy: 'AbpIdentity.Roles' }, ɵ1 = { requiredPolicy: 'AbpIdentity.Users' }; +/** @type {?} */ +var routes = [ + { path: '', redirectTo: 'roles', pathMatch: 'full' }, + { + path: 'roles', + component: DynamicLayoutComponent, + canActivate: [AuthGuard, PermissionGuard], + data: ɵ0, + children: [{ path: '', component: RolesComponent, resolve: [RoleResolver] }], + }, + { + path: 'users', + component: DynamicLayoutComponent, + canActivate: [AuthGuard, PermissionGuard], + data: ɵ1, + children: [ + { + path: '', + component: UsersComponent, + resolve: [RoleResolver, UserResolver], + }, + ], + }, +]; +var IdentityRoutingModule = /** @class */ (function () { + function IdentityRoutingModule() { + } + IdentityRoutingModule.decorators = [ + { type: NgModule, args: [{ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], + providers: [RoleResolver, UserResolver], + },] } + ]; + return IdentityRoutingModule; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var IdentityModule = /** @class */ (function () { + function IdentityModule() { + } + IdentityModule.decorators = [ + { type: NgModule, args: [{ + declarations: [RolesComponent, UsersComponent], + imports: [ + NgxsModule.forFeature([IdentityState]), + CoreModule, + IdentityRoutingModule, + NgbTabsetModule, + ThemeSharedModule, + TableModule, + NgbDropdownModule, + PermissionManagementModule, + NgxValidateCoreModule, + PerfectScrollbarModule, + ], + },] } + ]; + return IdentityModule; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var IDENTITY_ROUTES = (/** @type {?} */ ([ + { + name: 'Administration', + path: '', + order: 1, + wrapper: true, + }, + { + name: 'Identity', + path: 'identity', + order: 1, + parentName: 'Administration', + layout: "application" /* application */, + children: [ + { path: 'roles', name: 'Roles', order: 2, requiredPolicy: 'AbpIdentity.Roles' }, + { path: 'users', name: 'Users', order: 1, requiredPolicy: 'AbpIdentity.Users' }, + ], + }, +])); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var Identity; +(function (Identity) { + /** + * @record + */ + function State() { } + Identity.State = State; + /** + * @record + */ + function RoleSaveRequest() { } + Identity.RoleSaveRequest = RoleSaveRequest; + /** + * @record + */ + function RoleItem() { } + Identity.RoleItem = RoleItem; + /** + * @record + */ + function UserItem() { } + Identity.UserItem = UserItem; + /** + * @record + */ + function User() { } + Identity.User = User; + /** + * @record + */ + function UserSaveRequest() { } + Identity.UserSaveRequest = UserSaveRequest; +})(Identity || (Identity = {})); + +export { IDENTITY_ROUTES, IdentityAddRole, IdentityAddUser, IdentityDeleteRole, IdentityDeleteUser, IdentityGetRoleById, IdentityGetRoles, IdentityGetUserById, IdentityGetUserRoles, IdentityGetUsers, IdentityModule, IdentityService, IdentityState, IdentityUpdateRole, IdentityUpdateUser, RoleResolver, RolesComponent, UsersComponent as ɵb, IdentityRoutingModule as ɵc, UserResolver as ɵd }; +//# sourceMappingURL=abp-ng.identity.js.map diff --git a/npm/ng-packs/dist/identity/fesm5/abp-ng.identity.js.map b/npm/ng-packs/dist/identity/fesm5/abp-ng.identity.js.map new file mode 100644 index 00000000000..b48b7c12742 --- /dev/null +++ b/npm/ng-packs/dist/identity/fesm5/abp-ng.identity.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.identity.js","sources":["ng://@abp/ng.identity/lib/actions/identity.actions.ts","ng://@abp/ng.identity/lib/services/identity.service.ts","ng://@abp/ng.identity/lib/states/identity.state.ts","ng://@abp/ng.identity/lib/components/roles/roles.component.ts","ng://@abp/ng.identity/lib/resolvers/roles.resolver.ts","ng://@abp/ng.identity/lib/components/users/users.component.ts","ng://@abp/ng.identity/lib/resolvers/users.resolver.ts","ng://@abp/ng.identity/lib/identity-routing.module.ts","ng://@abp/ng.identity/lib/identity.module.ts","ng://@abp/ng.identity/lib/constants/routes.ts","ng://@abp/ng.identity/lib/models/identity.ts"],"sourcesContent":["import { Identity } from '../models/identity';\nimport { ABP } from '@abp/ng.core';\n\nexport class IdentityGetRoles {\n static readonly type = '[Identity] Get Roles';\n}\n\nexport class IdentityGetRoleById {\n static readonly type = '[Identity] Get Role By Id';\n constructor(public payload: string) {}\n}\n\nexport class IdentityDeleteRole {\n static readonly type = '[Identity] Delete Role';\n constructor(public payload: string) {}\n}\n\nexport class IdentityAddRole {\n static readonly type = '[Identity] Add Role';\n constructor(public payload: Identity.RoleSaveRequest) {}\n}\n\nexport class IdentityUpdateRole {\n static readonly type = '[Identity] Update Role';\n constructor(public payload: Identity.RoleItem) {}\n}\n\nexport class IdentityGetUsers {\n static readonly type = '[Identity] Get Users';\n constructor(public payload?: ABP.PageQueryParams) {}\n}\n\nexport class IdentityGetUserById {\n static readonly type = '[Identity] Get User By Id';\n constructor(public payload: string) {}\n}\n\nexport class IdentityDeleteUser {\n static readonly type = '[Identity] Delete User';\n constructor(public payload: string) {}\n}\n\nexport class IdentityAddUser {\n static readonly type = '[Identity] Add User';\n constructor(public payload: Identity.UserSaveRequest) {}\n}\n\nexport class IdentityUpdateUser {\n static readonly type = '[Identity] Update User';\n constructor(public payload: Identity.UserSaveRequest & { id: string }) {}\n}\n\nexport class IdentityGetUserRoles {\n static readonly type = '[Identity] Get User Roles';\n constructor(public payload: string) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RestService, Rest, ABP } from '@abp/ng.core';\nimport { Identity } from '../models/identity';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IdentityService {\n constructor(private rest: RestService) {}\n\n getRoles(): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/identity/roles',\n };\n\n return this.rest.request(request);\n }\n\n getRoleById(id: string): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: `/api/identity/roles/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n deleteRole(id: string): Observable {\n const request: Rest.Request = {\n method: 'DELETE',\n url: `/api/identity/roles/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n addRole(body: Identity.RoleSaveRequest): Observable {\n const request: Rest.Request = {\n method: 'POST',\n url: '/api/identity/roles',\n body,\n };\n\n return this.rest.request(request);\n }\n\n updateRole(body: Identity.RoleItem): Observable {\n const url = `/api/identity/roles/${body.id}`;\n delete body.id;\n\n const request: Rest.Request = {\n method: 'PUT',\n url,\n body,\n };\n\n return this.rest.request(request);\n }\n\n getUsers(params = {} as ABP.PageQueryParams): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/identity/users',\n params,\n };\n\n return this.rest.request(request);\n }\n\n getUserById(id: string): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: `/api/identity/users/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n getUserRoles(id: string): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: `/api/identity/users/${id}/roles`,\n };\n\n return this.rest.request(request);\n }\n\n deleteUser(id: string): Observable {\n const request: Rest.Request = {\n method: 'DELETE',\n url: `/api/identity/users/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n addUser(body: Identity.UserSaveRequest): Observable {\n const request: Rest.Request = {\n method: 'POST',\n url: '/api/identity/users',\n body,\n };\n\n return this.rest.request(request);\n }\n\n updateUser(body: Identity.UserItem): Observable {\n const url = `/identity/users/${body.id}`;\n delete body.id;\n\n const request: Rest.Request = {\n method: 'PUT',\n url,\n body,\n };\n\n return this.rest.request(request);\n }\n}\n","import { Action, Selector, State, StateContext } from '@ngxs/store';\nimport { switchMap, tap, pluck } from 'rxjs/operators';\nimport {\n IdentityAddRole,\n IdentityAddUser,\n IdentityDeleteRole,\n IdentityDeleteUser,\n IdentityGetRoleById,\n IdentityGetRoles,\n IdentityGetUserById,\n IdentityGetUsers,\n IdentityUpdateRole,\n IdentityUpdateUser,\n IdentityGetUserRoles,\n} from '../actions/identity.actions';\nimport { Identity } from '../models/identity';\nimport { IdentityService } from '../services/identity.service';\n\n@State({\n name: 'IdentityState',\n defaults: { roles: {}, selectedRole: {}, users: {}, selectedUser: {} } as Identity.State,\n})\nexport class IdentityState {\n @Selector()\n static getRoles({ roles }: Identity.State): Identity.RoleItem[] {\n return roles.items;\n }\n\n @Selector()\n static getRolesTotalCount({ roles }: Identity.State): number {\n return roles.totalCount;\n }\n\n @Selector()\n static getUsers({ users }: Identity.State): Identity.UserItem[] {\n return users.items;\n }\n\n @Selector()\n static getUsersTotalCount({ users }: Identity.State): number {\n return users.totalCount;\n }\n\n constructor(private identityService: IdentityService) {}\n\n @Action(IdentityGetRoles)\n getRoles({ patchState }: StateContext) {\n return this.identityService.getRoles().pipe(\n tap(roles =>\n patchState({\n roles,\n }),\n ),\n );\n }\n\n @Action(IdentityGetRoleById)\n getRole({ patchState }: StateContext, { payload }: IdentityGetRoleById) {\n return this.identityService.getRoleById(payload).pipe(\n tap(selectedRole =>\n patchState({\n selectedRole,\n }),\n ),\n );\n }\n\n @Action(IdentityDeleteRole)\n deleteRole({ dispatch }: StateContext, { payload }: IdentityGetRoleById) {\n return this.identityService.deleteRole(payload).pipe(switchMap(() => dispatch(new IdentityGetRoles())));\n }\n\n @Action(IdentityAddRole)\n addRole({ dispatch }: StateContext, { payload }: IdentityAddRole) {\n return this.identityService.addRole(payload).pipe(switchMap(() => dispatch(new IdentityGetRoles())));\n }\n\n @Action(IdentityUpdateRole)\n updateRole({ getState, dispatch }: StateContext, { payload }: IdentityUpdateRole) {\n return dispatch(new IdentityGetRoleById(payload.id)).pipe(\n switchMap(() => this.identityService.updateRole({ ...getState().selectedRole, ...payload })),\n switchMap(() => dispatch(new IdentityGetRoles())),\n );\n }\n\n @Action(IdentityGetUsers)\n getUsers({ patchState }: StateContext, { payload }: IdentityGetUsers) {\n return this.identityService.getUsers(payload).pipe(\n tap(users =>\n patchState({\n users,\n }),\n ),\n );\n }\n\n @Action(IdentityGetUserById)\n getUser({ patchState }: StateContext, { payload }: IdentityGetUserById) {\n return this.identityService.getUserById(payload).pipe(\n tap(selectedUser =>\n patchState({\n selectedUser,\n }),\n ),\n );\n }\n\n @Action(IdentityDeleteUser)\n deleteUser({ dispatch }: StateContext, { payload }: IdentityGetUserById) {\n return this.identityService.deleteUser(payload).pipe(switchMap(() => dispatch(new IdentityGetUsers())));\n }\n\n @Action(IdentityAddUser)\n addUser({ dispatch }: StateContext, { payload }: IdentityAddUser) {\n return this.identityService.addUser(payload).pipe(switchMap(() => dispatch(new IdentityGetUsers())));\n }\n\n @Action(IdentityUpdateUser)\n updateUser({ getState, dispatch }: StateContext, { payload }: IdentityUpdateUser) {\n return dispatch(new IdentityGetUserById(payload.id)).pipe(\n switchMap(() => this.identityService.updateUser({ ...getState().selectedUser, ...payload })),\n switchMap(() => dispatch(new IdentityGetUsers())),\n );\n }\n\n @Action(IdentityGetUserRoles)\n getUserRoles({ patchState }: StateContext, { payload }: IdentityGetUserRoles) {\n return this.identityService.getUserRoles(payload).pipe(\n pluck('items'),\n tap(selectedUserRoles =>\n patchState({\n selectedUserRoles,\n }),\n ),\n );\n }\n}\n","import { Component, TemplateRef, ViewChild } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { IdentityState } from '../../states/identity.state';\nimport { Identity } from '../../models/identity';\nimport {\n IdentityUpdateRole,\n IdentityAddRole,\n IdentityDeleteRole,\n IdentityGetRoleById,\n} from '../../actions/identity.actions';\nimport { pluck } from 'rxjs/operators';\nimport { ConfirmationService, Toaster } from '@abp/ng.theme.shared';\n\n@Component({\n selector: 'abp-roles',\n templateUrl: './roles.component.html',\n})\nexport class RolesComponent {\n @Select(IdentityState.getRoles)\n roles$: Observable;\n\n form: FormGroup;\n\n selected: Identity.RoleItem;\n\n isModalVisible: boolean;\n\n visiblePermissions: boolean = false;\n\n providerKey: string;\n\n @ViewChild('modalContent', { static: false })\n modalContent: TemplateRef;\n\n constructor(private confirmationService: ConfirmationService, private fb: FormBuilder, private store: Store) {}\n\n createForm() {\n this.form = this.fb.group({\n name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]],\n isDefault: [this.selected.isDefault || false],\n isPublic: [this.selected.isPublic || false],\n });\n }\n\n openModal() {\n this.createForm();\n this.isModalVisible = true;\n }\n\n onAdd() {\n this.selected = {} as Identity.RoleItem;\n this.openModal();\n }\n\n onEdit(id: string) {\n this.store\n .dispatch(new IdentityGetRoleById(id))\n .pipe(pluck('IdentityState', 'selectedRole'))\n .subscribe(selectedRole => {\n this.selected = selectedRole;\n this.openModal();\n });\n }\n\n save() {\n if (!this.form.valid) return;\n\n this.store\n .dispatch(\n this.selected.id\n ? new IdentityUpdateRole({ ...this.form.value, id: this.selected.id })\n : new IdentityAddRole(this.form.value),\n )\n .subscribe(() => {\n this.isModalVisible = false;\n });\n }\n\n delete(id: string, name: string) {\n this.confirmationService\n .warn('AbpIdentity::RoleDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\n messageLocalizationParams: [name],\n })\n .subscribe((status: Toaster.Status) => {\n if (status === Toaster.Status.confirm) {\n this.store.dispatch(new IdentityDeleteRole(id));\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Resolve } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { IdentityGetRoles } from '../actions/identity.actions';\nimport { Identity } from '../models/identity';\nimport { IdentityState } from '../states/identity.state';\n\n@Injectable()\nexport class RoleResolver implements Resolve {\n constructor(private store: Store) {}\n\n resolve() {\n const roles = this.store.selectSnapshot(IdentityState.getRoles);\n return roles && roles.length ? null : this.store.dispatch(new IdentityGetRoles());\n }\n}\n","import { ABP } from '@abp/ng.core';\nimport { ConfirmationService, Toaster } from '@abp/ng.theme.shared';\nimport { Component, OnInit, TemplateRef, TrackByFunction, ViewChild } from '@angular/core';\nimport { AbstractControl, FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { validatePassword } from '@ngx-validate/core';\nimport { Select, Store } from '@ngxs/store';\nimport { combineLatest, Observable, Subject } from 'rxjs';\nimport { debounceTime, filter, map, pluck, take } from 'rxjs/operators';\nimport snq from 'snq';\nimport {\n IdentityAddUser,\n IdentityDeleteUser,\n IdentityGetUserById,\n IdentityGetUserRoles,\n IdentityGetUsers,\n IdentityUpdateUser,\n} from '../../actions/identity.actions';\nimport { Identity } from '../../models/identity';\nimport { IdentityState } from '../../states/identity.state';\n@Component({\n selector: 'abp-users',\n templateUrl: './users.component.html',\n})\nexport class UsersComponent implements OnInit {\n @Select(IdentityState.getUsers)\n data$: Observable;\n\n @Select(IdentityState.getUsersTotalCount)\n totalCount$: Observable;\n\n @ViewChild('modalContent', { static: false })\n modalContent: TemplateRef;\n\n form: FormGroup;\n\n selected: Identity.UserItem;\n\n selectedUserRoles: Identity.RoleItem[];\n\n roles: Identity.RoleItem[];\n\n visiblePermissions: boolean = false;\n\n providerKey: string;\n\n pageQuery: ABP.PageQueryParams = {\n sorting: 'userName',\n };\n\n isModalVisible: boolean;\n\n loading: boolean = false;\n\n search$ = new Subject();\n\n trackByFn: TrackByFunction = (index, item) => Object.keys(item)[0] || index;\n\n get roleGroups(): FormGroup[] {\n return snq(() => (this.form.get('roleNames') as FormArray).controls as FormGroup[], []);\n }\n\n constructor(private confirmationService: ConfirmationService, private fb: FormBuilder, private store: Store) {}\n\n ngOnInit() {\n this.search$.pipe(debounceTime(300)).subscribe(value => {\n this.pageQuery.filter = value;\n this.get();\n });\n }\n\n buildForm() {\n this.roles = this.store.selectSnapshot(IdentityState.getRoles);\n\n this.form = this.fb.group({\n password: [\n '',\n [\n Validators.required,\n Validators.maxLength(32),\n Validators.minLength(6),\n validatePassword(['small', 'capital', 'number', 'special']),\n ],\n ],\n userName: [this.selected.userName || '', [Validators.required, Validators.maxLength(256)]],\n email: [this.selected.email || '', [Validators.required, Validators.email, Validators.maxLength(256)]],\n name: [this.selected.name || '', [Validators.maxLength(64)]],\n surname: [this.selected.surname || '', [Validators.maxLength(64)]],\n phoneNumber: [this.selected.phoneNumber || '', [Validators.maxLength(16)]],\n lockoutEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)],\n twoFactorEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)],\n roleNames: this.fb.array(\n this.roles.map(role =>\n this.fb.group({\n [role.name]: [!!snq(() => this.selectedUserRoles.find(userRole => userRole.id === role.id))],\n }),\n ),\n ),\n });\n }\n\n openModal() {\n this.buildForm();\n this.isModalVisible = true;\n }\n\n onAdd() {\n this.selected = {} as Identity.UserItem;\n this.selectedUserRoles = [] as Identity.RoleItem[];\n this.openModal();\n }\n\n onEdit(id: string) {\n combineLatest([this.store.dispatch(new IdentityGetUserById(id)), this.store.dispatch(new IdentityGetUserRoles(id))])\n .pipe(\n filter(([res1, res2]) => res1 && res2),\n map(([state, _]) => state),\n pluck('IdentityState'),\n take(1),\n )\n .subscribe((state: Identity.State) => {\n this.selected = state.selectedUser;\n this.selectedUserRoles = state.selectedUserRoles;\n this.openModal();\n });\n }\n\n save() {\n if (!this.form.valid) return;\n\n const { roleNames } = this.form.value;\n const mappedRoleNames = snq(\n () => roleNames.filter(role => !!role[Object.keys(role)[0]]).map(role => Object.keys(role)[0]),\n [],\n );\n\n this.store\n .dispatch(\n this.selected.id\n ? new IdentityUpdateUser({\n ...this.form.value,\n id: this.selected.id,\n roleNames: mappedRoleNames,\n })\n : new IdentityAddUser({\n ...this.form.value,\n roleNames: mappedRoleNames,\n }),\n )\n .subscribe(() => {\n this.isModalVisible = false;\n });\n }\n\n delete(id: string, userName: string) {\n this.confirmationService\n .warn('AbpIdentity::UserDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\n messageLocalizationParams: [userName],\n })\n .subscribe((status: Toaster.Status) => {\n if (status === Toaster.Status.confirm) {\n this.store.dispatch(new IdentityDeleteUser(id));\n }\n });\n }\n\n onPageChange(data) {\n this.pageQuery.skipCount = data.first;\n this.pageQuery.maxResultCount = data.rows;\n\n this.get();\n }\n\n get() {\n this.loading = true;\n this.store.dispatch(new IdentityGetUsers(this.pageQuery)).subscribe(() => (this.loading = false));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Resolve } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { IdentityGetUsers } from '../actions/identity.actions';\nimport { Identity } from '../models/identity';\nimport { IdentityState } from '../states/identity.state';\n\n@Injectable()\nexport class UserResolver implements Resolve {\n constructor(private store: Store) {}\n\n resolve() {\n const users = this.store.selectSnapshot(IdentityState.getUsers);\n return users && users.length ? null : this.store.dispatch(new IdentityGetUsers());\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { RolesComponent } from './components/roles/roles.component';\nimport { RoleResolver } from './resolvers/roles.resolver';\nimport { DynamicLayoutComponent, AuthGuard, PermissionGuard } from '@abp/ng.core';\nimport { UsersComponent } from './components/users/users.component';\nimport { UserResolver } from './resolvers/users.resolver';\n\nconst routes: Routes = [\n { path: '', redirectTo: 'roles', pathMatch: 'full' },\n {\n path: 'roles',\n component: DynamicLayoutComponent,\n canActivate: [AuthGuard, PermissionGuard],\n data: { requiredPolicy: 'AbpIdentity.Roles' },\n children: [{ path: '', component: RolesComponent, resolve: [RoleResolver] }],\n },\n {\n path: 'users',\n component: DynamicLayoutComponent,\n canActivate: [AuthGuard, PermissionGuard],\n data: { requiredPolicy: 'AbpIdentity.Users' },\n children: [\n {\n path: '',\n component: UsersComponent,\n resolve: [RoleResolver, UserResolver],\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n providers: [RoleResolver, UserResolver],\n})\nexport class IdentityRoutingModule {}\n","import { CoreModule } from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { NgxsModule } from '@ngxs/store';\nimport { RolesComponent } from './components/roles/roles.component';\nimport { IdentityRoutingModule } from './identity-routing.module';\nimport { IdentityState } from './states/identity.state';\nimport { NgbTabsetModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { UsersComponent } from './components/users/users.component';\nimport { PermissionManagementModule } from '@abp/ng.permission-management';\nimport { TableModule } from 'primeng/table';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';\n\n@NgModule({\n declarations: [RolesComponent, UsersComponent],\n imports: [\n NgxsModule.forFeature([IdentityState]),\n CoreModule,\n IdentityRoutingModule,\n NgbTabsetModule,\n ThemeSharedModule,\n TableModule,\n NgbDropdownModule,\n PermissionManagementModule,\n NgxValidateCoreModule,\n PerfectScrollbarModule,\n ],\n})\nexport class IdentityModule {}\n","import { eLayoutType, ABP } from '@abp/ng.core';\n\nexport const IDENTITY_ROUTES = [\n {\n name: 'Administration',\n path: '',\n order: 1,\n wrapper: true,\n },\n {\n name: 'Identity',\n path: 'identity',\n order: 1,\n parentName: 'Administration',\n layout: eLayoutType.application,\n children: [\n { path: 'roles', name: 'Roles', order: 2, requiredPolicy: 'AbpIdentity.Roles' },\n { path: 'users', name: 'Users', order: 1, requiredPolicy: 'AbpIdentity.Users' },\n ],\n },\n] as ABP.FullRoute[];\n","import { ABP } from '@abp/ng.core';\n\nexport namespace Identity {\n export interface State {\n roles: RoleResponse;\n users: UserResponse;\n selectedRole: RoleItem;\n selectedUser: UserItem;\n selectedUserRoles: RoleItem[];\n }\n\n export type RoleResponse = ABP.PagedResponse;\n\n export interface RoleSaveRequest {\n name: string;\n isDefault: boolean;\n isPublic: boolean;\n }\n\n export interface RoleItem extends RoleSaveRequest {\n isStatic: boolean;\n concurrencyStamp: string;\n id: string;\n }\n\n export type UserResponse = ABP.PagedResponse;\n\n export interface UserItem extends User {\n tenantId: string;\n emailConfirmed: boolean;\n phoneNumberConfirmed: boolean;\n isLockedOut: boolean;\n concurrencyStamp: string;\n id: string;\n }\n\n export interface User {\n userName: string;\n name: string;\n surname: string;\n email: string;\n phoneNumber: string;\n twoFactorEnabled: true;\n lockoutEnabled: true;\n }\n\n export interface UserSaveRequest extends User {\n password: string;\n roleNames: string[];\n }\n}\n"],"names":["tslib_1.__decorate"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/identity/lib/actions/identity.actions.d.ts b/npm/ng-packs/dist/identity/lib/actions/identity.actions.d.ts new file mode 100644 index 00000000000..450403d71d8 --- /dev/null +++ b/npm/ng-packs/dist/identity/lib/actions/identity.actions.d.ts @@ -0,0 +1,59 @@ +import { Identity } from '../models/identity'; +import { ABP } from '@abp/ng.core'; +export declare class IdentityGetRoles { + static readonly type = "[Identity] Get Roles"; +} +export declare class IdentityGetRoleById { + payload: string; + static readonly type = "[Identity] Get Role By Id"; + constructor(payload: string); +} +export declare class IdentityDeleteRole { + payload: string; + static readonly type = "[Identity] Delete Role"; + constructor(payload: string); +} +export declare class IdentityAddRole { + payload: Identity.RoleSaveRequest; + static readonly type = "[Identity] Add Role"; + constructor(payload: Identity.RoleSaveRequest); +} +export declare class IdentityUpdateRole { + payload: Identity.RoleItem; + static readonly type = "[Identity] Update Role"; + constructor(payload: Identity.RoleItem); +} +export declare class IdentityGetUsers { + payload?: ABP.PageQueryParams; + static readonly type = "[Identity] Get Users"; + constructor(payload?: ABP.PageQueryParams); +} +export declare class IdentityGetUserById { + payload: string; + static readonly type = "[Identity] Get User By Id"; + constructor(payload: string); +} +export declare class IdentityDeleteUser { + payload: string; + static readonly type = "[Identity] Delete User"; + constructor(payload: string); +} +export declare class IdentityAddUser { + payload: Identity.UserSaveRequest; + static readonly type = "[Identity] Add User"; + constructor(payload: Identity.UserSaveRequest); +} +export declare class IdentityUpdateUser { + payload: Identity.UserSaveRequest & { + id: string; + }; + static readonly type = "[Identity] Update User"; + constructor(payload: Identity.UserSaveRequest & { + id: string; + }); +} +export declare class IdentityGetUserRoles { + payload: string; + static readonly type = "[Identity] Get User Roles"; + constructor(payload: string); +} diff --git a/npm/ng-packs/dist/identity/lib/components/roles/roles.component.d.ts b/npm/ng-packs/dist/identity/lib/components/roles/roles.component.d.ts new file mode 100644 index 00000000000..e3d2b35495a --- /dev/null +++ b/npm/ng-packs/dist/identity/lib/components/roles/roles.component.d.ts @@ -0,0 +1,25 @@ +import { TemplateRef } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { Identity } from '../../models/identity'; +import { ConfirmationService } from '@abp/ng.theme.shared'; +export declare class RolesComponent { + private confirmationService; + private fb; + private store; + roles$: Observable; + form: FormGroup; + selected: Identity.RoleItem; + isModalVisible: boolean; + visiblePermissions: boolean; + providerKey: string; + modalContent: TemplateRef; + constructor(confirmationService: ConfirmationService, fb: FormBuilder, store: Store); + createForm(): void; + openModal(): void; + onAdd(): void; + onEdit(id: string): void; + save(): void; + delete(id: string, name: string): void; +} diff --git a/npm/ng-packs/dist/identity/lib/components/users/users.component.d.ts b/npm/ng-packs/dist/identity/lib/components/users/users.component.d.ts new file mode 100644 index 00000000000..221a226a8b5 --- /dev/null +++ b/npm/ng-packs/dist/identity/lib/components/users/users.component.d.ts @@ -0,0 +1,37 @@ +import { ABP } from '@abp/ng.core'; +import { ConfirmationService } from '@abp/ng.theme.shared'; +import { OnInit, TemplateRef, TrackByFunction } from '@angular/core'; +import { AbstractControl, FormBuilder, FormGroup } from '@angular/forms'; +import { Store } from '@ngxs/store'; +import { Observable, Subject } from 'rxjs'; +import { Identity } from '../../models/identity'; +export declare class UsersComponent implements OnInit { + private confirmationService; + private fb; + private store; + data$: Observable; + totalCount$: Observable; + modalContent: TemplateRef; + form: FormGroup; + selected: Identity.UserItem; + selectedUserRoles: Identity.RoleItem[]; + roles: Identity.RoleItem[]; + visiblePermissions: boolean; + providerKey: string; + pageQuery: ABP.PageQueryParams; + isModalVisible: boolean; + loading: boolean; + search$: Subject; + trackByFn: TrackByFunction; + readonly roleGroups: FormGroup[]; + constructor(confirmationService: ConfirmationService, fb: FormBuilder, store: Store); + ngOnInit(): void; + buildForm(): void; + openModal(): void; + onAdd(): void; + onEdit(id: string): void; + save(): void; + delete(id: string, userName: string): void; + onPageChange(data: any): void; + get(): void; +} diff --git a/npm/ng-packs/dist/identity/lib/constants/routes.d.ts b/npm/ng-packs/dist/identity/lib/constants/routes.d.ts new file mode 100644 index 00000000000..9fe0a8c5655 --- /dev/null +++ b/npm/ng-packs/dist/identity/lib/constants/routes.d.ts @@ -0,0 +1,2 @@ +import { ABP } from '@abp/ng.core'; +export declare const IDENTITY_ROUTES: ABP.FullRoute[]; diff --git a/npm/ng-packs/dist/identity/lib/identity-routing.module.d.ts b/npm/ng-packs/dist/identity/lib/identity-routing.module.d.ts new file mode 100644 index 00000000000..583fb5a5e7a --- /dev/null +++ b/npm/ng-packs/dist/identity/lib/identity-routing.module.d.ts @@ -0,0 +1,2 @@ +export declare class IdentityRoutingModule { +} diff --git a/npm/ng-packs/dist/identity/lib/identity.module.d.ts b/npm/ng-packs/dist/identity/lib/identity.module.d.ts new file mode 100644 index 00000000000..2f607750cda --- /dev/null +++ b/npm/ng-packs/dist/identity/lib/identity.module.d.ts @@ -0,0 +1,2 @@ +export declare class IdentityModule { +} diff --git a/npm/ng-packs/dist/identity/lib/models/identity.d.ts b/npm/ng-packs/dist/identity/lib/models/identity.d.ts new file mode 100644 index 00000000000..d7ce3f7698c --- /dev/null +++ b/npm/ng-packs/dist/identity/lib/models/identity.d.ts @@ -0,0 +1,43 @@ +import { ABP } from '@abp/ng.core'; +export declare namespace Identity { + interface State { + roles: RoleResponse; + users: UserResponse; + selectedRole: RoleItem; + selectedUser: UserItem; + selectedUserRoles: RoleItem[]; + } + type RoleResponse = ABP.PagedResponse; + interface RoleSaveRequest { + name: string; + isDefault: boolean; + isPublic: boolean; + } + interface RoleItem extends RoleSaveRequest { + isStatic: boolean; + concurrencyStamp: string; + id: string; + } + type UserResponse = ABP.PagedResponse; + interface UserItem extends User { + tenantId: string; + emailConfirmed: boolean; + phoneNumberConfirmed: boolean; + isLockedOut: boolean; + concurrencyStamp: string; + id: string; + } + interface User { + userName: string; + name: string; + surname: string; + email: string; + phoneNumber: string; + twoFactorEnabled: true; + lockoutEnabled: true; + } + interface UserSaveRequest extends User { + password: string; + roleNames: string[]; + } +} diff --git a/npm/ng-packs/dist/identity/lib/resolvers/roles.resolver.d.ts b/npm/ng-packs/dist/identity/lib/resolvers/roles.resolver.d.ts new file mode 100644 index 00000000000..9da53c4b647 --- /dev/null +++ b/npm/ng-packs/dist/identity/lib/resolvers/roles.resolver.d.ts @@ -0,0 +1,8 @@ +import { Resolve } from '@angular/router'; +import { Store } from '@ngxs/store'; +import { Identity } from '../models/identity'; +export declare class RoleResolver implements Resolve { + private store; + constructor(store: Store); + resolve(): import("rxjs").Observable; +} diff --git a/npm/ng-packs/dist/identity/lib/resolvers/users.resolver.d.ts b/npm/ng-packs/dist/identity/lib/resolvers/users.resolver.d.ts new file mode 100644 index 00000000000..0c64c5983cf --- /dev/null +++ b/npm/ng-packs/dist/identity/lib/resolvers/users.resolver.d.ts @@ -0,0 +1,8 @@ +import { Resolve } from '@angular/router'; +import { Store } from '@ngxs/store'; +import { Identity } from '../models/identity'; +export declare class UserResolver implements Resolve { + private store; + constructor(store: Store); + resolve(): import("rxjs").Observable; +} diff --git a/npm/ng-packs/dist/identity/lib/services/identity.service.d.ts b/npm/ng-packs/dist/identity/lib/services/identity.service.d.ts new file mode 100644 index 00000000000..c35bc109a98 --- /dev/null +++ b/npm/ng-packs/dist/identity/lib/services/identity.service.d.ts @@ -0,0 +1,18 @@ +import { Observable } from 'rxjs'; +import { RestService, ABP } from '@abp/ng.core'; +import { Identity } from '../models/identity'; +export declare class IdentityService { + private rest; + constructor(rest: RestService); + getRoles(): Observable; + getRoleById(id: string): Observable; + deleteRole(id: string): Observable; + addRole(body: Identity.RoleSaveRequest): Observable; + updateRole(body: Identity.RoleItem): Observable; + getUsers(params?: ABP.PageQueryParams): Observable; + getUserById(id: string): Observable; + getUserRoles(id: string): Observable; + deleteUser(id: string): Observable; + addUser(body: Identity.UserSaveRequest): Observable; + updateUser(body: Identity.UserItem): Observable; +} diff --git a/npm/ng-packs/dist/identity/lib/states/identity.state.d.ts b/npm/ng-packs/dist/identity/lib/states/identity.state.d.ts new file mode 100644 index 00000000000..5fbd3491f6b --- /dev/null +++ b/npm/ng-packs/dist/identity/lib/states/identity.state.d.ts @@ -0,0 +1,23 @@ +import { StateContext } from '@ngxs/store'; +import { IdentityAddRole, IdentityAddUser, IdentityGetRoleById, IdentityGetUserById, IdentityGetUsers, IdentityUpdateRole, IdentityUpdateUser, IdentityGetUserRoles } from '../actions/identity.actions'; +import { Identity } from '../models/identity'; +import { IdentityService } from '../services/identity.service'; +export declare class IdentityState { + private identityService; + static getRoles({ roles }: Identity.State): Identity.RoleItem[]; + static getRolesTotalCount({ roles }: Identity.State): number; + static getUsers({ users }: Identity.State): Identity.UserItem[]; + static getUsersTotalCount({ users }: Identity.State): number; + constructor(identityService: IdentityService); + getRoles({ patchState }: StateContext): import("rxjs").Observable>; + getRole({ patchState }: StateContext, { payload }: IdentityGetRoleById): import("rxjs").Observable; + deleteRole({ dispatch }: StateContext, { payload }: IdentityGetRoleById): import("rxjs").Observable; + addRole({ dispatch }: StateContext, { payload }: IdentityAddRole): import("rxjs").Observable; + updateRole({ getState, dispatch }: StateContext, { payload }: IdentityUpdateRole): import("rxjs").Observable; + getUsers({ patchState }: StateContext, { payload }: IdentityGetUsers): import("rxjs").Observable>; + getUser({ patchState }: StateContext, { payload }: IdentityGetUserById): import("rxjs").Observable; + deleteUser({ dispatch }: StateContext, { payload }: IdentityGetUserById): import("rxjs").Observable; + addUser({ dispatch }: StateContext, { payload }: IdentityAddUser): import("rxjs").Observable; + updateUser({ getState, dispatch }: StateContext, { payload }: IdentityUpdateUser): import("rxjs").Observable; + getUserRoles({ patchState }: StateContext, { payload }: IdentityGetUserRoles): import("rxjs").Observable; +} diff --git a/npm/ng-packs/dist/identity/package.json b/npm/ng-packs/dist/identity/package.json new file mode 100644 index 00000000000..013f9359d7b --- /dev/null +++ b/npm/ng-packs/dist/identity/package.json @@ -0,0 +1,21 @@ +{ + "name": "@abp/ng.identity", + "version": "0.8.0", + "dependencies": { + "@abp/ng.permission-management": "^0.8.0", + "tslib": "^1.9.0" + }, + "publishConfig": { + "access": "public" + }, + "main": "bundles/abp-ng.identity.umd.js", + "module": "fesm5/abp-ng.identity.js", + "es2015": "fesm2015/abp-ng.identity.js", + "esm5": "esm5/abp-ng.identity.js", + "esm2015": "esm2015/abp-ng.identity.js", + "fesm5": "fesm5/abp-ng.identity.js", + "fesm2015": "fesm2015/abp-ng.identity.js", + "typings": "abp-ng.identity.d.ts", + "metadata": "abp-ng.identity.metadata.json", + "sideEffects": false +} diff --git a/npm/ng-packs/dist/identity/public-api.d.ts b/npm/ng-packs/dist/identity/public-api.d.ts new file mode 100644 index 00000000000..f6ead168bca --- /dev/null +++ b/npm/ng-packs/dist/identity/public-api.d.ts @@ -0,0 +1,8 @@ +export * from './lib/identity.module'; +export * from './lib/actions/identity.actions'; +export * from './lib/components/roles/roles.component'; +export * from './lib/constants/routes'; +export * from './lib/models/identity'; +export * from './lib/resolvers/roles.resolver'; +export * from './lib/services/identity.service'; +export * from './lib/states/identity.state'; diff --git a/npm/ng-packs/dist/permission-management/README.md b/npm/ng-packs/dist/permission-management/README.md new file mode 100644 index 00000000000..29fbdc1a7f9 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/README.md @@ -0,0 +1 @@ +

@abp/ng.permission-management

diff --git a/npm/ng-packs/dist/permission-management/abp-ng.permission-management.d.ts b/npm/ng-packs/dist/permission-management/abp-ng.permission-management.d.ts new file mode 100644 index 00000000000..8fe3ba64628 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/abp-ng.permission-management.d.ts @@ -0,0 +1,9 @@ +/** + * Generated bundle index. Do not edit. + */ +export * from './public-api'; +export { PermissionManagementGetPermissions as ɵd, PermissionManagementUpdatePermissions as ɵe } from './lib/actions/permission-management.actions'; +export { PermissionManagementComponent as ɵa } from './lib/components/permission-management.component'; +export { PermissionManagement as ɵf } from './lib/models/permission-management'; +export { PermissionManagementService as ɵc } from './lib/services/permission-management.service'; +export { PermissionManagementState as ɵb } from './lib/states/permission-management.state'; diff --git a/npm/ng-packs/dist/permission-management/abp-ng.permission-management.metadata.json b/npm/ng-packs/dist/permission-management/abp-ng.permission-management.metadata.json new file mode 100644 index 00000000000..136f682cfaa --- /dev/null +++ b/npm/ng-packs/dist/permission-management/abp-ng.permission-management.metadata.json @@ -0,0 +1 @@ +{"__symbolic":"module","version":4,"exports":[{"from":"./lib/permission-management.state"}],"metadata":{"PermissionManagementModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵa"}],"imports":[{"__symbolic":"reference","module":"@abp/ng.core","name":"CoreModule","line":10,"character":12},{"__symbolic":"reference","module":"@abp/ng.theme.shared","name":"ThemeSharedModule","line":10,"character":24},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"NgxsModule","line":10,"character":43},"member":"forFeature"},"arguments":[[{"__symbolic":"reference","name":"ɵb"}]]},{"__symbolic":"reference","module":"ngx-perfect-scrollbar","name":"PerfectScrollbarModule","line":10,"character":95}],"exports":[{"__symbolic":"reference","name":"ɵa"}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":23,"character":1},"arguments":[{"selector":"abp-permission-management","template":"\n \n \n

{{ 'AbpPermissionManagement::Permissions' | abpLocalization }} - {{ data.entityName }}

\n
\n \n
\n \n \n
\n\n
\n
\n \n
\n

{{ selectedGroup.displayName }}

\n
\n
\n
\n \n \n
\n
\n \n \n \n {{ permission.displayName }}\n
\n \n
\n
\n \n \n \n \n \n \n \n\n"}]}],"members":{"providerName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"providerKey":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"visible":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"visibleChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":52,"character":3}}]}],"groups$":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Select","line":55,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵb"},"member":"getPermissionGroups"}]}]}],"entityName$":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Select","line":58,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵb"},"member":"getEntitiyDisplayName"}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":89,"character":29},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":89,"character":54}]}],"ngOnInit":[{"__symbolic":"method"}],"getChecked":[{"__symbolic":"method"}],"onClickCheckbox":[{"__symbolic":"method"}],"setTabCheckboxState":[{"__symbolic":"method"}],"setGrantCheckboxState":[{"__symbolic":"method"}],"onClickSelectThisTab":[{"__symbolic":"method"}],"onClickSelectAll":[{"__symbolic":"method"}],"onChangeGroup":[{"__symbolic":"method"}],"onSubmit":[{"__symbolic":"method"}],"openModal":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"State","line":9,"character":1},"arguments":[{"name":"PermissionManagementState","defaults":{"permissionRes":{}}}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵc"}]}],"permissionManagementGet":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":26,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵd"}]}]}],"permissionManagementUpdate":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":40,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵe"}]}]}]},"statics":{"getPermissionGroups":{"__symbolic":"function","parameters":["permissionRes"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"permissionRes"},"member":"groups"},"right":[]}},"getEntitiyDisplayName":{"__symbolic":"function","parameters":["permissionRes"],"value":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"permissionRes"},"member":"entityDisplayName"}}}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@abp/ng.core","name":"RestService","line":9,"character":28}]}],"getPermissions":[{"__symbolic":"method"}],"updatePermissions":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵd":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵf"},"member":"GrantedProvider"}]}]},"statics":{"type":"[PermissionManagement] Get Permissions"}},"ɵe":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":9,"character":30,"module":"./lib/actions/permission-management.actions"}]}]},"statics":{"type":"[PermissionManagement] Update Permissions"}}},"origins":{"PermissionManagementModule":"./lib/permission-management.module","ɵa":"./lib/components/permission-management.component","ɵb":"./lib/states/permission-management.state","ɵc":"./lib/services/permission-management.service","ɵd":"./lib/actions/permission-management.actions","ɵe":"./lib/actions/permission-management.actions","ɵf":"./lib/models/permission-management"},"importAs":"@abp/ng.permission-management"} \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/bundles/abp-ng.permission-management.umd.js b/npm/ng-packs/dist/permission-management/bundles/abp-ng.permission-management.umd.js new file mode 100644 index 00000000000..f5ce1663dd3 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/bundles/abp-ng.permission-management.umd.js @@ -0,0 +1,735 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@abp/ng.core'), require('@abp/ng.theme.shared'), require('@angular/core'), require('@ngxs/store'), require('rxjs'), require('rxjs/operators'), require('ngx-perfect-scrollbar')) : + typeof define === 'function' && define.amd ? define('@abp/ng.permission-management', ['exports', '@abp/ng.core', '@abp/ng.theme.shared', '@angular/core', '@ngxs/store', 'rxjs', 'rxjs/operators', 'ngx-perfect-scrollbar'], factory) : + (global = global || self, factory((global.abp = global.abp || {}, global.abp.ng = global.abp.ng || {}, global.abp.ng['permission-management'] = {}), global.ng_core, global.ng_theme_shared, global.ng.core, global.store, global.rxjs, global.rxjs.operators, global.ngxPerfectScrollbar)); +}(this, function (exports, ng_core, ng_theme_shared, core, store, rxjs, operators, ngxPerfectScrollbar) { 'use strict'; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + } + + function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); + } + + function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; + } + + function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; + } + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var PermissionManagementGetPermissions = /** @class */ (function () { + function PermissionManagementGetPermissions(payload) { + this.payload = payload; + } + PermissionManagementGetPermissions.type = '[PermissionManagement] Get Permissions'; + return PermissionManagementGetPermissions; + }()); + var PermissionManagementUpdatePermissions = /** @class */ (function () { + function PermissionManagementUpdatePermissions(payload) { + this.payload = payload; + } + PermissionManagementUpdatePermissions.type = '[PermissionManagement] Update Permissions'; + return PermissionManagementUpdatePermissions; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var PermissionManagementService = /** @class */ (function () { + function PermissionManagementService(rest) { + this.rest = rest; + } + /** + * @param {?} params + * @return {?} + */ + PermissionManagementService.prototype.getPermissions = /** + * @param {?} params + * @return {?} + */ + function (params) { + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/abp/permissions', + params: params, + }; + return this.rest.request(request); + }; + /** + * @param {?} __0 + * @return {?} + */ + PermissionManagementService.prototype.updatePermissions = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var permissions = _a.permissions, providerKey = _a.providerKey, providerName = _a.providerName; + /** @type {?} */ + var request = { + method: 'PUT', + url: '/api/abp/permissions', + body: { permissions: permissions }, + params: { providerKey: providerKey, providerName: providerName }, + }; + return this.rest.request(request); + }; + PermissionManagementService.decorators = [ + { type: core.Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + PermissionManagementService.ctorParameters = function () { return [ + { type: ng_core.RestService } + ]; }; + /** @nocollapse */ PermissionManagementService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function PermissionManagementService_Factory() { return new PermissionManagementService(core.ɵɵinject(ng_core.RestService)); }, token: PermissionManagementService, providedIn: "root" }); + return PermissionManagementService; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var PermissionManagementState = /** @class */ (function () { + function PermissionManagementState(permissionManagementService) { + this.permissionManagementService = permissionManagementService; + } + /** + * @param {?} __0 + * @return {?} + */ + PermissionManagementState.getPermissionGroups = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var permissionRes = _a.permissionRes; + return permissionRes.groups || []; + }; + /** + * @param {?} __0 + * @return {?} + */ + PermissionManagementState.getEntitiyDisplayName = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var permissionRes = _a.permissionRes; + return permissionRes.entityDisplayName; + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + PermissionManagementState.prototype.permissionManagementGet = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.permissionManagementService.getPermissions(payload).pipe(operators.tap((/** + * @param {?} permissionResponse + * @return {?} + */ + function (permissionResponse) { + return patchState({ + permissionRes: permissionResponse, + }); + }))); + }; + /** + * @param {?} _ + * @param {?} __1 + * @return {?} + */ + PermissionManagementState.prototype.permissionManagementUpdate = /** + * @param {?} _ + * @param {?} __1 + * @return {?} + */ + function (_, _a) { + var payload = _a.payload; + return this.permissionManagementService.updatePermissions(payload); + }; + __decorate([ + store.Action(PermissionManagementGetPermissions), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, PermissionManagementGetPermissions]), + __metadata("design:returntype", void 0) + ], PermissionManagementState.prototype, "permissionManagementGet", null); + __decorate([ + store.Action(PermissionManagementUpdatePermissions), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, PermissionManagementUpdatePermissions]), + __metadata("design:returntype", void 0) + ], PermissionManagementState.prototype, "permissionManagementUpdate", null); + __decorate([ + store.Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) + ], PermissionManagementState, "getPermissionGroups", null); + __decorate([ + store.Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", String) + ], PermissionManagementState, "getEntitiyDisplayName", null); + PermissionManagementState = __decorate([ + store.State({ + name: 'PermissionManagementState', + defaults: (/** @type {?} */ ({ permissionRes: {} })), + }), + __metadata("design:paramtypes", [PermissionManagementService]) + ], PermissionManagementState); + return PermissionManagementState; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var PermissionManagementComponent = /** @class */ (function () { + function PermissionManagementComponent(store, renderer) { + this.store = store; + this.renderer = renderer; + this.visibleChange = new core.EventEmitter(); + this.permissions = []; + this.selectThisTab = false; + this.selectAllTab = false; + this.trackByFn = (/** + * @param {?} _ + * @param {?} item + * @return {?} + */ + function (_, item) { return item.name; }); + } + Object.defineProperty(PermissionManagementComponent.prototype, "visible", { + get: /** + * @return {?} + */ + function () { + return this._visible; + }, + set: /** + * @param {?} value + * @return {?} + */ + function (value) { + if (!this.selectedGroup) + return; + this._visible = value; + this.visibleChange.emit(value); + if (!value) { + this.selectedGroup = null; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(PermissionManagementComponent.prototype, "selectedGroupPermissions$", { + get: /** + * @return {?} + */ + function () { + var _this = this; + return this.groups$.pipe(operators.map((/** + * @param {?} groups + * @return {?} + */ + function (groups) { + return _this.selectedGroup ? groups.find((/** + * @param {?} group + * @return {?} + */ + function (group) { return group.name === _this.selectedGroup.name; })).permissions : []; + })), operators.map((/** + * @param {?} permissions + * @return {?} + */ + function (permissions) { + return permissions.map((/** + * @param {?} permission + * @return {?} + */ + function (permission) { + return ((/** @type {?} */ (((/** @type {?} */ (__assign({}, permission, { margin: findMargin(permissions, permission), isGranted: _this.permissions.find((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.name === permission.name; })).isGranted }))))))); + })); + }))); + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + PermissionManagementComponent.prototype.ngOnInit = /** + * @return {?} + */ + function () { }; + /** + * @param {?} name + * @return {?} + */ + PermissionManagementComponent.prototype.getChecked = /** + * @param {?} name + * @return {?} + */ + function (name) { + return (this.permissions.find((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.name === name; })) || { isGranted: false }).isGranted; + }; + /** + * @param {?} clickedPermission + * @param {?} value + * @return {?} + */ + PermissionManagementComponent.prototype.onClickCheckbox = /** + * @param {?} clickedPermission + * @param {?} value + * @return {?} + */ + function (clickedPermission, value) { + var _this = this; + setTimeout((/** + * @return {?} + */ + function () { + _this.permissions = _this.permissions.map((/** + * @param {?} per + * @return {?} + */ + function (per) { + if (clickedPermission.name === per.name) { + return __assign({}, per, { isGranted: !per.isGranted }); + } + else if (clickedPermission.name === per.parentName && clickedPermission.isGranted) { + return __assign({}, per, { isGranted: false }); + } + else if (clickedPermission.parentName === per.name && !clickedPermission.isGranted) { + return __assign({}, per, { isGranted: true }); + } + return per; + })); + _this.setTabCheckboxState(); + _this.setGrantCheckboxState(); + }), 0); + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.setTabCheckboxState = /** + * @return {?} + */ + function () { + var _this = this; + this.selectedGroupPermissions$.pipe(operators.take(1)).subscribe((/** + * @param {?} permissions + * @return {?} + */ + function (permissions) { + /** @type {?} */ + var selectedPermissions = permissions.filter((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.isGranted; })); + /** @type {?} */ + var element = (/** @type {?} */ (document.querySelector('#select-all-in-this-tabs'))); + if (selectedPermissions.length === permissions.length) { + element.indeterminate = false; + _this.selectThisTab = true; + } + else if (selectedPermissions.length === 0) { + element.indeterminate = false; + _this.selectThisTab = false; + } + else { + element.indeterminate = true; + } + })); + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.setGrantCheckboxState = /** + * @return {?} + */ + function () { + /** @type {?} */ + var selectedAllPermissions = this.permissions.filter((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.isGranted; })); + /** @type {?} */ + var checkboxElement = (/** @type {?} */ (document.querySelector('#select-all-in-all-tabs'))); + if (selectedAllPermissions.length === this.permissions.length) { + checkboxElement.indeterminate = false; + this.selectAllTab = true; + } + else if (selectedAllPermissions.length === 0) { + checkboxElement.indeterminate = false; + this.selectAllTab = false; + } + else { + checkboxElement.indeterminate = true; + } + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.onClickSelectThisTab = /** + * @return {?} + */ + function () { + var _this = this; + this.selectedGroupPermissions$.pipe(operators.take(1)).subscribe((/** + * @param {?} permissions + * @return {?} + */ + function (permissions) { + permissions.forEach((/** + * @param {?} permission + * @return {?} + */ + function (permission) { + /** @type {?} */ + var index = _this.permissions.findIndex((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.name === permission.name; })); + _this.permissions = __spread(_this.permissions.slice(0, index), [ + __assign({}, _this.permissions[index], { isGranted: !_this.selectThisTab }) + ], _this.permissions.slice(index + 1)); + })); + })); + this.setGrantCheckboxState(); + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.onClickSelectAll = /** + * @return {?} + */ + function () { + var _this = this; + this.permissions = this.permissions.map((/** + * @param {?} permission + * @return {?} + */ + function (permission) { return (__assign({}, permission, { isGranted: !_this.selectAllTab })); })); + this.selectThisTab = !this.selectAllTab; + }; + /** + * @param {?} group + * @return {?} + */ + PermissionManagementComponent.prototype.onChangeGroup = /** + * @param {?} group + * @return {?} + */ + function (group) { + this.selectedGroup = group; + this.setTabCheckboxState(); + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.onSubmit = /** + * @return {?} + */ + function () { + var _this = this; + /** @type {?} */ + var unchangedPermissions = getPermissions(this.store.selectSnapshot(PermissionManagementState.getPermissionGroups)); + /** @type {?} */ + var changedPermissions = this.permissions + .filter((/** + * @param {?} per + * @return {?} + */ + function (per) { + return unchangedPermissions.find((/** + * @param {?} unchanged + * @return {?} + */ + function (unchanged) { return unchanged.name === per.name; })).isGranted === per.isGranted ? false : true; + })) + .map((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var name = _a.name, isGranted = _a.isGranted; + return ({ name: name, isGranted: isGranted }); + })); + if (changedPermissions.length) { + this.store + .dispatch(new PermissionManagementUpdatePermissions({ + providerKey: this.providerKey, + providerName: this.providerName, + permissions: changedPermissions, + })) + .subscribe((/** + * @return {?} + */ + function () { + _this.visible = false; + })); + } + else { + this.visible = false; + } + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.openModal = /** + * @return {?} + */ + function () { + var _this = this; + if (!this.providerKey || !this.providerName) { + throw new Error('Provider Key and Provider Name are required.'); + } + this.store + .dispatch(new PermissionManagementGetPermissions({ providerKey: this.providerKey, providerName: this.providerName })) + .pipe(operators.pluck('PermissionManagementState', 'permissionRes')) + .subscribe((/** + * @param {?} permissionRes + * @return {?} + */ + function (permissionRes) { + _this.selectedGroup = permissionRes.groups[0]; + _this.permissions = getPermissions(permissionRes.groups); + _this.visible = true; + setTimeout((/** + * @return {?} + */ + function () { + _this.setTabCheckboxState(); + _this.setGrantCheckboxState(); + }), 0); + })); + }; + /** + * @param {?} __0 + * @return {?} + */ + PermissionManagementComponent.prototype.ngOnChanges = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var visible = _a.visible; + if (!visible) + return; + if (visible.currentValue) { + this.openModal(); + } + else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + }; + PermissionManagementComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-permission-management', + template: "\n \n \n

{{ 'AbpPermissionManagement::Permissions' | abpLocalization }} - {{ data.entityName }}

\n
\n \n
\n \n \n
\n\n
\n
\n
\n \n
\n
\n

{{ selectedGroup.displayName }}

\n
\n
\n
\n \n \n
\n
\n \n \n \n {{ permission.displayName }}\n
\n \n
\n
\n \n
\n \n \n \n \n
\n
\n" + }] } + ]; + /** @nocollapse */ + PermissionManagementComponent.ctorParameters = function () { return [ + { type: store.Store }, + { type: core.Renderer2 } + ]; }; + PermissionManagementComponent.propDecorators = { + providerName: [{ type: core.Input }], + providerKey: [{ type: core.Input }], + visible: [{ type: core.Input }], + visibleChange: [{ type: core.Output }] + }; + __decorate([ + store.Select(PermissionManagementState.getPermissionGroups), + __metadata("design:type", rxjs.Observable) + ], PermissionManagementComponent.prototype, "groups$", void 0); + __decorate([ + store.Select(PermissionManagementState.getEntitiyDisplayName), + __metadata("design:type", rxjs.Observable) + ], PermissionManagementComponent.prototype, "entityName$", void 0); + return PermissionManagementComponent; + }()); + /** + * @param {?} permissions + * @param {?} permission + * @return {?} + */ + function findMargin(permissions, permission) { + /** @type {?} */ + var parentPermission = permissions.find((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.name === permission.parentName; })); + if (parentPermission && parentPermission.parentName) { + /** @type {?} */ + var margin = 20; + return (margin += findMargin(permissions, parentPermission)); + } + return parentPermission ? 20 : 0; + } + /** + * @param {?} groups + * @return {?} + */ + function getPermissions(groups) { + return groups.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { return __spread(acc, val.permissions); }), []); + } + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var PermissionManagementModule = /** @class */ (function () { + function PermissionManagementModule() { + } + PermissionManagementModule.decorators = [ + { type: core.NgModule, args: [{ + declarations: [PermissionManagementComponent], + imports: [ng_core.CoreModule, ng_theme_shared.ThemeSharedModule, store.NgxsModule.forFeature([PermissionManagementState]), ngxPerfectScrollbar.PerfectScrollbarModule], + exports: [PermissionManagementComponent], + },] } + ]; + return PermissionManagementModule; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var PermissionManagement; + (function (PermissionManagement) { + /** + * @record + */ + function State() { } + PermissionManagement.State = State; + /** + * @record + */ + function Response() { } + PermissionManagement.Response = Response; + /** + * @record + */ + function Group() { } + PermissionManagement.Group = Group; + /** + * @record + */ + function MinimumPermission() { } + PermissionManagement.MinimumPermission = MinimumPermission; + /** + * @record + */ + function Permission() { } + PermissionManagement.Permission = Permission; + /** + * @record + */ + function GrantedProvider() { } + PermissionManagement.GrantedProvider = GrantedProvider; + /** + * @record + */ + function UpdateRequest() { } + PermissionManagement.UpdateRequest = UpdateRequest; + })(PermissionManagement || (PermissionManagement = {})); + + exports.PermissionManagementComponent = PermissionManagementComponent; + exports.PermissionManagementGetPermissions = PermissionManagementGetPermissions; + exports.PermissionManagementModule = PermissionManagementModule; + exports.PermissionManagementService = PermissionManagementService; + exports.PermissionManagementState = PermissionManagementState; + exports.PermissionManagementUpdatePermissions = PermissionManagementUpdatePermissions; + exports.ɵa = PermissionManagementComponent; + exports.ɵb = PermissionManagementState; + exports.ɵc = PermissionManagementService; + exports.ɵd = PermissionManagementGetPermissions; + exports.ɵe = PermissionManagementUpdatePermissions; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); +//# sourceMappingURL=abp-ng.permission-management.umd.js.map diff --git a/npm/ng-packs/dist/permission-management/bundles/abp-ng.permission-management.umd.js.map b/npm/ng-packs/dist/permission-management/bundles/abp-ng.permission-management.umd.js.map new file mode 100644 index 00000000000..ba5cd5511a8 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/bundles/abp-ng.permission-management.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.permission-management.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","ng://@abp/ng.permission-management/lib/actions/permission-management.actions.ts","ng://@abp/ng.permission-management/lib/services/permission-management.service.ts","ng://@abp/ng.permission-management/lib/states/permission-management.state.ts","ng://@abp/ng.permission-management/lib/components/permission-management.component.ts","ng://@abp/ng.permission-management/lib/permission-management.module.ts","ng://@abp/ng.permission-management/lib/models/permission-management.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { PermissionManagement } from '../models/permission-management';\n\nexport class PermissionManagementGetPermissions {\n static readonly type = '[PermissionManagement] Get Permissions';\n constructor(public payload: PermissionManagement.GrantedProvider) {}\n}\n\nexport class PermissionManagementUpdatePermissions {\n static readonly type = '[PermissionManagement] Update Permissions';\n constructor(public payload: PermissionManagement.GrantedProvider & PermissionManagement.UpdateRequest) {}\n}\n","import { Injectable } from '@angular/core';\nimport { RestService, Rest } from '@abp/ng.core';\nimport { Observable } from 'rxjs';\nimport { PermissionManagement } from '../models/permission-management';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PermissionManagementService {\n constructor(private rest: RestService) {}\n\n getPermissions(params: PermissionManagement.GrantedProvider): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/abp/permissions',\n params,\n };\n\n return this.rest.request(request);\n }\n\n updatePermissions({\n permissions,\n providerKey,\n providerName,\n }: PermissionManagement.GrantedProvider & PermissionManagement.UpdateRequest): Observable {\n const request: Rest.Request = {\n method: 'PUT',\n url: '/api/abp/permissions',\n body: { permissions },\n params: { providerKey, providerName },\n };\n\n return this.rest.request(request);\n }\n}\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\nimport {\n PermissionManagementGetPermissions,\n PermissionManagementUpdatePermissions,\n} from '../actions/permission-management.actions';\nimport { PermissionManagement } from '../models/permission-management';\nimport { PermissionManagementService } from '../services/permission-management.service';\nimport { tap } from 'rxjs/operators';\n\n@State({\n name: 'PermissionManagementState',\n defaults: { permissionRes: {} } as PermissionManagement.State,\n})\nexport class PermissionManagementState {\n @Selector()\n static getPermissionGroups({ permissionRes }: PermissionManagement.State) {\n return permissionRes.groups || [];\n }\n\n @Selector()\n static getEntitiyDisplayName({ permissionRes }: PermissionManagement.State): string {\n return permissionRes.entityDisplayName;\n }\n\n constructor(private permissionManagementService: PermissionManagementService) {}\n\n @Action(PermissionManagementGetPermissions)\n permissionManagementGet(\n { patchState }: StateContext,\n { payload }: PermissionManagementGetPermissions,\n ) {\n return this.permissionManagementService.getPermissions(payload).pipe(\n tap(permissionResponse =>\n patchState({\n permissionRes: permissionResponse,\n }),\n ),\n );\n }\n\n @Action(PermissionManagementUpdatePermissions)\n permissionManagementUpdate(_, { payload }: PermissionManagementUpdatePermissions) {\n return this.permissionManagementService.updatePermissions(payload);\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n TrackByFunction,\n} from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { from, Observable } from 'rxjs';\nimport { map, pluck, take } from 'rxjs/operators';\nimport {\n PermissionManagementGetPermissions,\n PermissionManagementUpdatePermissions,\n} from '../actions/permission-management.actions';\nimport { PermissionManagement } from '../models/permission-management';\nimport { PermissionManagementState } from '../states/permission-management.state';\n\ntype PermissionWithMargin = PermissionManagement.Permission & { margin: number };\n\n@Component({\n selector: 'abp-permission-management',\n templateUrl: './permission-management.component.html',\n})\nexport class PermissionManagementComponent implements OnInit, OnChanges {\n @Input()\n providerName: string;\n\n @Input()\n providerKey: string;\n\n protected _visible;\n\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n\n set visible(value: boolean) {\n if (!this.selectedGroup) return;\n\n this._visible = value;\n this.visibleChange.emit(value);\n\n if (!value) {\n this.selectedGroup = null;\n }\n }\n\n @Output()\n visibleChange = new EventEmitter();\n\n @Select(PermissionManagementState.getPermissionGroups)\n groups$: Observable;\n\n @Select(PermissionManagementState.getEntitiyDisplayName)\n entityName$: Observable;\n\n selectedGroup: PermissionManagement.Group;\n\n permissions: PermissionManagement.Permission[] = [];\n\n selectThisTab: boolean = false;\n\n selectAllTab: boolean = false;\n\n trackByFn: TrackByFunction = (_, item) => item.name;\n\n get selectedGroupPermissions$(): Observable {\n return this.groups$.pipe(\n map(groups =>\n this.selectedGroup ? groups.find(group => group.name === this.selectedGroup.name).permissions : [],\n ),\n map(permissions =>\n permissions.map(\n permission =>\n (({\n ...permission,\n margin: findMargin(permissions, permission),\n isGranted: this.permissions.find(per => per.name === permission.name).isGranted,\n } as any) as PermissionWithMargin),\n ),\n ),\n );\n }\n\n constructor(private store: Store, private renderer: Renderer2) {}\n\n ngOnInit(): void {}\n\n getChecked(name: string) {\n return (this.permissions.find(per => per.name === name) || { isGranted: false }).isGranted;\n }\n\n onClickCheckbox(clickedPermission: PermissionManagement.Permission, value) {\n setTimeout(() => {\n this.permissions = this.permissions.map(per => {\n if (clickedPermission.name === per.name) {\n return { ...per, isGranted: !per.isGranted };\n } else if (clickedPermission.name === per.parentName && clickedPermission.isGranted) {\n return { ...per, isGranted: false };\n } else if (clickedPermission.parentName === per.name && !clickedPermission.isGranted) {\n return { ...per, isGranted: true };\n }\n\n return per;\n });\n\n this.setTabCheckboxState();\n this.setGrantCheckboxState();\n }, 0);\n }\n\n setTabCheckboxState() {\n this.selectedGroupPermissions$.pipe(take(1)).subscribe(permissions => {\n const selectedPermissions = permissions.filter(per => per.isGranted);\n const element = document.querySelector('#select-all-in-this-tabs') as any;\n\n if (selectedPermissions.length === permissions.length) {\n element.indeterminate = false;\n this.selectThisTab = true;\n } else if (selectedPermissions.length === 0) {\n element.indeterminate = false;\n this.selectThisTab = false;\n } else {\n element.indeterminate = true;\n }\n });\n }\n\n setGrantCheckboxState() {\n const selectedAllPermissions = this.permissions.filter(per => per.isGranted);\n const checkboxElement = document.querySelector('#select-all-in-all-tabs') as any;\n\n if (selectedAllPermissions.length === this.permissions.length) {\n checkboxElement.indeterminate = false;\n this.selectAllTab = true;\n } else if (selectedAllPermissions.length === 0) {\n checkboxElement.indeterminate = false;\n this.selectAllTab = false;\n } else {\n checkboxElement.indeterminate = true;\n }\n }\n\n onClickSelectThisTab() {\n this.selectedGroupPermissions$.pipe(take(1)).subscribe(permissions => {\n permissions.forEach(permission => {\n const index = this.permissions.findIndex(per => per.name === permission.name);\n\n this.permissions = [\n ...this.permissions.slice(0, index),\n { ...this.permissions[index], isGranted: !this.selectThisTab },\n ...this.permissions.slice(index + 1),\n ];\n });\n });\n\n this.setGrantCheckboxState();\n }\n\n onClickSelectAll() {\n this.permissions = this.permissions.map(permission => ({ ...permission, isGranted: !this.selectAllTab }));\n\n this.selectThisTab = !this.selectAllTab;\n }\n\n onChangeGroup(group: PermissionManagement.Group) {\n this.selectedGroup = group;\n this.setTabCheckboxState();\n }\n\n onSubmit() {\n const unchangedPermissions = getPermissions(\n this.store.selectSnapshot(PermissionManagementState.getPermissionGroups),\n );\n\n const changedPermissions: PermissionManagement.MinimumPermission[] = this.permissions\n .filter(per =>\n unchangedPermissions.find(unchanged => unchanged.name === per.name).isGranted === per.isGranted ? false : true,\n )\n .map(({ name, isGranted }) => ({ name, isGranted }));\n\n if (changedPermissions.length) {\n this.store\n .dispatch(\n new PermissionManagementUpdatePermissions({\n providerKey: this.providerKey,\n providerName: this.providerName,\n permissions: changedPermissions,\n }),\n )\n .subscribe(() => {\n this.visible = false;\n });\n } else {\n this.visible = false;\n }\n }\n\n openModal() {\n if (!this.providerKey || !this.providerName) {\n throw new Error('Provider Key and Provider Name are required.');\n }\n\n this.store\n .dispatch(\n new PermissionManagementGetPermissions({ providerKey: this.providerKey, providerName: this.providerName }),\n )\n .pipe(pluck('PermissionManagementState', 'permissionRes'))\n .subscribe((permissionRes: PermissionManagement.Response) => {\n this.selectedGroup = permissionRes.groups[0];\n this.permissions = getPermissions(permissionRes.groups);\n\n this.visible = true;\n\n setTimeout(() => {\n this.setTabCheckboxState();\n this.setGrantCheckboxState();\n }, 0);\n });\n }\n\n ngOnChanges({ visible }: SimpleChanges): void {\n if (!visible) return;\n\n if (visible.currentValue) {\n this.openModal();\n } else if (visible.currentValue === false && this.visible) {\n this.visible = false;\n }\n }\n}\n\nfunction findMargin(permissions: PermissionManagement.Permission[], permission: PermissionManagement.Permission) {\n const parentPermission = permissions.find(per => per.name === permission.parentName);\n\n if (parentPermission && parentPermission.parentName) {\n let margin = 20;\n return (margin += findMargin(permissions, parentPermission));\n }\n\n return parentPermission ? 20 : 0;\n}\n\nfunction getPermissions(groups: PermissionManagement.Group[]): PermissionManagement.Permission[] {\n return groups.reduce((acc, val) => [...acc, ...val.permissions], []);\n}\n","import { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { NgModule } from '@angular/core';\nimport { NgxsModule } from '@ngxs/store';\nimport { PermissionManagementComponent } from './components/permission-management.component';\nimport { PermissionManagementState } from './states/permission-management.state';\nimport { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';\n\n@NgModule({\n declarations: [PermissionManagementComponent],\n imports: [CoreModule, ThemeSharedModule, NgxsModule.forFeature([PermissionManagementState]), PerfectScrollbarModule],\n exports: [PermissionManagementComponent],\n})\nexport class PermissionManagementModule {}\n","export namespace PermissionManagement {\n export interface State {\n permissionRes: Response;\n }\n\n export interface Response {\n entityDisplayName: string;\n groups: Group[];\n }\n\n export interface Group {\n name: string;\n displayName: string;\n permissions: Permission[];\n }\n\n export interface MinimumPermission {\n name: string;\n isGranted: boolean;\n }\n\n export interface Permission extends MinimumPermission {\n displayName: string;\n parentName: string;\n allowedProviders: string[];\n grantedProviders: GrantedProvider[];\n }\n\n export interface GrantedProvider {\n providerName: string;\n providerKey: string;\n }\n\n export interface UpdateRequest {\n permissions: MinimumPermission[];\n }\n}\n"],"names":["Injectable","RestService","tap","tslib_1.__decorate","Action","Selector","State","EventEmitter","map","take","pluck","Component","Store","Renderer2","Input","Output","Select","Observable","NgModule","CoreModule","ThemeSharedModule","NgxsModule","PerfectScrollbarModule"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/bundles/abp-ng.permission-management.umd.min.js b/npm/ng-packs/dist/permission-management/bundles/abp-ng.permission-management.umd.min.js new file mode 100644 index 00000000000..5ef33e87f26 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/bundles/abp-ng.permission-management.umd.min.js @@ -0,0 +1,2 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("@abp/ng.core"),require("@abp/ng.theme.shared"),require("@angular/core"),require("@ngxs/store"),require("rxjs"),require("rxjs/operators"),require("ngx-perfect-scrollbar")):"function"==typeof define&&define.amd?define("@abp/ng.permission-management",["exports","@abp/ng.core","@abp/ng.theme.shared","@angular/core","@ngxs/store","rxjs","rxjs/operators","ngx-perfect-scrollbar"],n):n(((e=e||self).abp=e.abp||{},e.abp.ng=e.abp.ng||{},e.abp.ng["permission-management"]={}),e.ng_core,e.ng_theme_shared,e.ng.core,e.store,e.rxjs,e.rxjs.operators,e.ngxPerfectScrollbar)}(this,function(e,n,t,i,s,r,o,a){"use strict";var c=function(){return(c=Object.assign||function(e){for(var n,t=1,i=arguments.length;t=0;a--)(s=e[a])&&(o=(r<3?s(o):r>3?s(n,t,o):s(n,t))||o);return r>3&&o&&Object.defineProperty(n,t,o),o}function p(e,n){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,n)}function u(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var i,s,r=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(i=r.next()).done;)o.push(i.value)}catch(e){s={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(s)throw s.error}}return o}function m(){for(var e=[],n=0;n\n \n \n

{{ \'AbpPermissionManagement::Permissions\' | abpLocalization }} - {{ data.entityName }}

\n
\n \n
\n \n \n
\n\n
\n
\n
\n \n
\n
\n

{{ selectedGroup.displayName }}

\n
\n
\n
\n \n \n
\n
\n \n \n \n {{ permission.displayName }}\n
\n \n
\n
\n \n
\n \n \n \n \n
\n\n'}]}],e.ctorParameters=function(){return[{type:s.Store},{type:i.Renderer2}]},e.propDecorators={providerName:[{type:i.Input}],providerKey:[{type:i.Input}],visible:[{type:i.Input}],visibleChange:[{type:i.Output}]},l([s.Select(h.getPermissionGroups),p("design:type",r.Observable)],e.prototype,"groups$",void 0),l([s.Select(h.getEntitiyDisplayName),p("design:type",r.Observable)],e.prototype,"entityName$",void 0),e}();function y(e,n){var t=e.find(function(e){return e.name===n.parentName});return t&&t.parentName?20+y(e,t):t?20:0}function v(e){return e.reduce(function(e,n){return m(e,n.permissions)},[])}var G,P=function(){function e(){}return e.decorators=[{type:i.NgModule,args:[{declarations:[g],imports:[n.CoreModule,t.ThemeSharedModule,s.NgxsModule.forFeature([h]),a.PerfectScrollbarModule],exports:[g]}]}],e}();!function(e){e.State=function(){},e.Response=function(){},e.Group=function(){},e.MinimumPermission=function(){},e.Permission=function(){},e.GrantedProvider=function(){},e.UpdateRequest=function(){}}(G||(G={})),e.PermissionManagementComponent=g,e.PermissionManagementGetPermissions=d,e.PermissionManagementModule=P,e.PermissionManagementService=f,e.PermissionManagementState=h,e.PermissionManagementUpdatePermissions=b,e.ɵa=g,e.ɵb=h,e.ɵc=f,e.ɵd=d,e.ɵe=b,Object.defineProperty(e,"__esModule",{value:!0})}); +//# sourceMappingURL=abp-ng.permission-management.umd.min.js.map \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/bundles/abp-ng.permission-management.umd.min.js.map b/npm/ng-packs/dist/permission-management/bundles/abp-ng.permission-management.umd.min.js.map new file mode 100644 index 00000000000..9922f4991d5 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/bundles/abp-ng.permission-management.umd.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@abp/ng.permission-management/lib/actions/permission-management.actions.ts","ng://@abp/ng.permission-management/lib/services/permission-management.service.ts","ng://@abp/ng.permission-management/lib/states/permission-management.state.ts","ng://@abp/ng.permission-management/lib/components/permission-management.component.ts","ng://@abp/ng.permission-management/lib/permission-management.module.ts","ng://@abp/ng.permission-management/lib/models/permission-management.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__metadata","metadataKey","metadataValue","metadata","__read","o","m","Symbol","iterator","e","ar","next","done","push","value","error","__spread","concat","PermissionManagementGetPermissions","payload","type","PermissionManagementUpdatePermissions","PermissionManagementService","rest","getPermissions","params","request","method","url","updatePermissions","_a","body","permissions","providerKey","providerName","Injectable","args","providedIn","RestService","PermissionManagementState","permissionManagementService","getPermissionGroups","permissionRes","groups","getEntitiyDisplayName","entityDisplayName","permissionManagementGet","_b","patchState","pipe","tap","permissionResponse","permissionManagementUpdate","_","tslib_1.__decorate","Action","Selector","State","name","defaults","PermissionManagementComponent","store","renderer","visibleChange","EventEmitter","selectThisTab","selectAllTab","trackByFn","item","_visible","selectedGroup","emit","_this","groups$","map","find","group","permission","margin","findMargin","isGranted","per","ngOnInit","getChecked","onClickCheckbox","clickedPermission","setTimeout","parentName","setTabCheckboxState","setGrantCheckboxState","selectedGroupPermissions$","take","subscribe","selectedPermissions","filter","element","document","querySelector","indeterminate","selectedAllPermissions","checkboxElement","onClickSelectThisTab","forEach","index","findIndex","slice","onClickSelectAll","onChangeGroup","onSubmit","unchangedPermissions","selectSnapshot","changedPermissions","unchanged","dispatch","visible","openModal","Error","pluck","ngOnChanges","currentValue","Component","selector","template","Store","Renderer2","Input","Output","Select","Observable","parentPermission","reduce","acc","val","PermissionManagement","PermissionManagementModule","NgModule","declarations","imports","CoreModule","ThemeSharedModule","NgxsModule","forFeature","PerfectScrollbarModule","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { PermissionManagement } from '../models/permission-management';\n\nexport class PermissionManagementGetPermissions {\n static readonly type = '[PermissionManagement] Get Permissions';\n constructor(public payload: PermissionManagement.GrantedProvider) {}\n}\n\nexport class PermissionManagementUpdatePermissions {\n static readonly type = '[PermissionManagement] Update Permissions';\n constructor(public payload: PermissionManagement.GrantedProvider & PermissionManagement.UpdateRequest) {}\n}\n","import { Injectable } from '@angular/core';\nimport { RestService, Rest } from '@abp/ng.core';\nimport { Observable } from 'rxjs';\nimport { PermissionManagement } from '../models/permission-management';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PermissionManagementService {\n constructor(private rest: RestService) {}\n\n getPermissions(params: PermissionManagement.GrantedProvider): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/abp/permissions',\n params,\n };\n\n return this.rest.request(request);\n }\n\n updatePermissions({\n permissions,\n providerKey,\n providerName,\n }: PermissionManagement.GrantedProvider & PermissionManagement.UpdateRequest): Observable {\n const request: Rest.Request = {\n method: 'PUT',\n url: '/api/abp/permissions',\n body: { permissions },\n params: { providerKey, providerName },\n };\n\n return this.rest.request(request);\n }\n}\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\nimport {\n PermissionManagementGetPermissions,\n PermissionManagementUpdatePermissions,\n} from '../actions/permission-management.actions';\nimport { PermissionManagement } from '../models/permission-management';\nimport { PermissionManagementService } from '../services/permission-management.service';\nimport { tap } from 'rxjs/operators';\n\n@State({\n name: 'PermissionManagementState',\n defaults: { permissionRes: {} } as PermissionManagement.State,\n})\nexport class PermissionManagementState {\n @Selector()\n static getPermissionGroups({ permissionRes }: PermissionManagement.State) {\n return permissionRes.groups || [];\n }\n\n @Selector()\n static getEntitiyDisplayName({ permissionRes }: PermissionManagement.State): string {\n return permissionRes.entityDisplayName;\n }\n\n constructor(private permissionManagementService: PermissionManagementService) {}\n\n @Action(PermissionManagementGetPermissions)\n permissionManagementGet(\n { patchState }: StateContext,\n { payload }: PermissionManagementGetPermissions,\n ) {\n return this.permissionManagementService.getPermissions(payload).pipe(\n tap(permissionResponse =>\n patchState({\n permissionRes: permissionResponse,\n }),\n ),\n );\n }\n\n @Action(PermissionManagementUpdatePermissions)\n permissionManagementUpdate(_, { payload }: PermissionManagementUpdatePermissions) {\n return this.permissionManagementService.updatePermissions(payload);\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n TrackByFunction,\n} from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { from, Observable } from 'rxjs';\nimport { map, pluck, take } from 'rxjs/operators';\nimport {\n PermissionManagementGetPermissions,\n PermissionManagementUpdatePermissions,\n} from '../actions/permission-management.actions';\nimport { PermissionManagement } from '../models/permission-management';\nimport { PermissionManagementState } from '../states/permission-management.state';\n\ntype PermissionWithMargin = PermissionManagement.Permission & { margin: number };\n\n@Component({\n selector: 'abp-permission-management',\n templateUrl: './permission-management.component.html',\n})\nexport class PermissionManagementComponent implements OnInit, OnChanges {\n @Input()\n providerName: string;\n\n @Input()\n providerKey: string;\n\n protected _visible;\n\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n\n set visible(value: boolean) {\n if (!this.selectedGroup) return;\n\n this._visible = value;\n this.visibleChange.emit(value);\n\n if (!value) {\n this.selectedGroup = null;\n }\n }\n\n @Output()\n visibleChange = new EventEmitter();\n\n @Select(PermissionManagementState.getPermissionGroups)\n groups$: Observable;\n\n @Select(PermissionManagementState.getEntitiyDisplayName)\n entityName$: Observable;\n\n selectedGroup: PermissionManagement.Group;\n\n permissions: PermissionManagement.Permission[] = [];\n\n selectThisTab: boolean = false;\n\n selectAllTab: boolean = false;\n\n trackByFn: TrackByFunction = (_, item) => item.name;\n\n get selectedGroupPermissions$(): Observable {\n return this.groups$.pipe(\n map(groups =>\n this.selectedGroup ? groups.find(group => group.name === this.selectedGroup.name).permissions : [],\n ),\n map(permissions =>\n permissions.map(\n permission =>\n (({\n ...permission,\n margin: findMargin(permissions, permission),\n isGranted: this.permissions.find(per => per.name === permission.name).isGranted,\n } as any) as PermissionWithMargin),\n ),\n ),\n );\n }\n\n constructor(private store: Store, private renderer: Renderer2) {}\n\n ngOnInit(): void {}\n\n getChecked(name: string) {\n return (this.permissions.find(per => per.name === name) || { isGranted: false }).isGranted;\n }\n\n onClickCheckbox(clickedPermission: PermissionManagement.Permission, value) {\n setTimeout(() => {\n this.permissions = this.permissions.map(per => {\n if (clickedPermission.name === per.name) {\n return { ...per, isGranted: !per.isGranted };\n } else if (clickedPermission.name === per.parentName && clickedPermission.isGranted) {\n return { ...per, isGranted: false };\n } else if (clickedPermission.parentName === per.name && !clickedPermission.isGranted) {\n return { ...per, isGranted: true };\n }\n\n return per;\n });\n\n this.setTabCheckboxState();\n this.setGrantCheckboxState();\n }, 0);\n }\n\n setTabCheckboxState() {\n this.selectedGroupPermissions$.pipe(take(1)).subscribe(permissions => {\n const selectedPermissions = permissions.filter(per => per.isGranted);\n const element = document.querySelector('#select-all-in-this-tabs') as any;\n\n if (selectedPermissions.length === permissions.length) {\n element.indeterminate = false;\n this.selectThisTab = true;\n } else if (selectedPermissions.length === 0) {\n element.indeterminate = false;\n this.selectThisTab = false;\n } else {\n element.indeterminate = true;\n }\n });\n }\n\n setGrantCheckboxState() {\n const selectedAllPermissions = this.permissions.filter(per => per.isGranted);\n const checkboxElement = document.querySelector('#select-all-in-all-tabs') as any;\n\n if (selectedAllPermissions.length === this.permissions.length) {\n checkboxElement.indeterminate = false;\n this.selectAllTab = true;\n } else if (selectedAllPermissions.length === 0) {\n checkboxElement.indeterminate = false;\n this.selectAllTab = false;\n } else {\n checkboxElement.indeterminate = true;\n }\n }\n\n onClickSelectThisTab() {\n this.selectedGroupPermissions$.pipe(take(1)).subscribe(permissions => {\n permissions.forEach(permission => {\n const index = this.permissions.findIndex(per => per.name === permission.name);\n\n this.permissions = [\n ...this.permissions.slice(0, index),\n { ...this.permissions[index], isGranted: !this.selectThisTab },\n ...this.permissions.slice(index + 1),\n ];\n });\n });\n\n this.setGrantCheckboxState();\n }\n\n onClickSelectAll() {\n this.permissions = this.permissions.map(permission => ({ ...permission, isGranted: !this.selectAllTab }));\n\n this.selectThisTab = !this.selectAllTab;\n }\n\n onChangeGroup(group: PermissionManagement.Group) {\n this.selectedGroup = group;\n this.setTabCheckboxState();\n }\n\n onSubmit() {\n const unchangedPermissions = getPermissions(\n this.store.selectSnapshot(PermissionManagementState.getPermissionGroups),\n );\n\n const changedPermissions: PermissionManagement.MinimumPermission[] = this.permissions\n .filter(per =>\n unchangedPermissions.find(unchanged => unchanged.name === per.name).isGranted === per.isGranted ? false : true,\n )\n .map(({ name, isGranted }) => ({ name, isGranted }));\n\n if (changedPermissions.length) {\n this.store\n .dispatch(\n new PermissionManagementUpdatePermissions({\n providerKey: this.providerKey,\n providerName: this.providerName,\n permissions: changedPermissions,\n }),\n )\n .subscribe(() => {\n this.visible = false;\n });\n } else {\n this.visible = false;\n }\n }\n\n openModal() {\n if (!this.providerKey || !this.providerName) {\n throw new Error('Provider Key and Provider Name are required.');\n }\n\n this.store\n .dispatch(\n new PermissionManagementGetPermissions({ providerKey: this.providerKey, providerName: this.providerName }),\n )\n .pipe(pluck('PermissionManagementState', 'permissionRes'))\n .subscribe((permissionRes: PermissionManagement.Response) => {\n this.selectedGroup = permissionRes.groups[0];\n this.permissions = getPermissions(permissionRes.groups);\n\n this.visible = true;\n\n setTimeout(() => {\n this.setTabCheckboxState();\n this.setGrantCheckboxState();\n }, 0);\n });\n }\n\n ngOnChanges({ visible }: SimpleChanges): void {\n if (!visible) return;\n\n if (visible.currentValue) {\n this.openModal();\n } else if (visible.currentValue === false && this.visible) {\n this.visible = false;\n }\n }\n}\n\nfunction findMargin(permissions: PermissionManagement.Permission[], permission: PermissionManagement.Permission) {\n const parentPermission = permissions.find(per => per.name === permission.parentName);\n\n if (parentPermission && parentPermission.parentName) {\n let margin = 20;\n return (margin += findMargin(permissions, parentPermission));\n }\n\n return parentPermission ? 20 : 0;\n}\n\nfunction getPermissions(groups: PermissionManagement.Group[]): PermissionManagement.Permission[] {\n return groups.reduce((acc, val) => [...acc, ...val.permissions], []);\n}\n","import { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { NgModule } from '@angular/core';\nimport { NgxsModule } from '@ngxs/store';\nimport { PermissionManagementComponent } from './components/permission-management.component';\nimport { PermissionManagementState } from './states/permission-management.state';\nimport { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';\n\n@NgModule({\n declarations: [PermissionManagementComponent],\n imports: [CoreModule, ThemeSharedModule, NgxsModule.forFeature([PermissionManagementState]), PerfectScrollbarModule],\n exports: [PermissionManagementComponent],\n})\nexport class PermissionManagementModule {}\n","export namespace PermissionManagement {\n export interface State {\n permissionRes: Response;\n }\n\n export interface Response {\n entityDisplayName: string;\n groups: Group[];\n }\n\n export interface Group {\n name: string;\n displayName: string;\n permissions: Permission[];\n }\n\n export interface MinimumPermission {\n name: string;\n isGranted: boolean;\n }\n\n export interface Permission extends MinimumPermission {\n displayName: string;\n parentName: string;\n allowedProviders: string[];\n grantedProviders: GrantedProvider[];\n }\n\n export interface GrantedProvider {\n providerName: string;\n providerKey: string;\n }\n\n export interface UpdateRequest {\n permissions: MinimumPermission[];\n }\n}\n"]} \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm2015/abp-ng.permission-management.js b/npm/ng-packs/dist/permission-management/esm2015/abp-ng.permission-management.js new file mode 100644 index 00000000000..4c6723512d2 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm2015/abp-ng.permission-management.js @@ -0,0 +1,13 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { PermissionManagementModule, PermissionManagementGetPermissions, PermissionManagementUpdatePermissions, PermissionManagementComponent, PermissionManagementService, PermissionManagementState } from './public-api'; +export { PermissionManagementGetPermissions as ɵd, PermissionManagementUpdatePermissions as ɵe } from './lib/actions/permission-management.actions'; +export { PermissionManagementComponent as ɵa } from './lib/components/permission-management.component'; +export { PermissionManagementService as ɵc } from './lib/services/permission-management.service'; +export { PermissionManagementState as ɵb } from './lib/states/permission-management.state'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLnBlcm1pc3Npb24tbWFuYWdlbWVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcucGVybWlzc2lvbi1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsiYWJwLW5nLnBlcm1pc3Npb24tbWFuYWdlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsNk1BQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxrQ0FBa0MsSUFBSSxFQUFFLEVBQUMscUNBQXFDLElBQUksRUFBRSxFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDakosT0FBTyxFQUFDLDZCQUE2QixJQUFJLEVBQUUsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBRXJHLE9BQU8sRUFBQywyQkFBMkIsSUFBSSxFQUFFLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUMvRixPQUFPLEVBQUMseUJBQXlCLElBQUksRUFBRSxFQUFDLE1BQU0sMENBQTBDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG5cbmV4cG9ydCB7UGVybWlzc2lvbk1hbmFnZW1lbnRHZXRQZXJtaXNzaW9ucyBhcyDJtWQsUGVybWlzc2lvbk1hbmFnZW1lbnRVcGRhdGVQZXJtaXNzaW9ucyBhcyDJtWV9IGZyb20gJy4vbGliL2FjdGlvbnMvcGVybWlzc2lvbi1tYW5hZ2VtZW50LmFjdGlvbnMnO1xuZXhwb3J0IHtQZXJtaXNzaW9uTWFuYWdlbWVudENvbXBvbmVudCBhcyDJtWF9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGVybWlzc2lvbi1tYW5hZ2VtZW50LmNvbXBvbmVudCc7XG5leHBvcnQge1Blcm1pc3Npb25NYW5hZ2VtZW50IGFzIMm1Zn0gZnJvbSAnLi9saWIvbW9kZWxzL3Blcm1pc3Npb24tbWFuYWdlbWVudCc7XG5leHBvcnQge1Blcm1pc3Npb25NYW5hZ2VtZW50U2VydmljZSBhcyDJtWN9IGZyb20gJy4vbGliL3NlcnZpY2VzL3Blcm1pc3Npb24tbWFuYWdlbWVudC5zZXJ2aWNlJztcbmV4cG9ydCB7UGVybWlzc2lvbk1hbmFnZW1lbnRTdGF0ZSBhcyDJtWJ9IGZyb20gJy4vbGliL3N0YXRlcy9wZXJtaXNzaW9uLW1hbmFnZW1lbnQuc3RhdGUnOyJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm2015/lib/actions/index.js b/npm/ng-packs/dist/permission-management/esm2015/lib/actions/index.js new file mode 100644 index 00000000000..314c92ddc46 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm2015/lib/actions/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { PermissionManagementGetPermissions, PermissionManagementUpdatePermissions } from './permission-management.actions'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnBlcm1pc3Npb24tbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9hY3Rpb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSwwRkFBYyxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGVybWlzc2lvbi1tYW5hZ2VtZW50LmFjdGlvbnMnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm2015/lib/actions/permission-management.actions.js b/npm/ng-packs/dist/permission-management/esm2015/lib/actions/permission-management.actions.js new file mode 100644 index 00000000000..d036f8dab6f --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm2015/lib/actions/permission-management.actions.js @@ -0,0 +1,35 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export class PermissionManagementGetPermissions { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +PermissionManagementGetPermissions.type = '[PermissionManagement] Get Permissions'; +if (false) { + /** @type {?} */ + PermissionManagementGetPermissions.type; + /** @type {?} */ + PermissionManagementGetPermissions.prototype.payload; +} +export class PermissionManagementUpdatePermissions { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +PermissionManagementUpdatePermissions.type = '[PermissionManagement] Update Permissions'; +if (false) { + /** @type {?} */ + PermissionManagementUpdatePermissions.type; + /** @type {?} */ + PermissionManagementUpdatePermissions.prototype.payload; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1tYW5hZ2VtZW50LmFjdGlvbnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnBlcm1pc3Npb24tbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9hY3Rpb25zL3Blcm1pc3Npb24tbWFuYWdlbWVudC5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxNQUFNLE9BQU8sa0NBQWtDOzs7O0lBRTdDLFlBQW1CLE9BQTZDO1FBQTdDLFlBQU8sR0FBUCxPQUFPLENBQXNDO0lBQUcsQ0FBQzs7QUFEcEQsdUNBQUksR0FBRyx3Q0FBd0MsQ0FBQzs7O0lBQWhFLHdDQUFnRTs7SUFDcEQscURBQW9EOztBQUdsRSxNQUFNLE9BQU8scUNBQXFDOzs7O0lBRWhELFlBQW1CLE9BQWtGO1FBQWxGLFlBQU8sR0FBUCxPQUFPLENBQTJFO0lBQUcsQ0FBQzs7QUFEekYsMENBQUksR0FBRywyQ0FBMkMsQ0FBQzs7O0lBQW5FLDJDQUFtRTs7SUFDdkQsd0RBQXlGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGVybWlzc2lvbk1hbmFnZW1lbnQgfSBmcm9tICcuLi9tb2RlbHMvcGVybWlzc2lvbi1tYW5hZ2VtZW50JztcblxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25NYW5hZ2VtZW50R2V0UGVybWlzc2lvbnMge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbUGVybWlzc2lvbk1hbmFnZW1lbnRdIEdldCBQZXJtaXNzaW9ucyc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBQZXJtaXNzaW9uTWFuYWdlbWVudC5HcmFudGVkUHJvdmlkZXIpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uTWFuYWdlbWVudFVwZGF0ZVBlcm1pc3Npb25zIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1Blcm1pc3Npb25NYW5hZ2VtZW50XSBVcGRhdGUgUGVybWlzc2lvbnMnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogUGVybWlzc2lvbk1hbmFnZW1lbnQuR3JhbnRlZFByb3ZpZGVyICYgUGVybWlzc2lvbk1hbmFnZW1lbnQuVXBkYXRlUmVxdWVzdCkge31cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm2015/lib/components/index.js b/npm/ng-packs/dist/permission-management/esm2015/lib/components/index.js new file mode 100644 index 00000000000..95380b6151f --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm2015/lib/components/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { PermissionManagementComponent } from './permission-management.component'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnBlcm1pc3Npb24tbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw4Q0FBYyxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGVybWlzc2lvbi1tYW5hZ2VtZW50LmNvbXBvbmVudCc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm2015/lib/components/permission-management.component.js b/npm/ng-packs/dist/permission-management/esm2015/lib/components/permission-management.component.js new file mode 100644 index 00000000000..f44c51fce42 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm2015/lib/components/permission-management.component.js @@ -0,0 +1,398 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Component, EventEmitter, Input, Output, Renderer2, } from '@angular/core'; +import { Select, Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { map, pluck, take } from 'rxjs/operators'; +import { PermissionManagementGetPermissions, PermissionManagementUpdatePermissions, } from '../actions/permission-management.actions'; +import { PermissionManagementState } from '../states/permission-management.state'; +export class PermissionManagementComponent { + /** + * @param {?} store + * @param {?} renderer + */ + constructor(store, renderer) { + this.store = store; + this.renderer = renderer; + this.visibleChange = new EventEmitter(); + this.permissions = []; + this.selectThisTab = false; + this.selectAllTab = false; + this.trackByFn = (/** + * @param {?} _ + * @param {?} item + * @return {?} + */ + (_, item) => item.name); + } + /** + * @return {?} + */ + get visible() { + return this._visible; + } + /** + * @param {?} value + * @return {?} + */ + set visible(value) { + if (!this.selectedGroup) + return; + this._visible = value; + this.visibleChange.emit(value); + if (!value) { + this.selectedGroup = null; + } + } + /** + * @return {?} + */ + get selectedGroupPermissions$() { + return this.groups$.pipe(map((/** + * @param {?} groups + * @return {?} + */ + groups => this.selectedGroup ? groups.find((/** + * @param {?} group + * @return {?} + */ + group => group.name === this.selectedGroup.name)).permissions : [])), map((/** + * @param {?} permissions + * @return {?} + */ + permissions => permissions.map((/** + * @param {?} permission + * @return {?} + */ + permission => ((/** @type {?} */ (((/** @type {?} */ (Object.assign({}, permission, { margin: findMargin(permissions, permission), isGranted: this.permissions.find((/** + * @param {?} per + * @return {?} + */ + per => per.name === permission.name)).isGranted })))))))))))); + } + /** + * @return {?} + */ + ngOnInit() { } + /** + * @param {?} name + * @return {?} + */ + getChecked(name) { + return (this.permissions.find((/** + * @param {?} per + * @return {?} + */ + per => per.name === name)) || { isGranted: false }).isGranted; + } + /** + * @param {?} clickedPermission + * @param {?} value + * @return {?} + */ + onClickCheckbox(clickedPermission, value) { + setTimeout((/** + * @return {?} + */ + () => { + this.permissions = this.permissions.map((/** + * @param {?} per + * @return {?} + */ + per => { + if (clickedPermission.name === per.name) { + return Object.assign({}, per, { isGranted: !per.isGranted }); + } + else if (clickedPermission.name === per.parentName && clickedPermission.isGranted) { + return Object.assign({}, per, { isGranted: false }); + } + else if (clickedPermission.parentName === per.name && !clickedPermission.isGranted) { + return Object.assign({}, per, { isGranted: true }); + } + return per; + })); + this.setTabCheckboxState(); + this.setGrantCheckboxState(); + }), 0); + } + /** + * @return {?} + */ + setTabCheckboxState() { + this.selectedGroupPermissions$.pipe(take(1)).subscribe((/** + * @param {?} permissions + * @return {?} + */ + permissions => { + /** @type {?} */ + const selectedPermissions = permissions.filter((/** + * @param {?} per + * @return {?} + */ + per => per.isGranted)); + /** @type {?} */ + const element = (/** @type {?} */ (document.querySelector('#select-all-in-this-tabs'))); + if (selectedPermissions.length === permissions.length) { + element.indeterminate = false; + this.selectThisTab = true; + } + else if (selectedPermissions.length === 0) { + element.indeterminate = false; + this.selectThisTab = false; + } + else { + element.indeterminate = true; + } + })); + } + /** + * @return {?} + */ + setGrantCheckboxState() { + /** @type {?} */ + const selectedAllPermissions = this.permissions.filter((/** + * @param {?} per + * @return {?} + */ + per => per.isGranted)); + /** @type {?} */ + const checkboxElement = (/** @type {?} */ (document.querySelector('#select-all-in-all-tabs'))); + if (selectedAllPermissions.length === this.permissions.length) { + checkboxElement.indeterminate = false; + this.selectAllTab = true; + } + else if (selectedAllPermissions.length === 0) { + checkboxElement.indeterminate = false; + this.selectAllTab = false; + } + else { + checkboxElement.indeterminate = true; + } + } + /** + * @return {?} + */ + onClickSelectThisTab() { + this.selectedGroupPermissions$.pipe(take(1)).subscribe((/** + * @param {?} permissions + * @return {?} + */ + permissions => { + permissions.forEach((/** + * @param {?} permission + * @return {?} + */ + permission => { + /** @type {?} */ + const index = this.permissions.findIndex((/** + * @param {?} per + * @return {?} + */ + per => per.name === permission.name)); + this.permissions = [ + ...this.permissions.slice(0, index), + Object.assign({}, this.permissions[index], { isGranted: !this.selectThisTab }), + ...this.permissions.slice(index + 1), + ]; + })); + })); + this.setGrantCheckboxState(); + } + /** + * @return {?} + */ + onClickSelectAll() { + this.permissions = this.permissions.map((/** + * @param {?} permission + * @return {?} + */ + permission => (Object.assign({}, permission, { isGranted: !this.selectAllTab })))); + this.selectThisTab = !this.selectAllTab; + } + /** + * @param {?} group + * @return {?} + */ + onChangeGroup(group) { + this.selectedGroup = group; + this.setTabCheckboxState(); + } + /** + * @return {?} + */ + onSubmit() { + /** @type {?} */ + const unchangedPermissions = getPermissions(this.store.selectSnapshot(PermissionManagementState.getPermissionGroups)); + /** @type {?} */ + const changedPermissions = this.permissions + .filter((/** + * @param {?} per + * @return {?} + */ + per => unchangedPermissions.find((/** + * @param {?} unchanged + * @return {?} + */ + unchanged => unchanged.name === per.name)).isGranted === per.isGranted ? false : true)) + .map((/** + * @param {?} __0 + * @return {?} + */ + ({ name, isGranted }) => ({ name, isGranted }))); + if (changedPermissions.length) { + this.store + .dispatch(new PermissionManagementUpdatePermissions({ + providerKey: this.providerKey, + providerName: this.providerName, + permissions: changedPermissions, + })) + .subscribe((/** + * @return {?} + */ + () => { + this.visible = false; + })); + } + else { + this.visible = false; + } + } + /** + * @return {?} + */ + openModal() { + if (!this.providerKey || !this.providerName) { + throw new Error('Provider Key and Provider Name are required.'); + } + this.store + .dispatch(new PermissionManagementGetPermissions({ providerKey: this.providerKey, providerName: this.providerName })) + .pipe(pluck('PermissionManagementState', 'permissionRes')) + .subscribe((/** + * @param {?} permissionRes + * @return {?} + */ + (permissionRes) => { + this.selectedGroup = permissionRes.groups[0]; + this.permissions = getPermissions(permissionRes.groups); + this.visible = true; + setTimeout((/** + * @return {?} + */ + () => { + this.setTabCheckboxState(); + this.setGrantCheckboxState(); + }), 0); + })); + } + /** + * @param {?} __0 + * @return {?} + */ + ngOnChanges({ visible }) { + if (!visible) + return; + if (visible.currentValue) { + this.openModal(); + } + else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + } +} +PermissionManagementComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-permission-management', + template: "\n \n \n

{{ 'AbpPermissionManagement::Permissions' | abpLocalization }} - {{ data.entityName }}

\n
\n \n
\n \n \n
\n\n
\n
\n
\n \n
\n
\n

{{ selectedGroup.displayName }}

\n
\n
\n
\n \n \n
\n
\n \n \n \n {{ permission.displayName }}\n
\n \n
\n
\n \n
\n \n \n \n \n
\n
\n" + }] } +]; +/** @nocollapse */ +PermissionManagementComponent.ctorParameters = () => [ + { type: Store }, + { type: Renderer2 } +]; +PermissionManagementComponent.propDecorators = { + providerName: [{ type: Input }], + providerKey: [{ type: Input }], + visible: [{ type: Input }], + visibleChange: [{ type: Output }] +}; +tslib_1.__decorate([ + Select(PermissionManagementState.getPermissionGroups), + tslib_1.__metadata("design:type", Observable) +], PermissionManagementComponent.prototype, "groups$", void 0); +tslib_1.__decorate([ + Select(PermissionManagementState.getEntitiyDisplayName), + tslib_1.__metadata("design:type", Observable) +], PermissionManagementComponent.prototype, "entityName$", void 0); +if (false) { + /** @type {?} */ + PermissionManagementComponent.prototype.providerName; + /** @type {?} */ + PermissionManagementComponent.prototype.providerKey; + /** + * @type {?} + * @protected + */ + PermissionManagementComponent.prototype._visible; + /** @type {?} */ + PermissionManagementComponent.prototype.visibleChange; + /** @type {?} */ + PermissionManagementComponent.prototype.groups$; + /** @type {?} */ + PermissionManagementComponent.prototype.entityName$; + /** @type {?} */ + PermissionManagementComponent.prototype.selectedGroup; + /** @type {?} */ + PermissionManagementComponent.prototype.permissions; + /** @type {?} */ + PermissionManagementComponent.prototype.selectThisTab; + /** @type {?} */ + PermissionManagementComponent.prototype.selectAllTab; + /** @type {?} */ + PermissionManagementComponent.prototype.trackByFn; + /** + * @type {?} + * @private + */ + PermissionManagementComponent.prototype.store; + /** + * @type {?} + * @private + */ + PermissionManagementComponent.prototype.renderer; +} +/** + * @param {?} permissions + * @param {?} permission + * @return {?} + */ +function findMargin(permissions, permission) { + /** @type {?} */ + const parentPermission = permissions.find((/** + * @param {?} per + * @return {?} + */ + per => per.name === permission.parentName)); + if (parentPermission && parentPermission.parentName) { + /** @type {?} */ + let margin = 20; + return (margin += findMargin(permissions, parentPermission)); + } + return parentPermission ? 20 : 0; +} +/** + * @param {?} groups + * @return {?} + */ +function getPermissions(groups) { + return groups.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + (acc, val) => [...acc, ...val.permissions]), []); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1tYW5hZ2VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcucGVybWlzc2lvbi1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcGVybWlzc2lvbi1tYW5hZ2VtZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBUSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUNMLGtDQUFrQyxFQUNsQyxxQ0FBcUMsR0FDdEMsTUFBTSwwQ0FBMEMsQ0FBQztBQUVsRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQVFsRixNQUFNLE9BQU8sNkJBQTZCOzs7OztJQThEeEMsWUFBb0IsS0FBWSxFQUFVLFFBQW1CO1FBQXpDLFVBQUssR0FBTCxLQUFLLENBQU87UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBcEM3RCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFVNUMsZ0JBQVcsR0FBc0MsRUFBRSxDQUFDO1FBRXBELGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRS9CLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRTlCLGNBQVM7Ozs7O1FBQWdELENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQztJQW9CaEIsQ0FBQzs7OztJQXJEakUsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxD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Q0FBQyxXQUFXLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQztBQUN2RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRyYWNrQnlGdW5jdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBwbHVjaywgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIFBlcm1pc3Npb25NYW5hZ2VtZW50R2V0UGVybWlzc2lvbnMsXG4gIFBlcm1pc3Npb25NYW5hZ2VtZW50VXBkYXRlUGVybWlzc2lvbnMsXG59IGZyb20gJy4uL2FjdGlvbnMvcGVybWlzc2lvbi1tYW5hZ2VtZW50LmFjdGlvbnMnO1xuaW1wb3J0IHsgUGVybWlzc2lvbk1hbmFnZW1lbnQgfSBmcm9tICcuLi9tb2RlbHMvcGVybWlzc2lvbi1tYW5hZ2VtZW50JztcbmltcG9ydCB7IFBlcm1pc3Npb25NYW5hZ2VtZW50U3RhdGUgfSBmcm9tICcuLi9zdGF0ZXMvcGVybWlzc2lvbi1tYW5hZ2VtZW50LnN0YXRlJztcblxudHlwZSBQZXJtaXNzaW9uV2l0aE1hcmdpbiA9IFBlcm1pc3Npb25NYW5hZ2VtZW50LlBlcm1pc3Npb24gJiB7IG1hcmdpbjogbnVtYmVyIH07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FicC1wZXJtaXNzaW9uLW1hbmFnZW1lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGVybWlzc2lvbi1tYW5hZ2VtZW50LmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbk1hbmFnZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHByb3ZpZGVyTmFtZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHByb3ZpZGVyS2V5OiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIF92aXNpYmxlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xuICB9XG5cbiAgc2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRHcm91cCkgcmV0dXJuO1xuXG4gICAgdGhpcy5fdmlzaWJsZSA9IHZhbHVlO1xuICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHZhbHVlKTtcblxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgpXG4gIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQFNlbGVjdChQZXJtaXNzaW9uTWFuYWdlbWVudFN0YXRlLmdldFBlcm1pc3Npb25Hcm91cHMpXG4gIGdyb3VwcyQ6IE9ic2VydmFibGU8UGVybWlzc2lvbk1hbmFnZW1lbnQuR3JvdXBbXT47XG5cbiAgQFNlbGVjdChQZXJtaXNzaW9uTWFuYWdlbWVudFN0YXRlLmdldEVudGl0aXlEaXNwbGF5TmFtZSlcbiAgZW50aXR5TmFtZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBzZWxlY3RlZEdyb3VwOiBQZXJtaXNzaW9uTWFuYWdlbWVudC5Hcm91cDtcblxuICBwZXJtaXNzaW9uczogUGVybWlzc2lvbk1hbmFnZW1lbnQuUGVybWlzc2lvbltdID0gW107XG5cbiAgc2VsZWN0VGhpc1RhYjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHNlbGVjdEFsbFRhYjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHRyYWNrQnlGbjogVHJhY2tCeUZ1bmN0aW9uPFBlcm1pc3Npb25NYW5hZ2VtZW50Lkdyb3VwPiA9IChfLCBpdGVtKSA9PiBpdGVtLm5hbWU7XG5cbiAgZ2V0IHNlbGVjdGVkR3JvdXBQZXJtaXNzaW9ucyQoKTogT2JzZXJ2YWJsZTxQZXJtaXNzaW9uV2l0aE1hcmdpbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBzJC5waXBlKFxuICAgICAgbWFwKGdyb3VwcyA9PlxuICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXAgPyBncm91cHMuZmluZChncm91cCA9PiBncm91cC5uYW1lID09PSB0aGlzLnNlbGVjdGVkR3JvdXAubmFtZSkucGVybWlzc2lvbnMgOiBbXSxcbiAgICAgICksXG4gICAgICBtYXA8UGVybWlzc2lvbk1hbmFnZW1lbnQuUGVybWlzc2lvbltdLCBQZXJtaXNzaW9uV2l0aE1hcmdpbltdPihwZXJtaXNzaW9ucyA9PlxuICAgICAgICBwZXJtaXNzaW9ucy5tYXAoXG4gICAgICAgICAgcGVybWlzc2lvbiA9PlxuICAgICAgICAgICAgKCh7XG4gICAgICAgICAgICAgIC4uLnBlcm1pc3Npb24sXG4gICAgICAgICAgICAgIG1hcmdpbjogZmluZE1hcmdpbihwZXJtaXNzaW9ucywgcGVybWlzc2lvbiksXG4gICAgICAgICAgICAgIGlzR3JhbnRlZDogdGhpcy5wZXJtaXNzaW9ucy5maW5kKHBlciA9PiBwZXIubmFtZSA9PT0gcGVybWlzc2lvbi5uYW1lKS5pc0dyYW50ZWQsXG4gICAgICAgICAgICB9IGFzIGFueSkgYXMgUGVybWlzc2lvbldpdGhNYXJnaW4pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgZ2V0Q2hlY2tlZChuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKHRoaXMucGVybWlzc2lvbnMuZmluZChwZXIgPT4gcGVyLm5hbWUgPT09IG5hbWUpIHx8IHsgaXNHcmFudGVkOiBmYWxzZSB9KS5pc0dyYW50ZWQ7XG4gIH1cblxuICBvbkNsaWNrQ2hlY2tib3goY2xpY2tlZFBlcm1pc3Npb246IFBlcm1pc3Npb25NYW5hZ2VtZW50LlBlcm1pc3Npb24sIHZhbHVlKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnBlcm1pc3Npb25zID0gdGhpcy5wZXJtaXNzaW9ucy5tYXAocGVyID0+IHtcbiAgICAgICAgaWYgKGNsaWNrZWRQZXJtaXNzaW9uLm5hbWUgPT09IHBlci5uYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ucGVyLCBpc0dyYW50ZWQ6ICFwZXIuaXNHcmFudGVkIH07XG4gICAgICAgIH0gZWxzZSBpZiAoY2xpY2tlZFBlcm1pc3Npb24ubmFtZSA9PT0gcGVyLnBhcmVudE5hbWUgJiYgY2xpY2tlZFBlcm1pc3Npb24uaXNHcmFudGVkKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ucGVyLCBpc0dyYW50ZWQ6IGZhbHNlIH07XG4gICAgICAgIH0gZWxzZSBpZiAoY2xpY2tlZFBlcm1pc3Npb24ucGFyZW50TmFtZSA9PT0gcGVyLm5hbWUgJiYgIWNsaWNrZWRQZXJtaXNzaW9uLmlzR3JhbnRlZCkge1xuICAgICAgICAgIHJldHVybiB7IC4uLnBlciwgaXNHcmFudGVkOiB0cnVlIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGVyO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuc2V0VGFiQ2hlY2tib3hTdGF0ZSgpO1xuICAgICAgdGhpcy5zZXRHcmFudENoZWNrYm94U3RhdGUoKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHNldFRhYkNoZWNrYm94U3RhdGUoKSB7XG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwUGVybWlzc2lvbnMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHBlcm1pc3Npb25zID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkUGVybWlzc2lvbnMgPSBwZXJtaXNzaW9ucy5maWx0ZXIocGVyID0+IHBlci5pc0dyYW50ZWQpO1xuICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWxlY3QtYWxsLWluLXRoaXMtdGFicycpIGFzIGFueTtcblxuICAgICAgaWYgKHNlbGVjdGVkUGVybWlzc2lvbnMubGVuZ3RoID09PSBwZXJtaXNzaW9ucy5sZW5ndGgpIHtcbiAgICAgICAgZWxlbWVudC5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0VGhpc1RhYiA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkUGVybWlzc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGVsZW1lbnQuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNlbGVjdFRoaXNUYWIgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQuaW5kZXRlcm1pbmF0ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZXRHcmFudENoZWNrYm94U3RhdGUoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRBbGxQZXJtaXNzaW9ucyA9IHRoaXMucGVybWlzc2lvbnMuZmlsdGVyKHBlciA9PiBwZXIuaXNHcmFudGVkKTtcbiAgICBjb25zdCBjaGVja2JveEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2VsZWN0LWFsbC1pbi1hbGwtdGFicycpIGFzIGFueTtcblxuICAgIGlmIChzZWxlY3RlZEFsbFBlcm1pc3Npb25zLmxlbmd0aCA9PT0gdGhpcy5wZXJtaXNzaW9ucy5sZW5ndGgpIHtcbiAgICAgIGNoZWNrYm94RWxlbWVudC5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICB0aGlzLnNlbGVjdEFsbFRhYiA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZEFsbFBlcm1pc3Npb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY2hlY2tib3hFbGVtZW50LmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VsZWN0QWxsVGFiID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNoZWNrYm94RWxlbWVudC5pbmRldGVybWluYXRlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBvbkNsaWNrU2VsZWN0VGhpc1RhYigpIHtcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBQZXJtaXNzaW9ucyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocGVybWlzc2lvbnMgPT4ge1xuICAgICAgcGVybWlzc2lvbnMuZm9yRWFjaChwZXJtaXNzaW9uID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnBlcm1pc3Npb25zLmZpbmRJbmRleChwZXIgPT4gcGVyLm5hbWUgPT09IHBlcm1pc3Npb24ubmFtZSk7XG5cbiAgICAgICAgdGhpcy5wZXJtaXNzaW9ucyA9IFtcbiAgICAgICAgICAuLi50aGlzLnBlcm1pc3Npb25zLnNsaWNlKDAsIGluZGV4KSxcbiAgICAgICAgICB7IC4uLnRoaXMucGVybWlzc2lvbnNbaW5kZXhdLCBpc0dyYW50ZWQ6ICF0aGlzLnNlbGVjdFRoaXNUYWIgfSxcbiAgICAgICAgICAuLi50aGlzLnBlcm1pc3Npb25zLnNsaWNlKGluZGV4ICsgMSksXG4gICAgICAgIF07XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2V0R3JhbnRDaGVja2JveFN0YXRlKCk7XG4gIH1cblxuICBvbkNsaWNrU2VsZWN0QWxsKCkge1xuICAgIHRoaXMucGVybWlzc2lvbnMgPSB0aGlzLnBlcm1pc3Npb25zLm1hcChwZXJtaXNzaW9uID0+ICh7IC4uLnBlcm1pc3Npb24sIGlzR3JhbnRlZDogIXRoaXMuc2VsZWN0QWxsVGFiIH0pKTtcblxuICAgIHRoaXMuc2VsZWN0VGhpc1RhYiA9ICF0aGlzLnNlbGVjdEFsbFRhYjtcbiAgfVxuXG4gIG9uQ2hhbmdlR3JvdXAoZ3JvdXA6IFBlcm1pc3Npb25NYW5hZ2VtZW50Lkdyb3VwKSB7XG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwID0gZ3JvdXA7XG4gICAgdGhpcy5zZXRUYWJDaGVja2JveFN0YXRlKCk7XG4gIH1cblxuICBvblN1Ym1pdCgpIHtcbiAgICBjb25zdCB1bmNoYW5nZWRQZXJtaXNzaW9ucyA9IGdldFBlcm1pc3Npb25zKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChQZXJtaXNzaW9uTWFuYWdlbWVudFN0YXRlLmdldFBlcm1pc3Npb25Hcm91cHMpLFxuICAgICk7XG5cbiAgICBjb25zdCBjaGFuZ2VkUGVybWlzc2lvbnM6IFBlcm1pc3Npb25NYW5hZ2VtZW50Lk1pbmltdW1QZXJtaXNzaW9uW10gPSB0aGlzLnBlcm1pc3Npb25zXG4gICAgICAuZmlsdGVyKHBlciA9PlxuICAgICAgICB1bmNoYW5nZWRQZXJtaXNzaW9ucy5maW5kKHVuY2hhbmdlZCA9PiB1bmNoYW5nZWQubmFtZSA9PT0gcGVyLm5hbWUpLmlzR3JhbnRlZCA9PT0gcGVyLmlzR3JhbnRlZCA/IGZhbHNlIDogdHJ1ZSxcbiAgICAgIClcbiAgICAgIC5tYXAoKHsgbmFtZSwgaXNHcmFudGVkIH0pID0+ICh7IG5hbWUsIGlzR3JhbnRlZCB9KSk7XG5cbiAgICBpZiAoY2hhbmdlZFBlcm1pc3Npb25zLmxlbmd0aCkge1xuICAgICAgdGhpcy5zdG9yZVxuICAgICAgICAuZGlzcGF0Y2goXG4gICAgICAgICAgbmV3IFBlcm1pc3Npb25NYW5hZ2VtZW50VXBkYXRlUGVybWlzc2lvbnMoe1xuICAgICAgICAgICAgcHJvdmlkZXJLZXk6IHRoaXMucHJvdmlkZXJLZXksXG4gICAgICAgICAgICBwcm92aWRlck5hbWU6IHRoaXMucHJvdmlkZXJOYW1lLFxuICAgICAgICAgICAgcGVybWlzc2lvbnM6IGNoYW5nZWRQZXJtaXNzaW9ucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5Nb2RhbCgpIHtcbiAgICBpZiAoIXRoaXMucHJvdmlkZXJLZXkgfHwgIXRoaXMucHJvdmlkZXJOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb3ZpZGVyIEtleSBhbmQgUHJvdmlkZXIgTmFtZSBhcmUgcmVxdWlyZWQuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5zdG9yZVxuICAgICAgLmRpc3BhdGNoKFxuICAgICAgICBuZXcgUGVybWlzc2lvbk1hbmFnZW1lbnRHZXRQZXJtaXNzaW9ucyh7IHByb3ZpZGVyS2V5OiB0aGlzLnByb3ZpZGVyS2V5LCBwcm92aWRlck5hbWU6IHRoaXMucHJvdmlkZXJOYW1lIH0pLFxuICAgICAgKVxuICAgICAgLnBpcGUocGx1Y2soJ1Blcm1pc3Npb25NYW5hZ2VtZW50U3RhdGUnLCAncGVybWlzc2lvblJlcycpKVxuICAgICAgLnN1YnNjcmliZSgocGVybWlzc2lvblJlczogUGVybWlzc2lvbk1hbmFnZW1lbnQuUmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwID0gcGVybWlzc2lvblJlcy5ncm91cHNbMF07XG4gICAgICAgIHRoaXMucGVybWlzc2lvbnMgPSBnZXRQZXJtaXNzaW9ucyhwZXJtaXNzaW9uUmVzLmdyb3Vwcyk7XG5cbiAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNldFRhYkNoZWNrYm94U3RhdGUoKTtcbiAgICAgICAgICB0aGlzLnNldEdyYW50Q2hlY2tib3hTdGF0ZSgpO1xuICAgICAgICB9LCAwKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoeyB2aXNpYmxlIH06IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoIXZpc2libGUpIHJldHVybjtcblxuICAgIGlmICh2aXNpYmxlLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5vcGVuTW9kYWwoKTtcbiAgICB9IGVsc2UgaWYgKHZpc2libGUuY3VycmVudFZhbHVlID09PSBmYWxzZSAmJiB0aGlzLnZpc2libGUpIHtcbiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5kTWFyZ2luKHBlcm1pc3Npb25zOiBQZXJtaXNzaW9uTWFuYWdlbWVudC5QZXJtaXNzaW9uW10sIHBlcm1pc3Npb246IFBlcm1pc3Npb25NYW5hZ2VtZW50LlBlcm1pc3Npb24pIHtcbiAgY29uc3QgcGFyZW50UGVybWlzc2lvbiA9IHBlcm1pc3Npb25zLmZpbmQocGVyID0+IHBlci5uYW1lID09PSBwZXJtaXNzaW9uLnBhcmVudE5hbWUpO1xuXG4gIGlmIChwYXJlbnRQZXJtaXNzaW9uICYmIHBhcmVudFBlcm1pc3Npb24ucGFyZW50TmFtZSkge1xuICAgIGxldCBtYXJnaW4gPSAyMDtcbiAgICByZXR1cm4gKG1hcmdpbiArPSBmaW5kTWFyZ2luKHBlcm1pc3Npb25zLCBwYXJlbnRQZXJtaXNzaW9uKSk7XG4gIH1cblxuICByZXR1cm4gcGFyZW50UGVybWlzc2lvbiA/IDIwIDogMDtcbn1cblxuZnVuY3Rpb24gZ2V0UGVybWlzc2lvbnMoZ3JvdXBzOiBQZXJtaXNzaW9uTWFuYWdlbWVudC5Hcm91cFtdKTogUGVybWlzc2lvbk1hbmFnZW1lbnQuUGVybWlzc2lvbltdIHtcbiAgcmV0dXJuIGdyb3Vwcy5yZWR1Y2UoKGFjYywgdmFsKSA9PiBbLi4uYWNjLCAuLi52YWwucGVybWlzc2lvbnNdLCBbXSk7XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm2015/lib/models/index.js b/npm/ng-packs/dist/permission-management/esm2015/lib/models/index.js new file mode 100644 index 00000000000..99d61c06567 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm2015/lib/models/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export {} from './permission-management'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnBlcm1pc3Npb24tbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGVBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Blcm1pc3Npb24tbWFuYWdlbWVudCc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm2015/lib/models/permission-management.js b/npm/ng-packs/dist/permission-management/esm2015/lib/models/permission-management.js new file mode 100644 index 00000000000..bfd73caae2c --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm2015/lib/models/permission-management.js @@ -0,0 +1,87 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var PermissionManagement; +(function (PermissionManagement) { + /** + * @record + */ + function State() { } + PermissionManagement.State = State; + if (false) { + /** @type {?} */ + State.prototype.permissionRes; + } + /** + * @record + */ + function Response() { } + PermissionManagement.Response = Response; + if (false) { + /** @type {?} */ + Response.prototype.entityDisplayName; + /** @type {?} */ + Response.prototype.groups; + } + /** + * @record + */ + function Group() { } + PermissionManagement.Group = Group; + if (false) { + /** @type {?} */ + Group.prototype.name; + /** @type {?} */ + Group.prototype.displayName; + /** @type {?} */ + Group.prototype.permissions; + } + /** + * @record + */ + function MinimumPermission() { } + PermissionManagement.MinimumPermission = MinimumPermission; + if (false) { + /** @type {?} */ + MinimumPermission.prototype.name; + /** @type {?} */ + MinimumPermission.prototype.isGranted; + } + /** + * @record + */ + function Permission() { } + PermissionManagement.Permission = Permission; + if (false) { + /** @type {?} */ + Permission.prototype.displayName; + /** @type {?} */ + Permission.prototype.parentName; + /** @type {?} */ + Permission.prototype.allowedProviders; + /** @type {?} */ + Permission.prototype.grantedProviders; + } + /** + * @record + */ + function GrantedProvider() { } + PermissionManagement.GrantedProvider = GrantedProvider; + if (false) { + /** @type {?} */ + GrantedProvider.prototype.providerName; + /** @type {?} */ + GrantedProvider.prototype.providerKey; + } + /** + * @record + */ + function UpdateRequest() { } + PermissionManagement.UpdateRequest = UpdateRequest; + if (false) { + /** @type {?} */ + UpdateRequest.prototype.permissions; + } +})(PermissionManagement || (PermissionManagement = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1tYW5hZ2VtZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5wZXJtaXNzaW9uLW1hbmFnZW1lbnQvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzL3Blcm1pc3Npb24tbWFuYWdlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsTUFBTSxLQUFXLG9CQUFvQixDQW9DcEM7QUFwQ0QsV0FBaUIsb0JBQW9COzs7O0lBQ25DLG9CQUVDOzs7O1FBREMsOEJBQXdCOzs7OztJQUcxQix1QkFHQzs7OztRQUZDLHFDQUEwQjs7UUFDMUIsMEJBQWdCOzs7OztJQUdsQixvQkFJQzs7OztRQUhDLHFCQUFhOztRQUNiLDRCQUFvQjs7UUFDcEIsNEJBQTBCOzs7OztJQUc1QixnQ0FHQzs7OztRQUZDLGlDQUFhOztRQUNiLHNDQUFtQjs7Ozs7SUFHckIseUJBS0M7Ozs7UUFKQyxpQ0FBb0I7O1FBQ3BCLGdDQUFtQjs7UUFDbkIsc0NBQTJCOztRQUMzQixzQ0FBb0M7Ozs7O0lBR3RDLDhCQUdDOzs7O1FBRkMsdUNBQXFCOztRQUNyQixzQ0FBb0I7Ozs7O0lBR3RCLDRCQUVDOzs7O1FBREMsb0NBQWlDOztBQUVyQyxDQUFDLEVBcENnQixvQkFBb0IsS0FBcEIsb0JBQW9CLFFBb0NwQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBuYW1lc3BhY2UgUGVybWlzc2lvbk1hbmFnZW1lbnQge1xuICBleHBvcnQgaW50ZXJmYWNlIFN0YXRlIHtcbiAgICBwZXJtaXNzaW9uUmVzOiBSZXNwb25zZTtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUmVzcG9uc2Uge1xuICAgIGVudGl0eURpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgZ3JvdXBzOiBHcm91cFtdO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBHcm91cCB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25bXTtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTWluaW11bVBlcm1pc3Npb24ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpc0dyYW50ZWQ6IGJvb2xlYW47XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb24gZXh0ZW5kcyBNaW5pbXVtUGVybWlzc2lvbiB7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBwYXJlbnROYW1lOiBzdHJpbmc7XG4gICAgYWxsb3dlZFByb3ZpZGVyczogc3RyaW5nW107XG4gICAgZ3JhbnRlZFByb3ZpZGVyczogR3JhbnRlZFByb3ZpZGVyW107XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEdyYW50ZWRQcm92aWRlciB7XG4gICAgcHJvdmlkZXJOYW1lOiBzdHJpbmc7XG4gICAgcHJvdmlkZXJLZXk6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlUmVxdWVzdCB7XG4gICAgcGVybWlzc2lvbnM6IE1pbmltdW1QZXJtaXNzaW9uW107XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm2015/lib/permission-management.module.js b/npm/ng-packs/dist/permission-management/esm2015/lib/permission-management.module.js new file mode 100644 index 00000000000..d9a57749157 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm2015/lib/permission-management.module.js @@ -0,0 +1,21 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { CoreModule } from '@abp/ng.core'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { NgModule } from '@angular/core'; +import { NgxsModule } from '@ngxs/store'; +import { PermissionManagementComponent } from './components/permission-management.component'; +import { PermissionManagementState } from './states/permission-management.state'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; +export class PermissionManagementModule { +} +PermissionManagementModule.decorators = [ + { type: NgModule, args: [{ + declarations: [PermissionManagementComponent], + imports: [CoreModule, ThemeSharedModule, NgxsModule.forFeature([PermissionManagementState]), PerfectScrollbarModule], + exports: [PermissionManagementComponent], + },] } +]; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1tYW5hZ2VtZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcucGVybWlzc2lvbi1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL3Blcm1pc3Npb24tbWFuYWdlbWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzdGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBTy9ELE1BQU0sT0FBTywwQkFBMEI7OztZQUx0QyxRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFLENBQUMsNkJBQTZCLENBQUM7Z0JBQzdDLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDO2dCQUNwSCxPQUFPLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQzthQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgVGhlbWVTaGFyZWRNb2R1bGUgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd4c01vZHVsZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IFBlcm1pc3Npb25NYW5hZ2VtZW50Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Blcm1pc3Npb24tbWFuYWdlbWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGVybWlzc2lvbk1hbmFnZW1lbnRTdGF0ZSB9IGZyb20gJy4vc3RhdGVzL3Blcm1pc3Npb24tbWFuYWdlbWVudC5zdGF0ZSc7XG5pbXBvcnQgeyBQZXJmZWN0U2Nyb2xsYmFyTW9kdWxlIH0gZnJvbSAnbmd4LXBlcmZlY3Qtc2Nyb2xsYmFyJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbUGVybWlzc2lvbk1hbmFnZW1lbnRDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29yZU1vZHVsZSwgVGhlbWVTaGFyZWRNb2R1bGUsIE5neHNNb2R1bGUuZm9yRmVhdHVyZShbUGVybWlzc2lvbk1hbmFnZW1lbnRTdGF0ZV0pLCBQZXJmZWN0U2Nyb2xsYmFyTW9kdWxlXSxcbiAgZXhwb3J0czogW1Blcm1pc3Npb25NYW5hZ2VtZW50Q29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbk1hbmFnZW1lbnRNb2R1bGUge31cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm2015/lib/services/index.js b/npm/ng-packs/dist/permission-management/esm2015/lib/services/index.js new file mode 100644 index 00000000000..1813272cf33 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm2015/lib/services/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { PermissionManagementService } from './permission-management.service'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnBlcm1pc3Npb24tbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsNENBQWMsaUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Blcm1pc3Npb24tbWFuYWdlbWVudC5zZXJ2aWNlJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm2015/lib/services/permission-management.service.js b/npm/ng-packs/dist/permission-management/esm2015/lib/services/permission-management.service.js new file mode 100644 index 00000000000..41c87cd2972 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm2015/lib/services/permission-management.service.js @@ -0,0 +1,61 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { RestService } from '@abp/ng.core'; +import * as i0 from "@angular/core"; +import * as i1 from "@abp/ng.core"; +export class PermissionManagementService { + /** + * @param {?} rest + */ + constructor(rest) { + this.rest = rest; + } + /** + * @param {?} params + * @return {?} + */ + getPermissions(params) { + /** @type {?} */ + const request = { + method: 'GET', + url: '/api/abp/permissions', + params, + }; + return this.rest.request(request); + } + /** + * @param {?} __0 + * @return {?} + */ + updatePermissions({ permissions, providerKey, providerName, }) { + /** @type {?} */ + const request = { + method: 'PUT', + url: '/api/abp/permissions', + body: { permissions }, + params: { providerKey, providerName }, + }; + return this.rest.request(request); + } +} +PermissionManagementService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +PermissionManagementService.ctorParameters = () => [ + { type: RestService } +]; +/** @nocollapse */ PermissionManagementService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PermissionManagementService_Factory() { return new PermissionManagementService(i0.ɵɵinject(i1.RestService)); }, token: PermissionManagementService, providedIn: "root" }); +if (false) { + /** + * @type {?} + * @private + */ + PermissionManagementService.prototype.rest; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1tYW5hZ2VtZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnBlcm1pc3Npb24tbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9wZXJtaXNzaW9uLW1hbmFnZW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFRLE1BQU0sY0FBYyxDQUFDOzs7QUFPakQsTUFBTSxPQUFPLDJCQUEyQjs7OztJQUN0QyxZQUFvQixJQUFpQjtRQUFqQixTQUFJLEdBQUosSUFBSSxDQUFhO0lBQUcsQ0FBQzs7Ozs7SUFFekMsY0FBYyxDQUFDLE1BQTRDOztjQUNuRCxPQUFPLEdBQXVEO1lBQ2xFLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxFQUFFLHNCQUFzQjtZQUMzQixNQUFNO1NBQ1A7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFzRSxPQUFPLENBQUMsQ0FBQztJQUN6RyxDQUFDOzs7OztJQUVELGlCQUFpQixDQUFDLEVBQ2hCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxHQUM4RDs7Y0FDcEUsT0FBTyxHQUFxRDtZQUNoRSxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsRUFBRSxzQkFBc0I7WUFDM0IsSUFBSSxFQUFFLEVBQUUsV0FBVyxFQUFFO1lBQ3JCLE1BQU0sRUFBRSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUU7U0FDdEM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUEyQyxPQUFPLENBQUMsQ0FBQztJQUM5RSxDQUFDOzs7WUE3QkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBTlEsV0FBVzs7Ozs7Ozs7SUFRTiwyQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXN0U2VydmljZSwgUmVzdCB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uTWFuYWdlbWVudCB9IGZyb20gJy4uL21vZGVscy9wZXJtaXNzaW9uLW1hbmFnZW1lbnQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbk1hbmFnZW1lbnRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0OiBSZXN0U2VydmljZSkge31cblxuICBnZXRQZXJtaXNzaW9ucyhwYXJhbXM6IFBlcm1pc3Npb25NYW5hZ2VtZW50LkdyYW50ZWRQcm92aWRlcik6IE9ic2VydmFibGU8UGVybWlzc2lvbk1hbmFnZW1lbnQuUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8UGVybWlzc2lvbk1hbmFnZW1lbnQuR3JhbnRlZFByb3ZpZGVyPiA9IHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB1cmw6ICcvYXBpL2FicC9wZXJtaXNzaW9ucycsXG4gICAgICBwYXJhbXMsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDxQZXJtaXNzaW9uTWFuYWdlbWVudC5HcmFudGVkUHJvdmlkZXIsIFBlcm1pc3Npb25NYW5hZ2VtZW50LlJlc3BvbnNlPihyZXF1ZXN0KTtcbiAgfVxuXG4gIHVwZGF0ZVBlcm1pc3Npb25zKHtcbiAgICBwZXJtaXNzaW9ucyxcbiAgICBwcm92aWRlcktleSxcbiAgICBwcm92aWRlck5hbWUsXG4gIH06IFBlcm1pc3Npb25NYW5hZ2VtZW50LkdyYW50ZWRQcm92aWRlciAmIFBlcm1pc3Npb25NYW5hZ2VtZW50LlVwZGF0ZVJlcXVlc3QpOiBPYnNlcnZhYmxlPG51bGw+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8UGVybWlzc2lvbk1hbmFnZW1lbnQuVXBkYXRlUmVxdWVzdD4gPSB7XG4gICAgICBtZXRob2Q6ICdQVVQnLFxuICAgICAgdXJsOiAnL2FwaS9hYnAvcGVybWlzc2lvbnMnLFxuICAgICAgYm9keTogeyBwZXJtaXNzaW9ucyB9LFxuICAgICAgcGFyYW1zOiB7IHByb3ZpZGVyS2V5LCBwcm92aWRlck5hbWUgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PFBlcm1pc3Npb25NYW5hZ2VtZW50LlVwZGF0ZVJlcXVlc3QsIG51bGw+KHJlcXVlc3QpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm2015/lib/states/index.js b/npm/ng-packs/dist/permission-management/esm2015/lib/states/index.js new file mode 100644 index 00000000000..8e0527250a1 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm2015/lib/states/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { PermissionManagementState } from "./permission-management.state"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnBlcm1pc3Npb24tbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9zdGF0ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDBDQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcGVybWlzc2lvbi1tYW5hZ2VtZW50LnN0YXRlXCI7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm2015/lib/states/permission-management.state.js b/npm/ng-packs/dist/permission-management/esm2015/lib/states/permission-management.state.js new file mode 100644 index 00000000000..8b412f6329e --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm2015/lib/states/permission-management.state.js @@ -0,0 +1,93 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { State, Action, Selector } from '@ngxs/store'; +import { PermissionManagementGetPermissions, PermissionManagementUpdatePermissions, } from '../actions/permission-management.actions'; +import { PermissionManagementService } from '../services/permission-management.service'; +import { tap } from 'rxjs/operators'; +let PermissionManagementState = class PermissionManagementState { + /** + * @param {?} permissionManagementService + */ + constructor(permissionManagementService) { + this.permissionManagementService = permissionManagementService; + } + /** + * @param {?} __0 + * @return {?} + */ + static getPermissionGroups({ permissionRes }) { + return permissionRes.groups || []; + } + /** + * @param {?} __0 + * @return {?} + */ + static getEntitiyDisplayName({ permissionRes }) { + return permissionRes.entityDisplayName; + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + permissionManagementGet({ patchState }, { payload }) { + return this.permissionManagementService.getPermissions(payload).pipe(tap((/** + * @param {?} permissionResponse + * @return {?} + */ + permissionResponse => patchState({ + permissionRes: permissionResponse, + })))); + } + /** + * @param {?} _ + * @param {?} __1 + * @return {?} + */ + permissionManagementUpdate(_, { payload }) { + return this.permissionManagementService.updatePermissions(payload); + } +}; +tslib_1.__decorate([ + Action(PermissionManagementGetPermissions), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, PermissionManagementGetPermissions]), + tslib_1.__metadata("design:returntype", void 0) +], PermissionManagementState.prototype, "permissionManagementGet", null); +tslib_1.__decorate([ + Action(PermissionManagementUpdatePermissions), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, PermissionManagementUpdatePermissions]), + tslib_1.__metadata("design:returntype", void 0) +], PermissionManagementState.prototype, "permissionManagementUpdate", null); +tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", void 0) +], PermissionManagementState, "getPermissionGroups", null); +tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", String) +], PermissionManagementState, "getEntitiyDisplayName", null); +PermissionManagementState = tslib_1.__decorate([ + State({ + name: 'PermissionManagementState', + defaults: (/** @type {?} */ ({ permissionRes: {} })), + }), + tslib_1.__metadata("design:paramtypes", [PermissionManagementService]) +], PermissionManagementState); +export { PermissionManagementState }; +if (false) { + /** + * @type {?} + * @private + */ + PermissionManagementState.prototype.permissionManagementService; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1tYW5hZ2VtZW50LnN0YXRlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5wZXJtaXNzaW9uLW1hbmFnZW1lbnQvIiwic291cmNlcyI6WyJsaWIvc3RhdGVzL3Blcm1pc3Npb24tbWFuYWdlbWVudC5zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFnQixRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUNMLGtDQUFrQyxFQUNsQyxxQ0FBcUMsR0FDdEMsTUFBTSwwQ0FBMEMsQ0FBQztBQUVsRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN4RixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7SUFNeEIseUJBQXlCLFNBQXpCLHlCQUF5Qjs7OztJQVdwQyxZQUFvQiwyQkFBd0Q7UUFBeEQsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtJQUFHLENBQUM7Ozs7O0lBVGhGLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLGFBQWEsRUFBOEI7UUFDdEUsT0FBTyxhQUFhLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDOzs7OztJQUdELE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLGFBQWEsRUFBOEI7UUFDeEUsT0FBTyxhQUFhLENBQUMsaUJBQWlCLENBQUM7SUFDekMsQ0FBQzs7Ozs7O0lBS0QsdUJBQXVCLENBQ3JCLEVBQUUsVUFBVSxFQUE0QyxFQUN4RCxFQUFFLE9BQU8sRUFBc0M7UUFFL0MsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDbEUsR0FBRzs7OztRQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FDdkIsVUFBVSxDQUFDO1lBQ1QsYUFBYSxFQUFFLGtCQUFrQjtTQUNsQyxDQUFDLEVBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7Ozs7O0lBR0QsMEJBQTBCLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUF5QztRQUM5RSxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0YsQ0FBQTtBQWpCQztJQURDLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQzs7cURBRzVCLGtDQUFrQzs7d0VBU2hEO0FBR0Q7SUFEQyxNQUFNLENBQUMscUNBQXFDLENBQUM7O3FEQUNILHFDQUFxQzs7MkVBRS9FO0FBNUJEO0lBREMsUUFBUSxFQUFFOzs7OzBEQUdWO0FBR0Q7SUFEQyxRQUFRLEVBQUU7Ozs7NERBR1Y7QUFUVSx5QkFBeUI7SUFKckMsS0FBSyxDQUE2QjtRQUNqQyxJQUFJLEVBQUUsMkJBQTJCO1FBQ2pDLFFBQVEsRUFBRSxtQkFBQSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsRUFBOEI7S0FDOUQsQ0FBQzs2Q0FZaUQsMkJBQTJCO0dBWGpFLHlCQUF5QixDQStCckM7U0EvQlkseUJBQXlCOzs7Ozs7SUFXeEIsZ0VBQWdFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhdGUsIEFjdGlvbiwgU3RhdGVDb250ZXh0LCBTZWxlY3RvciB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7XG4gIFBlcm1pc3Npb25NYW5hZ2VtZW50R2V0UGVybWlzc2lvbnMsXG4gIFBlcm1pc3Npb25NYW5hZ2VtZW50VXBkYXRlUGVybWlzc2lvbnMsXG59IGZyb20gJy4uL2FjdGlvbnMvcGVybWlzc2lvbi1tYW5hZ2VtZW50LmFjdGlvbnMnO1xuaW1wb3J0IHsgUGVybWlzc2lvbk1hbmFnZW1lbnQgfSBmcm9tICcuLi9tb2RlbHMvcGVybWlzc2lvbi1tYW5hZ2VtZW50JztcbmltcG9ydCB7IFBlcm1pc3Npb25NYW5hZ2VtZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Blcm1pc3Npb24tbWFuYWdlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQFN0YXRlPFBlcm1pc3Npb25NYW5hZ2VtZW50LlN0YXRlPih7XG4gIG5hbWU6ICdQZXJtaXNzaW9uTWFuYWdlbWVudFN0YXRlJyxcbiAgZGVmYXVsdHM6IHsgcGVybWlzc2lvblJlczoge30gfSBhcyBQZXJtaXNzaW9uTWFuYWdlbWVudC5TdGF0ZSxcbn0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbk1hbmFnZW1lbnRTdGF0ZSB7XG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRQZXJtaXNzaW9uR3JvdXBzKHsgcGVybWlzc2lvblJlcyB9OiBQZXJtaXNzaW9uTWFuYWdlbWVudC5TdGF0ZSkge1xuICAgIHJldHVybiBwZXJtaXNzaW9uUmVzLmdyb3VwcyB8fCBbXTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRFbnRpdGl5RGlzcGxheU5hbWUoeyBwZXJtaXNzaW9uUmVzIH06IFBlcm1pc3Npb25NYW5hZ2VtZW50LlN0YXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGVybWlzc2lvblJlcy5lbnRpdHlEaXNwbGF5TmFtZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGVybWlzc2lvbk1hbmFnZW1lbnRTZXJ2aWNlOiBQZXJtaXNzaW9uTWFuYWdlbWVudFNlcnZpY2UpIHt9XG5cbiAgQEFjdGlvbihQZXJtaXNzaW9uTWFuYWdlbWVudEdldFBlcm1pc3Npb25zKVxuICBwZXJtaXNzaW9uTWFuYWdlbWVudEdldChcbiAgICB7IHBhdGNoU3RhdGUgfTogU3RhdGVDb250ZXh0PFBlcm1pc3Npb25NYW5hZ2VtZW50LlN0YXRlPixcbiAgICB7IHBheWxvYWQgfTogUGVybWlzc2lvbk1hbmFnZW1lbnRHZXRQZXJtaXNzaW9ucyxcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMucGVybWlzc2lvbk1hbmFnZW1lbnRTZXJ2aWNlLmdldFBlcm1pc3Npb25zKHBheWxvYWQpLnBpcGUoXG4gICAgICB0YXAocGVybWlzc2lvblJlc3BvbnNlID0+XG4gICAgICAgIHBhdGNoU3RhdGUoe1xuICAgICAgICAgIHBlcm1pc3Npb25SZXM6IHBlcm1pc3Npb25SZXNwb25zZSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBAQWN0aW9uKFBlcm1pc3Npb25NYW5hZ2VtZW50VXBkYXRlUGVybWlzc2lvbnMpXG4gIHBlcm1pc3Npb25NYW5hZ2VtZW50VXBkYXRlKF8sIHsgcGF5bG9hZCB9OiBQZXJtaXNzaW9uTWFuYWdlbWVudFVwZGF0ZVBlcm1pc3Npb25zKSB7XG4gICAgcmV0dXJuIHRoaXMucGVybWlzc2lvbk1hbmFnZW1lbnRTZXJ2aWNlLnVwZGF0ZVBlcm1pc3Npb25zKHBheWxvYWQpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm2015/public-api.js b/npm/ng-packs/dist/permission-management/esm2015/public-api.js new file mode 100644 index 00000000000..e2c955262e9 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm2015/public-api.js @@ -0,0 +1,14 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/* + * Public API Surface of permission-management + */ +export { PermissionManagementModule } from './lib/permission-management.module'; +export { PermissionManagementGetPermissions, PermissionManagementUpdatePermissions } from './lib/actions'; +export { PermissionManagementComponent } from './lib/components'; +export {} from './lib/models'; +export { PermissionManagementService } from './lib/services'; +export { PermissionManagementState } from './lib/states'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcucGVybWlzc2lvbi1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsicHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsMkNBQWMsb0NBQW9DLENBQUM7QUFDbkQsMEZBQWMsZUFBZSxDQUFDO0FBQzlCLDhDQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGVBQWMsY0FBYyxDQUFDO0FBQzdCLDRDQUFjLGdCQUFnQixDQUFDO0FBQy9CLDBDQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgcGVybWlzc2lvbi1tYW5hZ2VtZW50XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGVybWlzc2lvbi1tYW5hZ2VtZW50Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY3Rpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXRlcyc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm5/abp-ng.permission-management.js b/npm/ng-packs/dist/permission-management/esm5/abp-ng.permission-management.js new file mode 100644 index 00000000000..4c6723512d2 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm5/abp-ng.permission-management.js @@ -0,0 +1,13 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { PermissionManagementModule, PermissionManagementGetPermissions, PermissionManagementUpdatePermissions, PermissionManagementComponent, PermissionManagementService, PermissionManagementState } from './public-api'; +export { PermissionManagementGetPermissions as ɵd, PermissionManagementUpdatePermissions as ɵe } from './lib/actions/permission-management.actions'; +export { PermissionManagementComponent as ɵa } from './lib/components/permission-management.component'; +export { PermissionManagementService as ɵc } from './lib/services/permission-management.service'; +export { PermissionManagementState as ɵb } from './lib/states/permission-management.state'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLnBlcm1pc3Npb24tbWFuYWdlbWVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcucGVybWlzc2lvbi1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsiYWJwLW5nLnBlcm1pc3Npb24tbWFuYWdlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsNk1BQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxrQ0FBa0MsSUFBSSxFQUFFLEVBQUMscUNBQXFDLElBQUksRUFBRSxFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDakosT0FBTyxFQUFDLDZCQUE2QixJQUFJLEVBQUUsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBRXJHLE9BQU8sRUFBQywyQkFBMkIsSUFBSSxFQUFFLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUMvRixPQUFPLEVBQUMseUJBQXlCLElBQUksRUFBRSxFQUFDLE1BQU0sMENBQTBDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG5cbmV4cG9ydCB7UGVybWlzc2lvbk1hbmFnZW1lbnRHZXRQZXJtaXNzaW9ucyBhcyDJtWQsUGVybWlzc2lvbk1hbmFnZW1lbnRVcGRhdGVQZXJtaXNzaW9ucyBhcyDJtWV9IGZyb20gJy4vbGliL2FjdGlvbnMvcGVybWlzc2lvbi1tYW5hZ2VtZW50LmFjdGlvbnMnO1xuZXhwb3J0IHtQZXJtaXNzaW9uTWFuYWdlbWVudENvbXBvbmVudCBhcyDJtWF9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGVybWlzc2lvbi1tYW5hZ2VtZW50LmNvbXBvbmVudCc7XG5leHBvcnQge1Blcm1pc3Npb25NYW5hZ2VtZW50IGFzIMm1Zn0gZnJvbSAnLi9saWIvbW9kZWxzL3Blcm1pc3Npb24tbWFuYWdlbWVudCc7XG5leHBvcnQge1Blcm1pc3Npb25NYW5hZ2VtZW50U2VydmljZSBhcyDJtWN9IGZyb20gJy4vbGliL3NlcnZpY2VzL3Blcm1pc3Npb24tbWFuYWdlbWVudC5zZXJ2aWNlJztcbmV4cG9ydCB7UGVybWlzc2lvbk1hbmFnZW1lbnRTdGF0ZSBhcyDJtWJ9IGZyb20gJy4vbGliL3N0YXRlcy9wZXJtaXNzaW9uLW1hbmFnZW1lbnQuc3RhdGUnOyJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm5/lib/actions/index.js b/npm/ng-packs/dist/permission-management/esm5/lib/actions/index.js new file mode 100644 index 00000000000..314c92ddc46 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm5/lib/actions/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { PermissionManagementGetPermissions, PermissionManagementUpdatePermissions } from './permission-management.actions'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnBlcm1pc3Npb24tbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9hY3Rpb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSwwRkFBYyxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGVybWlzc2lvbi1tYW5hZ2VtZW50LmFjdGlvbnMnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm5/lib/actions/permission-management.actions.js b/npm/ng-packs/dist/permission-management/esm5/lib/actions/permission-management.actions.js new file mode 100644 index 00000000000..e6a51d91b29 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm5/lib/actions/permission-management.actions.js @@ -0,0 +1,33 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var PermissionManagementGetPermissions = /** @class */ (function () { + function PermissionManagementGetPermissions(payload) { + this.payload = payload; + } + PermissionManagementGetPermissions.type = '[PermissionManagement] Get Permissions'; + return PermissionManagementGetPermissions; +}()); +export { PermissionManagementGetPermissions }; +if (false) { + /** @type {?} */ + PermissionManagementGetPermissions.type; + /** @type {?} */ + PermissionManagementGetPermissions.prototype.payload; +} +var PermissionManagementUpdatePermissions = /** @class */ (function () { + function PermissionManagementUpdatePermissions(payload) { + this.payload = payload; + } + PermissionManagementUpdatePermissions.type = '[PermissionManagement] Update Permissions'; + return PermissionManagementUpdatePermissions; +}()); +export { PermissionManagementUpdatePermissions }; +if (false) { + /** @type {?} */ + PermissionManagementUpdatePermissions.type; + /** @type {?} */ + PermissionManagementUpdatePermissions.prototype.payload; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1tYW5hZ2VtZW50LmFjdGlvbnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnBlcm1pc3Npb24tbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9hY3Rpb25zL3Blcm1pc3Npb24tbWFuYWdlbWVudC5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQTtJQUVFLDRDQUFtQixPQUE2QztRQUE3QyxZQUFPLEdBQVAsT0FBTyxDQUFzQztJQUFHLENBQUM7SUFEcEQsdUNBQUksR0FBRyx3Q0FBd0MsQ0FBQztJQUVsRSx5Q0FBQztDQUFBLEFBSEQsSUFHQztTQUhZLGtDQUFrQzs7O0lBQzdDLHdDQUFnRTs7SUFDcEQscURBQW9EOztBQUdsRTtJQUVFLCtDQUFtQixPQUFrRjtRQUFsRixZQUFPLEdBQVAsT0FBTyxDQUEyRTtJQUFHLENBQUM7SUFEekYsMENBQUksR0FBRywyQ0FBMkMsQ0FBQztJQUVyRSw0Q0FBQztDQUFBLEFBSEQsSUFHQztTQUhZLHFDQUFxQzs7O0lBQ2hELDJDQUFtRTs7SUFDdkQsd0RBQXlGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGVybWlzc2lvbk1hbmFnZW1lbnQgfSBmcm9tICcuLi9tb2RlbHMvcGVybWlzc2lvbi1tYW5hZ2VtZW50JztcblxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25NYW5hZ2VtZW50R2V0UGVybWlzc2lvbnMge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbUGVybWlzc2lvbk1hbmFnZW1lbnRdIEdldCBQZXJtaXNzaW9ucyc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBQZXJtaXNzaW9uTWFuYWdlbWVudC5HcmFudGVkUHJvdmlkZXIpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uTWFuYWdlbWVudFVwZGF0ZVBlcm1pc3Npb25zIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1Blcm1pc3Npb25NYW5hZ2VtZW50XSBVcGRhdGUgUGVybWlzc2lvbnMnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogUGVybWlzc2lvbk1hbmFnZW1lbnQuR3JhbnRlZFByb3ZpZGVyICYgUGVybWlzc2lvbk1hbmFnZW1lbnQuVXBkYXRlUmVxdWVzdCkge31cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm5/lib/components/index.js b/npm/ng-packs/dist/permission-management/esm5/lib/components/index.js new file mode 100644 index 00000000000..95380b6151f --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm5/lib/components/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { PermissionManagementComponent } from './permission-management.component'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnBlcm1pc3Npb24tbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw4Q0FBYyxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGVybWlzc2lvbi1tYW5hZ2VtZW50LmNvbXBvbmVudCc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm5/lib/components/permission-management.component.js b/npm/ng-packs/dist/permission-management/esm5/lib/components/permission-management.component.js new file mode 100644 index 00000000000..21c59499f86 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm5/lib/components/permission-management.component.js @@ -0,0 +1,459 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Component, EventEmitter, Input, Output, Renderer2, } from '@angular/core'; +import { Select, Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { map, pluck, take } from 'rxjs/operators'; +import { PermissionManagementGetPermissions, PermissionManagementUpdatePermissions, } from '../actions/permission-management.actions'; +import { PermissionManagementState } from '../states/permission-management.state'; +var PermissionManagementComponent = /** @class */ (function () { + function PermissionManagementComponent(store, renderer) { + this.store = store; + this.renderer = renderer; + this.visibleChange = new EventEmitter(); + this.permissions = []; + this.selectThisTab = false; + this.selectAllTab = false; + this.trackByFn = (/** + * @param {?} _ + * @param {?} item + * @return {?} + */ + function (_, item) { return item.name; }); + } + Object.defineProperty(PermissionManagementComponent.prototype, "visible", { + get: /** + * @return {?} + */ + function () { + return this._visible; + }, + set: /** + * @param {?} value + * @return {?} + */ + function (value) { + if (!this.selectedGroup) + return; + this._visible = value; + this.visibleChange.emit(value); + if (!value) { + this.selectedGroup = null; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(PermissionManagementComponent.prototype, "selectedGroupPermissions$", { + get: /** + * @return {?} + */ + function () { + var _this = this; + return this.groups$.pipe(map((/** + * @param {?} groups + * @return {?} + */ + function (groups) { + return _this.selectedGroup ? groups.find((/** + * @param {?} group + * @return {?} + */ + function (group) { return group.name === _this.selectedGroup.name; })).permissions : []; + })), map((/** + * @param {?} permissions + * @return {?} + */ + function (permissions) { + return permissions.map((/** + * @param {?} permission + * @return {?} + */ + function (permission) { + return ((/** @type {?} */ (((/** @type {?} */ (tslib_1.__assign({}, permission, { margin: findMargin(permissions, permission), isGranted: _this.permissions.find((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.name === permission.name; })).isGranted }))))))); + })); + }))); + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + PermissionManagementComponent.prototype.ngOnInit = /** + * @return {?} + */ + function () { }; + /** + * @param {?} name + * @return {?} + */ + PermissionManagementComponent.prototype.getChecked = /** + * @param {?} name + * @return {?} + */ + function (name) { + return (this.permissions.find((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.name === name; })) || { isGranted: false }).isGranted; + }; + /** + * @param {?} clickedPermission + * @param {?} value + * @return {?} + */ + PermissionManagementComponent.prototype.onClickCheckbox = /** + * @param {?} clickedPermission + * @param {?} value + * @return {?} + */ + function (clickedPermission, value) { + var _this = this; + setTimeout((/** + * @return {?} + */ + function () { + _this.permissions = _this.permissions.map((/** + * @param {?} per + * @return {?} + */ + function (per) { + if (clickedPermission.name === per.name) { + return tslib_1.__assign({}, per, { isGranted: !per.isGranted }); + } + else if (clickedPermission.name === per.parentName && clickedPermission.isGranted) { + return tslib_1.__assign({}, per, { isGranted: false }); + } + else if (clickedPermission.parentName === per.name && !clickedPermission.isGranted) { + return tslib_1.__assign({}, per, { isGranted: true }); + } + return per; + })); + _this.setTabCheckboxState(); + _this.setGrantCheckboxState(); + }), 0); + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.setTabCheckboxState = /** + * @return {?} + */ + function () { + var _this = this; + this.selectedGroupPermissions$.pipe(take(1)).subscribe((/** + * @param {?} permissions + * @return {?} + */ + function (permissions) { + /** @type {?} */ + var selectedPermissions = permissions.filter((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.isGranted; })); + /** @type {?} */ + var element = (/** @type {?} */ (document.querySelector('#select-all-in-this-tabs'))); + if (selectedPermissions.length === permissions.length) { + element.indeterminate = false; + _this.selectThisTab = true; + } + else if (selectedPermissions.length === 0) { + element.indeterminate = false; + _this.selectThisTab = false; + } + else { + element.indeterminate = true; + } + })); + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.setGrantCheckboxState = /** + * @return {?} + */ + function () { + /** @type {?} */ + var selectedAllPermissions = this.permissions.filter((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.isGranted; })); + /** @type {?} */ + var checkboxElement = (/** @type {?} */ (document.querySelector('#select-all-in-all-tabs'))); + if (selectedAllPermissions.length === this.permissions.length) { + checkboxElement.indeterminate = false; + this.selectAllTab = true; + } + else if (selectedAllPermissions.length === 0) { + checkboxElement.indeterminate = false; + this.selectAllTab = false; + } + else { + checkboxElement.indeterminate = true; + } + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.onClickSelectThisTab = /** + * @return {?} + */ + function () { + var _this = this; + this.selectedGroupPermissions$.pipe(take(1)).subscribe((/** + * @param {?} permissions + * @return {?} + */ + function (permissions) { + permissions.forEach((/** + * @param {?} permission + * @return {?} + */ + function (permission) { + /** @type {?} */ + var index = _this.permissions.findIndex((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.name === permission.name; })); + _this.permissions = tslib_1.__spread(_this.permissions.slice(0, index), [ + tslib_1.__assign({}, _this.permissions[index], { isGranted: !_this.selectThisTab }) + ], _this.permissions.slice(index + 1)); + })); + })); + this.setGrantCheckboxState(); + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.onClickSelectAll = /** + * @return {?} + */ + function () { + var _this = this; + this.permissions = this.permissions.map((/** + * @param {?} permission + * @return {?} + */ + function (permission) { return (tslib_1.__assign({}, permission, { isGranted: !_this.selectAllTab })); })); + this.selectThisTab = !this.selectAllTab; + }; + /** + * @param {?} group + * @return {?} + */ + PermissionManagementComponent.prototype.onChangeGroup = /** + * @param {?} group + * @return {?} + */ + function (group) { + this.selectedGroup = group; + this.setTabCheckboxState(); + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.onSubmit = /** + * @return {?} + */ + function () { + var _this = this; + /** @type {?} */ + var unchangedPermissions = getPermissions(this.store.selectSnapshot(PermissionManagementState.getPermissionGroups)); + /** @type {?} */ + var changedPermissions = this.permissions + .filter((/** + * @param {?} per + * @return {?} + */ + function (per) { + return unchangedPermissions.find((/** + * @param {?} unchanged + * @return {?} + */ + function (unchanged) { return unchanged.name === per.name; })).isGranted === per.isGranted ? false : true; + })) + .map((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var name = _a.name, isGranted = _a.isGranted; + return ({ name: name, isGranted: isGranted }); + })); + if (changedPermissions.length) { + this.store + .dispatch(new PermissionManagementUpdatePermissions({ + providerKey: this.providerKey, + providerName: this.providerName, + permissions: changedPermissions, + })) + .subscribe((/** + * @return {?} + */ + function () { + _this.visible = false; + })); + } + else { + this.visible = false; + } + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.openModal = /** + * @return {?} + */ + function () { + var _this = this; + if (!this.providerKey || !this.providerName) { + throw new Error('Provider Key and Provider Name are required.'); + } + this.store + .dispatch(new PermissionManagementGetPermissions({ providerKey: this.providerKey, providerName: this.providerName })) + .pipe(pluck('PermissionManagementState', 'permissionRes')) + .subscribe((/** + * @param {?} permissionRes + * @return {?} + */ + function (permissionRes) { + _this.selectedGroup = permissionRes.groups[0]; + _this.permissions = getPermissions(permissionRes.groups); + _this.visible = true; + setTimeout((/** + * @return {?} + */ + function () { + _this.setTabCheckboxState(); + _this.setGrantCheckboxState(); + }), 0); + })); + }; + /** + * @param {?} __0 + * @return {?} + */ + PermissionManagementComponent.prototype.ngOnChanges = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var visible = _a.visible; + if (!visible) + return; + if (visible.currentValue) { + this.openModal(); + } + else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + }; + PermissionManagementComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-permission-management', + template: "\n \n \n

{{ 'AbpPermissionManagement::Permissions' | abpLocalization }} - {{ data.entityName }}

\n
\n \n
\n \n \n
\n\n
\n
\n
\n \n
\n
\n

{{ selectedGroup.displayName }}

\n
\n
\n
\n \n \n
\n
\n \n \n \n {{ permission.displayName }}\n
\n \n
\n
\n \n
\n \n \n \n \n
\n
\n" + }] } + ]; + /** @nocollapse */ + PermissionManagementComponent.ctorParameters = function () { return [ + { type: Store }, + { type: Renderer2 } + ]; }; + PermissionManagementComponent.propDecorators = { + providerName: [{ type: Input }], + providerKey: [{ type: Input }], + visible: [{ type: Input }], + visibleChange: [{ type: Output }] + }; + tslib_1.__decorate([ + Select(PermissionManagementState.getPermissionGroups), + tslib_1.__metadata("design:type", Observable) + ], PermissionManagementComponent.prototype, "groups$", void 0); + tslib_1.__decorate([ + Select(PermissionManagementState.getEntitiyDisplayName), + tslib_1.__metadata("design:type", Observable) + ], PermissionManagementComponent.prototype, "entityName$", void 0); + return PermissionManagementComponent; +}()); +export { PermissionManagementComponent }; +if (false) { + /** @type {?} */ + PermissionManagementComponent.prototype.providerName; + /** @type {?} */ + PermissionManagementComponent.prototype.providerKey; + /** + * @type {?} + * @protected + */ + PermissionManagementComponent.prototype._visible; + /** @type {?} */ + PermissionManagementComponent.prototype.visibleChange; + /** @type {?} */ + PermissionManagementComponent.prototype.groups$; + /** @type {?} */ + PermissionManagementComponent.prototype.entityName$; + /** @type {?} */ + PermissionManagementComponent.prototype.selectedGroup; + /** @type {?} */ + PermissionManagementComponent.prototype.permissions; + /** @type {?} */ + PermissionManagementComponent.prototype.selectThisTab; + /** @type {?} */ + PermissionManagementComponent.prototype.selectAllTab; + /** @type {?} */ + PermissionManagementComponent.prototype.trackByFn; + /** + * @type {?} + * @private + */ + PermissionManagementComponent.prototype.store; + /** + * @type {?} + * @private + */ + PermissionManagementComponent.prototype.renderer; +} +/** + * @param {?} permissions + * @param {?} permission + * @return {?} + */ +function findMargin(permissions, permission) { + /** @type {?} */ + var parentPermission = permissions.find((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.name === permission.parentName; })); + if (parentPermission && parentPermission.parentName) { + /** @type {?} */ + var margin = 20; + return (margin += findMargin(permissions, parentPermission)); + } + return parentPermission ? 20 : 0; +} +/** + * @param {?} groups + * @return {?} + */ +function getPermissions(groups) { + return groups.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { return tslib_1.__spread(acc, val.permissions); }), []); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1tYW5hZ2VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcucGVybWlzc2lvbi1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcGVybWlzc2lvbi1tYW5hZ2VtZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBUSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUNMLGtDQUFrQyxFQUNsQyxxQ0FBcUMsR0FDdEMsTUFBTSwwQ0FBMEMsQ0FBQztBQUVsRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUlsRjtJQWtFRSx1Q0FBb0IsS0FBWSxFQUFVLFFBQW1CO1FBQXpDLFVBQUssR0FBTCxLQUFLLENBQU87UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBcEM3RCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFVNUMsZ0JBQVcsR0FBc0MsRUFBRSxDQUFDO1FBRXBELGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRS9CLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRTlCLGNBQVM7Ozs7O1FBQWdELFVBQUMsQ0FBQyxFQUFFLElBQUksSUFBSyxPQUFBLElBQUksQ0FBQyxJQUFJLEVBQVQsQ0FBUyxFQUFDO0lBb0JoQixDQUFDO0lBckRqRSxzQkFDSSxrREFBTzs7OztRQURYO1lBRUUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3ZC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Z0IsSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUU7O1lBQy9DLE1BQU0sR0FBRyxFQUFFO1FBQ2YsT0FBTyxDQUFDLE1BQU0sSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztLQUM5RDtJQUVELE9BQU8sZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUM7Ozs7O0FBRUQsU0FBUyxjQUFjLENBQUMsTUFBb0M7SUFDMUQsT0FBTyxNQUFNLENBQUMsTUFBTTs7Ozs7SUFBQyxVQUFDLEdBQUcsRUFBRSxHQUFHLElBQUssd0JBQUksR0FBRyxFQUFLLEdBQUcsQ0FBQyxXQUFXLEdBQTNCLENBQTRCLEdBQUUsRUFBRSxDQUFDLENBQUM7QUFDdkUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUcmFja0J5RnVuY3Rpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgcGx1Y2ssIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBQZXJtaXNzaW9uTWFuYWdlbWVudEdldFBlcm1pc3Npb25zLFxuICBQZXJtaXNzaW9uTWFuYWdlbWVudFVwZGF0ZVBlcm1pc3Npb25zLFxufSBmcm9tICcuLi9hY3Rpb25zL3Blcm1pc3Npb24tbWFuYWdlbWVudC5hY3Rpb25zJztcbmltcG9ydCB7IFBlcm1pc3Npb25NYW5hZ2VtZW50IH0gZnJvbSAnLi4vbW9kZWxzL3Blcm1pc3Npb24tbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uTWFuYWdlbWVudFN0YXRlIH0gZnJvbSAnLi4vc3RhdGVzL3Blcm1pc3Npb24tbWFuYWdlbWVudC5zdGF0ZSc7XG5cbnR5cGUgUGVybWlzc2lvbldpdGhNYXJnaW4gPSBQZXJtaXNzaW9uTWFuYWdlbWVudC5QZXJtaXNzaW9uICYgeyBtYXJnaW46IG51bWJlciB9O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtcGVybWlzc2lvbi1tYW5hZ2VtZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Blcm1pc3Npb24tbWFuYWdlbWVudC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25NYW5hZ2VtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBwcm92aWRlck5hbWU6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwcm92aWRlcktleTogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBfdmlzaWJsZTtcblxuICBASW5wdXQoKVxuICBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgfVxuXG4gIHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkR3JvdXApIHJldHVybjtcblxuICAgIHRoaXMuX3Zpc2libGUgPSB2YWx1ZTtcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXAgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoKVxuICB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBTZWxlY3QoUGVybWlzc2lvbk1hbmFnZW1lbnRTdGF0ZS5nZXRQZXJtaXNzaW9uR3JvdXBzKVxuICBncm91cHMkOiBPYnNlcnZhYmxlPFBlcm1pc3Npb25NYW5hZ2VtZW50Lkdyb3VwW10+O1xuXG4gIEBTZWxlY3QoUGVybWlzc2lvbk1hbmFnZW1lbnRTdGF0ZS5nZXRFbnRpdGl5RGlzcGxheU5hbWUpXG4gIGVudGl0eU5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgc2VsZWN0ZWRHcm91cDogUGVybWlzc2lvbk1hbmFnZW1lbnQuR3JvdXA7XG5cbiAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25NYW5hZ2VtZW50LlBlcm1pc3Npb25bXSA9IFtdO1xuXG4gIHNlbGVjdFRoaXNUYWI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBzZWxlY3RBbGxUYWI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICB0cmFja0J5Rm46IFRyYWNrQnlGdW5jdGlvbjxQZXJtaXNzaW9uTWFuYWdlbWVudC5Hcm91cD4gPSAoXywgaXRlbSkgPT4gaXRlbS5uYW1lO1xuXG4gIGdldCBzZWxlY3RlZEdyb3VwUGVybWlzc2lvbnMkKCk6IE9ic2VydmFibGU8UGVybWlzc2lvbldpdGhNYXJnaW5bXT4ge1xuICAgIHJldHVybiB0aGlzLmdyb3VwcyQucGlwZShcbiAgICAgIG1hcChncm91cHMgPT5cbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwID8gZ3JvdXBzLmZpbmQoZ3JvdXAgPT4gZ3JvdXAubmFtZSA9PT0gdGhpcy5zZWxlY3RlZEdyb3VwLm5hbWUpLnBlcm1pc3Npb25zIDogW10sXG4gICAgICApLFxuICAgICAgbWFwPFBlcm1pc3Npb25NYW5hZ2VtZW50LlBlcm1pc3Npb25bXSwgUGVybWlzc2lvbldpdGhNYXJnaW5bXT4ocGVybWlzc2lvbnMgPT5cbiAgICAgICAgcGVybWlzc2lvbnMubWFwKFxuICAgICAgICAgIHBlcm1pc3Npb24gPT5cbiAgICAgICAgICAgICgoe1xuICAgICAgICAgICAgICAuLi5wZXJtaXNzaW9uLFxuICAgICAgICAgICAgICBtYXJnaW46IGZpbmRNYXJnaW4ocGVybWlzc2lvbnMsIHBlcm1pc3Npb24pLFxuICAgICAgICAgICAgICBpc0dyYW50ZWQ6IHRoaXMucGVybWlzc2lvbnMuZmluZChwZXIgPT4gcGVyLm5hbWUgPT09IHBlcm1pc3Npb24ubmFtZSkuaXNHcmFudGVkLFxuICAgICAgICAgICAgfSBhcyBhbnkpIGFzIFBlcm1pc3Npb25XaXRoTWFyZ2luKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIGdldENoZWNrZWQobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuICh0aGlzLnBlcm1pc3Npb25zLmZpbmQocGVyID0+IHBlci5uYW1lID09PSBuYW1lKSB8fCB7IGlzR3JhbnRlZDogZmFsc2UgfSkuaXNHcmFudGVkO1xuICB9XG5cbiAgb25DbGlja0NoZWNrYm94KGNsaWNrZWRQZXJtaXNzaW9uOiBQZXJtaXNzaW9uTWFuYWdlbWVudC5QZXJtaXNzaW9uLCB2YWx1ZSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5wZXJtaXNzaW9ucyA9IHRoaXMucGVybWlzc2lvbnMubWFwKHBlciA9PiB7XG4gICAgICAgIGlmIChjbGlja2VkUGVybWlzc2lvbi5uYW1lID09PSBwZXIubmFtZSkge1xuICAgICAgICAgIHJldHVybiB7IC4uLnBlciwgaXNHcmFudGVkOiAhcGVyLmlzR3JhbnRlZCB9O1xuICAgICAgICB9IGVsc2UgaWYgKGNsaWNrZWRQZXJtaXNzaW9uLm5hbWUgPT09IHBlci5wYXJlbnROYW1lICYmIGNsaWNrZWRQZXJtaXNzaW9uLmlzR3JhbnRlZCkge1xuICAgICAgICAgIHJldHVybiB7IC4uLnBlciwgaXNHcmFudGVkOiBmYWxzZSB9O1xuICAgICAgICB9IGVsc2UgaWYgKGNsaWNrZWRQZXJtaXNzaW9uLnBhcmVudE5hbWUgPT09IHBlci5uYW1lICYmICFjbGlja2VkUGVybWlzc2lvbi5pc0dyYW50ZWQpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5wZXIsIGlzR3JhbnRlZDogdHJ1ZSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBlcjtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnNldFRhYkNoZWNrYm94U3RhdGUoKTtcbiAgICAgIHRoaXMuc2V0R3JhbnRDaGVja2JveFN0YXRlKCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBzZXRUYWJDaGVja2JveFN0YXRlKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRHcm91cFBlcm1pc3Npb25zJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShwZXJtaXNzaW9ucyA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZFBlcm1pc3Npb25zID0gcGVybWlzc2lvbnMuZmlsdGVyKHBlciA9PiBwZXIuaXNHcmFudGVkKTtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2VsZWN0LWFsbC1pbi10aGlzLXRhYnMnKSBhcyBhbnk7XG5cbiAgICAgIGlmIChzZWxlY3RlZFBlcm1pc3Npb25zLmxlbmd0aCA9PT0gcGVybWlzc2lvbnMubGVuZ3RoKSB7XG4gICAgICAgIGVsZW1lbnQuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNlbGVjdFRoaXNUYWIgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZFBlcm1pc3Npb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBlbGVtZW50LmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RUaGlzVGFiID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50LmluZGV0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2V0R3JhbnRDaGVja2JveFN0YXRlKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkQWxsUGVybWlzc2lvbnMgPSB0aGlzLnBlcm1pc3Npb25zLmZpbHRlcihwZXIgPT4gcGVyLmlzR3JhbnRlZCk7XG4gICAgY29uc3QgY2hlY2tib3hFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlbGVjdC1hbGwtaW4tYWxsLXRhYnMnKSBhcyBhbnk7XG5cbiAgICBpZiAoc2VsZWN0ZWRBbGxQZXJtaXNzaW9ucy5sZW5ndGggPT09IHRoaXMucGVybWlzc2lvbnMubGVuZ3RoKSB7XG4gICAgICBjaGVja2JveEVsZW1lbnQuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWxlY3RBbGxUYWIgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRBbGxQZXJtaXNzaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNoZWNrYm94RWxlbWVudC5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICB0aGlzLnNlbGVjdEFsbFRhYiA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGVja2JveEVsZW1lbnQuaW5kZXRlcm1pbmF0ZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgb25DbGlja1NlbGVjdFRoaXNUYWIoKSB7XG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwUGVybWlzc2lvbnMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHBlcm1pc3Npb25zID0+IHtcbiAgICAgIHBlcm1pc3Npb25zLmZvckVhY2gocGVybWlzc2lvbiA9PiB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wZXJtaXNzaW9ucy5maW5kSW5kZXgocGVyID0+IHBlci5uYW1lID09PSBwZXJtaXNzaW9uLm5hbWUpO1xuXG4gICAgICAgIHRoaXMucGVybWlzc2lvbnMgPSBbXG4gICAgICAgICAgLi4udGhpcy5wZXJtaXNzaW9ucy5zbGljZSgwLCBpbmRleCksXG4gICAgICAgICAgeyAuLi50aGlzLnBlcm1pc3Npb25zW2luZGV4XSwgaXNHcmFudGVkOiAhdGhpcy5zZWxlY3RUaGlzVGFiIH0sXG4gICAgICAgICAgLi4udGhpcy5wZXJtaXNzaW9ucy5zbGljZShpbmRleCArIDEpLFxuICAgICAgICBdO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNldEdyYW50Q2hlY2tib3hTdGF0ZSgpO1xuICB9XG5cbiAgb25DbGlja1NlbGVjdEFsbCgpIHtcbiAgICB0aGlzLnBlcm1pc3Npb25zID0gdGhpcy5wZXJtaXNzaW9ucy5tYXAocGVybWlzc2lvbiA9PiAoeyAuLi5wZXJtaXNzaW9uLCBpc0dyYW50ZWQ6ICF0aGlzLnNlbGVjdEFsbFRhYiB9KSk7XG5cbiAgICB0aGlzLnNlbGVjdFRoaXNUYWIgPSAhdGhpcy5zZWxlY3RBbGxUYWI7XG4gIH1cblxuICBvbkNoYW5nZUdyb3VwKGdyb3VwOiBQZXJtaXNzaW9uTWFuYWdlbWVudC5Hcm91cCkge1xuICAgIHRoaXMuc2VsZWN0ZWRHcm91cCA9IGdyb3VwO1xuICAgIHRoaXMuc2V0VGFiQ2hlY2tib3hTdGF0ZSgpO1xuICB9XG5cbiAgb25TdWJtaXQoKSB7XG4gICAgY29uc3QgdW5jaGFuZ2VkUGVybWlzc2lvbnMgPSBnZXRQZXJtaXNzaW9ucyhcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoUGVybWlzc2lvbk1hbmFnZW1lbnRTdGF0ZS5nZXRQZXJtaXNzaW9uR3JvdXBzKSxcbiAgICApO1xuXG4gICAgY29uc3QgY2hhbmdlZFBlcm1pc3Npb25zOiBQZXJtaXNzaW9uTWFuYWdlbWVudC5NaW5pbXVtUGVybWlzc2lvbltdID0gdGhpcy5wZXJtaXNzaW9uc1xuICAgICAgLmZpbHRlcihwZXIgPT5cbiAgICAgICAgdW5jaGFuZ2VkUGVybWlzc2lvbnMuZmluZCh1bmNoYW5nZWQgPT4gdW5jaGFuZ2VkLm5hbWUgPT09IHBlci5uYW1lKS5pc0dyYW50ZWQgPT09IHBlci5pc0dyYW50ZWQgPyBmYWxzZSA6IHRydWUsXG4gICAgICApXG4gICAgICAubWFwKCh7IG5hbWUsIGlzR3JhbnRlZCB9KSA9PiAoeyBuYW1lLCBpc0dyYW50ZWQgfSkpO1xuXG4gICAgaWYgKGNoYW5nZWRQZXJtaXNzaW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3RvcmVcbiAgICAgICAgLmRpc3BhdGNoKFxuICAgICAgICAgIG5ldyBQZXJtaXNzaW9uTWFuYWdlbWVudFVwZGF0ZVBlcm1pc3Npb25zKHtcbiAgICAgICAgICAgIHByb3ZpZGVyS2V5OiB0aGlzLnByb3ZpZGVyS2V5LFxuICAgICAgICAgICAgcHJvdmlkZXJOYW1lOiB0aGlzLnByb3ZpZGVyTmFtZSxcbiAgICAgICAgICAgIHBlcm1pc3Npb25zOiBjaGFuZ2VkUGVybWlzc2lvbnMsXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBvcGVuTW9kYWwoKSB7XG4gICAgaWYgKCF0aGlzLnByb3ZpZGVyS2V5IHx8ICF0aGlzLnByb3ZpZGVyTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm92aWRlciBLZXkgYW5kIFByb3ZpZGVyIE5hbWUgYXJlIHJlcXVpcmVkLicpO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcmVcbiAgICAgIC5kaXNwYXRjaChcbiAgICAgICAgbmV3IFBlcm1pc3Npb25NYW5hZ2VtZW50R2V0UGVybWlzc2lvbnMoeyBwcm92aWRlcktleTogdGhpcy5wcm92aWRlcktleSwgcHJvdmlkZXJOYW1lOiB0aGlzLnByb3ZpZGVyTmFtZSB9KSxcbiAgICAgIClcbiAgICAgIC5waXBlKHBsdWNrKCdQZXJtaXNzaW9uTWFuYWdlbWVudFN0YXRlJywgJ3Blcm1pc3Npb25SZXMnKSlcbiAgICAgIC5zdWJzY3JpYmUoKHBlcm1pc3Npb25SZXM6IFBlcm1pc3Npb25NYW5hZ2VtZW50LlJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cCA9IHBlcm1pc3Npb25SZXMuZ3JvdXBzWzBdO1xuICAgICAgICB0aGlzLnBlcm1pc3Npb25zID0gZ2V0UGVybWlzc2lvbnMocGVybWlzc2lvblJlcy5ncm91cHMpO1xuXG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRUYWJDaGVja2JveFN0YXRlKCk7XG4gICAgICAgICAgdGhpcy5zZXRHcmFudENoZWNrYm94U3RhdGUoKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHsgdmlzaWJsZSB9OiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCF2aXNpYmxlKSByZXR1cm47XG5cbiAgICBpZiAodmlzaWJsZS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMub3Blbk1vZGFsKCk7XG4gICAgfSBlbHNlIGlmICh2aXNpYmxlLmN1cnJlbnRWYWx1ZSA9PT0gZmFsc2UgJiYgdGhpcy52aXNpYmxlKSB7XG4gICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZE1hcmdpbihwZXJtaXNzaW9uczogUGVybWlzc2lvbk1hbmFnZW1lbnQuUGVybWlzc2lvbltdLCBwZXJtaXNzaW9uOiBQZXJtaXNzaW9uTWFuYWdlbWVudC5QZXJtaXNzaW9uKSB7XG4gIGNvbnN0IHBhcmVudFBlcm1pc3Npb24gPSBwZXJtaXNzaW9ucy5maW5kKHBlciA9PiBwZXIubmFtZSA9PT0gcGVybWlzc2lvbi5wYXJlbnROYW1lKTtcblxuICBpZiAocGFyZW50UGVybWlzc2lvbiAmJiBwYXJlbnRQZXJtaXNzaW9uLnBhcmVudE5hbWUpIHtcbiAgICBsZXQgbWFyZ2luID0gMjA7XG4gICAgcmV0dXJuIChtYXJnaW4gKz0gZmluZE1hcmdpbihwZXJtaXNzaW9ucywgcGFyZW50UGVybWlzc2lvbikpO1xuICB9XG5cbiAgcmV0dXJuIHBhcmVudFBlcm1pc3Npb24gPyAyMCA6IDA7XG59XG5cbmZ1bmN0aW9uIGdldFBlcm1pc3Npb25zKGdyb3VwczogUGVybWlzc2lvbk1hbmFnZW1lbnQuR3JvdXBbXSk6IFBlcm1pc3Npb25NYW5hZ2VtZW50LlBlcm1pc3Npb25bXSB7XG4gIHJldHVybiBncm91cHMucmVkdWNlKChhY2MsIHZhbCkgPT4gWy4uLmFjYywgLi4udmFsLnBlcm1pc3Npb25zXSwgW10pO1xufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm5/lib/models/index.js b/npm/ng-packs/dist/permission-management/esm5/lib/models/index.js new file mode 100644 index 00000000000..99d61c06567 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm5/lib/models/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export {} from './permission-management'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnBlcm1pc3Npb24tbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGVBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Blcm1pc3Npb24tbWFuYWdlbWVudCc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm5/lib/models/permission-management.js b/npm/ng-packs/dist/permission-management/esm5/lib/models/permission-management.js new file mode 100644 index 00000000000..bfd73caae2c --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm5/lib/models/permission-management.js @@ -0,0 +1,87 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var PermissionManagement; +(function (PermissionManagement) { + /** + * @record + */ + function State() { } + PermissionManagement.State = State; + if (false) { + /** @type {?} */ + State.prototype.permissionRes; + } + /** + * @record + */ + function Response() { } + PermissionManagement.Response = Response; + if (false) { + /** @type {?} */ + Response.prototype.entityDisplayName; + /** @type {?} */ + Response.prototype.groups; + } + /** + * @record + */ + function Group() { } + PermissionManagement.Group = Group; + if (false) { + /** @type {?} */ + Group.prototype.name; + /** @type {?} */ + Group.prototype.displayName; + /** @type {?} */ + Group.prototype.permissions; + } + /** + * @record + */ + function MinimumPermission() { } + PermissionManagement.MinimumPermission = MinimumPermission; + if (false) { + /** @type {?} */ + MinimumPermission.prototype.name; + /** @type {?} */ + MinimumPermission.prototype.isGranted; + } + /** + * @record + */ + function Permission() { } + PermissionManagement.Permission = Permission; + if (false) { + /** @type {?} */ + Permission.prototype.displayName; + /** @type {?} */ + Permission.prototype.parentName; + /** @type {?} */ + Permission.prototype.allowedProviders; + /** @type {?} */ + Permission.prototype.grantedProviders; + } + /** + * @record + */ + function GrantedProvider() { } + PermissionManagement.GrantedProvider = GrantedProvider; + if (false) { + /** @type {?} */ + GrantedProvider.prototype.providerName; + /** @type {?} */ + GrantedProvider.prototype.providerKey; + } + /** + * @record + */ + function UpdateRequest() { } + PermissionManagement.UpdateRequest = UpdateRequest; + if (false) { + /** @type {?} */ + UpdateRequest.prototype.permissions; + } +})(PermissionManagement || (PermissionManagement = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1tYW5hZ2VtZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5wZXJtaXNzaW9uLW1hbmFnZW1lbnQvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzL3Blcm1pc3Npb24tbWFuYWdlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsTUFBTSxLQUFXLG9CQUFvQixDQW9DcEM7QUFwQ0QsV0FBaUIsb0JBQW9COzs7O0lBQ25DLG9CQUVDOzs7O1FBREMsOEJBQXdCOzs7OztJQUcxQix1QkFHQzs7OztRQUZDLHFDQUEwQjs7UUFDMUIsMEJBQWdCOzs7OztJQUdsQixvQkFJQzs7OztRQUhDLHFCQUFhOztRQUNiLDRCQUFvQjs7UUFDcEIsNEJBQTBCOzs7OztJQUc1QixnQ0FHQzs7OztRQUZDLGlDQUFhOztRQUNiLHNDQUFtQjs7Ozs7SUFHckIseUJBS0M7Ozs7UUFKQyxpQ0FBb0I7O1FBQ3BCLGdDQUFtQjs7UUFDbkIsc0NBQTJCOztRQUMzQixzQ0FBb0M7Ozs7O0lBR3RDLDhCQUdDOzs7O1FBRkMsdUNBQXFCOztRQUNyQixzQ0FBb0I7Ozs7O0lBR3RCLDRCQUVDOzs7O1FBREMsb0NBQWlDOztBQUVyQyxDQUFDLEVBcENnQixvQkFBb0IsS0FBcEIsb0JBQW9CLFFBb0NwQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBuYW1lc3BhY2UgUGVybWlzc2lvbk1hbmFnZW1lbnQge1xuICBleHBvcnQgaW50ZXJmYWNlIFN0YXRlIHtcbiAgICBwZXJtaXNzaW9uUmVzOiBSZXNwb25zZTtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUmVzcG9uc2Uge1xuICAgIGVudGl0eURpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgZ3JvdXBzOiBHcm91cFtdO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBHcm91cCB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25bXTtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTWluaW11bVBlcm1pc3Npb24ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpc0dyYW50ZWQ6IGJvb2xlYW47XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb24gZXh0ZW5kcyBNaW5pbXVtUGVybWlzc2lvbiB7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBwYXJlbnROYW1lOiBzdHJpbmc7XG4gICAgYWxsb3dlZFByb3ZpZGVyczogc3RyaW5nW107XG4gICAgZ3JhbnRlZFByb3ZpZGVyczogR3JhbnRlZFByb3ZpZGVyW107XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEdyYW50ZWRQcm92aWRlciB7XG4gICAgcHJvdmlkZXJOYW1lOiBzdHJpbmc7XG4gICAgcHJvdmlkZXJLZXk6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlUmVxdWVzdCB7XG4gICAgcGVybWlzc2lvbnM6IE1pbmltdW1QZXJtaXNzaW9uW107XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm5/lib/permission-management.module.js b/npm/ng-packs/dist/permission-management/esm5/lib/permission-management.module.js new file mode 100644 index 00000000000..755e939953d --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm5/lib/permission-management.module.js @@ -0,0 +1,25 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { CoreModule } from '@abp/ng.core'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { NgModule } from '@angular/core'; +import { NgxsModule } from '@ngxs/store'; +import { PermissionManagementComponent } from './components/permission-management.component'; +import { PermissionManagementState } from './states/permission-management.state'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; +var PermissionManagementModule = /** @class */ (function () { + function PermissionManagementModule() { + } + PermissionManagementModule.decorators = [ + { type: NgModule, args: [{ + declarations: [PermissionManagementComponent], + imports: [CoreModule, ThemeSharedModule, NgxsModule.forFeature([PermissionManagementState]), PerfectScrollbarModule], + exports: [PermissionManagementComponent], + },] } + ]; + return PermissionManagementModule; +}()); +export { PermissionManagementModule }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1tYW5hZ2VtZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcucGVybWlzc2lvbi1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL3Blcm1pc3Npb24tbWFuYWdlbWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzdGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRS9EO0lBQUE7SUFLeUMsQ0FBQzs7Z0JBTHpDLFFBQVEsU0FBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDN0MsT0FBTyxFQUFFLENBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsc0JBQXNCLENBQUM7b0JBQ3BILE9BQU8sRUFBRSxDQUFDLDZCQUE2QixDQUFDO2lCQUN6Qzs7SUFDd0MsaUNBQUM7Q0FBQSxBQUwxQyxJQUswQztTQUE3QiwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3JlTW9kdWxlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IFRoZW1lU2hhcmVkTW9kdWxlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neHNNb2R1bGUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uTWFuYWdlbWVudENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wZXJtaXNzaW9uLW1hbmFnZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IFBlcm1pc3Npb25NYW5hZ2VtZW50U3RhdGUgfSBmcm9tICcuL3N0YXRlcy9wZXJtaXNzaW9uLW1hbmFnZW1lbnQuc3RhdGUnO1xuaW1wb3J0IHsgUGVyZmVjdFNjcm9sbGJhck1vZHVsZSB9IGZyb20gJ25neC1wZXJmZWN0LXNjcm9sbGJhcic7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1Blcm1pc3Npb25NYW5hZ2VtZW50Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIFRoZW1lU2hhcmVkTW9kdWxlLCBOZ3hzTW9kdWxlLmZvckZlYXR1cmUoW1Blcm1pc3Npb25NYW5hZ2VtZW50U3RhdGVdKSwgUGVyZmVjdFNjcm9sbGJhck1vZHVsZV0sXG4gIGV4cG9ydHM6IFtQZXJtaXNzaW9uTWFuYWdlbWVudENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25NYW5hZ2VtZW50TW9kdWxlIHt9XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm5/lib/services/index.js b/npm/ng-packs/dist/permission-management/esm5/lib/services/index.js new file mode 100644 index 00000000000..1813272cf33 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm5/lib/services/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { PermissionManagementService } from './permission-management.service'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnBlcm1pc3Npb24tbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsNENBQWMsaUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Blcm1pc3Npb24tbWFuYWdlbWVudC5zZXJ2aWNlJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm5/lib/services/permission-management.service.js b/npm/ng-packs/dist/permission-management/esm5/lib/services/permission-management.service.js new file mode 100644 index 00000000000..fe732ae6dc9 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm5/lib/services/permission-management.service.js @@ -0,0 +1,69 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { RestService } from '@abp/ng.core'; +import * as i0 from "@angular/core"; +import * as i1 from "@abp/ng.core"; +var PermissionManagementService = /** @class */ (function () { + function PermissionManagementService(rest) { + this.rest = rest; + } + /** + * @param {?} params + * @return {?} + */ + PermissionManagementService.prototype.getPermissions = /** + * @param {?} params + * @return {?} + */ + function (params) { + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/abp/permissions', + params: params, + }; + return this.rest.request(request); + }; + /** + * @param {?} __0 + * @return {?} + */ + PermissionManagementService.prototype.updatePermissions = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var permissions = _a.permissions, providerKey = _a.providerKey, providerName = _a.providerName; + /** @type {?} */ + var request = { + method: 'PUT', + url: '/api/abp/permissions', + body: { permissions: permissions }, + params: { providerKey: providerKey, providerName: providerName }, + }; + return this.rest.request(request); + }; + PermissionManagementService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + PermissionManagementService.ctorParameters = function () { return [ + { type: RestService } + ]; }; + /** @nocollapse */ PermissionManagementService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PermissionManagementService_Factory() { return new PermissionManagementService(i0.ɵɵinject(i1.RestService)); }, token: PermissionManagementService, providedIn: "root" }); + return PermissionManagementService; +}()); +export { PermissionManagementService }; +if (false) { + /** + * @type {?} + * @private + */ + PermissionManagementService.prototype.rest; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1tYW5hZ2VtZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnBlcm1pc3Npb24tbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9wZXJtaXNzaW9uLW1hbmFnZW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFRLE1BQU0sY0FBYyxDQUFDOzs7QUFJakQ7SUFJRSxxQ0FBb0IsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUFHLENBQUM7Ozs7O0lBRXpDLG9EQUFjOzs7O0lBQWQsVUFBZSxNQUE0Qzs7WUFDbkQsT0FBTyxHQUF1RDtZQUNsRSxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsRUFBRSxzQkFBc0I7WUFDM0IsTUFBTSxRQUFBO1NBQ1A7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFzRSxPQUFPLENBQUMsQ0FBQztJQUN6RyxDQUFDOzs7OztJQUVELHVEQUFpQjs7OztJQUFqQixVQUFrQixFQUkwRDtZQUgxRSw0QkFBVyxFQUNYLDRCQUFXLEVBQ1gsOEJBQVk7O1lBRU4sT0FBTyxHQUFxRDtZQUNoRSxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsRUFBRSxzQkFBc0I7WUFDM0IsSUFBSSxFQUFFLEVBQUUsV0FBVyxhQUFBLEVBQUU7WUFDckIsTUFBTSxFQUFFLEVBQUUsV0FBVyxhQUFBLEVBQUUsWUFBWSxjQUFBLEVBQUU7U0FDdEM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUEyQyxPQUFPLENBQUMsQ0FBQztJQUM5RSxDQUFDOztnQkE3QkYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFOUSxXQUFXOzs7c0NBRHBCO0NBbUNDLEFBOUJELElBOEJDO1NBM0JZLDJCQUEyQjs7Ozs7O0lBQzFCLDJDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlLCBSZXN0IH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBlcm1pc3Npb25NYW5hZ2VtZW50IH0gZnJvbSAnLi4vbW9kZWxzL3Blcm1pc3Npb24tbWFuYWdlbWVudCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uTWFuYWdlbWVudFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3Q6IFJlc3RTZXJ2aWNlKSB7fVxuXG4gIGdldFBlcm1pc3Npb25zKHBhcmFtczogUGVybWlzc2lvbk1hbmFnZW1lbnQuR3JhbnRlZFByb3ZpZGVyKTogT2JzZXJ2YWJsZTxQZXJtaXNzaW9uTWFuYWdlbWVudC5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlc3QuUmVxdWVzdDxQZXJtaXNzaW9uTWFuYWdlbWVudC5HcmFudGVkUHJvdmlkZXI+ID0ge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIHVybDogJy9hcGkvYWJwL3Blcm1pc3Npb25zJyxcbiAgICAgIHBhcmFtcyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PFBlcm1pc3Npb25NYW5hZ2VtZW50LkdyYW50ZWRQcm92aWRlciwgUGVybWlzc2lvbk1hbmFnZW1lbnQuUmVzcG9uc2U+KHJlcXVlc3QpO1xuICB9XG5cbiAgdXBkYXRlUGVybWlzc2lvbnMoe1xuICAgIHBlcm1pc3Npb25zLFxuICAgIHByb3ZpZGVyS2V5LFxuICAgIHByb3ZpZGVyTmFtZSxcbiAgfTogUGVybWlzc2lvbk1hbmFnZW1lbnQuR3JhbnRlZFByb3ZpZGVyICYgUGVybWlzc2lvbk1hbmFnZW1lbnQuVXBkYXRlUmVxdWVzdCk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlc3QuUmVxdWVzdDxQZXJtaXNzaW9uTWFuYWdlbWVudC5VcGRhdGVSZXF1ZXN0PiA9IHtcbiAgICAgIG1ldGhvZDogJ1BVVCcsXG4gICAgICB1cmw6ICcvYXBpL2FicC9wZXJtaXNzaW9ucycsXG4gICAgICBib2R5OiB7IHBlcm1pc3Npb25zIH0sXG4gICAgICBwYXJhbXM6IHsgcHJvdmlkZXJLZXksIHByb3ZpZGVyTmFtZSB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5yZXN0LnJlcXVlc3Q8UGVybWlzc2lvbk1hbmFnZW1lbnQuVXBkYXRlUmVxdWVzdCwgbnVsbD4ocmVxdWVzdCk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm5/lib/states/index.js b/npm/ng-packs/dist/permission-management/esm5/lib/states/index.js new file mode 100644 index 00000000000..8e0527250a1 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm5/lib/states/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { PermissionManagementState } from "./permission-management.state"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnBlcm1pc3Npb24tbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9zdGF0ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDBDQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcGVybWlzc2lvbi1tYW5hZ2VtZW50LnN0YXRlXCI7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm5/lib/states/permission-management.state.js b/npm/ng-packs/dist/permission-management/esm5/lib/states/permission-management.state.js new file mode 100644 index 00000000000..4516ebb6387 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm5/lib/states/permission-management.state.js @@ -0,0 +1,116 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { State, Action, Selector } from '@ngxs/store'; +import { PermissionManagementGetPermissions, PermissionManagementUpdatePermissions, } from '../actions/permission-management.actions'; +import { PermissionManagementService } from '../services/permission-management.service'; +import { tap } from 'rxjs/operators'; +var PermissionManagementState = /** @class */ (function () { + function PermissionManagementState(permissionManagementService) { + this.permissionManagementService = permissionManagementService; + } + /** + * @param {?} __0 + * @return {?} + */ + PermissionManagementState.getPermissionGroups = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var permissionRes = _a.permissionRes; + return permissionRes.groups || []; + }; + /** + * @param {?} __0 + * @return {?} + */ + PermissionManagementState.getEntitiyDisplayName = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var permissionRes = _a.permissionRes; + return permissionRes.entityDisplayName; + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + PermissionManagementState.prototype.permissionManagementGet = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.permissionManagementService.getPermissions(payload).pipe(tap((/** + * @param {?} permissionResponse + * @return {?} + */ + function (permissionResponse) { + return patchState({ + permissionRes: permissionResponse, + }); + }))); + }; + /** + * @param {?} _ + * @param {?} __1 + * @return {?} + */ + PermissionManagementState.prototype.permissionManagementUpdate = /** + * @param {?} _ + * @param {?} __1 + * @return {?} + */ + function (_, _a) { + var payload = _a.payload; + return this.permissionManagementService.updatePermissions(payload); + }; + tslib_1.__decorate([ + Action(PermissionManagementGetPermissions), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, PermissionManagementGetPermissions]), + tslib_1.__metadata("design:returntype", void 0) + ], PermissionManagementState.prototype, "permissionManagementGet", null); + tslib_1.__decorate([ + Action(PermissionManagementUpdatePermissions), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, PermissionManagementUpdatePermissions]), + tslib_1.__metadata("design:returntype", void 0) + ], PermissionManagementState.prototype, "permissionManagementUpdate", null); + tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", void 0) + ], PermissionManagementState, "getPermissionGroups", null); + tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", String) + ], PermissionManagementState, "getEntitiyDisplayName", null); + PermissionManagementState = tslib_1.__decorate([ + State({ + name: 'PermissionManagementState', + defaults: (/** @type {?} */ ({ permissionRes: {} })), + }), + tslib_1.__metadata("design:paramtypes", [PermissionManagementService]) + ], PermissionManagementState); + return PermissionManagementState; +}()); +export { PermissionManagementState }; +if (false) { + /** + * @type {?} + * @private + */ + PermissionManagementState.prototype.permissionManagementService; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1tYW5hZ2VtZW50LnN0YXRlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5wZXJtaXNzaW9uLW1hbmFnZW1lbnQvIiwic291cmNlcyI6WyJsaWIvc3RhdGVzL3Blcm1pc3Npb24tbWFuYWdlbWVudC5zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFnQixRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUNMLGtDQUFrQyxFQUNsQyxxQ0FBcUMsR0FDdEMsTUFBTSwwQ0FBMEMsQ0FBQztBQUVsRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN4RixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0lBaUJuQyxtQ0FBb0IsMkJBQXdEO1FBQXhELGdDQUEyQixHQUEzQiwyQkFBMkIsQ0FBNkI7SUFBRyxDQUFDOzs7OztJQVR6RSw2Q0FBbUI7Ozs7SUFBMUIsVUFBMkIsRUFBNkM7WUFBM0MsZ0NBQWE7UUFDeEMsT0FBTyxhQUFhLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDOzs7OztJQUdNLCtDQUFxQjs7OztJQUE1QixVQUE2QixFQUE2QztZQUEzQyxnQ0FBYTtRQUMxQyxPQUFPLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQztJQUN6QyxDQUFDOzs7Ozs7SUFLRCwyREFBdUI7Ozs7O0lBQXZCLFVBQ0UsRUFBd0QsRUFDeEQsRUFBK0M7WUFEN0MsMEJBQVU7WUFDVixvQkFBTztRQUVULE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ2xFLEdBQUc7Ozs7UUFBQyxVQUFBLGtCQUFrQjtZQUNwQixPQUFBLFVBQVUsQ0FBQztnQkFDVCxhQUFhLEVBQUUsa0JBQWtCO2FBQ2xDLENBQUM7UUFGRixDQUVFLEVBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7Ozs7O0lBR0QsOERBQTBCOzs7OztJQUExQixVQUEyQixDQUFDLEVBQUUsRUFBa0Q7WUFBaEQsb0JBQU87UUFDckMsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQWhCRDtRQURDLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQzs7eURBRzVCLGtDQUFrQzs7NEVBU2hEO0lBR0Q7UUFEQyxNQUFNLENBQUMscUNBQXFDLENBQUM7O3lEQUNILHFDQUFxQzs7K0VBRS9FO0lBNUJEO1FBREMsUUFBUSxFQUFFOzs7OzhEQUdWO0lBR0Q7UUFEQyxRQUFRLEVBQUU7Ozs7Z0VBR1Y7SUFUVSx5QkFBeUI7UUFKckMsS0FBSyxDQUE2QjtZQUNqQyxJQUFJLEVBQUUsMkJBQTJCO1lBQ2pDLFFBQVEsRUFBRSxtQkFBQSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsRUFBOEI7U0FDOUQsQ0FBQztpREFZaUQsMkJBQTJCO09BWGpFLHlCQUF5QixDQStCckM7SUFBRCxnQ0FBQztDQUFBLElBQUE7U0EvQlkseUJBQXlCOzs7Ozs7SUFXeEIsZ0VBQWdFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhdGUsIEFjdGlvbiwgU3RhdGVDb250ZXh0LCBTZWxlY3RvciB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7XG4gIFBlcm1pc3Npb25NYW5hZ2VtZW50R2V0UGVybWlzc2lvbnMsXG4gIFBlcm1pc3Npb25NYW5hZ2VtZW50VXBkYXRlUGVybWlzc2lvbnMsXG59IGZyb20gJy4uL2FjdGlvbnMvcGVybWlzc2lvbi1tYW5hZ2VtZW50LmFjdGlvbnMnO1xuaW1wb3J0IHsgUGVybWlzc2lvbk1hbmFnZW1lbnQgfSBmcm9tICcuLi9tb2RlbHMvcGVybWlzc2lvbi1tYW5hZ2VtZW50JztcbmltcG9ydCB7IFBlcm1pc3Npb25NYW5hZ2VtZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Blcm1pc3Npb24tbWFuYWdlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQFN0YXRlPFBlcm1pc3Npb25NYW5hZ2VtZW50LlN0YXRlPih7XG4gIG5hbWU6ICdQZXJtaXNzaW9uTWFuYWdlbWVudFN0YXRlJyxcbiAgZGVmYXVsdHM6IHsgcGVybWlzc2lvblJlczoge30gfSBhcyBQZXJtaXNzaW9uTWFuYWdlbWVudC5TdGF0ZSxcbn0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbk1hbmFnZW1lbnRTdGF0ZSB7XG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRQZXJtaXNzaW9uR3JvdXBzKHsgcGVybWlzc2lvblJlcyB9OiBQZXJtaXNzaW9uTWFuYWdlbWVudC5TdGF0ZSkge1xuICAgIHJldHVybiBwZXJtaXNzaW9uUmVzLmdyb3VwcyB8fCBbXTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRFbnRpdGl5RGlzcGxheU5hbWUoeyBwZXJtaXNzaW9uUmVzIH06IFBlcm1pc3Npb25NYW5hZ2VtZW50LlN0YXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGVybWlzc2lvblJlcy5lbnRpdHlEaXNwbGF5TmFtZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGVybWlzc2lvbk1hbmFnZW1lbnRTZXJ2aWNlOiBQZXJtaXNzaW9uTWFuYWdlbWVudFNlcnZpY2UpIHt9XG5cbiAgQEFjdGlvbihQZXJtaXNzaW9uTWFuYWdlbWVudEdldFBlcm1pc3Npb25zKVxuICBwZXJtaXNzaW9uTWFuYWdlbWVudEdldChcbiAgICB7IHBhdGNoU3RhdGUgfTogU3RhdGVDb250ZXh0PFBlcm1pc3Npb25NYW5hZ2VtZW50LlN0YXRlPixcbiAgICB7IHBheWxvYWQgfTogUGVybWlzc2lvbk1hbmFnZW1lbnRHZXRQZXJtaXNzaW9ucyxcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMucGVybWlzc2lvbk1hbmFnZW1lbnRTZXJ2aWNlLmdldFBlcm1pc3Npb25zKHBheWxvYWQpLnBpcGUoXG4gICAgICB0YXAocGVybWlzc2lvblJlc3BvbnNlID0+XG4gICAgICAgIHBhdGNoU3RhdGUoe1xuICAgICAgICAgIHBlcm1pc3Npb25SZXM6IHBlcm1pc3Npb25SZXNwb25zZSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBAQWN0aW9uKFBlcm1pc3Npb25NYW5hZ2VtZW50VXBkYXRlUGVybWlzc2lvbnMpXG4gIHBlcm1pc3Npb25NYW5hZ2VtZW50VXBkYXRlKF8sIHsgcGF5bG9hZCB9OiBQZXJtaXNzaW9uTWFuYWdlbWVudFVwZGF0ZVBlcm1pc3Npb25zKSB7XG4gICAgcmV0dXJuIHRoaXMucGVybWlzc2lvbk1hbmFnZW1lbnRTZXJ2aWNlLnVwZGF0ZVBlcm1pc3Npb25zKHBheWxvYWQpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/esm5/public-api.js b/npm/ng-packs/dist/permission-management/esm5/public-api.js new file mode 100644 index 00000000000..e2c955262e9 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/esm5/public-api.js @@ -0,0 +1,14 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/* + * Public API Surface of permission-management + */ +export { PermissionManagementModule } from './lib/permission-management.module'; +export { PermissionManagementGetPermissions, PermissionManagementUpdatePermissions } from './lib/actions'; +export { PermissionManagementComponent } from './lib/components'; +export {} from './lib/models'; +export { PermissionManagementService } from './lib/services'; +export { PermissionManagementState } from './lib/states'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcucGVybWlzc2lvbi1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsicHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsMkNBQWMsb0NBQW9DLENBQUM7QUFDbkQsMEZBQWMsZUFBZSxDQUFDO0FBQzlCLDhDQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGVBQWMsY0FBYyxDQUFDO0FBQzdCLDRDQUFjLGdCQUFnQixDQUFDO0FBQy9CLDBDQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgcGVybWlzc2lvbi1tYW5hZ2VtZW50XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGVybWlzc2lvbi1tYW5hZ2VtZW50Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY3Rpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXRlcyc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/fesm2015/abp-ng.permission-management.js b/npm/ng-packs/dist/permission-management/fesm2015/abp-ng.permission-management.js new file mode 100644 index 00000000000..33e058281c7 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/fesm2015/abp-ng.permission-management.js @@ -0,0 +1,575 @@ +import { RestService, CoreModule } from '@abp/ng.core'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { Injectable, ɵɵdefineInjectable, ɵɵinject, EventEmitter, Component, Renderer2, Input, Output, NgModule } from '@angular/core'; +import { Action, Selector, State, Store, Select, NgxsModule } from '@ngxs/store'; +import { __decorate, __metadata } from 'tslib'; +import { Observable } from 'rxjs'; +import { tap, map, take, pluck } from 'rxjs/operators'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class PermissionManagementGetPermissions { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +PermissionManagementGetPermissions.type = '[PermissionManagement] Get Permissions'; +class PermissionManagementUpdatePermissions { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +PermissionManagementUpdatePermissions.type = '[PermissionManagement] Update Permissions'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class PermissionManagementService { + /** + * @param {?} rest + */ + constructor(rest) { + this.rest = rest; + } + /** + * @param {?} params + * @return {?} + */ + getPermissions(params) { + /** @type {?} */ + const request = { + method: 'GET', + url: '/api/abp/permissions', + params, + }; + return this.rest.request(request); + } + /** + * @param {?} __0 + * @return {?} + */ + updatePermissions({ permissions, providerKey, providerName, }) { + /** @type {?} */ + const request = { + method: 'PUT', + url: '/api/abp/permissions', + body: { permissions }, + params: { providerKey, providerName }, + }; + return this.rest.request(request); + } +} +PermissionManagementService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +PermissionManagementService.ctorParameters = () => [ + { type: RestService } +]; +/** @nocollapse */ PermissionManagementService.ngInjectableDef = ɵɵdefineInjectable({ factory: function PermissionManagementService_Factory() { return new PermissionManagementService(ɵɵinject(RestService)); }, token: PermissionManagementService, providedIn: "root" }); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +let PermissionManagementState = class PermissionManagementState { + /** + * @param {?} permissionManagementService + */ + constructor(permissionManagementService) { + this.permissionManagementService = permissionManagementService; + } + /** + * @param {?} __0 + * @return {?} + */ + static getPermissionGroups({ permissionRes }) { + return permissionRes.groups || []; + } + /** + * @param {?} __0 + * @return {?} + */ + static getEntitiyDisplayName({ permissionRes }) { + return permissionRes.entityDisplayName; + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + permissionManagementGet({ patchState }, { payload }) { + return this.permissionManagementService.getPermissions(payload).pipe(tap((/** + * @param {?} permissionResponse + * @return {?} + */ + permissionResponse => patchState({ + permissionRes: permissionResponse, + })))); + } + /** + * @param {?} _ + * @param {?} __1 + * @return {?} + */ + permissionManagementUpdate(_, { payload }) { + return this.permissionManagementService.updatePermissions(payload); + } +}; +__decorate([ + Action(PermissionManagementGetPermissions), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, PermissionManagementGetPermissions]), + __metadata("design:returntype", void 0) +], PermissionManagementState.prototype, "permissionManagementGet", null); +__decorate([ + Action(PermissionManagementUpdatePermissions), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, PermissionManagementUpdatePermissions]), + __metadata("design:returntype", void 0) +], PermissionManagementState.prototype, "permissionManagementUpdate", null); +__decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) +], PermissionManagementState, "getPermissionGroups", null); +__decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", String) +], PermissionManagementState, "getEntitiyDisplayName", null); +PermissionManagementState = __decorate([ + State({ + name: 'PermissionManagementState', + defaults: (/** @type {?} */ ({ permissionRes: {} })), + }), + __metadata("design:paramtypes", [PermissionManagementService]) +], PermissionManagementState); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class PermissionManagementComponent { + /** + * @param {?} store + * @param {?} renderer + */ + constructor(store, renderer) { + this.store = store; + this.renderer = renderer; + this.visibleChange = new EventEmitter(); + this.permissions = []; + this.selectThisTab = false; + this.selectAllTab = false; + this.trackByFn = (/** + * @param {?} _ + * @param {?} item + * @return {?} + */ + (_, item) => item.name); + } + /** + * @return {?} + */ + get visible() { + return this._visible; + } + /** + * @param {?} value + * @return {?} + */ + set visible(value) { + if (!this.selectedGroup) + return; + this._visible = value; + this.visibleChange.emit(value); + if (!value) { + this.selectedGroup = null; + } + } + /** + * @return {?} + */ + get selectedGroupPermissions$() { + return this.groups$.pipe(map((/** + * @param {?} groups + * @return {?} + */ + groups => this.selectedGroup ? groups.find((/** + * @param {?} group + * @return {?} + */ + group => group.name === this.selectedGroup.name)).permissions : [])), map((/** + * @param {?} permissions + * @return {?} + */ + permissions => permissions.map((/** + * @param {?} permission + * @return {?} + */ + permission => ((/** @type {?} */ (((/** @type {?} */ (Object.assign({}, permission, { margin: findMargin(permissions, permission), isGranted: this.permissions.find((/** + * @param {?} per + * @return {?} + */ + per => per.name === permission.name)).isGranted })))))))))))); + } + /** + * @return {?} + */ + ngOnInit() { } + /** + * @param {?} name + * @return {?} + */ + getChecked(name) { + return (this.permissions.find((/** + * @param {?} per + * @return {?} + */ + per => per.name === name)) || { isGranted: false }).isGranted; + } + /** + * @param {?} clickedPermission + * @param {?} value + * @return {?} + */ + onClickCheckbox(clickedPermission, value) { + setTimeout((/** + * @return {?} + */ + () => { + this.permissions = this.permissions.map((/** + * @param {?} per + * @return {?} + */ + per => { + if (clickedPermission.name === per.name) { + return Object.assign({}, per, { isGranted: !per.isGranted }); + } + else if (clickedPermission.name === per.parentName && clickedPermission.isGranted) { + return Object.assign({}, per, { isGranted: false }); + } + else if (clickedPermission.parentName === per.name && !clickedPermission.isGranted) { + return Object.assign({}, per, { isGranted: true }); + } + return per; + })); + this.setTabCheckboxState(); + this.setGrantCheckboxState(); + }), 0); + } + /** + * @return {?} + */ + setTabCheckboxState() { + this.selectedGroupPermissions$.pipe(take(1)).subscribe((/** + * @param {?} permissions + * @return {?} + */ + permissions => { + /** @type {?} */ + const selectedPermissions = permissions.filter((/** + * @param {?} per + * @return {?} + */ + per => per.isGranted)); + /** @type {?} */ + const element = (/** @type {?} */ (document.querySelector('#select-all-in-this-tabs'))); + if (selectedPermissions.length === permissions.length) { + element.indeterminate = false; + this.selectThisTab = true; + } + else if (selectedPermissions.length === 0) { + element.indeterminate = false; + this.selectThisTab = false; + } + else { + element.indeterminate = true; + } + })); + } + /** + * @return {?} + */ + setGrantCheckboxState() { + /** @type {?} */ + const selectedAllPermissions = this.permissions.filter((/** + * @param {?} per + * @return {?} + */ + per => per.isGranted)); + /** @type {?} */ + const checkboxElement = (/** @type {?} */ (document.querySelector('#select-all-in-all-tabs'))); + if (selectedAllPermissions.length === this.permissions.length) { + checkboxElement.indeterminate = false; + this.selectAllTab = true; + } + else if (selectedAllPermissions.length === 0) { + checkboxElement.indeterminate = false; + this.selectAllTab = false; + } + else { + checkboxElement.indeterminate = true; + } + } + /** + * @return {?} + */ + onClickSelectThisTab() { + this.selectedGroupPermissions$.pipe(take(1)).subscribe((/** + * @param {?} permissions + * @return {?} + */ + permissions => { + permissions.forEach((/** + * @param {?} permission + * @return {?} + */ + permission => { + /** @type {?} */ + const index = this.permissions.findIndex((/** + * @param {?} per + * @return {?} + */ + per => per.name === permission.name)); + this.permissions = [ + ...this.permissions.slice(0, index), + Object.assign({}, this.permissions[index], { isGranted: !this.selectThisTab }), + ...this.permissions.slice(index + 1), + ]; + })); + })); + this.setGrantCheckboxState(); + } + /** + * @return {?} + */ + onClickSelectAll() { + this.permissions = this.permissions.map((/** + * @param {?} permission + * @return {?} + */ + permission => (Object.assign({}, permission, { isGranted: !this.selectAllTab })))); + this.selectThisTab = !this.selectAllTab; + } + /** + * @param {?} group + * @return {?} + */ + onChangeGroup(group) { + this.selectedGroup = group; + this.setTabCheckboxState(); + } + /** + * @return {?} + */ + onSubmit() { + /** @type {?} */ + const unchangedPermissions = getPermissions(this.store.selectSnapshot(PermissionManagementState.getPermissionGroups)); + /** @type {?} */ + const changedPermissions = this.permissions + .filter((/** + * @param {?} per + * @return {?} + */ + per => unchangedPermissions.find((/** + * @param {?} unchanged + * @return {?} + */ + unchanged => unchanged.name === per.name)).isGranted === per.isGranted ? false : true)) + .map((/** + * @param {?} __0 + * @return {?} + */ + ({ name, isGranted }) => ({ name, isGranted }))); + if (changedPermissions.length) { + this.store + .dispatch(new PermissionManagementUpdatePermissions({ + providerKey: this.providerKey, + providerName: this.providerName, + permissions: changedPermissions, + })) + .subscribe((/** + * @return {?} + */ + () => { + this.visible = false; + })); + } + else { + this.visible = false; + } + } + /** + * @return {?} + */ + openModal() { + if (!this.providerKey || !this.providerName) { + throw new Error('Provider Key and Provider Name are required.'); + } + this.store + .dispatch(new PermissionManagementGetPermissions({ providerKey: this.providerKey, providerName: this.providerName })) + .pipe(pluck('PermissionManagementState', 'permissionRes')) + .subscribe((/** + * @param {?} permissionRes + * @return {?} + */ + (permissionRes) => { + this.selectedGroup = permissionRes.groups[0]; + this.permissions = getPermissions(permissionRes.groups); + this.visible = true; + setTimeout((/** + * @return {?} + */ + () => { + this.setTabCheckboxState(); + this.setGrantCheckboxState(); + }), 0); + })); + } + /** + * @param {?} __0 + * @return {?} + */ + ngOnChanges({ visible }) { + if (!visible) + return; + if (visible.currentValue) { + this.openModal(); + } + else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + } +} +PermissionManagementComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-permission-management', + template: "\n \n \n

{{ 'AbpPermissionManagement::Permissions' | abpLocalization }} - {{ data.entityName }}

\n
\n \n
\n \n \n
\n\n
\n
\n
\n \n
\n
\n

{{ selectedGroup.displayName }}

\n
\n
\n
\n \n \n
\n
\n \n \n \n {{ permission.displayName }}\n
\n \n
\n
\n \n
\n \n \n \n \n
\n
\n" + }] } +]; +/** @nocollapse */ +PermissionManagementComponent.ctorParameters = () => [ + { type: Store }, + { type: Renderer2 } +]; +PermissionManagementComponent.propDecorators = { + providerName: [{ type: Input }], + providerKey: [{ type: Input }], + visible: [{ type: Input }], + visibleChange: [{ type: Output }] +}; +__decorate([ + Select(PermissionManagementState.getPermissionGroups), + __metadata("design:type", Observable) +], PermissionManagementComponent.prototype, "groups$", void 0); +__decorate([ + Select(PermissionManagementState.getEntitiyDisplayName), + __metadata("design:type", Observable) +], PermissionManagementComponent.prototype, "entityName$", void 0); +/** + * @param {?} permissions + * @param {?} permission + * @return {?} + */ +function findMargin(permissions, permission) { + /** @type {?} */ + const parentPermission = permissions.find((/** + * @param {?} per + * @return {?} + */ + per => per.name === permission.parentName)); + if (parentPermission && parentPermission.parentName) { + /** @type {?} */ + let margin = 20; + return (margin += findMargin(permissions, parentPermission)); + } + return parentPermission ? 20 : 0; +} +/** + * @param {?} groups + * @return {?} + */ +function getPermissions(groups) { + return groups.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + (acc, val) => [...acc, ...val.permissions]), []); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class PermissionManagementModule { +} +PermissionManagementModule.decorators = [ + { type: NgModule, args: [{ + declarations: [PermissionManagementComponent], + imports: [CoreModule, ThemeSharedModule, NgxsModule.forFeature([PermissionManagementState]), PerfectScrollbarModule], + exports: [PermissionManagementComponent], + },] } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var PermissionManagement; +(function (PermissionManagement) { + /** + * @record + */ + function State() { } + PermissionManagement.State = State; + /** + * @record + */ + function Response() { } + PermissionManagement.Response = Response; + /** + * @record + */ + function Group() { } + PermissionManagement.Group = Group; + /** + * @record + */ + function MinimumPermission() { } + PermissionManagement.MinimumPermission = MinimumPermission; + /** + * @record + */ + function Permission() { } + PermissionManagement.Permission = Permission; + /** + * @record + */ + function GrantedProvider() { } + PermissionManagement.GrantedProvider = GrantedProvider; + /** + * @record + */ + function UpdateRequest() { } + PermissionManagement.UpdateRequest = UpdateRequest; +})(PermissionManagement || (PermissionManagement = {})); + +export { PermissionManagementComponent, PermissionManagementGetPermissions, PermissionManagementModule, PermissionManagementService, PermissionManagementState, PermissionManagementUpdatePermissions, PermissionManagementComponent as ɵa, PermissionManagementState as ɵb, PermissionManagementService as ɵc, PermissionManagementGetPermissions as ɵd, PermissionManagementUpdatePermissions as ɵe }; +//# sourceMappingURL=abp-ng.permission-management.js.map diff --git a/npm/ng-packs/dist/permission-management/fesm2015/abp-ng.permission-management.js.map b/npm/ng-packs/dist/permission-management/fesm2015/abp-ng.permission-management.js.map new file mode 100644 index 00000000000..70f233b079b --- /dev/null +++ b/npm/ng-packs/dist/permission-management/fesm2015/abp-ng.permission-management.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.permission-management.js","sources":["ng://@abp/ng.permission-management/lib/actions/permission-management.actions.ts","ng://@abp/ng.permission-management/lib/services/permission-management.service.ts","ng://@abp/ng.permission-management/lib/states/permission-management.state.ts","ng://@abp/ng.permission-management/lib/components/permission-management.component.ts","ng://@abp/ng.permission-management/lib/permission-management.module.ts","ng://@abp/ng.permission-management/lib/models/permission-management.ts"],"sourcesContent":["import { PermissionManagement } from '../models/permission-management';\n\nexport class PermissionManagementGetPermissions {\n static readonly type = '[PermissionManagement] Get Permissions';\n constructor(public payload: PermissionManagement.GrantedProvider) {}\n}\n\nexport class PermissionManagementUpdatePermissions {\n static readonly type = '[PermissionManagement] Update Permissions';\n constructor(public payload: PermissionManagement.GrantedProvider & PermissionManagement.UpdateRequest) {}\n}\n","import { Injectable } from '@angular/core';\nimport { RestService, Rest } from '@abp/ng.core';\nimport { Observable } from 'rxjs';\nimport { PermissionManagement } from '../models/permission-management';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PermissionManagementService {\n constructor(private rest: RestService) {}\n\n getPermissions(params: PermissionManagement.GrantedProvider): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/abp/permissions',\n params,\n };\n\n return this.rest.request(request);\n }\n\n updatePermissions({\n permissions,\n providerKey,\n providerName,\n }: PermissionManagement.GrantedProvider & PermissionManagement.UpdateRequest): Observable {\n const request: Rest.Request = {\n method: 'PUT',\n url: '/api/abp/permissions',\n body: { permissions },\n params: { providerKey, providerName },\n };\n\n return this.rest.request(request);\n }\n}\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\nimport {\n PermissionManagementGetPermissions,\n PermissionManagementUpdatePermissions,\n} from '../actions/permission-management.actions';\nimport { PermissionManagement } from '../models/permission-management';\nimport { PermissionManagementService } from '../services/permission-management.service';\nimport { tap } from 'rxjs/operators';\n\n@State({\n name: 'PermissionManagementState',\n defaults: { permissionRes: {} } as PermissionManagement.State,\n})\nexport class PermissionManagementState {\n @Selector()\n static getPermissionGroups({ permissionRes }: PermissionManagement.State) {\n return permissionRes.groups || [];\n }\n\n @Selector()\n static getEntitiyDisplayName({ permissionRes }: PermissionManagement.State): string {\n return permissionRes.entityDisplayName;\n }\n\n constructor(private permissionManagementService: PermissionManagementService) {}\n\n @Action(PermissionManagementGetPermissions)\n permissionManagementGet(\n { patchState }: StateContext,\n { payload }: PermissionManagementGetPermissions,\n ) {\n return this.permissionManagementService.getPermissions(payload).pipe(\n tap(permissionResponse =>\n patchState({\n permissionRes: permissionResponse,\n }),\n ),\n );\n }\n\n @Action(PermissionManagementUpdatePermissions)\n permissionManagementUpdate(_, { payload }: PermissionManagementUpdatePermissions) {\n return this.permissionManagementService.updatePermissions(payload);\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n TrackByFunction,\n} from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { from, Observable } from 'rxjs';\nimport { map, pluck, take } from 'rxjs/operators';\nimport {\n PermissionManagementGetPermissions,\n PermissionManagementUpdatePermissions,\n} from '../actions/permission-management.actions';\nimport { PermissionManagement } from '../models/permission-management';\nimport { PermissionManagementState } from '../states/permission-management.state';\n\ntype PermissionWithMargin = PermissionManagement.Permission & { margin: number };\n\n@Component({\n selector: 'abp-permission-management',\n templateUrl: './permission-management.component.html',\n})\nexport class PermissionManagementComponent implements OnInit, OnChanges {\n @Input()\n providerName: string;\n\n @Input()\n providerKey: string;\n\n protected _visible;\n\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n\n set visible(value: boolean) {\n if (!this.selectedGroup) return;\n\n this._visible = value;\n this.visibleChange.emit(value);\n\n if (!value) {\n this.selectedGroup = null;\n }\n }\n\n @Output()\n visibleChange = new EventEmitter();\n\n @Select(PermissionManagementState.getPermissionGroups)\n groups$: Observable;\n\n @Select(PermissionManagementState.getEntitiyDisplayName)\n entityName$: Observable;\n\n selectedGroup: PermissionManagement.Group;\n\n permissions: PermissionManagement.Permission[] = [];\n\n selectThisTab: boolean = false;\n\n selectAllTab: boolean = false;\n\n trackByFn: TrackByFunction = (_, item) => item.name;\n\n get selectedGroupPermissions$(): Observable {\n return this.groups$.pipe(\n map(groups =>\n this.selectedGroup ? groups.find(group => group.name === this.selectedGroup.name).permissions : [],\n ),\n map(permissions =>\n permissions.map(\n permission =>\n (({\n ...permission,\n margin: findMargin(permissions, permission),\n isGranted: this.permissions.find(per => per.name === permission.name).isGranted,\n } as any) as PermissionWithMargin),\n ),\n ),\n );\n }\n\n constructor(private store: Store, private renderer: Renderer2) {}\n\n ngOnInit(): void {}\n\n getChecked(name: string) {\n return (this.permissions.find(per => per.name === name) || { isGranted: false }).isGranted;\n }\n\n onClickCheckbox(clickedPermission: PermissionManagement.Permission, value) {\n setTimeout(() => {\n this.permissions = this.permissions.map(per => {\n if (clickedPermission.name === per.name) {\n return { ...per, isGranted: !per.isGranted };\n } else if (clickedPermission.name === per.parentName && clickedPermission.isGranted) {\n return { ...per, isGranted: false };\n } else if (clickedPermission.parentName === per.name && !clickedPermission.isGranted) {\n return { ...per, isGranted: true };\n }\n\n return per;\n });\n\n this.setTabCheckboxState();\n this.setGrantCheckboxState();\n }, 0);\n }\n\n setTabCheckboxState() {\n this.selectedGroupPermissions$.pipe(take(1)).subscribe(permissions => {\n const selectedPermissions = permissions.filter(per => per.isGranted);\n const element = document.querySelector('#select-all-in-this-tabs') as any;\n\n if (selectedPermissions.length === permissions.length) {\n element.indeterminate = false;\n this.selectThisTab = true;\n } else if (selectedPermissions.length === 0) {\n element.indeterminate = false;\n this.selectThisTab = false;\n } else {\n element.indeterminate = true;\n }\n });\n }\n\n setGrantCheckboxState() {\n const selectedAllPermissions = this.permissions.filter(per => per.isGranted);\n const checkboxElement = document.querySelector('#select-all-in-all-tabs') as any;\n\n if (selectedAllPermissions.length === this.permissions.length) {\n checkboxElement.indeterminate = false;\n this.selectAllTab = true;\n } else if (selectedAllPermissions.length === 0) {\n checkboxElement.indeterminate = false;\n this.selectAllTab = false;\n } else {\n checkboxElement.indeterminate = true;\n }\n }\n\n onClickSelectThisTab() {\n this.selectedGroupPermissions$.pipe(take(1)).subscribe(permissions => {\n permissions.forEach(permission => {\n const index = this.permissions.findIndex(per => per.name === permission.name);\n\n this.permissions = [\n ...this.permissions.slice(0, index),\n { ...this.permissions[index], isGranted: !this.selectThisTab },\n ...this.permissions.slice(index + 1),\n ];\n });\n });\n\n this.setGrantCheckboxState();\n }\n\n onClickSelectAll() {\n this.permissions = this.permissions.map(permission => ({ ...permission, isGranted: !this.selectAllTab }));\n\n this.selectThisTab = !this.selectAllTab;\n }\n\n onChangeGroup(group: PermissionManagement.Group) {\n this.selectedGroup = group;\n this.setTabCheckboxState();\n }\n\n onSubmit() {\n const unchangedPermissions = getPermissions(\n this.store.selectSnapshot(PermissionManagementState.getPermissionGroups),\n );\n\n const changedPermissions: PermissionManagement.MinimumPermission[] = this.permissions\n .filter(per =>\n unchangedPermissions.find(unchanged => unchanged.name === per.name).isGranted === per.isGranted ? false : true,\n )\n .map(({ name, isGranted }) => ({ name, isGranted }));\n\n if (changedPermissions.length) {\n this.store\n .dispatch(\n new PermissionManagementUpdatePermissions({\n providerKey: this.providerKey,\n providerName: this.providerName,\n permissions: changedPermissions,\n }),\n )\n .subscribe(() => {\n this.visible = false;\n });\n } else {\n this.visible = false;\n }\n }\n\n openModal() {\n if (!this.providerKey || !this.providerName) {\n throw new Error('Provider Key and Provider Name are required.');\n }\n\n this.store\n .dispatch(\n new PermissionManagementGetPermissions({ providerKey: this.providerKey, providerName: this.providerName }),\n )\n .pipe(pluck('PermissionManagementState', 'permissionRes'))\n .subscribe((permissionRes: PermissionManagement.Response) => {\n this.selectedGroup = permissionRes.groups[0];\n this.permissions = getPermissions(permissionRes.groups);\n\n this.visible = true;\n\n setTimeout(() => {\n this.setTabCheckboxState();\n this.setGrantCheckboxState();\n }, 0);\n });\n }\n\n ngOnChanges({ visible }: SimpleChanges): void {\n if (!visible) return;\n\n if (visible.currentValue) {\n this.openModal();\n } else if (visible.currentValue === false && this.visible) {\n this.visible = false;\n }\n }\n}\n\nfunction findMargin(permissions: PermissionManagement.Permission[], permission: PermissionManagement.Permission) {\n const parentPermission = permissions.find(per => per.name === permission.parentName);\n\n if (parentPermission && parentPermission.parentName) {\n let margin = 20;\n return (margin += findMargin(permissions, parentPermission));\n }\n\n return parentPermission ? 20 : 0;\n}\n\nfunction getPermissions(groups: PermissionManagement.Group[]): PermissionManagement.Permission[] {\n return groups.reduce((acc, val) => [...acc, ...val.permissions], []);\n}\n","import { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { NgModule } from '@angular/core';\nimport { NgxsModule } from '@ngxs/store';\nimport { PermissionManagementComponent } from './components/permission-management.component';\nimport { PermissionManagementState } from './states/permission-management.state';\nimport { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';\n\n@NgModule({\n declarations: [PermissionManagementComponent],\n imports: [CoreModule, ThemeSharedModule, NgxsModule.forFeature([PermissionManagementState]), PerfectScrollbarModule],\n exports: [PermissionManagementComponent],\n})\nexport class PermissionManagementModule {}\n","export namespace PermissionManagement {\n export interface State {\n permissionRes: Response;\n }\n\n export interface Response {\n entityDisplayName: string;\n groups: Group[];\n }\n\n export interface Group {\n name: string;\n displayName: string;\n permissions: Permission[];\n }\n\n export interface MinimumPermission {\n name: string;\n isGranted: boolean;\n }\n\n export interface Permission extends MinimumPermission {\n displayName: string;\n parentName: string;\n allowedProviders: string[];\n grantedProviders: GrantedProvider[];\n }\n\n export interface GrantedProvider {\n providerName: string;\n providerKey: string;\n }\n\n export interface UpdateRequest {\n permissions: MinimumPermission[];\n }\n}\n"],"names":["tslib_1.__decorate"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/fesm5/abp-ng.permission-management.js b/npm/ng-packs/dist/permission-management/fesm5/abp-ng.permission-management.js new file mode 100644 index 00000000000..699234c3c8a --- /dev/null +++ b/npm/ng-packs/dist/permission-management/fesm5/abp-ng.permission-management.js @@ -0,0 +1,664 @@ +import { RestService, CoreModule } from '@abp/ng.core'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { Injectable, ɵɵdefineInjectable, ɵɵinject, Component, Renderer2, Input, Output, EventEmitter, NgModule } from '@angular/core'; +import { Action, Selector, State, Store, Select, NgxsModule } from '@ngxs/store'; +import { __decorate, __metadata, __assign, __spread } from 'tslib'; +import { Observable } from 'rxjs'; +import { tap, map, take, pluck } from 'rxjs/operators'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var PermissionManagementGetPermissions = /** @class */ (function () { + function PermissionManagementGetPermissions(payload) { + this.payload = payload; + } + PermissionManagementGetPermissions.type = '[PermissionManagement] Get Permissions'; + return PermissionManagementGetPermissions; +}()); +var PermissionManagementUpdatePermissions = /** @class */ (function () { + function PermissionManagementUpdatePermissions(payload) { + this.payload = payload; + } + PermissionManagementUpdatePermissions.type = '[PermissionManagement] Update Permissions'; + return PermissionManagementUpdatePermissions; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var PermissionManagementService = /** @class */ (function () { + function PermissionManagementService(rest) { + this.rest = rest; + } + /** + * @param {?} params + * @return {?} + */ + PermissionManagementService.prototype.getPermissions = /** + * @param {?} params + * @return {?} + */ + function (params) { + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/abp/permissions', + params: params, + }; + return this.rest.request(request); + }; + /** + * @param {?} __0 + * @return {?} + */ + PermissionManagementService.prototype.updatePermissions = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var permissions = _a.permissions, providerKey = _a.providerKey, providerName = _a.providerName; + /** @type {?} */ + var request = { + method: 'PUT', + url: '/api/abp/permissions', + body: { permissions: permissions }, + params: { providerKey: providerKey, providerName: providerName }, + }; + return this.rest.request(request); + }; + PermissionManagementService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + PermissionManagementService.ctorParameters = function () { return [ + { type: RestService } + ]; }; + /** @nocollapse */ PermissionManagementService.ngInjectableDef = ɵɵdefineInjectable({ factory: function PermissionManagementService_Factory() { return new PermissionManagementService(ɵɵinject(RestService)); }, token: PermissionManagementService, providedIn: "root" }); + return PermissionManagementService; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var PermissionManagementState = /** @class */ (function () { + function PermissionManagementState(permissionManagementService) { + this.permissionManagementService = permissionManagementService; + } + /** + * @param {?} __0 + * @return {?} + */ + PermissionManagementState.getPermissionGroups = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var permissionRes = _a.permissionRes; + return permissionRes.groups || []; + }; + /** + * @param {?} __0 + * @return {?} + */ + PermissionManagementState.getEntitiyDisplayName = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var permissionRes = _a.permissionRes; + return permissionRes.entityDisplayName; + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + PermissionManagementState.prototype.permissionManagementGet = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.permissionManagementService.getPermissions(payload).pipe(tap((/** + * @param {?} permissionResponse + * @return {?} + */ + function (permissionResponse) { + return patchState({ + permissionRes: permissionResponse, + }); + }))); + }; + /** + * @param {?} _ + * @param {?} __1 + * @return {?} + */ + PermissionManagementState.prototype.permissionManagementUpdate = /** + * @param {?} _ + * @param {?} __1 + * @return {?} + */ + function (_, _a) { + var payload = _a.payload; + return this.permissionManagementService.updatePermissions(payload); + }; + __decorate([ + Action(PermissionManagementGetPermissions), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, PermissionManagementGetPermissions]), + __metadata("design:returntype", void 0) + ], PermissionManagementState.prototype, "permissionManagementGet", null); + __decorate([ + Action(PermissionManagementUpdatePermissions), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, PermissionManagementUpdatePermissions]), + __metadata("design:returntype", void 0) + ], PermissionManagementState.prototype, "permissionManagementUpdate", null); + __decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) + ], PermissionManagementState, "getPermissionGroups", null); + __decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", String) + ], PermissionManagementState, "getEntitiyDisplayName", null); + PermissionManagementState = __decorate([ + State({ + name: 'PermissionManagementState', + defaults: (/** @type {?} */ ({ permissionRes: {} })), + }), + __metadata("design:paramtypes", [PermissionManagementService]) + ], PermissionManagementState); + return PermissionManagementState; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var PermissionManagementComponent = /** @class */ (function () { + function PermissionManagementComponent(store, renderer) { + this.store = store; + this.renderer = renderer; + this.visibleChange = new EventEmitter(); + this.permissions = []; + this.selectThisTab = false; + this.selectAllTab = false; + this.trackByFn = (/** + * @param {?} _ + * @param {?} item + * @return {?} + */ + function (_, item) { return item.name; }); + } + Object.defineProperty(PermissionManagementComponent.prototype, "visible", { + get: /** + * @return {?} + */ + function () { + return this._visible; + }, + set: /** + * @param {?} value + * @return {?} + */ + function (value) { + if (!this.selectedGroup) + return; + this._visible = value; + this.visibleChange.emit(value); + if (!value) { + this.selectedGroup = null; + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(PermissionManagementComponent.prototype, "selectedGroupPermissions$", { + get: /** + * @return {?} + */ + function () { + var _this = this; + return this.groups$.pipe(map((/** + * @param {?} groups + * @return {?} + */ + function (groups) { + return _this.selectedGroup ? groups.find((/** + * @param {?} group + * @return {?} + */ + function (group) { return group.name === _this.selectedGroup.name; })).permissions : []; + })), map((/** + * @param {?} permissions + * @return {?} + */ + function (permissions) { + return permissions.map((/** + * @param {?} permission + * @return {?} + */ + function (permission) { + return ((/** @type {?} */ (((/** @type {?} */ (__assign({}, permission, { margin: findMargin(permissions, permission), isGranted: _this.permissions.find((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.name === permission.name; })).isGranted }))))))); + })); + }))); + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + PermissionManagementComponent.prototype.ngOnInit = /** + * @return {?} + */ + function () { }; + /** + * @param {?} name + * @return {?} + */ + PermissionManagementComponent.prototype.getChecked = /** + * @param {?} name + * @return {?} + */ + function (name) { + return (this.permissions.find((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.name === name; })) || { isGranted: false }).isGranted; + }; + /** + * @param {?} clickedPermission + * @param {?} value + * @return {?} + */ + PermissionManagementComponent.prototype.onClickCheckbox = /** + * @param {?} clickedPermission + * @param {?} value + * @return {?} + */ + function (clickedPermission, value) { + var _this = this; + setTimeout((/** + * @return {?} + */ + function () { + _this.permissions = _this.permissions.map((/** + * @param {?} per + * @return {?} + */ + function (per) { + if (clickedPermission.name === per.name) { + return __assign({}, per, { isGranted: !per.isGranted }); + } + else if (clickedPermission.name === per.parentName && clickedPermission.isGranted) { + return __assign({}, per, { isGranted: false }); + } + else if (clickedPermission.parentName === per.name && !clickedPermission.isGranted) { + return __assign({}, per, { isGranted: true }); + } + return per; + })); + _this.setTabCheckboxState(); + _this.setGrantCheckboxState(); + }), 0); + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.setTabCheckboxState = /** + * @return {?} + */ + function () { + var _this = this; + this.selectedGroupPermissions$.pipe(take(1)).subscribe((/** + * @param {?} permissions + * @return {?} + */ + function (permissions) { + /** @type {?} */ + var selectedPermissions = permissions.filter((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.isGranted; })); + /** @type {?} */ + var element = (/** @type {?} */ (document.querySelector('#select-all-in-this-tabs'))); + if (selectedPermissions.length === permissions.length) { + element.indeterminate = false; + _this.selectThisTab = true; + } + else if (selectedPermissions.length === 0) { + element.indeterminate = false; + _this.selectThisTab = false; + } + else { + element.indeterminate = true; + } + })); + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.setGrantCheckboxState = /** + * @return {?} + */ + function () { + /** @type {?} */ + var selectedAllPermissions = this.permissions.filter((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.isGranted; })); + /** @type {?} */ + var checkboxElement = (/** @type {?} */ (document.querySelector('#select-all-in-all-tabs'))); + if (selectedAllPermissions.length === this.permissions.length) { + checkboxElement.indeterminate = false; + this.selectAllTab = true; + } + else if (selectedAllPermissions.length === 0) { + checkboxElement.indeterminate = false; + this.selectAllTab = false; + } + else { + checkboxElement.indeterminate = true; + } + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.onClickSelectThisTab = /** + * @return {?} + */ + function () { + var _this = this; + this.selectedGroupPermissions$.pipe(take(1)).subscribe((/** + * @param {?} permissions + * @return {?} + */ + function (permissions) { + permissions.forEach((/** + * @param {?} permission + * @return {?} + */ + function (permission) { + /** @type {?} */ + var index = _this.permissions.findIndex((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.name === permission.name; })); + _this.permissions = __spread(_this.permissions.slice(0, index), [ + __assign({}, _this.permissions[index], { isGranted: !_this.selectThisTab }) + ], _this.permissions.slice(index + 1)); + })); + })); + this.setGrantCheckboxState(); + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.onClickSelectAll = /** + * @return {?} + */ + function () { + var _this = this; + this.permissions = this.permissions.map((/** + * @param {?} permission + * @return {?} + */ + function (permission) { return (__assign({}, permission, { isGranted: !_this.selectAllTab })); })); + this.selectThisTab = !this.selectAllTab; + }; + /** + * @param {?} group + * @return {?} + */ + PermissionManagementComponent.prototype.onChangeGroup = /** + * @param {?} group + * @return {?} + */ + function (group) { + this.selectedGroup = group; + this.setTabCheckboxState(); + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.onSubmit = /** + * @return {?} + */ + function () { + var _this = this; + /** @type {?} */ + var unchangedPermissions = getPermissions(this.store.selectSnapshot(PermissionManagementState.getPermissionGroups)); + /** @type {?} */ + var changedPermissions = this.permissions + .filter((/** + * @param {?} per + * @return {?} + */ + function (per) { + return unchangedPermissions.find((/** + * @param {?} unchanged + * @return {?} + */ + function (unchanged) { return unchanged.name === per.name; })).isGranted === per.isGranted ? false : true; + })) + .map((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var name = _a.name, isGranted = _a.isGranted; + return ({ name: name, isGranted: isGranted }); + })); + if (changedPermissions.length) { + this.store + .dispatch(new PermissionManagementUpdatePermissions({ + providerKey: this.providerKey, + providerName: this.providerName, + permissions: changedPermissions, + })) + .subscribe((/** + * @return {?} + */ + function () { + _this.visible = false; + })); + } + else { + this.visible = false; + } + }; + /** + * @return {?} + */ + PermissionManagementComponent.prototype.openModal = /** + * @return {?} + */ + function () { + var _this = this; + if (!this.providerKey || !this.providerName) { + throw new Error('Provider Key and Provider Name are required.'); + } + this.store + .dispatch(new PermissionManagementGetPermissions({ providerKey: this.providerKey, providerName: this.providerName })) + .pipe(pluck('PermissionManagementState', 'permissionRes')) + .subscribe((/** + * @param {?} permissionRes + * @return {?} + */ + function (permissionRes) { + _this.selectedGroup = permissionRes.groups[0]; + _this.permissions = getPermissions(permissionRes.groups); + _this.visible = true; + setTimeout((/** + * @return {?} + */ + function () { + _this.setTabCheckboxState(); + _this.setGrantCheckboxState(); + }), 0); + })); + }; + /** + * @param {?} __0 + * @return {?} + */ + PermissionManagementComponent.prototype.ngOnChanges = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var visible = _a.visible; + if (!visible) + return; + if (visible.currentValue) { + this.openModal(); + } + else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + }; + PermissionManagementComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-permission-management', + template: "\n \n \n

{{ 'AbpPermissionManagement::Permissions' | abpLocalization }} - {{ data.entityName }}

\n
\n \n
\n \n \n
\n\n
\n
\n
\n \n
\n
\n

{{ selectedGroup.displayName }}

\n
\n
\n
\n \n \n
\n
\n \n \n \n {{ permission.displayName }}\n
\n \n
\n
\n \n
\n \n \n \n \n
\n
\n" + }] } + ]; + /** @nocollapse */ + PermissionManagementComponent.ctorParameters = function () { return [ + { type: Store }, + { type: Renderer2 } + ]; }; + PermissionManagementComponent.propDecorators = { + providerName: [{ type: Input }], + providerKey: [{ type: Input }], + visible: [{ type: Input }], + visibleChange: [{ type: Output }] + }; + __decorate([ + Select(PermissionManagementState.getPermissionGroups), + __metadata("design:type", Observable) + ], PermissionManagementComponent.prototype, "groups$", void 0); + __decorate([ + Select(PermissionManagementState.getEntitiyDisplayName), + __metadata("design:type", Observable) + ], PermissionManagementComponent.prototype, "entityName$", void 0); + return PermissionManagementComponent; +}()); +/** + * @param {?} permissions + * @param {?} permission + * @return {?} + */ +function findMargin(permissions, permission) { + /** @type {?} */ + var parentPermission = permissions.find((/** + * @param {?} per + * @return {?} + */ + function (per) { return per.name === permission.parentName; })); + if (parentPermission && parentPermission.parentName) { + /** @type {?} */ + var margin = 20; + return (margin += findMargin(permissions, parentPermission)); + } + return parentPermission ? 20 : 0; +} +/** + * @param {?} groups + * @return {?} + */ +function getPermissions(groups) { + return groups.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { return __spread(acc, val.permissions); }), []); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var PermissionManagementModule = /** @class */ (function () { + function PermissionManagementModule() { + } + PermissionManagementModule.decorators = [ + { type: NgModule, args: [{ + declarations: [PermissionManagementComponent], + imports: [CoreModule, ThemeSharedModule, NgxsModule.forFeature([PermissionManagementState]), PerfectScrollbarModule], + exports: [PermissionManagementComponent], + },] } + ]; + return PermissionManagementModule; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var PermissionManagement; +(function (PermissionManagement) { + /** + * @record + */ + function State() { } + PermissionManagement.State = State; + /** + * @record + */ + function Response() { } + PermissionManagement.Response = Response; + /** + * @record + */ + function Group() { } + PermissionManagement.Group = Group; + /** + * @record + */ + function MinimumPermission() { } + PermissionManagement.MinimumPermission = MinimumPermission; + /** + * @record + */ + function Permission() { } + PermissionManagement.Permission = Permission; + /** + * @record + */ + function GrantedProvider() { } + PermissionManagement.GrantedProvider = GrantedProvider; + /** + * @record + */ + function UpdateRequest() { } + PermissionManagement.UpdateRequest = UpdateRequest; +})(PermissionManagement || (PermissionManagement = {})); + +export { PermissionManagementComponent, PermissionManagementGetPermissions, PermissionManagementModule, PermissionManagementService, PermissionManagementState, PermissionManagementUpdatePermissions, PermissionManagementComponent as ɵa, PermissionManagementState as ɵb, PermissionManagementService as ɵc, PermissionManagementGetPermissions as ɵd, PermissionManagementUpdatePermissions as ɵe }; +//# sourceMappingURL=abp-ng.permission-management.js.map diff --git a/npm/ng-packs/dist/permission-management/fesm5/abp-ng.permission-management.js.map b/npm/ng-packs/dist/permission-management/fesm5/abp-ng.permission-management.js.map new file mode 100644 index 00000000000..bdcfe039b34 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/fesm5/abp-ng.permission-management.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.permission-management.js","sources":["ng://@abp/ng.permission-management/lib/actions/permission-management.actions.ts","ng://@abp/ng.permission-management/lib/services/permission-management.service.ts","ng://@abp/ng.permission-management/lib/states/permission-management.state.ts","ng://@abp/ng.permission-management/lib/components/permission-management.component.ts","ng://@abp/ng.permission-management/lib/permission-management.module.ts","ng://@abp/ng.permission-management/lib/models/permission-management.ts"],"sourcesContent":["import { PermissionManagement } from '../models/permission-management';\n\nexport class PermissionManagementGetPermissions {\n static readonly type = '[PermissionManagement] Get Permissions';\n constructor(public payload: PermissionManagement.GrantedProvider) {}\n}\n\nexport class PermissionManagementUpdatePermissions {\n static readonly type = '[PermissionManagement] Update Permissions';\n constructor(public payload: PermissionManagement.GrantedProvider & PermissionManagement.UpdateRequest) {}\n}\n","import { Injectable } from '@angular/core';\nimport { RestService, Rest } from '@abp/ng.core';\nimport { Observable } from 'rxjs';\nimport { PermissionManagement } from '../models/permission-management';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PermissionManagementService {\n constructor(private rest: RestService) {}\n\n getPermissions(params: PermissionManagement.GrantedProvider): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/abp/permissions',\n params,\n };\n\n return this.rest.request(request);\n }\n\n updatePermissions({\n permissions,\n providerKey,\n providerName,\n }: PermissionManagement.GrantedProvider & PermissionManagement.UpdateRequest): Observable {\n const request: Rest.Request = {\n method: 'PUT',\n url: '/api/abp/permissions',\n body: { permissions },\n params: { providerKey, providerName },\n };\n\n return this.rest.request(request);\n }\n}\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\nimport {\n PermissionManagementGetPermissions,\n PermissionManagementUpdatePermissions,\n} from '../actions/permission-management.actions';\nimport { PermissionManagement } from '../models/permission-management';\nimport { PermissionManagementService } from '../services/permission-management.service';\nimport { tap } from 'rxjs/operators';\n\n@State({\n name: 'PermissionManagementState',\n defaults: { permissionRes: {} } as PermissionManagement.State,\n})\nexport class PermissionManagementState {\n @Selector()\n static getPermissionGroups({ permissionRes }: PermissionManagement.State) {\n return permissionRes.groups || [];\n }\n\n @Selector()\n static getEntitiyDisplayName({ permissionRes }: PermissionManagement.State): string {\n return permissionRes.entityDisplayName;\n }\n\n constructor(private permissionManagementService: PermissionManagementService) {}\n\n @Action(PermissionManagementGetPermissions)\n permissionManagementGet(\n { patchState }: StateContext,\n { payload }: PermissionManagementGetPermissions,\n ) {\n return this.permissionManagementService.getPermissions(payload).pipe(\n tap(permissionResponse =>\n patchState({\n permissionRes: permissionResponse,\n }),\n ),\n );\n }\n\n @Action(PermissionManagementUpdatePermissions)\n permissionManagementUpdate(_, { payload }: PermissionManagementUpdatePermissions) {\n return this.permissionManagementService.updatePermissions(payload);\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n TrackByFunction,\n} from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { from, Observable } from 'rxjs';\nimport { map, pluck, take } from 'rxjs/operators';\nimport {\n PermissionManagementGetPermissions,\n PermissionManagementUpdatePermissions,\n} from '../actions/permission-management.actions';\nimport { PermissionManagement } from '../models/permission-management';\nimport { PermissionManagementState } from '../states/permission-management.state';\n\ntype PermissionWithMargin = PermissionManagement.Permission & { margin: number };\n\n@Component({\n selector: 'abp-permission-management',\n templateUrl: './permission-management.component.html',\n})\nexport class PermissionManagementComponent implements OnInit, OnChanges {\n @Input()\n providerName: string;\n\n @Input()\n providerKey: string;\n\n protected _visible;\n\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n\n set visible(value: boolean) {\n if (!this.selectedGroup) return;\n\n this._visible = value;\n this.visibleChange.emit(value);\n\n if (!value) {\n this.selectedGroup = null;\n }\n }\n\n @Output()\n visibleChange = new EventEmitter();\n\n @Select(PermissionManagementState.getPermissionGroups)\n groups$: Observable;\n\n @Select(PermissionManagementState.getEntitiyDisplayName)\n entityName$: Observable;\n\n selectedGroup: PermissionManagement.Group;\n\n permissions: PermissionManagement.Permission[] = [];\n\n selectThisTab: boolean = false;\n\n selectAllTab: boolean = false;\n\n trackByFn: TrackByFunction = (_, item) => item.name;\n\n get selectedGroupPermissions$(): Observable {\n return this.groups$.pipe(\n map(groups =>\n this.selectedGroup ? groups.find(group => group.name === this.selectedGroup.name).permissions : [],\n ),\n map(permissions =>\n permissions.map(\n permission =>\n (({\n ...permission,\n margin: findMargin(permissions, permission),\n isGranted: this.permissions.find(per => per.name === permission.name).isGranted,\n } as any) as PermissionWithMargin),\n ),\n ),\n );\n }\n\n constructor(private store: Store, private renderer: Renderer2) {}\n\n ngOnInit(): void {}\n\n getChecked(name: string) {\n return (this.permissions.find(per => per.name === name) || { isGranted: false }).isGranted;\n }\n\n onClickCheckbox(clickedPermission: PermissionManagement.Permission, value) {\n setTimeout(() => {\n this.permissions = this.permissions.map(per => {\n if (clickedPermission.name === per.name) {\n return { ...per, isGranted: !per.isGranted };\n } else if (clickedPermission.name === per.parentName && clickedPermission.isGranted) {\n return { ...per, isGranted: false };\n } else if (clickedPermission.parentName === per.name && !clickedPermission.isGranted) {\n return { ...per, isGranted: true };\n }\n\n return per;\n });\n\n this.setTabCheckboxState();\n this.setGrantCheckboxState();\n }, 0);\n }\n\n setTabCheckboxState() {\n this.selectedGroupPermissions$.pipe(take(1)).subscribe(permissions => {\n const selectedPermissions = permissions.filter(per => per.isGranted);\n const element = document.querySelector('#select-all-in-this-tabs') as any;\n\n if (selectedPermissions.length === permissions.length) {\n element.indeterminate = false;\n this.selectThisTab = true;\n } else if (selectedPermissions.length === 0) {\n element.indeterminate = false;\n this.selectThisTab = false;\n } else {\n element.indeterminate = true;\n }\n });\n }\n\n setGrantCheckboxState() {\n const selectedAllPermissions = this.permissions.filter(per => per.isGranted);\n const checkboxElement = document.querySelector('#select-all-in-all-tabs') as any;\n\n if (selectedAllPermissions.length === this.permissions.length) {\n checkboxElement.indeterminate = false;\n this.selectAllTab = true;\n } else if (selectedAllPermissions.length === 0) {\n checkboxElement.indeterminate = false;\n this.selectAllTab = false;\n } else {\n checkboxElement.indeterminate = true;\n }\n }\n\n onClickSelectThisTab() {\n this.selectedGroupPermissions$.pipe(take(1)).subscribe(permissions => {\n permissions.forEach(permission => {\n const index = this.permissions.findIndex(per => per.name === permission.name);\n\n this.permissions = [\n ...this.permissions.slice(0, index),\n { ...this.permissions[index], isGranted: !this.selectThisTab },\n ...this.permissions.slice(index + 1),\n ];\n });\n });\n\n this.setGrantCheckboxState();\n }\n\n onClickSelectAll() {\n this.permissions = this.permissions.map(permission => ({ ...permission, isGranted: !this.selectAllTab }));\n\n this.selectThisTab = !this.selectAllTab;\n }\n\n onChangeGroup(group: PermissionManagement.Group) {\n this.selectedGroup = group;\n this.setTabCheckboxState();\n }\n\n onSubmit() {\n const unchangedPermissions = getPermissions(\n this.store.selectSnapshot(PermissionManagementState.getPermissionGroups),\n );\n\n const changedPermissions: PermissionManagement.MinimumPermission[] = this.permissions\n .filter(per =>\n unchangedPermissions.find(unchanged => unchanged.name === per.name).isGranted === per.isGranted ? false : true,\n )\n .map(({ name, isGranted }) => ({ name, isGranted }));\n\n if (changedPermissions.length) {\n this.store\n .dispatch(\n new PermissionManagementUpdatePermissions({\n providerKey: this.providerKey,\n providerName: this.providerName,\n permissions: changedPermissions,\n }),\n )\n .subscribe(() => {\n this.visible = false;\n });\n } else {\n this.visible = false;\n }\n }\n\n openModal() {\n if (!this.providerKey || !this.providerName) {\n throw new Error('Provider Key and Provider Name are required.');\n }\n\n this.store\n .dispatch(\n new PermissionManagementGetPermissions({ providerKey: this.providerKey, providerName: this.providerName }),\n )\n .pipe(pluck('PermissionManagementState', 'permissionRes'))\n .subscribe((permissionRes: PermissionManagement.Response) => {\n this.selectedGroup = permissionRes.groups[0];\n this.permissions = getPermissions(permissionRes.groups);\n\n this.visible = true;\n\n setTimeout(() => {\n this.setTabCheckboxState();\n this.setGrantCheckboxState();\n }, 0);\n });\n }\n\n ngOnChanges({ visible }: SimpleChanges): void {\n if (!visible) return;\n\n if (visible.currentValue) {\n this.openModal();\n } else if (visible.currentValue === false && this.visible) {\n this.visible = false;\n }\n }\n}\n\nfunction findMargin(permissions: PermissionManagement.Permission[], permission: PermissionManagement.Permission) {\n const parentPermission = permissions.find(per => per.name === permission.parentName);\n\n if (parentPermission && parentPermission.parentName) {\n let margin = 20;\n return (margin += findMargin(permissions, parentPermission));\n }\n\n return parentPermission ? 20 : 0;\n}\n\nfunction getPermissions(groups: PermissionManagement.Group[]): PermissionManagement.Permission[] {\n return groups.reduce((acc, val) => [...acc, ...val.permissions], []);\n}\n","import { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { NgModule } from '@angular/core';\nimport { NgxsModule } from '@ngxs/store';\nimport { PermissionManagementComponent } from './components/permission-management.component';\nimport { PermissionManagementState } from './states/permission-management.state';\nimport { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';\n\n@NgModule({\n declarations: [PermissionManagementComponent],\n imports: [CoreModule, ThemeSharedModule, NgxsModule.forFeature([PermissionManagementState]), PerfectScrollbarModule],\n exports: [PermissionManagementComponent],\n})\nexport class PermissionManagementModule {}\n","export namespace PermissionManagement {\n export interface State {\n permissionRes: Response;\n }\n\n export interface Response {\n entityDisplayName: string;\n groups: Group[];\n }\n\n export interface Group {\n name: string;\n displayName: string;\n permissions: Permission[];\n }\n\n export interface MinimumPermission {\n name: string;\n isGranted: boolean;\n }\n\n export interface Permission extends MinimumPermission {\n displayName: string;\n parentName: string;\n allowedProviders: string[];\n grantedProviders: GrantedProvider[];\n }\n\n export interface GrantedProvider {\n providerName: string;\n providerKey: string;\n }\n\n export interface UpdateRequest {\n permissions: MinimumPermission[];\n }\n}\n"],"names":["tslib_1.__decorate"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/permission-management/lib/actions/index.d.ts b/npm/ng-packs/dist/permission-management/lib/actions/index.d.ts new file mode 100644 index 00000000000..5fb2c9e8e4e --- /dev/null +++ b/npm/ng-packs/dist/permission-management/lib/actions/index.d.ts @@ -0,0 +1 @@ +export * from './permission-management.actions'; diff --git a/npm/ng-packs/dist/permission-management/lib/actions/permission-management.actions.d.ts b/npm/ng-packs/dist/permission-management/lib/actions/permission-management.actions.d.ts new file mode 100644 index 00000000000..923c31177ee --- /dev/null +++ b/npm/ng-packs/dist/permission-management/lib/actions/permission-management.actions.d.ts @@ -0,0 +1,11 @@ +import { PermissionManagement } from '../models/permission-management'; +export declare class PermissionManagementGetPermissions { + payload: PermissionManagement.GrantedProvider; + static readonly type = "[PermissionManagement] Get Permissions"; + constructor(payload: PermissionManagement.GrantedProvider); +} +export declare class PermissionManagementUpdatePermissions { + payload: PermissionManagement.GrantedProvider & PermissionManagement.UpdateRequest; + static readonly type = "[PermissionManagement] Update Permissions"; + constructor(payload: PermissionManagement.GrantedProvider & PermissionManagement.UpdateRequest); +} diff --git a/npm/ng-packs/dist/permission-management/lib/components/index.d.ts b/npm/ng-packs/dist/permission-management/lib/components/index.d.ts new file mode 100644 index 00000000000..efa91b45a2c --- /dev/null +++ b/npm/ng-packs/dist/permission-management/lib/components/index.d.ts @@ -0,0 +1 @@ +export * from './permission-management.component'; diff --git a/npm/ng-packs/dist/permission-management/lib/components/permission-management.component.d.ts b/npm/ng-packs/dist/permission-management/lib/components/permission-management.component.d.ts new file mode 100644 index 00000000000..14476d62b88 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/lib/components/permission-management.component.d.ts @@ -0,0 +1,37 @@ +import { EventEmitter, OnChanges, OnInit, Renderer2, SimpleChanges, TrackByFunction } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { PermissionManagement } from '../models/permission-management'; +declare type PermissionWithMargin = PermissionManagement.Permission & { + margin: number; +}; +export declare class PermissionManagementComponent implements OnInit, OnChanges { + private store; + private renderer; + providerName: string; + providerKey: string; + protected _visible: any; + visible: boolean; + visibleChange: EventEmitter; + groups$: Observable; + entityName$: Observable; + selectedGroup: PermissionManagement.Group; + permissions: PermissionManagement.Permission[]; + selectThisTab: boolean; + selectAllTab: boolean; + trackByFn: TrackByFunction; + readonly selectedGroupPermissions$: Observable; + constructor(store: Store, renderer: Renderer2); + ngOnInit(): void; + getChecked(name: string): boolean; + onClickCheckbox(clickedPermission: PermissionManagement.Permission, value: any): void; + setTabCheckboxState(): void; + setGrantCheckboxState(): void; + onClickSelectThisTab(): void; + onClickSelectAll(): void; + onChangeGroup(group: PermissionManagement.Group): void; + onSubmit(): void; + openModal(): void; + ngOnChanges({ visible }: SimpleChanges): void; +} +export {}; diff --git a/npm/ng-packs/dist/permission-management/lib/models/index.d.ts b/npm/ng-packs/dist/permission-management/lib/models/index.d.ts new file mode 100644 index 00000000000..6a06f3adabe --- /dev/null +++ b/npm/ng-packs/dist/permission-management/lib/models/index.d.ts @@ -0,0 +1 @@ +export * from './permission-management'; diff --git a/npm/ng-packs/dist/permission-management/lib/models/permission-management.d.ts b/npm/ng-packs/dist/permission-management/lib/models/permission-management.d.ts new file mode 100644 index 00000000000..3a348ccfc96 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/lib/models/permission-management.d.ts @@ -0,0 +1,31 @@ +export declare namespace PermissionManagement { + interface State { + permissionRes: Response; + } + interface Response { + entityDisplayName: string; + groups: Group[]; + } + interface Group { + name: string; + displayName: string; + permissions: Permission[]; + } + interface MinimumPermission { + name: string; + isGranted: boolean; + } + interface Permission extends MinimumPermission { + displayName: string; + parentName: string; + allowedProviders: string[]; + grantedProviders: GrantedProvider[]; + } + interface GrantedProvider { + providerName: string; + providerKey: string; + } + interface UpdateRequest { + permissions: MinimumPermission[]; + } +} diff --git a/npm/ng-packs/dist/permission-management/lib/permission-management.module.d.ts b/npm/ng-packs/dist/permission-management/lib/permission-management.module.d.ts new file mode 100644 index 00000000000..25c34182d15 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/lib/permission-management.module.d.ts @@ -0,0 +1,2 @@ +export declare class PermissionManagementModule { +} diff --git a/npm/ng-packs/dist/permission-management/lib/services/index.d.ts b/npm/ng-packs/dist/permission-management/lib/services/index.d.ts new file mode 100644 index 00000000000..47ac05d8faf --- /dev/null +++ b/npm/ng-packs/dist/permission-management/lib/services/index.d.ts @@ -0,0 +1 @@ +export * from './permission-management.service'; diff --git a/npm/ng-packs/dist/permission-management/lib/services/permission-management.service.d.ts b/npm/ng-packs/dist/permission-management/lib/services/permission-management.service.d.ts new file mode 100644 index 00000000000..6740735293b --- /dev/null +++ b/npm/ng-packs/dist/permission-management/lib/services/permission-management.service.d.ts @@ -0,0 +1,9 @@ +import { RestService } from '@abp/ng.core'; +import { Observable } from 'rxjs'; +import { PermissionManagement } from '../models/permission-management'; +export declare class PermissionManagementService { + private rest; + constructor(rest: RestService); + getPermissions(params: PermissionManagement.GrantedProvider): Observable; + updatePermissions({ permissions, providerKey, providerName, }: PermissionManagement.GrantedProvider & PermissionManagement.UpdateRequest): Observable; +} diff --git a/npm/ng-packs/dist/permission-management/lib/states/index.d.ts b/npm/ng-packs/dist/permission-management/lib/states/index.d.ts new file mode 100644 index 00000000000..11166b2e3bf --- /dev/null +++ b/npm/ng-packs/dist/permission-management/lib/states/index.d.ts @@ -0,0 +1 @@ +export * from "./permission-management.state"; diff --git a/npm/ng-packs/dist/permission-management/lib/states/permission-management.state.d.ts b/npm/ng-packs/dist/permission-management/lib/states/permission-management.state.d.ts new file mode 100644 index 00000000000..c0dafe98621 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/lib/states/permission-management.state.d.ts @@ -0,0 +1,12 @@ +import { StateContext } from '@ngxs/store'; +import { PermissionManagementGetPermissions, PermissionManagementUpdatePermissions } from '../actions/permission-management.actions'; +import { PermissionManagement } from '../models/permission-management'; +import { PermissionManagementService } from '../services/permission-management.service'; +export declare class PermissionManagementState { + private permissionManagementService; + static getPermissionGroups({ permissionRes }: PermissionManagement.State): PermissionManagement.Group[]; + static getEntitiyDisplayName({ permissionRes }: PermissionManagement.State): string; + constructor(permissionManagementService: PermissionManagementService); + permissionManagementGet({ patchState }: StateContext, { payload }: PermissionManagementGetPermissions): import("rxjs").Observable; + permissionManagementUpdate(_: any, { payload }: PermissionManagementUpdatePermissions): import("rxjs").Observable; +} diff --git a/npm/ng-packs/dist/permission-management/package.json b/npm/ng-packs/dist/permission-management/package.json new file mode 100644 index 00000000000..32fe9f30357 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/package.json @@ -0,0 +1,21 @@ +{ + "name": "@abp/ng.permission-management", + "version": "0.8.0", + "dependencies": { + "@abp/ng.theme.shared": "^0.8.0", + "tslib": "^1.9.0" + }, + "publishConfig": { + "access": "public" + }, + "main": "bundles/abp-ng.permission-management.umd.js", + "module": "fesm5/abp-ng.permission-management.js", + "es2015": "fesm2015/abp-ng.permission-management.js", + "esm5": "esm5/abp-ng.permission-management.js", + "esm2015": "esm2015/abp-ng.permission-management.js", + "fesm5": "fesm5/abp-ng.permission-management.js", + "fesm2015": "fesm2015/abp-ng.permission-management.js", + "typings": "abp-ng.permission-management.d.ts", + "metadata": "abp-ng.permission-management.metadata.json", + "sideEffects": false +} diff --git a/npm/ng-packs/dist/permission-management/public-api.d.ts b/npm/ng-packs/dist/permission-management/public-api.d.ts new file mode 100644 index 00000000000..47632ca4cd1 --- /dev/null +++ b/npm/ng-packs/dist/permission-management/public-api.d.ts @@ -0,0 +1,6 @@ +export * from './lib/permission-management.module'; +export * from './lib/actions'; +export * from './lib/components'; +export * from './lib/models'; +export * from './lib/services'; +export * from './lib/states'; diff --git a/npm/ng-packs/dist/tenant-management/README.md b/npm/ng-packs/dist/tenant-management/README.md new file mode 100644 index 00000000000..0d67aa2d244 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/README.md @@ -0,0 +1 @@ +

@abp/ng.tenant-management

diff --git a/npm/ng-packs/dist/tenant-management/abp-ng.tenant-management.d.ts b/npm/ng-packs/dist/tenant-management/abp-ng.tenant-management.d.ts new file mode 100644 index 00000000000..acadb721da4 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/abp-ng.tenant-management.d.ts @@ -0,0 +1,11 @@ +/** + * Generated bundle index. Do not edit. + */ +export * from './public-api'; +export { TenantManagementAdd as ɵf, TenantManagementDelete as ɵh, TenantManagementGet as ɵd, TenantManagementGetById as ɵe, TenantManagementUpdate as ɵg } from './lib/actions/tenant-management.actions'; +export { TenantsComponent as ɵa } from './lib/components/tenants/tenants.component'; +export { TenantManagement as ɵi } from './lib/models/tenant-management'; +export { TenantsResolver as ɵk } from './lib/resolvers/tenants.resolver'; +export { TenantManagementService as ɵc } from './lib/services/tenant-management.service'; +export { TenantManagementState as ɵb } from './lib/states/tenant-management.state'; +export { TenantManagementRoutingModule as ɵj } from './lib/tenant-management-routing.module'; diff --git a/npm/ng-packs/dist/tenant-management/abp-ng.tenant-management.metadata.json b/npm/ng-packs/dist/tenant-management/abp-ng.tenant-management.metadata.json new file mode 100644 index 00000000000..57a12318c25 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/abp-ng.tenant-management.metadata.json @@ -0,0 +1 @@ +{"__symbolic":"module","version":4,"exports":[{"from":"./lib/tenant-management.state"}],"metadata":{"TenantManagementModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵa"}],"imports":[{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"NgxsModule","line":14,"character":4},"member":"forFeature"},"arguments":[[{"__symbolic":"reference","name":"ɵb"}]]},{"__symbolic":"reference","module":"@abp/ng.core","name":"CoreModule","line":15,"character":4},{"__symbolic":"reference","module":"primeng/table","name":"TableModule","line":16,"character":4},{"__symbolic":"reference","module":"@abp/ng.theme.shared","name":"ThemeSharedModule","line":17,"character":4},{"__symbolic":"reference","module":"@ng-bootstrap/ng-bootstrap","name":"NgbDropdownModule","line":18,"character":4}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":22,"character":1},"arguments":[{"selector":"abp-tenants","template":"
\n
\n
\n
\n
\n {{ 'AbpTenantManagement::Tenants' | abpLocalization }}\n
\n
\n
\n \n \n {{ 'AbpTenantManagement::NewTenant' | abpLocalization }}\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpTenantManagement::Actions' | abpLocalization }}\n {{ 'AbpTenantManagement::TenantName' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpTenantManagement::Actions' | abpLocalization }}\n \n
\n \n {{ 'AbpTenantManagement::Edit' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::ConnectionStrings' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::Features' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::Delete' | abpLocalization }}\n \n
\n
\n \n {{ data.name }}\n \n
\n
\n
\n
\n\n\n \n

{{ selectedModalContent.title | abpLocalization }}

\n
\n\n \n \n \n\n \n \n \n \n
\n\n\n
\n
\n
\n \n \n
\n
\n
\n
\n\n\n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n\n\n Manage Features\n\n"}]}],"members":{"datas$":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Select","line":27,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵb"},"member":"get"}]}]}],"tenantModalTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":52,"character":3},"arguments":["tenantModalTemplate",{"static":false}]}]}],"connectionStringModalTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":55,"character":3},"arguments":["connectionStringModalTemplate",{"static":false}]}]}],"featuresModalTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":58,"character":3},"arguments":["featuresModalTemplate",{"static":false}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@abp/ng.theme.shared","name":"ConfirmationService","line":62,"character":33},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":64,"character":16},{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":65,"character":19}]}],"createTenantForm":[{"__symbolic":"method"}],"createDefaultConnectionStringForm":[{"__symbolic":"method"}],"openModal":[{"__symbolic":"method"}],"onEditConnectionString":[{"__symbolic":"method"}],"onManageFeatures":[{"__symbolic":"method"}],"onAddTenant":[{"__symbolic":"method"}],"onEditTenant":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"saveConnectionString":[{"__symbolic":"method"}],"saveTenant":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"State","line":13,"character":1},"arguments":[{"name":"TenantManagementState","defaults":{"result":{},"selectedItem":{}}}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵc"}]}],"get":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":25,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵd"}]}]}],"getById":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":36,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵe"}]}]}],"delete":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":47,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵh"}]}]}],"add":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":52,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵf"}]}]}],"update":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":57,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵg"}]}]}]},"statics":{"get":{"__symbolic":"function","parameters":["result"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"result"},"member":"items"},"right":[]}}}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@abp/ng.core","name":"RestService","line":9,"character":28}]}],"get":[{"__symbolic":"method"}],"getById":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"getDefaultConnectionString":[{"__symbolic":"method"}],"updateDefaultConnectionString":[{"__symbolic":"method"}],"deleteDefaultConnectionString":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵd":{"__symbolic":"class","members":{},"statics":{"type":"[TenantManagement] Get"}},"ɵe":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}]},"statics":{"type":"[TenantManagement] Get By Id"}},"ɵf":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵi"},"member":"AddRequest"}]}]},"statics":{"type":"[TenantManagement] Add"}},"ɵg":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵi"},"member":"UpdateRequest"}]}]},"statics":{"type":"[TenantManagement] Update"}},"ɵh":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}]},"statics":{"type":"[TenantManagement] Delete"}},"ɵj":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":18,"character":12},"member":"forChild"},"arguments":[[{"path":"","redirectTo":"tenants","pathMatch":"full"},{"path":"tenants","component":{"__symbolic":"reference","module":"@abp/ng.core","name":"DynamicLayoutComponent","line":10,"character":15},"canActivate":[{"__symbolic":"reference","module":"@abp/ng.core","name":"AuthGuard","line":11,"character":18},{"__symbolic":"reference","module":"@abp/ng.core","name":"PermissionGuard","line":11,"character":29}],"data":{"requiredPolicy":"AbpTenantManagement.Tenants"},"children":[{"path":"","component":{"__symbolic":"reference","name":"ɵa"},"resolve":[{"__symbolic":"reference","name":"ɵk"}]}]}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":19,"character":12}],"providers":[{"__symbolic":"reference","name":"ɵk"}]}]}],"members":{}},"ɵk":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":9,"character":29}]}],"resolve":[{"__symbolic":"method"}]}}},"origins":{"TenantManagementModule":"./lib/tenant-management.module","ɵa":"./lib/components/tenants/tenants.component","ɵb":"./lib/states/tenant-management.state","ɵc":"./lib/services/tenant-management.service","ɵd":"./lib/actions/tenant-management.actions","ɵe":"./lib/actions/tenant-management.actions","ɵf":"./lib/actions/tenant-management.actions","ɵg":"./lib/actions/tenant-management.actions","ɵh":"./lib/actions/tenant-management.actions","ɵi":"./lib/models/tenant-management","ɵj":"./lib/tenant-management-routing.module","ɵk":"./lib/resolvers/tenants.resolver"},"importAs":"@abp/ng.tenant-management"} \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/bundles/abp-ng.tenant-management.umd.js b/npm/ng-packs/dist/tenant-management/bundles/abp-ng.tenant-management.umd.js new file mode 100644 index 00000000000..362105d12ec --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/bundles/abp-ng.tenant-management.umd.js @@ -0,0 +1,846 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@abp/ng.core'), require('@abp/ng.theme.shared'), require('@angular/core'), require('@ng-bootstrap/ng-bootstrap'), require('@ngxs/store'), require('primeng/table'), require('@angular/forms'), require('rxjs'), require('rxjs/operators'), require('@angular/router')) : + typeof define === 'function' && define.amd ? define('@abp/ng.tenant-management', ['exports', '@abp/ng.core', '@abp/ng.theme.shared', '@angular/core', '@ng-bootstrap/ng-bootstrap', '@ngxs/store', 'primeng/table', '@angular/forms', 'rxjs', 'rxjs/operators', '@angular/router'], factory) : + (global = global || self, factory((global.abp = global.abp || {}, global.abp.ng = global.abp.ng || {}, global.abp.ng['tenant-management'] = {}), global.ng_core, global.ng_theme_shared, global.ng.core, global.ngBootstrap, global.store, global.table, global.ng.forms, global.rxjs, global.rxjs.operators, global.ng.router)); +}(this, function (exports, ng_core, ng_theme_shared, core, ngBootstrap, store, table, forms, rxjs, operators, router) { 'use strict'; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + } + + function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); + } + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var TenantManagementGet = /** @class */ (function () { + function TenantManagementGet() { + } + TenantManagementGet.type = '[TenantManagement] Get'; + return TenantManagementGet; + }()); + var TenantManagementGetById = /** @class */ (function () { + function TenantManagementGetById(payload) { + this.payload = payload; + } + TenantManagementGetById.type = '[TenantManagement] Get By Id'; + return TenantManagementGetById; + }()); + var TenantManagementAdd = /** @class */ (function () { + function TenantManagementAdd(payload) { + this.payload = payload; + } + TenantManagementAdd.type = '[TenantManagement] Add'; + return TenantManagementAdd; + }()); + var TenantManagementUpdate = /** @class */ (function () { + function TenantManagementUpdate(payload) { + this.payload = payload; + } + TenantManagementUpdate.type = '[TenantManagement] Update'; + return TenantManagementUpdate; + }()); + var TenantManagementDelete = /** @class */ (function () { + function TenantManagementDelete(payload) { + this.payload = payload; + } + TenantManagementDelete.type = '[TenantManagement] Delete'; + return TenantManagementDelete; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var TenantManagementService = /** @class */ (function () { + function TenantManagementService(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + TenantManagementService.prototype.get = /** + * @return {?} + */ + function () { + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/multi-tenancy/tenants', + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + TenantManagementService.prototype.getById = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'GET', + url: "/api/multi-tenancy/tenants/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + TenantManagementService.prototype.delete = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'DELETE', + url: "/api/multi-tenancy/tenants/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + TenantManagementService.prototype.add = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var request = { + method: 'POST', + url: "/api/multi-tenancy/tenants", + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + TenantManagementService.prototype.update = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var url = "/api/multi-tenancy/tenants/" + body.id; + delete body.id; + /** @type {?} */ + var request = { + method: 'PUT', + url: url, + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + TenantManagementService.prototype.getDefaultConnectionString = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var url = "/api/multi-tenancy/tenants/" + id + "/defaultConnectionString"; + /** @type {?} */ + var request = { + method: 'GET', + responseType: "text" /* Text */, + url: url, + }; + return this.rest.request(request); + }; + /** + * @param {?} payload + * @return {?} + */ + TenantManagementService.prototype.updateDefaultConnectionString = /** + * @param {?} payload + * @return {?} + */ + function (payload) { + /** @type {?} */ + var url = "/api/multi-tenancy/tenants/" + payload.id + "/defaultConnectionString"; + /** @type {?} */ + var request = { + method: 'PUT', + url: url, + params: { defaultConnectionString: payload.defaultConnectionString }, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + TenantManagementService.prototype.deleteDefaultConnectionString = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var url = "/api/multi-tenancy/tenant/" + id + "/defaultConnectionString"; + /** @type {?} */ + var request = { + method: 'DELETE', + url: url, + }; + return this.rest.request(request); + }; + TenantManagementService.decorators = [ + { type: core.Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + TenantManagementService.ctorParameters = function () { return [ + { type: ng_core.RestService } + ]; }; + /** @nocollapse */ TenantManagementService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function TenantManagementService_Factory() { return new TenantManagementService(core.ɵɵinject(ng_core.RestService)); }, token: TenantManagementService, providedIn: "root" }); + return TenantManagementService; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var TenantManagementState = /** @class */ (function () { + function TenantManagementState(tenantManagementService) { + this.tenantManagementService = tenantManagementService; + } + /** + * @param {?} __0 + * @return {?} + */ + TenantManagementState.get = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var result = _a.result; + return result.items || []; + }; + /** + * @param {?} __0 + * @return {?} + */ + TenantManagementState.prototype.get = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var patchState = _a.patchState; + return this.tenantManagementService.get().pipe(operators.tap((/** + * @param {?} result + * @return {?} + */ + function (result) { + return patchState({ + result: result, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + TenantManagementState.prototype.getById = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.tenantManagementService.getById(payload).pipe(operators.tap((/** + * @param {?} selectedItem + * @return {?} + */ + function (selectedItem) { + return patchState({ + selectedItem: selectedItem, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + TenantManagementState.prototype.delete = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.tenantManagementService.delete(payload).pipe(operators.switchMap((/** + * @return {?} + */ + function () { return dispatch(new TenantManagementGet()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + TenantManagementState.prototype.add = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.tenantManagementService.add(payload).pipe(operators.switchMap((/** + * @return {?} + */ + function () { return dispatch(new TenantManagementGet()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + TenantManagementState.prototype.update = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var _this = this; + var dispatch = _a.dispatch, getState = _a.getState; + var payload = _b.payload; + return dispatch(new TenantManagementGetById(payload.id)).pipe(operators.switchMap((/** + * @return {?} + */ + function () { return _this.tenantManagementService.update(__assign({}, getState().selectedItem, payload)); })), operators.switchMap((/** + * @return {?} + */ + function () { return dispatch(new TenantManagementGet()); }))); + }; + __decorate([ + store.Action(TenantManagementGet), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) + ], TenantManagementState.prototype, "get", null); + __decorate([ + store.Action(TenantManagementGetById), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, TenantManagementGetById]), + __metadata("design:returntype", void 0) + ], TenantManagementState.prototype, "getById", null); + __decorate([ + store.Action(TenantManagementDelete), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, TenantManagementDelete]), + __metadata("design:returntype", void 0) + ], TenantManagementState.prototype, "delete", null); + __decorate([ + store.Action(TenantManagementAdd), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, TenantManagementAdd]), + __metadata("design:returntype", void 0) + ], TenantManagementState.prototype, "add", null); + __decorate([ + store.Action(TenantManagementUpdate), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, TenantManagementUpdate]), + __metadata("design:returntype", void 0) + ], TenantManagementState.prototype, "update", null); + __decorate([ + store.Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Array) + ], TenantManagementState, "get", null); + TenantManagementState = __decorate([ + store.State({ + name: 'TenantManagementState', + defaults: (/** @type {?} */ ({ result: {}, selectedItem: {} })), + }), + __metadata("design:paramtypes", [TenantManagementService]) + ], TenantManagementState); + return TenantManagementState; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var TenantsComponent = /** @class */ (function () { + function TenantsComponent(confirmationService, tenantService, fb, store) { + this.confirmationService = confirmationService; + this.tenantService = tenantService; + this.fb = fb; + this.store = store; + this.selectedModalContent = (/** @type {?} */ ({})); + } + Object.defineProperty(TenantsComponent.prototype, "useSharedDatabase", { + get: /** + * @return {?} + */ + function () { + return this.defaultConnectionStringForm.get('useSharedDatabase').value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(TenantsComponent.prototype, "connectionString", { + get: /** + * @return {?} + */ + function () { + return this.defaultConnectionStringForm.get('defaultConnectionString').value; + }, + enumerable: true, + configurable: true + }); + /** + * @private + * @return {?} + */ + TenantsComponent.prototype.createTenantForm = /** + * @private + * @return {?} + */ + function () { + this.tenantForm = this.fb.group({ + name: [this.selected.name || '', [forms.Validators.required, forms.Validators.maxLength(256)]], + }); + }; + /** + * @private + * @return {?} + */ + TenantsComponent.prototype.createDefaultConnectionStringForm = /** + * @private + * @return {?} + */ + function () { + this.defaultConnectionStringForm = this.fb.group({ + useSharedDatabase: this._useSharedDatabase, + defaultConnectionString: this.defaultConnectionString || '', + }); + }; + /** + * @param {?} title + * @param {?} template + * @param {?} type + * @return {?} + */ + TenantsComponent.prototype.openModal = /** + * @param {?} title + * @param {?} template + * @param {?} type + * @return {?} + */ + function (title, template, type) { + this.selectedModalContent = { + title: title, + template: template, + type: type, + }; + this.isModalVisible = true; + }; + /** + * @param {?} id + * @return {?} + */ + TenantsComponent.prototype.onEditConnectionString = /** + * @param {?} id + * @return {?} + */ + function (id) { + var _this = this; + this.store + .dispatch(new TenantManagementGetById(id)) + .pipe(operators.pluck('TenantManagementState', 'selectedItem'), operators.switchMap((/** + * @param {?} selected + * @return {?} + */ + function (selected) { + _this.selected = selected; + return _this.tenantService.getDefaultConnectionString(id); + }))) + .subscribe((/** + * @param {?} fetchedConnectionString + * @return {?} + */ + function (fetchedConnectionString) { + _this._useSharedDatabase = fetchedConnectionString ? false : true; + _this.defaultConnectionString = fetchedConnectionString ? fetchedConnectionString : ''; + _this.createDefaultConnectionStringForm(); + _this.openModal('AbpTenantManagement::ConnectionStrings', _this.connectionStringModalTemplate, 'saveConnStr'); + })); + }; + /** + * @param {?} id + * @return {?} + */ + TenantsComponent.prototype.onManageFeatures = /** + * @param {?} id + * @return {?} + */ + function (id) { + this.openModal('AbpTenantManagement::Features', this.featuresModalTemplate, 'saveFeatures'); + }; + /** + * @return {?} + */ + TenantsComponent.prototype.onAddTenant = /** + * @return {?} + */ + function () { + this.selected = (/** @type {?} */ ({})); + this.createTenantForm(); + this.openModal('AbpTenantManagement::NewTenant', this.tenantModalTemplate, 'saveTenant'); + }; + /** + * @param {?} id + * @return {?} + */ + TenantsComponent.prototype.onEditTenant = /** + * @param {?} id + * @return {?} + */ + function (id) { + var _this = this; + this.store + .dispatch(new TenantManagementGetById(id)) + .pipe(operators.pluck('TenantManagementState', 'selectedItem')) + .subscribe((/** + * @param {?} selected + * @return {?} + */ + function (selected) { + _this.selected = selected; + _this.createTenantForm(); + _this.openModal('AbpTenantManagement::Edit', _this.tenantModalTemplate, 'saveTenant'); + })); + }; + /** + * @return {?} + */ + TenantsComponent.prototype.save = /** + * @return {?} + */ + function () { + var type = this.selectedModalContent.type; + if (!type) + return; + if (type === 'saveTenant') + this.saveTenant(); + else if (type === 'saveConnStr') + this.saveConnectionString(); + }; + /** + * @return {?} + */ + TenantsComponent.prototype.saveConnectionString = /** + * @return {?} + */ + function () { + var _this = this; + if (this.useSharedDatabase) { + this.tenantService + .deleteDefaultConnectionString(this.selected.id) + .pipe(operators.take(1)) + .subscribe((/** + * @return {?} + */ + function () { + _this.isModalVisible = false; + })); + } + else { + this.tenantService + .updateDefaultConnectionString({ id: this.selected.id, defaultConnectionString: this.connectionString }) + .pipe(operators.take(1)) + .subscribe((/** + * @return {?} + */ + function () { + _this.isModalVisible = false; + })); + } + }; + /** + * @return {?} + */ + TenantsComponent.prototype.saveTenant = /** + * @return {?} + */ + function () { + var _this = this; + if (!this.tenantForm.valid) + return; + this.store + .dispatch(this.selected.id + ? new TenantManagementUpdate(__assign({}, this.tenantForm.value, { id: this.selected.id })) + : new TenantManagementAdd(this.tenantForm.value)) + .subscribe((/** + * @return {?} + */ + function () { + _this.isModalVisible = false; + })); + }; + /** + * @param {?} id + * @param {?} name + * @return {?} + */ + TenantsComponent.prototype.delete = /** + * @param {?} id + * @param {?} name + * @return {?} + */ + function (id, name) { + var _this = this; + this.confirmationService + .warn('AbpTenantManagement::TenantDeletionConfirmationMessage', 'AbpTenantManagement::AreYouSure', { + messageLocalizationParams: [name], + }) + .subscribe((/** + * @param {?} status + * @return {?} + */ + function (status) { + if (status === "confirm" /* confirm */) { + _this.store.dispatch(new TenantManagementDelete(id)); + } + })); + }; + TenantsComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-tenants', + template: "
\n
\n
\n
\n
\n {{ 'AbpTenantManagement::Tenants' | abpLocalization }}\n
\n
\n
\n \n \n {{ 'AbpTenantManagement::NewTenant' | abpLocalization }}\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpTenantManagement::Actions' | abpLocalization }}\n {{ 'AbpTenantManagement::TenantName' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpTenantManagement::Actions' | abpLocalization }}\n \n
\n \n {{ 'AbpTenantManagement::Edit' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::ConnectionStrings' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::Features' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::Delete' | abpLocalization }}\n \n
\n
\n \n {{ data.name }}\n \n
\n
\n
\n
\n\n\n \n

{{ selectedModalContent.title | abpLocalization }}

\n
\n\n \n \n \n\n \n \n \n \n
\n\n\n
\n
\n
\n \n \n
\n
\n
\n
\n\n\n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n\n\n Manage Features\n\n" + }] } + ]; + /** @nocollapse */ + TenantsComponent.ctorParameters = function () { return [ + { type: ng_theme_shared.ConfirmationService }, + { type: TenantManagementService }, + { type: forms.FormBuilder }, + { type: store.Store } + ]; }; + TenantsComponent.propDecorators = { + tenantModalTemplate: [{ type: core.ViewChild, args: ['tenantModalTemplate', { static: false },] }], + connectionStringModalTemplate: [{ type: core.ViewChild, args: ['connectionStringModalTemplate', { static: false },] }], + featuresModalTemplate: [{ type: core.ViewChild, args: ['featuresModalTemplate', { static: false },] }] + }; + __decorate([ + store.Select(TenantManagementState.get), + __metadata("design:type", rxjs.Observable) + ], TenantsComponent.prototype, "datas$", void 0); + return TenantsComponent; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var TenantsResolver = /** @class */ (function () { + function TenantsResolver(store) { + this.store = store; + } + /** + * @return {?} + */ + TenantsResolver.prototype.resolve = /** + * @return {?} + */ + function () { + /** @type {?} */ + var data = this.store.selectSnapshot(TenantManagementState.get); + return data && data.length + ? null + : this.store.dispatch(new TenantManagementGet()); + }; + TenantsResolver.decorators = [ + { type: core.Injectable } + ]; + /** @nocollapse */ + TenantsResolver.ctorParameters = function () { return [ + { type: store.Store } + ]; }; + return TenantsResolver; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var ɵ0 = { requiredPolicy: 'AbpTenantManagement.Tenants' }; + /** @type {?} */ + var routes = [ + { path: '', redirectTo: 'tenants', pathMatch: 'full' }, + { + path: 'tenants', + component: ng_core.DynamicLayoutComponent, + canActivate: [ng_core.AuthGuard, ng_core.PermissionGuard], + data: ɵ0, + children: [{ path: '', component: TenantsComponent, resolve: [TenantsResolver] }], + }, + ]; + var TenantManagementRoutingModule = /** @class */ (function () { + function TenantManagementRoutingModule() { + } + TenantManagementRoutingModule.decorators = [ + { type: core.NgModule, args: [{ + imports: [router.RouterModule.forChild(routes)], + exports: [router.RouterModule], + providers: [TenantsResolver], + },] } + ]; + return TenantManagementRoutingModule; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var TenantManagementModule = /** @class */ (function () { + function TenantManagementModule() { + } + TenantManagementModule.decorators = [ + { type: core.NgModule, args: [{ + declarations: [TenantsComponent], + imports: [ + TenantManagementRoutingModule, + store.NgxsModule.forFeature([TenantManagementState]), + ng_core.CoreModule, + table.TableModule, + ng_theme_shared.ThemeSharedModule, + ngBootstrap.NgbDropdownModule, + ], + },] } + ]; + return TenantManagementModule; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + /** @type {?} */ + var TENANT_MANAGEMENT_ROUTES = (/** @type {?} */ ([ + { + name: 'Tenant Management', + path: 'tenant-management', + parentName: 'Administration', + layout: "application" /* application */, + children: [ + { + path: 'tenants', + name: 'Tenants', + order: 1, + requiredPolicy: 'AbpTenantManagement.Tenants', + }, + ], + }, + ])); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var TenantManagement; + (function (TenantManagement) { + /** + * @record + */ + function State() { } + TenantManagement.State = State; + /** + * @record + */ + function Item() { } + TenantManagement.Item = Item; + /** + * @record + */ + function AddRequest() { } + TenantManagement.AddRequest = AddRequest; + /** + * @record + */ + function UpdateRequest() { } + TenantManagement.UpdateRequest = UpdateRequest; + /** + * @record + */ + function DefaultConnectionStringRequest() { } + TenantManagement.DefaultConnectionStringRequest = DefaultConnectionStringRequest; + })(TenantManagement || (TenantManagement = {})); + + exports.TENANT_MANAGEMENT_ROUTES = TENANT_MANAGEMENT_ROUTES; + exports.TenantManagementAdd = TenantManagementAdd; + exports.TenantManagementDelete = TenantManagementDelete; + exports.TenantManagementGet = TenantManagementGet; + exports.TenantManagementGetById = TenantManagementGetById; + exports.TenantManagementModule = TenantManagementModule; + exports.TenantManagementService = TenantManagementService; + exports.TenantManagementState = TenantManagementState; + exports.TenantManagementUpdate = TenantManagementUpdate; + exports.TenantsComponent = TenantsComponent; + exports.TenantsResolver = TenantsResolver; + exports.ɵa = TenantsComponent; + exports.ɵb = TenantManagementState; + exports.ɵc = TenantManagementService; + exports.ɵd = TenantManagementGet; + exports.ɵe = TenantManagementGetById; + exports.ɵf = TenantManagementAdd; + exports.ɵg = TenantManagementUpdate; + exports.ɵh = TenantManagementDelete; + exports.ɵj = TenantManagementRoutingModule; + exports.ɵk = TenantsResolver; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); +//# sourceMappingURL=abp-ng.tenant-management.umd.js.map diff --git a/npm/ng-packs/dist/tenant-management/bundles/abp-ng.tenant-management.umd.js.map b/npm/ng-packs/dist/tenant-management/bundles/abp-ng.tenant-management.umd.js.map new file mode 100644 index 00000000000..cd81ff8bd18 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/bundles/abp-ng.tenant-management.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.tenant-management.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","ng://@abp/ng.tenant-management/lib/actions/tenant-management.actions.ts","ng://@abp/ng.tenant-management/lib/services/tenant-management.service.ts","ng://@abp/ng.tenant-management/lib/states/tenant-management.state.ts","ng://@abp/ng.tenant-management/lib/components/tenants/tenants.component.ts","ng://@abp/ng.tenant-management/lib/resolvers/tenants.resolver.ts","ng://@abp/ng.tenant-management/lib/tenant-management-routing.module.ts","ng://@abp/ng.tenant-management/lib/tenant-management.module.ts","ng://@abp/ng.tenant-management/lib/constants/routes.ts","ng://@abp/ng.tenant-management/lib/models/tenant-management.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { TenantManagement } from '../models/tenant-management';\n\nexport class TenantManagementGet {\n static readonly type = '[TenantManagement] Get';\n}\n\nexport class TenantManagementGetById {\n static readonly type = '[TenantManagement] Get By Id';\n constructor(public payload: string) {}\n}\n\nexport class TenantManagementAdd {\n static readonly type = '[TenantManagement] Add';\n constructor(public payload: TenantManagement.AddRequest) {}\n}\n\nexport class TenantManagementUpdate {\n static readonly type = '[TenantManagement] Update';\n constructor(public payload: TenantManagement.UpdateRequest) {}\n}\n\nexport class TenantManagementDelete {\n static readonly type = '[TenantManagement] Delete';\n constructor(public payload: string) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RestService, Rest, ABP } from '@abp/ng.core';\nimport { TenantManagement } from '../models/tenant-management';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TenantManagementService {\n constructor(private rest: RestService) {}\n\n get(): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/multi-tenancy/tenants',\n };\n\n return this.rest.request(request);\n }\n\n getById(id: string): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: `/api/multi-tenancy/tenants/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n delete(id: string): Observable {\n const request: Rest.Request = {\n method: 'DELETE',\n url: `/api/multi-tenancy/tenants/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n add(body: TenantManagement.AddRequest): Observable {\n const request: Rest.Request = {\n method: 'POST',\n url: `/api/multi-tenancy/tenants`,\n body,\n };\n\n return this.rest.request(request);\n }\n\n update(body: TenantManagement.UpdateRequest): Observable {\n const url = `/api/multi-tenancy/tenants/${body.id}`;\n delete body.id;\n\n const request: Rest.Request = {\n method: 'PUT',\n url,\n body,\n };\n\n return this.rest.request(request);\n }\n\n getDefaultConnectionString(id: string): Observable {\n const url = `/api/multi-tenancy/tenants/${id}/defaultConnectionString`;\n\n const request: Rest.Request = {\n method: 'GET',\n responseType: Rest.ResponseType.Text,\n url,\n };\n return this.rest.request(request);\n }\n\n updateDefaultConnectionString(payload: TenantManagement.DefaultConnectionStringRequest): Observable {\n const url = `/api/multi-tenancy/tenants/${payload.id}/defaultConnectionString`;\n\n const request: Rest.Request = {\n method: 'PUT',\n url,\n params: { defaultConnectionString: payload.defaultConnectionString },\n };\n return this.rest.request(request);\n }\n\n deleteDefaultConnectionString(id: string): Observable {\n const url = `/api/multi-tenancy/tenant/${id}/defaultConnectionString`;\n\n const request: Rest.Request = {\n method: 'DELETE',\n url,\n };\n return this.rest.request(request);\n }\n}\n","import { Action, Selector, State, StateContext } from '@ngxs/store';\nimport { switchMap, tap } from 'rxjs/operators';\nimport {\n TenantManagementAdd,\n TenantManagementDelete,\n TenantManagementGet,\n TenantManagementGetById,\n TenantManagementUpdate,\n} from '../actions/tenant-management.actions';\nimport { TenantManagement } from '../models/tenant-management';\nimport { TenantManagementService } from '../services/tenant-management.service';\nimport { ABP } from '@abp/ng.core';\n\n@State({\n name: 'TenantManagementState',\n defaults: { result: {}, selectedItem: {} } as TenantManagement.State,\n})\nexport class TenantManagementState {\n @Selector()\n static get({ result }: TenantManagement.State): ABP.BasicItem[] {\n return result.items || [];\n }\n\n constructor(private tenantManagementService: TenantManagementService) {}\n\n @Action(TenantManagementGet)\n get({ patchState }: StateContext) {\n return this.tenantManagementService.get().pipe(\n tap(result =>\n patchState({\n result,\n }),\n ),\n );\n }\n\n @Action(TenantManagementGetById)\n getById({ patchState }: StateContext, { payload }: TenantManagementGetById) {\n return this.tenantManagementService.getById(payload).pipe(\n tap(selectedItem =>\n patchState({\n selectedItem,\n }),\n ),\n );\n }\n\n @Action(TenantManagementDelete)\n delete({ dispatch }: StateContext, { payload }: TenantManagementDelete) {\n return this.tenantManagementService.delete(payload).pipe(switchMap(() => dispatch(new TenantManagementGet())));\n }\n\n @Action(TenantManagementAdd)\n add({ dispatch }: StateContext, { payload }: TenantManagementAdd) {\n return this.tenantManagementService.add(payload).pipe(switchMap(() => dispatch(new TenantManagementGet())));\n }\n\n @Action(TenantManagementUpdate)\n update({ dispatch, getState }: StateContext, { payload }: TenantManagementUpdate) {\n return dispatch(new TenantManagementGetById(payload.id)).pipe(\n switchMap(() => this.tenantManagementService.update({ ...getState().selectedItem, ...payload })),\n switchMap(() => dispatch(new TenantManagementGet())),\n );\n }\n}\n","import { ABP } from '@abp/ng.core';\nimport { ConfirmationService, Toaster } from '@abp/ng.theme.shared';\nimport { Component, TemplateRef, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { pluck, switchMap, take } from 'rxjs/operators';\nimport {\n TenantManagementAdd,\n TenantManagementDelete,\n TenantManagementGetById,\n TenantManagementUpdate,\n} from '../../actions/tenant-management.actions';\nimport { TenantManagementService } from '../../services/tenant-management.service';\nimport { TenantManagementState } from '../../states/tenant-management.state';\n\ntype SelectedModalContent = {\n type: string;\n title: string;\n template: TemplateRef;\n};\n\n@Component({\n selector: 'abp-tenants',\n templateUrl: './tenants.component.html',\n})\nexport class TenantsComponent {\n @Select(TenantManagementState.get)\n datas$: Observable;\n\n selected: ABP.BasicItem;\n\n tenantForm: FormGroup;\n\n defaultConnectionStringForm: FormGroup;\n\n defaultConnectionString: string;\n\n isModalVisible: boolean;\n\n selectedModalContent = {} as SelectedModalContent;\n\n _useSharedDatabase: boolean;\n\n get useSharedDatabase(): boolean {\n return this.defaultConnectionStringForm.get('useSharedDatabase').value;\n }\n\n get connectionString(): string {\n return this.defaultConnectionStringForm.get('defaultConnectionString').value;\n }\n\n @ViewChild('tenantModalTemplate', { static: false })\n tenantModalTemplate: TemplateRef;\n\n @ViewChild('connectionStringModalTemplate', { static: false })\n connectionStringModalTemplate: TemplateRef;\n\n @ViewChild('featuresModalTemplate', { static: false })\n featuresModalTemplate: TemplateRef;\n\n constructor(\n private confirmationService: ConfirmationService,\n private tenantService: TenantManagementService,\n private fb: FormBuilder,\n private store: Store,\n ) {}\n\n private createTenantForm() {\n this.tenantForm = this.fb.group({\n name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]],\n });\n }\n\n private createDefaultConnectionStringForm() {\n this.defaultConnectionStringForm = this.fb.group({\n useSharedDatabase: this._useSharedDatabase,\n defaultConnectionString: this.defaultConnectionString || '',\n });\n }\n\n openModal(title: string, template: TemplateRef, type: string) {\n this.selectedModalContent = {\n title,\n template,\n type,\n };\n\n this.isModalVisible = true;\n }\n\n onEditConnectionString(id: string) {\n this.store\n .dispatch(new TenantManagementGetById(id))\n .pipe(\n pluck('TenantManagementState', 'selectedItem'),\n switchMap(selected => {\n this.selected = selected;\n return this.tenantService.getDefaultConnectionString(id);\n }),\n )\n .subscribe(fetchedConnectionString => {\n this._useSharedDatabase = fetchedConnectionString ? false : true;\n this.defaultConnectionString = fetchedConnectionString ? fetchedConnectionString : '';\n this.createDefaultConnectionStringForm();\n this.openModal('AbpTenantManagement::ConnectionStrings', this.connectionStringModalTemplate, 'saveConnStr');\n });\n }\n\n onManageFeatures(id: string) {\n this.openModal('AbpTenantManagement::Features', this.featuresModalTemplate, 'saveFeatures');\n }\n\n onAddTenant() {\n this.selected = {} as ABP.BasicItem;\n this.createTenantForm();\n this.openModal('AbpTenantManagement::NewTenant', this.tenantModalTemplate, 'saveTenant');\n }\n\n onEditTenant(id: string) {\n this.store\n .dispatch(new TenantManagementGetById(id))\n .pipe(pluck('TenantManagementState', 'selectedItem'))\n .subscribe(selected => {\n this.selected = selected;\n this.createTenantForm();\n this.openModal('AbpTenantManagement::Edit', this.tenantModalTemplate, 'saveTenant');\n });\n }\n\n save() {\n const { type } = this.selectedModalContent;\n if (!type) return;\n if (type === 'saveTenant') this.saveTenant();\n else if (type === 'saveConnStr') this.saveConnectionString();\n }\n\n saveConnectionString() {\n if (this.useSharedDatabase) {\n this.tenantService\n .deleteDefaultConnectionString(this.selected.id)\n .pipe(take(1))\n .subscribe(() => {\n this.isModalVisible = false;\n });\n } else {\n this.tenantService\n .updateDefaultConnectionString({ id: this.selected.id, defaultConnectionString: this.connectionString })\n .pipe(take(1))\n .subscribe(() => {\n this.isModalVisible = false;\n });\n }\n }\n\n saveTenant() {\n if (!this.tenantForm.valid) return;\n\n this.store\n .dispatch(\n this.selected.id\n ? new TenantManagementUpdate({ ...this.tenantForm.value, id: this.selected.id })\n : new TenantManagementAdd(this.tenantForm.value),\n )\n .subscribe(() => {\n this.isModalVisible = false;\n });\n }\n\n delete(id: string, name: string) {\n this.confirmationService\n .warn('AbpTenantManagement::TenantDeletionConfirmationMessage', 'AbpTenantManagement::AreYouSure', {\n messageLocalizationParams: [name],\n })\n .subscribe((status: Toaster.Status) => {\n if (status === Toaster.Status.confirm) {\n this.store.dispatch(new TenantManagementDelete(id));\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Resolve } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { TenantManagementGet } from '../actions/tenant-management.actions';\nimport { TenantManagement } from '../models/tenant-management';\nimport { TenantManagementState } from '../states/tenant-management.state';\n\n@Injectable()\nexport class TenantsResolver implements Resolve {\n constructor(private store: Store) {}\n\n resolve() {\n const data = this.store.selectSnapshot(TenantManagementState.get);\n return data && data.length\n ? null \n : this.store.dispatch(new TenantManagementGet());\n }\n}\n","import { AuthGuard, DynamicLayoutComponent, PermissionGuard } from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { TenantsResolver } from './resolvers/tenants.resolver';\nimport { TenantsComponent } from './components/tenants/tenants.component';\n\nconst routes: Routes = [\n { path: '', redirectTo: 'tenants', pathMatch: 'full' },\n {\n path: 'tenants',\n component: DynamicLayoutComponent,\n canActivate: [AuthGuard, PermissionGuard],\n data: { requiredPolicy: 'AbpTenantManagement.Tenants' },\n children: [{ path: '', component: TenantsComponent, resolve: [TenantsResolver] }],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n providers: [TenantsResolver],\n})\nexport class TenantManagementRoutingModule {}\n","import { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { NgModule } from '@angular/core';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxsModule } from '@ngxs/store';\nimport { TableModule } from 'primeng/table';\nimport { TenantsComponent } from './components/tenants/tenants.component';\nimport { TenantManagementState } from './states/tenant-management.state';\nimport { TenantManagementRoutingModule } from './tenant-management-routing.module';\n\n@NgModule({\n declarations: [TenantsComponent],\n imports: [\n TenantManagementRoutingModule,\n NgxsModule.forFeature([TenantManagementState]),\n CoreModule,\n TableModule,\n ThemeSharedModule,\n NgbDropdownModule,\n ],\n})\nexport class TenantManagementModule {}\n","import { ABP, eLayoutType } from '@abp/ng.core';\n\nexport const TENANT_MANAGEMENT_ROUTES = [\n {\n name: 'Tenant Management',\n path: 'tenant-management',\n parentName: 'Administration',\n layout: eLayoutType.application,\n children: [\n {\n path: 'tenants',\n name: 'Tenants',\n order: 1,\n requiredPolicy: 'AbpTenantManagement.Tenants',\n },\n ],\n },\n] as ABP.FullRoute[];\n","import { ABP } from '@abp/ng.core';\n\nexport namespace TenantManagement {\n export interface State {\n result: Response;\n selectedItem: Item;\n }\n\n export type Response = ABP.PagedResponse;\n\n export interface Item {\n id: string;\n name: string;\n }\n\n export interface AddRequest {\n name: string;\n }\n\n export interface UpdateRequest extends AddRequest {\n id: string;\n }\n\n export interface DefaultConnectionStringRequest {\n id: string;\n defaultConnectionString: string;\n }\n}\n"],"names":["Injectable","RestService","tap","switchMap","tslib_1.__decorate","Action","Selector","State","Validators","pluck","take","Component","ConfirmationService","FormBuilder","Store","ViewChild","Select","Observable","DynamicLayoutComponent","AuthGuard","PermissionGuard","NgModule","RouterModule","NgxsModule","CoreModule","TableModule","ThemeSharedModule","NgbDropdownModule"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/bundles/abp-ng.tenant-management.umd.min.js b/npm/ng-packs/dist/tenant-management/bundles/abp-ng.tenant-management.umd.min.js new file mode 100644 index 00000000000..32c62abec99 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/bundles/abp-ng.tenant-management.umd.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@abp/ng.core"),require("@abp/ng.theme.shared"),require("@angular/core"),require("@ng-bootstrap/ng-bootstrap"),require("@ngxs/store"),require("primeng/table"),require("@angular/forms"),require("rxjs"),require("rxjs/operators"),require("@angular/router")):"function"==typeof define&&define.amd?define("@abp/ng.tenant-management",["exports","@abp/ng.core","@abp/ng.theme.shared","@angular/core","@ng-bootstrap/ng-bootstrap","@ngxs/store","primeng/table","@angular/forms","rxjs","rxjs/operators","@angular/router"],t):t(((e=e||self).abp=e.abp||{},e.abp.ng=e.abp.ng||{},e.abp.ng["tenant-management"]={}),e.ng_core,e.ng_theme_shared,e.ng.core,e.ngBootstrap,e.store,e.table,e.ng.forms,e.rxjs,e.rxjs.operators,e.ng.router)}(this,function(e,t,n,a,o,r,i,s,p,c,l){"use strict";var d=function(){return(d=Object.assign||function(e){for(var t,n=1,a=arguments.length;n=0;s--)(o=e[s])&&(i=(r<3?o(i):r>3?o(t,n,i):o(t,n))||i);return r>3&&i&&Object.defineProperty(t,n,i),i}function g(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}var m,f=function(){function e(){}return e.type="[TenantManagement] Get",e}(),b=function(){function e(e){this.payload=e}return e.type="[TenantManagement] Get By Id",e}(),h=function(){function e(e){this.payload=e}return e.type="[TenantManagement] Add",e}(),y=function(){function e(e){this.payload=e}return e.type="[TenantManagement] Update",e}(),v=function(){function e(e){this.payload=e}return e.type="[TenantManagement] Delete",e}(),M=function(){function e(e){this.rest=e}return e.prototype.get=function(){return this.rest.request({method:"GET",url:"/api/multi-tenancy/tenants"})},e.prototype.getById=function(e){var t={method:"GET",url:"/api/multi-tenancy/tenants/"+e};return this.rest.request(t)},e.prototype.delete=function(e){var t={method:"DELETE",url:"/api/multi-tenancy/tenants/"+e};return this.rest.request(t)},e.prototype.add=function(e){var t={method:"POST",url:"/api/multi-tenancy/tenants",body:e};return this.rest.request(t)},e.prototype.update=function(e){var t="/api/multi-tenancy/tenants/"+e.id;delete e.id;var n={method:"PUT",url:t,body:e};return this.rest.request(n)},e.prototype.getDefaultConnectionString=function(e){var t={method:"GET",responseType:"text",url:"/api/multi-tenancy/tenants/"+e+"/defaultConnectionString"};return this.rest.request(t)},e.prototype.updateDefaultConnectionString=function(e){var t={method:"PUT",url:"/api/multi-tenancy/tenants/"+e.id+"/defaultConnectionString",params:{defaultConnectionString:e.defaultConnectionString}};return this.rest.request(t)},e.prototype.deleteDefaultConnectionString=function(e){var t={method:"DELETE",url:"/api/multi-tenancy/tenant/"+e+"/defaultConnectionString"};return this.rest.request(t)},e.decorators=[{type:a.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:t.RestService}]},e.ngInjectableDef=a.ɵɵdefineInjectable({factory:function(){return new e(a.ɵɵinject(t.RestService))},token:e,providedIn:"root"}),e}(),T=function(){function e(e){this.tenantManagementService=e}return e.get=function(e){return e.result.items||[]},e.prototype.get=function(e){var t=e.patchState;return this.tenantManagementService.get().pipe(c.tap(function(e){return t({result:e})}))},e.prototype.getById=function(e,t){var n=e.patchState,a=t.payload;return this.tenantManagementService.getById(a).pipe(c.tap(function(e){return n({selectedItem:e})}))},e.prototype.delete=function(e,t){var n=e.dispatch,a=t.payload;return this.tenantManagementService.delete(a).pipe(c.switchMap(function(){return n(new f)}))},e.prototype.add=function(e,t){var n=e.dispatch,a=t.payload;return this.tenantManagementService.add(a).pipe(c.switchMap(function(){return n(new f)}))},e.prototype.update=function(e,t){var n=this,a=e.dispatch,o=e.getState,r=t.payload;return a(new b(r.id)).pipe(c.switchMap(function(){return n.tenantManagementService.update(d({},o().selectedItem,r))}),c.switchMap(function(){return a(new f)}))},u([r.Action(f),g("design:type",Function),g("design:paramtypes",[Object]),g("design:returntype",void 0)],e.prototype,"get",null),u([r.Action(b),g("design:type",Function),g("design:paramtypes",[Object,b]),g("design:returntype",void 0)],e.prototype,"getById",null),u([r.Action(v),g("design:type",Function),g("design:paramtypes",[Object,v]),g("design:returntype",void 0)],e.prototype,"delete",null),u([r.Action(h),g("design:type",Function),g("design:paramtypes",[Object,h]),g("design:returntype",void 0)],e.prototype,"add",null),u([r.Action(y),g("design:type",Function),g("design:paramtypes",[Object,y]),g("design:returntype",void 0)],e.prototype,"update",null),u([r.Selector(),g("design:type",Function),g("design:paramtypes",[Object]),g("design:returntype",Array)],e,"get",null),e=u([r.State({name:"TenantManagementState",defaults:{result:{},selectedItem:{}}}),g("design:paramtypes",[M])],e)}(),S=function(){function e(e,t,n,a){this.confirmationService=e,this.tenantService=t,this.fb=n,this.store=a,this.selectedModalContent={}}return Object.defineProperty(e.prototype,"useSharedDatabase",{get:function(){return this.defaultConnectionStringForm.get("useSharedDatabase").value},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"connectionString",{get:function(){return this.defaultConnectionStringForm.get("defaultConnectionString").value},enumerable:!0,configurable:!0}),e.prototype.createTenantForm=function(){this.tenantForm=this.fb.group({name:[this.selected.name||"",[s.Validators.required,s.Validators.maxLength(256)]]})},e.prototype.createDefaultConnectionStringForm=function(){this.defaultConnectionStringForm=this.fb.group({useSharedDatabase:this._useSharedDatabase,defaultConnectionString:this.defaultConnectionString||""})},e.prototype.openModal=function(e,t,n){this.selectedModalContent={title:e,template:t,type:n},this.isModalVisible=!0},e.prototype.onEditConnectionString=function(e){var t=this;this.store.dispatch(new b(e)).pipe(c.pluck("TenantManagementState","selectedItem"),c.switchMap(function(n){return t.selected=n,t.tenantService.getDefaultConnectionString(e)})).subscribe(function(e){t._useSharedDatabase=!e,t.defaultConnectionString=e||"",t.createDefaultConnectionStringForm(),t.openModal("AbpTenantManagement::ConnectionStrings",t.connectionStringModalTemplate,"saveConnStr")})},e.prototype.onManageFeatures=function(e){this.openModal("AbpTenantManagement::Features",this.featuresModalTemplate,"saveFeatures")},e.prototype.onAddTenant=function(){this.selected={},this.createTenantForm(),this.openModal("AbpTenantManagement::NewTenant",this.tenantModalTemplate,"saveTenant")},e.prototype.onEditTenant=function(e){var t=this;this.store.dispatch(new b(e)).pipe(c.pluck("TenantManagementState","selectedItem")).subscribe(function(e){t.selected=e,t.createTenantForm(),t.openModal("AbpTenantManagement::Edit",t.tenantModalTemplate,"saveTenant")})},e.prototype.save=function(){var e=this.selectedModalContent.type;e&&("saveTenant"===e?this.saveTenant():"saveConnStr"===e&&this.saveConnectionString())},e.prototype.saveConnectionString=function(){var e=this;this.useSharedDatabase?this.tenantService.deleteDefaultConnectionString(this.selected.id).pipe(c.take(1)).subscribe(function(){e.isModalVisible=!1}):this.tenantService.updateDefaultConnectionString({id:this.selected.id,defaultConnectionString:this.connectionString}).pipe(c.take(1)).subscribe(function(){e.isModalVisible=!1})},e.prototype.saveTenant=function(){var e=this;this.tenantForm.valid&&this.store.dispatch(this.selected.id?new y(d({},this.tenantForm.value,{id:this.selected.id})):new h(this.tenantForm.value)).subscribe(function(){e.isModalVisible=!1})},e.prototype.delete=function(e,t){var n=this;this.confirmationService.warn("AbpTenantManagement::TenantDeletionConfirmationMessage","AbpTenantManagement::AreYouSure",{messageLocalizationParams:[t]}).subscribe(function(t){"confirm"===t&&n.store.dispatch(new v(e))})},e.decorators=[{type:a.Component,args:[{selector:"abp-tenants",template:'
\n
\n
\n
\n
\n {{ \'AbpTenantManagement::Tenants\' | abpLocalization }}\n
\n
\n
\n \n \n {{ \'AbpTenantManagement::NewTenant\' | abpLocalization }}\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ \'AbpTenantManagement::Actions\' | abpLocalization }}\n {{ \'AbpTenantManagement::TenantName\' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ \'AbpTenantManagement::Actions\' | abpLocalization }}\n \n
\n \n {{ \'AbpTenantManagement::Edit\' | abpLocalization }}\n \n \n {{ \'AbpTenantManagement::ConnectionStrings\' | abpLocalization }}\n \n \n {{ \'AbpTenantManagement::Features\' | abpLocalization }}\n \n \n {{ \'AbpTenantManagement::Delete\' | abpLocalization }}\n \n
\n
\n \n {{ data.name }}\n \n
\n
\n
\n
\n\n\n \n

{{ selectedModalContent.title | abpLocalization }}

\n
\n\n \n \n \n\n \n \n \n \n
\n\n\n
\n
\n
\n \n \n
\n
\n
\n
\n\n\n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n\n\n Manage Features\n\n'}]}],e.ctorParameters=function(){return[{type:n.ConfirmationService},{type:M},{type:s.FormBuilder},{type:r.Store}]},e.propDecorators={tenantModalTemplate:[{type:a.ViewChild,args:["tenantModalTemplate",{static:!1}]}],connectionStringModalTemplate:[{type:a.ViewChild,args:["connectionStringModalTemplate",{static:!1}]}],featuresModalTemplate:[{type:a.ViewChild,args:["featuresModalTemplate",{static:!1}]}]},u([r.Select(T.get),g("design:type",p.Observable)],e.prototype,"datas$",void 0),e}(),C=function(){function e(e){this.store=e}return e.prototype.resolve=function(){var e=this.store.selectSnapshot(T.get);return e&&e.length?null:this.store.dispatch(new f)},e.decorators=[{type:a.Injectable}],e.ctorParameters=function(){return[{type:r.Store}]},e}(),A=[{path:"",redirectTo:"tenants",pathMatch:"full"},{path:"tenants",component:t.DynamicLayoutComponent,canActivate:[t.AuthGuard,t.PermissionGuard],data:{requiredPolicy:"AbpTenantManagement.Tenants"},children:[{path:"",component:S,resolve:[C]}]}],D=function(){function e(){}return e.decorators=[{type:a.NgModule,args:[{imports:[l.RouterModule.forChild(A)],exports:[l.RouterModule],providers:[C]}]}],e}(),w=function(){function e(){}return e.decorators=[{type:a.NgModule,args:[{declarations:[S],imports:[D,r.NgxsModule.forFeature([T]),t.CoreModule,i.TableModule,n.ThemeSharedModule,o.NgbDropdownModule]}]}],e}();!function(e){e.State=function(){},e.Item=function(){},e.AddRequest=function(){},e.UpdateRequest=function(){},e.DefaultConnectionStringRequest=function(){}}(m||(m={})),e.TENANT_MANAGEMENT_ROUTES=[{name:"Tenant Management",path:"tenant-management",parentName:"Administration",layout:"application",children:[{path:"tenants",name:"Tenants",order:1,requiredPolicy:"AbpTenantManagement.Tenants"}]}],e.TenantManagementAdd=h,e.TenantManagementDelete=v,e.TenantManagementGet=f,e.TenantManagementGetById=b,e.TenantManagementModule=w,e.TenantManagementService=M,e.TenantManagementState=T,e.TenantManagementUpdate=y,e.TenantsComponent=S,e.TenantsResolver=C,e.ɵa=S,e.ɵb=T,e.ɵc=M,e.ɵd=f,e.ɵe=b,e.ɵf=h,e.ɵg=y,e.ɵh=v,e.ɵj=D,e.ɵk=C,Object.defineProperty(e,"__esModule",{value:!0})}); +//# sourceMappingURL=abp-ng.tenant-management.umd.min.js.map \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/bundles/abp-ng.tenant-management.umd.min.js.map b/npm/ng-packs/dist/tenant-management/bundles/abp-ng.tenant-management.umd.min.js.map new file mode 100644 index 00000000000..f454d8de7fe --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/bundles/abp-ng.tenant-management.umd.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@abp/ng.tenant-management/lib/actions/tenant-management.actions.ts","ng://@abp/ng.tenant-management/lib/models/tenant-management.ts","ng://@abp/ng.tenant-management/lib/services/tenant-management.service.ts","ng://@abp/ng.tenant-management/lib/states/tenant-management.state.ts","ng://@abp/ng.tenant-management/lib/components/tenants/tenants.component.ts","ng://@abp/ng.tenant-management/lib/resolvers/tenants.resolver.ts","ng://@abp/ng.tenant-management/lib/tenant-management-routing.module.ts","ng://@abp/ng.tenant-management/lib/tenant-management.module.ts","ng://@abp/ng.tenant-management/lib/constants/routes.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__metadata","metadataKey","metadataValue","metadata","TenantManagement","TenantManagementGet","type","TenantManagementGetById","payload","TenantManagementAdd","TenantManagementUpdate","TenantManagementDelete","TenantManagementService","rest","get","request","method","url","getById","id","delete","add","body","update","getDefaultConnectionString","responseType","updateDefaultConnectionString","params","defaultConnectionString","deleteDefaultConnectionString","Injectable","args","providedIn","RestService","TenantManagementState","tenantManagementService","_a","result","items","patchState","pipe","tap","_b","selectedItem","dispatch","switchMap","_this","getState","tslib_1.__decorate","Action","Selector","State","name","defaults","TenantsComponent","confirmationService","tenantService","fb","store","selectedModalContent","defaultConnectionStringForm","value","createTenantForm","tenantForm","group","selected","Validators","required","maxLength","createDefaultConnectionStringForm","useSharedDatabase","_useSharedDatabase","openModal","title","template","isModalVisible","onEditConnectionString","pluck","subscribe","fetchedConnectionString","connectionStringModalTemplate","onManageFeatures","featuresModalTemplate","onAddTenant","tenantModalTemplate","onEditTenant","save","saveTenant","saveConnectionString","take","connectionString","valid","warn","messageLocalizationParams","status","Component","selector","ConfirmationService","FormBuilder","Store","ViewChild","static","Select","Observable","TenantsResolver","resolve","data","selectSnapshot","routes","path","redirectTo","pathMatch","component","DynamicLayoutComponent","canActivate","AuthGuard","PermissionGuard","requiredPolicy","children","TenantManagementRoutingModule","NgModule","imports","RouterModule","forChild","exports","providers","TenantManagementModule","declarations","NgxsModule","forFeature","CoreModule","TableModule","ThemeSharedModule","NgbDropdownModule","parentName","layout","order"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { TenantManagement } from '../models/tenant-management';\n\nexport class TenantManagementGet {\n static readonly type = '[TenantManagement] Get';\n}\n\nexport class TenantManagementGetById {\n static readonly type = '[TenantManagement] Get By Id';\n constructor(public payload: string) {}\n}\n\nexport class TenantManagementAdd {\n static readonly type = '[TenantManagement] Add';\n constructor(public payload: TenantManagement.AddRequest) {}\n}\n\nexport class TenantManagementUpdate {\n static readonly type = '[TenantManagement] Update';\n constructor(public payload: TenantManagement.UpdateRequest) {}\n}\n\nexport class TenantManagementDelete {\n static readonly type = '[TenantManagement] Delete';\n constructor(public payload: string) {}\n}\n","import { ABP } from '@abp/ng.core';\n\nexport namespace TenantManagement {\n export interface State {\n result: Response;\n selectedItem: Item;\n }\n\n export type Response = ABP.PagedResponse;\n\n export interface Item {\n id: string;\n name: string;\n }\n\n export interface AddRequest {\n name: string;\n }\n\n export interface UpdateRequest extends AddRequest {\n id: string;\n }\n\n export interface DefaultConnectionStringRequest {\n id: string;\n defaultConnectionString: string;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RestService, Rest, ABP } from '@abp/ng.core';\nimport { TenantManagement } from '../models/tenant-management';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TenantManagementService {\n constructor(private rest: RestService) {}\n\n get(): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/multi-tenancy/tenants',\n };\n\n return this.rest.request(request);\n }\n\n getById(id: string): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: `/api/multi-tenancy/tenants/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n delete(id: string): Observable {\n const request: Rest.Request = {\n method: 'DELETE',\n url: `/api/multi-tenancy/tenants/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n add(body: TenantManagement.AddRequest): Observable {\n const request: Rest.Request = {\n method: 'POST',\n url: `/api/multi-tenancy/tenants`,\n body,\n };\n\n return this.rest.request(request);\n }\n\n update(body: TenantManagement.UpdateRequest): Observable {\n const url = `/api/multi-tenancy/tenants/${body.id}`;\n delete body.id;\n\n const request: Rest.Request = {\n method: 'PUT',\n url,\n body,\n };\n\n return this.rest.request(request);\n }\n\n getDefaultConnectionString(id: string): Observable {\n const url = `/api/multi-tenancy/tenants/${id}/defaultConnectionString`;\n\n const request: Rest.Request = {\n method: 'GET',\n responseType: Rest.ResponseType.Text,\n url,\n };\n return this.rest.request(request);\n }\n\n updateDefaultConnectionString(payload: TenantManagement.DefaultConnectionStringRequest): Observable {\n const url = `/api/multi-tenancy/tenants/${payload.id}/defaultConnectionString`;\n\n const request: Rest.Request = {\n method: 'PUT',\n url,\n params: { defaultConnectionString: payload.defaultConnectionString },\n };\n return this.rest.request(request);\n }\n\n deleteDefaultConnectionString(id: string): Observable {\n const url = `/api/multi-tenancy/tenant/${id}/defaultConnectionString`;\n\n const request: Rest.Request = {\n method: 'DELETE',\n url,\n };\n return this.rest.request(request);\n }\n}\n","import { Action, Selector, State, StateContext } from '@ngxs/store';\nimport { switchMap, tap } from 'rxjs/operators';\nimport {\n TenantManagementAdd,\n TenantManagementDelete,\n TenantManagementGet,\n TenantManagementGetById,\n TenantManagementUpdate,\n} from '../actions/tenant-management.actions';\nimport { TenantManagement } from '../models/tenant-management';\nimport { TenantManagementService } from '../services/tenant-management.service';\nimport { ABP } from '@abp/ng.core';\n\n@State({\n name: 'TenantManagementState',\n defaults: { result: {}, selectedItem: {} } as TenantManagement.State,\n})\nexport class TenantManagementState {\n @Selector()\n static get({ result }: TenantManagement.State): ABP.BasicItem[] {\n return result.items || [];\n }\n\n constructor(private tenantManagementService: TenantManagementService) {}\n\n @Action(TenantManagementGet)\n get({ patchState }: StateContext) {\n return this.tenantManagementService.get().pipe(\n tap(result =>\n patchState({\n result,\n }),\n ),\n );\n }\n\n @Action(TenantManagementGetById)\n getById({ patchState }: StateContext, { payload }: TenantManagementGetById) {\n return this.tenantManagementService.getById(payload).pipe(\n tap(selectedItem =>\n patchState({\n selectedItem,\n }),\n ),\n );\n }\n\n @Action(TenantManagementDelete)\n delete({ dispatch }: StateContext, { payload }: TenantManagementDelete) {\n return this.tenantManagementService.delete(payload).pipe(switchMap(() => dispatch(new TenantManagementGet())));\n }\n\n @Action(TenantManagementAdd)\n add({ dispatch }: StateContext, { payload }: TenantManagementAdd) {\n return this.tenantManagementService.add(payload).pipe(switchMap(() => dispatch(new TenantManagementGet())));\n }\n\n @Action(TenantManagementUpdate)\n update({ dispatch, getState }: StateContext, { payload }: TenantManagementUpdate) {\n return dispatch(new TenantManagementGetById(payload.id)).pipe(\n switchMap(() => this.tenantManagementService.update({ ...getState().selectedItem, ...payload })),\n switchMap(() => dispatch(new TenantManagementGet())),\n );\n }\n}\n","import { ABP } from '@abp/ng.core';\nimport { ConfirmationService, Toaster } from '@abp/ng.theme.shared';\nimport { Component, TemplateRef, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { pluck, switchMap, take } from 'rxjs/operators';\nimport {\n TenantManagementAdd,\n TenantManagementDelete,\n TenantManagementGetById,\n TenantManagementUpdate,\n} from '../../actions/tenant-management.actions';\nimport { TenantManagementService } from '../../services/tenant-management.service';\nimport { TenantManagementState } from '../../states/tenant-management.state';\n\ntype SelectedModalContent = {\n type: string;\n title: string;\n template: TemplateRef;\n};\n\n@Component({\n selector: 'abp-tenants',\n templateUrl: './tenants.component.html',\n})\nexport class TenantsComponent {\n @Select(TenantManagementState.get)\n datas$: Observable;\n\n selected: ABP.BasicItem;\n\n tenantForm: FormGroup;\n\n defaultConnectionStringForm: FormGroup;\n\n defaultConnectionString: string;\n\n isModalVisible: boolean;\n\n selectedModalContent = {} as SelectedModalContent;\n\n _useSharedDatabase: boolean;\n\n get useSharedDatabase(): boolean {\n return this.defaultConnectionStringForm.get('useSharedDatabase').value;\n }\n\n get connectionString(): string {\n return this.defaultConnectionStringForm.get('defaultConnectionString').value;\n }\n\n @ViewChild('tenantModalTemplate', { static: false })\n tenantModalTemplate: TemplateRef;\n\n @ViewChild('connectionStringModalTemplate', { static: false })\n connectionStringModalTemplate: TemplateRef;\n\n @ViewChild('featuresModalTemplate', { static: false })\n featuresModalTemplate: TemplateRef;\n\n constructor(\n private confirmationService: ConfirmationService,\n private tenantService: TenantManagementService,\n private fb: FormBuilder,\n private store: Store,\n ) {}\n\n private createTenantForm() {\n this.tenantForm = this.fb.group({\n name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]],\n });\n }\n\n private createDefaultConnectionStringForm() {\n this.defaultConnectionStringForm = this.fb.group({\n useSharedDatabase: this._useSharedDatabase,\n defaultConnectionString: this.defaultConnectionString || '',\n });\n }\n\n openModal(title: string, template: TemplateRef, type: string) {\n this.selectedModalContent = {\n title,\n template,\n type,\n };\n\n this.isModalVisible = true;\n }\n\n onEditConnectionString(id: string) {\n this.store\n .dispatch(new TenantManagementGetById(id))\n .pipe(\n pluck('TenantManagementState', 'selectedItem'),\n switchMap(selected => {\n this.selected = selected;\n return this.tenantService.getDefaultConnectionString(id);\n }),\n )\n .subscribe(fetchedConnectionString => {\n this._useSharedDatabase = fetchedConnectionString ? false : true;\n this.defaultConnectionString = fetchedConnectionString ? fetchedConnectionString : '';\n this.createDefaultConnectionStringForm();\n this.openModal('AbpTenantManagement::ConnectionStrings', this.connectionStringModalTemplate, 'saveConnStr');\n });\n }\n\n onManageFeatures(id: string) {\n this.openModal('AbpTenantManagement::Features', this.featuresModalTemplate, 'saveFeatures');\n }\n\n onAddTenant() {\n this.selected = {} as ABP.BasicItem;\n this.createTenantForm();\n this.openModal('AbpTenantManagement::NewTenant', this.tenantModalTemplate, 'saveTenant');\n }\n\n onEditTenant(id: string) {\n this.store\n .dispatch(new TenantManagementGetById(id))\n .pipe(pluck('TenantManagementState', 'selectedItem'))\n .subscribe(selected => {\n this.selected = selected;\n this.createTenantForm();\n this.openModal('AbpTenantManagement::Edit', this.tenantModalTemplate, 'saveTenant');\n });\n }\n\n save() {\n const { type } = this.selectedModalContent;\n if (!type) return;\n if (type === 'saveTenant') this.saveTenant();\n else if (type === 'saveConnStr') this.saveConnectionString();\n }\n\n saveConnectionString() {\n if (this.useSharedDatabase) {\n this.tenantService\n .deleteDefaultConnectionString(this.selected.id)\n .pipe(take(1))\n .subscribe(() => {\n this.isModalVisible = false;\n });\n } else {\n this.tenantService\n .updateDefaultConnectionString({ id: this.selected.id, defaultConnectionString: this.connectionString })\n .pipe(take(1))\n .subscribe(() => {\n this.isModalVisible = false;\n });\n }\n }\n\n saveTenant() {\n if (!this.tenantForm.valid) return;\n\n this.store\n .dispatch(\n this.selected.id\n ? new TenantManagementUpdate({ ...this.tenantForm.value, id: this.selected.id })\n : new TenantManagementAdd(this.tenantForm.value),\n )\n .subscribe(() => {\n this.isModalVisible = false;\n });\n }\n\n delete(id: string, name: string) {\n this.confirmationService\n .warn('AbpTenantManagement::TenantDeletionConfirmationMessage', 'AbpTenantManagement::AreYouSure', {\n messageLocalizationParams: [name],\n })\n .subscribe((status: Toaster.Status) => {\n if (status === Toaster.Status.confirm) {\n this.store.dispatch(new TenantManagementDelete(id));\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Resolve } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { TenantManagementGet } from '../actions/tenant-management.actions';\nimport { TenantManagement } from '../models/tenant-management';\nimport { TenantManagementState } from '../states/tenant-management.state';\n\n@Injectable()\nexport class TenantsResolver implements Resolve {\n constructor(private store: Store) {}\n\n resolve() {\n const data = this.store.selectSnapshot(TenantManagementState.get);\n return data && data.length\n ? null \n : this.store.dispatch(new TenantManagementGet());\n }\n}\n","import { AuthGuard, DynamicLayoutComponent, PermissionGuard } from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { TenantsResolver } from './resolvers/tenants.resolver';\nimport { TenantsComponent } from './components/tenants/tenants.component';\n\nconst routes: Routes = [\n { path: '', redirectTo: 'tenants', pathMatch: 'full' },\n {\n path: 'tenants',\n component: DynamicLayoutComponent,\n canActivate: [AuthGuard, PermissionGuard],\n data: { requiredPolicy: 'AbpTenantManagement.Tenants' },\n children: [{ path: '', component: TenantsComponent, resolve: [TenantsResolver] }],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n providers: [TenantsResolver],\n})\nexport class TenantManagementRoutingModule {}\n","import { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { NgModule } from '@angular/core';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxsModule } from '@ngxs/store';\nimport { TableModule } from 'primeng/table';\nimport { TenantsComponent } from './components/tenants/tenants.component';\nimport { TenantManagementState } from './states/tenant-management.state';\nimport { TenantManagementRoutingModule } from './tenant-management-routing.module';\n\n@NgModule({\n declarations: [TenantsComponent],\n imports: [\n TenantManagementRoutingModule,\n NgxsModule.forFeature([TenantManagementState]),\n CoreModule,\n TableModule,\n ThemeSharedModule,\n NgbDropdownModule,\n ],\n})\nexport class TenantManagementModule {}\n","import { ABP, eLayoutType } from '@abp/ng.core';\n\nexport const TENANT_MANAGEMENT_ROUTES = [\n {\n name: 'Tenant Management',\n path: 'tenant-management',\n parentName: 'Administration',\n layout: eLayoutType.application,\n children: [\n {\n path: 'tenants',\n name: 'Tenants',\n order: 1,\n requiredPolicy: 'AbpTenantManagement.Tenants',\n },\n ],\n },\n] as ABP.FullRoute[];\n"]} \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/abp-ng.tenant-management.js b/npm/ng-packs/dist/tenant-management/esm2015/abp-ng.tenant-management.js new file mode 100644 index 00000000000..050561e296d --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/abp-ng.tenant-management.js @@ -0,0 +1,15 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { TenantManagementModule, TenantManagementGet, TenantManagementGetById, TenantManagementAdd, TenantManagementUpdate, TenantManagementDelete, TenantsComponent, TENANT_MANAGEMENT_ROUTES, TenantsResolver, TenantManagementService, TenantManagementState } from './public-api'; +export { TenantManagementAdd as ɵf, TenantManagementDelete as ɵh, TenantManagementGet as ɵd, TenantManagementGetById as ɵe, TenantManagementUpdate as ɵg } from './lib/actions/tenant-management.actions'; +export { TenantsComponent as ɵa } from './lib/components/tenants/tenants.component'; +export { TenantsResolver as ɵk } from './lib/resolvers/tenants.resolver'; +export { TenantManagementService as ɵc } from './lib/services/tenant-management.service'; +export { TenantManagementState as ɵb } from './lib/states/tenant-management.state'; +export { TenantManagementRoutingModule as ɵj } from './lib/tenant-management-routing.module'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLnRlbmFudC1tYW5hZ2VtZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50ZW5hbnQtbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImFicC1uZy50ZW5hbnQtbWFuYWdlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsdVFBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsc0JBQXNCLElBQUksRUFBRSxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyx1QkFBdUIsSUFBSSxFQUFFLEVBQUMsc0JBQXNCLElBQUksRUFBRSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDcE0sT0FBTyxFQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBRWxGLE9BQU8sRUFBQyxlQUFlLElBQUksRUFBRSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFDLHVCQUF1QixJQUFJLEVBQUUsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxxQkFBcUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRixPQUFPLEVBQUMsNkJBQTZCLElBQUksRUFBRSxFQUFDLE1BQU0sd0NBQXdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG5cbmV4cG9ydCB7VGVuYW50TWFuYWdlbWVudEFkZCBhcyDJtWYsVGVuYW50TWFuYWdlbWVudERlbGV0ZSBhcyDJtWgsVGVuYW50TWFuYWdlbWVudEdldCBhcyDJtWQsVGVuYW50TWFuYWdlbWVudEdldEJ5SWQgYXMgybVlLFRlbmFudE1hbmFnZW1lbnRVcGRhdGUgYXMgybVnfSBmcm9tICcuL2xpYi9hY3Rpb25zL3RlbmFudC1tYW5hZ2VtZW50LmFjdGlvbnMnO1xuZXhwb3J0IHtUZW5hbnRzQ29tcG9uZW50IGFzIMm1YX0gZnJvbSAnLi9saWIvY29tcG9uZW50cy90ZW5hbnRzL3RlbmFudHMuY29tcG9uZW50JztcbmV4cG9ydCB7VGVuYW50TWFuYWdlbWVudCBhcyDJtWl9IGZyb20gJy4vbGliL21vZGVscy90ZW5hbnQtbWFuYWdlbWVudCc7XG5leHBvcnQge1RlbmFudHNSZXNvbHZlciBhcyDJtWt9IGZyb20gJy4vbGliL3Jlc29sdmVycy90ZW5hbnRzLnJlc29sdmVyJztcbmV4cG9ydCB7VGVuYW50TWFuYWdlbWVudFNlcnZpY2UgYXMgybVjfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy90ZW5hbnQtbWFuYWdlbWVudC5zZXJ2aWNlJztcbmV4cG9ydCB7VGVuYW50TWFuYWdlbWVudFN0YXRlIGFzIMm1Yn0gZnJvbSAnLi9saWIvc3RhdGVzL3RlbmFudC1tYW5hZ2VtZW50LnN0YXRlJztcbmV4cG9ydCB7VGVuYW50TWFuYWdlbWVudFJvdXRpbmdNb2R1bGUgYXMgybVqfSBmcm9tICcuL2xpYi90ZW5hbnQtbWFuYWdlbWVudC1yb3V0aW5nLm1vZHVsZSc7Il19 \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/lib/actions/index.js b/npm/ng-packs/dist/tenant-management/esm2015/lib/actions/index.js new file mode 100644 index 00000000000..02fc8c5fbe6 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/lib/actions/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { TenantManagementGet, TenantManagementGetById, TenantManagementAdd, TenantManagementUpdate, TenantManagementDelete } from './tenant-management.actions'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2FjdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGtJQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90ZW5hbnQtbWFuYWdlbWVudC5hY3Rpb25zJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/lib/actions/tenant-management.actions.js b/npm/ng-packs/dist/tenant-management/esm2015/lib/actions/tenant-management.actions.js new file mode 100644 index 00000000000..e8d0a5b6658 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/lib/actions/tenant-management.actions.js @@ -0,0 +1,72 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export class TenantManagementGet { +} +TenantManagementGet.type = '[TenantManagement] Get'; +if (false) { + /** @type {?} */ + TenantManagementGet.type; +} +export class TenantManagementGetById { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +TenantManagementGetById.type = '[TenantManagement] Get By Id'; +if (false) { + /** @type {?} */ + TenantManagementGetById.type; + /** @type {?} */ + TenantManagementGetById.prototype.payload; +} +export class TenantManagementAdd { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +TenantManagementAdd.type = '[TenantManagement] Add'; +if (false) { + /** @type {?} */ + TenantManagementAdd.type; + /** @type {?} */ + TenantManagementAdd.prototype.payload; +} +export class TenantManagementUpdate { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +TenantManagementUpdate.type = '[TenantManagement] Update'; +if (false) { + /** @type {?} */ + TenantManagementUpdate.type; + /** @type {?} */ + TenantManagementUpdate.prototype.payload; +} +export class TenantManagementDelete { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +TenantManagementDelete.type = '[TenantManagement] Delete'; +if (false) { + /** @type {?} */ + TenantManagementDelete.type; + /** @type {?} */ + TenantManagementDelete.prototype.payload; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LW1hbmFnZW1lbnQuYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGVuYW50LW1hbmFnZW1lbnQvIiwic291cmNlcyI6WyJsaWIvYWN0aW9ucy90ZW5hbnQtbWFuYWdlbWVudC5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxNQUFNLE9BQU8sbUJBQW1COztBQUNkLHdCQUFJLEdBQUcsd0JBQXdCLENBQUM7OztJQUFoRCx5QkFBZ0Q7O0FBR2xELE1BQU0sT0FBTyx1QkFBdUI7Ozs7SUFFbEMsWUFBbUIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDOztBQUR0Qiw0QkFBSSxHQUFHLDhCQUE4QixDQUFDOzs7SUFBdEQsNkJBQXNEOztJQUMxQywwQ0FBc0I7O0FBR3BDLE1BQU0sT0FBTyxtQkFBbUI7Ozs7SUFFOUIsWUFBbUIsT0FBb0M7UUFBcEMsWUFBTyxHQUFQLE9BQU8sQ0FBNkI7SUFBRyxDQUFDOztBQUQzQyx3QkFBSSxHQUFHLHdCQUF3QixDQUFDOzs7SUFBaEQseUJBQWdEOztJQUNwQyxzQ0FBMkM7O0FBR3pELE1BQU0sT0FBTyxzQkFBc0I7Ozs7SUFFakMsWUFBbUIsT0FBdUM7UUFBdkMsWUFBTyxHQUFQLE9BQU8sQ0FBZ0M7SUFBRyxDQUFDOztBQUQ5QywyQkFBSSxHQUFHLDJCQUEyQixDQUFDOzs7SUFBbkQsNEJBQW1EOztJQUN2Qyx5Q0FBOEM7O0FBRzVELE1BQU0sT0FBTyxzQkFBc0I7Ozs7SUFFakMsWUFBbUIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDOztBQUR0QiwyQkFBSSxHQUFHLDJCQUEyQixDQUFDOzs7SUFBbkQsNEJBQW1EOztJQUN2Qyx5Q0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW5hbnRNYW5hZ2VtZW50IH0gZnJvbSAnLi4vbW9kZWxzL3RlbmFudC1tYW5hZ2VtZW50JztcblxuZXhwb3J0IGNsYXNzIFRlbmFudE1hbmFnZW1lbnRHZXQge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbVGVuYW50TWFuYWdlbWVudF0gR2V0Jztcbn1cblxuZXhwb3J0IGNsYXNzIFRlbmFudE1hbmFnZW1lbnRHZXRCeUlkIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1RlbmFudE1hbmFnZW1lbnRdIEdldCBCeSBJZCc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBzdHJpbmcpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW5hbnRNYW5hZ2VtZW50QWRkIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1RlbmFudE1hbmFnZW1lbnRdIEFkZCc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBUZW5hbnRNYW5hZ2VtZW50LkFkZFJlcXVlc3QpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW5hbnRNYW5hZ2VtZW50VXBkYXRlIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1RlbmFudE1hbmFnZW1lbnRdIFVwZGF0ZSc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBUZW5hbnRNYW5hZ2VtZW50LlVwZGF0ZVJlcXVlc3QpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW5hbnRNYW5hZ2VtZW50RGVsZXRlIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1RlbmFudE1hbmFnZW1lbnRdIERlbGV0ZSc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBzdHJpbmcpIHt9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/lib/components/index.js b/npm/ng-packs/dist/tenant-management/esm2015/lib/components/index.js new file mode 100644 index 00000000000..0b0f73e1acf --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/lib/components/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { TenantsComponent } from './tenants/tenants.component'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlDQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90ZW5hbnRzL3RlbmFudHMuY29tcG9uZW50JztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/lib/components/tenants/tenants.component.js b/npm/ng-packs/dist/tenant-management/esm2015/lib/components/tenants/tenants.component.js new file mode 100644 index 00000000000..73e49c3d6a5 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/lib/components/tenants/tenants.component.js @@ -0,0 +1,276 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { ConfirmationService } from '@abp/ng.theme.shared'; +import { Component, TemplateRef, ViewChild } from '@angular/core'; +import { FormBuilder, Validators } from '@angular/forms'; +import { Select, Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { pluck, switchMap, take } from 'rxjs/operators'; +import { TenantManagementAdd, TenantManagementDelete, TenantManagementGetById, TenantManagementUpdate, } from '../../actions/tenant-management.actions'; +import { TenantManagementService } from '../../services/tenant-management.service'; +import { TenantManagementState } from '../../states/tenant-management.state'; +export class TenantsComponent { + /** + * @param {?} confirmationService + * @param {?} tenantService + * @param {?} fb + * @param {?} store + */ + constructor(confirmationService, tenantService, fb, store) { + this.confirmationService = confirmationService; + this.tenantService = tenantService; + this.fb = fb; + this.store = store; + this.selectedModalContent = (/** @type {?} */ ({})); + } + /** + * @return {?} + */ + get useSharedDatabase() { + return this.defaultConnectionStringForm.get('useSharedDatabase').value; + } + /** + * @return {?} + */ + get connectionString() { + return this.defaultConnectionStringForm.get('defaultConnectionString').value; + } + /** + * @private + * @return {?} + */ + createTenantForm() { + this.tenantForm = this.fb.group({ + name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]], + }); + } + /** + * @private + * @return {?} + */ + createDefaultConnectionStringForm() { + this.defaultConnectionStringForm = this.fb.group({ + useSharedDatabase: this._useSharedDatabase, + defaultConnectionString: this.defaultConnectionString || '', + }); + } + /** + * @param {?} title + * @param {?} template + * @param {?} type + * @return {?} + */ + openModal(title, template, type) { + this.selectedModalContent = { + title, + template, + type, + }; + this.isModalVisible = true; + } + /** + * @param {?} id + * @return {?} + */ + onEditConnectionString(id) { + this.store + .dispatch(new TenantManagementGetById(id)) + .pipe(pluck('TenantManagementState', 'selectedItem'), switchMap((/** + * @param {?} selected + * @return {?} + */ + selected => { + this.selected = selected; + return this.tenantService.getDefaultConnectionString(id); + }))) + .subscribe((/** + * @param {?} fetchedConnectionString + * @return {?} + */ + fetchedConnectionString => { + this._useSharedDatabase = fetchedConnectionString ? false : true; + this.defaultConnectionString = fetchedConnectionString ? fetchedConnectionString : ''; + this.createDefaultConnectionStringForm(); + this.openModal('AbpTenantManagement::ConnectionStrings', this.connectionStringModalTemplate, 'saveConnStr'); + })); + } + /** + * @param {?} id + * @return {?} + */ + onManageFeatures(id) { + this.openModal('AbpTenantManagement::Features', this.featuresModalTemplate, 'saveFeatures'); + } + /** + * @return {?} + */ + onAddTenant() { + this.selected = (/** @type {?} */ ({})); + this.createTenantForm(); + this.openModal('AbpTenantManagement::NewTenant', this.tenantModalTemplate, 'saveTenant'); + } + /** + * @param {?} id + * @return {?} + */ + onEditTenant(id) { + this.store + .dispatch(new TenantManagementGetById(id)) + .pipe(pluck('TenantManagementState', 'selectedItem')) + .subscribe((/** + * @param {?} selected + * @return {?} + */ + selected => { + this.selected = selected; + this.createTenantForm(); + this.openModal('AbpTenantManagement::Edit', this.tenantModalTemplate, 'saveTenant'); + })); + } + /** + * @return {?} + */ + save() { + const { type } = this.selectedModalContent; + if (!type) + return; + if (type === 'saveTenant') + this.saveTenant(); + else if (type === 'saveConnStr') + this.saveConnectionString(); + } + /** + * @return {?} + */ + saveConnectionString() { + if (this.useSharedDatabase) { + this.tenantService + .deleteDefaultConnectionString(this.selected.id) + .pipe(take(1)) + .subscribe((/** + * @return {?} + */ + () => { + this.isModalVisible = false; + })); + } + else { + this.tenantService + .updateDefaultConnectionString({ id: this.selected.id, defaultConnectionString: this.connectionString }) + .pipe(take(1)) + .subscribe((/** + * @return {?} + */ + () => { + this.isModalVisible = false; + })); + } + } + /** + * @return {?} + */ + saveTenant() { + if (!this.tenantForm.valid) + return; + this.store + .dispatch(this.selected.id + ? new TenantManagementUpdate(Object.assign({}, this.tenantForm.value, { id: this.selected.id })) + : new TenantManagementAdd(this.tenantForm.value)) + .subscribe((/** + * @return {?} + */ + () => { + this.isModalVisible = false; + })); + } + /** + * @param {?} id + * @param {?} name + * @return {?} + */ + delete(id, name) { + this.confirmationService + .warn('AbpTenantManagement::TenantDeletionConfirmationMessage', 'AbpTenantManagement::AreYouSure', { + messageLocalizationParams: [name], + }) + .subscribe((/** + * @param {?} status + * @return {?} + */ + (status) => { + if (status === "confirm" /* confirm */) { + this.store.dispatch(new TenantManagementDelete(id)); + } + })); + } +} +TenantsComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-tenants', + template: "
\n
\n
\n
\n
\n {{ 'AbpTenantManagement::Tenants' | abpLocalization }}\n
\n
\n
\n \n \n {{ 'AbpTenantManagement::NewTenant' | abpLocalization }}\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpTenantManagement::Actions' | abpLocalization }}\n {{ 'AbpTenantManagement::TenantName' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpTenantManagement::Actions' | abpLocalization }}\n \n
\n \n {{ 'AbpTenantManagement::Edit' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::ConnectionStrings' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::Features' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::Delete' | abpLocalization }}\n \n
\n
\n \n {{ data.name }}\n \n
\n
\n
\n
\n\n\n \n

{{ selectedModalContent.title | abpLocalization }}

\n
\n\n \n \n \n\n \n \n \n \n
\n\n\n
\n
\n
\n \n \n
\n
\n
\n
\n\n\n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n\n\n Manage Features\n\n" + }] } +]; +/** @nocollapse */ +TenantsComponent.ctorParameters = () => [ + { type: ConfirmationService }, + { type: TenantManagementService }, + { type: FormBuilder }, + { type: Store } +]; +TenantsComponent.propDecorators = { + tenantModalTemplate: [{ type: ViewChild, args: ['tenantModalTemplate', { static: false },] }], + connectionStringModalTemplate: [{ type: ViewChild, args: ['connectionStringModalTemplate', { static: false },] }], + featuresModalTemplate: [{ type: ViewChild, args: ['featuresModalTemplate', { static: false },] }] +}; +tslib_1.__decorate([ + Select(TenantManagementState.get), + tslib_1.__metadata("design:type", Observable) +], TenantsComponent.prototype, "datas$", void 0); +if (false) { + /** @type {?} */ + TenantsComponent.prototype.datas$; + /** @type {?} */ + TenantsComponent.prototype.selected; + /** @type {?} */ + TenantsComponent.prototype.tenantForm; + /** @type {?} */ + TenantsComponent.prototype.defaultConnectionStringForm; + /** @type {?} */ + TenantsComponent.prototype.defaultConnectionString; + /** @type {?} */ + TenantsComponent.prototype.isModalVisible; + /** @type {?} */ + TenantsComponent.prototype.selectedModalContent; + /** @type {?} */ + TenantsComponent.prototype._useSharedDatabase; + /** @type {?} */ + TenantsComponent.prototype.tenantModalTemplate; + /** @type {?} */ + TenantsComponent.prototype.connectionStringModalTemplate; + /** @type {?} */ + TenantsComponent.prototype.featuresModalTemplate; + /** + * @type {?} + * @private + */ + TenantsComponent.prototype.confirmationService; + /** + * @type {?} + * @private + */ + TenantsComponent.prototype.tenantService; + /** + * @type {?} + * @private + */ + TenantsComponent.prototype.fb; + /** + * @type {?} + * @private + */ + TenantsComponent.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvdGVuYW50cy90ZW5hbnRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBVyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixHQUN2QixNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBWTdFLE1BQU0sT0FBTyxnQkFBZ0I7Ozs7Ozs7SUFtQzNCLFlBQ1UsbUJBQXdDLEVBQ3hDLGFBQXNDLEVBQ3RDLEVBQWUsRUFDZixLQUFZO1FBSFosd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxrQkFBYSxHQUFiLGFBQWEsQ0FBeUI7UUFDdEMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQU87UUF6QnRCLHlCQUFvQixHQUFHLG1CQUFBLEVBQUUsRUFBd0IsQ0FBQztJQTBCL0MsQ0FBQzs7OztJQXRCSixJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDekUsQ0FBQzs7OztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMvRSxDQUFDOzs7OztJQWtCTyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUM5QixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNuRixDQUFDLENBQUM7SUFDTCxDQUFDOzs7OztJQUVPLGlDQUFpQztRQUN2QyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDL0MsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtZQUMxQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsdUJBQXVCLElBQUksRUFBRTtTQUM1RCxDQUFDLENBQUM7SUFDTCxDQUFDOzs7Ozs7O0lBRUQsU0FBUyxDQUFDLEtBQWEsRUFBRSxRQUEwQixFQUFFLElBQVk7UUFDL0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHO1lBQzFCLEtBQUs7WUFDTCxRQUFRO1lBQ1IsSUFBSTtTQUNMLENBQUM7UUFFRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDOzs7OztJQUVELHNCQUFzQixDQUFDLEVBQVU7UUFDL0IsSUFBSSxDQUFDLEtBQUs7YUFDUCxRQUFRLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN6QyxJQUFJLENBQ0gsS0FBSyxDQUFDLHVCQUF1QixFQUFFLGNBQWMsQ0FBQyxFQUM5QyxTQUFTOzs7O1FBQUMsUUFBUSxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUMsRUFBQyxDQUNIO2FBQ0EsU0FBUzs7OztRQUFDLHVCQUF1QixDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNqRSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdEYsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyx3Q0FBd0MsRUFBRSxJQUFJLENBQUMsNkJBQTZCLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDOUcsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7OztJQUVELGdCQUFnQixDQUFDLEVBQVU7UUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQywrQkFBK0IsRUFBRSxJQUFJLENBQUMscUJBQXFCLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDOUYsQ0FBQzs7OztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxHQUFHLG1CQUFBLEVBQUUsRUFBaUIsQ0FBQztRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMzRixDQUFDOzs7OztJQUVELFlBQVksQ0FBQyxFQUFVO1FBQ3JCLElBQUksQ0FBQyxLQUFLO2FBQ1AsUUFBUSxDQUFDLElBQUksdUJBQXVCLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxjQUFjLENBQUMsQ0FBQzthQUNwRCxTQUFTOzs7O1FBQUMsUUFBUSxDQUFDLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDdEYsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7O0lBRUQsSUFBSTtjQUNJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLG9CQUFvQjtRQUMxQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDbEIsSUFBSSxJQUFJLEtBQUssWUFBWTtZQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUN4QyxJQUFJLElBQUksS0FBSyxhQUFhO1lBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDL0QsQ0FBQzs7OztJQUVELG9CQUFvQjtRQUNsQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsYUFBYTtpQkFDZiw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztpQkFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDYixTQUFTOzs7WUFBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDOUIsQ0FBQyxFQUFDLENBQUM7U0FDTjthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWE7aUJBQ2YsNkJBQTZCLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7aUJBQ3ZHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2IsU0FBUzs7O1lBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzlCLENBQUMsRUFBQyxDQUFDO1NBQ047SUFDSCxDQUFDOzs7O0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBRW5DLElBQUksQ0FBQyxLQUFLO2FBQ1AsUUFBUSxDQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNkLENBQUMsQ0FBQyxJQUFJLHNCQUFzQixtQkFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUc7WUFDaEYsQ0FBQyxDQUFDLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FDbkQ7YUFDQSxTQUFTOzs7UUFBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM5QixDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7OztJQUVELE1BQU0sQ0FBQyxFQUFVLEVBQUUsSUFBWTtRQUM3QixJQUFJLENBQUMsbUJBQW1CO2FBQ3JCLElBQUksQ0FBQyx3REFBd0QsRUFBRSxpQ0FBaUMsRUFBRTtZQUNqRyx5QkFBeUIsRUFBRSxDQUFDLElBQUksQ0FBQztTQUNsQyxDQUFDO2FBQ0QsU0FBUzs7OztRQUFDLENBQUMsTUFBc0IsRUFBRSxFQUFFO1lBQ3BDLElBQUksTUFBTSw0QkFBMkIsRUFBRTtnQkFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3JEO1FBQ0gsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7WUE3SkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxhQUFhO2dCQUN2QiwwNUtBQXVDO2FBQ3hDOzs7O1lBeEJRLG1CQUFtQjtZQVluQix1QkFBdUI7WUFWdkIsV0FBVztZQUNILEtBQUs7OztrQ0FnRG5CLFNBQVMsU0FBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7NENBR2xELFNBQVMsU0FBQywrQkFBK0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7b0NBRzVELFNBQVMsU0FBQyx1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O0FBOUJyRDtJQURDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUM7c0NBQzFCLFVBQVU7Z0RBQWtCOzs7SUFEcEMsa0NBQ29DOztJQUVwQyxvQ0FBd0I7O0lBRXhCLHNDQUFzQjs7SUFFdEIsdURBQXVDOztJQUV2QyxtREFBZ0M7O0lBRWhDLDBDQUF3Qjs7SUFFeEIsZ0RBQWtEOztJQUVsRCw4Q0FBNEI7O0lBVTVCLCtDQUNzQzs7SUFFdEMseURBQ2dEOztJQUVoRCxpREFDd0M7Ozs7O0lBR3RDLCtDQUFnRDs7Ozs7SUFDaEQseUNBQThDOzs7OztJQUM5Qyw4QkFBdUI7Ozs7O0lBQ3ZCLGlDQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBUb2FzdGVyIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHBsdWNrLCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBUZW5hbnRNYW5hZ2VtZW50QWRkLFxuICBUZW5hbnRNYW5hZ2VtZW50RGVsZXRlLFxuICBUZW5hbnRNYW5hZ2VtZW50R2V0QnlJZCxcbiAgVGVuYW50TWFuYWdlbWVudFVwZGF0ZSxcbn0gZnJvbSAnLi4vLi4vYWN0aW9ucy90ZW5hbnQtbWFuYWdlbWVudC5hY3Rpb25zJztcbmltcG9ydCB7IFRlbmFudE1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGVuYW50LW1hbmFnZW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBUZW5hbnRNYW5hZ2VtZW50U3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZXMvdGVuYW50LW1hbmFnZW1lbnQuc3RhdGUnO1xuXG50eXBlIFNlbGVjdGVkTW9kYWxDb250ZW50ID0ge1xuICB0eXBlOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWJwLXRlbmFudHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGVuYW50cy5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFRlbmFudHNDb21wb25lbnQge1xuICBAU2VsZWN0KFRlbmFudE1hbmFnZW1lbnRTdGF0ZS5nZXQpXG4gIGRhdGFzJDogT2JzZXJ2YWJsZTxBQlAuQmFzaWNJdGVtW10+O1xuXG4gIHNlbGVjdGVkOiBBQlAuQmFzaWNJdGVtO1xuXG4gIHRlbmFudEZvcm06IEZvcm1Hcm91cDtcblxuICBkZWZhdWx0Q29ubmVjdGlvblN0cmluZ0Zvcm06IEZvcm1Hcm91cDtcblxuICBkZWZhdWx0Q29ubmVjdGlvblN0cmluZzogc3RyaW5nO1xuXG4gIGlzTW9kYWxWaXNpYmxlOiBib29sZWFuO1xuXG4gIHNlbGVjdGVkTW9kYWxDb250ZW50ID0ge30gYXMgU2VsZWN0ZWRNb2RhbENvbnRlbnQ7XG5cbiAgX3VzZVNoYXJlZERhdGFiYXNlOiBib29sZWFuO1xuXG4gIGdldCB1c2VTaGFyZWREYXRhYmFzZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0Q29ubmVjdGlvblN0cmluZ0Zvcm0uZ2V0KCd1c2VTaGFyZWREYXRhYmFzZScpLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGNvbm5lY3Rpb25TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0Q29ubmVjdGlvblN0cmluZ0Zvcm0uZ2V0KCdkZWZhdWx0Q29ubmVjdGlvblN0cmluZycpLnZhbHVlO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgndGVuYW50TW9kYWxUZW1wbGF0ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICB0ZW5hbnRNb2RhbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ2Nvbm5lY3Rpb25TdHJpbmdNb2RhbFRlbXBsYXRlJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGNvbm5lY3Rpb25TdHJpbmdNb2RhbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ2ZlYXR1cmVzTW9kYWxUZW1wbGF0ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBmZWF0dXJlc01vZGFsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdGVuYW50U2VydmljZTogVGVuYW50TWFuYWdlbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICkge31cblxuICBwcml2YXRlIGNyZWF0ZVRlbmFudEZvcm0oKSB7XG4gICAgdGhpcy50ZW5hbnRGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBuYW1lOiBbdGhpcy5zZWxlY3RlZC5uYW1lIHx8ICcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV1dLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0Q29ubmVjdGlvblN0cmluZ0Zvcm0oKSB7XG4gICAgdGhpcy5kZWZhdWx0Q29ubmVjdGlvblN0cmluZ0Zvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIHVzZVNoYXJlZERhdGFiYXNlOiB0aGlzLl91c2VTaGFyZWREYXRhYmFzZSxcbiAgICAgIGRlZmF1bHRDb25uZWN0aW9uU3RyaW5nOiB0aGlzLmRlZmF1bHRDb25uZWN0aW9uU3RyaW5nIHx8ICcnLFxuICAgIH0pO1xuICB9XG5cbiAgb3Blbk1vZGFsKHRpdGxlOiBzdHJpbmcsIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+LCB0eXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkTW9kYWxDb250ZW50ID0ge1xuICAgICAgdGl0bGUsXG4gICAgICB0ZW1wbGF0ZSxcbiAgICAgIHR5cGUsXG4gICAgfTtcblxuICAgIHRoaXMuaXNNb2RhbFZpc2libGUgPSB0cnVlO1xuICB9XG5cbiAgb25FZGl0Q29ubmVjdGlvblN0cmluZyhpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZVxuICAgICAgLmRpc3BhdGNoKG5ldyBUZW5hbnRNYW5hZ2VtZW50R2V0QnlJZChpZCkpXG4gICAgICAucGlwZShcbiAgICAgICAgcGx1Y2soJ1RlbmFudE1hbmFnZW1lbnRTdGF0ZScsICdzZWxlY3RlZEl0ZW0nKSxcbiAgICAgICAgc3dpdGNoTWFwKHNlbGVjdGVkID0+IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudGVuYW50U2VydmljZS5nZXREZWZhdWx0Q29ubmVjdGlvblN0cmluZyhpZCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShmZXRjaGVkQ29ubmVjdGlvblN0cmluZyA9PiB7XG4gICAgICAgIHRoaXMuX3VzZVNoYXJlZERhdGFiYXNlID0gZmV0Y2hlZENvbm5lY3Rpb25TdHJpbmcgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgIHRoaXMuZGVmYXVsdENvbm5lY3Rpb25TdHJpbmcgPSBmZXRjaGVkQ29ubmVjdGlvblN0cmluZyA/IGZldGNoZWRDb25uZWN0aW9uU3RyaW5nIDogJyc7XG4gICAgICAgIHRoaXMuY3JlYXRlRGVmYXVsdENvbm5lY3Rpb25TdHJpbmdGb3JtKCk7XG4gICAgICAgIHRoaXMub3Blbk1vZGFsKCdBYnBUZW5hbnRNYW5hZ2VtZW50OjpDb25uZWN0aW9uU3RyaW5ncycsIHRoaXMuY29ubmVjdGlvblN0cmluZ01vZGFsVGVtcGxhdGUsICdzYXZlQ29ublN0cicpO1xuICAgICAgfSk7XG4gIH1cblxuICBvbk1hbmFnZUZlYXR1cmVzKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9wZW5Nb2RhbCgnQWJwVGVuYW50TWFuYWdlbWVudDo6RmVhdHVyZXMnLCB0aGlzLmZlYXR1cmVzTW9kYWxUZW1wbGF0ZSwgJ3NhdmVGZWF0dXJlcycpO1xuICB9XG5cbiAgb25BZGRUZW5hbnQoKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHt9IGFzIEFCUC5CYXNpY0l0ZW07XG4gICAgdGhpcy5jcmVhdGVUZW5hbnRGb3JtKCk7XG4gICAgdGhpcy5vcGVuTW9kYWwoJ0FicFRlbmFudE1hbmFnZW1lbnQ6Ok5ld1RlbmFudCcsIHRoaXMudGVuYW50TW9kYWxUZW1wbGF0ZSwgJ3NhdmVUZW5hbnQnKTtcbiAgfVxuXG4gIG9uRWRpdFRlbmFudChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZVxuICAgICAgLmRpc3BhdGNoKG5ldyBUZW5hbnRNYW5hZ2VtZW50R2V0QnlJZChpZCkpXG4gICAgICAucGlwZShwbHVjaygnVGVuYW50TWFuYWdlbWVudFN0YXRlJywgJ3NlbGVjdGVkSXRlbScpKVxuICAgICAgLnN1YnNjcmliZShzZWxlY3RlZCA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRGb3JtKCk7XG4gICAgICAgIHRoaXMub3Blbk1vZGFsKCdBYnBUZW5hbnRNYW5hZ2VtZW50OjpFZGl0JywgdGhpcy50ZW5hbnRNb2RhbFRlbXBsYXRlLCAnc2F2ZVRlbmFudCcpO1xuICAgICAgfSk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIGNvbnN0IHsgdHlwZSB9ID0gdGhpcy5zZWxlY3RlZE1vZGFsQ29udGVudDtcbiAgICBpZiAoIXR5cGUpIHJldHVybjtcbiAgICBpZiAodHlwZSA9PT0gJ3NhdmVUZW5hbnQnKSB0aGlzLnNhdmVUZW5hbnQoKTtcbiAgICBlbHNlIGlmICh0eXBlID09PSAnc2F2ZUNvbm5TdHInKSB0aGlzLnNhdmVDb25uZWN0aW9uU3RyaW5nKCk7XG4gIH1cblxuICBzYXZlQ29ubmVjdGlvblN0cmluZygpIHtcbiAgICBpZiAodGhpcy51c2VTaGFyZWREYXRhYmFzZSkge1xuICAgICAgdGhpcy50ZW5hbnRTZXJ2aWNlXG4gICAgICAgIC5kZWxldGVEZWZhdWx0Q29ubmVjdGlvblN0cmluZyh0aGlzLnNlbGVjdGVkLmlkKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRlbmFudFNlcnZpY2VcbiAgICAgICAgLnVwZGF0ZURlZmF1bHRDb25uZWN0aW9uU3RyaW5nKHsgaWQ6IHRoaXMuc2VsZWN0ZWQuaWQsIGRlZmF1bHRDb25uZWN0aW9uU3RyaW5nOiB0aGlzLmNvbm5lY3Rpb25TdHJpbmcgfSlcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc01vZGFsVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzYXZlVGVuYW50KCkge1xuICAgIGlmICghdGhpcy50ZW5hbnRGb3JtLnZhbGlkKSByZXR1cm47XG5cbiAgICB0aGlzLnN0b3JlXG4gICAgICAuZGlzcGF0Y2goXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuaWRcbiAgICAgICAgICA/IG5ldyBUZW5hbnRNYW5hZ2VtZW50VXBkYXRlKHsgLi4udGhpcy50ZW5hbnRGb3JtLnZhbHVlLCBpZDogdGhpcy5zZWxlY3RlZC5pZCB9KVxuICAgICAgICAgIDogbmV3IFRlbmFudE1hbmFnZW1lbnRBZGQodGhpcy50ZW5hbnRGb3JtLnZhbHVlKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gICAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZShpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2VcbiAgICAgIC53YXJuKCdBYnBUZW5hbnRNYW5hZ2VtZW50OjpUZW5hbnREZWxldGlvbkNvbmZpcm1hdGlvbk1lc3NhZ2UnLCAnQWJwVGVuYW50TWFuYWdlbWVudDo6QXJlWW91U3VyZScsIHtcbiAgICAgICAgbWVzc2FnZUxvY2FsaXphdGlvblBhcmFtczogW25hbWVdLFxuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogVG9hc3Rlci5TdGF0dXMpID0+IHtcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gVG9hc3Rlci5TdGF0dXMuY29uZmlybSkge1xuICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFRlbmFudE1hbmFnZW1lbnREZWxldGUoaWQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/lib/constants/index.js b/npm/ng-packs/dist/tenant-management/esm2015/lib/constants/index.js new file mode 100644 index 00000000000..fd626022663 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/lib/constants/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { TENANT_MANAGEMENT_ROUTES } from './routes'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2NvbnN0YW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEseUNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yb3V0ZXMnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/lib/constants/routes.js b/npm/ng-packs/dist/tenant-management/esm2015/lib/constants/routes.js new file mode 100644 index 00000000000..14bb8c65522 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/lib/constants/routes.js @@ -0,0 +1,22 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +export const TENANT_MANAGEMENT_ROUTES = (/** @type {?} */ ([ + { + name: 'Tenant Management', + path: 'tenant-management', + parentName: 'Administration', + layout: "application" /* application */, + children: [ + { + path: 'tenants', + name: 'Tenants', + order: 1, + requiredPolicy: 'AbpTenantManagement.Tenants', + }, + ], + }, +])); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50ZW5hbnQtbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9jb25zdGFudHMvcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsTUFBTSxPQUFPLHdCQUF3QixHQUFHLG1CQUFBO0lBQ3RDO1FBQ0UsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFVBQVUsRUFBRSxnQkFBZ0I7UUFDNUIsTUFBTSxpQ0FBeUI7UUFDL0IsUUFBUSxFQUFFO1lBQ1I7Z0JBQ0UsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsY0FBYyxFQUFFLDZCQUE2QjthQUM5QztTQUNGO0tBQ0Y7Q0FDRixFQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCwgZUxheW91dFR5cGUgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuXG5leHBvcnQgY29uc3QgVEVOQU5UX01BTkFHRU1FTlRfUk9VVEVTID0gW1xuICB7XG4gICAgbmFtZTogJ1RlbmFudCBNYW5hZ2VtZW50JyxcbiAgICBwYXRoOiAndGVuYW50LW1hbmFnZW1lbnQnLFxuICAgIHBhcmVudE5hbWU6ICdBZG1pbmlzdHJhdGlvbicsXG4gICAgbGF5b3V0OiBlTGF5b3V0VHlwZS5hcHBsaWNhdGlvbixcbiAgICBjaGlsZHJlbjogW1xuICAgICAge1xuICAgICAgICBwYXRoOiAndGVuYW50cycsXG4gICAgICAgIG5hbWU6ICdUZW5hbnRzJyxcbiAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgIHJlcXVpcmVkUG9saWN5OiAnQWJwVGVuYW50TWFuYWdlbWVudC5UZW5hbnRzJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbl0gYXMgQUJQLkZ1bGxSb3V0ZVtdO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/lib/models/index.js b/npm/ng-packs/dist/tenant-management/esm2015/lib/models/index.js new file mode 100644 index 00000000000..e018898bb1d --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/lib/models/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export {} from './tenant-management'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsZUFBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGVuYW50LW1hbmFnZW1lbnQnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/lib/models/tenant-management.js b/npm/ng-packs/dist/tenant-management/esm2015/lib/models/tenant-management.js new file mode 100644 index 00000000000..ad6e89c9e35 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/lib/models/tenant-management.js @@ -0,0 +1,59 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var TenantManagement; +(function (TenantManagement) { + /** + * @record + */ + function State() { } + TenantManagement.State = State; + if (false) { + /** @type {?} */ + State.prototype.result; + /** @type {?} */ + State.prototype.selectedItem; + } + /** + * @record + */ + function Item() { } + TenantManagement.Item = Item; + if (false) { + /** @type {?} */ + Item.prototype.id; + /** @type {?} */ + Item.prototype.name; + } + /** + * @record + */ + function AddRequest() { } + TenantManagement.AddRequest = AddRequest; + if (false) { + /** @type {?} */ + AddRequest.prototype.name; + } + /** + * @record + */ + function UpdateRequest() { } + TenantManagement.UpdateRequest = UpdateRequest; + if (false) { + /** @type {?} */ + UpdateRequest.prototype.id; + } + /** + * @record + */ + function DefaultConnectionStringRequest() { } + TenantManagement.DefaultConnectionStringRequest = DefaultConnectionStringRequest; + if (false) { + /** @type {?} */ + DefaultConnectionStringRequest.prototype.id; + /** @type {?} */ + DefaultConnectionStringRequest.prototype.defaultConnectionString; + } +})(TenantManagement || (TenantManagement = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LW1hbmFnZW1lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL21vZGVscy90ZW5hbnQtbWFuYWdlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsTUFBTSxLQUFXLGdCQUFnQixDQXlCaEM7QUF6QkQsV0FBaUIsZ0JBQWdCOzs7O0lBQy9CLG9CQUdDOzs7O1FBRkMsdUJBQWlCOztRQUNqQiw2QkFBbUI7Ozs7O0lBS3JCLG1CQUdDOzs7O1FBRkMsa0JBQVc7O1FBQ1gsb0JBQWE7Ozs7O0lBR2YseUJBRUM7Ozs7UUFEQywwQkFBYTs7Ozs7SUFHZiw0QkFFQzs7OztRQURDLDJCQUFXOzs7OztJQUdiLDZDQUdDOzs7O1FBRkMsNENBQVc7O1FBQ1gsaUVBQWdDOztBQUVwQyxDQUFDLEVBekJnQixnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBeUJoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgVGVuYW50TWFuYWdlbWVudCB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgU3RhdGUge1xuICAgIHJlc3VsdDogUmVzcG9uc2U7XG4gICAgc2VsZWN0ZWRJdGVtOiBJdGVtO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUmVzcG9uc2UgPSBBQlAuUGFnZWRSZXNwb25zZTxJdGVtPjtcblxuICBleHBvcnQgaW50ZXJmYWNlIEl0ZW0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBBZGRSZXF1ZXN0IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVJlcXVlc3QgZXh0ZW5kcyBBZGRSZXF1ZXN0IHtcbiAgICBpZDogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBEZWZhdWx0Q29ubmVjdGlvblN0cmluZ1JlcXVlc3Qge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZGVmYXVsdENvbm5lY3Rpb25TdHJpbmc6IHN0cmluZztcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/lib/resolvers/index.js b/npm/ng-packs/dist/tenant-management/esm2015/lib/resolvers/index.js new file mode 100644 index 00000000000..2dc325d54ea --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/lib/resolvers/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { TenantsResolver } from './tenants.resolver'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL3Jlc29sdmVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsZ0NBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RlbmFudHMucmVzb2x2ZXInO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/lib/resolvers/tenants.resolver.js b/npm/ng-packs/dist/tenant-management/esm2015/lib/resolvers/tenants.resolver.js new file mode 100644 index 00000000000..d3b8bc953c8 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/lib/resolvers/tenants.resolver.js @@ -0,0 +1,41 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { TenantManagementGet } from '../actions/tenant-management.actions'; +import { TenantManagementState } from '../states/tenant-management.state'; +export class TenantsResolver { + /** + * @param {?} store + */ + constructor(store) { + this.store = store; + } + /** + * @return {?} + */ + resolve() { + /** @type {?} */ + const data = this.store.selectSnapshot(TenantManagementState.get); + return data && data.length + ? null + : this.store.dispatch(new TenantManagementGet()); + } +} +TenantsResolver.decorators = [ + { type: Injectable } +]; +/** @nocollapse */ +TenantsResolver.ctorParameters = () => [ + { type: Store } +]; +if (false) { + /** + * @type {?} + * @private + */ + TenantsResolver.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50cy5yZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGVuYW50LW1hbmFnZW1lbnQvIiwic291cmNlcyI6WyJsaWIvcmVzb2x2ZXJzL3RlbmFudHMucmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUcxRSxNQUFNLE9BQU8sZUFBZTs7OztJQUMxQixZQUFvQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztJQUFHLENBQUM7Ozs7SUFFcEMsT0FBTzs7Y0FDQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQ3pCLENBQUMsQ0FBQyxJQUFJO1lBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7OztZQVRGLFVBQVU7Ozs7WUFMRixLQUFLOzs7Ozs7O0lBT0EsZ0NBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzb2x2ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IFRlbmFudE1hbmFnZW1lbnRHZXQgfSBmcm9tICcuLi9hY3Rpb25zL3RlbmFudC1tYW5hZ2VtZW50LmFjdGlvbnMnO1xuaW1wb3J0IHsgVGVuYW50TWFuYWdlbWVudCB9IGZyb20gJy4uL21vZGVscy90ZW5hbnQtbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBUZW5hbnRNYW5hZ2VtZW50U3RhdGUgfSBmcm9tICcuLi9zdGF0ZXMvdGVuYW50LW1hbmFnZW1lbnQuc3RhdGUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGVuYW50c1Jlc29sdmVyIGltcGxlbWVudHMgUmVzb2x2ZTxUZW5hbnRNYW5hZ2VtZW50LlN0YXRlPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIHJlc29sdmUoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoVGVuYW50TWFuYWdlbWVudFN0YXRlLmdldCk7XG4gICAgcmV0dXJuIGRhdGEgJiYgZGF0YS5sZW5ndGhcbiAgICAgPyBudWxsIFxuICAgICA6IHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFRlbmFudE1hbmFnZW1lbnRHZXQoKSk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/lib/services/index.js b/npm/ng-packs/dist/tenant-management/esm2015/lib/services/index.js new file mode 100644 index 00000000000..1848d841856 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/lib/services/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { TenantManagementService } from './tenant-management.service'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSx3Q0FBYyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGVuYW50LW1hbmFnZW1lbnQuc2VydmljZSc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/lib/services/tenant-management.service.js b/npm/ng-packs/dist/tenant-management/esm2015/lib/services/tenant-management.service.js new file mode 100644 index 00000000000..22e2080414b --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/lib/services/tenant-management.service.js @@ -0,0 +1,142 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { RestService } from '@abp/ng.core'; +import * as i0 from "@angular/core"; +import * as i1 from "@abp/ng.core"; +export class TenantManagementService { + /** + * @param {?} rest + */ + constructor(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + get() { + /** @type {?} */ + const request = { + method: 'GET', + url: '/api/multi-tenancy/tenants', + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + getById(id) { + /** @type {?} */ + const request = { + method: 'GET', + url: `/api/multi-tenancy/tenants/${id}`, + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + delete(id) { + /** @type {?} */ + const request = { + method: 'DELETE', + url: `/api/multi-tenancy/tenants/${id}`, + }; + return this.rest.request(request); + } + /** + * @param {?} body + * @return {?} + */ + add(body) { + /** @type {?} */ + const request = { + method: 'POST', + url: `/api/multi-tenancy/tenants`, + body, + }; + return this.rest.request(request); + } + /** + * @param {?} body + * @return {?} + */ + update(body) { + /** @type {?} */ + const url = `/api/multi-tenancy/tenants/${body.id}`; + delete body.id; + /** @type {?} */ + const request = { + method: 'PUT', + url, + body, + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + getDefaultConnectionString(id) { + /** @type {?} */ + const url = `/api/multi-tenancy/tenants/${id}/defaultConnectionString`; + /** @type {?} */ + const request = { + method: 'GET', + responseType: "text" /* Text */, + url, + }; + return this.rest.request(request); + } + /** + * @param {?} payload + * @return {?} + */ + updateDefaultConnectionString(payload) { + /** @type {?} */ + const url = `/api/multi-tenancy/tenants/${payload.id}/defaultConnectionString`; + /** @type {?} */ + const request = { + method: 'PUT', + url, + params: { defaultConnectionString: payload.defaultConnectionString }, + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + deleteDefaultConnectionString(id) { + /** @type {?} */ + const url = `/api/multi-tenancy/tenant/${id}/defaultConnectionString`; + /** @type {?} */ + const request = { + method: 'DELETE', + url, + }; + return this.rest.request(request); + } +} +TenantManagementService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +TenantManagementService.ctorParameters = () => [ + { type: RestService } +]; +/** @nocollapse */ TenantManagementService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function TenantManagementService_Factory() { return new TenantManagementService(i0.ɵɵinject(i1.RestService)); }, token: TenantManagementService, providedIn: "root" }); +if (false) { + /** + * @type {?} + * @private + */ + TenantManagementService.prototype.rest; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LW1hbmFnZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGVuYW50LW1hbmFnZW1lbnQvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvdGVuYW50LW1hbmFnZW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsV0FBVyxFQUFhLE1BQU0sY0FBYyxDQUFDOzs7QUFNdEQsTUFBTSxPQUFPLHVCQUF1Qjs7OztJQUNsQyxZQUFvQixJQUFpQjtRQUFqQixTQUFJLEdBQUosSUFBSSxDQUFhO0lBQUcsQ0FBQzs7OztJQUV6QyxHQUFHOztjQUNLLE9BQU8sR0FBdUI7WUFDbEMsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEVBQUUsNEJBQTRCO1NBQ2xDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBa0MsT0FBTyxDQUFDLENBQUM7SUFDckUsQ0FBQzs7Ozs7SUFFRCxPQUFPLENBQUMsRUFBVTs7Y0FDVixPQUFPLEdBQXVCO1lBQ2xDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxFQUFFLDhCQUE4QixFQUFFLEVBQUU7U0FDeEM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFzQixPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDOzs7OztJQUVELE1BQU0sQ0FBQyxFQUFVOztjQUNULE9BQU8sR0FBdUI7WUFDbEMsTUFBTSxFQUFFLFFBQVE7WUFDaEIsR0FBRyxFQUFFLDhCQUE4QixFQUFFLEVBQUU7U0FDeEM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFhLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7Ozs7O0lBRUQsR0FBRyxDQUFDLElBQWlDOztjQUM3QixPQUFPLEdBQThDO1lBQ3pELE1BQU0sRUFBRSxNQUFNO1lBQ2QsR0FBRyxFQUFFLDRCQUE0QjtZQUNqQyxJQUFJO1NBQ0w7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUE2QyxPQUFPLENBQUMsQ0FBQztJQUNoRixDQUFDOzs7OztJQUVELE1BQU0sQ0FBQyxJQUFvQzs7Y0FDbkMsR0FBRyxHQUFHLDhCQUE4QixJQUFJLENBQUMsRUFBRSxFQUFFO1FBQ25ELE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQzs7Y0FFVCxPQUFPLEdBQWlEO1lBQzVELE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRztZQUNILElBQUk7U0FDTDtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQTZDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hGLENBQUM7Ozs7O0lBRUQsMEJBQTBCLENBQUMsRUFBVTs7Y0FDN0IsR0FBRyxHQUFHLDhCQUE4QixFQUFFLDBCQUEwQjs7Y0FFaEUsT0FBTyxHQUFrRTtZQUM3RSxNQUFNLEVBQUUsS0FBSztZQUNiLFlBQVksbUJBQXdCO1lBQ3BDLEdBQUc7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQTBELE9BQU8sQ0FBQyxDQUFDO0lBQzdGLENBQUM7Ozs7O0lBRUQsNkJBQTZCLENBQUMsT0FBd0Q7O2NBQzlFLEdBQUcsR0FBRyw4QkFBOEIsT0FBTyxDQUFDLEVBQUUsMEJBQTBCOztjQUV4RSxPQUFPLEdBQWtFO1lBQzdFLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRztZQUNILE1BQU0sRUFBRSxFQUFFLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRTtTQUNyRTtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQXVELE9BQU8sQ0FBQyxDQUFDO0lBQzFGLENBQUM7Ozs7O0lBRUQsNkJBQTZCLENBQUMsRUFBVTs7Y0FDaEMsR0FBRyxHQUFHLDZCQUE2QixFQUFFLDBCQUEwQjs7Y0FFL0QsT0FBTyxHQUFrRTtZQUM3RSxNQUFNLEVBQUUsUUFBUTtZQUNoQixHQUFHO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUF1RCxPQUFPLENBQUMsQ0FBQztJQUMxRixDQUFDOzs7WUF0RkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBTFEsV0FBVzs7Ozs7Ozs7SUFPTix1Q0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXN0U2VydmljZSwgUmVzdCwgQUJQIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IFRlbmFudE1hbmFnZW1lbnQgfSBmcm9tICcuLi9tb2RlbHMvdGVuYW50LW1hbmFnZW1lbnQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVGVuYW50TWFuYWdlbWVudFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3Q6IFJlc3RTZXJ2aWNlKSB7fVxuXG4gIGdldCgpOiBPYnNlcnZhYmxlPFRlbmFudE1hbmFnZW1lbnQuUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8bnVsbD4gPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgdXJsOiAnL2FwaS9tdWx0aS10ZW5hbmN5L3RlbmFudHMnLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5yZXN0LnJlcXVlc3Q8bnVsbCwgVGVuYW50TWFuYWdlbWVudC5SZXNwb25zZT4ocmVxdWVzdCk7XG4gIH1cblxuICBnZXRCeUlkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFCUC5CYXNpY0l0ZW0+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8bnVsbD4gPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgdXJsOiBgL2FwaS9tdWx0aS10ZW5hbmN5L3RlbmFudHMvJHtpZH1gLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5yZXN0LnJlcXVlc3Q8bnVsbCwgQUJQLkJhc2ljSXRlbT4ocmVxdWVzdCk7XG4gIH1cblxuICBkZWxldGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlc3QuUmVxdWVzdDxudWxsPiA9IHtcbiAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICB1cmw6IGAvYXBpL211bHRpLXRlbmFuY3kvdGVuYW50cy8ke2lkfWAsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDxudWxsLCBudWxsPihyZXF1ZXN0KTtcbiAgfVxuXG4gIGFkZChib2R5OiBUZW5hbnRNYW5hZ2VtZW50LkFkZFJlcXVlc3QpOiBPYnNlcnZhYmxlPEFCUC5CYXNpY0l0ZW0+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8VGVuYW50TWFuYWdlbWVudC5BZGRSZXF1ZXN0PiA9IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgdXJsOiBgL2FwaS9tdWx0aS10ZW5hbmN5L3RlbmFudHNgLFxuICAgICAgYm9keSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PFRlbmFudE1hbmFnZW1lbnQuQWRkUmVxdWVzdCwgQUJQLkJhc2ljSXRlbT4ocmVxdWVzdCk7XG4gIH1cblxuICB1cGRhdGUoYm9keTogVGVuYW50TWFuYWdlbWVudC5VcGRhdGVSZXF1ZXN0KTogT2JzZXJ2YWJsZTxBQlAuQmFzaWNJdGVtPiB7XG4gICAgY29uc3QgdXJsID0gYC9hcGkvbXVsdGktdGVuYW5jeS90ZW5hbnRzLyR7Ym9keS5pZH1gO1xuICAgIGRlbGV0ZSBib2R5LmlkO1xuXG4gICAgY29uc3QgcmVxdWVzdDogUmVzdC5SZXF1ZXN0PFRlbmFudE1hbmFnZW1lbnQuVXBkYXRlUmVxdWVzdD4gPSB7XG4gICAgICBtZXRob2Q6ICdQVVQnLFxuICAgICAgdXJsLFxuICAgICAgYm9keSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PFRlbmFudE1hbmFnZW1lbnQuQWRkUmVxdWVzdCwgQUJQLkJhc2ljSXRlbT4ocmVxdWVzdCk7XG4gIH1cblxuICBnZXREZWZhdWx0Q29ubmVjdGlvblN0cmluZyhpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBjb25zdCB1cmwgPSBgL2FwaS9tdWx0aS10ZW5hbmN5L3RlbmFudHMvJHtpZH0vZGVmYXVsdENvbm5lY3Rpb25TdHJpbmdgO1xuXG4gICAgY29uc3QgcmVxdWVzdDogUmVzdC5SZXF1ZXN0PFRlbmFudE1hbmFnZW1lbnQuRGVmYXVsdENvbm5lY3Rpb25TdHJpbmdSZXF1ZXN0PiA9IHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICByZXNwb25zZVR5cGU6IFJlc3QuUmVzcG9uc2VUeXBlLlRleHQsXG4gICAgICB1cmwsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5yZXN0LnJlcXVlc3Q8VGVuYW50TWFuYWdlbWVudC5EZWZhdWx0Q29ubmVjdGlvblN0cmluZ1JlcXVlc3QsIHN0cmluZz4ocmVxdWVzdCk7XG4gIH1cblxuICB1cGRhdGVEZWZhdWx0Q29ubmVjdGlvblN0cmluZyhwYXlsb2FkOiBUZW5hbnRNYW5hZ2VtZW50LkRlZmF1bHRDb25uZWN0aW9uU3RyaW5nUmVxdWVzdCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYC9hcGkvbXVsdGktdGVuYW5jeS90ZW5hbnRzLyR7cGF5bG9hZC5pZH0vZGVmYXVsdENvbm5lY3Rpb25TdHJpbmdgO1xuXG4gICAgY29uc3QgcmVxdWVzdDogUmVzdC5SZXF1ZXN0PFRlbmFudE1hbmFnZW1lbnQuRGVmYXVsdENvbm5lY3Rpb25TdHJpbmdSZXF1ZXN0PiA9IHtcbiAgICAgIG1ldGhvZDogJ1BVVCcsXG4gICAgICB1cmwsXG4gICAgICBwYXJhbXM6IHsgZGVmYXVsdENvbm5lY3Rpb25TdHJpbmc6IHBheWxvYWQuZGVmYXVsdENvbm5lY3Rpb25TdHJpbmcgfSxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDxUZW5hbnRNYW5hZ2VtZW50LkRlZmF1bHRDb25uZWN0aW9uU3RyaW5nUmVxdWVzdCwgYW55PihyZXF1ZXN0KTtcbiAgfVxuXG4gIGRlbGV0ZURlZmF1bHRDb25uZWN0aW9uU3RyaW5nKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGNvbnN0IHVybCA9IGAvYXBpL211bHRpLXRlbmFuY3kvdGVuYW50LyR7aWR9L2RlZmF1bHRDb25uZWN0aW9uU3RyaW5nYDtcblxuICAgIGNvbnN0IHJlcXVlc3Q6IFJlc3QuUmVxdWVzdDxUZW5hbnRNYW5hZ2VtZW50LkRlZmF1bHRDb25uZWN0aW9uU3RyaW5nUmVxdWVzdD4gPSB7XG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgdXJsLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PFRlbmFudE1hbmFnZW1lbnQuRGVmYXVsdENvbm5lY3Rpb25TdHJpbmdSZXF1ZXN0LCBhbnk+KHJlcXVlc3QpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/lib/states/index.js b/npm/ng-packs/dist/tenant-management/esm2015/lib/states/index.js new file mode 100644 index 00000000000..009910139bf --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/lib/states/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { TenantManagementState } from './tenant-management.state'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL3N0YXRlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsc0NBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RlbmFudC1tYW5hZ2VtZW50LnN0YXRlJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/lib/states/tenant-management.state.js b/npm/ng-packs/dist/tenant-management/esm2015/lib/states/tenant-management.state.js new file mode 100644 index 00000000000..7c706167fa0 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/lib/states/tenant-management.state.js @@ -0,0 +1,139 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Action, Selector, State } from '@ngxs/store'; +import { switchMap, tap } from 'rxjs/operators'; +import { TenantManagementAdd, TenantManagementDelete, TenantManagementGet, TenantManagementGetById, TenantManagementUpdate, } from '../actions/tenant-management.actions'; +import { TenantManagementService } from '../services/tenant-management.service'; +let TenantManagementState = class TenantManagementState { + /** + * @param {?} tenantManagementService + */ + constructor(tenantManagementService) { + this.tenantManagementService = tenantManagementService; + } + /** + * @param {?} __0 + * @return {?} + */ + static get({ result }) { + return result.items || []; + } + /** + * @param {?} __0 + * @return {?} + */ + get({ patchState }) { + return this.tenantManagementService.get().pipe(tap((/** + * @param {?} result + * @return {?} + */ + result => patchState({ + result, + })))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + getById({ patchState }, { payload }) { + return this.tenantManagementService.getById(payload).pipe(tap((/** + * @param {?} selectedItem + * @return {?} + */ + selectedItem => patchState({ + selectedItem, + })))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + delete({ dispatch }, { payload }) { + return this.tenantManagementService.delete(payload).pipe(switchMap((/** + * @return {?} + */ + () => dispatch(new TenantManagementGet())))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + add({ dispatch }, { payload }) { + return this.tenantManagementService.add(payload).pipe(switchMap((/** + * @return {?} + */ + () => dispatch(new TenantManagementGet())))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + update({ dispatch, getState }, { payload }) { + return dispatch(new TenantManagementGetById(payload.id)).pipe(switchMap((/** + * @return {?} + */ + () => this.tenantManagementService.update(Object.assign({}, getState().selectedItem, payload)))), switchMap((/** + * @return {?} + */ + () => dispatch(new TenantManagementGet())))); + } +}; +tslib_1.__decorate([ + Action(TenantManagementGet), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", void 0) +], TenantManagementState.prototype, "get", null); +tslib_1.__decorate([ + Action(TenantManagementGetById), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, TenantManagementGetById]), + tslib_1.__metadata("design:returntype", void 0) +], TenantManagementState.prototype, "getById", null); +tslib_1.__decorate([ + Action(TenantManagementDelete), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, TenantManagementDelete]), + tslib_1.__metadata("design:returntype", void 0) +], TenantManagementState.prototype, "delete", null); +tslib_1.__decorate([ + Action(TenantManagementAdd), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, TenantManagementAdd]), + tslib_1.__metadata("design:returntype", void 0) +], TenantManagementState.prototype, "add", null); +tslib_1.__decorate([ + Action(TenantManagementUpdate), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, TenantManagementUpdate]), + tslib_1.__metadata("design:returntype", void 0) +], TenantManagementState.prototype, "update", null); +tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", Array) +], TenantManagementState, "get", null); +TenantManagementState = tslib_1.__decorate([ + State({ + name: 'TenantManagementState', + defaults: (/** @type {?} */ ({ result: {}, selectedItem: {} })), + }), + tslib_1.__metadata("design:paramtypes", [TenantManagementService]) +], TenantManagementState); +export { TenantManagementState }; +if (false) { + /** + * @type {?} + * @private + */ + TenantManagementState.prototype.tenantManagementService; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LW1hbmFnZW1lbnQuc3RhdGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL3N0YXRlcy90ZW5hbnQtbWFuYWdlbWVudC5zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBZ0IsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixHQUN2QixNQUFNLHNDQUFzQyxDQUFDO0FBRTlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0lBT25FLHFCQUFxQixTQUFyQixxQkFBcUI7Ozs7SUFNaEMsWUFBb0IsdUJBQWdEO1FBQWhELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7SUFBRyxDQUFDOzs7OztJQUp4RSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUEwQjtRQUMzQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7Ozs7O0lBS0QsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUF3QztRQUN0RCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQzVDLEdBQUc7Ozs7UUFBQyxNQUFNLENBQUMsRUFBRSxDQUNYLFVBQVUsQ0FBQztZQUNULE1BQU07U0FDUCxDQUFDLEVBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7Ozs7O0lBR0QsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUF3QyxFQUFFLEVBQUUsT0FBTyxFQUEyQjtRQUNoRyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUN2RCxHQUFHOzs7O1FBQUMsWUFBWSxDQUFDLEVBQUUsQ0FDakIsVUFBVSxDQUFDO1lBQ1QsWUFBWTtTQUNiLENBQUMsRUFDSCxDQUNGLENBQUM7SUFDSixDQUFDOzs7Ozs7SUFHRCxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQXdDLEVBQUUsRUFBRSxPQUFPLEVBQTBCO1FBQzVGLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUzs7O1FBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksbUJBQW1CLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztJQUNqSCxDQUFDOzs7Ozs7SUFHRCxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQXdDLEVBQUUsRUFBRSxPQUFPLEVBQXVCO1FBQ3RGLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUzs7O1FBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksbUJBQW1CLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztJQUM5RyxDQUFDOzs7Ozs7SUFHRCxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUF3QyxFQUFFLEVBQUUsT0FBTyxFQUEwQjtRQUN0RyxPQUFPLFFBQVEsQ0FBQyxJQUFJLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDM0QsU0FBUzs7O1FBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sbUJBQU0sUUFBUSxFQUFFLENBQUMsWUFBWSxFQUFLLE9BQU8sRUFBRyxFQUFDLEVBQ2hHLFNBQVM7OztRQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLG1CQUFtQixFQUFFLENBQUMsRUFBQyxDQUNyRCxDQUFDO0lBQ0osQ0FBQztDQUNGLENBQUE7QUF0Q0M7SUFEQyxNQUFNLENBQUMsbUJBQW1CLENBQUM7Ozs7Z0RBUzNCO0FBR0Q7SUFEQyxNQUFNLENBQUMsdUJBQXVCLENBQUM7O3FEQUMyQyx1QkFBdUI7O29EQVFqRztBQUdEO0lBREMsTUFBTSxDQUFDLHNCQUFzQixDQUFDOztxREFDeUMsc0JBQXNCOzttREFFN0Y7QUFHRDtJQURDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQzs7cURBQ3lDLG1CQUFtQjs7Z0RBRXZGO0FBR0Q7SUFEQyxNQUFNLENBQUMsc0JBQXNCLENBQUM7O3FEQUNtRCxzQkFBc0I7O21EQUt2RztBQTVDRDtJQURDLFFBQVEsRUFBRTs7OztzQ0FHVjtBQUpVLHFCQUFxQjtJQUpqQyxLQUFLLENBQXlCO1FBQzdCLElBQUksRUFBRSx1QkFBdUI7UUFDN0IsUUFBUSxFQUFFLG1CQUFBLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLEVBQTBCO0tBQ3JFLENBQUM7NkNBTzZDLHVCQUF1QjtHQU56RCxxQkFBcUIsQ0ErQ2pDO1NBL0NZLHFCQUFxQjs7Ozs7O0lBTXBCLHdEQUF3RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiwgU2VsZWN0b3IsIFN0YXRlLCBTdGF0ZUNvbnRleHQgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIFRlbmFudE1hbmFnZW1lbnRBZGQsXG4gIFRlbmFudE1hbmFnZW1lbnREZWxldGUsXG4gIFRlbmFudE1hbmFnZW1lbnRHZXQsXG4gIFRlbmFudE1hbmFnZW1lbnRHZXRCeUlkLFxuICBUZW5hbnRNYW5hZ2VtZW50VXBkYXRlLFxufSBmcm9tICcuLi9hY3Rpb25zL3RlbmFudC1tYW5hZ2VtZW50LmFjdGlvbnMnO1xuaW1wb3J0IHsgVGVuYW50TWFuYWdlbWVudCB9IGZyb20gJy4uL21vZGVscy90ZW5hbnQtbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBUZW5hbnRNYW5hZ2VtZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RlbmFudC1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQUJQIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcblxuQFN0YXRlPFRlbmFudE1hbmFnZW1lbnQuU3RhdGU+KHtcbiAgbmFtZTogJ1RlbmFudE1hbmFnZW1lbnRTdGF0ZScsXG4gIGRlZmF1bHRzOiB7IHJlc3VsdDoge30sIHNlbGVjdGVkSXRlbToge30gfSBhcyBUZW5hbnRNYW5hZ2VtZW50LlN0YXRlLFxufSlcbmV4cG9ydCBjbGFzcyBUZW5hbnRNYW5hZ2VtZW50U3RhdGUge1xuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0KHsgcmVzdWx0IH06IFRlbmFudE1hbmFnZW1lbnQuU3RhdGUpOiBBQlAuQmFzaWNJdGVtW10ge1xuICAgIHJldHVybiByZXN1bHQuaXRlbXMgfHwgW107XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRlbmFudE1hbmFnZW1lbnRTZXJ2aWNlOiBUZW5hbnRNYW5hZ2VtZW50U2VydmljZSkge31cblxuICBAQWN0aW9uKFRlbmFudE1hbmFnZW1lbnRHZXQpXG4gIGdldCh7IHBhdGNoU3RhdGUgfTogU3RhdGVDb250ZXh0PFRlbmFudE1hbmFnZW1lbnQuU3RhdGU+KSB7XG4gICAgcmV0dXJuIHRoaXMudGVuYW50TWFuYWdlbWVudFNlcnZpY2UuZ2V0KCkucGlwZShcbiAgICAgIHRhcChyZXN1bHQgPT5cbiAgICAgICAgcGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgcmVzdWx0LFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIEBBY3Rpb24oVGVuYW50TWFuYWdlbWVudEdldEJ5SWQpXG4gIGdldEJ5SWQoeyBwYXRjaFN0YXRlIH06IFN0YXRlQ29udGV4dDxUZW5hbnRNYW5hZ2VtZW50LlN0YXRlPiwgeyBwYXlsb2FkIH06IFRlbmFudE1hbmFnZW1lbnRHZXRCeUlkKSB7XG4gICAgcmV0dXJuIHRoaXMudGVuYW50TWFuYWdlbWVudFNlcnZpY2UuZ2V0QnlJZChwYXlsb2FkKS5waXBlKFxuICAgICAgdGFwKHNlbGVjdGVkSXRlbSA9PlxuICAgICAgICBwYXRjaFN0YXRlKHtcbiAgICAgICAgICBzZWxlY3RlZEl0ZW0sXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgQEFjdGlvbihUZW5hbnRNYW5hZ2VtZW50RGVsZXRlKVxuICBkZWxldGUoeyBkaXNwYXRjaCB9OiBTdGF0ZUNvbnRleHQ8VGVuYW50TWFuYWdlbWVudC5TdGF0ZT4sIHsgcGF5bG9hZCB9OiBUZW5hbnRNYW5hZ2VtZW50RGVsZXRlKSB7XG4gICAgcmV0dXJuIHRoaXMudGVuYW50TWFuYWdlbWVudFNlcnZpY2UuZGVsZXRlKHBheWxvYWQpLnBpcGUoc3dpdGNoTWFwKCgpID0+IGRpc3BhdGNoKG5ldyBUZW5hbnRNYW5hZ2VtZW50R2V0KCkpKSk7XG4gIH1cblxuICBAQWN0aW9uKFRlbmFudE1hbmFnZW1lbnRBZGQpXG4gIGFkZCh7IGRpc3BhdGNoIH06IFN0YXRlQ29udGV4dDxUZW5hbnRNYW5hZ2VtZW50LlN0YXRlPiwgeyBwYXlsb2FkIH06IFRlbmFudE1hbmFnZW1lbnRBZGQpIHtcbiAgICByZXR1cm4gdGhpcy50ZW5hbnRNYW5hZ2VtZW50U2VydmljZS5hZGQocGF5bG9hZCkucGlwZShzd2l0Y2hNYXAoKCkgPT4gZGlzcGF0Y2gobmV3IFRlbmFudE1hbmFnZW1lbnRHZXQoKSkpKTtcbiAgfVxuXG4gIEBBY3Rpb24oVGVuYW50TWFuYWdlbWVudFVwZGF0ZSlcbiAgdXBkYXRlKHsgZGlzcGF0Y2gsIGdldFN0YXRlIH06IFN0YXRlQ29udGV4dDxUZW5hbnRNYW5hZ2VtZW50LlN0YXRlPiwgeyBwYXlsb2FkIH06IFRlbmFudE1hbmFnZW1lbnRVcGRhdGUpIHtcbiAgICByZXR1cm4gZGlzcGF0Y2gobmV3IFRlbmFudE1hbmFnZW1lbnRHZXRCeUlkKHBheWxvYWQuaWQpKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudGVuYW50TWFuYWdlbWVudFNlcnZpY2UudXBkYXRlKHsgLi4uZ2V0U3RhdGUoKS5zZWxlY3RlZEl0ZW0sIC4uLnBheWxvYWQgfSkpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IGRpc3BhdGNoKG5ldyBUZW5hbnRNYW5hZ2VtZW50R2V0KCkpKSxcbiAgICApO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/lib/tenant-management-routing.module.js b/npm/ng-packs/dist/tenant-management/esm2015/lib/tenant-management-routing.module.js new file mode 100644 index 00000000000..0fce1cd841b --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/lib/tenant-management-routing.module.js @@ -0,0 +1,32 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { AuthGuard, DynamicLayoutComponent, PermissionGuard } from '@abp/ng.core'; +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { TenantsResolver } from './resolvers/tenants.resolver'; +import { TenantsComponent } from './components/tenants/tenants.component'; +const ɵ0 = { requiredPolicy: 'AbpTenantManagement.Tenants' }; +/** @type {?} */ +const routes = [ + { path: '', redirectTo: 'tenants', pathMatch: 'full' }, + { + path: 'tenants', + component: DynamicLayoutComponent, + canActivate: [AuthGuard, PermissionGuard], + data: ɵ0, + children: [{ path: '', component: TenantsComponent, resolve: [TenantsResolver] }], + }, +]; +export class TenantManagementRoutingModule { +} +TenantManagementRoutingModule.decorators = [ + { type: NgModule, args: [{ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], + providers: [TenantsResolver], + },] } +]; +export { ɵ0 }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LW1hbmFnZW1lbnQtcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL3RlbmFudC1tYW5hZ2VtZW50LXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7V0FRaEUsRUFBRSxjQUFjLEVBQUUsNkJBQTZCLEVBQUU7O01BTnJELE1BQU0sR0FBVztJQUNyQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO0lBQ3REO1FBQ0UsSUFBSSxFQUFFLFNBQVM7UUFDZixTQUFTLEVBQUUsc0JBQXNCO1FBQ2pDLFdBQVcsRUFBRSxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUM7UUFDekMsSUFBSSxJQUFtRDtRQUN2RCxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7S0FDbEY7Q0FDRjtBQU9ELE1BQU0sT0FBTyw2QkFBNkI7OztZQUx6QyxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDeEMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2dCQUN2QixTQUFTLEVBQUUsQ0FBQyxlQUFlLENBQUM7YUFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoR3VhcmQsIER5bmFtaWNMYXlvdXRDb21wb25lbnQsIFBlcm1pc3Npb25HdWFyZCB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVGVuYW50c1Jlc29sdmVyIH0gZnJvbSAnLi9yZXNvbHZlcnMvdGVuYW50cy5yZXNvbHZlcic7XG5pbXBvcnQgeyBUZW5hbnRzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RlbmFudHMvdGVuYW50cy5jb21wb25lbnQnO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAgeyBwYXRoOiAnJywgcmVkaXJlY3RUbzogJ3RlbmFudHMnLCBwYXRoTWF0Y2g6ICdmdWxsJyB9LFxuICB7XG4gICAgcGF0aDogJ3RlbmFudHMnLFxuICAgIGNvbXBvbmVudDogRHluYW1pY0xheW91dENvbXBvbmVudCxcbiAgICBjYW5BY3RpdmF0ZTogW0F1dGhHdWFyZCwgUGVybWlzc2lvbkd1YXJkXSxcbiAgICBkYXRhOiB7IHJlcXVpcmVkUG9saWN5OiAnQWJwVGVuYW50TWFuYWdlbWVudC5UZW5hbnRzJyB9LFxuICAgIGNoaWxkcmVuOiBbeyBwYXRoOiAnJywgY29tcG9uZW50OiBUZW5hbnRzQ29tcG9uZW50LCByZXNvbHZlOiBbVGVuYW50c1Jlc29sdmVyXSB9XSxcbiAgfSxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKV0sXG4gIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdLFxuICBwcm92aWRlcnM6IFtUZW5hbnRzUmVzb2x2ZXJdLFxufSlcbmV4cG9ydCBjbGFzcyBUZW5hbnRNYW5hZ2VtZW50Um91dGluZ01vZHVsZSB7fVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/lib/tenant-management.module.js b/npm/ng-packs/dist/tenant-management/esm2015/lib/tenant-management.module.js new file mode 100644 index 00000000000..cb928c3e2ea --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/lib/tenant-management.module.js @@ -0,0 +1,29 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { CoreModule } from '@abp/ng.core'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { NgModule } from '@angular/core'; +import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { NgxsModule } from '@ngxs/store'; +import { TableModule } from 'primeng/table'; +import { TenantsComponent } from './components/tenants/tenants.component'; +import { TenantManagementState } from './states/tenant-management.state'; +import { TenantManagementRoutingModule } from './tenant-management-routing.module'; +export class TenantManagementModule { +} +TenantManagementModule.decorators = [ + { type: NgModule, args: [{ + declarations: [TenantsComponent], + imports: [ + TenantManagementRoutingModule, + NgxsModule.forFeature([TenantManagementState]), + CoreModule, + TableModule, + ThemeSharedModule, + NgbDropdownModule, + ], + },] } +]; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LW1hbmFnZW1lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50ZW5hbnQtbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi90ZW5hbnQtbWFuYWdlbWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDekUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFhbkYsTUFBTSxPQUFPLHNCQUFzQjs7O1lBWGxDLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDaEMsT0FBTyxFQUFFO29CQUNQLDZCQUE2QjtvQkFDN0IsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUM7b0JBQzlDLFVBQVU7b0JBQ1YsV0FBVztvQkFDWCxpQkFBaUI7b0JBQ2pCLGlCQUFpQjtpQkFDbEI7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgVGhlbWVTaGFyZWRNb2R1bGUgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdiRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBOZ3hzTW9kdWxlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgVGFibGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcbmltcG9ydCB7IFRlbmFudHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGVuYW50cy90ZW5hbnRzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZW5hbnRNYW5hZ2VtZW50U3RhdGUgfSBmcm9tICcuL3N0YXRlcy90ZW5hbnQtbWFuYWdlbWVudC5zdGF0ZSc7XG5pbXBvcnQgeyBUZW5hbnRNYW5hZ2VtZW50Um91dGluZ01vZHVsZSB9IGZyb20gJy4vdGVuYW50LW1hbmFnZW1lbnQtcm91dGluZy5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtUZW5hbnRzQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIFRlbmFudE1hbmFnZW1lbnRSb3V0aW5nTW9kdWxlLFxuICAgIE5neHNNb2R1bGUuZm9yRmVhdHVyZShbVGVuYW50TWFuYWdlbWVudFN0YXRlXSksXG4gICAgQ29yZU1vZHVsZSxcbiAgICBUYWJsZU1vZHVsZSxcbiAgICBUaGVtZVNoYXJlZE1vZHVsZSxcbiAgICBOZ2JEcm9wZG93bk1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGVuYW50TWFuYWdlbWVudE1vZHVsZSB7fVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm2015/public-api.js b/npm/ng-packs/dist/tenant-management/esm2015/public-api.js new file mode 100644 index 00000000000..f7a8fdf145f --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm2015/public-api.js @@ -0,0 +1,13 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { TenantManagementModule } from './lib/tenant-management.module'; +export { TenantManagementGet, TenantManagementGetById, TenantManagementAdd, TenantManagementUpdate, TenantManagementDelete } from './lib/actions'; +export { TenantsComponent } from './lib/components'; +export { TENANT_MANAGEMENT_ROUTES } from './lib/constants'; +export {} from './lib/models'; +export { TenantsResolver } from './lib/resolvers'; +export { TenantManagementService } from './lib/services'; +export { TenantManagementState } from './lib/states'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGVuYW50LW1hbmFnZW1lbnQvIiwic291cmNlcyI6WyJwdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSx1Q0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxrSUFBYyxlQUFlLENBQUM7QUFDOUIsaUNBQWMsa0JBQWtCLENBQUM7QUFDakMseUNBQWMsaUJBQWlCLENBQUM7QUFDaEMsZUFBYyxjQUFjLENBQUM7QUFDN0IsZ0NBQWMsaUJBQWlCLENBQUM7QUFDaEMsd0NBQWMsZ0JBQWdCLENBQUM7QUFDL0Isc0NBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvdGVuYW50LW1hbmFnZW1lbnQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Jlc29sdmVycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGF0ZXMnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/abp-ng.tenant-management.js b/npm/ng-packs/dist/tenant-management/esm5/abp-ng.tenant-management.js new file mode 100644 index 00000000000..050561e296d --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/abp-ng.tenant-management.js @@ -0,0 +1,15 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { TenantManagementModule, TenantManagementGet, TenantManagementGetById, TenantManagementAdd, TenantManagementUpdate, TenantManagementDelete, TenantsComponent, TENANT_MANAGEMENT_ROUTES, TenantsResolver, TenantManagementService, TenantManagementState } from './public-api'; +export { TenantManagementAdd as ɵf, TenantManagementDelete as ɵh, TenantManagementGet as ɵd, TenantManagementGetById as ɵe, TenantManagementUpdate as ɵg } from './lib/actions/tenant-management.actions'; +export { TenantsComponent as ɵa } from './lib/components/tenants/tenants.component'; +export { TenantsResolver as ɵk } from './lib/resolvers/tenants.resolver'; +export { TenantManagementService as ɵc } from './lib/services/tenant-management.service'; +export { TenantManagementState as ɵb } from './lib/states/tenant-management.state'; +export { TenantManagementRoutingModule as ɵj } from './lib/tenant-management-routing.module'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLnRlbmFudC1tYW5hZ2VtZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50ZW5hbnQtbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImFicC1uZy50ZW5hbnQtbWFuYWdlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsdVFBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsc0JBQXNCLElBQUksRUFBRSxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyx1QkFBdUIsSUFBSSxFQUFFLEVBQUMsc0JBQXNCLElBQUksRUFBRSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDcE0sT0FBTyxFQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBRWxGLE9BQU8sRUFBQyxlQUFlLElBQUksRUFBRSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFDLHVCQUF1QixJQUFJLEVBQUUsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxxQkFBcUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRixPQUFPLEVBQUMsNkJBQTZCLElBQUksRUFBRSxFQUFDLE1BQU0sd0NBQXdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG5cbmV4cG9ydCB7VGVuYW50TWFuYWdlbWVudEFkZCBhcyDJtWYsVGVuYW50TWFuYWdlbWVudERlbGV0ZSBhcyDJtWgsVGVuYW50TWFuYWdlbWVudEdldCBhcyDJtWQsVGVuYW50TWFuYWdlbWVudEdldEJ5SWQgYXMgybVlLFRlbmFudE1hbmFnZW1lbnRVcGRhdGUgYXMgybVnfSBmcm9tICcuL2xpYi9hY3Rpb25zL3RlbmFudC1tYW5hZ2VtZW50LmFjdGlvbnMnO1xuZXhwb3J0IHtUZW5hbnRzQ29tcG9uZW50IGFzIMm1YX0gZnJvbSAnLi9saWIvY29tcG9uZW50cy90ZW5hbnRzL3RlbmFudHMuY29tcG9uZW50JztcbmV4cG9ydCB7VGVuYW50TWFuYWdlbWVudCBhcyDJtWl9IGZyb20gJy4vbGliL21vZGVscy90ZW5hbnQtbWFuYWdlbWVudCc7XG5leHBvcnQge1RlbmFudHNSZXNvbHZlciBhcyDJtWt9IGZyb20gJy4vbGliL3Jlc29sdmVycy90ZW5hbnRzLnJlc29sdmVyJztcbmV4cG9ydCB7VGVuYW50TWFuYWdlbWVudFNlcnZpY2UgYXMgybVjfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy90ZW5hbnQtbWFuYWdlbWVudC5zZXJ2aWNlJztcbmV4cG9ydCB7VGVuYW50TWFuYWdlbWVudFN0YXRlIGFzIMm1Yn0gZnJvbSAnLi9saWIvc3RhdGVzL3RlbmFudC1tYW5hZ2VtZW50LnN0YXRlJztcbmV4cG9ydCB7VGVuYW50TWFuYWdlbWVudFJvdXRpbmdNb2R1bGUgYXMgybVqfSBmcm9tICcuL2xpYi90ZW5hbnQtbWFuYWdlbWVudC1yb3V0aW5nLm1vZHVsZSc7Il19 \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/lib/actions/index.js b/npm/ng-packs/dist/tenant-management/esm5/lib/actions/index.js new file mode 100644 index 00000000000..02fc8c5fbe6 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/lib/actions/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { TenantManagementGet, TenantManagementGetById, TenantManagementAdd, TenantManagementUpdate, TenantManagementDelete } from './tenant-management.actions'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2FjdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGtJQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90ZW5hbnQtbWFuYWdlbWVudC5hY3Rpb25zJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/lib/actions/tenant-management.actions.js b/npm/ng-packs/dist/tenant-management/esm5/lib/actions/tenant-management.actions.js new file mode 100644 index 00000000000..d23f1d8d382 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/lib/actions/tenant-management.actions.js @@ -0,0 +1,72 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var TenantManagementGet = /** @class */ (function () { + function TenantManagementGet() { + } + TenantManagementGet.type = '[TenantManagement] Get'; + return TenantManagementGet; +}()); +export { TenantManagementGet }; +if (false) { + /** @type {?} */ + TenantManagementGet.type; +} +var TenantManagementGetById = /** @class */ (function () { + function TenantManagementGetById(payload) { + this.payload = payload; + } + TenantManagementGetById.type = '[TenantManagement] Get By Id'; + return TenantManagementGetById; +}()); +export { TenantManagementGetById }; +if (false) { + /** @type {?} */ + TenantManagementGetById.type; + /** @type {?} */ + TenantManagementGetById.prototype.payload; +} +var TenantManagementAdd = /** @class */ (function () { + function TenantManagementAdd(payload) { + this.payload = payload; + } + TenantManagementAdd.type = '[TenantManagement] Add'; + return TenantManagementAdd; +}()); +export { TenantManagementAdd }; +if (false) { + /** @type {?} */ + TenantManagementAdd.type; + /** @type {?} */ + TenantManagementAdd.prototype.payload; +} +var TenantManagementUpdate = /** @class */ (function () { + function TenantManagementUpdate(payload) { + this.payload = payload; + } + TenantManagementUpdate.type = '[TenantManagement] Update'; + return TenantManagementUpdate; +}()); +export { TenantManagementUpdate }; +if (false) { + /** @type {?} */ + TenantManagementUpdate.type; + /** @type {?} */ + TenantManagementUpdate.prototype.payload; +} +var TenantManagementDelete = /** @class */ (function () { + function TenantManagementDelete(payload) { + this.payload = payload; + } + TenantManagementDelete.type = '[TenantManagement] Delete'; + return TenantManagementDelete; +}()); +export { TenantManagementDelete }; +if (false) { + /** @type {?} */ + TenantManagementDelete.type; + /** @type {?} */ + TenantManagementDelete.prototype.payload; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LW1hbmFnZW1lbnQuYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGVuYW50LW1hbmFnZW1lbnQvIiwic291cmNlcyI6WyJsaWIvYWN0aW9ucy90ZW5hbnQtbWFuYWdlbWVudC5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQTtJQUFBO0lBRUEsQ0FBQztJQURpQix3QkFBSSxHQUFHLHdCQUF3QixDQUFDO0lBQ2xELDBCQUFDO0NBQUEsQUFGRCxJQUVDO1NBRlksbUJBQW1COzs7SUFDOUIseUJBQWdEOztBQUdsRDtJQUVFLGlDQUFtQixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7SUFEdEIsNEJBQUksR0FBRyw4QkFBOEIsQ0FBQztJQUV4RCw4QkFBQztDQUFBLEFBSEQsSUFHQztTQUhZLHVCQUF1Qjs7O0lBQ2xDLDZCQUFzRDs7SUFDMUMsMENBQXNCOztBQUdwQztJQUVFLDZCQUFtQixPQUFvQztRQUFwQyxZQUFPLEdBQVAsT0FBTyxDQUE2QjtJQUFHLENBQUM7SUFEM0Msd0JBQUksR0FBRyx3QkFBd0IsQ0FBQztJQUVsRCwwQkFBQztDQUFBLEFBSEQsSUFHQztTQUhZLG1CQUFtQjs7O0lBQzlCLHlCQUFnRDs7SUFDcEMsc0NBQTJDOztBQUd6RDtJQUVFLGdDQUFtQixPQUF1QztRQUF2QyxZQUFPLEdBQVAsT0FBTyxDQUFnQztJQUFHLENBQUM7SUFEOUMsMkJBQUksR0FBRywyQkFBMkIsQ0FBQztJQUVyRCw2QkFBQztDQUFBLEFBSEQsSUFHQztTQUhZLHNCQUFzQjs7O0lBQ2pDLDRCQUFtRDs7SUFDdkMseUNBQThDOztBQUc1RDtJQUVFLGdDQUFtQixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7SUFEdEIsMkJBQUksR0FBRywyQkFBMkIsQ0FBQztJQUVyRCw2QkFBQztDQUFBLEFBSEQsSUFHQztTQUhZLHNCQUFzQjs7O0lBQ2pDLDRCQUFtRDs7SUFDdkMseUNBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVuYW50TWFuYWdlbWVudCB9IGZyb20gJy4uL21vZGVscy90ZW5hbnQtbWFuYWdlbWVudCc7XG5cbmV4cG9ydCBjbGFzcyBUZW5hbnRNYW5hZ2VtZW50R2V0IHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1RlbmFudE1hbmFnZW1lbnRdIEdldCc7XG59XG5cbmV4cG9ydCBjbGFzcyBUZW5hbnRNYW5hZ2VtZW50R2V0QnlJZCB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tUZW5hbnRNYW5hZ2VtZW50XSBHZXQgQnkgSWQnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogc3RyaW5nKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgVGVuYW50TWFuYWdlbWVudEFkZCB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tUZW5hbnRNYW5hZ2VtZW50XSBBZGQnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogVGVuYW50TWFuYWdlbWVudC5BZGRSZXF1ZXN0KSB7fVxufVxuXG5leHBvcnQgY2xhc3MgVGVuYW50TWFuYWdlbWVudFVwZGF0ZSB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tUZW5hbnRNYW5hZ2VtZW50XSBVcGRhdGUnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogVGVuYW50TWFuYWdlbWVudC5VcGRhdGVSZXF1ZXN0KSB7fVxufVxuXG5leHBvcnQgY2xhc3MgVGVuYW50TWFuYWdlbWVudERlbGV0ZSB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tUZW5hbnRNYW5hZ2VtZW50XSBEZWxldGUnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogc3RyaW5nKSB7fVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/lib/components/index.js b/npm/ng-packs/dist/tenant-management/esm5/lib/components/index.js new file mode 100644 index 00000000000..0b0f73e1acf --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/lib/components/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { TenantsComponent } from './tenants/tenants.component'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlDQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90ZW5hbnRzL3RlbmFudHMuY29tcG9uZW50JztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/lib/components/tenants/tenants.component.js b/npm/ng-packs/dist/tenant-management/esm5/lib/components/tenants/tenants.component.js new file mode 100644 index 00000000000..f519a898634 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/lib/components/tenants/tenants.component.js @@ -0,0 +1,328 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { ConfirmationService } from '@abp/ng.theme.shared'; +import { Component, TemplateRef, ViewChild } from '@angular/core'; +import { FormBuilder, Validators } from '@angular/forms'; +import { Select, Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { pluck, switchMap, take } from 'rxjs/operators'; +import { TenantManagementAdd, TenantManagementDelete, TenantManagementGetById, TenantManagementUpdate, } from '../../actions/tenant-management.actions'; +import { TenantManagementService } from '../../services/tenant-management.service'; +import { TenantManagementState } from '../../states/tenant-management.state'; +var TenantsComponent = /** @class */ (function () { + function TenantsComponent(confirmationService, tenantService, fb, store) { + this.confirmationService = confirmationService; + this.tenantService = tenantService; + this.fb = fb; + this.store = store; + this.selectedModalContent = (/** @type {?} */ ({})); + } + Object.defineProperty(TenantsComponent.prototype, "useSharedDatabase", { + get: /** + * @return {?} + */ + function () { + return this.defaultConnectionStringForm.get('useSharedDatabase').value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(TenantsComponent.prototype, "connectionString", { + get: /** + * @return {?} + */ + function () { + return this.defaultConnectionStringForm.get('defaultConnectionString').value; + }, + enumerable: true, + configurable: true + }); + /** + * @private + * @return {?} + */ + TenantsComponent.prototype.createTenantForm = /** + * @private + * @return {?} + */ + function () { + this.tenantForm = this.fb.group({ + name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]], + }); + }; + /** + * @private + * @return {?} + */ + TenantsComponent.prototype.createDefaultConnectionStringForm = /** + * @private + * @return {?} + */ + function () { + this.defaultConnectionStringForm = this.fb.group({ + useSharedDatabase: this._useSharedDatabase, + defaultConnectionString: this.defaultConnectionString || '', + }); + }; + /** + * @param {?} title + * @param {?} template + * @param {?} type + * @return {?} + */ + TenantsComponent.prototype.openModal = /** + * @param {?} title + * @param {?} template + * @param {?} type + * @return {?} + */ + function (title, template, type) { + this.selectedModalContent = { + title: title, + template: template, + type: type, + }; + this.isModalVisible = true; + }; + /** + * @param {?} id + * @return {?} + */ + TenantsComponent.prototype.onEditConnectionString = /** + * @param {?} id + * @return {?} + */ + function (id) { + var _this = this; + this.store + .dispatch(new TenantManagementGetById(id)) + .pipe(pluck('TenantManagementState', 'selectedItem'), switchMap((/** + * @param {?} selected + * @return {?} + */ + function (selected) { + _this.selected = selected; + return _this.tenantService.getDefaultConnectionString(id); + }))) + .subscribe((/** + * @param {?} fetchedConnectionString + * @return {?} + */ + function (fetchedConnectionString) { + _this._useSharedDatabase = fetchedConnectionString ? false : true; + _this.defaultConnectionString = fetchedConnectionString ? fetchedConnectionString : ''; + _this.createDefaultConnectionStringForm(); + _this.openModal('AbpTenantManagement::ConnectionStrings', _this.connectionStringModalTemplate, 'saveConnStr'); + })); + }; + /** + * @param {?} id + * @return {?} + */ + TenantsComponent.prototype.onManageFeatures = /** + * @param {?} id + * @return {?} + */ + function (id) { + this.openModal('AbpTenantManagement::Features', this.featuresModalTemplate, 'saveFeatures'); + }; + /** + * @return {?} + */ + TenantsComponent.prototype.onAddTenant = /** + * @return {?} + */ + function () { + this.selected = (/** @type {?} */ ({})); + this.createTenantForm(); + this.openModal('AbpTenantManagement::NewTenant', this.tenantModalTemplate, 'saveTenant'); + }; + /** + * @param {?} id + * @return {?} + */ + TenantsComponent.prototype.onEditTenant = /** + * @param {?} id + * @return {?} + */ + function (id) { + var _this = this; + this.store + .dispatch(new TenantManagementGetById(id)) + .pipe(pluck('TenantManagementState', 'selectedItem')) + .subscribe((/** + * @param {?} selected + * @return {?} + */ + function (selected) { + _this.selected = selected; + _this.createTenantForm(); + _this.openModal('AbpTenantManagement::Edit', _this.tenantModalTemplate, 'saveTenant'); + })); + }; + /** + * @return {?} + */ + TenantsComponent.prototype.save = /** + * @return {?} + */ + function () { + var type = this.selectedModalContent.type; + if (!type) + return; + if (type === 'saveTenant') + this.saveTenant(); + else if (type === 'saveConnStr') + this.saveConnectionString(); + }; + /** + * @return {?} + */ + TenantsComponent.prototype.saveConnectionString = /** + * @return {?} + */ + function () { + var _this = this; + if (this.useSharedDatabase) { + this.tenantService + .deleteDefaultConnectionString(this.selected.id) + .pipe(take(1)) + .subscribe((/** + * @return {?} + */ + function () { + _this.isModalVisible = false; + })); + } + else { + this.tenantService + .updateDefaultConnectionString({ id: this.selected.id, defaultConnectionString: this.connectionString }) + .pipe(take(1)) + .subscribe((/** + * @return {?} + */ + function () { + _this.isModalVisible = false; + })); + } + }; + /** + * @return {?} + */ + TenantsComponent.prototype.saveTenant = /** + * @return {?} + */ + function () { + var _this = this; + if (!this.tenantForm.valid) + return; + this.store + .dispatch(this.selected.id + ? new TenantManagementUpdate(tslib_1.__assign({}, this.tenantForm.value, { id: this.selected.id })) + : new TenantManagementAdd(this.tenantForm.value)) + .subscribe((/** + * @return {?} + */ + function () { + _this.isModalVisible = false; + })); + }; + /** + * @param {?} id + * @param {?} name + * @return {?} + */ + TenantsComponent.prototype.delete = /** + * @param {?} id + * @param {?} name + * @return {?} + */ + function (id, name) { + var _this = this; + this.confirmationService + .warn('AbpTenantManagement::TenantDeletionConfirmationMessage', 'AbpTenantManagement::AreYouSure', { + messageLocalizationParams: [name], + }) + .subscribe((/** + * @param {?} status + * @return {?} + */ + function (status) { + if (status === "confirm" /* confirm */) { + _this.store.dispatch(new TenantManagementDelete(id)); + } + })); + }; + TenantsComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-tenants', + template: "
\n
\n
\n
\n
\n {{ 'AbpTenantManagement::Tenants' | abpLocalization }}\n
\n
\n
\n \n \n {{ 'AbpTenantManagement::NewTenant' | abpLocalization }}\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpTenantManagement::Actions' | abpLocalization }}\n {{ 'AbpTenantManagement::TenantName' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpTenantManagement::Actions' | abpLocalization }}\n \n
\n \n {{ 'AbpTenantManagement::Edit' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::ConnectionStrings' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::Features' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::Delete' | abpLocalization }}\n \n
\n
\n \n {{ data.name }}\n \n
\n
\n
\n
\n\n\n \n

{{ selectedModalContent.title | abpLocalization }}

\n
\n\n \n \n \n\n \n \n \n \n
\n\n\n
\n
\n
\n \n \n
\n
\n
\n
\n\n\n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n\n\n Manage Features\n\n" + }] } + ]; + /** @nocollapse */ + TenantsComponent.ctorParameters = function () { return [ + { type: ConfirmationService }, + { type: TenantManagementService }, + { type: FormBuilder }, + { type: Store } + ]; }; + TenantsComponent.propDecorators = { + tenantModalTemplate: [{ type: ViewChild, args: ['tenantModalTemplate', { static: false },] }], + connectionStringModalTemplate: [{ type: ViewChild, args: ['connectionStringModalTemplate', { static: false },] }], + featuresModalTemplate: [{ type: ViewChild, args: ['featuresModalTemplate', { static: false },] }] + }; + tslib_1.__decorate([ + Select(TenantManagementState.get), + tslib_1.__metadata("design:type", Observable) + ], TenantsComponent.prototype, "datas$", void 0); + return TenantsComponent; +}()); +export { TenantsComponent }; +if (false) { + /** @type {?} */ + TenantsComponent.prototype.datas$; + /** @type {?} */ + TenantsComponent.prototype.selected; + /** @type {?} */ + TenantsComponent.prototype.tenantForm; + /** @type {?} */ + TenantsComponent.prototype.defaultConnectionStringForm; + /** @type {?} */ + TenantsComponent.prototype.defaultConnectionString; + /** @type {?} */ + TenantsComponent.prototype.isModalVisible; + /** @type {?} */ + TenantsComponent.prototype.selectedModalContent; + /** @type {?} */ + TenantsComponent.prototype._useSharedDatabase; + /** @type {?} */ + TenantsComponent.prototype.tenantModalTemplate; + /** @type {?} */ + TenantsComponent.prototype.connectionStringModalTemplate; + /** @type {?} */ + TenantsComponent.prototype.featuresModalTemplate; + /** + * @type {?} + * @private + */ + TenantsComponent.prototype.confirmationService; + /** + * @type {?} + * @private + */ + TenantsComponent.prototype.tenantService; + /** + * @type {?} + * @private + */ + TenantsComponent.prototype.fb; + /** + * @type {?} + * @private + */ + TenantsComponent.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvdGVuYW50cy90ZW5hbnRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBVyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixHQUN2QixNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBUTdFO0lBdUNFLDBCQUNVLG1CQUF3QyxFQUN4QyxhQUFzQyxFQUN0QyxFQUFlLEVBQ2YsS0FBWTtRQUhaLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsa0JBQWEsR0FBYixhQUFhLENBQXlCO1FBQ3RDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBekJ0Qix5QkFBb0IsR0FBRyxtQkFBQSxFQUFFLEVBQXdCLENBQUM7SUEwQi9DLENBQUM7SUF0Qkosc0JBQUksK0NB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LFFBQVEsRUFBRSxhQUFhO29CQUN2QiwwNUtBQXVDO2lCQUN4Qzs7OztnQkF4QlEsbUJBQW1CO2dCQVluQix1QkFBdUI7Z0JBVnZCLFdBQVc7Z0JBQ0gsS0FBSzs7O3NDQWdEbkIsU0FBUyxTQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnREFHbEQsU0FBUyxTQUFDLCtCQUErQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTt3Q0FHNUQsU0FBUyxTQUFDLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7SUE5QnJEO1FBREMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQzswQ0FDMUIsVUFBVTtvREFBa0I7SUF3SnRDLHVCQUFDO0NBQUEsQUE5SkQsSUE4SkM7U0ExSlksZ0JBQWdCOzs7SUFDM0Isa0NBQ29DOztJQUVwQyxvQ0FBd0I7O0lBRXhCLHNDQUFzQjs7SUFFdEIsdURBQXVDOztJQUV2QyxtREFBZ0M7O0lBRWhDLDBDQUF3Qjs7SUFFeEIsZ0RBQWtEOztJQUVsRCw4Q0FBNEI7O0lBVTVCLCtDQUNzQzs7SUFFdEMseURBQ2dEOztJQUVoRCxpREFDd0M7Ozs7O0lBR3RDLCtDQUFnRDs7Ozs7SUFDaEQseUNBQThDOzs7OztJQUM5Qyw4QkFBdUI7Ozs7O0lBQ3ZCLGlDQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBUb2FzdGVyIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHBsdWNrLCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBUZW5hbnRNYW5hZ2VtZW50QWRkLFxuICBUZW5hbnRNYW5hZ2VtZW50RGVsZXRlLFxuICBUZW5hbnRNYW5hZ2VtZW50R2V0QnlJZCxcbiAgVGVuYW50TWFuYWdlbWVudFVwZGF0ZSxcbn0gZnJvbSAnLi4vLi4vYWN0aW9ucy90ZW5hbnQtbWFuYWdlbWVudC5hY3Rpb25zJztcbmltcG9ydCB7IFRlbmFudE1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGVuYW50LW1hbmFnZW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBUZW5hbnRNYW5hZ2VtZW50U3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZXMvdGVuYW50LW1hbmFnZW1lbnQuc3RhdGUnO1xuXG50eXBlIFNlbGVjdGVkTW9kYWxDb250ZW50ID0ge1xuICB0eXBlOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWJwLXRlbmFudHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGVuYW50cy5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFRlbmFudHNDb21wb25lbnQge1xuICBAU2VsZWN0KFRlbmFudE1hbmFnZW1lbnRTdGF0ZS5nZXQpXG4gIGRhdGFzJDogT2JzZXJ2YWJsZTxBQlAuQmFzaWNJdGVtW10+O1xuXG4gIHNlbGVjdGVkOiBBQlAuQmFzaWNJdGVtO1xuXG4gIHRlbmFudEZvcm06IEZvcm1Hcm91cDtcblxuICBkZWZhdWx0Q29ubmVjdGlvblN0cmluZ0Zvcm06IEZvcm1Hcm91cDtcblxuICBkZWZhdWx0Q29ubmVjdGlvblN0cmluZzogc3RyaW5nO1xuXG4gIGlzTW9kYWxWaXNpYmxlOiBib29sZWFuO1xuXG4gIHNlbGVjdGVkTW9kYWxDb250ZW50ID0ge30gYXMgU2VsZWN0ZWRNb2RhbENvbnRlbnQ7XG5cbiAgX3VzZVNoYXJlZERhdGFiYXNlOiBib29sZWFuO1xuXG4gIGdldCB1c2VTaGFyZWREYXRhYmFzZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0Q29ubmVjdGlvblN0cmluZ0Zvcm0uZ2V0KCd1c2VTaGFyZWREYXRhYmFzZScpLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGNvbm5lY3Rpb25TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0Q29ubmVjdGlvblN0cmluZ0Zvcm0uZ2V0KCdkZWZhdWx0Q29ubmVjdGlvblN0cmluZycpLnZhbHVlO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgndGVuYW50TW9kYWxUZW1wbGF0ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICB0ZW5hbnRNb2RhbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ2Nvbm5lY3Rpb25TdHJpbmdNb2RhbFRlbXBsYXRlJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGNvbm5lY3Rpb25TdHJpbmdNb2RhbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ2ZlYXR1cmVzTW9kYWxUZW1wbGF0ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBmZWF0dXJlc01vZGFsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdGVuYW50U2VydmljZTogVGVuYW50TWFuYWdlbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICkge31cblxuICBwcml2YXRlIGNyZWF0ZVRlbmFudEZvcm0oKSB7XG4gICAgdGhpcy50ZW5hbnRGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBuYW1lOiBbdGhpcy5zZWxlY3RlZC5uYW1lIHx8ICcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV1dLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0Q29ubmVjdGlvblN0cmluZ0Zvcm0oKSB7XG4gICAgdGhpcy5kZWZhdWx0Q29ubmVjdGlvblN0cmluZ0Zvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIHVzZVNoYXJlZERhdGFiYXNlOiB0aGlzLl91c2VTaGFyZWREYXRhYmFzZSxcbiAgICAgIGRlZmF1bHRDb25uZWN0aW9uU3RyaW5nOiB0aGlzLmRlZmF1bHRDb25uZWN0aW9uU3RyaW5nIHx8ICcnLFxuICAgIH0pO1xuICB9XG5cbiAgb3Blbk1vZGFsKHRpdGxlOiBzdHJpbmcsIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+LCB0eXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkTW9kYWxDb250ZW50ID0ge1xuICAgICAgdGl0bGUsXG4gICAgICB0ZW1wbGF0ZSxcbiAgICAgIHR5cGUsXG4gICAgfTtcblxuICAgIHRoaXMuaXNNb2RhbFZpc2libGUgPSB0cnVlO1xuICB9XG5cbiAgb25FZGl0Q29ubmVjdGlvblN0cmluZyhpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZVxuICAgICAgLmRpc3BhdGNoKG5ldyBUZW5hbnRNYW5hZ2VtZW50R2V0QnlJZChpZCkpXG4gICAgICAucGlwZShcbiAgICAgICAgcGx1Y2soJ1RlbmFudE1hbmFnZW1lbnRTdGF0ZScsICdzZWxlY3RlZEl0ZW0nKSxcbiAgICAgICAgc3dpdGNoTWFwKHNlbGVjdGVkID0+IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudGVuYW50U2VydmljZS5nZXREZWZhdWx0Q29ubmVjdGlvblN0cmluZyhpZCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShmZXRjaGVkQ29ubmVjdGlvblN0cmluZyA9PiB7XG4gICAgICAgIHRoaXMuX3VzZVNoYXJlZERhdGFiYXNlID0gZmV0Y2hlZENvbm5lY3Rpb25TdHJpbmcgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgIHRoaXMuZGVmYXVsdENvbm5lY3Rpb25TdHJpbmcgPSBmZXRjaGVkQ29ubmVjdGlvblN0cmluZyA/IGZldGNoZWRDb25uZWN0aW9uU3RyaW5nIDogJyc7XG4gICAgICAgIHRoaXMuY3JlYXRlRGVmYXVsdENvbm5lY3Rpb25TdHJpbmdGb3JtKCk7XG4gICAgICAgIHRoaXMub3Blbk1vZGFsKCdBYnBUZW5hbnRNYW5hZ2VtZW50OjpDb25uZWN0aW9uU3RyaW5ncycsIHRoaXMuY29ubmVjdGlvblN0cmluZ01vZGFsVGVtcGxhdGUsICdzYXZlQ29ublN0cicpO1xuICAgICAgfSk7XG4gIH1cblxuICBvbk1hbmFnZUZlYXR1cmVzKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9wZW5Nb2RhbCgnQWJwVGVuYW50TWFuYWdlbWVudDo6RmVhdHVyZXMnLCB0aGlzLmZlYXR1cmVzTW9kYWxUZW1wbGF0ZSwgJ3NhdmVGZWF0dXJlcycpO1xuICB9XG5cbiAgb25BZGRUZW5hbnQoKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHt9IGFzIEFCUC5CYXNpY0l0ZW07XG4gICAgdGhpcy5jcmVhdGVUZW5hbnRGb3JtKCk7XG4gICAgdGhpcy5vcGVuTW9kYWwoJ0FicFRlbmFudE1hbmFnZW1lbnQ6Ok5ld1RlbmFudCcsIHRoaXMudGVuYW50TW9kYWxUZW1wbGF0ZSwgJ3NhdmVUZW5hbnQnKTtcbiAgfVxuXG4gIG9uRWRpdFRlbmFudChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZVxuICAgICAgLmRpc3BhdGNoKG5ldyBUZW5hbnRNYW5hZ2VtZW50R2V0QnlJZChpZCkpXG4gICAgICAucGlwZShwbHVjaygnVGVuYW50TWFuYWdlbWVudFN0YXRlJywgJ3NlbGVjdGVkSXRlbScpKVxuICAgICAgLnN1YnNjcmliZShzZWxlY3RlZCA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRGb3JtKCk7XG4gICAgICAgIHRoaXMub3Blbk1vZGFsKCdBYnBUZW5hbnRNYW5hZ2VtZW50OjpFZGl0JywgdGhpcy50ZW5hbnRNb2RhbFRlbXBsYXRlLCAnc2F2ZVRlbmFudCcpO1xuICAgICAgfSk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIGNvbnN0IHsgdHlwZSB9ID0gdGhpcy5zZWxlY3RlZE1vZGFsQ29udGVudDtcbiAgICBpZiAoIXR5cGUpIHJldHVybjtcbiAgICBpZiAodHlwZSA9PT0gJ3NhdmVUZW5hbnQnKSB0aGlzLnNhdmVUZW5hbnQoKTtcbiAgICBlbHNlIGlmICh0eXBlID09PSAnc2F2ZUNvbm5TdHInKSB0aGlzLnNhdmVDb25uZWN0aW9uU3RyaW5nKCk7XG4gIH1cblxuICBzYXZlQ29ubmVjdGlvblN0cmluZygpIHtcbiAgICBpZiAodGhpcy51c2VTaGFyZWREYXRhYmFzZSkge1xuICAgICAgdGhpcy50ZW5hbnRTZXJ2aWNlXG4gICAgICAgIC5kZWxldGVEZWZhdWx0Q29ubmVjdGlvblN0cmluZyh0aGlzLnNlbGVjdGVkLmlkKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRlbmFudFNlcnZpY2VcbiAgICAgICAgLnVwZGF0ZURlZmF1bHRDb25uZWN0aW9uU3RyaW5nKHsgaWQ6IHRoaXMuc2VsZWN0ZWQuaWQsIGRlZmF1bHRDb25uZWN0aW9uU3RyaW5nOiB0aGlzLmNvbm5lY3Rpb25TdHJpbmcgfSlcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc01vZGFsVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzYXZlVGVuYW50KCkge1xuICAgIGlmICghdGhpcy50ZW5hbnRGb3JtLnZhbGlkKSByZXR1cm47XG5cbiAgICB0aGlzLnN0b3JlXG4gICAgICAuZGlzcGF0Y2goXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuaWRcbiAgICAgICAgICA/IG5ldyBUZW5hbnRNYW5hZ2VtZW50VXBkYXRlKHsgLi4udGhpcy50ZW5hbnRGb3JtLnZhbHVlLCBpZDogdGhpcy5zZWxlY3RlZC5pZCB9KVxuICAgICAgICAgIDogbmV3IFRlbmFudE1hbmFnZW1lbnRBZGQodGhpcy50ZW5hbnRGb3JtLnZhbHVlKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gICAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZShpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2VcbiAgICAgIC53YXJuKCdBYnBUZW5hbnRNYW5hZ2VtZW50OjpUZW5hbnREZWxldGlvbkNvbmZpcm1hdGlvbk1lc3NhZ2UnLCAnQWJwVGVuYW50TWFuYWdlbWVudDo6QXJlWW91U3VyZScsIHtcbiAgICAgICAgbWVzc2FnZUxvY2FsaXphdGlvblBhcmFtczogW25hbWVdLFxuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogVG9hc3Rlci5TdGF0dXMpID0+IHtcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gVG9hc3Rlci5TdGF0dXMuY29uZmlybSkge1xuICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFRlbmFudE1hbmFnZW1lbnREZWxldGUoaWQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/lib/constants/index.js b/npm/ng-packs/dist/tenant-management/esm5/lib/constants/index.js new file mode 100644 index 00000000000..fd626022663 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/lib/constants/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { TENANT_MANAGEMENT_ROUTES } from './routes'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2NvbnN0YW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEseUNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yb3V0ZXMnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/lib/constants/routes.js b/npm/ng-packs/dist/tenant-management/esm5/lib/constants/routes.js new file mode 100644 index 00000000000..8fbf458b12d --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/lib/constants/routes.js @@ -0,0 +1,22 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +export var TENANT_MANAGEMENT_ROUTES = (/** @type {?} */ ([ + { + name: 'Tenant Management', + path: 'tenant-management', + parentName: 'Administration', + layout: "application" /* application */, + children: [ + { + path: 'tenants', + name: 'Tenants', + order: 1, + requiredPolicy: 'AbpTenantManagement.Tenants', + }, + ], + }, +])); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50ZW5hbnQtbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9jb25zdGFudHMvcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsTUFBTSxLQUFPLHdCQUF3QixHQUFHLG1CQUFBO0lBQ3RDO1FBQ0UsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFVBQVUsRUFBRSxnQkFBZ0I7UUFDNUIsTUFBTSxpQ0FBeUI7UUFDL0IsUUFBUSxFQUFFO1lBQ1I7Z0JBQ0UsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsY0FBYyxFQUFFLDZCQUE2QjthQUM5QztTQUNGO0tBQ0Y7Q0FDRixFQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCwgZUxheW91dFR5cGUgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuXG5leHBvcnQgY29uc3QgVEVOQU5UX01BTkFHRU1FTlRfUk9VVEVTID0gW1xuICB7XG4gICAgbmFtZTogJ1RlbmFudCBNYW5hZ2VtZW50JyxcbiAgICBwYXRoOiAndGVuYW50LW1hbmFnZW1lbnQnLFxuICAgIHBhcmVudE5hbWU6ICdBZG1pbmlzdHJhdGlvbicsXG4gICAgbGF5b3V0OiBlTGF5b3V0VHlwZS5hcHBsaWNhdGlvbixcbiAgICBjaGlsZHJlbjogW1xuICAgICAge1xuICAgICAgICBwYXRoOiAndGVuYW50cycsXG4gICAgICAgIG5hbWU6ICdUZW5hbnRzJyxcbiAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgIHJlcXVpcmVkUG9saWN5OiAnQWJwVGVuYW50TWFuYWdlbWVudC5UZW5hbnRzJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbl0gYXMgQUJQLkZ1bGxSb3V0ZVtdO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/lib/models/index.js b/npm/ng-packs/dist/tenant-management/esm5/lib/models/index.js new file mode 100644 index 00000000000..e018898bb1d --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/lib/models/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export {} from './tenant-management'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsZUFBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGVuYW50LW1hbmFnZW1lbnQnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/lib/models/tenant-management.js b/npm/ng-packs/dist/tenant-management/esm5/lib/models/tenant-management.js new file mode 100644 index 00000000000..ad6e89c9e35 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/lib/models/tenant-management.js @@ -0,0 +1,59 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var TenantManagement; +(function (TenantManagement) { + /** + * @record + */ + function State() { } + TenantManagement.State = State; + if (false) { + /** @type {?} */ + State.prototype.result; + /** @type {?} */ + State.prototype.selectedItem; + } + /** + * @record + */ + function Item() { } + TenantManagement.Item = Item; + if (false) { + /** @type {?} */ + Item.prototype.id; + /** @type {?} */ + Item.prototype.name; + } + /** + * @record + */ + function AddRequest() { } + TenantManagement.AddRequest = AddRequest; + if (false) { + /** @type {?} */ + AddRequest.prototype.name; + } + /** + * @record + */ + function UpdateRequest() { } + TenantManagement.UpdateRequest = UpdateRequest; + if (false) { + /** @type {?} */ + UpdateRequest.prototype.id; + } + /** + * @record + */ + function DefaultConnectionStringRequest() { } + TenantManagement.DefaultConnectionStringRequest = DefaultConnectionStringRequest; + if (false) { + /** @type {?} */ + DefaultConnectionStringRequest.prototype.id; + /** @type {?} */ + DefaultConnectionStringRequest.prototype.defaultConnectionString; + } +})(TenantManagement || (TenantManagement = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LW1hbmFnZW1lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL21vZGVscy90ZW5hbnQtbWFuYWdlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsTUFBTSxLQUFXLGdCQUFnQixDQXlCaEM7QUF6QkQsV0FBaUIsZ0JBQWdCOzs7O0lBQy9CLG9CQUdDOzs7O1FBRkMsdUJBQWlCOztRQUNqQiw2QkFBbUI7Ozs7O0lBS3JCLG1CQUdDOzs7O1FBRkMsa0JBQVc7O1FBQ1gsb0JBQWE7Ozs7O0lBR2YseUJBRUM7Ozs7UUFEQywwQkFBYTs7Ozs7SUFHZiw0QkFFQzs7OztRQURDLDJCQUFXOzs7OztJQUdiLDZDQUdDOzs7O1FBRkMsNENBQVc7O1FBQ1gsaUVBQWdDOztBQUVwQyxDQUFDLEVBekJnQixnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBeUJoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgVGVuYW50TWFuYWdlbWVudCB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgU3RhdGUge1xuICAgIHJlc3VsdDogUmVzcG9uc2U7XG4gICAgc2VsZWN0ZWRJdGVtOiBJdGVtO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUmVzcG9uc2UgPSBBQlAuUGFnZWRSZXNwb25zZTxJdGVtPjtcblxuICBleHBvcnQgaW50ZXJmYWNlIEl0ZW0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBBZGRSZXF1ZXN0IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVJlcXVlc3QgZXh0ZW5kcyBBZGRSZXF1ZXN0IHtcbiAgICBpZDogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBEZWZhdWx0Q29ubmVjdGlvblN0cmluZ1JlcXVlc3Qge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZGVmYXVsdENvbm5lY3Rpb25TdHJpbmc6IHN0cmluZztcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/lib/resolvers/index.js b/npm/ng-packs/dist/tenant-management/esm5/lib/resolvers/index.js new file mode 100644 index 00000000000..2dc325d54ea --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/lib/resolvers/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { TenantsResolver } from './tenants.resolver'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL3Jlc29sdmVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsZ0NBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RlbmFudHMucmVzb2x2ZXInO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/lib/resolvers/tenants.resolver.js b/npm/ng-packs/dist/tenant-management/esm5/lib/resolvers/tenants.resolver.js new file mode 100644 index 00000000000..62f98b6b28d --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/lib/resolvers/tenants.resolver.js @@ -0,0 +1,43 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { TenantManagementGet } from '../actions/tenant-management.actions'; +import { TenantManagementState } from '../states/tenant-management.state'; +var TenantsResolver = /** @class */ (function () { + function TenantsResolver(store) { + this.store = store; + } + /** + * @return {?} + */ + TenantsResolver.prototype.resolve = /** + * @return {?} + */ + function () { + /** @type {?} */ + var data = this.store.selectSnapshot(TenantManagementState.get); + return data && data.length + ? null + : this.store.dispatch(new TenantManagementGet()); + }; + TenantsResolver.decorators = [ + { type: Injectable } + ]; + /** @nocollapse */ + TenantsResolver.ctorParameters = function () { return [ + { type: Store } + ]; }; + return TenantsResolver; +}()); +export { TenantsResolver }; +if (false) { + /** + * @type {?} + * @private + */ + TenantsResolver.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50cy5yZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGVuYW50LW1hbmFnZW1lbnQvIiwic291cmNlcyI6WyJsaWIvcmVzb2x2ZXJzL3RlbmFudHMucmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUUxRTtJQUVFLHlCQUFvQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztJQUFHLENBQUM7Ozs7SUFFcEMsaUNBQU87OztJQUFQOztZQUNRLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUM7UUFDakUsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU07WUFDekIsQ0FBQyxDQUFDLElBQUk7WUFDTixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7Z0JBVEYsVUFBVTs7OztnQkFMRixLQUFLOztJQWVkLHNCQUFDO0NBQUEsQUFWRCxJQVVDO1NBVFksZUFBZTs7Ozs7O0lBQ2QsZ0NBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzb2x2ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IFRlbmFudE1hbmFnZW1lbnRHZXQgfSBmcm9tICcuLi9hY3Rpb25zL3RlbmFudC1tYW5hZ2VtZW50LmFjdGlvbnMnO1xuaW1wb3J0IHsgVGVuYW50TWFuYWdlbWVudCB9IGZyb20gJy4uL21vZGVscy90ZW5hbnQtbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBUZW5hbnRNYW5hZ2VtZW50U3RhdGUgfSBmcm9tICcuLi9zdGF0ZXMvdGVuYW50LW1hbmFnZW1lbnQuc3RhdGUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGVuYW50c1Jlc29sdmVyIGltcGxlbWVudHMgUmVzb2x2ZTxUZW5hbnRNYW5hZ2VtZW50LlN0YXRlPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIHJlc29sdmUoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoVGVuYW50TWFuYWdlbWVudFN0YXRlLmdldCk7XG4gICAgcmV0dXJuIGRhdGEgJiYgZGF0YS5sZW5ndGhcbiAgICAgPyBudWxsIFxuICAgICA6IHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFRlbmFudE1hbmFnZW1lbnRHZXQoKSk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/lib/services/index.js b/npm/ng-packs/dist/tenant-management/esm5/lib/services/index.js new file mode 100644 index 00000000000..1848d841856 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/lib/services/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { TenantManagementService } from './tenant-management.service'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSx3Q0FBYyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGVuYW50LW1hbmFnZW1lbnQuc2VydmljZSc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/lib/services/tenant-management.service.js b/npm/ng-packs/dist/tenant-management/esm5/lib/services/tenant-management.service.js new file mode 100644 index 00000000000..573a7d285f6 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/lib/services/tenant-management.service.js @@ -0,0 +1,172 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { RestService } from '@abp/ng.core'; +import * as i0 from "@angular/core"; +import * as i1 from "@abp/ng.core"; +var TenantManagementService = /** @class */ (function () { + function TenantManagementService(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + TenantManagementService.prototype.get = /** + * @return {?} + */ + function () { + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/multi-tenancy/tenants', + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + TenantManagementService.prototype.getById = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'GET', + url: "/api/multi-tenancy/tenants/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + TenantManagementService.prototype.delete = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'DELETE', + url: "/api/multi-tenancy/tenants/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + TenantManagementService.prototype.add = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var request = { + method: 'POST', + url: "/api/multi-tenancy/tenants", + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + TenantManagementService.prototype.update = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var url = "/api/multi-tenancy/tenants/" + body.id; + delete body.id; + /** @type {?} */ + var request = { + method: 'PUT', + url: url, + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + TenantManagementService.prototype.getDefaultConnectionString = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var url = "/api/multi-tenancy/tenants/" + id + "/defaultConnectionString"; + /** @type {?} */ + var request = { + method: 'GET', + responseType: "text" /* Text */, + url: url, + }; + return this.rest.request(request); + }; + /** + * @param {?} payload + * @return {?} + */ + TenantManagementService.prototype.updateDefaultConnectionString = /** + * @param {?} payload + * @return {?} + */ + function (payload) { + /** @type {?} */ + var url = "/api/multi-tenancy/tenants/" + payload.id + "/defaultConnectionString"; + /** @type {?} */ + var request = { + method: 'PUT', + url: url, + params: { defaultConnectionString: payload.defaultConnectionString }, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + TenantManagementService.prototype.deleteDefaultConnectionString = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var url = "/api/multi-tenancy/tenant/" + id + "/defaultConnectionString"; + /** @type {?} */ + var request = { + method: 'DELETE', + url: url, + }; + return this.rest.request(request); + }; + TenantManagementService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + TenantManagementService.ctorParameters = function () { return [ + { type: RestService } + ]; }; + /** @nocollapse */ TenantManagementService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function TenantManagementService_Factory() { return new TenantManagementService(i0.ɵɵinject(i1.RestService)); }, token: TenantManagementService, providedIn: "root" }); + return TenantManagementService; +}()); +export { TenantManagementService }; +if (false) { + /** + * @type {?} + * @private + */ + TenantManagementService.prototype.rest; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LW1hbmFnZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGVuYW50LW1hbmFnZW1lbnQvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvdGVuYW50LW1hbmFnZW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsV0FBVyxFQUFhLE1BQU0sY0FBYyxDQUFDOzs7QUFHdEQ7SUFJRSxpQ0FBb0IsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUFHLENBQUM7Ozs7SUFFekMscUNBQUc7OztJQUFIOztZQUNRLE9BQU8sR0FBdUI7WUFDbEMsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEVBQUUsNEJBQTRCO1NBQ2xDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBa0MsT0FBTyxDQUFDLENBQUM7SUFDckUsQ0FBQzs7Ozs7SUFFRCx5Q0FBTzs7OztJQUFQLFVBQVEsRUFBVTs7WUFDVixPQUFPLEdBQXVCO1lBQ2xDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxFQUFFLGdDQUE4QixFQUFJO1NBQ3hDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBc0IsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQzs7Ozs7SUFFRCx3Q0FBTTs7OztJQUFOLFVBQU8sRUFBVTs7WUFDVCxPQUFPLEdBQXVCO1lBQ2xDLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLEdBQUcsRUFBRSxnQ0FBOEIsRUFBSTtTQUN4QztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQWEsT0FBTyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7Ozs7SUFFRCxxQ0FBRzs7OztJQUFILFVBQUksSUFBaUM7O1lBQzdCLE9BQU8sR0FBOEM7WUFDekQsTUFBTSxFQUFFLE1BQU07WUFDZCxHQUFHLEVBQUUsNEJBQTRCO1lBQ2pDLElBQUksTUFBQTtTQUNMO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBNkMsT0FBTyxDQUFDLENBQUM7SUFDaEYsQ0FBQzs7Ozs7SUFFRCx3Q0FBTTs7OztJQUFOLFVBQU8sSUFBb0M7O1lBQ25DLEdBQUcsR0FBRyxnQ0FBOEIsSUFBSSxDQUFDLEVBQUk7UUFDbkQsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDOztZQUVULE9BQU8sR0FBaUQ7WUFDNUQsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEtBQUE7WUFDSCxJQUFJLE1BQUE7U0FDTDtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQTZDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hGLENBQUM7Ozs7O0lBRUQsNERBQTBCOzs7O0lBQTFCLFVBQTJCLEVBQVU7O1lBQzdCLEdBQUcsR0FBRyxnQ0FBOEIsRUFBRSw2QkFBMEI7O1lBRWhFLE9BQU8sR0FBa0U7WUFDN0UsTUFBTSxFQUFFLEtBQUs7WUFDYixZQUFZLG1CQUF3QjtZQUNwQyxHQUFHLEtBQUE7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQTBELE9BQU8sQ0FBQyxDQUFDO0lBQzdGLENBQUM7Ozs7O0lBRUQsK0RBQTZCOzs7O0lBQTdCLFVBQThCLE9BQXdEOztZQUM5RSxHQUFHLEdBQUcsZ0NBQThCLE9BQU8sQ0FBQyxFQUFFLDZCQUEwQjs7WUFFeEUsT0FBTyxHQUFrRTtZQUM3RSxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsS0FBQTtZQUNILE1BQU0sRUFBRSxFQUFFLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRTtTQUNyRTtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQXVELE9BQU8sQ0FBQyxDQUFDO0lBQzFGLENBQUM7Ozs7O0lBRUQsK0RBQTZCOzs7O0lBQTdCLFVBQThCLEVBQVU7O1lBQ2hDLEdBQUcsR0FBRywrQkFBNkIsRUFBRSw2QkFBMEI7O1lBRS9ELE9BQU8sR0FBa0U7WUFDN0UsTUFBTSxFQUFFLFFBQVE7WUFDaEIsR0FBRyxLQUFBO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUF1RCxPQUFPLENBQUMsQ0FBQztJQUMxRixDQUFDOztnQkF0RkYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFMUSxXQUFXOzs7a0NBRnBCO0NBNEZDLEFBdkZELElBdUZDO1NBcEZZLHVCQUF1Qjs7Ozs7O0lBQ3RCLHVDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlLCBSZXN0LCBBQlAgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgVGVuYW50TWFuYWdlbWVudCB9IGZyb20gJy4uL21vZGVscy90ZW5hbnQtbWFuYWdlbWVudCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUZW5hbnRNYW5hZ2VtZW50U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzdDogUmVzdFNlcnZpY2UpIHt9XG5cbiAgZ2V0KCk6IE9ic2VydmFibGU8VGVuYW50TWFuYWdlbWVudC5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlc3QuUmVxdWVzdDxudWxsPiA9IHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB1cmw6ICcvYXBpL211bHRpLXRlbmFuY3kvdGVuYW50cycsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDxudWxsLCBUZW5hbnRNYW5hZ2VtZW50LlJlc3BvbnNlPihyZXF1ZXN0KTtcbiAgfVxuXG4gIGdldEJ5SWQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8QUJQLkJhc2ljSXRlbT4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlc3QuUmVxdWVzdDxudWxsPiA9IHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB1cmw6IGAvYXBpL211bHRpLXRlbmFuY3kvdGVuYW50cy8ke2lkfWAsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDxudWxsLCBBQlAuQmFzaWNJdGVtPihyZXF1ZXN0KTtcbiAgfVxuXG4gIGRlbGV0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgY29uc3QgcmVxdWVzdDogUmVzdC5SZXF1ZXN0PG51bGw+ID0ge1xuICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgIHVybDogYC9hcGkvbXVsdGktdGVuYW5jeS90ZW5hbnRzLyR7aWR9YCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PG51bGwsIG51bGw+KHJlcXVlc3QpO1xuICB9XG5cbiAgYWRkKGJvZHk6IFRlbmFudE1hbmFnZW1lbnQuQWRkUmVxdWVzdCk6IE9ic2VydmFibGU8QUJQLkJhc2ljSXRlbT4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFJlc3QuUmVxdWVzdDxUZW5hbnRNYW5hZ2VtZW50LkFkZFJlcXVlc3Q+ID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICB1cmw6IGAvYXBpL211bHRpLXRlbmFuY3kvdGVuYW50c2AsXG4gICAgICBib2R5LFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5yZXN0LnJlcXVlc3Q8VGVuYW50TWFuYWdlbWVudC5BZGRSZXF1ZXN0LCBBQlAuQmFzaWNJdGVtPihyZXF1ZXN0KTtcbiAgfVxuXG4gIHVwZGF0ZShib2R5OiBUZW5hbnRNYW5hZ2VtZW50LlVwZGF0ZVJlcXVlc3QpOiBPYnNlcnZhYmxlPEFCUC5CYXNpY0l0ZW0+IHtcbiAgICBjb25zdCB1cmwgPSBgL2FwaS9tdWx0aS10ZW5hbmN5L3RlbmFudHMvJHtib2R5LmlkfWA7XG4gICAgZGVsZXRlIGJvZHkuaWQ7XG5cbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8VGVuYW50TWFuYWdlbWVudC5VcGRhdGVSZXF1ZXN0PiA9IHtcbiAgICAgIG1ldGhvZDogJ1BVVCcsXG4gICAgICB1cmwsXG4gICAgICBib2R5LFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5yZXN0LnJlcXVlc3Q8VGVuYW50TWFuYWdlbWVudC5BZGRSZXF1ZXN0LCBBQlAuQmFzaWNJdGVtPihyZXF1ZXN0KTtcbiAgfVxuXG4gIGdldERlZmF1bHRDb25uZWN0aW9uU3RyaW5nKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGNvbnN0IHVybCA9IGAvYXBpL211bHRpLXRlbmFuY3kvdGVuYW50cy8ke2lkfS9kZWZhdWx0Q29ubmVjdGlvblN0cmluZ2A7XG5cbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8VGVuYW50TWFuYWdlbWVudC5EZWZhdWx0Q29ubmVjdGlvblN0cmluZ1JlcXVlc3Q+ID0ge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIHJlc3BvbnNlVHlwZTogUmVzdC5SZXNwb25zZVR5cGUuVGV4dCxcbiAgICAgIHVybCxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDxUZW5hbnRNYW5hZ2VtZW50LkRlZmF1bHRDb25uZWN0aW9uU3RyaW5nUmVxdWVzdCwgc3RyaW5nPihyZXF1ZXN0KTtcbiAgfVxuXG4gIHVwZGF0ZURlZmF1bHRDb25uZWN0aW9uU3RyaW5nKHBheWxvYWQ6IFRlbmFudE1hbmFnZW1lbnQuRGVmYXVsdENvbm5lY3Rpb25TdHJpbmdSZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBgL2FwaS9tdWx0aS10ZW5hbmN5L3RlbmFudHMvJHtwYXlsb2FkLmlkfS9kZWZhdWx0Q29ubmVjdGlvblN0cmluZ2A7XG5cbiAgICBjb25zdCByZXF1ZXN0OiBSZXN0LlJlcXVlc3Q8VGVuYW50TWFuYWdlbWVudC5EZWZhdWx0Q29ubmVjdGlvblN0cmluZ1JlcXVlc3Q+ID0ge1xuICAgICAgbWV0aG9kOiAnUFVUJyxcbiAgICAgIHVybCxcbiAgICAgIHBhcmFtczogeyBkZWZhdWx0Q29ubmVjdGlvblN0cmluZzogcGF5bG9hZC5kZWZhdWx0Q29ubmVjdGlvblN0cmluZyB9LFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PFRlbmFudE1hbmFnZW1lbnQuRGVmYXVsdENvbm5lY3Rpb25TdHJpbmdSZXF1ZXN0LCBhbnk+KHJlcXVlc3QpO1xuICB9XG5cbiAgZGVsZXRlRGVmYXVsdENvbm5lY3Rpb25TdHJpbmcoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgY29uc3QgdXJsID0gYC9hcGkvbXVsdGktdGVuYW5jeS90ZW5hbnQvJHtpZH0vZGVmYXVsdENvbm5lY3Rpb25TdHJpbmdgO1xuXG4gICAgY29uc3QgcmVxdWVzdDogUmVzdC5SZXF1ZXN0PFRlbmFudE1hbmFnZW1lbnQuRGVmYXVsdENvbm5lY3Rpb25TdHJpbmdSZXF1ZXN0PiA9IHtcbiAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICB1cmwsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5yZXN0LnJlcXVlc3Q8VGVuYW50TWFuYWdlbWVudC5EZWZhdWx0Q29ubmVjdGlvblN0cmluZ1JlcXVlc3QsIGFueT4ocmVxdWVzdCk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/lib/states/index.js b/npm/ng-packs/dist/tenant-management/esm5/lib/states/index.js new file mode 100644 index 00000000000..009910139bf --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/lib/states/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { TenantManagementState } from './tenant-management.state'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL3N0YXRlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsc0NBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RlbmFudC1tYW5hZ2VtZW50LnN0YXRlJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/lib/states/tenant-management.state.js b/npm/ng-packs/dist/tenant-management/esm5/lib/states/tenant-management.state.js new file mode 100644 index 00000000000..9cde8123b81 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/lib/states/tenant-management.state.js @@ -0,0 +1,180 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Action, Selector, State } from '@ngxs/store'; +import { switchMap, tap } from 'rxjs/operators'; +import { TenantManagementAdd, TenantManagementDelete, TenantManagementGet, TenantManagementGetById, TenantManagementUpdate, } from '../actions/tenant-management.actions'; +import { TenantManagementService } from '../services/tenant-management.service'; +var TenantManagementState = /** @class */ (function () { + function TenantManagementState(tenantManagementService) { + this.tenantManagementService = tenantManagementService; + } + /** + * @param {?} __0 + * @return {?} + */ + TenantManagementState.get = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var result = _a.result; + return result.items || []; + }; + /** + * @param {?} __0 + * @return {?} + */ + TenantManagementState.prototype.get = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var patchState = _a.patchState; + return this.tenantManagementService.get().pipe(tap((/** + * @param {?} result + * @return {?} + */ + function (result) { + return patchState({ + result: result, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + TenantManagementState.prototype.getById = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.tenantManagementService.getById(payload).pipe(tap((/** + * @param {?} selectedItem + * @return {?} + */ + function (selectedItem) { + return patchState({ + selectedItem: selectedItem, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + TenantManagementState.prototype.delete = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.tenantManagementService.delete(payload).pipe(switchMap((/** + * @return {?} + */ + function () { return dispatch(new TenantManagementGet()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + TenantManagementState.prototype.add = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.tenantManagementService.add(payload).pipe(switchMap((/** + * @return {?} + */ + function () { return dispatch(new TenantManagementGet()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + TenantManagementState.prototype.update = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var _this = this; + var dispatch = _a.dispatch, getState = _a.getState; + var payload = _b.payload; + return dispatch(new TenantManagementGetById(payload.id)).pipe(switchMap((/** + * @return {?} + */ + function () { return _this.tenantManagementService.update(tslib_1.__assign({}, getState().selectedItem, payload)); })), switchMap((/** + * @return {?} + */ + function () { return dispatch(new TenantManagementGet()); }))); + }; + tslib_1.__decorate([ + Action(TenantManagementGet), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", void 0) + ], TenantManagementState.prototype, "get", null); + tslib_1.__decorate([ + Action(TenantManagementGetById), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, TenantManagementGetById]), + tslib_1.__metadata("design:returntype", void 0) + ], TenantManagementState.prototype, "getById", null); + tslib_1.__decorate([ + Action(TenantManagementDelete), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, TenantManagementDelete]), + tslib_1.__metadata("design:returntype", void 0) + ], TenantManagementState.prototype, "delete", null); + tslib_1.__decorate([ + Action(TenantManagementAdd), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, TenantManagementAdd]), + tslib_1.__metadata("design:returntype", void 0) + ], TenantManagementState.prototype, "add", null); + tslib_1.__decorate([ + Action(TenantManagementUpdate), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, TenantManagementUpdate]), + tslib_1.__metadata("design:returntype", void 0) + ], TenantManagementState.prototype, "update", null); + tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", Array) + ], TenantManagementState, "get", null); + TenantManagementState = tslib_1.__decorate([ + State({ + name: 'TenantManagementState', + defaults: (/** @type {?} */ ({ result: {}, selectedItem: {} })), + }), + tslib_1.__metadata("design:paramtypes", [TenantManagementService]) + ], TenantManagementState); + return TenantManagementState; +}()); +export { TenantManagementState }; +if (false) { + /** + * @type {?} + * @private + */ + TenantManagementState.prototype.tenantManagementService; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LW1hbmFnZW1lbnQuc3RhdGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL3N0YXRlcy90ZW5hbnQtbWFuYWdlbWVudC5zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBZ0IsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixHQUN2QixNQUFNLHNDQUFzQyxDQUFDO0FBRTlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztJQWE5RSwrQkFBb0IsdUJBQWdEO1FBQWhELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7SUFBRyxDQUFDOzs7OztJQUpqRSx5QkFBRzs7OztJQUFWLFVBQVcsRUFBa0M7WUFBaEMsa0JBQU07UUFDakIsT0FBTyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDOzs7OztJQUtELG1DQUFHOzs7O0lBQUgsVUFBSSxFQUFvRDtZQUFsRCwwQkFBVTtRQUNkLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FDNUMsR0FBRzs7OztRQUFDLFVBQUEsTUFBTTtZQUNSLE9BQUEsVUFBVSxDQUFDO2dCQUNULE1BQU0sUUFBQTthQUNQLENBQUM7UUFGRixDQUVFLEVBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7Ozs7O0lBR0QsdUNBQU87Ozs7O0lBQVAsVUFBUSxFQUFvRCxFQUFFLEVBQW9DO1lBQXhGLDBCQUFVO1lBQTRDLG9CQUFPO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3ZELEdBQUc7Ozs7UUFBQyxVQUFBLFlBQVk7WUFDZCxPQUFBLFVBQVUsQ0FBQztnQkFDVCxZQUFZLGNBQUE7YUFDYixDQUFDO1FBRkYsQ0FFRSxFQUNILENBQ0YsQ0FBQztJQUNKLENBQUM7Ozs7OztJQUdELHNDQUFNOzs7OztJQUFOLFVBQU8sRUFBa0QsRUFBRSxFQUFtQztZQUFyRixzQkFBUTtZQUE0QyxvQkFBTztRQUNsRSxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVM7OztRQUFDLGNBQU0sT0FBQSxRQUFRLENBQUMsSUFBSSxtQkFBbUIsRUFBRSxDQUFDLEVBQW5DLENBQW1DLEVBQUMsQ0FBQyxDQUFDO0lBQ2pILENBQUM7Ozs7OztJQUdELG1DQUFHOzs7OztJQUFILFVBQUksRUFBa0QsRUFBRSxFQUFnQztZQUFsRixzQkFBUTtZQUE0QyxvQkFBTztRQUMvRCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVM7OztRQUFDLGNBQU0sT0FBQSxRQUFRLENBQUMsSUFBSSxtQkFBbUIsRUFBRSxDQUFDLEVBQW5DLENBQW1DLEVBQUMsQ0FBQyxDQUFDO0lBQzlHLENBQUM7Ozs7OztJQUdELHNDQUFNOzs7OztJQUFOLFVBQU8sRUFBNEQsRUFBRSxFQUFtQztRQUR4RyxpQkFNQztZQUxRLHNCQUFRLEVBQUUsc0JBQVE7WUFBNEMsb0JBQU87UUFDNUUsT0FBTyxRQUFRLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzNELFNBQVM7OztRQUFDLGNBQU0sT0FBQSxLQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxzQkFBTSxRQUFRLEVBQUUsQ0FBQyxZQUFZLEVBQUssT0FBTyxFQUFHLEVBQS9FLENBQStFLEVBQUMsRUFDaEcsU0FBUzs7O1FBQUMsY0FBTSxPQUFBLFFBQVEsQ0FBQyxJQUFJLG1CQUFtQixFQUFFLENBQUMsRUFBbkMsQ0FBbUMsRUFBQyxDQUNyRCxDQUFDO0lBQ0osQ0FBQztJQXJDRDtRQURDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQzs7OztvREFTM0I7SUFHRDtRQURDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQzs7eURBQzJDLHVCQUF1Qjs7d0RBUWpHO0lBR0Q7UUFEQyxNQUFNLENBQUMsc0JBQXNCLENBQUM7O3lEQUN5QyxzQkFBc0I7O3VEQUU3RjtJQUdEO1FBREMsTUFBTSxDQUFDLG1CQUFtQixDQUFDOzt5REFDeUMsbUJBQW1COztvREFFdkY7SUFHRDtRQURDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQzs7eURBQ21ELHNCQUFzQjs7dURBS3ZHO0lBNUNEO1FBREMsUUFBUSxFQUFFOzs7OzBDQUdWO0lBSlUscUJBQXFCO1FBSmpDLEtBQUssQ0FBeUI7WUFDN0IsSUFBSSxFQUFFLHVCQUF1QjtZQUM3QixRQUFRLEVBQUUsbUJBQUEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsRUFBMEI7U0FDckUsQ0FBQztpREFPNkMsdUJBQXVCO09BTnpELHFCQUFxQixDQStDakM7SUFBRCw0QkFBQztDQUFBLElBQUE7U0EvQ1kscUJBQXFCOzs7Ozs7SUFNcEIsd0RBQXdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uLCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgVGVuYW50TWFuYWdlbWVudEFkZCxcbiAgVGVuYW50TWFuYWdlbWVudERlbGV0ZSxcbiAgVGVuYW50TWFuYWdlbWVudEdldCxcbiAgVGVuYW50TWFuYWdlbWVudEdldEJ5SWQsXG4gIFRlbmFudE1hbmFnZW1lbnRVcGRhdGUsXG59IGZyb20gJy4uL2FjdGlvbnMvdGVuYW50LW1hbmFnZW1lbnQuYWN0aW9ucyc7XG5pbXBvcnQgeyBUZW5hbnRNYW5hZ2VtZW50IH0gZnJvbSAnLi4vbW9kZWxzL3RlbmFudC1tYW5hZ2VtZW50JztcbmltcG9ydCB7IFRlbmFudE1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGVuYW50LW1hbmFnZW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBQlAgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuXG5AU3RhdGU8VGVuYW50TWFuYWdlbWVudC5TdGF0ZT4oe1xuICBuYW1lOiAnVGVuYW50TWFuYWdlbWVudFN0YXRlJyxcbiAgZGVmYXVsdHM6IHsgcmVzdWx0OiB7fSwgc2VsZWN0ZWRJdGVtOiB7fSB9IGFzIFRlbmFudE1hbmFnZW1lbnQuU3RhdGUsXG59KVxuZXhwb3J0IGNsYXNzIFRlbmFudE1hbmFnZW1lbnRTdGF0ZSB7XG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXQoeyByZXN1bHQgfTogVGVuYW50TWFuYWdlbWVudC5TdGF0ZSk6IEFCUC5CYXNpY0l0ZW1bXSB7XG4gICAgcmV0dXJuIHJlc3VsdC5pdGVtcyB8fCBbXTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGVuYW50TWFuYWdlbWVudFNlcnZpY2U6IFRlbmFudE1hbmFnZW1lbnRTZXJ2aWNlKSB7fVxuXG4gIEBBY3Rpb24oVGVuYW50TWFuYWdlbWVudEdldClcbiAgZ2V0KHsgcGF0Y2hTdGF0ZSB9OiBTdGF0ZUNvbnRleHQ8VGVuYW50TWFuYWdlbWVudC5TdGF0ZT4pIHtcbiAgICByZXR1cm4gdGhpcy50ZW5hbnRNYW5hZ2VtZW50U2VydmljZS5nZXQoKS5waXBlKFxuICAgICAgdGFwKHJlc3VsdCA9PlxuICAgICAgICBwYXRjaFN0YXRlKHtcbiAgICAgICAgICByZXN1bHQsXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgQEFjdGlvbihUZW5hbnRNYW5hZ2VtZW50R2V0QnlJZClcbiAgZ2V0QnlJZCh7IHBhdGNoU3RhdGUgfTogU3RhdGVDb250ZXh0PFRlbmFudE1hbmFnZW1lbnQuU3RhdGU+LCB7IHBheWxvYWQgfTogVGVuYW50TWFuYWdlbWVudEdldEJ5SWQpIHtcbiAgICByZXR1cm4gdGhpcy50ZW5hbnRNYW5hZ2VtZW50U2VydmljZS5nZXRCeUlkKHBheWxvYWQpLnBpcGUoXG4gICAgICB0YXAoc2VsZWN0ZWRJdGVtID0+XG4gICAgICAgIHBhdGNoU3RhdGUoe1xuICAgICAgICAgIHNlbGVjdGVkSXRlbSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBAQWN0aW9uKFRlbmFudE1hbmFnZW1lbnREZWxldGUpXG4gIGRlbGV0ZSh7IGRpc3BhdGNoIH06IFN0YXRlQ29udGV4dDxUZW5hbnRNYW5hZ2VtZW50LlN0YXRlPiwgeyBwYXlsb2FkIH06IFRlbmFudE1hbmFnZW1lbnREZWxldGUpIHtcbiAgICByZXR1cm4gdGhpcy50ZW5hbnRNYW5hZ2VtZW50U2VydmljZS5kZWxldGUocGF5bG9hZCkucGlwZShzd2l0Y2hNYXAoKCkgPT4gZGlzcGF0Y2gobmV3IFRlbmFudE1hbmFnZW1lbnRHZXQoKSkpKTtcbiAgfVxuXG4gIEBBY3Rpb24oVGVuYW50TWFuYWdlbWVudEFkZClcbiAgYWRkKHsgZGlzcGF0Y2ggfTogU3RhdGVDb250ZXh0PFRlbmFudE1hbmFnZW1lbnQuU3RhdGU+LCB7IHBheWxvYWQgfTogVGVuYW50TWFuYWdlbWVudEFkZCkge1xuICAgIHJldHVybiB0aGlzLnRlbmFudE1hbmFnZW1lbnRTZXJ2aWNlLmFkZChwYXlsb2FkKS5waXBlKHN3aXRjaE1hcCgoKSA9PiBkaXNwYXRjaChuZXcgVGVuYW50TWFuYWdlbWVudEdldCgpKSkpO1xuICB9XG5cbiAgQEFjdGlvbihUZW5hbnRNYW5hZ2VtZW50VXBkYXRlKVxuICB1cGRhdGUoeyBkaXNwYXRjaCwgZ2V0U3RhdGUgfTogU3RhdGVDb250ZXh0PFRlbmFudE1hbmFnZW1lbnQuU3RhdGU+LCB7IHBheWxvYWQgfTogVGVuYW50TWFuYWdlbWVudFVwZGF0ZSkge1xuICAgIHJldHVybiBkaXNwYXRjaChuZXcgVGVuYW50TWFuYWdlbWVudEdldEJ5SWQocGF5bG9hZC5pZCkpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy50ZW5hbnRNYW5hZ2VtZW50U2VydmljZS51cGRhdGUoeyAuLi5nZXRTdGF0ZSgpLnNlbGVjdGVkSXRlbSwgLi4ucGF5bG9hZCB9KSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gZGlzcGF0Y2gobmV3IFRlbmFudE1hbmFnZW1lbnRHZXQoKSkpLFxuICAgICk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/lib/tenant-management-routing.module.js b/npm/ng-packs/dist/tenant-management/esm5/lib/tenant-management-routing.module.js new file mode 100644 index 00000000000..b324ac56afc --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/lib/tenant-management-routing.module.js @@ -0,0 +1,36 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { AuthGuard, DynamicLayoutComponent, PermissionGuard } from '@abp/ng.core'; +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { TenantsResolver } from './resolvers/tenants.resolver'; +import { TenantsComponent } from './components/tenants/tenants.component'; +var ɵ0 = { requiredPolicy: 'AbpTenantManagement.Tenants' }; +/** @type {?} */ +var routes = [ + { path: '', redirectTo: 'tenants', pathMatch: 'full' }, + { + path: 'tenants', + component: DynamicLayoutComponent, + canActivate: [AuthGuard, PermissionGuard], + data: ɵ0, + children: [{ path: '', component: TenantsComponent, resolve: [TenantsResolver] }], + }, +]; +var TenantManagementRoutingModule = /** @class */ (function () { + function TenantManagementRoutingModule() { + } + TenantManagementRoutingModule.decorators = [ + { type: NgModule, args: [{ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], + providers: [TenantsResolver], + },] } + ]; + return TenantManagementRoutingModule; +}()); +export { TenantManagementRoutingModule }; +export { ɵ0 }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LW1hbmFnZW1lbnQtcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRlbmFudC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL3RlbmFudC1tYW5hZ2VtZW50LXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7U0FRaEUsRUFBRSxjQUFjLEVBQUUsNkJBQTZCLEVBQUU7O0lBTnJELE1BQU0sR0FBVztJQUNyQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO0lBQ3REO1FBQ0UsSUFBSSxFQUFFLFNBQVM7UUFDZixTQUFTLEVBQUUsc0JBQXNCO1FBQ2pDLFdBQVcsRUFBRSxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUM7UUFDekMsSUFBSSxJQUFtRDtRQUN2RCxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7S0FDbEY7Q0FDRjtBQUVEO0lBQUE7SUFLNEMsQ0FBQzs7Z0JBTDVDLFFBQVEsU0FBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN4QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQztpQkFDN0I7O0lBQzJDLG9DQUFDO0NBQUEsQUFMN0MsSUFLNkM7U0FBaEMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aEd1YXJkLCBEeW5hbWljTGF5b3V0Q29tcG9uZW50LCBQZXJtaXNzaW9uR3VhcmQgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSwgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRlbmFudHNSZXNvbHZlciB9IGZyb20gJy4vcmVzb2x2ZXJzL3RlbmFudHMucmVzb2x2ZXInO1xuaW1wb3J0IHsgVGVuYW50c0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90ZW5hbnRzL3RlbmFudHMuY29tcG9uZW50JztcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHsgcGF0aDogJycsIHJlZGlyZWN0VG86ICd0ZW5hbnRzJywgcGF0aE1hdGNoOiAnZnVsbCcgfSxcbiAge1xuICAgIHBhdGg6ICd0ZW5hbnRzJyxcbiAgICBjb21wb25lbnQ6IER5bmFtaWNMYXlvdXRDb21wb25lbnQsXG4gICAgY2FuQWN0aXZhdGU6IFtBdXRoR3VhcmQsIFBlcm1pc3Npb25HdWFyZF0sXG4gICAgZGF0YTogeyByZXF1aXJlZFBvbGljeTogJ0FicFRlbmFudE1hbmFnZW1lbnQuVGVuYW50cycgfSxcbiAgICBjaGlsZHJlbjogW3sgcGF0aDogJycsIGNvbXBvbmVudDogVGVuYW50c0NvbXBvbmVudCwgcmVzb2x2ZTogW1RlbmFudHNSZXNvbHZlcl0gfV0sXG4gIH0sXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbVGVuYW50c1Jlc29sdmVyXSxcbn0pXG5leHBvcnQgY2xhc3MgVGVuYW50TWFuYWdlbWVudFJvdXRpbmdNb2R1bGUge31cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/lib/tenant-management.module.js b/npm/ng-packs/dist/tenant-management/esm5/lib/tenant-management.module.js new file mode 100644 index 00000000000..78d77768671 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/lib/tenant-management.module.js @@ -0,0 +1,33 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { CoreModule } from '@abp/ng.core'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { NgModule } from '@angular/core'; +import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { NgxsModule } from '@ngxs/store'; +import { TableModule } from 'primeng/table'; +import { TenantsComponent } from './components/tenants/tenants.component'; +import { TenantManagementState } from './states/tenant-management.state'; +import { TenantManagementRoutingModule } from './tenant-management-routing.module'; +var TenantManagementModule = /** @class */ (function () { + function TenantManagementModule() { + } + TenantManagementModule.decorators = [ + { type: NgModule, args: [{ + declarations: [TenantsComponent], + imports: [ + TenantManagementRoutingModule, + NgxsModule.forFeature([TenantManagementState]), + CoreModule, + TableModule, + ThemeSharedModule, + NgbDropdownModule, + ], + },] } + ]; + return TenantManagementModule; +}()); +export { TenantManagementModule }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LW1hbmFnZW1lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50ZW5hbnQtbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi90ZW5hbnQtbWFuYWdlbWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDekUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkY7SUFBQTtJQVdxQyxDQUFDOztnQkFYckMsUUFBUSxTQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUNoQyxPQUFPLEVBQUU7d0JBQ1AsNkJBQTZCO3dCQUM3QixVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQzt3QkFDOUMsVUFBVTt3QkFDVixXQUFXO3dCQUNYLGlCQUFpQjt3QkFDakIsaUJBQWlCO3FCQUNsQjtpQkFDRjs7SUFDb0MsNkJBQUM7Q0FBQSxBQVh0QyxJQVdzQztTQUF6QixzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3JlTW9kdWxlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IFRoZW1lU2hhcmVkTW9kdWxlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYkRyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgTmd4c01vZHVsZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IFRhYmxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5pbXBvcnQgeyBUZW5hbnRzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RlbmFudHMvdGVuYW50cy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVuYW50TWFuYWdlbWVudFN0YXRlIH0gZnJvbSAnLi9zdGF0ZXMvdGVuYW50LW1hbmFnZW1lbnQuc3RhdGUnO1xuaW1wb3J0IHsgVGVuYW50TWFuYWdlbWVudFJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL3RlbmFudC1tYW5hZ2VtZW50LXJvdXRpbmcubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbVGVuYW50c0NvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBUZW5hbnRNYW5hZ2VtZW50Um91dGluZ01vZHVsZSxcbiAgICBOZ3hzTW9kdWxlLmZvckZlYXR1cmUoW1RlbmFudE1hbmFnZW1lbnRTdGF0ZV0pLFxuICAgIENvcmVNb2R1bGUsXG4gICAgVGFibGVNb2R1bGUsXG4gICAgVGhlbWVTaGFyZWRNb2R1bGUsXG4gICAgTmdiRHJvcGRvd25Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFRlbmFudE1hbmFnZW1lbnRNb2R1bGUge31cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/esm5/public-api.js b/npm/ng-packs/dist/tenant-management/esm5/public-api.js new file mode 100644 index 00000000000..f7a8fdf145f --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/esm5/public-api.js @@ -0,0 +1,13 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { TenantManagementModule } from './lib/tenant-management.module'; +export { TenantManagementGet, TenantManagementGetById, TenantManagementAdd, TenantManagementUpdate, TenantManagementDelete } from './lib/actions'; +export { TenantsComponent } from './lib/components'; +export { TENANT_MANAGEMENT_ROUTES } from './lib/constants'; +export {} from './lib/models'; +export { TenantsResolver } from './lib/resolvers'; +export { TenantManagementService } from './lib/services'; +export { TenantManagementState } from './lib/states'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGVuYW50LW1hbmFnZW1lbnQvIiwic291cmNlcyI6WyJwdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSx1Q0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxrSUFBYyxlQUFlLENBQUM7QUFDOUIsaUNBQWMsa0JBQWtCLENBQUM7QUFDakMseUNBQWMsaUJBQWlCLENBQUM7QUFDaEMsZUFBYyxjQUFjLENBQUM7QUFDN0IsZ0NBQWMsaUJBQWlCLENBQUM7QUFDaEMsd0NBQWMsZ0JBQWdCLENBQUM7QUFDL0Isc0NBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvdGVuYW50LW1hbmFnZW1lbnQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Jlc29sdmVycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGF0ZXMnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/fesm2015/abp-ng.tenant-management.js b/npm/ng-packs/dist/tenant-management/fesm2015/abp-ng.tenant-management.js new file mode 100644 index 00000000000..6902d87c9d0 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/fesm2015/abp-ng.tenant-management.js @@ -0,0 +1,668 @@ +import { RestService, DynamicLayoutComponent, AuthGuard, PermissionGuard, CoreModule } from '@abp/ng.core'; +import { ConfirmationService, ThemeSharedModule } from '@abp/ng.theme.shared'; +import { Injectable, ɵɵdefineInjectable, ɵɵinject, Component, ViewChild, NgModule } from '@angular/core'; +import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { Action, Selector, State, Store, Select, NgxsModule } from '@ngxs/store'; +import { TableModule } from 'primeng/table'; +import { __decorate, __metadata } from 'tslib'; +import { Validators, FormBuilder } from '@angular/forms'; +import { Observable } from 'rxjs'; +import { tap, switchMap, pluck, take } from 'rxjs/operators'; +import { RouterModule } from '@angular/router'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class TenantManagementGet { +} +TenantManagementGet.type = '[TenantManagement] Get'; +class TenantManagementGetById { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +TenantManagementGetById.type = '[TenantManagement] Get By Id'; +class TenantManagementAdd { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +TenantManagementAdd.type = '[TenantManagement] Add'; +class TenantManagementUpdate { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +TenantManagementUpdate.type = '[TenantManagement] Update'; +class TenantManagementDelete { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +TenantManagementDelete.type = '[TenantManagement] Delete'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class TenantManagementService { + /** + * @param {?} rest + */ + constructor(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + get() { + /** @type {?} */ + const request = { + method: 'GET', + url: '/api/multi-tenancy/tenants', + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + getById(id) { + /** @type {?} */ + const request = { + method: 'GET', + url: `/api/multi-tenancy/tenants/${id}`, + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + delete(id) { + /** @type {?} */ + const request = { + method: 'DELETE', + url: `/api/multi-tenancy/tenants/${id}`, + }; + return this.rest.request(request); + } + /** + * @param {?} body + * @return {?} + */ + add(body) { + /** @type {?} */ + const request = { + method: 'POST', + url: `/api/multi-tenancy/tenants`, + body, + }; + return this.rest.request(request); + } + /** + * @param {?} body + * @return {?} + */ + update(body) { + /** @type {?} */ + const url = `/api/multi-tenancy/tenants/${body.id}`; + delete body.id; + /** @type {?} */ + const request = { + method: 'PUT', + url, + body, + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + getDefaultConnectionString(id) { + /** @type {?} */ + const url = `/api/multi-tenancy/tenants/${id}/defaultConnectionString`; + /** @type {?} */ + const request = { + method: 'GET', + responseType: "text" /* Text */, + url, + }; + return this.rest.request(request); + } + /** + * @param {?} payload + * @return {?} + */ + updateDefaultConnectionString(payload) { + /** @type {?} */ + const url = `/api/multi-tenancy/tenants/${payload.id}/defaultConnectionString`; + /** @type {?} */ + const request = { + method: 'PUT', + url, + params: { defaultConnectionString: payload.defaultConnectionString }, + }; + return this.rest.request(request); + } + /** + * @param {?} id + * @return {?} + */ + deleteDefaultConnectionString(id) { + /** @type {?} */ + const url = `/api/multi-tenancy/tenant/${id}/defaultConnectionString`; + /** @type {?} */ + const request = { + method: 'DELETE', + url, + }; + return this.rest.request(request); + } +} +TenantManagementService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } +]; +/** @nocollapse */ +TenantManagementService.ctorParameters = () => [ + { type: RestService } +]; +/** @nocollapse */ TenantManagementService.ngInjectableDef = ɵɵdefineInjectable({ factory: function TenantManagementService_Factory() { return new TenantManagementService(ɵɵinject(RestService)); }, token: TenantManagementService, providedIn: "root" }); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +let TenantManagementState = class TenantManagementState { + /** + * @param {?} tenantManagementService + */ + constructor(tenantManagementService) { + this.tenantManagementService = tenantManagementService; + } + /** + * @param {?} __0 + * @return {?} + */ + static get({ result }) { + return result.items || []; + } + /** + * @param {?} __0 + * @return {?} + */ + get({ patchState }) { + return this.tenantManagementService.get().pipe(tap((/** + * @param {?} result + * @return {?} + */ + result => patchState({ + result, + })))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + getById({ patchState }, { payload }) { + return this.tenantManagementService.getById(payload).pipe(tap((/** + * @param {?} selectedItem + * @return {?} + */ + selectedItem => patchState({ + selectedItem, + })))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + delete({ dispatch }, { payload }) { + return this.tenantManagementService.delete(payload).pipe(switchMap((/** + * @return {?} + */ + () => dispatch(new TenantManagementGet())))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + add({ dispatch }, { payload }) { + return this.tenantManagementService.add(payload).pipe(switchMap((/** + * @return {?} + */ + () => dispatch(new TenantManagementGet())))); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + update({ dispatch, getState }, { payload }) { + return dispatch(new TenantManagementGetById(payload.id)).pipe(switchMap((/** + * @return {?} + */ + () => this.tenantManagementService.update(Object.assign({}, getState().selectedItem, payload)))), switchMap((/** + * @return {?} + */ + () => dispatch(new TenantManagementGet())))); + } +}; +__decorate([ + Action(TenantManagementGet), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) +], TenantManagementState.prototype, "get", null); +__decorate([ + Action(TenantManagementGetById), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, TenantManagementGetById]), + __metadata("design:returntype", void 0) +], TenantManagementState.prototype, "getById", null); +__decorate([ + Action(TenantManagementDelete), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, TenantManagementDelete]), + __metadata("design:returntype", void 0) +], TenantManagementState.prototype, "delete", null); +__decorate([ + Action(TenantManagementAdd), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, TenantManagementAdd]), + __metadata("design:returntype", void 0) +], TenantManagementState.prototype, "add", null); +__decorate([ + Action(TenantManagementUpdate), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, TenantManagementUpdate]), + __metadata("design:returntype", void 0) +], TenantManagementState.prototype, "update", null); +__decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Array) +], TenantManagementState, "get", null); +TenantManagementState = __decorate([ + State({ + name: 'TenantManagementState', + defaults: (/** @type {?} */ ({ result: {}, selectedItem: {} })), + }), + __metadata("design:paramtypes", [TenantManagementService]) +], TenantManagementState); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class TenantsComponent { + /** + * @param {?} confirmationService + * @param {?} tenantService + * @param {?} fb + * @param {?} store + */ + constructor(confirmationService, tenantService, fb, store) { + this.confirmationService = confirmationService; + this.tenantService = tenantService; + this.fb = fb; + this.store = store; + this.selectedModalContent = (/** @type {?} */ ({})); + } + /** + * @return {?} + */ + get useSharedDatabase() { + return this.defaultConnectionStringForm.get('useSharedDatabase').value; + } + /** + * @return {?} + */ + get connectionString() { + return this.defaultConnectionStringForm.get('defaultConnectionString').value; + } + /** + * @private + * @return {?} + */ + createTenantForm() { + this.tenantForm = this.fb.group({ + name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]], + }); + } + /** + * @private + * @return {?} + */ + createDefaultConnectionStringForm() { + this.defaultConnectionStringForm = this.fb.group({ + useSharedDatabase: this._useSharedDatabase, + defaultConnectionString: this.defaultConnectionString || '', + }); + } + /** + * @param {?} title + * @param {?} template + * @param {?} type + * @return {?} + */ + openModal(title, template, type) { + this.selectedModalContent = { + title, + template, + type, + }; + this.isModalVisible = true; + } + /** + * @param {?} id + * @return {?} + */ + onEditConnectionString(id) { + this.store + .dispatch(new TenantManagementGetById(id)) + .pipe(pluck('TenantManagementState', 'selectedItem'), switchMap((/** + * @param {?} selected + * @return {?} + */ + selected => { + this.selected = selected; + return this.tenantService.getDefaultConnectionString(id); + }))) + .subscribe((/** + * @param {?} fetchedConnectionString + * @return {?} + */ + fetchedConnectionString => { + this._useSharedDatabase = fetchedConnectionString ? false : true; + this.defaultConnectionString = fetchedConnectionString ? fetchedConnectionString : ''; + this.createDefaultConnectionStringForm(); + this.openModal('AbpTenantManagement::ConnectionStrings', this.connectionStringModalTemplate, 'saveConnStr'); + })); + } + /** + * @param {?} id + * @return {?} + */ + onManageFeatures(id) { + this.openModal('AbpTenantManagement::Features', this.featuresModalTemplate, 'saveFeatures'); + } + /** + * @return {?} + */ + onAddTenant() { + this.selected = (/** @type {?} */ ({})); + this.createTenantForm(); + this.openModal('AbpTenantManagement::NewTenant', this.tenantModalTemplate, 'saveTenant'); + } + /** + * @param {?} id + * @return {?} + */ + onEditTenant(id) { + this.store + .dispatch(new TenantManagementGetById(id)) + .pipe(pluck('TenantManagementState', 'selectedItem')) + .subscribe((/** + * @param {?} selected + * @return {?} + */ + selected => { + this.selected = selected; + this.createTenantForm(); + this.openModal('AbpTenantManagement::Edit', this.tenantModalTemplate, 'saveTenant'); + })); + } + /** + * @return {?} + */ + save() { + const { type } = this.selectedModalContent; + if (!type) + return; + if (type === 'saveTenant') + this.saveTenant(); + else if (type === 'saveConnStr') + this.saveConnectionString(); + } + /** + * @return {?} + */ + saveConnectionString() { + if (this.useSharedDatabase) { + this.tenantService + .deleteDefaultConnectionString(this.selected.id) + .pipe(take(1)) + .subscribe((/** + * @return {?} + */ + () => { + this.isModalVisible = false; + })); + } + else { + this.tenantService + .updateDefaultConnectionString({ id: this.selected.id, defaultConnectionString: this.connectionString }) + .pipe(take(1)) + .subscribe((/** + * @return {?} + */ + () => { + this.isModalVisible = false; + })); + } + } + /** + * @return {?} + */ + saveTenant() { + if (!this.tenantForm.valid) + return; + this.store + .dispatch(this.selected.id + ? new TenantManagementUpdate(Object.assign({}, this.tenantForm.value, { id: this.selected.id })) + : new TenantManagementAdd(this.tenantForm.value)) + .subscribe((/** + * @return {?} + */ + () => { + this.isModalVisible = false; + })); + } + /** + * @param {?} id + * @param {?} name + * @return {?} + */ + delete(id, name) { + this.confirmationService + .warn('AbpTenantManagement::TenantDeletionConfirmationMessage', 'AbpTenantManagement::AreYouSure', { + messageLocalizationParams: [name], + }) + .subscribe((/** + * @param {?} status + * @return {?} + */ + (status) => { + if (status === "confirm" /* confirm */) { + this.store.dispatch(new TenantManagementDelete(id)); + } + })); + } +} +TenantsComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-tenants', + template: "
\n
\n
\n
\n
\n {{ 'AbpTenantManagement::Tenants' | abpLocalization }}\n
\n
\n
\n \n \n {{ 'AbpTenantManagement::NewTenant' | abpLocalization }}\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpTenantManagement::Actions' | abpLocalization }}\n {{ 'AbpTenantManagement::TenantName' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpTenantManagement::Actions' | abpLocalization }}\n \n
\n \n {{ 'AbpTenantManagement::Edit' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::ConnectionStrings' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::Features' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::Delete' | abpLocalization }}\n \n
\n
\n \n {{ data.name }}\n \n
\n
\n
\n
\n\n\n \n

{{ selectedModalContent.title | abpLocalization }}

\n
\n\n \n \n \n\n \n \n \n \n
\n\n\n
\n
\n
\n \n \n
\n
\n
\n
\n\n\n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n\n\n Manage Features\n\n" + }] } +]; +/** @nocollapse */ +TenantsComponent.ctorParameters = () => [ + { type: ConfirmationService }, + { type: TenantManagementService }, + { type: FormBuilder }, + { type: Store } +]; +TenantsComponent.propDecorators = { + tenantModalTemplate: [{ type: ViewChild, args: ['tenantModalTemplate', { static: false },] }], + connectionStringModalTemplate: [{ type: ViewChild, args: ['connectionStringModalTemplate', { static: false },] }], + featuresModalTemplate: [{ type: ViewChild, args: ['featuresModalTemplate', { static: false },] }] +}; +__decorate([ + Select(TenantManagementState.get), + __metadata("design:type", Observable) +], TenantsComponent.prototype, "datas$", void 0); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class TenantsResolver { + /** + * @param {?} store + */ + constructor(store) { + this.store = store; + } + /** + * @return {?} + */ + resolve() { + /** @type {?} */ + const data = this.store.selectSnapshot(TenantManagementState.get); + return data && data.length + ? null + : this.store.dispatch(new TenantManagementGet()); + } +} +TenantsResolver.decorators = [ + { type: Injectable } +]; +/** @nocollapse */ +TenantsResolver.ctorParameters = () => [ + { type: Store } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +const ɵ0 = { requiredPolicy: 'AbpTenantManagement.Tenants' }; +/** @type {?} */ +const routes = [ + { path: '', redirectTo: 'tenants', pathMatch: 'full' }, + { + path: 'tenants', + component: DynamicLayoutComponent, + canActivate: [AuthGuard, PermissionGuard], + data: ɵ0, + children: [{ path: '', component: TenantsComponent, resolve: [TenantsResolver] }], + }, +]; +class TenantManagementRoutingModule { +} +TenantManagementRoutingModule.decorators = [ + { type: NgModule, args: [{ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], + providers: [TenantsResolver], + },] } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class TenantManagementModule { +} +TenantManagementModule.decorators = [ + { type: NgModule, args: [{ + declarations: [TenantsComponent], + imports: [ + TenantManagementRoutingModule, + NgxsModule.forFeature([TenantManagementState]), + CoreModule, + TableModule, + ThemeSharedModule, + NgbDropdownModule, + ], + },] } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +const TENANT_MANAGEMENT_ROUTES = (/** @type {?} */ ([ + { + name: 'Tenant Management', + path: 'tenant-management', + parentName: 'Administration', + layout: "application" /* application */, + children: [ + { + path: 'tenants', + name: 'Tenants', + order: 1, + requiredPolicy: 'AbpTenantManagement.Tenants', + }, + ], + }, +])); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var TenantManagement; +(function (TenantManagement) { + /** + * @record + */ + function State() { } + TenantManagement.State = State; + /** + * @record + */ + function Item() { } + TenantManagement.Item = Item; + /** + * @record + */ + function AddRequest() { } + TenantManagement.AddRequest = AddRequest; + /** + * @record + */ + function UpdateRequest() { } + TenantManagement.UpdateRequest = UpdateRequest; + /** + * @record + */ + function DefaultConnectionStringRequest() { } + TenantManagement.DefaultConnectionStringRequest = DefaultConnectionStringRequest; +})(TenantManagement || (TenantManagement = {})); + +export { TENANT_MANAGEMENT_ROUTES, TenantManagementAdd, TenantManagementDelete, TenantManagementGet, TenantManagementGetById, TenantManagementModule, TenantManagementService, TenantManagementState, TenantManagementUpdate, TenantsComponent, TenantsResolver, TenantsComponent as ɵa, TenantManagementState as ɵb, TenantManagementService as ɵc, TenantManagementGet as ɵd, TenantManagementGetById as ɵe, TenantManagementAdd as ɵf, TenantManagementUpdate as ɵg, TenantManagementDelete as ɵh, TenantManagementRoutingModule as ɵj, TenantsResolver as ɵk }; +//# sourceMappingURL=abp-ng.tenant-management.js.map diff --git a/npm/ng-packs/dist/tenant-management/fesm2015/abp-ng.tenant-management.js.map b/npm/ng-packs/dist/tenant-management/fesm2015/abp-ng.tenant-management.js.map new file mode 100644 index 00000000000..2b69e72ab42 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/fesm2015/abp-ng.tenant-management.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.tenant-management.js","sources":["ng://@abp/ng.tenant-management/lib/actions/tenant-management.actions.ts","ng://@abp/ng.tenant-management/lib/services/tenant-management.service.ts","ng://@abp/ng.tenant-management/lib/states/tenant-management.state.ts","ng://@abp/ng.tenant-management/lib/components/tenants/tenants.component.ts","ng://@abp/ng.tenant-management/lib/resolvers/tenants.resolver.ts","ng://@abp/ng.tenant-management/lib/tenant-management-routing.module.ts","ng://@abp/ng.tenant-management/lib/tenant-management.module.ts","ng://@abp/ng.tenant-management/lib/constants/routes.ts","ng://@abp/ng.tenant-management/lib/models/tenant-management.ts"],"sourcesContent":["import { TenantManagement } from '../models/tenant-management';\n\nexport class TenantManagementGet {\n static readonly type = '[TenantManagement] Get';\n}\n\nexport class TenantManagementGetById {\n static readonly type = '[TenantManagement] Get By Id';\n constructor(public payload: string) {}\n}\n\nexport class TenantManagementAdd {\n static readonly type = '[TenantManagement] Add';\n constructor(public payload: TenantManagement.AddRequest) {}\n}\n\nexport class TenantManagementUpdate {\n static readonly type = '[TenantManagement] Update';\n constructor(public payload: TenantManagement.UpdateRequest) {}\n}\n\nexport class TenantManagementDelete {\n static readonly type = '[TenantManagement] Delete';\n constructor(public payload: string) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RestService, Rest, ABP } from '@abp/ng.core';\nimport { TenantManagement } from '../models/tenant-management';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TenantManagementService {\n constructor(private rest: RestService) {}\n\n get(): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/multi-tenancy/tenants',\n };\n\n return this.rest.request(request);\n }\n\n getById(id: string): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: `/api/multi-tenancy/tenants/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n delete(id: string): Observable {\n const request: Rest.Request = {\n method: 'DELETE',\n url: `/api/multi-tenancy/tenants/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n add(body: TenantManagement.AddRequest): Observable {\n const request: Rest.Request = {\n method: 'POST',\n url: `/api/multi-tenancy/tenants`,\n body,\n };\n\n return this.rest.request(request);\n }\n\n update(body: TenantManagement.UpdateRequest): Observable {\n const url = `/api/multi-tenancy/tenants/${body.id}`;\n delete body.id;\n\n const request: Rest.Request = {\n method: 'PUT',\n url,\n body,\n };\n\n return this.rest.request(request);\n }\n\n getDefaultConnectionString(id: string): Observable {\n const url = `/api/multi-tenancy/tenants/${id}/defaultConnectionString`;\n\n const request: Rest.Request = {\n method: 'GET',\n responseType: Rest.ResponseType.Text,\n url,\n };\n return this.rest.request(request);\n }\n\n updateDefaultConnectionString(payload: TenantManagement.DefaultConnectionStringRequest): Observable {\n const url = `/api/multi-tenancy/tenants/${payload.id}/defaultConnectionString`;\n\n const request: Rest.Request = {\n method: 'PUT',\n url,\n params: { defaultConnectionString: payload.defaultConnectionString },\n };\n return this.rest.request(request);\n }\n\n deleteDefaultConnectionString(id: string): Observable {\n const url = `/api/multi-tenancy/tenant/${id}/defaultConnectionString`;\n\n const request: Rest.Request = {\n method: 'DELETE',\n url,\n };\n return this.rest.request(request);\n }\n}\n","import { Action, Selector, State, StateContext } from '@ngxs/store';\nimport { switchMap, tap } from 'rxjs/operators';\nimport {\n TenantManagementAdd,\n TenantManagementDelete,\n TenantManagementGet,\n TenantManagementGetById,\n TenantManagementUpdate,\n} from '../actions/tenant-management.actions';\nimport { TenantManagement } from '../models/tenant-management';\nimport { TenantManagementService } from '../services/tenant-management.service';\nimport { ABP } from '@abp/ng.core';\n\n@State({\n name: 'TenantManagementState',\n defaults: { result: {}, selectedItem: {} } as TenantManagement.State,\n})\nexport class TenantManagementState {\n @Selector()\n static get({ result }: TenantManagement.State): ABP.BasicItem[] {\n return result.items || [];\n }\n\n constructor(private tenantManagementService: TenantManagementService) {}\n\n @Action(TenantManagementGet)\n get({ patchState }: StateContext) {\n return this.tenantManagementService.get().pipe(\n tap(result =>\n patchState({\n result,\n }),\n ),\n );\n }\n\n @Action(TenantManagementGetById)\n getById({ patchState }: StateContext, { payload }: TenantManagementGetById) {\n return this.tenantManagementService.getById(payload).pipe(\n tap(selectedItem =>\n patchState({\n selectedItem,\n }),\n ),\n );\n }\n\n @Action(TenantManagementDelete)\n delete({ dispatch }: StateContext, { payload }: TenantManagementDelete) {\n return this.tenantManagementService.delete(payload).pipe(switchMap(() => dispatch(new TenantManagementGet())));\n }\n\n @Action(TenantManagementAdd)\n add({ dispatch }: StateContext, { payload }: TenantManagementAdd) {\n return this.tenantManagementService.add(payload).pipe(switchMap(() => dispatch(new TenantManagementGet())));\n }\n\n @Action(TenantManagementUpdate)\n update({ dispatch, getState }: StateContext, { payload }: TenantManagementUpdate) {\n return dispatch(new TenantManagementGetById(payload.id)).pipe(\n switchMap(() => this.tenantManagementService.update({ ...getState().selectedItem, ...payload })),\n switchMap(() => dispatch(new TenantManagementGet())),\n );\n }\n}\n","import { ABP } from '@abp/ng.core';\nimport { ConfirmationService, Toaster } from '@abp/ng.theme.shared';\nimport { Component, TemplateRef, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { pluck, switchMap, take } from 'rxjs/operators';\nimport {\n TenantManagementAdd,\n TenantManagementDelete,\n TenantManagementGetById,\n TenantManagementUpdate,\n} from '../../actions/tenant-management.actions';\nimport { TenantManagementService } from '../../services/tenant-management.service';\nimport { TenantManagementState } from '../../states/tenant-management.state';\n\ntype SelectedModalContent = {\n type: string;\n title: string;\n template: TemplateRef;\n};\n\n@Component({\n selector: 'abp-tenants',\n templateUrl: './tenants.component.html',\n})\nexport class TenantsComponent {\n @Select(TenantManagementState.get)\n datas$: Observable;\n\n selected: ABP.BasicItem;\n\n tenantForm: FormGroup;\n\n defaultConnectionStringForm: FormGroup;\n\n defaultConnectionString: string;\n\n isModalVisible: boolean;\n\n selectedModalContent = {} as SelectedModalContent;\n\n _useSharedDatabase: boolean;\n\n get useSharedDatabase(): boolean {\n return this.defaultConnectionStringForm.get('useSharedDatabase').value;\n }\n\n get connectionString(): string {\n return this.defaultConnectionStringForm.get('defaultConnectionString').value;\n }\n\n @ViewChild('tenantModalTemplate', { static: false })\n tenantModalTemplate: TemplateRef;\n\n @ViewChild('connectionStringModalTemplate', { static: false })\n connectionStringModalTemplate: TemplateRef;\n\n @ViewChild('featuresModalTemplate', { static: false })\n featuresModalTemplate: TemplateRef;\n\n constructor(\n private confirmationService: ConfirmationService,\n private tenantService: TenantManagementService,\n private fb: FormBuilder,\n private store: Store,\n ) {}\n\n private createTenantForm() {\n this.tenantForm = this.fb.group({\n name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]],\n });\n }\n\n private createDefaultConnectionStringForm() {\n this.defaultConnectionStringForm = this.fb.group({\n useSharedDatabase: this._useSharedDatabase,\n defaultConnectionString: this.defaultConnectionString || '',\n });\n }\n\n openModal(title: string, template: TemplateRef, type: string) {\n this.selectedModalContent = {\n title,\n template,\n type,\n };\n\n this.isModalVisible = true;\n }\n\n onEditConnectionString(id: string) {\n this.store\n .dispatch(new TenantManagementGetById(id))\n .pipe(\n pluck('TenantManagementState', 'selectedItem'),\n switchMap(selected => {\n this.selected = selected;\n return this.tenantService.getDefaultConnectionString(id);\n }),\n )\n .subscribe(fetchedConnectionString => {\n this._useSharedDatabase = fetchedConnectionString ? false : true;\n this.defaultConnectionString = fetchedConnectionString ? fetchedConnectionString : '';\n this.createDefaultConnectionStringForm();\n this.openModal('AbpTenantManagement::ConnectionStrings', this.connectionStringModalTemplate, 'saveConnStr');\n });\n }\n\n onManageFeatures(id: string) {\n this.openModal('AbpTenantManagement::Features', this.featuresModalTemplate, 'saveFeatures');\n }\n\n onAddTenant() {\n this.selected = {} as ABP.BasicItem;\n this.createTenantForm();\n this.openModal('AbpTenantManagement::NewTenant', this.tenantModalTemplate, 'saveTenant');\n }\n\n onEditTenant(id: string) {\n this.store\n .dispatch(new TenantManagementGetById(id))\n .pipe(pluck('TenantManagementState', 'selectedItem'))\n .subscribe(selected => {\n this.selected = selected;\n this.createTenantForm();\n this.openModal('AbpTenantManagement::Edit', this.tenantModalTemplate, 'saveTenant');\n });\n }\n\n save() {\n const { type } = this.selectedModalContent;\n if (!type) return;\n if (type === 'saveTenant') this.saveTenant();\n else if (type === 'saveConnStr') this.saveConnectionString();\n }\n\n saveConnectionString() {\n if (this.useSharedDatabase) {\n this.tenantService\n .deleteDefaultConnectionString(this.selected.id)\n .pipe(take(1))\n .subscribe(() => {\n this.isModalVisible = false;\n });\n } else {\n this.tenantService\n .updateDefaultConnectionString({ id: this.selected.id, defaultConnectionString: this.connectionString })\n .pipe(take(1))\n .subscribe(() => {\n this.isModalVisible = false;\n });\n }\n }\n\n saveTenant() {\n if (!this.tenantForm.valid) return;\n\n this.store\n .dispatch(\n this.selected.id\n ? new TenantManagementUpdate({ ...this.tenantForm.value, id: this.selected.id })\n : new TenantManagementAdd(this.tenantForm.value),\n )\n .subscribe(() => {\n this.isModalVisible = false;\n });\n }\n\n delete(id: string, name: string) {\n this.confirmationService\n .warn('AbpTenantManagement::TenantDeletionConfirmationMessage', 'AbpTenantManagement::AreYouSure', {\n messageLocalizationParams: [name],\n })\n .subscribe((status: Toaster.Status) => {\n if (status === Toaster.Status.confirm) {\n this.store.dispatch(new TenantManagementDelete(id));\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Resolve } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { TenantManagementGet } from '../actions/tenant-management.actions';\nimport { TenantManagement } from '../models/tenant-management';\nimport { TenantManagementState } from '../states/tenant-management.state';\n\n@Injectable()\nexport class TenantsResolver implements Resolve {\n constructor(private store: Store) {}\n\n resolve() {\n const data = this.store.selectSnapshot(TenantManagementState.get);\n return data && data.length\n ? null \n : this.store.dispatch(new TenantManagementGet());\n }\n}\n","import { AuthGuard, DynamicLayoutComponent, PermissionGuard } from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { TenantsResolver } from './resolvers/tenants.resolver';\nimport { TenantsComponent } from './components/tenants/tenants.component';\n\nconst routes: Routes = [\n { path: '', redirectTo: 'tenants', pathMatch: 'full' },\n {\n path: 'tenants',\n component: DynamicLayoutComponent,\n canActivate: [AuthGuard, PermissionGuard],\n data: { requiredPolicy: 'AbpTenantManagement.Tenants' },\n children: [{ path: '', component: TenantsComponent, resolve: [TenantsResolver] }],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n providers: [TenantsResolver],\n})\nexport class TenantManagementRoutingModule {}\n","import { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { NgModule } from '@angular/core';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxsModule } from '@ngxs/store';\nimport { TableModule } from 'primeng/table';\nimport { TenantsComponent } from './components/tenants/tenants.component';\nimport { TenantManagementState } from './states/tenant-management.state';\nimport { TenantManagementRoutingModule } from './tenant-management-routing.module';\n\n@NgModule({\n declarations: [TenantsComponent],\n imports: [\n TenantManagementRoutingModule,\n NgxsModule.forFeature([TenantManagementState]),\n CoreModule,\n TableModule,\n ThemeSharedModule,\n NgbDropdownModule,\n ],\n})\nexport class TenantManagementModule {}\n","import { ABP, eLayoutType } from '@abp/ng.core';\n\nexport const TENANT_MANAGEMENT_ROUTES = [\n {\n name: 'Tenant Management',\n path: 'tenant-management',\n parentName: 'Administration',\n layout: eLayoutType.application,\n children: [\n {\n path: 'tenants',\n name: 'Tenants',\n order: 1,\n requiredPolicy: 'AbpTenantManagement.Tenants',\n },\n ],\n },\n] as ABP.FullRoute[];\n","import { ABP } from '@abp/ng.core';\n\nexport namespace TenantManagement {\n export interface State {\n result: Response;\n selectedItem: Item;\n }\n\n export type Response = ABP.PagedResponse;\n\n export interface Item {\n id: string;\n name: string;\n }\n\n export interface AddRequest {\n name: string;\n }\n\n export interface UpdateRequest extends AddRequest {\n id: string;\n }\n\n export interface DefaultConnectionStringRequest {\n id: string;\n defaultConnectionString: string;\n }\n}\n"],"names":["tslib_1.__decorate"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/fesm5/abp-ng.tenant-management.js b/npm/ng-packs/dist/tenant-management/fesm5/abp-ng.tenant-management.js new file mode 100644 index 00000000000..35d63da8285 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/fesm5/abp-ng.tenant-management.js @@ -0,0 +1,791 @@ +import { RestService, DynamicLayoutComponent, AuthGuard, PermissionGuard, CoreModule } from '@abp/ng.core'; +import { ConfirmationService, ThemeSharedModule } from '@abp/ng.theme.shared'; +import { Injectable, ɵɵdefineInjectable, ɵɵinject, Component, ViewChild, NgModule } from '@angular/core'; +import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { Action, Selector, State, Store, Select, NgxsModule } from '@ngxs/store'; +import { TableModule } from 'primeng/table'; +import { __assign, __decorate, __metadata } from 'tslib'; +import { Validators, FormBuilder } from '@angular/forms'; +import { Observable } from 'rxjs'; +import { tap, switchMap, pluck, take } from 'rxjs/operators'; +import { RouterModule } from '@angular/router'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var TenantManagementGet = /** @class */ (function () { + function TenantManagementGet() { + } + TenantManagementGet.type = '[TenantManagement] Get'; + return TenantManagementGet; +}()); +var TenantManagementGetById = /** @class */ (function () { + function TenantManagementGetById(payload) { + this.payload = payload; + } + TenantManagementGetById.type = '[TenantManagement] Get By Id'; + return TenantManagementGetById; +}()); +var TenantManagementAdd = /** @class */ (function () { + function TenantManagementAdd(payload) { + this.payload = payload; + } + TenantManagementAdd.type = '[TenantManagement] Add'; + return TenantManagementAdd; +}()); +var TenantManagementUpdate = /** @class */ (function () { + function TenantManagementUpdate(payload) { + this.payload = payload; + } + TenantManagementUpdate.type = '[TenantManagement] Update'; + return TenantManagementUpdate; +}()); +var TenantManagementDelete = /** @class */ (function () { + function TenantManagementDelete(payload) { + this.payload = payload; + } + TenantManagementDelete.type = '[TenantManagement] Delete'; + return TenantManagementDelete; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var TenantManagementService = /** @class */ (function () { + function TenantManagementService(rest) { + this.rest = rest; + } + /** + * @return {?} + */ + TenantManagementService.prototype.get = /** + * @return {?} + */ + function () { + /** @type {?} */ + var request = { + method: 'GET', + url: '/api/multi-tenancy/tenants', + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + TenantManagementService.prototype.getById = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'GET', + url: "/api/multi-tenancy/tenants/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + TenantManagementService.prototype.delete = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var request = { + method: 'DELETE', + url: "/api/multi-tenancy/tenants/" + id, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + TenantManagementService.prototype.add = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var request = { + method: 'POST', + url: "/api/multi-tenancy/tenants", + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?} body + * @return {?} + */ + TenantManagementService.prototype.update = /** + * @param {?} body + * @return {?} + */ + function (body) { + /** @type {?} */ + var url = "/api/multi-tenancy/tenants/" + body.id; + delete body.id; + /** @type {?} */ + var request = { + method: 'PUT', + url: url, + body: body, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + TenantManagementService.prototype.getDefaultConnectionString = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var url = "/api/multi-tenancy/tenants/" + id + "/defaultConnectionString"; + /** @type {?} */ + var request = { + method: 'GET', + responseType: "text" /* Text */, + url: url, + }; + return this.rest.request(request); + }; + /** + * @param {?} payload + * @return {?} + */ + TenantManagementService.prototype.updateDefaultConnectionString = /** + * @param {?} payload + * @return {?} + */ + function (payload) { + /** @type {?} */ + var url = "/api/multi-tenancy/tenants/" + payload.id + "/defaultConnectionString"; + /** @type {?} */ + var request = { + method: 'PUT', + url: url, + params: { defaultConnectionString: payload.defaultConnectionString }, + }; + return this.rest.request(request); + }; + /** + * @param {?} id + * @return {?} + */ + TenantManagementService.prototype.deleteDefaultConnectionString = /** + * @param {?} id + * @return {?} + */ + function (id) { + /** @type {?} */ + var url = "/api/multi-tenancy/tenant/" + id + "/defaultConnectionString"; + /** @type {?} */ + var request = { + method: 'DELETE', + url: url, + }; + return this.rest.request(request); + }; + TenantManagementService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root', + },] } + ]; + /** @nocollapse */ + TenantManagementService.ctorParameters = function () { return [ + { type: RestService } + ]; }; + /** @nocollapse */ TenantManagementService.ngInjectableDef = ɵɵdefineInjectable({ factory: function TenantManagementService_Factory() { return new TenantManagementService(ɵɵinject(RestService)); }, token: TenantManagementService, providedIn: "root" }); + return TenantManagementService; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var TenantManagementState = /** @class */ (function () { + function TenantManagementState(tenantManagementService) { + this.tenantManagementService = tenantManagementService; + } + /** + * @param {?} __0 + * @return {?} + */ + TenantManagementState.get = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var result = _a.result; + return result.items || []; + }; + /** + * @param {?} __0 + * @return {?} + */ + TenantManagementState.prototype.get = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var patchState = _a.patchState; + return this.tenantManagementService.get().pipe(tap((/** + * @param {?} result + * @return {?} + */ + function (result) { + return patchState({ + result: result, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + TenantManagementState.prototype.getById = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var patchState = _a.patchState; + var payload = _b.payload; + return this.tenantManagementService.getById(payload).pipe(tap((/** + * @param {?} selectedItem + * @return {?} + */ + function (selectedItem) { + return patchState({ + selectedItem: selectedItem, + }); + }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + TenantManagementState.prototype.delete = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.tenantManagementService.delete(payload).pipe(switchMap((/** + * @return {?} + */ + function () { return dispatch(new TenantManagementGet()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + TenantManagementState.prototype.add = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var dispatch = _a.dispatch; + var payload = _b.payload; + return this.tenantManagementService.add(payload).pipe(switchMap((/** + * @return {?} + */ + function () { return dispatch(new TenantManagementGet()); }))); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + TenantManagementState.prototype.update = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var _this = this; + var dispatch = _a.dispatch, getState = _a.getState; + var payload = _b.payload; + return dispatch(new TenantManagementGetById(payload.id)).pipe(switchMap((/** + * @return {?} + */ + function () { return _this.tenantManagementService.update(__assign({}, getState().selectedItem, payload)); })), switchMap((/** + * @return {?} + */ + function () { return dispatch(new TenantManagementGet()); }))); + }; + __decorate([ + Action(TenantManagementGet), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", void 0) + ], TenantManagementState.prototype, "get", null); + __decorate([ + Action(TenantManagementGetById), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, TenantManagementGetById]), + __metadata("design:returntype", void 0) + ], TenantManagementState.prototype, "getById", null); + __decorate([ + Action(TenantManagementDelete), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, TenantManagementDelete]), + __metadata("design:returntype", void 0) + ], TenantManagementState.prototype, "delete", null); + __decorate([ + Action(TenantManagementAdd), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, TenantManagementAdd]), + __metadata("design:returntype", void 0) + ], TenantManagementState.prototype, "add", null); + __decorate([ + Action(TenantManagementUpdate), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, TenantManagementUpdate]), + __metadata("design:returntype", void 0) + ], TenantManagementState.prototype, "update", null); + __decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Array) + ], TenantManagementState, "get", null); + TenantManagementState = __decorate([ + State({ + name: 'TenantManagementState', + defaults: (/** @type {?} */ ({ result: {}, selectedItem: {} })), + }), + __metadata("design:paramtypes", [TenantManagementService]) + ], TenantManagementState); + return TenantManagementState; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var TenantsComponent = /** @class */ (function () { + function TenantsComponent(confirmationService, tenantService, fb, store) { + this.confirmationService = confirmationService; + this.tenantService = tenantService; + this.fb = fb; + this.store = store; + this.selectedModalContent = (/** @type {?} */ ({})); + } + Object.defineProperty(TenantsComponent.prototype, "useSharedDatabase", { + get: /** + * @return {?} + */ + function () { + return this.defaultConnectionStringForm.get('useSharedDatabase').value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(TenantsComponent.prototype, "connectionString", { + get: /** + * @return {?} + */ + function () { + return this.defaultConnectionStringForm.get('defaultConnectionString').value; + }, + enumerable: true, + configurable: true + }); + /** + * @private + * @return {?} + */ + TenantsComponent.prototype.createTenantForm = /** + * @private + * @return {?} + */ + function () { + this.tenantForm = this.fb.group({ + name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]], + }); + }; + /** + * @private + * @return {?} + */ + TenantsComponent.prototype.createDefaultConnectionStringForm = /** + * @private + * @return {?} + */ + function () { + this.defaultConnectionStringForm = this.fb.group({ + useSharedDatabase: this._useSharedDatabase, + defaultConnectionString: this.defaultConnectionString || '', + }); + }; + /** + * @param {?} title + * @param {?} template + * @param {?} type + * @return {?} + */ + TenantsComponent.prototype.openModal = /** + * @param {?} title + * @param {?} template + * @param {?} type + * @return {?} + */ + function (title, template, type) { + this.selectedModalContent = { + title: title, + template: template, + type: type, + }; + this.isModalVisible = true; + }; + /** + * @param {?} id + * @return {?} + */ + TenantsComponent.prototype.onEditConnectionString = /** + * @param {?} id + * @return {?} + */ + function (id) { + var _this = this; + this.store + .dispatch(new TenantManagementGetById(id)) + .pipe(pluck('TenantManagementState', 'selectedItem'), switchMap((/** + * @param {?} selected + * @return {?} + */ + function (selected) { + _this.selected = selected; + return _this.tenantService.getDefaultConnectionString(id); + }))) + .subscribe((/** + * @param {?} fetchedConnectionString + * @return {?} + */ + function (fetchedConnectionString) { + _this._useSharedDatabase = fetchedConnectionString ? false : true; + _this.defaultConnectionString = fetchedConnectionString ? fetchedConnectionString : ''; + _this.createDefaultConnectionStringForm(); + _this.openModal('AbpTenantManagement::ConnectionStrings', _this.connectionStringModalTemplate, 'saveConnStr'); + })); + }; + /** + * @param {?} id + * @return {?} + */ + TenantsComponent.prototype.onManageFeatures = /** + * @param {?} id + * @return {?} + */ + function (id) { + this.openModal('AbpTenantManagement::Features', this.featuresModalTemplate, 'saveFeatures'); + }; + /** + * @return {?} + */ + TenantsComponent.prototype.onAddTenant = /** + * @return {?} + */ + function () { + this.selected = (/** @type {?} */ ({})); + this.createTenantForm(); + this.openModal('AbpTenantManagement::NewTenant', this.tenantModalTemplate, 'saveTenant'); + }; + /** + * @param {?} id + * @return {?} + */ + TenantsComponent.prototype.onEditTenant = /** + * @param {?} id + * @return {?} + */ + function (id) { + var _this = this; + this.store + .dispatch(new TenantManagementGetById(id)) + .pipe(pluck('TenantManagementState', 'selectedItem')) + .subscribe((/** + * @param {?} selected + * @return {?} + */ + function (selected) { + _this.selected = selected; + _this.createTenantForm(); + _this.openModal('AbpTenantManagement::Edit', _this.tenantModalTemplate, 'saveTenant'); + })); + }; + /** + * @return {?} + */ + TenantsComponent.prototype.save = /** + * @return {?} + */ + function () { + var type = this.selectedModalContent.type; + if (!type) + return; + if (type === 'saveTenant') + this.saveTenant(); + else if (type === 'saveConnStr') + this.saveConnectionString(); + }; + /** + * @return {?} + */ + TenantsComponent.prototype.saveConnectionString = /** + * @return {?} + */ + function () { + var _this = this; + if (this.useSharedDatabase) { + this.tenantService + .deleteDefaultConnectionString(this.selected.id) + .pipe(take(1)) + .subscribe((/** + * @return {?} + */ + function () { + _this.isModalVisible = false; + })); + } + else { + this.tenantService + .updateDefaultConnectionString({ id: this.selected.id, defaultConnectionString: this.connectionString }) + .pipe(take(1)) + .subscribe((/** + * @return {?} + */ + function () { + _this.isModalVisible = false; + })); + } + }; + /** + * @return {?} + */ + TenantsComponent.prototype.saveTenant = /** + * @return {?} + */ + function () { + var _this = this; + if (!this.tenantForm.valid) + return; + this.store + .dispatch(this.selected.id + ? new TenantManagementUpdate(__assign({}, this.tenantForm.value, { id: this.selected.id })) + : new TenantManagementAdd(this.tenantForm.value)) + .subscribe((/** + * @return {?} + */ + function () { + _this.isModalVisible = false; + })); + }; + /** + * @param {?} id + * @param {?} name + * @return {?} + */ + TenantsComponent.prototype.delete = /** + * @param {?} id + * @param {?} name + * @return {?} + */ + function (id, name) { + var _this = this; + this.confirmationService + .warn('AbpTenantManagement::TenantDeletionConfirmationMessage', 'AbpTenantManagement::AreYouSure', { + messageLocalizationParams: [name], + }) + .subscribe((/** + * @param {?} status + * @return {?} + */ + function (status) { + if (status === "confirm" /* confirm */) { + _this.store.dispatch(new TenantManagementDelete(id)); + } + })); + }; + TenantsComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-tenants', + template: "
\n
\n
\n
\n
\n {{ 'AbpTenantManagement::Tenants' | abpLocalization }}\n
\n
\n
\n \n \n {{ 'AbpTenantManagement::NewTenant' | abpLocalization }}\n \n
\n
\n
\n
\n
\n \n
\n \n \n \n {{ 'AbpTenantManagement::Actions' | abpLocalization }}\n {{ 'AbpTenantManagement::TenantName' | abpLocalization }}\n \n \n \n \n \n
\n \n {{ 'AbpTenantManagement::Actions' | abpLocalization }}\n \n
\n \n {{ 'AbpTenantManagement::Edit' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::ConnectionStrings' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::Features' | abpLocalization }}\n \n \n {{ 'AbpTenantManagement::Delete' | abpLocalization }}\n \n
\n
\n \n {{ data.name }}\n \n
\n
\n
\n
\n\n\n \n

{{ selectedModalContent.title | abpLocalization }}

\n
\n\n \n \n \n\n \n \n \n \n
\n\n\n
\n
\n
\n \n \n
\n
\n
\n
\n\n\n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n\n\n Manage Features\n\n" + }] } + ]; + /** @nocollapse */ + TenantsComponent.ctorParameters = function () { return [ + { type: ConfirmationService }, + { type: TenantManagementService }, + { type: FormBuilder }, + { type: Store } + ]; }; + TenantsComponent.propDecorators = { + tenantModalTemplate: [{ type: ViewChild, args: ['tenantModalTemplate', { static: false },] }], + connectionStringModalTemplate: [{ type: ViewChild, args: ['connectionStringModalTemplate', { static: false },] }], + featuresModalTemplate: [{ type: ViewChild, args: ['featuresModalTemplate', { static: false },] }] + }; + __decorate([ + Select(TenantManagementState.get), + __metadata("design:type", Observable) + ], TenantsComponent.prototype, "datas$", void 0); + return TenantsComponent; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var TenantsResolver = /** @class */ (function () { + function TenantsResolver(store) { + this.store = store; + } + /** + * @return {?} + */ + TenantsResolver.prototype.resolve = /** + * @return {?} + */ + function () { + /** @type {?} */ + var data = this.store.selectSnapshot(TenantManagementState.get); + return data && data.length + ? null + : this.store.dispatch(new TenantManagementGet()); + }; + TenantsResolver.decorators = [ + { type: Injectable } + ]; + /** @nocollapse */ + TenantsResolver.ctorParameters = function () { return [ + { type: Store } + ]; }; + return TenantsResolver; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ɵ0 = { requiredPolicy: 'AbpTenantManagement.Tenants' }; +/** @type {?} */ +var routes = [ + { path: '', redirectTo: 'tenants', pathMatch: 'full' }, + { + path: 'tenants', + component: DynamicLayoutComponent, + canActivate: [AuthGuard, PermissionGuard], + data: ɵ0, + children: [{ path: '', component: TenantsComponent, resolve: [TenantsResolver] }], + }, +]; +var TenantManagementRoutingModule = /** @class */ (function () { + function TenantManagementRoutingModule() { + } + TenantManagementRoutingModule.decorators = [ + { type: NgModule, args: [{ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], + providers: [TenantsResolver], + },] } + ]; + return TenantManagementRoutingModule; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var TenantManagementModule = /** @class */ (function () { + function TenantManagementModule() { + } + TenantManagementModule.decorators = [ + { type: NgModule, args: [{ + declarations: [TenantsComponent], + imports: [ + TenantManagementRoutingModule, + NgxsModule.forFeature([TenantManagementState]), + CoreModule, + TableModule, + ThemeSharedModule, + NgbDropdownModule, + ], + },] } + ]; + return TenantManagementModule; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var TENANT_MANAGEMENT_ROUTES = (/** @type {?} */ ([ + { + name: 'Tenant Management', + path: 'tenant-management', + parentName: 'Administration', + layout: "application" /* application */, + children: [ + { + path: 'tenants', + name: 'Tenants', + order: 1, + requiredPolicy: 'AbpTenantManagement.Tenants', + }, + ], + }, +])); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var TenantManagement; +(function (TenantManagement) { + /** + * @record + */ + function State() { } + TenantManagement.State = State; + /** + * @record + */ + function Item() { } + TenantManagement.Item = Item; + /** + * @record + */ + function AddRequest() { } + TenantManagement.AddRequest = AddRequest; + /** + * @record + */ + function UpdateRequest() { } + TenantManagement.UpdateRequest = UpdateRequest; + /** + * @record + */ + function DefaultConnectionStringRequest() { } + TenantManagement.DefaultConnectionStringRequest = DefaultConnectionStringRequest; +})(TenantManagement || (TenantManagement = {})); + +export { TENANT_MANAGEMENT_ROUTES, TenantManagementAdd, TenantManagementDelete, TenantManagementGet, TenantManagementGetById, TenantManagementModule, TenantManagementService, TenantManagementState, TenantManagementUpdate, TenantsComponent, TenantsResolver, TenantsComponent as ɵa, TenantManagementState as ɵb, TenantManagementService as ɵc, TenantManagementGet as ɵd, TenantManagementGetById as ɵe, TenantManagementAdd as ɵf, TenantManagementUpdate as ɵg, TenantManagementDelete as ɵh, TenantManagementRoutingModule as ɵj, TenantsResolver as ɵk }; +//# sourceMappingURL=abp-ng.tenant-management.js.map diff --git a/npm/ng-packs/dist/tenant-management/fesm5/abp-ng.tenant-management.js.map b/npm/ng-packs/dist/tenant-management/fesm5/abp-ng.tenant-management.js.map new file mode 100644 index 00000000000..1a278e80cb5 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/fesm5/abp-ng.tenant-management.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.tenant-management.js","sources":["ng://@abp/ng.tenant-management/lib/actions/tenant-management.actions.ts","ng://@abp/ng.tenant-management/lib/services/tenant-management.service.ts","ng://@abp/ng.tenant-management/lib/states/tenant-management.state.ts","ng://@abp/ng.tenant-management/lib/components/tenants/tenants.component.ts","ng://@abp/ng.tenant-management/lib/resolvers/tenants.resolver.ts","ng://@abp/ng.tenant-management/lib/tenant-management-routing.module.ts","ng://@abp/ng.tenant-management/lib/tenant-management.module.ts","ng://@abp/ng.tenant-management/lib/constants/routes.ts","ng://@abp/ng.tenant-management/lib/models/tenant-management.ts"],"sourcesContent":["import { TenantManagement } from '../models/tenant-management';\n\nexport class TenantManagementGet {\n static readonly type = '[TenantManagement] Get';\n}\n\nexport class TenantManagementGetById {\n static readonly type = '[TenantManagement] Get By Id';\n constructor(public payload: string) {}\n}\n\nexport class TenantManagementAdd {\n static readonly type = '[TenantManagement] Add';\n constructor(public payload: TenantManagement.AddRequest) {}\n}\n\nexport class TenantManagementUpdate {\n static readonly type = '[TenantManagement] Update';\n constructor(public payload: TenantManagement.UpdateRequest) {}\n}\n\nexport class TenantManagementDelete {\n static readonly type = '[TenantManagement] Delete';\n constructor(public payload: string) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RestService, Rest, ABP } from '@abp/ng.core';\nimport { TenantManagement } from '../models/tenant-management';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TenantManagementService {\n constructor(private rest: RestService) {}\n\n get(): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: '/api/multi-tenancy/tenants',\n };\n\n return this.rest.request(request);\n }\n\n getById(id: string): Observable {\n const request: Rest.Request = {\n method: 'GET',\n url: `/api/multi-tenancy/tenants/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n delete(id: string): Observable {\n const request: Rest.Request = {\n method: 'DELETE',\n url: `/api/multi-tenancy/tenants/${id}`,\n };\n\n return this.rest.request(request);\n }\n\n add(body: TenantManagement.AddRequest): Observable {\n const request: Rest.Request = {\n method: 'POST',\n url: `/api/multi-tenancy/tenants`,\n body,\n };\n\n return this.rest.request(request);\n }\n\n update(body: TenantManagement.UpdateRequest): Observable {\n const url = `/api/multi-tenancy/tenants/${body.id}`;\n delete body.id;\n\n const request: Rest.Request = {\n method: 'PUT',\n url,\n body,\n };\n\n return this.rest.request(request);\n }\n\n getDefaultConnectionString(id: string): Observable {\n const url = `/api/multi-tenancy/tenants/${id}/defaultConnectionString`;\n\n const request: Rest.Request = {\n method: 'GET',\n responseType: Rest.ResponseType.Text,\n url,\n };\n return this.rest.request(request);\n }\n\n updateDefaultConnectionString(payload: TenantManagement.DefaultConnectionStringRequest): Observable {\n const url = `/api/multi-tenancy/tenants/${payload.id}/defaultConnectionString`;\n\n const request: Rest.Request = {\n method: 'PUT',\n url,\n params: { defaultConnectionString: payload.defaultConnectionString },\n };\n return this.rest.request(request);\n }\n\n deleteDefaultConnectionString(id: string): Observable {\n const url = `/api/multi-tenancy/tenant/${id}/defaultConnectionString`;\n\n const request: Rest.Request = {\n method: 'DELETE',\n url,\n };\n return this.rest.request(request);\n }\n}\n","import { Action, Selector, State, StateContext } from '@ngxs/store';\nimport { switchMap, tap } from 'rxjs/operators';\nimport {\n TenantManagementAdd,\n TenantManagementDelete,\n TenantManagementGet,\n TenantManagementGetById,\n TenantManagementUpdate,\n} from '../actions/tenant-management.actions';\nimport { TenantManagement } from '../models/tenant-management';\nimport { TenantManagementService } from '../services/tenant-management.service';\nimport { ABP } from '@abp/ng.core';\n\n@State({\n name: 'TenantManagementState',\n defaults: { result: {}, selectedItem: {} } as TenantManagement.State,\n})\nexport class TenantManagementState {\n @Selector()\n static get({ result }: TenantManagement.State): ABP.BasicItem[] {\n return result.items || [];\n }\n\n constructor(private tenantManagementService: TenantManagementService) {}\n\n @Action(TenantManagementGet)\n get({ patchState }: StateContext) {\n return this.tenantManagementService.get().pipe(\n tap(result =>\n patchState({\n result,\n }),\n ),\n );\n }\n\n @Action(TenantManagementGetById)\n getById({ patchState }: StateContext, { payload }: TenantManagementGetById) {\n return this.tenantManagementService.getById(payload).pipe(\n tap(selectedItem =>\n patchState({\n selectedItem,\n }),\n ),\n );\n }\n\n @Action(TenantManagementDelete)\n delete({ dispatch }: StateContext, { payload }: TenantManagementDelete) {\n return this.tenantManagementService.delete(payload).pipe(switchMap(() => dispatch(new TenantManagementGet())));\n }\n\n @Action(TenantManagementAdd)\n add({ dispatch }: StateContext, { payload }: TenantManagementAdd) {\n return this.tenantManagementService.add(payload).pipe(switchMap(() => dispatch(new TenantManagementGet())));\n }\n\n @Action(TenantManagementUpdate)\n update({ dispatch, getState }: StateContext, { payload }: TenantManagementUpdate) {\n return dispatch(new TenantManagementGetById(payload.id)).pipe(\n switchMap(() => this.tenantManagementService.update({ ...getState().selectedItem, ...payload })),\n switchMap(() => dispatch(new TenantManagementGet())),\n );\n }\n}\n","import { ABP } from '@abp/ng.core';\nimport { ConfirmationService, Toaster } from '@abp/ng.theme.shared';\nimport { Component, TemplateRef, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { pluck, switchMap, take } from 'rxjs/operators';\nimport {\n TenantManagementAdd,\n TenantManagementDelete,\n TenantManagementGetById,\n TenantManagementUpdate,\n} from '../../actions/tenant-management.actions';\nimport { TenantManagementService } from '../../services/tenant-management.service';\nimport { TenantManagementState } from '../../states/tenant-management.state';\n\ntype SelectedModalContent = {\n type: string;\n title: string;\n template: TemplateRef;\n};\n\n@Component({\n selector: 'abp-tenants',\n templateUrl: './tenants.component.html',\n})\nexport class TenantsComponent {\n @Select(TenantManagementState.get)\n datas$: Observable;\n\n selected: ABP.BasicItem;\n\n tenantForm: FormGroup;\n\n defaultConnectionStringForm: FormGroup;\n\n defaultConnectionString: string;\n\n isModalVisible: boolean;\n\n selectedModalContent = {} as SelectedModalContent;\n\n _useSharedDatabase: boolean;\n\n get useSharedDatabase(): boolean {\n return this.defaultConnectionStringForm.get('useSharedDatabase').value;\n }\n\n get connectionString(): string {\n return this.defaultConnectionStringForm.get('defaultConnectionString').value;\n }\n\n @ViewChild('tenantModalTemplate', { static: false })\n tenantModalTemplate: TemplateRef;\n\n @ViewChild('connectionStringModalTemplate', { static: false })\n connectionStringModalTemplate: TemplateRef;\n\n @ViewChild('featuresModalTemplate', { static: false })\n featuresModalTemplate: TemplateRef;\n\n constructor(\n private confirmationService: ConfirmationService,\n private tenantService: TenantManagementService,\n private fb: FormBuilder,\n private store: Store,\n ) {}\n\n private createTenantForm() {\n this.tenantForm = this.fb.group({\n name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]],\n });\n }\n\n private createDefaultConnectionStringForm() {\n this.defaultConnectionStringForm = this.fb.group({\n useSharedDatabase: this._useSharedDatabase,\n defaultConnectionString: this.defaultConnectionString || '',\n });\n }\n\n openModal(title: string, template: TemplateRef, type: string) {\n this.selectedModalContent = {\n title,\n template,\n type,\n };\n\n this.isModalVisible = true;\n }\n\n onEditConnectionString(id: string) {\n this.store\n .dispatch(new TenantManagementGetById(id))\n .pipe(\n pluck('TenantManagementState', 'selectedItem'),\n switchMap(selected => {\n this.selected = selected;\n return this.tenantService.getDefaultConnectionString(id);\n }),\n )\n .subscribe(fetchedConnectionString => {\n this._useSharedDatabase = fetchedConnectionString ? false : true;\n this.defaultConnectionString = fetchedConnectionString ? fetchedConnectionString : '';\n this.createDefaultConnectionStringForm();\n this.openModal('AbpTenantManagement::ConnectionStrings', this.connectionStringModalTemplate, 'saveConnStr');\n });\n }\n\n onManageFeatures(id: string) {\n this.openModal('AbpTenantManagement::Features', this.featuresModalTemplate, 'saveFeatures');\n }\n\n onAddTenant() {\n this.selected = {} as ABP.BasicItem;\n this.createTenantForm();\n this.openModal('AbpTenantManagement::NewTenant', this.tenantModalTemplate, 'saveTenant');\n }\n\n onEditTenant(id: string) {\n this.store\n .dispatch(new TenantManagementGetById(id))\n .pipe(pluck('TenantManagementState', 'selectedItem'))\n .subscribe(selected => {\n this.selected = selected;\n this.createTenantForm();\n this.openModal('AbpTenantManagement::Edit', this.tenantModalTemplate, 'saveTenant');\n });\n }\n\n save() {\n const { type } = this.selectedModalContent;\n if (!type) return;\n if (type === 'saveTenant') this.saveTenant();\n else if (type === 'saveConnStr') this.saveConnectionString();\n }\n\n saveConnectionString() {\n if (this.useSharedDatabase) {\n this.tenantService\n .deleteDefaultConnectionString(this.selected.id)\n .pipe(take(1))\n .subscribe(() => {\n this.isModalVisible = false;\n });\n } else {\n this.tenantService\n .updateDefaultConnectionString({ id: this.selected.id, defaultConnectionString: this.connectionString })\n .pipe(take(1))\n .subscribe(() => {\n this.isModalVisible = false;\n });\n }\n }\n\n saveTenant() {\n if (!this.tenantForm.valid) return;\n\n this.store\n .dispatch(\n this.selected.id\n ? new TenantManagementUpdate({ ...this.tenantForm.value, id: this.selected.id })\n : new TenantManagementAdd(this.tenantForm.value),\n )\n .subscribe(() => {\n this.isModalVisible = false;\n });\n }\n\n delete(id: string, name: string) {\n this.confirmationService\n .warn('AbpTenantManagement::TenantDeletionConfirmationMessage', 'AbpTenantManagement::AreYouSure', {\n messageLocalizationParams: [name],\n })\n .subscribe((status: Toaster.Status) => {\n if (status === Toaster.Status.confirm) {\n this.store.dispatch(new TenantManagementDelete(id));\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Resolve } from '@angular/router';\nimport { Store } from '@ngxs/store';\nimport { TenantManagementGet } from '../actions/tenant-management.actions';\nimport { TenantManagement } from '../models/tenant-management';\nimport { TenantManagementState } from '../states/tenant-management.state';\n\n@Injectable()\nexport class TenantsResolver implements Resolve {\n constructor(private store: Store) {}\n\n resolve() {\n const data = this.store.selectSnapshot(TenantManagementState.get);\n return data && data.length\n ? null \n : this.store.dispatch(new TenantManagementGet());\n }\n}\n","import { AuthGuard, DynamicLayoutComponent, PermissionGuard } from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { TenantsResolver } from './resolvers/tenants.resolver';\nimport { TenantsComponent } from './components/tenants/tenants.component';\n\nconst routes: Routes = [\n { path: '', redirectTo: 'tenants', pathMatch: 'full' },\n {\n path: 'tenants',\n component: DynamicLayoutComponent,\n canActivate: [AuthGuard, PermissionGuard],\n data: { requiredPolicy: 'AbpTenantManagement.Tenants' },\n children: [{ path: '', component: TenantsComponent, resolve: [TenantsResolver] }],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n providers: [TenantsResolver],\n})\nexport class TenantManagementRoutingModule {}\n","import { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { NgModule } from '@angular/core';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxsModule } from '@ngxs/store';\nimport { TableModule } from 'primeng/table';\nimport { TenantsComponent } from './components/tenants/tenants.component';\nimport { TenantManagementState } from './states/tenant-management.state';\nimport { TenantManagementRoutingModule } from './tenant-management-routing.module';\n\n@NgModule({\n declarations: [TenantsComponent],\n imports: [\n TenantManagementRoutingModule,\n NgxsModule.forFeature([TenantManagementState]),\n CoreModule,\n TableModule,\n ThemeSharedModule,\n NgbDropdownModule,\n ],\n})\nexport class TenantManagementModule {}\n","import { ABP, eLayoutType } from '@abp/ng.core';\n\nexport const TENANT_MANAGEMENT_ROUTES = [\n {\n name: 'Tenant Management',\n path: 'tenant-management',\n parentName: 'Administration',\n layout: eLayoutType.application,\n children: [\n {\n path: 'tenants',\n name: 'Tenants',\n order: 1,\n requiredPolicy: 'AbpTenantManagement.Tenants',\n },\n ],\n },\n] as ABP.FullRoute[];\n","import { ABP } from '@abp/ng.core';\n\nexport namespace TenantManagement {\n export interface State {\n result: Response;\n selectedItem: Item;\n }\n\n export type Response = ABP.PagedResponse;\n\n export interface Item {\n id: string;\n name: string;\n }\n\n export interface AddRequest {\n name: string;\n }\n\n export interface UpdateRequest extends AddRequest {\n id: string;\n }\n\n export interface DefaultConnectionStringRequest {\n id: string;\n defaultConnectionString: string;\n }\n}\n"],"names":["tslib_1.__decorate"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/tenant-management/lib/actions/index.d.ts b/npm/ng-packs/dist/tenant-management/lib/actions/index.d.ts new file mode 100644 index 00000000000..5c9207873fc --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/lib/actions/index.d.ts @@ -0,0 +1 @@ +export * from './tenant-management.actions'; diff --git a/npm/ng-packs/dist/tenant-management/lib/actions/tenant-management.actions.d.ts b/npm/ng-packs/dist/tenant-management/lib/actions/tenant-management.actions.d.ts new file mode 100644 index 00000000000..ca3d3414257 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/lib/actions/tenant-management.actions.d.ts @@ -0,0 +1,24 @@ +import { TenantManagement } from '../models/tenant-management'; +export declare class TenantManagementGet { + static readonly type = "[TenantManagement] Get"; +} +export declare class TenantManagementGetById { + payload: string; + static readonly type = "[TenantManagement] Get By Id"; + constructor(payload: string); +} +export declare class TenantManagementAdd { + payload: TenantManagement.AddRequest; + static readonly type = "[TenantManagement] Add"; + constructor(payload: TenantManagement.AddRequest); +} +export declare class TenantManagementUpdate { + payload: TenantManagement.UpdateRequest; + static readonly type = "[TenantManagement] Update"; + constructor(payload: TenantManagement.UpdateRequest); +} +export declare class TenantManagementDelete { + payload: string; + static readonly type = "[TenantManagement] Delete"; + constructor(payload: string); +} diff --git a/npm/ng-packs/dist/tenant-management/lib/components/index.d.ts b/npm/ng-packs/dist/tenant-management/lib/components/index.d.ts new file mode 100644 index 00000000000..3174cf9458f --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/lib/components/index.d.ts @@ -0,0 +1 @@ +export * from './tenants/tenants.component'; diff --git a/npm/ng-packs/dist/tenant-management/lib/components/tenants/tenants.component.d.ts b/npm/ng-packs/dist/tenant-management/lib/components/tenants/tenants.component.d.ts new file mode 100644 index 00000000000..228992a1622 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/lib/components/tenants/tenants.component.d.ts @@ -0,0 +1,44 @@ +import { ABP } from '@abp/ng.core'; +import { ConfirmationService } from '@abp/ng.theme.shared'; +import { TemplateRef } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { TenantManagementService } from '../../services/tenant-management.service'; +declare type SelectedModalContent = { + type: string; + title: string; + template: TemplateRef; +}; +export declare class TenantsComponent { + private confirmationService; + private tenantService; + private fb; + private store; + datas$: Observable; + selected: ABP.BasicItem; + tenantForm: FormGroup; + defaultConnectionStringForm: FormGroup; + defaultConnectionString: string; + isModalVisible: boolean; + selectedModalContent: SelectedModalContent; + _useSharedDatabase: boolean; + readonly useSharedDatabase: boolean; + readonly connectionString: string; + tenantModalTemplate: TemplateRef; + connectionStringModalTemplate: TemplateRef; + featuresModalTemplate: TemplateRef; + constructor(confirmationService: ConfirmationService, tenantService: TenantManagementService, fb: FormBuilder, store: Store); + private createTenantForm; + private createDefaultConnectionStringForm; + openModal(title: string, template: TemplateRef, type: string): void; + onEditConnectionString(id: string): void; + onManageFeatures(id: string): void; + onAddTenant(): void; + onEditTenant(id: string): void; + save(): void; + saveConnectionString(): void; + saveTenant(): void; + delete(id: string, name: string): void; +} +export {}; diff --git a/npm/ng-packs/dist/tenant-management/lib/constants/index.d.ts b/npm/ng-packs/dist/tenant-management/lib/constants/index.d.ts new file mode 100644 index 00000000000..a3820983e25 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/lib/constants/index.d.ts @@ -0,0 +1 @@ +export * from './routes'; diff --git a/npm/ng-packs/dist/tenant-management/lib/constants/routes.d.ts b/npm/ng-packs/dist/tenant-management/lib/constants/routes.d.ts new file mode 100644 index 00000000000..d3f92f257d7 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/lib/constants/routes.d.ts @@ -0,0 +1,2 @@ +import { ABP } from '@abp/ng.core'; +export declare const TENANT_MANAGEMENT_ROUTES: ABP.FullRoute[]; diff --git a/npm/ng-packs/dist/tenant-management/lib/models/index.d.ts b/npm/ng-packs/dist/tenant-management/lib/models/index.d.ts new file mode 100644 index 00000000000..580d09d215c --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/lib/models/index.d.ts @@ -0,0 +1 @@ +export * from './tenant-management'; diff --git a/npm/ng-packs/dist/tenant-management/lib/models/tenant-management.d.ts b/npm/ng-packs/dist/tenant-management/lib/models/tenant-management.d.ts new file mode 100644 index 00000000000..c1ddc624b84 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/lib/models/tenant-management.d.ts @@ -0,0 +1,22 @@ +import { ABP } from '@abp/ng.core'; +export declare namespace TenantManagement { + interface State { + result: Response; + selectedItem: Item; + } + type Response = ABP.PagedResponse; + interface Item { + id: string; + name: string; + } + interface AddRequest { + name: string; + } + interface UpdateRequest extends AddRequest { + id: string; + } + interface DefaultConnectionStringRequest { + id: string; + defaultConnectionString: string; + } +} diff --git a/npm/ng-packs/dist/tenant-management/lib/resolvers/index.d.ts b/npm/ng-packs/dist/tenant-management/lib/resolvers/index.d.ts new file mode 100644 index 00000000000..3c5a42a2ac3 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/lib/resolvers/index.d.ts @@ -0,0 +1 @@ +export * from './tenants.resolver'; diff --git a/npm/ng-packs/dist/tenant-management/lib/resolvers/tenants.resolver.d.ts b/npm/ng-packs/dist/tenant-management/lib/resolvers/tenants.resolver.d.ts new file mode 100644 index 00000000000..c7bbe49ceaa --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/lib/resolvers/tenants.resolver.d.ts @@ -0,0 +1,8 @@ +import { Resolve } from '@angular/router'; +import { Store } from '@ngxs/store'; +import { TenantManagement } from '../models/tenant-management'; +export declare class TenantsResolver implements Resolve { + private store; + constructor(store: Store); + resolve(): import("rxjs").Observable; +} diff --git a/npm/ng-packs/dist/tenant-management/lib/services/index.d.ts b/npm/ng-packs/dist/tenant-management/lib/services/index.d.ts new file mode 100644 index 00000000000..25e55ae9783 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/lib/services/index.d.ts @@ -0,0 +1 @@ +export * from './tenant-management.service'; diff --git a/npm/ng-packs/dist/tenant-management/lib/services/tenant-management.service.d.ts b/npm/ng-packs/dist/tenant-management/lib/services/tenant-management.service.d.ts new file mode 100644 index 00000000000..b470d435a35 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/lib/services/tenant-management.service.d.ts @@ -0,0 +1,15 @@ +import { Observable } from 'rxjs'; +import { RestService, ABP } from '@abp/ng.core'; +import { TenantManagement } from '../models/tenant-management'; +export declare class TenantManagementService { + private rest; + constructor(rest: RestService); + get(): Observable; + getById(id: string): Observable; + delete(id: string): Observable; + add(body: TenantManagement.AddRequest): Observable; + update(body: TenantManagement.UpdateRequest): Observable; + getDefaultConnectionString(id: string): Observable; + updateDefaultConnectionString(payload: TenantManagement.DefaultConnectionStringRequest): Observable; + deleteDefaultConnectionString(id: string): Observable; +} diff --git a/npm/ng-packs/dist/tenant-management/lib/states/index.d.ts b/npm/ng-packs/dist/tenant-management/lib/states/index.d.ts new file mode 100644 index 00000000000..a6fb4168fe2 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/lib/states/index.d.ts @@ -0,0 +1 @@ +export * from './tenant-management.state'; diff --git a/npm/ng-packs/dist/tenant-management/lib/states/tenant-management.state.d.ts b/npm/ng-packs/dist/tenant-management/lib/states/tenant-management.state.d.ts new file mode 100644 index 00000000000..70b497c8f3d --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/lib/states/tenant-management.state.d.ts @@ -0,0 +1,15 @@ +import { StateContext } from '@ngxs/store'; +import { TenantManagementAdd, TenantManagementDelete, TenantManagementGetById, TenantManagementUpdate } from '../actions/tenant-management.actions'; +import { TenantManagement } from '../models/tenant-management'; +import { TenantManagementService } from '../services/tenant-management.service'; +import { ABP } from '@abp/ng.core'; +export declare class TenantManagementState { + private tenantManagementService; + static get({ result }: TenantManagement.State): ABP.BasicItem[]; + constructor(tenantManagementService: TenantManagementService); + get({ patchState }: StateContext): import("rxjs").Observable>; + getById({ patchState }: StateContext, { payload }: TenantManagementGetById): import("rxjs").Observable; + delete({ dispatch }: StateContext, { payload }: TenantManagementDelete): import("rxjs").Observable; + add({ dispatch }: StateContext, { payload }: TenantManagementAdd): import("rxjs").Observable; + update({ dispatch, getState }: StateContext, { payload }: TenantManagementUpdate): import("rxjs").Observable; +} diff --git a/npm/ng-packs/dist/tenant-management/lib/tenant-management-routing.module.d.ts b/npm/ng-packs/dist/tenant-management/lib/tenant-management-routing.module.d.ts new file mode 100644 index 00000000000..2af30e1aed7 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/lib/tenant-management-routing.module.d.ts @@ -0,0 +1,2 @@ +export declare class TenantManagementRoutingModule { +} diff --git a/npm/ng-packs/dist/tenant-management/lib/tenant-management.module.d.ts b/npm/ng-packs/dist/tenant-management/lib/tenant-management.module.d.ts new file mode 100644 index 00000000000..07e1370976a --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/lib/tenant-management.module.d.ts @@ -0,0 +1,2 @@ +export declare class TenantManagementModule { +} diff --git a/npm/ng-packs/dist/tenant-management/package.json b/npm/ng-packs/dist/tenant-management/package.json new file mode 100644 index 00000000000..f238c4641d7 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/package.json @@ -0,0 +1,21 @@ +{ + "name": "@abp/ng.tenant-management", + "version": "0.8.0", + "dependencies": { + "@abp/ng.theme.shared": "^0.8.0", + "tslib": "^1.9.0" + }, + "publishConfig": { + "access": "public" + }, + "main": "bundles/abp-ng.tenant-management.umd.js", + "module": "fesm5/abp-ng.tenant-management.js", + "es2015": "fesm2015/abp-ng.tenant-management.js", + "esm5": "esm5/abp-ng.tenant-management.js", + "esm2015": "esm2015/abp-ng.tenant-management.js", + "fesm5": "fesm5/abp-ng.tenant-management.js", + "fesm2015": "fesm2015/abp-ng.tenant-management.js", + "typings": "abp-ng.tenant-management.d.ts", + "metadata": "abp-ng.tenant-management.metadata.json", + "sideEffects": false +} diff --git a/npm/ng-packs/dist/tenant-management/public-api.d.ts b/npm/ng-packs/dist/tenant-management/public-api.d.ts new file mode 100644 index 00000000000..9bae9a9edb2 --- /dev/null +++ b/npm/ng-packs/dist/tenant-management/public-api.d.ts @@ -0,0 +1,8 @@ +export * from './lib/tenant-management.module'; +export * from './lib/actions'; +export * from './lib/components'; +export * from './lib/constants'; +export * from './lib/models'; +export * from './lib/resolvers'; +export * from './lib/services'; +export * from './lib/states'; diff --git a/npm/ng-packs/dist/theme-basic/README.md b/npm/ng-packs/dist/theme-basic/README.md new file mode 100644 index 00000000000..fc9a74c13dd --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/README.md @@ -0,0 +1 @@ +

@abp/ng.theme.basic

diff --git a/npm/ng-packs/dist/theme-basic/abp-ng.theme.basic.d.ts b/npm/ng-packs/dist/theme-basic/abp-ng.theme.basic.d.ts new file mode 100644 index 00000000000..e1bd361f52a --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/abp-ng.theme.basic.d.ts @@ -0,0 +1,14 @@ +/** + * Generated bundle index. Do not edit. + */ +export * from './public-api'; +export { LayoutAddNavigationElement as ɵi, LayoutRemoveNavigationElementByName as ɵj } from './lib/actions/layout.actions'; +export { ChangePasswordComponent as ɵf } from './lib/components/change-password/change-password.component'; +export { LayoutAccountComponent as ɵc } from './lib/components/layout-account/layout-account.component'; +export { LayoutApplicationComponent as ɵa } from './lib/components/layout-application/layout-application.component'; +export { LayoutEmptyComponent as ɵd } from './lib/components/layout-empty/layout-empty.component'; +export { LayoutComponent as ɵe } from './lib/components/layout/layout.component'; +export { ProfileComponent as ɵg } from './lib/components/profile/profile.component'; +export { Layout as ɵk } from './lib/models/layout'; +export { LayoutState as ɵb } from './lib/states'; +export { LayoutState as ɵh } from './lib/states/layout.state'; diff --git a/npm/ng-packs/dist/theme-basic/abp-ng.theme.basic.metadata.json b/npm/ng-packs/dist/theme-basic/abp-ng.theme.basic.metadata.json new file mode 100644 index 00000000000..238c2a91d95 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/abp-ng.theme.basic.metadata.json @@ -0,0 +1 @@ +{"__symbolic":"module","version":4,"exports":[{"from":"./lib/layout.state"},{"from":"./lib/layout-application/layout-application.component"},{"from":"./lib/layout-empty/layout-empty.component"}],"metadata":{"LAYOUTS":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵd"}],"ThemeBasicModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"declarations":[{"__symbolic":"spread","expression":{"__symbolic":"reference","name":"LAYOUTS"}},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵg"}],"imports":[{"__symbolic":"reference","module":"@abp/ng.core","name":"CoreModule","line":20,"character":4},{"__symbolic":"reference","module":"@abp/ng.theme.shared","name":"ThemeSharedModule","line":21,"character":4},{"__symbolic":"reference","module":"@ng-bootstrap/ng-bootstrap","name":"NgbCollapseModule","line":22,"character":4},{"__symbolic":"reference","module":"@ng-bootstrap/ng-bootstrap","name":"NgbDropdownModule","line":23,"character":4},{"__symbolic":"reference","module":"primeng/toast","name":"ToastModule","line":24,"character":4},{"__symbolic":"reference","module":"@ngx-validate/core","name":"NgxValidateCoreModule","line":25,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"NgxsModule","line":26,"character":4},"member":"forFeature"},"arguments":[[{"__symbolic":"reference","name":"ɵh"}]]}],"exports":[{"__symbolic":"spread","expression":{"__symbolic":"reference","name":"LAYOUTS"}}],"entryComponents":[{"__symbolic":"spread","expression":{"__symbolic":"reference","name":"LAYOUTS"}}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":32,"character":1},"arguments":[{"selector":"abp-layout-application","template":"\n \n\n
    \n \n
\n
\n\n\n
  • \n \n {{ defaultLanguage$ | async }}\n \n
    \n {{ lang?.displayName }}\n
    \n
  • \n
    \n\n\n
  • \n \n {{ (currentUser$ | async)?.userName }}\n \n \n
  • \n\n \n\n \n
    \n"}]}],"members":{"routes$":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Select","line":40,"character":3},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@abp/ng.core","name":"ConfigState","line":40,"character":10},"member":"getOne"},"arguments":["routes"]}]}]}],"currentUser$":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Select","line":43,"character":3},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@abp/ng.core","name":"ConfigState","line":43,"character":10},"member":"getOne"},"arguments":["currentUser"]}]}]}],"languages$":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Select","line":46,"character":3},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@abp/ng.core","name":"ConfigState","line":46,"character":10},"member":"getDeep"},"arguments":["localization.languages"]}]}]}],"navElements$":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Select","line":49,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵb"},"member":"getNavigationElements"}]}]}],"currentUserRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":52,"character":3},"arguments":["currentUser",{"static":false,"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":52,"character":51}}]}]}],"languageRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":55,"character":3},"arguments":["language",{"static":false,"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":55,"character":48}}]}]}],"navbarRootDropdowns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":58,"character":3},"arguments":["navbarRootDropdown",{"read":{"__symbolic":"reference","module":"@ng-bootstrap/ng-bootstrap","name":"NgbDropdown","line":58,"character":46}}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":96,"character":29},{"__symbolic":"reference","module":"angular-oauth2-oidc","name":"OAuthService","line":96,"character":58}]}],"checkWindowWidth":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onChangeLang":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}]},"statics":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@abp/ng.core","name":"eLayoutType","line":38,"character":16},"member":"application"}}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"abp-layout-account","template":"\n \n\n \n \n \n \n \n\n"}]}],"members":{},"statics":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@abp/ng.core","name":"eLayoutType","line":9,"character":16},"member":"account"}}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"abp-layout-empty","template":"\n Layout-empty\n \n "}]}],"members":{},"statics":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@abp/ng.core","name":"eLayoutType","line":12,"character":16},"member":"empty"}}},"ɵe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":" abp-layout","template":"\n\n
    \n \n
    \n\n\n\n"}]}],"members":{}},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":18,"character":1},"arguments":[{"selector":"abp-change-password","template":"\n \n

    {{ 'AbpIdentity::ChangePassword' | abpLocalization }}

    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n
    \n"}]}],"members":{"visible":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"visibleChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":35,"character":3}}]}],"modalContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":38,"character":3},"arguments":["modalContent",{"static":false}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":43,"character":26},{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":43,"character":54}]}],"ngOnInit":[{"__symbolic":"method"}],"onSubmit":[{"__symbolic":"method"}],"openModal":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}]}},"ɵg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"abp-profile","template":"\n \n

    {{ 'AbpIdentity::PersonalInfo' | abpLocalization }}

    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n
    \n"}]}],"members":{"visible":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"visibleChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":26,"character":3}}]}],"profile$":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Select","line":29,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@abp/ng.core","name":"ProfileState","line":29,"character":10},"member":"getProfile"}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":34,"character":26},{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":34,"character":54}]}],"buildForm":[{"__symbolic":"method"}],"onSubmit":[{"__symbolic":"method"}],"openModal":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}]}},"ɵh":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"State","line":6,"character":1},"arguments":[{"name":"LayoutState","defaults":{"navigationElements":[]}}]}],"members":{"layoutAddAction":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":16,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵi"}]}]}],"layoutRemoveAction":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngxs/store","name":"Action","line":45,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵj"}]}]}]},"statics":{"getNavigationElements":{"__symbolic":"function","parameters":["navigationElements"],"value":{"__symbolic":"reference","name":"navigationElements"}}}},"ɵi":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵk"},"member":"NavigationElement"}]}]},"statics":{"type":"[Layout] Add Navigation Element"}},"ɵj":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}]},"statics":{"type":"[Layout] Remove Navigation ElementByName"}}},"origins":{"LAYOUTS":"./lib/theme-basic.module","ThemeBasicModule":"./lib/theme-basic.module","ɵa":"./lib/components/layout-application/layout-application.component","ɵb":"./lib/states","ɵc":"./lib/components/layout-account/layout-account.component","ɵd":"./lib/components/layout-empty/layout-empty.component","ɵe":"./lib/components/layout/layout.component","ɵf":"./lib/components/change-password/change-password.component","ɵg":"./lib/components/profile/profile.component","ɵh":"./lib/states/layout.state","ɵi":"./lib/actions/layout.actions","ɵj":"./lib/actions/layout.actions","ɵk":"./lib/models/layout"},"importAs":"@abp/ng.theme.basic"} \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/bundles/abp-ng.theme.basic.umd.js b/npm/ng-packs/dist/theme-basic/bundles/abp-ng.theme.basic.umd.js new file mode 100644 index 00000000000..ccdb5842c5c --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/bundles/abp-ng.theme.basic.umd.js @@ -0,0 +1,842 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@abp/ng.core'), require('@angular/core'), require('@ng-bootstrap/ng-bootstrap'), require('@angular/forms'), require('@ngx-validate/core'), require('@ngxs/store'), require('@ngxs/router-plugin'), require('angular-oauth2-oidc'), require('just-compare'), require('rxjs'), require('rxjs/operators'), require('snq'), require('@abp/ng.theme.shared'), require('primeng/toast')) : + typeof define === 'function' && define.amd ? define('@abp/ng.theme.basic', ['exports', '@abp/ng.core', '@angular/core', '@ng-bootstrap/ng-bootstrap', '@angular/forms', '@ngx-validate/core', '@ngxs/store', '@ngxs/router-plugin', 'angular-oauth2-oidc', 'just-compare', 'rxjs', 'rxjs/operators', 'snq', '@abp/ng.theme.shared', 'primeng/toast'], factory) : + (global = global || self, factory((global.abp = global.abp || {}, global.abp.ng = global.abp.ng || {}, global.abp.ng.theme = global.abp.ng.theme || {}, global.abp.ng.theme.basic = {}), global.ng_core, global.ng.core, global.ngBootstrap, global.ng.forms, global.core$1, global.store, global.routerPlugin, global.angularOauth2Oidc, global.compare, global.rxjs, global.rxjs.operators, global.snq, global.ng_theme_shared, global.toast)); +}(this, function (exports, ng_core, core, ngBootstrap, forms, core$1, store, routerPlugin, angularOauth2Oidc, compare, rxjs, operators, snq, ng_theme_shared, toast) { 'use strict'; + + compare = compare && compare.hasOwnProperty('default') ? compare['default'] : compare; + snq = snq && snq.hasOwnProperty('default') ? snq['default'] : snq; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + } + + function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); + } + + function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; + } + + function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; + } + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var minLength = forms.Validators.minLength, required = forms.Validators.required; + var ChangePasswordComponent = /** @class */ (function () { + function ChangePasswordComponent(fb, store) { + this.fb = fb; + this.store = store; + this.visibleChange = new core.EventEmitter(); + } + Object.defineProperty(ChangePasswordComponent.prototype, "visible", { + get: /** + * @return {?} + */ + function () { + return this._visible; + }, + set: /** + * @param {?} value + * @return {?} + */ + function (value) { + this._visible = value; + this.visibleChange.emit(value); + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + ChangePasswordComponent.prototype.ngOnInit = /** + * @return {?} + */ + function () { + this.form = this.fb.group({ + password: ['', [required, minLength(6), core$1.validatePassword(['small', 'capital', 'number', 'special'])]], + newPassword: ['', [required, minLength(6), core$1.validatePassword(['small', 'capital', 'number', 'special'])]], + repeatNewPassword: ['', [required, minLength(6), core$1.validatePassword(['small', 'capital', 'number', 'special'])]], + }, { + validators: [core$1.comparePasswords(['newPassword', 'repeatNewPassword'])], + }); + }; + /** + * @return {?} + */ + ChangePasswordComponent.prototype.onSubmit = /** + * @return {?} + */ + function () { + var _this = this; + if (this.form.invalid) + return; + this.store + .dispatch(new ng_core.ProfileChangePassword({ + currentPassword: this.form.get('password').value, + newPassword: this.form.get('newPassword').value, + })) + .subscribe((/** + * @return {?} + */ + function () { + _this.visible = false; + })); + }; + /** + * @return {?} + */ + ChangePasswordComponent.prototype.openModal = /** + * @return {?} + */ + function () { + this.visible = true; + }; + /** + * @param {?} __0 + * @return {?} + */ + ChangePasswordComponent.prototype.ngOnChanges = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var visible = _a.visible; + if (!visible) + return; + if (visible.currentValue) { + this.openModal(); + } + else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + }; + ChangePasswordComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-change-password', + template: "\n \n

    {{ 'AbpIdentity::ChangePassword' | abpLocalization }}

    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n
    \n" + }] } + ]; + /** @nocollapse */ + ChangePasswordComponent.ctorParameters = function () { return [ + { type: forms.FormBuilder }, + { type: store.Store } + ]; }; + ChangePasswordComponent.propDecorators = { + visible: [{ type: core.Input }], + visibleChange: [{ type: core.Output }], + modalContent: [{ type: core.ViewChild, args: ['modalContent', { static: false },] }] + }; + return ChangePasswordComponent; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var LayoutAccountComponent = /** @class */ (function () { + function LayoutAccountComponent() { + this.isCollapsed = false; + } + // required for dynamic component + LayoutAccountComponent.type = "account" /* account */; + LayoutAccountComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-layout-account', + template: "\n \n\n \n \n \n \n \n\n" + }] } + ]; + return LayoutAccountComponent; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var LayoutAddNavigationElement = /** @class */ (function () { + function LayoutAddNavigationElement(payload) { + this.payload = payload; + } + LayoutAddNavigationElement.type = '[Layout] Add Navigation Element'; + return LayoutAddNavigationElement; + }()); + var LayoutRemoveNavigationElementByName = /** @class */ (function () { + function LayoutRemoveNavigationElementByName(name) { + this.name = name; + } + LayoutRemoveNavigationElementByName.type = '[Layout] Remove Navigation ElementByName'; + return LayoutRemoveNavigationElementByName; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var LayoutState = /** @class */ (function () { + function LayoutState() { + } + /** + * @param {?} __0 + * @return {?} + */ + LayoutState.getNavigationElements = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var navigationElements = _a.navigationElements; + return navigationElements; + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + LayoutState.prototype.layoutAddAction = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var getState = _a.getState, patchState = _a.patchState; + var _c = _b.payload, payload = _c === void 0 ? [] : _c; + var navigationElements = getState().navigationElements; + if (!Array.isArray(payload)) { + payload = [payload]; + } + if (navigationElements.length) { + payload = snq((/** + * @return {?} + */ + function () { + return ((/** @type {?} */ (payload))).filter((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var name = _a.name; + return navigationElements.findIndex((/** + * @param {?} nav + * @return {?} + */ + function (nav) { return nav.name === name; })) < 0; + })); + }), []); + } + if (!payload.length) + return; + navigationElements = __spread(navigationElements, payload).map((/** + * @param {?} element + * @return {?} + */ + function (element) { return (__assign({}, element, { order: element.order || 99 })); })) + .sort((/** + * @param {?} a + * @param {?} b + * @return {?} + */ + function (a, b) { return a.order - b.order; })); + return patchState({ + navigationElements: navigationElements, + }); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + LayoutState.prototype.layoutRemoveAction = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var getState = _a.getState, patchState = _a.patchState; + var name = _b.name; + var navigationElements = getState().navigationElements; + /** @type {?} */ + var index = navigationElements.findIndex((/** + * @param {?} element + * @return {?} + */ + function (element) { return element.name === name; })); + if (index > -1) { + navigationElements = navigationElements.splice(index, 1); + } + return patchState({ + navigationElements: navigationElements, + }); + }; + __decorate([ + store.Action(LayoutAddNavigationElement), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, LayoutAddNavigationElement]), + __metadata("design:returntype", void 0) + ], LayoutState.prototype, "layoutAddAction", null); + __decorate([ + store.Action(LayoutRemoveNavigationElementByName), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, LayoutRemoveNavigationElementByName]), + __metadata("design:returntype", void 0) + ], LayoutState.prototype, "layoutRemoveAction", null); + __decorate([ + store.Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Array) + ], LayoutState, "getNavigationElements", null); + LayoutState = __decorate([ + store.State({ + name: 'LayoutState', + defaults: (/** @type {?} */ ({ navigationElements: [] })), + }) + ], LayoutState); + return LayoutState; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var LayoutApplicationComponent = /** @class */ (function () { + function LayoutApplicationComponent(store, oauthService) { + this.store = store; + this.oauthService = oauthService; + this.isOpenChangePassword = false; + this.isOpenProfile = false; + this.rightPartElements = []; + this.trackByFn = (/** + * @param {?} _ + * @param {?} item + * @return {?} + */ + function (_, item) { return item.name; }); + this.trackElementByFn = (/** + * @param {?} _ + * @param {?} element + * @return {?} + */ + function (_, element) { return element; }); + } + Object.defineProperty(LayoutApplicationComponent.prototype, "visibleRoutes$", { + get: /** + * @return {?} + */ + function () { + return this.routes$.pipe(operators.map((/** + * @param {?} routes + * @return {?} + */ + function (routes) { return getVisibleRoutes(routes); }))); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(LayoutApplicationComponent.prototype, "defaultLanguage$", { + get: /** + * @return {?} + */ + function () { + var _this = this; + return this.languages$.pipe(operators.map((/** + * @param {?} languages + * @return {?} + */ + function (languages) { return snq((/** + * @return {?} + */ + function () { return languages.find((/** + * @param {?} lang + * @return {?} + */ + function (lang) { return lang.cultureName === _this.selectedLangCulture; })).displayName; })); }), '')); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(LayoutApplicationComponent.prototype, "dropdownLanguages$", { + get: /** + * @return {?} + */ + function () { + var _this = this; + return this.languages$.pipe(operators.map((/** + * @param {?} languages + * @return {?} + */ + function (languages) { return snq((/** + * @return {?} + */ + function () { return languages.filter((/** + * @param {?} lang + * @return {?} + */ + function (lang) { return lang.cultureName !== _this.selectedLangCulture; })); })); }), [])); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(LayoutApplicationComponent.prototype, "selectedLangCulture", { + get: /** + * @return {?} + */ + function () { + return this.store.selectSnapshot(ng_core.SessionState.getLanguage); + }, + enumerable: true, + configurable: true + }); + /** + * @private + * @return {?} + */ + LayoutApplicationComponent.prototype.checkWindowWidth = /** + * @private + * @return {?} + */ + function () { + var _this = this; + setTimeout((/** + * @return {?} + */ + function () { + _this.navbarRootDropdowns.forEach((/** + * @param {?} item + * @return {?} + */ + function (item) { + item.close(); + })); + if (window.innerWidth < 768) { + _this.isDropdownChildDynamic = false; + } + else { + _this.isDropdownChildDynamic = true; + } + }), 0); + }; + /** + * @return {?} + */ + LayoutApplicationComponent.prototype.ngAfterViewInit = /** + * @return {?} + */ + function () { + var _this = this; + /** @type {?} */ + var navigations = this.store.selectSnapshot(LayoutState.getNavigationElements).map((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var name = _a.name; + return name; + })); + if (navigations.indexOf('LanguageRef') < 0) { + this.store.dispatch(new LayoutAddNavigationElement([ + { element: this.languageRef, order: 4, name: 'LanguageRef' }, + { element: this.currentUserRef, order: 5, name: 'CurrentUserRef' }, + ])); + } + this.navElements$ + .pipe(operators.map((/** + * @param {?} elements + * @return {?} + */ + function (elements) { return elements.map((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var element = _a.element; + return element; + })); })), operators.filter((/** + * @param {?} elements + * @return {?} + */ + function (elements) { return !compare(elements, _this.rightPartElements); })), ng_core.takeUntilDestroy(this)) + .subscribe((/** + * @param {?} elements + * @return {?} + */ + function (elements) { + setTimeout((/** + * @return {?} + */ + function () { return (_this.rightPartElements = elements); }), 0); + })); + this.checkWindowWidth(); + rxjs.fromEvent(window, 'resize') + .pipe(ng_core.takeUntilDestroy(this), operators.debounceTime(250)) + .subscribe((/** + * @return {?} + */ + function () { + _this.checkWindowWidth(); + })); + }; + /** + * @return {?} + */ + LayoutApplicationComponent.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { }; + /** + * @param {?} cultureName + * @return {?} + */ + LayoutApplicationComponent.prototype.onChangeLang = /** + * @param {?} cultureName + * @return {?} + */ + function (cultureName) { + this.store.dispatch(new ng_core.SessionSetLanguage(cultureName)); + this.store.dispatch(new ng_core.ConfigGetAppConfiguration()); + }; + /** + * @return {?} + */ + LayoutApplicationComponent.prototype.logout = /** + * @return {?} + */ + function () { + this.oauthService.logOut(); + this.store.dispatch(new routerPlugin.Navigate(['/account/login'], null, { + state: { redirectUrl: this.store.selectSnapshot(routerPlugin.RouterState).state.url }, + })); + this.store.dispatch(new ng_core.ConfigGetAppConfiguration()); + }; + // required for dynamic component + LayoutApplicationComponent.type = "application" /* application */; + LayoutApplicationComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-layout-application', + template: "\n \n\n
      \n \n
    \n
    \n\n\n
  • \n \n {{ defaultLanguage$ | async }}\n \n
    \n {{ lang?.displayName }}\n
    \n
  • \n
    \n\n\n
  • \n \n {{ (currentUser$ | async)?.userName }}\n \n \n
  • \n\n \n\n \n
    \n" + }] } + ]; + /** @nocollapse */ + LayoutApplicationComponent.ctorParameters = function () { return [ + { type: store.Store }, + { type: angularOauth2Oidc.OAuthService } + ]; }; + LayoutApplicationComponent.propDecorators = { + currentUserRef: [{ type: core.ViewChild, args: ['currentUser', { static: false, read: core.TemplateRef },] }], + languageRef: [{ type: core.ViewChild, args: ['language', { static: false, read: core.TemplateRef },] }], + navbarRootDropdowns: [{ type: core.ViewChildren, args: ['navbarRootDropdown', { read: ngBootstrap.NgbDropdown },] }] + }; + __decorate([ + store.Select(ng_core.ConfigState.getOne('routes')), + __metadata("design:type", rxjs.Observable) + ], LayoutApplicationComponent.prototype, "routes$", void 0); + __decorate([ + store.Select(ng_core.ConfigState.getOne('currentUser')), + __metadata("design:type", rxjs.Observable) + ], LayoutApplicationComponent.prototype, "currentUser$", void 0); + __decorate([ + store.Select(ng_core.ConfigState.getDeep('localization.languages')), + __metadata("design:type", rxjs.Observable) + ], LayoutApplicationComponent.prototype, "languages$", void 0); + __decorate([ + store.Select(LayoutState.getNavigationElements), + __metadata("design:type", rxjs.Observable) + ], LayoutApplicationComponent.prototype, "navElements$", void 0); + return LayoutApplicationComponent; + }()); + /** + * @param {?} routes + * @return {?} + */ + function getVisibleRoutes(routes) { + return routes.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { + if (val.invisible) + return acc; + if (val.children && val.children.length) { + val.children = getVisibleRoutes(val.children); + } + return __spread(acc, [val]); + }), []); + } + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var LayoutEmptyComponent = /** @class */ (function () { + function LayoutEmptyComponent() { + } + // required for dynamic component + LayoutEmptyComponent.type = "empty" /* empty */; + LayoutEmptyComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-layout-empty', + template: "\n Layout-empty\n \n " + }] } + ]; + return LayoutEmptyComponent; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var LayoutComponent = /** @class */ (function () { + function LayoutComponent() { + this.isCollapsed = false; + } + LayoutComponent.decorators = [ + { type: core.Component, args: [{ + selector: ' abp-layout', + template: "\n\n
    \n \n
    \n\n\n\n" + }] } + ]; + return LayoutComponent; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var maxLength = forms.Validators.maxLength, required$1 = forms.Validators.required, email = forms.Validators.email; + var ProfileComponent = /** @class */ (function () { + function ProfileComponent(fb, store) { + this.fb = fb; + this.store = store; + this.visibleChange = new core.EventEmitter(); + } + Object.defineProperty(ProfileComponent.prototype, "visible", { + get: /** + * @return {?} + */ + function () { + return this._visible; + }, + set: /** + * @param {?} value + * @return {?} + */ + function (value) { + this._visible = value; + this.visibleChange.emit(value); + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + ProfileComponent.prototype.buildForm = /** + * @return {?} + */ + function () { + var _this = this; + this.store + .dispatch(new ng_core.ProfileGet()) + .pipe(operators.withLatestFrom(this.profile$), operators.take(1)) + .subscribe((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var _b = __read(_a, 2), profile = _b[1]; + _this.form = _this.fb.group({ + userName: [profile.userName, [required$1, maxLength(256)]], + email: [profile.email, [required$1, email, maxLength(256)]], + name: [profile.name || '', [maxLength(64)]], + surname: [profile.surname || '', [maxLength(64)]], + phoneNumber: [profile.phoneNumber || '', [maxLength(16)]], + }); + })); + }; + /** + * @return {?} + */ + ProfileComponent.prototype.onSubmit = /** + * @return {?} + */ + function () { + var _this = this; + if (this.form.invalid) + return; + this.store.dispatch(new ng_core.ProfileUpdate(this.form.value)).subscribe((/** + * @return {?} + */ + function () { + _this.visible = false; + })); + }; + /** + * @return {?} + */ + ProfileComponent.prototype.openModal = /** + * @return {?} + */ + function () { + this.buildForm(); + this.visible = true; + }; + /** + * @param {?} __0 + * @return {?} + */ + ProfileComponent.prototype.ngOnChanges = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var visible = _a.visible; + if (!visible) + return; + if (visible.currentValue) { + this.openModal(); + } + else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + }; + ProfileComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-profile', + template: "\n \n

    {{ 'AbpIdentity::PersonalInfo' | abpLocalization }}

    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n
    \n" + }] } + ]; + /** @nocollapse */ + ProfileComponent.ctorParameters = function () { return [ + { type: forms.FormBuilder }, + { type: store.Store } + ]; }; + ProfileComponent.propDecorators = { + visible: [{ type: core.Input }], + visibleChange: [{ type: core.Output }] + }; + __decorate([ + store.Select(ng_core.ProfileState.getProfile), + __metadata("design:type", rxjs.Observable) + ], ProfileComponent.prototype, "profile$", void 0); + return ProfileComponent; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + /** @type {?} */ + var LAYOUTS = [LayoutApplicationComponent, LayoutAccountComponent, LayoutEmptyComponent]; + var ThemeBasicModule = /** @class */ (function () { + function ThemeBasicModule() { + } + ThemeBasicModule.decorators = [ + { type: core.NgModule, args: [{ + declarations: __spread(LAYOUTS, [LayoutComponent, ChangePasswordComponent, ProfileComponent]), + imports: [ + ng_core.CoreModule, + ng_theme_shared.ThemeSharedModule, + ngBootstrap.NgbCollapseModule, + ngBootstrap.NgbDropdownModule, + toast.ToastModule, + core$1.NgxValidateCoreModule, + store.NgxsModule.forFeature([LayoutState]), + ], + exports: __spread(LAYOUTS), + entryComponents: __spread(LAYOUTS), + },] } + ]; + return ThemeBasicModule; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var Layout; + (function (Layout) { + /** + * @record + */ + function State() { } + Layout.State = State; + /** + * @record + */ + function NavigationElement() { } + Layout.NavigationElement = NavigationElement; + })(Layout || (Layout = {})); + + exports.LAYOUTS = LAYOUTS; + exports.LayoutAccountComponent = LayoutAccountComponent; + exports.LayoutAddNavigationElement = LayoutAddNavigationElement; + exports.LayoutApplicationComponent = LayoutApplicationComponent; + exports.LayoutEmptyComponent = LayoutEmptyComponent; + exports.LayoutRemoveNavigationElementByName = LayoutRemoveNavigationElementByName; + exports.LayoutState = LayoutState; + exports.ThemeBasicModule = ThemeBasicModule; + exports.ɵa = LayoutApplicationComponent; + exports.ɵb = LayoutState; + exports.ɵc = LayoutAccountComponent; + exports.ɵd = LayoutEmptyComponent; + exports.ɵe = LayoutComponent; + exports.ɵf = ChangePasswordComponent; + exports.ɵg = ProfileComponent; + exports.ɵh = LayoutState; + exports.ɵi = LayoutAddNavigationElement; + exports.ɵj = LayoutRemoveNavigationElementByName; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); +//# sourceMappingURL=abp-ng.theme.basic.umd.js.map diff --git a/npm/ng-packs/dist/theme-basic/bundles/abp-ng.theme.basic.umd.js.map b/npm/ng-packs/dist/theme-basic/bundles/abp-ng.theme.basic.umd.js.map new file mode 100644 index 00000000000..c273e53c1e8 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/bundles/abp-ng.theme.basic.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.theme.basic.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","ng://@abp/ng.theme.basic/lib/components/change-password/change-password.component.ts","ng://@abp/ng.theme.basic/lib/components/layout-account/layout-account.component.ts","ng://@abp/ng.theme.basic/lib/actions/layout.actions.ts","ng://@abp/ng.theme.basic/lib/states/layout.state.ts","ng://@abp/ng.theme.basic/lib/components/layout-application/layout-application.component.ts","ng://@abp/ng.theme.basic/lib/components/layout-empty/layout-empty.component.ts","ng://@abp/ng.theme.basic/lib/components/layout/layout.component.ts","ng://@abp/ng.theme.basic/lib/components/profile/profile.component.ts","ng://@abp/ng.theme.basic/lib/theme-basic.module.ts","ng://@abp/ng.theme.basic/lib/models/layout.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { ProfileChangePassword } from '@abp/ng.core';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { comparePasswords, validatePassword } from '@ngx-validate/core';\nimport { Store } from '@ngxs/store';\n\nconst { minLength, required } = Validators;\n\n@Component({\n selector: 'abp-change-password',\n templateUrl: './change-password.component.html',\n})\nexport class ChangePasswordComponent implements OnInit, OnChanges {\n protected _visible;\n\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n\n set visible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(value);\n }\n\n @Output()\n visibleChange = new EventEmitter();\n\n @ViewChild('modalContent', { static: false })\n modalContent: TemplateRef;\n\n form: FormGroup;\n\n constructor(private fb: FormBuilder, private store: Store) {}\n\n ngOnInit(): void {\n this.form = this.fb.group(\n {\n password: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]],\n newPassword: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]],\n repeatNewPassword: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]],\n },\n {\n validators: [comparePasswords(['newPassword', 'repeatNewPassword'])],\n },\n );\n }\n\n onSubmit() {\n if (this.form.invalid) return;\n\n this.store\n .dispatch(\n new ProfileChangePassword({\n currentPassword: this.form.get('password').value,\n newPassword: this.form.get('newPassword').value,\n }),\n )\n .subscribe(() => {\n this.visible = false;\n });\n }\n\n openModal() {\n this.visible = true;\n }\n\n ngOnChanges({ visible }: SimpleChanges): void {\n if (!visible) return;\n\n if (visible.currentValue) {\n this.openModal();\n } else if (visible.currentValue === false && this.visible) {\n this.visible = false;\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { eLayoutType } from '@abp/ng.core';\n\n@Component({\n selector: 'abp-layout-account',\n templateUrl: './layout-account.component.html',\n})\nexport class LayoutAccountComponent {\n // required for dynamic component\n static type = eLayoutType.account;\n\n isCollapsed: boolean = false;\n}\n","import { Layout } from '../models/layout';\n\nexport class LayoutAddNavigationElement {\n static readonly type = '[Layout] Add Navigation Element';\n constructor(public payload: Layout.NavigationElement | Layout.NavigationElement[]) {}\n}\n\nexport class LayoutRemoveNavigationElementByName {\n static readonly type = '[Layout] Remove Navigation ElementByName';\n constructor(public name: string) {}\n}\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\nimport { LayoutAddNavigationElement, LayoutRemoveNavigationElementByName } from '../actions/layout.actions';\nimport { Layout } from '../models/layout';\nimport { TemplateRef } from '@angular/core';\nimport snq from 'snq';\n\n@State({\n name: 'LayoutState',\n defaults: { navigationElements: [] } as Layout.State,\n})\nexport class LayoutState {\n @Selector()\n static getNavigationElements({ navigationElements }: Layout.State): Layout.NavigationElement[] {\n return navigationElements;\n }\n\n @Action(LayoutAddNavigationElement)\n layoutAddAction({ getState, patchState }: StateContext, { payload = [] }: LayoutAddNavigationElement) {\n let { navigationElements } = getState();\n\n if (!Array.isArray(payload)) {\n payload = [payload];\n }\n\n if (navigationElements.length) {\n payload = snq(\n () =>\n (payload as Layout.NavigationElement[]).filter(\n ({ name }) => navigationElements.findIndex(nav => nav.name === name) < 0,\n ),\n [],\n );\n }\n\n if (!payload.length) return;\n\n navigationElements = [...navigationElements, ...payload]\n .map(element => ({ ...element, order: element.order || 99 }))\n .sort((a, b) => a.order - b.order);\n\n return patchState({\n navigationElements,\n });\n }\n\n @Action(LayoutRemoveNavigationElementByName)\n layoutRemoveAction(\n { getState, patchState }: StateContext,\n { name }: LayoutRemoveNavigationElementByName,\n ) {\n let { navigationElements } = getState();\n\n const index = navigationElements.findIndex(element => element.name === name);\n\n if (index > -1) {\n navigationElements = navigationElements.splice(index, 1);\n }\n\n return patchState({\n navigationElements,\n });\n }\n}\n","import {\n ABP,\n ApplicationConfiguration,\n ConfigGetAppConfiguration,\n ConfigState,\n eLayoutType,\n SessionSetLanguage,\n SessionState,\n takeUntilDestroy,\n} from '@abp/ng.core';\nimport {\n AfterViewInit,\n Component,\n OnDestroy,\n QueryList,\n TemplateRef,\n TrackByFunction,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { NgbDropdown } from '@ng-bootstrap/ng-bootstrap';\nimport { Navigate, RouterState } from '@ngxs/router-plugin';\nimport { Select, Store } from '@ngxs/store';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport compare from 'just-compare';\nimport { fromEvent, Observable } from 'rxjs';\nimport { debounceTime, filter, map } from 'rxjs/operators';\nimport snq from 'snq';\nimport { LayoutAddNavigationElement } from '../../actions';\nimport { Layout } from '../../models/layout';\nimport { LayoutState } from '../../states';\n\n@Component({\n selector: 'abp-layout-application',\n templateUrl: './layout-application.component.html',\n})\nexport class LayoutApplicationComponent implements AfterViewInit, OnDestroy {\n // required for dynamic component\n static type = eLayoutType.application;\n\n @Select(ConfigState.getOne('routes'))\n routes$: Observable;\n\n @Select(ConfigState.getOne('currentUser'))\n currentUser$: Observable;\n\n @Select(ConfigState.getDeep('localization.languages'))\n languages$: Observable;\n\n @Select(LayoutState.getNavigationElements)\n navElements$: Observable;\n\n @ViewChild('currentUser', { static: false, read: TemplateRef })\n currentUserRef: TemplateRef;\n\n @ViewChild('language', { static: false, read: TemplateRef })\n languageRef: TemplateRef;\n\n @ViewChildren('navbarRootDropdown', { read: NgbDropdown })\n navbarRootDropdowns: QueryList;\n\n isOpenChangePassword: boolean = false;\n\n isOpenProfile: boolean = false;\n\n isDropdownChildDynamic: boolean;\n\n get visibleRoutes$(): Observable {\n return this.routes$.pipe(map(routes => getVisibleRoutes(routes)));\n }\n\n get defaultLanguage$(): Observable {\n return this.languages$.pipe(\n map(\n languages => snq(() => languages.find(lang => lang.cultureName === this.selectedLangCulture).displayName),\n '',\n ),\n );\n }\n\n get dropdownLanguages$(): Observable {\n return this.languages$.pipe(\n map(languages => snq(() => languages.filter(lang => lang.cultureName !== this.selectedLangCulture)), []),\n );\n }\n\n get selectedLangCulture(): string {\n return this.store.selectSnapshot(SessionState.getLanguage);\n }\n\n rightPartElements: TemplateRef[] = [];\n\n trackByFn: TrackByFunction = (_, item) => item.name;\n\n trackElementByFn: TrackByFunction = (_, element) => element;\n\n constructor(private store: Store, private oauthService: OAuthService) {}\n\n private checkWindowWidth() {\n setTimeout(() => {\n this.navbarRootDropdowns.forEach(item => {\n item.close();\n });\n if (window.innerWidth < 768) {\n this.isDropdownChildDynamic = false;\n } else {\n this.isDropdownChildDynamic = true;\n }\n }, 0);\n }\n\n ngAfterViewInit() {\n const navigations = this.store.selectSnapshot(LayoutState.getNavigationElements).map(({ name }) => name);\n\n if (navigations.indexOf('LanguageRef') < 0) {\n this.store.dispatch(\n new LayoutAddNavigationElement([\n { element: this.languageRef, order: 4, name: 'LanguageRef' },\n { element: this.currentUserRef, order: 5, name: 'CurrentUserRef' },\n ]),\n );\n }\n\n this.navElements$\n .pipe(\n map(elements => elements.map(({ element }) => element)),\n filter(elements => !compare(elements, this.rightPartElements)),\n takeUntilDestroy(this),\n )\n .subscribe(elements => {\n setTimeout(() => (this.rightPartElements = elements), 0);\n });\n\n this.checkWindowWidth();\n\n fromEvent(window, 'resize')\n .pipe(\n takeUntilDestroy(this),\n debounceTime(250),\n )\n .subscribe(() => {\n this.checkWindowWidth();\n });\n }\n\n ngOnDestroy() {}\n\n onChangeLang(cultureName: string) {\n this.store.dispatch(new SessionSetLanguage(cultureName));\n this.store.dispatch(new ConfigGetAppConfiguration());\n }\n\n logout() {\n this.oauthService.logOut();\n this.store.dispatch(\n new Navigate(['/account/login'], null, {\n state: { redirectUrl: this.store.selectSnapshot(RouterState).state.url },\n }),\n );\n this.store.dispatch(new ConfigGetAppConfiguration());\n }\n}\n\nfunction getVisibleRoutes(routes: ABP.FullRoute[]) {\n return routes.reduce((acc, val) => {\n if (val.invisible) return acc;\n\n if (val.children && val.children.length) {\n val.children = getVisibleRoutes(val.children);\n }\n\n return [...acc, val];\n }, []);\n}\n","import { Component } from '@angular/core';\nimport { eLayoutType } from '@abp/ng.core';\n\n@Component({\n selector: 'abp-layout-empty',\n template: `\n Layout-empty\n \n `,\n})\nexport class LayoutEmptyComponent {\n // required for dynamic component\n static type = eLayoutType.empty;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: ' abp-layout',\n templateUrl: './layout.component.html',\n})\nexport class LayoutComponent {\n isCollapsed: boolean = false;\n}\n","import { Profile, ProfileGet, ProfileState, ProfileUpdate } from '@abp/ng.core';\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { take, withLatestFrom } from 'rxjs/operators';\n\nconst { maxLength, required, email } = Validators;\n\n@Component({\n selector: 'abp-profile',\n templateUrl: './profile.component.html',\n})\nexport class ProfileComponent implements OnChanges {\n protected _visible;\n\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n\n set visible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(value);\n }\n\n @Output()\n visibleChange = new EventEmitter();\n\n @Select(ProfileState.getProfile)\n profile$: Observable;\n\n form: FormGroup;\n\n constructor(private fb: FormBuilder, private store: Store) {}\n\n buildForm() {\n this.store\n .dispatch(new ProfileGet())\n .pipe(\n withLatestFrom(this.profile$),\n take(1),\n )\n .subscribe(([, profile]) => {\n this.form = this.fb.group({\n userName: [profile.userName, [required, maxLength(256)]],\n email: [profile.email, [required, email, maxLength(256)]],\n name: [profile.name || '', [maxLength(64)]],\n surname: [profile.surname || '', [maxLength(64)]],\n phoneNumber: [profile.phoneNumber || '', [maxLength(16)]],\n });\n });\n }\n\n onSubmit() {\n if (this.form.invalid) return;\n\n this.store.dispatch(new ProfileUpdate(this.form.value)).subscribe(() => {\n this.visible = false;\n });\n }\n\n openModal() {\n this.buildForm();\n this.visible = true;\n }\n\n ngOnChanges({ visible }: SimpleChanges): void {\n if (!visible) return;\n\n if (visible.currentValue) {\n this.openModal();\n } else if (visible.currentValue === false && this.visible) {\n this.visible = false;\n }\n }\n}\n","import { CoreModule } from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { NgbCollapseModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ChangePasswordComponent } from './components/change-password/change-password.component';\nimport { LayoutAccountComponent } from './components/layout-account/layout-account.component';\nimport { LayoutApplicationComponent } from './components/layout-application/layout-application.component';\nimport { LayoutEmptyComponent } from './components/layout-empty/layout-empty.component';\nimport { LayoutComponent } from './components/layout/layout.component';\nimport { ProfileComponent } from './components/profile/profile.component';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { ToastModule } from 'primeng/toast';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { NgxsModule } from '@ngxs/store';\nimport { LayoutState } from './states/layout.state';\n\nexport const LAYOUTS = [LayoutApplicationComponent, LayoutAccountComponent, LayoutEmptyComponent];\n\n@NgModule({\n declarations: [...LAYOUTS, LayoutComponent, ChangePasswordComponent, ProfileComponent],\n imports: [\n CoreModule,\n ThemeSharedModule,\n NgbCollapseModule,\n NgbDropdownModule,\n ToastModule,\n NgxValidateCoreModule,\n NgxsModule.forFeature([LayoutState]),\n ],\n exports: [...LAYOUTS],\n entryComponents: [...LAYOUTS],\n})\nexport class ThemeBasicModule {}\n","import { TemplateRef } from '@angular/core';\n\nexport namespace Layout {\n export interface State {\n navigationElements: NavigationElement[];\n }\n\n export interface NavigationElement {\n name: string;\n element: TemplateRef;\n order?: number;\n }\n}\n"],"names":["EventEmitter","validatePassword","comparePasswords","ProfileChangePassword","Component","FormBuilder","Store","Input","Output","ViewChild","tslib_1.__spread","tslib_1.__decorate","Action","Selector","State","map","SessionState","filter","takeUntilDestroy","fromEvent","debounceTime","SessionSetLanguage","ConfigGetAppConfiguration","Navigate","RouterState","OAuthService","TemplateRef","ViewChildren","NgbDropdown","Select","ConfigState","Observable","required","ProfileGet","withLatestFrom","take","ProfileUpdate","ProfileState","NgModule","CoreModule","ThemeSharedModule","NgbCollapseModule","NgbDropdownModule","ToastModule","NgxValidateCoreModule","NgxsModule"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/bundles/abp-ng.theme.basic.umd.min.js b/npm/ng-packs/dist/theme-basic/bundles/abp-ng.theme.basic.umd.min.js new file mode 100644 index 00000000000..71b0c147645 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/bundles/abp-ng.theme.basic.umd.min.js @@ -0,0 +1,2 @@ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("@abp/ng.core"),require("@angular/core"),require("@ng-bootstrap/ng-bootstrap"),require("@angular/forms"),require("@ngx-validate/core"),require("@ngxs/store"),require("@ngxs/router-plugin"),require("angular-oauth2-oidc"),require("just-compare"),require("rxjs"),require("rxjs/operators"),require("snq"),require("@abp/ng.theme.shared"),require("primeng/toast")):"function"==typeof define&&define.amd?define("@abp/ng.theme.basic",["exports","@abp/ng.core","@angular/core","@ng-bootstrap/ng-bootstrap","@angular/forms","@ngx-validate/core","@ngxs/store","@ngxs/router-plugin","angular-oauth2-oidc","just-compare","rxjs","rxjs/operators","snq","@abp/ng.theme.shared","primeng/toast"],n):n(((e=e||self).abp=e.abp||{},e.abp.ng=e.abp.ng||{},e.abp.ng.theme=e.abp.ng.theme||{},e.abp.ng.theme.basic={}),e.ng_core,e.ng.core,e.ngBootstrap,e.ng.forms,e.core$1,e.store,e.routerPlugin,e.angularOauth2Oidc,e.compare,e.rxjs,e.rxjs.operators,e.snq,e.ng_theme_shared,e.toast)}(this,function(e,n,t,o,a,r,i,s,l,p,u,d,c,m,g){"use strict";p=p&&p.hasOwnProperty("default")?p.default:p,c=c&&c.hasOwnProperty("default")?c.default:c;var b=function(){return(b=Object.assign||function(e){for(var n,t=1,o=arguments.length;t=0;s--)(a=e[s])&&(i=(r<3?a(i):r>3?a(n,t,i):a(n,t))||i);return r>3&&i&&Object.defineProperty(n,t,i),i}function y(e,n){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,n)}function h(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var o,a,r=t.call(e),i=[];try{for(;(void 0===n||n-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(e){a={error:e}}finally{try{o&&!o.done&&(t=r.return)&&t.call(r)}finally{if(a)throw a.error}}return i}function v(){for(var e=[],n=0;n\n \n

    {{ \'AbpIdentity::ChangePassword\' | abpLocalization }}

    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n\n'}]}],e.ctorParameters=function(){return[{type:a.FormBuilder},{type:i.Store}]},e.propDecorators={visible:[{type:t.Input}],visibleChange:[{type:t.Output}],modalContent:[{type:t.ViewChild,args:["modalContent",{static:!1}]}]},e}(),N=function(){function e(){this.isCollapsed=!1}return e.type="account",e.decorators=[{type:t.Component,args:[{selector:"abp-layout-account",template:'\n \n\n \n \n \n \n \n\n'}]}],e}(),L=function(){function e(e){this.payload=e}return e.type="[Layout] Add Navigation Element",e}(),O=function(){function e(e){this.name=e}return e.type="[Layout] Remove Navigation ElementByName",e}(),D=function(){function e(){}return e.getNavigationElements=function(e){return e.navigationElements},e.prototype.layoutAddAction=function(e,n){var t=e.getState,o=e.patchState,a=n.payload,r=void 0===a?[]:a,i=t().navigationElements;if(Array.isArray(r)||(r=[r]),i.length&&(r=c(function(){return r.filter(function(e){var n=e.name;return i.findIndex(function(e){return e.name===n})<0})},[])),r.length)return o({navigationElements:i=v(i,r).map(function(e){return b({},e,{order:e.order||99})}).sort(function(e,n){return e.order-n.order})})},e.prototype.layoutRemoveAction=function(e,n){var t=e.getState,o=e.patchState,a=n.name,r=t().navigationElements,i=r.findIndex(function(e){return e.name===a});return i>-1&&(r=r.splice(i,1)),o({navigationElements:r})},f([i.Action(L),y("design:type",Function),y("design:paramtypes",[Object,L]),y("design:returntype",void 0)],e.prototype,"layoutAddAction",null),f([i.Action(O),y("design:type",Function),y("design:paramtypes",[Object,O]),y("design:returntype",void 0)],e.prototype,"layoutRemoveAction",null),f([i.Selector(),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Array)],e,"getNavigationElements",null),e=f([i.State({name:"LayoutState",defaults:{navigationElements:[]}})],e)}(),k=function(){function e(e,n){this.store=e,this.oauthService=n,this.isOpenChangePassword=!1,this.isOpenProfile=!1,this.rightPartElements=[],this.trackByFn=function(e,n){return n.name},this.trackElementByFn=function(e,n){return n}}return Object.defineProperty(e.prototype,"visibleRoutes$",{get:function(){return this.routes$.pipe(d.map(function(e){return function e(n){return n.reduce(function(n,t){return t.invisible?n:(t.children&&t.children.length&&(t.children=e(t.children)),v(n,[t]))},[])}(e)}))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"defaultLanguage$",{get:function(){var e=this;return this.languages$.pipe(d.map(function(n){return c(function(){return n.find(function(n){return n.cultureName===e.selectedLangCulture}).displayName})},""))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dropdownLanguages$",{get:function(){var e=this;return this.languages$.pipe(d.map(function(n){return c(function(){return n.filter(function(n){return n.cultureName!==e.selectedLangCulture})})},[]))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"selectedLangCulture",{get:function(){return this.store.selectSnapshot(n.SessionState.getLanguage)},enumerable:!0,configurable:!0}),e.prototype.checkWindowWidth=function(){var e=this;setTimeout(function(){e.navbarRootDropdowns.forEach(function(e){e.close()}),window.innerWidth<768?e.isDropdownChildDynamic=!1:e.isDropdownChildDynamic=!0},0)},e.prototype.ngAfterViewInit=function(){var e=this;this.store.selectSnapshot(D.getNavigationElements).map(function(e){return e.name}).indexOf("LanguageRef")<0&&this.store.dispatch(new L([{element:this.languageRef,order:4,name:"LanguageRef"},{element:this.currentUserRef,order:5,name:"CurrentUserRef"}])),this.navElements$.pipe(d.map(function(e){return e.map(function(e){return e.element})}),d.filter(function(n){return!p(n,e.rightPartElements)}),n.takeUntilDestroy(this)).subscribe(function(n){setTimeout(function(){return e.rightPartElements=n},0)}),this.checkWindowWidth(),u.fromEvent(window,"resize").pipe(n.takeUntilDestroy(this),d.debounceTime(250)).subscribe(function(){e.checkWindowWidth()})},e.prototype.ngOnDestroy=function(){},e.prototype.onChangeLang=function(e){this.store.dispatch(new n.SessionSetLanguage(e)),this.store.dispatch(new n.ConfigGetAppConfiguration)},e.prototype.logout=function(){this.oauthService.logOut(),this.store.dispatch(new s.Navigate(["/account/login"],null,{state:{redirectUrl:this.store.selectSnapshot(s.RouterState).state.url}})),this.store.dispatch(new n.ConfigGetAppConfiguration)},e.type="application",e.decorators=[{type:t.Component,args:[{selector:"abp-layout-application",template:'\n \n\n \n\n\n\n \n\n\n\n \n\n \n\n \n\n'}]}],e.ctorParameters=function(){return[{type:i.Store},{type:l.OAuthService}]},e.propDecorators={currentUserRef:[{type:t.ViewChild,args:["currentUser",{static:!1,read:t.TemplateRef}]}],languageRef:[{type:t.ViewChild,args:["language",{static:!1,read:t.TemplateRef}]}],navbarRootDropdowns:[{type:t.ViewChildren,args:["navbarRootDropdown",{read:o.NgbDropdown}]}]},f([i.Select(n.ConfigState.getOne("routes")),y("design:type",u.Observable)],e.prototype,"routes$",void 0),f([i.Select(n.ConfigState.getOne("currentUser")),y("design:type",u.Observable)],e.prototype,"currentUser$",void 0),f([i.Select(n.ConfigState.getDeep("localization.languages")),y("design:type",u.Observable)],e.prototype,"languages$",void 0),f([i.Select(D.getNavigationElements),y("design:type",u.Observable)],e.prototype,"navElements$",void 0),e}();var S,x=function(){function e(){}return e.type="empty",e.decorators=[{type:t.Component,args:[{selector:"abp-layout-empty",template:"\n Layout-empty\n \n "}]}],e}(),A=function(){function e(){this.isCollapsed=!1}return e.decorators=[{type:t.Component,args:[{selector:" abp-layout",template:'\n\n
    \n \n
    \n\n\n\n'}]}],e}(),E=a.Validators.maxLength,F=a.Validators.required,I=a.Validators.email,j=function(){function e(e,n){this.fb=e,this.store=n,this.visibleChange=new t.EventEmitter}return Object.defineProperty(e.prototype,"visible",{get:function(){return this._visible},set:function(e){this._visible=e,this.visibleChange.emit(e)},enumerable:!0,configurable:!0}),e.prototype.buildForm=function(){var e=this;this.store.dispatch(new n.ProfileGet).pipe(d.withLatestFrom(this.profile$),d.take(1)).subscribe(function(n){var t=h(n,2)[1];e.form=e.fb.group({userName:[t.userName,[F,E(256)]],email:[t.email,[F,I,E(256)]],name:[t.name||"",[E(64)]],surname:[t.surname||"",[E(64)]],phoneNumber:[t.phoneNumber||"",[E(16)]]})})},e.prototype.onSubmit=function(){var e=this;this.form.invalid||this.store.dispatch(new n.ProfileUpdate(this.form.value)).subscribe(function(){e.visible=!1})},e.prototype.openModal=function(){this.buildForm(),this.visible=!0},e.prototype.ngOnChanges=function(e){var n=e.visible;n&&(n.currentValue?this.openModal():!1===n.currentValue&&this.visible&&(this.visible=!1))},e.decorators=[{type:t.Component,args:[{selector:"abp-profile",template:'\n \n

    {{ \'AbpIdentity::PersonalInfo\' | abpLocalization }}

    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n
    \n'}]}],e.ctorParameters=function(){return[{type:a.FormBuilder},{type:i.Store}]},e.propDecorators={visible:[{type:t.Input}],visibleChange:[{type:t.Output}]},f([i.Select(n.ProfileState.getProfile),y("design:type",u.Observable)],e.prototype,"profile$",void 0),e}(),R=[k,N,x],T=function(){function e(){}return e.decorators=[{type:t.NgModule,args:[{declarations:v(R,[A,P,j]),imports:[n.CoreModule,m.ThemeSharedModule,o.NgbCollapseModule,o.NgbDropdownModule,g.ToastModule,r.NgxValidateCoreModule,i.NgxsModule.forFeature([D])],exports:v(R),entryComponents:v(R)}]}],e}();!function(e){e.State=function(){},e.NavigationElement=function(){}}(S||(S={})),e.LAYOUTS=R,e.LayoutAccountComponent=N,e.LayoutAddNavigationElement=L,e.LayoutApplicationComponent=k,e.LayoutEmptyComponent=x,e.LayoutRemoveNavigationElementByName=O,e.LayoutState=D,e.ThemeBasicModule=T,e.ɵa=k,e.ɵb=D,e.ɵc=N,e.ɵd=x,e.ɵe=A,e.ɵf=P,e.ɵg=j,e.ɵh=D,e.ɵi=L,e.ɵj=O,Object.defineProperty(e,"__esModule",{value:!0})}); +//# sourceMappingURL=abp-ng.theme.basic.umd.min.js.map \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/bundles/abp-ng.theme.basic.umd.min.js.map b/npm/ng-packs/dist/theme-basic/bundles/abp-ng.theme.basic.umd.min.js.map new file mode 100644 index 00000000000..f53d0c0314b --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/bundles/abp-ng.theme.basic.umd.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@abp/ng.theme.basic/lib/components/change-password/change-password.component.ts","ng://@abp/ng.theme.basic/lib/components/layout-account/layout-account.component.ts","ng://@abp/ng.theme.basic/lib/actions/layout.actions.ts","ng://@abp/ng.theme.basic/lib/states/layout.state.ts","ng://@abp/ng.theme.basic/lib/components/layout-application/layout-application.component.ts","ng://@abp/ng.theme.basic/lib/components/layout-empty/layout-empty.component.ts","ng://@abp/ng.theme.basic/lib/models/layout.ts","ng://@abp/ng.theme.basic/lib/components/layout/layout.component.ts","ng://@abp/ng.theme.basic/lib/components/profile/profile.component.ts","ng://@abp/ng.theme.basic/lib/theme-basic.module.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__metadata","metadataKey","metadataValue","metadata","__read","o","m","Symbol","iterator","e","ar","next","done","push","value","error","__spread","concat","minLength","forms","Validators","required","ChangePasswordComponent","fb","store","visibleChange","EventEmitter","_visible","emit","ngOnInit","form","group","password","validatePassword","newPassword","repeatNewPassword","validators","comparePasswords","onSubmit","_this","invalid","dispatch","ProfileChangePassword","currentPassword","get","subscribe","visible","openModal","ngOnChanges","_a","currentValue","Component","args","selector","template","FormBuilder","Store","Input","Output","ViewChild","static","LayoutAccountComponent","isCollapsed","type","LayoutAddNavigationElement","payload","LayoutRemoveNavigationElementByName","name","LayoutState","getNavigationElements","navigationElements","layoutAddAction","_b","getState","patchState","_c","Array","isArray","snq","filter","findIndex","nav","tslib_1.__spread","map","element","order","sort","a","b","layoutRemoveAction","index","splice","tslib_1.__decorate","Action","Selector","State","defaults","LayoutApplicationComponent","oauthService","isOpenChangePassword","isOpenProfile","rightPartElements","trackByFn","_","item","trackElementByFn","routes$","pipe","routes","getVisibleRoutes","reduce","acc","val","invisible","children","languages$","languages","find","lang","cultureName","selectedLangCulture","displayName","selectSnapshot","SessionState","getLanguage","checkWindowWidth","setTimeout","navbarRootDropdowns","forEach","close","window","innerWidth","isDropdownChildDynamic","ngAfterViewInit","indexOf","languageRef","currentUserRef","navElements$","elements","compare","takeUntilDestroy","fromEvent","debounceTime","ngOnDestroy","onChangeLang","SessionSetLanguage","ConfigGetAppConfiguration","logout","logOut","Navigate","state","redirectUrl","RouterState","url","OAuthService","read","TemplateRef","ViewChildren","NgbDropdown","Select","ConfigState","getOne","Observable","getDeep","Layout","LayoutEmptyComponent","LayoutComponent","maxLength","email","ProfileComponent","buildForm","ProfileGet","withLatestFrom","profile$","take","profile","userName","surname","phoneNumber","ProfileUpdate","ProfileState","getProfile","LAYOUTS","ThemeBasicModule","NgModule","declarations","imports","CoreModule","ThemeSharedModule","NgbCollapseModule","NgbDropdownModule","ToastModule","NgxValidateCoreModule","NgxsModule","forFeature","exports","entryComponents"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { ProfileChangePassword } from '@abp/ng.core';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { comparePasswords, validatePassword } from '@ngx-validate/core';\nimport { Store } from '@ngxs/store';\n\nconst { minLength, required } = Validators;\n\n@Component({\n selector: 'abp-change-password',\n templateUrl: './change-password.component.html',\n})\nexport class ChangePasswordComponent implements OnInit, OnChanges {\n protected _visible;\n\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n\n set visible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(value);\n }\n\n @Output()\n visibleChange = new EventEmitter();\n\n @ViewChild('modalContent', { static: false })\n modalContent: TemplateRef;\n\n form: FormGroup;\n\n constructor(private fb: FormBuilder, private store: Store) {}\n\n ngOnInit(): void {\n this.form = this.fb.group(\n {\n password: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]],\n newPassword: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]],\n repeatNewPassword: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]],\n },\n {\n validators: [comparePasswords(['newPassword', 'repeatNewPassword'])],\n },\n );\n }\n\n onSubmit() {\n if (this.form.invalid) return;\n\n this.store\n .dispatch(\n new ProfileChangePassword({\n currentPassword: this.form.get('password').value,\n newPassword: this.form.get('newPassword').value,\n }),\n )\n .subscribe(() => {\n this.visible = false;\n });\n }\n\n openModal() {\n this.visible = true;\n }\n\n ngOnChanges({ visible }: SimpleChanges): void {\n if (!visible) return;\n\n if (visible.currentValue) {\n this.openModal();\n } else if (visible.currentValue === false && this.visible) {\n this.visible = false;\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { eLayoutType } from '@abp/ng.core';\n\n@Component({\n selector: 'abp-layout-account',\n templateUrl: './layout-account.component.html',\n})\nexport class LayoutAccountComponent {\n // required for dynamic component\n static type = eLayoutType.account;\n\n isCollapsed: boolean = false;\n}\n","import { Layout } from '../models/layout';\n\nexport class LayoutAddNavigationElement {\n static readonly type = '[Layout] Add Navigation Element';\n constructor(public payload: Layout.NavigationElement | Layout.NavigationElement[]) {}\n}\n\nexport class LayoutRemoveNavigationElementByName {\n static readonly type = '[Layout] Remove Navigation ElementByName';\n constructor(public name: string) {}\n}\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\nimport { LayoutAddNavigationElement, LayoutRemoveNavigationElementByName } from '../actions/layout.actions';\nimport { Layout } from '../models/layout';\nimport { TemplateRef } from '@angular/core';\nimport snq from 'snq';\n\n@State({\n name: 'LayoutState',\n defaults: { navigationElements: [] } as Layout.State,\n})\nexport class LayoutState {\n @Selector()\n static getNavigationElements({ navigationElements }: Layout.State): Layout.NavigationElement[] {\n return navigationElements;\n }\n\n @Action(LayoutAddNavigationElement)\n layoutAddAction({ getState, patchState }: StateContext, { payload = [] }: LayoutAddNavigationElement) {\n let { navigationElements } = getState();\n\n if (!Array.isArray(payload)) {\n payload = [payload];\n }\n\n if (navigationElements.length) {\n payload = snq(\n () =>\n (payload as Layout.NavigationElement[]).filter(\n ({ name }) => navigationElements.findIndex(nav => nav.name === name) < 0,\n ),\n [],\n );\n }\n\n if (!payload.length) return;\n\n navigationElements = [...navigationElements, ...payload]\n .map(element => ({ ...element, order: element.order || 99 }))\n .sort((a, b) => a.order - b.order);\n\n return patchState({\n navigationElements,\n });\n }\n\n @Action(LayoutRemoveNavigationElementByName)\n layoutRemoveAction(\n { getState, patchState }: StateContext,\n { name }: LayoutRemoveNavigationElementByName,\n ) {\n let { navigationElements } = getState();\n\n const index = navigationElements.findIndex(element => element.name === name);\n\n if (index > -1) {\n navigationElements = navigationElements.splice(index, 1);\n }\n\n return patchState({\n navigationElements,\n });\n }\n}\n","import {\n ABP,\n ApplicationConfiguration,\n ConfigGetAppConfiguration,\n ConfigState,\n eLayoutType,\n SessionSetLanguage,\n SessionState,\n takeUntilDestroy,\n} from '@abp/ng.core';\nimport {\n AfterViewInit,\n Component,\n OnDestroy,\n QueryList,\n TemplateRef,\n TrackByFunction,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { NgbDropdown } from '@ng-bootstrap/ng-bootstrap';\nimport { Navigate, RouterState } from '@ngxs/router-plugin';\nimport { Select, Store } from '@ngxs/store';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport compare from 'just-compare';\nimport { fromEvent, Observable } from 'rxjs';\nimport { debounceTime, filter, map } from 'rxjs/operators';\nimport snq from 'snq';\nimport { LayoutAddNavigationElement } from '../../actions';\nimport { Layout } from '../../models/layout';\nimport { LayoutState } from '../../states';\n\n@Component({\n selector: 'abp-layout-application',\n templateUrl: './layout-application.component.html',\n})\nexport class LayoutApplicationComponent implements AfterViewInit, OnDestroy {\n // required for dynamic component\n static type = eLayoutType.application;\n\n @Select(ConfigState.getOne('routes'))\n routes$: Observable;\n\n @Select(ConfigState.getOne('currentUser'))\n currentUser$: Observable;\n\n @Select(ConfigState.getDeep('localization.languages'))\n languages$: Observable;\n\n @Select(LayoutState.getNavigationElements)\n navElements$: Observable;\n\n @ViewChild('currentUser', { static: false, read: TemplateRef })\n currentUserRef: TemplateRef;\n\n @ViewChild('language', { static: false, read: TemplateRef })\n languageRef: TemplateRef;\n\n @ViewChildren('navbarRootDropdown', { read: NgbDropdown })\n navbarRootDropdowns: QueryList;\n\n isOpenChangePassword: boolean = false;\n\n isOpenProfile: boolean = false;\n\n isDropdownChildDynamic: boolean;\n\n get visibleRoutes$(): Observable {\n return this.routes$.pipe(map(routes => getVisibleRoutes(routes)));\n }\n\n get defaultLanguage$(): Observable {\n return this.languages$.pipe(\n map(\n languages => snq(() => languages.find(lang => lang.cultureName === this.selectedLangCulture).displayName),\n '',\n ),\n );\n }\n\n get dropdownLanguages$(): Observable {\n return this.languages$.pipe(\n map(languages => snq(() => languages.filter(lang => lang.cultureName !== this.selectedLangCulture)), []),\n );\n }\n\n get selectedLangCulture(): string {\n return this.store.selectSnapshot(SessionState.getLanguage);\n }\n\n rightPartElements: TemplateRef[] = [];\n\n trackByFn: TrackByFunction = (_, item) => item.name;\n\n trackElementByFn: TrackByFunction = (_, element) => element;\n\n constructor(private store: Store, private oauthService: OAuthService) {}\n\n private checkWindowWidth() {\n setTimeout(() => {\n this.navbarRootDropdowns.forEach(item => {\n item.close();\n });\n if (window.innerWidth < 768) {\n this.isDropdownChildDynamic = false;\n } else {\n this.isDropdownChildDynamic = true;\n }\n }, 0);\n }\n\n ngAfterViewInit() {\n const navigations = this.store.selectSnapshot(LayoutState.getNavigationElements).map(({ name }) => name);\n\n if (navigations.indexOf('LanguageRef') < 0) {\n this.store.dispatch(\n new LayoutAddNavigationElement([\n { element: this.languageRef, order: 4, name: 'LanguageRef' },\n { element: this.currentUserRef, order: 5, name: 'CurrentUserRef' },\n ]),\n );\n }\n\n this.navElements$\n .pipe(\n map(elements => elements.map(({ element }) => element)),\n filter(elements => !compare(elements, this.rightPartElements)),\n takeUntilDestroy(this),\n )\n .subscribe(elements => {\n setTimeout(() => (this.rightPartElements = elements), 0);\n });\n\n this.checkWindowWidth();\n\n fromEvent(window, 'resize')\n .pipe(\n takeUntilDestroy(this),\n debounceTime(250),\n )\n .subscribe(() => {\n this.checkWindowWidth();\n });\n }\n\n ngOnDestroy() {}\n\n onChangeLang(cultureName: string) {\n this.store.dispatch(new SessionSetLanguage(cultureName));\n this.store.dispatch(new ConfigGetAppConfiguration());\n }\n\n logout() {\n this.oauthService.logOut();\n this.store.dispatch(\n new Navigate(['/account/login'], null, {\n state: { redirectUrl: this.store.selectSnapshot(RouterState).state.url },\n }),\n );\n this.store.dispatch(new ConfigGetAppConfiguration());\n }\n}\n\nfunction getVisibleRoutes(routes: ABP.FullRoute[]) {\n return routes.reduce((acc, val) => {\n if (val.invisible) return acc;\n\n if (val.children && val.children.length) {\n val.children = getVisibleRoutes(val.children);\n }\n\n return [...acc, val];\n }, []);\n}\n","import { Component } from '@angular/core';\nimport { eLayoutType } from '@abp/ng.core';\n\n@Component({\n selector: 'abp-layout-empty',\n template: `\n Layout-empty\n \n `,\n})\nexport class LayoutEmptyComponent {\n // required for dynamic component\n static type = eLayoutType.empty;\n}\n","import { TemplateRef } from '@angular/core';\n\nexport namespace Layout {\n export interface State {\n navigationElements: NavigationElement[];\n }\n\n export interface NavigationElement {\n name: string;\n element: TemplateRef;\n order?: number;\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: ' abp-layout',\n templateUrl: './layout.component.html',\n})\nexport class LayoutComponent {\n isCollapsed: boolean = false;\n}\n","import { Profile, ProfileGet, ProfileState, ProfileUpdate } from '@abp/ng.core';\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { take, withLatestFrom } from 'rxjs/operators';\n\nconst { maxLength, required, email } = Validators;\n\n@Component({\n selector: 'abp-profile',\n templateUrl: './profile.component.html',\n})\nexport class ProfileComponent implements OnChanges {\n protected _visible;\n\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n\n set visible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(value);\n }\n\n @Output()\n visibleChange = new EventEmitter();\n\n @Select(ProfileState.getProfile)\n profile$: Observable;\n\n form: FormGroup;\n\n constructor(private fb: FormBuilder, private store: Store) {}\n\n buildForm() {\n this.store\n .dispatch(new ProfileGet())\n .pipe(\n withLatestFrom(this.profile$),\n take(1),\n )\n .subscribe(([, profile]) => {\n this.form = this.fb.group({\n userName: [profile.userName, [required, maxLength(256)]],\n email: [profile.email, [required, email, maxLength(256)]],\n name: [profile.name || '', [maxLength(64)]],\n surname: [profile.surname || '', [maxLength(64)]],\n phoneNumber: [profile.phoneNumber || '', [maxLength(16)]],\n });\n });\n }\n\n onSubmit() {\n if (this.form.invalid) return;\n\n this.store.dispatch(new ProfileUpdate(this.form.value)).subscribe(() => {\n this.visible = false;\n });\n }\n\n openModal() {\n this.buildForm();\n this.visible = true;\n }\n\n ngOnChanges({ visible }: SimpleChanges): void {\n if (!visible) return;\n\n if (visible.currentValue) {\n this.openModal();\n } else if (visible.currentValue === false && this.visible) {\n this.visible = false;\n }\n }\n}\n","import { CoreModule } from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { NgbCollapseModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ChangePasswordComponent } from './components/change-password/change-password.component';\nimport { LayoutAccountComponent } from './components/layout-account/layout-account.component';\nimport { LayoutApplicationComponent } from './components/layout-application/layout-application.component';\nimport { LayoutEmptyComponent } from './components/layout-empty/layout-empty.component';\nimport { LayoutComponent } from './components/layout/layout.component';\nimport { ProfileComponent } from './components/profile/profile.component';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { ToastModule } from 'primeng/toast';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { NgxsModule } from '@ngxs/store';\nimport { LayoutState } from './states/layout.state';\n\nexport const LAYOUTS = [LayoutApplicationComponent, LayoutAccountComponent, LayoutEmptyComponent];\n\n@NgModule({\n declarations: [...LAYOUTS, LayoutComponent, ChangePasswordComponent, ProfileComponent],\n imports: [\n CoreModule,\n ThemeSharedModule,\n NgbCollapseModule,\n NgbDropdownModule,\n ToastModule,\n NgxValidateCoreModule,\n NgxsModule.forFeature([LayoutState]),\n ],\n exports: [...LAYOUTS],\n entryComponents: [...LAYOUTS],\n})\nexport class ThemeBasicModule {}\n"]} \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm2015/abp-ng.theme.basic.js b/npm/ng-packs/dist/theme-basic/esm2015/abp-ng.theme.basic.js new file mode 100644 index 00000000000..dc107326c4f --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm2015/abp-ng.theme.basic.js @@ -0,0 +1,18 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { LAYOUTS, ThemeBasicModule, LayoutAddNavigationElement, LayoutRemoveNavigationElementByName, LayoutAccountComponent, LayoutApplicationComponent, LayoutEmptyComponent, LayoutState } from './public-api'; +export { LayoutAddNavigationElement as ɵi, LayoutRemoveNavigationElementByName as ɵj } from './lib/actions/layout.actions'; +export { ChangePasswordComponent as ɵf } from './lib/components/change-password/change-password.component'; +export { LayoutAccountComponent as ɵc } from './lib/components/layout-account/layout-account.component'; +export { LayoutApplicationComponent as ɵa } from './lib/components/layout-application/layout-application.component'; +export { LayoutEmptyComponent as ɵd } from './lib/components/layout-empty/layout-empty.component'; +export { LayoutComponent as ɵe } from './lib/components/layout/layout.component'; +export { ProfileComponent as ɵg } from './lib/components/profile/profile.component'; +export { LayoutState as ɵb } from './lib/states'; +export { LayoutState as ɵh } from './lib/states/layout.state'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLnRoZW1lLmJhc2ljLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5iYXNpYy8iLCJzb3VyY2VzIjpbImFicC1uZy50aGVtZS5iYXNpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsa01BQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQywwQkFBMEIsSUFBSSxFQUFFLEVBQUMsbUNBQW1DLElBQUksRUFBRSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDeEgsT0FBTyxFQUFDLHVCQUF1QixJQUFJLEVBQUUsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ3pHLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUN0RyxPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDbEgsT0FBTyxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBQ2hHLE9BQU8sRUFBQyxlQUFlLElBQUksRUFBRSxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBRWxGLE9BQU8sRUFBQyxXQUFXLElBQUksRUFBRSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQy9DLE9BQU8sRUFBQyxXQUFXLElBQUksRUFBRSxFQUFDLE1BQU0sMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG5cbmV4cG9ydCB7TGF5b3V0QWRkTmF2aWdhdGlvbkVsZW1lbnQgYXMgybVpLExheW91dFJlbW92ZU5hdmlnYXRpb25FbGVtZW50QnlOYW1lIGFzIMm1an0gZnJvbSAnLi9saWIvYWN0aW9ucy9sYXlvdXQuYWN0aW9ucyc7XG5leHBvcnQge0NoYW5nZVBhc3N3b3JkQ29tcG9uZW50IGFzIMm1Zn0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9jaGFuZ2UtcGFzc3dvcmQvY2hhbmdlLXBhc3N3b3JkLmNvbXBvbmVudCc7XG5leHBvcnQge0xheW91dEFjY291bnRDb21wb25lbnQgYXMgybVjfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xheW91dC1hY2NvdW50L2xheW91dC1hY2NvdW50LmNvbXBvbmVudCc7XG5leHBvcnQge0xheW91dEFwcGxpY2F0aW9uQ29tcG9uZW50IGFzIMm1YX0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXlvdXQtYXBwbGljYXRpb24vbGF5b3V0LWFwcGxpY2F0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQge0xheW91dEVtcHR5Q29tcG9uZW50IGFzIMm1ZH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXlvdXQtZW1wdHkvbGF5b3V0LWVtcHR5LmNvbXBvbmVudCc7XG5leHBvcnQge0xheW91dENvbXBvbmVudCBhcyDJtWV9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGF5b3V0L2xheW91dC5jb21wb25lbnQnO1xuZXhwb3J0IHtQcm9maWxlQ29tcG9uZW50IGFzIMm1Z30gZnJvbSAnLi9saWIvY29tcG9uZW50cy9wcm9maWxlL3Byb2ZpbGUuY29tcG9uZW50JztcbmV4cG9ydCB7TGF5b3V0IGFzIMm1a30gZnJvbSAnLi9saWIvbW9kZWxzL2xheW91dCc7XG5leHBvcnQge0xheW91dFN0YXRlIGFzIMm1Yn0gZnJvbSAnLi9saWIvc3RhdGVzJztcbmV4cG9ydCB7TGF5b3V0U3RhdGUgYXMgybVofSBmcm9tICcuL2xpYi9zdGF0ZXMvbGF5b3V0LnN0YXRlJzsiXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm2015/lib/actions/index.js b/npm/ng-packs/dist/theme-basic/esm2015/lib/actions/index.js new file mode 100644 index 00000000000..0ee70b20826 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm2015/lib/actions/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { LayoutAddNavigationElement, LayoutRemoveNavigationElementByName } from './layout.actions'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLmJhc2ljLyIsInNvdXJjZXMiOlsibGliL2FjdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGdGQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9sYXlvdXQuYWN0aW9ucyc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm2015/lib/actions/layout.actions.js b/npm/ng-packs/dist/theme-basic/esm2015/lib/actions/layout.actions.js new file mode 100644 index 00000000000..dea3851f054 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm2015/lib/actions/layout.actions.js @@ -0,0 +1,35 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export class LayoutAddNavigationElement { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +LayoutAddNavigationElement.type = '[Layout] Add Navigation Element'; +if (false) { + /** @type {?} */ + LayoutAddNavigationElement.type; + /** @type {?} */ + LayoutAddNavigationElement.prototype.payload; +} +export class LayoutRemoveNavigationElementByName { + /** + * @param {?} name + */ + constructor(name) { + this.name = name; + } +} +LayoutRemoveNavigationElementByName.type = '[Layout] Remove Navigation ElementByName'; +if (false) { + /** @type {?} */ + LayoutRemoveNavigationElementByName.type; + /** @type {?} */ + LayoutRemoveNavigationElementByName.prototype.name; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmFjdGlvbnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLmJhc2ljLyIsInNvdXJjZXMiOlsibGliL2FjdGlvbnMvbGF5b3V0LmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLE1BQU0sT0FBTywwQkFBMEI7Ozs7SUFFckMsWUFBbUIsT0FBOEQ7UUFBOUQsWUFBTyxHQUFQLE9BQU8sQ0FBdUQ7SUFBRyxDQUFDOztBQURyRSwrQkFBSSxHQUFHLGlDQUFpQyxDQUFDOzs7SUFBekQsZ0NBQXlEOztJQUM3Qyw2Q0FBcUU7O0FBR25GLE1BQU0sT0FBTyxtQ0FBbUM7Ozs7SUFFOUMsWUFBbUIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFBRyxDQUFDOztBQURuQix3Q0FBSSxHQUFHLDBDQUEwQyxDQUFDOzs7SUFBbEUseUNBQWtFOztJQUN0RCxtREFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYXlvdXQgfSBmcm9tICcuLi9tb2RlbHMvbGF5b3V0JztcblxuZXhwb3J0IGNsYXNzIExheW91dEFkZE5hdmlnYXRpb25FbGVtZW50IHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0xheW91dF0gQWRkIE5hdmlnYXRpb24gRWxlbWVudCc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBMYXlvdXQuTmF2aWdhdGlvbkVsZW1lbnQgfCBMYXlvdXQuTmF2aWdhdGlvbkVsZW1lbnRbXSkge31cbn1cblxuZXhwb3J0IGNsYXNzIExheW91dFJlbW92ZU5hdmlnYXRpb25FbGVtZW50QnlOYW1lIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0xheW91dF0gUmVtb3ZlIE5hdmlnYXRpb24gRWxlbWVudEJ5TmFtZSc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcpIHt9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm2015/lib/components/change-password/change-password.component.js b/npm/ng-packs/dist/theme-basic/esm2015/lib/components/change-password/change-password.component.js new file mode 100644 index 00000000000..317d262e283 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm2015/lib/components/change-password/change-password.component.js @@ -0,0 +1,125 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { ProfileChangePassword } from '@abp/ng.core'; +import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild, } from '@angular/core'; +import { FormBuilder, Validators } from '@angular/forms'; +import { comparePasswords, validatePassword } from '@ngx-validate/core'; +import { Store } from '@ngxs/store'; +const { minLength, required } = Validators; +export class ChangePasswordComponent { + /** + * @param {?} fb + * @param {?} store + */ + constructor(fb, store) { + this.fb = fb; + this.store = store; + this.visibleChange = new EventEmitter(); + } + /** + * @return {?} + */ + get visible() { + return this._visible; + } + /** + * @param {?} value + * @return {?} + */ + set visible(value) { + this._visible = value; + this.visibleChange.emit(value); + } + /** + * @return {?} + */ + ngOnInit() { + this.form = this.fb.group({ + password: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]], + newPassword: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]], + repeatNewPassword: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]], + }, { + validators: [comparePasswords(['newPassword', 'repeatNewPassword'])], + }); + } + /** + * @return {?} + */ + onSubmit() { + if (this.form.invalid) + return; + this.store + .dispatch(new ProfileChangePassword({ + currentPassword: this.form.get('password').value, + newPassword: this.form.get('newPassword').value, + })) + .subscribe((/** + * @return {?} + */ + () => { + this.visible = false; + })); + } + /** + * @return {?} + */ + openModal() { + this.visible = true; + } + /** + * @param {?} __0 + * @return {?} + */ + ngOnChanges({ visible }) { + if (!visible) + return; + if (visible.currentValue) { + this.openModal(); + } + else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + } +} +ChangePasswordComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-change-password', + template: "\n \n

    {{ 'AbpIdentity::ChangePassword' | abpLocalization }}

    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n
    \n" + }] } +]; +/** @nocollapse */ +ChangePasswordComponent.ctorParameters = () => [ + { type: FormBuilder }, + { type: Store } +]; +ChangePasswordComponent.propDecorators = { + visible: [{ type: Input }], + visibleChange: [{ type: Output }], + modalContent: [{ type: ViewChild, args: ['modalContent', { static: false },] }] +}; +if (false) { + /** + * @type {?} + * @protected + */ + ChangePasswordComponent.prototype._visible; + /** @type {?} */ + ChangePasswordComponent.prototype.visibleChange; + /** @type {?} */ + ChangePasswordComponent.prototype.modalContent; + /** @type {?} */ + ChangePasswordComponent.prototype.form; + /** + * @type {?} + * @private + */ + ChangePasswordComponent.prototype.fb; + /** + * @type {?} + * @private + */ + ChangePasswordComponent.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLXBhc3N3b3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuYmFzaWMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9jaGFuZ2UtcGFzc3dvcmQvY2hhbmdlLXBhc3N3b3JkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7TUFFOUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsVUFBVTtBQU0xQyxNQUFNLE9BQU8sdUJBQXVCOzs7OztJQXFCbEMsWUFBb0IsRUFBZSxFQUFVLEtBQVk7UUFBckMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQU87UUFQekQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBT2dCLENBQUM7Ozs7SUFsQjdELElBQ0ksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDOzs7OztJQUVELElBQUksT0FBTyxDQUFDLEtBQWM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQzs7OztJQVlELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUN2QjtZQUNFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckcsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RyxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDL0csRUFDRDtZQUNFLFVBQVUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsYUFBYSxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQztTQUNyRSxDQUNGLENBQUM7SUFDSixDQUFDOzs7O0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUU5QixJQUFJLENBQUMsS0FBSzthQUNQLFFBQVEsQ0FDUCxJQUFJLHFCQUFxQixDQUFDO1lBQ3hCLGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLO1lBQ2hELFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLO1NBQ2hELENBQUMsQ0FDSDthQUNBLFNBQVM7OztRQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7OztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDOzs7OztJQUVELFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBaUI7UUFDcEMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRXJCLElBQUksT0FBTyxDQUFDLFlBQVksRUFBRTtZQUN4QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDbEI7YUFBTSxJQUFJLE9BQU8sQ0FBQyxZQUFZLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDekQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7U0FDdEI7SUFDSCxDQUFDOzs7WUFuRUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLGd4REFBK0M7YUFDaEQ7Ozs7WUFUUSxXQUFXO1lBRVgsS0FBSzs7O3NCQVdYLEtBQUs7NEJBVUwsTUFBTTsyQkFHTixTQUFTLFNBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7Ozs7OztJQWY1QywyQ0FBbUI7O0lBWW5CLGdEQUM0Qzs7SUFFNUMsK0NBQytCOztJQUUvQix1Q0FBZ0I7Ozs7O0lBRUoscUNBQXVCOzs7OztJQUFFLHdDQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2ZpbGVDaGFuZ2VQYXNzd29yZCB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvbXBhcmVQYXNzd29yZHMsIHZhbGlkYXRlUGFzc3dvcmQgfSBmcm9tICdAbmd4LXZhbGlkYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5cbmNvbnN0IHsgbWluTGVuZ3RoLCByZXF1aXJlZCB9ID0gVmFsaWRhdG9ycztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWJwLWNoYW5nZS1wYXNzd29yZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFuZ2UtcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFuZ2VQYXNzd29yZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgcHJvdGVjdGVkIF92aXNpYmxlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xuICB9XG5cbiAgc2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl92aXNpYmxlID0gdmFsdWU7XG4gICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQFZpZXdDaGlsZCgnbW9kYWxDb250ZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIG1vZGFsQ29udGVudDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBmb3JtOiBGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoXG4gICAgICB7XG4gICAgICAgIHBhc3N3b3JkOiBbJycsIFtyZXF1aXJlZCwgbWluTGVuZ3RoKDYpLCB2YWxpZGF0ZVBhc3N3b3JkKFsnc21hbGwnLCAnY2FwaXRhbCcsICdudW1iZXInLCAnc3BlY2lhbCddKV1dLFxuICAgICAgICBuZXdQYXNzd29yZDogWycnLCBbcmVxdWlyZWQsIG1pbkxlbmd0aCg2KSwgdmFsaWRhdGVQYXNzd29yZChbJ3NtYWxsJywgJ2NhcGl0YWwnLCAnbnVtYmVyJywgJ3NwZWNpYWwnXSldXSxcbiAgICAgICAgcmVwZWF0TmV3UGFzc3dvcmQ6IFsnJywgW3JlcXVpcmVkLCBtaW5MZW5ndGgoNiksIHZhbGlkYXRlUGFzc3dvcmQoWydzbWFsbCcsICdjYXBpdGFsJywgJ251bWJlcicsICdzcGVjaWFsJ10pXV0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB2YWxpZGF0b3JzOiBbY29tcGFyZVBhc3N3b3JkcyhbJ25ld1Bhc3N3b3JkJywgJ3JlcGVhdE5ld1Bhc3N3b3JkJ10pXSxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIG9uU3VibWl0KCkge1xuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5zdG9yZVxuICAgICAgLmRpc3BhdGNoKFxuICAgICAgICBuZXcgUHJvZmlsZUNoYW5nZVBhc3N3b3JkKHtcbiAgICAgICAgICBjdXJyZW50UGFzc3dvcmQ6IHRoaXMuZm9ybS5nZXQoJ3Bhc3N3b3JkJykudmFsdWUsXG4gICAgICAgICAgbmV3UGFzc3dvcmQ6IHRoaXMuZm9ybS5nZXQoJ25ld1Bhc3N3b3JkJykudmFsdWUsXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgfSk7XG4gIH1cblxuICBvcGVuTW9kYWwoKSB7XG4gICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHsgdmlzaWJsZSB9OiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCF2aXNpYmxlKSByZXR1cm47XG5cbiAgICBpZiAodmlzaWJsZS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMub3Blbk1vZGFsKCk7XG4gICAgfSBlbHNlIGlmICh2aXNpYmxlLmN1cnJlbnRWYWx1ZSA9PT0gZmFsc2UgJiYgdGhpcy52aXNpYmxlKSB7XG4gICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm2015/lib/components/index.js b/npm/ng-packs/dist/theme-basic/esm2015/lib/components/index.js new file mode 100644 index 00000000000..25ffed3ffc0 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm2015/lib/components/index.js @@ -0,0 +1,8 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { LayoutAccountComponent } from './layout-account/layout-account.component'; +export { LayoutApplicationComponent } from './layout-application/layout-application.component'; +export { LayoutEmptyComponent } from './layout-empty/layout-empty.component'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLmJhc2ljLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHVDQUFjLDJDQUEyQyxDQUFDO0FBQzFELDJDQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLHFDQUFjLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9sYXlvdXQtYWNjb3VudC9sYXlvdXQtYWNjb3VudC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9sYXlvdXQtYXBwbGljYXRpb24vbGF5b3V0LWFwcGxpY2F0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xheW91dC1lbXB0eS9sYXlvdXQtZW1wdHkuY29tcG9uZW50JztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm2015/lib/components/layout-account/layout-account.component.js b/npm/ng-packs/dist/theme-basic/esm2015/lib/components/layout-account/layout-account.component.js new file mode 100644 index 00000000000..c1a36c2da7b --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm2015/lib/components/layout-account/layout-account.component.js @@ -0,0 +1,25 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component } from '@angular/core'; +export class LayoutAccountComponent { + constructor() { + this.isCollapsed = false; + } +} +// required for dynamic component +LayoutAccountComponent.type = "account" /* account */; +LayoutAccountComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-layout-account', + template: "\n \n\n \n \n \n \n \n\n" + }] } +]; +if (false) { + /** @type {?} */ + LayoutAccountComponent.type; + /** @type {?} */ + LayoutAccountComponent.prototype.isCollapsed; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWFjY291bnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5iYXNpYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2xheW91dC1hY2NvdW50L2xheW91dC1hY2NvdW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU8xQyxNQUFNLE9BQU8sc0JBQXNCO0lBSm5DO1FBUUUsZ0JBQVcsR0FBWSxLQUFLLENBQUM7SUFDL0IsQ0FBQzs7O0FBSFEsMkJBQUksMkJBQXVCOztZQU5uQyxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsMHhCQUE4QzthQUMvQzs7OztJQUdDLDRCQUFrQzs7SUFFbEMsNkNBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBlTGF5b3V0VHlwZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FicC1sYXlvdXQtYWNjb3VudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sYXlvdXQtYWNjb3VudC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIExheW91dEFjY291bnRDb21wb25lbnQge1xuICAvLyByZXF1aXJlZCBmb3IgZHluYW1pYyBjb21wb25lbnRcbiAgc3RhdGljIHR5cGUgPSBlTGF5b3V0VHlwZS5hY2NvdW50O1xuXG4gIGlzQ29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm2015/lib/components/layout-application/layout-application.component.js b/npm/ng-packs/dist/theme-basic/esm2015/lib/components/layout-application/layout-application.component.js new file mode 100644 index 00000000000..24052a005b3 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm2015/lib/components/layout-application/layout-application.component.js @@ -0,0 +1,282 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { ConfigGetAppConfiguration, ConfigState, SessionSetLanguage, SessionState, takeUntilDestroy, } from '@abp/ng.core'; +import { Component, QueryList, TemplateRef, ViewChild, ViewChildren, } from '@angular/core'; +import { NgbDropdown } from '@ng-bootstrap/ng-bootstrap'; +import { Navigate, RouterState } from '@ngxs/router-plugin'; +import { Select, Store } from '@ngxs/store'; +import { OAuthService } from 'angular-oauth2-oidc'; +import compare from 'just-compare'; +import { fromEvent, Observable } from 'rxjs'; +import { debounceTime, filter, map } from 'rxjs/operators'; +import snq from 'snq'; +import { LayoutAddNavigationElement } from '../../actions'; +import { LayoutState } from '../../states'; +export class LayoutApplicationComponent { + /** + * @param {?} store + * @param {?} oauthService + */ + constructor(store, oauthService) { + this.store = store; + this.oauthService = oauthService; + this.isOpenChangePassword = false; + this.isOpenProfile = false; + this.rightPartElements = []; + this.trackByFn = (/** + * @param {?} _ + * @param {?} item + * @return {?} + */ + (_, item) => item.name); + this.trackElementByFn = (/** + * @param {?} _ + * @param {?} element + * @return {?} + */ + (_, element) => element); + } + /** + * @return {?} + */ + get visibleRoutes$() { + return this.routes$.pipe(map((/** + * @param {?} routes + * @return {?} + */ + routes => getVisibleRoutes(routes)))); + } + /** + * @return {?} + */ + get defaultLanguage$() { + return this.languages$.pipe(map((/** + * @param {?} languages + * @return {?} + */ + languages => snq((/** + * @return {?} + */ + () => languages.find((/** + * @param {?} lang + * @return {?} + */ + lang => lang.cultureName === this.selectedLangCulture)).displayName))), '')); + } + /** + * @return {?} + */ + get dropdownLanguages$() { + return this.languages$.pipe(map((/** + * @param {?} languages + * @return {?} + */ + languages => snq((/** + * @return {?} + */ + () => languages.filter((/** + * @param {?} lang + * @return {?} + */ + lang => lang.cultureName !== this.selectedLangCulture))))), [])); + } + /** + * @return {?} + */ + get selectedLangCulture() { + return this.store.selectSnapshot(SessionState.getLanguage); + } + /** + * @private + * @return {?} + */ + checkWindowWidth() { + setTimeout((/** + * @return {?} + */ + () => { + this.navbarRootDropdowns.forEach((/** + * @param {?} item + * @return {?} + */ + item => { + item.close(); + })); + if (window.innerWidth < 768) { + this.isDropdownChildDynamic = false; + } + else { + this.isDropdownChildDynamic = true; + } + }), 0); + } + /** + * @return {?} + */ + ngAfterViewInit() { + /** @type {?} */ + const navigations = this.store.selectSnapshot(LayoutState.getNavigationElements).map((/** + * @param {?} __0 + * @return {?} + */ + ({ name }) => name)); + if (navigations.indexOf('LanguageRef') < 0) { + this.store.dispatch(new LayoutAddNavigationElement([ + { element: this.languageRef, order: 4, name: 'LanguageRef' }, + { element: this.currentUserRef, order: 5, name: 'CurrentUserRef' }, + ])); + } + this.navElements$ + .pipe(map((/** + * @param {?} elements + * @return {?} + */ + elements => elements.map((/** + * @param {?} __0 + * @return {?} + */ + ({ element }) => element)))), filter((/** + * @param {?} elements + * @return {?} + */ + elements => !compare(elements, this.rightPartElements))), takeUntilDestroy(this)) + .subscribe((/** + * @param {?} elements + * @return {?} + */ + elements => { + setTimeout((/** + * @return {?} + */ + () => (this.rightPartElements = elements)), 0); + })); + this.checkWindowWidth(); + fromEvent(window, 'resize') + .pipe(takeUntilDestroy(this), debounceTime(250)) + .subscribe((/** + * @return {?} + */ + () => { + this.checkWindowWidth(); + })); + } + /** + * @return {?} + */ + ngOnDestroy() { } + /** + * @param {?} cultureName + * @return {?} + */ + onChangeLang(cultureName) { + this.store.dispatch(new SessionSetLanguage(cultureName)); + this.store.dispatch(new ConfigGetAppConfiguration()); + } + /** + * @return {?} + */ + logout() { + this.oauthService.logOut(); + this.store.dispatch(new Navigate(['/account/login'], null, { + state: { redirectUrl: this.store.selectSnapshot(RouterState).state.url }, + })); + this.store.dispatch(new ConfigGetAppConfiguration()); + } +} +// required for dynamic component +LayoutApplicationComponent.type = "application" /* application */; +LayoutApplicationComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-layout-application', + template: "\n \n\n
      \n \n
    \n
    \n\n\n
  • \n \n {{ defaultLanguage$ | async }}\n \n
    \n {{ lang?.displayName }}\n
    \n
  • \n
    \n\n\n
  • \n \n {{ (currentUser$ | async)?.userName }}\n \n \n
  • \n\n \n\n \n
    \n" + }] } +]; +/** @nocollapse */ +LayoutApplicationComponent.ctorParameters = () => [ + { type: Store }, + { type: OAuthService } +]; +LayoutApplicationComponent.propDecorators = { + currentUserRef: [{ type: ViewChild, args: ['currentUser', { static: false, read: TemplateRef },] }], + languageRef: [{ type: ViewChild, args: ['language', { static: false, read: TemplateRef },] }], + navbarRootDropdowns: [{ type: ViewChildren, args: ['navbarRootDropdown', { read: NgbDropdown },] }] +}; +tslib_1.__decorate([ + Select(ConfigState.getOne('routes')), + tslib_1.__metadata("design:type", Observable) +], LayoutApplicationComponent.prototype, "routes$", void 0); +tslib_1.__decorate([ + Select(ConfigState.getOne('currentUser')), + tslib_1.__metadata("design:type", Observable) +], LayoutApplicationComponent.prototype, "currentUser$", void 0); +tslib_1.__decorate([ + Select(ConfigState.getDeep('localization.languages')), + tslib_1.__metadata("design:type", Observable) +], LayoutApplicationComponent.prototype, "languages$", void 0); +tslib_1.__decorate([ + Select(LayoutState.getNavigationElements), + tslib_1.__metadata("design:type", Observable) +], LayoutApplicationComponent.prototype, "navElements$", void 0); +if (false) { + /** @type {?} */ + LayoutApplicationComponent.type; + /** @type {?} */ + LayoutApplicationComponent.prototype.routes$; + /** @type {?} */ + LayoutApplicationComponent.prototype.currentUser$; + /** @type {?} */ + LayoutApplicationComponent.prototype.languages$; + /** @type {?} */ + LayoutApplicationComponent.prototype.navElements$; + /** @type {?} */ + LayoutApplicationComponent.prototype.currentUserRef; + /** @type {?} */ + LayoutApplicationComponent.prototype.languageRef; + /** @type {?} */ + LayoutApplicationComponent.prototype.navbarRootDropdowns; + /** @type {?} */ + LayoutApplicationComponent.prototype.isOpenChangePassword; + /** @type {?} */ + LayoutApplicationComponent.prototype.isOpenProfile; + /** @type {?} */ + LayoutApplicationComponent.prototype.isDropdownChildDynamic; + /** @type {?} */ + LayoutApplicationComponent.prototype.rightPartElements; + /** @type {?} */ + LayoutApplicationComponent.prototype.trackByFn; + /** @type {?} */ + LayoutApplicationComponent.prototype.trackElementByFn; + /** + * @type {?} + * @private + */ + LayoutApplicationComponent.prototype.store; + /** + * @type {?} + * @private + */ + LayoutApplicationComponent.prototype.oauthService; +} +/** + * @param {?} routes + * @return {?} + */ +function getVisibleRoutes(routes) { + return routes.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + (acc, val) => { + if (val.invisible) + return acc; + if (val.children && val.children.length) { + val.children = getVisibleRoutes(val.children); + } + return [...acc, val]; + }), []); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWFwcGxpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuYmFzaWMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9sYXlvdXQtYXBwbGljYXRpb24vbGF5b3V0LWFwcGxpY2F0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFHTCx5QkFBeUIsRUFDekIsV0FBVyxFQUVYLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFFTCxTQUFTLEVBRVQsU0FBUyxFQUNULFdBQVcsRUFFWCxTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDbkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBTTNDLE1BQU0sT0FBTywwQkFBMEI7Ozs7O0lBNERyQyxZQUFvQixLQUFZLEVBQVUsWUFBMEI7UUFBaEQsVUFBSyxHQUFMLEtBQUss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QzREOztJQUU1RCxrREFDcUQ7O0lBRXJELG9EQUNpQzs7SUFFakMsaURBQzhCOztJQUU5Qix5REFDNEM7O0lBRTVDLDBEQUFzQzs7SUFFdEMsbURBQStCOztJQUUvQiw0REFBZ0M7O0lBeUJoQyx1REFBMkM7O0lBRTNDLCtDQUFtRTs7SUFFbkUsc0RBQTJFOzs7OztJQUUvRCwyQ0FBb0I7Ozs7O0lBQUUsa0RBQWtDOzs7Ozs7QUFtRXRFLFNBQVMsZ0JBQWdCLENBQUMsTUFBdUI7SUFDL0MsT0FBTyxNQUFNLENBQUMsTUFBTTs7Ozs7SUFBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNoQyxJQUFJLEdBQUcsQ0FBQyxTQUFTO1lBQUUsT0FBTyxHQUFHLENBQUM7UUFFOUIsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ3ZDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQy9DO1FBRUQsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQztBQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBQlAsXG4gIEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbixcbiAgQ29uZmlnR2V0QXBwQ29uZmlndXJhdGlvbixcbiAgQ29uZmlnU3RhdGUsXG4gIGVMYXlvdXRUeXBlLFxuICBTZXNzaW9uU2V0TGFuZ3VhZ2UsXG4gIFNlc3Npb25TdGF0ZSxcbiAgdGFrZVVudGlsRGVzdHJveSxcbn0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYkRyb3Bkb3duIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgTmF2aWdhdGUsIFJvdXRlclN0YXRlIH0gZnJvbSAnQG5neHMvcm91dGVyLXBsdWdpbic7XG5pbXBvcnQgeyBTZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgY29tcGFyZSBmcm9tICdqdXN0LWNvbXBhcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHNucSBmcm9tICdzbnEnO1xuaW1wb3J0IHsgTGF5b3V0QWRkTmF2aWdhdGlvbkVsZW1lbnQgfSBmcm9tICcuLi8uLi9hY3Rpb25zJztcbmltcG9ydCB7IExheW91dCB9IGZyb20gJy4uLy4uL21vZGVscy9sYXlvdXQnO1xuaW1wb3J0IHsgTGF5b3V0U3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtbGF5b3V0LWFwcGxpY2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xheW91dC1hcHBsaWNhdGlvbi5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIExheW91dEFwcGxpY2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgLy8gcmVxdWlyZWQgZm9yIGR5bmFtaWMgY29tcG9uZW50XG4gIHN0YXRpYyB0eXBlID0gZUxheW91dFR5cGUuYXBwbGljYXRpb247XG5cbiAgQFNlbGVjdChDb25maWdTdGF0ZS5nZXRPbmUoJ3JvdXRlcycpKVxuICByb3V0ZXMkOiBPYnNlcnZhYmxlPEFCUC5GdWxsUm91dGVbXT47XG5cbiAgQFNlbGVjdChDb25maWdTdGF0ZS5nZXRPbmUoJ2N1cnJlbnRVc2VyJykpXG4gIGN1cnJlbnRVc2VyJDogT2JzZXJ2YWJsZTxBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb24uQ3VycmVudFVzZXI+O1xuXG4gIEBTZWxlY3QoQ29uZmlnU3RhdGUuZ2V0RGVlcCgnbG9jYWxpemF0aW9uLmxhbmd1YWdlcycpKVxuICBsYW5ndWFnZXMkOiBPYnNlcnZhYmxlPEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbi5MYW5ndWFnZVtdPjtcblxuICBAU2VsZWN0KExheW91dFN0YXRlLmdldE5hdmlnYXRpb25FbGVtZW50cylcbiAgbmF2RWxlbWVudHMkOiBPYnNlcnZhYmxlPExheW91dC5OYXZpZ2F0aW9uRWxlbWVudFtdPjtcblxuICBAVmlld0NoaWxkKCdjdXJyZW50VXNlcicsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgY3VycmVudFVzZXJSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgnbGFuZ3VhZ2UnLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGxhbmd1YWdlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGRyZW4oJ25hdmJhclJvb3REcm9wZG93bicsIHsgcmVhZDogTmdiRHJvcGRvd24gfSlcbiAgbmF2YmFyUm9vdERyb3Bkb3duczogUXVlcnlMaXN0PE5nYkRyb3Bkb3duPjtcblxuICBpc09wZW5DaGFuZ2VQYXNzd29yZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGlzT3BlblByb2ZpbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBpc0Ryb3Bkb3duQ2hpbGREeW5hbWljOiBib29sZWFuO1xuXG4gIGdldCB2aXNpYmxlUm91dGVzJCgpOiBPYnNlcnZhYmxlPEFCUC5GdWxsUm91dGVbXT4ge1xuICAgIHJldHVybiB0aGlzLnJvdXRlcyQucGlwZShtYXAocm91dGVzID0+IGdldFZpc2libGVSb3V0ZXMocm91dGVzKSkpO1xuICB9XG5cbiAgZ2V0IGRlZmF1bHRMYW5ndWFnZSQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZXMkLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIGxhbmd1YWdlcyA9PiBzbnEoKCkgPT4gbGFuZ3VhZ2VzLmZpbmQobGFuZyA9PiBsYW5nLmN1bHR1cmVOYW1lID09PSB0aGlzLnNlbGVjdGVkTGFuZ0N1bHR1cmUpLmRpc3BsYXlOYW1lKSxcbiAgICAgICAgJycsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBnZXQgZHJvcGRvd25MYW5ndWFnZXMkKCk6IE9ic2VydmFibGU8QXBwbGljYXRpb25Db25maWd1cmF0aW9uLkxhbmd1YWdlW10+IHtcbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZXMkLnBpcGUoXG4gICAgICBtYXAobGFuZ3VhZ2VzID0+IHNucSgoKSA9PiBsYW5ndWFnZXMuZmlsdGVyKGxhbmcgPT4gbGFuZy5jdWx0dXJlTmFtZSAhPT0gdGhpcy5zZWxlY3RlZExhbmdDdWx0dXJlKSksIFtdKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkTGFuZ0N1bHR1cmUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTZXNzaW9uU3RhdGUuZ2V0TGFuZ3VhZ2UpO1xuICB9XG5cbiAgcmlnaHRQYXJ0RWxlbWVudHM6IFRlbXBsYXRlUmVmPGFueT5bXSA9IFtdO1xuXG4gIHRyYWNrQnlGbjogVHJhY2tCeUZ1bmN0aW9uPEFCUC5GdWxsUm91dGU+ID0gKF8sIGl0ZW0pID0+IGl0ZW0ubmFtZTtcblxuICB0cmFja0VsZW1lbnRCeUZuOiBUcmFja0J5RnVuY3Rpb248QUJQLkZ1bGxSb3V0ZT4gPSAoXywgZWxlbWVudCkgPT4gZWxlbWVudDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZSwgcHJpdmF0ZSBvYXV0aFNlcnZpY2U6IE9BdXRoU2VydmljZSkge31cblxuICBwcml2YXRlIGNoZWNrV2luZG93V2lkdGgoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm5hdmJhclJvb3REcm9wZG93bnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaXRlbS5jbG9zZSgpO1xuICAgICAgfSk7XG4gICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCA3NjgpIHtcbiAgICAgICAgdGhpcy5pc0Ryb3Bkb3duQ2hpbGREeW5hbWljID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlzRHJvcGRvd25DaGlsZER5bmFtaWMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0sIDApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IG5hdmlnYXRpb25zID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChMYXlvdXRTdGF0ZS5nZXROYXZpZ2F0aW9uRWxlbWVudHMpLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpO1xuXG4gICAgaWYgKG5hdmlnYXRpb25zLmluZGV4T2YoJ0xhbmd1YWdlUmVmJykgPCAwKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBuZXcgTGF5b3V0QWRkTmF2aWdhdGlvbkVsZW1lbnQoW1xuICAgICAgICAgIHsgZWxlbWVudDogdGhpcy5sYW5ndWFnZVJlZiwgb3JkZXI6IDQsIG5hbWU6ICdMYW5ndWFnZVJlZicgfSxcbiAgICAgICAgICB7IGVsZW1lbnQ6IHRoaXMuY3VycmVudFVzZXJSZWYsIG9yZGVyOiA1LCBuYW1lOiAnQ3VycmVudFVzZXJSZWYnIH0sXG4gICAgICAgIF0pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLm5hdkVsZW1lbnRzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChlbGVtZW50cyA9PiBlbGVtZW50cy5tYXAoKHsgZWxlbWVudCB9KSA9PiBlbGVtZW50KSksXG4gICAgICAgIGZpbHRlcihlbGVtZW50cyA9PiAhY29tcGFyZShlbGVtZW50cywgdGhpcy5yaWdodFBhcnRFbGVtZW50cykpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95KHRoaXMpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShlbGVtZW50cyA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMucmlnaHRQYXJ0RWxlbWVudHMgPSBlbGVtZW50cyksIDApO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoZWNrV2luZG93V2lkdGgoKTtcblxuICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3kodGhpcyksXG4gICAgICAgIGRlYm91bmNlVGltZSgyNTApLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tXaW5kb3dXaWR0aCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHt9XG5cbiAgb25DaGFuZ2VMYW5nKGN1bHR1cmVOYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXNzaW9uU2V0TGFuZ3VhZ2UoY3VsdHVyZU5hbWUpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBDb25maWdHZXRBcHBDb25maWd1cmF0aW9uKCkpO1xuICB9XG5cbiAgbG9nb3V0KCkge1xuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmxvZ091dCgpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBuZXcgTmF2aWdhdGUoWycvYWNjb3VudC9sb2dpbiddLCBudWxsLCB7XG4gICAgICAgIHN0YXRlOiB7IHJlZGlyZWN0VXJsOiB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFJvdXRlclN0YXRlKS5zdGF0ZS51cmwgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgQ29uZmlnR2V0QXBwQ29uZmlndXJhdGlvbigpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRWaXNpYmxlUm91dGVzKHJvdXRlczogQUJQLkZ1bGxSb3V0ZVtdKSB7XG4gIHJldHVybiByb3V0ZXMucmVkdWNlKChhY2MsIHZhbCkgPT4ge1xuICAgIGlmICh2YWwuaW52aXNpYmxlKSByZXR1cm4gYWNjO1xuXG4gICAgaWYgKHZhbC5jaGlsZHJlbiAmJiB2YWwuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICB2YWwuY2hpbGRyZW4gPSBnZXRWaXNpYmxlUm91dGVzKHZhbC5jaGlsZHJlbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIFsuLi5hY2MsIHZhbF07XG4gIH0sIFtdKTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm2015/lib/components/layout-empty/layout-empty.component.js b/npm/ng-packs/dist/theme-basic/esm2015/lib/components/layout-empty/layout-empty.component.js new file mode 100644 index 00000000000..ba30ed3da55 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm2015/lib/components/layout-empty/layout-empty.component.js @@ -0,0 +1,23 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component } from '@angular/core'; +export class LayoutEmptyComponent { +} +// required for dynamic component +LayoutEmptyComponent.type = "empty" /* empty */; +LayoutEmptyComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-layout-empty', + template: ` + Layout-empty + + ` + }] } +]; +if (false) { + /** @type {?} */ + LayoutEmptyComponent.type; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWVtcHR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuYmFzaWMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9sYXlvdXQtZW1wdHkvbGF5b3V0LWVtcHR5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVUxQyxNQUFNLE9BQU8sb0JBQW9COzs7QUFFeEIseUJBQUksdUJBQXFCOztZQVRqQyxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsUUFBUSxFQUFFOzs7R0FHVDthQUNGOzs7O0lBR0MsMEJBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBlTGF5b3V0VHlwZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FicC1sYXlvdXQtZW1wdHknLFxuICB0ZW1wbGF0ZTogYFxuICAgIExheW91dC1lbXB0eVxuICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgTGF5b3V0RW1wdHlDb21wb25lbnQge1xuICAvLyByZXF1aXJlZCBmb3IgZHluYW1pYyBjb21wb25lbnRcbiAgc3RhdGljIHR5cGUgPSBlTGF5b3V0VHlwZS5lbXB0eTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm2015/lib/components/layout/layout.component.js b/npm/ng-packs/dist/theme-basic/esm2015/lib/components/layout/layout.component.js new file mode 100644 index 00000000000..75e92c331f0 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm2015/lib/components/layout/layout.component.js @@ -0,0 +1,21 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component } from '@angular/core'; +export class LayoutComponent { + constructor() { + this.isCollapsed = false; + } +} +LayoutComponent.decorators = [ + { type: Component, args: [{ + selector: ' abp-layout', + template: "\n\n
    \n \n
    \n\n\n\n" + }] } +]; +if (false) { + /** @type {?} */ + LayoutComponent.prototype.isCollapsed; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuYmFzaWMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0xQyxNQUFNLE9BQU8sZUFBZTtJQUo1QjtRQUtFLGdCQUFXLEdBQVksS0FBSyxDQUFDO0lBQy9CLENBQUM7OztZQU5BLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsb3FCQUFzQzthQUN2Qzs7OztJQUVDLHNDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICcgYWJwLWxheW91dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXRDb21wb25lbnQge1xuICBpc0NvbGxhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm2015/lib/components/profile/profile.component.js b/npm/ng-packs/dist/theme-basic/esm2015/lib/components/profile/profile.component.js new file mode 100644 index 00000000000..f4aea3953ef --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm2015/lib/components/profile/profile.component.js @@ -0,0 +1,135 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { ProfileGet, ProfileState, ProfileUpdate } from '@abp/ng.core'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { FormBuilder, Validators } from '@angular/forms'; +import { Select, Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { take, withLatestFrom } from 'rxjs/operators'; +const { maxLength, required, email } = Validators; +export class ProfileComponent { + /** + * @param {?} fb + * @param {?} store + */ + constructor(fb, store) { + this.fb = fb; + this.store = store; + this.visibleChange = new EventEmitter(); + } + /** + * @return {?} + */ + get visible() { + return this._visible; + } + /** + * @param {?} value + * @return {?} + */ + set visible(value) { + this._visible = value; + this.visibleChange.emit(value); + } + /** + * @return {?} + */ + buildForm() { + this.store + .dispatch(new ProfileGet()) + .pipe(withLatestFrom(this.profile$), take(1)) + .subscribe((/** + * @param {?} __0 + * @return {?} + */ + ([, profile]) => { + this.form = this.fb.group({ + userName: [profile.userName, [required, maxLength(256)]], + email: [profile.email, [required, email, maxLength(256)]], + name: [profile.name || '', [maxLength(64)]], + surname: [profile.surname || '', [maxLength(64)]], + phoneNumber: [profile.phoneNumber || '', [maxLength(16)]], + }); + })); + } + /** + * @return {?} + */ + onSubmit() { + if (this.form.invalid) + return; + this.store.dispatch(new ProfileUpdate(this.form.value)).subscribe((/** + * @return {?} + */ + () => { + this.visible = false; + })); + } + /** + * @return {?} + */ + openModal() { + this.buildForm(); + this.visible = true; + } + /** + * @param {?} __0 + * @return {?} + */ + ngOnChanges({ visible }) { + if (!visible) + return; + if (visible.currentValue) { + this.openModal(); + } + else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + } +} +ProfileComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-profile', + template: "\n \n

    {{ 'AbpIdentity::PersonalInfo' | abpLocalization }}

    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n
    \n" + }] } +]; +/** @nocollapse */ +ProfileComponent.ctorParameters = () => [ + { type: FormBuilder }, + { type: Store } +]; +ProfileComponent.propDecorators = { + visible: [{ type: Input }], + visibleChange: [{ type: Output }] +}; +tslib_1.__decorate([ + Select(ProfileState.getProfile), + tslib_1.__metadata("design:type", Observable) +], ProfileComponent.prototype, "profile$", void 0); +if (false) { + /** + * @type {?} + * @protected + */ + ProfileComponent.prototype._visible; + /** @type {?} */ + ProfileComponent.prototype.visibleChange; + /** @type {?} */ + ProfileComponent.prototype.profile$; + /** @type {?} */ + ProfileComponent.prototype.form; + /** + * @type {?} + * @private + */ + ProfileComponent.prototype.fb; + /** + * @type {?} + * @private + */ + ProfileComponent.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLmJhc2ljLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcHJvZmlsZS9wcm9maWxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBVyxVQUFVLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztNQUVoRCxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsVUFBVTtBQU1qRCxNQUFNLE9BQU8sZ0JBQWdCOzs7OztJQXFCM0IsWUFBb0IsRUFBZSxFQUFVLEtBQVk7UUFBckMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQU87UUFQekQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBT2dCLENBQUM7Ozs7SUFsQjdELElBQ0ksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDOzs7OztJQUVELElBQUksT0FBTyxDQUFDLEtBQWM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQzs7OztJQVlELFNBQVM7UUFDUCxJQUFJLENBQUMsS0FBSzthQUNQLFFBQVEsQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDO2FBQzFCLElBQUksQ0FDSCxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUM3QixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1I7YUFDQSxTQUFTOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRTtZQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUN4QixRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN4RCxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDekQsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakQsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUMxRCxDQUFDLENBQUM7UUFDTCxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRTlCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTOzs7UUFBQyxHQUFHLEVBQUU7WUFDckUsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7O0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDOzs7OztJQUVELFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBaUI7UUFDcEMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRXJCLElBQUksT0FBTyxDQUFDLFlBQVksRUFBRTtZQUN4QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDbEI7YUFBTSxJQUFJLE9BQU8sQ0FBQyxZQUFZLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDekQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7U0FDdEI7SUFDSCxDQUFDOzs7WUFsRUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxhQUFhO2dCQUN2QixpbUVBQXVDO2FBQ3hDOzs7O1lBVlEsV0FBVztZQUNILEtBQUs7OztzQkFhbkIsS0FBSzs0QkFVTCxNQUFNOztBQUlQO0lBREMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7c0NBQ3RCLFVBQVU7a0RBQW1COzs7Ozs7SUFoQnZDLG9DQUFtQjs7SUFZbkIseUNBQzRDOztJQUU1QyxvQ0FDdUM7O0lBRXZDLGdDQUFnQjs7Ozs7SUFFSiw4QkFBdUI7Ozs7O0lBQUUsaUNBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvZmlsZSwgUHJvZmlsZUdldCwgUHJvZmlsZVN0YXRlLCBQcm9maWxlVXBkYXRlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmNvbnN0IHsgbWF4TGVuZ3RoLCByZXF1aXJlZCwgZW1haWwgfSA9IFZhbGlkYXRvcnM7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FicC1wcm9maWxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2ZpbGUuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgcHJvdGVjdGVkIF92aXNpYmxlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xuICB9XG5cbiAgc2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl92aXNpYmxlID0gdmFsdWU7XG4gICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQFNlbGVjdChQcm9maWxlU3RhdGUuZ2V0UHJvZmlsZSlcbiAgcHJvZmlsZSQ6IE9ic2VydmFibGU8UHJvZmlsZS5SZXNwb25zZT47XG5cbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIHN0b3JlOiBTdG9yZSkge31cblxuICBidWlsZEZvcm0oKSB7XG4gICAgdGhpcy5zdG9yZVxuICAgICAgLmRpc3BhdGNoKG5ldyBQcm9maWxlR2V0KCkpXG4gICAgICAucGlwZShcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5wcm9maWxlJCksXG4gICAgICAgIHRha2UoMSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChbLCBwcm9maWxlXSkgPT4ge1xuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICB1c2VyTmFtZTogW3Byb2ZpbGUudXNlck5hbWUsIFtyZXF1aXJlZCwgbWF4TGVuZ3RoKDI1NildXSxcbiAgICAgICAgICBlbWFpbDogW3Byb2ZpbGUuZW1haWwsIFtyZXF1aXJlZCwgZW1haWwsIG1heExlbmd0aCgyNTYpXV0sXG4gICAgICAgICAgbmFtZTogW3Byb2ZpbGUubmFtZSB8fCAnJywgW21heExlbmd0aCg2NCldXSxcbiAgICAgICAgICBzdXJuYW1lOiBbcHJvZmlsZS5zdXJuYW1lIHx8ICcnLCBbbWF4TGVuZ3RoKDY0KV1dLFxuICAgICAgICAgIHBob25lTnVtYmVyOiBbcHJvZmlsZS5waG9uZU51bWJlciB8fCAnJywgW21heExlbmd0aCgxNildXSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG9uU3VibWl0KCkge1xuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUHJvZmlsZVVwZGF0ZSh0aGlzLmZvcm0udmFsdWUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBvcGVuTW9kYWwoKSB7XG4gICAgdGhpcy5idWlsZEZvcm0oKTtcbiAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoeyB2aXNpYmxlIH06IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoIXZpc2libGUpIHJldHVybjtcblxuICAgIGlmICh2aXNpYmxlLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5vcGVuTW9kYWwoKTtcbiAgICB9IGVsc2UgaWYgKHZpc2libGUuY3VycmVudFZhbHVlID09PSBmYWxzZSAmJiB0aGlzLnZpc2libGUpIHtcbiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm2015/lib/models/index.js b/npm/ng-packs/dist/theme-basic/esm2015/lib/models/index.js new file mode 100644 index 00000000000..370665b7b0d --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm2015/lib/models/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export {} from './layout'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLmJhc2ljLyIsInNvdXJjZXMiOlsibGliL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsZUFBYyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xheW91dCc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm2015/lib/models/layout.js b/npm/ng-packs/dist/theme-basic/esm2015/lib/models/layout.js new file mode 100644 index 00000000000..d93212a06da --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm2015/lib/models/layout.js @@ -0,0 +1,30 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var Layout; +(function (Layout) { + /** + * @record + */ + function State() { } + Layout.State = State; + if (false) { + /** @type {?} */ + State.prototype.navigationElements; + } + /** + * @record + */ + function NavigationElement() { } + Layout.NavigationElement = NavigationElement; + if (false) { + /** @type {?} */ + NavigationElement.prototype.name; + /** @type {?} */ + NavigationElement.prototype.element; + /** @type {?|undefined} */ + NavigationElement.prototype.order; + } +})(Layout || (Layout = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5iYXNpYy8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvbGF5b3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxNQUFNLEtBQVcsTUFBTSxDQVV0QjtBQVZELFdBQWlCLE1BQU07Ozs7SUFDckIsb0JBRUM7Ozs7UUFEQyxtQ0FBd0M7Ozs7O0lBRzFDLGdDQUlDOzs7O1FBSEMsaUNBQWE7O1FBQ2Isb0NBQTBCOztRQUMxQixrQ0FBZTs7QUFFbkIsQ0FBQyxFQVZnQixNQUFNLEtBQU4sTUFBTSxRQVV0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgTGF5b3V0IHtcbiAgZXhwb3J0IGludGVyZmFjZSBTdGF0ZSB7XG4gICAgbmF2aWdhdGlvbkVsZW1lbnRzOiBOYXZpZ2F0aW9uRWxlbWVudFtdO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBOYXZpZ2F0aW9uRWxlbWVudCB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGVsZW1lbnQ6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgb3JkZXI/OiBudW1iZXI7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm2015/lib/states/index.js b/npm/ng-packs/dist/theme-basic/esm2015/lib/states/index.js new file mode 100644 index 00000000000..0e85d60b8b7 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm2015/lib/states/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { LayoutState } from "./layout.state"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLmJhc2ljLyIsInNvdXJjZXMiOlsibGliL3N0YXRlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsNEJBQWMsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9sYXlvdXQuc3RhdGVcIjtcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm2015/lib/states/layout.state.js b/npm/ng-packs/dist/theme-basic/esm2015/lib/states/layout.state.js new file mode 100644 index 00000000000..f9f107f3b0a --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm2015/lib/states/layout.state.js @@ -0,0 +1,105 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { State, Action, Selector } from '@ngxs/store'; +import { LayoutAddNavigationElement, LayoutRemoveNavigationElementByName } from '../actions/layout.actions'; +import snq from 'snq'; +let LayoutState = class LayoutState { + /** + * @param {?} __0 + * @return {?} + */ + static getNavigationElements({ navigationElements }) { + return navigationElements; + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + layoutAddAction({ getState, patchState }, { payload = [] }) { + let { navigationElements } = getState(); + if (!Array.isArray(payload)) { + payload = [payload]; + } + if (navigationElements.length) { + payload = snq((/** + * @return {?} + */ + () => ((/** @type {?} */ (payload))).filter((/** + * @param {?} __0 + * @return {?} + */ + ({ name }) => navigationElements.findIndex((/** + * @param {?} nav + * @return {?} + */ + nav => nav.name === name)) < 0))), []); + } + if (!payload.length) + return; + navigationElements = [...navigationElements, ...payload] + .map((/** + * @param {?} element + * @return {?} + */ + element => (Object.assign({}, element, { order: element.order || 99 })))) + .sort((/** + * @param {?} a + * @param {?} b + * @return {?} + */ + (a, b) => a.order - b.order)); + return patchState({ + navigationElements, + }); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + layoutRemoveAction({ getState, patchState }, { name }) { + let { navigationElements } = getState(); + /** @type {?} */ + const index = navigationElements.findIndex((/** + * @param {?} element + * @return {?} + */ + element => element.name === name)); + if (index > -1) { + navigationElements = navigationElements.splice(index, 1); + } + return patchState({ + navigationElements, + }); + } +}; +tslib_1.__decorate([ + Action(LayoutAddNavigationElement), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, LayoutAddNavigationElement]), + tslib_1.__metadata("design:returntype", void 0) +], LayoutState.prototype, "layoutAddAction", null); +tslib_1.__decorate([ + Action(LayoutRemoveNavigationElementByName), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, LayoutRemoveNavigationElementByName]), + tslib_1.__metadata("design:returntype", void 0) +], LayoutState.prototype, "layoutRemoveAction", null); +tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", Array) +], LayoutState, "getNavigationElements", null); +LayoutState = tslib_1.__decorate([ + State({ + name: 'LayoutState', + defaults: (/** @type {?} */ ({ navigationElements: [] })), + }) +], LayoutState); +export { LayoutState }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LnN0YXRlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5iYXNpYy8iLCJzb3VyY2VzIjpbImxpYi9zdGF0ZXMvbGF5b3V0LnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWdCLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUc1RyxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUM7SUFNVCxXQUFXLFNBQVgsV0FBVzs7Ozs7SUFFdEIsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsa0JBQWtCLEVBQWdCO1FBQy9ELE9BQU8sa0JBQWtCLENBQUM7SUFDNUIsQ0FBQzs7Ozs7O0lBR0QsZUFBZSxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBOEIsRUFBRSxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQThCO1lBQzVHLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxRQUFRLEVBQUU7UUFFdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDM0IsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDckI7UUFFRCxJQUFJLGtCQUFrQixDQUFDLE1BQU0sRUFBRTtZQUM3QixPQUFPLEdBQUcsR0FBRzs7O1lBQ1gsR0FBRyxFQUFFLENBQ0gsQ0FBQyxtQkFBQSxPQUFPLEVBQThCLENBQUMsQ0FBQyxNQUFNOzs7O1lBQzVDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsU0FBUzs7OztZQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUMsR0FBRyxDQUFDLEVBQ3pFLEdBQ0gsRUFBRSxDQUNILENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtZQUFFLE9BQU87UUFFNUIsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLGtCQUFrQixFQUFFLEdBQUcsT0FBTyxDQUFDO2FBQ3JELEdBQUc7Ozs7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDLG1CQUFNLE9BQU8sSUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLElBQUcsRUFBQzthQUM1RCxJQUFJOzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUM7UUFFckMsT0FBTyxVQUFVLENBQUM7WUFDaEIsa0JBQWtCO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7Ozs7OztJQUdELGtCQUFrQixDQUNoQixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQThCLEVBQ3BELEVBQUUsSUFBSSxFQUF1QztZQUV6QyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsUUFBUSxFQUFFOztjQUVqQyxLQUFLLEdBQUcsa0JBQWtCLENBQUMsU0FBUzs7OztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUM7UUFFNUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDZCxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzFEO1FBRUQsT0FBTyxVQUFVLENBQUM7WUFDaEIsa0JBQWtCO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFBO0FBN0NDO0lBREMsTUFBTSxDQUFDLDBCQUEwQixDQUFDOztxREFDcUQsMEJBQTBCOztrREEwQmpIO0FBR0Q7SUFEQyxNQUFNLENBQUMsbUNBQW1DLENBQUM7O3FEQUdoQyxtQ0FBbUM7O3FEQWE5QztBQWpERDtJQURDLFFBQVEsRUFBRTs7Ozs4Q0FHVjtBQUpVLFdBQVc7SUFKdkIsS0FBSyxDQUFlO1FBQ25CLElBQUksRUFBRSxhQUFhO1FBQ25CLFFBQVEsRUFBRSxtQkFBQSxFQUFFLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxFQUFnQjtLQUNyRCxDQUFDO0dBQ1csV0FBVyxDQW9EdkI7U0FwRFksV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXRlLCBBY3Rpb24sIFN0YXRlQ29udGV4dCwgU2VsZWN0b3IgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBMYXlvdXRBZGROYXZpZ2F0aW9uRWxlbWVudCwgTGF5b3V0UmVtb3ZlTmF2aWdhdGlvbkVsZW1lbnRCeU5hbWUgfSBmcm9tICcuLi9hY3Rpb25zL2xheW91dC5hY3Rpb25zJztcbmltcG9ydCB7IExheW91dCB9IGZyb20gJy4uL21vZGVscy9sYXlvdXQnO1xuaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBzbnEgZnJvbSAnc25xJztcblxuQFN0YXRlPExheW91dC5TdGF0ZT4oe1xuICBuYW1lOiAnTGF5b3V0U3RhdGUnLFxuICBkZWZhdWx0czogeyBuYXZpZ2F0aW9uRWxlbWVudHM6IFtdIH0gYXMgTGF5b3V0LlN0YXRlLFxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXRTdGF0ZSB7XG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXROYXZpZ2F0aW9uRWxlbWVudHMoeyBuYXZpZ2F0aW9uRWxlbWVudHMgfTogTGF5b3V0LlN0YXRlKTogTGF5b3V0Lk5hdmlnYXRpb25FbGVtZW50W10ge1xuICAgIHJldHVybiBuYXZpZ2F0aW9uRWxlbWVudHM7XG4gIH1cblxuICBAQWN0aW9uKExheW91dEFkZE5hdmlnYXRpb25FbGVtZW50KVxuICBsYXlvdXRBZGRBY3Rpb24oeyBnZXRTdGF0ZSwgcGF0Y2hTdGF0ZSB9OiBTdGF0ZUNvbnRleHQ8TGF5b3V0LlN0YXRlPiwgeyBwYXlsb2FkID0gW10gfTogTGF5b3V0QWRkTmF2aWdhdGlvbkVsZW1lbnQpIHtcbiAgICBsZXQgeyBuYXZpZ2F0aW9uRWxlbWVudHMgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGF5bG9hZCkpIHtcbiAgICAgIHBheWxvYWQgPSBbcGF5bG9hZF07XG4gICAgfVxuXG4gICAgaWYgKG5hdmlnYXRpb25FbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHBheWxvYWQgPSBzbnEoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgKHBheWxvYWQgYXMgTGF5b3V0Lk5hdmlnYXRpb25FbGVtZW50W10pLmZpbHRlcihcbiAgICAgICAgICAgICh7IG5hbWUgfSkgPT4gbmF2aWdhdGlvbkVsZW1lbnRzLmZpbmRJbmRleChuYXYgPT4gbmF2Lm5hbWUgPT09IG5hbWUpIDwgMCxcbiAgICAgICAgICApLFxuICAgICAgICBbXSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFwYXlsb2FkLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgbmF2aWdhdGlvbkVsZW1lbnRzID0gWy4uLm5hdmlnYXRpb25FbGVtZW50cywgLi4ucGF5bG9hZF1cbiAgICAgIC5tYXAoZWxlbWVudCA9PiAoeyAuLi5lbGVtZW50LCBvcmRlcjogZWxlbWVudC5vcmRlciB8fCA5OSB9KSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLm9yZGVyIC0gYi5vcmRlcik7XG5cbiAgICByZXR1cm4gcGF0Y2hTdGF0ZSh7XG4gICAgICBuYXZpZ2F0aW9uRWxlbWVudHMsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExheW91dFJlbW92ZU5hdmlnYXRpb25FbGVtZW50QnlOYW1lKVxuICBsYXlvdXRSZW1vdmVBY3Rpb24oXG4gICAgeyBnZXRTdGF0ZSwgcGF0Y2hTdGF0ZSB9OiBTdGF0ZUNvbnRleHQ8TGF5b3V0LlN0YXRlPixcbiAgICB7IG5hbWUgfTogTGF5b3V0UmVtb3ZlTmF2aWdhdGlvbkVsZW1lbnRCeU5hbWUsXG4gICkge1xuICAgIGxldCB7IG5hdmlnYXRpb25FbGVtZW50cyB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGluZGV4ID0gbmF2aWdhdGlvbkVsZW1lbnRzLmZpbmRJbmRleChlbGVtZW50ID0+IGVsZW1lbnQubmFtZSA9PT0gbmFtZSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgbmF2aWdhdGlvbkVsZW1lbnRzID0gbmF2aWdhdGlvbkVsZW1lbnRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhdGNoU3RhdGUoe1xuICAgICAgbmF2aWdhdGlvbkVsZW1lbnRzLFxuICAgIH0pO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm2015/lib/theme-basic.module.js b/npm/ng-packs/dist/theme-basic/esm2015/lib/theme-basic.module.js new file mode 100644 index 00000000000..23e1a964d00 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm2015/lib/theme-basic.module.js @@ -0,0 +1,39 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { CoreModule } from '@abp/ng.core'; +import { NgModule } from '@angular/core'; +import { NgbCollapseModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { ChangePasswordComponent } from './components/change-password/change-password.component'; +import { LayoutAccountComponent } from './components/layout-account/layout-account.component'; +import { LayoutApplicationComponent } from './components/layout-application/layout-application.component'; +import { LayoutEmptyComponent } from './components/layout-empty/layout-empty.component'; +import { LayoutComponent } from './components/layout/layout.component'; +import { ProfileComponent } from './components/profile/profile.component'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { ToastModule } from 'primeng/toast'; +import { NgxValidateCoreModule } from '@ngx-validate/core'; +import { NgxsModule } from '@ngxs/store'; +import { LayoutState } from './states/layout.state'; +/** @type {?} */ +export const LAYOUTS = [LayoutApplicationComponent, LayoutAccountComponent, LayoutEmptyComponent]; +export class ThemeBasicModule { +} +ThemeBasicModule.decorators = [ + { type: NgModule, args: [{ + declarations: [...LAYOUTS, LayoutComponent, ChangePasswordComponent, ProfileComponent], + imports: [ + CoreModule, + ThemeSharedModule, + NgbCollapseModule, + NgbDropdownModule, + ToastModule, + NgxValidateCoreModule, + NgxsModule.forFeature([LayoutState]), + ], + exports: [...LAYOUTS], + entryComponents: [...LAYOUTS], + },] } +]; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtYmFzaWMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5iYXNpYy8iLCJzb3VyY2VzIjpbImxpYi90aGVtZS1iYXNpYy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFcEQsTUFBTSxPQUFPLE9BQU8sR0FBRyxDQUFDLDBCQUEwQixFQUFFLHNCQUFzQixFQUFFLG9CQUFvQixDQUFDO0FBZ0JqRyxNQUFNLE9BQU8sZ0JBQWdCOzs7WUFkNUIsUUFBUSxTQUFDO2dCQUNSLFlBQVksRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsQ0FBQztnQkFDdEYsT0FBTyxFQUFFO29CQUNQLFVBQVU7b0JBQ1YsaUJBQWlCO29CQUNqQixpQkFBaUI7b0JBQ2pCLGlCQUFpQjtvQkFDakIsV0FBVztvQkFDWCxxQkFBcUI7b0JBQ3JCLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDckM7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7Z0JBQ3JCLGVBQWUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO2FBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdiQ29sbGFwc2VNb2R1bGUsIE5nYkRyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgQ2hhbmdlUGFzc3dvcmRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2hhbmdlLXBhc3N3b3JkL2NoYW5nZS1wYXNzd29yZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGF5b3V0QWNjb3VudENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9sYXlvdXQtYWNjb3VudC9sYXlvdXQtYWNjb3VudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGF5b3V0QXBwbGljYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGF5b3V0LWFwcGxpY2F0aW9uL2xheW91dC1hcHBsaWNhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGF5b3V0RW1wdHlDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGF5b3V0LWVtcHR5L2xheW91dC1lbXB0eS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xheW91dC9sYXlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFByb2ZpbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcHJvZmlsZS9wcm9maWxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaGVtZVNoYXJlZE1vZHVsZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XG5pbXBvcnQgeyBOZ3hWYWxpZGF0ZUNvcmVNb2R1bGUgfSBmcm9tICdAbmd4LXZhbGlkYXRlL2NvcmUnO1xuaW1wb3J0IHsgTmd4c01vZHVsZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IExheW91dFN0YXRlIH0gZnJvbSAnLi9zdGF0ZXMvbGF5b3V0LnN0YXRlJztcblxuZXhwb3J0IGNvbnN0IExBWU9VVFMgPSBbTGF5b3V0QXBwbGljYXRpb25Db21wb25lbnQsIExheW91dEFjY291bnRDb21wb25lbnQsIExheW91dEVtcHR5Q29tcG9uZW50XTtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbLi4uTEFZT1VUUywgTGF5b3V0Q29tcG9uZW50LCBDaGFuZ2VQYXNzd29yZENvbXBvbmVudCwgUHJvZmlsZUNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb3JlTW9kdWxlLFxuICAgIFRoZW1lU2hhcmVkTW9kdWxlLFxuICAgIE5nYkNvbGxhcHNlTW9kdWxlLFxuICAgIE5nYkRyb3Bkb3duTW9kdWxlLFxuICAgIFRvYXN0TW9kdWxlLFxuICAgIE5neFZhbGlkYXRlQ29yZU1vZHVsZSxcbiAgICBOZ3hzTW9kdWxlLmZvckZlYXR1cmUoW0xheW91dFN0YXRlXSksXG4gIF0sXG4gIGV4cG9ydHM6IFsuLi5MQVlPVVRTXSxcbiAgZW50cnlDb21wb25lbnRzOiBbLi4uTEFZT1VUU10sXG59KVxuZXhwb3J0IGNsYXNzIFRoZW1lQmFzaWNNb2R1bGUge31cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm2015/public-api.js b/npm/ng-packs/dist/theme-basic/esm2015/public-api.js new file mode 100644 index 00000000000..0ce06fadd6a --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm2015/public-api.js @@ -0,0 +1,13 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/* + * Public API Surface of theme-basic + */ +export { LAYOUTS, ThemeBasicModule } from './lib/theme-basic.module'; +export { LayoutAddNavigationElement, LayoutRemoveNavigationElementByName } from './lib/actions'; +export { LayoutAccountComponent, LayoutApplicationComponent, LayoutEmptyComponent } from './lib/components'; +export {} from './lib/models'; +export { LayoutState } from './lib/states'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuYmFzaWMvIiwic291cmNlcyI6WyJwdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwwQ0FBYywwQkFBMEIsQ0FBQztBQUN6QyxnRkFBYyxlQUFlLENBQUM7QUFDOUIseUZBQWMsa0JBQWtCLENBQUM7QUFDakMsZUFBYyxjQUFjLENBQUM7QUFDN0IsNEJBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB0aGVtZS1iYXNpY1xuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RoZW1lLWJhc2ljLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY3Rpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXRlcyc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm5/abp-ng.theme.basic.js b/npm/ng-packs/dist/theme-basic/esm5/abp-ng.theme.basic.js new file mode 100644 index 00000000000..dc107326c4f --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm5/abp-ng.theme.basic.js @@ -0,0 +1,18 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { LAYOUTS, ThemeBasicModule, LayoutAddNavigationElement, LayoutRemoveNavigationElementByName, LayoutAccountComponent, LayoutApplicationComponent, LayoutEmptyComponent, LayoutState } from './public-api'; +export { LayoutAddNavigationElement as ɵi, LayoutRemoveNavigationElementByName as ɵj } from './lib/actions/layout.actions'; +export { ChangePasswordComponent as ɵf } from './lib/components/change-password/change-password.component'; +export { LayoutAccountComponent as ɵc } from './lib/components/layout-account/layout-account.component'; +export { LayoutApplicationComponent as ɵa } from './lib/components/layout-application/layout-application.component'; +export { LayoutEmptyComponent as ɵd } from './lib/components/layout-empty/layout-empty.component'; +export { LayoutComponent as ɵe } from './lib/components/layout/layout.component'; +export { ProfileComponent as ɵg } from './lib/components/profile/profile.component'; +export { LayoutState as ɵb } from './lib/states'; +export { LayoutState as ɵh } from './lib/states/layout.state'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLnRoZW1lLmJhc2ljLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5iYXNpYy8iLCJzb3VyY2VzIjpbImFicC1uZy50aGVtZS5iYXNpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsa01BQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQywwQkFBMEIsSUFBSSxFQUFFLEVBQUMsbUNBQW1DLElBQUksRUFBRSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDeEgsT0FBTyxFQUFDLHVCQUF1QixJQUFJLEVBQUUsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ3pHLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUN0RyxPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDbEgsT0FBTyxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBQ2hHLE9BQU8sRUFBQyxlQUFlLElBQUksRUFBRSxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBRWxGLE9BQU8sRUFBQyxXQUFXLElBQUksRUFBRSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQy9DLE9BQU8sRUFBQyxXQUFXLElBQUksRUFBRSxFQUFDLE1BQU0sMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG5cbmV4cG9ydCB7TGF5b3V0QWRkTmF2aWdhdGlvbkVsZW1lbnQgYXMgybVpLExheW91dFJlbW92ZU5hdmlnYXRpb25FbGVtZW50QnlOYW1lIGFzIMm1an0gZnJvbSAnLi9saWIvYWN0aW9ucy9sYXlvdXQuYWN0aW9ucyc7XG5leHBvcnQge0NoYW5nZVBhc3N3b3JkQ29tcG9uZW50IGFzIMm1Zn0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9jaGFuZ2UtcGFzc3dvcmQvY2hhbmdlLXBhc3N3b3JkLmNvbXBvbmVudCc7XG5leHBvcnQge0xheW91dEFjY291bnRDb21wb25lbnQgYXMgybVjfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xheW91dC1hY2NvdW50L2xheW91dC1hY2NvdW50LmNvbXBvbmVudCc7XG5leHBvcnQge0xheW91dEFwcGxpY2F0aW9uQ29tcG9uZW50IGFzIMm1YX0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXlvdXQtYXBwbGljYXRpb24vbGF5b3V0LWFwcGxpY2F0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQge0xheW91dEVtcHR5Q29tcG9uZW50IGFzIMm1ZH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXlvdXQtZW1wdHkvbGF5b3V0LWVtcHR5LmNvbXBvbmVudCc7XG5leHBvcnQge0xheW91dENvbXBvbmVudCBhcyDJtWV9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGF5b3V0L2xheW91dC5jb21wb25lbnQnO1xuZXhwb3J0IHtQcm9maWxlQ29tcG9uZW50IGFzIMm1Z30gZnJvbSAnLi9saWIvY29tcG9uZW50cy9wcm9maWxlL3Byb2ZpbGUuY29tcG9uZW50JztcbmV4cG9ydCB7TGF5b3V0IGFzIMm1a30gZnJvbSAnLi9saWIvbW9kZWxzL2xheW91dCc7XG5leHBvcnQge0xheW91dFN0YXRlIGFzIMm1Yn0gZnJvbSAnLi9saWIvc3RhdGVzJztcbmV4cG9ydCB7TGF5b3V0U3RhdGUgYXMgybVofSBmcm9tICcuL2xpYi9zdGF0ZXMvbGF5b3V0LnN0YXRlJzsiXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm5/lib/actions/index.js b/npm/ng-packs/dist/theme-basic/esm5/lib/actions/index.js new file mode 100644 index 00000000000..0ee70b20826 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm5/lib/actions/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { LayoutAddNavigationElement, LayoutRemoveNavigationElementByName } from './layout.actions'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLmJhc2ljLyIsInNvdXJjZXMiOlsibGliL2FjdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGdGQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9sYXlvdXQuYWN0aW9ucyc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm5/lib/actions/layout.actions.js b/npm/ng-packs/dist/theme-basic/esm5/lib/actions/layout.actions.js new file mode 100644 index 00000000000..87c31dea636 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm5/lib/actions/layout.actions.js @@ -0,0 +1,33 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var LayoutAddNavigationElement = /** @class */ (function () { + function LayoutAddNavigationElement(payload) { + this.payload = payload; + } + LayoutAddNavigationElement.type = '[Layout] Add Navigation Element'; + return LayoutAddNavigationElement; +}()); +export { LayoutAddNavigationElement }; +if (false) { + /** @type {?} */ + LayoutAddNavigationElement.type; + /** @type {?} */ + LayoutAddNavigationElement.prototype.payload; +} +var LayoutRemoveNavigationElementByName = /** @class */ (function () { + function LayoutRemoveNavigationElementByName(name) { + this.name = name; + } + LayoutRemoveNavigationElementByName.type = '[Layout] Remove Navigation ElementByName'; + return LayoutRemoveNavigationElementByName; +}()); +export { LayoutRemoveNavigationElementByName }; +if (false) { + /** @type {?} */ + LayoutRemoveNavigationElementByName.type; + /** @type {?} */ + LayoutRemoveNavigationElementByName.prototype.name; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmFjdGlvbnMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLmJhc2ljLyIsInNvdXJjZXMiOlsibGliL2FjdGlvbnMvbGF5b3V0LmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUVBO0lBRUUsb0NBQW1CLE9BQThEO1FBQTlELFlBQU8sR0FBUCxPQUFPLENBQXVEO0lBQUcsQ0FBQztJQURyRSwrQkFBSSxHQUFHLGlDQUFpQyxDQUFDO0lBRTNELGlDQUFDO0NBQUEsQUFIRCxJQUdDO1NBSFksMEJBQTBCOzs7SUFDckMsZ0NBQXlEOztJQUM3Qyw2Q0FBcUU7O0FBR25GO0lBRUUsNkNBQW1CLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO0lBQUcsQ0FBQztJQURuQix3Q0FBSSxHQUFHLDBDQUEwQyxDQUFDO0lBRXBFLDBDQUFDO0NBQUEsQUFIRCxJQUdDO1NBSFksbUNBQW1DOzs7SUFDOUMseUNBQWtFOztJQUN0RCxtREFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYXlvdXQgfSBmcm9tICcuLi9tb2RlbHMvbGF5b3V0JztcblxuZXhwb3J0IGNsYXNzIExheW91dEFkZE5hdmlnYXRpb25FbGVtZW50IHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0xheW91dF0gQWRkIE5hdmlnYXRpb24gRWxlbWVudCc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBMYXlvdXQuTmF2aWdhdGlvbkVsZW1lbnQgfCBMYXlvdXQuTmF2aWdhdGlvbkVsZW1lbnRbXSkge31cbn1cblxuZXhwb3J0IGNsYXNzIExheW91dFJlbW92ZU5hdmlnYXRpb25FbGVtZW50QnlOYW1lIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0xheW91dF0gUmVtb3ZlIE5hdmlnYXRpb24gRWxlbWVudEJ5TmFtZSc7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcpIHt9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm5/lib/components/change-password/change-password.component.js b/npm/ng-packs/dist/theme-basic/esm5/lib/components/change-password/change-password.component.js new file mode 100644 index 00000000000..13751978901 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm5/lib/components/change-password/change-password.component.js @@ -0,0 +1,142 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { ProfileChangePassword } from '@abp/ng.core'; +import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild, } from '@angular/core'; +import { FormBuilder, Validators } from '@angular/forms'; +import { comparePasswords, validatePassword } from '@ngx-validate/core'; +import { Store } from '@ngxs/store'; +var minLength = Validators.minLength, required = Validators.required; +var ChangePasswordComponent = /** @class */ (function () { + function ChangePasswordComponent(fb, store) { + this.fb = fb; + this.store = store; + this.visibleChange = new EventEmitter(); + } + Object.defineProperty(ChangePasswordComponent.prototype, "visible", { + get: /** + * @return {?} + */ + function () { + return this._visible; + }, + set: /** + * @param {?} value + * @return {?} + */ + function (value) { + this._visible = value; + this.visibleChange.emit(value); + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + ChangePasswordComponent.prototype.ngOnInit = /** + * @return {?} + */ + function () { + this.form = this.fb.group({ + password: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]], + newPassword: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]], + repeatNewPassword: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]], + }, { + validators: [comparePasswords(['newPassword', 'repeatNewPassword'])], + }); + }; + /** + * @return {?} + */ + ChangePasswordComponent.prototype.onSubmit = /** + * @return {?} + */ + function () { + var _this = this; + if (this.form.invalid) + return; + this.store + .dispatch(new ProfileChangePassword({ + currentPassword: this.form.get('password').value, + newPassword: this.form.get('newPassword').value, + })) + .subscribe((/** + * @return {?} + */ + function () { + _this.visible = false; + })); + }; + /** + * @return {?} + */ + ChangePasswordComponent.prototype.openModal = /** + * @return {?} + */ + function () { + this.visible = true; + }; + /** + * @param {?} __0 + * @return {?} + */ + ChangePasswordComponent.prototype.ngOnChanges = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var visible = _a.visible; + if (!visible) + return; + if (visible.currentValue) { + this.openModal(); + } + else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + }; + ChangePasswordComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-change-password', + template: "\n \n

    {{ 'AbpIdentity::ChangePassword' | abpLocalization }}

    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n
    \n" + }] } + ]; + /** @nocollapse */ + ChangePasswordComponent.ctorParameters = function () { return [ + { type: FormBuilder }, + { type: Store } + ]; }; + ChangePasswordComponent.propDecorators = { + visible: [{ type: Input }], + visibleChange: [{ type: Output }], + modalContent: [{ type: ViewChild, args: ['modalContent', { static: false },] }] + }; + return ChangePasswordComponent; +}()); +export { ChangePasswordComponent }; +if (false) { + /** + * @type {?} + * @protected + */ + ChangePasswordComponent.prototype._visible; + /** @type {?} */ + ChangePasswordComponent.prototype.visibleChange; + /** @type {?} */ + ChangePasswordComponent.prototype.modalContent; + /** @type {?} */ + ChangePasswordComponent.prototype.form; + /** + * @type {?} + * @private + */ + ChangePasswordComponent.prototype.fb; + /** + * @type {?} + * @private + */ + ChangePasswordComponent.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLXBhc3N3b3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuYmFzaWMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9jaGFuZ2UtcGFzc3dvcmQvY2hhbmdlLXBhc3N3b3JkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUIsSUFBQSxnQ0FBUyxFQUFFLDhCQUFRO0FBRTNCO0lBeUJFLGlDQUFvQixFQUFlLEVBQVUsS0FBWTtRQUFyQyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBTztRQVB6RCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUFPZ0IsQ0FBQztJQWxCN0Qsc0JBQ0ksNENBQU87Ozs7UUFEWDtZQUVFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN2QixDQUFDOzs7OztRQUVELFVBQVksS0FBYztZQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDOzs7T0FMQTs7OztJQWlCRCwwQ0FBUTs7O0lBQVI7UUFDRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUN2QjtZQUNFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckcsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RyxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDL0csRUFDRDtZQUNFLFVBQVUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsYUFBYSxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQztTQUNyRSxDQUNGLENBQUM7SUFDSixDQUFDOzs7O0lBRUQsMENBQVE7OztJQUFSO1FBQUEsaUJBYUM7UUFaQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFFOUIsSUFBSSxDQUFDLEtBQUs7YUFDUCxRQUFRLENBQ1AsSUFBSSxxQkFBcUIsQ0FBQztZQUN4QixlQUFlLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSztZQUNoRCxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSztTQUNoRCxDQUFDLENBQ0g7YUFDQSxTQUFTOzs7UUFBQztZQUNULEtBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7OztJQUVELDJDQUFTOzs7SUFBVDtRQUNFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7Ozs7O0lBRUQsNkNBQVc7Ozs7SUFBWCxVQUFZLEVBQTBCO1lBQXhCLG9CQUFPO1FBQ25CLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUVyQixJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2xCO2FBQU0sSUFBSSxPQUFPLENBQUMsWUFBWSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3pELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQzs7Z0JBbkVGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixneERBQStDO2lCQUNoRDs7OztnQkFUUSxXQUFXO2dCQUVYLEtBQUs7OzswQkFXWCxLQUFLO2dDQVVMLE1BQU07K0JBR04sU0FBUyxTQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O0lBZ0Q5Qyw4QkFBQztDQUFBLEFBcEVELElBb0VDO1NBaEVZLHVCQUF1Qjs7Ozs7O0lBQ2xDLDJDQUFtQjs7SUFZbkIsZ0RBQzRDOztJQUU1QywrQ0FDK0I7O0lBRS9CLHVDQUFnQjs7Ozs7SUFFSixxQ0FBdUI7Ozs7O0lBQUUsd0NBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvZmlsZUNoYW5nZVBhc3N3b3JkIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29tcGFyZVBhc3N3b3JkcywgdmFsaWRhdGVQYXNzd29yZCB9IGZyb20gJ0BuZ3gtdmFsaWRhdGUvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcblxuY29uc3QgeyBtaW5MZW5ndGgsIHJlcXVpcmVkIH0gPSBWYWxpZGF0b3JzO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtY2hhbmdlLXBhc3N3b3JkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYW5nZS1wYXNzd29yZC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIENoYW5nZVBhc3N3b3JkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcm90ZWN0ZWQgX3Zpc2libGU7XG5cbiAgQElucHV0KClcbiAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gIH1cblxuICBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Zpc2libGUgPSB2YWx1ZTtcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBAVmlld0NoaWxkKCdtb2RhbENvbnRlbnQnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgbW9kYWxDb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGZvcm06IEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBzdG9yZTogU3RvcmUpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cChcbiAgICAgIHtcbiAgICAgICAgcGFzc3dvcmQ6IFsnJywgW3JlcXVpcmVkLCBtaW5MZW5ndGgoNiksIHZhbGlkYXRlUGFzc3dvcmQoWydzbWFsbCcsICdjYXBpdGFsJywgJ251bWJlcicsICdzcGVjaWFsJ10pXV0sXG4gICAgICAgIG5ld1Bhc3N3b3JkOiBbJycsIFtyZXF1aXJlZCwgbWluTGVuZ3RoKDYpLCB2YWxpZGF0ZVBhc3N3b3JkKFsnc21hbGwnLCAnY2FwaXRhbCcsICdudW1iZXInLCAnc3BlY2lhbCddKV1dLFxuICAgICAgICByZXBlYXROZXdQYXNzd29yZDogWycnLCBbcmVxdWlyZWQsIG1pbkxlbmd0aCg2KSwgdmFsaWRhdGVQYXNzd29yZChbJ3NtYWxsJywgJ2NhcGl0YWwnLCAnbnVtYmVyJywgJ3NwZWNpYWwnXSldXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZhbGlkYXRvcnM6IFtjb21wYXJlUGFzc3dvcmRzKFsnbmV3UGFzc3dvcmQnLCAncmVwZWF0TmV3UGFzc3dvcmQnXSldLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgb25TdWJtaXQoKSB7XG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSByZXR1cm47XG5cbiAgICB0aGlzLnN0b3JlXG4gICAgICAuZGlzcGF0Y2goXG4gICAgICAgIG5ldyBQcm9maWxlQ2hhbmdlUGFzc3dvcmQoe1xuICAgICAgICAgIGN1cnJlbnRQYXNzd29yZDogdGhpcy5mb3JtLmdldCgncGFzc3dvcmQnKS52YWx1ZSxcbiAgICAgICAgICBuZXdQYXNzd29yZDogdGhpcy5mb3JtLmdldCgnbmV3UGFzc3dvcmQnKS52YWx1ZSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICB9KTtcbiAgfVxuXG4gIG9wZW5Nb2RhbCgpIHtcbiAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoeyB2aXNpYmxlIH06IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoIXZpc2libGUpIHJldHVybjtcblxuICAgIGlmICh2aXNpYmxlLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5vcGVuTW9kYWwoKTtcbiAgICB9IGVsc2UgaWYgKHZpc2libGUuY3VycmVudFZhbHVlID09PSBmYWxzZSAmJiB0aGlzLnZpc2libGUpIHtcbiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm5/lib/components/index.js b/npm/ng-packs/dist/theme-basic/esm5/lib/components/index.js new file mode 100644 index 00000000000..25ffed3ffc0 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm5/lib/components/index.js @@ -0,0 +1,8 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { LayoutAccountComponent } from './layout-account/layout-account.component'; +export { LayoutApplicationComponent } from './layout-application/layout-application.component'; +export { LayoutEmptyComponent } from './layout-empty/layout-empty.component'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLmJhc2ljLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHVDQUFjLDJDQUEyQyxDQUFDO0FBQzFELDJDQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLHFDQUFjLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9sYXlvdXQtYWNjb3VudC9sYXlvdXQtYWNjb3VudC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9sYXlvdXQtYXBwbGljYXRpb24vbGF5b3V0LWFwcGxpY2F0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xheW91dC1lbXB0eS9sYXlvdXQtZW1wdHkuY29tcG9uZW50JztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm5/lib/components/layout-account/layout-account.component.js b/npm/ng-packs/dist/theme-basic/esm5/lib/components/layout-account/layout-account.component.js new file mode 100644 index 00000000000..57241df9962 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm5/lib/components/layout-account/layout-account.component.js @@ -0,0 +1,27 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component } from '@angular/core'; +var LayoutAccountComponent = /** @class */ (function () { + function LayoutAccountComponent() { + this.isCollapsed = false; + } + // required for dynamic component + LayoutAccountComponent.type = "account" /* account */; + LayoutAccountComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-layout-account', + template: "\n \n\n \n \n \n \n \n\n" + }] } + ]; + return LayoutAccountComponent; +}()); +export { LayoutAccountComponent }; +if (false) { + /** @type {?} */ + LayoutAccountComponent.type; + /** @type {?} */ + LayoutAccountComponent.prototype.isCollapsed; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWFjY291bnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5iYXNpYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2xheW91dC1hY2NvdW50L2xheW91dC1hY2NvdW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcxQztJQUFBO1FBUUUsZ0JBQVcsR0FBWSxLQUFLLENBQUM7SUFDL0IsQ0FBQzs7SUFIUSwyQkFBSSwyQkFBdUI7O2dCQU5uQyxTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsMHhCQUE4QztpQkFDL0M7O0lBTUQsNkJBQUM7Q0FBQSxBQVRELElBU0M7U0FMWSxzQkFBc0I7OztJQUVqQyw0QkFBa0M7O0lBRWxDLDZDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZUxheW91dFR5cGUgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtbGF5b3V0LWFjY291bnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF5b3V0LWFjY291bnQuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXRBY2NvdW50Q29tcG9uZW50IHtcbiAgLy8gcmVxdWlyZWQgZm9yIGR5bmFtaWMgY29tcG9uZW50XG4gIHN0YXRpYyB0eXBlID0gZUxheW91dFR5cGUuYWNjb3VudDtcblxuICBpc0NvbGxhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm5/lib/components/layout-application/layout-application.component.js b/npm/ng-packs/dist/theme-basic/esm5/lib/components/layout-application/layout-application.component.js new file mode 100644 index 00000000000..e60e6e1a190 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm5/lib/components/layout-application/layout-application.component.js @@ -0,0 +1,323 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { ConfigGetAppConfiguration, ConfigState, SessionSetLanguage, SessionState, takeUntilDestroy, } from '@abp/ng.core'; +import { Component, QueryList, TemplateRef, ViewChild, ViewChildren, } from '@angular/core'; +import { NgbDropdown } from '@ng-bootstrap/ng-bootstrap'; +import { Navigate, RouterState } from '@ngxs/router-plugin'; +import { Select, Store } from '@ngxs/store'; +import { OAuthService } from 'angular-oauth2-oidc'; +import compare from 'just-compare'; +import { fromEvent, Observable } from 'rxjs'; +import { debounceTime, filter, map } from 'rxjs/operators'; +import snq from 'snq'; +import { LayoutAddNavigationElement } from '../../actions'; +import { LayoutState } from '../../states'; +var LayoutApplicationComponent = /** @class */ (function () { + function LayoutApplicationComponent(store, oauthService) { + this.store = store; + this.oauthService = oauthService; + this.isOpenChangePassword = false; + this.isOpenProfile = false; + this.rightPartElements = []; + this.trackByFn = (/** + * @param {?} _ + * @param {?} item + * @return {?} + */ + function (_, item) { return item.name; }); + this.trackElementByFn = (/** + * @param {?} _ + * @param {?} element + * @return {?} + */ + function (_, element) { return element; }); + } + Object.defineProperty(LayoutApplicationComponent.prototype, "visibleRoutes$", { + get: /** + * @return {?} + */ + function () { + return this.routes$.pipe(map((/** + * @param {?} routes + * @return {?} + */ + function (routes) { return getVisibleRoutes(routes); }))); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(LayoutApplicationComponent.prototype, "defaultLanguage$", { + get: /** + * @return {?} + */ + function () { + var _this = this; + return this.languages$.pipe(map((/** + * @param {?} languages + * @return {?} + */ + function (languages) { return snq((/** + * @return {?} + */ + function () { return languages.find((/** + * @param {?} lang + * @return {?} + */ + function (lang) { return lang.cultureName === _this.selectedLangCulture; })).displayName; })); }), '')); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(LayoutApplicationComponent.prototype, "dropdownLanguages$", { + get: /** + * @return {?} + */ + function () { + var _this = this; + return this.languages$.pipe(map((/** + * @param {?} languages + * @return {?} + */ + function (languages) { return snq((/** + * @return {?} + */ + function () { return languages.filter((/** + * @param {?} lang + * @return {?} + */ + function (lang) { return lang.cultureName !== _this.selectedLangCulture; })); })); }), [])); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(LayoutApplicationComponent.prototype, "selectedLangCulture", { + get: /** + * @return {?} + */ + function () { + return this.store.selectSnapshot(SessionState.getLanguage); + }, + enumerable: true, + configurable: true + }); + /** + * @private + * @return {?} + */ + LayoutApplicationComponent.prototype.checkWindowWidth = /** + * @private + * @return {?} + */ + function () { + var _this = this; + setTimeout((/** + * @return {?} + */ + function () { + _this.navbarRootDropdowns.forEach((/** + * @param {?} item + * @return {?} + */ + function (item) { + item.close(); + })); + if (window.innerWidth < 768) { + _this.isDropdownChildDynamic = false; + } + else { + _this.isDropdownChildDynamic = true; + } + }), 0); + }; + /** + * @return {?} + */ + LayoutApplicationComponent.prototype.ngAfterViewInit = /** + * @return {?} + */ + function () { + var _this = this; + /** @type {?} */ + var navigations = this.store.selectSnapshot(LayoutState.getNavigationElements).map((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var name = _a.name; + return name; + })); + if (navigations.indexOf('LanguageRef') < 0) { + this.store.dispatch(new LayoutAddNavigationElement([ + { element: this.languageRef, order: 4, name: 'LanguageRef' }, + { element: this.currentUserRef, order: 5, name: 'CurrentUserRef' }, + ])); + } + this.navElements$ + .pipe(map((/** + * @param {?} elements + * @return {?} + */ + function (elements) { return elements.map((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var element = _a.element; + return element; + })); })), filter((/** + * @param {?} elements + * @return {?} + */ + function (elements) { return !compare(elements, _this.rightPartElements); })), takeUntilDestroy(this)) + .subscribe((/** + * @param {?} elements + * @return {?} + */ + function (elements) { + setTimeout((/** + * @return {?} + */ + function () { return (_this.rightPartElements = elements); }), 0); + })); + this.checkWindowWidth(); + fromEvent(window, 'resize') + .pipe(takeUntilDestroy(this), debounceTime(250)) + .subscribe((/** + * @return {?} + */ + function () { + _this.checkWindowWidth(); + })); + }; + /** + * @return {?} + */ + LayoutApplicationComponent.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { }; + /** + * @param {?} cultureName + * @return {?} + */ + LayoutApplicationComponent.prototype.onChangeLang = /** + * @param {?} cultureName + * @return {?} + */ + function (cultureName) { + this.store.dispatch(new SessionSetLanguage(cultureName)); + this.store.dispatch(new ConfigGetAppConfiguration()); + }; + /** + * @return {?} + */ + LayoutApplicationComponent.prototype.logout = /** + * @return {?} + */ + function () { + this.oauthService.logOut(); + this.store.dispatch(new Navigate(['/account/login'], null, { + state: { redirectUrl: this.store.selectSnapshot(RouterState).state.url }, + })); + this.store.dispatch(new ConfigGetAppConfiguration()); + }; + // required for dynamic component + LayoutApplicationComponent.type = "application" /* application */; + LayoutApplicationComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-layout-application', + template: "\n \n\n
      \n \n
    \n
    \n\n\n
  • \n \n {{ defaultLanguage$ | async }}\n \n
    \n {{ lang?.displayName }}\n
    \n
  • \n
    \n\n\n
  • \n \n {{ (currentUser$ | async)?.userName }}\n \n \n
  • \n\n \n\n \n
    \n" + }] } + ]; + /** @nocollapse */ + LayoutApplicationComponent.ctorParameters = function () { return [ + { type: Store }, + { type: OAuthService } + ]; }; + LayoutApplicationComponent.propDecorators = { + currentUserRef: [{ type: ViewChild, args: ['currentUser', { static: false, read: TemplateRef },] }], + languageRef: [{ type: ViewChild, args: ['language', { static: false, read: TemplateRef },] }], + navbarRootDropdowns: [{ type: ViewChildren, args: ['navbarRootDropdown', { read: NgbDropdown },] }] + }; + tslib_1.__decorate([ + Select(ConfigState.getOne('routes')), + tslib_1.__metadata("design:type", Observable) + ], LayoutApplicationComponent.prototype, "routes$", void 0); + tslib_1.__decorate([ + Select(ConfigState.getOne('currentUser')), + tslib_1.__metadata("design:type", Observable) + ], LayoutApplicationComponent.prototype, "currentUser$", void 0); + tslib_1.__decorate([ + Select(ConfigState.getDeep('localization.languages')), + tslib_1.__metadata("design:type", Observable) + ], LayoutApplicationComponent.prototype, "languages$", void 0); + tslib_1.__decorate([ + Select(LayoutState.getNavigationElements), + tslib_1.__metadata("design:type", Observable) + ], LayoutApplicationComponent.prototype, "navElements$", void 0); + return LayoutApplicationComponent; +}()); +export { LayoutApplicationComponent }; +if (false) { + /** @type {?} */ + LayoutApplicationComponent.type; + /** @type {?} */ + LayoutApplicationComponent.prototype.routes$; + /** @type {?} */ + LayoutApplicationComponent.prototype.currentUser$; + /** @type {?} */ + LayoutApplicationComponent.prototype.languages$; + /** @type {?} */ + LayoutApplicationComponent.prototype.navElements$; + /** @type {?} */ + LayoutApplicationComponent.prototype.currentUserRef; + /** @type {?} */ + LayoutApplicationComponent.prototype.languageRef; + /** @type {?} */ + LayoutApplicationComponent.prototype.navbarRootDropdowns; + /** @type {?} */ + LayoutApplicationComponent.prototype.isOpenChangePassword; + /** @type {?} */ + LayoutApplicationComponent.prototype.isOpenProfile; + /** @type {?} */ + LayoutApplicationComponent.prototype.isDropdownChildDynamic; + /** @type {?} */ + LayoutApplicationComponent.prototype.rightPartElements; + /** @type {?} */ + LayoutApplicationComponent.prototype.trackByFn; + /** @type {?} */ + LayoutApplicationComponent.prototype.trackElementByFn; + /** + * @type {?} + * @private + */ + LayoutApplicationComponent.prototype.store; + /** + * @type {?} + * @private + */ + LayoutApplicationComponent.prototype.oauthService; +} +/** + * @param {?} routes + * @return {?} + */ +function getVisibleRoutes(routes) { + return routes.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { + if (val.invisible) + return acc; + if (val.children && val.children.length) { + val.children = getVisibleRoutes(val.children); + } + return tslib_1.__spread(acc, [val]); + }), []); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWFwcGxpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuYmFzaWMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9sYXlvdXQtYXBwbGljYXRpb24vbGF5b3V0LWFwcGxpY2F0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFHTCx5QkFBeUIsRUFDekIsV0FBVyxFQUVYLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFFTCxTQUFTLEVBRVQsU0FBUyxFQUNULFdBQVcsRUFFWCxTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDbkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTNDO0lBZ0VFLG9DQUFvQixLQUFZLEVBQVUsWUFBMEI7UUFBaEQsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUFVLGlCQUFZLEdBQVos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QUFDLENBQUM7MENBQzVCLFVBQVU7b0VBQXVDO0lBRy9EO1FBREMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQzswQ0FDMUMsVUFBVTtrRUFBc0M7SUFHNUQ7UUFEQyxNQUFNLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDOzBDQUM1QixVQUFVO29FQUE2QjtJQStHdkQsaUNBQUM7Q0FBQSxBQWpJRCxJQWlJQztTQTdIWSwwQkFBMEI7OztJQUVyQyxnQ0FBc0M7O0lBRXRDLDZDQUNxQzs7SUFFckMsa0RBQytEOztJQUUvRCxnREFDNEQ7O0lBRTVELGtEQUNxRDs7SUFFckQsb0RBQ2lDOztJQUVqQyxpREFDOEI7O0lBRTlCLHlEQUM0Qzs7SUFFNUMsMERBQXNDOztJQUV0QyxtREFBK0I7O0lBRS9CLDREQUFnQzs7SUF5QmhDLHVEQUEyQzs7SUFFM0MsK0NBQW1FOztJQUVuRSxzREFBMkU7Ozs7O0lBRS9ELDJDQUFvQjs7Ozs7SUFBRSxrREFBa0M7Ozs7OztBQW1FdEUsU0FBUyxnQkFBZ0IsQ0FBQyxNQUF1QjtJQUMvQyxPQUFPLE1BQU0sQ0FBQyxNQUFNOzs7OztJQUFDLFVBQUMsR0FBRyxFQUFFLEdBQUc7UUFDNUIsSUFBSSxHQUFHLENBQUMsU0FBUztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBRTlCLElBQUksR0FBRyxDQUFDLFFBQVEsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUN2QyxHQUFHLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMvQztRQUVELHdCQUFXLEdBQUcsR0FBRSxHQUFHLEdBQUU7SUFDdkIsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFCUCxcbiAgQXBwbGljYXRpb25Db25maWd1cmF0aW9uLFxuICBDb25maWdHZXRBcHBDb25maWd1cmF0aW9uLFxuICBDb25maWdTdGF0ZSxcbiAgZUxheW91dFR5cGUsXG4gIFNlc3Npb25TZXRMYW5ndWFnZSxcbiAgU2Vzc2lvblN0YXRlLFxuICB0YWtlVW50aWxEZXN0cm95LFxufSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdiRHJvcGRvd24gfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBOYXZpZ2F0ZSwgUm91dGVyU3RhdGUgfSBmcm9tICdAbmd4cy9yb3V0ZXItcGx1Z2luJztcbmltcG9ydCB7IFNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcbmltcG9ydCBjb21wYXJlIGZyb20gJ2p1c3QtY29tcGFyZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgc25xIGZyb20gJ3NucSc7XG5pbXBvcnQgeyBMYXlvdXRBZGROYXZpZ2F0aW9uRWxlbWVudCB9IGZyb20gJy4uLy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgTGF5b3V0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xheW91dCc7XG5pbXBvcnQgeyBMYXlvdXRTdGF0ZSB9IGZyb20gJy4uLy4uL3N0YXRlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FicC1sYXlvdXQtYXBwbGljYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF5b3V0LWFwcGxpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgTGF5b3V0QXBwbGljYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvLyByZXF1aXJlZCBmb3IgZHluYW1pYyBjb21wb25lbnRcbiAgc3RhdGljIHR5cGUgPSBlTGF5b3V0VHlwZS5hcHBsaWNhdGlvbjtcblxuICBAU2VsZWN0KENvbmZpZ1N0YXRlLmdldE9uZSgncm91dGVzJykpXG4gIHJvdXRlcyQ6IE9ic2VydmFibGU8QUJQLkZ1bGxSb3V0ZVtdPjtcblxuICBAU2VsZWN0KENvbmZpZ1N0YXRlLmdldE9uZSgnY3VycmVudFVzZXInKSlcbiAgY3VycmVudFVzZXIkOiBPYnNlcnZhYmxlPEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbi5DdXJyZW50VXNlcj47XG5cbiAgQFNlbGVjdChDb25maWdTdGF0ZS5nZXREZWVwKCdsb2NhbGl6YXRpb24ubGFuZ3VhZ2VzJykpXG4gIGxhbmd1YWdlcyQ6IE9ic2VydmFibGU8QXBwbGljYXRpb25Db25maWd1cmF0aW9uLkxhbmd1YWdlW10+O1xuXG4gIEBTZWxlY3QoTGF5b3V0U3RhdGUuZ2V0TmF2aWdhdGlvbkVsZW1lbnRzKVxuICBuYXZFbGVtZW50cyQ6IE9ic2VydmFibGU8TGF5b3V0Lk5hdmlnYXRpb25FbGVtZW50W10+O1xuXG4gIEBWaWV3Q2hpbGQoJ2N1cnJlbnRVc2VyJywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBjdXJyZW50VXNlclJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKCdsYW5ndWFnZScsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgbGFuZ3VhZ2VSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZHJlbignbmF2YmFyUm9vdERyb3Bkb3duJywgeyByZWFkOiBOZ2JEcm9wZG93biB9KVxuICBuYXZiYXJSb290RHJvcGRvd25zOiBRdWVyeUxpc3Q8TmdiRHJvcGRvd24+O1xuXG4gIGlzT3BlbkNoYW5nZVBhc3N3b3JkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgaXNPcGVuUHJvZmlsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGlzRHJvcGRvd25DaGlsZER5bmFtaWM6IGJvb2xlYW47XG5cbiAgZ2V0IHZpc2libGVSb3V0ZXMkKCk6IE9ic2VydmFibGU8QUJQLkZ1bGxSb3V0ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVzJC5waXBlKG1hcChyb3V0ZXMgPT4gZ2V0VmlzaWJsZVJvdXRlcyhyb3V0ZXMpKSk7XG4gIH1cblxuICBnZXQgZGVmYXVsdExhbmd1YWdlJCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmxhbmd1YWdlcyQucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgbGFuZ3VhZ2VzID0+IHNucSgoKSA9PiBsYW5ndWFnZXMuZmluZChsYW5nID0+IGxhbmcuY3VsdHVyZU5hbWUgPT09IHRoaXMuc2VsZWN0ZWRMYW5nQ3VsdHVyZSkuZGlzcGxheU5hbWUpLFxuICAgICAgICAnJyxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIGdldCBkcm9wZG93bkxhbmd1YWdlcyQoKTogT2JzZXJ2YWJsZTxBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb24uTGFuZ3VhZ2VbXT4ge1xuICAgIHJldHVybiB0aGlzLmxhbmd1YWdlcyQucGlwZShcbiAgICAgIG1hcChsYW5ndWFnZXMgPT4gc25xKCgpID0+IGxhbmd1YWdlcy5maWx0ZXIobGFuZyA9PiBsYW5nLmN1bHR1cmVOYW1lICE9PSB0aGlzLnNlbGVjdGVkTGFuZ0N1bHR1cmUpKSwgW10pLFxuICAgICk7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRMYW5nQ3VsdHVyZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNlc3Npb25TdGF0ZS5nZXRMYW5ndWFnZSk7XG4gIH1cblxuICByaWdodFBhcnRFbGVtZW50czogVGVtcGxhdGVSZWY8YW55PltdID0gW107XG5cbiAgdHJhY2tCeUZuOiBUcmFja0J5RnVuY3Rpb248QUJQLkZ1bGxSb3V0ZT4gPSAoXywgaXRlbSkgPT4gaXRlbS5uYW1lO1xuXG4gIHRyYWNrRWxlbWVudEJ5Rm46IFRyYWNrQnlGdW5jdGlvbjxBQlAuRnVsbFJvdXRlPiA9IChfLCBlbGVtZW50KSA9PiBlbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlLCBwcml2YXRlIG9hdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlKSB7fVxuXG4gIHByaXZhdGUgY2hlY2tXaW5kb3dXaWR0aCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubmF2YmFyUm9vdERyb3Bkb3ducy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpdGVtLmNsb3NlKCk7XG4gICAgICB9KTtcbiAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCkge1xuICAgICAgICB0aGlzLmlzRHJvcGRvd25DaGlsZER5bmFtaWMgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNEcm9wZG93bkNoaWxkRHluYW1pYyA9IHRydWU7XG4gICAgICB9XG4gICAgfSwgMCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3QgbmF2aWdhdGlvbnMgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KExheW91dFN0YXRlLmdldE5hdmlnYXRpb25FbGVtZW50cykubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSk7XG5cbiAgICBpZiAobmF2aWdhdGlvbnMuaW5kZXhPZignTGFuZ3VhZ2VSZWYnKSA8IDApIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIG5ldyBMYXlvdXRBZGROYXZpZ2F0aW9uRWxlbWVudChbXG4gICAgICAgICAgeyBlbGVtZW50OiB0aGlzLmxhbmd1YWdlUmVmLCBvcmRlcjogNCwgbmFtZTogJ0xhbmd1YWdlUmVmJyB9LFxuICAgICAgICAgIHsgZWxlbWVudDogdGhpcy5jdXJyZW50VXNlclJlZiwgb3JkZXI6IDUsIG5hbWU6ICdDdXJyZW50VXNlclJlZicgfSxcbiAgICAgICAgXSksXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMubmF2RWxlbWVudHMkXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKGVsZW1lbnRzID0+IGVsZW1lbnRzLm1hcCgoeyBlbGVtZW50IH0pID0+IGVsZW1lbnQpKSxcbiAgICAgICAgZmlsdGVyKGVsZW1lbnRzID0+ICFjb21wYXJlKGVsZW1lbnRzLCB0aGlzLnJpZ2h0UGFydEVsZW1lbnRzKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3kodGhpcyksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGVsZW1lbnRzID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy5yaWdodFBhcnRFbGVtZW50cyA9IGVsZW1lbnRzKSwgMCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuY2hlY2tXaW5kb3dXaWR0aCgpO1xuXG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveSh0aGlzKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDI1MCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGVja1dpbmRvd1dpZHRoKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge31cblxuICBvbkNoYW5nZUxhbmcoY3VsdHVyZU5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNlc3Npb25TZXRMYW5ndWFnZShjdWx0dXJlTmFtZSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IENvbmZpZ0dldEFwcENvbmZpZ3VyYXRpb24oKSk7XG4gIH1cblxuICBsb2dvdXQoKSB7XG4gICAgdGhpcy5vYXV0aFNlcnZpY2UubG9nT3V0KCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIG5ldyBOYXZpZ2F0ZShbJy9hY2NvdW50L2xvZ2luJ10sIG51bGwsIHtcbiAgICAgICAgc3RhdGU6IHsgcmVkaXJlY3RVcmw6IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoUm91dGVyU3RhdGUpLnN0YXRlLnVybCB9LFxuICAgICAgfSksXG4gICAgKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBDb25maWdHZXRBcHBDb25maWd1cmF0aW9uKCkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFZpc2libGVSb3V0ZXMocm91dGVzOiBBQlAuRnVsbFJvdXRlW10pIHtcbiAgcmV0dXJuIHJvdXRlcy5yZWR1Y2UoKGFjYywgdmFsKSA9PiB7XG4gICAgaWYgKHZhbC5pbnZpc2libGUpIHJldHVybiBhY2M7XG5cbiAgICBpZiAodmFsLmNoaWxkcmVuICYmIHZhbC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIHZhbC5jaGlsZHJlbiA9IGdldFZpc2libGVSb3V0ZXModmFsLmNoaWxkcmVuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gWy4uLmFjYywgdmFsXTtcbiAgfSwgW10pO1xufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm5/lib/components/layout-empty/layout-empty.component.js b/npm/ng-packs/dist/theme-basic/esm5/lib/components/layout-empty/layout-empty.component.js new file mode 100644 index 00000000000..c4e08d76c85 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm5/lib/components/layout-empty/layout-empty.component.js @@ -0,0 +1,24 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component } from '@angular/core'; +var LayoutEmptyComponent = /** @class */ (function () { + function LayoutEmptyComponent() { + } + // required for dynamic component + LayoutEmptyComponent.type = "empty" /* empty */; + LayoutEmptyComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-layout-empty', + template: "\n Layout-empty\n \n " + }] } + ]; + return LayoutEmptyComponent; +}()); +export { LayoutEmptyComponent }; +if (false) { + /** @type {?} */ + LayoutEmptyComponent.type; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWVtcHR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuYmFzaWMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9sYXlvdXQtZW1wdHkvbGF5b3V0LWVtcHR5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcxQztJQUFBO0lBVUEsQ0FBQzs7SUFEUSx5QkFBSSx1QkFBcUI7O2dCQVRqQyxTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsUUFBUSxFQUFFLDZEQUdUO2lCQUNGOztJQUlELDJCQUFDO0NBQUEsQUFWRCxJQVVDO1NBSFksb0JBQW9COzs7SUFFL0IsMEJBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBlTGF5b3V0VHlwZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FicC1sYXlvdXQtZW1wdHknLFxuICB0ZW1wbGF0ZTogYFxuICAgIExheW91dC1lbXB0eVxuICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgTGF5b3V0RW1wdHlDb21wb25lbnQge1xuICAvLyByZXF1aXJlZCBmb3IgZHluYW1pYyBjb21wb25lbnRcbiAgc3RhdGljIHR5cGUgPSBlTGF5b3V0VHlwZS5lbXB0eTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm5/lib/components/layout/layout.component.js b/npm/ng-packs/dist/theme-basic/esm5/lib/components/layout/layout.component.js new file mode 100644 index 00000000000..a08c8cadbea --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm5/lib/components/layout/layout.component.js @@ -0,0 +1,23 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component } from '@angular/core'; +var LayoutComponent = /** @class */ (function () { + function LayoutComponent() { + this.isCollapsed = false; + } + LayoutComponent.decorators = [ + { type: Component, args: [{ + selector: ' abp-layout', + template: "\n\n
    \n \n
    \n\n\n\n" + }] } + ]; + return LayoutComponent; +}()); +export { LayoutComponent }; +if (false) { + /** @type {?} */ + LayoutComponent.prototype.isCollapsed; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuYmFzaWMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQztJQUFBO1FBS0UsZ0JBQVcsR0FBWSxLQUFLLENBQUM7SUFDL0IsQ0FBQzs7Z0JBTkEsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixvcUJBQXNDO2lCQUN2Qzs7SUFHRCxzQkFBQztDQUFBLEFBTkQsSUFNQztTQUZZLGVBQWU7OztJQUMxQixzQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnIGFicC1sYXlvdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgTGF5b3V0Q29tcG9uZW50IHtcbiAgaXNDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm5/lib/components/profile/profile.component.js b/npm/ng-packs/dist/theme-basic/esm5/lib/components/profile/profile.component.js new file mode 100644 index 00000000000..ebfe787a3d5 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm5/lib/components/profile/profile.component.js @@ -0,0 +1,154 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { ProfileGet, ProfileState, ProfileUpdate } from '@abp/ng.core'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { FormBuilder, Validators } from '@angular/forms'; +import { Select, Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { take, withLatestFrom } from 'rxjs/operators'; +var maxLength = Validators.maxLength, required = Validators.required, email = Validators.email; +var ProfileComponent = /** @class */ (function () { + function ProfileComponent(fb, store) { + this.fb = fb; + this.store = store; + this.visibleChange = new EventEmitter(); + } + Object.defineProperty(ProfileComponent.prototype, "visible", { + get: /** + * @return {?} + */ + function () { + return this._visible; + }, + set: /** + * @param {?} value + * @return {?} + */ + function (value) { + this._visible = value; + this.visibleChange.emit(value); + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + ProfileComponent.prototype.buildForm = /** + * @return {?} + */ + function () { + var _this = this; + this.store + .dispatch(new ProfileGet()) + .pipe(withLatestFrom(this.profile$), take(1)) + .subscribe((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var _b = tslib_1.__read(_a, 2), profile = _b[1]; + _this.form = _this.fb.group({ + userName: [profile.userName, [required, maxLength(256)]], + email: [profile.email, [required, email, maxLength(256)]], + name: [profile.name || '', [maxLength(64)]], + surname: [profile.surname || '', [maxLength(64)]], + phoneNumber: [profile.phoneNumber || '', [maxLength(16)]], + }); + })); + }; + /** + * @return {?} + */ + ProfileComponent.prototype.onSubmit = /** + * @return {?} + */ + function () { + var _this = this; + if (this.form.invalid) + return; + this.store.dispatch(new ProfileUpdate(this.form.value)).subscribe((/** + * @return {?} + */ + function () { + _this.visible = false; + })); + }; + /** + * @return {?} + */ + ProfileComponent.prototype.openModal = /** + * @return {?} + */ + function () { + this.buildForm(); + this.visible = true; + }; + /** + * @param {?} __0 + * @return {?} + */ + ProfileComponent.prototype.ngOnChanges = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var visible = _a.visible; + if (!visible) + return; + if (visible.currentValue) { + this.openModal(); + } + else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + }; + ProfileComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-profile', + template: "\n \n

    {{ 'AbpIdentity::PersonalInfo' | abpLocalization }}

    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n
    \n" + }] } + ]; + /** @nocollapse */ + ProfileComponent.ctorParameters = function () { return [ + { type: FormBuilder }, + { type: Store } + ]; }; + ProfileComponent.propDecorators = { + visible: [{ type: Input }], + visibleChange: [{ type: Output }] + }; + tslib_1.__decorate([ + Select(ProfileState.getProfile), + tslib_1.__metadata("design:type", Observable) + ], ProfileComponent.prototype, "profile$", void 0); + return ProfileComponent; +}()); +export { ProfileComponent }; +if (false) { + /** + * @type {?} + * @protected + */ + ProfileComponent.prototype._visible; + /** @type {?} */ + ProfileComponent.prototype.visibleChange; + /** @type {?} */ + ProfileComponent.prototype.profile$; + /** @type {?} */ + ProfileComponent.prototype.form; + /** + * @type {?} + * @private + */ + ProfileComponent.prototype.fb; + /** + * @type {?} + * @private + */ + ProfileComponent.prototype.store; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLmJhc2ljLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcHJvZmlsZS9wcm9maWxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBVyxVQUFVLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxJQUFBLGdDQUFTLEVBQUUsOEJBQVEsRUFBRSx3QkFBSztBQUVsQztJQXlCRSwwQkFBb0IsRUFBZSxFQUFVLEtBQVk7UUFBckMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQU87UUFQekQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBT2dCLENBQUM7SUFsQjdELHNCQUNJLHFDQUFPOzs7O1FBRFg7WUFFRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkIsQ0FBQzs7Ozs7UUFFRCxVQUFZLEtBQWM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQzs7O09BTEE7Ozs7SUFpQkQsb0NBQVM7OztJQUFUO1FBQUEsaUJBZ0JDO1FBZkMsSUFBSSxDQUFDLEtBQUs7YUFDUCxRQUFRLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQzthQUMxQixJQUFJLENBQ0gsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDN0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSO2FBQ0EsU0FBUzs7OztRQUFDLFVBQUMsRUFBVztnQkFBWCwwQkFBVyxFQUFSLGVBQU87WUFDcEIsS0FBSSxDQUFDLElBQUksR0FBRyxLQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztnQkFDeEIsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEQsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDMUQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7O0lBRUQsbUNBQVE7OztJQUFSO1FBQUEsaUJBTUM7UUFMQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFFOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVM7OztRQUFDO1lBQ2hFLEtBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUVELG9DQUFTOzs7SUFBVDtRQUNFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDOzs7OztJQUVELHNDQUFXOzs7O0lBQVgsVUFBWSxFQUEwQjtZQUF4QixvQkFBTztRQUNuQixJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFFckIsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNsQjthQUFNLElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN6RCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztTQUN0QjtJQUNILENBQUM7O2dCQWxFRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLGltRUFBdUM7aUJBQ3hDOzs7O2dCQVZRLFdBQVc7Z0JBQ0gsS0FBSzs7OzBCQWFuQixLQUFLO2dDQVVMLE1BQU07O0lBSVA7UUFEQyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQzswQ0FDdEIsVUFBVTtzREFBbUI7SUE4Q3pDLHVCQUFDO0NBQUEsQUFuRUQsSUFtRUM7U0EvRFksZ0JBQWdCOzs7Ozs7SUFDM0Isb0NBQW1COztJQVluQix5Q0FDNEM7O0lBRTVDLG9DQUN1Qzs7SUFFdkMsZ0NBQWdCOzs7OztJQUVKLDhCQUF1Qjs7Ozs7SUFBRSxpQ0FBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9maWxlLCBQcm9maWxlR2V0LCBQcm9maWxlU3RhdGUsIFByb2ZpbGVVcGRhdGUgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuY29uc3QgeyBtYXhMZW5ndGgsIHJlcXVpcmVkLCBlbWFpbCB9ID0gVmFsaWRhdG9ycztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWJwLXByb2ZpbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZmlsZS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFByb2ZpbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBwcm90ZWN0ZWQgX3Zpc2libGU7XG5cbiAgQElucHV0KClcbiAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gIH1cblxuICBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Zpc2libGUgPSB2YWx1ZTtcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBAU2VsZWN0KFByb2ZpbGVTdGF0ZS5nZXRQcm9maWxlKVxuICBwcm9maWxlJDogT2JzZXJ2YWJsZTxQcm9maWxlLlJlc3BvbnNlPjtcblxuICBmb3JtOiBGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIGJ1aWxkRm9ybSgpIHtcbiAgICB0aGlzLnN0b3JlXG4gICAgICAuZGlzcGF0Y2gobmV3IFByb2ZpbGVHZXQoKSlcbiAgICAgIC5waXBlKFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnByb2ZpbGUkKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFssIHByb2ZpbGVdKSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgIHVzZXJOYW1lOiBbcHJvZmlsZS51c2VyTmFtZSwgW3JlcXVpcmVkLCBtYXhMZW5ndGgoMjU2KV1dLFxuICAgICAgICAgIGVtYWlsOiBbcHJvZmlsZS5lbWFpbCwgW3JlcXVpcmVkLCBlbWFpbCwgbWF4TGVuZ3RoKDI1NildXSxcbiAgICAgICAgICBuYW1lOiBbcHJvZmlsZS5uYW1lIHx8ICcnLCBbbWF4TGVuZ3RoKDY0KV1dLFxuICAgICAgICAgIHN1cm5hbWU6IFtwcm9maWxlLnN1cm5hbWUgfHwgJycsIFttYXhMZW5ndGgoNjQpXV0sXG4gICAgICAgICAgcGhvbmVOdW1iZXI6IFtwcm9maWxlLnBob25lTnVtYmVyIHx8ICcnLCBbbWF4TGVuZ3RoKDE2KV1dLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgb25TdWJtaXQoKSB7XG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSByZXR1cm47XG5cbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBQcm9maWxlVXBkYXRlKHRoaXMuZm9ybS52YWx1ZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIG9wZW5Nb2RhbCgpIHtcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xuICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyh7IHZpc2libGUgfTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICghdmlzaWJsZSkgcmV0dXJuO1xuXG4gICAgaWYgKHZpc2libGUuY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLm9wZW5Nb2RhbCgpO1xuICAgIH0gZWxzZSBpZiAodmlzaWJsZS5jdXJyZW50VmFsdWUgPT09IGZhbHNlICYmIHRoaXMudmlzaWJsZSkge1xuICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm5/lib/models/index.js b/npm/ng-packs/dist/theme-basic/esm5/lib/models/index.js new file mode 100644 index 00000000000..370665b7b0d --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm5/lib/models/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export {} from './layout'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLmJhc2ljLyIsInNvdXJjZXMiOlsibGliL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsZUFBYyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xheW91dCc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm5/lib/models/layout.js b/npm/ng-packs/dist/theme-basic/esm5/lib/models/layout.js new file mode 100644 index 00000000000..d93212a06da --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm5/lib/models/layout.js @@ -0,0 +1,30 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var Layout; +(function (Layout) { + /** + * @record + */ + function State() { } + Layout.State = State; + if (false) { + /** @type {?} */ + State.prototype.navigationElements; + } + /** + * @record + */ + function NavigationElement() { } + Layout.NavigationElement = NavigationElement; + if (false) { + /** @type {?} */ + NavigationElement.prototype.name; + /** @type {?} */ + NavigationElement.prototype.element; + /** @type {?|undefined} */ + NavigationElement.prototype.order; + } +})(Layout || (Layout = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5iYXNpYy8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvbGF5b3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxNQUFNLEtBQVcsTUFBTSxDQVV0QjtBQVZELFdBQWlCLE1BQU07Ozs7SUFDckIsb0JBRUM7Ozs7UUFEQyxtQ0FBd0M7Ozs7O0lBRzFDLGdDQUlDOzs7O1FBSEMsaUNBQWE7O1FBQ2Isb0NBQTBCOztRQUMxQixrQ0FBZTs7QUFFbkIsQ0FBQyxFQVZnQixNQUFNLEtBQU4sTUFBTSxRQVV0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgTGF5b3V0IHtcbiAgZXhwb3J0IGludGVyZmFjZSBTdGF0ZSB7XG4gICAgbmF2aWdhdGlvbkVsZW1lbnRzOiBOYXZpZ2F0aW9uRWxlbWVudFtdO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBOYXZpZ2F0aW9uRWxlbWVudCB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGVsZW1lbnQ6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgb3JkZXI/OiBudW1iZXI7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm5/lib/states/index.js b/npm/ng-packs/dist/theme-basic/esm5/lib/states/index.js new file mode 100644 index 00000000000..0e85d60b8b7 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm5/lib/states/index.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { LayoutState } from "./layout.state"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLmJhc2ljLyIsInNvdXJjZXMiOlsibGliL3N0YXRlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsNEJBQWMsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9sYXlvdXQuc3RhdGVcIjtcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm5/lib/states/layout.state.js b/npm/ng-packs/dist/theme-basic/esm5/lib/states/layout.state.js new file mode 100644 index 00000000000..f6719a7ddb0 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm5/lib/states/layout.state.js @@ -0,0 +1,131 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { State, Action, Selector } from '@ngxs/store'; +import { LayoutAddNavigationElement, LayoutRemoveNavigationElementByName } from '../actions/layout.actions'; +import snq from 'snq'; +var LayoutState = /** @class */ (function () { + function LayoutState() { + } + /** + * @param {?} __0 + * @return {?} + */ + LayoutState.getNavigationElements = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var navigationElements = _a.navigationElements; + return navigationElements; + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + LayoutState.prototype.layoutAddAction = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var getState = _a.getState, patchState = _a.patchState; + var _c = _b.payload, payload = _c === void 0 ? [] : _c; + var navigationElements = getState().navigationElements; + if (!Array.isArray(payload)) { + payload = [payload]; + } + if (navigationElements.length) { + payload = snq((/** + * @return {?} + */ + function () { + return ((/** @type {?} */ (payload))).filter((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var name = _a.name; + return navigationElements.findIndex((/** + * @param {?} nav + * @return {?} + */ + function (nav) { return nav.name === name; })) < 0; + })); + }), []); + } + if (!payload.length) + return; + navigationElements = tslib_1.__spread(navigationElements, payload).map((/** + * @param {?} element + * @return {?} + */ + function (element) { return (tslib_1.__assign({}, element, { order: element.order || 99 })); })) + .sort((/** + * @param {?} a + * @param {?} b + * @return {?} + */ + function (a, b) { return a.order - b.order; })); + return patchState({ + navigationElements: navigationElements, + }); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + LayoutState.prototype.layoutRemoveAction = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var getState = _a.getState, patchState = _a.patchState; + var name = _b.name; + var navigationElements = getState().navigationElements; + /** @type {?} */ + var index = navigationElements.findIndex((/** + * @param {?} element + * @return {?} + */ + function (element) { return element.name === name; })); + if (index > -1) { + navigationElements = navigationElements.splice(index, 1); + } + return patchState({ + navigationElements: navigationElements, + }); + }; + tslib_1.__decorate([ + Action(LayoutAddNavigationElement), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, LayoutAddNavigationElement]), + tslib_1.__metadata("design:returntype", void 0) + ], LayoutState.prototype, "layoutAddAction", null); + tslib_1.__decorate([ + Action(LayoutRemoveNavigationElementByName), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, LayoutRemoveNavigationElementByName]), + tslib_1.__metadata("design:returntype", void 0) + ], LayoutState.prototype, "layoutRemoveAction", null); + tslib_1.__decorate([ + Selector(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object]), + tslib_1.__metadata("design:returntype", Array) + ], LayoutState, "getNavigationElements", null); + LayoutState = tslib_1.__decorate([ + State({ + name: 'LayoutState', + defaults: (/** @type {?} */ ({ navigationElements: [] })), + }) + ], LayoutState); + return LayoutState; +}()); +export { LayoutState }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LnN0YXRlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5iYXNpYy8iLCJzb3VyY2VzIjpbImxpYi9zdGF0ZXMvbGF5b3V0LnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWdCLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUc1RyxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUM7OztJQTBEdEIsQ0FBQzs7Ozs7SUFsRFEsaUNBQXFCOzs7O0lBQTVCLFVBQTZCLEVBQW9DO1lBQWxDLDBDQUFrQjtRQUMvQyxPQUFPLGtCQUFrQixDQUFDO0lBQzVCLENBQUM7Ozs7OztJQUdELHFDQUFlOzs7OztJQUFmLFVBQWdCLEVBQW9ELEVBQUUsRUFBNEM7WUFBaEcsc0JBQVEsRUFBRSwwQkFBVTtZQUFrQyxlQUFZLEVBQVosaUNBQVk7UUFDNUUsSUFBQSxrREFBa0I7UUFFeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDM0IsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDckI7UUFFRCxJQUFJLGtCQUFrQixDQUFDLE1BQU0sRUFBRTtZQUM3QixPQUFPLEdBQUcsR0FBRzs7O1lBQ1g7Z0JBQ0UsT0FBQSxDQUFDLG1CQUFBLE9BQU8sRUFBOEIsQ0FBQyxDQUFDLE1BQU07Ozs7Z0JBQzVDLFVBQUMsRUFBUTt3QkFBTixjQUFJO29CQUFPLE9BQUEsa0JBQWtCLENBQUMsU0FBUzs7OztvQkFBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFqQixDQUFpQixFQUFDLEdBQUcsQ0FBQztnQkFBMUQsQ0FBMEQsRUFDekU7WUFGRCxDQUVDLEdBQ0gsRUFBRSxDQUNILENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtZQUFFLE9BQU87UUFFNUIsa0JBQWtCLEdBQUcsaUJBQUksa0JBQWtCLEVBQUssT0FBTyxFQUNwRCxHQUFHOzs7O1FBQUMsVUFBQSxPQUFPLElBQUksT0FBQSxzQkFBTSxPQUFPLElBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxJQUFHLEVBQTVDLENBQTRDLEVBQUM7YUFDNUQsSUFBSTs7Ozs7UUFBQyxVQUFDLENBQUMsRUFBRSxDQUFDLElBQUssT0FBQSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQWpCLENBQWlCLEVBQUMsQ0FBQztRQUVyQyxPQUFPLFVBQVUsQ0FBQztZQUNoQixrQkFBa0Isb0JBQUE7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7O0lBR0Qsd0NBQWtCOzs7OztJQUFsQixVQUNFLEVBQW9ELEVBQ3BELEVBQTZDO1lBRDNDLHNCQUFRLEVBQUUsMEJBQVU7WUFDcEIsY0FBSTtRQUVBLElBQUEsa0RBQWtCOztZQUVsQixLQUFLLEdBQUcsa0JBQWtCLENBQUMsU0FBUzs7OztRQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsT0FBTyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQXJCLENBQXFCLEVBQUM7UUFFNUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDZCxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzFEO1FBRUQsT0FBTyxVQUFVLENBQUM7WUFDaEIsa0JBQWtCLG9CQUFBO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUE1Q0Q7UUFEQyxNQUFNLENBQUMsMEJBQTBCLENBQUM7O3lEQUNxRCwwQkFBMEI7O3NEQTBCakg7SUFHRDtRQURDLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQzs7eURBR2hDLG1DQUFtQzs7eURBYTlDO0lBakREO1FBREMsUUFBUSxFQUFFOzs7O2tEQUdWO0lBSlUsV0FBVztRQUp2QixLQUFLLENBQWU7WUFDbkIsSUFBSSxFQUFFLGFBQWE7WUFDbkIsUUFBUSxFQUFFLG1CQUFBLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLEVBQWdCO1NBQ3JELENBQUM7T0FDVyxXQUFXLENBb0R2QjtJQUFELGtCQUFDO0NBQUEsSUFBQTtTQXBEWSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhdGUsIEFjdGlvbiwgU3RhdGVDb250ZXh0LCBTZWxlY3RvciB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IExheW91dEFkZE5hdmlnYXRpb25FbGVtZW50LCBMYXlvdXRSZW1vdmVOYXZpZ2F0aW9uRWxlbWVudEJ5TmFtZSB9IGZyb20gJy4uL2FjdGlvbnMvbGF5b3V0LmFjdGlvbnMnO1xuaW1wb3J0IHsgTGF5b3V0IH0gZnJvbSAnLi4vbW9kZWxzL2xheW91dCc7XG5pbXBvcnQgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHNucSBmcm9tICdzbnEnO1xuXG5AU3RhdGU8TGF5b3V0LlN0YXRlPih7XG4gIG5hbWU6ICdMYXlvdXRTdGF0ZScsXG4gIGRlZmF1bHRzOiB7IG5hdmlnYXRpb25FbGVtZW50czogW10gfSBhcyBMYXlvdXQuU3RhdGUsXG59KVxuZXhwb3J0IGNsYXNzIExheW91dFN0YXRlIHtcbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldE5hdmlnYXRpb25FbGVtZW50cyh7IG5hdmlnYXRpb25FbGVtZW50cyB9OiBMYXlvdXQuU3RhdGUpOiBMYXlvdXQuTmF2aWdhdGlvbkVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIG5hdmlnYXRpb25FbGVtZW50cztcbiAgfVxuXG4gIEBBY3Rpb24oTGF5b3V0QWRkTmF2aWdhdGlvbkVsZW1lbnQpXG4gIGxheW91dEFkZEFjdGlvbih7IGdldFN0YXRlLCBwYXRjaFN0YXRlIH06IFN0YXRlQ29udGV4dDxMYXlvdXQuU3RhdGU+LCB7IHBheWxvYWQgPSBbXSB9OiBMYXlvdXRBZGROYXZpZ2F0aW9uRWxlbWVudCkge1xuICAgIGxldCB7IG5hdmlnYXRpb25FbGVtZW50cyB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGlmICghQXJyYXkuaXNBcnJheShwYXlsb2FkKSkge1xuICAgICAgcGF5bG9hZCA9IFtwYXlsb2FkXTtcbiAgICB9XG5cbiAgICBpZiAobmF2aWdhdGlvbkVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgcGF5bG9hZCA9IHNucShcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICAocGF5bG9hZCBhcyBMYXlvdXQuTmF2aWdhdGlvbkVsZW1lbnRbXSkuZmlsdGVyKFxuICAgICAgICAgICAgKHsgbmFtZSB9KSA9PiBuYXZpZ2F0aW9uRWxlbWVudHMuZmluZEluZGV4KG5hdiA9PiBuYXYubmFtZSA9PT0gbmFtZSkgPCAwLFxuICAgICAgICAgICksXG4gICAgICAgIFtdLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIXBheWxvYWQubGVuZ3RoKSByZXR1cm47XG5cbiAgICBuYXZpZ2F0aW9uRWxlbWVudHMgPSBbLi4ubmF2aWdhdGlvbkVsZW1lbnRzLCAuLi5wYXlsb2FkXVxuICAgICAgLm1hcChlbGVtZW50ID0+ICh7IC4uLmVsZW1lbnQsIG9yZGVyOiBlbGVtZW50Lm9yZGVyIHx8IDk5IH0pKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKTtcblxuICAgIHJldHVybiBwYXRjaFN0YXRlKHtcbiAgICAgIG5hdmlnYXRpb25FbGVtZW50cyxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTGF5b3V0UmVtb3ZlTmF2aWdhdGlvbkVsZW1lbnRCeU5hbWUpXG4gIGxheW91dFJlbW92ZUFjdGlvbihcbiAgICB7IGdldFN0YXRlLCBwYXRjaFN0YXRlIH06IFN0YXRlQ29udGV4dDxMYXlvdXQuU3RhdGU+LFxuICAgIHsgbmFtZSB9OiBMYXlvdXRSZW1vdmVOYXZpZ2F0aW9uRWxlbWVudEJ5TmFtZSxcbiAgKSB7XG4gICAgbGV0IHsgbmF2aWdhdGlvbkVsZW1lbnRzIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgaW5kZXggPSBuYXZpZ2F0aW9uRWxlbWVudHMuZmluZEluZGV4KGVsZW1lbnQgPT4gZWxlbWVudC5uYW1lID09PSBuYW1lKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICBuYXZpZ2F0aW9uRWxlbWVudHMgPSBuYXZpZ2F0aW9uRWxlbWVudHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0Y2hTdGF0ZSh7XG4gICAgICBuYXZpZ2F0aW9uRWxlbWVudHMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm5/lib/theme-basic.module.js b/npm/ng-packs/dist/theme-basic/esm5/lib/theme-basic.module.js new file mode 100644 index 00000000000..047d9096210 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm5/lib/theme-basic.module.js @@ -0,0 +1,44 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { CoreModule } from '@abp/ng.core'; +import { NgModule } from '@angular/core'; +import { NgbCollapseModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { ChangePasswordComponent } from './components/change-password/change-password.component'; +import { LayoutAccountComponent } from './components/layout-account/layout-account.component'; +import { LayoutApplicationComponent } from './components/layout-application/layout-application.component'; +import { LayoutEmptyComponent } from './components/layout-empty/layout-empty.component'; +import { LayoutComponent } from './components/layout/layout.component'; +import { ProfileComponent } from './components/profile/profile.component'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { ToastModule } from 'primeng/toast'; +import { NgxValidateCoreModule } from '@ngx-validate/core'; +import { NgxsModule } from '@ngxs/store'; +import { LayoutState } from './states/layout.state'; +/** @type {?} */ +export var LAYOUTS = [LayoutApplicationComponent, LayoutAccountComponent, LayoutEmptyComponent]; +var ThemeBasicModule = /** @class */ (function () { + function ThemeBasicModule() { + } + ThemeBasicModule.decorators = [ + { type: NgModule, args: [{ + declarations: tslib_1.__spread(LAYOUTS, [LayoutComponent, ChangePasswordComponent, ProfileComponent]), + imports: [ + CoreModule, + ThemeSharedModule, + NgbCollapseModule, + NgbDropdownModule, + ToastModule, + NgxValidateCoreModule, + NgxsModule.forFeature([LayoutState]), + ], + exports: tslib_1.__spread(LAYOUTS), + entryComponents: tslib_1.__spread(LAYOUTS), + },] } + ]; + return ThemeBasicModule; +}()); +export { ThemeBasicModule }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtYmFzaWMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5iYXNpYy8iLCJzb3VyY2VzIjpbImxpYi90aGVtZS1iYXNpYy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDakcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDOUYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDMUcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDeEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRXBELE1BQU0sS0FBTyxPQUFPLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsQ0FBQztBQUVqRztJQUFBO0lBYytCLENBQUM7O2dCQWQvQixRQUFRLFNBQUM7b0JBQ1IsWUFBWSxtQkFBTSxPQUFPLEdBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFDO29CQUN0RixPQUFPLEVBQUU7d0JBQ1AsVUFBVTt3QkFDVixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQixXQUFXO3dCQUNYLHFCQUFxQjt3QkFDckIsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO3FCQUNyQztvQkFDRCxPQUFPLG1CQUFNLE9BQU8sQ0FBQztvQkFDckIsZUFBZSxtQkFBTSxPQUFPLENBQUM7aUJBQzlCOztJQUM4Qix1QkFBQztDQUFBLEFBZGhDLElBY2dDO1NBQW5CLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYkNvbGxhcHNlTW9kdWxlLCBOZ2JEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IENoYW5nZVBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NoYW5nZS1wYXNzd29yZC9jaGFuZ2UtcGFzc3dvcmQuY29tcG9uZW50JztcbmltcG9ydCB7IExheW91dEFjY291bnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGF5b3V0LWFjY291bnQvbGF5b3V0LWFjY291bnQuY29tcG9uZW50JztcbmltcG9ydCB7IExheW91dEFwcGxpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xheW91dC1hcHBsaWNhdGlvbi9sYXlvdXQtYXBwbGljYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IExheW91dEVtcHR5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xheW91dC1lbXB0eS9sYXlvdXQtZW1wdHkuY29tcG9uZW50JztcbmltcG9ydCB7IExheW91dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9maWxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlbWVTaGFyZWRNb2R1bGUgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyBUb2FzdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9hc3QnO1xuaW1wb3J0IHsgTmd4VmFsaWRhdGVDb3JlTW9kdWxlIH0gZnJvbSAnQG5neC12YWxpZGF0ZS9jb3JlJztcbmltcG9ydCB7IE5neHNNb2R1bGUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBMYXlvdXRTdGF0ZSB9IGZyb20gJy4vc3RhdGVzL2xheW91dC5zdGF0ZSc7XG5cbmV4cG9ydCBjb25zdCBMQVlPVVRTID0gW0xheW91dEFwcGxpY2F0aW9uQ29tcG9uZW50LCBMYXlvdXRBY2NvdW50Q29tcG9uZW50LCBMYXlvdXRFbXB0eUNvbXBvbmVudF07XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogWy4uLkxBWU9VVFMsIExheW91dENvbXBvbmVudCwgQ2hhbmdlUGFzc3dvcmRDb21wb25lbnQsIFByb2ZpbGVDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29yZU1vZHVsZSxcbiAgICBUaGVtZVNoYXJlZE1vZHVsZSxcbiAgICBOZ2JDb2xsYXBzZU1vZHVsZSxcbiAgICBOZ2JEcm9wZG93bk1vZHVsZSxcbiAgICBUb2FzdE1vZHVsZSxcbiAgICBOZ3hWYWxpZGF0ZUNvcmVNb2R1bGUsXG4gICAgTmd4c01vZHVsZS5mb3JGZWF0dXJlKFtMYXlvdXRTdGF0ZV0pLFxuICBdLFxuICBleHBvcnRzOiBbLi4uTEFZT1VUU10sXG4gIGVudHJ5Q29tcG9uZW50czogWy4uLkxBWU9VVFNdLFxufSlcbmV4cG9ydCBjbGFzcyBUaGVtZUJhc2ljTW9kdWxlIHt9XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/esm5/public-api.js b/npm/ng-packs/dist/theme-basic/esm5/public-api.js new file mode 100644 index 00000000000..0ce06fadd6a --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/esm5/public-api.js @@ -0,0 +1,13 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/* + * Public API Surface of theme-basic + */ +export { LAYOUTS, ThemeBasicModule } from './lib/theme-basic.module'; +export { LayoutAddNavigationElement, LayoutRemoveNavigationElementByName } from './lib/actions'; +export { LayoutAccountComponent, LayoutApplicationComponent, LayoutEmptyComponent } from './lib/components'; +export {} from './lib/models'; +export { LayoutState } from './lib/states'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuYmFzaWMvIiwic291cmNlcyI6WyJwdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwwQ0FBYywwQkFBMEIsQ0FBQztBQUN6QyxnRkFBYyxlQUFlLENBQUM7QUFDOUIseUZBQWMsa0JBQWtCLENBQUM7QUFDakMsZUFBYyxjQUFjLENBQUM7QUFDN0IsNEJBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB0aGVtZS1iYXNpY1xuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RoZW1lLWJhc2ljLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY3Rpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXRlcyc7XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/fesm2015/abp-ng.theme.basic.js b/npm/ng-packs/dist/theme-basic/fesm2015/abp-ng.theme.basic.js new file mode 100644 index 00000000000..ddc5f1e86f2 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/fesm2015/abp-ng.theme.basic.js @@ -0,0 +1,667 @@ +import { ProfileChangePassword, SessionState, takeUntilDestroy, SessionSetLanguage, ConfigGetAppConfiguration, ConfigState, ProfileGet, ProfileUpdate, ProfileState, CoreModule } from '@abp/ng.core'; +import { EventEmitter, Component, Input, Output, ViewChild, TemplateRef, ViewChildren, NgModule } from '@angular/core'; +import { NgbDropdown, NgbCollapseModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { FormBuilder, Validators } from '@angular/forms'; +import { validatePassword, comparePasswords, NgxValidateCoreModule } from '@ngx-validate/core'; +import { Store, Action, Selector, State, Select, NgxsModule } from '@ngxs/store'; +import { __decorate, __metadata } from 'tslib'; +import { Navigate, RouterState } from '@ngxs/router-plugin'; +import { OAuthService } from 'angular-oauth2-oidc'; +import compare from 'just-compare'; +import { fromEvent, Observable } from 'rxjs'; +import { map, filter, debounceTime, withLatestFrom, take } from 'rxjs/operators'; +import snq from 'snq'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { ToastModule } from 'primeng/toast'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +const { minLength, required } = Validators; +class ChangePasswordComponent { + /** + * @param {?} fb + * @param {?} store + */ + constructor(fb, store) { + this.fb = fb; + this.store = store; + this.visibleChange = new EventEmitter(); + } + /** + * @return {?} + */ + get visible() { + return this._visible; + } + /** + * @param {?} value + * @return {?} + */ + set visible(value) { + this._visible = value; + this.visibleChange.emit(value); + } + /** + * @return {?} + */ + ngOnInit() { + this.form = this.fb.group({ + password: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]], + newPassword: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]], + repeatNewPassword: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]], + }, { + validators: [comparePasswords(['newPassword', 'repeatNewPassword'])], + }); + } + /** + * @return {?} + */ + onSubmit() { + if (this.form.invalid) + return; + this.store + .dispatch(new ProfileChangePassword({ + currentPassword: this.form.get('password').value, + newPassword: this.form.get('newPassword').value, + })) + .subscribe((/** + * @return {?} + */ + () => { + this.visible = false; + })); + } + /** + * @return {?} + */ + openModal() { + this.visible = true; + } + /** + * @param {?} __0 + * @return {?} + */ + ngOnChanges({ visible }) { + if (!visible) + return; + if (visible.currentValue) { + this.openModal(); + } + else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + } +} +ChangePasswordComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-change-password', + template: "\n \n

    {{ 'AbpIdentity::ChangePassword' | abpLocalization }}

    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n
    \n" + }] } +]; +/** @nocollapse */ +ChangePasswordComponent.ctorParameters = () => [ + { type: FormBuilder }, + { type: Store } +]; +ChangePasswordComponent.propDecorators = { + visible: [{ type: Input }], + visibleChange: [{ type: Output }], + modalContent: [{ type: ViewChild, args: ['modalContent', { static: false },] }] +}; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class LayoutAccountComponent { + constructor() { + this.isCollapsed = false; + } +} +// required for dynamic component +LayoutAccountComponent.type = "account" /* account */; +LayoutAccountComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-layout-account', + template: "\n \n\n \n \n \n \n \n\n" + }] } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class LayoutAddNavigationElement { + /** + * @param {?} payload + */ + constructor(payload) { + this.payload = payload; + } +} +LayoutAddNavigationElement.type = '[Layout] Add Navigation Element'; +class LayoutRemoveNavigationElementByName { + /** + * @param {?} name + */ + constructor(name) { + this.name = name; + } +} +LayoutRemoveNavigationElementByName.type = '[Layout] Remove Navigation ElementByName'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +let LayoutState = class LayoutState { + /** + * @param {?} __0 + * @return {?} + */ + static getNavigationElements({ navigationElements }) { + return navigationElements; + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + layoutAddAction({ getState, patchState }, { payload = [] }) { + let { navigationElements } = getState(); + if (!Array.isArray(payload)) { + payload = [payload]; + } + if (navigationElements.length) { + payload = snq((/** + * @return {?} + */ + () => ((/** @type {?} */ (payload))).filter((/** + * @param {?} __0 + * @return {?} + */ + ({ name }) => navigationElements.findIndex((/** + * @param {?} nav + * @return {?} + */ + nav => nav.name === name)) < 0))), []); + } + if (!payload.length) + return; + navigationElements = [...navigationElements, ...payload] + .map((/** + * @param {?} element + * @return {?} + */ + element => (Object.assign({}, element, { order: element.order || 99 })))) + .sort((/** + * @param {?} a + * @param {?} b + * @return {?} + */ + (a, b) => a.order - b.order)); + return patchState({ + navigationElements, + }); + } + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + layoutRemoveAction({ getState, patchState }, { name }) { + let { navigationElements } = getState(); + /** @type {?} */ + const index = navigationElements.findIndex((/** + * @param {?} element + * @return {?} + */ + element => element.name === name)); + if (index > -1) { + navigationElements = navigationElements.splice(index, 1); + } + return patchState({ + navigationElements, + }); + } +}; +__decorate([ + Action(LayoutAddNavigationElement), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, LayoutAddNavigationElement]), + __metadata("design:returntype", void 0) +], LayoutState.prototype, "layoutAddAction", null); +__decorate([ + Action(LayoutRemoveNavigationElementByName), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, LayoutRemoveNavigationElementByName]), + __metadata("design:returntype", void 0) +], LayoutState.prototype, "layoutRemoveAction", null); +__decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Array) +], LayoutState, "getNavigationElements", null); +LayoutState = __decorate([ + State({ + name: 'LayoutState', + defaults: (/** @type {?} */ ({ navigationElements: [] })), + }) +], LayoutState); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class LayoutApplicationComponent { + /** + * @param {?} store + * @param {?} oauthService + */ + constructor(store, oauthService) { + this.store = store; + this.oauthService = oauthService; + this.isOpenChangePassword = false; + this.isOpenProfile = false; + this.rightPartElements = []; + this.trackByFn = (/** + * @param {?} _ + * @param {?} item + * @return {?} + */ + (_, item) => item.name); + this.trackElementByFn = (/** + * @param {?} _ + * @param {?} element + * @return {?} + */ + (_, element) => element); + } + /** + * @return {?} + */ + get visibleRoutes$() { + return this.routes$.pipe(map((/** + * @param {?} routes + * @return {?} + */ + routes => getVisibleRoutes(routes)))); + } + /** + * @return {?} + */ + get defaultLanguage$() { + return this.languages$.pipe(map((/** + * @param {?} languages + * @return {?} + */ + languages => snq((/** + * @return {?} + */ + () => languages.find((/** + * @param {?} lang + * @return {?} + */ + lang => lang.cultureName === this.selectedLangCulture)).displayName))), '')); + } + /** + * @return {?} + */ + get dropdownLanguages$() { + return this.languages$.pipe(map((/** + * @param {?} languages + * @return {?} + */ + languages => snq((/** + * @return {?} + */ + () => languages.filter((/** + * @param {?} lang + * @return {?} + */ + lang => lang.cultureName !== this.selectedLangCulture))))), [])); + } + /** + * @return {?} + */ + get selectedLangCulture() { + return this.store.selectSnapshot(SessionState.getLanguage); + } + /** + * @private + * @return {?} + */ + checkWindowWidth() { + setTimeout((/** + * @return {?} + */ + () => { + this.navbarRootDropdowns.forEach((/** + * @param {?} item + * @return {?} + */ + item => { + item.close(); + })); + if (window.innerWidth < 768) { + this.isDropdownChildDynamic = false; + } + else { + this.isDropdownChildDynamic = true; + } + }), 0); + } + /** + * @return {?} + */ + ngAfterViewInit() { + /** @type {?} */ + const navigations = this.store.selectSnapshot(LayoutState.getNavigationElements).map((/** + * @param {?} __0 + * @return {?} + */ + ({ name }) => name)); + if (navigations.indexOf('LanguageRef') < 0) { + this.store.dispatch(new LayoutAddNavigationElement([ + { element: this.languageRef, order: 4, name: 'LanguageRef' }, + { element: this.currentUserRef, order: 5, name: 'CurrentUserRef' }, + ])); + } + this.navElements$ + .pipe(map((/** + * @param {?} elements + * @return {?} + */ + elements => elements.map((/** + * @param {?} __0 + * @return {?} + */ + ({ element }) => element)))), filter((/** + * @param {?} elements + * @return {?} + */ + elements => !compare(elements, this.rightPartElements))), takeUntilDestroy(this)) + .subscribe((/** + * @param {?} elements + * @return {?} + */ + elements => { + setTimeout((/** + * @return {?} + */ + () => (this.rightPartElements = elements)), 0); + })); + this.checkWindowWidth(); + fromEvent(window, 'resize') + .pipe(takeUntilDestroy(this), debounceTime(250)) + .subscribe((/** + * @return {?} + */ + () => { + this.checkWindowWidth(); + })); + } + /** + * @return {?} + */ + ngOnDestroy() { } + /** + * @param {?} cultureName + * @return {?} + */ + onChangeLang(cultureName) { + this.store.dispatch(new SessionSetLanguage(cultureName)); + this.store.dispatch(new ConfigGetAppConfiguration()); + } + /** + * @return {?} + */ + logout() { + this.oauthService.logOut(); + this.store.dispatch(new Navigate(['/account/login'], null, { + state: { redirectUrl: this.store.selectSnapshot(RouterState).state.url }, + })); + this.store.dispatch(new ConfigGetAppConfiguration()); + } +} +// required for dynamic component +LayoutApplicationComponent.type = "application" /* application */; +LayoutApplicationComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-layout-application', + template: "\n \n\n
      \n \n
    \n
    \n\n\n
  • \n \n {{ defaultLanguage$ | async }}\n \n
    \n {{ lang?.displayName }}\n
    \n
  • \n
    \n\n\n
  • \n \n {{ (currentUser$ | async)?.userName }}\n \n \n
  • \n\n \n\n \n
    \n" + }] } +]; +/** @nocollapse */ +LayoutApplicationComponent.ctorParameters = () => [ + { type: Store }, + { type: OAuthService } +]; +LayoutApplicationComponent.propDecorators = { + currentUserRef: [{ type: ViewChild, args: ['currentUser', { static: false, read: TemplateRef },] }], + languageRef: [{ type: ViewChild, args: ['language', { static: false, read: TemplateRef },] }], + navbarRootDropdowns: [{ type: ViewChildren, args: ['navbarRootDropdown', { read: NgbDropdown },] }] +}; +__decorate([ + Select(ConfigState.getOne('routes')), + __metadata("design:type", Observable) +], LayoutApplicationComponent.prototype, "routes$", void 0); +__decorate([ + Select(ConfigState.getOne('currentUser')), + __metadata("design:type", Observable) +], LayoutApplicationComponent.prototype, "currentUser$", void 0); +__decorate([ + Select(ConfigState.getDeep('localization.languages')), + __metadata("design:type", Observable) +], LayoutApplicationComponent.prototype, "languages$", void 0); +__decorate([ + Select(LayoutState.getNavigationElements), + __metadata("design:type", Observable) +], LayoutApplicationComponent.prototype, "navElements$", void 0); +/** + * @param {?} routes + * @return {?} + */ +function getVisibleRoutes(routes) { + return routes.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + (acc, val) => { + if (val.invisible) + return acc; + if (val.children && val.children.length) { + val.children = getVisibleRoutes(val.children); + } + return [...acc, val]; + }), []); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class LayoutEmptyComponent { +} +// required for dynamic component +LayoutEmptyComponent.type = "empty" /* empty */; +LayoutEmptyComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-layout-empty', + template: ` + Layout-empty + + ` + }] } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class LayoutComponent { + constructor() { + this.isCollapsed = false; + } +} +LayoutComponent.decorators = [ + { type: Component, args: [{ + selector: ' abp-layout', + template: "\n\n
    \n \n
    \n\n\n\n" + }] } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +const { maxLength, required: required$1, email } = Validators; +class ProfileComponent { + /** + * @param {?} fb + * @param {?} store + */ + constructor(fb, store) { + this.fb = fb; + this.store = store; + this.visibleChange = new EventEmitter(); + } + /** + * @return {?} + */ + get visible() { + return this._visible; + } + /** + * @param {?} value + * @return {?} + */ + set visible(value) { + this._visible = value; + this.visibleChange.emit(value); + } + /** + * @return {?} + */ + buildForm() { + this.store + .dispatch(new ProfileGet()) + .pipe(withLatestFrom(this.profile$), take(1)) + .subscribe((/** + * @param {?} __0 + * @return {?} + */ + ([, profile]) => { + this.form = this.fb.group({ + userName: [profile.userName, [required$1, maxLength(256)]], + email: [profile.email, [required$1, email, maxLength(256)]], + name: [profile.name || '', [maxLength(64)]], + surname: [profile.surname || '', [maxLength(64)]], + phoneNumber: [profile.phoneNumber || '', [maxLength(16)]], + }); + })); + } + /** + * @return {?} + */ + onSubmit() { + if (this.form.invalid) + return; + this.store.dispatch(new ProfileUpdate(this.form.value)).subscribe((/** + * @return {?} + */ + () => { + this.visible = false; + })); + } + /** + * @return {?} + */ + openModal() { + this.buildForm(); + this.visible = true; + } + /** + * @param {?} __0 + * @return {?} + */ + ngOnChanges({ visible }) { + if (!visible) + return; + if (visible.currentValue) { + this.openModal(); + } + else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + } +} +ProfileComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-profile', + template: "\n \n

    {{ 'AbpIdentity::PersonalInfo' | abpLocalization }}

    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n
    \n" + }] } +]; +/** @nocollapse */ +ProfileComponent.ctorParameters = () => [ + { type: FormBuilder }, + { type: Store } +]; +ProfileComponent.propDecorators = { + visible: [{ type: Input }], + visibleChange: [{ type: Output }] +}; +__decorate([ + Select(ProfileState.getProfile), + __metadata("design:type", Observable) +], ProfileComponent.prototype, "profile$", void 0); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +const LAYOUTS = [LayoutApplicationComponent, LayoutAccountComponent, LayoutEmptyComponent]; +class ThemeBasicModule { +} +ThemeBasicModule.decorators = [ + { type: NgModule, args: [{ + declarations: [...LAYOUTS, LayoutComponent, ChangePasswordComponent, ProfileComponent], + imports: [ + CoreModule, + ThemeSharedModule, + NgbCollapseModule, + NgbDropdownModule, + ToastModule, + NgxValidateCoreModule, + NgxsModule.forFeature([LayoutState]), + ], + exports: [...LAYOUTS], + entryComponents: [...LAYOUTS], + },] } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var Layout; +(function (Layout) { + /** + * @record + */ + function State() { } + Layout.State = State; + /** + * @record + */ + function NavigationElement() { } + Layout.NavigationElement = NavigationElement; +})(Layout || (Layout = {})); + +export { LAYOUTS, LayoutAccountComponent, LayoutAddNavigationElement, LayoutApplicationComponent, LayoutEmptyComponent, LayoutRemoveNavigationElementByName, LayoutState, ThemeBasicModule, LayoutApplicationComponent as ɵa, LayoutState as ɵb, LayoutAccountComponent as ɵc, LayoutEmptyComponent as ɵd, LayoutComponent as ɵe, ChangePasswordComponent as ɵf, ProfileComponent as ɵg, LayoutState as ɵh, LayoutAddNavigationElement as ɵi, LayoutRemoveNavigationElementByName as ɵj }; +//# sourceMappingURL=abp-ng.theme.basic.js.map diff --git a/npm/ng-packs/dist/theme-basic/fesm2015/abp-ng.theme.basic.js.map b/npm/ng-packs/dist/theme-basic/fesm2015/abp-ng.theme.basic.js.map new file mode 100644 index 00000000000..5ab79dcb4f8 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/fesm2015/abp-ng.theme.basic.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.theme.basic.js","sources":["ng://@abp/ng.theme.basic/lib/components/change-password/change-password.component.ts","ng://@abp/ng.theme.basic/lib/components/layout-account/layout-account.component.ts","ng://@abp/ng.theme.basic/lib/actions/layout.actions.ts","ng://@abp/ng.theme.basic/lib/states/layout.state.ts","ng://@abp/ng.theme.basic/lib/components/layout-application/layout-application.component.ts","ng://@abp/ng.theme.basic/lib/components/layout-empty/layout-empty.component.ts","ng://@abp/ng.theme.basic/lib/components/layout/layout.component.ts","ng://@abp/ng.theme.basic/lib/components/profile/profile.component.ts","ng://@abp/ng.theme.basic/lib/theme-basic.module.ts","ng://@abp/ng.theme.basic/lib/models/layout.ts"],"sourcesContent":["import { ProfileChangePassword } from '@abp/ng.core';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { comparePasswords, validatePassword } from '@ngx-validate/core';\nimport { Store } from '@ngxs/store';\n\nconst { minLength, required } = Validators;\n\n@Component({\n selector: 'abp-change-password',\n templateUrl: './change-password.component.html',\n})\nexport class ChangePasswordComponent implements OnInit, OnChanges {\n protected _visible;\n\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n\n set visible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(value);\n }\n\n @Output()\n visibleChange = new EventEmitter();\n\n @ViewChild('modalContent', { static: false })\n modalContent: TemplateRef;\n\n form: FormGroup;\n\n constructor(private fb: FormBuilder, private store: Store) {}\n\n ngOnInit(): void {\n this.form = this.fb.group(\n {\n password: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]],\n newPassword: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]],\n repeatNewPassword: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]],\n },\n {\n validators: [comparePasswords(['newPassword', 'repeatNewPassword'])],\n },\n );\n }\n\n onSubmit() {\n if (this.form.invalid) return;\n\n this.store\n .dispatch(\n new ProfileChangePassword({\n currentPassword: this.form.get('password').value,\n newPassword: this.form.get('newPassword').value,\n }),\n )\n .subscribe(() => {\n this.visible = false;\n });\n }\n\n openModal() {\n this.visible = true;\n }\n\n ngOnChanges({ visible }: SimpleChanges): void {\n if (!visible) return;\n\n if (visible.currentValue) {\n this.openModal();\n } else if (visible.currentValue === false && this.visible) {\n this.visible = false;\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { eLayoutType } from '@abp/ng.core';\n\n@Component({\n selector: 'abp-layout-account',\n templateUrl: './layout-account.component.html',\n})\nexport class LayoutAccountComponent {\n // required for dynamic component\n static type = eLayoutType.account;\n\n isCollapsed: boolean = false;\n}\n","import { Layout } from '../models/layout';\n\nexport class LayoutAddNavigationElement {\n static readonly type = '[Layout] Add Navigation Element';\n constructor(public payload: Layout.NavigationElement | Layout.NavigationElement[]) {}\n}\n\nexport class LayoutRemoveNavigationElementByName {\n static readonly type = '[Layout] Remove Navigation ElementByName';\n constructor(public name: string) {}\n}\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\nimport { LayoutAddNavigationElement, LayoutRemoveNavigationElementByName } from '../actions/layout.actions';\nimport { Layout } from '../models/layout';\nimport { TemplateRef } from '@angular/core';\nimport snq from 'snq';\n\n@State({\n name: 'LayoutState',\n defaults: { navigationElements: [] } as Layout.State,\n})\nexport class LayoutState {\n @Selector()\n static getNavigationElements({ navigationElements }: Layout.State): Layout.NavigationElement[] {\n return navigationElements;\n }\n\n @Action(LayoutAddNavigationElement)\n layoutAddAction({ getState, patchState }: StateContext, { payload = [] }: LayoutAddNavigationElement) {\n let { navigationElements } = getState();\n\n if (!Array.isArray(payload)) {\n payload = [payload];\n }\n\n if (navigationElements.length) {\n payload = snq(\n () =>\n (payload as Layout.NavigationElement[]).filter(\n ({ name }) => navigationElements.findIndex(nav => nav.name === name) < 0,\n ),\n [],\n );\n }\n\n if (!payload.length) return;\n\n navigationElements = [...navigationElements, ...payload]\n .map(element => ({ ...element, order: element.order || 99 }))\n .sort((a, b) => a.order - b.order);\n\n return patchState({\n navigationElements,\n });\n }\n\n @Action(LayoutRemoveNavigationElementByName)\n layoutRemoveAction(\n { getState, patchState }: StateContext,\n { name }: LayoutRemoveNavigationElementByName,\n ) {\n let { navigationElements } = getState();\n\n const index = navigationElements.findIndex(element => element.name === name);\n\n if (index > -1) {\n navigationElements = navigationElements.splice(index, 1);\n }\n\n return patchState({\n navigationElements,\n });\n }\n}\n","import {\n ABP,\n ApplicationConfiguration,\n ConfigGetAppConfiguration,\n ConfigState,\n eLayoutType,\n SessionSetLanguage,\n SessionState,\n takeUntilDestroy,\n} from '@abp/ng.core';\nimport {\n AfterViewInit,\n Component,\n OnDestroy,\n QueryList,\n TemplateRef,\n TrackByFunction,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { NgbDropdown } from '@ng-bootstrap/ng-bootstrap';\nimport { Navigate, RouterState } from '@ngxs/router-plugin';\nimport { Select, Store } from '@ngxs/store';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport compare from 'just-compare';\nimport { fromEvent, Observable } from 'rxjs';\nimport { debounceTime, filter, map } from 'rxjs/operators';\nimport snq from 'snq';\nimport { LayoutAddNavigationElement } from '../../actions';\nimport { Layout } from '../../models/layout';\nimport { LayoutState } from '../../states';\n\n@Component({\n selector: 'abp-layout-application',\n templateUrl: './layout-application.component.html',\n})\nexport class LayoutApplicationComponent implements AfterViewInit, OnDestroy {\n // required for dynamic component\n static type = eLayoutType.application;\n\n @Select(ConfigState.getOne('routes'))\n routes$: Observable;\n\n @Select(ConfigState.getOne('currentUser'))\n currentUser$: Observable;\n\n @Select(ConfigState.getDeep('localization.languages'))\n languages$: Observable;\n\n @Select(LayoutState.getNavigationElements)\n navElements$: Observable;\n\n @ViewChild('currentUser', { static: false, read: TemplateRef })\n currentUserRef: TemplateRef;\n\n @ViewChild('language', { static: false, read: TemplateRef })\n languageRef: TemplateRef;\n\n @ViewChildren('navbarRootDropdown', { read: NgbDropdown })\n navbarRootDropdowns: QueryList;\n\n isOpenChangePassword: boolean = false;\n\n isOpenProfile: boolean = false;\n\n isDropdownChildDynamic: boolean;\n\n get visibleRoutes$(): Observable {\n return this.routes$.pipe(map(routes => getVisibleRoutes(routes)));\n }\n\n get defaultLanguage$(): Observable {\n return this.languages$.pipe(\n map(\n languages => snq(() => languages.find(lang => lang.cultureName === this.selectedLangCulture).displayName),\n '',\n ),\n );\n }\n\n get dropdownLanguages$(): Observable {\n return this.languages$.pipe(\n map(languages => snq(() => languages.filter(lang => lang.cultureName !== this.selectedLangCulture)), []),\n );\n }\n\n get selectedLangCulture(): string {\n return this.store.selectSnapshot(SessionState.getLanguage);\n }\n\n rightPartElements: TemplateRef[] = [];\n\n trackByFn: TrackByFunction = (_, item) => item.name;\n\n trackElementByFn: TrackByFunction = (_, element) => element;\n\n constructor(private store: Store, private oauthService: OAuthService) {}\n\n private checkWindowWidth() {\n setTimeout(() => {\n this.navbarRootDropdowns.forEach(item => {\n item.close();\n });\n if (window.innerWidth < 768) {\n this.isDropdownChildDynamic = false;\n } else {\n this.isDropdownChildDynamic = true;\n }\n }, 0);\n }\n\n ngAfterViewInit() {\n const navigations = this.store.selectSnapshot(LayoutState.getNavigationElements).map(({ name }) => name);\n\n if (navigations.indexOf('LanguageRef') < 0) {\n this.store.dispatch(\n new LayoutAddNavigationElement([\n { element: this.languageRef, order: 4, name: 'LanguageRef' },\n { element: this.currentUserRef, order: 5, name: 'CurrentUserRef' },\n ]),\n );\n }\n\n this.navElements$\n .pipe(\n map(elements => elements.map(({ element }) => element)),\n filter(elements => !compare(elements, this.rightPartElements)),\n takeUntilDestroy(this),\n )\n .subscribe(elements => {\n setTimeout(() => (this.rightPartElements = elements), 0);\n });\n\n this.checkWindowWidth();\n\n fromEvent(window, 'resize')\n .pipe(\n takeUntilDestroy(this),\n debounceTime(250),\n )\n .subscribe(() => {\n this.checkWindowWidth();\n });\n }\n\n ngOnDestroy() {}\n\n onChangeLang(cultureName: string) {\n this.store.dispatch(new SessionSetLanguage(cultureName));\n this.store.dispatch(new ConfigGetAppConfiguration());\n }\n\n logout() {\n this.oauthService.logOut();\n this.store.dispatch(\n new Navigate(['/account/login'], null, {\n state: { redirectUrl: this.store.selectSnapshot(RouterState).state.url },\n }),\n );\n this.store.dispatch(new ConfigGetAppConfiguration());\n }\n}\n\nfunction getVisibleRoutes(routes: ABP.FullRoute[]) {\n return routes.reduce((acc, val) => {\n if (val.invisible) return acc;\n\n if (val.children && val.children.length) {\n val.children = getVisibleRoutes(val.children);\n }\n\n return [...acc, val];\n }, []);\n}\n","import { Component } from '@angular/core';\nimport { eLayoutType } from '@abp/ng.core';\n\n@Component({\n selector: 'abp-layout-empty',\n template: `\n Layout-empty\n \n `,\n})\nexport class LayoutEmptyComponent {\n // required for dynamic component\n static type = eLayoutType.empty;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: ' abp-layout',\n templateUrl: './layout.component.html',\n})\nexport class LayoutComponent {\n isCollapsed: boolean = false;\n}\n","import { Profile, ProfileGet, ProfileState, ProfileUpdate } from '@abp/ng.core';\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { take, withLatestFrom } from 'rxjs/operators';\n\nconst { maxLength, required, email } = Validators;\n\n@Component({\n selector: 'abp-profile',\n templateUrl: './profile.component.html',\n})\nexport class ProfileComponent implements OnChanges {\n protected _visible;\n\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n\n set visible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(value);\n }\n\n @Output()\n visibleChange = new EventEmitter();\n\n @Select(ProfileState.getProfile)\n profile$: Observable;\n\n form: FormGroup;\n\n constructor(private fb: FormBuilder, private store: Store) {}\n\n buildForm() {\n this.store\n .dispatch(new ProfileGet())\n .pipe(\n withLatestFrom(this.profile$),\n take(1),\n )\n .subscribe(([, profile]) => {\n this.form = this.fb.group({\n userName: [profile.userName, [required, maxLength(256)]],\n email: [profile.email, [required, email, maxLength(256)]],\n name: [profile.name || '', [maxLength(64)]],\n surname: [profile.surname || '', [maxLength(64)]],\n phoneNumber: [profile.phoneNumber || '', [maxLength(16)]],\n });\n });\n }\n\n onSubmit() {\n if (this.form.invalid) return;\n\n this.store.dispatch(new ProfileUpdate(this.form.value)).subscribe(() => {\n this.visible = false;\n });\n }\n\n openModal() {\n this.buildForm();\n this.visible = true;\n }\n\n ngOnChanges({ visible }: SimpleChanges): void {\n if (!visible) return;\n\n if (visible.currentValue) {\n this.openModal();\n } else if (visible.currentValue === false && this.visible) {\n this.visible = false;\n }\n }\n}\n","import { CoreModule } from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { NgbCollapseModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ChangePasswordComponent } from './components/change-password/change-password.component';\nimport { LayoutAccountComponent } from './components/layout-account/layout-account.component';\nimport { LayoutApplicationComponent } from './components/layout-application/layout-application.component';\nimport { LayoutEmptyComponent } from './components/layout-empty/layout-empty.component';\nimport { LayoutComponent } from './components/layout/layout.component';\nimport { ProfileComponent } from './components/profile/profile.component';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { ToastModule } from 'primeng/toast';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { NgxsModule } from '@ngxs/store';\nimport { LayoutState } from './states/layout.state';\n\nexport const LAYOUTS = [LayoutApplicationComponent, LayoutAccountComponent, LayoutEmptyComponent];\n\n@NgModule({\n declarations: [...LAYOUTS, LayoutComponent, ChangePasswordComponent, ProfileComponent],\n imports: [\n CoreModule,\n ThemeSharedModule,\n NgbCollapseModule,\n NgbDropdownModule,\n ToastModule,\n NgxValidateCoreModule,\n NgxsModule.forFeature([LayoutState]),\n ],\n exports: [...LAYOUTS],\n entryComponents: [...LAYOUTS],\n})\nexport class ThemeBasicModule {}\n","import { TemplateRef } from '@angular/core';\n\nexport namespace Layout {\n export interface State {\n navigationElements: NavigationElement[];\n }\n\n export interface NavigationElement {\n name: string;\n element: TemplateRef;\n order?: number;\n }\n}\n"],"names":["tslib_1.__decorate","required"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/fesm5/abp-ng.theme.basic.js b/npm/ng-packs/dist/theme-basic/fesm5/abp-ng.theme.basic.js new file mode 100644 index 00000000000..a6f79d2d12a --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/fesm5/abp-ng.theme.basic.js @@ -0,0 +1,768 @@ +import { __spread, __assign, __decorate, __metadata, __read } from 'tslib'; +import { ProfileChangePassword, SessionState, takeUntilDestroy, SessionSetLanguage, ConfigGetAppConfiguration, ConfigState, ProfileGet, ProfileUpdate, ProfileState, CoreModule } from '@abp/ng.core'; +import { Component, Input, Output, ViewChild, EventEmitter, TemplateRef, ViewChildren, NgModule } from '@angular/core'; +import { NgbDropdown, NgbCollapseModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { Validators, FormBuilder } from '@angular/forms'; +import { validatePassword, comparePasswords, NgxValidateCoreModule } from '@ngx-validate/core'; +import { Store, Action, Selector, State, Select, NgxsModule } from '@ngxs/store'; +import { Navigate, RouterState } from '@ngxs/router-plugin'; +import { OAuthService } from 'angular-oauth2-oidc'; +import compare from 'just-compare'; +import { fromEvent, Observable } from 'rxjs'; +import { map, filter, debounceTime, withLatestFrom, take } from 'rxjs/operators'; +import snq from 'snq'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { ToastModule } from 'primeng/toast'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var minLength = Validators.minLength, required = Validators.required; +var ChangePasswordComponent = /** @class */ (function () { + function ChangePasswordComponent(fb, store) { + this.fb = fb; + this.store = store; + this.visibleChange = new EventEmitter(); + } + Object.defineProperty(ChangePasswordComponent.prototype, "visible", { + get: /** + * @return {?} + */ + function () { + return this._visible; + }, + set: /** + * @param {?} value + * @return {?} + */ + function (value) { + this._visible = value; + this.visibleChange.emit(value); + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + ChangePasswordComponent.prototype.ngOnInit = /** + * @return {?} + */ + function () { + this.form = this.fb.group({ + password: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]], + newPassword: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]], + repeatNewPassword: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]], + }, { + validators: [comparePasswords(['newPassword', 'repeatNewPassword'])], + }); + }; + /** + * @return {?} + */ + ChangePasswordComponent.prototype.onSubmit = /** + * @return {?} + */ + function () { + var _this = this; + if (this.form.invalid) + return; + this.store + .dispatch(new ProfileChangePassword({ + currentPassword: this.form.get('password').value, + newPassword: this.form.get('newPassword').value, + })) + .subscribe((/** + * @return {?} + */ + function () { + _this.visible = false; + })); + }; + /** + * @return {?} + */ + ChangePasswordComponent.prototype.openModal = /** + * @return {?} + */ + function () { + this.visible = true; + }; + /** + * @param {?} __0 + * @return {?} + */ + ChangePasswordComponent.prototype.ngOnChanges = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var visible = _a.visible; + if (!visible) + return; + if (visible.currentValue) { + this.openModal(); + } + else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + }; + ChangePasswordComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-change-password', + template: "\n \n

    {{ 'AbpIdentity::ChangePassword' | abpLocalization }}

    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n
    \n" + }] } + ]; + /** @nocollapse */ + ChangePasswordComponent.ctorParameters = function () { return [ + { type: FormBuilder }, + { type: Store } + ]; }; + ChangePasswordComponent.propDecorators = { + visible: [{ type: Input }], + visibleChange: [{ type: Output }], + modalContent: [{ type: ViewChild, args: ['modalContent', { static: false },] }] + }; + return ChangePasswordComponent; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var LayoutAccountComponent = /** @class */ (function () { + function LayoutAccountComponent() { + this.isCollapsed = false; + } + // required for dynamic component + LayoutAccountComponent.type = "account" /* account */; + LayoutAccountComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-layout-account', + template: "\n \n\n \n \n \n \n \n\n" + }] } + ]; + return LayoutAccountComponent; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var LayoutAddNavigationElement = /** @class */ (function () { + function LayoutAddNavigationElement(payload) { + this.payload = payload; + } + LayoutAddNavigationElement.type = '[Layout] Add Navigation Element'; + return LayoutAddNavigationElement; +}()); +var LayoutRemoveNavigationElementByName = /** @class */ (function () { + function LayoutRemoveNavigationElementByName(name) { + this.name = name; + } + LayoutRemoveNavigationElementByName.type = '[Layout] Remove Navigation ElementByName'; + return LayoutRemoveNavigationElementByName; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var LayoutState = /** @class */ (function () { + function LayoutState() { + } + /** + * @param {?} __0 + * @return {?} + */ + LayoutState.getNavigationElements = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var navigationElements = _a.navigationElements; + return navigationElements; + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + LayoutState.prototype.layoutAddAction = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var getState = _a.getState, patchState = _a.patchState; + var _c = _b.payload, payload = _c === void 0 ? [] : _c; + var navigationElements = getState().navigationElements; + if (!Array.isArray(payload)) { + payload = [payload]; + } + if (navigationElements.length) { + payload = snq((/** + * @return {?} + */ + function () { + return ((/** @type {?} */ (payload))).filter((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var name = _a.name; + return navigationElements.findIndex((/** + * @param {?} nav + * @return {?} + */ + function (nav) { return nav.name === name; })) < 0; + })); + }), []); + } + if (!payload.length) + return; + navigationElements = __spread(navigationElements, payload).map((/** + * @param {?} element + * @return {?} + */ + function (element) { return (__assign({}, element, { order: element.order || 99 })); })) + .sort((/** + * @param {?} a + * @param {?} b + * @return {?} + */ + function (a, b) { return a.order - b.order; })); + return patchState({ + navigationElements: navigationElements, + }); + }; + /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + LayoutState.prototype.layoutRemoveAction = /** + * @param {?} __0 + * @param {?} __1 + * @return {?} + */ + function (_a, _b) { + var getState = _a.getState, patchState = _a.patchState; + var name = _b.name; + var navigationElements = getState().navigationElements; + /** @type {?} */ + var index = navigationElements.findIndex((/** + * @param {?} element + * @return {?} + */ + function (element) { return element.name === name; })); + if (index > -1) { + navigationElements = navigationElements.splice(index, 1); + } + return patchState({ + navigationElements: navigationElements, + }); + }; + __decorate([ + Action(LayoutAddNavigationElement), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, LayoutAddNavigationElement]), + __metadata("design:returntype", void 0) + ], LayoutState.prototype, "layoutAddAction", null); + __decorate([ + Action(LayoutRemoveNavigationElementByName), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, LayoutRemoveNavigationElementByName]), + __metadata("design:returntype", void 0) + ], LayoutState.prototype, "layoutRemoveAction", null); + __decorate([ + Selector(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Array) + ], LayoutState, "getNavigationElements", null); + LayoutState = __decorate([ + State({ + name: 'LayoutState', + defaults: (/** @type {?} */ ({ navigationElements: [] })), + }) + ], LayoutState); + return LayoutState; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var LayoutApplicationComponent = /** @class */ (function () { + function LayoutApplicationComponent(store, oauthService) { + this.store = store; + this.oauthService = oauthService; + this.isOpenChangePassword = false; + this.isOpenProfile = false; + this.rightPartElements = []; + this.trackByFn = (/** + * @param {?} _ + * @param {?} item + * @return {?} + */ + function (_, item) { return item.name; }); + this.trackElementByFn = (/** + * @param {?} _ + * @param {?} element + * @return {?} + */ + function (_, element) { return element; }); + } + Object.defineProperty(LayoutApplicationComponent.prototype, "visibleRoutes$", { + get: /** + * @return {?} + */ + function () { + return this.routes$.pipe(map((/** + * @param {?} routes + * @return {?} + */ + function (routes) { return getVisibleRoutes(routes); }))); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(LayoutApplicationComponent.prototype, "defaultLanguage$", { + get: /** + * @return {?} + */ + function () { + var _this = this; + return this.languages$.pipe(map((/** + * @param {?} languages + * @return {?} + */ + function (languages) { return snq((/** + * @return {?} + */ + function () { return languages.find((/** + * @param {?} lang + * @return {?} + */ + function (lang) { return lang.cultureName === _this.selectedLangCulture; })).displayName; })); }), '')); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(LayoutApplicationComponent.prototype, "dropdownLanguages$", { + get: /** + * @return {?} + */ + function () { + var _this = this; + return this.languages$.pipe(map((/** + * @param {?} languages + * @return {?} + */ + function (languages) { return snq((/** + * @return {?} + */ + function () { return languages.filter((/** + * @param {?} lang + * @return {?} + */ + function (lang) { return lang.cultureName !== _this.selectedLangCulture; })); })); }), [])); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(LayoutApplicationComponent.prototype, "selectedLangCulture", { + get: /** + * @return {?} + */ + function () { + return this.store.selectSnapshot(SessionState.getLanguage); + }, + enumerable: true, + configurable: true + }); + /** + * @private + * @return {?} + */ + LayoutApplicationComponent.prototype.checkWindowWidth = /** + * @private + * @return {?} + */ + function () { + var _this = this; + setTimeout((/** + * @return {?} + */ + function () { + _this.navbarRootDropdowns.forEach((/** + * @param {?} item + * @return {?} + */ + function (item) { + item.close(); + })); + if (window.innerWidth < 768) { + _this.isDropdownChildDynamic = false; + } + else { + _this.isDropdownChildDynamic = true; + } + }), 0); + }; + /** + * @return {?} + */ + LayoutApplicationComponent.prototype.ngAfterViewInit = /** + * @return {?} + */ + function () { + var _this = this; + /** @type {?} */ + var navigations = this.store.selectSnapshot(LayoutState.getNavigationElements).map((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var name = _a.name; + return name; + })); + if (navigations.indexOf('LanguageRef') < 0) { + this.store.dispatch(new LayoutAddNavigationElement([ + { element: this.languageRef, order: 4, name: 'LanguageRef' }, + { element: this.currentUserRef, order: 5, name: 'CurrentUserRef' }, + ])); + } + this.navElements$ + .pipe(map((/** + * @param {?} elements + * @return {?} + */ + function (elements) { return elements.map((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var element = _a.element; + return element; + })); })), filter((/** + * @param {?} elements + * @return {?} + */ + function (elements) { return !compare(elements, _this.rightPartElements); })), takeUntilDestroy(this)) + .subscribe((/** + * @param {?} elements + * @return {?} + */ + function (elements) { + setTimeout((/** + * @return {?} + */ + function () { return (_this.rightPartElements = elements); }), 0); + })); + this.checkWindowWidth(); + fromEvent(window, 'resize') + .pipe(takeUntilDestroy(this), debounceTime(250)) + .subscribe((/** + * @return {?} + */ + function () { + _this.checkWindowWidth(); + })); + }; + /** + * @return {?} + */ + LayoutApplicationComponent.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { }; + /** + * @param {?} cultureName + * @return {?} + */ + LayoutApplicationComponent.prototype.onChangeLang = /** + * @param {?} cultureName + * @return {?} + */ + function (cultureName) { + this.store.dispatch(new SessionSetLanguage(cultureName)); + this.store.dispatch(new ConfigGetAppConfiguration()); + }; + /** + * @return {?} + */ + LayoutApplicationComponent.prototype.logout = /** + * @return {?} + */ + function () { + this.oauthService.logOut(); + this.store.dispatch(new Navigate(['/account/login'], null, { + state: { redirectUrl: this.store.selectSnapshot(RouterState).state.url }, + })); + this.store.dispatch(new ConfigGetAppConfiguration()); + }; + // required for dynamic component + LayoutApplicationComponent.type = "application" /* application */; + LayoutApplicationComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-layout-application', + template: "\n \n\n
      \n \n
    \n
    \n\n\n
  • \n \n {{ defaultLanguage$ | async }}\n \n
    \n {{ lang?.displayName }}\n
    \n
  • \n
    \n\n\n
  • \n \n {{ (currentUser$ | async)?.userName }}\n \n \n
  • \n\n \n\n \n
    \n" + }] } + ]; + /** @nocollapse */ + LayoutApplicationComponent.ctorParameters = function () { return [ + { type: Store }, + { type: OAuthService } + ]; }; + LayoutApplicationComponent.propDecorators = { + currentUserRef: [{ type: ViewChild, args: ['currentUser', { static: false, read: TemplateRef },] }], + languageRef: [{ type: ViewChild, args: ['language', { static: false, read: TemplateRef },] }], + navbarRootDropdowns: [{ type: ViewChildren, args: ['navbarRootDropdown', { read: NgbDropdown },] }] + }; + __decorate([ + Select(ConfigState.getOne('routes')), + __metadata("design:type", Observable) + ], LayoutApplicationComponent.prototype, "routes$", void 0); + __decorate([ + Select(ConfigState.getOne('currentUser')), + __metadata("design:type", Observable) + ], LayoutApplicationComponent.prototype, "currentUser$", void 0); + __decorate([ + Select(ConfigState.getDeep('localization.languages')), + __metadata("design:type", Observable) + ], LayoutApplicationComponent.prototype, "languages$", void 0); + __decorate([ + Select(LayoutState.getNavigationElements), + __metadata("design:type", Observable) + ], LayoutApplicationComponent.prototype, "navElements$", void 0); + return LayoutApplicationComponent; +}()); +/** + * @param {?} routes + * @return {?} + */ +function getVisibleRoutes(routes) { + return routes.reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { + if (val.invisible) + return acc; + if (val.children && val.children.length) { + val.children = getVisibleRoutes(val.children); + } + return __spread(acc, [val]); + }), []); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var LayoutEmptyComponent = /** @class */ (function () { + function LayoutEmptyComponent() { + } + // required for dynamic component + LayoutEmptyComponent.type = "empty" /* empty */; + LayoutEmptyComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-layout-empty', + template: "\n Layout-empty\n \n " + }] } + ]; + return LayoutEmptyComponent; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var LayoutComponent = /** @class */ (function () { + function LayoutComponent() { + this.isCollapsed = false; + } + LayoutComponent.decorators = [ + { type: Component, args: [{ + selector: ' abp-layout', + template: "\n\n
    \n \n
    \n\n\n\n" + }] } + ]; + return LayoutComponent; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var maxLength = Validators.maxLength, required$1 = Validators.required, email = Validators.email; +var ProfileComponent = /** @class */ (function () { + function ProfileComponent(fb, store) { + this.fb = fb; + this.store = store; + this.visibleChange = new EventEmitter(); + } + Object.defineProperty(ProfileComponent.prototype, "visible", { + get: /** + * @return {?} + */ + function () { + return this._visible; + }, + set: /** + * @param {?} value + * @return {?} + */ + function (value) { + this._visible = value; + this.visibleChange.emit(value); + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + ProfileComponent.prototype.buildForm = /** + * @return {?} + */ + function () { + var _this = this; + this.store + .dispatch(new ProfileGet()) + .pipe(withLatestFrom(this.profile$), take(1)) + .subscribe((/** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var _b = __read(_a, 2), profile = _b[1]; + _this.form = _this.fb.group({ + userName: [profile.userName, [required$1, maxLength(256)]], + email: [profile.email, [required$1, email, maxLength(256)]], + name: [profile.name || '', [maxLength(64)]], + surname: [profile.surname || '', [maxLength(64)]], + phoneNumber: [profile.phoneNumber || '', [maxLength(16)]], + }); + })); + }; + /** + * @return {?} + */ + ProfileComponent.prototype.onSubmit = /** + * @return {?} + */ + function () { + var _this = this; + if (this.form.invalid) + return; + this.store.dispatch(new ProfileUpdate(this.form.value)).subscribe((/** + * @return {?} + */ + function () { + _this.visible = false; + })); + }; + /** + * @return {?} + */ + ProfileComponent.prototype.openModal = /** + * @return {?} + */ + function () { + this.buildForm(); + this.visible = true; + }; + /** + * @param {?} __0 + * @return {?} + */ + ProfileComponent.prototype.ngOnChanges = /** + * @param {?} __0 + * @return {?} + */ + function (_a) { + var visible = _a.visible; + if (!visible) + return; + if (visible.currentValue) { + this.openModal(); + } + else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + }; + ProfileComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-profile', + template: "\n \n

    {{ 'AbpIdentity::PersonalInfo' | abpLocalization }}

    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n
    \n" + }] } + ]; + /** @nocollapse */ + ProfileComponent.ctorParameters = function () { return [ + { type: FormBuilder }, + { type: Store } + ]; }; + ProfileComponent.propDecorators = { + visible: [{ type: Input }], + visibleChange: [{ type: Output }] + }; + __decorate([ + Select(ProfileState.getProfile), + __metadata("design:type", Observable) + ], ProfileComponent.prototype, "profile$", void 0); + return ProfileComponent; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var LAYOUTS = [LayoutApplicationComponent, LayoutAccountComponent, LayoutEmptyComponent]; +var ThemeBasicModule = /** @class */ (function () { + function ThemeBasicModule() { + } + ThemeBasicModule.decorators = [ + { type: NgModule, args: [{ + declarations: __spread(LAYOUTS, [LayoutComponent, ChangePasswordComponent, ProfileComponent]), + imports: [ + CoreModule, + ThemeSharedModule, + NgbCollapseModule, + NgbDropdownModule, + ToastModule, + NgxValidateCoreModule, + NgxsModule.forFeature([LayoutState]), + ], + exports: __spread(LAYOUTS), + entryComponents: __spread(LAYOUTS), + },] } + ]; + return ThemeBasicModule; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var Layout; +(function (Layout) { + /** + * @record + */ + function State() { } + Layout.State = State; + /** + * @record + */ + function NavigationElement() { } + Layout.NavigationElement = NavigationElement; +})(Layout || (Layout = {})); + +export { LAYOUTS, LayoutAccountComponent, LayoutAddNavigationElement, LayoutApplicationComponent, LayoutEmptyComponent, LayoutRemoveNavigationElementByName, LayoutState, ThemeBasicModule, LayoutApplicationComponent as ɵa, LayoutState as ɵb, LayoutAccountComponent as ɵc, LayoutEmptyComponent as ɵd, LayoutComponent as ɵe, ChangePasswordComponent as ɵf, ProfileComponent as ɵg, LayoutState as ɵh, LayoutAddNavigationElement as ɵi, LayoutRemoveNavigationElementByName as ɵj }; +//# sourceMappingURL=abp-ng.theme.basic.js.map diff --git a/npm/ng-packs/dist/theme-basic/fesm5/abp-ng.theme.basic.js.map b/npm/ng-packs/dist/theme-basic/fesm5/abp-ng.theme.basic.js.map new file mode 100644 index 00000000000..0c868a1a3bb --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/fesm5/abp-ng.theme.basic.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.theme.basic.js","sources":["ng://@abp/ng.theme.basic/lib/components/change-password/change-password.component.ts","ng://@abp/ng.theme.basic/lib/components/layout-account/layout-account.component.ts","ng://@abp/ng.theme.basic/lib/actions/layout.actions.ts","ng://@abp/ng.theme.basic/lib/states/layout.state.ts","ng://@abp/ng.theme.basic/lib/components/layout-application/layout-application.component.ts","ng://@abp/ng.theme.basic/lib/components/layout-empty/layout-empty.component.ts","ng://@abp/ng.theme.basic/lib/components/layout/layout.component.ts","ng://@abp/ng.theme.basic/lib/components/profile/profile.component.ts","ng://@abp/ng.theme.basic/lib/theme-basic.module.ts","ng://@abp/ng.theme.basic/lib/models/layout.ts"],"sourcesContent":["import { ProfileChangePassword } from '@abp/ng.core';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { comparePasswords, validatePassword } from '@ngx-validate/core';\nimport { Store } from '@ngxs/store';\n\nconst { minLength, required } = Validators;\n\n@Component({\n selector: 'abp-change-password',\n templateUrl: './change-password.component.html',\n})\nexport class ChangePasswordComponent implements OnInit, OnChanges {\n protected _visible;\n\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n\n set visible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(value);\n }\n\n @Output()\n visibleChange = new EventEmitter();\n\n @ViewChild('modalContent', { static: false })\n modalContent: TemplateRef;\n\n form: FormGroup;\n\n constructor(private fb: FormBuilder, private store: Store) {}\n\n ngOnInit(): void {\n this.form = this.fb.group(\n {\n password: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]],\n newPassword: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]],\n repeatNewPassword: ['', [required, minLength(6), validatePassword(['small', 'capital', 'number', 'special'])]],\n },\n {\n validators: [comparePasswords(['newPassword', 'repeatNewPassword'])],\n },\n );\n }\n\n onSubmit() {\n if (this.form.invalid) return;\n\n this.store\n .dispatch(\n new ProfileChangePassword({\n currentPassword: this.form.get('password').value,\n newPassword: this.form.get('newPassword').value,\n }),\n )\n .subscribe(() => {\n this.visible = false;\n });\n }\n\n openModal() {\n this.visible = true;\n }\n\n ngOnChanges({ visible }: SimpleChanges): void {\n if (!visible) return;\n\n if (visible.currentValue) {\n this.openModal();\n } else if (visible.currentValue === false && this.visible) {\n this.visible = false;\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { eLayoutType } from '@abp/ng.core';\n\n@Component({\n selector: 'abp-layout-account',\n templateUrl: './layout-account.component.html',\n})\nexport class LayoutAccountComponent {\n // required for dynamic component\n static type = eLayoutType.account;\n\n isCollapsed: boolean = false;\n}\n","import { Layout } from '../models/layout';\n\nexport class LayoutAddNavigationElement {\n static readonly type = '[Layout] Add Navigation Element';\n constructor(public payload: Layout.NavigationElement | Layout.NavigationElement[]) {}\n}\n\nexport class LayoutRemoveNavigationElementByName {\n static readonly type = '[Layout] Remove Navigation ElementByName';\n constructor(public name: string) {}\n}\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\nimport { LayoutAddNavigationElement, LayoutRemoveNavigationElementByName } from '../actions/layout.actions';\nimport { Layout } from '../models/layout';\nimport { TemplateRef } from '@angular/core';\nimport snq from 'snq';\n\n@State({\n name: 'LayoutState',\n defaults: { navigationElements: [] } as Layout.State,\n})\nexport class LayoutState {\n @Selector()\n static getNavigationElements({ navigationElements }: Layout.State): Layout.NavigationElement[] {\n return navigationElements;\n }\n\n @Action(LayoutAddNavigationElement)\n layoutAddAction({ getState, patchState }: StateContext, { payload = [] }: LayoutAddNavigationElement) {\n let { navigationElements } = getState();\n\n if (!Array.isArray(payload)) {\n payload = [payload];\n }\n\n if (navigationElements.length) {\n payload = snq(\n () =>\n (payload as Layout.NavigationElement[]).filter(\n ({ name }) => navigationElements.findIndex(nav => nav.name === name) < 0,\n ),\n [],\n );\n }\n\n if (!payload.length) return;\n\n navigationElements = [...navigationElements, ...payload]\n .map(element => ({ ...element, order: element.order || 99 }))\n .sort((a, b) => a.order - b.order);\n\n return patchState({\n navigationElements,\n });\n }\n\n @Action(LayoutRemoveNavigationElementByName)\n layoutRemoveAction(\n { getState, patchState }: StateContext,\n { name }: LayoutRemoveNavigationElementByName,\n ) {\n let { navigationElements } = getState();\n\n const index = navigationElements.findIndex(element => element.name === name);\n\n if (index > -1) {\n navigationElements = navigationElements.splice(index, 1);\n }\n\n return patchState({\n navigationElements,\n });\n }\n}\n","import {\n ABP,\n ApplicationConfiguration,\n ConfigGetAppConfiguration,\n ConfigState,\n eLayoutType,\n SessionSetLanguage,\n SessionState,\n takeUntilDestroy,\n} from '@abp/ng.core';\nimport {\n AfterViewInit,\n Component,\n OnDestroy,\n QueryList,\n TemplateRef,\n TrackByFunction,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { NgbDropdown } from '@ng-bootstrap/ng-bootstrap';\nimport { Navigate, RouterState } from '@ngxs/router-plugin';\nimport { Select, Store } from '@ngxs/store';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport compare from 'just-compare';\nimport { fromEvent, Observable } from 'rxjs';\nimport { debounceTime, filter, map } from 'rxjs/operators';\nimport snq from 'snq';\nimport { LayoutAddNavigationElement } from '../../actions';\nimport { Layout } from '../../models/layout';\nimport { LayoutState } from '../../states';\n\n@Component({\n selector: 'abp-layout-application',\n templateUrl: './layout-application.component.html',\n})\nexport class LayoutApplicationComponent implements AfterViewInit, OnDestroy {\n // required for dynamic component\n static type = eLayoutType.application;\n\n @Select(ConfigState.getOne('routes'))\n routes$: Observable;\n\n @Select(ConfigState.getOne('currentUser'))\n currentUser$: Observable;\n\n @Select(ConfigState.getDeep('localization.languages'))\n languages$: Observable;\n\n @Select(LayoutState.getNavigationElements)\n navElements$: Observable;\n\n @ViewChild('currentUser', { static: false, read: TemplateRef })\n currentUserRef: TemplateRef;\n\n @ViewChild('language', { static: false, read: TemplateRef })\n languageRef: TemplateRef;\n\n @ViewChildren('navbarRootDropdown', { read: NgbDropdown })\n navbarRootDropdowns: QueryList;\n\n isOpenChangePassword: boolean = false;\n\n isOpenProfile: boolean = false;\n\n isDropdownChildDynamic: boolean;\n\n get visibleRoutes$(): Observable {\n return this.routes$.pipe(map(routes => getVisibleRoutes(routes)));\n }\n\n get defaultLanguage$(): Observable {\n return this.languages$.pipe(\n map(\n languages => snq(() => languages.find(lang => lang.cultureName === this.selectedLangCulture).displayName),\n '',\n ),\n );\n }\n\n get dropdownLanguages$(): Observable {\n return this.languages$.pipe(\n map(languages => snq(() => languages.filter(lang => lang.cultureName !== this.selectedLangCulture)), []),\n );\n }\n\n get selectedLangCulture(): string {\n return this.store.selectSnapshot(SessionState.getLanguage);\n }\n\n rightPartElements: TemplateRef[] = [];\n\n trackByFn: TrackByFunction = (_, item) => item.name;\n\n trackElementByFn: TrackByFunction = (_, element) => element;\n\n constructor(private store: Store, private oauthService: OAuthService) {}\n\n private checkWindowWidth() {\n setTimeout(() => {\n this.navbarRootDropdowns.forEach(item => {\n item.close();\n });\n if (window.innerWidth < 768) {\n this.isDropdownChildDynamic = false;\n } else {\n this.isDropdownChildDynamic = true;\n }\n }, 0);\n }\n\n ngAfterViewInit() {\n const navigations = this.store.selectSnapshot(LayoutState.getNavigationElements).map(({ name }) => name);\n\n if (navigations.indexOf('LanguageRef') < 0) {\n this.store.dispatch(\n new LayoutAddNavigationElement([\n { element: this.languageRef, order: 4, name: 'LanguageRef' },\n { element: this.currentUserRef, order: 5, name: 'CurrentUserRef' },\n ]),\n );\n }\n\n this.navElements$\n .pipe(\n map(elements => elements.map(({ element }) => element)),\n filter(elements => !compare(elements, this.rightPartElements)),\n takeUntilDestroy(this),\n )\n .subscribe(elements => {\n setTimeout(() => (this.rightPartElements = elements), 0);\n });\n\n this.checkWindowWidth();\n\n fromEvent(window, 'resize')\n .pipe(\n takeUntilDestroy(this),\n debounceTime(250),\n )\n .subscribe(() => {\n this.checkWindowWidth();\n });\n }\n\n ngOnDestroy() {}\n\n onChangeLang(cultureName: string) {\n this.store.dispatch(new SessionSetLanguage(cultureName));\n this.store.dispatch(new ConfigGetAppConfiguration());\n }\n\n logout() {\n this.oauthService.logOut();\n this.store.dispatch(\n new Navigate(['/account/login'], null, {\n state: { redirectUrl: this.store.selectSnapshot(RouterState).state.url },\n }),\n );\n this.store.dispatch(new ConfigGetAppConfiguration());\n }\n}\n\nfunction getVisibleRoutes(routes: ABP.FullRoute[]) {\n return routes.reduce((acc, val) => {\n if (val.invisible) return acc;\n\n if (val.children && val.children.length) {\n val.children = getVisibleRoutes(val.children);\n }\n\n return [...acc, val];\n }, []);\n}\n","import { Component } from '@angular/core';\nimport { eLayoutType } from '@abp/ng.core';\n\n@Component({\n selector: 'abp-layout-empty',\n template: `\n Layout-empty\n \n `,\n})\nexport class LayoutEmptyComponent {\n // required for dynamic component\n static type = eLayoutType.empty;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: ' abp-layout',\n templateUrl: './layout.component.html',\n})\nexport class LayoutComponent {\n isCollapsed: boolean = false;\n}\n","import { Profile, ProfileGet, ProfileState, ProfileUpdate } from '@abp/ng.core';\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { take, withLatestFrom } from 'rxjs/operators';\n\nconst { maxLength, required, email } = Validators;\n\n@Component({\n selector: 'abp-profile',\n templateUrl: './profile.component.html',\n})\nexport class ProfileComponent implements OnChanges {\n protected _visible;\n\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n\n set visible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(value);\n }\n\n @Output()\n visibleChange = new EventEmitter();\n\n @Select(ProfileState.getProfile)\n profile$: Observable;\n\n form: FormGroup;\n\n constructor(private fb: FormBuilder, private store: Store) {}\n\n buildForm() {\n this.store\n .dispatch(new ProfileGet())\n .pipe(\n withLatestFrom(this.profile$),\n take(1),\n )\n .subscribe(([, profile]) => {\n this.form = this.fb.group({\n userName: [profile.userName, [required, maxLength(256)]],\n email: [profile.email, [required, email, maxLength(256)]],\n name: [profile.name || '', [maxLength(64)]],\n surname: [profile.surname || '', [maxLength(64)]],\n phoneNumber: [profile.phoneNumber || '', [maxLength(16)]],\n });\n });\n }\n\n onSubmit() {\n if (this.form.invalid) return;\n\n this.store.dispatch(new ProfileUpdate(this.form.value)).subscribe(() => {\n this.visible = false;\n });\n }\n\n openModal() {\n this.buildForm();\n this.visible = true;\n }\n\n ngOnChanges({ visible }: SimpleChanges): void {\n if (!visible) return;\n\n if (visible.currentValue) {\n this.openModal();\n } else if (visible.currentValue === false && this.visible) {\n this.visible = false;\n }\n }\n}\n","import { CoreModule } from '@abp/ng.core';\nimport { NgModule } from '@angular/core';\nimport { NgbCollapseModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { ChangePasswordComponent } from './components/change-password/change-password.component';\nimport { LayoutAccountComponent } from './components/layout-account/layout-account.component';\nimport { LayoutApplicationComponent } from './components/layout-application/layout-application.component';\nimport { LayoutEmptyComponent } from './components/layout-empty/layout-empty.component';\nimport { LayoutComponent } from './components/layout/layout.component';\nimport { ProfileComponent } from './components/profile/profile.component';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { ToastModule } from 'primeng/toast';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { NgxsModule } from '@ngxs/store';\nimport { LayoutState } from './states/layout.state';\n\nexport const LAYOUTS = [LayoutApplicationComponent, LayoutAccountComponent, LayoutEmptyComponent];\n\n@NgModule({\n declarations: [...LAYOUTS, LayoutComponent, ChangePasswordComponent, ProfileComponent],\n imports: [\n CoreModule,\n ThemeSharedModule,\n NgbCollapseModule,\n NgbDropdownModule,\n ToastModule,\n NgxValidateCoreModule,\n NgxsModule.forFeature([LayoutState]),\n ],\n exports: [...LAYOUTS],\n entryComponents: [...LAYOUTS],\n})\nexport class ThemeBasicModule {}\n","import { TemplateRef } from '@angular/core';\n\nexport namespace Layout {\n export interface State {\n navigationElements: NavigationElement[];\n }\n\n export interface NavigationElement {\n name: string;\n element: TemplateRef;\n order?: number;\n }\n}\n"],"names":["tslib_1.__spread","tslib_1.__decorate","required"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-basic/lib/actions/index.d.ts b/npm/ng-packs/dist/theme-basic/lib/actions/index.d.ts new file mode 100644 index 00000000000..2e29080de88 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/lib/actions/index.d.ts @@ -0,0 +1 @@ +export * from './layout.actions'; diff --git a/npm/ng-packs/dist/theme-basic/lib/actions/layout.actions.d.ts b/npm/ng-packs/dist/theme-basic/lib/actions/layout.actions.d.ts new file mode 100644 index 00000000000..0dcaf42654e --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/lib/actions/layout.actions.d.ts @@ -0,0 +1,11 @@ +import { Layout } from '../models/layout'; +export declare class LayoutAddNavigationElement { + payload: Layout.NavigationElement | Layout.NavigationElement[]; + static readonly type = "[Layout] Add Navigation Element"; + constructor(payload: Layout.NavigationElement | Layout.NavigationElement[]); +} +export declare class LayoutRemoveNavigationElementByName { + name: string; + static readonly type = "[Layout] Remove Navigation ElementByName"; + constructor(name: string); +} diff --git a/npm/ng-packs/dist/theme-basic/lib/components/change-password/change-password.component.d.ts b/npm/ng-packs/dist/theme-basic/lib/components/change-password/change-password.component.d.ts new file mode 100644 index 00000000000..1052eaae83d --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/lib/components/change-password/change-password.component.d.ts @@ -0,0 +1,17 @@ +import { EventEmitter, OnChanges, OnInit, SimpleChanges, TemplateRef } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { Store } from '@ngxs/store'; +export declare class ChangePasswordComponent implements OnInit, OnChanges { + private fb; + private store; + protected _visible: any; + visible: boolean; + visibleChange: EventEmitter; + modalContent: TemplateRef; + form: FormGroup; + constructor(fb: FormBuilder, store: Store); + ngOnInit(): void; + onSubmit(): void; + openModal(): void; + ngOnChanges({ visible }: SimpleChanges): void; +} diff --git a/npm/ng-packs/dist/theme-basic/lib/components/index.d.ts b/npm/ng-packs/dist/theme-basic/lib/components/index.d.ts new file mode 100644 index 00000000000..39d04d163d9 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/lib/components/index.d.ts @@ -0,0 +1,3 @@ +export * from './layout-account/layout-account.component'; +export * from './layout-application/layout-application.component'; +export * from './layout-empty/layout-empty.component'; diff --git a/npm/ng-packs/dist/theme-basic/lib/components/layout-account/layout-account.component.d.ts b/npm/ng-packs/dist/theme-basic/lib/components/layout-account/layout-account.component.d.ts new file mode 100644 index 00000000000..544a175628c --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/lib/components/layout-account/layout-account.component.d.ts @@ -0,0 +1,5 @@ +import { eLayoutType } from '@abp/ng.core'; +export declare class LayoutAccountComponent { + static type: eLayoutType; + isCollapsed: boolean; +} diff --git a/npm/ng-packs/dist/theme-basic/lib/components/layout-application/layout-application.component.d.ts b/npm/ng-packs/dist/theme-basic/lib/components/layout-application/layout-application.component.d.ts new file mode 100644 index 00000000000..14f8496c53f --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/lib/components/layout-application/layout-application.component.d.ts @@ -0,0 +1,35 @@ +import { ABP, ApplicationConfiguration, eLayoutType } from '@abp/ng.core'; +import { AfterViewInit, OnDestroy, QueryList, TemplateRef, TrackByFunction } from '@angular/core'; +import { NgbDropdown } from '@ng-bootstrap/ng-bootstrap'; +import { Store } from '@ngxs/store'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { Observable } from 'rxjs'; +import { Layout } from '../../models/layout'; +export declare class LayoutApplicationComponent implements AfterViewInit, OnDestroy { + private store; + private oauthService; + static type: eLayoutType; + routes$: Observable; + currentUser$: Observable; + languages$: Observable; + navElements$: Observable; + currentUserRef: TemplateRef; + languageRef: TemplateRef; + navbarRootDropdowns: QueryList; + isOpenChangePassword: boolean; + isOpenProfile: boolean; + isDropdownChildDynamic: boolean; + readonly visibleRoutes$: Observable; + readonly defaultLanguage$: Observable; + readonly dropdownLanguages$: Observable; + readonly selectedLangCulture: string; + rightPartElements: TemplateRef[]; + trackByFn: TrackByFunction; + trackElementByFn: TrackByFunction; + constructor(store: Store, oauthService: OAuthService); + private checkWindowWidth; + ngAfterViewInit(): void; + ngOnDestroy(): void; + onChangeLang(cultureName: string): void; + logout(): void; +} diff --git a/npm/ng-packs/dist/theme-basic/lib/components/layout-empty/layout-empty.component.d.ts b/npm/ng-packs/dist/theme-basic/lib/components/layout-empty/layout-empty.component.d.ts new file mode 100644 index 00000000000..62a0e805868 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/lib/components/layout-empty/layout-empty.component.d.ts @@ -0,0 +1,4 @@ +import { eLayoutType } from '@abp/ng.core'; +export declare class LayoutEmptyComponent { + static type: eLayoutType; +} diff --git a/npm/ng-packs/dist/theme-basic/lib/components/layout/layout.component.d.ts b/npm/ng-packs/dist/theme-basic/lib/components/layout/layout.component.d.ts new file mode 100644 index 00000000000..c0f7a3dd1e5 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/lib/components/layout/layout.component.d.ts @@ -0,0 +1,3 @@ +export declare class LayoutComponent { + isCollapsed: boolean; +} diff --git a/npm/ng-packs/dist/theme-basic/lib/components/profile/profile.component.d.ts b/npm/ng-packs/dist/theme-basic/lib/components/profile/profile.component.d.ts new file mode 100644 index 00000000000..ad787579cac --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/lib/components/profile/profile.component.d.ts @@ -0,0 +1,19 @@ +import { Profile } from '@abp/ng.core'; +import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +export declare class ProfileComponent implements OnChanges { + private fb; + private store; + protected _visible: any; + visible: boolean; + visibleChange: EventEmitter; + profile$: Observable; + form: FormGroup; + constructor(fb: FormBuilder, store: Store); + buildForm(): void; + onSubmit(): void; + openModal(): void; + ngOnChanges({ visible }: SimpleChanges): void; +} diff --git a/npm/ng-packs/dist/theme-basic/lib/models/index.d.ts b/npm/ng-packs/dist/theme-basic/lib/models/index.d.ts new file mode 100644 index 00000000000..5d15fe1b3ce --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/lib/models/index.d.ts @@ -0,0 +1 @@ +export * from './layout'; diff --git a/npm/ng-packs/dist/theme-basic/lib/models/layout.d.ts b/npm/ng-packs/dist/theme-basic/lib/models/layout.d.ts new file mode 100644 index 00000000000..f172d9682f5 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/lib/models/layout.d.ts @@ -0,0 +1,11 @@ +import { TemplateRef } from '@angular/core'; +export declare namespace Layout { + interface State { + navigationElements: NavigationElement[]; + } + interface NavigationElement { + name: string; + element: TemplateRef; + order?: number; + } +} diff --git a/npm/ng-packs/dist/theme-basic/lib/states/index.d.ts b/npm/ng-packs/dist/theme-basic/lib/states/index.d.ts new file mode 100644 index 00000000000..71bff26b8ba --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/lib/states/index.d.ts @@ -0,0 +1 @@ +export * from "./layout.state"; diff --git a/npm/ng-packs/dist/theme-basic/lib/states/layout.state.d.ts b/npm/ng-packs/dist/theme-basic/lib/states/layout.state.d.ts new file mode 100644 index 00000000000..b6547200d4e --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/lib/states/layout.state.d.ts @@ -0,0 +1,8 @@ +import { StateContext } from '@ngxs/store'; +import { LayoutAddNavigationElement, LayoutRemoveNavigationElementByName } from '../actions/layout.actions'; +import { Layout } from '../models/layout'; +export declare class LayoutState { + static getNavigationElements({ navigationElements }: Layout.State): Layout.NavigationElement[]; + layoutAddAction({ getState, patchState }: StateContext, { payload }: LayoutAddNavigationElement): Layout.State; + layoutRemoveAction({ getState, patchState }: StateContext, { name }: LayoutRemoveNavigationElementByName): Layout.State; +} diff --git a/npm/ng-packs/dist/theme-basic/lib/theme-basic.module.d.ts b/npm/ng-packs/dist/theme-basic/lib/theme-basic.module.d.ts new file mode 100644 index 00000000000..84e9c65a01f --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/lib/theme-basic.module.d.ts @@ -0,0 +1,5 @@ +import { LayoutApplicationComponent } from './components/layout-application/layout-application.component'; +import { LayoutEmptyComponent } from './components/layout-empty/layout-empty.component'; +export declare const LAYOUTS: (typeof LayoutApplicationComponent | typeof LayoutEmptyComponent)[]; +export declare class ThemeBasicModule { +} diff --git a/npm/ng-packs/dist/theme-basic/package.json b/npm/ng-packs/dist/theme-basic/package.json new file mode 100644 index 00000000000..d38574f6643 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/package.json @@ -0,0 +1,21 @@ +{ + "name": "@abp/ng.theme.basic", + "version": "0.8.0", + "dependencies": { + "@abp/ng.theme.shared": "^0.8.0", + "tslib": "^1.9.0" + }, + "publishConfig": { + "access": "public" + }, + "main": "bundles/abp-ng.theme.basic.umd.js", + "module": "fesm5/abp-ng.theme.basic.js", + "es2015": "fesm2015/abp-ng.theme.basic.js", + "esm5": "esm5/abp-ng.theme.basic.js", + "esm2015": "esm2015/abp-ng.theme.basic.js", + "fesm5": "fesm5/abp-ng.theme.basic.js", + "fesm2015": "fesm2015/abp-ng.theme.basic.js", + "typings": "abp-ng.theme.basic.d.ts", + "metadata": "abp-ng.theme.basic.metadata.json", + "sideEffects": false +} diff --git a/npm/ng-packs/dist/theme-basic/public-api.d.ts b/npm/ng-packs/dist/theme-basic/public-api.d.ts new file mode 100644 index 00000000000..eb08fe58c42 --- /dev/null +++ b/npm/ng-packs/dist/theme-basic/public-api.d.ts @@ -0,0 +1,5 @@ +export * from './lib/theme-basic.module'; +export * from './lib/actions'; +export * from './lib/components'; +export * from './lib/models'; +export * from './lib/states'; diff --git a/npm/ng-packs/dist/theme-shared/README.md b/npm/ng-packs/dist/theme-shared/README.md new file mode 100644 index 00000000000..0e215e6579e --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/README.md @@ -0,0 +1 @@ +

    @abp/ng.theme.shared

    diff --git a/npm/ng-packs/dist/theme-shared/abp-ng.theme.shared.d.ts b/npm/ng-packs/dist/theme-shared/abp-ng.theme.shared.d.ts new file mode 100644 index 00000000000..c4bca9a6128 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/abp-ng.theme.shared.d.ts @@ -0,0 +1,12 @@ +/** + * Generated bundle index. Do not edit. + */ +export * from './public-api'; +export { AbstractToasterClass as ɵc } from './lib/abstracts/toaster'; +export { ConfirmationComponent as ɵa } from './lib/components/confirmation/confirmation.component'; +export { ErrorComponent as ɵf } from './lib/components/errors/error.component'; +export { LoaderBarComponent as ɵg } from './lib/components/loader-bar/loader-bar.component'; +export { ModalComponent as ɵe } from './lib/components/modal/modal.component'; +export { ToastComponent as ɵd } from './lib/components/toast/toast.component'; +export { ErrorHandler as ɵh } from './lib/handlers/error.handler'; +export { ConfirmationService as ɵb } from './lib/services/confirmation.service'; diff --git a/npm/ng-packs/dist/theme-shared/abp-ng.theme.shared.metadata.json b/npm/ng-packs/dist/theme-shared/abp-ng.theme.shared.metadata.json new file mode 100644 index 00000000000..0fd8642d332 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/abp-ng.theme.shared.metadata.json @@ -0,0 +1 @@ +{"__symbolic":"module","version":4,"exports":[{"from":"./lib/confirmation.service"},{"from":"./lib/toaster.service"},{"from":"./lib/modal/modal.component"}],"metadata":{"appendScript":{"__symbolic":"function"},"ThemeSharedModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":34,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@abp/ng.core","name":"CoreModule","line":36,"character":4},{"__symbolic":"reference","module":"primeng/toast","name":"ToastModule","line":37,"character":4},{"__symbolic":"reference","module":"@ng-bootstrap/ng-bootstrap","name":"NgbModalModule","line":38,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@ngx-validate/core","name":"NgxValidateCoreModule","line":39,"character":4},"member":"forRoot"},"arguments":[{"targetSelector":".form-group"}]}],"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵg"}],"exports":[{"__symbolic":"reference","module":"@ng-bootstrap/ng-bootstrap","name":"NgbModalModule","line":44,"character":12},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵg"}],"entryComponents":[{"__symbolic":"reference","name":"ɵf"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"ThemeSharedModule"},"providers":[{"provide":{"__symbolic":"reference","module":"@angular/core","name":"APP_INITIALIZER","line":53,"character":19},"multi":true,"deps":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":55,"character":17},{"__symbolic":"reference","name":"ɵh"}],"useFactory":{"__symbolic":"reference","name":"appendScript"}},{"provide":{"__symbolic":"reference","module":"primeng/components/common/messageservice","name":"MessageService","line":58,"character":19},"useClass":{"__symbolic":"reference","module":"primeng/components/common/messageservice","name":"MessageService","line":58,"character":45}}]}}}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"abp-confirmation","template":"\n \n \n
    \n

    \n {{ message.summary | abpLocalization: message.titleLocalizationParams }}\n

    \n
    \n
    \n {{ message.detail | abpLocalization: message.messageLocalizationParams }}\n
    \n\n \n
    \n \n "}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵb"}]}],"close":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵc"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{},"statics":{"ngInjectableDef":{}}},"ɵc":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"primeng/components/common/messageservice","name":"MessageService","line":11,"character":40}]}],"info":[{"__symbolic":"method"}],"success":[{"__symbolic":"method"}],"warn":[{"__symbolic":"method"}],"error":[{"__symbolic":"method"}],"show":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}]}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"abp-toast","template":"\n \n \n \n
    \n
    {{ message.summary | abpLocalization: message.titleLocalizationParams }}
    \n
    {{ message.detail | abpLocalization: message.messageLocalizationParams }}
    \n
    \n
    \n
    \n "}]}],"members":{}},"ɵe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":19,"character":1},"arguments":[{"selector":"abp-modal","template":"\n \n
    \n
    \n \n\n \n
    \n
    \n \n\n
    \n \n
    \n
    \n
    \n \n\n \n\n"}]}],"members":{"visible":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"centered":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"modalClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"visibleChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":54,"character":3}}]}],"abpHeader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":56,"character":3},"arguments":["abpHeader",{"static":false}]}]}],"abpBody":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":58,"character":3},"arguments":["abpBody",{"static":false}]}]}],"abpFooter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":60,"character":3},"arguments":["abpFooter",{"static":false}]}]}],"abpClose":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":62,"character":3},"arguments":["abpClose",{"static":false,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":62,"character":51}}]}]}],"modalContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":64,"character":3},"arguments":["abpModalContent",{"static":false}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":74,"character":32},{"__symbolic":"reference","name":"ɵb"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"setVisible":[{"__symbolic":"method"}],"listen":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}]}},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"abp-error","template":"\n
    \n \n
    \n
    \n
    \n

    \n {{ title }}\n

    \n
    \n {{ details }}\n
    \n \n
    \n
    \n
    \n
    \n ","styles":[".error{position:fixed;top:0;background-color:#fff;width:100vw;height:100vh;z-index:999999}.centered{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}"]}]}],"members":{"destroy":[{"__symbolic":"method"}]}},"ɵg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"abp-loader-bar","template":"\n
    \n
    \n
    \n ","styles":[".abp-loader-bar{left:0;opacity:0;position:fixed;top:0;transition:opacity .4s linear .4s;z-index:99999}.abp-loader-bar.is-loading{opacity:1;transition:none}.abp-loader-bar .abp-progress{background:#77b6ff;box-shadow:0 0 10px rgba(119,182,255,.7);height:2px;left:0;position:fixed;top:0;transition:width .4s}"]}]}],"members":{"containerClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"progressClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"isLoading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"filter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngxs/store","name":"Actions","line":33,"character":31},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":33,"character":56}]}],"ngOnDestroy":[{"__symbolic":"method"}],"startLoading":[{"__symbolic":"method"}],"stopLoading":[{"__symbolic":"method"}]}},"ɵh":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":39,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ngxs/store","name":"Actions","line":42,"character":21},{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":43,"character":19},{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","module":"@angular/core","name":"ApplicationRef","line":45,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":46,"character":19},{"__symbolic":"reference","module":"@angular/core","name":"RendererFactory2","line":47,"character":29},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":48,"character":22}]}],"showError":[{"__symbolic":"method"}],"navigateToLogin":[{"__symbolic":"method"}],"createErrorComponent":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}}},"origins":{"appendScript":"./lib/theme-shared.module","ThemeSharedModule":"./lib/theme-shared.module","ɵa":"./lib/components/confirmation/confirmation.component","ɵb":"./lib/services/confirmation.service","ɵc":"./lib/abstracts/toaster","ɵd":"./lib/components/toast/toast.component","ɵe":"./lib/components/modal/modal.component","ɵf":"./lib/components/errors/error.component","ɵg":"./lib/components/loader-bar/loader-bar.component","ɵh":"./lib/handlers/error.handler"},"importAs":"@abp/ng.theme.shared"} \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/bundles/abp-ng.theme.shared.umd.js b/npm/ng-packs/dist/theme-shared/bundles/abp-ng.theme.shared.umd.js new file mode 100644 index 00000000000..d08cba6c662 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/bundles/abp-ng.theme.shared.umd.js @@ -0,0 +1,951 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@abp/ng.core'), require('@angular/core'), require('@ng-bootstrap/ng-bootstrap'), require('@ngx-validate/core'), require('primeng/components/common/messageservice'), require('primeng/toast'), require('rxjs'), require('rxjs/operators'), require('@ngxs/store'), require('@angular/router'), require('@ngxs/router-plugin')) : + typeof define === 'function' && define.amd ? define('@abp/ng.theme.shared', ['exports', '@abp/ng.core', '@angular/core', '@ng-bootstrap/ng-bootstrap', '@ngx-validate/core', 'primeng/components/common/messageservice', 'primeng/toast', 'rxjs', 'rxjs/operators', '@ngxs/store', '@angular/router', '@ngxs/router-plugin'], factory) : + (global = global || self, factory((global.abp = global.abp || {}, global.abp.ng = global.abp.ng || {}, global.abp.ng.theme = global.abp.ng.theme || {}, global.abp.ng.theme.shared = {}), global.ng_core, global.ng.core, global.ngBootstrap, global.core$1, global.messageservice, global.toast, global.rxjs, global.rxjs.operators, global.store, global.ng.router, global.routerPlugin)); +}(this, function (exports, ng_core, core, ngBootstrap, core$1, messageservice, toast, rxjs, operators, store, router, routerPlugin) { 'use strict'; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; + } + + function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; + } + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + /** + * @template T + */ + var /** + * @template T + */ + AbstractToasterClass = /** @class */ (function () { + function AbstractToasterClass(messageService) { + this.messageService = messageService; + this.key = 'abpToast'; + this.sticky = false; + } + /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + AbstractToasterClass.prototype.info = /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + function (message, title, options) { + return this.show(message, title, 'info', options); + }; + /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + AbstractToasterClass.prototype.success = /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + function (message, title, options) { + return this.show(message, title, 'success', options); + }; + /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + AbstractToasterClass.prototype.warn = /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + function (message, title, options) { + return this.show(message, title, 'warn', options); + }; + /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + AbstractToasterClass.prototype.error = /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + function (message, title, options) { + return this.show(message, title, 'error', options); + }; + /** + * @protected + * @param {?} message + * @param {?} title + * @param {?} severity + * @param {?=} options + * @return {?} + */ + AbstractToasterClass.prototype.show = /** + * @protected + * @param {?} message + * @param {?} title + * @param {?} severity + * @param {?=} options + * @return {?} + */ + function (message, title, severity, options) { + this.messageService.clear(this.key); + this.messageService.add(__assign({ severity: severity, detail: message, summary: title }, options, { key: this.key }, (typeof (options || ((/** @type {?} */ ({})))).sticky === 'undefined' && { sticky: this.sticky }))); + this.status$ = new rxjs.Subject(); + return this.status$; + }; + /** + * @param {?=} status + * @return {?} + */ + AbstractToasterClass.prototype.clear = /** + * @param {?=} status + * @return {?} + */ + function (status) { + this.messageService.clear(this.key); + this.status$.next(status || "dismiss" /* dismiss */); + this.status$.complete(); + }; + return AbstractToasterClass; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var ConfirmationService = /** @class */ (function (_super) { + __extends(ConfirmationService, _super); + function ConfirmationService() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.key = 'abpConfirmation'; + _this.sticky = true; + return _this; + } + ConfirmationService.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] } + ]; + /** @nocollapse */ ConfirmationService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function ConfirmationService_Factory() { return new ConfirmationService(core.ɵɵinject(messageservice.MessageService)); }, token: ConfirmationService, providedIn: "root" }); + return ConfirmationService; + }(AbstractToasterClass)); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var ConfirmationComponent = /** @class */ (function () { + function ConfirmationComponent(confirmationService) { + this.confirmationService = confirmationService; + this.confirm = "confirm" /* confirm */; + this.reject = "reject" /* reject */; + this.dismiss = "dismiss" /* dismiss */; + } + /** + * @param {?} status + * @return {?} + */ + ConfirmationComponent.prototype.close = /** + * @param {?} status + * @return {?} + */ + function (status) { + this.confirmationService.clear(status); + }; + ConfirmationComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-confirmation', + template: "\n \n \n
    \n

    \n {{ message.summary | abpLocalization: message.titleLocalizationParams }}\n

    \n
    \n
    \n {{ message.detail | abpLocalization: message.messageLocalizationParams }}\n
    \n\n \n
    \n \n " + }] } + ]; + /** @nocollapse */ + ConfirmationComponent.ctorParameters = function () { return [ + { type: ConfirmationService } + ]; }; + return ConfirmationComponent; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var ErrorComponent = /** @class */ (function () { + function ErrorComponent() { + this.title = 'Oops!'; + this.details = 'Sorry, an error has occured.'; + } + /** + * @return {?} + */ + ErrorComponent.prototype.destroy = /** + * @return {?} + */ + function () { + this.renderer.removeChild(this.host, this.elementRef.nativeElement); + }; + ErrorComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-error', + template: "\n
    \n \n
    \n
    \n
    \n

    \n {{ title }}\n

    \n
    \n {{ details }}\n
    \n \n
    \n
    \n
    \n
    \n ", + styles: [".error{position:fixed;top:0;background-color:#fff;width:100vw;height:100vh;z-index:999999}.centered{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}"] + }] } + ]; + return ErrorComponent; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var LoaderBarComponent = /** @class */ (function () { + function LoaderBarComponent(actions, router$1) { + var _this = this; + this.actions = actions; + this.router = router$1; + this.containerClass = 'abp-loader-bar'; + this.progressClass = 'abp-progress'; + this.isLoading = false; + this.filter = (/** + * @param {?} action + * @return {?} + */ + function (action) { return action.payload.url.indexOf('openid-configuration') < 0; }); + this.progressLevel = 0; + actions + .pipe(store.ofActionSuccessful(ng_core.LoaderStart, ng_core.LoaderStop), operators.filter(this.filter), core$1.takeUntilDestroy(this)) + .subscribe((/** + * @param {?} action + * @return {?} + */ + function (action) { + if (action instanceof ng_core.LoaderStart) + _this.startLoading(); + else + _this.stopLoading(); + })); + router$1.events + .pipe(operators.filter((/** + * @param {?} event + * @return {?} + */ + function (event) { return event instanceof router.NavigationStart || event instanceof router.NavigationEnd; })), core$1.takeUntilDestroy(this)) + .subscribe((/** + * @param {?} event + * @return {?} + */ + function (event) { + if (event instanceof router.NavigationStart) + _this.startLoading(); + else + _this.stopLoading(); + })); + } + /** + * @return {?} + */ + LoaderBarComponent.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { }; + /** + * @return {?} + */ + LoaderBarComponent.prototype.startLoading = /** + * @return {?} + */ + function () { + var _this = this; + this.isLoading = true; + /** @type {?} */ + var interval = setInterval((/** + * @return {?} + */ + function () { + if (_this.progressLevel < 75) { + _this.progressLevel += Math.random() * 10; + } + else if (_this.progressLevel < 90) { + _this.progressLevel += 0.4; + } + else if (_this.progressLevel < 100) { + _this.progressLevel += 0.1; + } + else { + clearInterval(interval); + } + }), 300); + this.interval = interval; + }; + /** + * @return {?} + */ + LoaderBarComponent.prototype.stopLoading = /** + * @return {?} + */ + function () { + var _this = this; + clearInterval(this.interval); + this.progressLevel = 100; + this.isLoading = false; + setTimeout((/** + * @return {?} + */ + function () { + _this.progressLevel = 0; + }), 800); + }; + LoaderBarComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-loader-bar', + template: "\n
    \n
    \n
    \n ", + styles: [".abp-loader-bar{left:0;opacity:0;position:fixed;top:0;transition:opacity .4s linear .4s;z-index:99999}.abp-loader-bar.is-loading{opacity:1;transition:none}.abp-loader-bar .abp-progress{background:#77b6ff;box-shadow:0 0 10px rgba(119,182,255,.7);height:2px;left:0;position:fixed;top:0;transition:width .4s}"] + }] } + ]; + /** @nocollapse */ + LoaderBarComponent.ctorParameters = function () { return [ + { type: store.Actions }, + { type: router.Router } + ]; }; + LoaderBarComponent.propDecorators = { + containerClass: [{ type: core.Input }], + progressClass: [{ type: core.Input }], + isLoading: [{ type: core.Input }], + filter: [{ type: core.Input }] + }; + return LoaderBarComponent; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var ModalComponent = /** @class */ (function () { + function ModalComponent(renderer, confirmationService) { + this.renderer = renderer; + this.confirmationService = confirmationService; + this.centered = true; + this.modalClass = ''; + this.size = 'lg'; + this.visibleChange = new core.EventEmitter(); + this._visible = false; + this.closable = false; + this.isOpenConfirmation = false; + this.destroy$ = new rxjs.Subject(); + } + Object.defineProperty(ModalComponent.prototype, "visible", { + get: /** + * @return {?} + */ + function () { + return this._visible; + }, + set: /** + * @param {?} value + * @return {?} + */ + function (value) { + var _this = this; + if (!this.modalContent) { + setTimeout((/** + * @return {?} + */ + function () { return (_this.visible = value); }), 0); + return; + } + if (value) { + this.setVisible(value); + this.listen(); + } + else { + this.closable = false; + this.renderer.addClass(this.modalContent.nativeElement, 'fade-out-top'); + setTimeout((/** + * @return {?} + */ + function () { + _this.setVisible(value); + _this.renderer.removeClass(_this.modalContent.nativeElement, 'fade-out-top'); + _this.ngOnDestroy(); + }), 350); + } + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + ModalComponent.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { + this.destroy$.next(); + }; + /** + * @param {?} value + * @return {?} + */ + ModalComponent.prototype.setVisible = /** + * @param {?} value + * @return {?} + */ + function (value) { + var _this = this; + this._visible = value; + this.visibleChange.emit(value); + value + ? rxjs.timer(500) + .pipe(operators.take(1)) + .subscribe((/** + * @param {?} _ + * @return {?} + */ + function (_) { return (_this.closable = true); })) + : (this.closable = false); + }; + /** + * @return {?} + */ + ModalComponent.prototype.listen = /** + * @return {?} + */ + function () { + var _this = this; + rxjs.fromEvent(document, 'click') + .pipe(operators.debounceTime(350), operators.takeUntil(this.destroy$), operators.filter((/** + * @param {?} event + * @return {?} + */ + function (event) { + return event && + _this.closable && + _this.modalContent && + !_this.isOpenConfirmation && + !_this.modalContent.nativeElement.contains(event.target); + }))) + .subscribe((/** + * @param {?} _ + * @return {?} + */ + function (_) { + _this.close(); + })); + rxjs.fromEvent(document, 'keyup') + .pipe(operators.takeUntil(this.destroy$), operators.filter((/** + * @param {?} key + * @return {?} + */ + function (key) { return key && key.code === 'Escape' && _this.closable; })), operators.debounceTime(350)) + .subscribe((/** + * @param {?} _ + * @return {?} + */ + function (_) { + _this.close(); + })); + if (!this.abpClose) + return; + rxjs.fromEvent(this.abpClose.nativeElement, 'click') + .pipe(operators.takeUntil(this.destroy$), operators.filter((/** + * @return {?} + */ + function () { return !!(_this.closable && _this.modalContent); })), operators.debounceTime(350)) + .subscribe((/** + * @return {?} + */ + function () { return _this.close(); })); + }; + /** + * @return {?} + */ + ModalComponent.prototype.close = /** + * @return {?} + */ + function () { + var _this = this; + /** @type {?} */ + var nodes = getFlatNodes(((/** @type {?} */ (this.modalContent.nativeElement.querySelector('#abp-modal-body')))).childNodes); + if (hasNgDirty(nodes)) { + if (this.isOpenConfirmation) + return; + this.isOpenConfirmation = true; + this.confirmationService + .warn('AbpAccount::AreYouSureYouWantToCancelEditingWarningMessage', 'AbpAccount::AreYouSure') + .subscribe((/** + * @param {?} status + * @return {?} + */ + function (status) { + rxjs.timer(400).subscribe((/** + * @return {?} + */ + function () { + _this.isOpenConfirmation = false; + })); + if (status === "confirm" /* confirm */) { + _this.visible = false; + } + })); + } + else { + this.visible = false; + } + }; + ModalComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-modal', + template: "\n \n
    \n
    \n \n\n \n
    \n
    \n \n\n
    \n \n
    \n
    \n
    \n \n\n \n\n" + }] } + ]; + /** @nocollapse */ + ModalComponent.ctorParameters = function () { return [ + { type: core.Renderer2 }, + { type: ConfirmationService } + ]; }; + ModalComponent.propDecorators = { + visible: [{ type: core.Input }], + centered: [{ type: core.Input }], + modalClass: [{ type: core.Input }], + size: [{ type: core.Input }], + visibleChange: [{ type: core.Output }], + abpHeader: [{ type: core.ContentChild, args: ['abpHeader', { static: false },] }], + abpBody: [{ type: core.ContentChild, args: ['abpBody', { static: false },] }], + abpFooter: [{ type: core.ContentChild, args: ['abpFooter', { static: false },] }], + abpClose: [{ type: core.ContentChild, args: ['abpClose', { static: false, read: core.ElementRef },] }], + modalContent: [{ type: core.ViewChild, args: ['abpModalContent', { static: false },] }] + }; + return ModalComponent; + }()); + /** + * @param {?} nodes + * @return {?} + */ + function getFlatNodes(nodes) { + return Array.from(nodes).reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { return __spread(acc, (val.childNodes && val.childNodes.length ? Array.from(val.childNodes) : [val])); }), []); + } + /** + * @param {?} nodes + * @return {?} + */ + function hasNgDirty(nodes) { + return nodes.findIndex((/** + * @param {?} node + * @return {?} + */ + function (node) { return (node.className || '').indexOf('ng-dirty') > -1; })) > -1; + } + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var ToastComponent = /** @class */ (function () { + function ToastComponent() { + } + ToastComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'abp-toast', + template: "\n \n \n \n
    \n
    {{ message.summary | abpLocalization: message.titleLocalizationParams }}
    \n
    {{ message.detail | abpLocalization: message.messageLocalizationParams }}
    \n
    \n
    \n
    \n " + }] } + ]; + return ToastComponent; + }()); + + /** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var styles = "\n.is-invalid .form-control {\n border-color: #dc3545;\n border-style: solid !important;\n}\n\n.is-invalid .invalid-feedback,\n.is-invalid + * .invalid-feedback {\n display: block;\n}\n\n.data-tables-filter {\n text-align: right;\n}\n\n.pointer {\n cursor: pointer;\n}\n\n.navbar .dropdown-submenu a::after {\n transform: rotate(-90deg);\n position: absolute;\n right: 16px;\n top: 18px;\n}\n\n.modal {\n background-color: rgba(0, 0, 0, .6);\n}\n\n.abp-ellipsis {\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* = 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { MessageService } from 'primeng/components/common/messageservice';\nimport { Observable, Subject } from 'rxjs';\nimport { Toaster } from '../models/toaster';\n\nexport class AbstractToasterClass {\n protected status$: Subject;\n\n protected key: string = 'abpToast';\n\n protected sticky: boolean = false;\n\n constructor(protected messageService: MessageService) {}\n info(message: string, title: string, options?: T): Observable {\n return this.show(message, title, 'info', options);\n }\n\n success(message: string, title: string, options?: T): Observable {\n return this.show(message, title, 'success', options);\n }\n\n warn(message: string, title: string, options?: T): Observable {\n return this.show(message, title, 'warn', options);\n }\n\n error(message: string, title: string, options?: T): Observable {\n return this.show(message, title, 'error', options);\n }\n\n protected show(message: string, title: string, severity: Toaster.Severity, options?: T): Observable {\n this.messageService.clear(this.key);\n\n this.messageService.add({\n severity,\n detail: message,\n summary: title,\n ...options,\n key: this.key,\n ...(typeof (options || ({} as any)).sticky === 'undefined' && { sticky: this.sticky }),\n });\n this.status$ = new Subject();\n return this.status$;\n }\n\n clear(status?: Toaster.Status) {\n this.messageService.clear(this.key);\n this.status$.next(status || Toaster.Status.dismiss);\n this.status$.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractToasterClass } from '../abstracts/toaster';\nimport { Confirmation } from '../models/confirmation';\n\n@Injectable({ providedIn: 'root' })\nexport class ConfirmationService extends AbstractToasterClass {\n protected key: string = 'abpConfirmation';\n\n protected sticky: boolean = true;\n}\n","import { Component } from '@angular/core';\nimport { ConfirmationService } from '../../services/confirmation.service';\nimport { Toaster } from '../../models/toaster';\n\n@Component({\n selector: 'abp-confirmation',\n template: `\n \n \n
    \n

    \n {{ message.summary | abpLocalization: message.titleLocalizationParams }}\n

    \n
    \n
    \n {{ message.detail | abpLocalization: message.messageLocalizationParams }}\n
    \n\n \n
    \n \n `,\n})\nexport class ConfirmationComponent {\n confirm = Toaster.Status.confirm;\n reject = Toaster.Status.reject;\n dismiss = Toaster.Status.dismiss;\n\n constructor(private confirmationService: ConfirmationService) {}\n\n close(status: Toaster.Status) {\n this.confirmationService.clear(status);\n }\n}\n","import { Component, Renderer2, ElementRef } from '@angular/core';\n\n@Component({\n selector: 'abp-error',\n template: `\n
    \n \n
    \n
    \n
    \n

    \n {{ title }}\n

    \n
    \n {{ details }}\n
    \n \n
    \n
    \n
    \n
    \n `,\n styleUrls: ['error.component.scss'],\n})\nexport class ErrorComponent {\n title = 'Oops!';\n\n details = 'Sorry, an error has occured.';\n\n renderer: Renderer2;\n\n elementRef: ElementRef;\n\n host: any;\n\n destroy() {\n this.renderer.removeChild(this.host, this.elementRef.nativeElement);\n }\n}\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\nimport { Actions, ofActionSuccessful } from '@ngxs/store';\nimport { LoaderStart, LoaderStop } from '@abp/ng.core';\nimport { filter } from 'rxjs/operators';\nimport { Router, NavigationStart, NavigationEnd } from '@angular/router';\nimport { takeUntilDestroy } from '@ngx-validate/core';\n\n@Component({\n selector: 'abp-loader-bar',\n template: `\n
    \n
    \n
    \n `,\n styleUrls: ['./loader-bar.component.scss'],\n})\nexport class LoaderBarComponent implements OnDestroy {\n @Input()\n containerClass: string = 'abp-loader-bar';\n\n @Input()\n progressClass: string = 'abp-progress';\n\n @Input()\n isLoading: boolean = false;\n\n @Input()\n filter = (action: LoaderStart | LoaderStop) => action.payload.url.indexOf('openid-configuration') < 0;\n\n progressLevel: number = 0;\n\n interval: any;\n\n constructor(private actions: Actions, private router: Router) {\n actions\n .pipe(\n ofActionSuccessful(LoaderStart, LoaderStop),\n filter(this.filter),\n takeUntilDestroy(this),\n )\n .subscribe(action => {\n if (action instanceof LoaderStart) this.startLoading();\n else this.stopLoading();\n });\n\n router.events\n .pipe(\n filter(event => event instanceof NavigationStart || event instanceof NavigationEnd),\n takeUntilDestroy(this),\n )\n .subscribe(event => {\n if (event instanceof NavigationStart) this.startLoading();\n else this.stopLoading();\n });\n }\n\n ngOnDestroy() {}\n\n startLoading() {\n this.isLoading = true;\n const interval = setInterval(() => {\n if (this.progressLevel < 75) {\n this.progressLevel += Math.random() * 10;\n } else if (this.progressLevel < 90) {\n this.progressLevel += 0.4;\n } else if (this.progressLevel < 100) {\n this.progressLevel += 0.1;\n } else {\n clearInterval(interval);\n }\n }, 300);\n\n this.interval = interval;\n }\n\n stopLoading() {\n clearInterval(this.interval);\n this.progressLevel = 100;\n this.isLoading = false;\n\n setTimeout(() => {\n this.progressLevel = 0;\n }, 800);\n }\n}\n","import {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { fromEvent, Subject, timer } from 'rxjs';\nimport { debounceTime, filter, take, takeUntil } from 'rxjs/operators';\nimport { ConfirmationService } from '../../services/confirmation.service';\nimport { Toaster } from '../../models/toaster';\n\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'xl';\n\n@Component({\n selector: 'abp-modal',\n templateUrl: './modal.component.html',\n})\nexport class ModalComponent implements OnDestroy {\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n set visible(value: boolean) {\n if (!this.modalContent) {\n setTimeout(() => (this.visible = value), 0);\n return;\n }\n\n if (value) {\n this.setVisible(value);\n this.listen();\n } else {\n this.closable = false;\n this.renderer.addClass(this.modalContent.nativeElement, 'fade-out-top');\n setTimeout(() => {\n this.setVisible(value);\n this.renderer.removeClass(this.modalContent.nativeElement, 'fade-out-top');\n this.ngOnDestroy();\n }, 350);\n }\n }\n\n @Input() centered: boolean = true;\n\n @Input() modalClass: string = '';\n\n @Input() size: ModalSize = 'lg';\n\n @Output() visibleChange = new EventEmitter();\n\n @ContentChild('abpHeader', { static: false }) abpHeader: TemplateRef;\n\n @ContentChild('abpBody', { static: false }) abpBody: TemplateRef;\n\n @ContentChild('abpFooter', { static: false }) abpFooter: TemplateRef;\n\n @ContentChild('abpClose', { static: false, read: ElementRef }) abpClose: ElementRef;\n\n @ViewChild('abpModalContent', { static: false }) modalContent: ElementRef;\n\n _visible: boolean = false;\n\n closable: boolean = false;\n\n isOpenConfirmation: boolean = false;\n\n destroy$ = new Subject();\n\n constructor(private renderer: Renderer2, private confirmationService: ConfirmationService) {}\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n\n setVisible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(value);\n value\n ? timer(500)\n .pipe(take(1))\n .subscribe(_ => (this.closable = true))\n : (this.closable = false);\n }\n\n listen() {\n fromEvent(document, 'click')\n .pipe(\n debounceTime(350),\n takeUntil(this.destroy$),\n filter(\n (event: MouseEvent) =>\n event &&\n this.closable &&\n this.modalContent &&\n !this.isOpenConfirmation &&\n !this.modalContent.nativeElement.contains(event.target),\n ),\n )\n .subscribe(_ => {\n this.close();\n });\n\n fromEvent(document, 'keyup')\n .pipe(\n takeUntil(this.destroy$),\n filter((key: KeyboardEvent) => key && key.code === 'Escape' && this.closable),\n debounceTime(350),\n )\n .subscribe(_ => {\n this.close();\n });\n\n if (!this.abpClose) return;\n\n fromEvent(this.abpClose.nativeElement, 'click')\n .pipe(\n takeUntil(this.destroy$),\n filter(() => !!(this.closable && this.modalContent)),\n debounceTime(350),\n )\n .subscribe(() => this.close());\n }\n\n close() {\n const nodes = getFlatNodes(\n (this.modalContent.nativeElement.querySelector('#abp-modal-body') as HTMLElement).childNodes,\n );\n\n if (hasNgDirty(nodes)) {\n if (this.isOpenConfirmation) return;\n\n this.isOpenConfirmation = true;\n this.confirmationService\n .warn('AbpAccount::AreYouSureYouWantToCancelEditingWarningMessage', 'AbpAccount::AreYouSure')\n .subscribe((status: Toaster.Status) => {\n timer(400).subscribe(() => {\n this.isOpenConfirmation = false;\n });\n\n if (status === Toaster.Status.confirm) {\n this.visible = false;\n }\n });\n } else {\n this.visible = false;\n }\n }\n}\n\nfunction getFlatNodes(nodes: NodeList): HTMLElement[] {\n return Array.from(nodes).reduce(\n (acc, val) => [...acc, ...(val.childNodes && val.childNodes.length ? Array.from(val.childNodes) : [val])],\n [],\n );\n}\n\nfunction hasNgDirty(nodes: HTMLElement[]) {\n return nodes.findIndex(node => (node.className || '').indexOf('ng-dirty') > -1) > -1;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'abp-toast',\n template: `\n \n \n \n
    \n
    {{ message.summary | abpLocalization: message.titleLocalizationParams }}
    \n
    {{ message.detail | abpLocalization: message.messageLocalizationParams }}
    \n
    \n
    \n
    \n `,\n})\nexport class ToastComponent {}\n","export default `\n.is-invalid .form-control {\n border-color: #dc3545;\n border-style: solid !important;\n}\n\n.is-invalid .invalid-feedback,\n.is-invalid + * .invalid-feedback {\n display: block;\n}\n\n.data-tables-filter {\n text-align: right;\n}\n\n.pointer {\n cursor: pointer;\n}\n\n.navbar .dropdown-submenu a::after {\n transform: rotate(-90deg);\n position: absolute;\n right: 16px;\n top: 18px;\n}\n\n.modal {\n background-color: rgba(0, 0, 0, .6);\n}\n\n.abp-ellipsis {\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* {\n const { payload: err = {} as HttpErrorResponse | any } = res;\n const body = (err as HttpErrorResponse).error.error;\n\n if (err.headers.get('_AbpErrorFormat')) {\n const confirmation$ = this.showError(null, null, body);\n\n if (err.status === 401) {\n confirmation$.subscribe(() => {\n this.navigateToLogin();\n });\n }\n } else {\n switch ((err as HttpErrorResponse).status) {\n case 401:\n this.showError(DEFAULTS.defaultError401.details, DEFAULTS.defaultError401.message).subscribe(() =>\n this.navigateToLogin(),\n );\n break;\n case 403:\n this.createErrorComponent({\n title: DEFAULTS.defaultError403.message,\n details: DEFAULTS.defaultError403.details,\n });\n break;\n case 404:\n this.showError(DEFAULTS.defaultError404.details, DEFAULTS.defaultError404.message);\n break;\n case 500:\n this.createErrorComponent({\n title: '500',\n details: 'Sorry, an error has occured.',\n });\n break;\n case 0:\n if ((err as HttpErrorResponse).statusText === 'Unknown Error') {\n this.createErrorComponent({\n title: 'Unknown Error',\n details: 'Sorry, an error has occured.',\n });\n }\n break;\n default:\n this.showError(DEFAULTS.defaultError.details, DEFAULTS.defaultError.message);\n break;\n }\n }\n });\n }\n\n private showError(message?: string, title?: string, body?: any): Observable {\n if (body) {\n if (body.details) {\n message = body.details;\n title = body.message;\n } else {\n message = body.message || DEFAULTS.defaultError.message;\n }\n }\n\n return this.confirmationService.error(message, title, {\n hideCancelBtn: true,\n yesCopy: 'OK',\n });\n }\n\n private navigateToLogin() {\n this.store.dispatch(\n new Navigate(['/account/login'], null, {\n state: { redirectUrl: this.store.selectSnapshot(RouterState).state.url },\n }),\n );\n }\n\n createErrorComponent(instance: Partial) {\n const renderer = this.rendererFactory.createRenderer(null, null);\n const host = renderer.selectRootElement('app-root', true);\n\n const componentRef = this.cfRes.resolveComponentFactory(ErrorComponent).create(this.injector);\n\n for (const key in componentRef.instance) {\n if (componentRef.instance.hasOwnProperty(key)) {\n componentRef.instance[key] = instance[key];\n }\n }\n\n this.appRef.attachView(componentRef.hostView);\n renderer.appendChild(host, (componentRef.hostView as EmbeddedViewRef).rootNodes[0]);\n\n componentRef.instance.renderer = renderer;\n componentRef.instance.elementRef = componentRef.location;\n componentRef.instance.host = host;\n }\n}\n","import { CoreModule, LazyLoadService } from '@abp/ng.core';\nimport { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgbModalModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { MessageService } from 'primeng/components/common/messageservice';\nimport { ToastModule } from 'primeng/toast';\nimport { forkJoin } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { ConfirmationComponent } from './components/confirmation/confirmation.component';\nimport { ErrorComponent } from './components/errors/error.component';\nimport { LoaderBarComponent } from './components/loader-bar/loader-bar.component';\nimport { ModalComponent } from './components/modal/modal.component';\nimport { ToastComponent } from './components/toast/toast.component';\nimport styles from './contants/styles';\nimport { ErrorHandler } from './handlers/error.handler';\n\nexport function appendScript(injector: Injector) {\n const fn = function() {\n const lazyLoadService: LazyLoadService = injector.get(LazyLoadService);\n\n return forkJoin(\n lazyLoadService.load(\n null,\n 'style',\n styles,\n 'head',\n 'afterbegin',\n ) /* lazyLoadService.load(null, 'script', scripts) */,\n ).pipe(take(1));\n };\n\n return fn;\n}\n\n@NgModule({\n imports: [\n CoreModule,\n ToastModule,\n NgbModalModule,\n NgxValidateCoreModule.forRoot({\n targetSelector: '.form-group',\n }),\n ],\n declarations: [ConfirmationComponent, ToastComponent, ModalComponent, ErrorComponent, LoaderBarComponent],\n exports: [NgbModalModule, ConfirmationComponent, ToastComponent, ModalComponent, LoaderBarComponent],\n entryComponents: [ErrorComponent],\n})\nexport class ThemeSharedModule {\n static forRoot(): ModuleWithProviders {\n return {\n ngModule: ThemeSharedModule,\n providers: [\n {\n provide: APP_INITIALIZER,\n multi: true,\n deps: [Injector, ErrorHandler],\n useFactory: appendScript,\n },\n { provide: MessageService, useClass: MessageService },\n ],\n };\n }\n}\n","import { Toaster } from './toaster';\n\nexport namespace Confirmation {\n export interface Options extends Toaster.Options {\n hideCancelBtn?: boolean;\n hideYesBtn?: boolean;\n cancelCopy?: string;\n yesCopy?: string;\n }\n}\n","export namespace Toaster {\n export interface Options {\n id?: any;\n closable?: boolean;\n life?: number;\n sticky?: boolean;\n data?: any;\n messageLocalizationParams?: string[];\n titleLocalizationParams?: string[];\n }\n\n export type Severity = 'success' | 'info' | 'warn' | 'error';\n\n export const enum Status {\n confirm = 'confirm',\n reject = 'reject',\n dismiss = 'dismiss',\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractToasterClass } from '../abstracts/toaster';\nimport { Message } from 'primeng/components/common/message';\n\n@Injectable({ providedIn: 'root' })\nexport class ToasterService extends AbstractToasterClass {\n addAll(messages: Message[]): void {\n this.messageService.addAll(messages.map(message => ({ key: this.key, ...message })));\n }\n}\n"],"names":["Subject","tslib_1.__extends","Injectable","Component","router","ofActionSuccessful","LoaderStart","LoaderStop","filter","takeUntilDestroy","NavigationStart","NavigationEnd","Actions","Router","Input","EventEmitter","timer","take","fromEvent","debounceTime","takeUntil","Renderer2","Output","ContentChild","ElementRef","ViewChild","store","RestOccurError","Navigate","RouterState","Store","ApplicationRef","ComponentFactoryResolver","RendererFactory2","Injector","LazyLoadService","forkJoin","APP_INITIALIZER","MessageService","NgModule","CoreModule","ToastModule","NgbModalModule","NgxValidateCoreModule","Toaster"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/bundles/abp-ng.theme.shared.umd.min.js b/npm/ng-packs/dist/theme-shared/bundles/abp-ng.theme.shared.umd.min.js new file mode 100644 index 00000000000..82d7a2ec07c --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/bundles/abp-ng.theme.shared.umd.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@abp/ng.core"),require("@angular/core"),require("@ng-bootstrap/ng-bootstrap"),require("@ngx-validate/core"),require("primeng/components/common/messageservice"),require("primeng/toast"),require("rxjs"),require("rxjs/operators"),require("@ngxs/store"),require("@angular/router"),require("@ngxs/router-plugin")):"function"==typeof define&&define.amd?define("@abp/ng.theme.shared",["exports","@abp/ng.core","@angular/core","@ng-bootstrap/ng-bootstrap","@ngx-validate/core","primeng/components/common/messageservice","primeng/toast","rxjs","rxjs/operators","@ngxs/store","@angular/router","@ngxs/router-plugin"],t):t(((e=e||self).abp=e.abp||{},e.abp.ng=e.abp.ng||{},e.abp.ng.theme=e.abp.ng.theme||{},e.abp.ng.theme.shared={}),e.ng_core,e.ng.core,e.ngBootstrap,e.core$1,e.messageservice,e.toast,e.rxjs,e.rxjs.operators,e.store,e.ng.router,e.routerPlugin)}(this,function(e,t,n,o,r,i,s,a,c,l,p,d){"use strict";var u=function(e,t){return(u=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function f(e,t){function n(){this.constructor=e}u(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var m=function(){return(m=Object.assign||function(e){for(var t,n=1,o=arguments.length;n0)&&!(o=i.next()).done;)s.push(o.value)}catch(e){r={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return s}var h=function(){function e(e){this.messageService=e,this.key="abpToast",this.sticky=!1}return e.prototype.info=function(e,t,n){return this.show(e,t,"info",n)},e.prototype.success=function(e,t,n){return this.show(e,t,"success",n)},e.prototype.warn=function(e,t,n){return this.show(e,t,"warn",n)},e.prototype.error=function(e,t,n){return this.show(e,t,"error",n)},e.prototype.show=function(e,t,n,o){return this.messageService.clear(this.key),this.messageService.add(m({severity:n,detail:e,summary:t},o,{key:this.key},void 0===(o||{}).sticky&&{sticky:this.sticky})),this.status$=new a.Subject,this.status$},e.prototype.clear=function(e){this.messageService.clear(this.key),this.status$.next(e||"dismiss"),this.status$.complete()},e}(),b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.key="abpConfirmation",t.sticky=!0,t}return f(t,e),t.decorators=[{type:n.Injectable,args:[{providedIn:"root"}]}],t.ngInjectableDef=n.ɵɵdefineInjectable({factory:function(){return new t(n.ɵɵinject(i.MessageService))},token:t,providedIn:"root"}),t}(h),y=function(){function e(e){this.confirmationService=e,this.confirm="confirm",this.reject="reject",this.dismiss="dismiss"}return e.prototype.close=function(e){this.confirmationService.clear(e)},e.decorators=[{type:n.Component,args:[{selector:"abp-confirmation",template:'\n \n \n \n \n\n \n \n \n '}]}],e.ctorParameters=function(){return[{type:b}]},e}(),v=function(){function e(){this.title="Oops!",this.details="Sorry, an error has occured."}return e.prototype.destroy=function(){this.renderer.removeChild(this.host,this.elementRef.nativeElement)},e.decorators=[{type:n.Component,args:[{selector:"abp-error",template:'\n
    \n \n
    \n
    \n
    \n

    \n {{ title }}\n

    \n
    \n {{ details }}\n
    \n \n
    \n
    \n
    \n
    \n ',styles:[".error{position:fixed;top:0;background-color:#fff;width:100vw;height:100vh;z-index:999999}.centered{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}"]}]}],e}(),C=function(){function e(e,n){var o=this;this.actions=e,this.router=n,this.containerClass="abp-loader-bar",this.progressClass="abp-progress",this.isLoading=!1,this.filter=function(e){return e.payload.url.indexOf("openid-configuration")<0},this.progressLevel=0,e.pipe(l.ofActionSuccessful(t.LoaderStart,t.LoaderStop),c.filter(this.filter),r.takeUntilDestroy(this)).subscribe(function(e){e instanceof t.LoaderStart?o.startLoading():o.stopLoading()}),n.events.pipe(c.filter(function(e){return e instanceof p.NavigationStart||e instanceof p.NavigationEnd}),r.takeUntilDestroy(this)).subscribe(function(e){e instanceof p.NavigationStart?o.startLoading():o.stopLoading()})}return e.prototype.ngOnDestroy=function(){},e.prototype.startLoading=function(){var e=this;this.isLoading=!0;var t=setInterval(function(){e.progressLevel<75?e.progressLevel+=10*Math.random():e.progressLevel<90?e.progressLevel+=.4:e.progressLevel<100?e.progressLevel+=.1:clearInterval(t)},300);this.interval=t},e.prototype.stopLoading=function(){var e=this;clearInterval(this.interval),this.progressLevel=100,this.isLoading=!1,setTimeout(function(){e.progressLevel=0},800)},e.decorators=[{type:n.Component,args:[{selector:"abp-loader-bar",template:'\n
    \n
    \n
    \n ',styles:[".abp-loader-bar{left:0;opacity:0;position:fixed;top:0;transition:opacity .4s linear .4s;z-index:99999}.abp-loader-bar.is-loading{opacity:1;transition:none}.abp-loader-bar .abp-progress{background:#77b6ff;box-shadow:0 0 10px rgba(119,182,255,.7);height:2px;left:0;position:fixed;top:0;transition:width .4s}"]}]}],e.ctorParameters=function(){return[{type:l.Actions},{type:p.Router}]},e.propDecorators={containerClass:[{type:n.Input}],progressClass:[{type:n.Input}],isLoading:[{type:n.Input}],filter:[{type:n.Input}]},e}(),k=function(){function e(e,t){this.renderer=e,this.confirmationService=t,this.centered=!0,this.modalClass="",this.size="lg",this.visibleChange=new n.EventEmitter,this._visible=!1,this.closable=!1,this.isOpenConfirmation=!1,this.destroy$=new a.Subject}return Object.defineProperty(e.prototype,"visible",{get:function(){return this._visible},set:function(e){var t=this;this.modalContent?e?(this.setVisible(e),this.listen()):(this.closable=!1,this.renderer.addClass(this.modalContent.nativeElement,"fade-out-top"),setTimeout(function(){t.setVisible(e),t.renderer.removeClass(t.modalContent.nativeElement,"fade-out-top"),t.ngOnDestroy()},350)):setTimeout(function(){return t.visible=e},0)},enumerable:!0,configurable:!0}),e.prototype.ngOnDestroy=function(){this.destroy$.next()},e.prototype.setVisible=function(e){var t=this;this._visible=e,this.visibleChange.emit(e),e?a.timer(500).pipe(c.take(1)).subscribe(function(e){return t.closable=!0}):this.closable=!1},e.prototype.listen=function(){var e=this;a.fromEvent(document,"click").pipe(c.debounceTime(350),c.takeUntil(this.destroy$),c.filter(function(t){return t&&e.closable&&e.modalContent&&!e.isOpenConfirmation&&!e.modalContent.nativeElement.contains(t.target)})).subscribe(function(t){e.close()}),a.fromEvent(document,"keyup").pipe(c.takeUntil(this.destroy$),c.filter(function(t){return t&&"Escape"===t.code&&e.closable}),c.debounceTime(350)).subscribe(function(t){e.close()}),this.abpClose&&a.fromEvent(this.abpClose.nativeElement,"click").pipe(c.takeUntil(this.destroy$),c.filter(function(){return!(!e.closable||!e.modalContent)}),c.debounceTime(350)).subscribe(function(){return e.close()})},e.prototype.close=function(){var e=this;if(function(e){return e.findIndex(function(e){return(e.className||"").indexOf("ng-dirty")>-1})>-1}(function(e){return Array.from(e).reduce(function(e,t){return function(){for(var e=[],t=0;t\n \n \n \n\n \n\n'}]}],e.ctorParameters=function(){return[{type:n.Renderer2},{type:b}]},e.propDecorators={visible:[{type:n.Input}],centered:[{type:n.Input}],modalClass:[{type:n.Input}],size:[{type:n.Input}],visibleChange:[{type:n.Output}],abpHeader:[{type:n.ContentChild,args:["abpHeader",{static:!1}]}],abpBody:[{type:n.ContentChild,args:["abpBody",{static:!1}]}],abpFooter:[{type:n.ContentChild,args:["abpFooter",{static:!1}]}],abpClose:[{type:n.ContentChild,args:["abpClose",{static:!1,read:n.ElementRef}]}],modalContent:[{type:n.ViewChild,args:["abpModalContent",{static:!1}]}]},e}();var w=function(){function e(){}return e.decorators=[{type:n.Component,args:[{selector:"abp-toast",template:'\n \n \n \n
    \n
    {{ message.summary | abpLocalization: message.titleLocalizationParams }}
    \n
    {{ message.detail | abpLocalization: message.messageLocalizationParams }}
    \n
    \n
    \n
    \n '}]}],e}(),x="\n.is-invalid .form-control {\n border-color: #dc3545;\n border-style: solid !important;\n}\n\n.is-invalid .invalid-feedback,\n.is-invalid + * .invalid-feedback {\n display: block;\n}\n\n.data-tables-filter {\n text-align: right;\n}\n\n.pointer {\n cursor: pointer;\n}\n\n.navbar .dropdown-submenu a::after {\n transform: rotate(-90deg);\n position: absolute;\n right: 16px;\n top: 18px;\n}\n\n.modal {\n background-color: rgba(0, 0, 0, .6);\n}\n\n.abp-ellipsis {\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* = 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { MessageService } from 'primeng/components/common/messageservice';\nimport { Observable, Subject } from 'rxjs';\nimport { Toaster } from '../models/toaster';\n\nexport class AbstractToasterClass {\n protected status$: Subject;\n\n protected key: string = 'abpToast';\n\n protected sticky: boolean = false;\n\n constructor(protected messageService: MessageService) {}\n info(message: string, title: string, options?: T): Observable {\n return this.show(message, title, 'info', options);\n }\n\n success(message: string, title: string, options?: T): Observable {\n return this.show(message, title, 'success', options);\n }\n\n warn(message: string, title: string, options?: T): Observable {\n return this.show(message, title, 'warn', options);\n }\n\n error(message: string, title: string, options?: T): Observable {\n return this.show(message, title, 'error', options);\n }\n\n protected show(message: string, title: string, severity: Toaster.Severity, options?: T): Observable {\n this.messageService.clear(this.key);\n\n this.messageService.add({\n severity,\n detail: message,\n summary: title,\n ...options,\n key: this.key,\n ...(typeof (options || ({} as any)).sticky === 'undefined' && { sticky: this.sticky }),\n });\n this.status$ = new Subject();\n return this.status$;\n }\n\n clear(status?: Toaster.Status) {\n this.messageService.clear(this.key);\n this.status$.next(status || Toaster.Status.dismiss);\n this.status$.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractToasterClass } from '../abstracts/toaster';\nimport { Confirmation } from '../models/confirmation';\n\n@Injectable({ providedIn: 'root' })\nexport class ConfirmationService extends AbstractToasterClass {\n protected key: string = 'abpConfirmation';\n\n protected sticky: boolean = true;\n}\n","import { Component } from '@angular/core';\nimport { ConfirmationService } from '../../services/confirmation.service';\nimport { Toaster } from '../../models/toaster';\n\n@Component({\n selector: 'abp-confirmation',\n template: `\n \n \n
    \n

    \n {{ message.summary | abpLocalization: message.titleLocalizationParams }}\n

    \n
    \n
    \n {{ message.detail | abpLocalization: message.messageLocalizationParams }}\n
    \n\n \n
    \n \n `,\n})\nexport class ConfirmationComponent {\n confirm = Toaster.Status.confirm;\n reject = Toaster.Status.reject;\n dismiss = Toaster.Status.dismiss;\n\n constructor(private confirmationService: ConfirmationService) {}\n\n close(status: Toaster.Status) {\n this.confirmationService.clear(status);\n }\n}\n","import { Component, Renderer2, ElementRef } from '@angular/core';\n\n@Component({\n selector: 'abp-error',\n template: `\n
    \n \n
    \n
    \n
    \n

    \n {{ title }}\n

    \n
    \n {{ details }}\n
    \n \n
    \n
    \n
    \n
    \n `,\n styleUrls: ['error.component.scss'],\n})\nexport class ErrorComponent {\n title = 'Oops!';\n\n details = 'Sorry, an error has occured.';\n\n renderer: Renderer2;\n\n elementRef: ElementRef;\n\n host: any;\n\n destroy() {\n this.renderer.removeChild(this.host, this.elementRef.nativeElement);\n }\n}\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\nimport { Actions, ofActionSuccessful } from '@ngxs/store';\nimport { LoaderStart, LoaderStop } from '@abp/ng.core';\nimport { filter } from 'rxjs/operators';\nimport { Router, NavigationStart, NavigationEnd } from '@angular/router';\nimport { takeUntilDestroy } from '@ngx-validate/core';\n\n@Component({\n selector: 'abp-loader-bar',\n template: `\n
    \n
    \n
    \n `,\n styleUrls: ['./loader-bar.component.scss'],\n})\nexport class LoaderBarComponent implements OnDestroy {\n @Input()\n containerClass: string = 'abp-loader-bar';\n\n @Input()\n progressClass: string = 'abp-progress';\n\n @Input()\n isLoading: boolean = false;\n\n @Input()\n filter = (action: LoaderStart | LoaderStop) => action.payload.url.indexOf('openid-configuration') < 0;\n\n progressLevel: number = 0;\n\n interval: any;\n\n constructor(private actions: Actions, private router: Router) {\n actions\n .pipe(\n ofActionSuccessful(LoaderStart, LoaderStop),\n filter(this.filter),\n takeUntilDestroy(this),\n )\n .subscribe(action => {\n if (action instanceof LoaderStart) this.startLoading();\n else this.stopLoading();\n });\n\n router.events\n .pipe(\n filter(event => event instanceof NavigationStart || event instanceof NavigationEnd),\n takeUntilDestroy(this),\n )\n .subscribe(event => {\n if (event instanceof NavigationStart) this.startLoading();\n else this.stopLoading();\n });\n }\n\n ngOnDestroy() {}\n\n startLoading() {\n this.isLoading = true;\n const interval = setInterval(() => {\n if (this.progressLevel < 75) {\n this.progressLevel += Math.random() * 10;\n } else if (this.progressLevel < 90) {\n this.progressLevel += 0.4;\n } else if (this.progressLevel < 100) {\n this.progressLevel += 0.1;\n } else {\n clearInterval(interval);\n }\n }, 300);\n\n this.interval = interval;\n }\n\n stopLoading() {\n clearInterval(this.interval);\n this.progressLevel = 100;\n this.isLoading = false;\n\n setTimeout(() => {\n this.progressLevel = 0;\n }, 800);\n }\n}\n","import {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { fromEvent, Subject, timer } from 'rxjs';\nimport { debounceTime, filter, take, takeUntil } from 'rxjs/operators';\nimport { ConfirmationService } from '../../services/confirmation.service';\nimport { Toaster } from '../../models/toaster';\n\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'xl';\n\n@Component({\n selector: 'abp-modal',\n templateUrl: './modal.component.html',\n})\nexport class ModalComponent implements OnDestroy {\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n set visible(value: boolean) {\n if (!this.modalContent) {\n setTimeout(() => (this.visible = value), 0);\n return;\n }\n\n if (value) {\n this.setVisible(value);\n this.listen();\n } else {\n this.closable = false;\n this.renderer.addClass(this.modalContent.nativeElement, 'fade-out-top');\n setTimeout(() => {\n this.setVisible(value);\n this.renderer.removeClass(this.modalContent.nativeElement, 'fade-out-top');\n this.ngOnDestroy();\n }, 350);\n }\n }\n\n @Input() centered: boolean = true;\n\n @Input() modalClass: string = '';\n\n @Input() size: ModalSize = 'lg';\n\n @Output() visibleChange = new EventEmitter();\n\n @ContentChild('abpHeader', { static: false }) abpHeader: TemplateRef;\n\n @ContentChild('abpBody', { static: false }) abpBody: TemplateRef;\n\n @ContentChild('abpFooter', { static: false }) abpFooter: TemplateRef;\n\n @ContentChild('abpClose', { static: false, read: ElementRef }) abpClose: ElementRef;\n\n @ViewChild('abpModalContent', { static: false }) modalContent: ElementRef;\n\n _visible: boolean = false;\n\n closable: boolean = false;\n\n isOpenConfirmation: boolean = false;\n\n destroy$ = new Subject();\n\n constructor(private renderer: Renderer2, private confirmationService: ConfirmationService) {}\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n\n setVisible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(value);\n value\n ? timer(500)\n .pipe(take(1))\n .subscribe(_ => (this.closable = true))\n : (this.closable = false);\n }\n\n listen() {\n fromEvent(document, 'click')\n .pipe(\n debounceTime(350),\n takeUntil(this.destroy$),\n filter(\n (event: MouseEvent) =>\n event &&\n this.closable &&\n this.modalContent &&\n !this.isOpenConfirmation &&\n !this.modalContent.nativeElement.contains(event.target),\n ),\n )\n .subscribe(_ => {\n this.close();\n });\n\n fromEvent(document, 'keyup')\n .pipe(\n takeUntil(this.destroy$),\n filter((key: KeyboardEvent) => key && key.code === 'Escape' && this.closable),\n debounceTime(350),\n )\n .subscribe(_ => {\n this.close();\n });\n\n if (!this.abpClose) return;\n\n fromEvent(this.abpClose.nativeElement, 'click')\n .pipe(\n takeUntil(this.destroy$),\n filter(() => !!(this.closable && this.modalContent)),\n debounceTime(350),\n )\n .subscribe(() => this.close());\n }\n\n close() {\n const nodes = getFlatNodes(\n (this.modalContent.nativeElement.querySelector('#abp-modal-body') as HTMLElement).childNodes,\n );\n\n if (hasNgDirty(nodes)) {\n if (this.isOpenConfirmation) return;\n\n this.isOpenConfirmation = true;\n this.confirmationService\n .warn('AbpAccount::AreYouSureYouWantToCancelEditingWarningMessage', 'AbpAccount::AreYouSure')\n .subscribe((status: Toaster.Status) => {\n timer(400).subscribe(() => {\n this.isOpenConfirmation = false;\n });\n\n if (status === Toaster.Status.confirm) {\n this.visible = false;\n }\n });\n } else {\n this.visible = false;\n }\n }\n}\n\nfunction getFlatNodes(nodes: NodeList): HTMLElement[] {\n return Array.from(nodes).reduce(\n (acc, val) => [...acc, ...(val.childNodes && val.childNodes.length ? Array.from(val.childNodes) : [val])],\n [],\n );\n}\n\nfunction hasNgDirty(nodes: HTMLElement[]) {\n return nodes.findIndex(node => (node.className || '').indexOf('ng-dirty') > -1) > -1;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'abp-toast',\n template: `\n \n \n \n
    \n
    {{ message.summary | abpLocalization: message.titleLocalizationParams }}
    \n
    {{ message.detail | abpLocalization: message.messageLocalizationParams }}
    \n
    \n
    \n
    \n `,\n})\nexport class ToastComponent {}\n","export default `\n.is-invalid .form-control {\n border-color: #dc3545;\n border-style: solid !important;\n}\n\n.is-invalid .invalid-feedback,\n.is-invalid + * .invalid-feedback {\n display: block;\n}\n\n.data-tables-filter {\n text-align: right;\n}\n\n.pointer {\n cursor: pointer;\n}\n\n.navbar .dropdown-submenu a::after {\n transform: rotate(-90deg);\n position: absolute;\n right: 16px;\n top: 18px;\n}\n\n.modal {\n background-color: rgba(0, 0, 0, .6);\n}\n\n.abp-ellipsis {\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* {\n const { payload: err = {} as HttpErrorResponse | any } = res;\n const body = (err as HttpErrorResponse).error.error;\n\n if (err.headers.get('_AbpErrorFormat')) {\n const confirmation$ = this.showError(null, null, body);\n\n if (err.status === 401) {\n confirmation$.subscribe(() => {\n this.navigateToLogin();\n });\n }\n } else {\n switch ((err as HttpErrorResponse).status) {\n case 401:\n this.showError(DEFAULTS.defaultError401.details, DEFAULTS.defaultError401.message).subscribe(() =>\n this.navigateToLogin(),\n );\n break;\n case 403:\n this.createErrorComponent({\n title: DEFAULTS.defaultError403.message,\n details: DEFAULTS.defaultError403.details,\n });\n break;\n case 404:\n this.showError(DEFAULTS.defaultError404.details, DEFAULTS.defaultError404.message);\n break;\n case 500:\n this.createErrorComponent({\n title: '500',\n details: 'Sorry, an error has occured.',\n });\n break;\n case 0:\n if ((err as HttpErrorResponse).statusText === 'Unknown Error') {\n this.createErrorComponent({\n title: 'Unknown Error',\n details: 'Sorry, an error has occured.',\n });\n }\n break;\n default:\n this.showError(DEFAULTS.defaultError.details, DEFAULTS.defaultError.message);\n break;\n }\n }\n });\n }\n\n private showError(message?: string, title?: string, body?: any): Observable {\n if (body) {\n if (body.details) {\n message = body.details;\n title = body.message;\n } else {\n message = body.message || DEFAULTS.defaultError.message;\n }\n }\n\n return this.confirmationService.error(message, title, {\n hideCancelBtn: true,\n yesCopy: 'OK',\n });\n }\n\n private navigateToLogin() {\n this.store.dispatch(\n new Navigate(['/account/login'], null, {\n state: { redirectUrl: this.store.selectSnapshot(RouterState).state.url },\n }),\n );\n }\n\n createErrorComponent(instance: Partial) {\n const renderer = this.rendererFactory.createRenderer(null, null);\n const host = renderer.selectRootElement('app-root', true);\n\n const componentRef = this.cfRes.resolveComponentFactory(ErrorComponent).create(this.injector);\n\n for (const key in componentRef.instance) {\n if (componentRef.instance.hasOwnProperty(key)) {\n componentRef.instance[key] = instance[key];\n }\n }\n\n this.appRef.attachView(componentRef.hostView);\n renderer.appendChild(host, (componentRef.hostView as EmbeddedViewRef).rootNodes[0]);\n\n componentRef.instance.renderer = renderer;\n componentRef.instance.elementRef = componentRef.location;\n componentRef.instance.host = host;\n }\n}\n","import { CoreModule, LazyLoadService } from '@abp/ng.core';\nimport { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgbModalModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { MessageService } from 'primeng/components/common/messageservice';\nimport { ToastModule } from 'primeng/toast';\nimport { forkJoin } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { ConfirmationComponent } from './components/confirmation/confirmation.component';\nimport { ErrorComponent } from './components/errors/error.component';\nimport { LoaderBarComponent } from './components/loader-bar/loader-bar.component';\nimport { ModalComponent } from './components/modal/modal.component';\nimport { ToastComponent } from './components/toast/toast.component';\nimport styles from './contants/styles';\nimport { ErrorHandler } from './handlers/error.handler';\n\nexport function appendScript(injector: Injector) {\n const fn = function() {\n const lazyLoadService: LazyLoadService = injector.get(LazyLoadService);\n\n return forkJoin(\n lazyLoadService.load(\n null,\n 'style',\n styles,\n 'head',\n 'afterbegin',\n ) /* lazyLoadService.load(null, 'script', scripts) */,\n ).pipe(take(1));\n };\n\n return fn;\n}\n\n@NgModule({\n imports: [\n CoreModule,\n ToastModule,\n NgbModalModule,\n NgxValidateCoreModule.forRoot({\n targetSelector: '.form-group',\n }),\n ],\n declarations: [ConfirmationComponent, ToastComponent, ModalComponent, ErrorComponent, LoaderBarComponent],\n exports: [NgbModalModule, ConfirmationComponent, ToastComponent, ModalComponent, LoaderBarComponent],\n entryComponents: [ErrorComponent],\n})\nexport class ThemeSharedModule {\n static forRoot(): ModuleWithProviders {\n return {\n ngModule: ThemeSharedModule,\n providers: [\n {\n provide: APP_INITIALIZER,\n multi: true,\n deps: [Injector, ErrorHandler],\n useFactory: appendScript,\n },\n { provide: MessageService, useClass: MessageService },\n ],\n };\n }\n}\n","import { Toaster } from './toaster';\n\nexport namespace Confirmation {\n export interface Options extends Toaster.Options {\n hideCancelBtn?: boolean;\n hideYesBtn?: boolean;\n cancelCopy?: string;\n yesCopy?: string;\n }\n}\n","export namespace Toaster {\n export interface Options {\n id?: any;\n closable?: boolean;\n life?: number;\n sticky?: boolean;\n data?: any;\n messageLocalizationParams?: string[];\n titleLocalizationParams?: string[];\n }\n\n export type Severity = 'success' | 'info' | 'warn' | 'error';\n\n export const enum Status {\n confirm = 'confirm',\n reject = 'reject',\n dismiss = 'dismiss',\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractToasterClass } from '../abstracts/toaster';\nimport { Message } from 'primeng/components/common/message';\n\n@Injectable({ providedIn: 'root' })\nexport class ToasterService extends AbstractToasterClass {\n addAll(messages: Message[]): void {\n this.messageService.addAll(messages.map(message => ({ key: this.key, ...message })));\n }\n}\n"]} \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm2015/abp-ng.theme.shared.js b/npm/ng-packs/dist/theme-shared/esm2015/abp-ng.theme.shared.js new file mode 100644 index 00000000000..e355417f472 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm2015/abp-ng.theme.shared.js @@ -0,0 +1,17 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { appendScript, ThemeSharedModule, ConfirmationComponent, ToastComponent, ModalComponent, Toaster, ConfirmationService, ToasterService } from './public-api'; +export { AbstractToasterClass as ɵc } from './lib/abstracts/toaster'; +export { ConfirmationComponent as ɵa } from './lib/components/confirmation/confirmation.component'; +export { ErrorComponent as ɵf } from './lib/components/errors/error.component'; +export { LoaderBarComponent as ɵg } from './lib/components/loader-bar/loader-bar.component'; +export { ModalComponent as ɵe } from './lib/components/modal/modal.component'; +export { ToastComponent as ɵd } from './lib/components/toast/toast.component'; +export { ErrorHandler as ɵh } from './lib/handlers/error.handler'; +export { ConfirmationService as ɵb } from './lib/services/confirmation.service'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLnRoZW1lLnNoYXJlZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuc2hhcmVkLyIsInNvdXJjZXMiOlsiYWJwLW5nLnRoZW1lLnNoYXJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEscUpBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMscUJBQXFCLElBQUksRUFBRSxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDakcsT0FBTyxFQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsa0JBQWtCLElBQUksRUFBRSxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDMUYsT0FBTyxFQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsY0FBYyxJQUFJLEVBQUUsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxZQUFZLElBQUksRUFBRSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyxNQUFNLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuXG5leHBvcnQge0Fic3RyYWN0VG9hc3RlckNsYXNzIGFzIMm1Y30gZnJvbSAnLi9saWIvYWJzdHJhY3RzL3RvYXN0ZXInO1xuZXhwb3J0IHtDb25maXJtYXRpb25Db21wb25lbnQgYXMgybVhfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbmZpcm1hdGlvbi9jb25maXJtYXRpb24uY29tcG9uZW50JztcbmV4cG9ydCB7RXJyb3JDb21wb25lbnQgYXMgybVmfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Vycm9ycy9lcnJvci5jb21wb25lbnQnO1xuZXhwb3J0IHtMb2FkZXJCYXJDb21wb25lbnQgYXMgybVnfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xvYWRlci1iYXIvbG9hZGVyLWJhci5jb21wb25lbnQnO1xuZXhwb3J0IHtNb2RhbENvbXBvbmVudCBhcyDJtWV9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCB7VG9hc3RDb21wb25lbnQgYXMgybVkfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RvYXN0L3RvYXN0LmNvbXBvbmVudCc7XG5leHBvcnQge0Vycm9ySGFuZGxlciBhcyDJtWh9IGZyb20gJy4vbGliL2hhbmRsZXJzL2Vycm9yLmhhbmRsZXInO1xuZXhwb3J0IHtDb25maXJtYXRpb25TZXJ2aWNlIGFzIMm1Yn0gZnJvbSAnLi9saWIvc2VydmljZXMvY29uZmlybWF0aW9uLnNlcnZpY2UnOyJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm2015/lib/abstracts/toaster.js b/npm/ng-packs/dist/theme-shared/esm2015/lib/abstracts/toaster.js new file mode 100644 index 00000000000..20bcdff0465 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm2015/lib/abstracts/toaster.js @@ -0,0 +1,100 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Subject } from 'rxjs'; +/** + * @template T + */ +export class AbstractToasterClass { + /** + * @param {?} messageService + */ + constructor(messageService) { + this.messageService = messageService; + this.key = 'abpToast'; + this.sticky = false; + } + /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + info(message, title, options) { + return this.show(message, title, 'info', options); + } + /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + success(message, title, options) { + return this.show(message, title, 'success', options); + } + /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + warn(message, title, options) { + return this.show(message, title, 'warn', options); + } + /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + error(message, title, options) { + return this.show(message, title, 'error', options); + } + /** + * @protected + * @param {?} message + * @param {?} title + * @param {?} severity + * @param {?=} options + * @return {?} + */ + show(message, title, severity, options) { + this.messageService.clear(this.key); + this.messageService.add(Object.assign({ severity, detail: message, summary: title }, options, { key: this.key }, (typeof (options || ((/** @type {?} */ ({})))).sticky === 'undefined' && { sticky: this.sticky }))); + this.status$ = new Subject(); + return this.status$; + } + /** + * @param {?=} status + * @return {?} + */ + clear(status) { + this.messageService.clear(this.key); + this.status$.next(status || "dismiss" /* dismiss */); + this.status$.complete(); + } +} +if (false) { + /** + * @type {?} + * @protected + */ + AbstractToasterClass.prototype.status$; + /** + * @type {?} + * @protected + */ + AbstractToasterClass.prototype.key; + /** + * @type {?} + * @protected + */ + AbstractToasterClass.prototype.sticky; + /** + * @type {?} + * @protected + */ + AbstractToasterClass.prototype.messageService; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Rlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuc2hhcmVkLyIsInNvdXJjZXMiOlsibGliL2Fic3RyYWN0cy90b2FzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBRzNDLE1BQU0sT0FBTyxvQkFBb0I7Ozs7SUFPL0IsWUFBc0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBSjFDLFFBQUcsR0FBVyxVQUFVLENBQUM7UUFFekIsV0FBTSxHQUFZLEtBQUssQ0FBQztJQUVxQixDQUFDOzs7Ozs7O0lBQ3hELElBQUksQ0FBQyxPQUFlLEVBQUUsS0FBYSxFQUFFLE9BQVc7UUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7Ozs7Ozs7SUFFRCxPQUFPLENBQUMsT0FBZSxFQUFFLEtBQWEsRUFBRSxPQUFXO1FBQ2pELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RCxDQUFDOzs7Ozs7O0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxLQUFhLEVBQUUsT0FBVztRQUM5QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7Ozs7OztJQUVELEtBQUssQ0FBQyxPQUFlLEVBQUUsS0FBYSxFQUFFLE9BQVc7UUFDL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUM7Ozs7Ozs7OztJQUVTLElBQUksQ0FBQyxPQUFlLEVBQUUsS0FBYSxFQUFFLFFBQTBCLEVBQUUsT0FBVztRQUNwRixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLGlCQUNyQixRQUFRLEVBQ1IsTUFBTSxFQUFFLE9BQU8sRUFDZixPQUFPLEVBQUUsS0FBSyxJQUNYLE9BQU8sSUFDVixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFDVixDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksQ0FBQyxtQkFBQSxFQUFFLEVBQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLFdBQVcsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFDdEYsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQWtCLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Ozs7O0lBRUQsS0FBSyxDQUFDLE1BQXVCO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLDJCQUEwQixDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMxQixDQUFDO0NBQ0Y7Ozs7OztJQTNDQyx1Q0FBMkM7Ozs7O0lBRTNDLG1DQUFtQzs7Ozs7SUFFbkMsc0NBQWtDOzs7OztJQUV0Qiw4Q0FBd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvY29tcG9uZW50cy9jb21tb24vbWVzc2FnZXNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9hc3RlciB9IGZyb20gJy4uL21vZGVscy90b2FzdGVyJztcblxuZXhwb3J0IGNsYXNzIEFic3RyYWN0VG9hc3RlckNsYXNzPFQgPSBUb2FzdGVyLk9wdGlvbnM+IHtcbiAgcHJvdGVjdGVkIHN0YXR1cyQ6IFN1YmplY3Q8VG9hc3Rlci5TdGF0dXM+O1xuXG4gIHByb3RlY3RlZCBrZXk6IHN0cmluZyA9ICdhYnBUb2FzdCc7XG5cbiAgcHJvdGVjdGVkIHN0aWNreTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UpIHt9XG4gIGluZm8obWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nLCBvcHRpb25zPzogVCk6IE9ic2VydmFibGU8VG9hc3Rlci5TdGF0dXM+IHtcbiAgICByZXR1cm4gdGhpcy5zaG93KG1lc3NhZ2UsIHRpdGxlLCAnaW5mbycsIG9wdGlvbnMpO1xuICB9XG5cbiAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIG9wdGlvbnM/OiBUKTogT2JzZXJ2YWJsZTxUb2FzdGVyLlN0YXR1cz4ge1xuICAgIHJldHVybiB0aGlzLnNob3cobWVzc2FnZSwgdGl0bGUsICdzdWNjZXNzJywgb3B0aW9ucyk7XG4gIH1cblxuICB3YXJuKG1lc3NhZ2U6IHN0cmluZywgdGl0bGU6IHN0cmluZywgb3B0aW9ucz86IFQpOiBPYnNlcnZhYmxlPFRvYXN0ZXIuU3RhdHVzPiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvdyhtZXNzYWdlLCB0aXRsZSwgJ3dhcm4nLCBvcHRpb25zKTtcbiAgfVxuXG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgdGl0bGU6IHN0cmluZywgb3B0aW9ucz86IFQpOiBPYnNlcnZhYmxlPFRvYXN0ZXIuU3RhdHVzPiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvdyhtZXNzYWdlLCB0aXRsZSwgJ2Vycm9yJywgb3B0aW9ucyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2hvdyhtZXNzYWdlOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIHNldmVyaXR5OiBUb2FzdGVyLlNldmVyaXR5LCBvcHRpb25zPzogVCk6IE9ic2VydmFibGU8VG9hc3Rlci5TdGF0dXM+IHtcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNsZWFyKHRoaXMua2V5KTtcblxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgIHNldmVyaXR5LFxuICAgICAgZGV0YWlsOiBtZXNzYWdlLFxuICAgICAgc3VtbWFyeTogdGl0bGUsXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAga2V5OiB0aGlzLmtleSxcbiAgICAgIC4uLih0eXBlb2YgKG9wdGlvbnMgfHwgKHt9IGFzIGFueSkpLnN0aWNreSA9PT0gJ3VuZGVmaW5lZCcgJiYgeyBzdGlja3k6IHRoaXMuc3RpY2t5IH0pLFxuICAgIH0pO1xuICAgIHRoaXMuc3RhdHVzJCA9IG5ldyBTdWJqZWN0PFRvYXN0ZXIuU3RhdHVzPigpO1xuICAgIHJldHVybiB0aGlzLnN0YXR1cyQ7XG4gIH1cblxuICBjbGVhcihzdGF0dXM/OiBUb2FzdGVyLlN0YXR1cykge1xuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY2xlYXIodGhpcy5rZXkpO1xuICAgIHRoaXMuc3RhdHVzJC5uZXh0KHN0YXR1cyB8fCBUb2FzdGVyLlN0YXR1cy5kaXNtaXNzKTtcbiAgICB0aGlzLnN0YXR1cyQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm2015/lib/components/confirmation/confirmation.component.js b/npm/ng-packs/dist/theme-shared/esm2015/lib/components/confirmation/confirmation.component.js new file mode 100644 index 00000000000..2224d732e7b --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm2015/lib/components/confirmation/confirmation.component.js @@ -0,0 +1,77 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component } from '@angular/core'; +import { ConfirmationService } from '../../services/confirmation.service'; +export class ConfirmationComponent { + /** + * @param {?} confirmationService + */ + constructor(confirmationService) { + this.confirmationService = confirmationService; + this.confirm = "confirm" /* confirm */; + this.reject = "reject" /* reject */; + this.dismiss = "dismiss" /* dismiss */; + } + /** + * @param {?} status + * @return {?} + */ + close(status) { + this.confirmationService.clear(status); + } +} +ConfirmationComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-confirmation', + template: ` + + + + + + + + + ` + }] } +]; +/** @nocollapse */ +ConfirmationComponent.ctorParameters = () => [ + { type: ConfirmationService } +]; +if (false) { + /** @type {?} */ + ConfirmationComponent.prototype.confirm; + /** @type {?} */ + ConfirmationComponent.prototype.reject; + /** @type {?} */ + ConfirmationComponent.prototype.dismiss; + /** + * @type {?} + * @private + */ + ConfirmationComponent.prototype.confirmationService; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuc2hhcmVkLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvY29uZmlybWF0aW9uL2NvbmZpcm1hdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFvQzFFLE1BQU0sT0FBTyxxQkFBcUI7Ozs7SUFLaEMsWUFBb0IsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFKNUQsWUFBTywyQkFBMEI7UUFDakMsV0FBTSx5QkFBeUI7UUFDL0IsWUFBTywyQkFBMEI7SUFFOEIsQ0FBQzs7Ozs7SUFFaEUsS0FBSyxDQUFDLE1BQXNCO1FBQzFCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQzs7O1lBMUNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJUO2FBQ0Y7Ozs7WUFuQ1EsbUJBQW1COzs7O0lBcUMxQix3Q0FBaUM7O0lBQ2pDLHVDQUErQjs7SUFDL0Isd0NBQWlDOzs7OztJQUVyQixvREFBZ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maXJtYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RvYXN0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtY29uZmlybWF0aW9uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8cC10b2FzdFxuICAgICAgcG9zaXRpb249XCJjZW50ZXJcIlxuICAgICAga2V5PVwiYWJwQ29uZmlybWF0aW9uXCJcbiAgICAgIChvbkNsb3NlKT1cImNsb3NlKGRpc21pc3MpXCJcbiAgICAgIFttb2RhbF09XCJ0cnVlXCJcbiAgICAgIFtiYXNlWkluZGV4XT1cIjEwMDBcIlxuICAgICAgc3R5bGVDbGFzcz1cIlwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlIGxldC1tZXNzYWdlIHBUZW1wbGF0ZT1cIm1lc3NhZ2VcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1lc3NhZ2Uuc3VtbWFyeVwiIGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cbiAgICAgICAgICAgIHt7IG1lc3NhZ2Uuc3VtbWFyeSB8IGFicExvY2FsaXphdGlvbjogbWVzc2FnZS50aXRsZUxvY2FsaXphdGlvblBhcmFtcyB9fVxuICAgICAgICAgIDwvaDQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICAgIHt7IG1lc3NhZ2UuZGV0YWlsIHwgYWJwTG9jYWxpemF0aW9uOiBtZXNzYWdlLm1lc3NhZ2VMb2NhbGl6YXRpb25QYXJhbXMgfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFtZXNzYWdlLmhpZGVDYW5jZWxCdG5cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJjbG9zZShyZWplY3QpXCI+XG4gICAgICAgICAgICB7eyBtZXNzYWdlLmNhbmNlbENvcHkgfHwgJ0FicElkZW50aXR5OjpDYW5jZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFtZXNzYWdlLmhpZGVZZXNCdG5cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJjbG9zZShjb25maXJtKVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgbWVzc2FnZS55ZXNDb3B5IHx8ICdBYnBJZGVudGl0eTo6WWVzJyB8IGFicExvY2FsaXphdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcC10b2FzdD5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlybWF0aW9uQ29tcG9uZW50IHtcbiAgY29uZmlybSA9IFRvYXN0ZXIuU3RhdHVzLmNvbmZpcm07XG4gIHJlamVjdCA9IFRvYXN0ZXIuU3RhdHVzLnJlamVjdDtcbiAgZGlzbWlzcyA9IFRvYXN0ZXIuU3RhdHVzLmRpc21pc3M7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlKSB7fVxuXG4gIGNsb3NlKHN0YXR1czogVG9hc3Rlci5TdGF0dXMpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY2xlYXIoc3RhdHVzKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm2015/lib/components/errors/error.component.js b/npm/ng-packs/dist/theme-shared/esm2015/lib/components/errors/error.component.js new file mode 100644 index 00000000000..53d41c0ad3e --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm2015/lib/components/errors/error.component.js @@ -0,0 +1,60 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component } from '@angular/core'; +export class ErrorComponent { + constructor() { + this.title = 'Oops!'; + this.details = 'Sorry, an error has occured.'; + } + /** + * @return {?} + */ + destroy() { + this.renderer.removeChild(this.host, this.elementRef.nativeElement); + } +} +ErrorComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-error', + template: ` +
    + +
    +
    +
    +

    + {{ title }} +

    +
    + {{ details }} +
    + +
    +
    +
    +
    + `, + styles: [".error{position:fixed;top:0;background-color:#fff;width:100vw;height:100vh;z-index:999999}.centered{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}"] + }] } +]; +if (false) { + /** @type {?} */ + ErrorComponent.prototype.title; + /** @type {?} */ + ErrorComponent.prototype.details; + /** @type {?} */ + ErrorComponent.prototype.renderer; + /** @type {?} */ + ErrorComponent.prototype.elementRef; + /** @type {?} */ + ErrorComponent.prototype.host; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5zaGFyZWQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9lcnJvcnMvZXJyb3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQThCakUsTUFBTSxPQUFPLGNBQWM7SUE1QjNCO1FBNkJFLFVBQUssR0FBRyxPQUFPLENBQUM7UUFFaEIsWUFBTyxHQUFHLDhCQUE4QixDQUFDO0lBVzNDLENBQUM7Ozs7SUFIQyxPQUFPO1FBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7OztZQXpDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1QlQ7O2FBRUY7Ozs7SUFFQywrQkFBZ0I7O0lBRWhCLGlDQUF5Qzs7SUFFekMsa0NBQW9COztJQUVwQixvQ0FBdUI7O0lBRXZCLDhCQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBSZW5kZXJlcjIsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWJwLWVycm9yJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZXJyb3JcIj5cbiAgICAgIDxidXR0b24gaWQ9XCJhYnAtY2xvc2UtYnV0dG9uIG1yLTJcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIChjbGljayk9XCJkZXN0cm95KClcIj5cbiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBjZW50ZXJlZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yLXRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8aDE+XG4gICAgICAgICAgICAgIHt7IHRpdGxlIH19XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAge3sgZGV0YWlscyB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3ItYWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8YSByb3V0ZXJMaW5rPVwiL1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1tZCBtdC0yXCJcbiAgICAgICAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJnbHlwaGljb24gZ2x5cGhpY29uLWhvbWVcIj48L3NwYW4+IFRha2UgbWUgaG9tZVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJ2Vycm9yLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEVycm9yQ29tcG9uZW50IHtcbiAgdGl0bGUgPSAnT29wcyEnO1xuXG4gIGRldGFpbHMgPSAnU29ycnksIGFuIGVycm9yIGhhcyBvY2N1cmVkLic7XG5cbiAgcmVuZGVyZXI6IFJlbmRlcmVyMjtcblxuICBlbGVtZW50UmVmOiBFbGVtZW50UmVmO1xuXG4gIGhvc3Q6IGFueTtcblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5ob3N0LCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm2015/lib/components/index.js b/npm/ng-packs/dist/theme-shared/esm2015/lib/components/index.js new file mode 100644 index 00000000000..c5ead0704c8 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm2015/lib/components/index.js @@ -0,0 +1,8 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { ConfirmationComponent } from './confirmation/confirmation.component'; +export { ToastComponent } from './toast/toast.component'; +export { ModalComponent } from './modal/modal.component'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLnNoYXJlZC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxzQ0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCwrQkFBYyx5QkFBeUIsQ0FBQztBQUN4QywrQkFBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlybWF0aW9uL2NvbmZpcm1hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90b2FzdC90b2FzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm2015/lib/components/loader-bar/loader-bar.component.js b/npm/ng-packs/dist/theme-shared/esm2015/lib/components/loader-bar/loader-bar.component.js new file mode 100644 index 00000000000..5e997731b14 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm2015/lib/components/loader-bar/loader-bar.component.js @@ -0,0 +1,147 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component, Input } from '@angular/core'; +import { Actions, ofActionSuccessful } from '@ngxs/store'; +import { LoaderStart, LoaderStop } from '@abp/ng.core'; +import { filter } from 'rxjs/operators'; +import { Router, NavigationStart, NavigationEnd } from '@angular/router'; +import { takeUntilDestroy } from '@ngx-validate/core'; +export class LoaderBarComponent { + /** + * @param {?} actions + * @param {?} router + */ + constructor(actions, router) { + this.actions = actions; + this.router = router; + this.containerClass = 'abp-loader-bar'; + this.progressClass = 'abp-progress'; + this.isLoading = false; + this.filter = (/** + * @param {?} action + * @return {?} + */ + (action) => action.payload.url.indexOf('openid-configuration') < 0); + this.progressLevel = 0; + actions + .pipe(ofActionSuccessful(LoaderStart, LoaderStop), filter(this.filter), takeUntilDestroy(this)) + .subscribe((/** + * @param {?} action + * @return {?} + */ + action => { + if (action instanceof LoaderStart) + this.startLoading(); + else + this.stopLoading(); + })); + router.events + .pipe(filter((/** + * @param {?} event + * @return {?} + */ + event => event instanceof NavigationStart || event instanceof NavigationEnd)), takeUntilDestroy(this)) + .subscribe((/** + * @param {?} event + * @return {?} + */ + event => { + if (event instanceof NavigationStart) + this.startLoading(); + else + this.stopLoading(); + })); + } + /** + * @return {?} + */ + ngOnDestroy() { } + /** + * @return {?} + */ + startLoading() { + this.isLoading = true; + /** @type {?} */ + const interval = setInterval((/** + * @return {?} + */ + () => { + if (this.progressLevel < 75) { + this.progressLevel += Math.random() * 10; + } + else if (this.progressLevel < 90) { + this.progressLevel += 0.4; + } + else if (this.progressLevel < 100) { + this.progressLevel += 0.1; + } + else { + clearInterval(interval); + } + }), 300); + this.interval = interval; + } + /** + * @return {?} + */ + stopLoading() { + clearInterval(this.interval); + this.progressLevel = 100; + this.isLoading = false; + setTimeout((/** + * @return {?} + */ + () => { + this.progressLevel = 0; + }), 800); + } +} +LoaderBarComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-loader-bar', + template: ` +
    +
    +
    + `, + styles: [".abp-loader-bar{left:0;opacity:0;position:fixed;top:0;transition:opacity .4s linear .4s;z-index:99999}.abp-loader-bar.is-loading{opacity:1;transition:none}.abp-loader-bar .abp-progress{background:#77b6ff;box-shadow:0 0 10px rgba(119,182,255,.7);height:2px;left:0;position:fixed;top:0;transition:width .4s}"] + }] } +]; +/** @nocollapse */ +LoaderBarComponent.ctorParameters = () => [ + { type: Actions }, + { type: Router } +]; +LoaderBarComponent.propDecorators = { + containerClass: [{ type: Input }], + progressClass: [{ type: Input }], + isLoading: [{ type: Input }], + filter: [{ type: Input }] +}; +if (false) { + /** @type {?} */ + LoaderBarComponent.prototype.containerClass; + /** @type {?} */ + LoaderBarComponent.prototype.progressClass; + /** @type {?} */ + LoaderBarComponent.prototype.isLoading; + /** @type {?} */ + LoaderBarComponent.prototype.filter; + /** @type {?} */ + LoaderBarComponent.prototype.progressLevel; + /** @type {?} */ + LoaderBarComponent.prototype.interval; + /** + * @type {?} + * @private + */ + LoaderBarComponent.prototype.actions; + /** + * @type {?} + * @private + */ + LoaderBarComponent.prototype.router; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLnNoYXJlZC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2xvYWRlci1iYXIvbG9hZGVyLWJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBV3RELE1BQU0sT0FBTyxrQkFBa0I7Ozs7O0lBaUI3QixZQUFvQixPQUFnQixFQUFVLE1BQWM7UUFBeEMsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFmNUQsbUJBQWMsR0FBVyxnQkFBZ0IsQ0FBQztRQUcxQyxrQkFBYSxHQUFXLGNBQWMsQ0FBQztRQUd2QyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRzNCLFdBQU07Ozs7UUFBRyxDQUFDLE1BQWdDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsRUFBQztRQUV0RyxrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUt4QixPQUFPO2FBQ0osSUFBSSxDQUNILGtCQUFrQixDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsRUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFDbkIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQ3ZCO2FBQ0EsU0FBUzs7OztRQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2xCLElBQUksTUFBTSxZQUFZLFdBQVc7Z0JBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDOztnQkFDbEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFCLENBQUMsRUFBQyxDQUFDO1FBRUwsTUFBTSxDQUFDLE1BQU07YUFDVixJQUFJLENBQ0gsTUFBTTs7OztRQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLGVBQWUsSUFBSSxLQUFLLFlBQVksYUFBYSxFQUFDLEVBQ25GLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUN2QjthQUNBLFNBQVM7Ozs7UUFBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixJQUFJLEtBQUssWUFBWSxlQUFlO2dCQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzs7Z0JBQ3JELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQixDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7SUFFRCxXQUFXLEtBQUksQ0FBQzs7OztJQUVoQixZQUFZO1FBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7O2NBQ2hCLFFBQVEsR0FBRyxXQUFXOzs7UUFBQyxHQUFHLEVBQUU7WUFDaEMsSUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQzFDO2lCQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDO2FBQzNCO2lCQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDO2FBQzNCO2lCQUFNO2dCQUNMLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN6QjtRQUNILENBQUMsR0FBRSxHQUFHLENBQUM7UUFFUCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDOzs7O0lBRUQsV0FBVztRQUNULGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsVUFBVTs7O1FBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDekIsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQzs7O1lBNUVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixRQUFRLEVBQUU7Ozs7R0FJVDs7YUFFRjs7OztZQWRRLE9BQU87WUFHUCxNQUFNOzs7NkJBYVosS0FBSzs0QkFHTCxLQUFLO3dCQUdMLEtBQUs7cUJBR0wsS0FBSzs7OztJQVROLDRDQUMwQzs7SUFFMUMsMkNBQ3VDOztJQUV2Qyx1Q0FDMkI7O0lBRTNCLG9DQUNzRzs7SUFFdEcsMkNBQTBCOztJQUUxQixzQ0FBYzs7Ozs7SUFFRixxQ0FBd0I7Ozs7O0lBQUUsb0NBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbnMsIG9mQWN0aW9uU3VjY2Vzc2Z1bCB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IExvYWRlclN0YXJ0LCBMb2FkZXJTdG9wIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvblN0YXJ0LCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3kgfSBmcm9tICdAbmd4LXZhbGlkYXRlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtbG9hZGVyLWJhcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBpZD1cImFicC1sb2FkZXItYmFyXCIgW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3NcIiBbY2xhc3MuaXMtbG9hZGluZ109XCJpc0xvYWRpbmdcIj5cbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwicHJvZ3Jlc3NDbGFzc1wiIFtzdHlsZS53aWR0aC52d109XCJwcm9ncmVzc0xldmVsXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2xvYWRlci1iYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTG9hZGVyQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgY29udGFpbmVyQ2xhc3M6IHN0cmluZyA9ICdhYnAtbG9hZGVyLWJhcic7XG5cbiAgQElucHV0KClcbiAgcHJvZ3Jlc3NDbGFzczogc3RyaW5nID0gJ2FicC1wcm9ncmVzcyc7XG5cbiAgQElucHV0KClcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZmlsdGVyID0gKGFjdGlvbjogTG9hZGVyU3RhcnQgfCBMb2FkZXJTdG9wKSA9PiBhY3Rpb24ucGF5bG9hZC51cmwuaW5kZXhPZignb3BlbmlkLWNvbmZpZ3VyYXRpb24nKSA8IDA7XG5cbiAgcHJvZ3Jlc3NMZXZlbDogbnVtYmVyID0gMDtcblxuICBpbnRlcnZhbDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9uczogQWN0aW9ucywgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xuICAgIGFjdGlvbnNcbiAgICAgIC5waXBlKFxuICAgICAgICBvZkFjdGlvblN1Y2Nlc3NmdWwoTG9hZGVyU3RhcnQsIExvYWRlclN0b3ApLFxuICAgICAgICBmaWx0ZXIodGhpcy5maWx0ZXIpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95KHRoaXMpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShhY3Rpb24gPT4ge1xuICAgICAgICBpZiAoYWN0aW9uIGluc3RhbmNlb2YgTG9hZGVyU3RhcnQpIHRoaXMuc3RhcnRMb2FkaW5nKCk7XG4gICAgICAgIGVsc2UgdGhpcy5zdG9wTG9hZGluZygpO1xuICAgICAgfSk7XG5cbiAgICByb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0IHx8IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3kodGhpcyksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB0aGlzLnN0YXJ0TG9hZGluZygpO1xuICAgICAgICBlbHNlIHRoaXMuc3RvcExvYWRpbmcoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7fVxuXG4gIHN0YXJ0TG9hZGluZygpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcm9ncmVzc0xldmVsIDwgNzUpIHtcbiAgICAgICAgdGhpcy5wcm9ncmVzc0xldmVsICs9IE1hdGgucmFuZG9tKCkgKiAxMDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9ncmVzc0xldmVsIDwgOTApIHtcbiAgICAgICAgdGhpcy5wcm9ncmVzc0xldmVsICs9IDAuNDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9ncmVzc0xldmVsIDwgMTAwKSB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NMZXZlbCArPSAwLjE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgIH1cbiAgICB9LCAzMDApO1xuXG4gICAgdGhpcy5pbnRlcnZhbCA9IGludGVydmFsO1xuICB9XG5cbiAgc3RvcExvYWRpbmcoKSB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcbiAgICB0aGlzLnByb2dyZXNzTGV2ZWwgPSAxMDA7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5wcm9ncmVzc0xldmVsID0gMDtcbiAgICB9LCA4MDApO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm2015/lib/components/modal/modal.component.js b/npm/ng-packs/dist/theme-shared/esm2015/lib/components/modal/modal.component.js new file mode 100644 index 00000000000..15e1a94f420 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm2015/lib/components/modal/modal.component.js @@ -0,0 +1,247 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component, ContentChild, ElementRef, EventEmitter, Input, Output, Renderer2, TemplateRef, ViewChild, } from '@angular/core'; +import { fromEvent, Subject, timer } from 'rxjs'; +import { debounceTime, filter, take, takeUntil } from 'rxjs/operators'; +import { ConfirmationService } from '../../services/confirmation.service'; +export class ModalComponent { + /** + * @param {?} renderer + * @param {?} confirmationService + */ + constructor(renderer, confirmationService) { + this.renderer = renderer; + this.confirmationService = confirmationService; + this.centered = true; + this.modalClass = ''; + this.size = 'lg'; + this.visibleChange = new EventEmitter(); + this._visible = false; + this.closable = false; + this.isOpenConfirmation = false; + this.destroy$ = new Subject(); + } + /** + * @return {?} + */ + get visible() { + return this._visible; + } + /** + * @param {?} value + * @return {?} + */ + set visible(value) { + if (!this.modalContent) { + setTimeout((/** + * @return {?} + */ + () => (this.visible = value)), 0); + return; + } + if (value) { + this.setVisible(value); + this.listen(); + } + else { + this.closable = false; + this.renderer.addClass(this.modalContent.nativeElement, 'fade-out-top'); + setTimeout((/** + * @return {?} + */ + () => { + this.setVisible(value); + this.renderer.removeClass(this.modalContent.nativeElement, 'fade-out-top'); + this.ngOnDestroy(); + }), 350); + } + } + /** + * @return {?} + */ + ngOnDestroy() { + this.destroy$.next(); + } + /** + * @param {?} value + * @return {?} + */ + setVisible(value) { + this._visible = value; + this.visibleChange.emit(value); + value + ? timer(500) + .pipe(take(1)) + .subscribe((/** + * @param {?} _ + * @return {?} + */ + _ => (this.closable = true))) + : (this.closable = false); + } + /** + * @return {?} + */ + listen() { + fromEvent(document, 'click') + .pipe(debounceTime(350), takeUntil(this.destroy$), filter((/** + * @param {?} event + * @return {?} + */ + (event) => event && + this.closable && + this.modalContent && + !this.isOpenConfirmation && + !this.modalContent.nativeElement.contains(event.target)))) + .subscribe((/** + * @param {?} _ + * @return {?} + */ + _ => { + this.close(); + })); + fromEvent(document, 'keyup') + .pipe(takeUntil(this.destroy$), filter((/** + * @param {?} key + * @return {?} + */ + (key) => key && key.code === 'Escape' && this.closable)), debounceTime(350)) + .subscribe((/** + * @param {?} _ + * @return {?} + */ + _ => { + this.close(); + })); + if (!this.abpClose) + return; + fromEvent(this.abpClose.nativeElement, 'click') + .pipe(takeUntil(this.destroy$), filter((/** + * @return {?} + */ + () => !!(this.closable && this.modalContent))), debounceTime(350)) + .subscribe((/** + * @return {?} + */ + () => this.close())); + } + /** + * @return {?} + */ + close() { + /** @type {?} */ + const nodes = getFlatNodes(((/** @type {?} */ (this.modalContent.nativeElement.querySelector('#abp-modal-body')))).childNodes); + if (hasNgDirty(nodes)) { + if (this.isOpenConfirmation) + return; + this.isOpenConfirmation = true; + this.confirmationService + .warn('AbpAccount::AreYouSureYouWantToCancelEditingWarningMessage', 'AbpAccount::AreYouSure') + .subscribe((/** + * @param {?} status + * @return {?} + */ + (status) => { + timer(400).subscribe((/** + * @return {?} + */ + () => { + this.isOpenConfirmation = false; + })); + if (status === "confirm" /* confirm */) { + this.visible = false; + } + })); + } + else { + this.visible = false; + } + } +} +ModalComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-modal', + template: "\n \n
    \n
    \n \n\n \n
    \n
    \n \n\n
    \n \n
    \n
    \n
    \n \n\n \n\n" + }] } +]; +/** @nocollapse */ +ModalComponent.ctorParameters = () => [ + { type: Renderer2 }, + { type: ConfirmationService } +]; +ModalComponent.propDecorators = { + visible: [{ type: Input }], + centered: [{ type: Input }], + modalClass: [{ type: Input }], + size: [{ type: Input }], + visibleChange: [{ type: Output }], + abpHeader: [{ type: ContentChild, args: ['abpHeader', { static: false },] }], + abpBody: [{ type: ContentChild, args: ['abpBody', { static: false },] }], + abpFooter: [{ type: ContentChild, args: ['abpFooter', { static: false },] }], + abpClose: [{ type: ContentChild, args: ['abpClose', { static: false, read: ElementRef },] }], + modalContent: [{ type: ViewChild, args: ['abpModalContent', { static: false },] }] +}; +if (false) { + /** @type {?} */ + ModalComponent.prototype.centered; + /** @type {?} */ + ModalComponent.prototype.modalClass; + /** @type {?} */ + ModalComponent.prototype.size; + /** @type {?} */ + ModalComponent.prototype.visibleChange; + /** @type {?} */ + ModalComponent.prototype.abpHeader; + /** @type {?} */ + ModalComponent.prototype.abpBody; + /** @type {?} */ + ModalComponent.prototype.abpFooter; + /** @type {?} */ + ModalComponent.prototype.abpClose; + /** @type {?} */ + ModalComponent.prototype.modalContent; + /** @type {?} */ + ModalComponent.prototype._visible; + /** @type {?} */ + ModalComponent.prototype.closable; + /** @type {?} */ + ModalComponent.prototype.isOpenConfirmation; + /** @type {?} */ + ModalComponent.prototype.destroy$; + /** + * @type {?} + * @private + */ + ModalComponent.prototype.renderer; + /** + * @type {?} + * @private + */ + ModalComponent.prototype.confirmationService; +} +/** + * @param {?} nodes + * @return {?} + */ +function getFlatNodes(nodes) { + return Array.from(nodes).reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + (acc, val) => [...acc, ...(val.childNodes && val.childNodes.length ? Array.from(val.childNodes) : [val])]), []); +} +/** + * @param {?} nodes + * @return {?} + */ +function hasNgDirty(nodes) { + return nodes.findIndex((/** + * @param {?} node + * @return {?} + */ + node => (node.className || '').indexOf('ng-dirty') > -1)) > -1; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5zaGFyZWQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBUzFFLE1BQU0sT0FBTyxjQUFjOzs7OztJQW1EekIsWUFBb0IsUUFBbUIsRUFBVSxtQkFBd0M7UUFBckUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUExQmhGLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFekIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUV4QixTQUFJLEdBQWMsSUFBSSxDQUFDO1FBRXRCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQVl0RCxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUIsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBRXBDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRTZELENBQUM7Ozs7SUFsRDdGLElBQ0ksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDOzs7OztJQUNELElBQUksT0FBTyxD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Q0FBQyxHQUN6RyxFQUFFLENBQ0gsQ0FBQztBQUNKLENBQUM7Ozs7O0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBb0I7SUFDdEMsT0FBTyxLQUFLLENBQUMsU0FBUzs7OztJQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3ZGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvdG9hc3Rlcic7XG5cbmV4cG9ydCB0eXBlIE1vZGFsU2l6ZSA9ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FicC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gIH1cbiAgc2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMubW9kYWxDb250ZW50KSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLnZpc2libGUgPSB2YWx1ZSksIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5zZXRWaXNpYmxlKHZhbHVlKTtcbiAgICAgIHRoaXMubGlzdGVuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xvc2FibGUgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5tb2RhbENvbnRlbnQubmF0aXZlRWxlbWVudCwgJ2ZhZGUtb3V0LXRvcCcpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0VmlzaWJsZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5tb2RhbENvbnRlbnQubmF0aXZlRWxlbWVudCwgJ2ZhZGUtb3V0LXRvcCcpO1xuICAgICAgICB0aGlzLm5nT25EZXN0cm95KCk7XG4gICAgICB9LCAzNTApO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIGNlbnRlcmVkOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKSBtb2RhbENsYXNzOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKSBzaXplOiBNb2RhbFNpemUgPSAnbGcnO1xuXG4gIEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBDb250ZW50Q2hpbGQoJ2FicEhlYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBhYnBIZWFkZXI6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZCgnYWJwQm9keScsIHsgc3RhdGljOiBmYWxzZSB9KSBhYnBCb2R5OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ2FicEZvb3RlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBhYnBGb290ZXI6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZCgnYWJwQ2xvc2UnLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IEVsZW1lbnRSZWYgfSkgYWJwQ2xvc2U6IEVsZW1lbnRSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKCdhYnBNb2RhbENvbnRlbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgbW9kYWxDb250ZW50OiBFbGVtZW50UmVmO1xuXG4gIF92aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY2xvc2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBpc09wZW5Db25maXJtYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UpIHt9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gIH1cblxuICBzZXRWaXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fdmlzaWJsZSA9IHZhbHVlO1xuICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB2YWx1ZVxuICAgICAgPyB0aW1lcig1MDApXG4gICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKF8gPT4gKHRoaXMuY2xvc2FibGUgPSB0cnVlKSlcbiAgICAgIDogKHRoaXMuY2xvc2FibGUgPSBmYWxzZSk7XG4gIH1cblxuICBsaXN0ZW4oKSB7XG4gICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnY2xpY2snKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgzNTApLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgIGZpbHRlcihcbiAgICAgICAgICAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+XG4gICAgICAgICAgICBldmVudCAmJlxuICAgICAgICAgICAgdGhpcy5jbG9zYWJsZSAmJlxuICAgICAgICAgICAgdGhpcy5tb2RhbENvbnRlbnQgJiZcbiAgICAgICAgICAgICF0aGlzLmlzT3BlbkNvbmZpcm1hdGlvbiAmJlxuICAgICAgICAgICAgIXRoaXMubW9kYWxDb250ZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH0pO1xuXG4gICAgZnJvbUV2ZW50KGRvY3VtZW50LCAna2V5dXAnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgZmlsdGVyKChrZXk6IEtleWJvYXJkRXZlbnQpID0+IGtleSAmJiBrZXkuY29kZSA9PT0gJ0VzY2FwZScgJiYgdGhpcy5jbG9zYWJsZSksXG4gICAgICAgIGRlYm91bmNlVGltZSgzNTApLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfSk7XG5cbiAgICBpZiAoIXRoaXMuYWJwQ2xvc2UpIHJldHVybjtcblxuICAgIGZyb21FdmVudCh0aGlzLmFicENsb3NlLm5hdGl2ZUVsZW1lbnQsICdjbGljaycpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gISEodGhpcy5jbG9zYWJsZSAmJiB0aGlzLm1vZGFsQ29udGVudCkpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoMzUwKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZSgpKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGNvbnN0IG5vZGVzID0gZ2V0RmxhdE5vZGVzKFxuICAgICAgKHRoaXMubW9kYWxDb250ZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignI2FicC1tb2RhbC1ib2R5JykgYXMgSFRNTEVsZW1lbnQpLmNoaWxkTm9kZXMsXG4gICAgKTtcblxuICAgIGlmIChoYXNOZ0RpcnR5KG5vZGVzKSkge1xuICAgICAgaWYgKHRoaXMuaXNPcGVuQ29uZmlybWF0aW9uKSByZXR1cm47XG5cbiAgICAgIHRoaXMuaXNPcGVuQ29uZmlybWF0aW9uID0gdHJ1ZTtcbiAgICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZVxuICAgICAgICAud2FybignQWJwQWNjb3VudDo6QXJlWW91U3VyZVlvdVdhbnRUb0NhbmNlbEVkaXRpbmdXYXJuaW5nTWVzc2FnZScsICdBYnBBY2NvdW50OjpBcmVZb3VTdXJlJylcbiAgICAgICAgLnN1YnNjcmliZSgoc3RhdHVzOiBUb2FzdGVyLlN0YXR1cykgPT4ge1xuICAgICAgICAgIHRpbWVyKDQwMCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQ29uZmlybWF0aW9uID0gZmFsc2U7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoc3RhdHVzID09PSBUb2FzdGVyLlN0YXR1cy5jb25maXJtKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RmxhdE5vZGVzKG5vZGVzOiBOb2RlTGlzdCk6IEhUTUxFbGVtZW50W10ge1xuICByZXR1cm4gQXJyYXkuZnJvbShub2RlcykucmVkdWNlKFxuICAgIChhY2MsIHZhbCkgPT4gWy4uLmFjYywgLi4uKHZhbC5jaGlsZE5vZGVzICYmIHZhbC5jaGlsZE5vZGVzLmxlbmd0aCA/IEFycmF5LmZyb20odmFsLmNoaWxkTm9kZXMpIDogW3ZhbF0pXSxcbiAgICBbXSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gaGFzTmdEaXJ0eShub2RlczogSFRNTEVsZW1lbnRbXSkge1xuICByZXR1cm4gbm9kZXMuZmluZEluZGV4KG5vZGUgPT4gKG5vZGUuY2xhc3NOYW1lIHx8ICcnKS5pbmRleE9mKCduZy1kaXJ0eScpID4gLTEpID4gLTE7XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm2015/lib/components/toast/toast.component.js b/npm/ng-packs/dist/theme-shared/esm2015/lib/components/toast/toast.component.js new file mode 100644 index 00000000000..7e67c92c9e6 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm2015/lib/components/toast/toast.component.js @@ -0,0 +1,32 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component } from '@angular/core'; +export class ToastComponent { +} +ToastComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-toast', + template: ` + + + +
    +
    {{ message.summary | abpLocalization: message.titleLocalizationParams }}
    +
    {{ message.detail | abpLocalization: message.messageLocalizationParams }}
    +
    +
    +
    + ` + }] } +]; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5zaGFyZWQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy90b2FzdC90b2FzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUF3QjFDLE1BQU0sT0FBTyxjQUFjOzs7WUF0QjFCLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsV0FBVztnQkFDckIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQ7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtdG9hc3QnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxwLXRvYXN0IHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIga2V5PVwiYWJwVG9hc3RcIiBbYmFzZVpJbmRleF09XCIxMDAwXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbGV0LW1lc3NhZ2UgcFRlbXBsYXRlPVwibWVzc2FnZVwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwidWktdG9hc3QtaWNvbiBwaVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ3BpLWluZm8tY2lyY2xlJzogbWVzc2FnZS5zZXZlcml0eSA9PSAnaW5mbycsXG4gICAgICAgICAgICAncGktZXhjbGFtYXRpb24tdHJpYW5nbGUnOiBtZXNzYWdlLnNldmVyaXR5ID09ICd3YXJuJyxcbiAgICAgICAgICAgICdwaS10aW1lcyc6IG1lc3NhZ2Uuc2V2ZXJpdHkgPT0gJ2Vycm9yJyxcbiAgICAgICAgICAgICdwaS1jaGVjayc6IG1lc3NhZ2Uuc2V2ZXJpdHkgPT0gJ3N1Y2Nlc3MnXG4gICAgICAgICAgfVwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1aS10b2FzdC1tZXNzYWdlLXRleHQtY29udGVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1aS10b2FzdC1zdW1tYXJ5XCI+e3sgbWVzc2FnZS5zdW1tYXJ5IHwgYWJwTG9jYWxpemF0aW9uOiBtZXNzYWdlLnRpdGxlTG9jYWxpemF0aW9uUGFyYW1zIH19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInVpLXRvYXN0LWRldGFpbFwiPnt7IG1lc3NhZ2UuZGV0YWlsIHwgYWJwTG9jYWxpemF0aW9uOiBtZXNzYWdlLm1lc3NhZ2VMb2NhbGl6YXRpb25QYXJhbXMgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcC10b2FzdD5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgVG9hc3RDb21wb25lbnQge31cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm2015/lib/contants/styles.js b/npm/ng-packs/dist/theme-shared/esm2015/lib/contants/styles.js new file mode 100644 index 00000000000..d12438e974a --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm2015/lib/contants/styles.js @@ -0,0 +1,75 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export default ` +.is-invalid .form-control { + border-color: #dc3545; + border-style: solid !important; +} + +.is-invalid .invalid-feedback, +.is-invalid + * .invalid-feedback { + display: block; +} + +.data-tables-filter { + text-align: right; +} + +.pointer { + cursor: pointer; +} + +.navbar .dropdown-submenu a::after { + transform: rotate(-90deg); + position: absolute; + right: 16px; + top: 18px; +} + +.modal { + background-color: rgba(0, 0, 0, .6); +} + +.abp-ellipsis { + display: inline-block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +/* { + const { payload: err = (/** @type {?} */ ({})) } = res; + /** @type {?} */ + const body = ((/** @type {?} */ (err))).error.error; + if (err.headers.get('_AbpErrorFormat')) { + /** @type {?} */ + const confirmation$ = this.showError(null, null, body); + if (err.status === 401) { + confirmation$.subscribe((/** + * @return {?} + */ + () => { + this.navigateToLogin(); + })); + } + } + else { + switch (((/** @type {?} */ (err))).status) { + case 401: + this.showError(DEFAULTS.defaultError401.details, DEFAULTS.defaultError401.message).subscribe((/** + * @return {?} + */ + () => this.navigateToLogin())); + break; + case 403: + this.createErrorComponent({ + title: DEFAULTS.defaultError403.message, + details: DEFAULTS.defaultError403.details, + }); + break; + case 404: + this.showError(DEFAULTS.defaultError404.details, DEFAULTS.defaultError404.message); + break; + case 500: + this.createErrorComponent({ + title: '500', + details: 'Sorry, an error has occured.', + }); + break; + case 0: + if (((/** @type {?} */ (err))).statusText === 'Unknown Error') { + this.createErrorComponent({ + title: 'Unknown Error', + details: 'Sorry, an error has occured.', + }); + } + break; + default: + this.showError(DEFAULTS.defaultError.details, DEFAULTS.defaultError.message); + break; + } + } + })); + } + /** + * @private + * @param {?=} message + * @param {?=} title + * @param {?=} body + * @return {?} + */ + showError(message, title, body) { + if (body) { + if (body.details) { + message = body.details; + title = body.message; + } + else { + message = body.message || DEFAULTS.defaultError.message; + } + } + return this.confirmationService.error(message, title, { + hideCancelBtn: true, + yesCopy: 'OK', + }); + } + /** + * @private + * @return {?} + */ + navigateToLogin() { + this.store.dispatch(new Navigate(['/account/login'], null, { + state: { redirectUrl: this.store.selectSnapshot(RouterState).state.url }, + })); + } + /** + * @param {?} instance + * @return {?} + */ + createErrorComponent(instance) { + /** @type {?} */ + const renderer = this.rendererFactory.createRenderer(null, null); + /** @type {?} */ + const host = renderer.selectRootElement('app-root', true); + /** @type {?} */ + const componentRef = this.cfRes.resolveComponentFactory(ErrorComponent).create(this.injector); + for (const key in componentRef.instance) { + if (componentRef.instance.hasOwnProperty(key)) { + componentRef.instance[key] = instance[key]; + } + } + this.appRef.attachView(componentRef.hostView); + renderer.appendChild(host, ((/** @type {?} */ (componentRef.hostView))).rootNodes[0]); + componentRef.instance.renderer = renderer; + componentRef.instance.elementRef = componentRef.location; + componentRef.instance.host = host; + } +} +ErrorHandler.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] } +]; +/** @nocollapse */ +ErrorHandler.ctorParameters = () => [ + { type: Actions }, + { type: Store }, + { type: ConfirmationService }, + { type: ApplicationRef }, + { type: ComponentFactoryResolver }, + { type: RendererFactory2 }, + { type: Injector } +]; +/** @nocollapse */ ErrorHandler.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ErrorHandler_Factory() { return new ErrorHandler(i0.ɵɵinject(i1.Actions), i0.ɵɵinject(i1.Store), i0.ɵɵinject(i2.ConfirmationService), i0.ɵɵinject(i0.ApplicationRef), i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i0.RendererFactory2), i0.ɵɵinject(i0.INJECTOR)); }, token: ErrorHandler, providedIn: "root" }); +if (false) { + /** + * @type {?} + * @private + */ + ErrorHandler.prototype.actions; + /** + * @type {?} + * @private + */ + ErrorHandler.prototype.store; + /** + * @type {?} + * @private + */ + ErrorHandler.prototype.confirmationService; + /** + * @type {?} + * @private + */ + ErrorHandler.prototype.appRef; + /** + * @type {?} + * @private + */ + ErrorHandler.prototype.cfRes; + /** + * @type {?} + * @private + */ + ErrorHandler.prototype.rendererFactory; + /** + * @type {?} + * @private + */ + ErrorHandler.prototype.injector; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuc2hhcmVkLyIsInNvdXJjZXMiOlsibGliL2hhbmRsZXJzL2Vycm9yLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUNMLGNBQWMsRUFDZCx3QkFBd0IsRUFFeEIsVUFBVSxFQUNWLFFBQVEsRUFDUixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7O01BRWpFLFFBQVEsR0FBRztJQUNmLFlBQVksRUFBRTtRQUNaLE9BQU8sRUFBRSx3QkFBd0I7UUFDakMsT0FBTyxFQUFFLGtDQUFrQztLQUM1QztJQUVELGVBQWUsRUFBRTtRQUNmLE9BQU8sRUFBRSw0QkFBNEI7UUFDckMsT0FBTyxFQUFFLDJFQUEyRTtLQUNyRjtJQUVELGVBQWUsRUFBRTtRQUNmLE9BQU8sRUFBRSx5QkFBeUI7UUFDbEMsT0FBTyxFQUFFLGdEQUFnRDtLQUMxRDtJQUVELGVBQWUsRUFBRTtRQUNmLE9BQU8sRUFBRSxxQkFBcUI7UUFDOUIsT0FBTyxFQUFFLHVEQUF1RDtLQUNqRTtDQUNGO0FBR0QsTUFBTSxPQUFPLFlBQVk7Ozs7Ozs7Ozs7SUFDdkIsWUFDVSxPQUFnQixFQUNoQixLQUFZLEVBQ1osbUJBQXdDLEVBQ3hDLE1BQXNCLEVBQ3RCLEtBQStCLEVBQy9CLGVBQWlDLEVBQ2pDLFFBQWtCO1FBTmxCLFlBQU8s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QUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxtQkFBQSxZQUFZLENBQUMsUUFBUSxFQUF3QixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFekYsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQzFDLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDekQsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3BDLENBQUM7OztZQXZHRixVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzs7O1lBNUJ6QixPQUFPO1lBQXNCLEtBQUs7WUFJbEMsbUJBQW1CO1lBWjFCLGNBQWM7WUFDZCx3QkFBd0I7WUFJeEIsZ0JBQWdCO1lBRGhCLFFBQVE7Ozs7Ozs7O0lBbUNOLCtCQUF3Qjs7Ozs7SUFDeEIsNkJBQW9COzs7OztJQUNwQiwyQ0FBZ0Q7Ozs7O0lBQ2hELDhCQUE4Qjs7Ozs7SUFDOUIsNkJBQXVDOzs7OztJQUN2Qyx1Q0FBeUM7Ozs7O0lBQ3pDLGdDQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3RPY2N1ckVycm9yIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25SZWYsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBJbmplY3RhYmxlLFxuICBJbmplY3RvcixcbiAgUmVuZGVyZXJGYWN0b3J5Mixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0ZSwgUm91dGVyU3RhdGUgfSBmcm9tICdAbmd4cy9yb3V0ZXItcGx1Z2luJztcbmltcG9ydCB7IEFjdGlvbnMsIG9mQWN0aW9uU3VjY2Vzc2Z1bCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFcnJvckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZXJyb3JzL2Vycm9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb2FzdGVyIH0gZnJvbSAnLi4vbW9kZWxzL3RvYXN0ZXInO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi5zZXJ2aWNlJztcblxuY29uc3QgREVGQVVMVFMgPSB7XG4gIGRlZmF1bHRFcnJvcjoge1xuICAgIG1lc3NhZ2U6ICdBbiBlcnJvciBoYXMgb2NjdXJyZWQhJyxcbiAgICBkZXRhaWxzOiAnRXJyb3IgZGV0YWlsIG5vdCBzZW50IGJ5IHNlcnZlci4nLFxuICB9LFxuXG4gIGRlZmF1bHRFcnJvcjQwMToge1xuICAgIG1lc3NhZ2U6ICdZb3UgYXJlIG5vdCBhdXRoZW50aWNhdGVkIScsXG4gICAgZGV0YWlsczogJ1lvdSBzaG91bGQgYmUgYXV0aGVudGljYXRlZCAoc2lnbiBpbikgaW4gb3JkZXIgdG8gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbi4nLFxuICB9LFxuXG4gIGRlZmF1bHRFcnJvcjQwMzoge1xuICAgIG1lc3NhZ2U6ICdZb3UgYXJlIG5vdCBhdXRob3JpemVkIScsXG4gICAgZGV0YWlsczogJ1lvdSBhcmUgbm90IGFsbG93ZWQgdG8gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbi4nLFxuICB9LFxuXG4gIGRlZmF1bHRFcnJvcjQwNDoge1xuICAgIG1lc3NhZ2U6ICdSZXNvdXJjZSBub3QgZm91bmQhJyxcbiAgICBkZXRhaWxzOiAnVGhlIHJlc291cmNlIHJlcXVlc3RlZCBjb3VsZCBub3QgZm91bmQgb24gdGhlIHNlcnZlci4nLFxuICB9LFxufTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBFcnJvckhhbmRsZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGlvbnM6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICBwcml2YXRlIGNmUmVzOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICkge1xuICAgIGFjdGlvbnMucGlwZShvZkFjdGlvblN1Y2Nlc3NmdWwoUmVzdE9jY3VyRXJyb3IpKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGNvbnN0IHsgcGF5bG9hZDogZXJyID0ge30gYXMgSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkgfSA9IHJlcztcbiAgICAgIGNvbnN0IGJvZHkgPSAoZXJyIGFzIEh0dHBFcnJvclJlc3BvbnNlKS5lcnJvci5lcnJvcjtcblxuICAgICAgaWYgKGVyci5oZWFkZXJzLmdldCgnX0FicEVycm9yRm9ybWF0JykpIHtcbiAgICAgICAgY29uc3QgY29uZmlybWF0aW9uJCA9IHRoaXMuc2hvd0Vycm9yKG51bGwsIG51bGwsIGJvZHkpO1xuXG4gICAgICAgIGlmIChlcnIuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICBjb25maXJtYXRpb24kLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9Mb2dpbigpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKChlcnIgYXMgSHR0cEVycm9yUmVzcG9uc2UpLnN0YXR1cykge1xuICAgICAgICAgIGNhc2UgNDAxOlxuICAgICAgICAgICAgdGhpcy5zaG93RXJyb3IoREVGQVVMVFMuZGVmYXVsdEVycm9yNDAxLmRldGFpbHMsIERFRkFVTFRTLmRlZmF1bHRFcnJvcjQwMS5tZXNzYWdlKS5zdWJzY3JpYmUoKCkgPT5cbiAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvTG9naW4oKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDQwMzpcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlRXJyb3JDb21wb25lbnQoe1xuICAgICAgICAgICAgICB0aXRsZTogREVGQVVMVFMuZGVmYXVsdEVycm9yNDAzLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIGRldGFpbHM6IERFRkFVTFRTLmRlZmF1bHRFcnJvcjQwMy5kZXRhaWxzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDQwNDpcbiAgICAgICAgICAgIHRoaXMuc2hvd0Vycm9yKERFRkFVTFRTLmRlZmF1bHRFcnJvcjQwNC5kZXRhaWxzLCBERUZBVUxUUy5kZWZhdWx0RXJyb3I0MDQubWVzc2FnZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDUwMDpcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlRXJyb3JDb21wb25lbnQoe1xuICAgICAgICAgICAgICB0aXRsZTogJzUwMCcsXG4gICAgICAgICAgICAgIGRldGFpbHM6ICdTb3JyeSwgYW4gZXJyb3IgaGFzIG9jY3VyZWQuJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgaWYgKChlcnIgYXMgSHR0cEVycm9yUmVzcG9uc2UpLnN0YXR1c1RleHQgPT09ICdVbmtub3duIEVycm9yJykge1xuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUVycm9yQ29tcG9uZW50KHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1Vua25vd24gRXJyb3InLFxuICAgICAgICAgICAgICAgIGRldGFpbHM6ICdTb3JyeSwgYW4gZXJyb3IgaGFzIG9jY3VyZWQuJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhpcy5zaG93RXJyb3IoREVGQVVMVFMuZGVmYXVsdEVycm9yLmRldGFpbHMsIERFRkFVTFRTLmRlZmF1bHRFcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNob3dFcnJvcihtZXNzYWdlPzogc3RyaW5nLCB0aXRsZT86IHN0cmluZywgYm9keT86IGFueSk6IE9ic2VydmFibGU8VG9hc3Rlci5TdGF0dXM+IHtcbiAgICBpZiAoYm9keSkge1xuICAgICAgaWYgKGJvZHkuZGV0YWlscykge1xuICAgICAgICBtZXNzYWdlID0gYm9keS5kZXRhaWxzO1xuICAgICAgICB0aXRsZSA9IGJvZHkubWVzc2FnZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2UgPSBib2R5Lm1lc3NhZ2UgfHwgREVGQVVMVFMuZGVmYXVsdEVycm9yLm1lc3NhZ2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5lcnJvcihtZXNzYWdlLCB0aXRsZSwge1xuICAgICAgaGlkZUNhbmNlbEJ0bjogdHJ1ZSxcbiAgICAgIHllc0NvcHk6ICdPSycsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRlVG9Mb2dpbigpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgbmV3IE5hdmlnYXRlKFsnL2FjY291bnQvbG9naW4nXSwgbnVsbCwge1xuICAgICAgICBzdGF0ZTogeyByZWRpcmVjdFVybDogdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChSb3V0ZXJTdGF0ZSkuc3RhdGUudXJsIH0sXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgY3JlYXRlRXJyb3JDb21wb25lbnQoaW5zdGFuY2U6IFBhcnRpYWw8RXJyb3JDb21wb25lbnQ+KSB7XG4gICAgY29uc3QgcmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcbiAgICBjb25zdCBob3N0ID0gcmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQoJ2FwcC1yb290JywgdHJ1ZSk7XG5cbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNmUmVzLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KEVycm9yQ29tcG9uZW50KS5jcmVhdGUodGhpcy5pbmplY3Rvcik7XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjb21wb25lbnRSZWYuaW5zdGFuY2UpIHtcbiAgICAgIGlmIChjb21wb25lbnRSZWYuaW5zdGFuY2UuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Vba2V5XSA9IGluc3RhbmNlW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgIHJlbmRlcmVyLmFwcGVuZENoaWxkKGhvc3QsIChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSk7XG5cbiAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucmVuZGVyZXIgPSByZW5kZXJlcjtcbiAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZWxlbWVudFJlZiA9IGNvbXBvbmVudFJlZi5sb2NhdGlvbjtcbiAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuaG9zdCA9IGhvc3Q7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm2015/lib/models/confirmation.js b/npm/ng-packs/dist/theme-shared/esm2015/lib/models/confirmation.js new file mode 100644 index 00000000000..212b0e166dc --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm2015/lib/models/confirmation.js @@ -0,0 +1,23 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var Confirmation; +(function (Confirmation) { + /** + * @record + */ + function Options() { } + Confirmation.Options = Options; + if (false) { + /** @type {?|undefined} */ + Options.prototype.hideCancelBtn; + /** @type {?|undefined} */ + Options.prototype.hideYesBtn; + /** @type {?|undefined} */ + Options.prototype.cancelCopy; + /** @type {?|undefined} */ + Options.prototype.yesCopy; + } +})(Confirmation || (Confirmation = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5zaGFyZWQvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzL2NvbmZpcm1hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsTUFBTSxLQUFXLFlBQVksQ0FPNUI7QUFQRCxXQUFpQixZQUFZOzs7O0lBQzNCLHNCQUtDOzs7O1FBSkMsZ0NBQXdCOztRQUN4Qiw2QkFBcUI7O1FBQ3JCLDZCQUFvQjs7UUFDcEIsMEJBQWlCOztBQUVyQixDQUFDLEVBUGdCLFlBQVksS0FBWixZQUFZLFFBTzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG9hc3RlciB9IGZyb20gJy4vdG9hc3Rlcic7XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ29uZmlybWF0aW9uIHtcbiAgZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIGV4dGVuZHMgVG9hc3Rlci5PcHRpb25zIHtcbiAgICBoaWRlQ2FuY2VsQnRuPzogYm9vbGVhbjtcbiAgICBoaWRlWWVzQnRuPzogYm9vbGVhbjtcbiAgICBjYW5jZWxDb3B5Pzogc3RyaW5nO1xuICAgIHllc0NvcHk/OiBzdHJpbmc7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm2015/lib/models/index.js b/npm/ng-packs/dist/theme-shared/esm2015/lib/models/index.js new file mode 100644 index 00000000000..cc2ac4afa25 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm2015/lib/models/index.js @@ -0,0 +1,7 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export {} from './confirmation'; +export { Toaster } from './toaster'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLnNoYXJlZC8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGVBQWMsZ0JBQWdCLENBQUM7QUFDL0Isd0JBQWMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb25maXJtYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi90b2FzdGVyJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm2015/lib/models/toaster.js b/npm/ng-packs/dist/theme-shared/esm2015/lib/models/toaster.js new file mode 100644 index 00000000000..47fe054d0b9 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm2015/lib/models/toaster.js @@ -0,0 +1,29 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export var Toaster; +(function (Toaster) { + /** + * @record + */ + function Options() { } + Toaster.Options = Options; + if (false) { + /** @type {?|undefined} */ + Options.prototype.id; + /** @type {?|undefined} */ + Options.prototype.closable; + /** @type {?|undefined} */ + Options.prototype.life; + /** @type {?|undefined} */ + Options.prototype.sticky; + /** @type {?|undefined} */ + Options.prototype.data; + /** @type {?|undefined} */ + Options.prototype.messageLocalizationParams; + /** @type {?|undefined} */ + Options.prototype.titleLocalizationParams; + } +})(Toaster || (Toaster = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Rlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuc2hhcmVkLyIsInNvdXJjZXMiOlsibGliL21vZGVscy90b2FzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxNQUFNLEtBQVcsT0FBTyxDQWtCdkI7QUFsQkQsV0FBaUIsT0FBTzs7OztJQUN0QixzQkFRQzs7OztRQVBDLHFCQUFTOztRQUNULDJCQUFtQjs7UUFDbkIsdUJBQWM7O1FBQ2QseUJBQWlCOztRQUNqQix1QkFBVzs7UUFDWCw0Q0FBcUM7O1FBQ3JDLDBDQUFtQzs7QUFVdkMsQ0FBQyxFQWxCZ0IsT0FBTyxLQUFQLE9BQU8sUUFrQnZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IG5hbWVzcGFjZSBUb2FzdGVyIHtcbiAgZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgICBpZD86IGFueTtcbiAgICBjbG9zYWJsZT86IGJvb2xlYW47XG4gICAgbGlmZT86IG51bWJlcjtcbiAgICBzdGlja3k/OiBib29sZWFuO1xuICAgIGRhdGE/OiBhbnk7XG4gICAgbWVzc2FnZUxvY2FsaXphdGlvblBhcmFtcz86IHN0cmluZ1tdO1xuICAgIHRpdGxlTG9jYWxpemF0aW9uUGFyYW1zPzogc3RyaW5nW107XG4gIH1cblxuICBleHBvcnQgdHlwZSBTZXZlcml0eSA9ICdzdWNjZXNzJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcic7XG5cbiAgZXhwb3J0IGNvbnN0IGVudW0gU3RhdHVzIHtcbiAgICBjb25maXJtID0gJ2NvbmZpcm0nLFxuICAgIHJlamVjdCA9ICdyZWplY3QnLFxuICAgIGRpc21pc3MgPSAnZGlzbWlzcycsXG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm2015/lib/services/confirmation.service.js b/npm/ng-packs/dist/theme-shared/esm2015/lib/services/confirmation.service.js new file mode 100644 index 00000000000..d2a6377965c --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm2015/lib/services/confirmation.service.js @@ -0,0 +1,32 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { AbstractToasterClass } from '../abstracts/toaster'; +import * as i0 from "@angular/core"; +import * as i1 from "primeng/components/common/messageservice"; +export class ConfirmationService extends AbstractToasterClass { + constructor() { + super(...arguments); + this.key = 'abpConfirmation'; + this.sticky = true; + } +} +ConfirmationService.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] } +]; +/** @nocollapse */ ConfirmationService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ConfirmationService_Factory() { return new ConfirmationService(i0.ɵɵinject(i1.MessageService)); }, token: ConfirmationService, providedIn: "root" }); +if (false) { + /** + * @type {?} + * @protected + */ + ConfirmationService.prototype.key; + /** + * @type {?} + * @protected + */ + ConfirmationService.prototype.sticky; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLnNoYXJlZC8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jb25maXJtYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBSTVELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxvQkFBMEM7SUFEbkY7O1FBRVksUUFBRyxHQUFXLGlCQUFpQixDQUFDO1FBRWhDLFdBQU0sR0FBWSxJQUFJLENBQUM7S0FDbEM7OztZQUxBLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7Ozs7Ozs7O0lBRWhDLGtDQUEwQzs7Ozs7SUFFMUMscUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RUb2FzdGVyQ2xhc3MgfSBmcm9tICcuLi9hYnN0cmFjdHMvdG9hc3Rlcic7XG5pbXBvcnQgeyBDb25maXJtYXRpb24gfSBmcm9tICcuLi9tb2RlbHMvY29uZmlybWF0aW9uJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBDb25maXJtYXRpb25TZXJ2aWNlIGV4dGVuZHMgQWJzdHJhY3RUb2FzdGVyQ2xhc3M8Q29uZmlybWF0aW9uLk9wdGlvbnM+IHtcbiAgcHJvdGVjdGVkIGtleTogc3RyaW5nID0gJ2FicENvbmZpcm1hdGlvbic7XG5cbiAgcHJvdGVjdGVkIHN0aWNreTogYm9vbGVhbiA9IHRydWU7XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm2015/lib/services/index.js b/npm/ng-packs/dist/theme-shared/esm2015/lib/services/index.js new file mode 100644 index 00000000000..99399450aab --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm2015/lib/services/index.js @@ -0,0 +1,7 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { ConfirmationService } from './confirmation.service'; +export { ToasterService } from './toaster.service'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLnNoYXJlZC8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsb0NBQWMsd0JBQXdCLENBQUM7QUFDdkMsK0JBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbmZpcm1hdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdG9hc3Rlci5zZXJ2aWNlJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm2015/lib/services/toaster.service.js b/npm/ng-packs/dist/theme-shared/esm2015/lib/services/toaster.service.js new file mode 100644 index 00000000000..9e7b2e3a0a2 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm2015/lib/services/toaster.service.js @@ -0,0 +1,26 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import { AbstractToasterClass } from '../abstracts/toaster'; +import * as i0 from "@angular/core"; +import * as i1 from "primeng/components/common/messageservice"; +export class ToasterService extends AbstractToasterClass { + /** + * @param {?} messages + * @return {?} + */ + addAll(messages) { + this.messageService.addAll(messages.map((/** + * @param {?} message + * @return {?} + */ + message => (Object.assign({ key: this.key }, message))))); + } +} +ToasterService.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] } +]; +/** @nocollapse */ ToasterService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ToasterService_Factory() { return new ToasterService(i0.ɵɵinject(i1.MessageService)); }, token: ToasterService, providedIn: "root" }); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Rlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5zaGFyZWQvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvdG9hc3Rlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFJNUQsTUFBTSxPQUFPLGNBQWUsU0FBUSxvQkFBb0I7Ozs7O0lBQ3RELE1BQU0sQ0FBQyxRQUFtQjtRQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRzs7OztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsaUJBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUssT0FBTyxFQUFHLEVBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7OztZQUpGLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFRvYXN0ZXJDbGFzcyB9IGZyb20gJy4uL2Fic3RyYWN0cy90b2FzdGVyJztcbmltcG9ydCB7IE1lc3NhZ2UgfSBmcm9tICdwcmltZW5nL2NvbXBvbmVudHMvY29tbW9uL21lc3NhZ2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRvYXN0ZXJTZXJ2aWNlIGV4dGVuZHMgQWJzdHJhY3RUb2FzdGVyQ2xhc3Mge1xuICBhZGRBbGwobWVzc2FnZXM6IE1lc3NhZ2VbXSk6IHZvaWQge1xuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkQWxsKG1lc3NhZ2VzLm1hcChtZXNzYWdlID0+ICh7IGtleTogdGhpcy5rZXksIC4uLm1lc3NhZ2UgfSkpKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm2015/lib/theme-shared.module.js b/npm/ng-packs/dist/theme-shared/esm2015/lib/theme-shared.module.js new file mode 100644 index 00000000000..579c2e19c9a --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm2015/lib/theme-shared.module.js @@ -0,0 +1,70 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { CoreModule, LazyLoadService } from '@abp/ng.core'; +import { APP_INITIALIZER, Injector, NgModule } from '@angular/core'; +import { NgbModalModule } from '@ng-bootstrap/ng-bootstrap'; +import { NgxValidateCoreModule } from '@ngx-validate/core'; +import { MessageService } from 'primeng/components/common/messageservice'; +import { ToastModule } from 'primeng/toast'; +import { forkJoin } from 'rxjs'; +import { take } from 'rxjs/operators'; +import { ConfirmationComponent } from './components/confirmation/confirmation.component'; +import { ErrorComponent } from './components/errors/error.component'; +import { LoaderBarComponent } from './components/loader-bar/loader-bar.component'; +import { ModalComponent } from './components/modal/modal.component'; +import { ToastComponent } from './components/toast/toast.component'; +import styles from './contants/styles'; +import { ErrorHandler } from './handlers/error.handler'; +/** + * @param {?} injector + * @return {?} + */ +export function appendScript(injector) { + /** @type {?} */ + const fn = (/** + * @return {?} + */ + function () { + /** @type {?} */ + const lazyLoadService = injector.get(LazyLoadService); + return forkJoin(lazyLoadService.load(null, 'style', styles, 'head', 'afterbegin') /* lazyLoadService.load(null, 'script', scripts) */).pipe(take(1)); + }); + return fn; +} +export class ThemeSharedModule { + /** + * @return {?} + */ + static forRoot() { + return { + ngModule: ThemeSharedModule, + providers: [ + { + provide: APP_INITIALIZER, + multi: true, + deps: [Injector, ErrorHandler], + useFactory: appendScript, + }, + { provide: MessageService, useClass: MessageService }, + ], + }; + } +} +ThemeSharedModule.decorators = [ + { type: NgModule, args: [{ + imports: [ + CoreModule, + ToastModule, + NgbModalModule, + NgxValidateCoreModule.forRoot({ + targetSelector: '.form-group', + }), + ], + declarations: [ConfirmationComponent, ToastComponent, ModalComponent, ErrorComponent, LoaderBarComponent], + exports: [NgbModalModule, ConfirmationComponent, ToastComponent, ModalComponent, LoaderBarComponent], + entryComponents: [ErrorComponent], + },] } +]; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtc2hhcmVkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuc2hhcmVkLyIsInNvdXJjZXMiOlsibGliL3RoZW1lLXNoYXJlZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sTUFBTSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFFeEQsTUFBTSxVQUFVLFlBQVksQ0FBQyxRQUFrQjs7VUFDdkMsRUFBRTs7O0lBQUc7O2NBQ0gsZUFBZSxHQUFvQixRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQztRQUV0RSxPQUFPLFFBQVEsQ0FDYixlQUFlLENBQUMsSUFBSSxDQUNsQixJQUFJLEVBQ0osT0FBTyxFQUNQLE1BQU0sRUFDTixNQUFNLEVBQ04sWUFBWSxDQUNiLENBQUMsbURBQW1ELENBQ3RELENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQTtJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQWVELE1BQU0sT0FBTyxpQkFBaUI7Ozs7SUFDNUIsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLEtBQUssRUFBRSxJQUFJO29CQUNYLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUM7b0JBQzlCLFVBQVUsRUFBRSxZQUFZO2lCQUN6QjtnQkFDRCxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRTthQUN0RDtTQUNGLENBQUM7SUFDSixDQUFDOzs7WUEzQkYsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxVQUFVO29CQUNWLFdBQVc7b0JBQ1gsY0FBYztvQkFDZCxxQkFBcUIsQ0FBQyxPQUFPLENBQUM7d0JBQzVCLGNBQWMsRUFBRSxhQUFhO3FCQUM5QixDQUFDO2lCQUNIO2dCQUNELFlBQVksRUFBRSxDQUFDLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixDQUFDO2dCQUN6RyxPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQztnQkFDcEcsZUFBZSxFQUFFLENBQUMsY0FBYyxDQUFDO2FBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29yZU1vZHVsZSwgTGF6eUxvYWRTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgSW5qZWN0b3IsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ2JNb2RhbE1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IE5neFZhbGlkYXRlQ29yZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdmFsaWRhdGUvY29yZSc7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvY29tcG9uZW50cy9jb21tb24vbWVzc2FnZXNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbmZpcm1hdGlvbi9jb25maXJtYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Vycm9ycy9lcnJvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGVyQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xvYWRlci1iYXIvbG9hZGVyLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IFRvYXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RvYXN0L3RvYXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vY29udGFudHMvc3R5bGVzJztcbmltcG9ydCB7IEVycm9ySGFuZGxlciB9IGZyb20gJy4vaGFuZGxlcnMvZXJyb3IuaGFuZGxlcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRTY3JpcHQoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gIGNvbnN0IGZuID0gZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgbGF6eUxvYWRTZXJ2aWNlOiBMYXp5TG9hZFNlcnZpY2UgPSBpbmplY3Rvci5nZXQoTGF6eUxvYWRTZXJ2aWNlKTtcblxuICAgIHJldHVybiBmb3JrSm9pbihcbiAgICAgIGxhenlMb2FkU2VydmljZS5sb2FkKFxuICAgICAgICBudWxsLFxuICAgICAgICAnc3R5bGUnLFxuICAgICAgICBzdHlsZXMsXG4gICAgICAgICdoZWFkJyxcbiAgICAgICAgJ2FmdGVyYmVnaW4nLFxuICAgICAgKSAvKiBsYXp5TG9hZFNlcnZpY2UubG9hZChudWxsLCAnc2NyaXB0Jywgc2NyaXB0cykgKi8sXG4gICAgKS5waXBlKHRha2UoMSkpO1xuICB9O1xuXG4gIHJldHVybiBmbjtcbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvcmVNb2R1bGUsXG4gICAgVG9hc3RNb2R1bGUsXG4gICAgTmdiTW9kYWxNb2R1bGUsXG4gICAgTmd4VmFsaWRhdGVDb3JlTW9kdWxlLmZvclJvb3Qoe1xuICAgICAgdGFyZ2V0U2VsZWN0b3I6ICcuZm9ybS1ncm91cCcsXG4gICAgfSksXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW0NvbmZpcm1hdGlvbkNvbXBvbmVudCwgVG9hc3RDb21wb25lbnQsIE1vZGFsQ29tcG9uZW50LCBFcnJvckNvbXBvbmVudCwgTG9hZGVyQmFyQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW05nYk1vZGFsTW9kdWxlLCBDb25maXJtYXRpb25Db21wb25lbnQsIFRvYXN0Q29tcG9uZW50LCBNb2RhbENvbXBvbmVudCwgTG9hZGVyQmFyQ29tcG9uZW50XSxcbiAgZW50cnlDb21wb25lbnRzOiBbRXJyb3JDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBUaGVtZVNoYXJlZE1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogVGhlbWVTaGFyZWRNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgICBkZXBzOiBbSW5qZWN0b3IsIEVycm9ySGFuZGxlcl0sXG4gICAgICAgICAgdXNlRmFjdG9yeTogYXBwZW5kU2NyaXB0LFxuICAgICAgICB9LFxuICAgICAgICB7IHByb3ZpZGU6IE1lc3NhZ2VTZXJ2aWNlLCB1c2VDbGFzczogTWVzc2FnZVNlcnZpY2UgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm2015/public-api.js b/npm/ng-packs/dist/theme-shared/esm2015/public-api.js new file mode 100644 index 00000000000..76b93dad5b4 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm2015/public-api.js @@ -0,0 +1,12 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/* + * Public API Surface of theme-shared + */ +export { appendScript, ThemeSharedModule } from './lib/theme-shared.module'; +export { ConfirmationComponent, ToastComponent, ModalComponent } from './lib/components'; +export { Toaster } from './lib/models'; +export { ConfirmationService, ToasterService } from './lib/services'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuc2hhcmVkLyIsInNvdXJjZXMiOlsicHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsZ0RBQWMsMkJBQTJCLENBQUM7QUFDMUMsc0VBQWMsa0JBQWtCLENBQUM7QUFDakMsd0JBQWMsY0FBYyxDQUFDO0FBQzdCLG9EQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB0aGVtZS1zaGFyZWRcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90aGVtZS1zaGFyZWQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzJztcbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm5/abp-ng.theme.shared.js b/npm/ng-packs/dist/theme-shared/esm5/abp-ng.theme.shared.js new file mode 100644 index 00000000000..e355417f472 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm5/abp-ng.theme.shared.js @@ -0,0 +1,17 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { appendScript, ThemeSharedModule, ConfirmationComponent, ToastComponent, ModalComponent, Toaster, ConfirmationService, ToasterService } from './public-api'; +export { AbstractToasterClass as ɵc } from './lib/abstracts/toaster'; +export { ConfirmationComponent as ɵa } from './lib/components/confirmation/confirmation.component'; +export { ErrorComponent as ɵf } from './lib/components/errors/error.component'; +export { LoaderBarComponent as ɵg } from './lib/components/loader-bar/loader-bar.component'; +export { ModalComponent as ɵe } from './lib/components/modal/modal.component'; +export { ToastComponent as ɵd } from './lib/components/toast/toast.component'; +export { ErrorHandler as ɵh } from './lib/handlers/error.handler'; +export { ConfirmationService as ɵb } from './lib/services/confirmation.service'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLnRoZW1lLnNoYXJlZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuc2hhcmVkLyIsInNvdXJjZXMiOlsiYWJwLW5nLnRoZW1lLnNoYXJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEscUpBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMscUJBQXFCLElBQUksRUFBRSxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDakcsT0FBTyxFQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsa0JBQWtCLElBQUksRUFBRSxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDMUYsT0FBTyxFQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsY0FBYyxJQUFJLEVBQUUsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxZQUFZLElBQUksRUFBRSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyxNQUFNLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuXG5leHBvcnQge0Fic3RyYWN0VG9hc3RlckNsYXNzIGFzIMm1Y30gZnJvbSAnLi9saWIvYWJzdHJhY3RzL3RvYXN0ZXInO1xuZXhwb3J0IHtDb25maXJtYXRpb25Db21wb25lbnQgYXMgybVhfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbmZpcm1hdGlvbi9jb25maXJtYXRpb24uY29tcG9uZW50JztcbmV4cG9ydCB7RXJyb3JDb21wb25lbnQgYXMgybVmfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Vycm9ycy9lcnJvci5jb21wb25lbnQnO1xuZXhwb3J0IHtMb2FkZXJCYXJDb21wb25lbnQgYXMgybVnfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xvYWRlci1iYXIvbG9hZGVyLWJhci5jb21wb25lbnQnO1xuZXhwb3J0IHtNb2RhbENvbXBvbmVudCBhcyDJtWV9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCB7VG9hc3RDb21wb25lbnQgYXMgybVkfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RvYXN0L3RvYXN0LmNvbXBvbmVudCc7XG5leHBvcnQge0Vycm9ySGFuZGxlciBhcyDJtWh9IGZyb20gJy4vbGliL2hhbmRsZXJzL2Vycm9yLmhhbmRsZXInO1xuZXhwb3J0IHtDb25maXJtYXRpb25TZXJ2aWNlIGFzIMm1Yn0gZnJvbSAnLi9saWIvc2VydmljZXMvY29uZmlybWF0aW9uLnNlcnZpY2UnOyJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm5/lib/abstracts/toaster.js b/npm/ng-packs/dist/theme-shared/esm5/lib/abstracts/toaster.js new file mode 100644 index 00000000000..f6543f8d5e6 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm5/lib/abstracts/toaster.js @@ -0,0 +1,142 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Subject } from 'rxjs'; +/** + * @template T + */ +var /** + * @template T + */ +AbstractToasterClass = /** @class */ (function () { + function AbstractToasterClass(messageService) { + this.messageService = messageService; + this.key = 'abpToast'; + this.sticky = false; + } + /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + AbstractToasterClass.prototype.info = /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + function (message, title, options) { + return this.show(message, title, 'info', options); + }; + /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + AbstractToasterClass.prototype.success = /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + function (message, title, options) { + return this.show(message, title, 'success', options); + }; + /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + AbstractToasterClass.prototype.warn = /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + function (message, title, options) { + return this.show(message, title, 'warn', options); + }; + /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + AbstractToasterClass.prototype.error = /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + function (message, title, options) { + return this.show(message, title, 'error', options); + }; + /** + * @protected + * @param {?} message + * @param {?} title + * @param {?} severity + * @param {?=} options + * @return {?} + */ + AbstractToasterClass.prototype.show = /** + * @protected + * @param {?} message + * @param {?} title + * @param {?} severity + * @param {?=} options + * @return {?} + */ + function (message, title, severity, options) { + this.messageService.clear(this.key); + this.messageService.add(tslib_1.__assign({ severity: severity, detail: message, summary: title }, options, { key: this.key }, (typeof (options || ((/** @type {?} */ ({})))).sticky === 'undefined' && { sticky: this.sticky }))); + this.status$ = new Subject(); + return this.status$; + }; + /** + * @param {?=} status + * @return {?} + */ + AbstractToasterClass.prototype.clear = /** + * @param {?=} status + * @return {?} + */ + function (status) { + this.messageService.clear(this.key); + this.status$.next(status || "dismiss" /* dismiss */); + this.status$.complete(); + }; + return AbstractToasterClass; +}()); +/** + * @template T + */ +export { AbstractToasterClass }; +if (false) { + /** + * @type {?} + * @protected + */ + AbstractToasterClass.prototype.status$; + /** + * @type {?} + * @protected + */ + AbstractToasterClass.prototype.key; + /** + * @type {?} + * @protected + */ + AbstractToasterClass.prototype.sticky; + /** + * @type {?} + * @protected + */ + AbstractToasterClass.prototype.messageService; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Rlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuc2hhcmVkLyIsInNvdXJjZXMiOlsibGliL2Fic3RyYWN0cy90b2FzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQUczQzs7OztJQU9FLDhCQUFzQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFKMUMsUUFBRyxHQUFXLFVBQVUsQ0FBQztRQUV6QixXQUFNLEdBQVksS0FBSyxDQUFDO0lBRXFCLENBQUM7Ozs7Ozs7SUFDeEQsbUNBQUk7Ozs7OztJQUFKLFVBQUssT0FBZSxFQUFFLEtBQWEsRUFBRSxPQUFXO1FBQzlDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwRCxDQUFDOzs7Ozs7O0lBRUQsc0NBQU87Ozs7OztJQUFQLFVBQVEsT0FBZSxFQUFFLEtBQWEsRUFBRSxPQUFXO1FBQ2pELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RCxDQUFDOzs7Ozs7O0lBRUQsbUNBQUk7Ozs7OztJQUFKLFVBQUssT0FBZSxFQUFFLEtBQWEsRUFBRSxPQUFXO1FBQzlDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwRCxDQUFDOzs7Ozs7O0lBRUQsb0NBQUs7Ozs7OztJQUFMLFVBQU0sT0FBZSxFQUFFLEtBQWEsRUFBRSxPQUFXO1FBQy9DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDOzs7Ozs7Ozs7SUFFUyxtQ0FBSTs7Ozs7Ozs7SUFBZCxVQUFlLE9BQWUsRUFBRSxLQUFhLEVBQUUsUUFBMEIsRUFBRSxPQUFXO1FBQ3BGLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsb0JBQ3JCLFFBQVEsVUFBQSxFQUNSLE1BQU0sRUFBRSxPQUFPLEVBQ2YsT0FBTyxFQUFFLEtBQUssSUFDWCxPQUFPLElBQ1YsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQ1YsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsbUJBQUEsRUFBRSxFQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxXQUFXLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQ3RGLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFrQixDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDOzs7OztJQUVELG9DQUFLOzs7O0lBQUwsVUFBTSxNQUF1QjtRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSwyQkFBMEIsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNILDJCQUFDO0FBQUQsQ0FBQyxBQTVDRCxJQTRDQzs7Ozs7Ozs7OztJQTNDQyx1Q0FBMkM7Ozs7O0lBRTNDLG1DQUFtQzs7Ozs7SUFFbkMsc0NBQWtDOzs7OztJQUV0Qiw4Q0FBd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvY29tcG9uZW50cy9jb21tb24vbWVzc2FnZXNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9hc3RlciB9IGZyb20gJy4uL21vZGVscy90b2FzdGVyJztcblxuZXhwb3J0IGNsYXNzIEFic3RyYWN0VG9hc3RlckNsYXNzPFQgPSBUb2FzdGVyLk9wdGlvbnM+IHtcbiAgcHJvdGVjdGVkIHN0YXR1cyQ6IFN1YmplY3Q8VG9hc3Rlci5TdGF0dXM+O1xuXG4gIHByb3RlY3RlZCBrZXk6IHN0cmluZyA9ICdhYnBUb2FzdCc7XG5cbiAgcHJvdGVjdGVkIHN0aWNreTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UpIHt9XG4gIGluZm8obWVzc2FnZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nLCBvcHRpb25zPzogVCk6IE9ic2VydmFibGU8VG9hc3Rlci5TdGF0dXM+IHtcbiAgICByZXR1cm4gdGhpcy5zaG93KG1lc3NhZ2UsIHRpdGxlLCAnaW5mbycsIG9wdGlvbnMpO1xuICB9XG5cbiAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIG9wdGlvbnM/OiBUKTogT2JzZXJ2YWJsZTxUb2FzdGVyLlN0YXR1cz4ge1xuICAgIHJldHVybiB0aGlzLnNob3cobWVzc2FnZSwgdGl0bGUsICdzdWNjZXNzJywgb3B0aW9ucyk7XG4gIH1cblxuICB3YXJuKG1lc3NhZ2U6IHN0cmluZywgdGl0bGU6IHN0cmluZywgb3B0aW9ucz86IFQpOiBPYnNlcnZhYmxlPFRvYXN0ZXIuU3RhdHVzPiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvdyhtZXNzYWdlLCB0aXRsZSwgJ3dhcm4nLCBvcHRpb25zKTtcbiAgfVxuXG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgdGl0bGU6IHN0cmluZywgb3B0aW9ucz86IFQpOiBPYnNlcnZhYmxlPFRvYXN0ZXIuU3RhdHVzPiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvdyhtZXNzYWdlLCB0aXRsZSwgJ2Vycm9yJywgb3B0aW9ucyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2hvdyhtZXNzYWdlOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIHNldmVyaXR5OiBUb2FzdGVyLlNldmVyaXR5LCBvcHRpb25zPzogVCk6IE9ic2VydmFibGU8VG9hc3Rlci5TdGF0dXM+IHtcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNsZWFyKHRoaXMua2V5KTtcblxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgIHNldmVyaXR5LFxuICAgICAgZGV0YWlsOiBtZXNzYWdlLFxuICAgICAgc3VtbWFyeTogdGl0bGUsXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAga2V5OiB0aGlzLmtleSxcbiAgICAgIC4uLih0eXBlb2YgKG9wdGlvbnMgfHwgKHt9IGFzIGFueSkpLnN0aWNreSA9PT0gJ3VuZGVmaW5lZCcgJiYgeyBzdGlja3k6IHRoaXMuc3RpY2t5IH0pLFxuICAgIH0pO1xuICAgIHRoaXMuc3RhdHVzJCA9IG5ldyBTdWJqZWN0PFRvYXN0ZXIuU3RhdHVzPigpO1xuICAgIHJldHVybiB0aGlzLnN0YXR1cyQ7XG4gIH1cblxuICBjbGVhcihzdGF0dXM/OiBUb2FzdGVyLlN0YXR1cykge1xuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY2xlYXIodGhpcy5rZXkpO1xuICAgIHRoaXMuc3RhdHVzJC5uZXh0KHN0YXR1cyB8fCBUb2FzdGVyLlN0YXR1cy5kaXNtaXNzKTtcbiAgICB0aGlzLnN0YXR1cyQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm5/lib/components/confirmation/confirmation.component.js b/npm/ng-packs/dist/theme-shared/esm5/lib/components/confirmation/confirmation.component.js new file mode 100644 index 00000000000..74f44b2c360 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm5/lib/components/confirmation/confirmation.component.js @@ -0,0 +1,51 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component } from '@angular/core'; +import { ConfirmationService } from '../../services/confirmation.service'; +var ConfirmationComponent = /** @class */ (function () { + function ConfirmationComponent(confirmationService) { + this.confirmationService = confirmationService; + this.confirm = "confirm" /* confirm */; + this.reject = "reject" /* reject */; + this.dismiss = "dismiss" /* dismiss */; + } + /** + * @param {?} status + * @return {?} + */ + ConfirmationComponent.prototype.close = /** + * @param {?} status + * @return {?} + */ + function (status) { + this.confirmationService.clear(status); + }; + ConfirmationComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-confirmation', + template: "\n \n \n
    \n

    \n {{ message.summary | abpLocalization: message.titleLocalizationParams }}\n

    \n
    \n
    \n {{ message.detail | abpLocalization: message.messageLocalizationParams }}\n
    \n\n \n
    \n \n " + }] } + ]; + /** @nocollapse */ + ConfirmationComponent.ctorParameters = function () { return [ + { type: ConfirmationService } + ]; }; + return ConfirmationComponent; +}()); +export { ConfirmationComponent }; +if (false) { + /** @type {?} */ + ConfirmationComponent.prototype.confirm; + /** @type {?} */ + ConfirmationComponent.prototype.reject; + /** @type {?} */ + ConfirmationComponent.prototype.dismiss; + /** + * @type {?} + * @private + */ + ConfirmationComponent.prototype.confirmationService; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhYnAvbmcudGhlbWUuc2hhcmVkLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvY29uZmlybWF0aW9uL2NvbmZpcm1hdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHMUU7SUFzQ0UsK0JBQW9CLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBSjVELFlBQU8sMkJBQTBCO1FBQ2pDLFdBQU0seUJBQXlCO1FBQy9CLFlBQU8sMkJBQTBCO0lBRThCLENBQUM7Ozs7O0lBRWhFLHFDQUFLOzs7O0lBQUwsVUFBTSxNQUFzQjtRQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7O2dCQTFDRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsUUFBUSxFQUFFLDhwQ0E2QlQ7aUJBQ0Y7Ozs7Z0JBbkNRLG1CQUFtQjs7SUE4QzVCLDRCQUFDO0NBQUEsQUEzQ0QsSUEyQ0M7U0FWWSxxQkFBcUI7OztJQUNoQyx3Q0FBaUM7O0lBQ2pDLHVDQUErQjs7SUFDL0Isd0NBQWlDOzs7OztJQUVyQixvREFBZ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maXJtYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RvYXN0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtY29uZmlybWF0aW9uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8cC10b2FzdFxuICAgICAgcG9zaXRpb249XCJjZW50ZXJcIlxuICAgICAga2V5PVwiYWJwQ29uZmlybWF0aW9uXCJcbiAgICAgIChvbkNsb3NlKT1cImNsb3NlKGRpc21pc3MpXCJcbiAgICAgIFttb2RhbF09XCJ0cnVlXCJcbiAgICAgIFtiYXNlWkluZGV4XT1cIjEwMDBcIlxuICAgICAgc3R5bGVDbGFzcz1cIlwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlIGxldC1tZXNzYWdlIHBUZW1wbGF0ZT1cIm1lc3NhZ2VcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1lc3NhZ2Uuc3VtbWFyeVwiIGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cbiAgICAgICAgICAgIHt7IG1lc3NhZ2Uuc3VtbWFyeSB8IGFicExvY2FsaXphdGlvbjogbWVzc2FnZS50aXRsZUxvY2FsaXphdGlvblBhcmFtcyB9fVxuICAgICAgICAgIDwvaDQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICAgIHt7IG1lc3NhZ2UuZGV0YWlsIHwgYWJwTG9jYWxpemF0aW9uOiBtZXNzYWdlLm1lc3NhZ2VMb2NhbGl6YXRpb25QYXJhbXMgfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFtZXNzYWdlLmhpZGVDYW5jZWxCdG5cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJjbG9zZShyZWplY3QpXCI+XG4gICAgICAgICAgICB7eyBtZXNzYWdlLmNhbmNlbENvcHkgfHwgJ0FicElkZW50aXR5OjpDYW5jZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFtZXNzYWdlLmhpZGVZZXNCdG5cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJjbG9zZShjb25maXJtKVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgbWVzc2FnZS55ZXNDb3B5IHx8ICdBYnBJZGVudGl0eTo6WWVzJyB8IGFicExvY2FsaXphdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcC10b2FzdD5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlybWF0aW9uQ29tcG9uZW50IHtcbiAgY29uZmlybSA9IFRvYXN0ZXIuU3RhdHVzLmNvbmZpcm07XG4gIHJlamVjdCA9IFRvYXN0ZXIuU3RhdHVzLnJlamVjdDtcbiAgZGlzbWlzcyA9IFRvYXN0ZXIuU3RhdHVzLmRpc21pc3M7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlKSB7fVxuXG4gIGNsb3NlKHN0YXR1czogVG9hc3Rlci5TdGF0dXMpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY2xlYXIoc3RhdHVzKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm5/lib/components/errors/error.component.js b/npm/ng-packs/dist/theme-shared/esm5/lib/components/errors/error.component.js new file mode 100644 index 00000000000..1f2f22c95e5 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm5/lib/components/errors/error.component.js @@ -0,0 +1,42 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component } from '@angular/core'; +var ErrorComponent = /** @class */ (function () { + function ErrorComponent() { + this.title = 'Oops!'; + this.details = 'Sorry, an error has occured.'; + } + /** + * @return {?} + */ + ErrorComponent.prototype.destroy = /** + * @return {?} + */ + function () { + this.renderer.removeChild(this.host, this.elementRef.nativeElement); + }; + ErrorComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-error', + template: "\n
    \n \n
    \n
    \n
    \n

    \n {{ title }}\n

    \n
    \n {{ details }}\n
    \n \n
    \n
    \n
    \n
    \n ", + styles: [".error{position:fixed;top:0;background-color:#fff;width:100vw;height:100vh;z-index:999999}.centered{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}"] + }] } + ]; + return ErrorComponent; +}()); +export { ErrorComponent }; +if (false) { + /** @type {?} */ + ErrorComponent.prototype.title; + /** @type {?} */ + ErrorComponent.prototype.details; + /** @type {?} */ + ErrorComponent.prototype.renderer; + /** @type {?} */ + ErrorComponent.prototype.elementRef; + /** @type {?} */ + ErrorComponent.prototype.host; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5zaGFyZWQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9lcnJvcnMvZXJyb3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUVqRTtJQUFBO1FBNkJFLFVBQUssR0FBRyxPQUFPLENBQUM7UUFFaEIsWUFBTyxHQUFHLDhCQUE4QixDQUFDO0lBVzNDLENBQUM7Ozs7SUFIQyxnQ0FBTzs7O0lBQVA7UUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEUsQ0FBQzs7Z0JBekNGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztvQkFDckIsUUFBUSxFQUFFLDZ2QkF1QlQ7O2lCQUVGOztJQWVELHFCQUFDO0NBQUEsQUExQ0QsSUEwQ0M7U0FkWSxjQUFjOzs7SUFDekIsK0JBQWdCOztJQUVoQixpQ0FBeUM7O0lBRXpDLGtDQUFvQjs7SUFFcEIsb0NBQXVCOztJQUV2Qiw4QkFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgUmVuZGVyZXIyLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FicC1lcnJvcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImVycm9yXCI+XG4gICAgICA8YnV0dG9uIGlkPVwiYWJwLWNsb3NlLWJ1dHRvbiBtci0yXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiAoY2xpY2spPVwiZGVzdHJveSgpXCI+XG4gICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgY2VudGVyZWRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvci10ZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPGgxPlxuICAgICAgICAgICAgICB7eyB0aXRsZSB9fVxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvci1kZXRhaWxzXCI+XG4gICAgICAgICAgICAgIHt7IGRldGFpbHMgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPGEgcm91dGVyTGluaz1cIi9cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tbWQgbXQtMlwiXG4gICAgICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwiZ2x5cGhpY29uIGdseXBoaWNvbi1ob21lXCI+PC9zcGFuPiBUYWtlIG1lIGhvbWVcbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWydlcnJvci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBFcnJvckNvbXBvbmVudCB7XG4gIHRpdGxlID0gJ09vcHMhJztcblxuICBkZXRhaWxzID0gJ1NvcnJ5LCBhbiBlcnJvciBoYXMgb2NjdXJlZC4nO1xuXG4gIHJlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgZWxlbWVudFJlZjogRWxlbWVudFJlZjtcblxuICBob3N0OiBhbnk7XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMuaG9zdCwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm5/lib/components/index.js b/npm/ng-packs/dist/theme-shared/esm5/lib/components/index.js new file mode 100644 index 00000000000..c5ead0704c8 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm5/lib/components/index.js @@ -0,0 +1,8 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export { ConfirmationComponent } from './confirmation/confirmation.component'; +export { ToastComponent } from './toast/toast.component'; +export { ModalComponent } from './modal/modal.component'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLnNoYXJlZC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxzQ0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCwrQkFBYyx5QkFBeUIsQ0FBQztBQUN4QywrQkFBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlybWF0aW9uL2NvbmZpcm1hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90b2FzdC90b2FzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm5/lib/components/loader-bar/loader-bar.component.js b/npm/ng-packs/dist/theme-shared/esm5/lib/components/loader-bar/loader-bar.component.js new file mode 100644 index 00000000000..04f5563f609 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm5/lib/components/loader-bar/loader-bar.component.js @@ -0,0 +1,153 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component, Input } from '@angular/core'; +import { Actions, ofActionSuccessful } from '@ngxs/store'; +import { LoaderStart, LoaderStop } from '@abp/ng.core'; +import { filter } from 'rxjs/operators'; +import { Router, NavigationStart, NavigationEnd } from '@angular/router'; +import { takeUntilDestroy } from '@ngx-validate/core'; +var LoaderBarComponent = /** @class */ (function () { + function LoaderBarComponent(actions, router) { + var _this = this; + this.actions = actions; + this.router = router; + this.containerClass = 'abp-loader-bar'; + this.progressClass = 'abp-progress'; + this.isLoading = false; + this.filter = (/** + * @param {?} action + * @return {?} + */ + function (action) { return action.payload.url.indexOf('openid-configuration') < 0; }); + this.progressLevel = 0; + actions + .pipe(ofActionSuccessful(LoaderStart, LoaderStop), filter(this.filter), takeUntilDestroy(this)) + .subscribe((/** + * @param {?} action + * @return {?} + */ + function (action) { + if (action instanceof LoaderStart) + _this.startLoading(); + else + _this.stopLoading(); + })); + router.events + .pipe(filter((/** + * @param {?} event + * @return {?} + */ + function (event) { return event instanceof NavigationStart || event instanceof NavigationEnd; })), takeUntilDestroy(this)) + .subscribe((/** + * @param {?} event + * @return {?} + */ + function (event) { + if (event instanceof NavigationStart) + _this.startLoading(); + else + _this.stopLoading(); + })); + } + /** + * @return {?} + */ + LoaderBarComponent.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { }; + /** + * @return {?} + */ + LoaderBarComponent.prototype.startLoading = /** + * @return {?} + */ + function () { + var _this = this; + this.isLoading = true; + /** @type {?} */ + var interval = setInterval((/** + * @return {?} + */ + function () { + if (_this.progressLevel < 75) { + _this.progressLevel += Math.random() * 10; + } + else if (_this.progressLevel < 90) { + _this.progressLevel += 0.4; + } + else if (_this.progressLevel < 100) { + _this.progressLevel += 0.1; + } + else { + clearInterval(interval); + } + }), 300); + this.interval = interval; + }; + /** + * @return {?} + */ + LoaderBarComponent.prototype.stopLoading = /** + * @return {?} + */ + function () { + var _this = this; + clearInterval(this.interval); + this.progressLevel = 100; + this.isLoading = false; + setTimeout((/** + * @return {?} + */ + function () { + _this.progressLevel = 0; + }), 800); + }; + LoaderBarComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-loader-bar', + template: "\n
    \n
    \n
    \n ", + styles: [".abp-loader-bar{left:0;opacity:0;position:fixed;top:0;transition:opacity .4s linear .4s;z-index:99999}.abp-loader-bar.is-loading{opacity:1;transition:none}.abp-loader-bar .abp-progress{background:#77b6ff;box-shadow:0 0 10px rgba(119,182,255,.7);height:2px;left:0;position:fixed;top:0;transition:width .4s}"] + }] } + ]; + /** @nocollapse */ + LoaderBarComponent.ctorParameters = function () { return [ + { type: Actions }, + { type: Router } + ]; }; + LoaderBarComponent.propDecorators = { + containerClass: [{ type: Input }], + progressClass: [{ type: Input }], + isLoading: [{ type: Input }], + filter: [{ type: Input }] + }; + return LoaderBarComponent; +}()); +export { LoaderBarComponent }; +if (false) { + /** @type {?} */ + LoaderBarComponent.prototype.containerClass; + /** @type {?} */ + LoaderBarComponent.prototype.progressClass; + /** @type {?} */ + LoaderBarComponent.prototype.isLoading; + /** @type {?} */ + LoaderBarComponent.prototype.filter; + /** @type {?} */ + LoaderBarComponent.prototype.progressLevel; + /** @type {?} */ + LoaderBarComponent.prototype.interval; + /** + * @type {?} + * @private + */ + LoaderBarComponent.prototype.actions; + /** + * @type {?} + * @private + */ + LoaderBarComponent.prototype.router; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL25nLnRoZW1lLnNoYXJlZC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2xvYWRlci1iYXIvbG9hZGVyLWJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXREO0lBMEJFLDRCQUFvQixPQUFnQixFQUFVLE1BQWM7UUFBNUQsaUJBcUJDO1FBckJtQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWY1RCxtQkFBYyxHQUFXLGdCQUFnQixDQUFDO1FBRzFDLGtCQUFhLEdBQVcsY0FBYyxDQUFDO1FBR3ZDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFHM0IsV0FBTTs7OztRQUFHLFVBQUMsTUFBZ0MsSUFBSyxPQUFBLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsRUFBdEQsQ0FBc0QsRUFBQztRQUV0RyxrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUt4QixPQUFPO2FBQ0osSUFBSSxDQUNILGtCQUFrQixDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsRUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFDbkIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQ3ZCO2FBQ0EsU0FBUzs7OztRQUFDLFVBQUEsTUFBTTtZQUNmLElBQUksTUFBTSxZQUFZLFdBQVc7Z0JBQUUsS0FBSSxDQUFDLFlBQVksRUFBRSxDQUFDOztnQkFDbEQsS0FBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFCLENBQUMsRUFBQyxDQUFDO1FBRUwsTUFBTSxDQUFDLE1BQU07YUFDVixJQUFJLENBQ0gsTUFBTTs7OztRQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsS0FBSyxZQUFZLGVBQWUsSUFBSSxLQUFLLFlBQVksYUFBYSxFQUFsRSxDQUFrRSxFQUFDLEVBQ25GLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUN2QjthQUNBLFNBQVM7Ozs7UUFBQyxVQUFBLEtBQUs7WUFDZCxJQUFJLEtBQUssWUFBWSxlQUFlO2dCQUFFLEtBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzs7Z0JBQ3JELEtBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQixDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7SUFFRCx3Q0FBVzs7O0lBQVgsY0FBZSxDQUFDOzs7O0lBRWhCLHlDQUFZOzs7SUFBWjtRQUFBLGlCQWVDO1FBZEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7O1lBQ2hCLFFBQVEsR0FBRyxXQUFXOzs7UUFBQztZQUMzQixJQUFJLEtBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxFQUFFO2dCQUMzQixLQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7YUFDMUM7aUJBQU0sSUFBSSxLQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsRUFBRTtnQkFDbEMsS0FBSSxDQUFDLGFBQWEsSUFBSSxHQUFHLENBQUM7YUFDM0I7aUJBQU0sSUFBSSxLQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsRUFBRTtnQkFDbkMsS0FBSSxDQUFDLGFBQWEsSUFBSSxHQUFHLENBQUM7YUFDM0I7aUJBQU07Z0JBQ0wsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQyxHQUFFLEdBQUcsQ0FBQztRQUVQLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7Ozs7SUFFRCx3Q0FBVzs7O0lBQVg7UUFBQSxpQkFRQztRQVBDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsVUFBVTs7O1FBQUM7WUFDVCxLQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDLEdBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDOztnQkE1RUYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFFBQVEsRUFBRSxtTUFJVDs7aUJBRUY7Ozs7Z0JBZFEsT0FBTztnQkFHUCxNQUFNOzs7aUNBYVosS0FBSztnQ0FHTCxLQUFLOzRCQUdMLEtBQUs7eUJBR0wsS0FBSzs7SUEwRFIseUJBQUM7Q0FBQSxBQTdFRCxJQTZFQztTQXBFWSxrQkFBa0I7OztJQUM3Qiw0Q0FDMEM7O0lBRTFDLDJDQUN1Qzs7SUFFdkMsdUNBQzJCOztJQUUzQixvQ0FDc0c7O0lBRXRHLDJDQUEwQjs7SUFFMUIsc0NBQWM7Ozs7O0lBRUYscUNBQXdCOzs7OztJQUFFLG9DQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25zLCBvZkFjdGlvblN1Y2Nlc3NmdWwgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBMb2FkZXJTdGFydCwgTG9hZGVyU3RvcCB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSb3V0ZXIsIE5hdmlnYXRpb25TdGFydCwgTmF2aWdhdGlvbkVuZCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95IH0gZnJvbSAnQG5neC12YWxpZGF0ZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWJwLWxvYWRlci1iYXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgaWQ9XCJhYnAtbG9hZGVyLWJhclwiIFtuZ0NsYXNzXT1cImNvbnRhaW5lckNsYXNzXCIgW2NsYXNzLmlzLWxvYWRpbmddPVwiaXNMb2FkaW5nXCI+XG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cInByb2dyZXNzQ2xhc3NcIiBbc3R5bGUud2lkdGgudnddPVwicHJvZ3Jlc3NMZXZlbFwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9sb2FkZXItYmFyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIExvYWRlckJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIGNvbnRhaW5lckNsYXNzOiBzdHJpbmcgPSAnYWJwLWxvYWRlci1iYXInO1xuXG4gIEBJbnB1dCgpXG4gIHByb2dyZXNzQ2xhc3M6IHN0cmluZyA9ICdhYnAtcHJvZ3Jlc3MnO1xuXG4gIEBJbnB1dCgpXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGZpbHRlciA9IChhY3Rpb246IExvYWRlclN0YXJ0IHwgTG9hZGVyU3RvcCkgPT4gYWN0aW9uLnBheWxvYWQudXJsLmluZGV4T2YoJ29wZW5pZC1jb25maWd1cmF0aW9uJykgPCAwO1xuXG4gIHByb2dyZXNzTGV2ZWw6IG51bWJlciA9IDA7XG5cbiAgaW50ZXJ2YWw6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFjdGlvbnM6IEFjdGlvbnMsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgICBhY3Rpb25zXG4gICAgICAucGlwZShcbiAgICAgICAgb2ZBY3Rpb25TdWNjZXNzZnVsKExvYWRlclN0YXJ0LCBMb2FkZXJTdG9wKSxcbiAgICAgICAgZmlsdGVyKHRoaXMuZmlsdGVyKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveSh0aGlzKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoYWN0aW9uID0+IHtcbiAgICAgICAgaWYgKGFjdGlvbiBpbnN0YW5jZW9mIExvYWRlclN0YXJ0KSB0aGlzLnN0YXJ0TG9hZGluZygpO1xuICAgICAgICBlbHNlIHRoaXMuc3RvcExvYWRpbmcoKTtcbiAgICAgIH0pO1xuXG4gICAgcm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCB8fCBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95KHRoaXMpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkgdGhpcy5zdGFydExvYWRpbmcoKTtcbiAgICAgICAgZWxzZSB0aGlzLnN0b3BMb2FkaW5nKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge31cblxuICBzdGFydExvYWRpbmcoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvZ3Jlc3NMZXZlbCA8IDc1KSB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NMZXZlbCArPSBNYXRoLnJhbmRvbSgpICogMTA7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucHJvZ3Jlc3NMZXZlbCA8IDkwKSB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NMZXZlbCArPSAwLjQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucHJvZ3Jlc3NMZXZlbCA8IDEwMCkge1xuICAgICAgICB0aGlzLnByb2dyZXNzTGV2ZWwgKz0gMC4xO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgICB9XG4gICAgfSwgMzAwKTtcblxuICAgIHRoaXMuaW50ZXJ2YWwgPSBpbnRlcnZhbDtcbiAgfVxuXG4gIHN0b3BMb2FkaW5nKCkge1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XG4gICAgdGhpcy5wcm9ncmVzc0xldmVsID0gMTAwO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NMZXZlbCA9IDA7XG4gICAgfSwgODAwKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm5/lib/components/modal/modal.component.js b/npm/ng-packs/dist/theme-shared/esm5/lib/components/modal/modal.component.js new file mode 100644 index 00000000000..d10da3d4411 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm5/lib/components/modal/modal.component.js @@ -0,0 +1,269 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Component, ContentChild, ElementRef, EventEmitter, Input, Output, Renderer2, TemplateRef, ViewChild, } from '@angular/core'; +import { fromEvent, Subject, timer } from 'rxjs'; +import { debounceTime, filter, take, takeUntil } from 'rxjs/operators'; +import { ConfirmationService } from '../../services/confirmation.service'; +var ModalComponent = /** @class */ (function () { + function ModalComponent(renderer, confirmationService) { + this.renderer = renderer; + this.confirmationService = confirmationService; + this.centered = true; + this.modalClass = ''; + this.size = 'lg'; + this.visibleChange = new EventEmitter(); + this._visible = false; + this.closable = false; + this.isOpenConfirmation = false; + this.destroy$ = new Subject(); + } + Object.defineProperty(ModalComponent.prototype, "visible", { + get: /** + * @return {?} + */ + function () { + return this._visible; + }, + set: /** + * @param {?} value + * @return {?} + */ + function (value) { + var _this = this; + if (!this.modalContent) { + setTimeout((/** + * @return {?} + */ + function () { return (_this.visible = value); }), 0); + return; + } + if (value) { + this.setVisible(value); + this.listen(); + } + else { + this.closable = false; + this.renderer.addClass(this.modalContent.nativeElement, 'fade-out-top'); + setTimeout((/** + * @return {?} + */ + function () { + _this.setVisible(value); + _this.renderer.removeClass(_this.modalContent.nativeElement, 'fade-out-top'); + _this.ngOnDestroy(); + }), 350); + } + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + ModalComponent.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { + this.destroy$.next(); + }; + /** + * @param {?} value + * @return {?} + */ + ModalComponent.prototype.setVisible = /** + * @param {?} value + * @return {?} + */ + function (value) { + var _this = this; + this._visible = value; + this.visibleChange.emit(value); + value + ? timer(500) + .pipe(take(1)) + .subscribe((/** + * @param {?} _ + * @return {?} + */ + function (_) { return (_this.closable = true); })) + : (this.closable = false); + }; + /** + * @return {?} + */ + ModalComponent.prototype.listen = /** + * @return {?} + */ + function () { + var _this = this; + fromEvent(document, 'click') + .pipe(debounceTime(350), takeUntil(this.destroy$), filter((/** + * @param {?} event + * @return {?} + */ + function (event) { + return event && + _this.closable && + _this.modalContent && + !_this.isOpenConfirmation && + !_this.modalContent.nativeElement.contains(event.target); + }))) + .subscribe((/** + * @param {?} _ + * @return {?} + */ + function (_) { + _this.close(); + })); + fromEvent(document, 'keyup') + .pipe(takeUntil(this.destroy$), filter((/** + * @param {?} key + * @return {?} + */ + function (key) { return key && key.code === 'Escape' && _this.closable; })), debounceTime(350)) + .subscribe((/** + * @param {?} _ + * @return {?} + */ + function (_) { + _this.close(); + })); + if (!this.abpClose) + return; + fromEvent(this.abpClose.nativeElement, 'click') + .pipe(takeUntil(this.destroy$), filter((/** + * @return {?} + */ + function () { return !!(_this.closable && _this.modalContent); })), debounceTime(350)) + .subscribe((/** + * @return {?} + */ + function () { return _this.close(); })); + }; + /** + * @return {?} + */ + ModalComponent.prototype.close = /** + * @return {?} + */ + function () { + var _this = this; + /** @type {?} */ + var nodes = getFlatNodes(((/** @type {?} */ (this.modalContent.nativeElement.querySelector('#abp-modal-body')))).childNodes); + if (hasNgDirty(nodes)) { + if (this.isOpenConfirmation) + return; + this.isOpenConfirmation = true; + this.confirmationService + .warn('AbpAccount::AreYouSureYouWantToCancelEditingWarningMessage', 'AbpAccount::AreYouSure') + .subscribe((/** + * @param {?} status + * @return {?} + */ + function (status) { + timer(400).subscribe((/** + * @return {?} + */ + function () { + _this.isOpenConfirmation = false; + })); + if (status === "confirm" /* confirm */) { + _this.visible = false; + } + })); + } + else { + this.visible = false; + } + }; + ModalComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-modal', + template: "\n \n
    \n
    \n \n\n \n
    \n
    \n \n\n
    \n \n
    \n
    \n
    \n \n\n \n\n" + }] } + ]; + /** @nocollapse */ + ModalComponent.ctorParameters = function () { return [ + { type: Renderer2 }, + { type: ConfirmationService } + ]; }; + ModalComponent.propDecorators = { + visible: [{ type: Input }], + centered: [{ type: Input }], + modalClass: [{ type: Input }], + size: [{ type: Input }], + visibleChange: [{ type: Output }], + abpHeader: [{ type: ContentChild, args: ['abpHeader', { static: false },] }], + abpBody: [{ type: ContentChild, args: ['abpBody', { static: false },] }], + abpFooter: [{ type: ContentChild, args: ['abpFooter', { static: false },] }], + abpClose: [{ type: ContentChild, args: ['abpClose', { static: false, read: ElementRef },] }], + modalContent: [{ type: ViewChild, args: ['abpModalContent', { static: false },] }] + }; + return ModalComponent; +}()); +export { ModalComponent }; +if (false) { + /** @type {?} */ + ModalComponent.prototype.centered; + /** @type {?} */ + ModalComponent.prototype.modalClass; + /** @type {?} */ + ModalComponent.prototype.size; + /** @type {?} */ + ModalComponent.prototype.visibleChange; + /** @type {?} */ + ModalComponent.prototype.abpHeader; + /** @type {?} */ + ModalComponent.prototype.abpBody; + /** @type {?} */ + ModalComponent.prototype.abpFooter; + /** @type {?} */ + ModalComponent.prototype.abpClose; + /** @type {?} */ + ModalComponent.prototype.modalContent; + /** @type {?} */ + ModalComponent.prototype._visible; + /** @type {?} */ + ModalComponent.prototype.closable; + /** @type {?} */ + ModalComponent.prototype.isOpenConfirmation; + /** @type {?} */ + ModalComponent.prototype.destroy$; + /** + * @type {?} + * @private + */ + ModalComponent.prototype.renderer; + /** + * @type {?} + * @private + */ + ModalComponent.prototype.confirmationService; +} +/** + * @param {?} nodes + * @return {?} + */ +function getFlatNodes(nodes) { + return Array.from(nodes).reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { return tslib_1.__spread(acc, (val.childNodes && val.childNodes.length ? Array.from(val.childNodes) : [val])); }), []); +} +/** + * @param {?} nodes + * @return {?} + */ +function hasNgDirty(nodes) { + return nodes.findIndex((/** + * @param {?} node + * @return {?} + */ + function (node) { return (node.className || '').indexOf('ng-dirty') > -1; })) > -1; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5zaGFyZWQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUsxRTtJQXVERSx3QkFBb0IsUUFBbUIsRUFBVSxtQkFBd0M7UUFBckUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUExQmhGLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFekIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUV4QixTQUFJLEdBQWMsSUFBSSxDQUFDO1FBRXRCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQVl0RCxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUIsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBRXBDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRTZELENBQUM7SUFsRDdGLHNCQUNJLG1DQUFPOzs7O1FBRFg7WUFFRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkIsQ0FBQzs7Ozs7UUFDRCxVQUFZLEtBQWM7WUFBMUIsaUJBa0JD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R0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQTFGLENBQTJGLEdBQ3pHLEVBQUUsQ0FDSCxDQUFDO0FBQ0osQ0FBQzs7Ozs7QUFFRCxTQUFTLFVBQVUsQ0FBQyxLQUFvQjtJQUN0QyxPQUFPLEtBQUssQ0FBQyxTQUFTOzs7O0lBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUEvQyxDQUErQyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlybWF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RlciB9IGZyb20gJy4uLy4uL21vZGVscy90b2FzdGVyJztcblxuZXhwb3J0IHR5cGUgTW9kYWxTaXplID0gJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWJwLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgfVxuICBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5tb2RhbENvbnRlbnQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMudmlzaWJsZSA9IHZhbHVlKSwgMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnNldFZpc2libGUodmFsdWUpO1xuICAgICAgdGhpcy5saXN0ZW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbG9zYWJsZSA9IGZhbHNlO1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLm1vZGFsQ29udGVudC5uYXRpdmVFbGVtZW50LCAnZmFkZS1vdXQtdG9wJyk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRWaXNpYmxlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLm1vZGFsQ29udGVudC5uYXRpdmVFbGVtZW50LCAnZmFkZS1vdXQtdG9wJyk7XG4gICAgICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcbiAgICAgIH0sIDM1MCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgY2VudGVyZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIG1vZGFsQ2xhc3M6IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpIHNpemU6IE1vZGFsU2l6ZSA9ICdsZyc7XG5cbiAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQENvbnRlbnRDaGlsZCgnYWJwSGVhZGVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGFicEhlYWRlcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKCdhYnBCb2R5JywgeyBzdGF0aWM6IGZhbHNlIH0pIGFicEJvZHk6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZCgnYWJwRm9vdGVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGFicEZvb3RlcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKCdhYnBDbG9zZScsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KSBhYnBDbG9zZTogRWxlbWVudFJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ2FicE1vZGFsQ29udGVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBtb2RhbENvbnRlbnQ6IEVsZW1lbnRSZWY7XG5cbiAgX3Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjbG9zYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGlzT3BlbkNvbmZpcm1hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSkge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgfVxuXG4gIHNldFZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl92aXNpYmxlID0gdmFsdWU7XG4gICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIHZhbHVlXG4gICAgICA/IHRpbWVyKDUwMClcbiAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoXyA9PiAodGhpcy5jbG9zYWJsZSA9IHRydWUpKVxuICAgICAgOiAodGhpcy5jbG9zYWJsZSA9IGZhbHNlKTtcbiAgfVxuXG4gIGxpc3RlbigpIHtcbiAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICdjbGljaycpXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDM1MCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChldmVudDogTW91c2VFdmVudCkgPT5cbiAgICAgICAgICAgIGV2ZW50ICYmXG4gICAgICAgICAgICB0aGlzLmNsb3NhYmxlICYmXG4gICAgICAgICAgICB0aGlzLm1vZGFsQ29udGVudCAmJlxuICAgICAgICAgICAgIXRoaXMuaXNPcGVuQ29uZmlybWF0aW9uICYmXG4gICAgICAgICAgICAhdGhpcy5tb2RhbENvbnRlbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfSk7XG5cbiAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICdrZXl1cCcpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoKGtleTogS2V5Ym9hcmRFdmVudCkgPT4ga2V5ICYmIGtleS5jb2RlID09PSAnRXNjYXBlJyAmJiB0aGlzLmNsb3NhYmxlKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDM1MCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9KTtcblxuICAgIGlmICghdGhpcy5hYnBDbG9zZSkgcmV0dXJuO1xuXG4gICAgZnJvbUV2ZW50KHRoaXMuYWJwQ2xvc2UubmF0aXZlRWxlbWVudCwgJ2NsaWNrJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgIGZpbHRlcigoKSA9PiAhISh0aGlzLmNsb3NhYmxlICYmIHRoaXMubW9kYWxDb250ZW50KSksXG4gICAgICAgIGRlYm91bmNlVGltZSgzNTApLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlKCkpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgY29uc3Qgbm9kZXMgPSBnZXRGbGF0Tm9kZXMoXG4gICAgICAodGhpcy5tb2RhbENvbnRlbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjYWJwLW1vZGFsLWJvZHknKSBhcyBIVE1MRWxlbWVudCkuY2hpbGROb2RlcyxcbiAgICApO1xuXG4gICAgaWYgKGhhc05nRGlydHkobm9kZXMpKSB7XG4gICAgICBpZiAodGhpcy5pc09wZW5Db25maXJtYXRpb24pIHJldHVybjtcblxuICAgICAgdGhpcy5pc09wZW5Db25maXJtYXRpb24gPSB0cnVlO1xuICAgICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlXG4gICAgICAgIC53YXJuKCdBYnBBY2NvdW50OjpBcmVZb3VTdXJlWW91V2FudFRvQ2FuY2VsRWRpdGluZ1dhcm5pbmdNZXNzYWdlJywgJ0FicEFjY291bnQ6OkFyZVlvdVN1cmUnKVxuICAgICAgICAuc3Vic2NyaWJlKChzdGF0dXM6IFRvYXN0ZXIuU3RhdHVzKSA9PiB7XG4gICAgICAgICAgdGltZXIoNDAwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5Db25maXJtYXRpb24gPSBmYWxzZTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChzdGF0dXMgPT09IFRvYXN0ZXIuU3RhdHVzLmNvbmZpcm0pIHtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRGbGF0Tm9kZXMobm9kZXM6IE5vZGVMaXN0KTogSFRNTEVsZW1lbnRbXSB7XG4gIHJldHVybiBBcnJheS5mcm9tKG5vZGVzKS5yZWR1Y2UoXG4gICAgKGFjYywgdmFsKSA9PiBbLi4uYWNjLCAuLi4odmFsLmNoaWxkTm9kZXMgJiYgdmFsLmNoaWxkTm9kZXMubGVuZ3RoID8gQXJyYXkuZnJvbSh2YWwuY2hpbGROb2RlcykgOiBbdmFsXSldLFxuICAgIFtdLFxuICApO1xufVxuXG5mdW5jdGlvbiBoYXNOZ0RpcnR5KG5vZGVzOiBIVE1MRWxlbWVudFtdKSB7XG4gIHJldHVybiBub2Rlcy5maW5kSW5kZXgobm9kZSA9PiAobm9kZS5jbGFzc05hbWUgfHwgJycpLmluZGV4T2YoJ25nLWRpcnR5JykgPiAtMSkgPiAtMTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm5/lib/components/toast/toast.component.js b/npm/ng-packs/dist/theme-shared/esm5/lib/components/toast/toast.component.js new file mode 100644 index 00000000000..b44bf3a1b44 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm5/lib/components/toast/toast.component.js @@ -0,0 +1,18 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component } from '@angular/core'; +var ToastComponent = /** @class */ (function () { + function ToastComponent() { + } + ToastComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-toast', + template: "\n \n \n \n
    \n
    {{ message.summary | abpLocalization: message.titleLocalizationParams }}
    \n
    {{ message.detail | abpLocalization: message.messageLocalizationParams }}
    \n
    \n
    \n
    \n " + }] } + ]; + return ToastComponent; +}()); +export { ToastComponent }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy50aGVtZS5zaGFyZWQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy90b2FzdC90b2FzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUM7SUFBQTtJQXNCNkIsQ0FBQzs7Z0JBdEI3QixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSx5MEJBa0JUO2lCQUNGOztJQUM0QixxQkFBQztDQUFBLEFBdEI5QixJQXNCOEI7U0FBakIsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtdG9hc3QnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxwLXRvYXN0IHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIga2V5PVwiYWJwVG9hc3RcIiBbYmFzZVpJbmRleF09XCIxMDAwXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbGV0LW1lc3NhZ2UgcFRlbXBsYXRlPVwibWVzc2FnZVwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwidWktdG9hc3QtaWNvbiBwaVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ3BpLWluZm8tY2lyY2xlJzogbWVzc2FnZS5zZXZlcml0eSA9PSAnaW5mbycsXG4gICAgICAgICAgICAncGktZXhjbGFtYXRpb24tdHJpYW5nbGUnOiBtZXNzYWdlLnNldmVyaXR5ID09ICd3YXJuJyxcbiAgICAgICAgICAgICdwaS10aW1lcyc6IG1lc3NhZ2Uuc2V2ZXJpdHkgPT0gJ2Vycm9yJyxcbiAgICAgICAgICAgICdwaS1jaGVjayc6IG1lc3NhZ2Uuc2V2ZXJpdHkgPT0gJ3N1Y2Nlc3MnXG4gICAgICAgICAgfVwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1aS10b2FzdC1tZXNzYWdlLXRleHQtY29udGVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1aS10b2FzdC1zdW1tYXJ5XCI+e3sgbWVzc2FnZS5zdW1tYXJ5IHwgYWJwTG9jYWxpemF0aW9uOiBtZXNzYWdlLnRpdGxlTG9jYWxpemF0aW9uUGFyYW1zIH19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInVpLXRvYXN0LWRldGFpbFwiPnt7IG1lc3NhZ2UuZGV0YWlsIHwgYWJwTG9jYWxpemF0aW9uOiBtZXNzYWdlLm1lc3NhZ2VMb2NhbGl6YXRpb25QYXJhbXMgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcC10b2FzdD5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgVG9hc3RDb21wb25lbnQge31cbiJdfQ== \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/esm5/lib/contants/styles.js b/npm/ng-packs/dist/theme-shared/esm5/lib/contants/styles.js new file mode 100644 index 00000000000..c8edd69cb71 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/esm5/lib/contants/styles.js @@ -0,0 +1,6 @@ +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +export default "\n.is-invalid .form-control {\n border-color: #dc3545;\n border-style: solid !important;\n}\n\n.is-invalid .invalid-feedback,\n.is-invalid + * .invalid-feedback {\n display: block;\n}\n\n.data-tables-filter {\n text-align: right;\n}\n\n.pointer {\n cursor: pointer;\n}\n\n.navbar .dropdown-submenu a::after {\n transform: rotate(-90deg);\n position: absolute;\n right: 16px;\n top: 18px;\n}\n\n.modal {\n background-color: rgba(0, 0, 0, .6);\n}\n\n.abp-ellipsis {\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* + + + + + + + + ` + }] } +]; +/** @nocollapse */ +ConfirmationComponent.ctorParameters = () => [ + { type: ConfirmationService } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class ErrorComponent { + constructor() { + this.title = 'Oops!'; + this.details = 'Sorry, an error has occured.'; + } + /** + * @return {?} + */ + destroy() { + this.renderer.removeChild(this.host, this.elementRef.nativeElement); + } +} +ErrorComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-error', + template: ` +
    + +
    +
    +
    +

    + {{ title }} +

    +
    + {{ details }} +
    + +
    +
    +
    +
    + `, + styles: [".error{position:fixed;top:0;background-color:#fff;width:100vw;height:100vh;z-index:999999}.centered{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}"] + }] } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class LoaderBarComponent { + /** + * @param {?} actions + * @param {?} router + */ + constructor(actions, router) { + this.actions = actions; + this.router = router; + this.containerClass = 'abp-loader-bar'; + this.progressClass = 'abp-progress'; + this.isLoading = false; + this.filter = (/** + * @param {?} action + * @return {?} + */ + (action) => action.payload.url.indexOf('openid-configuration') < 0); + this.progressLevel = 0; + actions + .pipe(ofActionSuccessful(LoaderStart, LoaderStop), filter(this.filter), takeUntilDestroy(this)) + .subscribe((/** + * @param {?} action + * @return {?} + */ + action => { + if (action instanceof LoaderStart) + this.startLoading(); + else + this.stopLoading(); + })); + router.events + .pipe(filter((/** + * @param {?} event + * @return {?} + */ + event => event instanceof NavigationStart || event instanceof NavigationEnd)), takeUntilDestroy(this)) + .subscribe((/** + * @param {?} event + * @return {?} + */ + event => { + if (event instanceof NavigationStart) + this.startLoading(); + else + this.stopLoading(); + })); + } + /** + * @return {?} + */ + ngOnDestroy() { } + /** + * @return {?} + */ + startLoading() { + this.isLoading = true; + /** @type {?} */ + const interval = setInterval((/** + * @return {?} + */ + () => { + if (this.progressLevel < 75) { + this.progressLevel += Math.random() * 10; + } + else if (this.progressLevel < 90) { + this.progressLevel += 0.4; + } + else if (this.progressLevel < 100) { + this.progressLevel += 0.1; + } + else { + clearInterval(interval); + } + }), 300); + this.interval = interval; + } + /** + * @return {?} + */ + stopLoading() { + clearInterval(this.interval); + this.progressLevel = 100; + this.isLoading = false; + setTimeout((/** + * @return {?} + */ + () => { + this.progressLevel = 0; + }), 800); + } +} +LoaderBarComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-loader-bar', + template: ` +
    +
    +
    + `, + styles: [".abp-loader-bar{left:0;opacity:0;position:fixed;top:0;transition:opacity .4s linear .4s;z-index:99999}.abp-loader-bar.is-loading{opacity:1;transition:none}.abp-loader-bar .abp-progress{background:#77b6ff;box-shadow:0 0 10px rgba(119,182,255,.7);height:2px;left:0;position:fixed;top:0;transition:width .4s}"] + }] } +]; +/** @nocollapse */ +LoaderBarComponent.ctorParameters = () => [ + { type: Actions }, + { type: Router } +]; +LoaderBarComponent.propDecorators = { + containerClass: [{ type: Input }], + progressClass: [{ type: Input }], + isLoading: [{ type: Input }], + filter: [{ type: Input }] +}; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class ModalComponent { + /** + * @param {?} renderer + * @param {?} confirmationService + */ + constructor(renderer, confirmationService) { + this.renderer = renderer; + this.confirmationService = confirmationService; + this.centered = true; + this.modalClass = ''; + this.size = 'lg'; + this.visibleChange = new EventEmitter(); + this._visible = false; + this.closable = false; + this.isOpenConfirmation = false; + this.destroy$ = new Subject(); + } + /** + * @return {?} + */ + get visible() { + return this._visible; + } + /** + * @param {?} value + * @return {?} + */ + set visible(value) { + if (!this.modalContent) { + setTimeout((/** + * @return {?} + */ + () => (this.visible = value)), 0); + return; + } + if (value) { + this.setVisible(value); + this.listen(); + } + else { + this.closable = false; + this.renderer.addClass(this.modalContent.nativeElement, 'fade-out-top'); + setTimeout((/** + * @return {?} + */ + () => { + this.setVisible(value); + this.renderer.removeClass(this.modalContent.nativeElement, 'fade-out-top'); + this.ngOnDestroy(); + }), 350); + } + } + /** + * @return {?} + */ + ngOnDestroy() { + this.destroy$.next(); + } + /** + * @param {?} value + * @return {?} + */ + setVisible(value) { + this._visible = value; + this.visibleChange.emit(value); + value + ? timer(500) + .pipe(take(1)) + .subscribe((/** + * @param {?} _ + * @return {?} + */ + _ => (this.closable = true))) + : (this.closable = false); + } + /** + * @return {?} + */ + listen() { + fromEvent(document, 'click') + .pipe(debounceTime(350), takeUntil(this.destroy$), filter((/** + * @param {?} event + * @return {?} + */ + (event) => event && + this.closable && + this.modalContent && + !this.isOpenConfirmation && + !this.modalContent.nativeElement.contains(event.target)))) + .subscribe((/** + * @param {?} _ + * @return {?} + */ + _ => { + this.close(); + })); + fromEvent(document, 'keyup') + .pipe(takeUntil(this.destroy$), filter((/** + * @param {?} key + * @return {?} + */ + (key) => key && key.code === 'Escape' && this.closable)), debounceTime(350)) + .subscribe((/** + * @param {?} _ + * @return {?} + */ + _ => { + this.close(); + })); + if (!this.abpClose) + return; + fromEvent(this.abpClose.nativeElement, 'click') + .pipe(takeUntil(this.destroy$), filter((/** + * @return {?} + */ + () => !!(this.closable && this.modalContent))), debounceTime(350)) + .subscribe((/** + * @return {?} + */ + () => this.close())); + } + /** + * @return {?} + */ + close() { + /** @type {?} */ + const nodes = getFlatNodes(((/** @type {?} */ (this.modalContent.nativeElement.querySelector('#abp-modal-body')))).childNodes); + if (hasNgDirty(nodes)) { + if (this.isOpenConfirmation) + return; + this.isOpenConfirmation = true; + this.confirmationService + .warn('AbpAccount::AreYouSureYouWantToCancelEditingWarningMessage', 'AbpAccount::AreYouSure') + .subscribe((/** + * @param {?} status + * @return {?} + */ + (status) => { + timer(400).subscribe((/** + * @return {?} + */ + () => { + this.isOpenConfirmation = false; + })); + if (status === "confirm" /* confirm */) { + this.visible = false; + } + })); + } + else { + this.visible = false; + } + } +} +ModalComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-modal', + template: "\n \n
    \n
    \n \n\n \n
    \n
    \n \n\n
    \n \n
    \n
    \n
    \n \n\n \n\n" + }] } +]; +/** @nocollapse */ +ModalComponent.ctorParameters = () => [ + { type: Renderer2 }, + { type: ConfirmationService } +]; +ModalComponent.propDecorators = { + visible: [{ type: Input }], + centered: [{ type: Input }], + modalClass: [{ type: Input }], + size: [{ type: Input }], + visibleChange: [{ type: Output }], + abpHeader: [{ type: ContentChild, args: ['abpHeader', { static: false },] }], + abpBody: [{ type: ContentChild, args: ['abpBody', { static: false },] }], + abpFooter: [{ type: ContentChild, args: ['abpFooter', { static: false },] }], + abpClose: [{ type: ContentChild, args: ['abpClose', { static: false, read: ElementRef },] }], + modalContent: [{ type: ViewChild, args: ['abpModalContent', { static: false },] }] +}; +/** + * @param {?} nodes + * @return {?} + */ +function getFlatNodes(nodes) { + return Array.from(nodes).reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + (acc, val) => [...acc, ...(val.childNodes && val.childNodes.length ? Array.from(val.childNodes) : [val])]), []); +} +/** + * @param {?} nodes + * @return {?} + */ +function hasNgDirty(nodes) { + return nodes.findIndex((/** + * @param {?} node + * @return {?} + */ + node => (node.className || '').indexOf('ng-dirty') > -1)) > -1; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class ToastComponent { +} +ToastComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-toast', + template: ` + + + +
    +
    {{ message.summary | abpLocalization: message.titleLocalizationParams }}
    +
    {{ message.detail | abpLocalization: message.messageLocalizationParams }}
    +
    +
    +
    + ` + }] } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var styles = ` +.is-invalid .form-control { + border-color: #dc3545; + border-style: solid !important; +} + +.is-invalid .invalid-feedback, +.is-invalid + * .invalid-feedback { + display: block; +} + +.data-tables-filter { + text-align: right; +} + +.pointer { + cursor: pointer; +} + +.navbar .dropdown-submenu a::after { + transform: rotate(-90deg); + position: absolute; + right: 16px; + top: 18px; +} + +.modal { + background-color: rgba(0, 0, 0, .6); +} + +.abp-ellipsis { + display: inline-block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +/* { + const { payload: err = (/** @type {?} */ ({})) } = res; + /** @type {?} */ + const body = ((/** @type {?} */ (err))).error.error; + if (err.headers.get('_AbpErrorFormat')) { + /** @type {?} */ + const confirmation$ = this.showError(null, null, body); + if (err.status === 401) { + confirmation$.subscribe((/** + * @return {?} + */ + () => { + this.navigateToLogin(); + })); + } + } + else { + switch (((/** @type {?} */ (err))).status) { + case 401: + this.showError(DEFAULTS.defaultError401.details, DEFAULTS.defaultError401.message).subscribe((/** + * @return {?} + */ + () => this.navigateToLogin())); + break; + case 403: + this.createErrorComponent({ + title: DEFAULTS.defaultError403.message, + details: DEFAULTS.defaultError403.details, + }); + break; + case 404: + this.showError(DEFAULTS.defaultError404.details, DEFAULTS.defaultError404.message); + break; + case 500: + this.createErrorComponent({ + title: '500', + details: 'Sorry, an error has occured.', + }); + break; + case 0: + if (((/** @type {?} */ (err))).statusText === 'Unknown Error') { + this.createErrorComponent({ + title: 'Unknown Error', + details: 'Sorry, an error has occured.', + }); + } + break; + default: + this.showError(DEFAULTS.defaultError.details, DEFAULTS.defaultError.message); + break; + } + } + })); + } + /** + * @private + * @param {?=} message + * @param {?=} title + * @param {?=} body + * @return {?} + */ + showError(message, title, body) { + if (body) { + if (body.details) { + message = body.details; + title = body.message; + } + else { + message = body.message || DEFAULTS.defaultError.message; + } + } + return this.confirmationService.error(message, title, { + hideCancelBtn: true, + yesCopy: 'OK', + }); + } + /** + * @private + * @return {?} + */ + navigateToLogin() { + this.store.dispatch(new Navigate(['/account/login'], null, { + state: { redirectUrl: this.store.selectSnapshot(RouterState).state.url }, + })); + } + /** + * @param {?} instance + * @return {?} + */ + createErrorComponent(instance) { + /** @type {?} */ + const renderer = this.rendererFactory.createRenderer(null, null); + /** @type {?} */ + const host = renderer.selectRootElement('app-root', true); + /** @type {?} */ + const componentRef = this.cfRes.resolveComponentFactory(ErrorComponent).create(this.injector); + for (const key in componentRef.instance) { + if (componentRef.instance.hasOwnProperty(key)) { + componentRef.instance[key] = instance[key]; + } + } + this.appRef.attachView(componentRef.hostView); + renderer.appendChild(host, ((/** @type {?} */ (componentRef.hostView))).rootNodes[0]); + componentRef.instance.renderer = renderer; + componentRef.instance.elementRef = componentRef.location; + componentRef.instance.host = host; + } +} +ErrorHandler.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] } +]; +/** @nocollapse */ +ErrorHandler.ctorParameters = () => [ + { type: Actions }, + { type: Store }, + { type: ConfirmationService }, + { type: ApplicationRef }, + { type: ComponentFactoryResolver }, + { type: RendererFactory2 }, + { type: Injector } +]; +/** @nocollapse */ ErrorHandler.ngInjectableDef = ɵɵdefineInjectable({ factory: function ErrorHandler_Factory() { return new ErrorHandler(ɵɵinject(Actions), ɵɵinject(Store), ɵɵinject(ConfirmationService), ɵɵinject(ApplicationRef), ɵɵinject(ComponentFactoryResolver), ɵɵinject(RendererFactory2), ɵɵinject(INJECTOR)); }, token: ErrorHandler, providedIn: "root" }); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @param {?} injector + * @return {?} + */ +function appendScript(injector) { + /** @type {?} */ + const fn = (/** + * @return {?} + */ + function () { + /** @type {?} */ + const lazyLoadService = injector.get(LazyLoadService); + return forkJoin(lazyLoadService.load(null, 'style', styles, 'head', 'afterbegin') /* lazyLoadService.load(null, 'script', scripts) */).pipe(take(1)); + }); + return fn; +} +class ThemeSharedModule { + /** + * @return {?} + */ + static forRoot() { + return { + ngModule: ThemeSharedModule, + providers: [ + { + provide: APP_INITIALIZER, + multi: true, + deps: [Injector, ErrorHandler], + useFactory: appendScript, + }, + { provide: MessageService, useClass: MessageService }, + ], + }; + } +} +ThemeSharedModule.decorators = [ + { type: NgModule, args: [{ + imports: [ + CoreModule, + ToastModule, + NgbModalModule, + NgxValidateCoreModule.forRoot({ + targetSelector: '.form-group', + }), + ], + declarations: [ConfirmationComponent, ToastComponent, ModalComponent, ErrorComponent, LoaderBarComponent], + exports: [NgbModalModule, ConfirmationComponent, ToastComponent, ModalComponent, LoaderBarComponent], + entryComponents: [ErrorComponent], + },] } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var Confirmation; +(function (Confirmation) { + /** + * @record + */ + function Options() { } + Confirmation.Options = Options; +})(Confirmation || (Confirmation = {})); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var Toaster; +(function (Toaster) { + /** + * @record + */ + function Options() { } + Toaster.Options = Options; +})(Toaster || (Toaster = {})); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class ToasterService extends AbstractToasterClass { + /** + * @param {?} messages + * @return {?} + */ + addAll(messages) { + this.messageService.addAll(messages.map((/** + * @param {?} message + * @return {?} + */ + message => (Object.assign({ key: this.key }, message))))); + } +} +ToasterService.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] } +]; +/** @nocollapse */ ToasterService.ngInjectableDef = ɵɵdefineInjectable({ factory: function ToasterService_Factory() { return new ToasterService(ɵɵinject(MessageService)); }, token: ToasterService, providedIn: "root" }); + +export { ConfirmationComponent, ConfirmationService, ModalComponent, ThemeSharedModule, ToastComponent, Toaster, ToasterService, appendScript, ConfirmationComponent as ɵa, ConfirmationService as ɵb, AbstractToasterClass as ɵc, ToastComponent as ɵd, ModalComponent as ɵe, ErrorComponent as ɵf, LoaderBarComponent as ɵg, ErrorHandler as ɵh }; +//# sourceMappingURL=abp-ng.theme.shared.js.map diff --git a/npm/ng-packs/dist/theme-shared/fesm2015/abp-ng.theme.shared.js.map b/npm/ng-packs/dist/theme-shared/fesm2015/abp-ng.theme.shared.js.map new file mode 100644 index 00000000000..ab72e64cd95 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/fesm2015/abp-ng.theme.shared.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abp-ng.theme.shared.js","sources":["ng://@abp/ng.theme.shared/lib/abstracts/toaster.ts","ng://@abp/ng.theme.shared/lib/services/confirmation.service.ts","ng://@abp/ng.theme.shared/lib/components/confirmation/confirmation.component.ts","ng://@abp/ng.theme.shared/lib/components/errors/error.component.ts","ng://@abp/ng.theme.shared/lib/components/loader-bar/loader-bar.component.ts","ng://@abp/ng.theme.shared/lib/components/modal/modal.component.ts","ng://@abp/ng.theme.shared/lib/components/toast/toast.component.ts","ng://@abp/ng.theme.shared/lib/contants/styles.ts","ng://@abp/ng.theme.shared/lib/handlers/error.handler.ts","ng://@abp/ng.theme.shared/lib/theme-shared.module.ts","ng://@abp/ng.theme.shared/lib/models/confirmation.ts","ng://@abp/ng.theme.shared/lib/models/toaster.ts","ng://@abp/ng.theme.shared/lib/services/toaster.service.ts"],"sourcesContent":["import { MessageService } from 'primeng/components/common/messageservice';\nimport { Observable, Subject } from 'rxjs';\nimport { Toaster } from '../models/toaster';\n\nexport class AbstractToasterClass {\n protected status$: Subject;\n\n protected key: string = 'abpToast';\n\n protected sticky: boolean = false;\n\n constructor(protected messageService: MessageService) {}\n info(message: string, title: string, options?: T): Observable {\n return this.show(message, title, 'info', options);\n }\n\n success(message: string, title: string, options?: T): Observable {\n return this.show(message, title, 'success', options);\n }\n\n warn(message: string, title: string, options?: T): Observable {\n return this.show(message, title, 'warn', options);\n }\n\n error(message: string, title: string, options?: T): Observable {\n return this.show(message, title, 'error', options);\n }\n\n protected show(message: string, title: string, severity: Toaster.Severity, options?: T): Observable {\n this.messageService.clear(this.key);\n\n this.messageService.add({\n severity,\n detail: message,\n summary: title,\n ...options,\n key: this.key,\n ...(typeof (options || ({} as any)).sticky === 'undefined' && { sticky: this.sticky }),\n });\n this.status$ = new Subject();\n return this.status$;\n }\n\n clear(status?: Toaster.Status) {\n this.messageService.clear(this.key);\n this.status$.next(status || Toaster.Status.dismiss);\n this.status$.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractToasterClass } from '../abstracts/toaster';\nimport { Confirmation } from '../models/confirmation';\n\n@Injectable({ providedIn: 'root' })\nexport class ConfirmationService extends AbstractToasterClass {\n protected key: string = 'abpConfirmation';\n\n protected sticky: boolean = true;\n}\n","import { Component } from '@angular/core';\nimport { ConfirmationService } from '../../services/confirmation.service';\nimport { Toaster } from '../../models/toaster';\n\n@Component({\n selector: 'abp-confirmation',\n template: `\n \n \n
    \n

    \n {{ message.summary | abpLocalization: message.titleLocalizationParams }}\n

    \n
    \n
    \n {{ message.detail | abpLocalization: message.messageLocalizationParams }}\n
    \n\n \n
    \n \n `,\n})\nexport class ConfirmationComponent {\n confirm = Toaster.Status.confirm;\n reject = Toaster.Status.reject;\n dismiss = Toaster.Status.dismiss;\n\n constructor(private confirmationService: ConfirmationService) {}\n\n close(status: Toaster.Status) {\n this.confirmationService.clear(status);\n }\n}\n","import { Component, Renderer2, ElementRef } from '@angular/core';\n\n@Component({\n selector: 'abp-error',\n template: `\n
    \n \n
    \n
    \n
    \n

    \n {{ title }}\n

    \n
    \n {{ details }}\n
    \n \n
    \n
    \n
    \n
    \n `,\n styleUrls: ['error.component.scss'],\n})\nexport class ErrorComponent {\n title = 'Oops!';\n\n details = 'Sorry, an error has occured.';\n\n renderer: Renderer2;\n\n elementRef: ElementRef;\n\n host: any;\n\n destroy() {\n this.renderer.removeChild(this.host, this.elementRef.nativeElement);\n }\n}\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\nimport { Actions, ofActionSuccessful } from '@ngxs/store';\nimport { LoaderStart, LoaderStop } from '@abp/ng.core';\nimport { filter } from 'rxjs/operators';\nimport { Router, NavigationStart, NavigationEnd } from '@angular/router';\nimport { takeUntilDestroy } from '@ngx-validate/core';\n\n@Component({\n selector: 'abp-loader-bar',\n template: `\n
    \n
    \n
    \n `,\n styleUrls: ['./loader-bar.component.scss'],\n})\nexport class LoaderBarComponent implements OnDestroy {\n @Input()\n containerClass: string = 'abp-loader-bar';\n\n @Input()\n progressClass: string = 'abp-progress';\n\n @Input()\n isLoading: boolean = false;\n\n @Input()\n filter = (action: LoaderStart | LoaderStop) => action.payload.url.indexOf('openid-configuration') < 0;\n\n progressLevel: number = 0;\n\n interval: any;\n\n constructor(private actions: Actions, private router: Router) {\n actions\n .pipe(\n ofActionSuccessful(LoaderStart, LoaderStop),\n filter(this.filter),\n takeUntilDestroy(this),\n )\n .subscribe(action => {\n if (action instanceof LoaderStart) this.startLoading();\n else this.stopLoading();\n });\n\n router.events\n .pipe(\n filter(event => event instanceof NavigationStart || event instanceof NavigationEnd),\n takeUntilDestroy(this),\n )\n .subscribe(event => {\n if (event instanceof NavigationStart) this.startLoading();\n else this.stopLoading();\n });\n }\n\n ngOnDestroy() {}\n\n startLoading() {\n this.isLoading = true;\n const interval = setInterval(() => {\n if (this.progressLevel < 75) {\n this.progressLevel += Math.random() * 10;\n } else if (this.progressLevel < 90) {\n this.progressLevel += 0.4;\n } else if (this.progressLevel < 100) {\n this.progressLevel += 0.1;\n } else {\n clearInterval(interval);\n }\n }, 300);\n\n this.interval = interval;\n }\n\n stopLoading() {\n clearInterval(this.interval);\n this.progressLevel = 100;\n this.isLoading = false;\n\n setTimeout(() => {\n this.progressLevel = 0;\n }, 800);\n }\n}\n","import {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { fromEvent, Subject, timer } from 'rxjs';\nimport { debounceTime, filter, take, takeUntil } from 'rxjs/operators';\nimport { ConfirmationService } from '../../services/confirmation.service';\nimport { Toaster } from '../../models/toaster';\n\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'xl';\n\n@Component({\n selector: 'abp-modal',\n templateUrl: './modal.component.html',\n})\nexport class ModalComponent implements OnDestroy {\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n set visible(value: boolean) {\n if (!this.modalContent) {\n setTimeout(() => (this.visible = value), 0);\n return;\n }\n\n if (value) {\n this.setVisible(value);\n this.listen();\n } else {\n this.closable = false;\n this.renderer.addClass(this.modalContent.nativeElement, 'fade-out-top');\n setTimeout(() => {\n this.setVisible(value);\n this.renderer.removeClass(this.modalContent.nativeElement, 'fade-out-top');\n this.ngOnDestroy();\n }, 350);\n }\n }\n\n @Input() centered: boolean = true;\n\n @Input() modalClass: string = '';\n\n @Input() size: ModalSize = 'lg';\n\n @Output() visibleChange = new EventEmitter();\n\n @ContentChild('abpHeader', { static: false }) abpHeader: TemplateRef;\n\n @ContentChild('abpBody', { static: false }) abpBody: TemplateRef;\n\n @ContentChild('abpFooter', { static: false }) abpFooter: TemplateRef;\n\n @ContentChild('abpClose', { static: false, read: ElementRef }) abpClose: ElementRef;\n\n @ViewChild('abpModalContent', { static: false }) modalContent: ElementRef;\n\n _visible: boolean = false;\n\n closable: boolean = false;\n\n isOpenConfirmation: boolean = false;\n\n destroy$ = new Subject();\n\n constructor(private renderer: Renderer2, private confirmationService: ConfirmationService) {}\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n\n setVisible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(value);\n value\n ? timer(500)\n .pipe(take(1))\n .subscribe(_ => (this.closable = true))\n : (this.closable = false);\n }\n\n listen() {\n fromEvent(document, 'click')\n .pipe(\n debounceTime(350),\n takeUntil(this.destroy$),\n filter(\n (event: MouseEvent) =>\n event &&\n this.closable &&\n this.modalContent &&\n !this.isOpenConfirmation &&\n !this.modalContent.nativeElement.contains(event.target),\n ),\n )\n .subscribe(_ => {\n this.close();\n });\n\n fromEvent(document, 'keyup')\n .pipe(\n takeUntil(this.destroy$),\n filter((key: KeyboardEvent) => key && key.code === 'Escape' && this.closable),\n debounceTime(350),\n )\n .subscribe(_ => {\n this.close();\n });\n\n if (!this.abpClose) return;\n\n fromEvent(this.abpClose.nativeElement, 'click')\n .pipe(\n takeUntil(this.destroy$),\n filter(() => !!(this.closable && this.modalContent)),\n debounceTime(350),\n )\n .subscribe(() => this.close());\n }\n\n close() {\n const nodes = getFlatNodes(\n (this.modalContent.nativeElement.querySelector('#abp-modal-body') as HTMLElement).childNodes,\n );\n\n if (hasNgDirty(nodes)) {\n if (this.isOpenConfirmation) return;\n\n this.isOpenConfirmation = true;\n this.confirmationService\n .warn('AbpAccount::AreYouSureYouWantToCancelEditingWarningMessage', 'AbpAccount::AreYouSure')\n .subscribe((status: Toaster.Status) => {\n timer(400).subscribe(() => {\n this.isOpenConfirmation = false;\n });\n\n if (status === Toaster.Status.confirm) {\n this.visible = false;\n }\n });\n } else {\n this.visible = false;\n }\n }\n}\n\nfunction getFlatNodes(nodes: NodeList): HTMLElement[] {\n return Array.from(nodes).reduce(\n (acc, val) => [...acc, ...(val.childNodes && val.childNodes.length ? Array.from(val.childNodes) : [val])],\n [],\n );\n}\n\nfunction hasNgDirty(nodes: HTMLElement[]) {\n return nodes.findIndex(node => (node.className || '').indexOf('ng-dirty') > -1) > -1;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'abp-toast',\n template: `\n \n \n \n
    \n
    {{ message.summary | abpLocalization: message.titleLocalizationParams }}
    \n
    {{ message.detail | abpLocalization: message.messageLocalizationParams }}
    \n
    \n
    \n
    \n `,\n})\nexport class ToastComponent {}\n","export default `\n.is-invalid .form-control {\n border-color: #dc3545;\n border-style: solid !important;\n}\n\n.is-invalid .invalid-feedback,\n.is-invalid + * .invalid-feedback {\n display: block;\n}\n\n.data-tables-filter {\n text-align: right;\n}\n\n.pointer {\n cursor: pointer;\n}\n\n.navbar .dropdown-submenu a::after {\n transform: rotate(-90deg);\n position: absolute;\n right: 16px;\n top: 18px;\n}\n\n.modal {\n background-color: rgba(0, 0, 0, .6);\n}\n\n.abp-ellipsis {\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* {\n const { payload: err = {} as HttpErrorResponse | any } = res;\n const body = (err as HttpErrorResponse).error.error;\n\n if (err.headers.get('_AbpErrorFormat')) {\n const confirmation$ = this.showError(null, null, body);\n\n if (err.status === 401) {\n confirmation$.subscribe(() => {\n this.navigateToLogin();\n });\n }\n } else {\n switch ((err as HttpErrorResponse).status) {\n case 401:\n this.showError(DEFAULTS.defaultError401.details, DEFAULTS.defaultError401.message).subscribe(() =>\n this.navigateToLogin(),\n );\n break;\n case 403:\n this.createErrorComponent({\n title: DEFAULTS.defaultError403.message,\n details: DEFAULTS.defaultError403.details,\n });\n break;\n case 404:\n this.showError(DEFAULTS.defaultError404.details, DEFAULTS.defaultError404.message);\n break;\n case 500:\n this.createErrorComponent({\n title: '500',\n details: 'Sorry, an error has occured.',\n });\n break;\n case 0:\n if ((err as HttpErrorResponse).statusText === 'Unknown Error') {\n this.createErrorComponent({\n title: 'Unknown Error',\n details: 'Sorry, an error has occured.',\n });\n }\n break;\n default:\n this.showError(DEFAULTS.defaultError.details, DEFAULTS.defaultError.message);\n break;\n }\n }\n });\n }\n\n private showError(message?: string, title?: string, body?: any): Observable {\n if (body) {\n if (body.details) {\n message = body.details;\n title = body.message;\n } else {\n message = body.message || DEFAULTS.defaultError.message;\n }\n }\n\n return this.confirmationService.error(message, title, {\n hideCancelBtn: true,\n yesCopy: 'OK',\n });\n }\n\n private navigateToLogin() {\n this.store.dispatch(\n new Navigate(['/account/login'], null, {\n state: { redirectUrl: this.store.selectSnapshot(RouterState).state.url },\n }),\n );\n }\n\n createErrorComponent(instance: Partial) {\n const renderer = this.rendererFactory.createRenderer(null, null);\n const host = renderer.selectRootElement('app-root', true);\n\n const componentRef = this.cfRes.resolveComponentFactory(ErrorComponent).create(this.injector);\n\n for (const key in componentRef.instance) {\n if (componentRef.instance.hasOwnProperty(key)) {\n componentRef.instance[key] = instance[key];\n }\n }\n\n this.appRef.attachView(componentRef.hostView);\n renderer.appendChild(host, (componentRef.hostView as EmbeddedViewRef).rootNodes[0]);\n\n componentRef.instance.renderer = renderer;\n componentRef.instance.elementRef = componentRef.location;\n componentRef.instance.host = host;\n }\n}\n","import { CoreModule, LazyLoadService } from '@abp/ng.core';\nimport { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgbModalModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { MessageService } from 'primeng/components/common/messageservice';\nimport { ToastModule } from 'primeng/toast';\nimport { forkJoin } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { ConfirmationComponent } from './components/confirmation/confirmation.component';\nimport { ErrorComponent } from './components/errors/error.component';\nimport { LoaderBarComponent } from './components/loader-bar/loader-bar.component';\nimport { ModalComponent } from './components/modal/modal.component';\nimport { ToastComponent } from './components/toast/toast.component';\nimport styles from './contants/styles';\nimport { ErrorHandler } from './handlers/error.handler';\n\nexport function appendScript(injector: Injector) {\n const fn = function() {\n const lazyLoadService: LazyLoadService = injector.get(LazyLoadService);\n\n return forkJoin(\n lazyLoadService.load(\n null,\n 'style',\n styles,\n 'head',\n 'afterbegin',\n ) /* lazyLoadService.load(null, 'script', scripts) */,\n ).pipe(take(1));\n };\n\n return fn;\n}\n\n@NgModule({\n imports: [\n CoreModule,\n ToastModule,\n NgbModalModule,\n NgxValidateCoreModule.forRoot({\n targetSelector: '.form-group',\n }),\n ],\n declarations: [ConfirmationComponent, ToastComponent, ModalComponent, ErrorComponent, LoaderBarComponent],\n exports: [NgbModalModule, ConfirmationComponent, ToastComponent, ModalComponent, LoaderBarComponent],\n entryComponents: [ErrorComponent],\n})\nexport class ThemeSharedModule {\n static forRoot(): ModuleWithProviders {\n return {\n ngModule: ThemeSharedModule,\n providers: [\n {\n provide: APP_INITIALIZER,\n multi: true,\n deps: [Injector, ErrorHandler],\n useFactory: appendScript,\n },\n { provide: MessageService, useClass: MessageService },\n ],\n };\n }\n}\n","import { Toaster } from './toaster';\n\nexport namespace Confirmation {\n export interface Options extends Toaster.Options {\n hideCancelBtn?: boolean;\n hideYesBtn?: boolean;\n cancelCopy?: string;\n yesCopy?: string;\n }\n}\n","export namespace Toaster {\n export interface Options {\n id?: any;\n closable?: boolean;\n life?: number;\n sticky?: boolean;\n data?: any;\n messageLocalizationParams?: string[];\n titleLocalizationParams?: string[];\n }\n\n export type Severity = 'success' | 'info' | 'warn' | 'error';\n\n export const enum Status {\n confirm = 'confirm',\n reject = 'reject',\n dismiss = 'dismiss',\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractToasterClass } from '../abstracts/toaster';\nimport { Message } from 'primeng/components/common/message';\n\n@Injectable({ providedIn: 'root' })\nexport class ToasterService extends AbstractToasterClass {\n addAll(messages: Message[]): void {\n this.messageService.addAll(messages.map(message => ({ key: this.key, ...message })));\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/fesm5/abp-ng.theme.shared.js b/npm/ng-packs/dist/theme-shared/fesm5/abp-ng.theme.shared.js new file mode 100644 index 00000000000..d9c4d2a777e --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/fesm5/abp-ng.theme.shared.js @@ -0,0 +1,877 @@ +import { LoaderStart, LoaderStop, RestOccurError, CoreModule, LazyLoadService } from '@abp/ng.core'; +import { Injectable, ɵɵdefineInjectable, ɵɵinject, Component, Input, Renderer2, Output, ContentChild, ElementRef, ViewChild, EventEmitter, ApplicationRef, ComponentFactoryResolver, RendererFactory2, Injector, INJECTOR, NgModule, APP_INITIALIZER } from '@angular/core'; +import { NgbModalModule } from '@ng-bootstrap/ng-bootstrap'; +import { takeUntilDestroy, NgxValidateCoreModule } from '@ngx-validate/core'; +import { MessageService } from 'primeng/components/common/messageservice'; +import { ToastModule } from 'primeng/toast'; +import { Subject, timer, fromEvent, forkJoin } from 'rxjs'; +import { filter, take, debounceTime, takeUntil } from 'rxjs/operators'; +import { __assign, __extends, __spread } from 'tslib'; +import { Actions, ofActionSuccessful, Store } from '@ngxs/store'; +import { Router, NavigationStart, NavigationEnd } from '@angular/router'; +import { Navigate, RouterState } from '@ngxs/router-plugin'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @template T + */ +var /** + * @template T + */ +AbstractToasterClass = /** @class */ (function () { + function AbstractToasterClass(messageService) { + this.messageService = messageService; + this.key = 'abpToast'; + this.sticky = false; + } + /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + AbstractToasterClass.prototype.info = /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + function (message, title, options) { + return this.show(message, title, 'info', options); + }; + /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + AbstractToasterClass.prototype.success = /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + function (message, title, options) { + return this.show(message, title, 'success', options); + }; + /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + AbstractToasterClass.prototype.warn = /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + function (message, title, options) { + return this.show(message, title, 'warn', options); + }; + /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + AbstractToasterClass.prototype.error = /** + * @param {?} message + * @param {?} title + * @param {?=} options + * @return {?} + */ + function (message, title, options) { + return this.show(message, title, 'error', options); + }; + /** + * @protected + * @param {?} message + * @param {?} title + * @param {?} severity + * @param {?=} options + * @return {?} + */ + AbstractToasterClass.prototype.show = /** + * @protected + * @param {?} message + * @param {?} title + * @param {?} severity + * @param {?=} options + * @return {?} + */ + function (message, title, severity, options) { + this.messageService.clear(this.key); + this.messageService.add(__assign({ severity: severity, detail: message, summary: title }, options, { key: this.key }, (typeof (options || ((/** @type {?} */ ({})))).sticky === 'undefined' && { sticky: this.sticky }))); + this.status$ = new Subject(); + return this.status$; + }; + /** + * @param {?=} status + * @return {?} + */ + AbstractToasterClass.prototype.clear = /** + * @param {?=} status + * @return {?} + */ + function (status) { + this.messageService.clear(this.key); + this.status$.next(status || "dismiss" /* dismiss */); + this.status$.complete(); + }; + return AbstractToasterClass; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ConfirmationService = /** @class */ (function (_super) { + __extends(ConfirmationService, _super); + function ConfirmationService() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.key = 'abpConfirmation'; + _this.sticky = true; + return _this; + } + ConfirmationService.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] } + ]; + /** @nocollapse */ ConfirmationService.ngInjectableDef = ɵɵdefineInjectable({ factory: function ConfirmationService_Factory() { return new ConfirmationService(ɵɵinject(MessageService)); }, token: ConfirmationService, providedIn: "root" }); + return ConfirmationService; +}(AbstractToasterClass)); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ConfirmationComponent = /** @class */ (function () { + function ConfirmationComponent(confirmationService) { + this.confirmationService = confirmationService; + this.confirm = "confirm" /* confirm */; + this.reject = "reject" /* reject */; + this.dismiss = "dismiss" /* dismiss */; + } + /** + * @param {?} status + * @return {?} + */ + ConfirmationComponent.prototype.close = /** + * @param {?} status + * @return {?} + */ + function (status) { + this.confirmationService.clear(status); + }; + ConfirmationComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-confirmation', + template: "\n \n \n
    \n

    \n {{ message.summary | abpLocalization: message.titleLocalizationParams }}\n

    \n
    \n
    \n {{ message.detail | abpLocalization: message.messageLocalizationParams }}\n
    \n\n \n
    \n \n " + }] } + ]; + /** @nocollapse */ + ConfirmationComponent.ctorParameters = function () { return [ + { type: ConfirmationService } + ]; }; + return ConfirmationComponent; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ErrorComponent = /** @class */ (function () { + function ErrorComponent() { + this.title = 'Oops!'; + this.details = 'Sorry, an error has occured.'; + } + /** + * @return {?} + */ + ErrorComponent.prototype.destroy = /** + * @return {?} + */ + function () { + this.renderer.removeChild(this.host, this.elementRef.nativeElement); + }; + ErrorComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-error', + template: "\n
    \n \n
    \n
    \n
    \n

    \n {{ title }}\n

    \n
    \n {{ details }}\n
    \n \n
    \n
    \n
    \n
    \n ", + styles: [".error{position:fixed;top:0;background-color:#fff;width:100vw;height:100vh;z-index:999999}.centered{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}"] + }] } + ]; + return ErrorComponent; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var LoaderBarComponent = /** @class */ (function () { + function LoaderBarComponent(actions, router) { + var _this = this; + this.actions = actions; + this.router = router; + this.containerClass = 'abp-loader-bar'; + this.progressClass = 'abp-progress'; + this.isLoading = false; + this.filter = (/** + * @param {?} action + * @return {?} + */ + function (action) { return action.payload.url.indexOf('openid-configuration') < 0; }); + this.progressLevel = 0; + actions + .pipe(ofActionSuccessful(LoaderStart, LoaderStop), filter(this.filter), takeUntilDestroy(this)) + .subscribe((/** + * @param {?} action + * @return {?} + */ + function (action) { + if (action instanceof LoaderStart) + _this.startLoading(); + else + _this.stopLoading(); + })); + router.events + .pipe(filter((/** + * @param {?} event + * @return {?} + */ + function (event) { return event instanceof NavigationStart || event instanceof NavigationEnd; })), takeUntilDestroy(this)) + .subscribe((/** + * @param {?} event + * @return {?} + */ + function (event) { + if (event instanceof NavigationStart) + _this.startLoading(); + else + _this.stopLoading(); + })); + } + /** + * @return {?} + */ + LoaderBarComponent.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { }; + /** + * @return {?} + */ + LoaderBarComponent.prototype.startLoading = /** + * @return {?} + */ + function () { + var _this = this; + this.isLoading = true; + /** @type {?} */ + var interval = setInterval((/** + * @return {?} + */ + function () { + if (_this.progressLevel < 75) { + _this.progressLevel += Math.random() * 10; + } + else if (_this.progressLevel < 90) { + _this.progressLevel += 0.4; + } + else if (_this.progressLevel < 100) { + _this.progressLevel += 0.1; + } + else { + clearInterval(interval); + } + }), 300); + this.interval = interval; + }; + /** + * @return {?} + */ + LoaderBarComponent.prototype.stopLoading = /** + * @return {?} + */ + function () { + var _this = this; + clearInterval(this.interval); + this.progressLevel = 100; + this.isLoading = false; + setTimeout((/** + * @return {?} + */ + function () { + _this.progressLevel = 0; + }), 800); + }; + LoaderBarComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-loader-bar', + template: "\n
    \n
    \n
    \n ", + styles: [".abp-loader-bar{left:0;opacity:0;position:fixed;top:0;transition:opacity .4s linear .4s;z-index:99999}.abp-loader-bar.is-loading{opacity:1;transition:none}.abp-loader-bar .abp-progress{background:#77b6ff;box-shadow:0 0 10px rgba(119,182,255,.7);height:2px;left:0;position:fixed;top:0;transition:width .4s}"] + }] } + ]; + /** @nocollapse */ + LoaderBarComponent.ctorParameters = function () { return [ + { type: Actions }, + { type: Router } + ]; }; + LoaderBarComponent.propDecorators = { + containerClass: [{ type: Input }], + progressClass: [{ type: Input }], + isLoading: [{ type: Input }], + filter: [{ type: Input }] + }; + return LoaderBarComponent; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ModalComponent = /** @class */ (function () { + function ModalComponent(renderer, confirmationService) { + this.renderer = renderer; + this.confirmationService = confirmationService; + this.centered = true; + this.modalClass = ''; + this.size = 'lg'; + this.visibleChange = new EventEmitter(); + this._visible = false; + this.closable = false; + this.isOpenConfirmation = false; + this.destroy$ = new Subject(); + } + Object.defineProperty(ModalComponent.prototype, "visible", { + get: /** + * @return {?} + */ + function () { + return this._visible; + }, + set: /** + * @param {?} value + * @return {?} + */ + function (value) { + var _this = this; + if (!this.modalContent) { + setTimeout((/** + * @return {?} + */ + function () { return (_this.visible = value); }), 0); + return; + } + if (value) { + this.setVisible(value); + this.listen(); + } + else { + this.closable = false; + this.renderer.addClass(this.modalContent.nativeElement, 'fade-out-top'); + setTimeout((/** + * @return {?} + */ + function () { + _this.setVisible(value); + _this.renderer.removeClass(_this.modalContent.nativeElement, 'fade-out-top'); + _this.ngOnDestroy(); + }), 350); + } + }, + enumerable: true, + configurable: true + }); + /** + * @return {?} + */ + ModalComponent.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { + this.destroy$.next(); + }; + /** + * @param {?} value + * @return {?} + */ + ModalComponent.prototype.setVisible = /** + * @param {?} value + * @return {?} + */ + function (value) { + var _this = this; + this._visible = value; + this.visibleChange.emit(value); + value + ? timer(500) + .pipe(take(1)) + .subscribe((/** + * @param {?} _ + * @return {?} + */ + function (_) { return (_this.closable = true); })) + : (this.closable = false); + }; + /** + * @return {?} + */ + ModalComponent.prototype.listen = /** + * @return {?} + */ + function () { + var _this = this; + fromEvent(document, 'click') + .pipe(debounceTime(350), takeUntil(this.destroy$), filter((/** + * @param {?} event + * @return {?} + */ + function (event) { + return event && + _this.closable && + _this.modalContent && + !_this.isOpenConfirmation && + !_this.modalContent.nativeElement.contains(event.target); + }))) + .subscribe((/** + * @param {?} _ + * @return {?} + */ + function (_) { + _this.close(); + })); + fromEvent(document, 'keyup') + .pipe(takeUntil(this.destroy$), filter((/** + * @param {?} key + * @return {?} + */ + function (key) { return key && key.code === 'Escape' && _this.closable; })), debounceTime(350)) + .subscribe((/** + * @param {?} _ + * @return {?} + */ + function (_) { + _this.close(); + })); + if (!this.abpClose) + return; + fromEvent(this.abpClose.nativeElement, 'click') + .pipe(takeUntil(this.destroy$), filter((/** + * @return {?} + */ + function () { return !!(_this.closable && _this.modalContent); })), debounceTime(350)) + .subscribe((/** + * @return {?} + */ + function () { return _this.close(); })); + }; + /** + * @return {?} + */ + ModalComponent.prototype.close = /** + * @return {?} + */ + function () { + var _this = this; + /** @type {?} */ + var nodes = getFlatNodes(((/** @type {?} */ (this.modalContent.nativeElement.querySelector('#abp-modal-body')))).childNodes); + if (hasNgDirty(nodes)) { + if (this.isOpenConfirmation) + return; + this.isOpenConfirmation = true; + this.confirmationService + .warn('AbpAccount::AreYouSureYouWantToCancelEditingWarningMessage', 'AbpAccount::AreYouSure') + .subscribe((/** + * @param {?} status + * @return {?} + */ + function (status) { + timer(400).subscribe((/** + * @return {?} + */ + function () { + _this.isOpenConfirmation = false; + })); + if (status === "confirm" /* confirm */) { + _this.visible = false; + } + })); + } + else { + this.visible = false; + } + }; + ModalComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-modal', + template: "\n \n
    \n
    \n \n\n \n
    \n
    \n \n\n
    \n \n
    \n
    \n
    \n \n\n \n\n" + }] } + ]; + /** @nocollapse */ + ModalComponent.ctorParameters = function () { return [ + { type: Renderer2 }, + { type: ConfirmationService } + ]; }; + ModalComponent.propDecorators = { + visible: [{ type: Input }], + centered: [{ type: Input }], + modalClass: [{ type: Input }], + size: [{ type: Input }], + visibleChange: [{ type: Output }], + abpHeader: [{ type: ContentChild, args: ['abpHeader', { static: false },] }], + abpBody: [{ type: ContentChild, args: ['abpBody', { static: false },] }], + abpFooter: [{ type: ContentChild, args: ['abpFooter', { static: false },] }], + abpClose: [{ type: ContentChild, args: ['abpClose', { static: false, read: ElementRef },] }], + modalContent: [{ type: ViewChild, args: ['abpModalContent', { static: false },] }] + }; + return ModalComponent; +}()); +/** + * @param {?} nodes + * @return {?} + */ +function getFlatNodes(nodes) { + return Array.from(nodes).reduce((/** + * @param {?} acc + * @param {?} val + * @return {?} + */ + function (acc, val) { return __spread(acc, (val.childNodes && val.childNodes.length ? Array.from(val.childNodes) : [val])); }), []); +} +/** + * @param {?} nodes + * @return {?} + */ +function hasNgDirty(nodes) { + return nodes.findIndex((/** + * @param {?} node + * @return {?} + */ + function (node) { return (node.className || '').indexOf('ng-dirty') > -1; })) > -1; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ToastComponent = /** @class */ (function () { + function ToastComponent() { + } + ToastComponent.decorators = [ + { type: Component, args: [{ + selector: 'abp-toast', + template: "\n \n \n \n
    \n
    {{ message.summary | abpLocalization: message.titleLocalizationParams }}
    \n
    {{ message.detail | abpLocalization: message.messageLocalizationParams }}
    \n
    \n
    \n
    \n " + }] } + ]; + return ToastComponent; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var styles = "\n.is-invalid .form-control {\n border-color: #dc3545;\n border-style: solid !important;\n}\n\n.is-invalid .invalid-feedback,\n.is-invalid + * .invalid-feedback {\n display: block;\n}\n\n.data-tables-filter {\n text-align: right;\n}\n\n.pointer {\n cursor: pointer;\n}\n\n.navbar .dropdown-submenu a::after {\n transform: rotate(-90deg);\n position: absolute;\n right: 16px;\n top: 18px;\n}\n\n.modal {\n background-color: rgba(0, 0, 0, .6);\n}\n\n.abp-ellipsis {\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* {\n protected status$: Subject;\n\n protected key: string = 'abpToast';\n\n protected sticky: boolean = false;\n\n constructor(protected messageService: MessageService) {}\n info(message: string, title: string, options?: T): Observable {\n return this.show(message, title, 'info', options);\n }\n\n success(message: string, title: string, options?: T): Observable {\n return this.show(message, title, 'success', options);\n }\n\n warn(message: string, title: string, options?: T): Observable {\n return this.show(message, title, 'warn', options);\n }\n\n error(message: string, title: string, options?: T): Observable {\n return this.show(message, title, 'error', options);\n }\n\n protected show(message: string, title: string, severity: Toaster.Severity, options?: T): Observable {\n this.messageService.clear(this.key);\n\n this.messageService.add({\n severity,\n detail: message,\n summary: title,\n ...options,\n key: this.key,\n ...(typeof (options || ({} as any)).sticky === 'undefined' && { sticky: this.sticky }),\n });\n this.status$ = new Subject();\n return this.status$;\n }\n\n clear(status?: Toaster.Status) {\n this.messageService.clear(this.key);\n this.status$.next(status || Toaster.Status.dismiss);\n this.status$.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractToasterClass } from '../abstracts/toaster';\nimport { Confirmation } from '../models/confirmation';\n\n@Injectable({ providedIn: 'root' })\nexport class ConfirmationService extends AbstractToasterClass {\n protected key: string = 'abpConfirmation';\n\n protected sticky: boolean = true;\n}\n","import { Component } from '@angular/core';\nimport { ConfirmationService } from '../../services/confirmation.service';\nimport { Toaster } from '../../models/toaster';\n\n@Component({\n selector: 'abp-confirmation',\n template: `\n \n \n
    \n

    \n {{ message.summary | abpLocalization: message.titleLocalizationParams }}\n

    \n
    \n
    \n {{ message.detail | abpLocalization: message.messageLocalizationParams }}\n
    \n\n \n
    \n \n `,\n})\nexport class ConfirmationComponent {\n confirm = Toaster.Status.confirm;\n reject = Toaster.Status.reject;\n dismiss = Toaster.Status.dismiss;\n\n constructor(private confirmationService: ConfirmationService) {}\n\n close(status: Toaster.Status) {\n this.confirmationService.clear(status);\n }\n}\n","import { Component, Renderer2, ElementRef } from '@angular/core';\n\n@Component({\n selector: 'abp-error',\n template: `\n
    \n \n
    \n
    \n
    \n

    \n {{ title }}\n

    \n
    \n {{ details }}\n
    \n \n
    \n
    \n
    \n
    \n `,\n styleUrls: ['error.component.scss'],\n})\nexport class ErrorComponent {\n title = 'Oops!';\n\n details = 'Sorry, an error has occured.';\n\n renderer: Renderer2;\n\n elementRef: ElementRef;\n\n host: any;\n\n destroy() {\n this.renderer.removeChild(this.host, this.elementRef.nativeElement);\n }\n}\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\nimport { Actions, ofActionSuccessful } from '@ngxs/store';\nimport { LoaderStart, LoaderStop } from '@abp/ng.core';\nimport { filter } from 'rxjs/operators';\nimport { Router, NavigationStart, NavigationEnd } from '@angular/router';\nimport { takeUntilDestroy } from '@ngx-validate/core';\n\n@Component({\n selector: 'abp-loader-bar',\n template: `\n
    \n
    \n
    \n `,\n styleUrls: ['./loader-bar.component.scss'],\n})\nexport class LoaderBarComponent implements OnDestroy {\n @Input()\n containerClass: string = 'abp-loader-bar';\n\n @Input()\n progressClass: string = 'abp-progress';\n\n @Input()\n isLoading: boolean = false;\n\n @Input()\n filter = (action: LoaderStart | LoaderStop) => action.payload.url.indexOf('openid-configuration') < 0;\n\n progressLevel: number = 0;\n\n interval: any;\n\n constructor(private actions: Actions, private router: Router) {\n actions\n .pipe(\n ofActionSuccessful(LoaderStart, LoaderStop),\n filter(this.filter),\n takeUntilDestroy(this),\n )\n .subscribe(action => {\n if (action instanceof LoaderStart) this.startLoading();\n else this.stopLoading();\n });\n\n router.events\n .pipe(\n filter(event => event instanceof NavigationStart || event instanceof NavigationEnd),\n takeUntilDestroy(this),\n )\n .subscribe(event => {\n if (event instanceof NavigationStart) this.startLoading();\n else this.stopLoading();\n });\n }\n\n ngOnDestroy() {}\n\n startLoading() {\n this.isLoading = true;\n const interval = setInterval(() => {\n if (this.progressLevel < 75) {\n this.progressLevel += Math.random() * 10;\n } else if (this.progressLevel < 90) {\n this.progressLevel += 0.4;\n } else if (this.progressLevel < 100) {\n this.progressLevel += 0.1;\n } else {\n clearInterval(interval);\n }\n }, 300);\n\n this.interval = interval;\n }\n\n stopLoading() {\n clearInterval(this.interval);\n this.progressLevel = 100;\n this.isLoading = false;\n\n setTimeout(() => {\n this.progressLevel = 0;\n }, 800);\n }\n}\n","import {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { fromEvent, Subject, timer } from 'rxjs';\nimport { debounceTime, filter, take, takeUntil } from 'rxjs/operators';\nimport { ConfirmationService } from '../../services/confirmation.service';\nimport { Toaster } from '../../models/toaster';\n\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'xl';\n\n@Component({\n selector: 'abp-modal',\n templateUrl: './modal.component.html',\n})\nexport class ModalComponent implements OnDestroy {\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n set visible(value: boolean) {\n if (!this.modalContent) {\n setTimeout(() => (this.visible = value), 0);\n return;\n }\n\n if (value) {\n this.setVisible(value);\n this.listen();\n } else {\n this.closable = false;\n this.renderer.addClass(this.modalContent.nativeElement, 'fade-out-top');\n setTimeout(() => {\n this.setVisible(value);\n this.renderer.removeClass(this.modalContent.nativeElement, 'fade-out-top');\n this.ngOnDestroy();\n }, 350);\n }\n }\n\n @Input() centered: boolean = true;\n\n @Input() modalClass: string = '';\n\n @Input() size: ModalSize = 'lg';\n\n @Output() visibleChange = new EventEmitter();\n\n @ContentChild('abpHeader', { static: false }) abpHeader: TemplateRef;\n\n @ContentChild('abpBody', { static: false }) abpBody: TemplateRef;\n\n @ContentChild('abpFooter', { static: false }) abpFooter: TemplateRef;\n\n @ContentChild('abpClose', { static: false, read: ElementRef }) abpClose: ElementRef;\n\n @ViewChild('abpModalContent', { static: false }) modalContent: ElementRef;\n\n _visible: boolean = false;\n\n closable: boolean = false;\n\n isOpenConfirmation: boolean = false;\n\n destroy$ = new Subject();\n\n constructor(private renderer: Renderer2, private confirmationService: ConfirmationService) {}\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n\n setVisible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(value);\n value\n ? timer(500)\n .pipe(take(1))\n .subscribe(_ => (this.closable = true))\n : (this.closable = false);\n }\n\n listen() {\n fromEvent(document, 'click')\n .pipe(\n debounceTime(350),\n takeUntil(this.destroy$),\n filter(\n (event: MouseEvent) =>\n event &&\n this.closable &&\n this.modalContent &&\n !this.isOpenConfirmation &&\n !this.modalContent.nativeElement.contains(event.target),\n ),\n )\n .subscribe(_ => {\n this.close();\n });\n\n fromEvent(document, 'keyup')\n .pipe(\n takeUntil(this.destroy$),\n filter((key: KeyboardEvent) => key && key.code === 'Escape' && this.closable),\n debounceTime(350),\n )\n .subscribe(_ => {\n this.close();\n });\n\n if (!this.abpClose) return;\n\n fromEvent(this.abpClose.nativeElement, 'click')\n .pipe(\n takeUntil(this.destroy$),\n filter(() => !!(this.closable && this.modalContent)),\n debounceTime(350),\n )\n .subscribe(() => this.close());\n }\n\n close() {\n const nodes = getFlatNodes(\n (this.modalContent.nativeElement.querySelector('#abp-modal-body') as HTMLElement).childNodes,\n );\n\n if (hasNgDirty(nodes)) {\n if (this.isOpenConfirmation) return;\n\n this.isOpenConfirmation = true;\n this.confirmationService\n .warn('AbpAccount::AreYouSureYouWantToCancelEditingWarningMessage', 'AbpAccount::AreYouSure')\n .subscribe((status: Toaster.Status) => {\n timer(400).subscribe(() => {\n this.isOpenConfirmation = false;\n });\n\n if (status === Toaster.Status.confirm) {\n this.visible = false;\n }\n });\n } else {\n this.visible = false;\n }\n }\n}\n\nfunction getFlatNodes(nodes: NodeList): HTMLElement[] {\n return Array.from(nodes).reduce(\n (acc, val) => [...acc, ...(val.childNodes && val.childNodes.length ? Array.from(val.childNodes) : [val])],\n [],\n );\n}\n\nfunction hasNgDirty(nodes: HTMLElement[]) {\n return nodes.findIndex(node => (node.className || '').indexOf('ng-dirty') > -1) > -1;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'abp-toast',\n template: `\n \n \n \n
    \n
    {{ message.summary | abpLocalization: message.titleLocalizationParams }}
    \n
    {{ message.detail | abpLocalization: message.messageLocalizationParams }}
    \n
    \n
    \n
    \n `,\n})\nexport class ToastComponent {}\n","export default `\n.is-invalid .form-control {\n border-color: #dc3545;\n border-style: solid !important;\n}\n\n.is-invalid .invalid-feedback,\n.is-invalid + * .invalid-feedback {\n display: block;\n}\n\n.data-tables-filter {\n text-align: right;\n}\n\n.pointer {\n cursor: pointer;\n}\n\n.navbar .dropdown-submenu a::after {\n transform: rotate(-90deg);\n position: absolute;\n right: 16px;\n top: 18px;\n}\n\n.modal {\n background-color: rgba(0, 0, 0, .6);\n}\n\n.abp-ellipsis {\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* {\n const { payload: err = {} as HttpErrorResponse | any } = res;\n const body = (err as HttpErrorResponse).error.error;\n\n if (err.headers.get('_AbpErrorFormat')) {\n const confirmation$ = this.showError(null, null, body);\n\n if (err.status === 401) {\n confirmation$.subscribe(() => {\n this.navigateToLogin();\n });\n }\n } else {\n switch ((err as HttpErrorResponse).status) {\n case 401:\n this.showError(DEFAULTS.defaultError401.details, DEFAULTS.defaultError401.message).subscribe(() =>\n this.navigateToLogin(),\n );\n break;\n case 403:\n this.createErrorComponent({\n title: DEFAULTS.defaultError403.message,\n details: DEFAULTS.defaultError403.details,\n });\n break;\n case 404:\n this.showError(DEFAULTS.defaultError404.details, DEFAULTS.defaultError404.message);\n break;\n case 500:\n this.createErrorComponent({\n title: '500',\n details: 'Sorry, an error has occured.',\n });\n break;\n case 0:\n if ((err as HttpErrorResponse).statusText === 'Unknown Error') {\n this.createErrorComponent({\n title: 'Unknown Error',\n details: 'Sorry, an error has occured.',\n });\n }\n break;\n default:\n this.showError(DEFAULTS.defaultError.details, DEFAULTS.defaultError.message);\n break;\n }\n }\n });\n }\n\n private showError(message?: string, title?: string, body?: any): Observable {\n if (body) {\n if (body.details) {\n message = body.details;\n title = body.message;\n } else {\n message = body.message || DEFAULTS.defaultError.message;\n }\n }\n\n return this.confirmationService.error(message, title, {\n hideCancelBtn: true,\n yesCopy: 'OK',\n });\n }\n\n private navigateToLogin() {\n this.store.dispatch(\n new Navigate(['/account/login'], null, {\n state: { redirectUrl: this.store.selectSnapshot(RouterState).state.url },\n }),\n );\n }\n\n createErrorComponent(instance: Partial) {\n const renderer = this.rendererFactory.createRenderer(null, null);\n const host = renderer.selectRootElement('app-root', true);\n\n const componentRef = this.cfRes.resolveComponentFactory(ErrorComponent).create(this.injector);\n\n for (const key in componentRef.instance) {\n if (componentRef.instance.hasOwnProperty(key)) {\n componentRef.instance[key] = instance[key];\n }\n }\n\n this.appRef.attachView(componentRef.hostView);\n renderer.appendChild(host, (componentRef.hostView as EmbeddedViewRef).rootNodes[0]);\n\n componentRef.instance.renderer = renderer;\n componentRef.instance.elementRef = componentRef.location;\n componentRef.instance.host = host;\n }\n}\n","import { CoreModule, LazyLoadService } from '@abp/ng.core';\nimport { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgbModalModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { MessageService } from 'primeng/components/common/messageservice';\nimport { ToastModule } from 'primeng/toast';\nimport { forkJoin } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { ConfirmationComponent } from './components/confirmation/confirmation.component';\nimport { ErrorComponent } from './components/errors/error.component';\nimport { LoaderBarComponent } from './components/loader-bar/loader-bar.component';\nimport { ModalComponent } from './components/modal/modal.component';\nimport { ToastComponent } from './components/toast/toast.component';\nimport styles from './contants/styles';\nimport { ErrorHandler } from './handlers/error.handler';\n\nexport function appendScript(injector: Injector) {\n const fn = function() {\n const lazyLoadService: LazyLoadService = injector.get(LazyLoadService);\n\n return forkJoin(\n lazyLoadService.load(\n null,\n 'style',\n styles,\n 'head',\n 'afterbegin',\n ) /* lazyLoadService.load(null, 'script', scripts) */,\n ).pipe(take(1));\n };\n\n return fn;\n}\n\n@NgModule({\n imports: [\n CoreModule,\n ToastModule,\n NgbModalModule,\n NgxValidateCoreModule.forRoot({\n targetSelector: '.form-group',\n }),\n ],\n declarations: [ConfirmationComponent, ToastComponent, ModalComponent, ErrorComponent, LoaderBarComponent],\n exports: [NgbModalModule, ConfirmationComponent, ToastComponent, ModalComponent, LoaderBarComponent],\n entryComponents: [ErrorComponent],\n})\nexport class ThemeSharedModule {\n static forRoot(): ModuleWithProviders {\n return {\n ngModule: ThemeSharedModule,\n providers: [\n {\n provide: APP_INITIALIZER,\n multi: true,\n deps: [Injector, ErrorHandler],\n useFactory: appendScript,\n },\n { provide: MessageService, useClass: MessageService },\n ],\n };\n }\n}\n","import { Toaster } from './toaster';\n\nexport namespace Confirmation {\n export interface Options extends Toaster.Options {\n hideCancelBtn?: boolean;\n hideYesBtn?: boolean;\n cancelCopy?: string;\n yesCopy?: string;\n }\n}\n","export namespace Toaster {\n export interface Options {\n id?: any;\n closable?: boolean;\n life?: number;\n sticky?: boolean;\n data?: any;\n messageLocalizationParams?: string[];\n titleLocalizationParams?: string[];\n }\n\n export type Severity = 'success' | 'info' | 'warn' | 'error';\n\n export const enum Status {\n confirm = 'confirm',\n reject = 'reject',\n dismiss = 'dismiss',\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractToasterClass } from '../abstracts/toaster';\nimport { Message } from 'primeng/components/common/message';\n\n@Injectable({ providedIn: 'root' })\nexport class ToasterService extends AbstractToasterClass {\n addAll(messages: Message[]): void {\n this.messageService.addAll(messages.map(message => ({ key: this.key, ...message })));\n }\n}\n"],"names":["tslib_1.__extends"],"mappings":"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"} \ No newline at end of file diff --git a/npm/ng-packs/dist/theme-shared/lib/abstracts/toaster.d.ts b/npm/ng-packs/dist/theme-shared/lib/abstracts/toaster.d.ts new file mode 100644 index 00000000000..5d42fc0d29a --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/lib/abstracts/toaster.d.ts @@ -0,0 +1,16 @@ +import { MessageService } from 'primeng/components/common/messageservice'; +import { Observable, Subject } from 'rxjs'; +import { Toaster } from '../models/toaster'; +export declare class AbstractToasterClass { + protected messageService: MessageService; + protected status$: Subject; + protected key: string; + protected sticky: boolean; + constructor(messageService: MessageService); + info(message: string, title: string, options?: T): Observable; + success(message: string, title: string, options?: T): Observable; + warn(message: string, title: string, options?: T): Observable; + error(message: string, title: string, options?: T): Observable; + protected show(message: string, title: string, severity: Toaster.Severity, options?: T): Observable; + clear(status?: Toaster.Status): void; +} diff --git a/npm/ng-packs/dist/theme-shared/lib/components/confirmation/confirmation.component.d.ts b/npm/ng-packs/dist/theme-shared/lib/components/confirmation/confirmation.component.d.ts new file mode 100644 index 00000000000..3173bbc9b39 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/lib/components/confirmation/confirmation.component.d.ts @@ -0,0 +1,10 @@ +import { ConfirmationService } from '../../services/confirmation.service'; +import { Toaster } from '../../models/toaster'; +export declare class ConfirmationComponent { + private confirmationService; + confirm: Toaster.Status; + reject: Toaster.Status; + dismiss: Toaster.Status; + constructor(confirmationService: ConfirmationService); + close(status: Toaster.Status): void; +} diff --git a/npm/ng-packs/dist/theme-shared/lib/components/errors/error.component.d.ts b/npm/ng-packs/dist/theme-shared/lib/components/errors/error.component.d.ts new file mode 100644 index 00000000000..ea71020bc27 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/lib/components/errors/error.component.d.ts @@ -0,0 +1,9 @@ +import { Renderer2, ElementRef } from '@angular/core'; +export declare class ErrorComponent { + title: string; + details: string; + renderer: Renderer2; + elementRef: ElementRef; + host: any; + destroy(): void; +} diff --git a/npm/ng-packs/dist/theme-shared/lib/components/index.d.ts b/npm/ng-packs/dist/theme-shared/lib/components/index.d.ts new file mode 100644 index 00000000000..d288f2dafa5 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/lib/components/index.d.ts @@ -0,0 +1,3 @@ +export * from './confirmation/confirmation.component'; +export * from './toast/toast.component'; +export * from './modal/modal.component'; diff --git a/npm/ng-packs/dist/theme-shared/lib/components/loader-bar/loader-bar.component.d.ts b/npm/ng-packs/dist/theme-shared/lib/components/loader-bar/loader-bar.component.d.ts new file mode 100644 index 00000000000..8a34ebaca1f --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/lib/components/loader-bar/loader-bar.component.d.ts @@ -0,0 +1,18 @@ +import { OnDestroy } from '@angular/core'; +import { Actions } from '@ngxs/store'; +import { LoaderStart, LoaderStop } from '@abp/ng.core'; +import { Router } from '@angular/router'; +export declare class LoaderBarComponent implements OnDestroy { + private actions; + private router; + containerClass: string; + progressClass: string; + isLoading: boolean; + filter: (action: LoaderStart | LoaderStop) => boolean; + progressLevel: number; + interval: any; + constructor(actions: Actions, router: Router); + ngOnDestroy(): void; + startLoading(): void; + stopLoading(): void; +} diff --git a/npm/ng-packs/dist/theme-shared/lib/components/modal/modal.component.d.ts b/npm/ng-packs/dist/theme-shared/lib/components/modal/modal.component.d.ts new file mode 100644 index 00000000000..7a50dbb3f3f --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/lib/components/modal/modal.component.d.ts @@ -0,0 +1,27 @@ +import { ElementRef, EventEmitter, OnDestroy, Renderer2, TemplateRef } from '@angular/core'; +import { Subject } from 'rxjs'; +import { ConfirmationService } from '../../services/confirmation.service'; +export declare type ModalSize = 'sm' | 'md' | 'lg' | 'xl'; +export declare class ModalComponent implements OnDestroy { + private renderer; + private confirmationService; + visible: boolean; + centered: boolean; + modalClass: string; + size: ModalSize; + visibleChange: EventEmitter; + abpHeader: TemplateRef; + abpBody: TemplateRef; + abpFooter: TemplateRef; + abpClose: ElementRef; + modalContent: ElementRef; + _visible: boolean; + closable: boolean; + isOpenConfirmation: boolean; + destroy$: Subject; + constructor(renderer: Renderer2, confirmationService: ConfirmationService); + ngOnDestroy(): void; + setVisible(value: boolean): void; + listen(): void; + close(): void; +} diff --git a/npm/ng-packs/dist/theme-shared/lib/components/toast/toast.component.d.ts b/npm/ng-packs/dist/theme-shared/lib/components/toast/toast.component.d.ts new file mode 100644 index 00000000000..1361635de23 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/lib/components/toast/toast.component.d.ts @@ -0,0 +1,2 @@ +export declare class ToastComponent { +} diff --git a/npm/ng-packs/dist/theme-shared/lib/contants/styles.d.ts b/npm/ng-packs/dist/theme-shared/lib/contants/styles.d.ts new file mode 100644 index 00000000000..74372122830 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/lib/contants/styles.d.ts @@ -0,0 +1,2 @@ +declare const _default: "\n.is-invalid .form-control {\n border-color: #dc3545;\n border-style: solid !important;\n}\n\n.is-invalid .invalid-feedback,\n.is-invalid + * .invalid-feedback {\n display: block;\n}\n\n.data-tables-filter {\n text-align: right;\n}\n\n.pointer {\n cursor: pointer;\n}\n\n.navbar .dropdown-submenu a::after {\n transform: rotate(-90deg);\n position: absolute;\n right: 16px;\n top: 18px;\n}\n\n.modal {\n background-color: rgba(0, 0, 0, .6);\n}\n\n.abp-ellipsis {\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* ): void; +} diff --git a/npm/ng-packs/dist/theme-shared/lib/models/confirmation.d.ts b/npm/ng-packs/dist/theme-shared/lib/models/confirmation.d.ts new file mode 100644 index 00000000000..8bc969ac6e5 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/lib/models/confirmation.d.ts @@ -0,0 +1,9 @@ +import { Toaster } from './toaster'; +export declare namespace Confirmation { + interface Options extends Toaster.Options { + hideCancelBtn?: boolean; + hideYesBtn?: boolean; + cancelCopy?: string; + yesCopy?: string; + } +} diff --git a/npm/ng-packs/dist/theme-shared/lib/models/index.d.ts b/npm/ng-packs/dist/theme-shared/lib/models/index.d.ts new file mode 100644 index 00000000000..2da3330aa7c --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/lib/models/index.d.ts @@ -0,0 +1,2 @@ +export * from './confirmation'; +export * from './toaster'; diff --git a/npm/ng-packs/dist/theme-shared/lib/models/toaster.d.ts b/npm/ng-packs/dist/theme-shared/lib/models/toaster.d.ts new file mode 100644 index 00000000000..9a4cac590b8 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/lib/models/toaster.d.ts @@ -0,0 +1,17 @@ +export declare namespace Toaster { + interface Options { + id?: any; + closable?: boolean; + life?: number; + sticky?: boolean; + data?: any; + messageLocalizationParams?: string[]; + titleLocalizationParams?: string[]; + } + type Severity = 'success' | 'info' | 'warn' | 'error'; + const enum Status { + confirm = "confirm", + reject = "reject", + dismiss = "dismiss" + } +} diff --git a/npm/ng-packs/dist/theme-shared/lib/services/confirmation.service.d.ts b/npm/ng-packs/dist/theme-shared/lib/services/confirmation.service.d.ts new file mode 100644 index 00000000000..eaaa6a48499 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/lib/services/confirmation.service.d.ts @@ -0,0 +1,6 @@ +import { AbstractToasterClass } from '../abstracts/toaster'; +import { Confirmation } from '../models/confirmation'; +export declare class ConfirmationService extends AbstractToasterClass { + protected key: string; + protected sticky: boolean; +} diff --git a/npm/ng-packs/dist/theme-shared/lib/services/index.d.ts b/npm/ng-packs/dist/theme-shared/lib/services/index.d.ts new file mode 100644 index 00000000000..c53455a433c --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/lib/services/index.d.ts @@ -0,0 +1,2 @@ +export * from './confirmation.service'; +export * from './toaster.service'; diff --git a/npm/ng-packs/dist/theme-shared/lib/services/toaster.service.d.ts b/npm/ng-packs/dist/theme-shared/lib/services/toaster.service.d.ts new file mode 100644 index 00000000000..723687b1e1b --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/lib/services/toaster.service.d.ts @@ -0,0 +1,5 @@ +import { AbstractToasterClass } from '../abstracts/toaster'; +import { Message } from 'primeng/components/common/message'; +export declare class ToasterService extends AbstractToasterClass { + addAll(messages: Message[]): void; +} diff --git a/npm/ng-packs/dist/theme-shared/lib/theme-shared.module.d.ts b/npm/ng-packs/dist/theme-shared/lib/theme-shared.module.d.ts new file mode 100644 index 00000000000..361189ad4e5 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/lib/theme-shared.module.d.ts @@ -0,0 +1,5 @@ +import { Injector, ModuleWithProviders } from '@angular/core'; +export declare function appendScript(injector: Injector): () => import("rxjs").Observable; +export declare class ThemeSharedModule { + static forRoot(): ModuleWithProviders; +} diff --git a/npm/ng-packs/dist/theme-shared/package.json b/npm/ng-packs/dist/theme-shared/package.json new file mode 100644 index 00000000000..404a9304fc8 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/package.json @@ -0,0 +1,29 @@ +{ + "name": "@abp/ng.theme.shared", + "version": "0.8.0", + "dependencies": { + "@abp/ng.core": "^0.8.0", + "@angular/cdk": "^8.0.1", + "@ng-bootstrap/ng-bootstrap": "^5.1.0", + "@ngx-validate/core": "^0.0.1", + "bootstrap": "^4.3.1", + "font-awesome": "^4.7.0", + "ngx-perfect-scrollbar": "^8.0.0", + "primeicons": "^1.0.0", + "primeng": "^8.0.0", + "tslib": "^1.9.0" + }, + "publishConfig": { + "access": "public" + }, + "main": "bundles/abp-ng.theme.shared.umd.js", + "module": "fesm5/abp-ng.theme.shared.js", + "es2015": "fesm2015/abp-ng.theme.shared.js", + "esm5": "esm5/abp-ng.theme.shared.js", + "esm2015": "esm2015/abp-ng.theme.shared.js", + "fesm5": "fesm5/abp-ng.theme.shared.js", + "fesm2015": "fesm2015/abp-ng.theme.shared.js", + "typings": "abp-ng.theme.shared.d.ts", + "metadata": "abp-ng.theme.shared.metadata.json", + "sideEffects": false +} diff --git a/npm/ng-packs/dist/theme-shared/public-api.d.ts b/npm/ng-packs/dist/theme-shared/public-api.d.ts new file mode 100644 index 00000000000..b118bb87b63 --- /dev/null +++ b/npm/ng-packs/dist/theme-shared/public-api.d.ts @@ -0,0 +1,4 @@ +export * from './lib/theme-shared.module'; +export * from './lib/components'; +export * from './lib/models'; +export * from './lib/services'; diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json new file mode 100644 index 00000000000..f33114331b6 --- /dev/null +++ b/npm/ng-packs/package.json @@ -0,0 +1,59 @@ +{ + "scripts": { + "ng": "ng", + "symlink": "symlink" + }, + "devDependencies": { + "@abp/ng.core": "^0.7.6", + "@abp/ng.permission-management": "^0.7.6", + "@abp/ng.theme.shared": "^0.7.6", + "@angular-devkit/build-angular": "~0.801.2", + "@angular-devkit/build-ng-packagr": "~0.801.2", + "@angular/animations": "~8.1.2", + "@angular/cdk": "^8.0.1", + "@angular/cli": "~8.1.2", + "@angular/common": "~8.1.2", + "@angular/compiler-cli": "~8.1.2", + "@angular/compiler": "~8.1.2", + "@angular/core": "~8.1.2", + "@angular/forms": "~8.1.2", + "@angular/language-service": "~8.1.2", + "@angular/platform-browser-dynamic": "~8.1.2", + "@angular/platform-browser": "~8.1.2", + "@angular/router": "~8.1.2", + "@ng-bootstrap/ng-bootstrap": "^5.1.0", + "@ngx-validate/core": "^0.0.4", + "@ngxs/router-plugin": "^3.5.0", + "@ngxs/storage-plugin": "^3.5.0", + "@ngxs/store": "^3.5.0", + "@types/jasmine": "~3.3.8", + "@types/jasminewd2": "~2.0.3", + "@types/node": "~8.9.4", + "angular-oauth2-oidc": "^8.0.1", + "bootstrap": "^4.3.1", + "codelyzer": "^5.0.0", + "font-awesome": "^4.7.0", + "jasmine-core": "~3.4.0", + "jasmine-spec-reporter": "~4.2.1", + "just-compare": "^1.3.0", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "~2.0.1", + "karma-jasmine-html-reporter": "^1.4.0", + "karma-jasmine": "~2.0.1", + "karma": "~4.1.0", + "ng-packagr": "^5.1.0", + "ngx-perfect-scrollbar": "^8.0.0", + "primeicons": "^1.0.0", + "primeng": "^8.0.0", + "protractor": "~5.4.0", + "rxjs": "~6.4.0", + "snq": "^1.0.3", + "symlink-manager": "^1.3.0", + "ts-node": "~7.0.0", + "tsickle": "^0.35.0", + "tslib": "^1.9.0", + "tslint": "~5.15.0", + "typescript": "~3.4.3", + "zone.js": "~0.9.1" + } +} diff --git a/npm/ng-packs/packages/account/README.md b/npm/ng-packs/packages/account/README.md new file mode 100644 index 00000000000..dc2cd4534aa --- /dev/null +++ b/npm/ng-packs/packages/account/README.md @@ -0,0 +1 @@ +

    @abp/ng.account

    diff --git a/npm/ng-packs/packages/account/karma.conf.js b/npm/ng-packs/packages/account/karma.conf.js new file mode 100644 index 00000000000..ccfa764753d --- /dev/null +++ b/npm/ng-packs/packages/account/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/account'), + reports: ['html', 'lcovonly'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/npm/ng-packs/packages/account/ng-package.json b/npm/ng-packs/packages/account/ng-package.json new file mode 100644 index 00000000000..9e94619264e --- /dev/null +++ b/npm/ng-packs/packages/account/ng-package.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/account", + "lib": { + "entryFile": "src/public-api.ts" + }, + "whitelistedNonPeerDependencies": ["@abp/ng.theme.shared"] +} diff --git a/npm/ng-packs/packages/account/package.json b/npm/ng-packs/packages/account/package.json new file mode 100644 index 00000000000..e0135dbce75 --- /dev/null +++ b/npm/ng-packs/packages/account/package.json @@ -0,0 +1,10 @@ +{ + "name": "@abp/ng.account", + "version": "0.8.0", + "dependencies": { + "@abp/ng.theme.shared": "^0.8.0" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/npm/ng-packs/packages/account/src/lib/account-routing.module.ts b/npm/ng-packs/packages/account/src/lib/account-routing.module.ts new file mode 100644 index 00000000000..9ad3e78f93a --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/account-routing.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { LoginComponent } from './components/login/login.component'; +import { RegisterComponent } from './components/register/register.component'; +import { DynamicLayoutComponent } from '@abp/ng.core'; + +const routes: Routes = [ + { path: '', pathMatch: 'full', redirectTo: 'login' }, + { + path: '', + component: DynamicLayoutComponent, + children: [{ path: 'login', component: LoginComponent }, { path: 'register', component: RegisterComponent }], + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class AccountRoutingModule {} diff --git a/npm/ng-packs/packages/account/src/lib/account.module.ts b/npm/ng-packs/packages/account/src/lib/account.module.ts new file mode 100644 index 00000000000..d30ad3485b1 --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/account.module.ts @@ -0,0 +1,33 @@ +import { CoreModule } from '@abp/ng.core'; +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { AccountRoutingModule } from './account-routing.module'; +import { LoginComponent } from './components/login/login.component'; +import { RegisterComponent } from './components/register/register.component'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { TenantBoxComponent } from './components/tenant-box/tenant-box.component'; +import { Options } from './models/options'; +import { ACCOUNT_OPTIONS, optionsFactory } from './tokens/options.token'; +import { TableModule } from 'primeng/table'; +import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { NgxValidateCoreModule } from '@ngx-validate/core'; + +@NgModule({ + declarations: [LoginComponent, RegisterComponent, TenantBoxComponent], + imports: [CoreModule, AccountRoutingModule, ThemeSharedModule, TableModule, NgbDropdownModule, NgxValidateCoreModule], + exports: [], +}) +export class AccountModule { + static forRoot(options = {} as Options): ModuleWithProviders { + return { + ngModule: AccountModule, + providers: [ + { provide: ACCOUNT_OPTIONS, useValue: options }, + { + provide: 'ACCOUNT_OPTIONS', + useFactory: optionsFactory, + deps: [ACCOUNT_OPTIONS], + }, + ], + }; + } +} diff --git a/npm/ng-packs/packages/account/src/lib/components/index.ts b/npm/ng-packs/packages/account/src/lib/components/index.ts new file mode 100644 index 00000000000..8e943f0bad4 --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/components/index.ts @@ -0,0 +1,2 @@ +export * from './login/login.component'; +export * from './register/register.component'; diff --git a/npm/ng-packs/packages/account/src/lib/components/login/login.component.html b/npm/ng-packs/packages/account/src/lib/components/login/login.component.html new file mode 100644 index 00000000000..170db44a8ed --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/components/login/login.component.html @@ -0,0 +1,41 @@ +
    +
    + + + +
    +
    diff --git a/npm/ng-packs/packages/account/src/lib/components/login/login.component.ts b/npm/ng-packs/packages/account/src/lib/components/login/login.component.ts new file mode 100644 index 00000000000..a743e121f52 --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/components/login/login.component.ts @@ -0,0 +1,68 @@ +import { ConfigGetAppConfiguration, ConfigState } from '@abp/ng.core'; +import { Component, Inject, Optional } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { Navigate } from '@ngxs/router-plugin'; +import { Store } from '@ngxs/store'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { from, throwError } from 'rxjs'; +import { Options } from '../../models/options'; +import { ToasterService } from '@abp/ng.theme.shared'; +import { catchError, finalize, switchMap, tap } from 'rxjs/operators'; +import snq from 'snq'; + +const { maxLength, minLength, required } = Validators; + +@Component({ + selector: 'abp-login', + templateUrl: './login.component.html', +}) +export class LoginComponent { + form: FormGroup; + + inProgress: boolean; + + constructor( + private fb: FormBuilder, + private oauthService: OAuthService, + private store: Store, + private toasterService: ToasterService, + @Optional() @Inject('ACCOUNT_OPTIONS') private options: Options, + ) { + this.oauthService.configure(this.store.selectSnapshot(ConfigState.getOne('environment')).oAuthConfig); + this.oauthService.loadDiscoveryDocument(); + + this.form = this.fb.group({ + username: ['', [required, maxLength(255)]], + password: ['', [required, maxLength(32)]], + remember: [false], + }); + } + + onSubmit() { + if (this.form.invalid) return; + this.oauthService.setStorage(this.form.value.remember ? localStorage : sessionStorage); + + this.inProgress = true; + from( + this.oauthService.fetchTokenUsingPasswordFlow(this.form.get('username').value, this.form.get('password').value), + ) + .pipe( + switchMap(() => this.store.dispatch(new ConfigGetAppConfiguration())), + tap(() => { + const redirectUrl = snq(() => window.history.state).redirectUrl || (this.options || {}).redirectUrl || '/'; + this.store.dispatch(new Navigate([redirectUrl])); + }), + catchError(err => { + this.toasterService.error( + snq(() => err.error.error_description) || + snq(() => err.error.error.message, 'AbpAccount::DefaultErrorMessage'), + 'Error', + { life: 7000 }, + ); + return throwError(err); + }), + finalize(() => (this.inProgress = false)), + ) + .subscribe(); + } +} diff --git a/npm/ng-packs/packages/account/src/lib/components/register/register.component.html b/npm/ng-packs/packages/account/src/lib/components/register/register.component.html new file mode 100644 index 00000000000..b834d9c6c40 --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/components/register/register.component.html @@ -0,0 +1,30 @@ +
    +
    + + + +
    +
    diff --git a/npm/ng-packs/packages/account/src/lib/components/register/register.component.ts b/npm/ng-packs/packages/account/src/lib/components/register/register.component.ts new file mode 100644 index 00000000000..8b47ed16a9e --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/components/register/register.component.ts @@ -0,0 +1,57 @@ +import { ToasterService } from '@abp/ng.theme.shared'; +import { Component } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { throwError } from 'rxjs'; +import { catchError, finalize, take } from 'rxjs/operators'; +import snq from 'snq'; +import { RegisterRequest } from '../../models'; +import { AccountService } from '../../services/account.service'; +const { maxLength, minLength, required, email } = Validators; + +@Component({ + selector: 'abp-register', + templateUrl: './register.component.html', +}) +export class RegisterComponent { + form: FormGroup; + + inProgress: boolean; + + constructor(private fb: FormBuilder, private accountService: AccountService, private toasterService: ToasterService) { + this.form = this.fb.group({ + username: ['', [required, maxLength(255)]], + password: ['', [required, maxLength(32)]], + email: ['', [required, email]], + }); + } + + onSubmit() { + if (this.form.invalid) return; + + this.inProgress = true; + + const newUser = { + userName: this.form.get('username').value, + password: this.form.get('password').value, + emailAddress: this.form.get('email').value, + appName: 'angular', + } as RegisterRequest; + + this.accountService + .register(newUser) + .pipe( + take(1), + catchError(err => { + this.toasterService.error( + snq(() => err.error.error_description) || + snq(() => err.error.error.message, 'AbpAccount::DefaultErrorMessage'), + 'Error', + { life: 7000 }, + ); + return throwError(err); + }), + finalize(() => (this.inProgress = false)), + ) + .subscribe(); + } +} diff --git a/npm/ng-packs/packages/account/src/lib/components/tenant-box/tenant-box.component.html b/npm/ng-packs/packages/account/src/lib/components/tenant-box/tenant-box.component.html new file mode 100644 index 00000000000..7350b628f6d --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/components/tenant-box/tenant-box.component.html @@ -0,0 +1,38 @@ +
    + {{ 'AbpUiMultiTenancy::Tenant' | abpLocalization }}: + + {{ tenantName || ('AbpUiMultiTenancy::NotSelected' | abpLocalization) }} + + ({{ + 'AbpUiMultiTenancy::Switch' | abpLocalization + }}) +
    + + + +
    Switch Tenant
    +
    + +
    +
    +
    + + +
    +

    {{ 'AbpUiMultiTenancy::SwitchTenantHint' | abpLocalization }}

    +
    +
    +
    + + + + +
    diff --git a/npm/ng-packs/packages/account/src/lib/components/tenant-box/tenant-box.component.ts b/npm/ng-packs/packages/account/src/lib/components/tenant-box/tenant-box.component.ts new file mode 100644 index 00000000000..66f17b99ecc --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/components/tenant-box/tenant-box.component.ts @@ -0,0 +1,68 @@ +import { ABP, SessionSetTenant, SessionState } from '@abp/ng.core'; +import { ToasterService } from '@abp/ng.theme.shared'; +import { Component, OnInit } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { throwError } from 'rxjs'; +import { catchError, take } from 'rxjs/operators'; +import snq from 'snq'; +import { AccountService } from '../../services/account.service'; + +@Component({ + selector: 'abp-tenant-box', + templateUrl: './tenant-box.component.html', +}) +export class TenantBoxComponent implements OnInit { + constructor(private store: Store, private toasterService: ToasterService, private accountService: AccountService) {} + + tenant = {} as ABP.BasicItem; + + tenantName: string; + + isModalVisible: boolean; + + ngOnInit() { + this.tenant = this.store.selectSnapshot(SessionState.getTenant) || ({} as ABP.BasicItem); + this.tenantName = this.tenant.name || ''; + } + + onSwitch() { + this.isModalVisible = true; + } + + save() { + if (this.tenant.name) { + this.accountService + .findTenant(this.tenant.name) + .pipe( + take(1), + catchError(err => { + this.toasterService.error( + snq(() => err.error.error_description, 'AbpUi::DefaultErrorMessage'), + 'AbpUi::Error', + ); + return throwError(err); + }), + ) + .subscribe(({ success, tenantId }) => { + if (success) { + this.tenant = { + id: tenantId, + name: this.tenant.name, + }; + this.tenantName = this.tenant.name; + this.isModalVisible = false; + } else { + this.toasterService.error(`AbpUiMultiTenancy::GivenTenantIsNotAvailable`, 'AbpUi::Error', { + messageLocalizationParams: [this.tenant.name], + }); + this.tenant = {} as ABP.BasicItem; + } + this.store.dispatch(new SessionSetTenant(success ? this.tenant : null)); + }); + } else { + this.store.dispatch(new SessionSetTenant(null)); + this.tenantName = null; + this.isModalVisible = false; + } + } +} diff --git a/npm/ng-packs/packages/account/src/lib/constants/routes.ts b/npm/ng-packs/packages/account/src/lib/constants/routes.ts new file mode 100644 index 00000000000..c1ba80be83a --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/constants/routes.ts @@ -0,0 +1,11 @@ +import { ABP, eLayoutType } from '@abp/ng.core'; + +export const ACCOUNT_ROUTES = [ + { + name: 'Account', + path: 'account', + invisible: true, + layout: eLayoutType.application, + children: [{ path: 'login', name: 'Login', order: 1 }, { path: 'register', name: 'Register', order: 2 }], + }, +] as ABP.FullRoute[]; diff --git a/npm/ng-packs/packages/account/src/lib/models/index.ts b/npm/ng-packs/packages/account/src/lib/models/index.ts new file mode 100644 index 00000000000..4dcd63408e2 --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/models/index.ts @@ -0,0 +1,3 @@ +export * from './options'; +export * from './user'; +export * from './tenant'; diff --git a/npm/ng-packs/packages/account/src/lib/models/options.ts b/npm/ng-packs/packages/account/src/lib/models/options.ts new file mode 100644 index 00000000000..f07ccb8900a --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/models/options.ts @@ -0,0 +1,3 @@ +export interface Options { + redirectUrl?: string; +} diff --git a/npm/ng-packs/packages/account/src/lib/models/tenant.ts b/npm/ng-packs/packages/account/src/lib/models/tenant.ts new file mode 100644 index 00000000000..732b0f66550 --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/models/tenant.ts @@ -0,0 +1,4 @@ +export interface TenantIdResponse { + success: boolean; + tenantId: string; +} diff --git a/npm/ng-packs/packages/account/src/lib/models/user.ts b/npm/ng-packs/packages/account/src/lib/models/user.ts new file mode 100644 index 00000000000..89e307ddc5c --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/models/user.ts @@ -0,0 +1,29 @@ +export interface RegisterRequest { + userName: string; + emailAddress: string; + password: string; + appName?: string; +} + +export interface RegisterResponse { + tenantId: string; + userName: string; + name: string; + surname: string; + email: string; + emailConfirmed: boolean; + phoneNumber: string; + phoneNumberConfirmed: boolean; + twoFactorEnabled: boolean; + lockoutEnabled: boolean; + lockoutEnd: string; + concurrencyStamp: string; + isDeleted: boolean; + deleterId: string; + deletionTime: string; + lastModificationTime: string; + lastModifierId: string; + creationTime: string; + creatorId: string; + id: string; +} diff --git a/npm/ng-packs/packages/account/src/lib/services/account.service.ts b/npm/ng-packs/packages/account/src/lib/services/account.service.ts new file mode 100644 index 00000000000..6a660a695d9 --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/services/account.service.ts @@ -0,0 +1,30 @@ +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { RestService, Rest } from '@abp/ng.core'; +import { RegisterResponse, RegisterRequest, TenantIdResponse } from '../models'; + +@Injectable({ + providedIn: 'root', +}) +export class AccountService { + constructor(private rest: RestService) {} + + findTenant(tenantName: string): Observable { + const request: Rest.Request = { + method: 'GET', + url: `/api/abp/multi-tenancy/find-tenant/${tenantName}`, + }; + + return this.rest.request(request); + } + + register(body: RegisterRequest): Observable { + const request: Rest.Request = { + method: 'POST', + url: `/api/account/register`, + body, + }; + + return this.rest.request(request, { throwErr: true }); + } +} diff --git a/npm/ng-packs/packages/account/src/lib/services/index.ts b/npm/ng-packs/packages/account/src/lib/services/index.ts new file mode 100644 index 00000000000..e69de29bb2d diff --git a/npm/ng-packs/packages/account/src/lib/tokens/index.ts b/npm/ng-packs/packages/account/src/lib/tokens/index.ts new file mode 100644 index 00000000000..683bc4b3dba --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/tokens/index.ts @@ -0,0 +1 @@ +export * from './options.token'; diff --git a/npm/ng-packs/packages/account/src/lib/tokens/options.token.ts b/npm/ng-packs/packages/account/src/lib/tokens/options.token.ts new file mode 100644 index 00000000000..92b142b09cf --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/tokens/options.token.ts @@ -0,0 +1,11 @@ +import { InjectionToken } from '@angular/core'; +import { Options } from '../models/options'; + +export function optionsFactory(options: Options) { + return { + redirectUrl: '/', + ...options, + }; +} + +export const ACCOUNT_OPTIONS = new InjectionToken('ACCOUNT_OPTIONS'); diff --git a/npm/ng-packs/packages/account/src/public-api.ts b/npm/ng-packs/packages/account/src/public-api.ts new file mode 100644 index 00000000000..2a8e2468ab0 --- /dev/null +++ b/npm/ng-packs/packages/account/src/public-api.ts @@ -0,0 +1,9 @@ +/* + * Public API Surface of auth + */ + +export * from './lib/account.module'; +export * from './lib/components'; +export * from './lib/constants/routes'; +export * from './lib/tokens'; +export * from './lib/models'; diff --git a/npm/ng-packs/packages/account/src/test.ts b/npm/ng-packs/packages/account/src/test.ts new file mode 100644 index 00000000000..978c64fb83f --- /dev/null +++ b/npm/ng-packs/packages/account/src/test.ts @@ -0,0 +1,21 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/npm/ng-packs/packages/account/tsconfig.lib.json b/npm/ng-packs/packages/account/tsconfig.lib.json new file mode 100644 index 00000000000..2972099ba19 --- /dev/null +++ b/npm/ng-packs/packages/account/tsconfig.lib.json @@ -0,0 +1,20 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": ["dom", "es2018"] + }, + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true, + "enableResourceInlining": true + }, + "exclude": ["src/test.ts", "**/*.spec.ts"] +} diff --git a/npm/ng-packs/packages/account/tsconfig.spec.json b/npm/ng-packs/packages/account/tsconfig.spec.json new file mode 100644 index 00000000000..16da33db072 --- /dev/null +++ b/npm/ng-packs/packages/account/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/npm/ng-packs/packages/account/tslint.json b/npm/ng-packs/packages/account/tslint.json new file mode 100644 index 00000000000..8c3919ea624 --- /dev/null +++ b/npm/ng-packs/packages/account/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "abp", + "camelCase" + ], + "component-selector": [ + true, + "element", + "abp", + "kebab-case" + ] + } +} diff --git a/npm/ng-packs/packages/core/README.md b/npm/ng-packs/packages/core/README.md new file mode 100644 index 00000000000..aeef2da4122 --- /dev/null +++ b/npm/ng-packs/packages/core/README.md @@ -0,0 +1 @@ +

    @abp/ng.core

    diff --git a/npm/ng-packs/packages/core/karma.conf.js b/npm/ng-packs/packages/core/karma.conf.js new file mode 100644 index 00000000000..46e0cb1d0a6 --- /dev/null +++ b/npm/ng-packs/packages/core/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/core'), + reports: ['html', 'lcovonly'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/npm/ng-packs/packages/core/ng-package.json b/npm/ng-packs/packages/core/ng-package.json new file mode 100644 index 00000000000..c38f8aa8340 --- /dev/null +++ b/npm/ng-packs/packages/core/ng-package.json @@ -0,0 +1,16 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/core", + "lib": { + "entryFile": "src/public-api.ts" + }, + "deleteDestPath": false, + "whitelistedNonPeerDependencies": [ + "@ngxs/router-plugin", + "@ngxs/storage-plugin", + "@ngxs/store", + "angular-oauth2-oidc", + "just-compare", + "snq" + ] +} diff --git a/npm/ng-packs/packages/core/package.json b/npm/ng-packs/packages/core/package.json new file mode 100644 index 00000000000..5c521edced4 --- /dev/null +++ b/npm/ng-packs/packages/core/package.json @@ -0,0 +1,22 @@ +{ + "name": "@abp/ng.core", + "version": "0.8.0", + "dependencies": { + "@ngxs/router-plugin": "^3.5.0", + "@ngxs/storage-plugin": "^3.5.0", + "@ngxs/store": "^3.5.0", + "angular-oauth2-oidc": "^8.0.1", + "just-compare": "^1.3.0", + "snq": "^1.0.3" + }, + "peerDependencies": { + "@angular/common": "~8.1.2", + "@angular/core": "~8.1.2", + "@angular/forms": "~8.1.2", + "@angular/router": "~8.1.2", + "rxjs": "~6.4.0" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/npm/ng-packs/packages/core/src/lib/actions/config.actions.ts b/npm/ng-packs/packages/core/src/lib/actions/config.actions.ts new file mode 100644 index 00000000000..1251436c079 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/actions/config.actions.ts @@ -0,0 +1,10 @@ +import { ABP } from '../models'; + +export class PatchRouteByName { + static readonly type = '[Config] Patch Route By Name'; + constructor(public name: string, public newValue: Partial) {} +} + +export class ConfigGetAppConfiguration { + static readonly type = '[Config] Get App Configuration'; +} diff --git a/npm/ng-packs/packages/core/src/lib/actions/index.ts b/npm/ng-packs/packages/core/src/lib/actions/index.ts new file mode 100644 index 00000000000..cf05aac81d9 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/actions/index.ts @@ -0,0 +1,5 @@ +export * from './config.actions'; +export * from './loader.actions'; +export * from './profile.actions'; +export * from './rest.actions'; +export * from './session.actions'; diff --git a/npm/ng-packs/packages/core/src/lib/actions/loader.actions.ts b/npm/ng-packs/packages/core/src/lib/actions/loader.actions.ts new file mode 100644 index 00000000000..6338172a6e0 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/actions/loader.actions.ts @@ -0,0 +1,11 @@ +import { HttpRequest } from '@angular/common/http'; + +export class LoaderStart { + static readonly type = '[Loader] Start'; + constructor(public payload: HttpRequest) {} +} + +export class LoaderStop { + static readonly type = '[Loader] Stop'; + constructor(public payload: HttpRequest) {} +} diff --git a/npm/ng-packs/packages/core/src/lib/actions/profile.actions.ts b/npm/ng-packs/packages/core/src/lib/actions/profile.actions.ts new file mode 100644 index 00000000000..235e587bf9f --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/actions/profile.actions.ts @@ -0,0 +1,15 @@ +import { Profile } from '../models'; + +export class ProfileGet { + static readonly type = '[Profile] Get'; +} + +export class ProfileUpdate { + static readonly type = '[Profile] Update'; + constructor(public payload: Profile.Response) {} +} + +export class ProfileChangePassword { + static readonly type = '[Profile] Change Password'; + constructor(public payload: Profile.ChangePasswordRequest) {} +} diff --git a/npm/ng-packs/packages/core/src/lib/actions/rest.actions.ts b/npm/ng-packs/packages/core/src/lib/actions/rest.actions.ts new file mode 100644 index 00000000000..5f00eea3d80 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/actions/rest.actions.ts @@ -0,0 +1,6 @@ +import { HttpErrorResponse } from '@angular/common/http'; + +export class RestOccurError { + static readonly type = '[Rest] Error'; + constructor(public payload: HttpErrorResponse | any) {} +} diff --git a/npm/ng-packs/packages/core/src/lib/actions/session.actions.ts b/npm/ng-packs/packages/core/src/lib/actions/session.actions.ts new file mode 100644 index 00000000000..61a69b00fca --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/actions/session.actions.ts @@ -0,0 +1,10 @@ +import { ABP } from '../models'; + +export class SessionSetLanguage { + static readonly type = '[Session] Set Language'; + constructor(public payload: string) {} +} +export class SessionSetTenant { + static readonly type = '[Session] Set Tenant'; + constructor(public payload: ABP.BasicItem) {} +} diff --git a/npm/ng-packs/packages/core/src/lib/components/dynamic-layout.component.ts b/npm/ng-packs/packages/core/src/lib/components/dynamic-layout.component.ts new file mode 100644 index 00000000000..0504da38b4c --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/components/dynamic-layout.component.ts @@ -0,0 +1,67 @@ +import { Component, OnDestroy, Type } from '@angular/core'; +import { NavigationEnd, Router, UrlSegment } from '@angular/router'; +import { Select, Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { eLayoutType } from '../enums'; +import { ABP, Config } from '../models'; +import { ConfigState } from '../states'; +import { takeUntilDestroy } from '../utils'; +import snq from 'snq'; + +@Component({ + selector: 'abp-dynamic-layout', + template: ` + + + + + `, +}) +export class DynamicLayoutComponent implements OnDestroy { + @Select(ConfigState.getOne('requirements')) + requirements$: Observable; + + layout: Type; + + constructor(private router: Router, private store: Store) { + this.router.events.pipe(takeUntilDestroy(this)).subscribe(event => { + if (event instanceof NavigationEnd) { + const { segments } = this.router.parseUrl(event.url).root.children.primary; + const { + requirements: { layouts }, + routes, + } = this.store.selectSnapshot(ConfigState.getAll); + + const layout = findLayout(segments, routes); + + this.layout = layouts.filter(l => !!l).find(l => snq(() => l.type.toLowerCase().indexOf(layout), -1) > -1); + } + }); + } + + ngOnDestroy() {} +} + +function findLayout(segments: UrlSegment[], routes: ABP.FullRoute[]): eLayoutType { + let layout = eLayoutType.empty; + + const route = routes + .reduce((acc, val) => (val.wrapper ? [...acc, ...val.children] : [...acc, val]), []) + .find(r => r.path === segments[0].path); + + if (route) { + if (route.layout) { + layout = route.layout; + } + + if (route.children && route.children.length) { + const child = route.children.find(c => c.path === segments[1].path); + + if (child.layout) { + layout = child.layout; + } + } + } + + return layout; +} diff --git a/npm/ng-packs/packages/core/src/lib/components/index.ts b/npm/ng-packs/packages/core/src/lib/components/index.ts new file mode 100644 index 00000000000..d54b2d21751 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/components/index.ts @@ -0,0 +1,2 @@ +export * from './dynamic-layout.component'; +export * from './router-outlet.component'; diff --git a/npm/ng-packs/packages/core/src/lib/components/router-outlet.component.ts b/npm/ng-packs/packages/core/src/lib/components/router-outlet.component.ts new file mode 100644 index 00000000000..1fc5d002ac5 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/components/router-outlet.component.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'abp-router-outlet', + template: ` + + `, +}) +export class RouterOutletComponent {} diff --git a/npm/ng-packs/packages/core/src/lib/constants/index.ts b/npm/ng-packs/packages/core/src/lib/constants/index.ts new file mode 100644 index 00000000000..e69de29bb2d diff --git a/npm/ng-packs/packages/core/src/lib/core.module.ts b/npm/ng-packs/packages/core/src/lib/core.module.ts new file mode 100644 index 00000000000..4b657fe8bb3 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/core.module.ts @@ -0,0 +1,96 @@ +import { CommonModule } from '@angular/common'; +import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; +import { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { RouterModule } from '@angular/router'; +import { NgxsRouterPluginModule } from '@ngxs/router-plugin'; +import { NgxsStoragePluginModule } from '@ngxs/storage-plugin'; +import { NgxsModule, NGXS_PLUGINS } from '@ngxs/store'; +import { DynamicLayoutComponent } from './components/dynamic-layout.component'; +import { RouterOutletComponent } from './components/router-outlet.component'; +import { PermissionDirective } from './directives/permission.directive'; +import { VisibilityDirective } from './directives/visibility.directive'; +import { ApiInterceptor } from './interceptors/api.interceptor'; +import { ABP } from './models/common'; +import { LocalizationPipe } from './pipes/localization.pipe'; +import { ConfigPlugin, NGXS_CONFIG_PLUGIN_OPTIONS } from './plugins/config.plugin'; +import { ConfigState } from './states/config.state'; +import { ProfileState } from './states/profile.state'; +import { SessionState } from './states/session.state'; +import { getInitialData } from './utils/initial-utils'; +import { EllipsisDirective } from './directives/ellipsis.directive'; +import { AutofocusDirective } from './directives/autofocus.directive'; +import { InputEventDebounceDirective } from './directives/debounce.directive'; +import { ClickEventStopPropagationDirective } from './directives/stop-propagation.directive'; + +@NgModule({ + imports: [ + NgxsModule.forFeature([ProfileState, SessionState, ConfigState]), + NgxsStoragePluginModule.forRoot({ key: 'SessionState' }), + NgxsRouterPluginModule.forRoot(), + CommonModule, + HttpClientModule, + FormsModule, + ReactiveFormsModule, + RouterModule, + ], + declarations: [ + RouterOutletComponent, + DynamicLayoutComponent, + AutofocusDirective, + EllipsisDirective, + LocalizationPipe, + PermissionDirective, + VisibilityDirective, + InputEventDebounceDirective, + ClickEventStopPropagationDirective, + ], + exports: [ + CommonModule, + HttpClientModule, + FormsModule, + ReactiveFormsModule, + RouterModule, + RouterOutletComponent, + DynamicLayoutComponent, + AutofocusDirective, + EllipsisDirective, + LocalizationPipe, + PermissionDirective, + VisibilityDirective, + InputEventDebounceDirective, + LocalizationPipe, + ClickEventStopPropagationDirective, + ], + providers: [LocalizationPipe], + entryComponents: [RouterOutletComponent, DynamicLayoutComponent], +}) +export class CoreModule { + static forRoot(options = {} as ABP.Root): ModuleWithProviders { + return { + ngModule: CoreModule, + providers: [ + { + provide: NGXS_PLUGINS, + useClass: ConfigPlugin, + multi: true, + }, + { + provide: NGXS_CONFIG_PLUGIN_OPTIONS, + useValue: options, + }, + { + provide: HTTP_INTERCEPTORS, + useClass: ApiInterceptor, + multi: true, + }, + { + provide: APP_INITIALIZER, + multi: true, + deps: [Injector], + useFactory: getInitialData, + }, + ], + }; + } +} diff --git a/npm/ng-packs/packages/core/src/lib/directives/autofocus.directive.ts b/npm/ng-packs/packages/core/src/lib/directives/autofocus.directive.ts new file mode 100644 index 00000000000..edd7c8497a7 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/directives/autofocus.directive.ts @@ -0,0 +1,15 @@ +import { Directive, ElementRef, Input, AfterViewInit } from '@angular/core'; + +@Directive({ + selector: '[autofocus]', +}) +export class AutofocusDirective implements AfterViewInit { + @Input('autofocus') + delay: number = 0; + + constructor(private elRef: ElementRef) {} + + ngAfterViewInit(): void { + setTimeout(() => this.elRef.nativeElement.focus(), this.delay); + } +} diff --git a/npm/ng-packs/packages/core/src/lib/directives/debounce.directive.ts b/npm/ng-packs/packages/core/src/lib/directives/debounce.directive.ts new file mode 100644 index 00000000000..144c43d4e28 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/directives/debounce.directive.ts @@ -0,0 +1,26 @@ +import { Directive, Output, Renderer2, ElementRef, OnInit, EventEmitter, Input } from '@angular/core'; +import { fromEvent } from 'rxjs'; +import { debounceTime } from 'rxjs/operators'; +import { takeUntilDestroy } from '@ngx-validate/core'; + +@Directive({ + selector: '[input.debounce]', +}) +export class InputEventDebounceDirective implements OnInit { + @Input() debounce: number = 300; + + @Output('input.debounce') debounceEvent = new EventEmitter(); + + constructor(private renderer: Renderer2, private el: ElementRef) {} + + ngOnInit(): void { + fromEvent(this.el.nativeElement, 'input') + .pipe( + debounceTime(this.debounce), + takeUntilDestroy(this), + ) + .subscribe((event: Event) => { + this.debounceEvent.emit(event); + }); + } +} diff --git a/npm/ng-packs/packages/core/src/lib/directives/ellipsis.directive.ts b/npm/ng-packs/packages/core/src/lib/directives/ellipsis.directive.ts new file mode 100644 index 00000000000..844f1d9a87e --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/directives/ellipsis.directive.ts @@ -0,0 +1,39 @@ +import { AfterContentInit, ChangeDetectorRef, Directive, ElementRef, HostBinding, Input } from '@angular/core'; + +@Directive({ + selector: '[abpEllipsis]', +}) +export class EllipsisDirective implements AfterContentInit { + @Input('abpEllipsis') + witdh: string; + + @HostBinding('title') + @Input() + title: string; + + @Input('abpEllipsisEnabled') + enabled = true; + + @HostBinding('class.abp-ellipsis') + get class() { + return this.enabled; + } + + @HostBinding('style.max-width') + get maxWidth() { + return this.enabled ? this.witdh || '180px' : undefined; + } + + constructor(private cdRef: ChangeDetectorRef, private elRef: ElementRef) {} + + ngAfterContentInit() { + setTimeout(() => { + const title = this.title; + this.title = title || (this.elRef.nativeElement as HTMLElement).innerText; + + if (this.title !== title) { + this.cdRef.detectChanges(); + } + }, 0); + } +} diff --git a/npm/ng-packs/packages/core/src/lib/directives/index.ts b/npm/ng-packs/packages/core/src/lib/directives/index.ts new file mode 100644 index 00000000000..de5846382c7 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/directives/index.ts @@ -0,0 +1,4 @@ +export * from './autofocus.directive'; +export * from './ellipsis.directive'; +export * from './permission.directive'; +export * from './visibility.directive'; diff --git a/npm/ng-packs/packages/core/src/lib/directives/permission.directive.ts b/npm/ng-packs/packages/core/src/lib/directives/permission.directive.ts new file mode 100644 index 00000000000..68a5ae6f753 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/directives/permission.directive.ts @@ -0,0 +1,31 @@ +import { Directive, ElementRef, Input, OnDestroy, OnInit, Optional, Renderer2 } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { ConfigState } from '../states'; +import { takeUntilDestroy } from '../utils'; + +@Directive({ + selector: '[abpPermission]', +}) +export class PermissionDirective implements OnInit, OnDestroy { + @Input('abpPermission') condition: string; + + constructor(@Optional() private elRef: ElementRef, private renderer: Renderer2, private store: Store) {} + + ngOnInit() { + if (this.condition) { + this.store + .select(ConfigState.getGrantedPolicy(this.condition)) + .pipe(takeUntilDestroy(this)) + .subscribe(isGranted => { + if (!isGranted) { + this.renderer.removeChild( + (this.elRef.nativeElement as HTMLElement).parentElement, + this.elRef.nativeElement, + ); + } + }); + } + } + + ngOnDestroy(): void {} +} diff --git a/npm/ng-packs/packages/core/src/lib/directives/stop-propagation.directive.ts b/npm/ng-packs/packages/core/src/lib/directives/stop-propagation.directive.ts new file mode 100644 index 00000000000..ffa2e9e10b5 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/directives/stop-propagation.directive.ts @@ -0,0 +1,21 @@ +import { Directive, ElementRef, EventEmitter, OnInit, Output, Renderer2 } from '@angular/core'; +import { fromEvent } from 'rxjs'; +import { takeUntilDestroy } from '@ngx-validate/core'; + +@Directive({ + selector: '[click.stop]', +}) +export class ClickEventStopPropagationDirective implements OnInit { + @Output('click.stop') stopPropEvent = new EventEmitter(); + + constructor(private renderer: Renderer2, private el: ElementRef) {} + + ngOnInit(): void { + fromEvent(this.el.nativeElement, 'click') + .pipe(takeUntilDestroy(this)) + .subscribe((event: MouseEvent) => { + event.stopPropagation(); + this.stopPropEvent.emit(event); + }); + } +} diff --git a/npm/ng-packs/packages/core/src/lib/directives/visibility.directive.ts b/npm/ng-packs/packages/core/src/lib/directives/visibility.directive.ts new file mode 100644 index 00000000000..da379b250a3 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/directives/visibility.directive.ts @@ -0,0 +1,48 @@ +import { Directive, Input, Optional, ElementRef, Renderer2, AfterViewInit } from '@angular/core'; +import { Subject } from 'rxjs'; +import snq from 'snq'; + +@Directive({ + selector: '[abpVisibility]', +}) +export class VisibilityDirective implements AfterViewInit { + @Input('abpVisibility') + focusedElement: HTMLElement; + + completed$ = new Subject(); + + constructor(@Optional() private elRef: ElementRef, private renderer: Renderer2) {} + + ngAfterViewInit() { + const observer = new MutationObserver(mutations => { + mutations.forEach(mutation => { + if (!mutation.target) return; + + const htmlNodes = snq( + () => Array.from(mutation.target.childNodes).filter(node => node instanceof HTMLElement), + [], + ); + + if (!htmlNodes.length) { + this.renderer.removeChild(this.elRef.nativeElement.parentElement, this.elRef.nativeElement); + this.disconnect(); + } else { + setTimeout(() => { + this.disconnect(); + }, 0); + } + }); + }); + + observer.observe(this.focusedElement, { + childList: true, + }); + + this.completed$.subscribe(() => observer.disconnect()); + } + + disconnect() { + this.completed$.next(); + this.completed$.complete(); + } +} diff --git a/npm/ng-packs/packages/core/src/lib/enums/common.ts b/npm/ng-packs/packages/core/src/lib/enums/common.ts new file mode 100644 index 00000000000..08ddf05b6d5 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/enums/common.ts @@ -0,0 +1,5 @@ +export const enum eLayoutType { + account = 'account', + application = 'application', + empty = 'empty', +} diff --git a/npm/ng-packs/packages/core/src/lib/enums/index.ts b/npm/ng-packs/packages/core/src/lib/enums/index.ts new file mode 100644 index 00000000000..d0b93236650 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/enums/index.ts @@ -0,0 +1 @@ +export * from './common'; diff --git a/npm/ng-packs/packages/core/src/lib/guards/auth.guard.ts b/npm/ng-packs/packages/core/src/lib/guards/auth.guard.ts new file mode 100644 index 00000000000..bd6ad0306b4 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/guards/auth.guard.ts @@ -0,0 +1,23 @@ +import { Injectable } from '@angular/core'; +import { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router'; +import { Store } from '@ngxs/store'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { Observable } from 'rxjs'; +import { Navigate } from '@ngxs/router-plugin'; + +@Injectable({ + providedIn: 'root', +}) +export class AuthGuard implements CanActivate { + constructor(private oauthService: OAuthService, private store: Store) {} + canActivate(_: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | boolean | UrlTree { + const hasValidAccessToken = this.oauthService.hasValidAccessToken(); + if (hasValidAccessToken) { + return hasValidAccessToken; + } + + this.store.dispatch(new Navigate(['/account/login'], null, { state: { redirectUrl: state.url } })); + + return false; + } +} diff --git a/npm/ng-packs/packages/core/src/lib/guards/index.ts b/npm/ng-packs/packages/core/src/lib/guards/index.ts new file mode 100644 index 00000000000..6d31d6bf146 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/guards/index.ts @@ -0,0 +1,2 @@ +export * from './auth.guard'; +export * from './permission.guard'; diff --git a/npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts b/npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts new file mode 100644 index 00000000000..d4e4b80ea99 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/guards/permission.guard.ts @@ -0,0 +1,17 @@ +import { Injectable } from '@angular/core'; +import { ActivatedRouteSnapshot, CanActivate } from '@angular/router'; +import { Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { ConfigState } from '../states'; + +@Injectable({ + providedIn: 'root', +}) +export class PermissionGuard implements CanActivate { + constructor(private store: Store) {} + + canActivate({ data }: ActivatedRouteSnapshot): Observable { + const resource = data.requiredPolicy as string; + return this.store.select(ConfigState.getGrantedPolicy(resource)); + } +} diff --git a/npm/ng-packs/packages/core/src/lib/handlers/index.ts b/npm/ng-packs/packages/core/src/lib/handlers/index.ts new file mode 100644 index 00000000000..e69de29bb2d diff --git a/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts b/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts new file mode 100644 index 00000000000..64e4701f825 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts @@ -0,0 +1,41 @@ +import { Injectable } from '@angular/core'; +import { HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { Store } from '@ngxs/store'; +import { SessionState } from '../states'; +import { LoaderStart, LoaderStop } from '../actions/loader.actions'; +import { finalize } from 'rxjs/operators'; + +@Injectable() +export class ApiInterceptor implements HttpInterceptor { + constructor(private oAuthService: OAuthService, private store: Store) {} + + intercept(request: HttpRequest, next: HttpHandler) { + this.store.dispatch(new LoaderStart(request)); + + const headers = {} as any; + + const token = this.oAuthService.getAccessToken(); + if (!request.headers.has('Authorization') && token) { + headers['Authorization'] = `Bearer ${token}`; + } + + const lang = this.store.selectSnapshot(SessionState.getLanguage); + if (!request.headers.has('Accept-Language') && lang) { + headers['Accept-Language'] = lang; + } + + const tenant = this.store.selectSnapshot(SessionState.getTenant); + if (!request.headers.has('__tenant') && tenant) { + headers['__tenant'] = tenant.id; + } + + return next + .handle( + request.clone({ + setHeaders: headers, + }), + ) + .pipe(finalize(() => this.store.dispatch(new LoaderStop(request)))); + } +} diff --git a/npm/ng-packs/packages/core/src/lib/interceptors/index.ts b/npm/ng-packs/packages/core/src/lib/interceptors/index.ts new file mode 100644 index 00000000000..d7479a76848 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/interceptors/index.ts @@ -0,0 +1 @@ +export * from './api.interceptor'; diff --git a/npm/ng-packs/packages/core/src/lib/models/application-configuration.ts b/npm/ng-packs/packages/core/src/lib/models/application-configuration.ts new file mode 100644 index 00000000000..99128103996 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/models/application-configuration.ts @@ -0,0 +1,49 @@ +export namespace ApplicationConfiguration { + export interface Response { + localization: Localization; + auth: Auth; + setting: Setting; + currentUser: CurrentUser; + features: Features; + } + + export interface Localization { + values: LocalizationValue; + languages: Language[]; + } + + export interface LocalizationValue { + [key: string]: { [key: string]: string }; + } + + export interface Language { + cultureName: string; + uiCultureName: string; + displayName: string; + flagIcon: string; + } + + export interface Auth { + policies: Policy; + grantedPolicies: Policy; + } + + export interface Policy { + [key: string]: boolean; + } + + export interface Setting { + values: { [key: string]: 'Abp.Localization.DefaultLanguage' }; + } + + export interface CurrentUser { + isAuthenticated: boolean; + id: string; + tenantId: string; + userName: string; + } + + export interface Features { + values: Setting; + } +} diff --git a/npm/ng-packs/packages/core/src/lib/models/common.ts b/npm/ng-packs/packages/core/src/lib/models/common.ts new file mode 100644 index 00000000000..502363a323a --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/models/common.ts @@ -0,0 +1,46 @@ +import { Config } from './config'; +import { eLayoutType } from '../enums'; + +export namespace ABP { + export interface Root { + environment: Partial; + requirements: Config.Requirements; + } + + export type PagedResponse = { + totalCount: number; + } & PagedItemsResponse; + + export interface PagedItemsResponse { + items: T[]; + } + + export interface PageQueryParams { + filter?: string; + sorting?: string; + skipCount?: number; + maxResultCount?: number; + } + + export interface Route { + children?: Route[]; + invisible?: boolean; + layout?: eLayoutType; + name: string; + order?: number; + parentName?: string; + path: string; + requiredPolicy?: string; + iconClass?: string; + } + + export interface FullRoute extends Route { + url?: string; + wrapper?: boolean; + } + + export interface BasicItem { + id: string; + name: string; + } +} diff --git a/npm/ng-packs/packages/core/src/lib/models/config.ts b/npm/ng-packs/packages/core/src/lib/models/config.ts new file mode 100644 index 00000000000..a92d97254a8 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/models/config.ts @@ -0,0 +1,22 @@ +import { AuthConfig } from 'angular-oauth2-oidc'; +import { Type } from '@angular/core'; + +export namespace Config { + export interface State { + [key: string]: any; + } + + export interface Environment { + production: boolean; + oAuthConfig: AuthConfig; + apis: Apis; + } + + export interface Apis { + [key: string]: { [key: string]: string }; + } + + export interface Requirements { + layouts: Type[]; + } +} diff --git a/npm/ng-packs/packages/core/src/lib/models/index.ts b/npm/ng-packs/packages/core/src/lib/models/index.ts new file mode 100644 index 00000000000..63302c9ab8b --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/models/index.ts @@ -0,0 +1,6 @@ +export * from './application-configuration'; +export * from './common'; +export * from './config'; +export * from './rest'; +export * from './session'; +export * from './profile'; diff --git a/npm/ng-packs/packages/core/src/lib/models/profile.ts b/npm/ng-packs/packages/core/src/lib/models/profile.ts new file mode 100644 index 00000000000..068a3fad397 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/models/profile.ts @@ -0,0 +1,18 @@ +export namespace Profile { + export interface State { + profile: Response; + } + + export interface Response { + userName: string; + email: string; + name: string; + surname: string; + phoneNumber: string; + } + + export interface ChangePasswordRequest { + currentPassword: string; + newPassword: string; + } +} diff --git a/npm/ng-packs/packages/core/src/lib/models/rest.ts b/npm/ng-packs/packages/core/src/lib/models/rest.ts new file mode 100644 index 00000000000..81e035f0d47 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/models/rest.ts @@ -0,0 +1,40 @@ +import { HttpHeaders, HttpParams } from '@angular/common/http'; + +export namespace Rest { + export interface Config { + throwErr?: boolean; + observe?: Observe; + } + + export const enum Observe { + Body = 'body', + Events = 'events', + Response = 'response', + } + + export const enum ResponseType { + ArrayBuffer = 'arraybuffer', + Blob = 'blob', + JSON = 'json', + Text = 'text', + } + + export interface Request { + body?: T; + headers?: + | HttpHeaders + | { + [header: string]: string | string[]; + }; + method: string; + params?: + | HttpParams + | { + [param: string]: any; + }; + reportProgress?: boolean; + responseType?: ResponseType; + url: string; + withCredentials?: boolean; + } +} diff --git a/npm/ng-packs/packages/core/src/lib/models/session.ts b/npm/ng-packs/packages/core/src/lib/models/session.ts new file mode 100644 index 00000000000..8eba0cb36c0 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/models/session.ts @@ -0,0 +1,8 @@ +import { ABP } from '../models'; + +export namespace Session { + export interface State { + language: string; + tenant: ABP.BasicItem; + } +} diff --git a/npm/ng-packs/packages/core/src/lib/pipes/index.ts b/npm/ng-packs/packages/core/src/lib/pipes/index.ts new file mode 100644 index 00000000000..7bbacf6329b --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/pipes/index.ts @@ -0,0 +1 @@ +export * from './localization.pipe'; diff --git a/npm/ng-packs/packages/core/src/lib/pipes/localization.pipe.ts b/npm/ng-packs/packages/core/src/lib/pipes/localization.pipe.ts new file mode 100644 index 00000000000..7073f6da3aa --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/pipes/localization.pipe.ts @@ -0,0 +1,40 @@ +import { Pipe, PipeTransform, OnDestroy } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { ConfigState } from '../states'; +import { takeUntilDestroy } from '../utils'; +import { distinctUntilChanged } from 'rxjs/operators'; + +@Pipe({ + name: 'abpLocalization', + pure: false, // required to update the value +}) +export class LocalizationPipe implements PipeTransform, OnDestroy { + initialized: boolean = false; + + value: string; + + constructor(private store: Store) {} + + transform(value: string, ...interpolateParams: string[]): string { + if (!this.initialized) { + this.initialized = true; + + this.store + .select( + ConfigState.getCopy( + value, + ...interpolateParams.reduce((acc, val) => (Array.isArray(val) ? [...acc, ...val] : [...acc, val]), []), + ), + ) + .pipe( + takeUntilDestroy(this), + distinctUntilChanged(), + ) + .subscribe(copy => (this.value = copy)); + } + + return this.value; + } + + ngOnDestroy() {} +} diff --git a/npm/ng-packs/packages/core/src/lib/plugins/config.plugin.ts b/npm/ng-packs/packages/core/src/lib/plugins/config.plugin.ts new file mode 100644 index 00000000000..5d4d1ab454a --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/plugins/config.plugin.ts @@ -0,0 +1,93 @@ +import { Inject, Injectable, InjectionToken } from '@angular/core'; +import { Router, Routes } from '@angular/router'; +import { actionMatcher, InitState, NgxsNextPluginFn, NgxsPlugin, setValue, UpdateState } from '@ngxs/store'; +import snq from 'snq'; +import { ABP } from '../models'; +import { organizeRoutes } from '../utils/route-utils'; + +export const NGXS_CONFIG_PLUGIN_OPTIONS = new InjectionToken('NGXS_CONFIG_PLUGIN_OPTIONS'); + +@Injectable() +export class ConfigPlugin implements NgxsPlugin { + private initialized: boolean = false; + + constructor(@Inject(NGXS_CONFIG_PLUGIN_OPTIONS) private options: ABP.Root, private router: Router) {} + + handle(state: any, event: any, next: NgxsNextPluginFn) { + const matches = actionMatcher(event); + const isInitAction = matches(InitState) || matches(UpdateState); + + // const layouts = snq(() => this.options.requirements.layouts.filter(layout => layout instanceof Type), []); + if (isInitAction && !this.initialized) { + let { routes, wrappers } = transformRoutes(this.router.config); + routes = organizeRoutes(routes, wrappers); + + state = setValue(state, 'ConfigState', { + ...(state.ConfigState && { ...state.ConfigState }), + ...this.options, + routes, + }); + + this.initialized = true; + } + + return next(state, event); + } +} + +function transformRoutes(routes: Routes = [], wrappers: ABP.FullRoute[] = []): any { + const abpRoutes: ABP.FullRoute[] = routes + .filter(route => { + return snq(() => route.data.routes.find(r => r.path === route.path), false); + }) + .reduce((acc, val) => [...acc, ...val.data.routes], []); + + wrappers = abpRoutes.filter(ar => ar.wrapper); + const transformed = [] as ABP.FullRoute[]; + routes + .filter(route => (route.data || {}).routes && (route.component || route.loadChildren)) + .forEach(route => { + const abpPackage = abpRoutes.find( + abp => abp.path.toLowerCase() === route.path.toLowerCase() && snq(() => route.data.routes.length, false), + ); + const { length } = transformed; + + if (abpPackage) { + transformed.push(abpPackage); + } + + if (transformed.length === length) { + transformed.push({ + path: route.path, + name: snq(() => route.data.routes.name, route.path), + children: route.data.routes.children || [], + } as ABP.FullRoute); + } + }); + + return { routes: setUrls(transformed), wrappers }; +} + +function setUrls(routes: ABP.FullRoute[], parentUrl?: string): ABP.FullRoute[] { + if (parentUrl) { + // this if block using for only recursive call + + return routes.map(route => ({ + ...route, + url: `${parentUrl}/${route.path}`, + ...(route.children && + route.children.length && { + children: setUrls(route.children, `${parentUrl}/${route.path}`), + }), + })); + } + + return routes.map(route => ({ + ...route, + url: `/${route.path}`, + ...(route.children && + route.children.length && { + children: setUrls(route.children, `/${route.path}`), + }), + })); +} diff --git a/npm/ng-packs/packages/core/src/lib/plugins/index.ts b/npm/ng-packs/packages/core/src/lib/plugins/index.ts new file mode 100644 index 00000000000..42ab2f291ce --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/plugins/index.ts @@ -0,0 +1 @@ +export * from './config.plugin'; diff --git a/npm/ng-packs/packages/core/src/lib/services/application-configuration.service.ts b/npm/ng-packs/packages/core/src/lib/services/application-configuration.service.ts new file mode 100644 index 00000000000..d0a653e1e0f --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/services/application-configuration.service.ts @@ -0,0 +1,20 @@ +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ApplicationConfiguration, Rest } from '../models'; +import { RestService } from './rest.service'; + +@Injectable({ + providedIn: 'root', +}) +export class ApplicationConfigurationService { + constructor(private rest: RestService) {} + + getConfiguration(): Observable { + const request: Rest.Request = { + method: 'GET', + url: '/api/abp/application-configuration', + }; + + return this.rest.request(request); + } +} diff --git a/npm/ng-packs/packages/core/src/lib/services/config.service.ts b/npm/ng-packs/packages/core/src/lib/services/config.service.ts new file mode 100644 index 00000000000..21050f2b796 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/services/config.service.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { ConfigState } from '../states'; + +@Injectable({ + providedIn: 'root', +}) +export class ConfigService { + constructor(private store: Store) {} + + getAll() { + return this.store.selectSnapshot(ConfigState.getAll); + } + + getOne(key: string) { + return this.store.selectSnapshot(ConfigState.getOne(key)); + } + + getDeep(keys: string[] | string) { + return this.store.selectSnapshot(ConfigState.getDeep(keys)); + } + + getSetting(key: string) { + return this.store.selectSnapshot(ConfigState.getSetting(key)); + } +} diff --git a/npm/ng-packs/packages/core/src/lib/services/index.ts b/npm/ng-packs/packages/core/src/lib/services/index.ts new file mode 100644 index 00000000000..8ae05cabaa4 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/services/index.ts @@ -0,0 +1,6 @@ +export * from './application-configuration.service'; +export * from './config.service'; +export * from './lazy-load.service'; +export * from './localization.service'; +export * from './profile.service'; +export * from './rest.service'; diff --git a/npm/ng-packs/packages/core/src/lib/services/lazy-load.service.ts b/npm/ng-packs/packages/core/src/lib/services/lazy-load.service.ts new file mode 100644 index 00000000000..a6e8eb1f5c8 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/services/lazy-load.service.ts @@ -0,0 +1,58 @@ +import { Inject, Injectable } from '@angular/core'; +import { Observable, ReplaySubject } from 'rxjs'; +import { uuid } from '../utils'; + +@Injectable({ + providedIn: 'root', +}) +export class LazyLoadService { + loadedLibraries: { [url: string]: ReplaySubject } = {}; + + load( + url: string, + type: 'script' | 'style', + content: string = '', + targetQuery: string = 'body', + position: InsertPosition = 'afterend', + ): Observable { + if (!url && !content) return; + const key = url ? url.slice(url.lastIndexOf('/') + 1) : uuid(); + + if (this.loadedLibraries[key]) { + return this.loadedLibraries[key].asObservable(); + } + + this.loadedLibraries[key] = new ReplaySubject(); + + let library; + if (type === 'script') { + library = document.createElement('script'); + library.type = 'text/javascript'; + if (url) { + (library as HTMLScriptElement).src = url; + } + + (library as HTMLScriptElement).text = content; + } else if (url) { + library = document.createElement('link'); + library.type = 'text/css'; + (library as HTMLLinkElement).rel = 'stylesheet'; + + if (url) { + (library as HTMLLinkElement).href = url; + } + } else { + library = document.createElement('style'); + (library as HTMLStyleElement).textContent = content; + } + + library.onload = () => { + this.loadedLibraries[key].next(); + this.loadedLibraries[key].complete(); + }; + + document.querySelector(targetQuery).insertAdjacentElement(position, library); + + return this.loadedLibraries[key].asObservable(); + } +} diff --git a/npm/ng-packs/packages/core/src/lib/services/localization.service.ts b/npm/ng-packs/packages/core/src/lib/services/localization.service.ts new file mode 100644 index 00000000000..a86ef532031 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/services/localization.service.ts @@ -0,0 +1,17 @@ +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { ConfigState } from '../states'; +import { Observable } from 'rxjs'; + +@Injectable({ providedIn: 'root' }) +export class LocalizationService { + constructor(private store: Store) {} + + get(keys: string, ...interpolateParams: string[]): Observable { + return this.store.select(ConfigState.getCopy(keys, ...interpolateParams)); + } + + instant(keys: string, ...interpolateParams: string[]): string { + return this.store.selectSnapshot(ConfigState.getCopy(keys, ...interpolateParams)); + } +} diff --git a/npm/ng-packs/packages/core/src/lib/services/profile.service.ts b/npm/ng-packs/packages/core/src/lib/services/profile.service.ts new file mode 100644 index 00000000000..48065619ffe --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/services/profile.service.ts @@ -0,0 +1,40 @@ +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { RestService } from './rest.service'; +import { Profile, Rest } from '../models'; + +@Injectable({ + providedIn: 'root', +}) +export class ProfileService { + constructor(private rest: RestService) {} + + get(): Observable { + const request: Rest.Request = { + method: 'GET', + url: '/api/identity/my-profile', + }; + + return this.rest.request(request); + } + + update(body: Profile.Response): Observable { + const request: Rest.Request = { + method: 'PUT', + url: '/api/identity/my-profile', + body, + }; + + return this.rest.request(request); + } + + changePassword(body: Profile.ChangePasswordRequest, throwErr: boolean = false): Observable { + const request: Rest.Request = { + method: 'POST', + url: '/api/identity/my-profile/change-password', + body, + }; + + return this.rest.request(request, { throwErr }); + } +} diff --git a/npm/ng-packs/packages/core/src/lib/services/rest.service.ts b/npm/ng-packs/packages/core/src/lib/services/rest.service.ts new file mode 100644 index 00000000000..4d003e2daf9 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/services/rest.service.ts @@ -0,0 +1,37 @@ +import { HttpClient, HttpRequest } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { NEVER, Observable, throwError } from 'rxjs'; +import { catchError, take } from 'rxjs/operators'; +import { Rest } from '../models/rest'; +import { ConfigState } from '../states'; +import { RestOccurError } from '../actions'; + +@Injectable({ + providedIn: 'root', +}) +export class RestService { + constructor(private http: HttpClient, private store: Store) {} + + handleError(err: any): Observable { + this.store.dispatch(new RestOccurError(err)); + console.error(err); + return NEVER; + } + + request(request: HttpRequest | Rest.Request, config: Rest.Config = {}, api?: string): Observable { + const { observe = Rest.Observe.Body, throwErr } = config; + const url = api || this.store.selectSnapshot(ConfigState.getApiUrl()) + request.url; + const { method, ...options } = request; + return this.http.request(method, url, { observe, ...options } as any).pipe( + observe === Rest.Observe.Body ? take(1) : null, + catchError(err => { + if (throwErr) { + return throwError(err); + } + + return this.handleError(err); + }), + ); + } +} diff --git a/npm/ng-packs/packages/core/src/lib/states/config.state.ts b/npm/ng-packs/packages/core/src/lib/states/config.state.ts new file mode 100644 index 00000000000..2e14e3edae7 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/states/config.state.ts @@ -0,0 +1,224 @@ +import { State, Selector, createSelector, Action, StateContext, Store } from '@ngxs/store'; +import { Config, ABP } from '../models'; +import { ConfigGetAppConfiguration, PatchRouteByName } from '../actions/config.actions'; +import { ApplicationConfigurationService } from '../services/application-configuration.service'; +import { tap, switchMap } from 'rxjs/operators'; +import snq from 'snq'; +import { SessionSetLanguage } from '../actions'; +import { SessionState } from './session.state'; +import { of } from 'rxjs'; +import { setChildRoute, sortRoutes, organizeRoutes } from '../utils/route-utils'; + +@State({ + name: 'ConfigState', + defaults: {} as Config.State, +}) +export class ConfigState { + @Selector() + static getAll(state: Config.State) { + return state; + } + + static getOne(key: string) { + const selector = createSelector( + [ConfigState], + function(state: Config.State) { + return state[key]; + }, + ); + + return selector; + } + + static getDeep(keys: string[] | string) { + if (typeof keys === 'string') { + keys = keys.split('.'); + } + + if (!Array.isArray(keys)) { + throw new Error('The argument must be a dot string or an string array.'); + } + + const selector = createSelector( + [ConfigState], + function(state: Config.State) { + return (keys as string[]).reduce((acc, val) => { + if (acc) { + return acc[val]; + } + + return undefined; + }, state); + }, + ); + + return selector; + } + + static getApiUrl(key?: string) { + const selector = createSelector( + [ConfigState], + function(state: Config.State): string { + return state.environment.apis[key || 'default'].url; + }, + ); + + return selector; + } + + static getSetting(key: string) { + const selector = createSelector( + [ConfigState], + function(state: Config.State) { + return snq(() => state.setting.values[key]); + }, + ); + + return selector; + } + + static getGrantedPolicy(condition: string = '') { + const keys = condition + .replace(/\(|\)|\!|\s/g, '') + .split(/\|\||&&/) + .filter(key => key); + + const selector = createSelector( + [ConfigState], + function(state: Config.State): boolean { + if (!keys.length) return true; + + const getPolicy = key => snq(() => state.auth.grantedPolicies[key], false); + if (keys.length > 1) { + keys.forEach(key => { + const value = getPolicy(key); + condition = condition.replace(key, value); + }); + + // tslint:disable-next-line: no-eval + return eval(`!!${condition}`); + } + + return getPolicy(condition); + }, + ); + + return selector; + } + + static getCopy(key: string, ...interpolateParams: string[]) { + if (!key) key = ''; + + const keys = key.split('::') as string[]; + const selector = createSelector( + [ConfigState], + function(state: Config.State) { + if (!state.localization) return key; + + const { defaultResourceName } = state.environment.localization; + if (keys[0] === '') { + if (!defaultResourceName) { + throw new Error( + `Please check your environment. May you forget set defaultResourceName? + Here is the example: + { production: false, + localization: { + defaultResourceName: 'MyProjectName' + } + }`, + ); + } + + keys[0] = snq(() => defaultResourceName); + } + + let copy = keys.reduce((acc, val) => { + if (acc) { + return acc[val]; + } + + return undefined; + }, state.localization.values); + + interpolateParams = interpolateParams.filter(params => params != null); + if (copy && interpolateParams && interpolateParams.length) { + interpolateParams.forEach(param => { + copy = copy.replace(/[\'\"]?\{[\d]+\}[\'\"]?/, param); + }); + } + + return copy || key; + }, + ); + + return selector; + } + + constructor(private appConfigurationService: ApplicationConfigurationService, private store: Store) {} + + @Action(ConfigGetAppConfiguration) + addData({ patchState, dispatch }: StateContext) { + return this.appConfigurationService.getConfiguration().pipe( + tap(configuration => + patchState({ + ...configuration, + }), + ), + switchMap(configuration => + this.store.selectSnapshot(SessionState.getLanguage) + ? of(null) + : dispatch( + new SessionSetLanguage(snq(() => configuration.setting.values['Abp.Localization.DefaultLanguage'])), + ), + ), + ); + } + + @Action(PatchRouteByName) + patchRoute({ patchState, getState }: StateContext, { name, newValue }: PatchRouteByName) { + let routes: ABP.FullRoute[] = getState().routes; + + const index = routes.findIndex(route => route.name === name); + + routes = patchRouteDeep(routes, name, newValue); + + return patchState({ + routes, + }); + } +} + +function patchRouteDeep( + routes: ABP.FullRoute[], + name: string, + newValue: Partial, + parentUrl: string = null, +): ABP.FullRoute[] { + routes = routes.map(route => { + if (route.name === name) { + if (newValue.path) { + newValue.url = `${parentUrl}/${newValue.path}`; + } + + if (newValue.children && newValue.children.length) { + newValue.children = newValue.children.map(child => ({ + ...child, + url: `${parentUrl}/${route.path}/${child.path}`, + })); + } + + return { ...route, ...newValue }; + } else if (route.children && route.children.length) { + route.children = patchRouteDeep(route.children, name, newValue, (parentUrl || '/') + route.path); + } + + return route; + }); + + if (parentUrl) { + // recursive block + return routes; + } + + return organizeRoutes(routes); +} diff --git a/npm/ng-packs/packages/core/src/lib/states/index.ts b/npm/ng-packs/packages/core/src/lib/states/index.ts new file mode 100644 index 00000000000..b7626c28427 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/states/index.ts @@ -0,0 +1,3 @@ +export * from './profile.state'; +export * from './config.state'; +export * from './session.state'; diff --git a/npm/ng-packs/packages/core/src/lib/states/profile.state.ts b/npm/ng-packs/packages/core/src/lib/states/profile.state.ts new file mode 100644 index 00000000000..d162c19032c --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/states/profile.state.ts @@ -0,0 +1,45 @@ +import { State, Action, StateContext, Selector } from '@ngxs/store'; +import { ProfileGet, ProfileChangePassword, ProfileUpdate } from '../actions/profile.actions'; +import { Profile } from '../models/profile'; +import { ProfileService } from '../services/profile.service'; +import { tap } from 'rxjs/operators'; + +@State({ + name: 'ProfileState', + defaults: {} as Profile.State, +}) +export class ProfileState { + @Selector() + static getProfile({ profile }: Profile.State): Profile.Response { + return profile; + } + + constructor(private profileService: ProfileService) {} + + @Action(ProfileGet) + profileGet({ patchState }: StateContext) { + return this.profileService.get().pipe( + tap(profile => + patchState({ + profile, + }), + ), + ); + } + + @Action(ProfileUpdate) + profileUpdate({ patchState }: StateContext, { payload }: ProfileUpdate) { + return this.profileService.update(payload).pipe( + tap(profile => + patchState({ + profile, + }), + ), + ); + } + + @Action(ProfileChangePassword) + changePassword(_, { payload }: ProfileChangePassword) { + return this.profileService.changePassword(payload, true); + } +} diff --git a/npm/ng-packs/packages/core/src/lib/states/session.state.ts b/npm/ng-packs/packages/core/src/lib/states/session.state.ts new file mode 100644 index 00000000000..f009f7a574e --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/states/session.state.ts @@ -0,0 +1,35 @@ +import { Action, Selector, State, StateContext } from '@ngxs/store'; +import { SessionSetLanguage, SessionSetTenant } from '../actions/session.actions'; +import { ABP, Session } from '../models'; + +@State({ + name: 'SessionState', + defaults: {} as Session.State, +}) +export class SessionState { + @Selector() + static getLanguage({ language }: Session.State): string { + return language; + } + + @Selector() + static getTenant({ tenant }: Session.State): ABP.BasicItem { + return tenant; + } + + constructor() {} + + @Action(SessionSetLanguage) + sessionSetLanguage({ patchState }: StateContext, { payload }: SessionSetLanguage) { + patchState({ + language: payload, + }); + } + + @Action(SessionSetTenant) + sessionSetTenantId({ patchState }: StateContext, { payload }: SessionSetTenant) { + patchState({ + tenant: payload, + }); + } +} diff --git a/npm/ng-packs/packages/core/src/lib/tokens/common.token.ts b/npm/ng-packs/packages/core/src/lib/tokens/common.token.ts new file mode 100644 index 00000000000..28f16aaee22 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/tokens/common.token.ts @@ -0,0 +1,18 @@ +import { InjectionToken } from '@angular/core'; +import { Config } from '../models'; + +export function environmentFactory(environment: Config.Environment) { + return { + ...environment, + }; +} + +export function configFactory(config: Config.Requirements) { + return { + ...config, + }; +} + +export const ENVIRONMENT = new InjectionToken('ENVIRONMENT'); + +export const CONFIG = new InjectionToken('CONFIG'); diff --git a/npm/ng-packs/packages/core/src/lib/tokens/index.ts b/npm/ng-packs/packages/core/src/lib/tokens/index.ts new file mode 100644 index 00000000000..1472bbfee9f --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/tokens/index.ts @@ -0,0 +1 @@ +export * from './common.token'; diff --git a/npm/ng-packs/packages/core/src/lib/utils/generator-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/generator-utils.ts new file mode 100644 index 00000000000..4e6bf5e09cd --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/utils/generator-utils.ts @@ -0,0 +1,5 @@ +export function uuid(a?: any): string { + return a + ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16) + : ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid); +} diff --git a/npm/ng-packs/packages/core/src/lib/utils/index.ts b/npm/ng-packs/packages/core/src/lib/utils/index.ts new file mode 100644 index 00000000000..e2a72ebd3f5 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/utils/index.ts @@ -0,0 +1,4 @@ +export * from './generator-utils'; +export * from './initial-utils'; +export * from './route-utils'; +export * from './rxjs-utils'; diff --git a/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts new file mode 100644 index 00000000000..dc1e403612d --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts @@ -0,0 +1,13 @@ +import { Injector } from '@angular/core'; +import { Store } from '@ngxs/store'; +import { ConfigGetAppConfiguration } from '../actions/config.actions'; + +export function getInitialData(injector: Injector) { + const fn = function() { + const store: Store = injector.get(Store); + + return store.dispatch(new ConfigGetAppConfiguration()).toPromise(); + }; + + return fn; +} diff --git a/npm/ng-packs/packages/core/src/lib/utils/route-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/route-utils.ts new file mode 100644 index 00000000000..2199fa1df68 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/utils/route-utils.ts @@ -0,0 +1,62 @@ +import { ABP } from '../models'; + +export function organizeRoutes( + routes: ABP.FullRoute[], + wrappers: ABP.FullRoute[] = [], + parentNameArr = [] as ABP.FullRoute[], + parentName: string = null, +): ABP.FullRoute[] { + const filter = route => { + if (route.children && route.children.length) { + route.children = organizeRoutes(route.children, wrappers, parentNameArr, route.name); + } + + if (route.parentName && route.parentName !== parentName) { + parentNameArr.push(route); + return false; + } + + return true; + }; + + if (parentName) { + // recursive block + return routes.filter(filter); + } + + const filteredRoutes = routes.filter(filter); + + if (parentNameArr.length) { + return sortRoutes(setChildRoute([...filteredRoutes, ...wrappers], parentNameArr)); + } + + return filteredRoutes; +} + +export function setChildRoute(routes: ABP.FullRoute[], parentNameArr: ABP.FullRoute[]): ABP.FullRoute[] { + return routes.map(route => { + if (route.children && route.children.length) { + route.children = setChildRoute(route.children, parentNameArr); + } + + const foundedChildren = parentNameArr.filter(parent => parent.parentName === route.name); + if (foundedChildren && foundedChildren.length) { + route.children = [...(route.children || []), ...foundedChildren]; + } + + return route; + }); +} + +export function sortRoutes(routes: ABP.FullRoute[] = []): ABP.FullRoute[] { + if (!routes.length) return []; + return routes + .sort((a, b) => a.order - b.order) + .map(route => { + if (route.children && route.children.length) { + route.children = sortRoutes(route.children); + } + + return route; + }); +} diff --git a/npm/ng-packs/packages/core/src/lib/utils/rxjs-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/rxjs-utils.ts new file mode 100644 index 00000000000..533e4cc30d9 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/utils/rxjs-utils.ts @@ -0,0 +1,27 @@ +import { Observable, Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +function isFunction(value) { + return typeof value === 'function'; +} + +export const takeUntilDestroy = (componentInstance, destroyMethodName = 'ngOnDestroy') => ( + source: Observable, +) => { + const originalDestroy = componentInstance[destroyMethodName]; + if (isFunction(originalDestroy) === false) { + throw new Error( + `${componentInstance.constructor.name} is using untilDestroyed but doesn't implement ${destroyMethodName}`, + ); + } + if (!componentInstance['__takeUntilDestroy']) { + componentInstance['__takeUntilDestroy'] = new Subject(); + + componentInstance[destroyMethodName] = function() { + isFunction(originalDestroy) && originalDestroy.apply(this, arguments); + componentInstance['__takeUntilDestroy'].next(true); + componentInstance['__takeUntilDestroy'].complete(); + }; + } + return source.pipe(takeUntil(componentInstance['__takeUntilDestroy'])); +}; diff --git a/npm/ng-packs/packages/core/src/public-api.ts b/npm/ng-packs/packages/core/src/public-api.ts new file mode 100644 index 00000000000..b10edcbbc9b --- /dev/null +++ b/npm/ng-packs/packages/core/src/public-api.ts @@ -0,0 +1,20 @@ +/* + * Public API Surface of core + */ + +// export * from './lib/handlers'; +export * from './lib/actions'; +export * from './lib/components'; +// export * from './lib/constants'; +export * from './lib/directives'; +export * from './lib/enums'; +export * from './lib/guards'; +export * from './lib/interceptors'; +export * from './lib/models'; +export * from './lib/plugins'; +export * from './lib/services'; +export * from './lib/states'; +export * from './lib/tokens'; +export * from './lib/utils'; + +export * from './lib/core.module'; diff --git a/npm/ng-packs/packages/core/src/test.ts b/npm/ng-packs/packages/core/src/test.ts new file mode 100644 index 00000000000..978c64fb83f --- /dev/null +++ b/npm/ng-packs/packages/core/src/test.ts @@ -0,0 +1,21 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/npm/ng-packs/packages/core/tsconfig.lib.json b/npm/ng-packs/packages/core/tsconfig.lib.json new file mode 100644 index 00000000000..2972099ba19 --- /dev/null +++ b/npm/ng-packs/packages/core/tsconfig.lib.json @@ -0,0 +1,20 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": ["dom", "es2018"] + }, + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true, + "enableResourceInlining": true + }, + "exclude": ["src/test.ts", "**/*.spec.ts"] +} diff --git a/npm/ng-packs/packages/core/tsconfig.spec.json b/npm/ng-packs/packages/core/tsconfig.spec.json new file mode 100644 index 00000000000..16da33db072 --- /dev/null +++ b/npm/ng-packs/packages/core/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/npm/ng-packs/packages/core/tslint.json b/npm/ng-packs/packages/core/tslint.json new file mode 100644 index 00000000000..8c3919ea624 --- /dev/null +++ b/npm/ng-packs/packages/core/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "abp", + "camelCase" + ], + "component-selector": [ + true, + "element", + "abp", + "kebab-case" + ] + } +} diff --git a/npm/ng-packs/packages/identity/README.md b/npm/ng-packs/packages/identity/README.md new file mode 100644 index 00000000000..7d4c7a28146 --- /dev/null +++ b/npm/ng-packs/packages/identity/README.md @@ -0,0 +1 @@ +

    @abp/ng.identity

    diff --git a/npm/ng-packs/packages/identity/karma.conf.js b/npm/ng-packs/packages/identity/karma.conf.js new file mode 100644 index 00000000000..96fe6c92930 --- /dev/null +++ b/npm/ng-packs/packages/identity/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/identity'), + reports: ['html', 'lcovonly'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/npm/ng-packs/packages/identity/ng-package.json b/npm/ng-packs/packages/identity/ng-package.json new file mode 100644 index 00000000000..aa178ed0d55 --- /dev/null +++ b/npm/ng-packs/packages/identity/ng-package.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/identity", + "lib": { + "entryFile": "src/public-api.ts" + }, + "whitelistedNonPeerDependencies": ["@abp/ng.theme.shared", "@abp/ng.permission-management"] +} diff --git a/npm/ng-packs/packages/identity/package.json b/npm/ng-packs/packages/identity/package.json new file mode 100644 index 00000000000..e2ddca1de42 --- /dev/null +++ b/npm/ng-packs/packages/identity/package.json @@ -0,0 +1,10 @@ +{ + "name": "@abp/ng.identity", + "version": "0.8.0", + "dependencies": { + "@abp/ng.permission-management": "^0.8.0" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/npm/ng-packs/packages/identity/src/lib/actions/identity.actions.ts b/npm/ng-packs/packages/identity/src/lib/actions/identity.actions.ts new file mode 100644 index 00000000000..03a99aab83a --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/actions/identity.actions.ts @@ -0,0 +1,57 @@ +import { Identity } from '../models/identity'; +import { ABP } from '@abp/ng.core'; + +export class IdentityGetRoles { + static readonly type = '[Identity] Get Roles'; + constructor(public payload?: ABP.PageQueryParams) {} +} + +export class IdentityGetRoleById { + static readonly type = '[Identity] Get Role By Id'; + constructor(public payload: string) {} +} + +export class IdentityDeleteRole { + static readonly type = '[Identity] Delete Role'; + constructor(public payload: string) {} +} + +export class IdentityAddRole { + static readonly type = '[Identity] Add Role'; + constructor(public payload: Identity.RoleSaveRequest) {} +} + +export class IdentityUpdateRole { + static readonly type = '[Identity] Update Role'; + constructor(public payload: Identity.RoleItem) {} +} + +export class IdentityGetUsers { + static readonly type = '[Identity] Get Users'; + constructor(public payload?: ABP.PageQueryParams) {} +} + +export class IdentityGetUserById { + static readonly type = '[Identity] Get User By Id'; + constructor(public payload: string) {} +} + +export class IdentityDeleteUser { + static readonly type = '[Identity] Delete User'; + constructor(public payload: string) {} +} + +export class IdentityAddUser { + static readonly type = '[Identity] Add User'; + constructor(public payload: Identity.UserSaveRequest) {} +} + +export class IdentityUpdateUser { + static readonly type = '[Identity] Update User'; + constructor(public payload: Identity.UserSaveRequest & { id: string }) {} +} + +export class IdentityGetUserRoles { + static readonly type = '[Identity] Get User Roles'; + constructor(public payload: string) {} +} diff --git a/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.html b/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.html new file mode 100644 index 00000000000..546a768006a --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.html @@ -0,0 +1,117 @@ +
    +
    +
    +
    +
    {{ 'AbpIdentity::Roles' | abpLocalization }}
    +
    +
    + +
    +
    +
    +
    +
    + +
    + + + + {{ 'AbpIdentity::Actions' | abpLocalization }} + {{ 'AbpIdentity::RoleName' | abpLocalization }} + + + + + +
    + +
    + + + +
    +
    + + {{ data.name }} + +
    +
    +
    +
    + + + +

    {{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}

    +
    + + +
    +
    + * + +
    + +
    + + +
    + +
    + + +
    +
    +
    + + + + {{ 'AbpIdentity::Save' | abpLocalization }} + +
    + + diff --git a/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts b/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts new file mode 100644 index 00000000000..06594d80914 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts @@ -0,0 +1,123 @@ +import { ABP } from '@abp/ng.core'; +import { ConfirmationService, Toaster } from '@abp/ng.theme.shared'; +import { Component, TemplateRef, ViewChild } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { Select, Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { debounceTime, finalize, pluck } from 'rxjs/operators'; +import { + IdentityAddRole, + IdentityDeleteRole, + IdentityGetRoleById, + IdentityGetRoles, + IdentityUpdateRole, +} from '../../actions/identity.actions'; +import { Identity } from '../../models/identity'; +import { IdentityState } from '../../states/identity.state'; + +@Component({ + selector: 'abp-roles', + templateUrl: './roles.component.html', +}) +export class RolesComponent { + @Select(IdentityState.getRoles) + data$: Observable; + + @Select(IdentityState.getRolesTotalCount) + totalCount$: Observable; + + form: FormGroup; + + selected: Identity.RoleItem; + + isModalVisible: boolean; + + visiblePermissions: boolean = false; + + providerKey: string; + + pageQuery: ABP.PageQueryParams = { + sorting: 'name', + }; + + loading: boolean = false; + + @ViewChild('modalContent', { static: false }) + modalContent: TemplateRef; + + constructor(private confirmationService: ConfirmationService, private fb: FormBuilder, private store: Store) {} + + onSearch(value) { + this.pageQuery.filter = value; + this.get(); + } + + createForm() { + this.form = this.fb.group({ + name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]], + isDefault: [this.selected.isDefault || false], + isPublic: [this.selected.isPublic || false], + }); + } + + openModal() { + this.createForm(); + this.isModalVisible = true; + } + + onAdd() { + this.selected = {} as Identity.RoleItem; + this.openModal(); + } + + onEdit(id: string) { + this.store + .dispatch(new IdentityGetRoleById(id)) + .pipe(pluck('IdentityState', 'selectedRole')) + .subscribe(selectedRole => { + this.selected = selectedRole; + this.openModal(); + }); + } + + save() { + if (!this.form.valid) return; + + this.store + .dispatch( + this.selected.id + ? new IdentityUpdateRole({ ...this.form.value, id: this.selected.id }) + : new IdentityAddRole(this.form.value), + ) + .subscribe(() => { + this.isModalVisible = false; + }); + } + + delete(id: string, name: string) { + this.confirmationService + .warn('AbpIdentity::RoleDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', { + messageLocalizationParams: [name], + }) + .subscribe((status: Toaster.Status) => { + if (status === Toaster.Status.confirm) { + this.store.dispatch(new IdentityDeleteRole(id)); + } + }); + } + + onPageChange(data) { + this.pageQuery.skipCount = data.first; + this.pageQuery.maxResultCount = data.rows; + + this.get(); + } + + get() { + this.loading = true; + this.store + .dispatch(new IdentityGetRoles(this.pageQuery)) + .pipe(finalize(() => (this.loading = false))) + .subscribe(); + } +} diff --git a/npm/ng-packs/packages/identity/src/lib/components/users/users.component.html b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.html new file mode 100644 index 00000000000..03f5dcb605f --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.html @@ -0,0 +1,200 @@ +
    +
    +
    +
    +
    {{ 'AbpIdentity::Users' | abpLocalization }}
    +
    +
    + +
    +
    +
    +
    +
    + +
    + + + + {{ 'AbpIdentity::Actions' | abpLocalization }} + {{ 'AbpIdentity::UserName' | abpLocalization }} + {{ 'AbpIdentity::EmailAddress' | abpLocalization }} + {{ 'AbpIdentity::PhoneNumber' | abpLocalization }} + + + + + +
    + +
    + + + +
    +
    + + {{ data.userName }} + {{ data.email }} + {{ data.phoneNumber }} + +
    +
    +
    +
    + + + +

    {{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}

    +
    + + + +
    + + + +
    +
    + * + +
    + +
    + + +
    + +
    + + +
    + +
    + * + +
    + +
    + * + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    + + + + {{ 'AbpIdentity::Save' | abpLocalization }} + +
    + + diff --git a/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts new file mode 100644 index 00000000000..337bf94abe4 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts @@ -0,0 +1,167 @@ +import { ABP } from '@abp/ng.core'; +import { ConfirmationService, Toaster } from '@abp/ng.theme.shared'; +import { Component, TemplateRef, TrackByFunction, ViewChild } from '@angular/core'; +import { AbstractControl, FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { Select, Store } from '@ngxs/store'; +import { combineLatest, Observable } from 'rxjs'; +import { filter, finalize, map, pluck, take } from 'rxjs/operators'; +import snq from 'snq'; +import { + IdentityAddUser, + IdentityDeleteUser, + IdentityGetUserById, + IdentityGetUserRoles, + IdentityGetUsers, + IdentityUpdateUser, +} from '../../actions/identity.actions'; +import { Identity } from '../../models/identity'; +import { IdentityState } from '../../states/identity.state'; +@Component({ + selector: 'abp-users', + templateUrl: './users.component.html', +}) +export class UsersComponent { + @Select(IdentityState.getUsers) + data$: Observable; + + @Select(IdentityState.getUsersTotalCount) + totalCount$: Observable; + + @ViewChild('modalContent', { static: false }) + modalContent: TemplateRef; + + form: FormGroup; + + selected: Identity.UserItem; + + selectedUserRoles: Identity.RoleItem[]; + + roles: Identity.RoleItem[]; + + visiblePermissions: boolean = false; + + providerKey: string; + + pageQuery: ABP.PageQueryParams = { + sorting: 'userName', + }; + + isModalVisible: boolean; + + loading: boolean = false; + + trackByFn: TrackByFunction = (index, item) => Object.keys(item)[0] || index; + + get roleGroups(): FormGroup[] { + return snq(() => (this.form.get('roleNames') as FormArray).controls as FormGroup[], []); + } + + constructor(private confirmationService: ConfirmationService, private fb: FormBuilder, private store: Store) {} + + onSearch(value) { + this.pageQuery.filter = value; + this.get(); + } + + buildForm() { + this.roles = this.store.selectSnapshot(IdentityState.getRoles); + + this.form = this.fb.group({ + password: ['', [Validators.required, Validators.maxLength(32)]], + userName: [this.selected.userName || '', [Validators.required, Validators.maxLength(256)]], + email: [this.selected.email || '', [Validators.required, Validators.email, Validators.maxLength(256)]], + name: [this.selected.name || '', [Validators.maxLength(64)]], + surname: [this.selected.surname || '', [Validators.maxLength(64)]], + phoneNumber: [this.selected.phoneNumber || '', [Validators.maxLength(16)]], + lockoutEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)], + twoFactorEnabled: [this.selected.twoFactorEnabled || (this.selected.id ? false : true)], + roleNames: this.fb.array( + this.roles.map(role => + this.fb.group({ + [role.name]: [!!snq(() => this.selectedUserRoles.find(userRole => userRole.id === role.id))], + }), + ), + ), + }); + } + + openModal() { + this.buildForm(); + this.isModalVisible = true; + } + + onAdd() { + this.selected = {} as Identity.UserItem; + this.selectedUserRoles = [] as Identity.RoleItem[]; + this.openModal(); + } + + onEdit(id: string) { + combineLatest([this.store.dispatch(new IdentityGetUserById(id)), this.store.dispatch(new IdentityGetUserRoles(id))]) + .pipe( + filter(([res1, res2]) => res1 && res2), + map(([state, _]) => state), + pluck('IdentityState'), + take(1), + ) + .subscribe((state: Identity.State) => { + this.selected = state.selectedUser; + this.selectedUserRoles = state.selectedUserRoles; + this.openModal(); + }); + } + + save() { + if (!this.form.valid) return; + + const { roleNames } = this.form.value; + const mappedRoleNames = snq( + () => roleNames.filter(role => !!role[Object.keys(role)[0]]).map(role => Object.keys(role)[0]), + [], + ); + + this.store + .dispatch( + this.selected.id + ? new IdentityUpdateUser({ + ...this.form.value, + id: this.selected.id, + roleNames: mappedRoleNames, + }) + : new IdentityAddUser({ + ...this.form.value, + roleNames: mappedRoleNames, + }), + ) + .subscribe(() => { + this.isModalVisible = false; + }); + } + + delete(id: string, userName: string) { + this.confirmationService + .warn('AbpIdentity::UserDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', { + messageLocalizationParams: [userName], + }) + .subscribe((status: Toaster.Status) => { + if (status === Toaster.Status.confirm) { + this.store.dispatch(new IdentityDeleteUser(id)); + } + }); + } + + onPageChange(data) { + this.pageQuery.skipCount = data.first; + this.pageQuery.maxResultCount = data.rows; + + this.get(); + } + + get() { + this.loading = true; + this.store + .dispatch(new IdentityGetUsers(this.pageQuery)) + .pipe(finalize(() => (this.loading = false))) + .subscribe(); + } +} diff --git a/npm/ng-packs/packages/identity/src/lib/constants/routes.ts b/npm/ng-packs/packages/identity/src/lib/constants/routes.ts new file mode 100644 index 00000000000..f8dbcc88df2 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/constants/routes.ts @@ -0,0 +1,22 @@ +import { eLayoutType, ABP } from '@abp/ng.core'; + +export const IDENTITY_ROUTES = [ + { + name: 'AbpUiNavigation::Menu:Administration', + path: '', + order: 1, + wrapper: true, + }, + { + name: 'AbpIdentity::Menu:IdentityManagement', + path: 'identity', + order: 1, + parentName: 'AbpUiNavigation::Menu:Administration', + layout: eLayoutType.application, + iconClass: 'fa fa-id-card-o', + children: [ + { path: 'roles', name: 'AbpIdentity::Roles', order: 2, requiredPolicy: 'AbpIdentity.Roles' }, + { path: 'users', name: 'AbpIdentity::Users', order: 1, requiredPolicy: 'AbpIdentity.Users' }, + ], + }, +] as ABP.FullRoute[]; diff --git a/npm/ng-packs/packages/identity/src/lib/identity-routing.module.ts b/npm/ng-packs/packages/identity/src/lib/identity-routing.module.ts new file mode 100644 index 00000000000..fbbecffc9b0 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/identity-routing.module.ts @@ -0,0 +1,38 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { RolesComponent } from './components/roles/roles.component'; +import { RoleResolver } from './resolvers/roles.resolver'; +import { DynamicLayoutComponent, AuthGuard, PermissionGuard } from '@abp/ng.core'; +import { UsersComponent } from './components/users/users.component'; +import { UserResolver } from './resolvers/users.resolver'; + +const routes: Routes = [ + { path: '', redirectTo: 'roles', pathMatch: 'full' }, + { + path: 'roles', + component: DynamicLayoutComponent, + canActivate: [AuthGuard, PermissionGuard], + data: { requiredPolicy: 'AbpIdentity.Roles' }, + children: [{ path: '', component: RolesComponent, resolve: [RoleResolver] }], + }, + { + path: 'users', + component: DynamicLayoutComponent, + canActivate: [AuthGuard, PermissionGuard], + data: { requiredPolicy: 'AbpIdentity.Users' }, + children: [ + { + path: '', + component: UsersComponent, + resolve: [RoleResolver, UserResolver], + }, + ], + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], + providers: [RoleResolver, UserResolver], +}) +export class IdentityRoutingModule {} diff --git a/npm/ng-packs/packages/identity/src/lib/identity.module.ts b/npm/ng-packs/packages/identity/src/lib/identity.module.ts new file mode 100644 index 00000000000..baac608c6e1 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/identity.module.ts @@ -0,0 +1,30 @@ +import { CoreModule } from '@abp/ng.core'; +import { NgModule } from '@angular/core'; +import { NgxsModule } from '@ngxs/store'; +import { RolesComponent } from './components/roles/roles.component'; +import { IdentityRoutingModule } from './identity-routing.module'; +import { IdentityState } from './states/identity.state'; +import { NgbTabsetModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { UsersComponent } from './components/users/users.component'; +import { PermissionManagementModule } from '@abp/ng.permission-management'; +import { TableModule } from 'primeng/table'; +import { NgxValidateCoreModule } from '@ngx-validate/core'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; + +@NgModule({ + declarations: [RolesComponent, UsersComponent], + imports: [ + NgxsModule.forFeature([IdentityState]), + CoreModule, + IdentityRoutingModule, + NgbTabsetModule, + ThemeSharedModule, + TableModule, + NgbDropdownModule, + PermissionManagementModule, + NgxValidateCoreModule, + PerfectScrollbarModule, + ], +}) +export class IdentityModule {} diff --git a/npm/ng-packs/packages/identity/src/lib/models/identity.ts b/npm/ng-packs/packages/identity/src/lib/models/identity.ts new file mode 100644 index 00000000000..b296eda95f3 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/models/identity.ts @@ -0,0 +1,51 @@ +import { ABP } from '@abp/ng.core'; + +export namespace Identity { + export interface State { + roles: RoleResponse; + users: UserResponse; + selectedRole: RoleItem; + selectedUser: UserItem; + selectedUserRoles: RoleItem[]; + } + + export type RoleResponse = ABP.PagedResponse; + + export interface RoleSaveRequest { + name: string; + isDefault: boolean; + isPublic: boolean; + } + + export interface RoleItem extends RoleSaveRequest { + isStatic: boolean; + concurrencyStamp: string; + id: string; + } + + export type UserResponse = ABP.PagedResponse; + + export interface UserItem extends User { + tenantId: string; + emailConfirmed: boolean; + phoneNumberConfirmed: boolean; + isLockedOut: boolean; + concurrencyStamp: string; + id: string; + } + + export interface User { + userName: string; + name: string; + surname: string; + email: string; + phoneNumber: string; + twoFactorEnabled: true; + lockoutEnabled: true; + } + + export interface UserSaveRequest extends User { + password: string; + roleNames: string[]; + } +} diff --git a/npm/ng-packs/packages/identity/src/lib/resolvers/roles.resolver.ts b/npm/ng-packs/packages/identity/src/lib/resolvers/roles.resolver.ts new file mode 100644 index 00000000000..1d9416d28cc --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/resolvers/roles.resolver.ts @@ -0,0 +1,16 @@ +import { Injectable } from '@angular/core'; +import { Resolve } from '@angular/router'; +import { Store } from '@ngxs/store'; +import { IdentityGetRoles } from '../actions/identity.actions'; +import { Identity } from '../models/identity'; +import { IdentityState } from '../states/identity.state'; + +@Injectable() +export class RoleResolver implements Resolve { + constructor(private store: Store) {} + + resolve() { + const roles = this.store.selectSnapshot(IdentityState.getRoles); + return roles && roles.length ? null : this.store.dispatch(new IdentityGetRoles()); + } +} diff --git a/npm/ng-packs/packages/identity/src/lib/resolvers/users.resolver.ts b/npm/ng-packs/packages/identity/src/lib/resolvers/users.resolver.ts new file mode 100644 index 00000000000..3dc7a393722 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/resolvers/users.resolver.ts @@ -0,0 +1,16 @@ +import { Injectable } from '@angular/core'; +import { Resolve } from '@angular/router'; +import { Store } from '@ngxs/store'; +import { IdentityGetUsers } from '../actions/identity.actions'; +import { Identity } from '../models/identity'; +import { IdentityState } from '../states/identity.state'; + +@Injectable() +export class UserResolver implements Resolve { + constructor(private store: Store) {} + + resolve() { + const users = this.store.selectSnapshot(IdentityState.getUsers); + return users && users.length ? null : this.store.dispatch(new IdentityGetUsers()); + } +} diff --git a/npm/ng-packs/packages/identity/src/lib/services/identity.service.ts b/npm/ng-packs/packages/identity/src/lib/services/identity.service.ts new file mode 100644 index 00000000000..78292fd02a8 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/services/identity.service.ts @@ -0,0 +1,122 @@ +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { RestService, Rest, ABP } from '@abp/ng.core'; +import { Identity } from '../models/identity'; + +@Injectable({ + providedIn: 'root', +}) +export class IdentityService { + constructor(private rest: RestService) {} + + getRoles(params = {} as ABP.PageQueryParams): Observable { + const request: Rest.Request = { + method: 'GET', + url: '/api/identity/roles', + params, + }; + + return this.rest.request(request); + } + + getRoleById(id: string): Observable { + const request: Rest.Request = { + method: 'GET', + url: `/api/identity/roles/${id}`, + }; + + return this.rest.request(request); + } + + deleteRole(id: string): Observable { + const request: Rest.Request = { + method: 'DELETE', + url: `/api/identity/roles/${id}`, + }; + + return this.rest.request(request); + } + + addRole(body: Identity.RoleSaveRequest): Observable { + const request: Rest.Request = { + method: 'POST', + url: '/api/identity/roles', + body, + }; + + return this.rest.request(request); + } + + updateRole(body: Identity.RoleItem): Observable { + const url = `/api/identity/roles/${body.id}`; + delete body.id; + + const request: Rest.Request = { + method: 'PUT', + url, + body, + }; + + return this.rest.request(request); + } + + getUsers(params = {} as ABP.PageQueryParams): Observable { + const request: Rest.Request = { + method: 'GET', + url: '/api/identity/users', + params, + }; + + return this.rest.request(request); + } + + getUserById(id: string): Observable { + const request: Rest.Request = { + method: 'GET', + url: `/api/identity/users/${id}`, + }; + + return this.rest.request(request); + } + + getUserRoles(id: string): Observable { + const request: Rest.Request = { + method: 'GET', + url: `/api/identity/users/${id}/roles`, + }; + + return this.rest.request(request); + } + + deleteUser(id: string): Observable { + const request: Rest.Request = { + method: 'DELETE', + url: `/api/identity/users/${id}`, + }; + + return this.rest.request(request); + } + + addUser(body: Identity.UserSaveRequest): Observable { + const request: Rest.Request = { + method: 'POST', + url: '/api/identity/users', + body, + }; + + return this.rest.request(request); + } + + updateUser(body: Identity.UserItem): Observable { + const url = `/api/identity/users/${body.id}`; + delete body.id; + + const request: Rest.Request = { + method: 'PUT', + url, + body, + }; + + return this.rest.request(request); + } +} diff --git a/npm/ng-packs/packages/identity/src/lib/states/identity.state.ts b/npm/ng-packs/packages/identity/src/lib/states/identity.state.ts new file mode 100644 index 00000000000..33b7d5cafe0 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/states/identity.state.ts @@ -0,0 +1,137 @@ +import { Action, Selector, State, StateContext } from '@ngxs/store'; +import { switchMap, tap, pluck } from 'rxjs/operators'; +import { + IdentityAddRole, + IdentityAddUser, + IdentityDeleteRole, + IdentityDeleteUser, + IdentityGetRoleById, + IdentityGetRoles, + IdentityGetUserById, + IdentityGetUsers, + IdentityUpdateRole, + IdentityUpdateUser, + IdentityGetUserRoles, +} from '../actions/identity.actions'; +import { Identity } from '../models/identity'; +import { IdentityService } from '../services/identity.service'; + +@State({ + name: 'IdentityState', + defaults: { roles: {}, selectedRole: {}, users: {}, selectedUser: {} } as Identity.State, +}) +export class IdentityState { + @Selector() + static getRoles({ roles }: Identity.State): Identity.RoleItem[] { + return roles.items; + } + + @Selector() + static getRolesTotalCount({ roles }: Identity.State): number { + return roles.totalCount; + } + + @Selector() + static getUsers({ users }: Identity.State): Identity.UserItem[] { + return users.items; + } + + @Selector() + static getUsersTotalCount({ users }: Identity.State): number { + return users.totalCount; + } + + constructor(private identityService: IdentityService) {} + + @Action(IdentityGetRoles) + getRoles({ patchState }: StateContext, { payload }: IdentityGetRoles) { + return this.identityService.getRoles(payload).pipe( + tap(roles => + patchState({ + roles, + }), + ), + ); + } + + @Action(IdentityGetRoleById) + getRole({ patchState }: StateContext, { payload }: IdentityGetRoleById) { + return this.identityService.getRoleById(payload).pipe( + tap(selectedRole => + patchState({ + selectedRole, + }), + ), + ); + } + + @Action(IdentityDeleteRole) + deleteRole({ dispatch }: StateContext, { payload }: IdentityGetRoleById) { + return this.identityService.deleteRole(payload).pipe(switchMap(() => dispatch(new IdentityGetRoles()))); + } + + @Action(IdentityAddRole) + addRole({ dispatch }: StateContext, { payload }: IdentityAddRole) { + return this.identityService.addRole(payload).pipe(switchMap(() => dispatch(new IdentityGetRoles()))); + } + + @Action(IdentityUpdateRole) + updateRole({ getState, dispatch }: StateContext, { payload }: IdentityUpdateRole) { + return dispatch(new IdentityGetRoleById(payload.id)).pipe( + switchMap(() => this.identityService.updateRole({ ...getState().selectedRole, ...payload })), + switchMap(() => dispatch(new IdentityGetRoles())), + ); + } + + @Action(IdentityGetUsers) + getUsers({ patchState }: StateContext, { payload }: IdentityGetUsers) { + return this.identityService.getUsers(payload).pipe( + tap(users => + patchState({ + users, + }), + ), + ); + } + + @Action(IdentityGetUserById) + getUser({ patchState }: StateContext, { payload }: IdentityGetUserById) { + return this.identityService.getUserById(payload).pipe( + tap(selectedUser => + patchState({ + selectedUser, + }), + ), + ); + } + + @Action(IdentityDeleteUser) + deleteUser({ dispatch }: StateContext, { payload }: IdentityGetUserById) { + return this.identityService.deleteUser(payload).pipe(switchMap(() => dispatch(new IdentityGetUsers()))); + } + + @Action(IdentityAddUser) + addUser({ dispatch }: StateContext, { payload }: IdentityAddUser) { + return this.identityService.addUser(payload).pipe(switchMap(() => dispatch(new IdentityGetUsers()))); + } + + @Action(IdentityUpdateUser) + updateUser({ getState, dispatch }: StateContext, { payload }: IdentityUpdateUser) { + return dispatch(new IdentityGetUserById(payload.id)).pipe( + switchMap(() => this.identityService.updateUser({ ...getState().selectedUser, ...payload })), + switchMap(() => dispatch(new IdentityGetUsers())), + ); + } + + @Action(IdentityGetUserRoles) + getUserRoles({ patchState }: StateContext, { payload }: IdentityGetUserRoles) { + return this.identityService.getUserRoles(payload).pipe( + pluck('items'), + tap(selectedUserRoles => + patchState({ + selectedUserRoles, + }), + ), + ); + } +} diff --git a/npm/ng-packs/packages/identity/src/public-api.ts b/npm/ng-packs/packages/identity/src/public-api.ts new file mode 100644 index 00000000000..be547b1c345 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/public-api.ts @@ -0,0 +1,12 @@ +/* + * Public API Surface of identity + */ + +export * from './lib/identity.module'; +export * from './lib/actions/identity.actions'; +export * from './lib/components/roles/roles.component'; +export * from './lib/constants/routes'; +export * from './lib/models/identity'; +export * from './lib/resolvers/roles.resolver'; +export * from './lib/services/identity.service'; +export * from './lib/states/identity.state'; diff --git a/npm/ng-packs/packages/identity/src/test.ts b/npm/ng-packs/packages/identity/src/test.ts new file mode 100644 index 00000000000..978c64fb83f --- /dev/null +++ b/npm/ng-packs/packages/identity/src/test.ts @@ -0,0 +1,21 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/npm/ng-packs/packages/identity/tsconfig.lib.json b/npm/ng-packs/packages/identity/tsconfig.lib.json new file mode 100644 index 00000000000..2972099ba19 --- /dev/null +++ b/npm/ng-packs/packages/identity/tsconfig.lib.json @@ -0,0 +1,20 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": ["dom", "es2018"] + }, + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true, + "enableResourceInlining": true + }, + "exclude": ["src/test.ts", "**/*.spec.ts"] +} diff --git a/npm/ng-packs/packages/identity/tsconfig.spec.json b/npm/ng-packs/packages/identity/tsconfig.spec.json new file mode 100644 index 00000000000..16da33db072 --- /dev/null +++ b/npm/ng-packs/packages/identity/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/npm/ng-packs/packages/identity/tslint.json b/npm/ng-packs/packages/identity/tslint.json new file mode 100644 index 00000000000..8c3919ea624 --- /dev/null +++ b/npm/ng-packs/packages/identity/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "abp", + "camelCase" + ], + "component-selector": [ + true, + "element", + "abp", + "kebab-case" + ] + } +} diff --git a/npm/ng-packs/packages/permission-management/README.md b/npm/ng-packs/packages/permission-management/README.md new file mode 100644 index 00000000000..29fbdc1a7f9 --- /dev/null +++ b/npm/ng-packs/packages/permission-management/README.md @@ -0,0 +1 @@ +

    @abp/ng.permission-management

    diff --git a/npm/ng-packs/packages/permission-management/karma.conf.js b/npm/ng-packs/packages/permission-management/karma.conf.js new file mode 100644 index 00000000000..9bbd5907ef9 --- /dev/null +++ b/npm/ng-packs/packages/permission-management/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/permission-management'), + reports: ['html', 'lcovonly'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/npm/ng-packs/packages/permission-management/ng-package.json b/npm/ng-packs/packages/permission-management/ng-package.json new file mode 100644 index 00000000000..03f80c37cc2 --- /dev/null +++ b/npm/ng-packs/packages/permission-management/ng-package.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/permission-management", + "lib": { + "entryFile": "src/public-api.ts" + }, + "whitelistedNonPeerDependencies": ["@abp/ng.theme.shared"] +} diff --git a/npm/ng-packs/packages/permission-management/package.json b/npm/ng-packs/packages/permission-management/package.json new file mode 100644 index 00000000000..5bef63b1ee4 --- /dev/null +++ b/npm/ng-packs/packages/permission-management/package.json @@ -0,0 +1,10 @@ +{ + "name": "@abp/ng.permission-management", + "version": "0.8.0", + "dependencies": { + "@abp/ng.theme.shared": "^0.8.0" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/npm/ng-packs/packages/permission-management/src/lib/actions/index.ts b/npm/ng-packs/packages/permission-management/src/lib/actions/index.ts new file mode 100644 index 00000000000..5fb2c9e8e4e --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/lib/actions/index.ts @@ -0,0 +1 @@ +export * from './permission-management.actions'; diff --git a/npm/ng-packs/packages/permission-management/src/lib/actions/permission-management.actions.ts b/npm/ng-packs/packages/permission-management/src/lib/actions/permission-management.actions.ts new file mode 100644 index 00000000000..139f4d50eb5 --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/lib/actions/permission-management.actions.ts @@ -0,0 +1,11 @@ +import { PermissionManagement } from '../models/permission-management'; + +export class PermissionManagementGetPermissions { + static readonly type = '[PermissionManagement] Get Permissions'; + constructor(public payload: PermissionManagement.GrantedProvider) {} +} + +export class PermissionManagementUpdatePermissions { + static readonly type = '[PermissionManagement] Update Permissions'; + constructor(public payload: PermissionManagement.GrantedProvider & PermissionManagement.UpdateRequest) {} +} diff --git a/npm/ng-packs/packages/permission-management/src/lib/components/index.ts b/npm/ng-packs/packages/permission-management/src/lib/components/index.ts new file mode 100644 index 00000000000..efa91b45a2c --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/lib/components/index.ts @@ -0,0 +1 @@ +export * from './permission-management.component'; diff --git a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html new file mode 100644 index 00000000000..6ad9bfb201c --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html @@ -0,0 +1,94 @@ + + + +

    {{ 'AbpPermissionManagement::Permissions' | abpLocalization }} - {{ data.entityName }}

    +
    + +
    + + +
    + +
    +
    +
    + +
    +
    +

    {{ selectedGroup.displayName }}

    +
    +
    +
    + + +
    +
    + +
    + + +
    +
    +
    +
    +
    +
    + + + {{ 'AbpIdentity::Save' | abpLocalization }} + +
    +
    diff --git a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts new file mode 100644 index 00000000000..ed2139ecb7d --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts @@ -0,0 +1,251 @@ +import { + Component, + EventEmitter, + Input, + OnChanges, + OnInit, + Output, + Renderer2, + SimpleChanges, + TrackByFunction, +} from '@angular/core'; +import { Select, Store } from '@ngxs/store'; +import { from, Observable } from 'rxjs'; +import { map, pluck, take } from 'rxjs/operators'; +import { + PermissionManagementGetPermissions, + PermissionManagementUpdatePermissions, +} from '../actions/permission-management.actions'; +import { PermissionManagement } from '../models/permission-management'; +import { PermissionManagementState } from '../states/permission-management.state'; + +type PermissionWithMargin = PermissionManagement.Permission & { margin: number }; + +@Component({ + selector: 'abp-permission-management', + templateUrl: './permission-management.component.html', +}) +export class PermissionManagementComponent implements OnInit, OnChanges { + @Input() + providerName: string; + + @Input() + providerKey: string; + + protected _visible; + + @Input() + get visible(): boolean { + return this._visible; + } + + set visible(value: boolean) { + if (!this.selectedGroup) return; + + this._visible = value; + this.visibleChange.emit(value); + + if (!value) { + this.selectedGroup = null; + } + } + + @Output() + visibleChange = new EventEmitter(); + + @Select(PermissionManagementState.getPermissionGroups) + groups$: Observable; + + @Select(PermissionManagementState.getEntitiyDisplayName) + entityName$: Observable; + + selectedGroup: PermissionManagement.Group; + + permissions: PermissionManagement.Permission[] = []; + + selectThisTab: boolean = false; + + selectAllTab: boolean = false; + + trackByFn: TrackByFunction = (_, item) => item.name; + + get selectedGroupPermissions$(): Observable { + return this.groups$.pipe( + map(groups => + this.selectedGroup ? groups.find(group => group.name === this.selectedGroup.name).permissions : [], + ), + map(permissions => + permissions.map( + permission => + (({ + ...permission, + margin: findMargin(permissions, permission), + isGranted: this.permissions.find(per => per.name === permission.name).isGranted, + } as any) as PermissionWithMargin), + ), + ), + ); + } + + constructor(private store: Store, private renderer: Renderer2) {} + + ngOnInit(): void {} + + getChecked(name: string) { + return (this.permissions.find(per => per.name === name) || { isGranted: false }).isGranted; + } + + onClickCheckbox(clickedPermission: PermissionManagement.Permission, value) { + setTimeout(() => { + this.permissions = this.permissions.map(per => { + if (clickedPermission.name === per.name) { + return { ...per, isGranted: !per.isGranted }; + } else if (clickedPermission.name === per.parentName && clickedPermission.isGranted) { + return { ...per, isGranted: false }; + } else if (clickedPermission.parentName === per.name && !clickedPermission.isGranted) { + return { ...per, isGranted: true }; + } + + return per; + }); + + this.setTabCheckboxState(); + this.setGrantCheckboxState(); + }, 0); + } + + setTabCheckboxState() { + this.selectedGroupPermissions$.pipe(take(1)).subscribe(permissions => { + const selectedPermissions = permissions.filter(per => per.isGranted); + const element = document.querySelector('#select-all-in-this-tabs') as any; + + if (selectedPermissions.length === permissions.length) { + element.indeterminate = false; + this.selectThisTab = true; + } else if (selectedPermissions.length === 0) { + element.indeterminate = false; + this.selectThisTab = false; + } else { + element.indeterminate = true; + } + }); + } + + setGrantCheckboxState() { + const selectedAllPermissions = this.permissions.filter(per => per.isGranted); + const checkboxElement = document.querySelector('#select-all-in-all-tabs') as any; + + if (selectedAllPermissions.length === this.permissions.length) { + checkboxElement.indeterminate = false; + this.selectAllTab = true; + } else if (selectedAllPermissions.length === 0) { + checkboxElement.indeterminate = false; + this.selectAllTab = false; + } else { + checkboxElement.indeterminate = true; + } + } + + onClickSelectThisTab() { + this.selectedGroupPermissions$.pipe(take(1)).subscribe(permissions => { + permissions.forEach(permission => { + const index = this.permissions.findIndex(per => per.name === permission.name); + + this.permissions = [ + ...this.permissions.slice(0, index), + { ...this.permissions[index], isGranted: !this.selectThisTab }, + ...this.permissions.slice(index + 1), + ]; + }); + }); + + this.setGrantCheckboxState(); + } + + onClickSelectAll() { + this.permissions = this.permissions.map(permission => ({ ...permission, isGranted: !this.selectAllTab })); + + this.selectThisTab = !this.selectAllTab; + } + + onChangeGroup(group: PermissionManagement.Group) { + this.selectedGroup = group; + this.setTabCheckboxState(); + } + + onSubmit() { + const unchangedPermissions = getPermissions( + this.store.selectSnapshot(PermissionManagementState.getPermissionGroups), + ); + + const changedPermissions: PermissionManagement.MinimumPermission[] = this.permissions + .filter(per => + unchangedPermissions.find(unchanged => unchanged.name === per.name).isGranted === per.isGranted ? false : true, + ) + .map(({ name, isGranted }) => ({ name, isGranted })); + + if (changedPermissions.length) { + this.store + .dispatch( + new PermissionManagementUpdatePermissions({ + providerKey: this.providerKey, + providerName: this.providerName, + permissions: changedPermissions, + }), + ) + .subscribe(() => { + this.visible = false; + }); + } else { + this.visible = false; + } + } + + openModal() { + if (!this.providerKey || !this.providerName) { + throw new Error('Provider Key and Provider Name are required.'); + } + + this.store + .dispatch( + new PermissionManagementGetPermissions({ providerKey: this.providerKey, providerName: this.providerName }), + ) + .pipe(pluck('PermissionManagementState', 'permissionRes')) + .subscribe((permissionRes: PermissionManagement.Response) => { + this.selectedGroup = permissionRes.groups[0]; + this.permissions = getPermissions(permissionRes.groups); + + this.visible = true; + }); + } + + initModal() { + this.setTabCheckboxState(); + this.setGrantCheckboxState(); + } + + ngOnChanges({ visible }: SimpleChanges): void { + if (!visible) return; + + if (visible.currentValue) { + this.openModal(); + } else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + } +} + +function findMargin(permissions: PermissionManagement.Permission[], permission: PermissionManagement.Permission) { + const parentPermission = permissions.find(per => per.name === permission.parentName); + + if (parentPermission && parentPermission.parentName) { + let margin = 20; + return (margin += findMargin(permissions, parentPermission)); + } + + return parentPermission ? 20 : 0; +} + +function getPermissions(groups: PermissionManagement.Group[]): PermissionManagement.Permission[] { + return groups.reduce((acc, val) => [...acc, ...val.permissions], []); +} diff --git a/npm/ng-packs/packages/permission-management/src/lib/models/index.ts b/npm/ng-packs/packages/permission-management/src/lib/models/index.ts new file mode 100644 index 00000000000..6a06f3adabe --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/lib/models/index.ts @@ -0,0 +1 @@ +export * from './permission-management'; diff --git a/npm/ng-packs/packages/permission-management/src/lib/models/permission-management.ts b/npm/ng-packs/packages/permission-management/src/lib/models/permission-management.ts new file mode 100644 index 00000000000..cf5d3b23711 --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/lib/models/permission-management.ts @@ -0,0 +1,37 @@ +export namespace PermissionManagement { + export interface State { + permissionRes: Response; + } + + export interface Response { + entityDisplayName: string; + groups: Group[]; + } + + export interface Group { + name: string; + displayName: string; + permissions: Permission[]; + } + + export interface MinimumPermission { + name: string; + isGranted: boolean; + } + + export interface Permission extends MinimumPermission { + displayName: string; + parentName: string; + allowedProviders: string[]; + grantedProviders: GrantedProvider[]; + } + + export interface GrantedProvider { + providerName: string; + providerKey: string; + } + + export interface UpdateRequest { + permissions: MinimumPermission[]; + } +} diff --git a/npm/ng-packs/packages/permission-management/src/lib/permission-management.module.ts b/npm/ng-packs/packages/permission-management/src/lib/permission-management.module.ts new file mode 100644 index 00000000000..3986689c41d --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/lib/permission-management.module.ts @@ -0,0 +1,14 @@ +import { CoreModule } from '@abp/ng.core'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { NgModule } from '@angular/core'; +import { NgxsModule } from '@ngxs/store'; +import { PermissionManagementComponent } from './components/permission-management.component'; +import { PermissionManagementState } from './states/permission-management.state'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; + +@NgModule({ + declarations: [PermissionManagementComponent], + imports: [CoreModule, ThemeSharedModule, NgxsModule.forFeature([PermissionManagementState]), PerfectScrollbarModule], + exports: [PermissionManagementComponent], +}) +export class PermissionManagementModule {} diff --git a/npm/ng-packs/packages/permission-management/src/lib/services/index.ts b/npm/ng-packs/packages/permission-management/src/lib/services/index.ts new file mode 100644 index 00000000000..47ac05d8faf --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/lib/services/index.ts @@ -0,0 +1 @@ +export * from './permission-management.service'; diff --git a/npm/ng-packs/packages/permission-management/src/lib/services/permission-management.service.ts b/npm/ng-packs/packages/permission-management/src/lib/services/permission-management.service.ts new file mode 100644 index 00000000000..e7fdd98ce30 --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/lib/services/permission-management.service.ts @@ -0,0 +1,36 @@ +import { Injectable } from '@angular/core'; +import { RestService, Rest } from '@abp/ng.core'; +import { Observable } from 'rxjs'; +import { PermissionManagement } from '../models/permission-management'; + +@Injectable({ + providedIn: 'root', +}) +export class PermissionManagementService { + constructor(private rest: RestService) {} + + getPermissions(params: PermissionManagement.GrantedProvider): Observable { + const request: Rest.Request = { + method: 'GET', + url: '/api/abp/permissions', + params, + }; + + return this.rest.request(request); + } + + updatePermissions({ + permissions, + providerKey, + providerName, + }: PermissionManagement.GrantedProvider & PermissionManagement.UpdateRequest): Observable { + const request: Rest.Request = { + method: 'PUT', + url: '/api/abp/permissions', + body: { permissions }, + params: { providerKey, providerName }, + }; + + return this.rest.request(request); + } +} diff --git a/npm/ng-packs/packages/permission-management/src/lib/states/index.ts b/npm/ng-packs/packages/permission-management/src/lib/states/index.ts new file mode 100644 index 00000000000..11166b2e3bf --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/lib/states/index.ts @@ -0,0 +1 @@ +export * from "./permission-management.state"; diff --git a/npm/ng-packs/packages/permission-management/src/lib/states/permission-management.state.ts b/npm/ng-packs/packages/permission-management/src/lib/states/permission-management.state.ts new file mode 100644 index 00000000000..842795ca165 --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/lib/states/permission-management.state.ts @@ -0,0 +1,45 @@ +import { State, Action, StateContext, Selector } from '@ngxs/store'; +import { + PermissionManagementGetPermissions, + PermissionManagementUpdatePermissions, +} from '../actions/permission-management.actions'; +import { PermissionManagement } from '../models/permission-management'; +import { PermissionManagementService } from '../services/permission-management.service'; +import { tap } from 'rxjs/operators'; + +@State({ + name: 'PermissionManagementState', + defaults: { permissionRes: {} } as PermissionManagement.State, +}) +export class PermissionManagementState { + @Selector() + static getPermissionGroups({ permissionRes }: PermissionManagement.State) { + return permissionRes.groups || []; + } + + @Selector() + static getEntitiyDisplayName({ permissionRes }: PermissionManagement.State): string { + return permissionRes.entityDisplayName; + } + + constructor(private permissionManagementService: PermissionManagementService) {} + + @Action(PermissionManagementGetPermissions) + permissionManagementGet( + { patchState }: StateContext, + { payload }: PermissionManagementGetPermissions, + ) { + return this.permissionManagementService.getPermissions(payload).pipe( + tap(permissionResponse => + patchState({ + permissionRes: permissionResponse, + }), + ), + ); + } + + @Action(PermissionManagementUpdatePermissions) + permissionManagementUpdate(_, { payload }: PermissionManagementUpdatePermissions) { + return this.permissionManagementService.updatePermissions(payload); + } +} diff --git a/npm/ng-packs/packages/permission-management/src/public-api.ts b/npm/ng-packs/packages/permission-management/src/public-api.ts new file mode 100644 index 00000000000..3182363f255 --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/public-api.ts @@ -0,0 +1,10 @@ +/* + * Public API Surface of permission-management + */ + +export * from './lib/permission-management.module'; +export * from './lib/actions'; +export * from './lib/components'; +export * from './lib/models'; +export * from './lib/services'; +export * from './lib/states'; diff --git a/npm/ng-packs/packages/permission-management/src/test.ts b/npm/ng-packs/packages/permission-management/src/test.ts new file mode 100644 index 00000000000..978c64fb83f --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/test.ts @@ -0,0 +1,21 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/npm/ng-packs/packages/permission-management/tsconfig.lib.json b/npm/ng-packs/packages/permission-management/tsconfig.lib.json new file mode 100644 index 00000000000..2972099ba19 --- /dev/null +++ b/npm/ng-packs/packages/permission-management/tsconfig.lib.json @@ -0,0 +1,20 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": ["dom", "es2018"] + }, + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true, + "enableResourceInlining": true + }, + "exclude": ["src/test.ts", "**/*.spec.ts"] +} diff --git a/npm/ng-packs/packages/permission-management/tsconfig.spec.json b/npm/ng-packs/packages/permission-management/tsconfig.spec.json new file mode 100644 index 00000000000..16da33db072 --- /dev/null +++ b/npm/ng-packs/packages/permission-management/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/npm/ng-packs/packages/permission-management/tslint.json b/npm/ng-packs/packages/permission-management/tslint.json new file mode 100644 index 00000000000..8c3919ea624 --- /dev/null +++ b/npm/ng-packs/packages/permission-management/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "abp", + "camelCase" + ], + "component-selector": [ + true, + "element", + "abp", + "kebab-case" + ] + } +} diff --git a/npm/ng-packs/packages/tenant-management/README.md b/npm/ng-packs/packages/tenant-management/README.md new file mode 100644 index 00000000000..0d67aa2d244 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/README.md @@ -0,0 +1 @@ +

    @abp/ng.tenant-management

    diff --git a/npm/ng-packs/packages/tenant-management/karma.conf.js b/npm/ng-packs/packages/tenant-management/karma.conf.js new file mode 100644 index 00000000000..eb6cfa24b4b --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/tenant-management'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/npm/ng-packs/packages/tenant-management/ng-package.json b/npm/ng-packs/packages/tenant-management/ng-package.json new file mode 100644 index 00000000000..e506119f694 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/ng-package.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/tenant-management", + "lib": { + "entryFile": "src/public-api.ts" + }, + "whitelistedNonPeerDependencies": ["@abp/ng.theme.shared"] +} diff --git a/npm/ng-packs/packages/tenant-management/package.json b/npm/ng-packs/packages/tenant-management/package.json new file mode 100644 index 00000000000..36baff41f21 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/package.json @@ -0,0 +1,10 @@ +{ + "name": "@abp/ng.tenant-management", + "version": "0.8.0", + "dependencies": { + "@abp/ng.theme.shared": "^0.8.0" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/npm/ng-packs/packages/tenant-management/src/lib/actions/index.ts b/npm/ng-packs/packages/tenant-management/src/lib/actions/index.ts new file mode 100644 index 00000000000..5c9207873fc --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/actions/index.ts @@ -0,0 +1 @@ +export * from './tenant-management.actions'; diff --git a/npm/ng-packs/packages/tenant-management/src/lib/actions/tenant-management.actions.ts b/npm/ng-packs/packages/tenant-management/src/lib/actions/tenant-management.actions.ts new file mode 100644 index 00000000000..74034507e84 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/actions/tenant-management.actions.ts @@ -0,0 +1,27 @@ +import { TenantManagement } from '../models/tenant-management'; +import { ABP } from '@abp/ng.core'; + +export class TenantManagementGet { + static readonly type = '[TenantManagement] Get'; + constructor(public payload?: ABP.PageQueryParams) {} +} + +export class TenantManagementGetById { + static readonly type = '[TenantManagement] Get By Id'; + constructor(public payload: string) {} +} + +export class TenantManagementAdd { + static readonly type = '[TenantManagement] Add'; + constructor(public payload: TenantManagement.AddRequest) {} +} + +export class TenantManagementUpdate { + static readonly type = '[TenantManagement] Update'; + constructor(public payload: TenantManagement.UpdateRequest) {} +} + +export class TenantManagementDelete { + static readonly type = '[TenantManagement] Delete'; + constructor(public payload: string) {} +} diff --git a/npm/ng-packs/packages/tenant-management/src/lib/components/index.ts b/npm/ng-packs/packages/tenant-management/src/lib/components/index.ts new file mode 100644 index 00000000000..3174cf9458f --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/components/index.ts @@ -0,0 +1 @@ +export * from './tenants/tenants.component'; diff --git a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html new file mode 100644 index 00000000000..3f6ece30c30 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html @@ -0,0 +1,157 @@ +
    +
    +
    +
    +
    + {{ 'AbpTenantManagement::Tenants' | abpLocalization }} +
    +
    +
    + +
    +
    +
    +
    +
    + +
    + + + + {{ 'AbpTenantManagement::Actions' | abpLocalization }} + {{ 'AbpTenantManagement::TenantName' | abpLocalization }} + + + + + +
    + +
    + + + +
    +
    + + {{ data.name }} + +
    +
    +
    +
    + + + +

    {{ selectedModalContent.title | abpLocalization }}

    +
    + + + + + + + + {{ 'AbpIdentity::Save' | abpLocalization }} + +
    + + +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    +
    diff --git a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts new file mode 100644 index 00000000000..64db8a1035f --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts @@ -0,0 +1,204 @@ +import { ABP } from '@abp/ng.core'; +import { ConfirmationService, Toaster } from '@abp/ng.theme.shared'; +import { Component, TemplateRef, ViewChild } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { Select, Store } from '@ngxs/store'; +import { Observable, Subject } from 'rxjs'; +import { debounceTime, finalize, pluck, switchMap, take } from 'rxjs/operators'; +import { + TenantManagementAdd, + TenantManagementDelete, + TenantManagementGet, + TenantManagementGetById, + TenantManagementUpdate, +} from '../../actions/tenant-management.actions'; +import { TenantManagementService } from '../../services/tenant-management.service'; +import { TenantManagementState } from '../../states/tenant-management.state'; + +type SelectedModalContent = { + type: string; + title: string; + template: TemplateRef; +}; + +@Component({ + selector: 'abp-tenants', + templateUrl: './tenants.component.html', +}) +export class TenantsComponent { + @Select(TenantManagementState.get) + data$: Observable; + + @Select(TenantManagementState.getTenantsTotalCount) + totalCount$: Observable; + + selected: ABP.BasicItem; + + tenantForm: FormGroup; + + defaultConnectionStringForm: FormGroup; + + defaultConnectionString: string; + + isModalVisible: boolean; + + selectedModalContent = {} as SelectedModalContent; + + _useSharedDatabase: boolean; + + pageQuery: ABP.PageQueryParams = { + sorting: 'name', + }; + + loading: boolean = false; + + get useSharedDatabase(): boolean { + return this.defaultConnectionStringForm.get('useSharedDatabase').value; + } + + get connectionString(): string { + return this.defaultConnectionStringForm.get('defaultConnectionString').value; + } + + @ViewChild('tenantModalTemplate', { static: false }) + tenantModalTemplate: TemplateRef; + + @ViewChild('connectionStringModalTemplate', { static: false }) + connectionStringModalTemplate: TemplateRef; + + constructor( + private confirmationService: ConfirmationService, + private tenantService: TenantManagementService, + private fb: FormBuilder, + private store: Store, + ) {} + + onSearch(value) { + this.pageQuery.filter = value; + this.get(); + } + + private createTenantForm() { + this.tenantForm = this.fb.group({ + name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]], + }); + } + + private createDefaultConnectionStringForm() { + this.defaultConnectionStringForm = this.fb.group({ + useSharedDatabase: this._useSharedDatabase, + defaultConnectionString: this.defaultConnectionString || '', + }); + } + + openModal(title: string, template: TemplateRef, type: string) { + this.selectedModalContent = { + title, + template, + type, + }; + + this.isModalVisible = true; + } + + onEditConnectionString(id: string) { + this.store + .dispatch(new TenantManagementGetById(id)) + .pipe( + pluck('TenantManagementState', 'selectedItem'), + switchMap(selected => { + this.selected = selected; + return this.tenantService.getDefaultConnectionString(id); + }), + ) + .subscribe(fetchedConnectionString => { + this._useSharedDatabase = fetchedConnectionString ? false : true; + this.defaultConnectionString = fetchedConnectionString ? fetchedConnectionString : ''; + this.createDefaultConnectionStringForm(); + this.openModal('AbpTenantManagement::ConnectionStrings', this.connectionStringModalTemplate, 'saveConnStr'); + }); + } + + onAddTenant() { + this.selected = {} as ABP.BasicItem; + this.createTenantForm(); + this.openModal('AbpTenantManagement::NewTenant', this.tenantModalTemplate, 'saveTenant'); + } + + onEditTenant(id: string) { + this.store + .dispatch(new TenantManagementGetById(id)) + .pipe(pluck('TenantManagementState', 'selectedItem')) + .subscribe(selected => { + this.selected = selected; + this.createTenantForm(); + this.openModal('AbpTenantManagement::Edit', this.tenantModalTemplate, 'saveTenant'); + }); + } + + save() { + const { type } = this.selectedModalContent; + if (!type) return; + if (type === 'saveTenant') this.saveTenant(); + else if (type === 'saveConnStr') this.saveConnectionString(); + } + + saveConnectionString() { + if (this.useSharedDatabase) { + this.tenantService + .deleteDefaultConnectionString(this.selected.id) + .pipe(take(1)) + .subscribe(() => { + this.isModalVisible = false; + }); + } else { + this.tenantService + .updateDefaultConnectionString({ id: this.selected.id, defaultConnectionString: this.connectionString }) + .pipe(take(1)) + .subscribe(() => { + this.isModalVisible = false; + }); + } + } + + saveTenant() { + if (!this.tenantForm.valid) return; + + this.store + .dispatch( + this.selected.id + ? new TenantManagementUpdate({ ...this.tenantForm.value, id: this.selected.id }) + : new TenantManagementAdd(this.tenantForm.value), + ) + .subscribe(() => { + this.isModalVisible = false; + }); + } + + delete(id: string, name: string) { + this.confirmationService + .warn('AbpTenantManagement::TenantDeletionConfirmationMessage', 'AbpTenantManagement::AreYouSure', { + messageLocalizationParams: [name], + }) + .subscribe((status: Toaster.Status) => { + if (status === Toaster.Status.confirm) { + this.store.dispatch(new TenantManagementDelete(id)); + } + }); + } + + onPageChange(data) { + this.pageQuery.skipCount = data.first; + this.pageQuery.maxResultCount = data.rows; + + this.get(); + } + + get() { + this.loading = true; + this.store + .dispatch(new TenantManagementGet(this.pageQuery)) + .pipe(finalize(() => (this.loading = false))) + .subscribe(); + } +} diff --git a/npm/ng-packs/packages/tenant-management/src/lib/constants/index.ts b/npm/ng-packs/packages/tenant-management/src/lib/constants/index.ts new file mode 100644 index 00000000000..a3820983e25 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/constants/index.ts @@ -0,0 +1 @@ +export * from './routes'; diff --git a/npm/ng-packs/packages/tenant-management/src/lib/constants/routes.ts b/npm/ng-packs/packages/tenant-management/src/lib/constants/routes.ts new file mode 100644 index 00000000000..2fcc7004bb2 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/constants/routes.ts @@ -0,0 +1,19 @@ +import { ABP, eLayoutType } from '@abp/ng.core'; + +export const TENANT_MANAGEMENT_ROUTES = [ + { + name: 'AbpTenantManagement::Menu:TenantManagement', + path: 'tenant-management', + parentName: 'AbpUiNavigation::Menu:Administration', + layout: eLayoutType.application, + iconClass: 'fa fa-users', + children: [ + { + path: 'tenants', + name: 'AbpTenantManagement::Tenants', + order: 1, + requiredPolicy: 'AbpTenantManagement.Tenants', + }, + ], + }, +] as ABP.FullRoute[]; diff --git a/npm/ng-packs/packages/tenant-management/src/lib/models/index.ts b/npm/ng-packs/packages/tenant-management/src/lib/models/index.ts new file mode 100644 index 00000000000..580d09d215c --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/models/index.ts @@ -0,0 +1 @@ +export * from './tenant-management'; diff --git a/npm/ng-packs/packages/tenant-management/src/lib/models/tenant-management.ts b/npm/ng-packs/packages/tenant-management/src/lib/models/tenant-management.ts new file mode 100644 index 00000000000..40a9c06d119 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/models/tenant-management.ts @@ -0,0 +1,28 @@ +import { ABP } from '@abp/ng.core'; + +export namespace TenantManagement { + export interface State { + result: Response; + selectedItem: Item; + } + + export type Response = ABP.PagedResponse; + + export interface Item { + id: string; + name: string; + } + + export interface AddRequest { + name: string; + } + + export interface UpdateRequest extends AddRequest { + id: string; + } + + export interface DefaultConnectionStringRequest { + id: string; + defaultConnectionString: string; + } +} diff --git a/npm/ng-packs/packages/tenant-management/src/lib/resolvers/index.ts b/npm/ng-packs/packages/tenant-management/src/lib/resolvers/index.ts new file mode 100644 index 00000000000..3c5a42a2ac3 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/resolvers/index.ts @@ -0,0 +1 @@ +export * from './tenants.resolver'; diff --git a/npm/ng-packs/packages/tenant-management/src/lib/resolvers/tenants.resolver.ts b/npm/ng-packs/packages/tenant-management/src/lib/resolvers/tenants.resolver.ts new file mode 100644 index 00000000000..4ad2a81d9e8 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/resolvers/tenants.resolver.ts @@ -0,0 +1,18 @@ +import { Injectable } from '@angular/core'; +import { Resolve } from '@angular/router'; +import { Store } from '@ngxs/store'; +import { TenantManagementGet } from '../actions/tenant-management.actions'; +import { TenantManagement } from '../models/tenant-management'; +import { TenantManagementState } from '../states/tenant-management.state'; + +@Injectable() +export class TenantsResolver implements Resolve { + constructor(private store: Store) {} + + resolve() { + const data = this.store.selectSnapshot(TenantManagementState.get); + return data && data.length + ? null + : this.store.dispatch(new TenantManagementGet()); + } +} diff --git a/npm/ng-packs/packages/tenant-management/src/lib/services/index.ts b/npm/ng-packs/packages/tenant-management/src/lib/services/index.ts new file mode 100644 index 00000000000..25e55ae9783 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/services/index.ts @@ -0,0 +1 @@ +export * from './tenant-management.service'; diff --git a/npm/ng-packs/packages/tenant-management/src/lib/services/tenant-management.service.ts b/npm/ng-packs/packages/tenant-management/src/lib/services/tenant-management.service.ts new file mode 100644 index 00000000000..f038931390e --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/services/tenant-management.service.ts @@ -0,0 +1,94 @@ +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { RestService, Rest, ABP } from '@abp/ng.core'; +import { TenantManagement } from '../models/tenant-management'; + +@Injectable({ + providedIn: 'root', +}) +export class TenantManagementService { + constructor(private rest: RestService) {} + + get(params = {} as ABP.PageQueryParams): Observable { + const request: Rest.Request = { + method: 'GET', + url: '/api/multi-tenancy/tenants', + params, + }; + + return this.rest.request(request); + } + + getById(id: string): Observable { + const request: Rest.Request = { + method: 'GET', + url: `/api/multi-tenancy/tenants/${id}`, + }; + + return this.rest.request(request); + } + + delete(id: string): Observable { + const request: Rest.Request = { + method: 'DELETE', + url: `/api/multi-tenancy/tenants/${id}`, + }; + + return this.rest.request(request); + } + + add(body: TenantManagement.AddRequest): Observable { + const request: Rest.Request = { + method: 'POST', + url: `/api/multi-tenancy/tenants`, + body, + }; + + return this.rest.request(request); + } + + update(body: TenantManagement.UpdateRequest): Observable { + const url = `/api/multi-tenancy/tenants/${body.id}`; + delete body.id; + + const request: Rest.Request = { + method: 'PUT', + url, + body, + }; + + return this.rest.request(request); + } + + getDefaultConnectionString(id: string): Observable { + const url = `/api/multi-tenancy/tenants/${id}/default-connection-string`; + + const request: Rest.Request = { + method: 'GET', + responseType: Rest.ResponseType.Text, + url, + }; + return this.rest.request(request); + } + + updateDefaultConnectionString(payload: TenantManagement.DefaultConnectionStringRequest): Observable { + const url = `/api/multi-tenancy/tenants/${payload.id}/default-connection-string`; + + const request: Rest.Request = { + method: 'PUT', + url, + params: { defaultConnectionString: payload.defaultConnectionString }, + }; + return this.rest.request(request); + } + + deleteDefaultConnectionString(id: string): Observable { + const url = `/api/multi-tenancy/tenant/${id}/default-connection-string`; + + const request: Rest.Request = { + method: 'DELETE', + url, + }; + return this.rest.request(request); + } +} diff --git a/npm/ng-packs/packages/tenant-management/src/lib/states/index.ts b/npm/ng-packs/packages/tenant-management/src/lib/states/index.ts new file mode 100644 index 00000000000..a6fb4168fe2 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/states/index.ts @@ -0,0 +1 @@ +export * from './tenant-management.state'; diff --git a/npm/ng-packs/packages/tenant-management/src/lib/states/tenant-management.state.ts b/npm/ng-packs/packages/tenant-management/src/lib/states/tenant-management.state.ts new file mode 100644 index 00000000000..cd108dd225d --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/states/tenant-management.state.ts @@ -0,0 +1,70 @@ +import { Action, Selector, State, StateContext } from '@ngxs/store'; +import { switchMap, tap } from 'rxjs/operators'; +import { + TenantManagementAdd, + TenantManagementDelete, + TenantManagementGet, + TenantManagementGetById, + TenantManagementUpdate, +} from '../actions/tenant-management.actions'; +import { TenantManagement } from '../models/tenant-management'; +import { TenantManagementService } from '../services/tenant-management.service'; +import { ABP } from '@abp/ng.core'; + +@State({ + name: 'TenantManagementState', + defaults: { result: {}, selectedItem: {} } as TenantManagement.State, +}) +export class TenantManagementState { + @Selector() + static get({ result }: TenantManagement.State): ABP.BasicItem[] { + return result.items || []; + } + + @Selector() + static getTenantsTotalCount({ result }: TenantManagement.State): number { + return result.totalCount; + } + + constructor(private tenantManagementService: TenantManagementService) {} + + @Action(TenantManagementGet) + get({ patchState }: StateContext, { payload }: TenantManagementGet) { + return this.tenantManagementService.get(payload).pipe( + tap(result => + patchState({ + result, + }), + ), + ); + } + + @Action(TenantManagementGetById) + getById({ patchState }: StateContext, { payload }: TenantManagementGetById) { + return this.tenantManagementService.getById(payload).pipe( + tap(selectedItem => + patchState({ + selectedItem, + }), + ), + ); + } + + @Action(TenantManagementDelete) + delete({ dispatch }: StateContext, { payload }: TenantManagementDelete) { + return this.tenantManagementService.delete(payload).pipe(switchMap(() => dispatch(new TenantManagementGet()))); + } + + @Action(TenantManagementAdd) + add({ dispatch }: StateContext, { payload }: TenantManagementAdd) { + return this.tenantManagementService.add(payload).pipe(switchMap(() => dispatch(new TenantManagementGet()))); + } + + @Action(TenantManagementUpdate) + update({ dispatch, getState }: StateContext, { payload }: TenantManagementUpdate) { + return dispatch(new TenantManagementGetById(payload.id)).pipe( + switchMap(() => this.tenantManagementService.update({ ...getState().selectedItem, ...payload })), + switchMap(() => dispatch(new TenantManagementGet())), + ); + } +} diff --git a/npm/ng-packs/packages/tenant-management/src/lib/tenant-management-routing.module.ts b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management-routing.module.ts new file mode 100644 index 00000000000..f705d4d6893 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management-routing.module.ts @@ -0,0 +1,23 @@ +import { AuthGuard, DynamicLayoutComponent, PermissionGuard } from '@abp/ng.core'; +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { TenantsResolver } from './resolvers/tenants.resolver'; +import { TenantsComponent } from './components/tenants/tenants.component'; + +const routes: Routes = [ + { path: '', redirectTo: 'tenants', pathMatch: 'full' }, + { + path: 'tenants', + component: DynamicLayoutComponent, + canActivate: [AuthGuard, PermissionGuard], + data: { requiredPolicy: 'AbpTenantManagement.Tenants' }, + children: [{ path: '', component: TenantsComponent, resolve: [TenantsResolver] }], + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], + providers: [TenantsResolver], +}) +export class TenantManagementRoutingModule {} diff --git a/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.module.ts b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.module.ts new file mode 100644 index 00000000000..2850111dcc9 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.module.ts @@ -0,0 +1,22 @@ +import { CoreModule } from '@abp/ng.core'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { NgModule } from '@angular/core'; +import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { NgxsModule } from '@ngxs/store'; +import { TableModule } from 'primeng/table'; +import { TenantsComponent } from './components/tenants/tenants.component'; +import { TenantManagementState } from './states/tenant-management.state'; +import { TenantManagementRoutingModule } from './tenant-management-routing.module'; + +@NgModule({ + declarations: [TenantsComponent], + imports: [ + TenantManagementRoutingModule, + NgxsModule.forFeature([TenantManagementState]), + CoreModule, + TableModule, + ThemeSharedModule, + NgbDropdownModule, + ], +}) +export class TenantManagementModule {} diff --git a/npm/ng-packs/packages/tenant-management/src/public-api.ts b/npm/ng-packs/packages/tenant-management/src/public-api.ts new file mode 100644 index 00000000000..9bae9a9edb2 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/public-api.ts @@ -0,0 +1,8 @@ +export * from './lib/tenant-management.module'; +export * from './lib/actions'; +export * from './lib/components'; +export * from './lib/constants'; +export * from './lib/models'; +export * from './lib/resolvers'; +export * from './lib/services'; +export * from './lib/states'; diff --git a/npm/ng-packs/packages/tenant-management/src/test.ts b/npm/ng-packs/packages/tenant-management/src/test.ts new file mode 100644 index 00000000000..978c64fb83f --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/test.ts @@ -0,0 +1,21 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/npm/ng-packs/packages/tenant-management/tsconfig.lib.json b/npm/ng-packs/packages/tenant-management/tsconfig.lib.json new file mode 100644 index 00000000000..11fb84af385 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/tsconfig.lib.json @@ -0,0 +1,27 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ], + "paths": {} + }, + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/npm/ng-packs/packages/tenant-management/tsconfig.spec.json b/npm/ng-packs/packages/tenant-management/tsconfig.spec.json new file mode 100644 index 00000000000..16da33db072 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/npm/ng-packs/packages/tenant-management/tslint.json b/npm/ng-packs/packages/tenant-management/tslint.json new file mode 100644 index 00000000000..8c3919ea624 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "abp", + "camelCase" + ], + "component-selector": [ + true, + "element", + "abp", + "kebab-case" + ] + } +} diff --git a/npm/ng-packs/packages/theme-basic/README.md b/npm/ng-packs/packages/theme-basic/README.md new file mode 100644 index 00000000000..fc9a74c13dd --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/README.md @@ -0,0 +1 @@ +

    @abp/ng.theme.basic

    diff --git a/npm/ng-packs/packages/theme-basic/karma.conf.js b/npm/ng-packs/packages/theme-basic/karma.conf.js new file mode 100644 index 00000000000..e04be0a193b --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/theme-basic'), + reports: ['html', 'lcovonly'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/npm/ng-packs/packages/theme-basic/ng-package.json b/npm/ng-packs/packages/theme-basic/ng-package.json new file mode 100644 index 00000000000..600c112dee6 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/ng-package.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/theme-basic", + "lib": { + "entryFile": "src/public-api.ts" + }, + "whitelistedNonPeerDependencies": ["@abp/ng.theme.shared"] +} diff --git a/npm/ng-packs/packages/theme-basic/package.json b/npm/ng-packs/packages/theme-basic/package.json new file mode 100644 index 00000000000..a516b0e27fe --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/package.json @@ -0,0 +1,10 @@ +{ + "name": "@abp/ng.theme.basic", + "version": "0.8.0", + "dependencies": { + "@abp/ng.theme.shared": "^0.8.0" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/npm/ng-packs/packages/theme-basic/src/lib/actions/index.ts b/npm/ng-packs/packages/theme-basic/src/lib/actions/index.ts new file mode 100644 index 00000000000..2e29080de88 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/actions/index.ts @@ -0,0 +1 @@ +export * from './layout.actions'; diff --git a/npm/ng-packs/packages/theme-basic/src/lib/actions/layout.actions.ts b/npm/ng-packs/packages/theme-basic/src/lib/actions/layout.actions.ts new file mode 100644 index 00000000000..ddc901fc6e4 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/actions/layout.actions.ts @@ -0,0 +1,11 @@ +import { Layout } from '../models/layout'; + +export class LayoutAddNavigationElement { + static readonly type = '[Layout] Add Navigation Element'; + constructor(public payload: Layout.NavigationElement | Layout.NavigationElement[]) {} +} + +export class LayoutRemoveNavigationElementByName { + static readonly type = '[Layout] Remove Navigation ElementByName'; + constructor(public name: string) {} +} diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/change-password/change-password.component.html b/npm/ng-packs/packages/theme-basic/src/lib/components/change-password/change-password.component.html new file mode 100644 index 00000000000..d1dc99b1090 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/components/change-password/change-password.component.html @@ -0,0 +1,38 @@ + + +

    {{ 'AbpIdentity::ChangePassword' | abpLocalization }}

    +
    + +
    +
    + * +
    +
    + * +
    +
    + * +
    + {{ 'AbpIdentity::Identity.PasswordConfirmationFailed' | abpLocalization }} +
    +
    +
    +
    + + + {{ 'AbpIdentity::Save' | abpLocalization }} + +
    diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/change-password/change-password.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/change-password/change-password.component.ts new file mode 100644 index 00000000000..d26d81ef656 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/components/change-password/change-password.component.ts @@ -0,0 +1,97 @@ +import { ProfileChangePassword } from '@abp/ng.core'; +import { ToasterService } from '@abp/ng.theme.shared'; +import { + Component, + EventEmitter, + Input, + OnChanges, + OnInit, + Output, + SimpleChanges, + TemplateRef, + ViewChild, +} from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { comparePasswords } from '@ngx-validate/core'; +import { Store } from '@ngxs/store'; +import snq from 'snq'; + +const { minLength, required } = Validators; + +@Component({ + selector: 'abp-change-password', + templateUrl: './change-password.component.html', +}) +export class ChangePasswordComponent implements OnInit, OnChanges { + protected _visible; + + @Input() + get visible(): boolean { + return this._visible; + } + + set visible(value: boolean) { + this._visible = value; + this.visibleChange.emit(value); + } + + @Output() + visibleChange = new EventEmitter(); + + @ViewChild('modalContent', { static: false }) + modalContent: TemplateRef; + + form: FormGroup; + + constructor(private fb: FormBuilder, private store: Store, private toasterService: ToasterService) {} + + ngOnInit(): void { + this.form = this.fb.group( + { + password: ['', required], + newPassword: ['', required], + repeatNewPassword: ['', required], + }, + { + validators: [comparePasswords(['newPassword', 'repeatNewPassword'])], + }, + ); + } + + onSubmit() { + if (this.form.invalid) return; + + this.store + .dispatch( + new ProfileChangePassword({ + currentPassword: this.form.get('password').value, + newPassword: this.form.get('newPassword').value, + }), + ) + .subscribe({ + next: () => { + this.visible = false; + this.form.reset(); + }, + error: err => { + this.toasterService.error(snq(() => err.error.error.message, 'AbpAccount::DefaultErrorMessage'), 'Error', { + life: 7000, + }); + }, + }); + } + + openModal() { + this.visible = true; + } + + ngOnChanges({ visible }: SimpleChanges): void { + if (!visible) return; + + if (visible.currentValue) { + this.openModal(); + } else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + } +} diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/index.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/index.ts new file mode 100644 index 00000000000..39d04d163d9 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/components/index.ts @@ -0,0 +1,3 @@ +export * from './layout-account/layout-account.component'; +export * from './layout-application/layout-application.component'; +export * from './layout-empty/layout-empty.component'; diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/layout-account/layout-account.component.html b/npm/ng-packs/packages/theme-basic/src/lib/components/layout-account/layout-account.component.html new file mode 100644 index 00000000000..00d209e02ad --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/components/layout-account/layout-account.component.html @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/layout-account/layout-account.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/layout-account/layout-account.component.ts new file mode 100644 index 00000000000..32f358b8695 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/components/layout-account/layout-account.component.ts @@ -0,0 +1,13 @@ +import { Component } from '@angular/core'; +import { eLayoutType } from '@abp/ng.core'; + +@Component({ + selector: 'abp-layout-account', + templateUrl: './layout-account.component.html', +}) +export class LayoutAccountComponent { + // required for dynamic component + static type = eLayoutType.account; + + isCollapsed: boolean = false; +} diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/layout-application/layout-application.component.html b/npm/ng-packs/packages/theme-basic/src/lib/components/layout-application/layout-application.component.html new file mode 100644 index 00000000000..b1d5283246e --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/components/layout-application/layout-application.component.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/layout-application/layout-application.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/layout-application/layout-application.component.ts new file mode 100644 index 00000000000..9a948602e05 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/components/layout-application/layout-application.component.ts @@ -0,0 +1,174 @@ +import { + ABP, + ApplicationConfiguration, + ConfigGetAppConfiguration, + ConfigState, + eLayoutType, + SessionSetLanguage, + SessionState, + takeUntilDestroy, +} from '@abp/ng.core'; +import { + AfterViewInit, + Component, + OnDestroy, + QueryList, + TemplateRef, + TrackByFunction, + ViewChild, + ViewChildren, +} from '@angular/core'; +import { NgbDropdown } from '@ng-bootstrap/ng-bootstrap'; +import { Navigate, RouterState } from '@ngxs/router-plugin'; +import { Select, Store } from '@ngxs/store'; +import { OAuthService } from 'angular-oauth2-oidc'; +import compare from 'just-compare'; +import { fromEvent, Observable } from 'rxjs'; +import { debounceTime, filter, map } from 'rxjs/operators'; +import snq from 'snq'; +import { LayoutAddNavigationElement } from '../../actions'; +import { Layout } from '../../models/layout'; +import { LayoutState } from '../../states'; + +@Component({ + selector: 'abp-layout-application', + templateUrl: './layout-application.component.html', +}) +export class LayoutApplicationComponent implements AfterViewInit, OnDestroy { + // required for dynamic component + static type = eLayoutType.application; + + @Select(ConfigState.getOne('routes')) + routes$: Observable; + + @Select(ConfigState.getOne('currentUser')) + currentUser$: Observable; + + @Select(ConfigState.getDeep('localization.languages')) + languages$: Observable; + + @Select(LayoutState.getNavigationElements) + navElements$: Observable; + + @ViewChild('currentUser', { static: false, read: TemplateRef }) + currentUserRef: TemplateRef; + + @ViewChild('language', { static: false, read: TemplateRef }) + languageRef: TemplateRef; + + @ViewChildren('navbarRootDropdown', { read: NgbDropdown }) + navbarRootDropdowns: QueryList; + + isOpenChangePassword: boolean = false; + + isOpenProfile: boolean = false; + + isDropdownChildDynamic: boolean; + + get visibleRoutes$(): Observable { + return this.routes$.pipe(map(routes => getVisibleRoutes(routes))); + } + + get defaultLanguage$(): Observable { + return this.languages$.pipe( + map( + languages => snq(() => languages.find(lang => lang.cultureName === this.selectedLangCulture).displayName), + '', + ), + ); + } + + get dropdownLanguages$(): Observable { + return this.languages$.pipe( + map(languages => snq(() => languages.filter(lang => lang.cultureName !== this.selectedLangCulture)), []), + ); + } + + get selectedLangCulture(): string { + return this.store.selectSnapshot(SessionState.getLanguage); + } + + rightPartElements: TemplateRef[] = []; + + trackByFn: TrackByFunction = (_, item) => item.name; + + trackElementByFn: TrackByFunction = (_, element) => element; + + constructor(private store: Store, private oauthService: OAuthService) {} + + private checkWindowWidth() { + setTimeout(() => { + this.navbarRootDropdowns.forEach(item => { + item.close(); + }); + if (window.innerWidth < 768) { + this.isDropdownChildDynamic = false; + } else { + this.isDropdownChildDynamic = true; + } + }, 0); + } + + ngAfterViewInit() { + const navigations = this.store.selectSnapshot(LayoutState.getNavigationElements).map(({ name }) => name); + + if (navigations.indexOf('LanguageRef') < 0) { + this.store.dispatch( + new LayoutAddNavigationElement([ + { element: this.languageRef, order: 4, name: 'LanguageRef' }, + { element: this.currentUserRef, order: 5, name: 'CurrentUserRef' }, + ]), + ); + } + + this.navElements$ + .pipe( + map(elements => elements.map(({ element }) => element)), + filter(elements => !compare(elements, this.rightPartElements)), + takeUntilDestroy(this), + ) + .subscribe(elements => { + setTimeout(() => (this.rightPartElements = elements), 0); + }); + + this.checkWindowWidth(); + + fromEvent(window, 'resize') + .pipe( + takeUntilDestroy(this), + debounceTime(250), + ) + .subscribe(() => { + this.checkWindowWidth(); + }); + } + + ngOnDestroy() {} + + onChangeLang(cultureName: string) { + this.store.dispatch(new SessionSetLanguage(cultureName)); + this.store.dispatch(new ConfigGetAppConfiguration()); + } + + logout() { + this.oauthService.logOut(); + this.store.dispatch( + new Navigate(['/'], null, { + state: { redirectUrl: this.store.selectSnapshot(RouterState).state.url }, + }), + ); + this.store.dispatch(new ConfigGetAppConfiguration()); + } +} + +function getVisibleRoutes(routes: ABP.FullRoute[]) { + return routes.reduce((acc, val) => { + if (val.invisible) return acc; + + if (val.children && val.children.length) { + val.children = getVisibleRoutes(val.children); + } + + return [...acc, val]; + }, []); +} diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/layout-empty/layout-empty.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/layout-empty/layout-empty.component.ts new file mode 100644 index 00000000000..3c2186dd4a4 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/components/layout-empty/layout-empty.component.ts @@ -0,0 +1,14 @@ +import { Component } from '@angular/core'; +import { eLayoutType } from '@abp/ng.core'; + +@Component({ + selector: 'abp-layout-empty', + template: ` + Layout-empty + + `, +}) +export class LayoutEmptyComponent { + // required for dynamic component + static type = eLayoutType.empty; +} diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/layout/layout.component.html b/npm/ng-packs/packages/theme-basic/src/lib/components/layout/layout.component.html new file mode 100644 index 00000000000..0aebd0927b4 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/components/layout/layout.component.html @@ -0,0 +1,20 @@ + + +
    + +
    + + + diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/layout/layout.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/layout/layout.component.ts new file mode 100644 index 00000000000..8e5fddcc46f --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/components/layout/layout.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; +import { slideFromBottom } from '@abp/ng.theme.shared'; + +@Component({ + selector: ' abp-layout', + templateUrl: './layout.component.html', + animations: [slideFromBottom], +}) +export class LayoutComponent { + isCollapsed: boolean = false; +} diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/profile/profile.component.html b/npm/ng-packs/packages/theme-basic/src/lib/components/profile/profile.component.html new file mode 100644 index 00000000000..921d8006496 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/components/profile/profile.component.html @@ -0,0 +1,47 @@ + + +

    {{ 'AbpIdentity::PersonalInfo' | abpLocalization }}

    +
    + +
    +
    + * +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + * +
    +
    + +
    +
    +
    + + + {{ 'AbpIdentity::Save' | abpLocalization }} + +
    diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/profile/profile.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/profile/profile.component.ts new file mode 100644 index 00000000000..030e2399942 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/components/profile/profile.component.ts @@ -0,0 +1,78 @@ +import { Profile, ProfileGet, ProfileState, ProfileUpdate } from '@abp/ng.core'; +import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { Select, Store } from '@ngxs/store'; +import { Observable } from 'rxjs'; +import { take, withLatestFrom } from 'rxjs/operators'; + +const { maxLength, required, email } = Validators; + +@Component({ + selector: 'abp-profile', + templateUrl: './profile.component.html', +}) +export class ProfileComponent implements OnChanges { + protected _visible; + + @Input() + get visible(): boolean { + return this._visible; + } + + set visible(value: boolean) { + this._visible = value; + this.visibleChange.emit(value); + } + + @Output() + visibleChange = new EventEmitter(); + + @Select(ProfileState.getProfile) + profile$: Observable; + + form: FormGroup; + + constructor(private fb: FormBuilder, private store: Store) {} + + buildForm() { + this.store + .dispatch(new ProfileGet()) + .pipe( + withLatestFrom(this.profile$), + take(1), + ) + .subscribe(([, profile]) => { + this.form = this.fb.group({ + userName: [profile.userName, [required, maxLength(256)]], + email: [profile.email, [required, email, maxLength(256)]], + name: [profile.name || '', [maxLength(64)]], + surname: [profile.surname || '', [maxLength(64)]], + phoneNumber: [profile.phoneNumber || '', [maxLength(16)]], + }); + }); + } + + onSubmit() { + if (this.form.invalid) return; + + this.store.dispatch(new ProfileUpdate(this.form.value)).subscribe(() => { + this.visible = false; + this.form.reset(); + }); + } + + openModal() { + this.buildForm(); + this.visible = true; + } + + ngOnChanges({ visible }: SimpleChanges): void { + if (!visible) return; + + if (visible.currentValue) { + this.openModal(); + } else if (visible.currentValue === false && this.visible) { + this.visible = false; + } + } +} diff --git a/npm/ng-packs/packages/theme-basic/src/lib/models/index.ts b/npm/ng-packs/packages/theme-basic/src/lib/models/index.ts new file mode 100644 index 00000000000..5d15fe1b3ce --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/models/index.ts @@ -0,0 +1 @@ +export * from './layout'; diff --git a/npm/ng-packs/packages/theme-basic/src/lib/models/layout.ts b/npm/ng-packs/packages/theme-basic/src/lib/models/layout.ts new file mode 100644 index 00000000000..e2636e4f530 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/models/layout.ts @@ -0,0 +1,13 @@ +import { TemplateRef } from '@angular/core'; + +export namespace Layout { + export interface State { + navigationElements: NavigationElement[]; + } + + export interface NavigationElement { + name: string; + element: TemplateRef; + order?: number; + } +} diff --git a/npm/ng-packs/packages/theme-basic/src/lib/states/index.ts b/npm/ng-packs/packages/theme-basic/src/lib/states/index.ts new file mode 100644 index 00000000000..71bff26b8ba --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/states/index.ts @@ -0,0 +1 @@ +export * from "./layout.state"; diff --git a/npm/ng-packs/packages/theme-basic/src/lib/states/layout.state.ts b/npm/ng-packs/packages/theme-basic/src/lib/states/layout.state.ts new file mode 100644 index 00000000000..97a08254811 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/states/layout.state.ts @@ -0,0 +1,63 @@ +import { State, Action, StateContext, Selector } from '@ngxs/store'; +import { LayoutAddNavigationElement, LayoutRemoveNavigationElementByName } from '../actions/layout.actions'; +import { Layout } from '../models/layout'; +import { TemplateRef } from '@angular/core'; +import snq from 'snq'; + +@State({ + name: 'LayoutState', + defaults: { navigationElements: [] } as Layout.State, +}) +export class LayoutState { + @Selector() + static getNavigationElements({ navigationElements }: Layout.State): Layout.NavigationElement[] { + return navigationElements; + } + + @Action(LayoutAddNavigationElement) + layoutAddAction({ getState, patchState }: StateContext, { payload = [] }: LayoutAddNavigationElement) { + let { navigationElements } = getState(); + + if (!Array.isArray(payload)) { + payload = [payload]; + } + + if (navigationElements.length) { + payload = snq( + () => + (payload as Layout.NavigationElement[]).filter( + ({ name }) => navigationElements.findIndex(nav => nav.name === name) < 0, + ), + [], + ); + } + + if (!payload.length) return; + + navigationElements = [...navigationElements, ...payload] + .map(element => ({ ...element, order: element.order || 99 })) + .sort((a, b) => a.order - b.order); + + return patchState({ + navigationElements, + }); + } + + @Action(LayoutRemoveNavigationElementByName) + layoutRemoveAction( + { getState, patchState }: StateContext, + { name }: LayoutRemoveNavigationElementByName, + ) { + let { navigationElements } = getState(); + + const index = navigationElements.findIndex(element => element.name === name); + + if (index > -1) { + navigationElements = navigationElements.splice(index, 1); + } + + return patchState({ + navigationElements, + }); + } +} diff --git a/npm/ng-packs/packages/theme-basic/src/lib/theme-basic.module.ts b/npm/ng-packs/packages/theme-basic/src/lib/theme-basic.module.ts new file mode 100644 index 00000000000..4175cdbd136 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/lib/theme-basic.module.ts @@ -0,0 +1,32 @@ +import { CoreModule } from '@abp/ng.core'; +import { NgModule } from '@angular/core'; +import { NgbCollapseModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { ChangePasswordComponent } from './components/change-password/change-password.component'; +import { LayoutAccountComponent } from './components/layout-account/layout-account.component'; +import { LayoutApplicationComponent } from './components/layout-application/layout-application.component'; +import { LayoutEmptyComponent } from './components/layout-empty/layout-empty.component'; +import { LayoutComponent } from './components/layout/layout.component'; +import { ProfileComponent } from './components/profile/profile.component'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { ToastModule } from 'primeng/toast'; +import { NgxValidateCoreModule } from '@ngx-validate/core'; +import { NgxsModule } from '@ngxs/store'; +import { LayoutState } from './states/layout.state'; + +export const LAYOUTS = [LayoutApplicationComponent, LayoutAccountComponent, LayoutEmptyComponent]; + +@NgModule({ + declarations: [...LAYOUTS, LayoutComponent, ChangePasswordComponent, ProfileComponent], + imports: [ + CoreModule, + ThemeSharedModule, + NgbCollapseModule, + NgbDropdownModule, + ToastModule, + NgxValidateCoreModule, + NgxsModule.forFeature([LayoutState]), + ], + exports: [...LAYOUTS], + entryComponents: [...LAYOUTS], +}) +export class ThemeBasicModule {} diff --git a/npm/ng-packs/packages/theme-basic/src/public-api.ts b/npm/ng-packs/packages/theme-basic/src/public-api.ts new file mode 100644 index 00000000000..b1316143c01 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/public-api.ts @@ -0,0 +1,9 @@ +/* + * Public API Surface of theme-basic + */ + +export * from './lib/theme-basic.module'; +export * from './lib/actions'; +export * from './lib/components'; +export * from './lib/models'; +export * from './lib/states'; diff --git a/npm/ng-packs/packages/theme-basic/src/test.ts b/npm/ng-packs/packages/theme-basic/src/test.ts new file mode 100644 index 00000000000..978c64fb83f --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/src/test.ts @@ -0,0 +1,21 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/npm/ng-packs/packages/theme-basic/tsconfig.lib.json b/npm/ng-packs/packages/theme-basic/tsconfig.lib.json new file mode 100644 index 00000000000..2972099ba19 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/tsconfig.lib.json @@ -0,0 +1,20 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": ["dom", "es2018"] + }, + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true, + "enableResourceInlining": true + }, + "exclude": ["src/test.ts", "**/*.spec.ts"] +} diff --git a/npm/ng-packs/packages/theme-basic/tsconfig.spec.json b/npm/ng-packs/packages/theme-basic/tsconfig.spec.json new file mode 100644 index 00000000000..16da33db072 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/npm/ng-packs/packages/theme-basic/tslint.json b/npm/ng-packs/packages/theme-basic/tslint.json new file mode 100644 index 00000000000..8c3919ea624 --- /dev/null +++ b/npm/ng-packs/packages/theme-basic/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "abp", + "camelCase" + ], + "component-selector": [ + true, + "element", + "abp", + "kebab-case" + ] + } +} diff --git a/npm/ng-packs/packages/theme-shared/README.md b/npm/ng-packs/packages/theme-shared/README.md new file mode 100644 index 00000000000..0e215e6579e --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/README.md @@ -0,0 +1 @@ +

    @abp/ng.theme.shared

    diff --git a/npm/ng-packs/packages/theme-shared/karma.conf.js b/npm/ng-packs/packages/theme-shared/karma.conf.js new file mode 100644 index 00000000000..5703b124a6e --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function(config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma'), + ], + client: { + clearContext: false, // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/theme-shared'), + reports: ['html', 'lcovonly'], + fixWebpackSourcePaths: true, + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true, + }); +}; diff --git a/npm/ng-packs/packages/theme-shared/ng-package.json b/npm/ng-packs/packages/theme-shared/ng-package.json new file mode 100644 index 00000000000..bcd238cd364 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/ng-package.json @@ -0,0 +1,18 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/theme-shared", + "lib": { + "entryFile": "src/public-api.ts" + }, + "whitelistedNonPeerDependencies": [ + "@abp/ng.core", + "@angular/cdk", + "@ng-bootstrap/ng-bootstrap", + "@ngx-validate/core", + "bootstrap", + "font-awesome", + "ngx-perfect-scrollbar", + "primeicons", + "primeng" + ] +} diff --git a/npm/ng-packs/packages/theme-shared/package.json b/npm/ng-packs/packages/theme-shared/package.json new file mode 100644 index 00000000000..c3f9eb5f691 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/package.json @@ -0,0 +1,18 @@ +{ + "name": "@abp/ng.theme.shared", + "version": "0.8.0", + "dependencies": { + "@abp/ng.core": "^0.8.0", + "@angular/cdk": "^8.0.1", + "@ng-bootstrap/ng-bootstrap": "^5.1.0", + "@ngx-validate/core": "^0.0.4", + "bootstrap": "^4.3.1", + "font-awesome": "^4.7.0", + "ngx-perfect-scrollbar": "^8.0.0", + "primeicons": "^1.0.0", + "primeng": "^8.0.0" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/abstracts/toaster.ts b/npm/ng-packs/packages/theme-shared/src/lib/abstracts/toaster.ts new file mode 100644 index 00000000000..ece1288c7ad --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/abstracts/toaster.ts @@ -0,0 +1,49 @@ +import { MessageService } from 'primeng/components/common/messageservice'; +import { Observable, Subject } from 'rxjs'; +import { Toaster } from '../models/toaster'; + +export class AbstractToaster { + status$: Subject; + + key: string = 'abpToast'; + + sticky: boolean = false; + + constructor(protected messageService: MessageService) {} + info(message: string, title: string, options?: T): Observable { + return this.show(message, title, 'info', options); + } + + success(message: string, title: string, options?: T): Observable { + return this.show(message, title, 'success', options); + } + + warn(message: string, title: string, options?: T): Observable { + return this.show(message, title, 'warn', options); + } + + error(message: string, title: string, options?: T): Observable { + return this.show(message, title, 'error', options); + } + + protected show(message: string, title: string, severity: Toaster.Severity, options?: T): Observable { + this.messageService.clear(this.key); + + this.messageService.add({ + severity, + detail: message, + summary: title, + ...options, + key: this.key, + ...(typeof (options || ({} as any)).sticky === 'undefined' && { sticky: this.sticky }), + }); + this.status$ = new Subject(); + return this.status$; + } + + clear(status?: Toaster.Status) { + this.messageService.clear(this.key); + this.status$.next(status || Toaster.Status.dismiss); + this.status$.complete(); + } +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/animations/index.ts b/npm/ng-packs/packages/theme-shared/src/lib/animations/index.ts new file mode 100644 index 00000000000..6fd1d939c45 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/animations/index.ts @@ -0,0 +1 @@ +export * from './slide.animation'; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/animations/slide.animation.ts b/npm/ng-packs/packages/theme-shared/src/lib/animations/slide.animation.ts new file mode 100644 index 00000000000..90f46662bec --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/animations/slide.animation.ts @@ -0,0 +1,6 @@ +import { animate, state, style, transition, trigger, query } from '@angular/animations'; +export const slideFromBottom = trigger('routeAnimations', [ + state('void', style({ 'margin-top': '20px', opacity: '0' })), + state('*', style({ 'margin-top': '0px', opacity: '1' })), + transition(':enter', [animate('0.2s ease-out', style({ opacity: '1', 'margin-top': '0px' }))]), +]); diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/button/button.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/button/button.component.ts new file mode 100644 index 00000000000..ca6f516d58d --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/button/button.component.ts @@ -0,0 +1,68 @@ +import { LoaderStart, LoaderStop } from '@abp/ng.core'; +import { Component, Input, OnInit } from '@angular/core'; +import { Actions, ofActionSuccessful } from '@ngxs/store'; +import { filter } from 'rxjs/operators'; + +@Component({ + selector: 'abp-button', + template: ` + + `, +}) +export class ButtonComponent implements OnInit { + @Input() + buttonClass: string = 'btn btn-primary'; + + @Input() + buttonType: string = 'button'; + + @Input() + iconClass: string; + + @Input() + loading: boolean = false; + + @Input() + requestType: string | string[]; + + @Input() + requestURLContainSearchValue: string; + + get icon(): string { + return `${this.loading ? 'fa fa-spin fa-spinner' : this.iconClass || 'd-none'}`; + } + + constructor(private actions: Actions) {} + + ngOnInit(): void { + if (this.requestType || this.requestURLContainSearchValue) { + this.actions + .pipe( + ofActionSuccessful(LoaderStart, LoaderStop), + filter((event: LoaderStart | LoaderStop) => { + let condition = true; + if (this.requestType) { + if (!Array.isArray(this.requestType)) this.requestType = [this.requestType]; + + condition = + condition && + this.requestType.findIndex(type => type.toLowerCase() === event.payload.method.toLowerCase()) > -1; + } + + if (condition && this.requestURLContainSearchValue) { + condition = + condition && + event.payload.url.toLowerCase().indexOf(this.requestURLContainSearchValue.toLowerCase()) > -1; + } + + return condition; + }), + ) + .subscribe(() => { + this.loading = !this.loading; + }); + } + } +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.ts new file mode 100644 index 00000000000..6c3b9254c46 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.ts @@ -0,0 +1,48 @@ +import { Component } from '@angular/core'; +import { ConfirmationService } from '../../services/confirmation.service'; +import { Toaster } from '../../models/toaster'; + +@Component({ + selector: 'abp-confirmation', + template: ` + + + + + + + + + `, +}) +export class ConfirmationComponent { + confirm = Toaster.Status.confirm; + reject = Toaster.Status.reject; + dismiss = Toaster.Status.dismiss; + + constructor(private confirmationService: ConfirmationService) {} + + close(status: Toaster.Status) { + this.confirmationService.clear(status); + } +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/errors/error.component.scss b/npm/ng-packs/packages/theme-shared/src/lib/components/errors/error.component.scss new file mode 100644 index 00000000000..a98b5a3ca69 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/errors/error.component.scss @@ -0,0 +1,15 @@ +.error { + position: fixed; + top: 0; + background-color: #fff; + width: 100vw; + height: 100vh; + z-index: 999999; +} + +.centered { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/errors/error.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/errors/error.component.ts new file mode 100644 index 00000000000..708b48dc47e --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/errors/error.component.ts @@ -0,0 +1,45 @@ +import { Component, Renderer2, ElementRef } from '@angular/core'; + +@Component({ + selector: 'abp-error', + template: ` +
    + +
    +
    +
    +

    + {{ title | abpLocalization }} +

    +
    + {{ details | abpLocalization }} +
    + +
    +
    +
    +
    + `, + styleUrls: ['error.component.scss'], +}) +export class ErrorComponent { + title = 'Oops!'; + + details = 'Sorry, an error has occured.'; + + renderer: Renderer2; + + elementRef: ElementRef; + + host: any; + + destroy() { + this.renderer.removeChild(this.host, this.elementRef.nativeElement); + } +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/errors/validation-error.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/errors/validation-error.component.ts new file mode 100644 index 00000000000..7590d74b91b --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/errors/validation-error.component.ts @@ -0,0 +1,32 @@ +import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core'; +import { Validation, ValidationErrorComponent as ErrorComponent } from '@ngx-validate/core'; + +@Component({ + selector: 'abp-validation-error', + template: ` +
    + {{ error.message | abpLocalization: error.interpoliteParams }} +
    + `, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, +}) +export class ValidationErrorComponent extends ErrorComponent { + get abpErrors(): Validation.Error[] & { interpoliteParams?: string[] } { + return this.validationErrors.map(error => { + if (!error.message) return error; + + const index = error.message.indexOf('['); + + if (index > -1) { + return { + ...error, + message: error.message.slice(0, index), + interpoliteParams: error.message.slice(index + 1, error.message.length - 1).split(','), + }; + } + + return error; + }); + } +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/index.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/index.ts new file mode 100644 index 00000000000..2e559f366f8 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/index.ts @@ -0,0 +1,5 @@ +export * from './button/button.component'; +export * from './confirmation/confirmation.component'; +export * from './loader-bar/loader-bar.component'; +export * from './modal/modal.component'; +export * from './toast/toast.component'; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/loader-bar/loader-bar.component.scss b/npm/ng-packs/packages/theme-shared/src/lib/components/loader-bar/loader-bar.component.scss new file mode 100644 index 00000000000..a5031940a05 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/loader-bar/loader-bar.component.scss @@ -0,0 +1,23 @@ +.abp-loader-bar { + left: 0; + opacity: 0; + position: fixed; + top: 0; + transition: opacity 0.4s linear 0.4s; + z-index: 99999; + + &.is-loading { + opacity: 1; + transition: none; + } + + .abp-progress { + background: #77b6ff; + box-shadow: 0 0 10px rgba(119, 182, 255, 0.7); + height: 2px; + left: 0; + position: fixed; + top: 0; + transition: width 0.4s ease; + } +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/loader-bar/loader-bar.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/loader-bar/loader-bar.component.ts new file mode 100644 index 00000000000..a76e051db29 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/loader-bar/loader-bar.component.ts @@ -0,0 +1,85 @@ +import { Component, OnInit, Input, OnDestroy } from '@angular/core'; +import { Actions, ofActionSuccessful } from '@ngxs/store'; +import { LoaderStart, LoaderStop } from '@abp/ng.core'; +import { filter } from 'rxjs/operators'; +import { Router, NavigationStart, NavigationEnd } from '@angular/router'; +import { takeUntilDestroy } from '@ngx-validate/core'; + +@Component({ + selector: 'abp-loader-bar', + template: ` +
    +
    +
    + `, + styleUrls: ['./loader-bar.component.scss'], +}) +export class LoaderBarComponent implements OnDestroy { + @Input() + containerClass: string = 'abp-loader-bar'; + + @Input() + progressClass: string = 'abp-progress'; + + @Input() + isLoading: boolean = false; + + @Input() + filter = (action: LoaderStart | LoaderStop) => action.payload.url.indexOf('openid-configuration') < 0; + + progressLevel: number = 0; + + interval: any; + + constructor(private actions: Actions, private router: Router) { + actions + .pipe( + ofActionSuccessful(LoaderStart, LoaderStop), + filter(this.filter), + takeUntilDestroy(this), + ) + .subscribe(action => { + if (action instanceof LoaderStart) this.startLoading(); + else this.stopLoading(); + }); + + router.events + .pipe( + filter(event => event instanceof NavigationStart || event instanceof NavigationEnd), + takeUntilDestroy(this), + ) + .subscribe(event => { + if (event instanceof NavigationStart) this.startLoading(); + else this.stopLoading(); + }); + } + + ngOnDestroy() {} + + startLoading() { + this.isLoading = true; + const interval = setInterval(() => { + if (this.progressLevel < 75) { + this.progressLevel += Math.random() * 10; + } else if (this.progressLevel < 90) { + this.progressLevel += 0.4; + } else if (this.progressLevel < 100) { + this.progressLevel += 0.1; + } else { + clearInterval(interval); + } + }, 300); + + this.interval = interval; + } + + stopLoading() { + clearInterval(this.interval); + this.progressLevel = 100; + this.isLoading = false; + + setTimeout(() => { + this.progressLevel = 0; + }, 800); + } +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/modal/README.md b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/README.md new file mode 100644 index 00000000000..cf51e038452 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/README.md @@ -0,0 +1,25 @@ +

     Abp Modal

    + +Example Usage: + +```html + + +

    Modal Title

    +
    + + +
    + + +
    +
    + + + + + +
    + + +``` diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.html b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.html new file mode 100644 index 00000000000..559bc6b4294 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.html @@ -0,0 +1,39 @@ + diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts new file mode 100644 index 00000000000..599f2d9d795 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts @@ -0,0 +1,174 @@ +import { + Component, + ContentChild, + ElementRef, + EventEmitter, + Input, + OnDestroy, + Output, + Renderer2, + TemplateRef, + ViewChild, +} from '@angular/core'; +import { fromEvent, Subject, timer } from 'rxjs'; +import { debounceTime, filter, take, takeUntil } from 'rxjs/operators'; +import { ConfirmationService } from '../../services/confirmation.service'; +import { Toaster } from '../../models/toaster'; + +export type ModalSize = 'sm' | 'md' | 'lg' | 'xl'; + +const ANIMATION_TIMEOUT = 200; + +@Component({ + selector: 'abp-modal', + templateUrl: './modal.component.html', +}) +export class ModalComponent implements OnDestroy { + @Input() + get visible(): boolean { + return this._visible; + } + set visible(value: boolean) { + if (typeof value !== 'boolean') return; + + if (!this.modalContent) { + if (value) { + setTimeout(() => { + this.showModal = value; + this.visible = value; + }, 0); + } + return; + } + + if (value) { + this.setVisible(value); + this.listen(); + } else { + this.closable = false; + this.renderer.addClass(this.modalContent.nativeElement, 'fade-out-top'); + setTimeout(() => { + this.setVisible(value); + // this.renderer.removeClass(this.modalContent.nativeElement, 'fade-out-top'); + this.ngOnDestroy(); + }, ANIMATION_TIMEOUT - 10); + } + } + + @Input() centered: boolean = false; + + @Input() modalClass: string = ''; + + @Input() size: ModalSize = 'lg'; + + @Output() visibleChange = new EventEmitter(); + + @Input() height: number; + + @Input() minHeight: number; + + @Output() init = new EventEmitter(); + + @ContentChild('abpHeader', { static: false }) abpHeader: TemplateRef; + + @ContentChild('abpBody', { static: false }) abpBody: TemplateRef; + + @ContentChild('abpFooter', { static: false }) abpFooter: TemplateRef; + + @ContentChild('abpClose', { static: false, read: ElementRef }) abpClose: ElementRef; + + @ViewChild('abpModalContent', { static: false }) modalContent: ElementRef; + + _visible: boolean = false; + + showModal: boolean = false; + + isOpenConfirmation: boolean = false; + + closable: boolean = false; + + destroy$ = new Subject(); + + constructor(private renderer: Renderer2, private confirmationService: ConfirmationService) {} + + ngOnDestroy(): void { + this.destroy$.next(); + } + + setVisible(value: boolean) { + this._visible = value; + this.visibleChange.emit(value); + this.showModal = value; + + value + ? timer(ANIMATION_TIMEOUT + 100) + .pipe(take(1)) + .subscribe(_ => (this.closable = true)) + : (this.closable = false); + } + + listen() { + fromEvent(document, 'keyup') + .pipe( + takeUntil(this.destroy$), + debounceTime(250), + filter((key: KeyboardEvent) => key && key.code === 'Escape' && this.closable), + ) + .subscribe(_ => { + this.close(); + }); + + setTimeout(() => { + if (!this.abpClose) return; + + fromEvent(this.abpClose.nativeElement, 'click') + .pipe( + takeUntil(this.destroy$), + filter(() => !!(this.closable && this.modalContent)), + ) + .subscribe(() => this.close()); + }, 0); + + this.init.emit(); + } + + close() { + const nodes = getFlatNodes( + (this.modalContent.nativeElement.querySelector('#abp-modal-body') as HTMLElement).childNodes, + ); + + if (hasNgDirty(nodes)) { + if (this.isOpenConfirmation) return; + + this.isOpenConfirmation = true; + this.confirmationService + .warn('AbpAccount::AreYouSureYouWantToCancelEditingWarningMessage', 'AbpAccount::AreYouSure') + .subscribe((status: Toaster.Status) => { + timer(ANIMATION_TIMEOUT).subscribe(() => { + this.isOpenConfirmation = false; + }); + + if (status === Toaster.Status.confirm) { + this.visible = false; + } + }); + } else { + this.visible = false; + } + } + + onClickBackdrop() { + this.close(); + } +} + +function getFlatNodes(nodes: NodeList): HTMLElement[] { + return Array.from(nodes).reduce( + (acc, val) => [...acc, ...(val.childNodes && val.childNodes.length ? getFlatNodes(val.childNodes) : [val])], + [], + ); +} + +function hasNgDirty(nodes: HTMLElement[]) { + return nodes.findIndex(node => (node.className || '').indexOf('ng-dirty') > -1) > -1; +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.ts new file mode 100644 index 00000000000..12005e49358 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.ts @@ -0,0 +1,25 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'abp-toast', + template: ` + + + +
    +
    {{ message.summary | abpLocalization: message.titleLocalizationParams }}
    +
    {{ message.detail | abpLocalization: message.messageLocalizationParams }}
    +
    +
    +
    + `, +}) +export class ToastComponent {} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/contants/scripts.ts b/npm/ng-packs/packages/theme-shared/src/lib/contants/scripts.ts new file mode 100644 index 00000000000..1bc3ad0fa93 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/contants/scripts.ts @@ -0,0 +1 @@ +export default ``; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/contants/styles.ts b/npm/ng-packs/packages/theme-shared/src/lib/contants/styles.ts new file mode 100644 index 00000000000..2ccca530067 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/contants/styles.ts @@ -0,0 +1,74 @@ +export default ` +.is-invalid .form-control { + border-color: #dc3545; + border-style: solid !important; +} + +.is-invalid .invalid-feedback, +.is-invalid + * .invalid-feedback { + display: block; +} + +.data-tables-filter { + text-align: right; +} + +.pointer { + cursor: pointer; +} + +.navbar .dropdown-submenu a::after { + transform: rotate(-90deg); + position: absolute; + right: 16px; + top: 18px; +} + +.navbar .dropdown-menu { + min-width: 220px; +} + +.modal { + background-color: rgba(0, 0, 0, .6); +} + +.abp-ellipsis { + display: inline-block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +/* { + const { payload: err = {} as HttpErrorResponse | any } = res; + const body = snq(() => (err as HttpErrorResponse).error.error, DEFAULTS.defaultError.message); + + if (err.headers.get('_AbpErrorFormat')) { + const confirmation$ = this.showError(null, null, body); + + if (err.status === 401) { + confirmation$.subscribe(() => { + this.navigateToLogin(); + }); + } + } else { + switch ((err as HttpErrorResponse).status) { + case 401: + this.showError(DEFAULTS.defaultError401.details, DEFAULTS.defaultError401.message).subscribe(() => + this.navigateToLogin(), + ); + break; + case 403: + this.createErrorComponent({ + title: DEFAULTS.defaultError403.message, + details: DEFAULTS.defaultError403.details, + }); + break; + case 404: + this.showError(DEFAULTS.defaultError404.details, DEFAULTS.defaultError404.message); + break; + case 500: + this.createErrorComponent({ + title: '500', + details: 'AbpAccount::InternalServerErrorMessage', + }); + break; + case 0: + if ((err as HttpErrorResponse).statusText === 'Unknown Error') { + this.createErrorComponent({ + title: 'Unknown Error', + details: 'AbpAccount::InternalServerErrorMessage', + }); + } + break; + default: + this.showError(DEFAULTS.defaultError.details, DEFAULTS.defaultError.message); + break; + } + } + }); + } + + private showError(message?: string, title?: string, body?: any): Observable { + if (body) { + if (body.details) { + message = body.details; + title = body.message; + } else { + message = body.message || DEFAULTS.defaultError.message; + } + } + + return this.confirmationService.error(message, title, { + hideCancelBtn: true, + yesCopy: 'OK', + }); + } + + private navigateToLogin() { + this.store.dispatch( + new Navigate(['/account/login'], null, { + state: { redirectUrl: this.store.selectSnapshot(RouterState).state.url }, + }), + ); + } + + createErrorComponent(instance: Partial) { + const renderer = this.rendererFactory.createRenderer(null, null); + const host = renderer.selectRootElement('app-root', true); + + const componentRef = this.cfRes.resolveComponentFactory(ErrorComponent).create(this.injector); + + for (const key in componentRef.instance) { + if (componentRef.instance.hasOwnProperty(key)) { + componentRef.instance[key] = instance[key]; + } + } + + this.appRef.attachView(componentRef.hostView); + renderer.appendChild(host, (componentRef.hostView as EmbeddedViewRef).rootNodes[0]); + + componentRef.instance.renderer = renderer; + componentRef.instance.elementRef = componentRef.location; + componentRef.instance.host = host; + } +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/handlers/index.ts b/npm/ng-packs/packages/theme-shared/src/lib/handlers/index.ts new file mode 100644 index 00000000000..7b46abdd694 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/handlers/index.ts @@ -0,0 +1 @@ +export * from './error.handler'; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/models/confirmation.ts b/npm/ng-packs/packages/theme-shared/src/lib/models/confirmation.ts new file mode 100644 index 00000000000..86aaf64eb90 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/models/confirmation.ts @@ -0,0 +1,10 @@ +import { Toaster } from './toaster'; + +export namespace Confirmation { + export interface Options extends Toaster.Options { + hideCancelBtn?: boolean; + hideYesBtn?: boolean; + cancelCopy?: string; + yesCopy?: string; + } +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts b/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts new file mode 100644 index 00000000000..2da3330aa7c --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts @@ -0,0 +1,2 @@ +export * from './confirmation'; +export * from './toaster'; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/models/toaster.ts b/npm/ng-packs/packages/theme-shared/src/lib/models/toaster.ts new file mode 100644 index 00000000000..f029911daeb --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/models/toaster.ts @@ -0,0 +1,19 @@ +export namespace Toaster { + export interface Options { + id?: any; + closable?: boolean; + life?: number; + sticky?: boolean; + data?: any; + messageLocalizationParams?: string[]; + titleLocalizationParams?: string[]; + } + + export type Severity = 'success' | 'info' | 'warn' | 'error'; + + export const enum Status { + confirm = 'confirm', + reject = 'reject', + dismiss = 'dismiss', + } +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/services/confirmation.service.ts b/npm/ng-packs/packages/theme-shared/src/lib/services/confirmation.service.ts new file mode 100644 index 00000000000..f0376dc038d --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/services/confirmation.service.ts @@ -0,0 +1,10 @@ +import { Injectable } from '@angular/core'; +import { AbstractToaster } from '../abstracts/toaster'; +import { Confirmation } from '../models/confirmation'; + +@Injectable({ providedIn: 'root' }) +export class ConfirmationService extends AbstractToaster { + key: string = 'abpConfirmation'; + + sticky: boolean = true; +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/services/index.ts b/npm/ng-packs/packages/theme-shared/src/lib/services/index.ts new file mode 100644 index 00000000000..c53455a433c --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/services/index.ts @@ -0,0 +1,2 @@ +export * from './confirmation.service'; +export * from './toaster.service'; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/services/toaster.service.ts b/npm/ng-packs/packages/theme-shared/src/lib/services/toaster.service.ts new file mode 100644 index 00000000000..00cf9c725fd --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/services/toaster.service.ts @@ -0,0 +1,10 @@ +import { Injectable } from '@angular/core'; +import { AbstractToaster } from '../abstracts/toaster'; +import { Message } from 'primeng/components/common/message'; + +@Injectable({ providedIn: 'root' }) +export class ToasterService extends AbstractToaster { + addAll(messages: Message[]): void { + this.messageService.addAll(messages.map(message => ({ key: this.key, ...message }))); + } +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts new file mode 100644 index 00000000000..bf2b9e411ae --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts @@ -0,0 +1,83 @@ +import { CoreModule, LazyLoadService } from '@abp/ng.core'; +import { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core'; +import { NgbModalModule } from '@ng-bootstrap/ng-bootstrap'; +import { NgxValidateCoreModule } from '@ngx-validate/core'; +import { MessageService } from 'primeng/components/common/messageservice'; +import { ToastModule } from 'primeng/toast'; +import { forkJoin } from 'rxjs'; +import { take } from 'rxjs/operators'; +import { ConfirmationComponent } from './components/confirmation/confirmation.component'; +import { ErrorComponent } from './components/errors/error.component'; +import { LoaderBarComponent } from './components/loader-bar/loader-bar.component'; +import { ModalComponent } from './components/modal/modal.component'; +import { ToastComponent } from './components/toast/toast.component'; +import styles from './contants/styles'; +import { ErrorHandler } from './handlers/error.handler'; +import { ButtonComponent } from './components/button/button.component'; +import { ValidationErrorComponent } from './components/errors/validation-error.component'; + +export function appendScript(injector: Injector) { + const fn = function() { + const lazyLoadService: LazyLoadService = injector.get(LazyLoadService); + + return forkJoin( + lazyLoadService.load( + null, + 'style', + styles, + 'head', + 'afterbegin', + ) /* lazyLoadService.load(null, 'script', scripts) */, + ).pipe(take(1)); + }; + + return fn; +} + +@NgModule({ + imports: [ + CoreModule, + ToastModule, + NgbModalModule, + NgxValidateCoreModule.forRoot({ + targetSelector: '.form-group', + blueprints: { + email: `AbpAccount::ThisFieldIsNotAValidEmailAddress.`, + max: `AbpAccount::ThisFieldMustBeAStringWithAMaximumLengthOf{1}[{{ max }}]`, + maxlength: `AbpAccount::ThisFieldMustBeAStringWithAMaximumLengthOf{1}[{{ requiredLength }}]`, + min: `AbpAccount::ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}[{{ min }},{{ max }}]`, + minlength: `AbpAccount::ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}[{{ min }},{{ max }}]`, + required: `AbpAccount::ThisFieldIsRequired.`, + passwordMismatch: `AbpIdentity::Identity.PasswordConfirmationFailed`, + }, + errorTemplate: ValidationErrorComponent, + }), + ], + declarations: [ + ButtonComponent, + ConfirmationComponent, + ToastComponent, + ModalComponent, + ErrorComponent, + LoaderBarComponent, + ValidationErrorComponent, + ], + exports: [NgbModalModule, ButtonComponent, ConfirmationComponent, ToastComponent, ModalComponent, LoaderBarComponent], + entryComponents: [ErrorComponent, ValidationErrorComponent], +}) +export class ThemeSharedModule { + static forRoot(): ModuleWithProviders { + return { + ngModule: ThemeSharedModule, + providers: [ + { + provide: APP_INITIALIZER, + multi: true, + deps: [Injector, ErrorHandler], + useFactory: appendScript, + }, + { provide: MessageService, useClass: MessageService }, + ], + }; + } +} diff --git a/npm/ng-packs/packages/theme-shared/src/public-api.ts b/npm/ng-packs/packages/theme-shared/src/public-api.ts new file mode 100644 index 00000000000..6a9eae0f648 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/public-api.ts @@ -0,0 +1,9 @@ +/* + * Public API Surface of theme-shared + */ + +export * from './lib/theme-shared.module'; +export * from './lib/animations'; +export * from './lib/components'; +export * from './lib/models'; +export * from './lib/services'; diff --git a/npm/ng-packs/packages/theme-shared/src/test.ts b/npm/ng-packs/packages/theme-shared/src/test.ts new file mode 100644 index 00000000000..978c64fb83f --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/test.ts @@ -0,0 +1,21 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/npm/ng-packs/packages/theme-shared/tsconfig.lib.json b/npm/ng-packs/packages/theme-shared/tsconfig.lib.json new file mode 100644 index 00000000000..2972099ba19 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/tsconfig.lib.json @@ -0,0 +1,20 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": ["dom", "es2018"] + }, + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true, + "enableResourceInlining": true + }, + "exclude": ["src/test.ts", "**/*.spec.ts"] +} diff --git a/npm/ng-packs/packages/theme-shared/tsconfig.spec.json b/npm/ng-packs/packages/theme-shared/tsconfig.spec.json new file mode 100644 index 00000000000..16da33db072 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/npm/ng-packs/packages/theme-shared/tslint.json b/npm/ng-packs/packages/theme-shared/tslint.json new file mode 100644 index 00000000000..124133f8499 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/npm/ng-packs/scripts/.yarn.js b/npm/ng-packs/scripts/.yarn.js new file mode 100644 index 00000000000..1961f886a55 --- /dev/null +++ b/npm/ng-packs/scripts/.yarn.js @@ -0,0 +1,28 @@ +"use strict" + +const child_process = require("child_process") +const { env } = process +const { parent } = module + +const REQUIRE_ESM = "--require esm" +const REQUIRE_DOT_YARN = "--require ./.yarn.js" + +let { NODE_OPTIONS } = env + +if (typeof NODE_OPTIONS === "string") { + NODE_OPTIONS += " " +} else { + NODE_OPTIONS = "" +} + +if (parent != null && + parent.id === "internal/preload") { + env.NODE_OPTIONS = NODE_OPTIONS.replace(REQUIRE_DOT_YARN, REQUIRE_ESM) +} else { + child_process.spawn("yarn", process.argv.slice(2), { + env: Object.assign({}, env, { + NODE_OPTIONS: REQUIRE_DOT_YARN + " " + NODE_OPTIONS + }), + stdio: "inherit" + }) +} diff --git a/npm/ng-packs/scripts/.yarnrc b/npm/ng-packs/scripts/.yarnrc new file mode 100644 index 00000000000..8db01eba40c --- /dev/null +++ b/npm/ng-packs/scripts/.yarnrc @@ -0,0 +1 @@ +yarn-path "./.yarn.js" diff --git a/npm/ng-packs/scripts/build.js b/npm/ng-packs/scripts/build.js new file mode 100644 index 00000000000..ddd5de26630 --- /dev/null +++ b/npm/ng-packs/scripts/build.js @@ -0,0 +1,40 @@ +// ESM syntax is supported. +import execa from 'execa'; +import fse from 'fs-extra'; + +(async () => { + const { projects } = await fse.readJSON('../angular.json'); + const projectNames = Object.keys(projects); + + const packageJson = await fse.readJSON('../package.json'); + + let npmPackageNames = []; + projectNames.forEach(project => { + // do not convert to async + const { name, dependencies = {}, peerDependencies = {} } = fse.readJSONSync(`../packages/${project}/package.json`); + npmPackageNames.push(name); + + packageJson.devDependencies = { ...packageJson.devDependencies, ...dependencies, ...peerDependencies }; + }); + + await fse.writeJSON('../package.json', packageJson, { spaces: 2 }); + + try { + await execa('yarn', { + stdout: 'inherit', + cwd: '..', + }); + } catch (error) { + console.error(error.stderr); + } + + npmPackageNames.forEach(name => { + // do not convert to async + execa.sync('yarn', ['symlink', 'copy', '--angular', '--packages', name, '--no-watch'], { + stdout: 'inherit', + cwd: '../', + }); + }); + + process.exit(0); +})(); diff --git a/npm/ng-packs/scripts/index.js b/npm/ng-packs/scripts/index.js new file mode 100644 index 00000000000..a82d62f9726 --- /dev/null +++ b/npm/ng-packs/scripts/index.js @@ -0,0 +1,4 @@ +// Set options as a parameter, environment variable, or rc file. +// eslint-disable-next-line no-global-assign +require = require('esm')(module /* , options */); +module.exports = require('./main.js'); diff --git a/npm/ng-packs/scripts/package-lock.json b/npm/ng-packs/scripts/package-lock.json new file mode 100644 index 00000000000..9e394f92e23 --- /dev/null +++ b/npm/ng-packs/scripts/package-lock.json @@ -0,0 +1,418 @@ +{ + "name": "scripts", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-preset-node6": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/babel-preset-node6/-/babel-preset-node6-11.0.0.tgz", + "integrity": "sha1-CDWZRRckiYWinRj21GXasWu4p9g=", + "requires": { + "babel-plugin-syntax-trailing-function-commas": "^6.5.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.7.4" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "core-js": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "execa": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/execa/-/execa-2.0.3.tgz", + "integrity": "sha512-iM124nlyGSrXmuyZF1EMe83ESY2chIYVyDRZKgmcDynid2Q2v/+GuE7gNMl6Sy9Niwf4MC0DDxagOxeMPjuLsw==", + "requires": { + "cross-spawn": "^6.0.5", + "get-stream": "^5.0.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^3.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "requires": { + "pump": "^3.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "graceful-fs": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", + "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==" + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "npm-run-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz", + "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==", + "requires": { + "path-key": "^3.0.0" + }, + "dependencies": { + "path-key": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.0.tgz", + "integrity": "sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg==" + } + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } +} diff --git a/npm/ng-packs/scripts/package.json b/npm/ng-packs/scripts/package.json new file mode 100644 index 00000000000..a69ea2101d7 --- /dev/null +++ b/npm/ng-packs/scripts/package.json @@ -0,0 +1,20 @@ +{ + "name": "scripts", + "version": "1.0.0", + "description": "Abp publish helper scripts", + "main": "index.js", + "modules": "[build.js, sync.js]", + "scripts": { + "build": "node -r esm build.js", + "sync": "node -r esm sync.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "babel-preset-node6": "^11.0.0", + "esm": "^3.2.25", + "execa": "^2.0.3", + "fs-extra": "^8.1.0" + } +} diff --git a/npm/ng-packs/scripts/sync.js b/npm/ng-packs/scripts/sync.js new file mode 100644 index 00000000000..a212995cb3f --- /dev/null +++ b/npm/ng-packs/scripts/sync.js @@ -0,0 +1,25 @@ +// ESM syntax is supported. +import fse from 'fs-extra'; + +(async () => { + const { projects } = await fse.readJSON('../angular.json'); + const projectNames = Object.keys(projects); + + projectNames.forEach(async project => { + const { dependencies: distDependencies, version } = await fse.readJSON(`../dist/${project}/package.json`); + const srcPackagePath = `../packages/${project}/package.json`; + const srcPackage = await fse.readJSON(srcPackagePath); + + if (distDependencies) { + for (const key in srcPackage.dependencies) { + if (distDependencies.hasOwnProperty(key)) { + srcPackage.dependencies[key] = distDependencies[key]; + } + } + } + + await fse.writeJSON(srcPackagePath, { ...srcPackage, version }, { spaces: 2 }); + }); + + process.exit(0); +})(); diff --git a/npm/ng-packs/tsconfig.json b/npm/ng-packs/tsconfig.json new file mode 100644 index 00000000000..9c996dd271c --- /dev/null +++ b/npm/ng-packs/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "module": "esnext", + "moduleResolution": "node", + "importHelpers": true, + "target": "es2015", + "typeRoots": ["node_modules/@types"], + "lib": ["es2018", "dom"], + "paths": {} + }, + "angularCompilerOptions": { + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true + } +} diff --git a/npm/ng-packs/tslint.json b/npm/ng-packs/tslint.json new file mode 100644 index 00000000000..0888c34adbc --- /dev/null +++ b/npm/ng-packs/tslint.json @@ -0,0 +1,55 @@ +{ + "extends": "tslint:recommended", + "rules": { + "array-type": false, + "arrow-parens": false, + "deprecation": { + "severity": "warn" + }, + "component-class-suffix": true, + "contextual-lifecycle": true, + "directive-class-suffix": true, + "directive-selector": [true, "attribute", "abp", "camelCase"], + "component-selector": [true, "element", "abp", "kebab-case"], + "import-blacklist": [true, "rxjs/Rx"], + "interface-name": false, + "max-classes-per-file": false, + "max-line-length": [true, 140], + "member-access": false, + "member-ordering": [ + true, + { + "order": ["static-field", "instance-field", "static-method", "instance-method"] + } + ], + "no-consecutive-blank-lines": false, + "no-console": [true, "debug", "info", "time", "timeEnd", "trace"], + "no-empty": false, + "no-inferrable-types": [false, "ignore-params"], + "no-non-null-assertion": true, + "no-redundant-jsdoc": true, + "no-switch-case-fall-through": true, + "no-use-before-declare": true, + "no-var-requires": false, + "curly": false, + "object-literal-key-quotes": [true, "as-needed"], + "object-literal-sort-keys": false, + "ordered-imports": false, + "quotemark": [true, "single"], + "trailing-comma": false, + "no-conflicting-lifecycle": true, + "no-host-metadata-property": true, + "no-input-rename": true, + "no-inputs-metadata-property": true, + "no-output-native": true, + "no-output-on-prefix": true, + "no-output-rename": true, + "no-outputs-metadata-property": true, + "no-namespace": false, + "template-banana-in-box": true, + "template-no-negated-async": true, + "use-lifecycle-interface": true, + "use-pipe-transform-interface": true + }, + "rulesDirectory": ["codelyzer"] +} diff --git a/npm/packs/anchor-js/package.json b/npm/packs/anchor-js/package.json index 0024d1dcea5..5394842ebb5 100644 --- a/npm/packs/anchor-js/package.json +++ b/npm/packs/anchor-js/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/anchor-js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^0.6.5", + "@abp/core": "^0.8.0", "anchor-js": "^4.1.1" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json index 2a4847d9ace..f776dd04de5 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json @@ -1,11 +1,11 @@ { - "version": "0.6.6", + "version": "0.8.0", "name": "@abp/aspnetcore.mvc.ui.theme.basic", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "^0.6.6" + "@abp/aspnetcore.mvc.ui.theme.shared": "^0.8.0" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json index 5cecff60012..af2b1345b2a 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json @@ -1,22 +1,22 @@ { - "version": "0.6.6", + "version": "0.8.0", "name": "@abp/aspnetcore.mvc.ui.theme.shared", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui": "^0.6.4", - "@abp/bootstrap": "^0.6.5", - "@abp/datatables.net-bs4": "^0.6.5", - "@abp/font-awesome": "^0.6.5", - "@abp/jquery-form": "^0.6.5", - "@abp/jquery-validation-unobtrusive": "^0.6.5", - "@abp/lodash": "^0.6.5", - "@abp/malihu-custom-scrollbar-plugin": "^0.6.5", - "@abp/select2": "^0.6.5", - "@abp/sweetalert": "^0.6.5", - "@abp/timeago": "^0.6.5", - "@abp/toastr": "^0.6.5" + "@abp/aspnetcore.mvc.ui": "^0.8.0", + "@abp/bootstrap": "^0.8.0", + "@abp/datatables.net-bs4": "^0.8.0", + "@abp/font-awesome": "^0.8.0", + "@abp/jquery-form": "^0.8.0", + "@abp/jquery-validation-unobtrusive": "^0.8.0", + "@abp/lodash": "^0.8.0", + "@abp/malihu-custom-scrollbar-plugin": "^0.8.0", + "@abp/select2": "^0.8.0", + "@abp/sweetalert": "^0.8.0", + "@abp/timeago": "^0.8.0", + "@abp/toastr": "^0.8.0" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/aspnetcore.mvc.ui/package.json b/npm/packs/aspnetcore.mvc.ui/package.json index 78aa4441318..122fa7435f5 100644 --- a/npm/packs/aspnetcore.mvc.ui/package.json +++ b/npm/packs/aspnetcore.mvc.ui/package.json @@ -1,5 +1,5 @@ { - "version": "0.6.4", + "version": "0.8.0", "name": "@abp/aspnetcore.mvc.ui", "publishConfig": { "access": "public" @@ -12,5 +12,5 @@ "path": "^0.12.7", "rimraf": "^2.6.3" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/blogging/package.json b/npm/packs/blogging/package.json index 5e987e46a62..766fe78f8f6 100644 --- a/npm/packs/blogging/package.json +++ b/npm/packs/blogging/package.json @@ -1,12 +1,13 @@ { - "version": "0.6.6", + "version": "0.8.0", "name": "@abp/blogging", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "^0.6.6", - "@abp/owl.carousel": "^0.6.5", - "@abp/tui-editor": "^0.6.5" - } + "@abp/aspnetcore.mvc.ui.theme.shared": "^0.8.0", + "@abp/owl.carousel": "^0.8.0", + "@abp/tui-editor": "^0.8.0" + }, + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/bootstrap/package.json b/npm/packs/bootstrap/package.json index 0b4c2b8c6e1..52bb389c666 100644 --- a/npm/packs/bootstrap/package.json +++ b/npm/packs/bootstrap/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/bootstrap", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^0.6.5", + "@abp/core": "^0.8.0", "bootstrap": "^4.1.1" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/chart.js/abp.resourcemapping.js b/npm/packs/chart.js/abp.resourcemapping.js new file mode 100644 index 00000000000..62962983b1d --- /dev/null +++ b/npm/packs/chart.js/abp.resourcemapping.js @@ -0,0 +1,5 @@ +module.exports = { + mappings: { + "@node_modules/chart.js/dist/*.*": "@libs/chart.js/" + } +} \ No newline at end of file diff --git a/npm/packs/chart.js/package.json b/npm/packs/chart.js/package.json new file mode 100644 index 00000000000..bd88b3f957f --- /dev/null +++ b/npm/packs/chart.js/package.json @@ -0,0 +1,11 @@ +{ + "version": "0.8.1", + "name": "@abp/chart.js", + "publishConfig": { + "access": "public" + }, + "dependencies": { + "chart.js": "^2.8.0" + }, + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" +} diff --git a/npm/packs/clipboard/package.json b/npm/packs/clipboard/package.json index 10068fb37a7..0d77dd09fde 100644 --- a/npm/packs/clipboard/package.json +++ b/npm/packs/clipboard/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/clipboard", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^0.6.5", + "@abp/core": "^0.8.0", "clipboard": "^2.0.4" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/codemirror/package.json b/npm/packs/codemirror/package.json index 1cafd3828ed..cf9b9db2666 100644 --- a/npm/packs/codemirror/package.json +++ b/npm/packs/codemirror/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/codemirror", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^0.6.5", + "@abp/core": "^0.8.0", "codemirror": "^5.38.0" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/core/package.json b/npm/packs/core/package.json index 767d259a629..dcd30ca3fe9 100644 --- a/npm/packs/core/package.json +++ b/npm/packs/core/package.json @@ -1,8 +1,8 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/core", "publishConfig": { "access": "public" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/datatables.net-bs4/package.json b/npm/packs/datatables.net-bs4/package.json index cf417b864f5..15f6b9a5295 100644 --- a/npm/packs/datatables.net-bs4/package.json +++ b/npm/packs/datatables.net-bs4/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/datatables.net-bs4", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/datatables.net": "^0.6.5", + "@abp/datatables.net": "^0.8.0", "datatables.net-bs4": "^1.10.16" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/datatables.net/package.json b/npm/packs/datatables.net/package.json index 88a45f83e56..2bdeed5cea4 100644 --- a/npm/packs/datatables.net/package.json +++ b/npm/packs/datatables.net/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/datatables.net", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^0.6.5", + "@abp/core": "^0.8.0", "datatables.net": "^1.10.16" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/docs/package.json b/npm/packs/docs/package.json index e95bea5d38e..b31a1b77a36 100644 --- a/npm/packs/docs/package.json +++ b/npm/packs/docs/package.json @@ -1,15 +1,15 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/docs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/anchor-js": "^0.6.5", - "@abp/clipboard": "^0.6.5", - "@abp/malihu-custom-scrollbar-plugin": "^0.6.5", - "@abp/popper.js": "^0.6.5", - "@abp/prismjs": "^0.6.5" + "@abp/anchor-js": "^0.8.0", + "@abp/clipboard": "^0.8.0", + "@abp/malihu-custom-scrollbar-plugin": "^0.8.0", + "@abp/popper.js": "^0.8.0", + "@abp/prismjs": "^0.8.0" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/flag-icon-css/package.json b/npm/packs/flag-icon-css/package.json index a4463971d0d..19e4cb4c7f1 100644 --- a/npm/packs/flag-icon-css/package.json +++ b/npm/packs/flag-icon-css/package.json @@ -1,10 +1,11 @@ { - "version": "0.6.2", + "version": "0.8.0", "name": "@abp/flag-icon-css", "publishConfig": { "access": "public" }, "dependencies": { "flag-icon-css": "^3.3.0" - } + }, + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/font-awesome/package.json b/npm/packs/font-awesome/package.json index 23d4674fad0..c1cd90bfb87 100644 --- a/npm/packs/font-awesome/package.json +++ b/npm/packs/font-awesome/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/font-awesome", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^0.6.5", + "@abp/core": "^0.8.0", "font-awesome": "^4.7.0" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/highlight.js/package.json b/npm/packs/highlight.js/package.json index 7a6346ef755..f029dbc9339 100644 --- a/npm/packs/highlight.js/package.json +++ b/npm/packs/highlight.js/package.json @@ -1,11 +1,11 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/highlight.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^0.6.5" + "@abp/core": "^0.8.0" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/jquery-form/package.json b/npm/packs/jquery-form/package.json index 51d6eea8731..16393e4f6fe 100644 --- a/npm/packs/jquery-form/package.json +++ b/npm/packs/jquery-form/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/jquery-form", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "^0.6.5", + "@abp/jquery": "^0.8.0", "jquery-form": "^4.2.2" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/jquery-validation-unobtrusive/package.json b/npm/packs/jquery-validation-unobtrusive/package.json index 8f6a31b3e9f..d9ed79b7945 100644 --- a/npm/packs/jquery-validation-unobtrusive/package.json +++ b/npm/packs/jquery-validation-unobtrusive/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/jquery-validation-unobtrusive", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery-validation": "^0.6.5", + "@abp/jquery-validation": "^0.8.0", "jquery-validation-unobtrusive": "^3.2.9" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/jquery-validation/package.json b/npm/packs/jquery-validation/package.json index c6f540e1d27..9ab48d5c566 100644 --- a/npm/packs/jquery-validation/package.json +++ b/npm/packs/jquery-validation/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/jquery-validation", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "^0.6.5", + "@abp/jquery": "^0.8.0", "jquery-validation": "^1.17.0" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/jquery/package.json b/npm/packs/jquery/package.json index 07054a464c3..b440e95bc21 100644 --- a/npm/packs/jquery/package.json +++ b/npm/packs/jquery/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/jquery", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^0.6.5", + "@abp/core": "^0.8.0", "jquery": "^3.3.1" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/lodash/package.json b/npm/packs/lodash/package.json index c3a6b1da8d8..1c8a59609da 100644 --- a/npm/packs/lodash/package.json +++ b/npm/packs/lodash/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/lodash", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^0.6.5", + "@abp/core": "^0.8.0", "lodash": "^4.17.10" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/malihu-custom-scrollbar-plugin/package.json b/npm/packs/malihu-custom-scrollbar-plugin/package.json index 67e76bc8aae..9ee0d3e5e92 100644 --- a/npm/packs/malihu-custom-scrollbar-plugin/package.json +++ b/npm/packs/malihu-custom-scrollbar-plugin/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/malihu-custom-scrollbar-plugin", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^0.6.5", + "@abp/core": "^0.8.0", "malihu-custom-scrollbar-plugin": "^3.1.5" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/markdown-it/package.json b/npm/packs/markdown-it/package.json index 514901714c2..b6f7340c6a0 100644 --- a/npm/packs/markdown-it/package.json +++ b/npm/packs/markdown-it/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/markdown-it", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^0.6.5", + "@abp/core": "^0.8.0", "markdown-it": "^8.4.1" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/owl.carousel/package.json b/npm/packs/owl.carousel/package.json index 6508e301b8b..ce59ea97b70 100644 --- a/npm/packs/owl.carousel/package.json +++ b/npm/packs/owl.carousel/package.json @@ -1,11 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/owl.carousel", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^0.6.5", + "@abp/core": "^0.8.0", "owl.carousel": "^2.3.4" - } + }, + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/popper.js/package.json b/npm/packs/popper.js/package.json index 4ee37c655e8..b31d65ec88f 100644 --- a/npm/packs/popper.js/package.json +++ b/npm/packs/popper.js/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/popper.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^0.6.5", + "@abp/core": "^0.8.0", "popper.js": "^1.14.6" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/prismjs/package.json b/npm/packs/prismjs/package.json index 0374e0e5fa3..a954779e78a 100644 --- a/npm/packs/prismjs/package.json +++ b/npm/packs/prismjs/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/prismjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^0.6.5", + "@abp/core": "^0.8.0", "prismjs": "^1.15.0" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/select2/package.json b/npm/packs/select2/package.json index 28a8685957e..bd562ee3a41 100644 --- a/npm/packs/select2/package.json +++ b/npm/packs/select2/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/select2", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^0.6.5", + "@abp/core": "^0.8.0", "select2": "^4.0.5" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/sweetalert/package.json b/npm/packs/sweetalert/package.json index d994489d352..a40dab4cc11 100644 --- a/npm/packs/sweetalert/package.json +++ b/npm/packs/sweetalert/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/sweetalert", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^0.6.5", + "@abp/core": "^0.8.0", "sweetalert": "^2.1.0" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/timeago/package.json b/npm/packs/timeago/package.json index cbd8b8c5f17..68a44f260fa 100644 --- a/npm/packs/timeago/package.json +++ b/npm/packs/timeago/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/timeago", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "^0.6.5", + "@abp/jquery": "^0.8.0", "timeago": "^1.6.3" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/toastr/package.json b/npm/packs/toastr/package.json index a006c7940d1..d80c845e74f 100644 --- a/npm/packs/toastr/package.json +++ b/npm/packs/toastr/package.json @@ -1,12 +1,12 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/toastr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "^0.6.5", + "@abp/jquery": "^0.8.0", "toastr": "^2.1.4" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/npm/packs/tui-editor/package.json b/npm/packs/tui-editor/package.json index 9c6ad8f12cb..3b82f869e40 100644 --- a/npm/packs/tui-editor/package.json +++ b/npm/packs/tui-editor/package.json @@ -1,15 +1,15 @@ { - "version": "0.6.5", + "version": "0.8.0", "name": "@abp/tui-editor", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/codemirror": "^0.6.5", - "@abp/highlight.js": "^0.6.5", - "@abp/jquery": "^0.6.5", - "@abp/markdown-it": "^0.6.5", + "@abp/codemirror": "^0.8.0", + "@abp/highlight.js": "^0.8.0", + "@abp/jquery": "^0.8.0", + "@abp/markdown-it": "^0.8.0", "tui-editor": "^1.2.6" }, - "gitHead": "2e846ad3e5a8cbe04100484865335fbcd845a342" + "gitHead": "4d6791834b7723d8ad78ba4d23ae3425f170fdeb" } diff --git a/samples/BookStore-Angular-MongoDb/angular/.editorconfig b/samples/BookStore-Angular-MongoDb/angular/.editorconfig new file mode 100644 index 00000000000..e89330a618c --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/samples/BookStore-Angular-MongoDb/angular/.gitignore b/samples/BookStore-Angular-MongoDb/angular/.gitignore new file mode 100644 index 00000000000..c3569131e46 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/.gitignore @@ -0,0 +1,48 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events.json +speed-measure-plugin.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db + +yarn.lock* \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/angular/.npmrc b/samples/BookStore-Angular-MongoDb/angular/.npmrc new file mode 100644 index 00000000000..5d05609c191 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/.npmrc @@ -0,0 +1 @@ +@volo:registry=http://192.168.1.45:4873/ \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/angular/README.md b/samples/BookStore-Angular-MongoDb/angular/README.md new file mode 100644 index 00000000000..03bc6975842 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/README.md @@ -0,0 +1,27 @@ +# BookStore + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.0.3. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/samples/BookStore-Angular-MongoDb/angular/angular.json b/samples/BookStore-Angular-MongoDb/angular/angular.json new file mode 100644 index 00000000000..6b5e7df9656 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/angular.json @@ -0,0 +1,135 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "myProjectName": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/myProjectName", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "aot": false, + "assets": ["src/favicon.ico", "src/assets"], + "styles": [ + "src/styles.scss", + "node_modules/bootstrap/dist/css/bootstrap.min.css", + "node_modules/font-awesome/css/font-awesome.min.css", + "node_modules/primeng/resources/themes/nova-light/theme.css", + "node_modules/primeicons/primeicons.css", + "node_modules/primeng/resources/primeng.min.css" + ], + "scripts": [] + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + } + ] + }, + "hmr": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.hmr.ts" + } + ] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "myProjectName:build" + }, + "configurations": { + "production": { + "browserTarget": "myProjectName:build:production" + }, + "hmr": { + "hmr": true, + "browserTarget": "myProjectName:build:hmr" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "myProjectName:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "assets": ["src/favicon.ico", "src/assets"], + "styles": [ + "src/styles.scss", + "node_modules/bootstrap/dist/css/bootstrap.min.css", + "node_modules/font-awesome/css/font-awesome.min.css", + "node_modules/primeng/resources/themes/nova-light/theme.css", + "node_modules/primeicons/primeicons.css", + "node_modules/primeng/resources/primeng.min.css" + ], + "scripts": [] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": ["tsconfig.app.json", "tsconfig.spec.json", "e2e/tsconfig.json"], + "exclude": ["**/node_modules/**"] + } + }, + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "myProjectName:serve" + }, + "configurations": { + "production": { + "devServerTarget": "myProjectName:serve:production" + } + } + } + } + } + }, + "defaultProject": "myProjectName" +} diff --git a/samples/BookStore-Angular-MongoDb/angular/browserslist b/samples/BookStore-Angular-MongoDb/angular/browserslist new file mode 100644 index 00000000000..80848532e47 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/browserslist @@ -0,0 +1,12 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 # For IE 9-11 support, remove 'not'. \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/angular/e2e/protractor.conf.js b/samples/BookStore-Angular-MongoDb/angular/e2e/protractor.conf.js new file mode 100644 index 00000000000..73e4e6806cd --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/e2e/protractor.conf.js @@ -0,0 +1,32 @@ +// @ts-check +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +/** + * @type { import("protractor").Config } + */ +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './src/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: require('path').join(__dirname, './tsconfig.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/angular/e2e/src/app.e2e-spec.ts b/samples/BookStore-Angular-MongoDb/angular/e2e/src/app.e2e-spec.ts new file mode 100644 index 00000000000..ddea6e46a79 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/e2e/src/app.e2e-spec.ts @@ -0,0 +1,23 @@ +import { AppPage } from './app.po'; +import { browser, logging } from 'protractor'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getTitleText()).toEqual('Welcome to myProjectName!'); + }); + + afterEach(async () => { + // Assert that there are no errors emitted from the browser + const logs = await browser.manage().logs().get(logging.Type.BROWSER); + expect(logs).not.toContain(jasmine.objectContaining({ + level: logging.Level.SEVERE, + } as logging.Entry)); + }); +}); diff --git a/samples/BookStore-Angular-MongoDb/angular/e2e/src/app.po.ts b/samples/BookStore-Angular-MongoDb/angular/e2e/src/app.po.ts new file mode 100644 index 00000000000..5776aa9eb80 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get(browser.baseUrl) as Promise; + } + + getTitleText() { + return element(by.css('app-root h1')).getText() as Promise; + } +} diff --git a/samples/BookStore-Angular-MongoDb/angular/e2e/tsconfig.json b/samples/BookStore-Angular-MongoDb/angular/e2e/tsconfig.json new file mode 100644 index 00000000000..39b800f7896 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/e2e/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/samples/BookStore-Angular-MongoDb/angular/karma.conf.js b/samples/BookStore-Angular-MongoDb/angular/karma.conf.js new file mode 100644 index 00000000000..4e919a630c3 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, './coverage/myProjectName'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/samples/BookStore-Angular-MongoDb/angular/package.json b/samples/BookStore-Angular-MongoDb/angular/package.json new file mode 100644 index 00000000000..30e57a17416 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/package.json @@ -0,0 +1,57 @@ +{ + "name": "BookStore", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "start:hmr": "ng serve --configuration hmr", + "build": "ng build", + "build:prod": "ng build --configuration production", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@abp/ng.account": "^0.8.0", + "@abp/ng.identity": "^0.8.0", + "@abp/ng.tenant-management": "^0.8.0", + "@abp/ng.theme.basic": "^0.8.0", + "@angular/animations": "~8.2.0", + "@angular/common": "~8.2.0", + "@angular/compiler": "~8.2.0", + "@angular/core": "~8.2.0", + "@angular/forms": "~8.2.0", + "@angular/platform-browser": "~8.2.0", + "@angular/platform-browser-dynamic": "~8.2.0", + "@angular/router": "~8.2.0", + "@angularclass/hmr": "^2.1.3", + "@ngxs/devtools-plugin": "^3.5.0", + "@ngxs/hmr-plugin": "^3.5.0", + "rxjs": "^6.4.0", + "tslib": "^1.9.0", + "zone.js": "~0.9.1" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~0.802.0", + "@angular/cli": "~8.2.0", + "@angular/compiler-cli": "~8.2.0", + "@angular/language-service": "~8.2.0", + "@types/jasmine": "~3.3.8", + "@types/jasminewd2": "~2.0.3", + "@types/node": "~8.9.4", + "codelyzer": "^5.0.0", + "jasmine-core": "~3.4.0", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~4.1.0", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "~2.0.1", + "karma-jasmine": "~2.0.1", + "karma-jasmine-html-reporter": "^1.4.0", + "ngxs-schematic": "^1.1.6", + "protractor": "~5.4.0", + "ts-node": "~7.0.0", + "tslint": "~5.15.0", + "typescript": "~3.4.3" + } +} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/app-routing.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/app-routing.module.ts new file mode 100644 index 00000000000..d18817b0f5b --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/app-routing.module.ts @@ -0,0 +1,49 @@ +import { IDENTITY_ROUTES } from '@abp/ng.identity'; +import { ACCOUNT_ROUTES } from '@abp/ng.account'; +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { ABP } from '@abp/ng.core'; +import { TENANT_MANAGEMENT_ROUTES } from '@abp/ng.tenant-management'; + +const routes: Routes = [ + { + path: '', + loadChildren: () => import('./home/home.module').then(m => m.HomeModule), + data: { + routes: { + name: '::Menu:Home', + } as ABP.Route, + }, + }, + { + path: 'account', + loadChildren: () => import('./lazy-libs/account-wrapper.module').then(m => m.AccountWrapperModule), + data: { routes: ACCOUNT_ROUTES }, + }, + { + path: 'identity', + loadChildren: () => import('./lazy-libs/identity-wrapper.module').then(m => m.IdentityWrapperModule), + data: { routes: IDENTITY_ROUTES }, + }, + { + path: 'tenant-management', + loadChildren: () => + import('./lazy-libs/tenant-management-wrapper.module').then(m => m.TenantManagementWrapperModule), + data: { routes: TENANT_MANAGEMENT_ROUTES }, + }, + { + path: 'books', + loadChildren: () => import('./books/books.module').then(m => m.BooksModule), + data: { + routes: { + name: 'Books', + } as ABP.Route, + }, + }, +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule], +}) +export class AppRoutingModule {} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/app.component.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/app.component.ts new file mode 100644 index 00000000000..bf2a27962a2 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/app.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-root', + template: ` + + + `, +}) +export class AppComponent {} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/app.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/app.module.ts new file mode 100644 index 00000000000..d222477028b --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/app.module.ts @@ -0,0 +1,37 @@ +import { CoreModule } from '@abp/ng.core'; +import { LAYOUTS } from '@abp/ng.theme.basic'; +import { NgModule } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { NgxsReduxDevtoolsPluginModule } from '@ngxs/devtools-plugin'; +import { NgxsModule } from '@ngxs/store'; +import { OAuthModule } from 'angular-oauth2-oidc'; +import { environment } from '../environments/environment'; +import { AppRoutingModule } from './app-routing.module'; +import { AppComponent } from './app.component'; +import { SharedModule } from './shared/shared.module'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { BooksState } from './store/states/books.state'; + +@NgModule({ + declarations: [AppComponent], + imports: [ + BrowserModule, + BrowserAnimationsModule, + AppRoutingModule, + SharedModule, + ThemeSharedModule.forRoot(), + CoreModule.forRoot({ + environment, + requirements: { + layouts: LAYOUTS, + }, + }), + OAuthModule.forRoot(), + NgxsModule.forRoot([BooksState, ]), + NgxsReduxDevtoolsPluginModule.forRoot({ disabled: environment.production }), + ], + providers: [], + bootstrap: [AppComponent], +}) +export class AppModule {} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books-routing.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books-routing.module.ts new file mode 100644 index 00000000000..4d54fc0a71b --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books-routing.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { LayoutApplicationComponent } from '@abp/ng.theme.basic'; +import { BooksComponent } from './books.component'; + +const routes: Routes = [ + { path: '', component: LayoutApplicationComponent, children: [{ path: '', component: BooksComponent }] }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class BooksRoutingModule {} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.html b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.html new file mode 100644 index 00000000000..e68bf6f22e2 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.html @@ -0,0 +1,108 @@ +
    +
    +
    +
    +
    + Books +
    +
    +
    + +
    +
    +
    +
    + + + + Actions + Book name + Book type + Publish date + Price + + + + + +
    + +
    + + +
    +
    + + {{ data.name }} + {{ bookType[data.type] }} + {{ data.publishDate | date }} + {{ data.price }} + +
    +
    +
    +
    + + + +

    {{ selectedBook?.id ? 'Edit' : 'New Book' }}

    +
    + + +
    +
    + * + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    +
    +
    + + + + Save + +
    diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.scss b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.scss new file mode 100644 index 00000000000..e69de29bb2d diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.spec.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.spec.ts new file mode 100644 index 00000000000..13067baba94 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BooksComponent } from './books.component'; + +describe('BooksComponent', () => { + let component: BooksComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BooksComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BooksComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.ts new file mode 100644 index 00000000000..cab994e23c8 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.ts @@ -0,0 +1,73 @@ +import { Component, OnInit } from '@angular/core'; +import { Store, Select } from '@ngxs/store'; +import { BooksState } from '../store/states'; +import { Observable } from 'rxjs'; +import { Books } from '../store/models'; +import { BooksGet, BooksSave } from '../store/actions'; +import { FormGroup, FormBuilder, Validators } from '@angular/forms'; +import { NgbDateAdapter, NgbDateNativeAdapter } from '@ng-bootstrap/ng-bootstrap'; +import { BooksService } from './services/books.service'; + +@Component({ + selector: 'app-books', + templateUrl: './books.component.html', + styleUrls: ['./books.component.scss'], + providers: [{ provide: NgbDateAdapter, useClass: NgbDateNativeAdapter }], +}) +export class BooksComponent implements OnInit { + @Select(BooksState.getBooks) + books$: Observable; + + bookType = Books.Type; + + bookTypes = Object.keys(Books.Type).filter(bookType => typeof this.bookType[bookType] === 'number'); + + loading = false; + + isModalOpen = false; + + form: FormGroup; + + selectedBook = {} as Books.Item; + + constructor(private store: Store, private fb: FormBuilder, private booksService: BooksService) {} + + ngOnInit() { + this.loading = true; + this.store.dispatch(new BooksGet()).subscribe(() => (this.loading = false)); + } + + buildForm() { + this.form = this.fb.group({ + name: [this.selectedBook.name || '', Validators.required], + type: this.selectedBook.type || null, + publishDate: this.selectedBook.publishDate ? new Date(this.selectedBook.publishDate) : null, + price: this.selectedBook.price || null, + }); + } + + onAdd() { + this.selectedBook = {} as Books.Item; + this.buildForm(); + this.isModalOpen = true; + } + + onEdit(id: string) { + this.booksService.getById(id).subscribe(book => { + this.selectedBook = book; + this.buildForm(); + this.isModalOpen = true; + }); + } + + save() { + if (this.form.invalid) { + return; + } + + this.store.dispatch(new BooksSave(this.form.value, this.selectedBook.id)).subscribe(() => { + this.isModalOpen = false; + this.form.reset(); + }); + } +} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.module.ts new file mode 100644 index 00000000000..4dd8f39cfe5 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { BooksRoutingModule } from './books-routing.module'; +import { BooksComponent } from './books.component'; +import { SharedModule } from '../shared/shared.module'; +import { NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap'; + +@NgModule({ + declarations: [BooksComponent], + imports: [CommonModule, BooksRoutingModule, SharedModule, NgbDatepickerModule], +}) +export class BooksModule {} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/services/books.service.spec.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/books/services/books.service.spec.ts new file mode 100644 index 00000000000..40950f51ae6 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/services/books.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { BooksService } from './books.service'; + +describe('BooksService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: BooksService = TestBed.get(BooksService); + expect(service).toBeTruthy(); + }); +}); diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/services/books.service.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/books/services/books.service.ts new file mode 100644 index 00000000000..d65ac9d125f --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/services/books.service.ts @@ -0,0 +1,49 @@ +import { Injectable } from '@angular/core'; +import { RestService, Rest } from '@abp/ng.core'; +import { Books } from '../../store/models'; +import { Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root', +}) +export class BooksService { + constructor(private rest: RestService) {} + + get(): Observable { + const request: Rest.Request = { + method: 'GET', + url: '/api/app/book', + }; + + return this.rest.request(request); + } + + getById(id: string): Observable { + const request: Rest.Request = { + method: 'GET', + url: `/api/app/book/${id}`, + }; + + return this.rest.request(request); + } + + update(body: Books.SaveRequest, id: string): Observable { + const request: Rest.Request = { + method: 'PUT', + url: `/api/app/book/${id}`, + body, + }; + + return this.rest.request(request); + } + + add(body: Books.SaveRequest): Observable { + const request: Rest.Request = { + method: 'POST', + url: '/api/app/book', + body, + }; + + return this.rest.request(request); + } +} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/home/home-routing.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/home/home-routing.module.ts new file mode 100644 index 00000000000..70f7e5de7a5 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/home/home-routing.module.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { HomeComponent } from './home.component'; +import { LayoutApplicationComponent } from '@abp/ng.theme.basic'; + +const routes: Routes = [ + { + path: '', + component: LayoutApplicationComponent, + children: [{ path: '', component: HomeComponent }], + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class HomeRoutingModule {} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.html b/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.html new file mode 100644 index 00000000000..5f16712b319 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.html @@ -0,0 +1,15 @@ +
    +
    {{ '::Welcome' | abpLocalization }}
    +
    +

    + {{ '::LongWelcomeMessage' | abpLocalization }} +

    +

    + {{ 'AbpIdentity::Login' | abpLocalization }} +

    +
    +

    abp.io

    +
    +
    diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.ts new file mode 100644 index 00000000000..aa56d341310 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.ts @@ -0,0 +1,14 @@ +import { Component } from '@angular/core'; +import { OAuthService } from 'angular-oauth2-oidc'; + +@Component({ + selector: 'abp-home', + templateUrl: './home.component.html', +}) +export class HomeComponent { + get hasLoggedIn(): boolean { + return this.oAuthService.hasValidAccessToken(); + } + + constructor(private oAuthService: OAuthService) {} +} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.module.ts new file mode 100644 index 00000000000..72d20ccc654 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/home/home.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; +import { SharedModule } from '../shared/shared.module'; +import { HomeRoutingModule } from './home-routing.module'; +import { HomeComponent } from './home.component'; + +@NgModule({ + declarations: [HomeComponent], + imports: [SharedModule, HomeRoutingModule], +}) +export class HomeModule {} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/lazy-libs/account-wrapper.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/lazy-libs/account-wrapper.module.ts new file mode 100644 index 00000000000..7130bb1a1a1 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/lazy-libs/account-wrapper.module.ts @@ -0,0 +1,7 @@ +import { NgModule } from '@angular/core'; +import { AccountModule } from '@abp/ng.account'; + +@NgModule({ + imports: [AccountModule], +}) +export class AccountWrapperModule {} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/lazy-libs/identity-wrapper.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/lazy-libs/identity-wrapper.module.ts new file mode 100644 index 00000000000..fed1dcd1ecf --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/lazy-libs/identity-wrapper.module.ts @@ -0,0 +1,7 @@ +import { NgModule } from '@angular/core'; +import { IdentityModule } from '@abp/ng.identity'; + +@NgModule({ + imports: [IdentityModule], +}) +export class IdentityWrapperModule {} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/lazy-libs/tenant-management-wrapper.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/lazy-libs/tenant-management-wrapper.module.ts new file mode 100644 index 00000000000..63eabda5050 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/lazy-libs/tenant-management-wrapper.module.ts @@ -0,0 +1,7 @@ +import { NgModule } from '@angular/core'; +import { TenantManagementModule } from '@abp/ng.tenant-management'; + +@NgModule({ + imports: [TenantManagementModule], +}) +export class TenantManagementWrapperModule {} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/shared/shared.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/shared/shared.module.ts new file mode 100644 index 00000000000..6bae4ea3326 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/shared/shared.module.ts @@ -0,0 +1,14 @@ +import { CoreModule } from '@abp/ng.core'; +import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { NgModule } from '@angular/core'; +import { ThemeBasicModule } from '@abp/ng.theme.basic'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { TableModule } from 'primeng/table'; + +@NgModule({ + declarations: [], + imports: [CoreModule, ThemeSharedModule, ThemeBasicModule, TableModule, NgbDropdownModule], + exports: [CoreModule, ThemeSharedModule, ThemeBasicModule, TableModule, NgbDropdownModule], + providers: [], +}) +export class SharedModule {} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/books.actions.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/books.actions.ts new file mode 100644 index 00000000000..e684890c6e6 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/books.actions.ts @@ -0,0 +1,10 @@ +import { Books } from '../models'; + +export class BooksGet { + static readonly type = '[Books] Get'; +} + +export class BooksSave { + static readonly type = '[Books] Save'; + constructor(public payload: Books.SaveRequest, public id?: string) {} +} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/index.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/index.ts new file mode 100644 index 00000000000..7cb6b259a1f --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/index.ts @@ -0,0 +1 @@ +export * from './books.actions'; diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/store/models/books.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/store/models/books.ts new file mode 100644 index 00000000000..8e74598b472 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/store/models/books.ts @@ -0,0 +1,40 @@ +import { ABP } from '@abp/ng.core'; + +export namespace Books { + export interface State { + data: Response; + } + + export type Response = ABP.PagedResponse; + + export interface Item { + name: string; + type: Type; + publishDate: string; + price: number; + lastModificationTime: string; + lastModifierId: string; + creationTime: string; + creatorId: string; + id: string; + } + + export enum Type { + Undefined, + Adventure, + Biography, + Dystopia, + Fantastic, + Horror, + Science, + ScienceFiction, + Poetry, + } + + export interface SaveRequest { + name: string; + type: Type; + publishDate: string; + price: number; + } +} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/store/models/index.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/store/models/index.ts new file mode 100644 index 00000000000..dfe4aa90537 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/store/models/index.ts @@ -0,0 +1 @@ +export * from './books'; diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/store/states/books.state.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/store/states/books.state.ts new file mode 100644 index 00000000000..fe6a701ed1d --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/store/states/books.state.ts @@ -0,0 +1,36 @@ +import { State, Action, StateContext, Selector } from '@ngxs/store'; +import { BooksGet, BooksSave } from '../actions/books.actions'; +import { Books } from '../models/books'; +import { BooksService } from '../../books/services/books.service'; +import { tap, switchMap } from 'rxjs/operators'; + +@State({ + name: 'BooksState', + defaults: { data: {} } as Books.State, +}) +export class BooksState { + @Selector() + static getBooks({ data }: Books.State) { + return data.items || []; + } + + constructor(private booksService: BooksService) {} + + @Action(BooksGet) + getBooks({ patchState }: StateContext) { + return this.booksService.get().pipe( + tap(data => { + patchState({ + data, + }); + }), + ); + } + + @Action(BooksSave) + addBooks({ dispatch }: StateContext, { payload, id }: BooksSave) { + return (id ? this.booksService.update(payload, id) : this.booksService.add(payload)).pipe( + switchMap(() => dispatch(new BooksGet())), + ); + } +} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/store/states/index.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/store/states/index.ts new file mode 100644 index 00000000000..8aca5a90f7c --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/store/states/index.ts @@ -0,0 +1 @@ +export * from "./books.state"; diff --git a/samples/BookStore-Angular-MongoDb/angular/src/assets/.gitkeep b/samples/BookStore-Angular-MongoDb/angular/src/assets/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.hmr.ts b/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.hmr.ts new file mode 100644 index 00000000000..65b05ebac2a --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.hmr.ts @@ -0,0 +1,21 @@ +export const environment = { + production: false, + hmr: true, + oAuthConfig: { + issuer: 'https://localhost:44359', + clientId: 'BookStore_ConsoleTestApp', + dummyClientSecret: '1q2w3e*', + scope: 'BookStore', + showDebugInformation: true, + oidc: false, + requireHttps: true, + }, + apis: { + default: { + url: 'https://localhost:44359', + }, + }, + localization: { + defaultResourceName: 'BookStore', + }, +}; diff --git a/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.prod.ts b/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.prod.ts new file mode 100644 index 00000000000..4848d1bd444 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.prod.ts @@ -0,0 +1,21 @@ +export const environment = { + production: true, + hmr: false, + oAuthConfig: { + issuer: 'https://localhost:44359', + clientId: 'BookStore_ConsoleTestApp', + dummyClientSecret: '1q2w3e*', + scope: 'BookStore', + showDebugInformation: true, + oidc: false, + requireHttps: true, + }, + apis: { + default: { + url: 'https://localhost:44359', + }, + }, + localization: { + defaultResourceName: 'BookStore', + }, +}; diff --git a/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.ts b/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.ts new file mode 100644 index 00000000000..e4bd2964f96 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/environments/environment.ts @@ -0,0 +1,21 @@ +export const environment = { + production: false, + hmr: false, + oAuthConfig: { + issuer: 'https://localhost:44359', + clientId: 'BookStore_ConsoleTestApp', + dummyClientSecret: '1q2w3e*', + scope: 'BookStore', + showDebugInformation: true, + oidc: false, + requireHttps: true, + }, + apis: { + default: { + url: 'https://localhost:44359', + }, + }, + localization: { + defaultResourceName: 'BookStore', + }, +}; diff --git a/samples/BookStore-Angular-MongoDb/angular/src/favicon.ico b/samples/BookStore-Angular-MongoDb/angular/src/favicon.ico new file mode 100644 index 00000000000..8081c7ceaf2 Binary files /dev/null and b/samples/BookStore-Angular-MongoDb/angular/src/favicon.ico differ diff --git a/samples/BookStore-Angular-MongoDb/angular/src/index.html b/samples/BookStore-Angular-MongoDb/angular/src/index.html new file mode 100644 index 00000000000..5b394a1cee3 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/index.html @@ -0,0 +1,16 @@ + + + + + BookStore + + + + + + + +
    +
    + + diff --git a/samples/BookStore-Angular-MongoDb/angular/src/main.ts b/samples/BookStore-Angular-MongoDb/angular/src/main.ts new file mode 100644 index 00000000000..bbdf75c32dc --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/main.ts @@ -0,0 +1,20 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { BootstrapModuleFn as Bootstrap, hmr, WebpackModule } from '@ngxs/hmr-plugin'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +declare const module: WebpackModule; + +if (environment.production) { + enableProdMode(); +} + +const bootstrap: Bootstrap = () => platformBrowserDynamic().bootstrapModule(AppModule); + +if (environment.hmr) { + hmr(module, bootstrap).catch(err => console.error(err)); +} else { + bootstrap().catch(err => console.log(err)); +} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/polyfills.ts b/samples/BookStore-Angular-MongoDb/angular/src/polyfills.ts new file mode 100644 index 00000000000..aa665d6b874 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/polyfills.ts @@ -0,0 +1,63 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags.ts'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/samples/BookStore-Angular-MongoDb/angular/src/styles.scss b/samples/BookStore-Angular-MongoDb/angular/src/styles.scss new file mode 100644 index 00000000000..d62aefa9680 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/styles.scss @@ -0,0 +1,27 @@ +/* You can add global styles to this file, and also import other style files */ + +@keyframes donut-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +.donut { + display: inline-block; + border: 4px solid rgba(0, 0, 0, 0.1); + border-left-color: #7983ff; + border-radius: 50%; + width: 30px; + height: 30px; + animation: donut-spin 1.2s linear infinite; + + &.centered { + position: fixed; + top: 50%; + left: 50%; + /* bring your own prefixes */ + transform: translate(-50%, -50%); + } +} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/test.ts b/samples/BookStore-Angular-MongoDb/angular/src/test.ts new file mode 100644 index 00000000000..16317897b1c --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/samples/BookStore-Angular-MongoDb/angular/tsconfig.app.json b/samples/BookStore-Angular-MongoDb/angular/tsconfig.app.json new file mode 100644 index 00000000000..b750221da50 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/tsconfig.app.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["src/test.ts", "src/**/*.spec.ts"] +} diff --git a/samples/BookStore-Angular-MongoDb/angular/tsconfig.json b/samples/BookStore-Angular-MongoDb/angular/tsconfig.json new file mode 100644 index 00000000000..0a91f810788 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "module": "esnext", + "moduleResolution": "node", + "importHelpers": true, + "target": "es2015", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2018", + "dom" + ] + } +} diff --git a/samples/BookStore-Angular-MongoDb/angular/tsconfig.spec.json b/samples/BookStore-Angular-MongoDb/angular/tsconfig.spec.json new file mode 100644 index 00000000000..6400fde7d54 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/tsconfig.spec.json @@ -0,0 +1,18 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/samples/BookStore-Angular-MongoDb/angular/tslint.json b/samples/BookStore-Angular-MongoDb/angular/tslint.json new file mode 100644 index 00000000000..188bd78d326 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/tslint.json @@ -0,0 +1,92 @@ +{ + "extends": "tslint:recommended", + "rules": { + "array-type": false, + "arrow-parens": false, + "deprecation": { + "severity": "warn" + }, + "component-class-suffix": true, + "contextual-lifecycle": true, + "directive-class-suffix": true, + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ], + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "interface-name": false, + "max-classes-per-file": false, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-consecutive-blank-lines": false, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-empty": false, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-non-null-assertion": true, + "no-redundant-jsdoc": true, + "no-switch-case-fall-through": true, + "no-use-before-declare": true, + "no-var-requires": false, + "object-literal-key-quotes": [ + true, + "as-needed" + ], + "object-literal-sort-keys": false, + "ordered-imports": false, + "quotemark": [ + true, + "single" + ], + "trailing-comma": false, + "no-conflicting-lifecycle": true, + "no-host-metadata-property": true, + "no-input-rename": true, + "no-inputs-metadata-property": true, + "no-output-native": true, + "no-output-on-prefix": true, + "no-output-rename": true, + "no-outputs-metadata-property": true, + "template-banana-in-box": true, + "template-no-negated-async": true, + "use-lifecycle-interface": true, + "use-pipe-transform-interface": true + }, + "rulesDirectory": [ + "codelyzer" + ] +} \ No newline at end of file diff --git a/templates/mvc-module/.gitattributes b/samples/BookStore-Angular-MongoDb/aspnet-core/.gitattributes similarity index 100% rename from templates/mvc-module/.gitattributes rename to samples/BookStore-Angular-MongoDb/aspnet-core/.gitattributes diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/.gitignore b/samples/BookStore-Angular-MongoDb/aspnet-core/.gitignore new file mode 100644 index 00000000000..0a95c6bfc4b --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/.gitignore @@ -0,0 +1,259 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# BookStore +src/Acme.BookStore.Web/Logs/* +src/Acme.BookStore.Web.Host/Logs/* +src/Acme.BookStore.IdentityServer/Logs/* +src/Acme.BookStore.HttpApi.Host/Logs/* +src/Acme.BookStore.HttpApi.Host/Logs/* \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/Acme.BookStore.sln b/samples/BookStore-Angular-MongoDb/aspnet-core/Acme.BookStore.sln new file mode 100644 index 00000000000..7b8a9c20292 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/Acme.BookStore.sln @@ -0,0 +1,123 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29020.237 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.Domain", "src\Acme.BookStore.Domain\Acme.BookStore.Domain.csproj", "{554AD327-6DBA-4F8F-96F8-81CE7A0C863F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.Application", "src\Acme.BookStore.Application\Acme.BookStore.Application.csproj", "{1A94A50E-06DC-43C1-80B5-B662820EC3EB}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{CA9AC87F-097E-4F15-8393-4BC07735A5B0}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{04DBDB01-70F4-4E06-B468-8F87850B22BE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.Application.Tests", "test\Acme.BookStore.Application.Tests\Acme.BookStore.Application.Tests.csproj", "{50B2631D-129C-47B3-A587-029CCD6099BC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.MongoDB", "src\Acme.BookStore.MongoDB\Acme.BookStore.MongoDB.csproj", "{E3444355-D47E-431E-BDD0-DD3A7113B2AE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.Domain.Shared", "src\Acme.BookStore.Domain.Shared\Acme.BookStore.Domain.Shared.csproj", "{42F719ED-8413-4895-B5B4-5AB56079BC66}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.Application.Contracts", "src\Acme.BookStore.Application.Contracts\Acme.BookStore.Application.Contracts.csproj", "{520659C8-C734-4298-A3DA-B539DB9DFC0B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.HttpApi", "src\Acme.BookStore.HttpApi\Acme.BookStore.HttpApi.csproj", "{4164BDF7-F527-4E85-9CE6-E3C2D7426A27}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.HttpApi.Client", "src\Acme.BookStore.HttpApi.Client\Acme.BookStore.HttpApi.Client.csproj", "{3B5A0094-670D-4BB1-BFDD-61B88A8773DC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.TestBase", "test\Acme.BookStore.TestBase\Acme.BookStore.TestBase.csproj", "{91853F21-9CD9-4132-BC29-A7D5D84FFFE7}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.Domain.Tests", "test\Acme.BookStore.Domain.Tests\Acme.BookStore.Domain.Tests.csproj", "{E512F4D9-9375-480F-A2F6-A46509F9D824}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.MongoDB.Tests", "test\Acme.BookStore.MongoDB.Tests\Acme.BookStore.MongoDB.Tests.csproj", "{6015D17B-104B-4EC2-A9B7-D8A40C891458}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.HttpApi.Client.ConsoleTestApp", "test\Acme.BookStore.HttpApi.Client.ConsoleTestApp\Acme.BookStore.HttpApi.Client.ConsoleTestApp.csproj", "{EF480016-9127-4916-8735-D2466BDBC582}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.DbMigrator", "src\Acme.BookStore.DbMigrator\Acme.BookStore.DbMigrator.csproj", "{AA94D832-1CCC-4715-95A9-A483F23A1A5D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Acme.BookStore.HttpApi.Host", "src\Acme.BookStore.HttpApi.Host\Acme.BookStore.HttpApi.Host.csproj", "{748584B1-BA69-4F6A-81AA-F4BDE6BCE29D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Release|Any CPU.Build.0 = Release|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Release|Any CPU.Build.0 = Release|Any CPU + {50B2631D-129C-47B3-A587-029CCD6099BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {50B2631D-129C-47B3-A587-029CCD6099BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {50B2631D-129C-47B3-A587-029CCD6099BC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {50B2631D-129C-47B3-A587-029CCD6099BC}.Release|Any CPU.Build.0 = Release|Any CPU + {E3444355-D47E-431E-BDD0-DD3A7113B2AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E3444355-D47E-431E-BDD0-DD3A7113B2AE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E3444355-D47E-431E-BDD0-DD3A7113B2AE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E3444355-D47E-431E-BDD0-DD3A7113B2AE}.Release|Any CPU.Build.0 = Release|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Debug|Any CPU.Build.0 = Debug|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Release|Any CPU.ActiveCfg = Release|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Release|Any CPU.Build.0 = Release|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Release|Any CPU.Build.0 = Release|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Release|Any CPU.Build.0 = Release|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Release|Any CPU.Build.0 = Release|Any CPU + {91853F21-9CD9-4132-BC29-A7D5D84FFFE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91853F21-9CD9-4132-BC29-A7D5D84FFFE7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91853F21-9CD9-4132-BC29-A7D5D84FFFE7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {91853F21-9CD9-4132-BC29-A7D5D84FFFE7}.Release|Any CPU.Build.0 = Release|Any CPU + {E512F4D9-9375-480F-A2F6-A46509F9D824}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E512F4D9-9375-480F-A2F6-A46509F9D824}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E512F4D9-9375-480F-A2F6-A46509F9D824}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E512F4D9-9375-480F-A2F6-A46509F9D824}.Release|Any CPU.Build.0 = Release|Any CPU + {6015D17B-104B-4EC2-A9B7-D8A40C891458}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6015D17B-104B-4EC2-A9B7-D8A40C891458}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6015D17B-104B-4EC2-A9B7-D8A40C891458}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6015D17B-104B-4EC2-A9B7-D8A40C891458}.Release|Any CPU.Build.0 = Release|Any CPU + {EF480016-9127-4916-8735-D2466BDBC582}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EF480016-9127-4916-8735-D2466BDBC582}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EF480016-9127-4916-8735-D2466BDBC582}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EF480016-9127-4916-8735-D2466BDBC582}.Release|Any CPU.Build.0 = Release|Any CPU + {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Release|Any CPU.Build.0 = Release|Any CPU + {748584B1-BA69-4F6A-81AA-F4BDE6BCE29D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {748584B1-BA69-4F6A-81AA-F4BDE6BCE29D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {748584B1-BA69-4F6A-81AA-F4BDE6BCE29D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {748584B1-BA69-4F6A-81AA-F4BDE6BCE29D}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {1A94A50E-06DC-43C1-80B5-B662820EC3EB} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {50B2631D-129C-47B3-A587-029CCD6099BC} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {E3444355-D47E-431E-BDD0-DD3A7113B2AE} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {42F719ED-8413-4895-B5B4-5AB56079BC66} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {520659C8-C734-4298-A3DA-B539DB9DFC0B} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {91853F21-9CD9-4132-BC29-A7D5D84FFFE7} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {E512F4D9-9375-480F-A2F6-A46509F9D824} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {6015D17B-104B-4EC2-A9B7-D8A40C891458} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {EF480016-9127-4916-8735-D2466BDBC582} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {AA94D832-1CCC-4715-95A9-A483F23A1A5D} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {748584B1-BA69-4F6A-81AA-F4BDE6BCE29D} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F} + EndGlobalSection +EndGlobal diff --git a/templates/mvc/MyCompanyName.MyProjectName.sln.DotSettings b/samples/BookStore-Angular-MongoDb/aspnet-core/Acme.BookStore.sln.DotSettings similarity index 100% rename from templates/mvc/MyCompanyName.MyProjectName.sln.DotSettings rename to samples/BookStore-Angular-MongoDb/aspnet-core/Acme.BookStore.sln.DotSettings diff --git a/templates/mvc/common.props b/samples/BookStore-Angular-MongoDb/aspnet-core/common.props similarity index 100% rename from templates/mvc/common.props rename to samples/BookStore-Angular-MongoDb/aspnet-core/common.props diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.csproj new file mode 100644 index 00000000000..2846a9b3158 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/Acme.BookStore.Application.Contracts.csproj @@ -0,0 +1,22 @@ + + + + + + netstandard2.0 + Acme.BookStore + + + + + + + + + + + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/BookDto.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/BookDto.cs new file mode 100644 index 00000000000..5a94fbce1ee --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/BookDto.cs @@ -0,0 +1,16 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace Acme.BookStore +{ + public class BookDto : AuditedEntityDto + { + public string Name { get; set; } + + public BookType Type { get; set; } + + public DateTime PublishDate { get; set; } + + public float Price { get; set; } + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/BookStoreApplicationContractsModule.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/BookStoreApplicationContractsModule.cs new file mode 100644 index 00000000000..b085b223d45 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/BookStoreApplicationContractsModule.cs @@ -0,0 +1,22 @@ +using Volo.Abp.Account; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement; +using Volo.Abp.TenantManagement; + +namespace Acme.BookStore +{ + [DependsOn( + typeof(BookStoreDomainSharedModule), + typeof(AbpAccountApplicationContractsModule), + typeof(AbpFeatureManagementApplicationContractsModule), + typeof(AbpIdentityApplicationContractsModule), + typeof(AbpPermissionManagementApplicationContractsModule), + typeof(AbpTenantManagementApplicationContractsModule) + )] + public class BookStoreApplicationContractsModule : AbpModule + { + + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/CreateUpdateBookDto.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/CreateUpdateBookDto.cs new file mode 100644 index 00000000000..8dc38a9e312 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/CreateUpdateBookDto.cs @@ -0,0 +1,21 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace Acme.BookStore +{ + public class CreateUpdateBookDto + { + [Required] + [StringLength(128)] + public string Name { get; set; } + + [Required] + public BookType Type { get; set; } = BookType.Undefined; + + [Required] + public DateTime PublishDate { get; set; } + + [Required] + public float Price { get; set; } + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/IBookAppService.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/IBookAppService.cs new file mode 100644 index 00000000000..5a17a8f19d1 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application.Contracts/IBookAppService.cs @@ -0,0 +1,17 @@ +using System; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; + +namespace Acme.BookStore +{ + public interface IBookAppService : + ICrudAppService< //Defines CRUD methods + BookDto, //Used to show books + Guid, //Primary key of the book entity + PagedAndSortedResultRequestDto, //Used for paging/sorting on getting a list of books + CreateUpdateBookDto, //Used to create a new book + CreateUpdateBookDto> //Used to update a book + { + + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/Acme.BookStore.Application.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/Acme.BookStore.Application.csproj new file mode 100644 index 00000000000..69670542a1a --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/Acme.BookStore.Application.csproj @@ -0,0 +1,23 @@ + + + + + + netcoreapp2.2 + Acme.BookStore + + + + + + + + + + + + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/BookAppService.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/BookAppService.cs new file mode 100644 index 00000000000..8d9d29468a5 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/BookAppService.cs @@ -0,0 +1,19 @@ +using System; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; +using Volo.Abp.Domain.Repositories; + +namespace Acme.BookStore +{ + public class BookAppService : + CrudAppService, + IBookAppService + { + public BookAppService(IRepository repository) + : base(repository) + { + + } + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/BookStoreAppService.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/BookStoreAppService.cs new file mode 100644 index 00000000000..06da155c394 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/BookStoreAppService.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Acme.BookStore.Localization; +using Volo.Abp.Application.Services; + +namespace Acme.BookStore +{ + /* Inherit your application services from this class. + */ + public abstract class BookStoreAppService : ApplicationService + { + protected BookStoreAppService() + { + LocalizationResource = typeof(BookStoreResource); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/BookStoreApplicationAutoMapperProfile.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/BookStoreApplicationAutoMapperProfile.cs new file mode 100644 index 00000000000..9bc08930cf5 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/BookStoreApplicationAutoMapperProfile.cs @@ -0,0 +1,13 @@ +using AutoMapper; + +namespace Acme.BookStore +{ + public class BookStoreApplicationAutoMapperProfile : Profile + { + public BookStoreApplicationAutoMapperProfile() + { + CreateMap(); + CreateMap(); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/BookStoreApplicationModule.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/BookStoreApplicationModule.cs new file mode 100644 index 00000000000..452d368a9e3 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/BookStoreApplicationModule.cs @@ -0,0 +1,34 @@ +using Volo.Abp.Account; +using Volo.Abp.AutoMapper; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement; +using Volo.Abp.TenantManagement; + +namespace Acme.BookStore +{ + [DependsOn( + typeof(BookStoreDomainModule), + typeof(AbpAccountApplicationModule), + typeof(BookStoreApplicationContractsModule), + typeof(AbpIdentityApplicationModule), + typeof(AbpPermissionManagementApplicationModule), + typeof(AbpTenantManagementApplicationModule), + typeof(AbpFeatureManagementApplicationModule) + )] + public class BookStoreApplicationModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + /* Use `true` for the `validate` parameter if you want to + * validate the profile on application startup. + * See http://docs.automapper.org/en/stable/Configuration-validation.html for more info + * about the configuration validation. */ + options.AddProfile(); + }); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/Permissions/BookStorePermissionDefinitionProvider.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/Permissions/BookStorePermissionDefinitionProvider.cs new file mode 100644 index 00000000000..e189ca3743d --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/Permissions/BookStorePermissionDefinitionProvider.cs @@ -0,0 +1,22 @@ +using Acme.BookStore.Localization; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Localization; + +namespace Acme.BookStore.Permissions +{ + public class BookStorePermissionDefinitionProvider : PermissionDefinitionProvider + { + public override void Define(IPermissionDefinitionContext context) + { + var myGroup = context.AddGroup(BookStorePermissions.GroupName); + + //Define your own permissions here. Example: + //myGroup.AddPermission(BookStorePermissions.MyPermission1, L("Permission:MyPermission1")); + } + + private static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/Permissions/BookStorePermissions.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/Permissions/BookStorePermissions.cs new file mode 100644 index 00000000000..b05c4883bd5 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/Permissions/BookStorePermissions.cs @@ -0,0 +1,10 @@ +namespace Acme.BookStore.Permissions +{ + public static class BookStorePermissions + { + public const string GroupName = "BookStore"; + + //Add your own permission names. Example: + //public const string MyPermission1 = GroupName + ".MyPermission1"; + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/Acme.BookStore.DbMigrator.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/Acme.BookStore.DbMigrator.csproj new file mode 100644 index 00000000000..b0cc8ce4937 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/Acme.BookStore.DbMigrator.csproj @@ -0,0 +1,33 @@ + + + + + + Exe + netcoreapp2.2 + + + + + + + + + PreserveNewest + Always + + + + + + + + + + + + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/BookStoreDbMigratorModule.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/BookStoreDbMigratorModule.cs new file mode 100644 index 00000000000..9d62cfd6e80 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/BookStoreDbMigratorModule.cs @@ -0,0 +1,16 @@ +using Acme.BookStore.MongoDB; +using Volo.Abp.Autofac; +using Volo.Abp.Modularity; + +namespace Acme.BookStore.DbMigrator +{ + [DependsOn( + typeof(AbpAutofacModule), + typeof(BookStoreMongoDbModule), + typeof(BookStoreApplicationContractsModule) + )] + public class BookStoreDbMigratorModule : AbpModule + { + + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/Program.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/Program.cs new file mode 100644 index 00000000000..d3c4034c8a9 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/Program.cs @@ -0,0 +1,53 @@ +using System.IO; +using Microsoft.Extensions.DependencyInjection; +using Acme.BookStore.Data; +using Serilog; +using Serilog.Events; +using Volo.Abp; +using Volo.Abp.Threading; + +namespace Acme.BookStore.DbMigrator +{ + class Program + { + static void Main(string[] args) + { + ConfigureLogging(); + + using (var application = AbpApplicationFactory.Create(options => + { + options.UseAutofac(); + options.Services.AddLogging(c => c.AddSerilog()); + })) + { + application.Initialize(); + + AsyncHelper.RunSync( + () => application + .ServiceProvider + .GetRequiredService() + .MigrateAsync() + ); + + application.Shutdown(); + } + } + + private static void ConfigureLogging() + { + Log.Logger = new LoggerConfiguration() + .MinimumLevel.Information() + .MinimumLevel.Override("Microsoft", LogEventLevel.Warning) + .MinimumLevel.Override("Volo.Abp", LogEventLevel.Warning) +#if DEBUG + .MinimumLevel.Override("Acme.BookStore", LogEventLevel.Debug) +#else + .MinimumLevel.Override("Acme.BookStore", LogEventLevel.Information) +#endif + .Enrich.FromLogContext() + .WriteTo.File(Path.Combine(Directory.GetCurrentDirectory(), "Logs/logs.txt")) + .WriteTo.Console() + .CreateLogger(); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/appsettings.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/appsettings.json new file mode 100644 index 00000000000..50ff8967a24 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.DbMigrator/appsettings.json @@ -0,0 +1,18 @@ +{ + "ConnectionStrings": { + "Default": "mongodb://localhost:27017|BookStore" + }, + "IdentityServer": { + "Clients": { + "BookStore_Web": { + "ClientId": "BookStore_Web", + "ClientSecret": "1q2w3e*", + "RootUrl": "https://localhost:44335" + }, + "BookStore_ConsoleTestApp": { + "ClientId": "BookStore_ConsoleTestApp", + "ClientSecret": "1q2w3e*" + } + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.csproj new file mode 100644 index 00000000000..e4397d87a99 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Acme.BookStore.Domain.Shared.csproj @@ -0,0 +1,26 @@ + + + + + + netstandard2.0 + Acme.BookStore + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookStoreDomainErrorCodes.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookStoreDomainErrorCodes.cs new file mode 100644 index 00000000000..30f124fbed7 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookStoreDomainErrorCodes.cs @@ -0,0 +1,7 @@ +namespace Acme.BookStore +{ + public static class BookStoreDomainErrorCodes + { + /* You can add your business exception error codes here, as constants */ + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookStoreDomainSharedModule.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookStoreDomainSharedModule.cs new file mode 100644 index 00000000000..f0a6ad79642 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookStoreDomainSharedModule.cs @@ -0,0 +1,45 @@ +using Acme.BookStore.Localization; +using Volo.Abp.AuditLogging; +using Volo.Abp.BackgroundJobs; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.IdentityServer; +using Volo.Abp.Localization; +using Volo.Abp.Localization.Resources.AbpValidation; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement; +using Volo.Abp.SettingManagement; +using Volo.Abp.TenantManagement; +using Volo.Abp.VirtualFileSystem; + +namespace Acme.BookStore +{ + [DependsOn( + typeof(AbpAuditLoggingDomainSharedModule), + typeof(BackgroundJobsDomainSharedModule), + typeof(AbpFeatureManagementDomainSharedModule), + typeof(AbpIdentityDomainSharedModule), + typeof(AbpIdentityServerDomainSharedModule), + typeof(AbpPermissionManagementDomainSharedModule), + typeof(AbpSettingManagementDomainSharedModule), + typeof(AbpTenantManagementDomainSharedModule) + )] + public class BookStoreDomainSharedModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded("Acme.BookStore"); + }); + + Configure(options => + { + options.Resources + .Add("en") + .AddBaseTypes(typeof(AbpValidationResource)) + .AddVirtualJson("/Localization/BookStore"); + }); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookType.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookType.cs new file mode 100644 index 00000000000..ba84b4fe2a4 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookType.cs @@ -0,0 +1,15 @@ +namespace Acme.BookStore +{ + public enum BookType + { + Undefined, + Adventure, + Biography, + Dystopia, + Fantastic, + Horror, + Science, + ScienceFiction, + Poetry + } +} \ No newline at end of file diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/cs.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/cs.json similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/cs.json rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/cs.json diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/en.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/en.json similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/en.json rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/en.json diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/pl.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/pl.json similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/pl.json rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/pl.json diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/pt-BR.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/pt-BR.json similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/pt-BR.json rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/pt-BR.json diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/tr.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/tr.json similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/tr.json rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/tr.json diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/vi.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/vi.json similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/vi.json rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/vi.json diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/zh-Hans.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/zh-Hans.json similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/zh-Hans.json rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStore/zh-Hans.json diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStoreResource.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStoreResource.cs new file mode 100644 index 00000000000..cc4b935e586 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/Localization/BookStoreResource.cs @@ -0,0 +1,10 @@ +using Volo.Abp.Localization; + +namespace Acme.BookStore.Localization +{ + [LocalizationResourceName("BookStore")] + public class BookStoreResource + { + + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs new file mode 100644 index 00000000000..9ece5cc53ef --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs @@ -0,0 +1,11 @@ +namespace Acme.BookStore.MultiTenancy +{ + public static class MultiTenancyConsts + { + /* Enable/disable multi-tenancy easily in a single point. + * If you will never need to multi-tenancy, you can remove + * related modules and code parts, including this file. + */ + public const bool IsEnabled = true; + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Acme.BookStore.Domain.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Acme.BookStore.Domain.csproj new file mode 100644 index 00000000000..2dd4a8f3e1a --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Acme.BookStore.Domain.csproj @@ -0,0 +1,27 @@ + + + + + + netcoreapp2.2 + Acme.BookStore + + + + + + + + + + + + + + + + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Book.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Book.cs new file mode 100644 index 00000000000..93dd6d9adcf --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Book.cs @@ -0,0 +1,16 @@ +using System; +using Volo.Abp.Domain.Entities.Auditing; + +namespace Acme.BookStore +{ + public class Book : AuditedAggregateRoot + { + public string Name { get; set; } + + public BookType Type { get; set; } + + public DateTime PublishDate { get; set; } + + public float Price { get; set; } + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/BookStoreConsts.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/BookStoreConsts.cs new file mode 100644 index 00000000000..96556e1b857 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/BookStoreConsts.cs @@ -0,0 +1,9 @@ +namespace Acme.BookStore +{ + public static class BookStoreConsts + { + public const string DbTablePrefix = "App"; + + public const string DbSchema = null; + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/BookStoreDataSeederContributor.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/BookStoreDataSeederContributor.cs new file mode 100644 index 00000000000..479bac36e25 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/BookStoreDataSeederContributor.cs @@ -0,0 +1,46 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories; + +namespace Acme.BookStore +{ + public class BookStoreDataSeederContributor : IDataSeedContributor, ITransientDependency + { + private readonly IRepository _bookRepository; + + public BookStoreDataSeederContributor(IRepository bookRepository) + { + _bookRepository = bookRepository; + } + + public async Task SeedAsync(DataSeedContext context) + { + if (await _bookRepository.GetCountAsync() > 0) + { + return; + } + + await _bookRepository.InsertAsync( + new Book + { + Name = "1984", + Type = BookType.Dystopia, + PublishDate = new DateTime(1949, 6, 8), + Price = 19.84f + } + ); + + await _bookRepository.InsertAsync( + new Book + { + Name = "The Hitchhiker's Guide to the Galaxy", + Type = BookType.ScienceFiction, + PublishDate = new DateTime(1995, 9, 27), + Price = 42.0f + } + ); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/BookStoreDomainModule.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/BookStoreDomainModule.cs new file mode 100644 index 00000000000..950bd62d1bd --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/BookStoreDomainModule.cs @@ -0,0 +1,38 @@ +using Acme.BookStore.MultiTenancy; +using Volo.Abp.AuditLogging; +using Volo.Abp.BackgroundJobs; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.IdentityServer; +using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; +using Volo.Abp.PermissionManagement.Identity; +using Volo.Abp.PermissionManagement.IdentityServer; +using Volo.Abp.SettingManagement; +using Volo.Abp.TenantManagement; + +namespace Acme.BookStore +{ + [DependsOn( + typeof(BookStoreDomainSharedModule), + typeof(AbpAuditLoggingDomainModule), + typeof(BackgroundJobsDomainModule), + typeof(AbpFeatureManagementDomainModule), + typeof(AbpIdentityDomainModule), + typeof(AbpPermissionManagementDomainIdentityModule), + typeof(AbpIdentityServerDomainModule), + typeof(AbpPermissionManagementDomainIdentityServerModule), + typeof(AbpSettingManagementDomainModule), + typeof(AbpTenantManagementDomainModule) + )] + public class BookStoreDomainModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.IsEnabled = MultiTenancyConsts.IsEnabled; + }); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Data/BookStoreDbMigrationService.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Data/BookStoreDbMigrationService.cs new file mode 100644 index 00000000000..4db6b4af83c --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Data/BookStoreDbMigrationService.cs @@ -0,0 +1,39 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; + +namespace Acme.BookStore.Data +{ + public class BookStoreDbMigrationService : ITransientDependency + { + public ILogger Logger { get; set; } + + private readonly IDataSeeder _dataSeeder; + private readonly IBookStoreDbSchemaMigrator _dbSchemaMigrator; + + public BookStoreDbMigrationService( + IDataSeeder dataSeeder, + IBookStoreDbSchemaMigrator dbSchemaMigrator) + { + _dataSeeder = dataSeeder; + _dbSchemaMigrator = dbSchemaMigrator; + + Logger = NullLogger.Instance; + } + + public async Task MigrateAsync() + { + Logger.LogInformation("Started database migrations..."); + + Logger.LogInformation("Migrating database schema..."); + await _dbSchemaMigrator.MigrateAsync(); + + Logger.LogInformation("Executing database seed..."); + await _dataSeeder.SeedAsync(); + + Logger.LogInformation("Successfully completed database migrations."); + } + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Data/IBookStoreDbSchemaMigrator.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Data/IBookStoreDbSchemaMigrator.cs new file mode 100644 index 00000000000..5c94a6918e2 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Data/IBookStoreDbSchemaMigrator.cs @@ -0,0 +1,9 @@ +using System.Threading.Tasks; + +namespace Acme.BookStore.Data +{ + public interface IBookStoreDbSchemaMigrator + { + Task MigrateAsync(); + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Data/NullBookStoreDbSchemaMigrator.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Data/NullBookStoreDbSchemaMigrator.cs new file mode 100644 index 00000000000..f6ed8fc8de3 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Data/NullBookStoreDbSchemaMigrator.cs @@ -0,0 +1,16 @@ +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; + +namespace Acme.BookStore.Data +{ + /* This is used if database provider does't define + * IBookStoreDbSchemaMigrator implementation. + */ + public class NullBookStoreDbSchemaMigrator : IBookStoreDbSchemaMigrator, ITransientDependency + { + public Task MigrateAsync() + { + return Task.CompletedTask; + } + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/IdentityServer/IdentityServerDataSeedContributor.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/IdentityServer/IdentityServerDataSeedContributor.cs new file mode 100644 index 00000000000..0342bed6d00 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/IdentityServer/IdentityServerDataSeedContributor.cs @@ -0,0 +1,223 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using IdentityServer4.Models; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Configuration; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Guids; +using Volo.Abp.IdentityServer.ApiResources; +using Volo.Abp.IdentityServer.Clients; +using Volo.Abp.IdentityServer.IdentityResources; +using Volo.Abp.PermissionManagement; +using Volo.Abp.Uow; +using ApiResource = Volo.Abp.IdentityServer.ApiResources.ApiResource; +using Client = Volo.Abp.IdentityServer.Clients.Client; + +namespace Acme.BookStore.IdentityServer +{ + public class IdentityServerDataSeedContributor : IDataSeedContributor, ITransientDependency + { + private readonly IApiResourceRepository _apiResourceRepository; + private readonly IClientRepository _clientRepository; + private readonly IIdentityResourceDataSeeder _identityResourceDataSeeder; + private readonly IGuidGenerator _guidGenerator; + private readonly IPermissionDataSeeder _permissionDataSeeder; + private readonly IConfigurationAccessor _configurationAccessor; + + public IdentityServerDataSeedContributor( + IClientRepository clientRepository, + IApiResourceRepository apiResourceRepository, + IIdentityResourceDataSeeder identityResourceDataSeeder, + IGuidGenerator guidGenerator, + IPermissionDataSeeder permissionDataSeeder, + IConfigurationAccessor configurationAccessor) + { + _clientRepository = clientRepository; + _apiResourceRepository = apiResourceRepository; + _identityResourceDataSeeder = identityResourceDataSeeder; + _guidGenerator = guidGenerator; + _permissionDataSeeder = permissionDataSeeder; + _configurationAccessor = configurationAccessor; + } + + [UnitOfWork] + public virtual async Task SeedAsync(DataSeedContext context) + { + await _identityResourceDataSeeder.CreateStandardResourcesAsync(); + await CreateApiResourcesAsync(); + await CreateClientsAsync(); + } + + private async Task CreateApiResourcesAsync() + { + var commonApiUserClaims = new[] + { + "email", + "email_verified", + "name", + "phone_number", + "phone_number_verified", + "role" + }; + + await CreateApiResourceAsync("BookStore", commonApiUserClaims); + } + + private async Task CreateApiResourceAsync(string name, IEnumerable claims) + { + var apiResource = await _apiResourceRepository.FindByNameAsync(name); + if (apiResource == null) + { + apiResource = await _apiResourceRepository.InsertAsync( + new ApiResource( + _guidGenerator.Create(), + name, + name + " API" + ), + autoSave: true + ); + } + + foreach (var claim in claims) + { + if (apiResource.FindClaim(claim) == null) + { + apiResource.AddUserClaim(claim); + } + } + + return await _apiResourceRepository.UpdateAsync(apiResource); + } + + private async Task CreateClientsAsync() + { + var commonScopes = new[] + { + "email", + "openid", + "profile", + "role", + "phone", + "address", + "BookStore" + }; + + var configurationSection = _configurationAccessor.Configuration.GetSection("IdentityServer:Clients"); + + //Web Client + var webClientId = configurationSection["BookStore_Web:ClientId"]; + if (!webClientId.IsNullOrWhiteSpace()) + { + var webClientRootUrl = configurationSection["BookStore_Web:RootUrl"].EnsureEndsWith('/'); + + /* BookStore_Web client is only needed if you created a tiered + * solution. Otherwise, you can delete this client. */ + + await CreateClientAsync( + webClientId, + commonScopes, + new[] { "hybrid" }, + (configurationSection["BookStore_Web:ClientSecret"] ?? "1q2w3e*").Sha256(), + redirectUri: $"{webClientRootUrl}signin-oidc", + postLogoutRedirectUri: $"{webClientRootUrl}signout-callback-oidc" + ); + } + + //Console Test Client + var consoleClientId = configurationSection["BookStore_ConsoleTestApp:ClientId"]; + if (!consoleClientId.IsNullOrWhiteSpace()) + { + await CreateClientAsync( + consoleClientId, + commonScopes, + new[] { "password", "client_credentials" }, + (configurationSection["BookStore_ConsoleTestApp:ClientSecret"] ?? "1q2w3e*").Sha256() + ); + } + } + + private async Task CreateClientAsync( + string name, + IEnumerable scopes, + IEnumerable grantTypes, + string secret, + string redirectUri = null, + string postLogoutRedirectUri = null, + IEnumerable permissions = null) + { + var client = await _clientRepository.FindByCliendIdAsync(name); + if (client == null) + { + client = await _clientRepository.InsertAsync( + new Client( + _guidGenerator.Create(), + name + ) + { + ClientName = name, + ProtocolType = "oidc", + Description = name, + AlwaysIncludeUserClaimsInIdToken = true, + AllowOfflineAccess = true, + AbsoluteRefreshTokenLifetime = 31536000, //365 days + AccessTokenLifetime = 31536000, //365 days + AuthorizationCodeLifetime = 300, + IdentityTokenLifetime = 300, + RequireConsent = false + }, + autoSave: true + ); + } + + foreach (var scope in scopes) + { + if (client.FindScope(scope) == null) + { + client.AddScope(scope); + } + } + + foreach (var grantType in grantTypes) + { + if (client.FindGrantType(grantType) == null) + { + client.AddGrantType(grantType); + } + } + + if (client.FindSecret(secret) == null) + { + client.AddSecret(secret); + } + + if (redirectUri != null) + { + if (client.FindRedirectUri(redirectUri) == null) + { + client.AddRedirectUri(redirectUri); + } + } + + if (postLogoutRedirectUri != null) + { + if (client.FindPostLogoutRedirectUri(postLogoutRedirectUri) == null) + { + client.AddPostLogoutRedirectUri(postLogoutRedirectUri); + } + } + + if (permissions != null) + { + await _permissionDataSeeder.SeedAsync( + ClientPermissionValueProvider.ProviderName, + name, + permissions + ); + } + + return await _clientRepository.UpdateAsync(client); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Settings/BookStoreSettingDefinitionProvider.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Settings/BookStoreSettingDefinitionProvider.cs new file mode 100644 index 00000000000..6527dbc91ff --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Settings/BookStoreSettingDefinitionProvider.cs @@ -0,0 +1,13 @@ +using Volo.Abp.Settings; + +namespace Acme.BookStore.Settings +{ + public class BookStoreSettingDefinitionProvider : SettingDefinitionProvider + { + public override void Define(ISettingDefinitionContext context) + { + //Define your own settings here. Example: + //context.Add(new SettingDefinition(BookStoreSettings.MySetting1)); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Settings/BookStoreSettings.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Settings/BookStoreSettings.cs new file mode 100644 index 00000000000..7d5aa84d197 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Settings/BookStoreSettings.cs @@ -0,0 +1,10 @@ +namespace Acme.BookStore.Settings +{ + public static class BookStoreSettings + { + private const string Prefix = "BookStore"; + + //Add your own setting names here. Example: + //public const string MySetting1 = Prefix + ".MySetting1"; + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Users/AppUser.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Users/AppUser.cs new file mode 100644 index 00000000000..9068cfbcd51 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Users/AppUser.cs @@ -0,0 +1,53 @@ +using System; +using Volo.Abp.Domain.Entities.Auditing; +using Volo.Abp.Users; + +namespace Acme.BookStore.Users +{ + /* This entity shares the same table/collection ("AbpUsers" by default) with the + * IdentityUser entity of the Identity module. + * + * - You can define your custom properties into this class. + * - You never create or delete this entity, because it is Identity module's job. + * - You can query users from database with this entity. + * - You can update values of your custom properties. + */ + public class AppUser : FullAuditedAggregateRoot, IUser + { + #region Base properties + + /* These properties are shared with the IdentityUser entity of the Identity module. + * Do not change these properties through this class. Instead, use Identity module + * services (like IdentityUserManager) to change them. + * So, this properties are designed as read only! + */ + + public virtual Guid? TenantId { get; private set; } + + public virtual string UserName { get; private set; } + + public virtual string Name { get; private set; } + + public virtual string Surname { get; private set; } + + public virtual string Email { get; private set; } + + public virtual bool EmailConfirmed { get; private set; } + + public virtual string PhoneNumber { get; private set; } + + public virtual bool PhoneNumberConfirmed { get; private set; } + + #endregion + + /* Add your own properties here. Example: + * + * public virtual string MyProperty { get; set; } + */ + + private AppUser() + { + + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.csproj new file mode 100644 index 00000000000..45231975cdd --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Client/Acme.BookStore.HttpApi.Client.csproj @@ -0,0 +1,22 @@ + + + + + + netstandard2.0 + Acme.BookStore + + + + + + + + + + + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Client/BookStoreHttpApiClientModule.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Client/BookStoreHttpApiClientModule.cs new file mode 100644 index 00000000000..1c89fe1942b --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Client/BookStoreHttpApiClientModule.cs @@ -0,0 +1,31 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Account; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement; +using Volo.Abp.TenantManagement; + +namespace Acme.BookStore +{ + [DependsOn( + typeof(BookStoreApplicationContractsModule), + typeof(AbpAccountHttpApiClientModule), + typeof(AbpIdentityHttpApiClientModule), + typeof(AbpPermissionManagementHttpApiClientModule), + typeof(AbpTenantManagementHttpApiClientModule), + typeof(AbpFeatureManagementHttpApiClientModule) + )] + public class BookStoreHttpApiClientModule : AbpModule + { + public const string RemoteServiceName = "Default"; + + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddHttpClientProxies( + typeof(BookStoreApplicationContractsModule).Assembly, + RemoteServiceName + ); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Acme.BookStore.HttpApi.Host.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Acme.BookStore.HttpApi.Host.csproj new file mode 100644 index 00000000000..09ad3bde4ee --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Acme.BookStore.HttpApi.Host.csproj @@ -0,0 +1,39 @@ + + + + + + netcoreapp2.2 + InProcess + Acme.BookStore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/BookStoreHttpApiHostModule.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/BookStoreHttpApiHostModule.cs new file mode 100644 index 00000000000..0adae964762 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/BookStoreHttpApiHostModule.cs @@ -0,0 +1,170 @@ +using System; +using System.IO; +using System.Linq; +using System.Net.Http; +using Acme.BookStore.MongoDB; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Acme.BookStore.MultiTenancy; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic; +using Swashbuckle.AspNetCore.Swagger; +using Volo.Abp; +using Volo.Abp.Account.Web; +using Volo.Abp.AspNetCore.Authentication.JwtBearer; +using Volo.Abp.AspNetCore.MultiTenancy; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Autofac; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.UI.Navigation.Urls; +using Volo.Abp.VirtualFileSystem; + +namespace Acme.BookStore +{ + [DependsOn( + typeof(BookStoreHttpApiModule), + typeof(AbpAutofacModule), + typeof(AbpAspNetCoreMultiTenancyModule), + typeof(BookStoreApplicationModule), + typeof(BookStoreMongoDbModule), + typeof(AbpAspNetCoreMvcUiBasicThemeModule), + typeof(AbpAspNetCoreAuthenticationJwtBearerModule), + typeof(AbpAccountWebIdentityServerModule) + )] + public class BookStoreHttpApiHostModule : AbpModule + { + private const string DefaultCorsPolicyName = "Default"; + + public override void ConfigureServices(ServiceConfigurationContext context) + { + var configuration = context.Services.GetConfiguration(); + var hostingEnvironment = context.Services.GetHostingEnvironment(); + + ConfigureUrls(configuration); + ConfigureConventionalControllers(); + ConfigureAuthentication(context, configuration); + ConfigureSwagger(context); + ConfigureLocalization(); + ConfigureVirtualFileSystem(context); + ConfigureCors(context, configuration); + } + + private void ConfigureUrls(IConfigurationRoot configuration) + { + Configure(options => + { + options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"]; + }); + } + + private void ConfigureVirtualFileSystem(ServiceConfigurationContext context) + { + var hostingEnvironment = context.Services.GetHostingEnvironment(); + + if (hostingEnvironment.IsDevelopment()) + { + Configure(options => + { + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}Acme.BookStore.Domain.Shared")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}Acme.BookStore.Domain")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}Acme.BookStore.Application.Contracts")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}Acme.BookStore.Application")); + }); + } + } + + private void ConfigureConventionalControllers() + { + Configure(options => + { + options.ConventionalControllers.Create(typeof(BookStoreApplicationModule).Assembly); + }); + } + + private void ConfigureAuthentication(ServiceConfigurationContext context, IConfigurationRoot configuration) + { + context.Services.AddAuthentication() + .AddIdentityServerAuthentication(options => + { + options.Authority = configuration["AuthServer:Authority"]; + options.RequireHttpsMetadata = false; + options.ApiName = "BookStore"; + options.JwtBackChannelHandler = new HttpClientHandler() + { + ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator + }; + }); + } + + private static void ConfigureSwagger(ServiceConfigurationContext context) + { + context.Services.AddSwaggerGen( + options => + { + options.SwaggerDoc("v1", new Info {Title = "BookStore API", Version = "v1"}); + options.DocInclusionPredicate((docName, description) => true); + }); + } + + private void ConfigureLocalization() + { + Configure(options => + { + options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština")); + options.Languages.Add(new LanguageInfo("en", "en", "English")); + options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português")); + options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe")); + options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); + }); + } + + private void ConfigureCors(ServiceConfigurationContext context, IConfigurationRoot configuration) + { + context.Services.AddCors(options => + { + options.AddPolicy(DefaultCorsPolicyName, builder => + { + builder + .WithOrigins( + configuration["App:CorsOrigins"] + .Split(",", StringSplitOptions.RemoveEmptyEntries) + .Select(o => o.RemovePostFix("/")) + .ToArray() + ) + .SetIsOriginAllowedToAllowWildcardSubdomains() + .AllowAnyHeader() + .AllowAnyMethod() + .AllowCredentials(); + }); + }); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var app = context.GetApplicationBuilder(); + + app.UseCors(DefaultCorsPolicyName); + + app.UseVirtualFiles(); + app.UseAuthentication(); + app.UseJwtTokenMiddleware(); + + if (MultiTenancyConsts.IsEnabled) + { + app.UseMultiTenancy(); + } + + app.UseIdentityServer(); + app.UseAbpRequestLocalization(); + app.UseSwagger(); + app.UseSwaggerUI(options => + { + options.SwaggerEndpoint("/swagger/v1/swagger.json", "BookStore API"); + }); + app.UseAuditing(); + app.UseMvcWithDefaultRouteAndArea(); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Controllers/HomeController.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Controllers/HomeController.cs new file mode 100644 index 00000000000..44534ce35eb --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Controllers/HomeController.cs @@ -0,0 +1,13 @@ +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc; + +namespace Acme.BookStore.Controllers +{ + public class HomeController : AbpController + { + public ActionResult Index() + { + return Redirect("/swagger"); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Program.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Program.cs new file mode 100644 index 00000000000..37e301f0b6d --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Program.cs @@ -0,0 +1,54 @@ +using System; +using System.IO; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.InProcess; +using Serilog; +using Serilog.Events; + +namespace Acme.BookStore +{ + public class Program + { + public static int Main(string[] args) + { + CurrentDirectoryHelpers.SetCurrentDirectory(); + + Log.Logger = new LoggerConfiguration() +#if DEBUG + .MinimumLevel.Debug() +#else + .MinimumLevel.Information() +#endif + .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .Enrich.FromLogContext() + .WriteTo.Async(c => c.File("Logs/logs.txt")) + .CreateLogger(); + + try + { + Log.Information("Starting Acme.BookStore.HttpApi.Host."); + BuildWebHostInternal(args).Run(); + return 0; + } + catch (Exception ex) + { + Log.Fatal(ex, "Host terminated unexpectedly!"); + return 1; + } + finally + { + Log.CloseAndFlush(); + } + } + + public static IWebHost BuildWebHostInternal(string[] args) => + new WebHostBuilder() + .UseKestrel() + .UseContentRoot(Directory.GetCurrentDirectory()) + .UseIIS() + .UseIISIntegration() + .UseStartup() + .UseSerilog() + .Build(); + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Properties/launchSettings.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Properties/launchSettings.json new file mode 100644 index 00000000000..0ce951cc40f --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "https://localhost:44359", + "sslPort": 44359 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Acme.BookStore.HttpApi.Host": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "https://localhost:44359", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Startup.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Startup.cs new file mode 100644 index 00000000000..4fad5f17884 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/Startup.cs @@ -0,0 +1,27 @@ +using System; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Volo.Abp; + +namespace Acme.BookStore +{ + public class Startup + { + public IServiceProvider ConfigureServices(IServiceCollection services) + { + services.AddApplication(options => + { + options.UseAutofac(); + }); + + return services.BuildServiceProviderFromFactory(); + } + + public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) + { + app.InitializeApplication(); + } + } +} diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/abp.resourcemapping.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/abp.resourcemapping.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/abp.resourcemapping.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/abp.resourcemapping.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.Development.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/appsettings.Development.json similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.Development.json rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/appsettings.Development.json diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/appsettings.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/appsettings.json new file mode 100644 index 00000000000..143c972ee13 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/appsettings.json @@ -0,0 +1,15 @@ +{ + "App": { + "SelfUrl": "https://localhost:44359", + "CorsOrigins": "https://*.BookStore.com,http://localhost:4200" + }, + "ConnectionStrings": { + "Default": "mongodb://localhost:27017|BookStore" + }, + "Redis": { + "Configuration": "127.0.0.1" + }, + "AuthServer": { + "Authority": "https://localhost:44359" + } +} diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/gulpfile.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/gulpfile.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/gulpfile.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/gulpfile.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/package.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/package.json similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/package.json rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/package.json diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/tempkey.rsa b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/tempkey.rsa new file mode 100644 index 00000000000..f19e3e7dd85 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/tempkey.rsa @@ -0,0 +1 @@ +{"KeyId":"5eb863b25811a7099f9bc925c0fdf680","Parameters":{"D":"gqn7NAeMkug4twJJHFz/qPseDzQCx7R+6Maj649xrG4vPsMANV9mfR78Er2SuHUS0ZihM2MQEILI5Sf41Uuubv8swCNSE3Dw7GQrBIbTAJ7BZKbQMVgtGkMDtHrtri6d9cOi3EOTSJINICk9r80M49oBMOZihEKascfBSIUYVQvWLEMYfryEiDeFUPbobr10OxF5tZ1unvEKgZe190BdNKWQuFhJelcgsZumjEYNsOz5DHrK73WLhfTy01DmsTKx8i1XVnLtq6W89MqAhMZP9QO9Vj8lR0ANnmdOsY6hJfwUbXiI36t4V9rAZvXR5ESorjb4mnXzT6QPuOfy1fbdSQ==","DP":"ItYIpEqw6aDjDc/swDifUe0Dq6yl4yim3UyQ4B9NBPQR5M6b7D3vbCnvwql4zJK4s+0N4lRViBtkF+20Td1yc2v8S+THCYZCVxCf2e9Q7Ff/sKecJ9/JmdzHkztCfs0xb+4X3CPEQP+JIYtMGmwOLQgE5XgmUYKr0ahZDhYTCwE=","DQ":"v35mgxfyF/nwnWwWlR9cF3mg0v7SyPfKkwdxGaVnGH6G8nPWpPlO+zueflA5QDXEwGtk/1k3PAzI/OLUwJiKBubx/UMhsqt5+/bKTrFDNHxLANCvGNZggMZIzFZBYRucuXRZbiBe5qpCkKkniUct7w6jd/V1mnsESiJZ7btcxU0=","Exponent":"AQAB","InverseQ":"Vbg2a+wtaYvhTV8AzqJsVvaz0kfC4HFbmwEgA8+BAbS3GEoS3RHFSfB3DHndpnNihIg72DctDNLmV2GMMiTu18uyI+7AUaYNR836fByxptfyhPtSQfw4kINZ3V0GWKJGzzZ5NAOct4/FpRl8xliHetayCfUIuK9jwk0z9i6V6bA=","Modulus":"xlzmN1sBi2V1971MsPD5MTND9dAGncIzYqxa3H+9jx1mNDivY6JgKijUWm5a3D2Y1UPMB3kx6qUf3iH6pZHjq5bk938qRhxrPy9muW55U03HTiW4V5/ga0+OqXj5Tj4lz+29OiQHPErxLRgfXT+WBgrGb75ElzkHajKpJnPgzAZuarlUCwupJNQlav/crwOFrgkhGsnaOW13M8htiSLZozw5lxkbhYIei7YTTQZ3l6rVH1dPL8CvzRJJOTwbnU8k0sUmWiuOhrLzuinlr6uuOTocAVgbj943/witVFtN5B0yhetxEVgFCwxRDTOO1EKVHFtCiAyZBUOlK4gwZ+SbGQ==","P":"7dFfbAkZSdx/ieSMYJHoY1DKC4dLg80RObEEmuJ72MaVJLTtFuBPoRpYOrMUNuupIyPjZZsW8fHRlPRhKW7xFv+Q2aDudh1UaJzFZs3xYKoiXTU/j0B3TB3nrifVLMqsS+8kHOWOojwA4dMjI6GCYCpKmYVvMOE1cuJrQ9EYxoM=","Q":"1YdN8mLchLVoTEwD34Pi3T2U7EjjBDgDCzhjl7x5FBG73TyKMz1n7/KXkXcJ2rqIAsnLqCWpYUeRcWl+IQEQxFKoMwkvmQ33lRkOE0SBZ+FnUAMivRyxOD5qM9z4ccqx0ga4ZRgb1lR85f7VYtMSfIosOuSFxWAbV1e29utxhTM="}} \ No newline at end of file diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/core/abp.css b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/abp/core/abp.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/core/abp.css rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/abp/core/abp.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/core/abp.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/abp/core/abp.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/core/abp.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/abp/core/abp.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/jquery/abp.jquery.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/abp/jquery/abp.jquery.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/jquery/abp.jquery.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/abp/jquery/abp.jquery.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/bootstrap/css/bootstrap.css b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/bootstrap/css/bootstrap.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/bootstrap/css/bootstrap.css rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/bootstrap/css/bootstrap.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/bootstrap/js/bootstrap.bundle.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/bootstrap/js/bootstrap.bundle.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/bootstrap/js/bootstrap.bundle.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/bootstrap/js/bootstrap.bundle.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/datatables.net/js/jquery.dataTables.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/datatables.net/js/jquery.dataTables.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/datatables.net/js/jquery.dataTables.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/datatables.net/js/jquery.dataTables.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/css/font-awesome.css b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/font-awesome/css/font-awesome.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/css/font-awesome.css rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/font-awesome/css/font-awesome.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/FontAwesome.otf b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/font-awesome/fonts/FontAwesome.otf similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/FontAwesome.otf rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/font-awesome/fonts/FontAwesome.otf diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2 b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2 similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2 rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2 diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-form/jquery.form.min.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-form/jquery.form.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-form/jquery.form.min.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-form/jquery.form.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/jquery.validate.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/jquery.validate.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/jquery.validate.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/jquery.validate.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ar.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ar.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ar.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ar.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_az.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_az.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_az.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_az.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_bg.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_bg.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_bg.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_bg.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ca.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ca.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ca.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ca.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_cs.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_cs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_cs.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_cs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_da.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_da.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_da.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_da.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_de.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_de.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_de.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_de.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_el.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_el.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_el.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_el.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_es.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_es.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_AR.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_es_AR.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_AR.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_es_AR.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_PE.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_es_PE.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_PE.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_es_PE.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_et.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_et.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_et.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_et.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_eu.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_eu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_eu.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_eu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_fa.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_fa.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_fa.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_fa.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fi.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_fi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fi.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_fi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_fr.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_fr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_fr.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_fr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ge.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ge.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ge.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ge.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_gl.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_gl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_gl.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_gl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_he.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_he.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_he.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_he.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hr.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_hr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hr.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_hr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hu.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_hu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hu.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_hu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_id.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_id.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_id.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_id.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_is.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_is.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_is.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_is.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_it.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_it.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_it.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_it.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ja.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ja.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ja.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ja.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ka.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ka.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ka.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ka.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_kk.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_kk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_kk.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_kk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ko.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ko.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ko.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ko.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lt.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_lt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lt.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_lt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lv.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_lv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lv.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_lv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_mk.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_mk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_mk.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_mk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_my.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_my.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_my.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_my.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_nl.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_nl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_nl.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_nl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_no.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_no.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_no.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_no.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_pl.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_pl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_pl.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_pl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ro.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ro.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ro.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ro.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ru.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ru.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ru.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ru.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sd.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_sd.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sd.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_sd.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_si.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_si.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_si.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_si.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_sk.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_sk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_sk.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_sk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sl.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_sl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sl.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_sl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_sr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_sr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_sv.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_sv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_sv.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_sv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_th.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_th.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_th.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_th.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tj.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_tj.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tj.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_tj.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_tr.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_tr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_tr.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_tr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_uk.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_uk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_uk.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_uk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ur.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ur.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ur.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_ur.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_vi.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_vi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_vi.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_vi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_zh.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_zh.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_zh.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_zh.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_de.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/methods_de.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_de.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/methods_de.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_es_CL.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/methods_es_CL.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_es_CL.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/methods_es_CL.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_fi.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/methods_fi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_fi.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/methods_fi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_nl.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/methods_nl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_nl.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/methods_nl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_pt.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/methods_pt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_pt.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery-validation/localization/methods_pt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery/jquery.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery/jquery.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery/jquery.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/jquery/jquery.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/lodash/lodash.min.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/lodash/lodash.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/lodash/lodash.min.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/lodash/lodash.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/css/select2.min.css b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/css/select2.min.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/css/select2.min.css rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/css/select2.min.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/af.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/af.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/af.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/af.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/ar.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/ar.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/ar.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/ar.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/az.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/az.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/az.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/az.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/bg.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/bg.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/bg.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/bg.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/bs.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/bs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/bs.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/bs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/ca.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/ca.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/ca.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/ca.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/cs.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/cs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/cs.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/cs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/da.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/da.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/da.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/da.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/de.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/de.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/de.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/de.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/dsb.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/dsb.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/dsb.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/dsb.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/el.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/el.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/el.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/el.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/en.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/en.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/en.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/en.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/es.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/es.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/es.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/es.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/et.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/et.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/et.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/et.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/eu.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/eu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/eu.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/eu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/fa.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/fa.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/fa.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/fa.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/fi.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/fi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/fi.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/fi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/fr.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/fr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/fr.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/fr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/gl.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/gl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/gl.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/gl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/he.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/he.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/he.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/he.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/hi.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/hi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/hi.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/hi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/hr.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/hr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/hr.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/hr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/hsb.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/hsb.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/hsb.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/hsb.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/hu.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/hu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/hu.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/hu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/hy.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/hy.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/hy.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/hy.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/id.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/id.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/id.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/id.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/is.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/is.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/is.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/is.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/it.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/it.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/it.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/it.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/ja.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/ja.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/ja.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/ja.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/km.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/km.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/km.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/km.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/ko.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/ko.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/ko.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/ko.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/lt.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/lt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/lt.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/lt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/lv.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/lv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/lv.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/lv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/mk.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/mk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/mk.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/mk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/ms.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/ms.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/ms.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/ms.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/nb.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/nb.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/nb.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/nb.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/nl.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/nl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/nl.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/nl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/pl.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/pl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/pl.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/pl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/ps.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/ps.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/ps.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/ps.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/pt-BR.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/pt-BR.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/pt-BR.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/pt-BR.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/pt.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/pt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/pt.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/pt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/ro.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/ro.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/ro.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/ro.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/ru.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/ru.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/ru.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/ru.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/sk.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/sk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/sk.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/sk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/sl.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/sl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/sl.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/sl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/sr-Cyrl.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/sr-Cyrl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/sr-Cyrl.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/sr-Cyrl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/sr.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/sr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/sr.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/sr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/sv.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/sv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/sv.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/sv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/th.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/th.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/th.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/th.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/tr.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/tr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/tr.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/tr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/uk.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/uk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/uk.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/uk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/vi.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/vi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/vi.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/vi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/zh-CN.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/zh-CN.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/zh-CN.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/zh-CN.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/zh-TW.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/zh-TW.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/i18n/zh-TW.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/i18n/zh-TW.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/select2.full.min.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/select2.full.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/select2.full.min.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/select2.full.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/select2.min.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/select2.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/select2/js/select2.min.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/select2/js/select2.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/sweetalert/sweetalert.min.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/sweetalert/sweetalert.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/sweetalert/sweetalert.min.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/sweetalert/sweetalert.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/jquery.timeago.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/jquery.timeago.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/jquery.timeago.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/jquery.timeago.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/README.md b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/README.md similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/README.md rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/README.md diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.af.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.af.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.af.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.af.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.am.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.am.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.am.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.am.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ar.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.ar.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ar.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.ar.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.az.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.az.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.az.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.az.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.bg.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.bg.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.bg.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.bg.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.bs.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.bs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.bs.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.bs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ca.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.ca.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ca.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.ca.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.cs.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.cs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.cs.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.cs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.cy.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.cy.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.cy.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.cy.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.da.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.da.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.da.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.da.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.de.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.de.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.de.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.de.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.dv.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.dv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.dv.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.dv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.el.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.el.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.el.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.el.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.en.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.en.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.en.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.en.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.es.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.es.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.es.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.es.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.et.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.et.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.et.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.et.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.eu.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.eu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.eu.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.eu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.fa.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.fa.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.fa.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.fa.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fi.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.fi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fi.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.fi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fr.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.fr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fr.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.fr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.gl.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.gl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.gl.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.gl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.he.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.he.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.he.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.he.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hr.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.hr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hr.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.hr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hu.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.hu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hu.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.hu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hy.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.hy.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hy.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.hy.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.id.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.id.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.id.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.id.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.is.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.is.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.is.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.is.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.it.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.it.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.it.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.it.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ja.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.ja.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ja.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.ja.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.jv.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.jv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.jv.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.jv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ko.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.ko.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ko.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.ko.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ky.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.ky.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ky.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.ky.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.lt.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.lt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.lt.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.lt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.lv.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.lv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.lv.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.lv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.mk.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.mk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.mk.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.mk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.nl.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.nl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.nl.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.nl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.no.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.no.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.no.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.no.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pl.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.pl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pl.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.pl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.pt.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.pt.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ro.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.ro.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ro.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.ro.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.rs.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.rs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.rs.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.rs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ru.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.ru.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ru.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.ru.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.rw.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.rw.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.rw.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.rw.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.si.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.si.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.si.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.si.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sk.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.sk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sk.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.sk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sl.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.sl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sl.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.sl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sq.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.sq.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sq.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.sq.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sr.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.sr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sr.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.sr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sv.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.sv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sv.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.sv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.th.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.th.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.th.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.th.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.tr.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.tr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.tr.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.tr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.uk.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.uk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.uk.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.uk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ur.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.ur.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ur.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.ur.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.uz.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.uz.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.uz.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.uz.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.vi.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.vi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.vi.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.vi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.css b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/toastr/toastr.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.css rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/toastr/toastr.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.js.map b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/toastr/toastr.js.map similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.js.map rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/toastr/toastr.js.map diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.min.css b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/toastr/toastr.min.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.min.css rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/toastr/toastr.min.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.min.js b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/toastr/toastr.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.min.js rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/wwwroot/libs/toastr/toastr.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/yarn.lock b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/yarn.lock similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/yarn.lock rename to samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/yarn.lock diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi/Acme.BookStore.HttpApi.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi/Acme.BookStore.HttpApi.csproj new file mode 100644 index 00000000000..86c92499083 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi/Acme.BookStore.HttpApi.csproj @@ -0,0 +1,22 @@ + + + + + + netcoreapp2.2 + Acme.BookStore + + + + + + + + + + + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi/BookStoreHttpApiModule.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi/BookStoreHttpApiModule.cs new file mode 100644 index 00000000000..8ae838c71ed --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi/BookStoreHttpApiModule.cs @@ -0,0 +1,22 @@ +using Volo.Abp.Account; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement.HttpApi; +using Volo.Abp.TenantManagement; + +namespace Acme.BookStore +{ + [DependsOn( + typeof(BookStoreApplicationContractsModule), + typeof(AbpAccountHttpApiModule), + typeof(AbpIdentityHttpApiModule), + typeof(AbpPermissionManagementHttpApiModule), + typeof(AbpTenantManagementHttpApiModule), + typeof(AbpFeatureManagementHttpApiModule) + )] + public class BookStoreHttpApiModule : AbpModule + { + + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi/Controllers/BookStoreController.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi/Controllers/BookStoreController.cs new file mode 100644 index 00000000000..107a76d3305 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi/Controllers/BookStoreController.cs @@ -0,0 +1,15 @@ +using Acme.BookStore.Localization; +using Volo.Abp.AspNetCore.Mvc; + +namespace Acme.BookStore.Controllers +{ + /* Inherit your controllers from this class. + */ + public abstract class BookStoreController : AbpController + { + protected BookStoreController() + { + LocalizationResource = typeof(BookStoreResource); + } + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi/Controllers/TestController.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi/Controllers/TestController.cs new file mode 100644 index 00000000000..5f06bcfb4f8 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi/Controllers/TestController.cs @@ -0,0 +1,28 @@ +using Microsoft.AspNetCore.Mvc; +using Acme.BookStore.Models.Test; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Acme.BookStore.Controllers +{ + [Route("api/test")] + public class TestController : BookStoreController + { + public TestController() + { + + } + + [HttpGet] + [Route("")] + public async Task> GetAsync() + { + return new List + { + new TestModel {Name = "John", BirthDate = new DateTime(1942, 11, 18)}, + new TestModel {Name = "Adams", BirthDate = new DateTime(1997, 05, 24)} + }; + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi/Models/Test/TestModel.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi/Models/Test/TestModel.cs new file mode 100644 index 00000000000..05381a8371a --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi/Models/Test/TestModel.cs @@ -0,0 +1,11 @@ +using System; + +namespace Acme.BookStore.Models.Test +{ + public class TestModel + { + public string Name { get; set; } + + public DateTime BirthDate { get; set; } + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.MongoDB/Acme.BookStore.MongoDB.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.MongoDB/Acme.BookStore.MongoDB.csproj new file mode 100644 index 00000000000..f34697a0634 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.MongoDB/Acme.BookStore.MongoDB.csproj @@ -0,0 +1,22 @@ + + + + + + netcoreapp2.2 + Acme.BookStore + + + + + + + + + + + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.MongoDB/MongoDb/BookStoreMongoDbContext.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.MongoDB/MongoDb/BookStoreMongoDbContext.cs new file mode 100644 index 00000000000..5a28248c531 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.MongoDB/MongoDb/BookStoreMongoDbContext.cs @@ -0,0 +1,27 @@ +using MongoDB.Driver; +using Acme.BookStore.Users; +using Volo.Abp.Data; +using Volo.Abp.MongoDB; + +namespace Acme.BookStore.MongoDB +{ + [ConnectionStringName("Default")] + public class BookStoreMongoDbContext : AbpMongoDbContext + { + public IMongoCollection Books => Collection(); + + public IMongoCollection Users => Collection(); + + protected override void CreateModel(IMongoModelBuilder modelBuilder) + { + base.CreateModel(modelBuilder); + + modelBuilder.Entity(b => + { + /* Sharing the same "AbpUsers" collection + * with the Identity module's IdentityUser class. */ + b.CollectionName = "AbpUsers"; + }); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.MongoDB/MongoDb/BookStoreMongoDbModule.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.MongoDB/MongoDb/BookStoreMongoDbModule.cs new file mode 100644 index 00000000000..cd0696569fe --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.MongoDB/MongoDb/BookStoreMongoDbModule.cs @@ -0,0 +1,35 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.AuditLogging.MongoDB; +using Volo.Abp.BackgroundJobs.MongoDB; +using Volo.Abp.FeatureManagement.MongoDB; +using Volo.Abp.Identity.MongoDB; +using Volo.Abp.IdentityServer.MongoDB; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement.MongoDB; +using Volo.Abp.SettingManagement.MongoDB; +using Volo.Abp.TenantManagement.MongoDB; + +namespace Acme.BookStore.MongoDB +{ + [DependsOn( + typeof(BookStoreDomainModule), + typeof(AbpPermissionManagementMongoDbModule), + typeof(AbpSettingManagementMongoDbModule), + typeof(AbpIdentityMongoDbModule), + typeof(AbpIdentityServerMongoDbModule), + typeof(BackgroundJobsMongoDbModule), + typeof(AbpAuditLoggingMongoDbModule), + typeof(AbpTenantManagementMongoDbModule), + typeof(AbpFeatureManagementMongoDbModule) + )] + public class BookStoreMongoDbModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddMongoDbContext(options => + { + options.AddDefaultRepositories(); + }); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Application.Tests/Acme.BookStore.Application.Tests.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Application.Tests/Acme.BookStore.Application.Tests.csproj new file mode 100644 index 00000000000..bedb0062f2b --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Application.Tests/Acme.BookStore.Application.Tests.csproj @@ -0,0 +1,19 @@ + + + + + + netcoreapp2.2 + Acme.BookStore + + + + + + + + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Application.Tests/BookStoreApplicationTestBase.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Application.Tests/BookStoreApplicationTestBase.cs new file mode 100644 index 00000000000..5263dc5ea48 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Application.Tests/BookStoreApplicationTestBase.cs @@ -0,0 +1,7 @@ +namespace Acme.BookStore +{ + public abstract class BookStoreApplicationTestBase : BookStoreTestBase + { + + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Application.Tests/BookStoreApplicationTestModule.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Application.Tests/BookStoreApplicationTestModule.cs new file mode 100644 index 00000000000..40fee217940 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Application.Tests/BookStoreApplicationTestModule.cs @@ -0,0 +1,13 @@ +using Volo.Abp.Modularity; + +namespace Acme.BookStore +{ + [DependsOn( + typeof(BookStoreApplicationModule), + typeof(BookStoreDomainTestModule) + )] + public class BookStoreApplicationTestModule : AbpModule + { + + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Application.Tests/Samples/SampleAppServiceTests.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Application.Tests/Samples/SampleAppServiceTests.cs new file mode 100644 index 00000000000..cd059e5639c --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Application.Tests/Samples/SampleAppServiceTests.cs @@ -0,0 +1,33 @@ +using Shouldly; +using System.Threading.Tasks; +using Volo.Abp.Identity; +using Xunit; + +namespace Acme.BookStore.Samples +{ + /* This is just an example test class. + * Normally, you don't test code of the modules you are using + * (like IIdentityUserAppService here). + * Only test your own application services. + */ + public class SampleAppServiceTests : BookStoreApplicationTestBase + { + private readonly IIdentityUserAppService _userAppService; + + public SampleAppServiceTests() + { + _userAppService = GetRequiredService(); + } + + [Fact] + public async Task Initial_Data_Should_Contain_Admin_User() + { + //Act + var result = await _userAppService.GetListAsync(new GetIdentityUsersInput()); + + //Assert + result.TotalCount.ShouldBeGreaterThan(0); + result.Items.ShouldContain(u => u.UserName == "admin"); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Domain.Tests/Acme.BookStore.Domain.Tests.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Domain.Tests/Acme.BookStore.Domain.Tests.csproj new file mode 100644 index 00000000000..e2c95c50932 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Domain.Tests/Acme.BookStore.Domain.Tests.csproj @@ -0,0 +1,18 @@ + + + + + + netcoreapp2.2 + Acme.BookStore + + + + + + + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Domain.Tests/BookStoreDomainTestBase.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Domain.Tests/BookStoreDomainTestBase.cs new file mode 100644 index 00000000000..a8d86b009df --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Domain.Tests/BookStoreDomainTestBase.cs @@ -0,0 +1,7 @@ +namespace Acme.BookStore +{ + public abstract class BookStoreDomainTestBase : BookStoreTestBase + { + + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Domain.Tests/BookStoreDomainTestModule.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Domain.Tests/BookStoreDomainTestModule.cs new file mode 100644 index 00000000000..e5c6d3a97fc --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Domain.Tests/BookStoreDomainTestModule.cs @@ -0,0 +1,13 @@ +using Acme.BookStore.MongoDB; +using Volo.Abp.Modularity; + +namespace Acme.BookStore +{ + [DependsOn( + typeof(BookStoreMongoDbTestModule) + )] + public class BookStoreDomainTestModule : AbpModule + { + + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Domain.Tests/Samples/SampleDomainTests.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Domain.Tests/Samples/SampleDomainTests.cs new file mode 100644 index 00000000000..0d8978e7f58 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.Domain.Tests/Samples/SampleDomainTests.cs @@ -0,0 +1,45 @@ +using System.Threading.Tasks; +using Shouldly; +using Volo.Abp.Identity; +using Xunit; + +namespace Acme.BookStore.Samples +{ + /* This is just an example test class. + * Normally, you don't test code of the modules you are using + * (like IdentityUserManager here). + * Only test your own domain services. + */ + public class SampleDomainTests : BookStoreDomainTestBase + { + private readonly IIdentityUserRepository _identityUserRepository; + private readonly IdentityUserManager _identityUserManager; + + public SampleDomainTests() + { + _identityUserRepository = GetRequiredService(); + _identityUserManager = GetRequiredService(); + } + + [Fact] + public async Task Should_Set_Email_Of_A_User() + { + IdentityUser adminUser; + + /* Need to manually start Unit Of Work because + * FirstOrDefaultAsync should be executed while db connection / context is available. + */ + await WithUnitOfWorkAsync(async () => + { + adminUser = await _identityUserRepository + .FindByNormalizedUserNameAsync("ADMIN"); + + await _identityUserManager.SetEmailAsync(adminUser, "newemail@abp.io"); + await _identityUserRepository.UpdateAsync(adminUser); + }); + + adminUser = await _identityUserRepository.FindByNormalizedUserNameAsync("ADMIN"); + adminUser.Email.ShouldBe("newemail@abp.io"); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Acme.BookStore.HttpApi.Client.ConsoleTestApp.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Acme.BookStore.HttpApi.Client.ConsoleTestApp.csproj new file mode 100644 index 00000000000..414fa1c3bba --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Acme.BookStore.HttpApi.Client.ConsoleTestApp.csproj @@ -0,0 +1,24 @@ + + + + Exe + netcoreapp2.2 + + + + + + + + + PreserveNewest + Always + + + + + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/BookStoreConsoleApiClientModule.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/BookStoreConsoleApiClientModule.cs new file mode 100644 index 00000000000..4115bcd2cad --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/BookStoreConsoleApiClientModule.cs @@ -0,0 +1,14 @@ +using Volo.Abp.Http.Client.IdentityModel; +using Volo.Abp.Modularity; + +namespace Acme.BookStore.HttpApi.Client.ConsoleTestApp +{ + [DependsOn( + typeof(BookStoreHttpApiClientModule), + typeof(AbpHttpClientIdentityModelModule) + )] + public class BookStoreConsoleApiClientModule : AbpModule + { + + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs new file mode 100644 index 00000000000..edfde1aae6c --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs @@ -0,0 +1,26 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Identity; + +namespace Acme.BookStore.HttpApi.Client.ConsoleTestApp +{ + public class ClientDemoService : ITransientDependency + { + private readonly IProfileAppService _profileAppService; + + public ClientDemoService(IProfileAppService profileAppService) + { + _profileAppService = profileAppService; + } + + public async Task RunAsync() + { + var output = await _profileAppService.GetAsync(); + Console.WriteLine($"UserName : {output.UserName}"); + Console.WriteLine($"Email : {output.Email}"); + Console.WriteLine($"Name : {output.Name}"); + Console.WriteLine($"Surname : {output.Surname}"); + } + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Program.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Program.cs new file mode 100644 index 00000000000..ecef29d9635 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/Program.cs @@ -0,0 +1,24 @@ +using System; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; +using Volo.Abp.Threading; + +namespace Acme.BookStore.HttpApi.Client.ConsoleTestApp +{ + class Program + { + static void Main(string[] args) + { + using (var application = AbpApplicationFactory.Create()) + { + application.Initialize(); + + var demo = application.ServiceProvider.GetRequiredService(); + AsyncHelper.RunSync(() => demo.RunAsync()); + + Console.WriteLine("Press ENTER to stop application..."); + Console.ReadLine(); + } + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/appsettings.json b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/appsettings.json new file mode 100644 index 00000000000..8c49473e930 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.HttpApi.Client.ConsoleTestApp/appsettings.json @@ -0,0 +1,18 @@ +{ + "RemoteServices": { + "Default": { + "BaseUrl": "https://localhost:44351" + } + }, + "IdentityClients": { + "Default": { + "GrantType": "password", + "ClientId": "BookStore_ConsoleTestApp", + "ClientSecret": "1q2w3e*", + "UserName": "admin", + "UserPassword": "1q2w3E*", + "Authority": "https://localhost:44331", + "Scope": "BookStore" + } + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.MongoDB.Tests/Acme.BookStore.MongoDB.Tests.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.MongoDB.Tests/Acme.BookStore.MongoDB.Tests.csproj new file mode 100644 index 00000000000..7a3f6b08679 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.MongoDB.Tests/Acme.BookStore.MongoDB.Tests.csproj @@ -0,0 +1,20 @@ + + + + + + netcoreapp2.2 + Acme.BookStore + + + + + + + + + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.MongoDB.Tests/MongoDb/BookStoreMongoDbTestBase.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.MongoDB.Tests/MongoDb/BookStoreMongoDbTestBase.cs new file mode 100644 index 00000000000..45787e52891 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.MongoDB.Tests/MongoDb/BookStoreMongoDbTestBase.cs @@ -0,0 +1,7 @@ +namespace Acme.BookStore.MongoDB +{ + public abstract class BookStoreMongoDbTestBase : BookStoreTestBase + { + + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.MongoDB.Tests/MongoDb/BookStoreMongoDbTestModule.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.MongoDB.Tests/MongoDb/BookStoreMongoDbTestModule.cs new file mode 100644 index 00000000000..99346ca8cf1 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.MongoDB.Tests/MongoDb/BookStoreMongoDbTestModule.cs @@ -0,0 +1,31 @@ +using Mongo2Go; +using Volo.Abp; +using Volo.Abp.Data; +using Volo.Abp.Modularity; + +namespace Acme.BookStore.MongoDB +{ + [DependsOn( + typeof(BookStoreTestBaseModule), + typeof(BookStoreMongoDbModule) + )] + public class BookStoreMongoDbTestModule : AbpModule + { + private MongoDbRunner _mongoDbRunner; + + public override void ConfigureServices(ServiceConfigurationContext context) + { + _mongoDbRunner = MongoDbRunner.Start(); + + Configure(options => + { + options.ConnectionStrings.Default = _mongoDbRunner.ConnectionString + "|BookStore"; + }); + } + + public override void OnApplicationShutdown(ApplicationShutdownContext context) + { + _mongoDbRunner.Dispose(); + } + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.MongoDB.Tests/MongoDb/Samples/SampleRepositoryTests.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.MongoDB.Tests/MongoDb/Samples/SampleRepositoryTests.cs new file mode 100644 index 00000000000..488cd350a09 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.MongoDB.Tests/MongoDb/Samples/SampleRepositoryTests.cs @@ -0,0 +1,43 @@ +using System; +using System.Threading.Tasks; +using Acme.BookStore.Users; +using MongoDB.Driver.Linq; +using Shouldly; +using Volo.Abp.Domain.Repositories; +using Xunit; + +namespace Acme.BookStore.MongoDB.Samples +{ + /* This is just an example test class. + * Normally, you don't test ABP framework code + * (like default AppUser repository IRepository here). + * Only test your custom repository methods. + */ + public class SampleRepositoryTests : BookStoreMongoDbTestBase + { + private readonly IRepository _appUserRepository; + + public SampleRepositoryTests() + { + _appUserRepository = GetRequiredService>(); + } + + [Fact] + public async Task Should_Query_AppUser() + { + /* Need to manually start Unit Of Work because + * FirstOrDefaultAsync should be executed while db connection / context is available. + */ + await WithUnitOfWorkAsync(async () => + { + //Act + var adminUser = await _appUserRepository + .GetMongoQueryable() + .FirstOrDefaultAsync(u => u.UserName == "admin"); + + //Assert + adminUser.ShouldNotBeNull(); + }); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/Acme.BookStore.TestBase.csproj b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/Acme.BookStore.TestBase.csproj new file mode 100644 index 00000000000..c27cc7e09aa --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/Acme.BookStore.TestBase.csproj @@ -0,0 +1,26 @@ + + + + + + netcoreapp2.2 + Acme.BookStore + + + + + + + + + + + + + + + + + + + diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/BookStoreTestBase.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/BookStoreTestBase.cs new file mode 100644 index 00000000000..ba9d7c6b573 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/BookStoreTestBase.cs @@ -0,0 +1,100 @@ +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; +using Volo.Abp.Modularity; +using Volo.Abp.Uow; + +namespace Acme.BookStore +{ + /* All test classes are derived from this class, directly or indirectly. + */ + public abstract class BookStoreTestBase : AbpIntegratedTest + where TStartupModule : IAbpModule + { + protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) + { + options.UseAutofac(); + } + + protected virtual void WithUnitOfWork(Action action) + { + WithUnitOfWork(new UnitOfWorkOptions(), action); + } + + protected virtual void WithUnitOfWork(UnitOfWorkOptions options, Action action) + { + using (var scope = ServiceProvider.CreateScope()) + { + var uowManager = scope.ServiceProvider.GetRequiredService(); + + using (var uow = uowManager.Begin(options)) + { + action(); + + uow.Complete(); + } + } + } + + protected virtual Task WithUnitOfWorkAsync(Func func) + { + return WithUnitOfWorkAsync(new UnitOfWorkOptions(), func); + } + + protected virtual async Task WithUnitOfWorkAsync(UnitOfWorkOptions options, Func action) + { + using (var scope = ServiceProvider.CreateScope()) + { + var uowManager = scope.ServiceProvider.GetRequiredService(); + + using (var uow = uowManager.Begin(options)) + { + await action(); + + await uow.CompleteAsync(); + } + } + } + + protected virtual TResult WithUnitOfWork(Func func) + { + return WithUnitOfWork(new UnitOfWorkOptions(), func); + } + + protected virtual TResult WithUnitOfWork(UnitOfWorkOptions options, Func func) + { + using (var scope = ServiceProvider.CreateScope()) + { + var uowManager = scope.ServiceProvider.GetRequiredService(); + + using (var uow = uowManager.Begin(options)) + { + var result = func(); + uow.Complete(); + return result; + } + } + } + + protected virtual Task WithUnitOfWorkAsync(Func> func) + { + return WithUnitOfWorkAsync(new UnitOfWorkOptions(), func); + } + + protected virtual async Task WithUnitOfWorkAsync(UnitOfWorkOptions options, Func> func) + { + using (var scope = ServiceProvider.CreateScope()) + { + var uowManager = scope.ServiceProvider.GetRequiredService(); + + using (var uow = uowManager.Begin(options)) + { + var result = await func(); + await uow.CompleteAsync(); + return result; + } + } + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/BookStoreTestBaseModule.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/BookStoreTestBaseModule.cs new file mode 100644 index 00000000000..3674dd65038 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/BookStoreTestBaseModule.cs @@ -0,0 +1,48 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; +using Volo.Abp.Authorization; +using Volo.Abp.Autofac; +using Volo.Abp.BackgroundJobs; +using Volo.Abp.Data; +using Volo.Abp.Modularity; +using Volo.Abp.Threading; + +namespace Acme.BookStore +{ + [DependsOn( + typeof(AbpAutofacModule), + typeof(AbpTestBaseModule), + typeof(AbpAuthorizationModule), + typeof(BookStoreDomainModule) + )] + public class BookStoreTestBaseModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.IsJobExecutionEnabled = false; + }); + + context.Services.AddAlwaysAllowAuthorization(); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + SeedTestData(context); + } + + private static void SeedTestData(ApplicationInitializationContext context) + { + AsyncHelper.RunSync(async () => + { + using (var scope = context.ServiceProvider.CreateScope()) + { + await scope.ServiceProvider + .GetRequiredService() + .SeedAsync(); + } + }); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/BookStoreTestDataSeedContributor.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/BookStoreTestDataSeedContributor.cs new file mode 100644 index 00000000000..57127827142 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/BookStoreTestDataSeedContributor.cs @@ -0,0 +1,16 @@ +using System.Threading.Tasks; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; + +namespace Acme.BookStore +{ + public class BookStoreTestDataSeedContributor : IDataSeedContributor, ITransientDependency + { + public Task SeedAsync(DataSeedContext context) + { + /* Seed additional test data... */ + + return Task.CompletedTask; + } + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/Security/FakeCurrentPrincipalAccessor.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/Security/FakeCurrentPrincipalAccessor.cs new file mode 100644 index 00000000000..26211a4920c --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/test/Acme.BookStore.TestBase/Security/FakeCurrentPrincipalAccessor.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using System.Security.Claims; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Security.Claims; + +namespace Acme.BookStore.Security +{ + [Dependency(ReplaceServices = true)] + public class FakeCurrentPrincipalAccessor : ICurrentPrincipalAccessor, ISingletonDependency + { + public ClaimsPrincipal Principal => GetPrincipal(); + private ClaimsPrincipal _principal; + + private ClaimsPrincipal GetPrincipal() + { + if (_principal == null) + { + lock (this) + { + if (_principal == null) + { + _principal = new ClaimsPrincipal( + new ClaimsIdentity( + new List + { + new Claim(AbpClaimTypes.UserId,"2e701e62-0953-4dd3-910b-dc6cc93ccb0d"), + new Claim(AbpClaimTypes.UserName,"admin"), + new Claim(AbpClaimTypes.Email,"admin@abp.io") + } + ) + ); + } + } + } + + return _principal; + } + } +} \ No newline at end of file diff --git a/samples/BookStore/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreDbContextModelCreatingExtensions.cs b/samples/BookStore/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreDbContextModelCreatingExtensions.cs index d14e33208d4..922793e029b 100644 --- a/samples/BookStore/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreDbContextModelCreatingExtensions.cs +++ b/samples/BookStore/src/Acme.BookStore.EntityFrameworkCore/EntityFrameworkCore/BookStoreDbContextModelCreatingExtensions.cs @@ -17,11 +17,7 @@ public static void ConfigureBookStore(this ModelBuilder builder) builder.Entity(b => { b.ToTable(BookStoreConsts.DbTablePrefix + "Books", BookStoreConsts.DbSchema); - - b.ConfigureAudited(); - b.ConfigureExtraProperties(); - b.ConfigureConcurrencyStamp(); - + b.ConfigureByConvention(); b.Property(x => x.Name).IsRequired().HasMaxLength(128); }); } diff --git a/samples/DashboardDemo/src/DashboardDemo.Application/DashboardAppService.cs b/samples/DashboardDemo/src/DashboardDemo.Application/DashboardAppService.cs index d97bd553211..aeaad6f55b4 100644 --- a/samples/DashboardDemo/src/DashboardDemo.Application/DashboardAppService.cs +++ b/samples/DashboardDemo/src/DashboardDemo.Application/DashboardAppService.cs @@ -47,7 +47,7 @@ public async Task GetLicenseStatisticWidgetAsync {"Ultimate", new Random().Next(30, 40) * days} }; - return new LicenseStatistiWidgetResultDto(){Data = data}; + return new LicenseStatistiWidgetResultDto() { Data = data }; } private async Task GetMonthlyNewUserStatisticWidgetAsync(NewUserStatisticWidgetInputDto input) @@ -61,7 +61,7 @@ private async Task GetMonthlyNewUserStatisticWi for (var i = 0; i < monthCount; i++) { - labels.Add(months[endDate.Month - 1]); + labels.Add(months[endDate.Month - 1] + " " + endDate.Year); endDate = endDate.AddMonths(-1); } @@ -88,7 +88,7 @@ private async Task GetDailyNewUserStatisticWidg for (int i = 0; i < dayCount; i++) { - labels.Add(input.StartDate.AddDays(i).Day.ToString()); + labels.Add(input.StartDate.AddDays(i).ToString("dd/MM/yyyy")); } var data = new Dictionary(); @@ -104,4 +104,4 @@ private async Task GetDailyNewUserStatisticWidg }; } } -} +} \ No newline at end of file diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/DashboardDemoWebModule.cs b/samples/DashboardDemo/src/DashboardDemo.Web/DashboardDemoWebModule.cs index c38f4b24510..ae53dd9150e 100644 --- a/samples/DashboardDemo/src/DashboardDemo.Web/DashboardDemoWebModule.cs +++ b/samples/DashboardDemo/src/DashboardDemo.Web/DashboardDemoWebModule.cs @@ -8,7 +8,6 @@ using DashboardDemo.Localization; using DashboardDemo.MultiTenancy; using DashboardDemo.Web.Menus; -using DashboardDemo.Web.Pages.Components.MySimpleWidget; using Swashbuckle.AspNetCore.Swagger; using Volo.Abp; using Volo.Abp.Account.Web; @@ -116,6 +115,7 @@ private void ConfigureVirtualFileSystem(IHostingEnvironment hostingEnvironment) { Configure(options => { + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}DashboardDemo.Domain.Shared", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}DashboardDemo.Domain", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}DashboardDemo.Application.Contracts", Path.DirectorySeparatorChar))); diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/CountersWidget/Default.cshtml b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/CountersWidget/Default.cshtml deleted file mode 100644 index 05f7d6efb6e..00000000000 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/CountersWidget/Default.cshtml +++ /dev/null @@ -1,29 +0,0 @@ -@model DashboardDemo.CountersWidgetResultDto -
    - - -
    -
    @Model.NewUsers
    -
    New Users
    -
    -
    - -
    -
    @Model.ActiveUsers
    -
    Active Users
    -
    -
    - -
    -
    $@Model.TotalIncome.ToString("0.00")
    -
    Total Income
    -
    -
    - -
    -
    $@Model.TotalProfit.ToString("0.00")
    -
    Total Profit
    -
    -
    -
    -
    \ No newline at end of file diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/CountersWidget/Default.js b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/CountersWidget/Default.js deleted file mode 100644 index 6ed71d70550..00000000000 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/CountersWidget/Default.js +++ /dev/null @@ -1,26 +0,0 @@ -abp.widgets = abp.widgets || {}; //TODO: Remove later -(function () { - abp.widgets.CountersWidget = function ($wrapper) { - - var refresh = function (filters) { - dashboardDemo.dashboard.getCountersWidget({ - startDate: filters.startDate, - endDate: filters.endDate - }).then(function (result) { - $wrapper.find('.new-user-count').text(result.newUsers); - $wrapper.find('.active-user-count').text(result.activeUsers); - $wrapper.find('.total-income').text('$' + result.totalIncome.toFixed(2)); - $wrapper.find('.total-profit').text('$' + result.totalProfit.toFixed(2)); - }); - }; - - var init = function (filters) { - // there is no initial process for this widget. - }; - - return { - init: init, - refresh: refresh - }; - }; -})(); \ No newline at end of file diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/LicenseStatisticWidget/Default.js b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/LicenseStatisticWidget/Default.js deleted file mode 100644 index 354b4f3c69d..00000000000 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/LicenseStatisticWidget/Default.js +++ /dev/null @@ -1,68 +0,0 @@ -(function () { - abp.widgets.LicenseStatisticWidget = function($wrapper) { - - var _chart; - - var createChart = function(statistic) { - _chart = new Chart($wrapper.find('.LicenseStatisticChart'), - { - type: 'pie', - data: { - labels: Object.keys(statistic.data), - datasets: [ - { - label: 'License ratios', - data: Object.values(statistic.data), - backgroundColor: [ - 'rgba(50, 150, 255, 1)', - 'rgba(150, 255, 100, 1)', - 'rgba(255, 100, 150, 1)' - ] - } - ] - } - }); - }; - - var refreshChart = function(statistic) { - _chart.data = { - labels: Object.keys(statistic.data), - datasets: [ - { - label: 'License ratios', - data: Object.values(statistic.data), - backgroundColor: [ - 'rgba(50, 150, 255, 1)', - 'rgba(150, 255, 100, 1)', - 'rgba(255, 100, 150, 1)' - ] - } - ] - }; - _chart.update(); - }; - - var render = function(filters, callback) { - dashboardDemo.dashboard.getLicenseStatisticWidget({ - startDate: filters.startDate, - endDate: filters.endDate - }) - .then(function(result) { - callback(result); - }); - }; - - var init = function(filters) { - render(filters, createChart); - }; - - var refresh = function(filters) { - render(filters, refreshChart); - }; - - return { - init: init, - refresh: refresh - }; - }; -})(); \ No newline at end of file diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/LicenseStatisticWidget/LicenseStatisticWidgetScriptContributor.cs b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/LicenseStatisticWidget/LicenseStatisticWidgetScriptContributor.cs deleted file mode 100644 index 1144865e915..00000000000 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/LicenseStatisticWidget/LicenseStatisticWidgetScriptContributor.cs +++ /dev/null @@ -1,15 +0,0 @@ -using DashboardDemo.Web.Bundles; -using Volo.Abp.AspNetCore.Mvc.UI.Bundling; -using Volo.Abp.Modularity; - -namespace DashboardDemo.Web.Pages.Components.LicenseStatisticWidget -{ - [DependsOn(typeof(ChartjsScriptContributor))] - public class LicenseStatisticWidgetScriptContributor : BundleContributor - { - public override void ConfigureBundle(BundleConfigurationContext context) - { - context.Files.Add("/Pages/Components/LicenseStatisticWidget/Default.js"); - } - } -} diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/LicenseStatisticWidget/LicenseStatisticWidgetViewComponent.cs b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/LicenseStatisticWidget/LicenseStatisticWidgetViewComponent.cs deleted file mode 100644 index f35803e73e7..00000000000 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/LicenseStatisticWidget/LicenseStatisticWidgetViewComponent.cs +++ /dev/null @@ -1,19 +0,0 @@ -using DashboardDemo.Web.Bundles; -using Microsoft.AspNetCore.Mvc; -using Volo.Abp.AspNetCore.Mvc; -using Volo.Abp.AspNetCore.Mvc.UI.Widgets; - -namespace DashboardDemo.Web.Pages.Components.LicenseStatisticWidget -{ - [Widget( - StyleTypes = new[] { typeof(ChartjsStyleContributor) }, - ScriptTypes = new[] { typeof(LicenseStatisticWidgetScriptContributor) } - )] - public class LicenseStatisticWidgetViewComponent : AbpViewComponent - { - public IViewComponentResult Invoke() - { - return View(); - } - } -} diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/MySimpleWidget/Default.cshtml b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/MySimpleWidget/Default.cshtml deleted file mode 100644 index 2f4323bf894..00000000000 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/MySimpleWidget/Default.cshtml +++ /dev/null @@ -1,5 +0,0 @@ -@model DashboardDemo.Web.Pages.Components.MySimpleWidget.MySimpleWidgetViewModel -
    -

    My Simple Widget

    -

    Hello @Model.Name! This is a simple widget!

    -
    \ No newline at end of file diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/MySimpleWidget/MySimpleWidgetViewComponent.cs b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/MySimpleWidget/MySimpleWidgetViewComponent.cs deleted file mode 100644 index 89b1ccfe00d..00000000000 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/MySimpleWidget/MySimpleWidgetViewComponent.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Volo.Abp.AspNetCore.Mvc; -using Volo.Abp.AspNetCore.Mvc.UI.Widgets; - -namespace DashboardDemo.Web.Pages.Components.MySimpleWidget -{ - [Widget( - StyleFiles = new[] { "/Pages/Components/MySimpleWidget/Default.css" }, - ScriptFiles = new[] { "/Pages/Components/MySimpleWidget/Default.js" } - )] - public class MySimpleWidgetViewComponent : AbpViewComponent - { - public IViewComponentResult Invoke(string name) - { - return View(new MySimpleWidgetViewModel { Name = name }); - } - } -} \ No newline at end of file diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/MySimpleWidget/MySimpleWidgetViewModel.cs b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/MySimpleWidget/MySimpleWidgetViewModel.cs deleted file mode 100644 index f4fd1b0a95b..00000000000 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/MySimpleWidget/MySimpleWidgetViewModel.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace DashboardDemo.Web.Pages.Components.MySimpleWidget -{ - public class MySimpleWidgetViewModel - { - public string Name { get; set; } - } -} \ No newline at end of file diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/NewUserStatisticWidget/Default.js b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/NewUserStatisticWidget/Default.js deleted file mode 100644 index 9497d8e2699..00000000000 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/NewUserStatisticWidget/Default.js +++ /dev/null @@ -1,61 +0,0 @@ -abp.widgets = abp.widgets || {}; //TODO: Remove later -(function () { - abp.widgets.NewUserStatisticWidget = function($wrapper) { - - var _latestFilters; - var _chart; - - var refresh = function(filters) { - _latestFilters = filters || _latestFilters; - dashboardDemo.dashboard.getNewUserStatisticWidget({ - startDate: _latestFilters.startDate, - endDate: _latestFilters.endDate, - frequency: $wrapper.find('.frequency-filter option:selected').val() - }).then(function(result) { - _chart.data = { - labels: Object.keys(result.data), - datasets: [ - { - label: 'User count', - data: Object.values(result.data), - backgroundColor: 'rgba(255, 132, 132, 1)' - } - ] - }; - _chart.update(); - }); - }; - - var init = function(filters) { - _chart = new Chart($wrapper.find('.NewUserStatisticChart'), - { - type: 'bar', - options: { - scales: { - yAxes: [ - { - ticks: { - beginAtZero: true - } - } - ] - } - } - }); - - refresh(filters); - - $wrapper - .find('.frequency-filter') - .on('change', - function() { - refresh(); - }); - }; - - return { - init: init, - refresh: refresh - }; - }; -})(); \ No newline at end of file diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/NewUserStatisticWidget/NewUserStatisticWidgetScriptContributor.cs b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/NewUserStatisticWidget/NewUserStatisticWidgetScriptContributor.cs deleted file mode 100644 index aacd02e6b0f..00000000000 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/NewUserStatisticWidget/NewUserStatisticWidgetScriptContributor.cs +++ /dev/null @@ -1,15 +0,0 @@ -using DashboardDemo.Web.Bundles; -using Volo.Abp.AspNetCore.Mvc.UI.Bundling; -using Volo.Abp.Modularity; - -namespace DashboardDemo.Web.Pages.Components.NewUserStatisticWidget -{ - [DependsOn(typeof(ChartjsScriptContributor))] - public class NewUserStatisticWidgetScriptContributor : BundleContributor - { - public override void ConfigureBundle(BundleConfigurationContext context) - { - context.Files.Add("/Pages/Components/NewUserStatisticWidget/Default.js"); - } - } -} diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/NewUserStatisticWidget/NewUserStatisticWidgetViewComponent.cs b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/NewUserStatisticWidget/NewUserStatisticWidgetViewComponent.cs deleted file mode 100644 index 2e2386be7ad..00000000000 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/NewUserStatisticWidget/NewUserStatisticWidgetViewComponent.cs +++ /dev/null @@ -1,19 +0,0 @@ -using DashboardDemo.Web.Bundles; -using Microsoft.AspNetCore.Mvc; -using Volo.Abp.AspNetCore.Mvc; -using Volo.Abp.AspNetCore.Mvc.UI.Widgets; - -namespace DashboardDemo.Web.Pages.Components.NewUserStatisticWidget -{ - [Widget( - StyleTypes = new[] { typeof(ChartjsStyleContributor) }, - ScriptTypes = new[] { typeof(NewUserStatisticWidgetScriptContributor)} - )] - public class NewUserStatisticWidgetViewComponent : AbpViewComponent - { - public IViewComponentResult Invoke() - { - return View(); - } - } -} diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.cshtml b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.cshtml index 414bd605002..7f9066cae83 100644 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.cshtml +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.cshtml @@ -14,7 +14,7 @@ - + @@ -23,7 +23,7 @@ -
    +
    @await Component.InvokeAsync("CountersWidget", new diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.js b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.js index 9c591df854a..2c0d597577d 100644 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.js +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.js @@ -1,73 +1,4 @@ -abp.widgets = abp.widgets || {}; //TODO: Remove later -(function () { - - abp.DashboardManager = function (opts) { - - if (typeof opts === 'string') { - opts = { - wrapper: opts - }; - } - - var $dashboardWrapper; - if (typeof opts.wrapper === 'string') { - $dashboardWrapper = $(opts.wrapper); - } else { - $dashboardWrapper = opts.wrapper; - } - - var getFilters = function() { - if (!opts.filterCallback) { - return {}; - } - - return opts.filterCallback(); - } - - var init = function () { - $dashboardWrapper.find('.abp-widget-wrapper').each(function () { - var $widgetWrapperDiv = $(this); - var widgetName = $widgetWrapperDiv.attr('data-widget-name'); - var widgetApiClass = abp.widgets[widgetName]; - if (widgetApiClass) { - var widgetApi = new widgetApiClass($widgetWrapperDiv); - if (widgetApi.init) { - widgetApi.init(getFilters()); - } - $widgetWrapperDiv.data('abp-widget-api', widgetApi); - } - }); - }; - - var refresh = function() { - $dashboardWrapper.find('.abp-widget-wrapper').each(function () { - var $widgetWrapperDiv = $(this); - var widgetApi = $widgetWrapperDiv.data('abp-widget-api'); - if (widgetApi && widgetApi.refresh) { - widgetApi.refresh(getFilters()); - } - }); - } - - return { - init: init, - refresh: refresh - }; - }; - - var filterForm = $('#MyDashboardFilterForm'); - - var myDashboard = new abp.DashboardManager({ - wrapper: '#MyDashboardWidgetsArea', - filterCallback: function() { - return filterForm.serializeFormToObject(); - } - }); - - myDashboard.init(); - - filterForm.submit(function(e) { - e.preventDefault(); - myDashboard.refresh(); - }); -})(); \ No newline at end of file +$(function() { + var myWidgetManager = new abp.WidgetManager('#MyDashboardWidgetsArea'); + myWidgetManager.init(); +}) \ No newline at end of file diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyWidgets.cshtml b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyWidgets.cshtml index cc4cfa270da..399cdce7b33 100644 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyWidgets.cshtml +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyWidgets.cshtml @@ -1,5 +1,5 @@ @page -@using DashboardDemo.Web.Pages.Components.MySimpleWidget +@using DashboardDemo.Web.Pages.Shared.Components.MySimpleWidget @model DashboardDemo.Web.Pages.MyWidgetsModel @* Example usage by widget name *@ diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/CountersWidget/CountersWidgetController.cs b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/CountersWidget/CountersWidgetController.cs new file mode 100644 index 00000000000..12f597e5308 --- /dev/null +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/CountersWidget/CountersWidgetController.cs @@ -0,0 +1,17 @@ +using System; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc; + +namespace DashboardDemo.Web.Pages.Shared.Components.CountersWidget +{ + [Route("Widgets")] + public class CountersWidgetController : AbpController + { + [HttpGet] + [Route("Counters")] + public IActionResult Counters(DateTime startDate, DateTime endDate) + { + return ViewComponent("CountersWidget", new {startDate, endDate}); + } + } +} diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/CountersWidget/CountersWidgetViewComponent.cs b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/CountersWidget/CountersWidgetViewComponent.cs similarity index 80% rename from samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/CountersWidget/CountersWidgetViewComponent.cs rename to samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/CountersWidget/CountersWidgetViewComponent.cs index 3a898716284..11b60bffb29 100644 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/CountersWidget/CountersWidgetViewComponent.cs +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/CountersWidget/CountersWidgetViewComponent.cs @@ -4,11 +4,11 @@ using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc.UI.Widgets; -namespace DashboardDemo.Web.Pages.Components.CountersWidget +namespace DashboardDemo.Web.Pages.Shared.Components.CountersWidget { [Widget( - StyleFiles = new[] { "/Pages/Components/CountersWidget/Default.css" }, - ScriptFiles = new[] { "/Pages/Components/CountersWidget/Default.js" } + StyleFiles = new[] { "/Pages/Shared/Components/CountersWidget/Default.css" }, + RefreshUrl = "Widgets/Counters" )] public class CountersWidgetViewComponent : AbpViewComponent { diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/CountersWidget/Default.cshtml b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/CountersWidget/Default.cshtml new file mode 100644 index 00000000000..4f318d75ddd --- /dev/null +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/CountersWidget/Default.cshtml @@ -0,0 +1,29 @@ +@model DashboardDemo.CountersWidgetResultDto +
    + + +
    +
    @Model.NewUsers
    +
    New Users
    +
    +
    + +
    +
    @Model.ActiveUsers
    +
    Active Users
    +
    +
    + +
    +
    @Model.TotalIncome.ToString("c")
    +
    Total Income
    +
    +
    + +
    +
    @Model.TotalProfit.ToString("c")
    +
    Total Profit
    +
    +
    +
    +
    \ No newline at end of file diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/CountersWidget/Default.css b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/CountersWidget/Default.css similarity index 100% rename from samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/CountersWidget/Default.css rename to samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/CountersWidget/Default.css diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/LicenseStatisticWidget/Default.cshtml b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/LicenseStatisticWidget/Default.cshtml similarity index 100% rename from samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/LicenseStatisticWidget/Default.cshtml rename to samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/LicenseStatisticWidget/Default.cshtml diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/LicenseStatisticWidget/Default.js b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/LicenseStatisticWidget/Default.js new file mode 100644 index 00000000000..cf88c11e08f --- /dev/null +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/LicenseStatisticWidget/Default.js @@ -0,0 +1,52 @@ +(function () { + abp.widgets.LicenseStatisticWidget = function($wrapper) { + + var _chart; + + var refreshChart = function(statistic) { + _chart.data = { + labels: Object.keys(statistic.data), + datasets: [ + { + label: 'License ratios', + data: Object.values(statistic.data), + backgroundColor: [ + 'rgba(50, 150, 255, 1)', + 'rgba(150, 255, 100, 1)', + 'rgba(255, 100, 150, 1)' + ] + } + ] + }; + _chart.update(); + }; + + var render = function(filters, callback) { + dashboardDemo.dashboard.getLicenseStatisticWidget({ + startDate: filters.startDate, + endDate: filters.endDate + }) + .then(function(result) { + callback(result); + }); + }; + + var refresh = function(filters) { + render(filters, refreshChart); + }; + + var init = function (filters) { + _chart = new Chart($wrapper.find('.LicenseStatisticChart'), + { + type: 'pie' + }); + + refresh(filters); + }; + + return { + init: init, + refresh: refresh + }; + }; +})(); \ No newline at end of file diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/LicenseStatisticWidget/LicenseStatisticWidgetScriptContributor.cs b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/LicenseStatisticWidget/LicenseStatisticWidgetScriptContributor.cs new file mode 100644 index 00000000000..2dc1e8f7f3a --- /dev/null +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/LicenseStatisticWidget/LicenseStatisticWidgetScriptContributor.cs @@ -0,0 +1,15 @@ +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; +using Volo.Abp.AspNetCore.Mvc.UI.Packages.ChartJs; +using Volo.Abp.Modularity; + +namespace DashboardDemo.Web.Pages.Shared.Components.LicenseStatisticWidget +{ + [DependsOn(typeof(ChartjsScriptContributor))] + public class LicenseStatisticWidgetScriptContributor : BundleContributor + { + public override void ConfigureBundle(BundleConfigurationContext context) + { + context.Files.Add("/Pages/Shared/Components/LicenseStatisticWidget/Default.js"); + } + } +} diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/LicenseStatisticWidget/LicenseStatisticWidgetViewComponent.cs b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/LicenseStatisticWidget/LicenseStatisticWidgetViewComponent.cs new file mode 100644 index 00000000000..17d43db3390 --- /dev/null +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/LicenseStatisticWidget/LicenseStatisticWidgetViewComponent.cs @@ -0,0 +1,19 @@ +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc.UI.Packages.ChartJs; +using Volo.Abp.AspNetCore.Mvc.UI.Widgets; + +namespace DashboardDemo.Web.Pages.Shared.Components.LicenseStatisticWidget +{ + [Widget( + StyleTypes = new[] { typeof(ChartjsStyleContributor) }, + ScriptTypes = new[] { typeof(LicenseStatisticWidgetScriptContributor) } + )] + public class LicenseStatisticWidgetViewComponent : AbpViewComponent + { + public IViewComponentResult Invoke() + { + return View(); + } + } +} diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/MySimpleWidget/Default.cshtml b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/MySimpleWidget/Default.cshtml new file mode 100644 index 00000000000..c69bfd5b307 --- /dev/null +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/MySimpleWidget/Default.cshtml @@ -0,0 +1,5 @@ +@model DashboardDemo.Web.Pages.Shared.Components.MySimpleWidget.MySimpleWidgetViewModel +
    +

    My Simple Widget

    +

    Hello @Model.Name! This is a simple widget!

    +
    \ No newline at end of file diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/MySimpleWidget/Default.css b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/MySimpleWidget/Default.css similarity index 100% rename from samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/MySimpleWidget/Default.css rename to samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/MySimpleWidget/Default.css diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/MySimpleWidget/Default.js b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/MySimpleWidget/Default.js similarity index 100% rename from samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/MySimpleWidget/Default.js rename to samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/MySimpleWidget/Default.js diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/MySimpleWidget/MySimpleWidgetViewComponent.cs b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/MySimpleWidget/MySimpleWidgetViewComponent.cs new file mode 100644 index 00000000000..2edaebd4057 --- /dev/null +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/MySimpleWidget/MySimpleWidgetViewComponent.cs @@ -0,0 +1,18 @@ +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc.UI.Widgets; + +namespace DashboardDemo.Web.Pages.Shared.Components.MySimpleWidget +{ + [Widget( + StyleFiles = new[] { "/Pages/Shared/Components/MySimpleWidget/Default.css" }, + ScriptFiles = new[] { "/Pages/Shared/Components/MySimpleWidget/Default.js" } + )] + public class MySimpleWidgetViewComponent : AbpViewComponent + { + public IViewComponentResult Invoke(string name) + { + return View(new MySimpleWidgetViewModel { Name = name }); + } + } +} \ No newline at end of file diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/MySimpleWidget/MySimpleWidgetViewModel.cs b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/MySimpleWidget/MySimpleWidgetViewModel.cs new file mode 100644 index 00000000000..a25c1e3988c --- /dev/null +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/MySimpleWidget/MySimpleWidgetViewModel.cs @@ -0,0 +1,7 @@ +namespace DashboardDemo.Web.Pages.Shared.Components.MySimpleWidget +{ + public class MySimpleWidgetViewModel + { + public string Name { get; set; } + } +} \ No newline at end of file diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/NewUserStatisticWidget/Default.cshtml b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/NewUserStatisticWidget/Default.cshtml similarity index 100% rename from samples/DashboardDemo/src/DashboardDemo.Web/Pages/Components/NewUserStatisticWidget/Default.cshtml rename to samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/NewUserStatisticWidget/Default.cshtml diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/NewUserStatisticWidget/Default.js b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/NewUserStatisticWidget/Default.js new file mode 100644 index 00000000000..e82f7995cdf --- /dev/null +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/NewUserStatisticWidget/Default.js @@ -0,0 +1,65 @@ +(function () { + abp.widgets.NewUserStatisticWidget = function($wrapper) { + + var _latestFilters; + var _chart; + + var getFilters = function() { + return { + frequency: $wrapper.find('.frequency-filter option:selected').val() + }; + } + + var refresh = function(filters) { + _latestFilters = filters; + dashboardDemo.dashboard + .getNewUserStatisticWidget(_latestFilters) + .then(function(result) { + _chart.data = { + labels: Object.keys(result.data), + datasets: [ + { + label: 'User count', + data: Object.values(result.data), + backgroundColor: 'rgba(255, 132, 132, 1)' + } + ] + }; + _chart.update(); + }); + }; + + var init = function(filters) { + _chart = new Chart($wrapper.find('.NewUserStatisticChart'), + { + type: 'bar', + options: { + scales: { + yAxes: [ + { + ticks: { + beginAtZero: true + } + } + ] + } + } + }); + + refresh(filters); + + $wrapper + .find('.frequency-filter') + .on('change', + function() { + refresh($.extend(_latestFilters, getFilters())); + }); + }; + + return { + getFilters: getFilters, + init: init, + refresh: refresh + }; + }; +})(); \ No newline at end of file diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/NewUserStatisticWidget/NewUserStatisticWidgetScriptContributor.cs b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/NewUserStatisticWidget/NewUserStatisticWidgetScriptContributor.cs new file mode 100644 index 00000000000..8563491cb2a --- /dev/null +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/NewUserStatisticWidget/NewUserStatisticWidgetScriptContributor.cs @@ -0,0 +1,15 @@ +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; +using Volo.Abp.AspNetCore.Mvc.UI.Packages.ChartJs; +using Volo.Abp.Modularity; + +namespace DashboardDemo.Web.Pages.Shared.Components.NewUserStatisticWidget +{ + [DependsOn(typeof(ChartjsScriptContributor))] + public class NewUserStatisticWidgetScriptContributor : BundleContributor + { + public override void ConfigureBundle(BundleConfigurationContext context) + { + context.Files.Add("/Pages/Shared/Components/NewUserStatisticWidget/Default.js"); + } + } +} diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/NewUserStatisticWidget/NewUserStatisticWidgetViewComponent.cs b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/NewUserStatisticWidget/NewUserStatisticWidgetViewComponent.cs new file mode 100644 index 00000000000..5b28e3643fb --- /dev/null +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/NewUserStatisticWidget/NewUserStatisticWidgetViewComponent.cs @@ -0,0 +1,19 @@ +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc.UI.Packages.ChartJs; +using Volo.Abp.AspNetCore.Mvc.UI.Widgets; + +namespace DashboardDemo.Web.Pages.Shared.Components.NewUserStatisticWidget +{ + [Widget( + StyleTypes = new[] { typeof(ChartjsStyleContributor) }, + ScriptTypes = new[] { typeof(NewUserStatisticWidgetScriptContributor)} + )] + public class NewUserStatisticWidgetViewComponent : AbpViewComponent + { + public IViewComponentResult Invoke() + { + return View(); + } + } +} diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/abp.resourcemapping.js b/samples/DashboardDemo/src/DashboardDemo.Web/abp.resourcemapping.js index c041f9c5c7b..dbc138aecc9 100644 --- a/samples/DashboardDemo/src/DashboardDemo.Web/abp.resourcemapping.js +++ b/samples/DashboardDemo/src/DashboardDemo.Web/abp.resourcemapping.js @@ -1,5 +1,4 @@ module.exports = { mappings: { - "@node_modules/chart.js/dist/*.*": "@libs/chart.js/" } }; \ No newline at end of file diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/package.json b/samples/DashboardDemo/src/DashboardDemo.Web/package.json index b678de8d745..606f1fa89be 100644 --- a/samples/DashboardDemo/src/DashboardDemo.Web/package.json +++ b/samples/DashboardDemo/src/DashboardDemo.Web/package.json @@ -4,6 +4,6 @@ "private": true, "dependencies": { "@abp/aspnetcore.mvc.ui.theme.basic": "^0.6.6", - "chart.js": "^2.8.0" + "@abp/chart.js": "^0.8.1" } } \ No newline at end of file diff --git a/samples/MicroserviceDemo/docker-compose.override.yml b/samples/MicroserviceDemo/docker-compose.override.yml index c0fdaf0bf67..c91366ac1cf 100644 --- a/samples/MicroserviceDemo/docker-compose.override.yml +++ b/samples/MicroserviceDemo/docker-compose.override.yml @@ -102,7 +102,7 @@ services: - ASPNETCORE_URLS=http://0.0.0.0:80 - AuthServer__Authority=http://auth-server:51511 - ConnectionStrings__Default=Server=sqlserver;Database=MsDemo_Identity;Trusted_Connection=True;MultipleActiveResultSets=true;User=sa;Password=yourStrong(!)Password;Integrated Security=false - - ConnectionStrings__Blogging=mongodb://mongodb|MsDemo_Blogging + - ConnectionStrings__Blogging=mongodb://mongodb/MsDemo_Blogging - Redis__Configuration=redis - RabbitMQ__Connections__Default__HostName=rabbitmq - RemoteServices__Default__BaseUrl=http://internal-gateway/ diff --git a/samples/MicroserviceDemo/k8s/blogging-service-deployment.yaml b/samples/MicroserviceDemo/k8s/blogging-service-deployment.yaml index 5fa5c5542d3..dcfbdbb604e 100644 --- a/samples/MicroserviceDemo/k8s/blogging-service-deployment.yaml +++ b/samples/MicroserviceDemo/k8s/blogging-service-deployment.yaml @@ -23,7 +23,7 @@ spec: - name: AuthServer__Authority value: http://auth-server:51511 - name: ConnectionStrings__Blogging - value: mongodb://mongodb|MsDemo_Blogging + value: mongodb://mongodb/MsDemo_Blogging - name: ConnectionStrings__Default value: Server=sqlserver;Database=MsDemo_Identity;Trusted_Connection=True;MultipleActiveResultSets=true;User=sa;Password=yourStrong(!)Password;Integrated Security=false - name: RabbitMQ__Connections__Default__HostName diff --git a/samples/MicroserviceDemo/microservices/BloggingService.Host/appsettings.json b/samples/MicroserviceDemo/microservices/BloggingService.Host/appsettings.json index edcaf2127fe..00fbbba14cd 100644 --- a/samples/MicroserviceDemo/microservices/BloggingService.Host/appsettings.json +++ b/samples/MicroserviceDemo/microservices/BloggingService.Host/appsettings.json @@ -5,7 +5,7 @@ }, "ConnectionStrings": { "Default": "Server=localhost;Database=MsDemo_Identity;Trusted_Connection=True;MultipleActiveResultSets=true", - "Blogging": "mongodb://localhost|MsDemo_Blogging" + "Blogging": "mongodb://localhost/MsDemo_Blogging" }, "RemoteServices": { "Default": { diff --git a/samples/common.DotSettings b/samples/common.DotSettings new file mode 100644 index 00000000000..e7d45a2a845 --- /dev/null +++ b/samples/common.DotSettings @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/app/angular/.editorconfig b/templates/app/angular/.editorconfig new file mode 100644 index 00000000000..e89330a618c --- /dev/null +++ b/templates/app/angular/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/templates/app/angular/.gitignore b/templates/app/angular/.gitignore new file mode 100644 index 00000000000..c3569131e46 --- /dev/null +++ b/templates/app/angular/.gitignore @@ -0,0 +1,48 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events.json +speed-measure-plugin.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db + +yarn.lock* \ No newline at end of file diff --git a/templates/app/angular/.npmrc b/templates/app/angular/.npmrc new file mode 100644 index 00000000000..5d05609c191 --- /dev/null +++ b/templates/app/angular/.npmrc @@ -0,0 +1 @@ +@volo:registry=http://192.168.1.45:4873/ \ No newline at end of file diff --git a/templates/app/angular/README.md b/templates/app/angular/README.md new file mode 100644 index 00000000000..787553e60c7 --- /dev/null +++ b/templates/app/angular/README.md @@ -0,0 +1,27 @@ +# MyProjectName + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.0.3. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/templates/app/angular/angular.json b/templates/app/angular/angular.json new file mode 100644 index 00000000000..6b5e7df9656 --- /dev/null +++ b/templates/app/angular/angular.json @@ -0,0 +1,135 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "myProjectName": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/myProjectName", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "aot": false, + "assets": ["src/favicon.ico", "src/assets"], + "styles": [ + "src/styles.scss", + "node_modules/bootstrap/dist/css/bootstrap.min.css", + "node_modules/font-awesome/css/font-awesome.min.css", + "node_modules/primeng/resources/themes/nova-light/theme.css", + "node_modules/primeicons/primeicons.css", + "node_modules/primeng/resources/primeng.min.css" + ], + "scripts": [] + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + } + ] + }, + "hmr": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.hmr.ts" + } + ] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "myProjectName:build" + }, + "configurations": { + "production": { + "browserTarget": "myProjectName:build:production" + }, + "hmr": { + "hmr": true, + "browserTarget": "myProjectName:build:hmr" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "myProjectName:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "assets": ["src/favicon.ico", "src/assets"], + "styles": [ + "src/styles.scss", + "node_modules/bootstrap/dist/css/bootstrap.min.css", + "node_modules/font-awesome/css/font-awesome.min.css", + "node_modules/primeng/resources/themes/nova-light/theme.css", + "node_modules/primeicons/primeicons.css", + "node_modules/primeng/resources/primeng.min.css" + ], + "scripts": [] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": ["tsconfig.app.json", "tsconfig.spec.json", "e2e/tsconfig.json"], + "exclude": ["**/node_modules/**"] + } + }, + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "myProjectName:serve" + }, + "configurations": { + "production": { + "devServerTarget": "myProjectName:serve:production" + } + } + } + } + } + }, + "defaultProject": "myProjectName" +} diff --git a/templates/app/angular/browserslist b/templates/app/angular/browserslist new file mode 100644 index 00000000000..80848532e47 --- /dev/null +++ b/templates/app/angular/browserslist @@ -0,0 +1,12 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 # For IE 9-11 support, remove 'not'. \ No newline at end of file diff --git a/templates/app/angular/e2e/protractor.conf.js b/templates/app/angular/e2e/protractor.conf.js new file mode 100644 index 00000000000..73e4e6806cd --- /dev/null +++ b/templates/app/angular/e2e/protractor.conf.js @@ -0,0 +1,32 @@ +// @ts-check +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +/** + * @type { import("protractor").Config } + */ +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './src/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: require('path').join(__dirname, './tsconfig.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; \ No newline at end of file diff --git a/templates/app/angular/e2e/src/app.e2e-spec.ts b/templates/app/angular/e2e/src/app.e2e-spec.ts new file mode 100644 index 00000000000..ddea6e46a79 --- /dev/null +++ b/templates/app/angular/e2e/src/app.e2e-spec.ts @@ -0,0 +1,23 @@ +import { AppPage } from './app.po'; +import { browser, logging } from 'protractor'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getTitleText()).toEqual('Welcome to myProjectName!'); + }); + + afterEach(async () => { + // Assert that there are no errors emitted from the browser + const logs = await browser.manage().logs().get(logging.Type.BROWSER); + expect(logs).not.toContain(jasmine.objectContaining({ + level: logging.Level.SEVERE, + } as logging.Entry)); + }); +}); diff --git a/templates/app/angular/e2e/src/app.po.ts b/templates/app/angular/e2e/src/app.po.ts new file mode 100644 index 00000000000..5776aa9eb80 --- /dev/null +++ b/templates/app/angular/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get(browser.baseUrl) as Promise; + } + + getTitleText() { + return element(by.css('app-root h1')).getText() as Promise; + } +} diff --git a/templates/app/angular/e2e/tsconfig.json b/templates/app/angular/e2e/tsconfig.json new file mode 100644 index 00000000000..39b800f7896 --- /dev/null +++ b/templates/app/angular/e2e/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/templates/app/angular/karma.conf.js b/templates/app/angular/karma.conf.js new file mode 100644 index 00000000000..4e919a630c3 --- /dev/null +++ b/templates/app/angular/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, './coverage/myProjectName'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/templates/app/angular/package.json b/templates/app/angular/package.json new file mode 100644 index 00000000000..3696fec874f --- /dev/null +++ b/templates/app/angular/package.json @@ -0,0 +1,57 @@ +{ + "name": "MyProjectName", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "start:hmr": "ng serve --configuration hmr", + "build": "ng build", + "build:prod": "ng build --configuration production", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@abp/ng.account": "^0.8.0", + "@abp/ng.identity": "^0.8.0", + "@abp/ng.tenant-management": "^0.8.0", + "@abp/ng.theme.basic": "^0.8.0", + "@angular/animations": "~8.2.0", + "@angular/common": "~8.2.0", + "@angular/compiler": "~8.2.0", + "@angular/core": "~8.2.0", + "@angular/forms": "~8.2.0", + "@angular/platform-browser": "~8.2.0", + "@angular/platform-browser-dynamic": "~8.2.0", + "@angular/router": "~8.2.0", + "@angularclass/hmr": "^2.1.3", + "@ngxs/devtools-plugin": "^3.5.0", + "@ngxs/hmr-plugin": "^3.5.0", + "rxjs": "^6.4.0", + "tslib": "^1.9.0", + "zone.js": "~0.9.1" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~0.802.0", + "@angular/cli": "~8.2.0", + "@angular/compiler-cli": "~8.2.0", + "@angular/language-service": "~8.2.0", + "@types/jasmine": "~3.3.8", + "@types/jasminewd2": "~2.0.3", + "@types/node": "~8.9.4", + "codelyzer": "^5.0.0", + "jasmine-core": "~3.4.0", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~4.1.0", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "~2.0.1", + "karma-jasmine": "~2.0.1", + "karma-jasmine-html-reporter": "^1.4.0", + "ngxs-schematic": "^1.1.6", + "protractor": "~5.4.0", + "ts-node": "~7.0.0", + "tslint": "~5.15.0", + "typescript": "~3.4.3" + } +} diff --git a/templates/app/angular/src/app/app-routing.module.ts b/templates/app/angular/src/app/app-routing.module.ts new file mode 100644 index 00000000000..eac8712badb --- /dev/null +++ b/templates/app/angular/src/app/app-routing.module.ts @@ -0,0 +1,40 @@ +import { IDENTITY_ROUTES } from '@abp/ng.identity'; +import { ACCOUNT_ROUTES } from '@abp/ng.account'; +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { ABP } from '@abp/ng.core'; +import { TENANT_MANAGEMENT_ROUTES } from '@abp/ng.tenant-management'; + +const routes: Routes = [ + { + path: '', + loadChildren: () => import('./home/home.module').then(m => m.HomeModule), + data: { + routes: { + name: '::Menu:Home', + } as ABP.Route, + }, + }, + { + path: 'account', + loadChildren: () => import('./lazy-libs/account-wrapper.module').then(m => m.AccountWrapperModule), + data: { routes: ACCOUNT_ROUTES }, + }, + { + path: 'identity', + loadChildren: () => import('./lazy-libs/identity-wrapper.module').then(m => m.IdentityWrapperModule), + data: { routes: IDENTITY_ROUTES }, + }, + { + path: 'tenant-management', + loadChildren: () => + import('./lazy-libs/tenant-management-wrapper.module').then(m => m.TenantManagementWrapperModule), + data: { routes: TENANT_MANAGEMENT_ROUTES }, + }, +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule], +}) +export class AppRoutingModule {} diff --git a/templates/app/angular/src/app/app.component.ts b/templates/app/angular/src/app/app.component.ts new file mode 100644 index 00000000000..bf2a27962a2 --- /dev/null +++ b/templates/app/angular/src/app/app.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-root', + template: ` + + + `, +}) +export class AppComponent {} diff --git a/templates/app/angular/src/app/app.module.ts b/templates/app/angular/src/app/app.module.ts new file mode 100644 index 00000000000..a0dcd98c76a --- /dev/null +++ b/templates/app/angular/src/app/app.module.ts @@ -0,0 +1,36 @@ +import { CoreModule } from '@abp/ng.core'; +import { LAYOUTS } from '@abp/ng.theme.basic'; +import { NgModule } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { NgxsReduxDevtoolsPluginModule } from '@ngxs/devtools-plugin'; +import { NgxsModule } from '@ngxs/store'; +import { OAuthModule } from 'angular-oauth2-oidc'; +import { environment } from '../environments/environment'; +import { AppRoutingModule } from './app-routing.module'; +import { AppComponent } from './app.component'; +import { SharedModule } from './shared/shared.module'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; + +@NgModule({ + declarations: [AppComponent], + imports: [ + BrowserModule, + BrowserAnimationsModule, + AppRoutingModule, + SharedModule, + ThemeSharedModule.forRoot(), + CoreModule.forRoot({ + environment, + requirements: { + layouts: LAYOUTS, + }, + }), + OAuthModule.forRoot(), + NgxsModule.forRoot([]), + NgxsReduxDevtoolsPluginModule.forRoot({ disabled: environment.production }), + ], + providers: [], + bootstrap: [AppComponent], +}) +export class AppModule {} diff --git a/templates/app/angular/src/app/home/home-routing.module.ts b/templates/app/angular/src/app/home/home-routing.module.ts new file mode 100644 index 00000000000..70f7e5de7a5 --- /dev/null +++ b/templates/app/angular/src/app/home/home-routing.module.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { HomeComponent } from './home.component'; +import { LayoutApplicationComponent } from '@abp/ng.theme.basic'; + +const routes: Routes = [ + { + path: '', + component: LayoutApplicationComponent, + children: [{ path: '', component: HomeComponent }], + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class HomeRoutingModule {} diff --git a/templates/app/angular/src/app/home/home.component.html b/templates/app/angular/src/app/home/home.component.html new file mode 100644 index 00000000000..4fafc673981 --- /dev/null +++ b/templates/app/angular/src/app/home/home.component.html @@ -0,0 +1,15 @@ +
    +
    {{ '::Welcome' | abpLocalization }}
    +
    +

    + {{ '::LongWelcomeMessage' | abpLocalization }} +

    +

    + {{ 'AbpIdentity::Login' | abpLocalization }} +

    +
    +

    abp.io

    +
    +
    diff --git a/templates/app/angular/src/app/home/home.component.ts b/templates/app/angular/src/app/home/home.component.ts new file mode 100644 index 00000000000..aa56d341310 --- /dev/null +++ b/templates/app/angular/src/app/home/home.component.ts @@ -0,0 +1,14 @@ +import { Component } from '@angular/core'; +import { OAuthService } from 'angular-oauth2-oidc'; + +@Component({ + selector: 'abp-home', + templateUrl: './home.component.html', +}) +export class HomeComponent { + get hasLoggedIn(): boolean { + return this.oAuthService.hasValidAccessToken(); + } + + constructor(private oAuthService: OAuthService) {} +} diff --git a/templates/app/angular/src/app/home/home.module.ts b/templates/app/angular/src/app/home/home.module.ts new file mode 100644 index 00000000000..72d20ccc654 --- /dev/null +++ b/templates/app/angular/src/app/home/home.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; +import { SharedModule } from '../shared/shared.module'; +import { HomeRoutingModule } from './home-routing.module'; +import { HomeComponent } from './home.component'; + +@NgModule({ + declarations: [HomeComponent], + imports: [SharedModule, HomeRoutingModule], +}) +export class HomeModule {} diff --git a/templates/app/angular/src/app/lazy-libs/account-wrapper.module.ts b/templates/app/angular/src/app/lazy-libs/account-wrapper.module.ts new file mode 100644 index 00000000000..7130bb1a1a1 --- /dev/null +++ b/templates/app/angular/src/app/lazy-libs/account-wrapper.module.ts @@ -0,0 +1,7 @@ +import { NgModule } from '@angular/core'; +import { AccountModule } from '@abp/ng.account'; + +@NgModule({ + imports: [AccountModule], +}) +export class AccountWrapperModule {} diff --git a/templates/app/angular/src/app/lazy-libs/identity-wrapper.module.ts b/templates/app/angular/src/app/lazy-libs/identity-wrapper.module.ts new file mode 100644 index 00000000000..fed1dcd1ecf --- /dev/null +++ b/templates/app/angular/src/app/lazy-libs/identity-wrapper.module.ts @@ -0,0 +1,7 @@ +import { NgModule } from '@angular/core'; +import { IdentityModule } from '@abp/ng.identity'; + +@NgModule({ + imports: [IdentityModule], +}) +export class IdentityWrapperModule {} diff --git a/templates/app/angular/src/app/lazy-libs/tenant-management-wrapper.module.ts b/templates/app/angular/src/app/lazy-libs/tenant-management-wrapper.module.ts new file mode 100644 index 00000000000..63eabda5050 --- /dev/null +++ b/templates/app/angular/src/app/lazy-libs/tenant-management-wrapper.module.ts @@ -0,0 +1,7 @@ +import { NgModule } from '@angular/core'; +import { TenantManagementModule } from '@abp/ng.tenant-management'; + +@NgModule({ + imports: [TenantManagementModule], +}) +export class TenantManagementWrapperModule {} diff --git a/templates/app/angular/src/app/shared/shared.module.ts b/templates/app/angular/src/app/shared/shared.module.ts new file mode 100644 index 00000000000..6bae4ea3326 --- /dev/null +++ b/templates/app/angular/src/app/shared/shared.module.ts @@ -0,0 +1,14 @@ +import { CoreModule } from '@abp/ng.core'; +import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { NgModule } from '@angular/core'; +import { ThemeBasicModule } from '@abp/ng.theme.basic'; +import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { TableModule } from 'primeng/table'; + +@NgModule({ + declarations: [], + imports: [CoreModule, ThemeSharedModule, ThemeBasicModule, TableModule, NgbDropdownModule], + exports: [CoreModule, ThemeSharedModule, ThemeBasicModule, TableModule, NgbDropdownModule], + providers: [], +}) +export class SharedModule {} diff --git a/templates/app/angular/src/assets/.gitkeep b/templates/app/angular/src/assets/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/templates/app/angular/src/environments/environment.hmr.ts b/templates/app/angular/src/environments/environment.hmr.ts new file mode 100644 index 00000000000..5be77755c79 --- /dev/null +++ b/templates/app/angular/src/environments/environment.hmr.ts @@ -0,0 +1,21 @@ +export const environment = { + production: false, + hmr: true, + oAuthConfig: { + issuer: 'https://localhost:44305', + clientId: 'MyProjectName_App', + dummyClientSecret: '1q2w3e*', + scope: 'MyProjectName', + showDebugInformation: true, + oidc: false, + requireHttps: true, + }, + apis: { + default: { + url: 'https://localhost:44305', + }, + }, + localization: { + defaultResourceName: 'MyProjectName', + }, +}; diff --git a/templates/app/angular/src/environments/environment.prod.ts b/templates/app/angular/src/environments/environment.prod.ts new file mode 100644 index 00000000000..d490bd4b380 --- /dev/null +++ b/templates/app/angular/src/environments/environment.prod.ts @@ -0,0 +1,21 @@ +export const environment = { + production: true, + hmr: false, + oAuthConfig: { + issuer: 'https://localhost:44305', + clientId: 'MyProjectName_App', + dummyClientSecret: '1q2w3e*', + scope: 'MyProjectName', + showDebugInformation: true, + oidc: false, + requireHttps: true, + }, + apis: { + default: { + url: 'https://localhost:44305', + }, + }, + localization: { + defaultResourceName: 'MyProjectName', + }, +}; diff --git a/templates/app/angular/src/environments/environment.ts b/templates/app/angular/src/environments/environment.ts new file mode 100644 index 00000000000..51dfdf40804 --- /dev/null +++ b/templates/app/angular/src/environments/environment.ts @@ -0,0 +1,21 @@ +export const environment = { + production: false, + hmr: false, + oAuthConfig: { + issuer: 'https://localhost:44305', + clientId: 'MyProjectName_App', + dummyClientSecret: '1q2w3e*', + scope: 'MyProjectName', + showDebugInformation: true, + oidc: false, + requireHttps: true, + }, + apis: { + default: { + url: 'https://localhost:44305', + }, + }, + localization: { + defaultResourceName: 'MyProjectName', + }, +}; diff --git a/templates/app/angular/src/favicon.ico b/templates/app/angular/src/favicon.ico new file mode 100644 index 00000000000..8081c7ceaf2 Binary files /dev/null and b/templates/app/angular/src/favicon.ico differ diff --git a/templates/app/angular/src/index.html b/templates/app/angular/src/index.html new file mode 100644 index 00000000000..151840662e0 --- /dev/null +++ b/templates/app/angular/src/index.html @@ -0,0 +1,16 @@ + + + + + MyProjectName + + + + + + + +
    +
    + + diff --git a/templates/app/angular/src/main.ts b/templates/app/angular/src/main.ts new file mode 100644 index 00000000000..bbdf75c32dc --- /dev/null +++ b/templates/app/angular/src/main.ts @@ -0,0 +1,20 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { BootstrapModuleFn as Bootstrap, hmr, WebpackModule } from '@ngxs/hmr-plugin'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +declare const module: WebpackModule; + +if (environment.production) { + enableProdMode(); +} + +const bootstrap: Bootstrap = () => platformBrowserDynamic().bootstrapModule(AppModule); + +if (environment.hmr) { + hmr(module, bootstrap).catch(err => console.error(err)); +} else { + bootstrap().catch(err => console.log(err)); +} diff --git a/templates/app/angular/src/polyfills.ts b/templates/app/angular/src/polyfills.ts new file mode 100644 index 00000000000..aa665d6b874 --- /dev/null +++ b/templates/app/angular/src/polyfills.ts @@ -0,0 +1,63 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags.ts'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/templates/app/angular/src/styles.scss b/templates/app/angular/src/styles.scss new file mode 100644 index 00000000000..d62aefa9680 --- /dev/null +++ b/templates/app/angular/src/styles.scss @@ -0,0 +1,27 @@ +/* You can add global styles to this file, and also import other style files */ + +@keyframes donut-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +.donut { + display: inline-block; + border: 4px solid rgba(0, 0, 0, 0.1); + border-left-color: #7983ff; + border-radius: 50%; + width: 30px; + height: 30px; + animation: donut-spin 1.2s linear infinite; + + &.centered { + position: fixed; + top: 50%; + left: 50%; + /* bring your own prefixes */ + transform: translate(-50%, -50%); + } +} diff --git a/templates/app/angular/src/test.ts b/templates/app/angular/src/test.ts new file mode 100644 index 00000000000..16317897b1c --- /dev/null +++ b/templates/app/angular/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/templates/app/angular/tsconfig.app.json b/templates/app/angular/tsconfig.app.json new file mode 100644 index 00000000000..b750221da50 --- /dev/null +++ b/templates/app/angular/tsconfig.app.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["src/test.ts", "src/**/*.spec.ts"] +} diff --git a/templates/app/angular/tsconfig.json b/templates/app/angular/tsconfig.json new file mode 100644 index 00000000000..0a91f810788 --- /dev/null +++ b/templates/app/angular/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "module": "esnext", + "moduleResolution": "node", + "importHelpers": true, + "target": "es2015", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2018", + "dom" + ] + } +} diff --git a/templates/app/angular/tsconfig.spec.json b/templates/app/angular/tsconfig.spec.json new file mode 100644 index 00000000000..6400fde7d54 --- /dev/null +++ b/templates/app/angular/tsconfig.spec.json @@ -0,0 +1,18 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/templates/app/angular/tslint.json b/templates/app/angular/tslint.json new file mode 100644 index 00000000000..188bd78d326 --- /dev/null +++ b/templates/app/angular/tslint.json @@ -0,0 +1,92 @@ +{ + "extends": "tslint:recommended", + "rules": { + "array-type": false, + "arrow-parens": false, + "deprecation": { + "severity": "warn" + }, + "component-class-suffix": true, + "contextual-lifecycle": true, + "directive-class-suffix": true, + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ], + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "interface-name": false, + "max-classes-per-file": false, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-consecutive-blank-lines": false, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-empty": false, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-non-null-assertion": true, + "no-redundant-jsdoc": true, + "no-switch-case-fall-through": true, + "no-use-before-declare": true, + "no-var-requires": false, + "object-literal-key-quotes": [ + true, + "as-needed" + ], + "object-literal-sort-keys": false, + "ordered-imports": false, + "quotemark": [ + true, + "single" + ], + "trailing-comma": false, + "no-conflicting-lifecycle": true, + "no-host-metadata-property": true, + "no-input-rename": true, + "no-inputs-metadata-property": true, + "no-output-native": true, + "no-output-on-prefix": true, + "no-output-rename": true, + "no-outputs-metadata-property": true, + "template-banana-in-box": true, + "template-no-negated-async": true, + "use-lifecycle-interface": true, + "use-pipe-transform-interface": true + }, + "rulesDirectory": [ + "codelyzer" + ] +} \ No newline at end of file diff --git a/templates/mvc/.gitattributes b/templates/app/aspnet-core/.gitattributes similarity index 100% rename from templates/mvc/.gitattributes rename to templates/app/aspnet-core/.gitattributes diff --git a/templates/app/aspnet-core/.gitignore b/templates/app/aspnet-core/.gitignore new file mode 100644 index 00000000000..3b0b9eb9892 --- /dev/null +++ b/templates/app/aspnet-core/.gitignore @@ -0,0 +1,259 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# MyProjectName +src/MyCompanyName.MyProjectName.Web/Logs/* +src/MyCompanyName.MyProjectName.Web.Host/Logs/* +src/MyCompanyName.MyProjectName.IdentityServer/Logs/* +src/MyCompanyName.MyProjectName.HttpApi.Host/Logs/* +src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Logs/* \ No newline at end of file diff --git a/templates/app/aspnet-core/MyCompanyName.MyProjectName.sln b/templates/app/aspnet-core/MyCompanyName.MyProjectName.sln new file mode 100644 index 00000000000..bc8ab2ff394 --- /dev/null +++ b/templates/app/aspnet-core/MyCompanyName.MyProjectName.sln @@ -0,0 +1,179 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29020.237 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.Domain", "src\MyCompanyName.MyProjectName.Domain\MyCompanyName.MyProjectName.Domain.csproj", "{554AD327-6DBA-4F8F-96F8-81CE7A0C863F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.Application", "src\MyCompanyName.MyProjectName.Application\MyCompanyName.MyProjectName.Application.csproj", "{1A94A50E-06DC-43C1-80B5-B662820EC3EB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.EntityFrameworkCore", "src\MyCompanyName.MyProjectName.EntityFrameworkCore\MyCompanyName.MyProjectName.EntityFrameworkCore.csproj", "{C956DD76-69C8-4A9C-83EA-D17DF83340FD}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.Web", "src\MyCompanyName.MyProjectName.Web\MyCompanyName.MyProjectName.Web.csproj", "{068855E8-9240-4F1A-910B-CF825794513B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{CA9AC87F-097E-4F15-8393-4BC07735A5B0}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{04DBDB01-70F4-4E06-B468-8F87850B22BE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.Application.Tests", "test\MyCompanyName.MyProjectName.Application.Tests\MyCompanyName.MyProjectName.Application.Tests.csproj", "{50B2631D-129C-47B3-A587-029CCD6099BC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.Web.Tests", "test\MyCompanyName.MyProjectName.Web.Tests\MyCompanyName.MyProjectName.Web.Tests.csproj", "{5F1B28C6-8D0C-4155-92D0-252F7EA5F674}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.MongoDB", "src\MyCompanyName.MyProjectName.MongoDB\MyCompanyName.MyProjectName.MongoDB.csproj", "{E3444355-D47E-431E-BDD0-DD3A7113B2AE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations", "src\MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations\MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations.csproj", "{0372FA84-C517-4EB3-9A9F-B9ACAC0CA5E0}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.Domain.Shared", "src\MyCompanyName.MyProjectName.Domain.Shared\MyCompanyName.MyProjectName.Domain.Shared.csproj", "{42F719ED-8413-4895-B5B4-5AB56079BC66}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.Application.Contracts", "src\MyCompanyName.MyProjectName.Application.Contracts\MyCompanyName.MyProjectName.Application.Contracts.csproj", "{520659C8-C734-4298-A3DA-B539DB9DFC0B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.HttpApi", "src\MyCompanyName.MyProjectName.HttpApi\MyCompanyName.MyProjectName.HttpApi.csproj", "{4164BDF7-F527-4E85-9CE6-E3C2D7426A27}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.HttpApi.Client", "src\MyCompanyName.MyProjectName.HttpApi.Client\MyCompanyName.MyProjectName.HttpApi.Client.csproj", "{3B5A0094-670D-4BB1-BFDD-61B88A8773DC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.Web.Host", "src\MyCompanyName.MyProjectName.Web.Host\MyCompanyName.MyProjectName.Web.Host.csproj", "{6FE54035-9C11-4702-A5E2-D16F23101468}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.IdentityServer", "src\MyCompanyName.MyProjectName.IdentityServer\MyCompanyName.MyProjectName.IdentityServer.csproj", "{073C361E-B8F4-49F5-93CC-72A3FF49C026}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.HttpApi.Host", "src\MyCompanyName.MyProjectName.HttpApi.Host\MyCompanyName.MyProjectName.HttpApi.Host.csproj", "{E6D5BF0E-DE92-4D82-A352-EF04B37CB11C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.EntityFrameworkCore.Tests", "test\MyCompanyName.MyProjectName.EntityFrameworkCore.Tests\MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj", "{1FE30EB9-74A9-47F5-A9F6-7B1FAB672D81}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.TestBase", "test\MyCompanyName.MyProjectName.TestBase\MyCompanyName.MyProjectName.TestBase.csproj", "{91853F21-9CD9-4132-BC29-A7D5D84FFFE7}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.Domain.Tests", "test\MyCompanyName.MyProjectName.Domain.Tests\MyCompanyName.MyProjectName.Domain.Tests.csproj", "{E512F4D9-9375-480F-A2F6-A46509F9D824}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.MongoDB.Tests", "test\MyCompanyName.MyProjectName.MongoDB.Tests\MyCompanyName.MyProjectName.MongoDB.Tests.csproj", "{6015D17B-104B-4EC2-A9B7-D8A40C891458}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp", "test\MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp\MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj", "{EF480016-9127-4916-8735-D2466BDBC582}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.DbMigrator", "src\MyCompanyName.MyProjectName.DbMigrator\MyCompanyName.MyProjectName.DbMigrator.csproj", "{AA94D832-1CCC-4715-95A9-A483F23A1A5D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName.HttpApi.HostWithIds", "src\MyCompanyName.MyProjectName.HttpApi.HostWithIds\MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj", "{748584B1-BA69-4F6A-81AA-F4BDE6BCE29D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Release|Any CPU.Build.0 = Release|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Release|Any CPU.Build.0 = Release|Any CPU + {C956DD76-69C8-4A9C-83EA-D17DF83340FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C956DD76-69C8-4A9C-83EA-D17DF83340FD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C956DD76-69C8-4A9C-83EA-D17DF83340FD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C956DD76-69C8-4A9C-83EA-D17DF83340FD}.Release|Any CPU.Build.0 = Release|Any CPU + {068855E8-9240-4F1A-910B-CF825794513B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {068855E8-9240-4F1A-910B-CF825794513B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {068855E8-9240-4F1A-910B-CF825794513B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {068855E8-9240-4F1A-910B-CF825794513B}.Release|Any CPU.Build.0 = Release|Any CPU + {50B2631D-129C-47B3-A587-029CCD6099BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {50B2631D-129C-47B3-A587-029CCD6099BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {50B2631D-129C-47B3-A587-029CCD6099BC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {50B2631D-129C-47B3-A587-029CCD6099BC}.Release|Any CPU.Build.0 = Release|Any CPU + {5F1B28C6-8D0C-4155-92D0-252F7EA5F674}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5F1B28C6-8D0C-4155-92D0-252F7EA5F674}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5F1B28C6-8D0C-4155-92D0-252F7EA5F674}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5F1B28C6-8D0C-4155-92D0-252F7EA5F674}.Release|Any CPU.Build.0 = Release|Any CPU + {E3444355-D47E-431E-BDD0-DD3A7113B2AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E3444355-D47E-431E-BDD0-DD3A7113B2AE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E3444355-D47E-431E-BDD0-DD3A7113B2AE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E3444355-D47E-431E-BDD0-DD3A7113B2AE}.Release|Any CPU.Build.0 = Release|Any CPU + {0372FA84-C517-4EB3-9A9F-B9ACAC0CA5E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0372FA84-C517-4EB3-9A9F-B9ACAC0CA5E0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0372FA84-C517-4EB3-9A9F-B9ACAC0CA5E0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0372FA84-C517-4EB3-9A9F-B9ACAC0CA5E0}.Release|Any CPU.Build.0 = Release|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Debug|Any CPU.Build.0 = Debug|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Release|Any CPU.ActiveCfg = Release|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Release|Any CPU.Build.0 = Release|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Release|Any CPU.Build.0 = Release|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Release|Any CPU.Build.0 = Release|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Release|Any CPU.Build.0 = Release|Any CPU + {6FE54035-9C11-4702-A5E2-D16F23101468}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6FE54035-9C11-4702-A5E2-D16F23101468}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6FE54035-9C11-4702-A5E2-D16F23101468}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6FE54035-9C11-4702-A5E2-D16F23101468}.Release|Any CPU.Build.0 = Release|Any CPU + {073C361E-B8F4-49F5-93CC-72A3FF49C026}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {073C361E-B8F4-49F5-93CC-72A3FF49C026}.Debug|Any CPU.Build.0 = Debug|Any CPU + {073C361E-B8F4-49F5-93CC-72A3FF49C026}.Release|Any CPU.ActiveCfg = Release|Any CPU + {073C361E-B8F4-49F5-93CC-72A3FF49C026}.Release|Any CPU.Build.0 = Release|Any CPU + {E6D5BF0E-DE92-4D82-A352-EF04B37CB11C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E6D5BF0E-DE92-4D82-A352-EF04B37CB11C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E6D5BF0E-DE92-4D82-A352-EF04B37CB11C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E6D5BF0E-DE92-4D82-A352-EF04B37CB11C}.Release|Any CPU.Build.0 = Release|Any CPU + {1FE30EB9-74A9-47F5-A9F6-7B1FAB672D81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1FE30EB9-74A9-47F5-A9F6-7B1FAB672D81}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1FE30EB9-74A9-47F5-A9F6-7B1FAB672D81}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1FE30EB9-74A9-47F5-A9F6-7B1FAB672D81}.Release|Any CPU.Build.0 = Release|Any CPU + {91853F21-9CD9-4132-BC29-A7D5D84FFFE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91853F21-9CD9-4132-BC29-A7D5D84FFFE7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91853F21-9CD9-4132-BC29-A7D5D84FFFE7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {91853F21-9CD9-4132-BC29-A7D5D84FFFE7}.Release|Any CPU.Build.0 = Release|Any CPU + {E512F4D9-9375-480F-A2F6-A46509F9D824}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E512F4D9-9375-480F-A2F6-A46509F9D824}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E512F4D9-9375-480F-A2F6-A46509F9D824}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E512F4D9-9375-480F-A2F6-A46509F9D824}.Release|Any CPU.Build.0 = Release|Any CPU + {6015D17B-104B-4EC2-A9B7-D8A40C891458}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6015D17B-104B-4EC2-A9B7-D8A40C891458}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6015D17B-104B-4EC2-A9B7-D8A40C891458}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6015D17B-104B-4EC2-A9B7-D8A40C891458}.Release|Any CPU.Build.0 = Release|Any CPU + {EF480016-9127-4916-8735-D2466BDBC582}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EF480016-9127-4916-8735-D2466BDBC582}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EF480016-9127-4916-8735-D2466BDBC582}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EF480016-9127-4916-8735-D2466BDBC582}.Release|Any CPU.Build.0 = Release|Any CPU + {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Release|Any CPU.Build.0 = Release|Any CPU + {748584B1-BA69-4F6A-81AA-F4BDE6BCE29D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {748584B1-BA69-4F6A-81AA-F4BDE6BCE29D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {748584B1-BA69-4F6A-81AA-F4BDE6BCE29D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {748584B1-BA69-4F6A-81AA-F4BDE6BCE29D}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {1A94A50E-06DC-43C1-80B5-B662820EC3EB} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {C956DD76-69C8-4A9C-83EA-D17DF83340FD} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {068855E8-9240-4F1A-910B-CF825794513B} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {50B2631D-129C-47B3-A587-029CCD6099BC} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {5F1B28C6-8D0C-4155-92D0-252F7EA5F674} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {E3444355-D47E-431E-BDD0-DD3A7113B2AE} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {0372FA84-C517-4EB3-9A9F-B9ACAC0CA5E0} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {42F719ED-8413-4895-B5B4-5AB56079BC66} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {520659C8-C734-4298-A3DA-B539DB9DFC0B} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {6FE54035-9C11-4702-A5E2-D16F23101468} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {073C361E-B8F4-49F5-93CC-72A3FF49C026} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {E6D5BF0E-DE92-4D82-A352-EF04B37CB11C} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {1FE30EB9-74A9-47F5-A9F6-7B1FAB672D81} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {91853F21-9CD9-4132-BC29-A7D5D84FFFE7} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {E512F4D9-9375-480F-A2F6-A46509F9D824} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {6015D17B-104B-4EC2-A9B7-D8A40C891458} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {EF480016-9127-4916-8735-D2466BDBC582} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} + {AA94D832-1CCC-4715-95A9-A483F23A1A5D} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {748584B1-BA69-4F6A-81AA-F4BDE6BCE29D} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F} + EndGlobalSection +EndGlobal diff --git a/templates/app/aspnet-core/MyCompanyName.MyProjectName.sln.DotSettings b/templates/app/aspnet-core/MyCompanyName.MyProjectName.sln.DotSettings new file mode 100644 index 00000000000..cb0b2c919f7 --- /dev/null +++ b/templates/app/aspnet-core/MyCompanyName.MyProjectName.sln.DotSettings @@ -0,0 +1,23 @@ + + True + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + Required + Required + Required + Required + False + True + False + False + True + False + False + SQL + \ No newline at end of file diff --git a/templates/app/aspnet-core/common.props b/templates/app/aspnet-core/common.props new file mode 100644 index 00000000000..7585f303ba0 --- /dev/null +++ b/templates/app/aspnet-core/common.props @@ -0,0 +1,7 @@ + + + latest + 1.0.0 + $(NoWarn);CS1591 + + \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName.MyProjectName.Application.Contracts.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName.MyProjectName.Application.Contracts.csproj new file mode 100644 index 00000000000..90af8423a9b --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName.MyProjectName.Application.Contracts.csproj @@ -0,0 +1,22 @@ + + + + + + netstandard2.0 + MyCompanyName.MyProjectName + + + + + + + + + + + + + + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/MyProjectNameApplicationContractsModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/MyProjectNameApplicationContractsModule.cs new file mode 100644 index 00000000000..7dc5f632b78 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/MyProjectNameApplicationContractsModule.cs @@ -0,0 +1,22 @@ +using Volo.Abp.Account; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement; +using Volo.Abp.TenantManagement; + +namespace MyCompanyName.MyProjectName +{ + [DependsOn( + typeof(MyProjectNameDomainSharedModule), + typeof(AbpAccountApplicationContractsModule), + typeof(AbpFeatureManagementApplicationContractsModule), + typeof(AbpIdentityApplicationContractsModule), + typeof(AbpPermissionManagementApplicationContractsModule), + typeof(AbpTenantManagementApplicationContractsModule) + )] + public class MyProjectNameApplicationContractsModule : AbpModule + { + + } +} diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Application/Permissions/MyProjectNamePermissionDefinitionProvider.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/Permissions/MyProjectNamePermissionDefinitionProvider.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Application/Permissions/MyProjectNamePermissionDefinitionProvider.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/Permissions/MyProjectNamePermissionDefinitionProvider.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Application/Permissions/MyProjectNamePermissions.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/Permissions/MyProjectNamePermissions.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Application/Permissions/MyProjectNamePermissions.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/Permissions/MyProjectNamePermissions.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyCompanyName.MyProjectName.Application.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyCompanyName.MyProjectName.Application.csproj new file mode 100644 index 00000000000..49cb5717614 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyCompanyName.MyProjectName.Application.csproj @@ -0,0 +1,23 @@ + + + + + + netcoreapp2.2 + MyCompanyName.MyProjectName + + + + + + + + + + + + + + + + diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Application/MyProjectNameAppService.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyProjectNameAppService.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Application/MyProjectNameAppService.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyProjectNameAppService.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Application/MyProjectNameApplicationAutoMapperProfile.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyProjectNameApplicationAutoMapperProfile.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Application/MyProjectNameApplicationAutoMapperProfile.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyProjectNameApplicationAutoMapperProfile.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Application/MyProjectNameApplicationModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyProjectNameApplicationModule.cs similarity index 92% rename from templates/mvc/src/MyCompanyName.MyProjectName.Application/MyProjectNameApplicationModule.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyProjectNameApplicationModule.cs index 3eac8ccc89d..c3d4e00033d 100644 --- a/templates/mvc/src/MyCompanyName.MyProjectName.Application/MyProjectNameApplicationModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyProjectNameApplicationModule.cs @@ -1,4 +1,5 @@ -using Volo.Abp.AutoMapper; +using Volo.Abp.Account; +using Volo.Abp.AutoMapper; using Volo.Abp.FeatureManagement; using Volo.Abp.Identity; using Volo.Abp.Modularity; @@ -9,6 +10,7 @@ namespace MyCompanyName.MyProjectName { [DependsOn( typeof(MyProjectNameDomainModule), + typeof(AbpAccountApplicationModule), typeof(MyProjectNameApplicationContractsModule), typeof(AbpIdentityApplicationModule), typeof(AbpPermissionManagementApplicationModule), diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj similarity index 85% rename from templates/mvc/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj index 81c032e17f2..44ece128096 100644 --- a/templates/mvc/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj @@ -19,14 +19,13 @@ - - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyProjectNameDbMigratorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyProjectNameDbMigratorModule.cs new file mode 100644 index 00000000000..52b02ed18c5 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyProjectNameDbMigratorModule.cs @@ -0,0 +1,20 @@ +using MyCompanyName.MyProjectName.EntityFrameworkCore; +using Volo.Abp.Autofac; +using Volo.Abp.BackgroundJobs; +using Volo.Abp.Modularity; + +namespace MyCompanyName.MyProjectName.DbMigrator +{ + [DependsOn( + typeof(AbpAutofacModule), + typeof(MyProjectNameEntityFrameworkCoreDbMigrationsModule), + typeof(MyProjectNameApplicationContractsModule) + )] + public class MyProjectNameDbMigratorModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => options.IsJobExecutionEnabled = false); + } + } +} diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.DbMigrator/Program.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/Program.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.DbMigrator/Program.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/Program.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json new file mode 100644 index 00000000000..dd942783d67 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json @@ -0,0 +1,18 @@ +{ + "ConnectionStrings": { + "Default": "Server=localhost;Database=MyProjectName;Trusted_Connection=True;MultipleActiveResultSets=true" + }, + "IdentityServer": { + "Clients": { + "MyProjectName_Web": { + "ClientId": "MyProjectName_Web", + "ClientSecret": "1q2w3e*", + "RootUrl": "https://localhost:44302" + }, + "MyProjectName_App": { + "ClientId": "MyProjectName_App", + "ClientSecret": "1q2w3e*" + } + } + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/cs.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/cs.json new file mode 100644 index 00000000000..619521939cf --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/cs.json @@ -0,0 +1,8 @@ +{ + "culture": "cs", + "texts": { + "Menu:Home": "Úvod", + "Welcome": "Vítejte", + "LongWelcomeMessage": "Vítejte v aplikaci. Toto je startovací projekt založený na ABP frameworku. Pro více informací, navštivte abp.io." + } +} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/en.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/en.json new file mode 100644 index 00000000000..baa9fe753ee --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/en.json @@ -0,0 +1,8 @@ +{ + "culture": "en", + "texts": { + "Menu:Home": "Home", + "Welcome": "Welcome", + "LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information, visit abp.io." + } +} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/pl.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/pl.json new file mode 100644 index 00000000000..815bbcc83f4 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/pl.json @@ -0,0 +1,8 @@ +{ + "culture": "pl", + "texts": { + "Menu:Home": "Home", + "Welcome": "Witaj", + "LongWelcomeMessage": "Witaj w aplikacji. To jest inicjalny projekt bazujący na ABP framework. Po więcej informacji odwiedź stronę abp.io." + } +} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/pt-BR.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/pt-BR.json new file mode 100644 index 00000000000..8c818a07af4 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/pt-BR.json @@ -0,0 +1,8 @@ +{ + "culture": "pt-BR", + "texts": { + "Menu:Home": "Principal", + "Welcome": "Seja bem-vindo!", + "LongWelcomeMessage": "Bem-vindo a esta aplicação. Este é um projeto inicial baseado no ABP framework. Para mais informações, visite abp.io." + } +} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/tr.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/tr.json new file mode 100644 index 00000000000..5bf83ee7a8e --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/tr.json @@ -0,0 +1,8 @@ +{ + "culture": "tr", + "texts": { + "Menu:Home": "Ana sayfa", + "Welcome": "Hoşgeldiniz", + "LongWelcomeMessage": "Uygulamaya hoşgeldiniz. Bu, ABP framework'ü üzerine bina edilmiş bir başlangıç projesidir. Daha fazla bilgi için abp.io adresini ziyaret edebilirsiniz." + } +} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/vi.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/vi.json new file mode 100644 index 00000000000..c115a35726d --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/vi.json @@ -0,0 +1,8 @@ +{ + "culture": "vi", + "texts": { + "Menu:Home": "Trang chủ", + "Welcome": "Chào mừng bạn", + "LongWelcomeMessage": "Chào mừng bạn đến ứng dụng. Đây là một dự án khởi nghiệp dựa trên khung ABP. Để biết thêm thông tin, hãy truy cập abp.io." + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/zh-Hans.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/zh-Hans.json new file mode 100644 index 00000000000..459fc0fefd2 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/zh-Hans.json @@ -0,0 +1,8 @@ +{ + "culture": "zh-Hans", + "texts": { + "Menu:Home": "首页", + "Welcome": "欢迎", + "LongWelcomeMessage": "欢迎来到该应用程序. 这是一个基于ABP框架的启动项目. 有关更多信息, 请访问 cn.abp.io." + } + } \ No newline at end of file diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectNameResource.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectNameResource.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectNameResource.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectNameResource.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj new file mode 100644 index 00000000000..262569df973 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj @@ -0,0 +1,26 @@ + + + + + + netstandard2.0 + MyCompanyName.MyProjectName + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainErrorCodes.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainErrorCodes.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainErrorCodes.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainErrorCodes.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/IMyProjectNameDbSchemaMigrator.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/Data/IMyProjectNameDbSchemaMigrator.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/IMyProjectNameDbSchemaMigrator.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/Data/IMyProjectNameDbSchemaMigrator.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/MyProjectNameDbMigrationService.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/Data/MyProjectNameDbMigrationService.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/MyProjectNameDbMigrationService.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/Data/MyProjectNameDbMigrationService.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/NullMyProjectNameDbSchemaMigrator.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/Data/NullMyProjectNameDbSchemaMigrator.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain/Data/NullMyProjectNameDbSchemaMigrator.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/Data/NullMyProjectNameDbSchemaMigrator.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/IdentityServer/IdentityServerDataSeedContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/IdentityServer/IdentityServerDataSeedContributor.cs new file mode 100644 index 00000000000..b8ee88b0611 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/IdentityServer/IdentityServerDataSeedContributor.cs @@ -0,0 +1,223 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using IdentityServer4.Models; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Configuration; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Guids; +using Volo.Abp.IdentityServer.ApiResources; +using Volo.Abp.IdentityServer.Clients; +using Volo.Abp.IdentityServer.IdentityResources; +using Volo.Abp.PermissionManagement; +using Volo.Abp.Uow; +using ApiResource = Volo.Abp.IdentityServer.ApiResources.ApiResource; +using Client = Volo.Abp.IdentityServer.Clients.Client; + +namespace MyCompanyName.MyProjectName.IdentityServer +{ + public class IdentityServerDataSeedContributor : IDataSeedContributor, ITransientDependency + { + private readonly IApiResourceRepository _apiResourceRepository; + private readonly IClientRepository _clientRepository; + private readonly IIdentityResourceDataSeeder _identityResourceDataSeeder; + private readonly IGuidGenerator _guidGenerator; + private readonly IPermissionDataSeeder _permissionDataSeeder; + private readonly IConfigurationAccessor _configurationAccessor; + + public IdentityServerDataSeedContributor( + IClientRepository clientRepository, + IApiResourceRepository apiResourceRepository, + IIdentityResourceDataSeeder identityResourceDataSeeder, + IGuidGenerator guidGenerator, + IPermissionDataSeeder permissionDataSeeder, + IConfigurationAccessor configurationAccessor) + { + _clientRepository = clientRepository; + _apiResourceRepository = apiResourceRepository; + _identityResourceDataSeeder = identityResourceDataSeeder; + _guidGenerator = guidGenerator; + _permissionDataSeeder = permissionDataSeeder; + _configurationAccessor = configurationAccessor; + } + + [UnitOfWork] + public virtual async Task SeedAsync(DataSeedContext context) + { + await _identityResourceDataSeeder.CreateStandardResourcesAsync(); + await CreateApiResourcesAsync(); + await CreateClientsAsync(); + } + + private async Task CreateApiResourcesAsync() + { + var commonApiUserClaims = new[] + { + "email", + "email_verified", + "name", + "phone_number", + "phone_number_verified", + "role" + }; + + await CreateApiResourceAsync("MyProjectName", commonApiUserClaims); + } + + private async Task CreateApiResourceAsync(string name, IEnumerable claims) + { + var apiResource = await _apiResourceRepository.FindByNameAsync(name); + if (apiResource == null) + { + apiResource = await _apiResourceRepository.InsertAsync( + new ApiResource( + _guidGenerator.Create(), + name, + name + " API" + ), + autoSave: true + ); + } + + foreach (var claim in claims) + { + if (apiResource.FindClaim(claim) == null) + { + apiResource.AddUserClaim(claim); + } + } + + return await _apiResourceRepository.UpdateAsync(apiResource); + } + + private async Task CreateClientsAsync() + { + var commonScopes = new[] + { + "email", + "openid", + "profile", + "role", + "phone", + "address", + "MyProjectName" + }; + + var configurationSection = _configurationAccessor.Configuration.GetSection("IdentityServer:Clients"); + + //Web Client + var webClientId = configurationSection["MyProjectName_Web:ClientId"]; + if (!webClientId.IsNullOrWhiteSpace()) + { + var webClientRootUrl = configurationSection["MyProjectName_Web:RootUrl"].EnsureEndsWith('/'); + + /* MyProjectName_Web client is only needed if you created a tiered + * solution. Otherwise, you can delete this client. */ + + await CreateClientAsync( + webClientId, + commonScopes, + new[] { "hybrid" }, + (configurationSection["MyProjectName_Web:ClientSecret"] ?? "1q2w3e*").Sha256(), + redirectUri: $"{webClientRootUrl}signin-oidc", + postLogoutRedirectUri: $"{webClientRootUrl}signout-callback-oidc" + ); + } + + //Console Test Client + var consoleClientId = configurationSection["MyProjectName_App:ClientId"]; + if (!consoleClientId.IsNullOrWhiteSpace()) + { + await CreateClientAsync( + consoleClientId, + commonScopes, + new[] { "password", "client_credentials" }, + (configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*").Sha256() + ); + } + } + + private async Task CreateClientAsync( + string name, + IEnumerable scopes, + IEnumerable grantTypes, + string secret, + string redirectUri = null, + string postLogoutRedirectUri = null, + IEnumerable permissions = null) + { + var client = await _clientRepository.FindByCliendIdAsync(name); + if (client == null) + { + client = await _clientRepository.InsertAsync( + new Client( + _guidGenerator.Create(), + name + ) + { + ClientName = name, + ProtocolType = "oidc", + Description = name, + AlwaysIncludeUserClaimsInIdToken = true, + AllowOfflineAccess = true, + AbsoluteRefreshTokenLifetime = 31536000, //365 days + AccessTokenLifetime = 31536000, //365 days + AuthorizationCodeLifetime = 300, + IdentityTokenLifetime = 300, + RequireConsent = false + }, + autoSave: true + ); + } + + foreach (var scope in scopes) + { + if (client.FindScope(scope) == null) + { + client.AddScope(scope); + } + } + + foreach (var grantType in grantTypes) + { + if (client.FindGrantType(grantType) == null) + { + client.AddGrantType(grantType); + } + } + + if (client.FindSecret(secret) == null) + { + client.AddSecret(secret); + } + + if (redirectUri != null) + { + if (client.FindRedirectUri(redirectUri) == null) + { + client.AddRedirectUri(redirectUri); + } + } + + if (postLogoutRedirectUri != null) + { + if (client.FindPostLogoutRedirectUri(postLogoutRedirectUri) == null) + { + client.AddPostLogoutRedirectUri(postLogoutRedirectUri); + } + } + + if (permissions != null) + { + await _permissionDataSeeder.SeedAsync( + ClientPermissionValueProvider.ProviderName, + name, + permissions + ); + } + + return await _clientRepository.UpdateAsync(client); + } + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj new file mode 100644 index 00000000000..3875522a7ac --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj @@ -0,0 +1,27 @@ + + + + + + netcoreapp2.2 + MyCompanyName.MyProjectName + + + + + + + + + + + + + + + + + + + + diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain/MyProjectNameConsts.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyProjectNameConsts.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain/MyProjectNameConsts.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyProjectNameConsts.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain/MyProjectNameDomainModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyProjectNameDomainModule.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain/MyProjectNameDomainModule.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyProjectNameDomainModule.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Settings/MyProjectNameSettingDefinitionProvider.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/Settings/MyProjectNameSettingDefinitionProvider.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain/Settings/MyProjectNameSettingDefinitionProvider.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/Settings/MyProjectNameSettingDefinitionProvider.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Settings/MyProjectNameSettings.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/Settings/MyProjectNameSettings.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain/Settings/MyProjectNameSettings.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/Settings/MyProjectNameSettings.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Domain/Users/AppUser.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/Users/AppUser.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Domain/Users/AppUser.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/Users/AppUser.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/EntityFrameworkCoreMyProjectNameDbSchemaMigrator.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/EntityFrameworkCoreMyProjectNameDbSchemaMigrator.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/EntityFrameworkCoreMyProjectNameDbSchemaMigrator.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/EntityFrameworkCoreMyProjectNameDbSchemaMigrator.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreDbMigrationsModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreDbMigrationsModule.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreDbMigrationsModule.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreDbMigrationsModule.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/MyProjectNameMigrationsDbContext.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/MyProjectNameMigrationsDbContext.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/MyProjectNameMigrationsDbContext.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/MyProjectNameMigrationsDbContext.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/MyProjectNameMigrationsDbContextFactory.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/MyProjectNameMigrationsDbContextFactory.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/MyProjectNameMigrationsDbContextFactory.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/EntityFrameworkCore/MyProjectNameMigrationsDbContextFactory.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/Migrations/20190523122033_Initial.Designer.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/Migrations/20190523122033_Initial.Designer.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/Migrations/20190523122033_Initial.Designer.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/Migrations/20190523122033_Initial.Designer.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/Migrations/20190523122033_Initial.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/Migrations/20190523122033_Initial.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/Migrations/20190523122033_Initial.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/Migrations/20190523122033_Initial.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/Migrations/MyProjectNameMigrationsDbContextModelSnapshot.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/Migrations/MyProjectNameMigrationsDbContextModelSnapshot.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/Migrations/MyProjectNameMigrationsDbContextModelSnapshot.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/Migrations/MyProjectNameMigrationsDbContextModelSnapshot.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations.csproj similarity index 77% rename from templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations.csproj rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations.csproj index b38b78dbd29..02317d4ea4e 100644 --- a/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations/MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations.csproj @@ -11,4 +11,8 @@ + + + + diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContext.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContext.cs similarity index 93% rename from templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContext.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContext.cs index 262ed1308ab..a50ee1969ce 100644 --- a/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContext.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContext.cs @@ -40,10 +40,7 @@ protected override void OnModelCreating(ModelBuilder builder) builder.Entity(b => { b.ToTable("AbpUsers"); //Sharing the same table "AbpUsers" with the IdentityUser - - b.ConfigureFullAudited(); - b.ConfigureExtraProperties(); - b.ConfigureConcurrencyStamp(); + b.ConfigureByConvention(); b.ConfigureAbpUser(); //Moved customization to a method so we can share it with the MyProjectNameMigrationsDbContext class diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContextModelCreatingExtensions.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContextModelCreatingExtensions.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContextModelCreatingExtensions.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContextModelCreatingExtensions.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreModule.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreModule.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreModule.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj new file mode 100644 index 00000000000..f0a118124f4 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj @@ -0,0 +1,23 @@ + + + + + + netcoreapp2.2 + MyCompanyName.MyProjectName + + + + + + + + + + + + + + + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Client/MyCompanyName.MyProjectName.HttpApi.Client.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Client/MyCompanyName.MyProjectName.HttpApi.Client.csproj new file mode 100644 index 00000000000..ed1fe96240a --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Client/MyCompanyName.MyProjectName.HttpApi.Client.csproj @@ -0,0 +1,22 @@ + + + + + + netstandard2.0 + MyCompanyName.MyProjectName + + + + + + + + + + + + + + + diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Client/MyProjectNameHttpApiClientModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Client/MyProjectNameHttpApiClientModule.cs similarity index 93% rename from templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Client/MyProjectNameHttpApiClientModule.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Client/MyProjectNameHttpApiClientModule.cs index 9d4bcd78d5e..9597620906d 100644 --- a/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Client/MyProjectNameHttpApiClientModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Client/MyProjectNameHttpApiClientModule.cs @@ -1,4 +1,5 @@ using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Account; using Volo.Abp.FeatureManagement; using Volo.Abp.Identity; using Volo.Abp.Modularity; @@ -9,6 +10,7 @@ namespace MyCompanyName.MyProjectName { [DependsOn( typeof(MyProjectNameApplicationContractsModule), + typeof(AbpAccountHttpApiClientModule), typeof(AbpIdentityHttpApiClientModule), typeof(AbpPermissionManagementHttpApiClientModule), typeof(AbpTenantManagementHttpApiClientModule), diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.HttpApi.Host/Controllers/HomeController.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Controllers/HomeController.cs similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.HttpApi.Host/Controllers/HomeController.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Controllers/HomeController.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj new file mode 100644 index 00000000000..bc01f7664c2 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj @@ -0,0 +1,38 @@ + + + + + + netcoreapp2.2 + InProcess + MyCompanyName.MyProjectName + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs new file mode 100644 index 00000000000..feef7b52bd2 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs @@ -0,0 +1,169 @@ +using System; +using System.IO; +using System.Linq; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Cors; +using Microsoft.AspNetCore.DataProtection; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using MyCompanyName.MyProjectName.EntityFrameworkCore; +using MyCompanyName.MyProjectName.MultiTenancy; +using StackExchange.Redis; +using Swashbuckle.AspNetCore.Swagger; +using Volo.Abp; +using Volo.Abp.AspNetCore.MultiTenancy; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Autofac; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; + +namespace MyCompanyName.MyProjectName +{ + [DependsOn( + typeof(MyProjectNameHttpApiModule), + typeof(AbpAutofacModule), + typeof(AbpAspNetCoreMultiTenancyModule), + typeof(MyProjectNameApplicationModule), + typeof(MyProjectNameEntityFrameworkCoreDbMigrationsModule) + )] + public class MyProjectNameHttpApiHostModule : AbpModule + { + private const string DefaultCorsPolicyName = "Default"; + + public override void ConfigureServices(ServiceConfigurationContext context) + { + var configuration = context.Services.GetConfiguration(); + var hostingEnvironment = context.Services.GetHostingEnvironment(); + + ConfigureConventionalControllers(); + ConfigureAuthentication(context, configuration); + ConfigureSwagger(context); + ConfigureLocalization(); + ConfigureVirtualFileSystem(context); + ConfigureRedis(context, configuration, hostingEnvironment); + ConfigureCors(context, configuration); + } + + private void ConfigureVirtualFileSystem(ServiceConfigurationContext context) + { + var hostingEnvironment = context.Services.GetHostingEnvironment(); + + if (hostingEnvironment.IsDevelopment()) + { + Configure(options => + { + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Domain.Shared")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Domain")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Application.Contracts")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Application")); + }); + } + } + + private void ConfigureConventionalControllers() + { + Configure(options => + { + options.ConventionalControllers.Create(typeof(MyProjectNameApplicationModule).Assembly); + }); + } + + private void ConfigureAuthentication(ServiceConfigurationContext context, IConfigurationRoot configuration) + { + context.Services.AddAuthentication("Bearer") + .AddIdentityServerAuthentication(options => + { + options.Authority = configuration["AuthServer:Authority"]; + options.RequireHttpsMetadata = true; + options.ApiName = "MyProjectName"; + }); + } + + private static void ConfigureSwagger(ServiceConfigurationContext context) + { + context.Services.AddSwaggerGen( + options => + { + options.SwaggerDoc("v1", new Info {Title = "MyProjectName API", Version = "v1"}); + options.DocInclusionPredicate((docName, description) => true); + }); + } + + private void ConfigureLocalization() + { + Configure(options => + { + options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština")); + options.Languages.Add(new LanguageInfo("en", "en", "English")); + options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português")); + options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe")); + options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); + }); + } + + private void ConfigureRedis( + ServiceConfigurationContext context, + IConfigurationRoot configuration, + IHostingEnvironment hostingEnvironment) + { + context.Services.AddStackExchangeRedisCache(options => + { + options.Configuration = configuration["Redis:Configuration"]; + }); + + if (!hostingEnvironment.IsDevelopment()) + { + var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]); + context.Services + .AddDataProtection() + .PersistKeysToStackExchangeRedis(redis, "MyProjectName-Protection-Keys"); + } + } + + private void ConfigureCors(ServiceConfigurationContext context, IConfigurationRoot configuration) + { + context.Services.AddCors(options => + { + options.AddPolicy(DefaultCorsPolicyName, builder => + { + builder + .WithOrigins( + configuration["App:CorsOrigins"] + .Split(",", StringSplitOptions.RemoveEmptyEntries) + .Select(o => o.RemovePostFix("/")) + .ToArray() + ) + .WithAbpExposedHeaders() + .SetIsOriginAllowedToAllowWildcardSubdomains() + .AllowAnyHeader() + .AllowAnyMethod() + .AllowCredentials(); + }); + }); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var app = context.GetApplicationBuilder(); + + app.UseCors(DefaultCorsPolicyName); + + app.UseVirtualFiles(); + app.UseAuthentication(); + if (MultiTenancyConsts.IsEnabled) + { + app.UseMultiTenancy(); + } + app.UseAbpRequestLocalization(); + app.UseSwagger(); + app.UseSwaggerUI(options => + { + options.SwaggerEndpoint("/swagger/v1/swagger.json", "MyProjectName API"); + }); + app.UseAuditing(); + app.UseMvcWithDefaultRouteAndArea(); + } + } +} diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/Program.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Program.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/Program.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Program.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/Properties/launchSettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Properties/launchSettings.json similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/Properties/launchSettings.json rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Properties/launchSettings.json diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.HttpApi.Host/Startup.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Startup.cs similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.HttpApi.Host/Startup.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Startup.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/appsettings.Development.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.Development.json similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/appsettings.Development.json rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.Development.json diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json new file mode 100644 index 00000000000..bad453f08a3 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json @@ -0,0 +1,14 @@ +{ + "App": { + "CorsOrigins": "https://*.MyProjectName.com,http://localhost:4200" + }, + "ConnectionStrings": { + "Default": "Server=localhost;Database=MyProjectName;Trusted_Connection=True;MultipleActiveResultSets=true" + }, + "Redis": { + "Configuration": "127.0.0.1" + }, + "AuthServer": { + "Authority": "https://localhost:44301" + } +} diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/tempkey.rsa b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/tempkey.rsa similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/tempkey.rsa rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/tempkey.rsa diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/Controllers/HomeController.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Controllers/HomeController.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/Controllers/HomeController.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Controllers/HomeController.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj new file mode 100644 index 00000000000..04b9fbbd645 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj @@ -0,0 +1,39 @@ + + + + + + netcoreapp2.2 + InProcess + MyCompanyName.MyProjectName + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs new file mode 100644 index 00000000000..979a3dd4179 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs @@ -0,0 +1,172 @@ +using System; +using System.IO; +using System.Linq; +using System.Net.Http; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Cors; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using MyCompanyName.MyProjectName.EntityFrameworkCore; +using MyCompanyName.MyProjectName.MultiTenancy; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic; +using Swashbuckle.AspNetCore.Swagger; +using Volo.Abp; +using Volo.Abp.Account.Web; +using Volo.Abp.AspNetCore.Authentication.JwtBearer; +using Volo.Abp.AspNetCore.MultiTenancy; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Autofac; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.UI.Navigation.Urls; +using Volo.Abp.VirtualFileSystem; + +namespace MyCompanyName.MyProjectName +{ + [DependsOn( + typeof(MyProjectNameHttpApiModule), + typeof(AbpAutofacModule), + typeof(AbpAspNetCoreMultiTenancyModule), + typeof(MyProjectNameApplicationModule), + typeof(MyProjectNameEntityFrameworkCoreDbMigrationsModule), + typeof(AbpAspNetCoreMvcUiBasicThemeModule), + typeof(AbpAspNetCoreAuthenticationJwtBearerModule), + typeof(AbpAccountWebIdentityServerModule) + )] + public class MyProjectNameHttpApiHostModule : AbpModule + { + private const string DefaultCorsPolicyName = "Default"; + + public override void ConfigureServices(ServiceConfigurationContext context) + { + var configuration = context.Services.GetConfiguration(); + var hostingEnvironment = context.Services.GetHostingEnvironment(); + + ConfigureUrls(configuration); + ConfigureConventionalControllers(); + ConfigureAuthentication(context, configuration); + ConfigureSwagger(context); + ConfigureLocalization(); + ConfigureVirtualFileSystem(context); + ConfigureCors(context, configuration); + } + + private void ConfigureUrls(IConfigurationRoot configuration) + { + Configure(options => + { + options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"]; + }); + } + + private void ConfigureVirtualFileSystem(ServiceConfigurationContext context) + { + var hostingEnvironment = context.Services.GetHostingEnvironment(); + + if (hostingEnvironment.IsDevelopment()) + { + Configure(options => + { + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Domain.Shared")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Domain")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Application.Contracts")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Application")); + }); + } + } + + private void ConfigureConventionalControllers() + { + Configure(options => + { + options.ConventionalControllers.Create(typeof(MyProjectNameApplicationModule).Assembly); + }); + } + + private void ConfigureAuthentication(ServiceConfigurationContext context, IConfigurationRoot configuration) + { + context.Services.AddAuthentication() + .AddIdentityServerAuthentication(options => + { + options.Authority = configuration["AuthServer:Authority"]; + options.RequireHttpsMetadata = false; + options.ApiName = "MyProjectName"; + options.JwtBackChannelHandler = new HttpClientHandler() + { + ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator + }; + }); + } + + private static void ConfigureSwagger(ServiceConfigurationContext context) + { + context.Services.AddSwaggerGen( + options => + { + options.SwaggerDoc("v1", new Info {Title = "MyProjectName API", Version = "v1"}); + options.DocInclusionPredicate((docName, description) => true); + }); + } + + private void ConfigureLocalization() + { + Configure(options => + { + options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština")); + options.Languages.Add(new LanguageInfo("en", "en", "English")); + options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português")); + options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe")); + options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); + }); + } + + private void ConfigureCors(ServiceConfigurationContext context, IConfigurationRoot configuration) + { + context.Services.AddCors(options => + { + options.AddPolicy(DefaultCorsPolicyName, builder => + { + builder + .WithOrigins( + configuration["App:CorsOrigins"] + .Split(",", StringSplitOptions.RemoveEmptyEntries) + .Select(o => o.RemovePostFix("/")) + .ToArray() + ) + .WithAbpExposedHeaders() + .SetIsOriginAllowedToAllowWildcardSubdomains() + .AllowAnyHeader() + .AllowAnyMethod() + .AllowCredentials(); + }); + }); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var app = context.GetApplicationBuilder(); + + app.UseCors(DefaultCorsPolicyName); + + app.UseVirtualFiles(); + app.UseAuthentication(); + app.UseJwtTokenMiddleware(); + + if (MultiTenancyConsts.IsEnabled) + { + app.UseMultiTenancy(); + } + + app.UseIdentityServer(); + app.UseAbpRequestLocalization(); + app.UseSwagger(); + app.UseSwaggerUI(options => + { + options.SwaggerEndpoint("/swagger/v1/swagger.json", "MyProjectName API"); + }); + app.UseAuditing(); + app.UseMvcWithDefaultRouteAndArea(); + } + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Program.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Program.cs new file mode 100644 index 00000000000..498ac833514 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Program.cs @@ -0,0 +1,54 @@ +using System; +using System.IO; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.InProcess; +using Serilog; +using Serilog.Events; + +namespace MyCompanyName.MyProjectName +{ + public class Program + { + public static int Main(string[] args) + { + CurrentDirectoryHelpers.SetCurrentDirectory(); + + Log.Logger = new LoggerConfiguration() +#if DEBUG + .MinimumLevel.Debug() +#else + .MinimumLevel.Information() +#endif + .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .Enrich.FromLogContext() + .WriteTo.Async(c => c.File("Logs/logs.txt")) + .CreateLogger(); + + try + { + Log.Information("Starting MyCompanyName.MyProjectName.HttpApi.Host."); + BuildWebHostInternal(args).Run(); + return 0; + } + catch (Exception ex) + { + Log.Fatal(ex, "Host terminated unexpectedly!"); + return 1; + } + finally + { + Log.CloseAndFlush(); + } + } + + public static IWebHost BuildWebHostInternal(string[] args) => + new WebHostBuilder() + .UseKestrel() + .UseContentRoot(Directory.GetCurrentDirectory()) + .UseIIS() + .UseIISIntegration() + .UseStartup() + .UseSerilog() + .Build(); + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Properties/launchSettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Properties/launchSettings.json new file mode 100644 index 00000000000..b911d0da836 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "https://localhost:44305", + "sslPort": 44305 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "MyCompanyName.MyProjectName.HttpApi.Host": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "https://localhost:44305", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} \ No newline at end of file diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/Startup.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Startup.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/Startup.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Startup.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/abp.resourcemapping.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/abp.resourcemapping.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/abp.resourcemapping.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/abp.resourcemapping.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/appsettings.Development.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/appsettings.Development.json similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/appsettings.Development.json rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/appsettings.Development.json diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/appsettings.json new file mode 100644 index 00000000000..ffe84edc525 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/appsettings.json @@ -0,0 +1,12 @@ +{ + "App": { + "SelfUrl": "https://localhost:44305", + "CorsOrigins": "https://*.MyProjectName.com,http://localhost:4200" + }, + "ConnectionStrings": { + "Default": "Server=localhost;Database=MyProjectName;Trusted_Connection=True;MultipleActiveResultSets=true" + }, + "AuthServer": { + "Authority": "https://localhost:44305" + } +} diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/gulpfile.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/gulpfile.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/gulpfile.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/gulpfile.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/package.json rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/tempkey.rsa b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/tempkey.rsa new file mode 100644 index 00000000000..f19e3e7dd85 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/tempkey.rsa @@ -0,0 +1 @@ +{"KeyId":"5eb863b25811a7099f9bc925c0fdf680","Parameters":{"D":"gqn7NAeMkug4twJJHFz/qPseDzQCx7R+6Maj649xrG4vPsMANV9mfR78Er2SuHUS0ZihM2MQEILI5Sf41Uuubv8swCNSE3Dw7GQrBIbTAJ7BZKbQMVgtGkMDtHrtri6d9cOi3EOTSJINICk9r80M49oBMOZihEKascfBSIUYVQvWLEMYfryEiDeFUPbobr10OxF5tZ1unvEKgZe190BdNKWQuFhJelcgsZumjEYNsOz5DHrK73WLhfTy01DmsTKx8i1XVnLtq6W89MqAhMZP9QO9Vj8lR0ANnmdOsY6hJfwUbXiI36t4V9rAZvXR5ESorjb4mnXzT6QPuOfy1fbdSQ==","DP":"ItYIpEqw6aDjDc/swDifUe0Dq6yl4yim3UyQ4B9NBPQR5M6b7D3vbCnvwql4zJK4s+0N4lRViBtkF+20Td1yc2v8S+THCYZCVxCf2e9Q7Ff/sKecJ9/JmdzHkztCfs0xb+4X3CPEQP+JIYtMGmwOLQgE5XgmUYKr0ahZDhYTCwE=","DQ":"v35mgxfyF/nwnWwWlR9cF3mg0v7SyPfKkwdxGaVnGH6G8nPWpPlO+zueflA5QDXEwGtk/1k3PAzI/OLUwJiKBubx/UMhsqt5+/bKTrFDNHxLANCvGNZggMZIzFZBYRucuXRZbiBe5qpCkKkniUct7w6jd/V1mnsESiJZ7btcxU0=","Exponent":"AQAB","InverseQ":"Vbg2a+wtaYvhTV8AzqJsVvaz0kfC4HFbmwEgA8+BAbS3GEoS3RHFSfB3DHndpnNihIg72DctDNLmV2GMMiTu18uyI+7AUaYNR836fByxptfyhPtSQfw4kINZ3V0GWKJGzzZ5NAOct4/FpRl8xliHetayCfUIuK9jwk0z9i6V6bA=","Modulus":"xlzmN1sBi2V1971MsPD5MTND9dAGncIzYqxa3H+9jx1mNDivY6JgKijUWm5a3D2Y1UPMB3kx6qUf3iH6pZHjq5bk938qRhxrPy9muW55U03HTiW4V5/ga0+OqXj5Tj4lz+29OiQHPErxLRgfXT+WBgrGb75ElzkHajKpJnPgzAZuarlUCwupJNQlav/crwOFrgkhGsnaOW13M8htiSLZozw5lxkbhYIei7YTTQZ3l6rVH1dPL8CvzRJJOTwbnU8k0sUmWiuOhrLzuinlr6uuOTocAVgbj943/witVFtN5B0yhetxEVgFCwxRDTOO1EKVHFtCiAyZBUOlK4gwZ+SbGQ==","P":"7dFfbAkZSdx/ieSMYJHoY1DKC4dLg80RObEEmuJ72MaVJLTtFuBPoRpYOrMUNuupIyPjZZsW8fHRlPRhKW7xFv+Q2aDudh1UaJzFZs3xYKoiXTU/j0B3TB3nrifVLMqsS+8kHOWOojwA4dMjI6GCYCpKmYVvMOE1cuJrQ9EYxoM=","Q":"1YdN8mLchLVoTEwD34Pi3T2U7EjjBDgDCzhjl7x5FBG73TyKMz1n7/KXkXcJ2rqIAsnLqCWpYUeRcWl+IQEQxFKoMwkvmQ33lRkOE0SBZ+FnUAMivRyxOD5qM9z4ccqx0ga4ZRgb1lR85f7VYtMSfIosOuSFxWAbV1e29utxhTM="}} \ No newline at end of file diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/core/abp.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/abp/core/abp.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/core/abp.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/abp/core/abp.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/core/abp.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/abp/core/abp.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/core/abp.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/abp/core/abp.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/jquery/abp.jquery.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/abp/jquery/abp.jquery.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/jquery/abp.jquery.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/abp/jquery/abp.jquery.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/bootstrap/css/bootstrap.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/bootstrap/css/bootstrap.css similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/bootstrap/css/bootstrap.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/bootstrap/css/bootstrap.css diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/bootstrap/js/bootstrap.bundle.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/bootstrap/js/bootstrap.bundle.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/bootstrap/js/bootstrap.bundle.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/bootstrap/js/bootstrap.bundle.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/datatables.net/js/jquery.dataTables.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/datatables.net/js/jquery.dataTables.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/datatables.net/js/jquery.dataTables.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/datatables.net/js/jquery.dataTables.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/css/font-awesome.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/font-awesome/css/font-awesome.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/css/font-awesome.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/font-awesome/css/font-awesome.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/FontAwesome.otf b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/font-awesome/fonts/FontAwesome.otf similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/FontAwesome.otf rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/font-awesome/fonts/FontAwesome.otf diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2 b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2 similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2 rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2 diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-form/jquery.form.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-form/jquery.form.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-form/jquery.form.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-form/jquery.form.min.js diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js new file mode 100644 index 00000000000..6af3efad078 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js @@ -0,0 +1,431 @@ +// Unobtrusive validation support library for jQuery and jQuery Validate +// Copyright (C) Microsoft Corporation. All rights reserved. +// @version v3.2.9 + +/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */ +/*global document: false, jQuery: false */ + +(function (factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define("jquery.validate.unobtrusive", ['jquery.validation'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports + module.exports = factory(require('jquery-validation')); + } else { + // Browser global + jQuery.validator.unobtrusive = factory(jQuery); + } +}(function ($) { + var $jQval = $.validator, + adapters, + data_validation = "unobtrusiveValidation"; + + function setValidationValues(options, ruleName, value) { + options.rules[ruleName] = value; + if (options.message) { + options.messages[ruleName] = options.message; + } + } + + function splitAndTrim(value) { + return value.replace(/^\s+|\s+$/g, "").split(/\s*,\s*/g); + } + + function escapeAttributeValue(value) { + // As mentioned on http://api.jquery.com/category/selectors/ + return value.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g, "\\$1"); + } + + function getModelPrefix(fieldName) { + return fieldName.substr(0, fieldName.lastIndexOf(".") + 1); + } + + function appendModelPrefix(value, prefix) { + if (value.indexOf("*.") === 0) { + value = value.replace("*.", prefix); + } + return value; + } + + function onError(error, inputElement) { // 'this' is the form element + var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"), + replaceAttrValue = container.attr("data-valmsg-replace"), + replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null; + + container.removeClass("field-validation-valid").addClass("field-validation-error"); + error.data("unobtrusiveContainer", container); + + if (replace) { + container.empty(); + error.removeClass("input-validation-error").appendTo(container); + } + else { + error.hide(); + } + } + + function onErrors(event, validator) { // 'this' is the form element + var container = $(this).find("[data-valmsg-summary=true]"), + list = container.find("ul"); + + if (list && list.length && validator.errorList.length) { + list.empty(); + container.addClass("validation-summary-errors").removeClass("validation-summary-valid"); + + $.each(validator.errorList, function () { + $("
  • ").html(this.message).appendTo(list); + }); + } + } + + function onSuccess(error) { // 'this' is the form element + var container = error.data("unobtrusiveContainer"); + + if (container) { + var replaceAttrValue = container.attr("data-valmsg-replace"), + replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null; + + container.addClass("field-validation-valid").removeClass("field-validation-error"); + error.removeData("unobtrusiveContainer"); + + if (replace) { + container.empty(); + } + } + } + + function onReset(event) { // 'this' is the form element + var $form = $(this), + key = '__jquery_unobtrusive_validation_form_reset'; + if ($form.data(key)) { + return; + } + // Set a flag that indicates we're currently resetting the form. + $form.data(key, true); + try { + $form.data("validator").resetForm(); + } finally { + $form.removeData(key); + } + + $form.find(".validation-summary-errors") + .addClass("validation-summary-valid") + .removeClass("validation-summary-errors"); + $form.find(".field-validation-error") + .addClass("field-validation-valid") + .removeClass("field-validation-error") + .removeData("unobtrusiveContainer") + .find(">*") // If we were using valmsg-replace, get the underlying error + .removeData("unobtrusiveContainer"); + } + + function validationInfo(form) { + var $form = $(form), + result = $form.data(data_validation), + onResetProxy = $.proxy(onReset, form), + defaultOptions = $jQval.unobtrusive.options || {}, + execInContext = function (name, args) { + var func = defaultOptions[name]; + func && $.isFunction(func) && func.apply(form, args); + }; + + if (!result) { + result = { + options: { // options structure passed to jQuery Validate's validate() method + errorClass: defaultOptions.errorClass || "input-validation-error", + errorElement: defaultOptions.errorElement || "span", + errorPlacement: function () { + onError.apply(form, arguments); + execInContext("errorPlacement", arguments); + }, + invalidHandler: function () { + onErrors.apply(form, arguments); + execInContext("invalidHandler", arguments); + }, + messages: {}, + rules: {}, + success: function () { + onSuccess.apply(form, arguments); + execInContext("success", arguments); + } + }, + attachValidation: function () { + $form + .off("reset." + data_validation, onResetProxy) + .on("reset." + data_validation, onResetProxy) + .validate(this.options); + }, + validate: function () { // a validation function that is called by unobtrusive Ajax + $form.validate(); + return $form.valid(); + } + }; + $form.data(data_validation, result); + } + + return result; + } + + $jQval.unobtrusive = { + adapters: [], + + parseElement: function (element, skipAttach) { + /// + /// Parses a single HTML element for unobtrusive validation attributes. + /// + /// The HTML element to be parsed. + /// [Optional] true to skip attaching the + /// validation to the form. If parsing just this single element, you should specify true. + /// If parsing several elements, you should specify false, and manually attach the validation + /// to the form when you are finished. The default is false. + var $element = $(element), + form = $element.parents("form")[0], + valInfo, rules, messages; + + if (!form) { // Cannot do client-side validation without a form + return; + } + + valInfo = validationInfo(form); + valInfo.options.rules[element.name] = rules = {}; + valInfo.options.messages[element.name] = messages = {}; + + $.each(this.adapters, function () { + var prefix = "data-val-" + this.name, + message = $element.attr(prefix), + paramValues = {}; + + if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy) + prefix += "-"; + + $.each(this.params, function () { + paramValues[this] = $element.attr(prefix + this); + }); + + this.adapt({ + element: element, + form: form, + message: message, + params: paramValues, + rules: rules, + messages: messages + }); + } + }); + + $.extend(rules, { "__dummy__": true }); + + if (!skipAttach) { + valInfo.attachValidation(); + } + }, + + parse: function (selector) { + /// + /// Parses all the HTML elements in the specified selector. It looks for input elements decorated + /// with the [data-val=true] attribute value and enables validation according to the data-val-* + /// attribute values. + /// + /// Any valid jQuery selector. + + // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one + // element with data-val=true + var $selector = $(selector), + $forms = $selector.parents() + .addBack() + .filter("form") + .add($selector.find("form")) + .has("[data-val=true]"); + + $selector.find("[data-val=true]").each(function () { + $jQval.unobtrusive.parseElement(this, true); + }); + + $forms.each(function () { + var info = validationInfo(this); + if (info) { + info.attachValidation(); + } + }); + } + }; + + adapters = $jQval.unobtrusive.adapters; + + adapters.add = function (adapterName, params, fn) { + /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation. + /// The name of the adapter to be added. This matches the name used + /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name). + /// [Optional] An array of parameter names (strings) that will + /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and + /// mmmm is the parameter name). + /// The function to call, which adapts the values from the HTML + /// attributes into jQuery Validate rules and/or messages. + /// + if (!fn) { // Called with no params, just a function + fn = params; + params = []; + } + this.push({ name: adapterName, params: params, adapt: fn }); + return this; + }; + + adapters.addBool = function (adapterName, ruleName) { + /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where + /// the jQuery Validate validation rule has no parameter values. + /// The name of the adapter to be added. This matches the name used + /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name). + /// [Optional] The name of the jQuery Validate rule. If not provided, the value + /// of adapterName will be used instead. + /// + return this.add(adapterName, function (options) { + setValidationValues(options, ruleName || adapterName, true); + }); + }; + + adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) { + /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where + /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and + /// one for min-and-max). The HTML parameters are expected to be named -min and -max. + /// The name of the adapter to be added. This matches the name used + /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name). + /// The name of the jQuery Validate rule to be used when you only + /// have a minimum value. + /// The name of the jQuery Validate rule to be used when you only + /// have a maximum value. + /// The name of the jQuery Validate rule to be used when you + /// have both a minimum and maximum value. + /// [Optional] The name of the HTML attribute that + /// contains the minimum value. The default is "min". + /// [Optional] The name of the HTML attribute that + /// contains the maximum value. The default is "max". + /// + return this.add(adapterName, [minAttribute || "min", maxAttribute || "max"], function (options) { + var min = options.params.min, + max = options.params.max; + + if (min && max) { + setValidationValues(options, minMaxRuleName, [min, max]); + } + else if (min) { + setValidationValues(options, minRuleName, min); + } + else if (max) { + setValidationValues(options, maxRuleName, max); + } + }); + }; + + adapters.addSingleVal = function (adapterName, attribute, ruleName) { + /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where + /// the jQuery Validate validation rule has a single value. + /// The name of the adapter to be added. This matches the name used + /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name). + /// [Optional] The name of the HTML attribute that contains the value. + /// The default is "val". + /// [Optional] The name of the jQuery Validate rule. If not provided, the value + /// of adapterName will be used instead. + /// + return this.add(adapterName, [attribute || "val"], function (options) { + setValidationValues(options, ruleName || adapterName, options.params[attribute]); + }); + }; + + $jQval.addMethod("__dummy__", function (value, element, params) { + return true; + }); + + $jQval.addMethod("regex", function (value, element, params) { + var match; + if (this.optional(element)) { + return true; + } + + match = new RegExp(params).exec(value); + return (match && (match.index === 0) && (match[0].length === value.length)); + }); + + $jQval.addMethod("nonalphamin", function (value, element, nonalphamin) { + var match; + if (nonalphamin) { + match = value.match(/\W/g); + match = match && match.length >= nonalphamin; + } + return match; + }); + + if ($jQval.methods.extension) { + adapters.addSingleVal("accept", "mimtype"); + adapters.addSingleVal("extension", "extension"); + } else { + // for backward compatibility, when the 'extension' validation method does not exist, such as with versions + // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for + // validating the extension, and ignore mime-type validations as they are not supported. + adapters.addSingleVal("extension", "extension", "accept"); + } + + adapters.addSingleVal("regex", "pattern"); + adapters.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url"); + adapters.addMinMax("length", "minlength", "maxlength", "rangelength").addMinMax("range", "min", "max", "range"); + adapters.addMinMax("minlength", "minlength").addMinMax("maxlength", "minlength", "maxlength"); + adapters.add("equalto", ["other"], function (options) { + var prefix = getModelPrefix(options.element.name), + other = options.params.other, + fullOtherName = appendModelPrefix(other, prefix), + element = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(fullOtherName) + "']")[0]; + + setValidationValues(options, "equalTo", element); + }); + adapters.add("required", function (options) { + // jQuery Validate equates "required" with "mandatory" for checkbox elements + if (options.element.tagName.toUpperCase() !== "INPUT" || options.element.type.toUpperCase() !== "CHECKBOX") { + setValidationValues(options, "required", true); + } + }); + adapters.add("remote", ["url", "type", "additionalfields"], function (options) { + var value = { + url: options.params.url, + type: options.params.type || "GET", + data: {} + }, + prefix = getModelPrefix(options.element.name); + + $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) { + var paramName = appendModelPrefix(fieldName, prefix); + value.data[paramName] = function () { + var field = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(paramName) + "']"); + // For checkboxes and radio buttons, only pick up values from checked fields. + if (field.is(":checkbox")) { + return field.filter(":checked").val() || field.filter(":hidden").val() || ''; + } + else if (field.is(":radio")) { + return field.filter(":checked").val() || ''; + } + return field.val(); + }; + }); + + setValidationValues(options, "remote", value); + }); + adapters.add("password", ["min", "nonalphamin", "regex"], function (options) { + if (options.params.min) { + setValidationValues(options, "minlength", options.params.min); + } + if (options.params.nonalphamin) { + setValidationValues(options, "nonalphamin", options.params.nonalphamin); + } + if (options.params.regex) { + setValidationValues(options, "regex", options.params.regex); + } + }); + adapters.add("fileextensions", ["extensions"], function (options) { + setValidationValues(options, "extension", options.params.extensions); + }); + + $(function () { + $jQval.unobtrusive.parse(document); + }); + + return $jQval.unobtrusive; +})); \ No newline at end of file diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/jquery.validate.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/jquery.validate.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/jquery.validate.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/jquery.validate.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ar.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ar.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ar.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ar.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_az.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_az.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_az.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_az.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_bg.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_bg.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_bg.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_bg.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ca.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ca.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ca.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ca.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_cs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_cs.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_cs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_cs.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_da.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_da.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_da.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_da.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_de.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_de.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_de.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_de.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_el.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_el.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_el.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_el.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_es.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_es.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es_AR.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_es_AR.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es_AR.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_es_AR.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es_PE.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_es_PE.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es_PE.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_es_PE.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_et.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_et.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_et.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_et.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_eu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_eu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_eu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_eu.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_fa.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_fa.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_fa.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_fa.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_fi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_fi.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_fr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_fr.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_fr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_fr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ge.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ge.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ge.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ge.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_gl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_gl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_gl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_gl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_he.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_he.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_he.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_he.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_hr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_hr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_hu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_hu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_id.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_id.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_id.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_id.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_is.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_is.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_is.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_is.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_it.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_it.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_it.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_it.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ja.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ja.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ja.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ja.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ka.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ka.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ka.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ka.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_kk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_kk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_kk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_kk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ko.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ko.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ko.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ko.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_lt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_lt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_lt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_lt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_lv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_lv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_lv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_lv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_mk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_mk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_mk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_mk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_my.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_my.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_my.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_my.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_nl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_nl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_nl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_nl.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_no.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_no.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_no.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_no.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_pl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_pl.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_pl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_pl.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ro.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ro.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ro.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ro.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ru.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ru.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ru.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ru.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sd.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_sd.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sd.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_sd.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_si.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_si.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_si.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_si.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_sk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_sk.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_sk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_sk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_sl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_sl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_sr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_sr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_sv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_sv.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_sv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_sv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_th.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_th.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_th.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_th.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_tj.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_tj.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_tj.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_tj.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_tr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_tr.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_tr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_tr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_uk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_uk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_uk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_uk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ur.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ur.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ur.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_ur.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_vi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_vi.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_vi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_vi.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_zh.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_zh.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery-validation/localization/messages_zh.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_zh.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_de.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/methods_de.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_de.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/methods_de.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_es_CL.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/methods_es_CL.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_es_CL.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/methods_es_CL.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_fi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/methods_fi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_fi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/methods_fi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_nl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/methods_nl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_nl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/methods_nl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_pt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/methods_pt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_pt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery-validation/localization/methods_pt.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery/jquery.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery/jquery.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/jquery/jquery.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/jquery/jquery.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/lodash/lodash.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/lodash/lodash.min.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/lodash/lodash.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/lodash/lodash.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/css/select2.min.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/css/select2.min.css similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/css/select2.min.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/css/select2.min.css diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/af.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/af.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/af.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/af.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/ar.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/ar.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/ar.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/ar.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/az.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/az.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/az.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/az.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/bg.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/bg.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/bg.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/bg.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/bs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/bs.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/bs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/bs.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/ca.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/ca.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/ca.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/ca.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/cs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/cs.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/cs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/cs.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/da.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/da.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/da.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/da.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/de.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/de.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/de.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/de.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/dsb.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/dsb.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/dsb.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/dsb.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/el.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/el.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/el.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/el.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/en.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/en.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/en.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/en.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/es.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/es.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/es.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/es.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/et.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/et.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/et.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/et.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/eu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/eu.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/eu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/eu.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/fa.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/fa.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/fa.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/fa.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/fi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/fi.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/fi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/fi.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/fr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/fr.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/fr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/fr.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/gl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/gl.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/gl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/gl.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/he.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/he.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/he.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/he.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/hi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/hi.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/hi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/hi.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/hr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/hr.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/hr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/hr.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/hsb.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/hsb.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/hsb.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/hsb.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/hu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/hu.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/hu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/hu.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/hy.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/hy.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/hy.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/hy.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/id.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/id.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/id.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/id.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/is.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/is.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/is.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/is.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/it.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/it.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/it.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/it.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/ja.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/ja.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/ja.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/ja.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/km.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/km.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/km.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/km.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/ko.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/ko.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/ko.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/ko.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/lt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/lt.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/lt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/lt.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/lv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/lv.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/lv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/lv.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/mk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/mk.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/mk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/mk.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/ms.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/ms.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/ms.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/ms.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/nb.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/nb.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/nb.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/nb.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/nl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/nl.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/nl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/nl.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/pl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/pl.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/pl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/pl.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/ps.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/ps.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/ps.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/ps.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/pt-BR.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/pt-BR.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/pt-BR.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/pt-BR.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/pt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/pt.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/pt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/pt.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/ro.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/ro.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/ro.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/ro.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/ru.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/ru.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/ru.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/ru.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/sk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/sk.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/sk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/sk.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/sl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/sl.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/sl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/sl.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/sr-Cyrl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/sr-Cyrl.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/sr-Cyrl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/sr-Cyrl.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/sr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/sr.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/sr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/sr.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/sv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/sv.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/sv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/sv.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/th.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/th.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/th.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/th.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/tr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/tr.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/tr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/tr.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/uk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/uk.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/uk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/uk.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/vi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/vi.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/vi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/vi.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/zh-CN.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/zh-CN.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/zh-CN.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/zh-CN.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/zh-TW.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/zh-TW.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/i18n/zh-TW.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/i18n/zh-TW.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/select2.full.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/select2.full.min.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/select2.full.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/select2.full.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/select2.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/select2.min.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/select2.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/select2.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/sweetalert/sweetalert.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/sweetalert/sweetalert.min.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/sweetalert/sweetalert.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/sweetalert/sweetalert.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/timeago/jquery.timeago.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/jquery.timeago.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/timeago/jquery.timeago.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/jquery.timeago.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/README.md b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/README.md similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/README.md rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/README.md diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.af.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.af.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.af.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.af.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.am.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.am.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.am.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.am.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ar.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.ar.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ar.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.ar.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.az.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.az.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.az.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.az.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.bg.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.bg.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.bg.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.bg.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.bs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.bs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.bs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.bs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ca.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.ca.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ca.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.ca.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.cs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.cs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.cs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.cs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.cy.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.cy.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.cy.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.cy.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.da.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.da.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.da.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.da.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.de.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.de.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.de.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.de.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.dv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.dv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.dv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.dv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.el.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.el.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.el.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.el.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.en.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.en.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.en.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.en.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.es.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.es.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.es.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.es.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.et.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.et.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.et.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.et.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.eu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.eu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.eu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.eu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/timeago/locales/jquery.timeago.fa.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.fa.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/timeago/locales/jquery.timeago.fa.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.fa.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.fi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.fi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.fr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.fr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.gl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.gl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.gl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.gl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.he.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.he.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.he.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.he.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.hr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.hr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.hr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.hr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.hu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.hu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.hu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.hu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.hy.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.hy.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.hy.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.hy.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.id.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.id.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.id.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.id.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.is.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.is.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.is.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.is.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/timeago/locales/jquery.timeago.it.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.it.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/timeago/locales/jquery.timeago.it.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.it.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ja.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.ja.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ja.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.ja.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.jv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.jv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.jv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.jv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ko.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.ko.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ko.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.ko.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ky.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.ky.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ky.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.ky.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.lt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.lt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.lt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.lt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.lv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.lv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.lv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.lv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.mk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.mk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.mk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.mk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.nl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.nl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.nl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.nl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.no.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.no.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.no.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.no.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.pl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.pl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/timeago/locales/jquery.timeago.pt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.pt.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/timeago/locales/jquery.timeago.pt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.pt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ro.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.ro.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ro.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.ro.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.rs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.rs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.rs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.rs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ru.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.ru.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ru.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.ru.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.rw.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.rw.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.rw.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.rw.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.si.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.si.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.si.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.si.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.sk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.sk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.sl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.sl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sq.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.sq.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sq.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.sq.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.sr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.sr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.sv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.sv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.th.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.th.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.th.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.th.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.tr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.tr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.tr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.tr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.uk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.uk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.uk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.uk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ur.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.ur.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ur.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.ur.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.uz.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.uz.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.uz.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.uz.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/timeago/locales/jquery.timeago.vi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.vi.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/timeago/locales/jquery.timeago.vi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.vi.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/toastr/toastr.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/toastr/toastr.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/toastr/toastr.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/toastr/toastr.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/toastr/toastr.js.map b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/toastr/toastr.js.map similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/toastr/toastr.js.map rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/toastr/toastr.js.map diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/toastr/toastr.min.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/toastr/toastr.min.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/toastr/toastr.min.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/toastr/toastr.min.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/toastr/toastr.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/toastr/toastr.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/toastr/toastr.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/toastr/toastr.min.js diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock new file mode 100644 index 00000000000..5b3ba1f94ed --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock @@ -0,0 +1,2576 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@abp/aspnetcore.mvc.ui.theme.basic@^0.6.6": + version "0.6.6" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-0.6.6.tgz#5a71e7f578092cc4550bb8295996e9b1d1b3f1be" + integrity sha512-1yFqyxqvfXBeNyOyBvKgL+DB/T8q0eWlFJ1/6ifCsDQ6nvgBqFWFwiRLB1Rb18q43o/1warGBTXdNb//C3jbdA== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "^0.6.6" + +"@abp/aspnetcore.mvc.ui.theme.shared@^0.6.6": + version "0.6.6" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-0.6.6.tgz#390625c457390ff399e8230c155f53c2f0bb3bcd" + integrity sha512-+qs1KoOfgbc6uKthZVVrWPyUgXQt6PXS3ugPT8IaqKVCLYRKTEOUQpOugMajnP+GZlw7toFwsN8jjk4T3AIsvQ== + dependencies: + "@abp/aspnetcore.mvc.ui" "^0.6.4" + "@abp/bootstrap" "^0.6.5" + "@abp/datatables.net-bs4" "^0.6.5" + "@abp/font-awesome" "^0.6.5" + "@abp/jquery-form" "^0.6.5" + "@abp/jquery-validation-unobtrusive" "^0.6.5" + "@abp/lodash" "^0.6.5" + "@abp/malihu-custom-scrollbar-plugin" "^0.6.5" + "@abp/select2" "^0.6.5" + "@abp/sweetalert" "^0.6.5" + "@abp/timeago" "^0.6.5" + "@abp/toastr" "^0.6.5" + +"@abp/aspnetcore.mvc.ui@^0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-0.6.4.tgz#db28bce4eaf57b28e8a4465373809976cea6b950" + integrity sha512-wPDPtrxY6sRksxrmOZE9fYLmgOD7eCTL8gugLGsp6rXZUykYAMmKhyswN3BP/Vml08RM2CvcMiz+AC3H75vldA== + dependencies: + ansi-colors "^3.2.4" + extend-object "^1.0.0" + gulp "^4.0.2" + merge-stream "^2.0.0" + path "^0.12.7" + rimraf "^2.6.3" + +"@abp/bootstrap@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-0.6.5.tgz#5aec7422c07b25410560308e949d0bb17533d2cb" + integrity sha512-vIcQG5YEpY6ojNlHUl/zPZHIYi1dMDklwW+wKB37KH1W8ZoQ5IFMDE6+fGpjdgazApR8BstH/TlleeZmk+7Qeg== + dependencies: + "@abp/core" "^0.6.5" + bootstrap "^4.1.1" + +"@abp/core@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-0.6.5.tgz#2fd6975828cd33e1092c98f20f24749b95f9c638" + integrity sha512-b2uGNSFS50AyhYYkXfrHmFcDRymWrJRiE7cY2i23K62CH6eqEtAvld6bHt6ho5NhCrQyy8ua9fUeASX0Ym8MVw== + +"@abp/datatables.net-bs4@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-0.6.5.tgz#515ec63dea5b23f1ad802bdd8d5e9d337ed9db98" + integrity sha512-1F8YnwI9/BUe+RoYYjoVDy5XAzqWVVOFtyzZy4z+IuJaHk7AwZoTvgV/5Z2l/L8x5ExxRkF0bCS6VHbM6h1TPQ== + dependencies: + "@abp/datatables.net" "^0.6.5" + datatables.net-bs4 "^1.10.16" + +"@abp/datatables.net@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-0.6.5.tgz#5c10bbd30243253dd13eb454f19401ac2f6322c0" + integrity sha512-zPuDyDzQ1mzgk3Ofh3TrHwSKa/ti5otnJanJM8W1C9hA9Dvq5xkudXApADLRJVeS3W32vRvwTCdVJlNgqu1PWQ== + dependencies: + "@abp/core" "^0.6.5" + datatables.net "^1.10.16" + +"@abp/font-awesome@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-0.6.5.tgz#9503fde1d4096493dbe6256ebfde12927786a921" + integrity sha512-SLAxH7MOFfWlTdkYpz8DG5MBAocqKzhBTI9tC3nsLw0H+QuZMT0hsnJG+bSdtGwpDQqO/Oncn6GDwl4zBOM0dA== + dependencies: + "@abp/core" "^0.6.5" + font-awesome "^4.7.0" + +"@abp/jquery-form@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-0.6.5.tgz#dd3aea1116d41b7d9111ba53c759446c50d47e84" + integrity sha512-uQJViV0PhJrMFSqigdodKffWGTHICvvb5Wvgi0QgvtsXHgVyI1gJCKkWry0xVyE/vhqneA/kzYVa2cW6mkTb6w== + dependencies: + "@abp/jquery" "^0.6.5" + jquery-form "^4.2.2" + +"@abp/jquery-validation-unobtrusive@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-0.6.5.tgz#5d00805c85abb261f67d25d3e414046393e125ed" + integrity sha512-/AJYAsEL1PSPCxPXg0zcb7xujVHvOwDm5lbjmT/pEnjO0IuEEfaCrdUnhcm9WOtb5BOM1e+B5doE+oThiDC6LQ== + dependencies: + "@abp/jquery-validation" "^0.6.5" + jquery-validation-unobtrusive "^3.2.9" + +"@abp/jquery-validation@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-0.6.5.tgz#a08591f4734a398f3776023d3930b80069acab42" + integrity sha512-afWoD2oWaF3beafWOi4YJLdATKq2I0NvVzL1/dIt9SoUleADtJBqCuvIviVRHNQmKasNhcxy5zQa3PhsiYedKQ== + dependencies: + "@abp/jquery" "^0.6.5" + jquery-validation "^1.17.0" + +"@abp/jquery@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-0.6.5.tgz#e87087ee1d8af32080fad2f6b395d3e7a0d04f77" + integrity sha512-al8i+W0nmMlHFILl8Koq2XPutP6XEbp+YcJ4F3IOTOGpNyf/FEAdTYj8famjdkr+zCluWcv0IZpU4R0mxnVINw== + dependencies: + "@abp/core" "^0.6.5" + jquery "^3.3.1" + +"@abp/lodash@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-0.6.5.tgz#227a1d7a93f8f3a642f439f64f7ac4fe12a5d8c3" + integrity sha512-Jg4tbLR8QVTwcPcgJ6kStjYLxVApNhPploJHBFECnd1uVfHGa0U8Vc+FhVv9/d0vAfpVYN/UGx3LCVT9goH39w== + dependencies: + "@abp/core" "^0.6.5" + lodash "^4.17.10" + +"@abp/malihu-custom-scrollbar-plugin@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-0.6.5.tgz#00383dd433ab0f87b80deebf271ac243e22133d1" + integrity sha512-u2r1rv4WlaaIM8S1aiHONGAO0hLqOgsauC/TLgb7JBD6H54pTcPuiIYn9C8mwJ/EThoByGE3gOxEdY+11bmy+A== + dependencies: + "@abp/core" "^0.6.5" + malihu-custom-scrollbar-plugin "^3.1.5" + +"@abp/select2@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-0.6.5.tgz#0cb45726c7beb60a69a314045b08c938c9ab6595" + integrity sha512-RKvK/jKFTAi5NRmwyjp+a09EAuaL+8AB00tyjtLqNSgy+5xZVwPxCnUmaNaPm1j0UcXz26b0NQbHt5gYedjG7Q== + dependencies: + "@abp/core" "^0.6.5" + select2 "^4.0.5" + +"@abp/sweetalert@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-0.6.5.tgz#777389e788f46060102c4b1b398d2b072ba6d16b" + integrity sha512-WXjIMrGWoi6Y9FHTO09OW0aGh7YfkPJDTaFj2nS7shgfTVNHLe4HWUIQDRCVhW0wDtqvJYEs+Ue6qfRXGX7Zjw== + dependencies: + "@abp/core" "^0.6.5" + sweetalert "^2.1.0" + +"@abp/timeago@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-0.6.5.tgz#6c38b33ab7b921307361e3851fe30f3721f8f055" + integrity sha512-kiUK//0kVgXEYdxaXAkPmhR0cNipMvlUmgpG9S+3hHTSaX6QtJMa+GeCNlIbsRy2f6QrHMWvOfDTS+z7onQmqw== + dependencies: + "@abp/jquery" "^0.6.5" + timeago "^1.6.3" + +"@abp/toastr@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-0.6.5.tgz#5ab6e8dbb7927f85e594aa5019db67fb3ad31dc1" + integrity sha512-TECl7yNsrOwEOV6O1aJ3HtXdbVnF5WrZ7hkFyM0AOfIy5vO5He57Wm3IxeRDyuYXai2BBxJa9fYD+REQhByNmw== + dependencies: + "@abp/jquery" "^0.6.5" + toastr "^2.1.4" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +almond@~0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/almond/-/almond-0.3.3.tgz#a0e7c95ac7624d6417b4494b1e68bff693168a20" + +ansi-colors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== + dependencies: + ansi-wrap "^0.1.0" + +ansi-colors@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + dependencies: + ansi-wrap "0.1.0" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +append-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= + dependencies: + buffer-equal "^1.0.0" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + +arr-filter@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" + integrity sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4= + dependencies: + make-iterator "^1.0.0" + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +arr-map@^2.0.0, arr-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" + integrity sha1-Onc0X/wc814qkYJWAfnljy4kysQ= + dependencies: + make-iterator "^1.0.0" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + +array-each@^1.0.0, array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + +array-initial@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" + integrity sha1-L6dLJnOTccOUe9enrcc74zSz15U= + dependencies: + array-slice "^1.0.0" + is-number "^4.0.0" + +array-last@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" + integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== + dependencies: + is-number "^4.0.0" + +array-slice@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + +array-sort@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" + integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== + dependencies: + default-compare "^1.0.0" + get-value "^2.0.6" + kind-of "^5.0.2" + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + +async-done@^1.2.0, async-done@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" + integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.2" + process-nextick-args "^2.0.0" + stream-exhaust "^1.0.1" + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-settle@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" + integrity sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs= + dependencies: + async-done "^1.2.2" + +atob@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.0.tgz#ab2b150e51d7b122b9efc8d7340c06b6c41076bc" + +bach@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" + integrity sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA= + dependencies: + arr-filter "^1.1.1" + arr-flatten "^1.0.1" + arr-map "^2.0.0" + array-each "^1.0.0" + array-initial "^1.0.0" + array-last "^1.1.1" + async-done "^1.2.2" + async-settle "^1.0.0" + now-and-later "^2.0.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +bootstrap@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.1.1.tgz#3aec85000fa619085da8d2e4983dfd67cf2114cb" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +buffer-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + +chokidar@^2.0.0: + version "2.1.6" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" + integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chownr@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= + +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +cloneable-readable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" + integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-map@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" + integrity sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw= + dependencies: + arr-map "^2.0.2" + for-own "^1.0.0" + make-iterator "^1.0.0" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + +component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +convert-source-map@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + +copy-props@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe" + integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A== + dependencies: + each-props "^1.3.0" + is-plain-object "^2.0.1" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + integrity sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8= + dependencies: + es5-ext "^0.10.9" + +datatables.net-bs4@^1.10.16: + version "1.10.16" + resolved "https://registry.yarnpkg.com/datatables.net-bs4/-/datatables.net-bs4-1.10.16.tgz#9eee67cfa8565bd3807a603a188305f7d0e20e32" + dependencies: + datatables.net "1.10.16" + jquery ">=1.7" + +datatables.net@1.10.16, datatables.net@^1.10.16: + version "1.10.16" + resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.10.16.tgz#4b052d1082824261b68eed9d22741b711d3d2469" + dependencies: + jquery ">=1.7" + +debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +debug@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +default-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" + integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== + dependencies: + kind-of "^5.0.2" + +default-resolution@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" + integrity sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ= + +define-properties@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +each-props@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" + integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== + dependencies: + is-plain-object "^2.0.1" + object.defaults "^1.1.0" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + dependencies: + once "^1.4.0" + +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.50" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778" + integrity sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.1" + next-tick "^1.0.0" + +es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" + +es6-symbol@^3.1.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-weak-map@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + dependencies: + homedir-polyfill "^1.0.1" + +extend-object@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/extend-object/-/extend-object-1.0.0.tgz#42514f84015d1356caf5187969dfb2bc1bda0823" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fancy-log@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" + integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + parse-node-version "^1.0.0" + time-stamp "^1.0.0" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +findup-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + dependencies: + detect-file "^1.0.0" + is-glob "^3.1.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +fined@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.1.0.tgz#b37dc844b76a2f5e7081e884f7c0ae344f153476" + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +flagged-respawn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.0.tgz#4e79ae9b2eb38bf86b3bb56bf3e0a56aa5fcabd7" + +flush-write-stream@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +font-awesome@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133" + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + dependencies: + for-in "^1.0.1" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + dependencies: + map-cache "^0.2.2" + +fs-minipass@^1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" + integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ== + dependencies: + minipass "^2.2.1" + +fs-mkdirp-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= + dependencies: + graceful-fs "^4.1.11" + through2 "^2.0.3" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.2.7: + version "1.2.9" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" + integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== + dependencies: + nan "^2.12.1" + node-pre-gyp "^0.12.0" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-stream@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= + dependencies: + extend "^3.0.0" + glob "^7.1.1" + glob-parent "^3.1.0" + is-negated-glob "^1.0.0" + ordered-read-streams "^1.0.0" + pumpify "^1.3.5" + readable-stream "^2.1.5" + remove-trailing-separator "^1.0.1" + to-absolute-glob "^2.0.0" + unique-stream "^2.0.2" + +glob-watcher@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.3.tgz#88a8abf1c4d131eb93928994bc4a593c2e5dd626" + integrity sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg== + dependencies: + anymatch "^2.0.0" + async-done "^1.2.0" + chokidar "^2.0.0" + is-negated-glob "^1.0.0" + just-debounce "^1.0.0" + object.defaults "^1.1.0" + +glob@^7.1.1, glob@^7.1.3: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +glogg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810" + dependencies: + sparkles "^1.0.0" + +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + +gulp-cli@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.2.0.tgz#5533126eeb7fe415a7e3e84a297d334d5cf70ebc" + integrity sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA== + dependencies: + ansi-colors "^1.0.1" + archy "^1.0.0" + array-sort "^1.0.0" + color-support "^1.1.3" + concat-stream "^1.6.0" + copy-props "^2.0.1" + fancy-log "^1.3.2" + gulplog "^1.0.0" + interpret "^1.1.0" + isobject "^3.0.1" + liftoff "^3.1.0" + matchdep "^2.0.0" + mute-stdout "^1.0.0" + pretty-hrtime "^1.0.0" + replace-homedir "^1.0.0" + semver-greatest-satisfied-range "^1.1.0" + v8flags "^3.0.1" + yargs "^7.1.0" + +gulp@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" + integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== + dependencies: + glob-watcher "^5.0.3" + gulp-cli "^2.2.0" + undertaker "^1.2.1" + vinyl-fs "^3.0.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + dependencies: + glogg "^1.0.0" + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + +iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + dependencies: + minimatch "^3.0.4" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +ini@^1.3.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +interpret@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" + integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-negated-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + +is-odd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" + dependencies: + is-number "^4.0.0" + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + dependencies: + is-unc-path "^1.0.0" + +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.0, is-utf8@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-valid-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + +jquery-form@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/jquery-form/-/jquery-form-4.2.2.tgz#9f96fb141ec9cbe0cdaf58b4d3f1dcbb009cdd52" + dependencies: + jquery ">=1.7.2" + +jquery-mousewheel@>=3.0.6, jquery-mousewheel@~3.1.13: + version "3.1.13" + resolved "https://registry.yarnpkg.com/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz#06f0335f16e353a695e7206bf50503cb523a6ee5" + +jquery-validation-unobtrusive@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.9.tgz#674bec080408c54c12a22d4234ad3904f47fd5d5" + dependencies: + jquery ">=1.8" + jquery-validation ">=1.16" + +jquery-validation@>=1.16, jquery-validation@^1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/jquery-validation/-/jquery-validation-1.17.0.tgz#ab66b6b583d7740b9bbd148993e50e8ac041f35b" + dependencies: + jquery "^1.7 || ^2.0 || ^3.1" + +jquery@>=1.12.0, jquery@>=1.2.3, jquery@>=1.7, jquery@>=1.7.2, jquery@>=1.8, "jquery@^1.7 || ^2.0 || ^3.1", jquery@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca" + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +just-debounce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" + integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0, kind-of@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + +last-run@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" + integrity sha1-RblpQsF7HHnHchmCWbqUO+v4yls= + dependencies: + default-resolution "^2.0.0" + es6-weak-map "^2.0.1" + +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + dependencies: + readable-stream "^2.0.5" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= + dependencies: + flush-write-stream "^1.0.2" + +liftoff@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" + integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== + dependencies: + extend "^3.0.0" + findup-sync "^3.0.0" + fined "^1.0.1" + flagged-respawn "^1.0.0" + is-plain-object "^2.0.4" + object.map "^1.0.0" + rechoir "^0.6.2" + resolve "^1.1.7" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +lodash@^4.17.10: + version "4.17.10" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" + +make-iterator@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" + dependencies: + kind-of "^6.0.2" + +malihu-custom-scrollbar-plugin@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.5.tgz#310cecc5e59415a1c29e9dfb5d2b6e01d66a29ef" + integrity sha1-MQzsxeWUFaHCnp37XStuAdZqKe8= + dependencies: + jquery-mousewheel ">=3.0.6" + +map-cache@^0.2.0, map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + dependencies: + object-visit "^1.0.0" + +matchdep@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" + integrity sha1-xvNINKDY28OzfCfui7yyfHd1WC4= + dependencies: + findup-sync "^2.0.0" + micromatch "^3.0.4" + resolve "^1.4.0" + stack-trace "0.0.10" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minipass@^2.2.1, minipass@^2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== + dependencies: + minipass "^2.2.1" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.0, mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +mute-stdout@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" + integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== + +nan@^2.12.1: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + +nanomatch@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-odd "^2.0.0" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +needle@^2.2.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" + integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + +next-tick@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + +node-pre-gyp@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" + integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +now-and-later@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" + integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== + dependencies: + once "^1.3.2" + +npm-bundled@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" + integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + +npm-packlist@^1.1.6: + version "1.4.1" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" + integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-keys@^1.0.11, object-keys@^1.0.12: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + dependencies: + isobject "^3.0.0" + +object.assign@^4.0.4: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.defaults@^1.0.0, object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + +object.map@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +object.pick@^1.2.0, object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + +object.reduce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" + integrity sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +ordered-read-streams@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= + dependencies: + readable-stream "^2.0.1" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +os-tmpdir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +parse-filepath@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + dependencies: + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-node-version@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + dependencies: + path-root-regex "^0.1.0" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path@^0.12.7: + version "0.12.7" + resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" + dependencies: + process "^0.11.1" + util "^0.10.3" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + +pretty-hrtime@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +process@^0.11.1: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + +promise-polyfill@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.1.0.tgz#dfa96943ea9c121fca4de9b5868cb39d3472e057" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.5: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +remove-bom-buffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== + dependencies: + is-buffer "^1.1.5" + is-utf8 "^0.2.1" + +remove-bom-stream@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= + dependencies: + remove-bom-buffer "^3.0.0" + safe-buffer "^5.1.0" + through2 "^2.0.3" + +remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= + +replace-homedir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" + integrity sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw= + dependencies: + homedir-polyfill "^1.0.1" + is-absolute "^1.0.0" + remove-trailing-separator "^1.1.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-options@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= + dependencies: + value-or-function "^3.0.0" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + +resolve@^1.1.6, resolve@^1.1.7: + version "1.7.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" + dependencies: + path-parse "^1.0.5" + +resolve@^1.10.0, resolve@^1.4.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" + integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw== + dependencies: + path-parse "^1.0.6" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + +rimraf@^2.6.1, rimraf@^2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +safe-buffer@^5.1.0, safe-buffer@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +select2@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/select2/-/select2-4.0.5.tgz#7aac50692561985b34d3b82ec55e226f8960d40a" + dependencies: + almond "~0.3.1" + jquery-mousewheel "~3.1.13" + +semver-greatest-satisfied-range@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" + integrity sha1-E+jCZYq5aRywzXEJMkAoDTb3els= + dependencies: + sver-compat "^1.5.0" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-map-resolve@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a" + dependencies: + atob "^2.0.0" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +sparkles@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" + integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + dependencies: + extend-shallow "^3.0.0" + +stack-trace@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stream-exhaust@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" + integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +sver-compat@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" + integrity sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= + dependencies: + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + +sweetalert@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sweetalert/-/sweetalert-2.1.0.tgz#d605dec840058fa8ad4a1f7c2c8c194bc72c27fa" + dependencies: + es6-object-assign "^1.1.0" + promise-polyfill "^6.0.2" + +tar@^4: + version "4.4.10" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" + integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.3.5" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + +through2-filter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" + integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through2@^2.0.3, through2@~2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + +timeago@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/timeago/-/timeago-1.6.3.tgz#162a1adae99356297df59339837d09f1b0f36465" + dependencies: + jquery ">=1.2.3" + +to-absolute-glob@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= + dependencies: + is-absolute "^1.0.0" + is-negated-glob "^1.0.0" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +to-through@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= + dependencies: + through2 "^2.0.3" + +toastr@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/toastr/-/toastr-2.1.4.tgz#8b43be64fb9d0c414871446f2db8e8ca4e95f181" + dependencies: + jquery ">=1.12.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + +undertaker-registry@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" + integrity sha1-XkvaMI5KiirlhPm5pDWaSZglzFA= + +undertaker@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.2.1.tgz#701662ff8ce358715324dfd492a4f036055dfe4b" + integrity sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA== + dependencies: + arr-flatten "^1.0.1" + arr-map "^2.0.0" + bach "^1.0.0" + collection-map "^1.0.0" + es6-weak-map "^2.0.1" + last-run "^1.1.0" + object.defaults "^1.0.0" + object.reduce "^1.0.0" + undertaker-registry "^1.0.0" + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +unique-stream@^2.0.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" + integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== + dependencies: + json-stable-stringify-without-jsonify "^1.0.1" + through2-filter "^3.0.0" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" + integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + +use@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" + dependencies: + kind-of "^6.0.2" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +v8flags@^3.0.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" + integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w== + dependencies: + homedir-polyfill "^1.0.1" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +value-or-function@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= + +vinyl-fs@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" + integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== + dependencies: + fs-mkdirp-stream "^1.0.0" + glob-stream "^6.1.0" + graceful-fs "^4.0.0" + is-valid-glob "^1.0.0" + lazystream "^1.0.0" + lead "^1.0.0" + object.assign "^4.0.4" + pumpify "^1.3.5" + readable-stream "^2.3.3" + remove-bom-buffer "^3.0.0" + remove-bom-stream "^1.2.0" + resolve-options "^1.1.0" + through2 "^2.0.0" + to-through "^2.0.0" + value-or-function "^3.0.0" + vinyl "^2.0.0" + vinyl-sourcemap "^1.1.0" + +vinyl-sourcemap@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= + dependencies: + append-buffer "^1.0.2" + convert-source-map "^1.5.0" + graceful-fs "^4.1.6" + normalize-path "^2.1.1" + now-and-later "^2.0.0" + remove-bom-buffer "^3.0.0" + vinyl "^2.0.0" + +vinyl@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" + integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + +which@^1.2.14: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +xtend@~4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +yallist@^3.0.0, yallist@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= + dependencies: + camelcase "^3.0.0" + +yargs@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi/Controllers/MyProjectNameController.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/Controllers/MyProjectNameController.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.HttpApi/Controllers/MyProjectNameController.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/Controllers/MyProjectNameController.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi/Controllers/TestController.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/Controllers/TestController.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.HttpApi/Controllers/TestController.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/Controllers/TestController.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi/Models/Test/TestModel.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/Models/Test/TestModel.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.HttpApi/Models/Test/TestModel.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/Models/Test/TestModel.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/MyCompanyName.MyProjectName.HttpApi.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/MyCompanyName.MyProjectName.HttpApi.csproj new file mode 100644 index 00000000000..58f2d0e65f1 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/MyCompanyName.MyProjectName.HttpApi.csproj @@ -0,0 +1,22 @@ + + + + + + netcoreapp2.2 + MyCompanyName.MyProjectName + + + + + + + + + + + + + + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/MyProjectNameHttpApiModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/MyProjectNameHttpApiModule.cs new file mode 100644 index 00000000000..bc3426c5f1d --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/MyProjectNameHttpApiModule.cs @@ -0,0 +1,22 @@ +using Volo.Abp.Account; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement.HttpApi; +using Volo.Abp.TenantManagement; + +namespace MyCompanyName.MyProjectName +{ + [DependsOn( + typeof(MyProjectNameApplicationContractsModule), + typeof(AbpAccountHttpApiModule), + typeof(AbpIdentityHttpApiModule), + typeof(AbpPermissionManagementHttpApiModule), + typeof(AbpTenantManagementHttpApiModule), + typeof(AbpFeatureManagementHttpApiModule) + )] + public class MyProjectNameHttpApiModule : AbpModule + { + + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj new file mode 100644 index 00000000000..a13d76c3c1c --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj @@ -0,0 +1,50 @@ + + + + + + netcoreapp2.2 + InProcess + MyCompanyName.MyProjectName + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + true + true + true + true + false + + + + + + + + + + + + Always + + + Always + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs new file mode 100644 index 00000000000..a3b3bf27aaa --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs @@ -0,0 +1,146 @@ +using System; +using System.IO; +using System.Linq; +using Localization.Resources.AbpUi; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Cors; +using Microsoft.AspNetCore.DataProtection; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.DependencyInjection; +using MyCompanyName.MyProjectName.EntityFrameworkCore; +using MyCompanyName.MyProjectName.Localization; +using MyCompanyName.MyProjectName.MultiTenancy; +using StackExchange.Redis; +using Volo.Abp; +using Volo.Abp.Account.Web; +using Volo.Abp.AspNetCore.Mvc.UI; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; +using Volo.Abp.Auditing; +using Volo.Abp.Autofac; +using Volo.Abp.BackgroundJobs; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.UI.Navigation.Urls; +using Volo.Abp.UI; +using Volo.Abp.VirtualFileSystem; + +namespace MyCompanyName.MyProjectName +{ + [DependsOn( + typeof(AbpAutofacModule), + typeof(AbpAccountWebIdentityServerModule), + typeof(AbpAspNetCoreMvcUiBasicThemeModule), + typeof(MyProjectNameEntityFrameworkCoreDbMigrationsModule) + )] + public class MyProjectNameIdentityServerModule : AbpModule + { + private const string DefaultCorsPolicyName = "Default"; + + public override void ConfigureServices(ServiceConfigurationContext context) + { + var hostingEnvironment = context.Services.GetHostingEnvironment(); + var configuration = context.Services.GetConfiguration(); + + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes( + typeof(AbpUiResource) + ); + + options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština")); + options.Languages.Add(new LanguageInfo("en", "en", "English")); + options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português")); + options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe")); + options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); + }); + + Configure(options => + { + //options.IsEnabledForGetRequests = true; + options.ApplicationName = "AuthServer"; + }); + + if (hostingEnvironment.IsDevelopment()) + { + Configure(options => + { + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Domain.Shared")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Domain")); + // + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.UI", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI.Bootstrap", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}modules{0}account{0}src{0}Volo.Abp.Account.Web", Path.DirectorySeparatorChar))); + // + }); + } + + Configure(options => + { + options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"]; + }); + + Configure(options => + { + options.IsJobExecutionEnabled = false; + }); + + context.Services.AddStackExchangeRedisCache(options => + { + options.Configuration = configuration["Redis:Configuration"]; + }); + + if (!hostingEnvironment.IsDevelopment()) + { + var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]); + context.Services + .AddDataProtection() + .PersistKeysToStackExchangeRedis(redis, "MyProjectName-Protection-Keys"); + } + + context.Services.AddCors(options => + { + options.AddPolicy(DefaultCorsPolicyName, builder => + { + builder + .WithOrigins( + configuration["App:CorsOrigins"] + .Split(",", StringSplitOptions.RemoveEmptyEntries) + .Select(o => o.RemovePostFix("/")) + .ToArray() + ) + .WithAbpExposedHeaders() + .SetIsOriginAllowedToAllowWildcardSubdomains() + .AllowAnyHeader() + .AllowAnyMethod() + .AllowCredentials(); + }); + }); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var app = context.GetApplicationBuilder(); + + app.UseCors(DefaultCorsPolicyName); + + app.UseCorrelationId(); + app.UseVirtualFiles(); + app.UseAuthentication(); + if (MultiTenancyConsts.IsEnabled) + { + app.UseMultiTenancy(); + } + app.UseIdentityServer(); + app.UseAbpRequestLocalization(); + app.UseAuditing(); + app.UseMvcWithDefaultRouteAndArea(); + } + } +} diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/Pages/Index.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Pages/Index.cshtml similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/Pages/Index.cshtml rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Pages/Index.cshtml diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/Pages/Index.cshtml.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Pages/Index.cshtml.cs similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/Pages/Index.cshtml.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Pages/Index.cshtml.cs diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/Pages/_ViewImports.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Pages/_ViewImports.cshtml similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/Pages/_ViewImports.cshtml rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Pages/_ViewImports.cshtml diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/Program.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Program.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/Program.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Program.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/Properties/launchSettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Properties/launchSettings.json similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/Properties/launchSettings.json rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Properties/launchSettings.json diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/Startup.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Startup.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/Startup.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Startup.cs diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/abp.resourcemapping.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/abp.resourcemapping.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/abp.resourcemapping.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/abp.resourcemapping.js diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/appsettings.Development.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/appsettings.Development.json new file mode 100644 index 00000000000..2c63c085104 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/appsettings.Development.json @@ -0,0 +1,2 @@ +{ +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/appsettings.json new file mode 100644 index 00000000000..45f23d78957 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/appsettings.json @@ -0,0 +1,12 @@ +{ + "App": { + "SelfUrl": "https://localhost:44301", + "CorsOrigins": "https://*.MyProjectName.com,http://localhost:4200" + }, + "ConnectionStrings": { + "Default": "Server=localhost;Database=MyProjectName;Trusted_Connection=True;MultipleActiveResultSets=true" + }, + "Redis": { + "Configuration": "127.0.0.1" + } +} diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/gulpfile.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/gulpfile.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/gulpfile.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/gulpfile.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/package.json rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/tempkey.rsa b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/tempkey.rsa similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/tempkey.rsa rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/tempkey.rsa diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/abp/core/abp.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/core/abp.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/abp/core/abp.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/core/abp.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/abp/core/abp.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/core/abp.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/abp/core/abp.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/core/abp.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/abp/jquery/abp.jquery.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/jquery/abp.jquery.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/abp/jquery/abp.jquery.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/jquery/abp.jquery.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/bootstrap/css/bootstrap.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/bootstrap/css/bootstrap.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/bootstrap/css/bootstrap.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/bootstrap/css/bootstrap.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/bootstrap/js/bootstrap.bundle.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/bootstrap/js/bootstrap.bundle.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/bootstrap/js/bootstrap.bundle.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/bootstrap/js/bootstrap.bundle.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/datatables.net/js/jquery.dataTables.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/datatables.net/js/jquery.dataTables.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/datatables.net/js/jquery.dataTables.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/datatables.net/js/jquery.dataTables.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/font-awesome/css/font-awesome.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/css/font-awesome.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/font-awesome/css/font-awesome.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/css/font-awesome.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/font-awesome/fonts/FontAwesome.otf b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/FontAwesome.otf similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/font-awesome/fonts/FontAwesome.otf rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/FontAwesome.otf diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2 b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2 similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2 rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2 diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-form/jquery.form.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-form/jquery.form.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-form/jquery.form.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-form/jquery.form.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/jquery.validate.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/jquery.validate.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/jquery.validate.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/jquery.validate.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ar.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ar.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ar.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ar.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ar.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ar.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ar.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ar.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_az.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_az.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_az.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_az.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_az.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_az.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_az.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_az.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bg.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bg.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bg.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bg.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bg.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bg.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bg.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bg.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bn_BD.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bn_BD.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bn_BD.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bn_BD.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ca.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ca.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ca.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ca.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ca.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ca.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ca.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ca.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_cs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_cs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_cs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_cs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_cs.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_cs.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_cs.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_cs.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_da.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_da.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_da.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_da.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_da.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_da.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_da.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_da.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_de.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_de.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_de.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_de.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_de.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_de.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_de.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_de.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_el.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_el.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_el.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_el.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_el.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_el.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_el.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_el.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_es.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_es.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_es_AR.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_AR.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_es_AR.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_AR.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_AR.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_AR.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_AR.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_AR.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_es_PE.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_PE.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_es_PE.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_PE.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_PE.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_PE.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_PE.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_PE.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_et.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_et.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_et.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_et.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_et.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_et.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_et.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_et.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_eu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_eu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_eu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_eu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_eu.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_eu.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_eu.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_eu.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fa.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fa.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fa.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fa.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fa.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fa.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fa.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fa.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_fi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_fi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fi.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fi.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fi.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fi.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fr.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fr.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fr.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fr.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ge.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ge.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ge.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ge.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ge.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ge.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ge.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ge.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_gl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_gl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_gl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_gl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_gl.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_gl.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_gl.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_gl.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_he.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_he.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_he.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_he.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_he.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_he.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_he.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_he.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_hr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_hr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hr.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hr.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hr.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hr.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_hu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_hu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hu.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hu.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hu.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hu.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hy_AM.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hy_AM.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hy_AM.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hy_AM.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_id.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_id.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_id.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_id.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_id.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_id.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_id.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_id.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_is.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_is.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_is.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_is.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_is.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_is.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_is.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_is.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_it.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_it.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_it.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_it.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_it.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_it.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_it.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_it.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ja.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ja.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ja.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ja.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ja.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ja.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ja.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ja.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ka.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ka.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ka.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ka.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ka.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ka.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ka.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ka.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_kk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_kk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_kk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_kk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_kk.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_kk.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_kk.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_kk.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ko.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ko.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ko.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ko.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ko.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ko.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ko.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ko.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_lt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_lt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lt.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lt.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lt.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lt.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_lv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_lv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lv.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lv.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lv.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lv.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_mk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_mk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_mk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_mk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_mk.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_mk.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_mk.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_mk.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_my.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_my.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_my.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_my.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_my.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_my.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_my.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_my.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_nl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_nl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_nl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_nl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_nl.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_nl.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_nl.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_nl.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_no.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_no.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_no.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_no.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_no.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_no.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_no.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_no.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pl.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pl.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pl.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pl.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_BR.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_BR.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_BR.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_BR.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_PT.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_PT.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_PT.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_PT.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ro.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ro.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ro.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ro.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ro.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ro.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ro.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ro.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ru.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ru.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ru.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ru.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ru.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ru.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ru.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ru.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_sd.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sd.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_sd.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sd.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sd.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sd.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sd.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sd.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_si.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_si.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_si.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_si.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_si.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_si.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_si.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_si.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sk.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sk.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sk.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sk.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_sl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_sl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sl.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sl.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sl.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sl.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_sr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_sr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr_lat.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr_lat.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr_lat.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr_lat.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sv.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sv.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sv.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sv.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_th.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_th.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_th.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_th.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_th.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_th.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_th.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_th.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_tj.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tj.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_tj.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tj.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tj.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tj.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tj.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tj.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tr.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tr.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tr.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tr.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_uk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_uk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_uk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_uk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_uk.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_uk.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_uk.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_uk.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ur.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ur.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_ur.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ur.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ur.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ur.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ur.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ur.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_vi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_vi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_vi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_vi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_vi.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_vi.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_vi.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_vi.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh_TW.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh_TW.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh_TW.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh_TW.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/methods_de.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_de.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/methods_de.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_de.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_de.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_de.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_de.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_de.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/methods_es_CL.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_es_CL.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/methods_es_CL.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_es_CL.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_es_CL.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_es_CL.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_es_CL.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_es_CL.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/methods_fi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_fi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/methods_fi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_fi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_fi.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_fi.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_fi.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_fi.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_it.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_it.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_it.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_it.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_it.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_it.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_it.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_it.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/methods_nl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_nl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/methods_nl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_nl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_nl.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_nl.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_nl.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_nl.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/methods_pt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_pt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/jquery-validation/localization/methods_pt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_pt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_pt.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_pt.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_pt.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_pt.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery/jquery.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery/jquery.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery/jquery.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery/jquery.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/lodash/lodash.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/lodash/lodash.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/lodash/lodash.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/lodash/lodash.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/css/select2.min.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/css/select2.min.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/css/select2.min.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/css/select2.min.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/af.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/af.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/af.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/af.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ar.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ar.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ar.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ar.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/az.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/az.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/az.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/az.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/bg.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/bg.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/bg.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/bg.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/bn.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/bn.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/bn.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/bn.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/bs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/bs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/bs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/bs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ca.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ca.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ca.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ca.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/cs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/cs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/cs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/cs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/da.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/da.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/da.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/da.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/de.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/de.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/de.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/de.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/dsb.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/dsb.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/dsb.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/dsb.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/el.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/el.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/el.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/el.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/en.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/en.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/en.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/en.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/es.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/es.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/es.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/es.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/et.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/et.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/et.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/et.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/eu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/eu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/eu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/eu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/fa.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/fa.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/fa.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/fa.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/fi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/fi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/fi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/fi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/fr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/fr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/fr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/fr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/gl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/gl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/gl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/gl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/he.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/he.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/he.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/he.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hsb.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hsb.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hsb.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hsb.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hy.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hy.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hy.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/hy.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/id.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/id.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/id.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/id.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/is.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/is.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/is.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/is.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/it.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/it.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/it.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/it.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ja.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ja.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ja.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ja.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ka.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ka.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ka.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ka.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/km.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/km.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/km.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/km.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ko.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ko.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ko.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ko.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/lt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/lt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/lt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/lt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/lv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/lv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/lv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/lv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/mk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/mk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/mk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/mk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ms.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ms.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ms.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ms.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/nb.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/nb.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/nb.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/nb.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ne.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ne.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ne.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ne.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/nl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/nl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/nl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/nl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/pl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/pl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/pl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/pl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ps.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ps.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ps.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ps.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/pt-BR.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/pt-BR.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/pt-BR.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/pt-BR.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/pt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/pt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/pt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/pt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ro.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ro.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ro.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ro.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ru.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ru.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ru.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/ru.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sq.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sq.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sq.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sq.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sr-Cyrl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sr-Cyrl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sr-Cyrl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sr-Cyrl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/sv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/th.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/th.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/th.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/th.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/tk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/tk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/tk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/tk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/tr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/tr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/tr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/tr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/uk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/uk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/uk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/uk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/vi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/vi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/vi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/vi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/zh-CN.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/zh-CN.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/zh-CN.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/zh-CN.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/zh-TW.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/zh-TW.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/zh-TW.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/i18n/zh-TW.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/select2.full.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/select2.full.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/select2.full.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/select2.full.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/select2.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/select2.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/select2.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/select2.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/sweetalert/sweetalert.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/sweetalert/sweetalert.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/sweetalert/sweetalert.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/sweetalert/sweetalert.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/jquery.timeago.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/jquery.timeago.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/jquery.timeago.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/jquery.timeago.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/README.md b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/README.md similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/README.md rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/README.md diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.af.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.af.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.af.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.af.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.am.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.am.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.am.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.am.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.ar.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ar.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.ar.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ar.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.az.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.az.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.az.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.az.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.be.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.be.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.be.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.be.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.bg.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.bg.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.bg.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.bg.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.bs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.bs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.bs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.bs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.ca.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ca.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.ca.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ca.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.cs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.cs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.cs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.cs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.cy.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.cy.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.cy.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.cy.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.da.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.da.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.da.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.da.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.de.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.de.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.de.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.de.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.dv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.dv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.dv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.dv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.el.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.el.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.el.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.el.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.en.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.en.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.en.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.en.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.es.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.es.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.es.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.es.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.et.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.et.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.et.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.et.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.eu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.eu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.eu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.eu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fa.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fa.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fa.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fa.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.fi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.fi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.fr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.fr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.gl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.gl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.gl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.gl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.he.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.he.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.he.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.he.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.hr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.hr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.hu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.hu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.hy.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hy.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.hy.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hy.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.id.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.id.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.id.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.id.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.is.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.is.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.is.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.is.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.it.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.it.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.it.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.it.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.ja.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ja.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.ja.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ja.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.jv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.jv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.jv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.jv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.ko.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ko.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.ko.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ko.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.ky.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ky.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.ky.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ky.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.lt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.lt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.lt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.lt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.lv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.lv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.lv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.lv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.mk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.mk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.mk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.mk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.nl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.nl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.nl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.nl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.no.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.no.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.no.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.no.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.pl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.pl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.ro.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ro.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.ro.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ro.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.rs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.rs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.rs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.rs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.ru.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ru.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.ru.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ru.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.rw.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.rw.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.rw.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.rw.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.si.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.si.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.si.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.si.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.sk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.sk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.sl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.sl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.sq.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sq.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.sq.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sq.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.sr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.sr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.sv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.sv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.th.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.th.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.th.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.th.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.tr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.tr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.tr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.tr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.uk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.uk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.uk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.uk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.ur.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ur.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.ur.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ur.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.uz.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.uz.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/timeago/locales/jquery.timeago.uz.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.uz.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.vi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.vi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.vi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.vi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/toastr/toastr.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/toastr/toastr.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/toastr/toastr.js.map b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.js.map similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/toastr/toastr.js.map rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.js.map diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/toastr/toastr.min.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.min.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/toastr/toastr.min.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.min.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/toastr/toastr.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/toastr/toastr.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MyProjectNameMongoDbContext.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MyProjectNameMongoDbContext.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MyProjectNameMongoDbContext.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MyProjectNameMongoDbContext.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MyProjectNameMongoDbModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MyProjectNameMongoDbModule.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MyProjectNameMongoDbModule.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MyProjectNameMongoDbModule.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj new file mode 100644 index 00000000000..3012d981d0a --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj @@ -0,0 +1,22 @@ + + + + + + netcoreapp2.2 + MyCompanyName.MyProjectName + + + + + + + + + + + + + + + diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Menus/MyProjectNameMenuContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Menus/MyProjectNameMenuContributor.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Menus/MyProjectNameMenuContributor.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Menus/MyProjectNameMenuContributor.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj new file mode 100644 index 00000000000..4237e34c79b --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj @@ -0,0 +1,57 @@ + + + + + + netcoreapp2.2 + InProcess + MyCompanyName.MyProjectName.Web + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + true + true + true + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Always + + + Always + + + + diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameBrandingProvider.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameBrandingProvider.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameBrandingProvider.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameBrandingProvider.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebAutoMapperProfile.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebAutoMapperProfile.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebAutoMapperProfile.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebAutoMapperProfile.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs new file mode 100644 index 00000000000..97a8914c014 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs @@ -0,0 +1,238 @@ +using System; +using System.IO; +using Microsoft.AspNetCore.Authentication.OAuth.Claims; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.DataProtection; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.IdentityModel.Protocols.OpenIdConnect; +using MyCompanyName.MyProjectName.Localization; +using MyCompanyName.MyProjectName.MultiTenancy; +using MyCompanyName.MyProjectName.Web.Menus; +using StackExchange.Redis; +using Swashbuckle.AspNetCore.Swagger; +using Volo.Abp; +using Volo.Abp.AspNetCore.Authentication.OAuth; +using Volo.Abp.AspNetCore.Mvc.Client; +using Volo.Abp.AspNetCore.Mvc.Localization; +using Volo.Abp.AspNetCore.Mvc.UI; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; +using Volo.Abp.Autofac; +using Volo.Abp.AutoMapper; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Http.Client.IdentityModel; +using Volo.Abp.Identity.Web; +using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; +using Volo.Abp.PermissionManagement.Web; +using Volo.Abp.TenantManagement.Web; +using Volo.Abp.UI.Navigation.Urls; +using Volo.Abp.UI; +using Volo.Abp.UI.Navigation; +using Volo.Abp.VirtualFileSystem; + +namespace MyCompanyName.MyProjectName.Web +{ + [DependsOn( + typeof(MyProjectNameHttpApiModule), + typeof(MyProjectNameHttpApiClientModule), + typeof(AbpAspNetCoreAuthenticationOAuthModule), + typeof(AbpAspNetCoreMvcClientModule), + typeof(AbpAspNetCoreMvcUiBasicThemeModule), + typeof(AbpAutofacModule), + typeof(AbpFeatureManagementWebModule), + typeof(AbpHttpClientIdentityModelModule), + typeof(AbpIdentityWebModule), + typeof(AbpTenantManagementWebModule) + )] + public class MyProjectNameWebModule : AbpModule + { + public override void PreConfigureServices(ServiceConfigurationContext context) + { + context.Services.PreConfigure(options => + { + options.AddAssemblyResource( + typeof(MyProjectNameResource), + typeof(MyProjectNameDomainSharedModule).Assembly, + typeof(MyProjectNameApplicationContractsModule).Assembly, + typeof(MyProjectNameWebModule).Assembly + ); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + var hostingEnvironment = context.Services.GetHostingEnvironment(); + var configuration = context.Services.GetConfiguration(); + + ConfigureUrls(configuration); + ConfigureAuthentication(context, configuration); + ConfigureAutoMapper(); + ConfigureVirtualFileSystem(hostingEnvironment); + ConfigureNavigationServices(); + ConfigureSwaggerServices(context.Services); + ConfigureMultiTenancy(); + } + + private void ConfigureUrls(IConfigurationRoot configuration) + { + Configure(options => + { + options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"]; + }); + } + + private void ConfigureMultiTenancy() + { + Configure(options => + { + options.IsEnabled = MultiTenancyConsts.IsEnabled; + }); + } + + private void ConfigureAuthentication(ServiceConfigurationContext context, IConfigurationRoot configuration) + { + context.Services.AddAuthentication(options => + { + options.DefaultScheme = "Cookies"; + options.DefaultChallengeScheme = "oidc"; + }) + .AddCookie("Cookies", options => + { + options.Cookie.Expiration = TimeSpan.FromDays(365); + options.ExpireTimeSpan = TimeSpan.FromDays(365); + }) + .AddOpenIdConnect("oidc", options => + { + options.Authority = configuration["AuthServer:Authority"]; + options.RequireHttpsMetadata = true; + options.ResponseType = OpenIdConnectResponseType.CodeIdToken; + + options.ClientId = configuration["AuthServer:ClientId"]; + options.ClientSecret = configuration["AuthServer:ClientSecret"]; + + options.SaveTokens = true; + options.GetClaimsFromUserInfoEndpoint = true; + + options.Scope.Add("role"); + options.Scope.Add("email"); + options.Scope.Add("phone"); + options.Scope.Add("MyProjectName"); + + options.ClaimActions.MapAbpClaimTypes(); + }); + } + + private void ConfigureAutoMapper() + { + Configure(options => + { + /* use `true` for the `validate` parameter if you want to + * validate the profile on application startup. + * See http://docs.automapper.org/en/stable/Configuration-validation.html for more + * about configuration validation. + */ + options.AddProfile(); + }); + } + + private void ConfigureVirtualFileSystem(IHostingEnvironment hostingEnvironment) + { + if (hostingEnvironment.IsDevelopment()) + { + Configure(options => + { + // + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.UI", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI.Bootstrap", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}modules{0}permission-management{0}src{0}Volo.Abp.PermissionManagement.Web", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}modules{0}identity{0}src{0}Volo.Abp.Identity.Web", Path.DirectorySeparatorChar))); + // + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Domain")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Application.Contracts")); + options.FileSets.ReplaceEmbeddedByPhysical(hostingEnvironment.ContentRootPath); + }); + } + } + + private void ConfigureNavigationServices() + { + Configure(options => + { + options.MenuContributors.Add(new MyProjectNameMenuContributor()); + }); + } + + private void ConfigureSwaggerServices(IServiceCollection services) + { + services.AddSwaggerGen( + options => + { + options.SwaggerDoc("v1", new Info { Title = "MyProjectName API", Version = "v1" }); + options.DocInclusionPredicate((docName, description) => true); + options.CustomSchemaIds(type => type.FullName); + } + ); + } + + private void ConfigureRedis( + ServiceConfigurationContext context, + IConfigurationRoot configuration, + IHostingEnvironment hostingEnvironment) + { + context.Services.AddStackExchangeRedisCache(options => + { + options.Configuration = configuration["Redis:Configuration"]; + }); + + if (!hostingEnvironment.IsDevelopment()) + { + var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]); + context.Services + .AddDataProtection() + .PersistKeysToStackExchangeRedis(redis, "MyProjectName-Protection-Keys"); + } + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var app = context.GetApplicationBuilder(); + var env = context.GetEnvironment(); + + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + else + { + app.UseErrorPage(); + } + + app.UseVirtualFiles(); + app.UseAuthentication(); + + if (MultiTenancyConsts.IsEnabled) + { + app.UseMultiTenancy(); + } + + app.UseAbpRequestLocalization(); + + app.UseSwagger(); + app.UseSwaggerUI(options => + { + options.SwaggerEndpoint("/swagger/v1/swagger.json", "MyProjectName API"); + }); + + app.UseAuditing(); + + app.UseMvcWithDefaultRouteAndArea(); + } + } +} diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.css similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.css diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Pages/MyProjectNamePage.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/MyProjectNamePage.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Pages/MyProjectNamePage.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/MyProjectNamePage.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Pages/MyProjectNamePageModel.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/MyProjectNamePageModel.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Pages/MyProjectNamePageModel.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/MyProjectNamePageModel.cs diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/Pages/_ViewImports.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/_ViewImports.cshtml similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/Pages/_ViewImports.cshtml rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/_ViewImports.cshtml diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Program.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Program.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Program.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Program.cs diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/Properties/launchSettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Properties/launchSettings.json similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/Properties/launchSettings.json rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Properties/launchSettings.json diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Startup.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Startup.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/Startup.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Startup.cs diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/Views/_ViewImports.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Views/_ViewImports.cshtml similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/Views/_ViewImports.cshtml rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Views/_ViewImports.cshtml diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/abp.resourcemapping.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/abp.resourcemapping.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/abp.resourcemapping.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/abp.resourcemapping.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/appsettings.Development.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/appsettings.Development.json similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/appsettings.Development.json rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/appsettings.Development.json diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/appsettings.json new file mode 100644 index 00000000000..e9330b776ee --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/appsettings.json @@ -0,0 +1,18 @@ +{ + "App": { + "SelfUrl": "https://localhost:44302" + }, + "RemoteServices": { + "Default": { + "BaseUrl": "https://localhost:44300/" + } + }, + "Redis": { + "Configuration": "127.0.0.1" + }, + "AuthServer": { + "Authority": "https://localhost:44301", + "ClientId": "MyProjectName_Web", + "ClientSecret": "1q2w3e*" + } +} diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/gulpfile.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/gulpfile.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/gulpfile.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/gulpfile.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/package.json rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/core/abp.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/core/abp.css similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/core/abp.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/core/abp.css diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/core/abp.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/core/abp.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/core/abp.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/core/abp.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/jquery/abp.jquery.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/jquery/abp.jquery.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/jquery/abp.jquery.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/jquery/abp.jquery.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/bootstrap/css/bootstrap.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/bootstrap/css/bootstrap.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/bootstrap/css/bootstrap.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/bootstrap/css/bootstrap.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/bootstrap/js/bootstrap.bundle.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/bootstrap/js/bootstrap.bundle.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/bootstrap/js/bootstrap.bundle.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/bootstrap/js/bootstrap.bundle.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/datatables.net/js/jquery.dataTables.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/datatables.net/js/jquery.dataTables.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/datatables.net/js/jquery.dataTables.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/datatables.net/js/jquery.dataTables.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/css/font-awesome.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/css/font-awesome.css similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/css/font-awesome.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/css/font-awesome.css diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/FontAwesome.otf b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/FontAwesome.otf similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/FontAwesome.otf rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/FontAwesome.otf diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2 b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2 similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2 rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2 diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-form/jquery.form.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-form/jquery.form.min.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-form/jquery.form.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-form/jquery.form.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/jquery.validate.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/jquery.validate.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/jquery.validate.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/jquery.validate.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ar.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ar.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ar.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ar.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ar.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ar.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ar.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ar.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_az.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_az.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_az.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_az.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_az.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_az.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_az.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_az.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_bg.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_bg.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_bg.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_bg.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_bg.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_bg.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_bg.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_bg.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_bn_BD.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_bn_BD.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_bn_BD.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_bn_BD.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ca.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ca.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ca.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ca.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ca.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ca.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ca.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ca.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_cs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_cs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_cs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_cs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_cs.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_cs.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_cs.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_cs.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_da.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_da.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_da.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_da.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_da.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_da.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_da.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_da.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_de.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_de.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_de.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_de.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_de.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_de.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_de.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_de.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_el.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_el.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_el.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_el.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_el.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_el.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_el.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_el.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_AR.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es_AR.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_AR.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es_AR.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es_AR.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es_AR.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es_AR.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es_AR.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_PE.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es_PE.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_es_PE.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es_PE.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es_PE.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es_PE.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es_PE.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_es_PE.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_et.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_et.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_et.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_et.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_et.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_et.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_et.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_et.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_eu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_eu.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_eu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_eu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_eu.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_eu.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_eu.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_eu.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fa.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fa.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fa.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fa.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fa.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fa.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fa.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fa.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fi.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_fi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fi.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fi.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fi.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fi.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fr.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fr.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fr.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_fr.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ge.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ge.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ge.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ge.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ge.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ge.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ge.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ge.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_gl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_gl.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_gl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_gl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_gl.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_gl.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_gl.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_gl.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_he.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_he.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_he.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_he.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_he.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_he.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_he.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_he.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hr.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hr.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hr.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hr.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hr.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hu.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hu.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hu.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hu.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hu.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hy_AM.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hy_AM.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hy_AM.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_hy_AM.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_id.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_id.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_id.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_id.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_id.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_id.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_id.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_id.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_is.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_is.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_is.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_is.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_is.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_is.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_is.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_is.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_it.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_it.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_it.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_it.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_it.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_it.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_it.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_it.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ja.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ja.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ja.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ja.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ja.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ja.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ja.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ja.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ka.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ka.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ka.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ka.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ka.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ka.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ka.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ka.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_kk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_kk.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_kk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_kk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_kk.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_kk.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_kk.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_kk.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ko.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ko.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ko.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ko.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ko.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ko.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ko.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ko.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_lt.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_lt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_lt.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_lt.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_lt.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_lt.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_lv.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_lv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_lv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_lv.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_lv.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_lv.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_lv.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_mk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_mk.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_mk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_mk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_mk.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_mk.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_mk.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_mk.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_my.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_my.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_my.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_my.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_my.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_my.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_my.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_my.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_nl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_nl.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_nl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_nl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_nl.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_nl.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_nl.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_nl.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_no.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_no.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_no.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_no.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_no.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_no.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_no.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_no.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pl.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pl.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pl.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pl.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pt_BR.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pt_BR.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pt_BR.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pt_BR.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pt_PT.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pt_PT.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pt_PT.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_pt_PT.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ro.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ro.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ro.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ro.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ro.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ro.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ro.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ro.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ru.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ru.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ru.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ru.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ru.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ru.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ru.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ru.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sd.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sd.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sd.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sd.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sd.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sd.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sd.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sd.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_si.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_si.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_si.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_si.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_si.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_si.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_si.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_si.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sk.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sk.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sk.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sk.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sl.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sl.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sl.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sl.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sl.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sr.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sr.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sr.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sr.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sr.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sr_lat.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sr_lat.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sr_lat.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sr_lat.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sv.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sv.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sv.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_sv.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_th.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_th.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_th.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_th.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_th.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_th.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_th.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_th.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tj.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_tj.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_tj.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_tj.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_tj.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_tj.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_tj.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_tj.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_tr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_tr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_tr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_tr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_tr.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_tr.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_tr.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_tr.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_uk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_uk.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_uk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_uk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_uk.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_uk.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_uk.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_uk.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ur.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ur.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_ur.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ur.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ur.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ur.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ur.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_ur.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_vi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_vi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_vi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_vi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_vi.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_vi.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_vi.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_vi.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_zh.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_zh.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_zh.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_zh.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_zh.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_zh.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_zh.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_zh.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_zh_TW.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_zh_TW.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_zh_TW.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/messages_zh_TW.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_de.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_de.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_de.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_de.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_de.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_de.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_de.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_de.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_es_CL.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_es_CL.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_es_CL.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_es_CL.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_es_CL.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_es_CL.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_es_CL.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_es_CL.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_fi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_fi.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_fi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_fi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_fi.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_fi.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_fi.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_fi.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_it.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_it.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_it.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_it.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_it.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_it.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_it.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_it.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_nl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_nl.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_nl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_nl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_nl.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_nl.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_nl.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_nl.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_pt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_pt.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/jquery-validation/localization/methods_pt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_pt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_pt.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_pt.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_pt.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery-validation/localization/methods_pt.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery/jquery.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery/jquery.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery/jquery.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/jquery/jquery.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/lodash/lodash.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/lodash/lodash.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/lodash/lodash.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/lodash/lodash.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/css/select2.min.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/css/select2.min.css similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/css/select2.min.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/css/select2.min.css diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/af.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/af.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/af.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/af.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ar.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ar.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ar.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ar.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/az.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/az.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/az.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/az.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/bg.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/bg.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/bg.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/bg.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/bn.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/bn.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/bn.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/bn.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/bs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/bs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/bs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/bs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ca.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ca.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ca.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ca.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/cs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/cs.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/cs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/cs.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/da.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/da.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/da.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/da.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/de.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/de.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/de.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/de.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/dsb.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/dsb.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/dsb.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/dsb.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/el.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/el.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/el.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/el.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/en.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/en.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/en.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/en.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/es.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/es.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/es.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/es.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/et.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/et.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/et.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/et.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/eu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/eu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/eu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/eu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/fa.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/fa.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/fa.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/fa.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/fi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/fi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/fi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/fi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/fr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/fr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/fr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/fr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/gl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/gl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/gl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/gl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/he.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/he.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/he.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/he.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hsb.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hsb.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hsb.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hsb.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hu.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hu.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hy.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hy.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hy.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/hy.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/id.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/id.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/id.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/id.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/is.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/is.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/is.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/is.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/it.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/it.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/it.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/it.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ja.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ja.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ja.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ja.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ka.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ka.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ka.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ka.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/km.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/km.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/km.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/km.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ko.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ko.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ko.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ko.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/lt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/lt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/lt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/lt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/lv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/lv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/lv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/lv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/mk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/mk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/mk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/mk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ms.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ms.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ms.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ms.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/nb.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/nb.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/nb.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/nb.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ne.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ne.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ne.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ne.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/nl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/nl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/nl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/nl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/pl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/pl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/pl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/pl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ps.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ps.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ps.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ps.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/pt-BR.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/pt-BR.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/pt-BR.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/pt-BR.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/pt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/pt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/pt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/pt.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ro.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ro.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ro.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ro.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ru.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ru.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ru.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/ru.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sq.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sq.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sq.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sq.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sr-Cyrl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sr-Cyrl.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sr-Cyrl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sr-Cyrl.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sv.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/sv.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/th.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/th.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/th.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/th.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/tk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/tk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/tk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/tk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/tr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/tr.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/tr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/tr.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/uk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/uk.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/uk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/uk.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/vi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/vi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/vi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/vi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/zh-CN.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/zh-CN.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/zh-CN.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/zh-CN.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/zh-TW.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/zh-TW.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/zh-TW.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/i18n/zh-TW.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/select2.full.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/select2.full.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/select2.full.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/select2.full.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/select2.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/select2.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/select2.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/select2.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/sweetalert/sweetalert.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/sweetalert/sweetalert.min.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/sweetalert/sweetalert.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/sweetalert/sweetalert.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/jquery.timeago.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/jquery.timeago.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/jquery.timeago.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/jquery.timeago.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/README.md b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/README.md similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/README.md rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/README.md diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.af.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.af.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.af.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.af.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.am.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.am.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.am.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.am.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ar.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ar.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ar.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ar.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.az.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.az.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.az.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.az.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.be.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.be.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.be.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.be.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.bg.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.bg.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.bg.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.bg.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.bs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.bs.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.bs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.bs.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ca.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ca.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ca.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ca.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.cs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.cs.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.cs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.cs.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.cy.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.cy.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.cy.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.cy.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.da.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.da.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.da.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.da.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.de.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.de.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.de.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.de.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.dv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.dv.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.dv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.dv.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.el.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.el.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.el.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.el.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.en.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.en.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.en.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.en.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.es.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.es.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.es.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.es.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.et.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.et.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.et.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.et.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.eu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.eu.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.eu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.eu.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fa.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fa.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fa.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fa.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fi.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fi.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fr.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.fr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.fr.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.gl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.gl.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.gl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.gl.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.he.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.he.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.he.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.he.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.hr.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.hr.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hu.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.hu.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hu.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.hu.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hy.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.hy.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.hy.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.hy.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.id.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.id.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.id.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.id.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.is.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.is.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.is.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.is.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.it.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.it.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.it.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.it.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ja.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ja.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ja.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ja.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.jv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.jv.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.jv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.jv.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ko.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ko.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ko.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ko.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ky.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ky.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ky.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ky.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.lt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.lt.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.lt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.lt.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.lv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.lv.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.lv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.lv.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.mk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.mk.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.mk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.mk.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.nl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.nl.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.nl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.nl.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.no.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.no.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.no.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.no.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pl.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pl.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.pt.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ro.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ro.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ro.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ro.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.rs.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.rs.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.rs.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.rs.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ru.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ru.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ru.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ru.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.rw.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.rw.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.rw.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.rw.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.si.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.si.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.si.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.si.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sk.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sk.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sl.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sl.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sl.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sl.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sq.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sq.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sq.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sq.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sr.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sr.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sv.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sv.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.sv.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.sv.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.th.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.th.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.th.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.th.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.tr.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.tr.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.tr.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.tr.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.uk.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.uk.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.uk.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.uk.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ur.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ur.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.ur.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.ur.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.uz.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.uz.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/timeago/locales/jquery.timeago.uz.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.uz.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.vi.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.vi.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.vi.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.vi.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/toastr/toastr.css similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/toastr/toastr.css diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.js.map b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/toastr/toastr.js.map similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.js.map rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/toastr/toastr.js.map diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.min.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/toastr/toastr.min.css similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.min.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/toastr/toastr.min.css diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.min.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/toastr/toastr.min.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/toastr/toastr.min.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/toastr/toastr.min.js diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/Menus/MyProjectNameMenuContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Menus/MyProjectNameMenuContributor.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/Menus/MyProjectNameMenuContributor.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Menus/MyProjectNameMenuContributor.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj new file mode 100644 index 00000000000..caf3207b5cb --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj @@ -0,0 +1,56 @@ + + + + + + netcoreapp2.2 + InProcess + MyCompanyName.MyProjectName.Web + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + true + true + true + true + false + + + + + + + + + + + + Always + + + Always + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/MyProjectNameBrandingProvider.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameBrandingProvider.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/MyProjectNameBrandingProvider.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameBrandingProvider.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebAutoMapperProfile.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebAutoMapperProfile.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebAutoMapperProfile.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebAutoMapperProfile.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs new file mode 100644 index 00000000000..a5c83137dc5 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs @@ -0,0 +1,215 @@ +using System.IO; +using Localization.Resources.AbpUi; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using MyCompanyName.MyProjectName.EntityFrameworkCore; +using MyCompanyName.MyProjectName.Localization; +using MyCompanyName.MyProjectName.MultiTenancy; +using MyCompanyName.MyProjectName.Web.Menus; +using Swashbuckle.AspNetCore.Swagger; +using Volo.Abp; +using Volo.Abp.Account.Web; +using Volo.Abp.AspNetCore.Authentication.JwtBearer; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc.Localization; +using Volo.Abp.AspNetCore.Mvc.UI; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; +using Volo.Abp.Autofac; +using Volo.Abp.AutoMapper; +using Volo.Abp.Identity.Web; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement.Web; +using Volo.Abp.TenantManagement.Web; +using Volo.Abp.UI.Navigation.Urls; +using Volo.Abp.UI; +using Volo.Abp.UI.Navigation; +using Volo.Abp.VirtualFileSystem; + +namespace MyCompanyName.MyProjectName.Web +{ + [DependsOn( + typeof(MyProjectNameHttpApiModule), + typeof(MyProjectNameApplicationModule), + typeof(MyProjectNameEntityFrameworkCoreDbMigrationsModule), + typeof(AbpAutofacModule), + typeof(AbpIdentityWebModule), + typeof(AbpAccountWebIdentityServerModule), + typeof(AbpAspNetCoreMvcUiBasicThemeModule), + typeof(AbpAspNetCoreAuthenticationJwtBearerModule), + typeof(AbpTenantManagementWebModule) + )] + public class MyProjectNameWebModule : AbpModule + { + public override void PreConfigureServices(ServiceConfigurationContext context) + { + context.Services.PreConfigure(options => + { + options.AddAssemblyResource( + typeof(MyProjectNameResource), + typeof(MyProjectNameDomainModule).Assembly, + typeof(MyProjectNameDomainSharedModule).Assembly, + typeof(MyProjectNameApplicationModule).Assembly, + typeof(MyProjectNameApplicationContractsModule).Assembly, + typeof(MyProjectNameWebModule).Assembly + ); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + var hostingEnvironment = context.Services.GetHostingEnvironment(); + var configuration = context.Services.GetConfiguration(); + + ConfigureUrls(configuration); + ConfigureAuthentication(context, configuration); + ConfigureAutoMapper(); + ConfigureVirtualFileSystem(hostingEnvironment); + ConfigureLocalizationServices(); + ConfigureNavigationServices(); + ConfigureAutoApiControllers(); + ConfigureSwaggerServices(context.Services); + } + + private void ConfigureUrls(IConfigurationRoot configuration) + { + Configure(options => + { + options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"]; + }); + } + + private void ConfigureAuthentication(ServiceConfigurationContext context, IConfigurationRoot configuration) + { + context.Services.AddAuthentication() + .AddIdentityServerAuthentication(options => + { + options.Authority = configuration["AuthServer:Authority"]; + options.RequireHttpsMetadata = false; + options.ApiName = "MyProjectName"; + }); + } + + private void ConfigureAutoMapper() + { + Configure(options => + { + /* use `true` for the `validate` parameter if you want to + * validate the profile on application startup. + * See http://docs.automapper.org/en/stable/Configuration-validation.html for more + * about configuration validation. + */ + options.AddProfile(); + }); + } + + private void ConfigureVirtualFileSystem(IHostingEnvironment hostingEnvironment) + { + if (hostingEnvironment.IsDevelopment()) + { + Configure(options => + { + // + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.UI", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI.Bootstrap", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}modules{0}permission-management{0}src{0}Volo.Abp.PermissionManagement.Web", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}modules{0}identity{0}src{0}Volo.Abp.Identity.Web", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}modules{0}account{0}src{0}Volo.Abp.Account.Web", Path.DirectorySeparatorChar))); + // + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Domain.Shared")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Domain")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Application.Contracts")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Application")); + options.FileSets.ReplaceEmbeddedByPhysical(hostingEnvironment.ContentRootPath); + }); + } + } + + private void ConfigureLocalizationServices() + { + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes( + typeof(AbpUiResource) + ); + + options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština")); + options.Languages.Add(new LanguageInfo("en", "en", "English")); + options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português")); + options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe")); + options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); + }); + } + + private void ConfigureNavigationServices() + { + Configure(options => + { + options.MenuContributors.Add(new MyProjectNameMenuContributor()); + }); + } + + private void ConfigureAutoApiControllers() + { + Configure(options => + { + options.ConventionalControllers.Create(typeof(MyProjectNameApplicationModule).Assembly); + }); + } + + private void ConfigureSwaggerServices(IServiceCollection services) + { + services.AddSwaggerGen( + options => + { + options.SwaggerDoc("v1", new Info { Title = "MyProjectName API", Version = "v1" }); + options.DocInclusionPredicate((docName, description) => true); + options.CustomSchemaIds(type => type.FullName); + } + ); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var app = context.GetApplicationBuilder(); + var env = context.GetEnvironment(); + + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + else + { + app.UseErrorPage(); + } + + app.UseVirtualFiles(); + app.UseAuthentication(); + app.UseJwtTokenMiddleware(); + + if (MultiTenancyConsts.IsEnabled) + { + app.UseMultiTenancy(); + } + + app.UseIdentityServer(); + app.UseAbpRequestLocalization(); + app.UseSwagger(); + app.UseSwaggerUI(options => + { + options.SwaggerEndpoint("/swagger/v1/swagger.json", "MyProjectName API"); + }); + app.UseAuditing(); + app.UseMvcWithDefaultRouteAndArea(); + } + } +} diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/Pages/Index.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.css similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/Pages/Index.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.css diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/Pages/Index.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/Pages/Index.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.js diff --git a/templates/mvc-module/src/MyCompanyName.MyProjectName.Web/Pages/MyProjectNamePage.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/MyProjectNamePage.cs similarity index 100% rename from templates/mvc-module/src/MyCompanyName.MyProjectName.Web/Pages/MyProjectNamePage.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/MyProjectNamePage.cs diff --git a/templates/mvc-module/src/MyCompanyName.MyProjectName.Web/Pages/MyProjectNamePageModel.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/MyProjectNamePageModel.cs similarity index 100% rename from templates/mvc-module/src/MyCompanyName.MyProjectName.Web/Pages/MyProjectNamePageModel.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/MyProjectNamePageModel.cs diff --git a/templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/Pages/_ViewImports.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/_ViewImports.cshtml similarity index 100% rename from templates/mvc-module/host/MyCompanyName.MyProjectName.Web.Unified/Pages/_ViewImports.cshtml rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/_ViewImports.cshtml diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/Program.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Program.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/Program.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Program.cs diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/Properties/launchSettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Properties/launchSettings.json similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/Properties/launchSettings.json rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Properties/launchSettings.json diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/Startup.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Startup.cs similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/Startup.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Startup.cs diff --git a/templates/mvc-module/src/MyCompanyName.MyProjectName.Web/Pages/MyProjectName/_ViewImports.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Views/_ViewImports.cshtml similarity index 100% rename from templates/mvc-module/src/MyCompanyName.MyProjectName.Web/Pages/MyProjectName/_ViewImports.cshtml rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Views/_ViewImports.cshtml diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/abp.resourcemapping.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/abp.resourcemapping.js new file mode 100644 index 00000000000..122e8e926ae --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/abp.resourcemapping.js @@ -0,0 +1,8 @@ +module.exports = { + aliases: { + + }, + mappings: { + + } +}; diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/appsettings.Development.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/appsettings.Development.json new file mode 100644 index 00000000000..2c63c085104 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/appsettings.Development.json @@ -0,0 +1,2 @@ +{ +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/appsettings.json new file mode 100644 index 00000000000..828ea38e60a --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/appsettings.json @@ -0,0 +1,18 @@ +{ + "App": { + "SelfUrl": "https://localhost:44303" + }, + "ConnectionStrings": { + "Default": "Server=localhost;Database=MyProjectName;Trusted_Connection=True;MultipleActiveResultSets=true" + }, + "AuthServer": { + "Authority": "https://localhost:44301" + }, + "IdentityServer": { + "Clients": { + "MyProjectName_App": { + "ClientId": "MyProjectName_App" + } + } + } +} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/gulpfile.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/gulpfile.js new file mode 100644 index 00000000000..f7ebc78f23b --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/gulpfile.js @@ -0,0 +1,9 @@ +"use strict"; + +var gulp = require("gulp"), + path = require('path'), + copyResources = require('./node_modules/@abp/aspnetcore.mvc.ui/gulp/copy-resources.js'); + +exports.default = function(){ + return copyResources(path.resolve('./')); +}; \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json new file mode 100644 index 00000000000..91ca77a88b0 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json @@ -0,0 +1,8 @@ +{ + "version": "1.0.0", + "name": "my-app", + "private": true, + "dependencies": { + "@abp/aspnetcore.mvc.ui.theme.basic": "^0.6.6" + } +} \ No newline at end of file diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web/tempkey.rsa b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/tempkey.rsa similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web/tempkey.rsa rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/tempkey.rsa diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/core/abp.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/abp/core/abp.css similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/core/abp.css rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/abp/core/abp.css diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/core/abp.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/abp/core/abp.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/core/abp.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/abp/core/abp.js diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/jquery/abp.jquery.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/abp/jquery/abp.jquery.js similarity index 100% rename from templates/mvc/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/jquery/abp.jquery.js rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/abp/jquery/abp.jquery.js diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/bootstrap/css/bootstrap.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/bootstrap/css/bootstrap.css new file mode 100644 index 00000000000..7d43e1f1072 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/bootstrap/css/bootstrap.css @@ -0,0 +1,8981 @@ +/*! + * Bootstrap v4.1.1 (https://getbootstrap.com/) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +:root { + --blue: #007bff; + --indigo: #6610f2; + --purple: #6f42c1; + --pink: #e83e8c; + --red: #dc3545; + --orange: #fd7e14; + --yellow: #ffc107; + --green: #28a745; + --teal: #20c997; + --cyan: #17a2b8; + --white: #fff; + --gray: #6c757d; + --gray-dark: #343a40; + --primary: #007bff; + --secondary: #6c757d; + --success: #28a745; + --info: #17a2b8; + --warning: #ffc107; + --danger: #dc3545; + --light: #f8f9fa; + --dark: #343a40; + --breakpoint-xs: 0; + --breakpoint-sm: 576px; + --breakpoint-md: 768px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1200px; + --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + -ms-overflow-style: scrollbar; + -webkit-tap-highlight-color: transparent; +} + +@-ms-viewport { + width: device-width; +} + +article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { + display: block; +} + +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + text-align: left; + background-color: #fff; +} + +[tabindex="-1"]:focus { + outline: 0 !important; +} + +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} + +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: 0.5rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title], +abbr[data-original-title] { + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 700; +} + +dd { + margin-bottom: .5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +dfn { + font-style: italic; +} + +b, +strong { + font-weight: bolder; +} + +small { + font-size: 80%; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -.25em; +} + +sup { + top: -.5em; +} + +a { + color: #007bff; + text-decoration: none; + background-color: transparent; + -webkit-text-decoration-skip: objects; +} + +a:hover { + color: #0056b3; + text-decoration: underline; +} + +a:not([href]):not([tabindex]) { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([tabindex]):focus { + outline: 0; +} + +pre, +code, +kbd, +samp { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: 1em; +} + +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + -ms-overflow-style: scrollbar; +} + +figure { + margin: 0 0 1rem; +} + +img { + vertical-align: middle; + border-style: none; +} + +svg:not(:root) { + overflow: hidden; +} + +table { + border-collapse: collapse; +} + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #6c757d; + text-align: left; + caption-side: bottom; +} + +th { + text-align: inherit; +} + +label { + display: inline-block; + margin-bottom: 0.5rem; +} + +button { + border-radius: 0; +} + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +input { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + padding: 0; + border-style: none; +} + +input[type="radio"], +input[type="checkbox"] { + box-sizing: border-box; + padding: 0; +} + +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + -webkit-appearance: listbox; +} + +textarea { + overflow: auto; + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + max-width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; + color: inherit; + white-space: normal; +} + +progress { + vertical-align: baseline; +} + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +[type="search"] { + outline-offset: -2px; + -webkit-appearance: none; +} + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +summary { + display: list-item; + cursor: pointer; +} + +template { + display: none; +} + +[hidden] { + display: none !important; +} + +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + margin-bottom: 0.5rem; + font-family: inherit; + font-weight: 500; + line-height: 1.2; + color: inherit; +} + +h1, .h1 { + font-size: 2.5rem; +} + +h2, .h2 { + font-size: 2rem; +} + +h3, .h3 { + font-size: 1.75rem; +} + +h4, .h4 { + font-size: 1.5rem; +} + +h5, .h5 { + font-size: 1.25rem; +} + +h6, .h6 { + font-size: 1rem; +} + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + +.display-1 { + font-size: 6rem; + font-weight: 300; + line-height: 1.2; +} + +.display-2 { + font-size: 5.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-3 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.2; +} + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid rgba(0, 0, 0, 0.1); +} + +small, +.small { + font-size: 80%; + font-weight: 400; +} + +mark, +.mark { + padding: 0.2em; + background-color: #fcf8e3; +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} + +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} + +.initialism { + font-size: 90%; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; +} + +.blockquote-footer { + display: block; + font-size: 80%; + color: #6c757d; +} + +.blockquote-footer::before { + content: "\2014 \00A0"; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: #fff; + border: 1px solid #dee2e6; + border-radius: 0.25rem; + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 90%; + color: #6c757d; +} + +code { + font-size: 87.5%; + color: #e83e8c; + word-break: break-word; +} + +a > code { + color: inherit; +} + +kbd { + padding: 0.2rem 0.4rem; + font-size: 87.5%; + color: #fff; + background-color: #212529; + border-radius: 0.2rem; +} + +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700; +} + +pre { + display: block; + font-size: 87.5%; + color: #212529; +} + +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.container { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container { + max-width: 540px; + } +} + +@media (min-width: 768px) { + .container { + max-width: 720px; + } +} + +@media (min-width: 992px) { + .container { + max-width: 960px; + } +} + +@media (min-width: 1200px) { + .container { + max-width: 1140px; + } +} + +.container-fluid { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} + +.row { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px; +} + +.no-gutters { + margin-right: 0; + margin-left: 0; +} + +.no-gutters > .col, +.no-gutters > [class*="col-"] { + padding-right: 0; + padding-left: 0; +} + +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, +.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, +.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, +.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, +.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, +.col-xl-auto { + position: relative; + width: 100%; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} + +.col { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; +} + +.col-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none; +} + +.col-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; +} + +.col-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; +} + +.col-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; +} + +.col-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; +} + +.col-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; +} + +.col-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; +} + +.col-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; +} + +.col-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; +} + +.col-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; +} + +.col-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; +} + +.col-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; +} + +.col-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; +} + +.order-first { + -ms-flex-order: -1; + order: -1; +} + +.order-last { + -ms-flex-order: 13; + order: 13; +} + +.order-0 { + -ms-flex-order: 0; + order: 0; +} + +.order-1 { + -ms-flex-order: 1; + order: 1; +} + +.order-2 { + -ms-flex-order: 2; + order: 2; +} + +.order-3 { + -ms-flex-order: 3; + order: 3; +} + +.order-4 { + -ms-flex-order: 4; + order: 4; +} + +.order-5 { + -ms-flex-order: 5; + order: 5; +} + +.order-6 { + -ms-flex-order: 6; + order: 6; +} + +.order-7 { + -ms-flex-order: 7; + order: 7; +} + +.order-8 { + -ms-flex-order: 8; + order: 8; +} + +.order-9 { + -ms-flex-order: 9; + order: 9; +} + +.order-10 { + -ms-flex-order: 10; + order: 10; +} + +.order-11 { + -ms-flex-order: 11; + order: 11; +} + +.order-12 { + -ms-flex-order: 12; + order: 12; +} + +.offset-1 { + margin-left: 8.333333%; +} + +.offset-2 { + margin-left: 16.666667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.333333%; +} + +.offset-5 { + margin-left: 41.666667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.333333%; +} + +.offset-8 { + margin-left: 66.666667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.333333%; +} + +.offset-11 { + margin-left: 91.666667%; +} + +@media (min-width: 576px) { + .col-sm { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-sm-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none; + } + .col-sm-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-sm-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-sm-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-sm-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-sm-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-sm-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-sm-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-sm-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-sm-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-sm-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-sm-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-sm-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-sm-first { + -ms-flex-order: -1; + order: -1; + } + .order-sm-last { + -ms-flex-order: 13; + order: 13; + } + .order-sm-0 { + -ms-flex-order: 0; + order: 0; + } + .order-sm-1 { + -ms-flex-order: 1; + order: 1; + } + .order-sm-2 { + -ms-flex-order: 2; + order: 2; + } + .order-sm-3 { + -ms-flex-order: 3; + order: 3; + } + .order-sm-4 { + -ms-flex-order: 4; + order: 4; + } + .order-sm-5 { + -ms-flex-order: 5; + order: 5; + } + .order-sm-6 { + -ms-flex-order: 6; + order: 6; + } + .order-sm-7 { + -ms-flex-order: 7; + order: 7; + } + .order-sm-8 { + -ms-flex-order: 8; + order: 8; + } + .order-sm-9 { + -ms-flex-order: 9; + order: 9; + } + .order-sm-10 { + -ms-flex-order: 10; + order: 10; + } + .order-sm-11 { + -ms-flex-order: 11; + order: 11; + } + .order-sm-12 { + -ms-flex-order: 12; + order: 12; + } + .offset-sm-0 { + margin-left: 0; + } + .offset-sm-1 { + margin-left: 8.333333%; + } + .offset-sm-2 { + margin-left: 16.666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.333333%; + } + .offset-sm-5 { + margin-left: 41.666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.333333%; + } + .offset-sm-8 { + margin-left: 66.666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.333333%; + } + .offset-sm-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 768px) { + .col-md { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-md-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none; + } + .col-md-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-md-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-md-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-md-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-md-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-md-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-md-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-md-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-md-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-md-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-md-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-md-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-md-first { + -ms-flex-order: -1; + order: -1; + } + .order-md-last { + -ms-flex-order: 13; + order: 13; + } + .order-md-0 { + -ms-flex-order: 0; + order: 0; + } + .order-md-1 { + -ms-flex-order: 1; + order: 1; + } + .order-md-2 { + -ms-flex-order: 2; + order: 2; + } + .order-md-3 { + -ms-flex-order: 3; + order: 3; + } + .order-md-4 { + -ms-flex-order: 4; + order: 4; + } + .order-md-5 { + -ms-flex-order: 5; + order: 5; + } + .order-md-6 { + -ms-flex-order: 6; + order: 6; + } + .order-md-7 { + -ms-flex-order: 7; + order: 7; + } + .order-md-8 { + -ms-flex-order: 8; + order: 8; + } + .order-md-9 { + -ms-flex-order: 9; + order: 9; + } + .order-md-10 { + -ms-flex-order: 10; + order: 10; + } + .order-md-11 { + -ms-flex-order: 11; + order: 11; + } + .order-md-12 { + -ms-flex-order: 12; + order: 12; + } + .offset-md-0 { + margin-left: 0; + } + .offset-md-1 { + margin-left: 8.333333%; + } + .offset-md-2 { + margin-left: 16.666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.333333%; + } + .offset-md-5 { + margin-left: 41.666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.333333%; + } + .offset-md-8 { + margin-left: 66.666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.333333%; + } + .offset-md-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 992px) { + .col-lg { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-lg-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none; + } + .col-lg-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-lg-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-lg-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-lg-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-lg-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-lg-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-lg-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-lg-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-lg-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-lg-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-lg-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-lg-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-lg-first { + -ms-flex-order: -1; + order: -1; + } + .order-lg-last { + -ms-flex-order: 13; + order: 13; + } + .order-lg-0 { + -ms-flex-order: 0; + order: 0; + } + .order-lg-1 { + -ms-flex-order: 1; + order: 1; + } + .order-lg-2 { + -ms-flex-order: 2; + order: 2; + } + .order-lg-3 { + -ms-flex-order: 3; + order: 3; + } + .order-lg-4 { + -ms-flex-order: 4; + order: 4; + } + .order-lg-5 { + -ms-flex-order: 5; + order: 5; + } + .order-lg-6 { + -ms-flex-order: 6; + order: 6; + } + .order-lg-7 { + -ms-flex-order: 7; + order: 7; + } + .order-lg-8 { + -ms-flex-order: 8; + order: 8; + } + .order-lg-9 { + -ms-flex-order: 9; + order: 9; + } + .order-lg-10 { + -ms-flex-order: 10; + order: 10; + } + .order-lg-11 { + -ms-flex-order: 11; + order: 11; + } + .order-lg-12 { + -ms-flex-order: 12; + order: 12; + } + .offset-lg-0 { + margin-left: 0; + } + .offset-lg-1 { + margin-left: 8.333333%; + } + .offset-lg-2 { + margin-left: 16.666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.333333%; + } + .offset-lg-5 { + margin-left: 41.666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.333333%; + } + .offset-lg-8 { + margin-left: 66.666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.333333%; + } + .offset-lg-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 1200px) { + .col-xl { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-xl-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none; + } + .col-xl-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-xl-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-xl-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-xl-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-xl-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-xl-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-xl-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-xl-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-xl-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-xl-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-xl-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-xl-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-xl-first { + -ms-flex-order: -1; + order: -1; + } + .order-xl-last { + -ms-flex-order: 13; + order: 13; + } + .order-xl-0 { + -ms-flex-order: 0; + order: 0; + } + .order-xl-1 { + -ms-flex-order: 1; + order: 1; + } + .order-xl-2 { + -ms-flex-order: 2; + order: 2; + } + .order-xl-3 { + -ms-flex-order: 3; + order: 3; + } + .order-xl-4 { + -ms-flex-order: 4; + order: 4; + } + .order-xl-5 { + -ms-flex-order: 5; + order: 5; + } + .order-xl-6 { + -ms-flex-order: 6; + order: 6; + } + .order-xl-7 { + -ms-flex-order: 7; + order: 7; + } + .order-xl-8 { + -ms-flex-order: 8; + order: 8; + } + .order-xl-9 { + -ms-flex-order: 9; + order: 9; + } + .order-xl-10 { + -ms-flex-order: 10; + order: 10; + } + .order-xl-11 { + -ms-flex-order: 11; + order: 11; + } + .order-xl-12 { + -ms-flex-order: 12; + order: 12; + } + .offset-xl-0 { + margin-left: 0; + } + .offset-xl-1 { + margin-left: 8.333333%; + } + .offset-xl-2 { + margin-left: 16.666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.333333%; + } + .offset-xl-5 { + margin-left: 41.666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.333333%; + } + .offset-xl-8 { + margin-left: 66.666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.333333%; + } + .offset-xl-11 { + margin-left: 91.666667%; + } +} + +.table { + width: 100%; + max-width: 100%; + margin-bottom: 1rem; + background-color: transparent; +} + +.table th, +.table td { + padding: 0.75rem; + vertical-align: top; + border-top: 1px solid #dee2e6; +} + +.table thead th { + vertical-align: bottom; + border-bottom: 2px solid #dee2e6; +} + +.table tbody + tbody { + border-top: 2px solid #dee2e6; +} + +.table .table { + background-color: #fff; +} + +.table-sm th, +.table-sm td { + padding: 0.3rem; +} + +.table-bordered { + border: 1px solid #dee2e6; +} + +.table-bordered th, +.table-bordered td { + border: 1px solid #dee2e6; +} + +.table-bordered thead th, +.table-bordered thead td { + border-bottom-width: 2px; +} + +.table-borderless th, +.table-borderless td, +.table-borderless thead th, +.table-borderless tbody + tbody { + border: 0; +} + +.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(0, 0, 0, 0.05); +} + +.table-hover tbody tr:hover { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-primary, +.table-primary > th, +.table-primary > td { + background-color: #b8daff; +} + +.table-hover .table-primary:hover { + background-color: #9fcdff; +} + +.table-hover .table-primary:hover > td, +.table-hover .table-primary:hover > th { + background-color: #9fcdff; +} + +.table-secondary, +.table-secondary > th, +.table-secondary > td { + background-color: #d6d8db; +} + +.table-hover .table-secondary:hover { + background-color: #c8cbcf; +} + +.table-hover .table-secondary:hover > td, +.table-hover .table-secondary:hover > th { + background-color: #c8cbcf; +} + +.table-success, +.table-success > th, +.table-success > td { + background-color: #c3e6cb; +} + +.table-hover .table-success:hover { + background-color: #b1dfbb; +} + +.table-hover .table-success:hover > td, +.table-hover .table-success:hover > th { + background-color: #b1dfbb; +} + +.table-info, +.table-info > th, +.table-info > td { + background-color: #bee5eb; +} + +.table-hover .table-info:hover { + background-color: #abdde5; +} + +.table-hover .table-info:hover > td, +.table-hover .table-info:hover > th { + background-color: #abdde5; +} + +.table-warning, +.table-warning > th, +.table-warning > td { + background-color: #ffeeba; +} + +.table-hover .table-warning:hover { + background-color: #ffe8a1; +} + +.table-hover .table-warning:hover > td, +.table-hover .table-warning:hover > th { + background-color: #ffe8a1; +} + +.table-danger, +.table-danger > th, +.table-danger > td { + background-color: #f5c6cb; +} + +.table-hover .table-danger:hover { + background-color: #f1b0b7; +} + +.table-hover .table-danger:hover > td, +.table-hover .table-danger:hover > th { + background-color: #f1b0b7; +} + +.table-light, +.table-light > th, +.table-light > td { + background-color: #fdfdfe; +} + +.table-hover .table-light:hover { + background-color: #ececf6; +} + +.table-hover .table-light:hover > td, +.table-hover .table-light:hover > th { + background-color: #ececf6; +} + +.table-dark, +.table-dark > th, +.table-dark > td { + background-color: #c6c8ca; +} + +.table-hover .table-dark:hover { + background-color: #b9bbbe; +} + +.table-hover .table-dark:hover > td, +.table-hover .table-dark:hover > th { + background-color: #b9bbbe; +} + +.table-active, +.table-active > th, +.table-active > td { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-hover .table-active:hover { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-hover .table-active:hover > td, +.table-hover .table-active:hover > th { + background-color: rgba(0, 0, 0, 0.075); +} + +.table .thead-dark th { + color: #fff; + background-color: #212529; + border-color: #32383e; +} + +.table .thead-light th { + color: #495057; + background-color: #e9ecef; + border-color: #dee2e6; +} + +.table-dark { + color: #fff; + background-color: #212529; +} + +.table-dark th, +.table-dark td, +.table-dark thead th { + border-color: #32383e; +} + +.table-dark.table-bordered { + border: 0; +} + +.table-dark.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, 0.05); +} + +.table-dark.table-hover tbody tr:hover { + background-color: rgba(255, 255, 255, 0.075); +} + +@media (max-width: 575.98px) { + .table-responsive-sm { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; + } + .table-responsive-sm > .table-bordered { + border: 0; + } +} + +@media (max-width: 767.98px) { + .table-responsive-md { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; + } + .table-responsive-md > .table-bordered { + border: 0; + } +} + +@media (max-width: 991.98px) { + .table-responsive-lg { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; + } + .table-responsive-lg > .table-bordered { + border: 0; + } +} + +@media (max-width: 1199.98px) { + .table-responsive-xl { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; + } + .table-responsive-xl > .table-bordered { + border: 0; + } +} + +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; +} + +.table-responsive > .table-bordered { + border: 0; +} + +.form-control { + display: block; + width: 100%; + padding: 0.375rem 0.75rem; + font-size: 1rem; + line-height: 1.5; + color: #495057; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da; + border-radius: 0.25rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media screen and (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } +} + +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} + +.form-control:focus { + color: #495057; + background-color: #fff; + border-color: #80bdff; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.form-control::-webkit-input-placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control::-moz-placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control:-ms-input-placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control::-ms-input-placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control::placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control:disabled, .form-control[readonly] { + background-color: #e9ecef; + opacity: 1; +} + +select.form-control:not([size]):not([multiple]) { + height: calc(2.25rem + 2px); +} + +select.form-control:focus::-ms-value { + color: #495057; + background-color: #fff; +} + +.form-control-file, +.form-control-range { + display: block; + width: 100%; +} + +.col-form-label { + padding-top: calc(0.375rem + 1px); + padding-bottom: calc(0.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.25rem; + line-height: 1.5; +} + +.col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.875rem; + line-height: 1.5; +} + +.form-control-plaintext { + display: block; + width: 100%; + padding-top: 0.375rem; + padding-bottom: 0.375rem; + margin-bottom: 0; + line-height: 1.5; + color: #212529; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; +} + +.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control, +.input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text, +.input-group-sm > .input-group-append > .form-control-plaintext.input-group-text, +.input-group-sm > .input-group-prepend > .form-control-plaintext.btn, +.input-group-sm > .input-group-append > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control, +.input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text, +.input-group-lg > .input-group-append > .form-control-plaintext.input-group-text, +.input-group-lg > .input-group-prepend > .form-control-plaintext.btn, +.input-group-lg > .input-group-append > .form-control-plaintext.btn { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm, .input-group-sm > .form-control, +.input-group-sm > .input-group-prepend > .input-group-text, +.input-group-sm > .input-group-append > .input-group-text, +.input-group-sm > .input-group-prepend > .btn, +.input-group-sm > .input-group-append > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; +} + +select.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]), +.input-group-sm > .input-group-prepend > select.input-group-text:not([size]):not([multiple]), +.input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]), +.input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]), +.input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) { + height: calc(1.8125rem + 2px); +} + +.form-control-lg, .input-group-lg > .form-control, +.input-group-lg > .input-group-prepend > .input-group-text, +.input-group-lg > .input-group-append > .input-group-text, +.input-group-lg > .input-group-prepend > .btn, +.input-group-lg > .input-group-append > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; +} + +select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]), +.input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]), +.input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]), +.input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]), +.input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) { + height: calc(2.875rem + 2px); +} + +.form-group { + margin-bottom: 1rem; +} + +.form-text { + display: block; + margin-top: 0.25rem; +} + +.form-row { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -5px; + margin-left: -5px; +} + +.form-row > .col, +.form-row > [class*="col-"] { + padding-right: 5px; + padding-left: 5px; +} + +.form-check { + position: relative; + display: block; + padding-left: 1.25rem; +} + +.form-check-input { + position: absolute; + margin-top: 0.3rem; + margin-left: -1.25rem; +} + +.form-check-input:disabled ~ .form-check-label { + color: #6c757d; +} + +.form-check-label { + margin-bottom: 0; +} + +.form-check-inline { + display: -ms-inline-flexbox; + display: inline-flex; + -ms-flex-align: center; + align-items: center; + padding-left: 0; + margin-right: 0.75rem; +} + +.form-check-inline .form-check-input { + position: static; + margin-top: 0; + margin-right: 0.3125rem; + margin-left: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #28a745; +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: .5rem; + margin-top: .1rem; + font-size: .875rem; + line-height: 1; + color: #fff; + background-color: rgba(40, 167, 69, 0.8); + border-radius: .2rem; +} + +.was-validated .form-control:valid, .form-control.is-valid, .was-validated +.custom-select:valid, +.custom-select.is-valid { + border-color: #28a745; +} + +.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated +.custom-select:valid:focus, +.custom-select.is-valid:focus { + border-color: #28a745; + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.was-validated .form-control:valid ~ .valid-feedback, +.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, +.form-control.is-valid ~ .valid-tooltip, .was-validated +.custom-select:valid ~ .valid-feedback, +.was-validated +.custom-select:valid ~ .valid-tooltip, +.custom-select.is-valid ~ .valid-feedback, +.custom-select.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control-file:valid ~ .valid-feedback, +.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback, +.form-control-file.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: #28a745; +} + +.was-validated .form-check-input:valid ~ .valid-feedback, +.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, +.form-check-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { + color: #28a745; +} + +.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { + background-color: #71dd8a; +} + +.was-validated .custom-control-input:valid ~ .valid-feedback, +.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, +.custom-control-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { + background-color: #34ce57; +} + +.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { + border-color: #28a745; +} + +.was-validated .custom-file-input:valid ~ .custom-file-label::before, .custom-file-input.is-valid ~ .custom-file-label::before { + border-color: inherit; +} + +.was-validated .custom-file-input:valid ~ .valid-feedback, +.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, +.custom-file-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #dc3545; +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: .5rem; + margin-top: .1rem; + font-size: .875rem; + line-height: 1; + color: #fff; + background-color: rgba(220, 53, 69, 0.8); + border-radius: .2rem; +} + +.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated +.custom-select:invalid, +.custom-select.is-invalid { + border-color: #dc3545; +} + +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated +.custom-select:invalid:focus, +.custom-select.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.was-validated .form-control:invalid ~ .invalid-feedback, +.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, +.form-control.is-invalid ~ .invalid-tooltip, .was-validated +.custom-select:invalid ~ .invalid-feedback, +.was-validated +.custom-select:invalid ~ .invalid-tooltip, +.custom-select.is-invalid ~ .invalid-feedback, +.custom-select.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control-file:invalid ~ .invalid-feedback, +.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback, +.form-control-file.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: #dc3545; +} + +.was-validated .form-check-input:invalid ~ .invalid-feedback, +.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, +.form-check-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { + color: #dc3545; +} + +.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { + background-color: #efa2a9; +} + +.was-validated .custom-control-input:invalid ~ .invalid-feedback, +.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, +.custom-control-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { + background-color: #e4606d; +} + +.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { + border-color: #dc3545; +} + +.was-validated .custom-file-input:invalid ~ .custom-file-label::before, .custom-file-input.is-invalid ~ .custom-file-label::before { + border-color: inherit; +} + +.was-validated .custom-file-input:invalid ~ .invalid-feedback, +.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, +.custom-file-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.form-inline { + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -ms-flex-align: center; + align-items: center; +} + +.form-inline .form-check { + width: 100%; +} + +@media (min-width: 576px) { + .form-inline label { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + margin-bottom: 0; + } + .form-inline .form-group { + display: -ms-flexbox; + display: flex; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -ms-flex-align: center; + align-items: center; + margin-bottom: 0; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-plaintext { + display: inline-block; + } + .form-inline .input-group, + .form-inline .custom-select { + width: auto; + } + .form-inline .form-check { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + width: auto; + padding-left: 0; + } + .form-inline .form-check-input { + position: relative; + margin-top: 0; + margin-right: 0.25rem; + margin-left: 0; + } + .form-inline .custom-control { + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + } + .form-inline .custom-control-label { + margin-bottom: 0; + } +} + +.btn { + display: inline-block; + font-weight: 400; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: 1px solid transparent; + padding: 0.375rem 0.75rem; + font-size: 1rem; + line-height: 1.5; + border-radius: 0.25rem; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media screen and (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} + +.btn:hover, .btn:focus { + text-decoration: none; +} + +.btn:focus, .btn.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.btn.disabled, .btn:disabled { + opacity: 0.65; +} + +.btn:not(:disabled):not(.disabled) { + cursor: pointer; +} + +.btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active { + background-image: none; +} + +a.btn.disabled, +fieldset:disabled a.btn { + pointer-events: none; +} + +.btn-primary { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-primary:hover { + color: #fff; + background-color: #0069d9; + border-color: #0062cc; +} + +.btn-primary:focus, .btn-primary.focus { + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); +} + +.btn-primary.disabled, .btn-primary:disabled { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, +.show > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #0062cc; + border-color: #005cbf; +} + +.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, +.show > .btn-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); +} + +.btn-secondary { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} + +.btn-secondary:hover { + color: #fff; + background-color: #5a6268; + border-color: #545b62; +} + +.btn-secondary:focus, .btn-secondary.focus { + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); +} + +.btn-secondary.disabled, .btn-secondary:disabled { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} + +.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, +.show > .btn-secondary.dropdown-toggle { + color: #fff; + background-color: #545b62; + border-color: #4e555b; +} + +.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, +.show > .btn-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); +} + +.btn-success { + color: #fff; + background-color: #28a745; + border-color: #28a745; +} + +.btn-success:hover { + color: #fff; + background-color: #218838; + border-color: #1e7e34; +} + +.btn-success:focus, .btn-success.focus { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); +} + +.btn-success.disabled, .btn-success:disabled { + color: #fff; + background-color: #28a745; + border-color: #28a745; +} + +.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, +.show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #1e7e34; + border-color: #1c7430; +} + +.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, +.show > .btn-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); +} + +.btn-info { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-info:hover { + color: #fff; + background-color: #138496; + border-color: #117a8b; +} + +.btn-info:focus, .btn-info.focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); +} + +.btn-info.disabled, .btn-info:disabled { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, +.show > .btn-info.dropdown-toggle { + color: #fff; + background-color: #117a8b; + border-color: #10707f; +} + +.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, +.show > .btn-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); +} + +.btn-warning { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-warning:hover { + color: #212529; + background-color: #e0a800; + border-color: #d39e00; +} + +.btn-warning:focus, .btn-warning.focus { + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); +} + +.btn-warning.disabled, .btn-warning:disabled { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, +.show > .btn-warning.dropdown-toggle { + color: #212529; + background-color: #d39e00; + border-color: #c69500; +} + +.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, +.show > .btn-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); +} + +.btn-danger { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-danger:hover { + color: #fff; + background-color: #c82333; + border-color: #bd2130; +} + +.btn-danger:focus, .btn-danger.focus { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); +} + +.btn-danger.disabled, .btn-danger:disabled { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, +.show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #bd2130; + border-color: #b21f2d; +} + +.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, +.show > .btn-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); +} + +.btn-light { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-light:hover { + color: #212529; + background-color: #e2e6ea; + border-color: #dae0e5; +} + +.btn-light:focus, .btn-light.focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} + +.btn-light.disabled, .btn-light:disabled { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, +.show > .btn-light.dropdown-toggle { + color: #212529; + background-color: #dae0e5; + border-color: #d3d9df; +} + +.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, +.show > .btn-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} + +.btn-dark { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-dark:hover { + color: #fff; + background-color: #23272b; + border-color: #1d2124; +} + +.btn-dark:focus, .btn-dark.focus { + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); +} + +.btn-dark.disabled, .btn-dark:disabled { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, +.show > .btn-dark.dropdown-toggle { + color: #fff; + background-color: #1d2124; + border-color: #171a1d; +} + +.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); +} + +.btn-outline-primary { + color: #007bff; + background-color: transparent; + background-image: none; + border-color: #007bff; +} + +.btn-outline-primary:hover { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-outline-primary:focus, .btn-outline-primary.focus { + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); +} + +.btn-outline-primary.disabled, .btn-outline-primary:disabled { + color: #007bff; + background-color: transparent; +} + +.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, +.show > .btn-outline-primary.dropdown-toggle { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); +} + +.btn-outline-secondary { + color: #6c757d; + background-color: transparent; + background-image: none; + border-color: #6c757d; +} + +.btn-outline-secondary:hover { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} + +.btn-outline-secondary:focus, .btn-outline-secondary.focus { + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); +} + +.btn-outline-secondary.disabled, .btn-outline-secondary:disabled { + color: #6c757d; + background-color: transparent; +} + +.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, +.show > .btn-outline-secondary.dropdown-toggle { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} + +.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); +} + +.btn-outline-success { + color: #28a745; + background-color: transparent; + background-image: none; + border-color: #28a745; +} + +.btn-outline-success:hover { + color: #fff; + background-color: #28a745; + border-color: #28a745; +} + +.btn-outline-success:focus, .btn-outline-success.focus { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); +} + +.btn-outline-success.disabled, .btn-outline-success:disabled { + color: #28a745; + background-color: transparent; +} + +.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, +.show > .btn-outline-success.dropdown-toggle { + color: #fff; + background-color: #28a745; + border-color: #28a745; +} + +.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); +} + +.btn-outline-info { + color: #17a2b8; + background-color: transparent; + background-image: none; + border-color: #17a2b8; +} + +.btn-outline-info:hover { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-outline-info:focus, .btn-outline-info.focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); +} + +.btn-outline-info.disabled, .btn-outline-info:disabled { + color: #17a2b8; + background-color: transparent; +} + +.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, +.show > .btn-outline-info.dropdown-toggle { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); +} + +.btn-outline-warning { + color: #ffc107; + background-color: transparent; + background-image: none; + border-color: #ffc107; +} + +.btn-outline-warning:hover { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-outline-warning:focus, .btn-outline-warning.focus { + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); +} + +.btn-outline-warning.disabled, .btn-outline-warning:disabled { + color: #ffc107; + background-color: transparent; +} + +.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, +.show > .btn-outline-warning.dropdown-toggle { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); +} + +.btn-outline-danger { + color: #dc3545; + background-color: transparent; + background-image: none; + border-color: #dc3545; +} + +.btn-outline-danger:hover { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-outline-danger:focus, .btn-outline-danger.focus { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); +} + +.btn-outline-danger.disabled, .btn-outline-danger:disabled { + color: #dc3545; + background-color: transparent; +} + +.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, +.show > .btn-outline-danger.dropdown-toggle { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); +} + +.btn-outline-light { + color: #f8f9fa; + background-color: transparent; + background-image: none; + border-color: #f8f9fa; +} + +.btn-outline-light:hover { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-outline-light:focus, .btn-outline-light.focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} + +.btn-outline-light.disabled, .btn-outline-light:disabled { + color: #f8f9fa; + background-color: transparent; +} + +.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, +.show > .btn-outline-light.dropdown-toggle { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} + +.btn-outline-dark { + color: #343a40; + background-color: transparent; + background-image: none; + border-color: #343a40; +} + +.btn-outline-dark:hover { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-outline-dark:focus, .btn-outline-dark.focus { + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); +} + +.btn-outline-dark.disabled, .btn-outline-dark:disabled { + color: #343a40; + background-color: transparent; +} + +.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, +.show > .btn-outline-dark.dropdown-toggle { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); +} + +.btn-link { + font-weight: 400; + color: #007bff; + background-color: transparent; +} + +.btn-link:hover { + color: #0056b3; + text-decoration: underline; + background-color: transparent; + border-color: transparent; +} + +.btn-link:focus, .btn-link.focus { + text-decoration: underline; + border-color: transparent; + box-shadow: none; +} + +.btn-link:disabled, .btn-link.disabled { + color: #6c757d; + pointer-events: none; +} + +.btn-lg, .btn-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; +} + +.btn-sm, .btn-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; +} + +.btn-block { + display: block; + width: 100%; +} + +.btn-block + .btn-block { + margin-top: 0.5rem; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.fade { + transition: opacity 0.15s linear; +} + +@media screen and (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} + +.fade:not(.show) { + opacity: 0; +} + +.collapse:not(.show) { + display: none; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} + +@media screen and (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} + +.dropup, +.dropright, +.dropdown, +.dropleft { + position: relative; +} + +.dropdown-toggle::after { + display: inline-block; + width: 0; + height: 0; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} + +.dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0.125rem 0 0; + font-size: 1rem; + color: #212529; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} + +.dropdown-menu-right { + right: 0; + left: auto; +} + +.dropup .dropdown-menu { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: 0.125rem; +} + +.dropup .dropdown-toggle::after { + display: inline-block; + width: 0; + height: 0; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} + +.dropup .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropright .dropdown-menu { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: 0.125rem; +} + +.dropright .dropdown-toggle::after { + display: inline-block; + width: 0; + height: 0; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} + +.dropright .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropright .dropdown-toggle::after { + vertical-align: 0; +} + +.dropleft .dropdown-menu { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: 0.125rem; +} + +.dropleft .dropdown-toggle::after { + display: inline-block; + width: 0; + height: 0; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} + +.dropleft .dropdown-toggle::after { + display: none; +} + +.dropleft .dropdown-toggle::before { + display: inline-block; + width: 0; + height: 0; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} + +.dropleft .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropleft .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { + right: auto; + bottom: auto; +} + +.dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef; +} + +.dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; +} + +.dropdown-item:hover, .dropdown-item:focus { + color: #16181b; + text-decoration: none; + background-color: #f8f9fa; +} + +.dropdown-item.active, .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #007bff; +} + +.dropdown-item.disabled, .dropdown-item:disabled { + color: #6c757d; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: 0.5rem 1.5rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #6c757d; + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: 0.25rem 1.5rem; + color: #212529; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: -ms-inline-flexbox; + display: inline-flex; + vertical-align: middle; +} + +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + -ms-flex: 0 1 auto; + flex: 0 1 auto; +} + +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover { + z-index: 1; +} + +.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 1; +} + +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group, +.btn-group-vertical .btn + .btn, +.btn-group-vertical .btn + .btn-group, +.btn-group-vertical .btn-group + .btn, +.btn-group-vertical .btn-group + .btn-group { + margin-left: -1px; +} + +.btn-toolbar { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.btn-toolbar .input-group { + width: auto; +} + +.btn-group > .btn:first-child { + margin-left: 0; +} + +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} + +.dropdown-toggle-split::after, +.dropup .dropdown-toggle-split::after, +.dropright .dropdown-toggle-split::after { + margin-left: 0; +} + +.dropleft .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} + +.btn-group-vertical { + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: start; + align-items: flex-start; + -ms-flex-pack: center; + justify-content: center; +} + +.btn-group-vertical .btn, +.btn-group-vertical .btn-group { + width: 100%; +} + +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.btn-group-toggle > .btn, +.btn-group-toggle > .btn-group > .btn { + margin-bottom: 0; +} + +.btn-group-toggle > .btn input[type="radio"], +.btn-group-toggle > .btn input[type="checkbox"], +.btn-group-toggle > .btn-group > .btn input[type="radio"], +.btn-group-toggle > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} + +.input-group { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: stretch; + align-items: stretch; + width: 100%; +} + +.input-group > .form-control, +.input-group > .custom-select, +.input-group > .custom-file { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 1%; + margin-bottom: 0; +} + +.input-group > .form-control:focus, +.input-group > .custom-select:focus, +.input-group > .custom-file:focus { + z-index: 3; +} + +.input-group > .form-control + .form-control, +.input-group > .form-control + .custom-select, +.input-group > .form-control + .custom-file, +.input-group > .custom-select + .form-control, +.input-group > .custom-select + .custom-select, +.input-group > .custom-select + .custom-file, +.input-group > .custom-file + .form-control, +.input-group > .custom-file + .custom-select, +.input-group > .custom-file + .custom-file { + margin-left: -1px; +} + +.input-group > .form-control:not(:last-child), +.input-group > .custom-select:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .form-control:not(:first-child), +.input-group > .custom-select:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group > .custom-file { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; +} + +.input-group > .custom-file:not(:last-child) .custom-file-label, +.input-group > .custom-file:not(:last-child) .custom-file-label::after { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .custom-file:not(:first-child) .custom-file-label { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group-prepend, +.input-group-append { + display: -ms-flexbox; + display: flex; +} + +.input-group-prepend .btn, +.input-group-append .btn { + position: relative; + z-index: 2; +} + +.input-group-prepend .btn + .btn, +.input-group-prepend .btn + .input-group-text, +.input-group-prepend .input-group-text + .input-group-text, +.input-group-prepend .input-group-text + .btn, +.input-group-append .btn + .btn, +.input-group-append .btn + .input-group-text, +.input-group-append .input-group-text + .input-group-text, +.input-group-append .input-group-text + .btn { + margin-left: -1px; +} + +.input-group-prepend { + margin-right: -1px; +} + +.input-group-append { + margin-left: -1px; +} + +.input-group-text { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + padding: 0.375rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + text-align: center; + white-space: nowrap; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: 0.25rem; +} + +.input-group-text input[type="radio"], +.input-group-text input[type="checkbox"] { + margin-top: 0; +} + +.input-group > .input-group-prepend > .btn, +.input-group > .input-group-prepend > .input-group-text, +.input-group > .input-group-append:not(:last-child) > .btn, +.input-group > .input-group-append:not(:last-child) > .input-group-text, +.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .input-group-append > .btn, +.input-group > .input-group-append > .input-group-text, +.input-group > .input-group-prepend:not(:first-child) > .btn, +.input-group > .input-group-prepend:not(:first-child) > .input-group-text, +.input-group > .input-group-prepend:first-child > .btn:not(:first-child), +.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-control { + position: relative; + display: block; + min-height: 1.5rem; + padding-left: 1.5rem; +} + +.custom-control-inline { + display: -ms-inline-flexbox; + display: inline-flex; + margin-right: 1rem; +} + +.custom-control-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.custom-control-input:checked ~ .custom-control-label::before { + color: #fff; + background-color: #007bff; +} + +.custom-control-input:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-control-input:active ~ .custom-control-label::before { + color: #fff; + background-color: #b3d7ff; +} + +.custom-control-input:disabled ~ .custom-control-label { + color: #6c757d; +} + +.custom-control-input:disabled ~ .custom-control-label::before { + background-color: #e9ecef; +} + +.custom-control-label { + position: relative; + margin-bottom: 0; +} + +.custom-control-label::before { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + content: ""; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: #dee2e6; +} + +.custom-control-label::after { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + content: ""; + background-repeat: no-repeat; + background-position: center center; + background-size: 50% 50%; +} + +.custom-checkbox .custom-control-label::before { + border-radius: 0.25rem; +} + +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before { + background-color: #007bff; +} + +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"); +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { + background-color: #007bff; +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E"); +} + +.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(0, 123, 255, 0.5); +} + +.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { + background-color: rgba(0, 123, 255, 0.5); +} + +.custom-radio .custom-control-label::before { + border-radius: 50%; +} + +.custom-radio .custom-control-input:checked ~ .custom-control-label::before { + background-color: #007bff; +} + +.custom-radio .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E"); +} + +.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(0, 123, 255, 0.5); +} + +.custom-select { + display: inline-block; + width: 100%; + height: calc(2.25rem + 2px); + padding: 0.375rem 1.75rem 0.375rem 0.75rem; + line-height: 1.5; + color: #495057; + vertical-align: middle; + background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center; + background-size: 8px 10px; + border: 1px solid #ced4da; + border-radius: 0.25rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.custom-select:focus { + border-color: #80bdff; + outline: 0; + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(128, 189, 255, 0.5); +} + +.custom-select:focus::-ms-value { + color: #495057; + background-color: #fff; +} + +.custom-select[multiple], .custom-select[size]:not([size="1"]) { + height: auto; + padding-right: 0.75rem; + background-image: none; +} + +.custom-select:disabled { + color: #6c757d; + background-color: #e9ecef; +} + +.custom-select::-ms-expand { + opacity: 0; +} + +.custom-select-sm { + height: calc(1.8125rem + 2px); + padding-top: 0.375rem; + padding-bottom: 0.375rem; + font-size: 75%; +} + +.custom-select-lg { + height: calc(2.875rem + 2px); + padding-top: 0.375rem; + padding-bottom: 0.375rem; + font-size: 125%; +} + +.custom-file { + position: relative; + display: inline-block; + width: 100%; + height: calc(2.25rem + 2px); + margin-bottom: 0; +} + +.custom-file-input { + position: relative; + z-index: 2; + width: 100%; + height: calc(2.25rem + 2px); + margin: 0; + opacity: 0; +} + +.custom-file-input:focus ~ .custom-file-label { + border-color: #80bdff; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-file-input:focus ~ .custom-file-label::after { + border-color: #80bdff; +} + +.custom-file-input:lang(en) ~ .custom-file-label::after { + content: "Browse"; +} + +.custom-file-label { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 1; + height: calc(2.25rem + 2px); + padding: 0.375rem 0.75rem; + line-height: 1.5; + color: #495057; + background-color: #fff; + border: 1px solid #ced4da; + border-radius: 0.25rem; +} + +.custom-file-label::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + z-index: 3; + display: block; + height: 2.25rem; + padding: 0.375rem 0.75rem; + line-height: 1.5; + color: #495057; + content: "Browse"; + background-color: #e9ecef; + border-left: 1px solid #ced4da; + border-radius: 0 0.25rem 0.25rem 0; +} + +.custom-range { + width: 100%; + padding-left: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.custom-range:focus { + outline: none; +} + +.custom-range::-moz-focus-outer { + border: 0; +} + +.custom-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #007bff; + border: 0; + border-radius: 1rem; + -webkit-appearance: none; + appearance: none; +} + +.custom-range::-webkit-slider-thumb:focus { + outline: none; + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-range::-webkit-slider-thumb:active { + background-color: #b3d7ff; +} + +.custom-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} + +.custom-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #007bff; + border: 0; + border-radius: 1rem; + -moz-appearance: none; + appearance: none; +} + +.custom-range::-moz-range-thumb:focus { + outline: none; + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-range::-moz-range-thumb:active { + background-color: #b3d7ff; +} + +.custom-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} + +.custom-range::-ms-thumb { + width: 1rem; + height: 1rem; + background-color: #007bff; + border: 0; + border-radius: 1rem; + appearance: none; +} + +.custom-range::-ms-thumb:focus { + outline: none; + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-range::-ms-thumb:active { + background-color: #b3d7ff; +} + +.custom-range::-ms-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: transparent; + border-color: transparent; + border-width: 0.5rem; +} + +.custom-range::-ms-fill-lower { + background-color: #dee2e6; + border-radius: 1rem; +} + +.custom-range::-ms-fill-upper { + margin-right: 15px; + background-color: #dee2e6; + border-radius: 1rem; +} + +.nav { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: 0.5rem 1rem; +} + +.nav-link:hover, .nav-link:focus { + text-decoration: none; +} + +.nav-link.disabled { + color: #6c757d; +} + +.nav-tabs { + border-bottom: 1px solid #dee2e6; +} + +.nav-tabs .nav-item { + margin-bottom: -1px; +} + +.nav-tabs .nav-link { + border: 1px solid transparent; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + border-color: #e9ecef #e9ecef #dee2e6; +} + +.nav-tabs .nav-link.disabled { + color: #6c757d; + background-color: transparent; + border-color: transparent; +} + +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: #495057; + background-color: #fff; + border-color: #dee2e6 #dee2e6 #fff; +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills .nav-link { + border-radius: 0.25rem; +} + +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: #fff; + background-color: #007bff; +} + +.nav-fill .nav-item { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + text-align: center; +} + +.nav-justified .nav-item { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + text-align: center; +} + +.tab-content > .tab-pane { + display: none; +} + +.tab-content > .active { + display: block; +} + +.navbar { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 0.5rem 1rem; +} + +.navbar > .container, +.navbar > .container-fluid { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.navbar-brand { + display: inline-block; + padding-top: 0.3125rem; + padding-bottom: 0.3125rem; + margin-right: 1rem; + font-size: 1.25rem; + line-height: inherit; + white-space: nowrap; +} + +.navbar-brand:hover, .navbar-brand:focus { + text-decoration: none; +} + +.navbar-nav { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.navbar-nav .nav-link { + padding-right: 0; + padding-left: 0; +} + +.navbar-nav .dropdown-menu { + position: static; + float: none; +} + +.navbar-text { + display: inline-block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.navbar-collapse { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + -ms-flex-positive: 1; + flex-grow: 1; + -ms-flex-align: center; + align-items: center; +} + +.navbar-toggler { + padding: 0.25rem 0.75rem; + font-size: 1.25rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + border-radius: 0.25rem; +} + +.navbar-toggler:hover, .navbar-toggler:focus { + text-decoration: none; +} + +.navbar-toggler:not(:disabled):not(.disabled) { + cursor: pointer; +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + background-size: 100% 100%; +} + +@media (max-width: 575.98px) { + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 576px) { + .navbar-expand-sm { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-sm .navbar-collapse { + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } +} + +@media (max-width: 767.98px) { + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 768px) { + .navbar-expand-md { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-md .navbar-collapse { + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } +} + +@media (max-width: 991.98px) { + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 992px) { + .navbar-expand-lg { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-lg .navbar-collapse { + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } +} + +@media (max-width: 1199.98px) { + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 1200px) { + .navbar-expand-xl { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-xl .navbar-collapse { + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } +} + +.navbar-expand { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.navbar-expand > .container, +.navbar-expand > .container-fluid { + padding-right: 0; + padding-left: 0; +} + +.navbar-expand .navbar-nav { + -ms-flex-direction: row; + flex-direction: row; +} + +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} + +.navbar-expand .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.navbar-expand > .container, +.navbar-expand > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; +} + +.navbar-expand .navbar-collapse { + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; +} + +.navbar-expand .navbar-toggler { + display: none; +} + +.navbar-light .navbar-brand { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, 0.5); +} + +.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { + color: rgba(0, 0, 0, 0.7); +} + +.navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3); +} + +.navbar-light .navbar-nav .show > .nav-link, +.navbar-light .navbar-nav .active > .nav-link, +.navbar-light .navbar-nav .nav-link.show, +.navbar-light .navbar-nav .nav-link.active { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.5); + border-color: rgba(0, 0, 0, 0.1); +} + +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); +} + +.navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.5); +} + +.navbar-light .navbar-text a { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-dark .navbar-brand { + color: #fff; +} + +.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { + color: #fff; +} + +.navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.5); +} + +.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { + color: rgba(255, 255, 255, 0.75); +} + +.navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25); +} + +.navbar-dark .navbar-nav .show > .nav-link, +.navbar-dark .navbar-nav .active > .nav-link, +.navbar-dark .navbar-nav .nav-link.show, +.navbar-dark .navbar-nav .nav-link.active { + color: #fff; +} + +.navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, 0.5); + border-color: rgba(255, 255, 255, 0.1); +} + +.navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); +} + +.navbar-dark .navbar-text { + color: rgba(255, 255, 255, 0.5); +} + +.navbar-dark .navbar-text a { + color: #fff; +} + +.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { + color: #fff; +} + +.card { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid rgba(0, 0, 0, 0.125); + border-radius: 0.25rem; +} + +.card > hr { + margin-right: 0; + margin-left: 0; +} + +.card > .list-group:first-child .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + +.card > .list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.card-body { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1.25rem; +} + +.card-title { + margin-bottom: 0.75rem; +} + +.card-subtitle { + margin-top: -0.375rem; + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link:hover { + text-decoration: none; +} + +.card-link + .card-link { + margin-left: 1.25rem; +} + +.card-header { + padding: 0.75rem 1.25rem; + margin-bottom: 0; + background-color: rgba(0, 0, 0, 0.03); + border-bottom: 1px solid rgba(0, 0, 0, 0.125); +} + +.card-header:first-child { + border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; +} + +.card-header + .list-group .list-group-item:first-child { + border-top: 0; +} + +.card-footer { + padding: 0.75rem 1.25rem; + background-color: rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(0, 0, 0, 0.125); +} + +.card-footer:last-child { + border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); +} + +.card-header-tabs { + margin-right: -0.625rem; + margin-bottom: -0.75rem; + margin-left: -0.625rem; + border-bottom: 0; +} + +.card-header-pills { + margin-right: -0.625rem; + margin-left: -0.625rem; +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem; +} + +.card-img { + width: 100%; + border-radius: calc(0.25rem - 1px); +} + +.card-img-top { + width: 100%; + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} + +.card-img-bottom { + width: 100%; + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} + +.card-deck { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; +} + +.card-deck .card { + margin-bottom: 15px; +} + +@media (min-width: 576px) { + .card-deck { + -ms-flex-flow: row wrap; + flex-flow: row wrap; + margin-right: -15px; + margin-left: -15px; + } + .card-deck .card { + display: -ms-flexbox; + display: flex; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + -ms-flex-direction: column; + flex-direction: column; + margin-right: 15px; + margin-bottom: 0; + margin-left: 15px; + } +} + +.card-group { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; +} + +.card-group > .card { + margin-bottom: 15px; +} + +@media (min-width: 576px) { + .card-group { + -ms-flex-flow: row wrap; + flex-flow: row wrap; + } + .card-group > .card { + -ms-flex: 1 0 0%; + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group > .card:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:first-child .card-img-top, + .card-group > .card:first-child .card-header { + border-top-right-radius: 0; + } + .card-group > .card:first-child .card-img-bottom, + .card-group > .card:first-child .card-footer { + border-bottom-right-radius: 0; + } + .card-group > .card:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:last-child .card-img-top, + .card-group > .card:last-child .card-header { + border-top-left-radius: 0; + } + .card-group > .card:last-child .card-img-bottom, + .card-group > .card:last-child .card-footer { + border-bottom-left-radius: 0; + } + .card-group > .card:only-child { + border-radius: 0.25rem; + } + .card-group > .card:only-child .card-img-top, + .card-group > .card:only-child .card-header { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; + } + .card-group > .card:only-child .card-img-bottom, + .card-group > .card:only-child .card-footer { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + } + .card-group > .card:not(:first-child):not(:last-child):not(:only-child) { + border-radius: 0; + } + .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top, + .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom, + .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header, + .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer { + border-radius: 0; + } +} + +.card-columns .card { + margin-bottom: 0.75rem; +} + +@media (min-width: 576px) { + .card-columns { + -webkit-column-count: 3; + -moz-column-count: 3; + column-count: 3; + -webkit-column-gap: 1.25rem; + -moz-column-gap: 1.25rem; + column-gap: 1.25rem; + orphans: 1; + widows: 1; + } + .card-columns .card { + display: inline-block; + width: 100%; + } +} + +.accordion .card:not(:first-of-type):not(:last-of-type) { + border-bottom: 0; + border-radius: 0; +} + +.accordion .card:not(:first-of-type) .card-header:first-child { + border-radius: 0; +} + +.accordion .card:first-of-type { + border-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.accordion .card:last-of-type { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.breadcrumb { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: 0.75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #e9ecef; + border-radius: 0.25rem; +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: 0.5rem; +} + +.breadcrumb-item + .breadcrumb-item::before { + display: inline-block; + padding-right: 0.5rem; + color: #6c757d; + content: "/"; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: underline; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: none; +} + +.breadcrumb-item.active { + color: #6c757d; +} + +.pagination { + display: -ms-flexbox; + display: flex; + padding-left: 0; + list-style: none; + border-radius: 0.25rem; +} + +.page-link { + position: relative; + display: block; + padding: 0.5rem 0.75rem; + margin-left: -1px; + line-height: 1.25; + color: #007bff; + background-color: #fff; + border: 1px solid #dee2e6; +} + +.page-link:hover { + z-index: 2; + color: #0056b3; + text-decoration: none; + background-color: #e9ecef; + border-color: #dee2e6; +} + +.page-link:focus { + z-index: 2; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.page-link:not(:disabled):not(.disabled) { + cursor: pointer; +} + +.page-item:first-child .page-link { + margin-left: 0; + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.page-item:last-child .page-link { + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; +} + +.page-item.active .page-link { + z-index: 1; + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.page-item.disabled .page-link { + color: #6c757d; + pointer-events: none; + cursor: auto; + background-color: #fff; + border-color: #dee2e6; +} + +.pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; + line-height: 1.5; +} + +.pagination-lg .page-item:first-child .page-link { + border-top-left-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; +} + +.pagination-lg .page-item:last-child .page-link { + border-top-right-radius: 0.3rem; + border-bottom-right-radius: 0.3rem; +} + +.pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; +} + +.pagination-sm .page-item:first-child .page-link { + border-top-left-radius: 0.2rem; + border-bottom-left-radius: 0.2rem; +} + +.pagination-sm .page-item:last-child .page-link { + border-top-right-radius: 0.2rem; + border-bottom-right-radius: 0.2rem; +} + +.badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25rem; +} + +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.badge-pill { + padding-right: 0.6em; + padding-left: 0.6em; + border-radius: 10rem; +} + +.badge-primary { + color: #fff; + background-color: #007bff; +} + +.badge-primary[href]:hover, .badge-primary[href]:focus { + color: #fff; + text-decoration: none; + background-color: #0062cc; +} + +.badge-secondary { + color: #fff; + background-color: #6c757d; +} + +.badge-secondary[href]:hover, .badge-secondary[href]:focus { + color: #fff; + text-decoration: none; + background-color: #545b62; +} + +.badge-success { + color: #fff; + background-color: #28a745; +} + +.badge-success[href]:hover, .badge-success[href]:focus { + color: #fff; + text-decoration: none; + background-color: #1e7e34; +} + +.badge-info { + color: #fff; + background-color: #17a2b8; +} + +.badge-info[href]:hover, .badge-info[href]:focus { + color: #fff; + text-decoration: none; + background-color: #117a8b; +} + +.badge-warning { + color: #212529; + background-color: #ffc107; +} + +.badge-warning[href]:hover, .badge-warning[href]:focus { + color: #212529; + text-decoration: none; + background-color: #d39e00; +} + +.badge-danger { + color: #fff; + background-color: #dc3545; +} + +.badge-danger[href]:hover, .badge-danger[href]:focus { + color: #fff; + text-decoration: none; + background-color: #bd2130; +} + +.badge-light { + color: #212529; + background-color: #f8f9fa; +} + +.badge-light[href]:hover, .badge-light[href]:focus { + color: #212529; + text-decoration: none; + background-color: #dae0e5; +} + +.badge-dark { + color: #fff; + background-color: #343a40; +} + +.badge-dark[href]:hover, .badge-dark[href]:focus { + color: #fff; + text-decoration: none; + background-color: #1d2124; +} + +.jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #e9ecef; + border-radius: 0.3rem; +} + +@media (min-width: 576px) { + .jumbotron { + padding: 4rem 2rem; + } +} + +.jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0; +} + +.alert { + position: relative; + padding: 0.75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0.25rem; +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: 700; +} + +.alert-dismissible { + padding-right: 4rem; +} + +.alert-dismissible .close { + position: absolute; + top: 0; + right: 0; + padding: 0.75rem 1.25rem; + color: inherit; +} + +.alert-primary { + color: #004085; + background-color: #cce5ff; + border-color: #b8daff; +} + +.alert-primary hr { + border-top-color: #9fcdff; +} + +.alert-primary .alert-link { + color: #002752; +} + +.alert-secondary { + color: #383d41; + background-color: #e2e3e5; + border-color: #d6d8db; +} + +.alert-secondary hr { + border-top-color: #c8cbcf; +} + +.alert-secondary .alert-link { + color: #202326; +} + +.alert-success { + color: #155724; + background-color: #d4edda; + border-color: #c3e6cb; +} + +.alert-success hr { + border-top-color: #b1dfbb; +} + +.alert-success .alert-link { + color: #0b2e13; +} + +.alert-info { + color: #0c5460; + background-color: #d1ecf1; + border-color: #bee5eb; +} + +.alert-info hr { + border-top-color: #abdde5; +} + +.alert-info .alert-link { + color: #062c33; +} + +.alert-warning { + color: #856404; + background-color: #fff3cd; + border-color: #ffeeba; +} + +.alert-warning hr { + border-top-color: #ffe8a1; +} + +.alert-warning .alert-link { + color: #533f03; +} + +.alert-danger { + color: #721c24; + background-color: #f8d7da; + border-color: #f5c6cb; +} + +.alert-danger hr { + border-top-color: #f1b0b7; +} + +.alert-danger .alert-link { + color: #491217; +} + +.alert-light { + color: #818182; + background-color: #fefefe; + border-color: #fdfdfe; +} + +.alert-light hr { + border-top-color: #ececf6; +} + +.alert-light .alert-link { + color: #686868; +} + +.alert-dark { + color: #1b1e21; + background-color: #d6d8d9; + border-color: #c6c8ca; +} + +.alert-dark hr { + border-top-color: #b9bbbe; +} + +.alert-dark .alert-link { + color: #040505; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +.progress { + display: -ms-flexbox; + display: flex; + height: 1rem; + overflow: hidden; + font-size: 0.75rem; + background-color: #e9ecef; + border-radius: 0.25rem; +} + +.progress-bar { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + color: #fff; + text-align: center; + white-space: nowrap; + background-color: #007bff; + transition: width 0.6s ease; +} + +@media screen and (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 1rem 1rem; +} + +.progress-bar-animated { + -webkit-animation: progress-bar-stripes 1s linear infinite; + animation: progress-bar-stripes 1s linear infinite; +} + +.media { + display: -ms-flexbox; + display: flex; + -ms-flex-align: start; + align-items: flex-start; +} + +.media-body { + -ms-flex: 1; + flex: 1; +} + +.list-group { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; +} + +.list-group-item-action { + width: 100%; + color: #495057; + text-align: inherit; +} + +.list-group-item-action:hover, .list-group-item-action:focus { + color: #495057; + text-decoration: none; + background-color: #f8f9fa; +} + +.list-group-item-action:active { + color: #212529; + background-color: #e9ecef; +} + +.list-group-item { + position: relative; + display: block; + padding: 0.75rem 1.25rem; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); +} + +.list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.list-group-item:hover, .list-group-item:focus { + z-index: 1; + text-decoration: none; +} + +.list-group-item.disabled, .list-group-item:disabled { + color: #6c757d; + background-color: #fff; +} + +.list-group-item.active { + z-index: 2; + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.list-group-flush .list-group-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} + +.list-group-flush:first-child .list-group-item:first-child { + border-top: 0; +} + +.list-group-flush:last-child .list-group-item:last-child { + border-bottom: 0; +} + +.list-group-item-primary { + color: #004085; + background-color: #b8daff; +} + +.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + color: #004085; + background-color: #9fcdff; +} + +.list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #004085; + border-color: #004085; +} + +.list-group-item-secondary { + color: #383d41; + background-color: #d6d8db; +} + +.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + color: #383d41; + background-color: #c8cbcf; +} + +.list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #383d41; + border-color: #383d41; +} + +.list-group-item-success { + color: #155724; + background-color: #c3e6cb; +} + +.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + color: #155724; + background-color: #b1dfbb; +} + +.list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #155724; + border-color: #155724; +} + +.list-group-item-info { + color: #0c5460; + background-color: #bee5eb; +} + +.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + color: #0c5460; + background-color: #abdde5; +} + +.list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #0c5460; + border-color: #0c5460; +} + +.list-group-item-warning { + color: #856404; + background-color: #ffeeba; +} + +.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + color: #856404; + background-color: #ffe8a1; +} + +.list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #856404; + border-color: #856404; +} + +.list-group-item-danger { + color: #721c24; + background-color: #f5c6cb; +} + +.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + color: #721c24; + background-color: #f1b0b7; +} + +.list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #721c24; + border-color: #721c24; +} + +.list-group-item-light { + color: #818182; + background-color: #fdfdfe; +} + +.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + color: #818182; + background-color: #ececf6; +} + +.list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #818182; + border-color: #818182; +} + +.list-group-item-dark { + color: #1b1e21; + background-color: #c6c8ca; +} + +.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + color: #1b1e21; + background-color: #b9bbbe; +} + +.list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #1b1e21; + border-color: #1b1e21; +} + +.close { + float: right; + font-size: 1.5rem; + font-weight: 700; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: .5; +} + +.close:hover, .close:focus { + color: #000; + text-decoration: none; + opacity: .75; +} + +.close:not(:disabled):not(.disabled) { + cursor: pointer; +} + +button.close { + padding: 0; + background-color: transparent; + border: 0; + -webkit-appearance: none; +} + +.modal-open { + overflow: hidden; +} + +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + outline: 0; +} + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} + +.modal-dialog { + position: relative; + width: auto; + margin: 0.5rem; + pointer-events: none; +} + +.modal.fade .modal-dialog { + transition: -webkit-transform 0.3s ease-out; + transition: transform 0.3s ease-out; + transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out; + -webkit-transform: translate(0, -25%); + transform: translate(0, -25%); +} + +@media screen and (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} + +.modal.show .modal-dialog { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); +} + +.modal-dialog-centered { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + min-height: calc(100% - (0.5rem * 2)); +} + +.modal-content { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + width: 100%; + pointer-events: auto; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; + outline: 0; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop.show { + opacity: 0.5; +} + +.modal-header { + display: -ms-flexbox; + display: flex; + -ms-flex-align: start; + align-items: flex-start; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 1rem; + border-bottom: 1px solid #e9ecef; + border-top-left-radius: 0.3rem; + border-top-right-radius: 0.3rem; +} + +.modal-header .close { + padding: 1rem; + margin: -1rem -1rem -1rem auto; +} + +.modal-title { + margin-bottom: 0; + line-height: 1.5; +} + +.modal-body { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1rem; +} + +.modal-footer { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: end; + justify-content: flex-end; + padding: 1rem; + border-top: 1px solid #e9ecef; +} + +.modal-footer > :not(:first-child) { + margin-left: .25rem; +} + +.modal-footer > :not(:last-child) { + margin-right: .25rem; +} + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +@media (min-width: 576px) { + .modal-dialog { + max-width: 500px; + margin: 1.75rem auto; + } + .modal-dialog-centered { + min-height: calc(100% - (1.75rem * 2)); + } + .modal-sm { + max-width: 300px; + } +} + +@media (min-width: 992px) { + .modal-lg { + max-width: 800px; + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + opacity: 0; +} + +.tooltip.show { + opacity: 0.9; +} + +.tooltip .arrow { + position: absolute; + display: block; + width: 0.8rem; + height: 0.4rem; +} + +.tooltip .arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { + padding: 0.4rem 0; +} + +.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { + bottom: 0; +} + +.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { + top: 0; + border-width: 0.4rem 0.4rem 0; + border-top-color: #000; +} + +.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { + padding: 0 0.4rem; +} + +.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { + left: 0; + width: 0.4rem; + height: 0.8rem; +} + +.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { + right: 0; + border-width: 0.4rem 0.4rem 0.4rem 0; + border-right-color: #000; +} + +.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { + padding: 0.4rem 0; +} + +.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { + top: 0; +} + +.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + bottom: 0; + border-width: 0 0.4rem 0.4rem; + border-bottom-color: #000; +} + +.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { + padding: 0 0.4rem; +} + +.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { + right: 0; + width: 0.4rem; + height: 0.8rem; +} + +.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { + left: 0; + border-width: 0.4rem 0 0.4rem 0.4rem; + border-left-color: #000; +} + +.tooltip-inner { + max-width: 200px; + padding: 0.25rem 0.5rem; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 0.25rem; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; +} + +.popover .arrow { + position: absolute; + display: block; + width: 1rem; + height: 0.5rem; + margin: 0 0.3rem; +} + +.popover .arrow::before, .popover .arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-popover-top, .bs-popover-auto[x-placement^="top"] { + margin-bottom: 0.5rem; +} + +.bs-popover-top .arrow, .bs-popover-auto[x-placement^="top"] .arrow { + bottom: calc((0.5rem + 1px) * -1); +} + +.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before, +.bs-popover-top .arrow::after, +.bs-popover-auto[x-placement^="top"] .arrow::after { + border-width: 0.5rem 0.5rem 0; +} + +.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before { + bottom: 0; + border-top-color: rgba(0, 0, 0, 0.25); +} + + +.bs-popover-top .arrow::after, +.bs-popover-auto[x-placement^="top"] .arrow::after { + bottom: 1px; + border-top-color: #fff; +} + +.bs-popover-right, .bs-popover-auto[x-placement^="right"] { + margin-left: 0.5rem; +} + +.bs-popover-right .arrow, .bs-popover-auto[x-placement^="right"] .arrow { + left: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; +} + +.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before, +.bs-popover-right .arrow::after, +.bs-popover-auto[x-placement^="right"] .arrow::after { + border-width: 0.5rem 0.5rem 0.5rem 0; +} + +.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before { + left: 0; + border-right-color: rgba(0, 0, 0, 0.25); +} + + +.bs-popover-right .arrow::after, +.bs-popover-auto[x-placement^="right"] .arrow::after { + left: 1px; + border-right-color: #fff; +} + +.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { + margin-top: 0.5rem; +} + +.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^="bottom"] .arrow { + top: calc((0.5rem + 1px) * -1); +} + +.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before, +.bs-popover-bottom .arrow::after, +.bs-popover-auto[x-placement^="bottom"] .arrow::after { + border-width: 0 0.5rem 0.5rem 0.5rem; +} + +.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before { + top: 0; + border-bottom-color: rgba(0, 0, 0, 0.25); +} + + +.bs-popover-bottom .arrow::after, +.bs-popover-auto[x-placement^="bottom"] .arrow::after { + top: 1px; + border-bottom-color: #fff; +} + +.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -0.5rem; + content: ""; + border-bottom: 1px solid #f7f7f7; +} + +.bs-popover-left, .bs-popover-auto[x-placement^="left"] { + margin-right: 0.5rem; +} + +.bs-popover-left .arrow, .bs-popover-auto[x-placement^="left"] .arrow { + right: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; +} + +.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before, +.bs-popover-left .arrow::after, +.bs-popover-auto[x-placement^="left"] .arrow::after { + border-width: 0.5rem 0 0.5rem 0.5rem; +} + +.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before { + right: 0; + border-left-color: rgba(0, 0, 0, 0.25); +} + + +.bs-popover-left .arrow::after, +.bs-popover-auto[x-placement^="left"] .arrow::after { + right: 1px; + border-left-color: #fff; +} + +.popover-header { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + color: inherit; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); +} + +.popover-header:empty { + display: none; +} + +.popover-body { + padding: 0.5rem 0.75rem; + color: #212529; +} + +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-item { + position: relative; + display: none; + -ms-flex-align: center; + align-items: center; + width: 100%; + transition: -webkit-transform 0.6s ease; + transition: transform 0.6s ease; + transition: transform 0.6s ease, -webkit-transform 0.6s ease; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; +} + +@media screen and (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next, +.carousel-item-prev { + position: absolute; + top: 0; +} + +.carousel-item-next.carousel-item-left, +.carousel-item-prev.carousel-item-right { + -webkit-transform: translateX(0); + transform: translateX(0); +} + +@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) { + .carousel-item-next.carousel-item-left, + .carousel-item-prev.carousel-item-right { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.carousel-item-next, +.active.carousel-item-right { + -webkit-transform: translateX(100%); + transform: translateX(100%); +} + +@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) { + .carousel-item-next, + .active.carousel-item-right { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +.carousel-item-prev, +.active.carousel-item-left { + -webkit-transform: translateX(-100%); + transform: translateX(-100%); +} + +@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) { + .carousel-item-prev, + .active.carousel-item-left { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-duration: .6s; + transition-property: opacity; +} + +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-left, +.carousel-fade .carousel-item-prev.carousel-item-right { + opacity: 1; +} + +.carousel-fade .active.carousel-item-left, +.carousel-fade .active.carousel-item-right { + opacity: 0; +} + +.carousel-fade .carousel-item-next, +.carousel-fade .carousel-item-prev, +.carousel-fade .carousel-item.active, +.carousel-fade .active.carousel-item-left, +.carousel-fade .active.carousel-item-prev { + -webkit-transform: translateX(0); + transform: translateX(0); +} + +@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) { + .carousel-fade .carousel-item-next, + .carousel-fade .carousel-item-prev, + .carousel-fade .carousel-item.active, + .carousel-fade .active.carousel-item-left, + .carousel-fade .active.carousel-item-prev { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: 0.5; +} + +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: .9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 20px; + height: 20px; + background: transparent no-repeat center center; + background-size: 100% 100%; +} + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 10px; + left: 0; + z-index: 15; + display: -ms-flexbox; + display: flex; + -ms-flex-pack: center; + justify-content: center; + padding-left: 0; + margin-right: 15%; + margin-left: 15%; + list-style: none; +} + +.carousel-indicators li { + position: relative; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + width: 30px; + height: 3px; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: rgba(255, 255, 255, 0.5); +} + +.carousel-indicators li::before { + position: absolute; + top: -10px; + left: 0; + display: inline-block; + width: 100%; + height: 10px; + content: ""; +} + +.carousel-indicators li::after { + position: absolute; + bottom: -10px; + left: 0; + display: inline-block; + width: 100%; + height: 10px; + content: ""; +} + +.carousel-indicators .active { + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.bg-primary { + background-color: #007bff !important; +} + +a.bg-primary:hover, a.bg-primary:focus, +button.bg-primary:hover, +button.bg-primary:focus { + background-color: #0062cc !important; +} + +.bg-secondary { + background-color: #6c757d !important; +} + +a.bg-secondary:hover, a.bg-secondary:focus, +button.bg-secondary:hover, +button.bg-secondary:focus { + background-color: #545b62 !important; +} + +.bg-success { + background-color: #28a745 !important; +} + +a.bg-success:hover, a.bg-success:focus, +button.bg-success:hover, +button.bg-success:focus { + background-color: #1e7e34 !important; +} + +.bg-info { + background-color: #17a2b8 !important; +} + +a.bg-info:hover, a.bg-info:focus, +button.bg-info:hover, +button.bg-info:focus { + background-color: #117a8b !important; +} + +.bg-warning { + background-color: #ffc107 !important; +} + +a.bg-warning:hover, a.bg-warning:focus, +button.bg-warning:hover, +button.bg-warning:focus { + background-color: #d39e00 !important; +} + +.bg-danger { + background-color: #dc3545 !important; +} + +a.bg-danger:hover, a.bg-danger:focus, +button.bg-danger:hover, +button.bg-danger:focus { + background-color: #bd2130 !important; +} + +.bg-light { + background-color: #f8f9fa !important; +} + +a.bg-light:hover, a.bg-light:focus, +button.bg-light:hover, +button.bg-light:focus { + background-color: #dae0e5 !important; +} + +.bg-dark { + background-color: #343a40 !important; +} + +a.bg-dark:hover, a.bg-dark:focus, +button.bg-dark:hover, +button.bg-dark:focus { + background-color: #1d2124 !important; +} + +.bg-white { + background-color: #fff !important; +} + +.bg-transparent { + background-color: transparent !important; +} + +.border { + border: 1px solid #dee2e6 !important; +} + +.border-top { + border-top: 1px solid #dee2e6 !important; +} + +.border-right { + border-right: 1px solid #dee2e6 !important; +} + +.border-bottom { + border-bottom: 1px solid #dee2e6 !important; +} + +.border-left { + border-left: 1px solid #dee2e6 !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-right-0 { + border-right: 0 !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-left-0 { + border-left: 0 !important; +} + +.border-primary { + border-color: #007bff !important; +} + +.border-secondary { + border-color: #6c757d !important; +} + +.border-success { + border-color: #28a745 !important; +} + +.border-info { + border-color: #17a2b8 !important; +} + +.border-warning { + border-color: #ffc107 !important; +} + +.border-danger { + border-color: #dc3545 !important; +} + +.border-light { + border-color: #f8f9fa !important; +} + +.border-dark { + border-color: #343a40 !important; +} + +.border-white { + border-color: #fff !important; +} + +.rounded { + border-radius: 0.25rem !important; +} + +.rounded-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; +} + +.rounded-right { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; +} + +.rounded-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; +} + +.rounded-left { + border-top-left-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.d-none { + display: none !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: -ms-flexbox !important; + display: flex !important; +} + +.d-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; +} + +@media (min-width: 576px) { + .d-sm-none { + display: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: -ms-flexbox !important; + display: flex !important; + } + .d-sm-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 768px) { + .d-md-none { + display: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: -ms-flexbox !important; + display: flex !important; + } + .d-md-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 992px) { + .d-lg-none { + display: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: -ms-flexbox !important; + display: flex !important; + } + .d-lg-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 1200px) { + .d-xl-none { + display: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: -ms-flexbox !important; + display: flex !important; + } + .d-xl-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media print { + .d-print-none { + display: none !important; + } + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: -ms-flexbox !important; + display: flex !important; + } + .d-print-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden; +} + +.embed-responsive::before { + display: block; + content: ""; +} + +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} + +.embed-responsive-21by9::before { + padding-top: 42.857143%; +} + +.embed-responsive-16by9::before { + padding-top: 56.25%; +} + +.embed-responsive-4by3::before { + padding-top: 75%; +} + +.embed-responsive-1by1::before { + padding-top: 100%; +} + +.flex-row { + -ms-flex-direction: row !important; + flex-direction: row !important; +} + +.flex-column { + -ms-flex-direction: column !important; + flex-direction: column !important; +} + +.flex-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; +} + +.flex-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; +} + +.flex-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; +} + +.flex-fill { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; +} + +.flex-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; +} + +.flex-grow-1 { + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; +} + +.flex-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; +} + +.justify-content-start { + -ms-flex-pack: start !important; + justify-content: flex-start !important; +} + +.justify-content-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; +} + +.justify-content-center { + -ms-flex-pack: center !important; + justify-content: center !important; +} + +.justify-content-between { + -ms-flex-pack: justify !important; + justify-content: space-between !important; +} + +.justify-content-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; +} + +.align-items-start { + -ms-flex-align: start !important; + align-items: flex-start !important; +} + +.align-items-end { + -ms-flex-align: end !important; + align-items: flex-end !important; +} + +.align-items-center { + -ms-flex-align: center !important; + align-items: center !important; +} + +.align-items-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; +} + +.align-items-stretch { + -ms-flex-align: stretch !important; + align-items: stretch !important; +} + +.align-content-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; +} + +.align-content-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; +} + +.align-content-center { + -ms-flex-line-pack: center !important; + align-content: center !important; +} + +.align-content-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; +} + +.align-content-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; +} + +.align-content-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; +} + +.align-self-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; +} + +.align-self-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; +} + +.align-self-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; +} + +.align-self-center { + -ms-flex-item-align: center !important; + align-self: center !important; +} + +.align-self-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; +} + +.align-self-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; +} + +@media (min-width: 576px) { + .flex-sm-row { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-sm-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-sm-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-sm-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-sm-fill { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-sm-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-sm-start { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-sm-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-sm-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-sm-between { + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-sm-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-sm-start { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-sm-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-sm-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-sm-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-sm-stretch { + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-sm-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-sm-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-sm-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-sm-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-sm-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-sm-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-sm-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-sm-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-sm-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-sm-center { + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-sm-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-sm-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 768px) { + .flex-md-row { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-md-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-md-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-md-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-md-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-md-fill { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-md-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-md-grow-1 { + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-md-start { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-md-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-md-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-md-between { + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-md-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-md-start { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-md-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-md-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-md-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-md-stretch { + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-md-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-md-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-md-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-md-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-md-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-md-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-md-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-md-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-md-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-md-center { + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-md-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-md-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 992px) { + .flex-lg-row { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-lg-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-lg-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-lg-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-lg-fill { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-lg-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-lg-start { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-lg-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-lg-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-lg-between { + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-lg-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-lg-start { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-lg-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-lg-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-lg-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-lg-stretch { + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-lg-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-lg-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-lg-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-lg-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-lg-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-lg-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-lg-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-lg-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-lg-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-lg-center { + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-lg-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-lg-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 1200px) { + .flex-xl-row { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-xl-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-xl-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-xl-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-xl-fill { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-xl-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-xl-start { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-xl-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-xl-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-xl-between { + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-xl-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-xl-start { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-xl-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-xl-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-xl-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-xl-stretch { + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-xl-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-xl-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-xl-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-xl-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-xl-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-xl-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-xl-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-xl-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-xl-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-xl-center { + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-xl-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-xl-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } +} + +.float-left { + float: left !important; +} + +.float-right { + float: right !important; +} + +.float-none { + float: none !important; +} + +@media (min-width: 576px) { + .float-sm-left { + float: left !important; + } + .float-sm-right { + float: right !important; + } + .float-sm-none { + float: none !important; + } +} + +@media (min-width: 768px) { + .float-md-left { + float: left !important; + } + .float-md-right { + float: right !important; + } + .float-md-none { + float: none !important; + } +} + +@media (min-width: 992px) { + .float-lg-left { + float: left !important; + } + .float-lg-right { + float: right !important; + } + .float-lg-none { + float: none !important; + } +} + +@media (min-width: 1200px) { + .float-xl-left { + float: left !important; + } + .float-xl-right { + float: right !important; + } + .float-xl-none { + float: none !important; + } +} + +.position-static { + position: static !important; +} + +.position-relative { + position: relative !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + position: -webkit-sticky !important; + position: sticky !important; +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +@supports ((position: -webkit-sticky) or (position: sticky)) { + .sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow { + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.h-25 { + height: 25% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.h-auto { + height: auto !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.m-0 { + margin: 0 !important; +} + +.mt-0, +.my-0 { + margin-top: 0 !important; +} + +.mr-0, +.mx-0 { + margin-right: 0 !important; +} + +.mb-0, +.my-0 { + margin-bottom: 0 !important; +} + +.ml-0, +.mx-0 { + margin-left: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.mt-1, +.my-1 { + margin-top: 0.25rem !important; +} + +.mr-1, +.mx-1 { + margin-right: 0.25rem !important; +} + +.mb-1, +.my-1 { + margin-bottom: 0.25rem !important; +} + +.ml-1, +.mx-1 { + margin-left: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.mt-2, +.my-2 { + margin-top: 0.5rem !important; +} + +.mr-2, +.mx-2 { + margin-right: 0.5rem !important; +} + +.mb-2, +.my-2 { + margin-bottom: 0.5rem !important; +} + +.ml-2, +.mx-2 { + margin-left: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.mt-3, +.my-3 { + margin-top: 1rem !important; +} + +.mr-3, +.mx-3 { + margin-right: 1rem !important; +} + +.mb-3, +.my-3 { + margin-bottom: 1rem !important; +} + +.ml-3, +.mx-3 { + margin-left: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.mt-4, +.my-4 { + margin-top: 1.5rem !important; +} + +.mr-4, +.mx-4 { + margin-right: 1.5rem !important; +} + +.mb-4, +.my-4 { + margin-bottom: 1.5rem !important; +} + +.ml-4, +.mx-4 { + margin-left: 1.5rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.mt-5, +.my-5 { + margin-top: 3rem !important; +} + +.mr-5, +.mx-5 { + margin-right: 3rem !important; +} + +.mb-5, +.my-5 { + margin-bottom: 3rem !important; +} + +.ml-5, +.mx-5 { + margin-left: 3rem !important; +} + +.p-0 { + padding: 0 !important; +} + +.pt-0, +.py-0 { + padding-top: 0 !important; +} + +.pr-0, +.px-0 { + padding-right: 0 !important; +} + +.pb-0, +.py-0 { + padding-bottom: 0 !important; +} + +.pl-0, +.px-0 { + padding-left: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.pt-1, +.py-1 { + padding-top: 0.25rem !important; +} + +.pr-1, +.px-1 { + padding-right: 0.25rem !important; +} + +.pb-1, +.py-1 { + padding-bottom: 0.25rem !important; +} + +.pl-1, +.px-1 { + padding-left: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.pt-2, +.py-2 { + padding-top: 0.5rem !important; +} + +.pr-2, +.px-2 { + padding-right: 0.5rem !important; +} + +.pb-2, +.py-2 { + padding-bottom: 0.5rem !important; +} + +.pl-2, +.px-2 { + padding-left: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.pt-3, +.py-3 { + padding-top: 1rem !important; +} + +.pr-3, +.px-3 { + padding-right: 1rem !important; +} + +.pb-3, +.py-3 { + padding-bottom: 1rem !important; +} + +.pl-3, +.px-3 { + padding-left: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.pt-4, +.py-4 { + padding-top: 1.5rem !important; +} + +.pr-4, +.px-4 { + padding-right: 1.5rem !important; +} + +.pb-4, +.py-4 { + padding-bottom: 1.5rem !important; +} + +.pl-4, +.px-4 { + padding-left: 1.5rem !important; +} + +.p-5 { + padding: 3rem !important; +} + +.pt-5, +.py-5 { + padding-top: 3rem !important; +} + +.pr-5, +.px-5 { + padding-right: 3rem !important; +} + +.pb-5, +.py-5 { + padding-bottom: 3rem !important; +} + +.pl-5, +.px-5 { + padding-left: 3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mt-auto, +.my-auto { + margin-top: auto !important; +} + +.mr-auto, +.mx-auto { + margin-right: auto !important; +} + +.mb-auto, +.my-auto { + margin-bottom: auto !important; +} + +.ml-auto, +.mx-auto { + margin-left: auto !important; +} + +@media (min-width: 576px) { + .m-sm-0 { + margin: 0 !important; + } + .mt-sm-0, + .my-sm-0 { + margin-top: 0 !important; + } + .mr-sm-0, + .mx-sm-0 { + margin-right: 0 !important; + } + .mb-sm-0, + .my-sm-0 { + margin-bottom: 0 !important; + } + .ml-sm-0, + .mx-sm-0 { + margin-left: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .mt-sm-1, + .my-sm-1 { + margin-top: 0.25rem !important; + } + .mr-sm-1, + .mx-sm-1 { + margin-right: 0.25rem !important; + } + .mb-sm-1, + .my-sm-1 { + margin-bottom: 0.25rem !important; + } + .ml-sm-1, + .mx-sm-1 { + margin-left: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .mt-sm-2, + .my-sm-2 { + margin-top: 0.5rem !important; + } + .mr-sm-2, + .mx-sm-2 { + margin-right: 0.5rem !important; + } + .mb-sm-2, + .my-sm-2 { + margin-bottom: 0.5rem !important; + } + .ml-sm-2, + .mx-sm-2 { + margin-left: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .mt-sm-3, + .my-sm-3 { + margin-top: 1rem !important; + } + .mr-sm-3, + .mx-sm-3 { + margin-right: 1rem !important; + } + .mb-sm-3, + .my-sm-3 { + margin-bottom: 1rem !important; + } + .ml-sm-3, + .mx-sm-3 { + margin-left: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .mt-sm-4, + .my-sm-4 { + margin-top: 1.5rem !important; + } + .mr-sm-4, + .mx-sm-4 { + margin-right: 1.5rem !important; + } + .mb-sm-4, + .my-sm-4 { + margin-bottom: 1.5rem !important; + } + .ml-sm-4, + .mx-sm-4 { + margin-left: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .mt-sm-5, + .my-sm-5 { + margin-top: 3rem !important; + } + .mr-sm-5, + .mx-sm-5 { + margin-right: 3rem !important; + } + .mb-sm-5, + .my-sm-5 { + margin-bottom: 3rem !important; + } + .ml-sm-5, + .mx-sm-5 { + margin-left: 3rem !important; + } + .p-sm-0 { + padding: 0 !important; + } + .pt-sm-0, + .py-sm-0 { + padding-top: 0 !important; + } + .pr-sm-0, + .px-sm-0 { + padding-right: 0 !important; + } + .pb-sm-0, + .py-sm-0 { + padding-bottom: 0 !important; + } + .pl-sm-0, + .px-sm-0 { + padding-left: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .pt-sm-1, + .py-sm-1 { + padding-top: 0.25rem !important; + } + .pr-sm-1, + .px-sm-1 { + padding-right: 0.25rem !important; + } + .pb-sm-1, + .py-sm-1 { + padding-bottom: 0.25rem !important; + } + .pl-sm-1, + .px-sm-1 { + padding-left: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .pt-sm-2, + .py-sm-2 { + padding-top: 0.5rem !important; + } + .pr-sm-2, + .px-sm-2 { + padding-right: 0.5rem !important; + } + .pb-sm-2, + .py-sm-2 { + padding-bottom: 0.5rem !important; + } + .pl-sm-2, + .px-sm-2 { + padding-left: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .pt-sm-3, + .py-sm-3 { + padding-top: 1rem !important; + } + .pr-sm-3, + .px-sm-3 { + padding-right: 1rem !important; + } + .pb-sm-3, + .py-sm-3 { + padding-bottom: 1rem !important; + } + .pl-sm-3, + .px-sm-3 { + padding-left: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .pt-sm-4, + .py-sm-4 { + padding-top: 1.5rem !important; + } + .pr-sm-4, + .px-sm-4 { + padding-right: 1.5rem !important; + } + .pb-sm-4, + .py-sm-4 { + padding-bottom: 1.5rem !important; + } + .pl-sm-4, + .px-sm-4 { + padding-left: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .pt-sm-5, + .py-sm-5 { + padding-top: 3rem !important; + } + .pr-sm-5, + .px-sm-5 { + padding-right: 3rem !important; + } + .pb-sm-5, + .py-sm-5 { + padding-bottom: 3rem !important; + } + .pl-sm-5, + .px-sm-5 { + padding-left: 3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mt-sm-auto, + .my-sm-auto { + margin-top: auto !important; + } + .mr-sm-auto, + .mx-sm-auto { + margin-right: auto !important; + } + .mb-sm-auto, + .my-sm-auto { + margin-bottom: auto !important; + } + .ml-sm-auto, + .mx-sm-auto { + margin-left: auto !important; + } +} + +@media (min-width: 768px) { + .m-md-0 { + margin: 0 !important; + } + .mt-md-0, + .my-md-0 { + margin-top: 0 !important; + } + .mr-md-0, + .mx-md-0 { + margin-right: 0 !important; + } + .mb-md-0, + .my-md-0 { + margin-bottom: 0 !important; + } + .ml-md-0, + .mx-md-0 { + margin-left: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .mt-md-1, + .my-md-1 { + margin-top: 0.25rem !important; + } + .mr-md-1, + .mx-md-1 { + margin-right: 0.25rem !important; + } + .mb-md-1, + .my-md-1 { + margin-bottom: 0.25rem !important; + } + .ml-md-1, + .mx-md-1 { + margin-left: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .mt-md-2, + .my-md-2 { + margin-top: 0.5rem !important; + } + .mr-md-2, + .mx-md-2 { + margin-right: 0.5rem !important; + } + .mb-md-2, + .my-md-2 { + margin-bottom: 0.5rem !important; + } + .ml-md-2, + .mx-md-2 { + margin-left: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .mt-md-3, + .my-md-3 { + margin-top: 1rem !important; + } + .mr-md-3, + .mx-md-3 { + margin-right: 1rem !important; + } + .mb-md-3, + .my-md-3 { + margin-bottom: 1rem !important; + } + .ml-md-3, + .mx-md-3 { + margin-left: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .mt-md-4, + .my-md-4 { + margin-top: 1.5rem !important; + } + .mr-md-4, + .mx-md-4 { + margin-right: 1.5rem !important; + } + .mb-md-4, + .my-md-4 { + margin-bottom: 1.5rem !important; + } + .ml-md-4, + .mx-md-4 { + margin-left: 1.5rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .mt-md-5, + .my-md-5 { + margin-top: 3rem !important; + } + .mr-md-5, + .mx-md-5 { + margin-right: 3rem !important; + } + .mb-md-5, + .my-md-5 { + margin-bottom: 3rem !important; + } + .ml-md-5, + .mx-md-5 { + margin-left: 3rem !important; + } + .p-md-0 { + padding: 0 !important; + } + .pt-md-0, + .py-md-0 { + padding-top: 0 !important; + } + .pr-md-0, + .px-md-0 { + padding-right: 0 !important; + } + .pb-md-0, + .py-md-0 { + padding-bottom: 0 !important; + } + .pl-md-0, + .px-md-0 { + padding-left: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .pt-md-1, + .py-md-1 { + padding-top: 0.25rem !important; + } + .pr-md-1, + .px-md-1 { + padding-right: 0.25rem !important; + } + .pb-md-1, + .py-md-1 { + padding-bottom: 0.25rem !important; + } + .pl-md-1, + .px-md-1 { + padding-left: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .pt-md-2, + .py-md-2 { + padding-top: 0.5rem !important; + } + .pr-md-2, + .px-md-2 { + padding-right: 0.5rem !important; + } + .pb-md-2, + .py-md-2 { + padding-bottom: 0.5rem !important; + } + .pl-md-2, + .px-md-2 { + padding-left: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .pt-md-3, + .py-md-3 { + padding-top: 1rem !important; + } + .pr-md-3, + .px-md-3 { + padding-right: 1rem !important; + } + .pb-md-3, + .py-md-3 { + padding-bottom: 1rem !important; + } + .pl-md-3, + .px-md-3 { + padding-left: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .pt-md-4, + .py-md-4 { + padding-top: 1.5rem !important; + } + .pr-md-4, + .px-md-4 { + padding-right: 1.5rem !important; + } + .pb-md-4, + .py-md-4 { + padding-bottom: 1.5rem !important; + } + .pl-md-4, + .px-md-4 { + padding-left: 1.5rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .pt-md-5, + .py-md-5 { + padding-top: 3rem !important; + } + .pr-md-5, + .px-md-5 { + padding-right: 3rem !important; + } + .pb-md-5, + .py-md-5 { + padding-bottom: 3rem !important; + } + .pl-md-5, + .px-md-5 { + padding-left: 3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mt-md-auto, + .my-md-auto { + margin-top: auto !important; + } + .mr-md-auto, + .mx-md-auto { + margin-right: auto !important; + } + .mb-md-auto, + .my-md-auto { + margin-bottom: auto !important; + } + .ml-md-auto, + .mx-md-auto { + margin-left: auto !important; + } +} + +@media (min-width: 992px) { + .m-lg-0 { + margin: 0 !important; + } + .mt-lg-0, + .my-lg-0 { + margin-top: 0 !important; + } + .mr-lg-0, + .mx-lg-0 { + margin-right: 0 !important; + } + .mb-lg-0, + .my-lg-0 { + margin-bottom: 0 !important; + } + .ml-lg-0, + .mx-lg-0 { + margin-left: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .mt-lg-1, + .my-lg-1 { + margin-top: 0.25rem !important; + } + .mr-lg-1, + .mx-lg-1 { + margin-right: 0.25rem !important; + } + .mb-lg-1, + .my-lg-1 { + margin-bottom: 0.25rem !important; + } + .ml-lg-1, + .mx-lg-1 { + margin-left: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .mt-lg-2, + .my-lg-2 { + margin-top: 0.5rem !important; + } + .mr-lg-2, + .mx-lg-2 { + margin-right: 0.5rem !important; + } + .mb-lg-2, + .my-lg-2 { + margin-bottom: 0.5rem !important; + } + .ml-lg-2, + .mx-lg-2 { + margin-left: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .mt-lg-3, + .my-lg-3 { + margin-top: 1rem !important; + } + .mr-lg-3, + .mx-lg-3 { + margin-right: 1rem !important; + } + .mb-lg-3, + .my-lg-3 { + margin-bottom: 1rem !important; + } + .ml-lg-3, + .mx-lg-3 { + margin-left: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .mt-lg-4, + .my-lg-4 { + margin-top: 1.5rem !important; + } + .mr-lg-4, + .mx-lg-4 { + margin-right: 1.5rem !important; + } + .mb-lg-4, + .my-lg-4 { + margin-bottom: 1.5rem !important; + } + .ml-lg-4, + .mx-lg-4 { + margin-left: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .mt-lg-5, + .my-lg-5 { + margin-top: 3rem !important; + } + .mr-lg-5, + .mx-lg-5 { + margin-right: 3rem !important; + } + .mb-lg-5, + .my-lg-5 { + margin-bottom: 3rem !important; + } + .ml-lg-5, + .mx-lg-5 { + margin-left: 3rem !important; + } + .p-lg-0 { + padding: 0 !important; + } + .pt-lg-0, + .py-lg-0 { + padding-top: 0 !important; + } + .pr-lg-0, + .px-lg-0 { + padding-right: 0 !important; + } + .pb-lg-0, + .py-lg-0 { + padding-bottom: 0 !important; + } + .pl-lg-0, + .px-lg-0 { + padding-left: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .pt-lg-1, + .py-lg-1 { + padding-top: 0.25rem !important; + } + .pr-lg-1, + .px-lg-1 { + padding-right: 0.25rem !important; + } + .pb-lg-1, + .py-lg-1 { + padding-bottom: 0.25rem !important; + } + .pl-lg-1, + .px-lg-1 { + padding-left: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .pt-lg-2, + .py-lg-2 { + padding-top: 0.5rem !important; + } + .pr-lg-2, + .px-lg-2 { + padding-right: 0.5rem !important; + } + .pb-lg-2, + .py-lg-2 { + padding-bottom: 0.5rem !important; + } + .pl-lg-2, + .px-lg-2 { + padding-left: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .pt-lg-3, + .py-lg-3 { + padding-top: 1rem !important; + } + .pr-lg-3, + .px-lg-3 { + padding-right: 1rem !important; + } + .pb-lg-3, + .py-lg-3 { + padding-bottom: 1rem !important; + } + .pl-lg-3, + .px-lg-3 { + padding-left: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .pt-lg-4, + .py-lg-4 { + padding-top: 1.5rem !important; + } + .pr-lg-4, + .px-lg-4 { + padding-right: 1.5rem !important; + } + .pb-lg-4, + .py-lg-4 { + padding-bottom: 1.5rem !important; + } + .pl-lg-4, + .px-lg-4 { + padding-left: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .pt-lg-5, + .py-lg-5 { + padding-top: 3rem !important; + } + .pr-lg-5, + .px-lg-5 { + padding-right: 3rem !important; + } + .pb-lg-5, + .py-lg-5 { + padding-bottom: 3rem !important; + } + .pl-lg-5, + .px-lg-5 { + padding-left: 3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mt-lg-auto, + .my-lg-auto { + margin-top: auto !important; + } + .mr-lg-auto, + .mx-lg-auto { + margin-right: auto !important; + } + .mb-lg-auto, + .my-lg-auto { + margin-bottom: auto !important; + } + .ml-lg-auto, + .mx-lg-auto { + margin-left: auto !important; + } +} + +@media (min-width: 1200px) { + .m-xl-0 { + margin: 0 !important; + } + .mt-xl-0, + .my-xl-0 { + margin-top: 0 !important; + } + .mr-xl-0, + .mx-xl-0 { + margin-right: 0 !important; + } + .mb-xl-0, + .my-xl-0 { + margin-bottom: 0 !important; + } + .ml-xl-0, + .mx-xl-0 { + margin-left: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .mt-xl-1, + .my-xl-1 { + margin-top: 0.25rem !important; + } + .mr-xl-1, + .mx-xl-1 { + margin-right: 0.25rem !important; + } + .mb-xl-1, + .my-xl-1 { + margin-bottom: 0.25rem !important; + } + .ml-xl-1, + .mx-xl-1 { + margin-left: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .mt-xl-2, + .my-xl-2 { + margin-top: 0.5rem !important; + } + .mr-xl-2, + .mx-xl-2 { + margin-right: 0.5rem !important; + } + .mb-xl-2, + .my-xl-2 { + margin-bottom: 0.5rem !important; + } + .ml-xl-2, + .mx-xl-2 { + margin-left: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .mt-xl-3, + .my-xl-3 { + margin-top: 1rem !important; + } + .mr-xl-3, + .mx-xl-3 { + margin-right: 1rem !important; + } + .mb-xl-3, + .my-xl-3 { + margin-bottom: 1rem !important; + } + .ml-xl-3, + .mx-xl-3 { + margin-left: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .mt-xl-4, + .my-xl-4 { + margin-top: 1.5rem !important; + } + .mr-xl-4, + .mx-xl-4 { + margin-right: 1.5rem !important; + } + .mb-xl-4, + .my-xl-4 { + margin-bottom: 1.5rem !important; + } + .ml-xl-4, + .mx-xl-4 { + margin-left: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .mt-xl-5, + .my-xl-5 { + margin-top: 3rem !important; + } + .mr-xl-5, + .mx-xl-5 { + margin-right: 3rem !important; + } + .mb-xl-5, + .my-xl-5 { + margin-bottom: 3rem !important; + } + .ml-xl-5, + .mx-xl-5 { + margin-left: 3rem !important; + } + .p-xl-0 { + padding: 0 !important; + } + .pt-xl-0, + .py-xl-0 { + padding-top: 0 !important; + } + .pr-xl-0, + .px-xl-0 { + padding-right: 0 !important; + } + .pb-xl-0, + .py-xl-0 { + padding-bottom: 0 !important; + } + .pl-xl-0, + .px-xl-0 { + padding-left: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .pt-xl-1, + .py-xl-1 { + padding-top: 0.25rem !important; + } + .pr-xl-1, + .px-xl-1 { + padding-right: 0.25rem !important; + } + .pb-xl-1, + .py-xl-1 { + padding-bottom: 0.25rem !important; + } + .pl-xl-1, + .px-xl-1 { + padding-left: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .pt-xl-2, + .py-xl-2 { + padding-top: 0.5rem !important; + } + .pr-xl-2, + .px-xl-2 { + padding-right: 0.5rem !important; + } + .pb-xl-2, + .py-xl-2 { + padding-bottom: 0.5rem !important; + } + .pl-xl-2, + .px-xl-2 { + padding-left: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .pt-xl-3, + .py-xl-3 { + padding-top: 1rem !important; + } + .pr-xl-3, + .px-xl-3 { + padding-right: 1rem !important; + } + .pb-xl-3, + .py-xl-3 { + padding-bottom: 1rem !important; + } + .pl-xl-3, + .px-xl-3 { + padding-left: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .pt-xl-4, + .py-xl-4 { + padding-top: 1.5rem !important; + } + .pr-xl-4, + .px-xl-4 { + padding-right: 1.5rem !important; + } + .pb-xl-4, + .py-xl-4 { + padding-bottom: 1.5rem !important; + } + .pl-xl-4, + .px-xl-4 { + padding-left: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .pt-xl-5, + .py-xl-5 { + padding-top: 3rem !important; + } + .pr-xl-5, + .px-xl-5 { + padding-right: 3rem !important; + } + .pb-xl-5, + .py-xl-5 { + padding-bottom: 3rem !important; + } + .pl-xl-5, + .px-xl-5 { + padding-left: 3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mt-xl-auto, + .my-xl-auto { + margin-top: auto !important; + } + .mr-xl-auto, + .mx-xl-auto { + margin-right: auto !important; + } + .mb-xl-auto, + .my-xl-auto { + margin-bottom: auto !important; + } + .ml-xl-auto, + .mx-xl-auto { + margin-left: auto !important; + } +} + +.text-monospace { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +.text-justify { + text-align: justify !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.text-left { + text-align: left !important; +} + +.text-right { + text-align: right !important; +} + +.text-center { + text-align: center !important; +} + +@media (min-width: 576px) { + .text-sm-left { + text-align: left !important; + } + .text-sm-right { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } +} + +@media (min-width: 768px) { + .text-md-left { + text-align: left !important; + } + .text-md-right { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } +} + +@media (min-width: 992px) { + .text-lg-left { + text-align: left !important; + } + .text-lg-right { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } +} + +@media (min-width: 1200px) { + .text-xl-left { + text-align: left !important; + } + .text-xl-right { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.font-weight-light { + font-weight: 300 !important; +} + +.font-weight-normal { + font-weight: 400 !important; +} + +.font-weight-bold { + font-weight: 700 !important; +} + +.font-italic { + font-style: italic !important; +} + +.text-white { + color: #fff !important; +} + +.text-primary { + color: #007bff !important; +} + +a.text-primary:hover, a.text-primary:focus { + color: #0062cc !important; +} + +.text-secondary { + color: #6c757d !important; +} + +a.text-secondary:hover, a.text-secondary:focus { + color: #545b62 !important; +} + +.text-success { + color: #28a745 !important; +} + +a.text-success:hover, a.text-success:focus { + color: #1e7e34 !important; +} + +.text-info { + color: #17a2b8 !important; +} + +a.text-info:hover, a.text-info:focus { + color: #117a8b !important; +} + +.text-warning { + color: #ffc107 !important; +} + +a.text-warning:hover, a.text-warning:focus { + color: #d39e00 !important; +} + +.text-danger { + color: #dc3545 !important; +} + +a.text-danger:hover, a.text-danger:focus { + color: #bd2130 !important; +} + +.text-light { + color: #f8f9fa !important; +} + +a.text-light:hover, a.text-light:focus { + color: #dae0e5 !important; +} + +.text-dark { + color: #343a40 !important; +} + +a.text-dark:hover, a.text-dark:focus { + color: #1d2124 !important; +} + +.text-body { + color: #212529 !important; +} + +.text-muted { + color: #6c757d !important; +} + +.text-black-50 { + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.visible { + visibility: visible !important; +} + +.invisible { + visibility: hidden !important; +} + +@media print { + *, + *::before, + *::after { + text-shadow: none !important; + box-shadow: none !important; + } + a:not(.btn) { + text-decoration: underline; + } + abbr[title]::after { + content: " (" attr(title) ")"; + } + pre { + white-space: pre-wrap !important; + } + pre, + blockquote { + border: 1px solid #adb5bd; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + @page { + size: a3; + } + body { + min-width: 992px !important; + } + .container { + min-width: 992px !important; + } + .navbar { + display: none; + } + .badge { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #dee2e6 !important; + } + .table-dark { + color: inherit; + } + .table-dark th, + .table-dark td, + .table-dark thead th, + .table-dark tbody + tbody { + border-color: #dee2e6; + } + .table .thead-dark th { + color: inherit; + border-color: #dee2e6; + } +} +/*# sourceMappingURL=bootstrap.css.map */ \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/bootstrap/js/bootstrap.bundle.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/bootstrap/js/bootstrap.bundle.js new file mode 100644 index 00000000000..adb34007384 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/bootstrap/js/bootstrap.bundle.js @@ -0,0 +1,6444 @@ +/*! + * Bootstrap v4.1.1 (https://getbootstrap.com/) + * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery')) : + typeof define === 'function' && define.amd ? define(['exports', 'jquery'], factory) : + (factory((global.bootstrap = {}),global.jQuery)); +}(this, (function (exports,$) { 'use strict'; + + $ = $ && $.hasOwnProperty('default') ? $['default'] : $; + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + } + + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + var ownKeys = Object.keys(source); + + if (typeof Object.getOwnPropertySymbols === 'function') { + ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { + return Object.getOwnPropertyDescriptor(source, sym).enumerable; + })); + } + + ownKeys.forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } + + return target; + } + + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.1): util.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Util = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Private TransitionEnd Helpers + * ------------------------------------------------------------------------ + */ + var TRANSITION_END = 'transitionend'; + var MAX_UID = 1000000; + var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp) + + function toType(obj) { + return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); + } + + function getSpecialTransitionEndEvent() { + return { + bindType: TRANSITION_END, + delegateType: TRANSITION_END, + handle: function handle(event) { + if ($$$1(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params + } + + return undefined; // eslint-disable-line no-undefined + } + }; + } + + function transitionEndEmulator(duration) { + var _this = this; + + var called = false; + $$$1(this).one(Util.TRANSITION_END, function () { + called = true; + }); + setTimeout(function () { + if (!called) { + Util.triggerTransitionEnd(_this); + } + }, duration); + return this; + } + + function setTransitionEndSupport() { + $$$1.fn.emulateTransitionEnd = transitionEndEmulator; + $$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); + } + /** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ + + + var Util = { + TRANSITION_END: 'bsTransitionEnd', + getUID: function getUID(prefix) { + do { + // eslint-disable-next-line no-bitwise + prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here + } while (document.getElementById(prefix)); + + return prefix; + }, + getSelectorFromElement: function getSelectorFromElement(element) { + var selector = element.getAttribute('data-target'); + + if (!selector || selector === '#') { + selector = element.getAttribute('href') || ''; + } + + try { + var $selector = $$$1(document).find(selector); + return $selector.length > 0 ? selector : null; + } catch (err) { + return null; + } + }, + getTransitionDurationFromElement: function getTransitionDurationFromElement(element) { + if (!element) { + return 0; + } // Get transition-duration of the element + + + var transitionDuration = $$$1(element).css('transition-duration'); + var floatTransitionDuration = parseFloat(transitionDuration); // Return 0 if element or transition duration is not found + + if (!floatTransitionDuration) { + return 0; + } // If multiple durations are defined, take the first + + + transitionDuration = transitionDuration.split(',')[0]; + return parseFloat(transitionDuration) * MILLISECONDS_MULTIPLIER; + }, + reflow: function reflow(element) { + return element.offsetHeight; + }, + triggerTransitionEnd: function triggerTransitionEnd(element) { + $$$1(element).trigger(TRANSITION_END); + }, + // TODO: Remove in v5 + supportsTransitionEnd: function supportsTransitionEnd() { + return Boolean(TRANSITION_END); + }, + isElement: function isElement(obj) { + return (obj[0] || obj).nodeType; + }, + typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { + for (var property in configTypes) { + if (Object.prototype.hasOwnProperty.call(configTypes, property)) { + var expectedTypes = configTypes[property]; + var value = config[property]; + var valueType = value && Util.isElement(value) ? 'element' : toType(value); + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\".")); + } + } + } + } + }; + setTransitionEndSupport(); + return Util; + }($); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.1): alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Alert = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'alert'; + var VERSION = '4.1.1'; + var DATA_KEY = 'bs.alert'; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var Selector = { + DISMISS: '[data-dismiss="alert"]' + }; + var Event = { + CLOSE: "close" + EVENT_KEY, + CLOSED: "closed" + EVENT_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY + }; + var ClassName = { + ALERT: 'alert', + FADE: 'fade', + SHOW: 'show' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Alert = + /*#__PURE__*/ + function () { + function Alert(element) { + this._element = element; + } // Getters + + + var _proto = Alert.prototype; + + // Public + _proto.close = function close(element) { + var rootElement = this._element; + + if (element) { + rootElement = this._getRootElement(element); + } + + var customEvent = this._triggerCloseEvent(rootElement); + + if (customEvent.isDefaultPrevented()) { + return; + } + + this._removeElement(rootElement); + }; + + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + this._element = null; + }; // Private + + + _proto._getRootElement = function _getRootElement(element) { + var selector = Util.getSelectorFromElement(element); + var parent = false; + + if (selector) { + parent = $$$1(selector)[0]; + } + + if (!parent) { + parent = $$$1(element).closest("." + ClassName.ALERT)[0]; + } + + return parent; + }; + + _proto._triggerCloseEvent = function _triggerCloseEvent(element) { + var closeEvent = $$$1.Event(Event.CLOSE); + $$$1(element).trigger(closeEvent); + return closeEvent; + }; + + _proto._removeElement = function _removeElement(element) { + var _this = this; + + $$$1(element).removeClass(ClassName.SHOW); + + if (!$$$1(element).hasClass(ClassName.FADE)) { + this._destroyElement(element); + + return; + } + + var transitionDuration = Util.getTransitionDurationFromElement(element); + $$$1(element).one(Util.TRANSITION_END, function (event) { + return _this._destroyElement(element, event); + }).emulateTransitionEnd(transitionDuration); + }; + + _proto._destroyElement = function _destroyElement(element) { + $$$1(element).detach().trigger(Event.CLOSED).remove(); + }; // Static + + + Alert._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $element = $$$1(this); + var data = $element.data(DATA_KEY); + + if (!data) { + data = new Alert(this); + $element.data(DATA_KEY, data); + } + + if (config === 'close') { + data[config](this); + } + }); + }; + + Alert._handleDismiss = function _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault(); + } + + alertInstance.close(this); + }; + }; + + _createClass(Alert, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }]); + + return Alert; + }(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + $$$1(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $$$1.fn[NAME] = Alert._jQueryInterface; + $$$1.fn[NAME].Constructor = Alert; + + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Alert._jQueryInterface; + }; + + return Alert; + }($); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.1): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Button = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'button'; + var VERSION = '4.1.1'; + var DATA_KEY = 'bs.button'; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var ClassName = { + ACTIVE: 'active', + BUTTON: 'btn', + FOCUS: 'focus' + }; + var Selector = { + DATA_TOGGLE_CARROT: '[data-toggle^="button"]', + DATA_TOGGLE: '[data-toggle="buttons"]', + INPUT: 'input', + ACTIVE: '.active', + BUTTON: '.btn' + }; + var Event = { + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, + FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY) + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Button = + /*#__PURE__*/ + function () { + function Button(element) { + this._element = element; + } // Getters + + + var _proto = Button.prototype; + + // Public + _proto.toggle = function toggle() { + var triggerChangeEvent = true; + var addAriaPressed = true; + var rootElement = $$$1(this._element).closest(Selector.DATA_TOGGLE)[0]; + + if (rootElement) { + var input = $$$1(this._element).find(Selector.INPUT)[0]; + + if (input) { + if (input.type === 'radio') { + if (input.checked && $$$1(this._element).hasClass(ClassName.ACTIVE)) { + triggerChangeEvent = false; + } else { + var activeElement = $$$1(rootElement).find(Selector.ACTIVE)[0]; + + if (activeElement) { + $$$1(activeElement).removeClass(ClassName.ACTIVE); + } + } + } + + if (triggerChangeEvent) { + if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) { + return; + } + + input.checked = !$$$1(this._element).hasClass(ClassName.ACTIVE); + $$$1(input).trigger('change'); + } + + input.focus(); + addAriaPressed = false; + } + } + + if (addAriaPressed) { + this._element.setAttribute('aria-pressed', !$$$1(this._element).hasClass(ClassName.ACTIVE)); + } + + if (triggerChangeEvent) { + $$$1(this._element).toggleClass(ClassName.ACTIVE); + } + }; + + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + this._element = null; + }; // Static + + + Button._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); + + if (!data) { + data = new Button(this); + $$$1(this).data(DATA_KEY, data); + } + + if (config === 'toggle') { + data[config](); + } + }); + }; + + _createClass(Button, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }]); + + return Button; + }(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + event.preventDefault(); + var button = event.target; + + if (!$$$1(button).hasClass(ClassName.BUTTON)) { + button = $$$1(button).closest(Selector.BUTTON); + } + + Button._jQueryInterface.call($$$1(button), 'toggle'); + }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + var button = $$$1(event.target).closest(Selector.BUTTON)[0]; + $$$1(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $$$1.fn[NAME] = Button._jQueryInterface; + $$$1.fn[NAME].Constructor = Button; + + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Button._jQueryInterface; + }; + + return Button; + }($); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.1): carousel.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Carousel = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'carousel'; + var VERSION = '4.1.1'; + var DATA_KEY = 'bs.carousel'; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key + + var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key + + var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch + + var Default = { + interval: 5000, + keyboard: true, + slide: false, + pause: 'hover', + wrap: true + }; + var DefaultType = { + interval: '(number|boolean)', + keyboard: 'boolean', + slide: '(boolean|string)', + pause: '(string|boolean)', + wrap: 'boolean' + }; + var Direction = { + NEXT: 'next', + PREV: 'prev', + LEFT: 'left', + RIGHT: 'right' + }; + var Event = { + SLIDE: "slide" + EVENT_KEY, + SLID: "slid" + EVENT_KEY, + KEYDOWN: "keydown" + EVENT_KEY, + MOUSEENTER: "mouseenter" + EVENT_KEY, + MOUSELEAVE: "mouseleave" + EVENT_KEY, + TOUCHEND: "touchend" + EVENT_KEY, + LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY + }; + var ClassName = { + CAROUSEL: 'carousel', + ACTIVE: 'active', + SLIDE: 'slide', + RIGHT: 'carousel-item-right', + LEFT: 'carousel-item-left', + NEXT: 'carousel-item-next', + PREV: 'carousel-item-prev', + ITEM: 'carousel-item' + }; + var Selector = { + ACTIVE: '.active', + ACTIVE_ITEM: '.active.carousel-item', + ITEM: '.carousel-item', + NEXT_PREV: '.carousel-item-next, .carousel-item-prev', + INDICATORS: '.carousel-indicators', + DATA_SLIDE: '[data-slide], [data-slide-to]', + DATA_RIDE: '[data-ride="carousel"]' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Carousel = + /*#__PURE__*/ + function () { + function Carousel(element, config) { + this._items = null; + this._interval = null; + this._activeElement = null; + this._isPaused = false; + this._isSliding = false; + this.touchTimeout = null; + this._config = this._getConfig(config); + this._element = $$$1(element)[0]; + this._indicatorsElement = $$$1(this._element).find(Selector.INDICATORS)[0]; + + this._addEventListeners(); + } // Getters + + + var _proto = Carousel.prototype; + + // Public + _proto.next = function next() { + if (!this._isSliding) { + this._slide(Direction.NEXT); + } + }; + + _proto.nextWhenVisible = function nextWhenVisible() { + // Don't call next when the page isn't visible + // or the carousel or its parent isn't visible + if (!document.hidden && $$$1(this._element).is(':visible') && $$$1(this._element).css('visibility') !== 'hidden') { + this.next(); + } + }; + + _proto.prev = function prev() { + if (!this._isSliding) { + this._slide(Direction.PREV); + } + }; + + _proto.pause = function pause(event) { + if (!event) { + this._isPaused = true; + } + + if ($$$1(this._element).find(Selector.NEXT_PREV)[0]) { + Util.triggerTransitionEnd(this._element); + this.cycle(true); + } + + clearInterval(this._interval); + this._interval = null; + }; + + _proto.cycle = function cycle(event) { + if (!event) { + this._isPaused = false; + } + + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } + + if (this._config.interval && !this._isPaused) { + this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); + } + }; + + _proto.to = function to(index) { + var _this = this; + + this._activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0]; + + var activeIndex = this._getItemIndex(this._activeElement); + + if (index > this._items.length - 1 || index < 0) { + return; + } + + if (this._isSliding) { + $$$1(this._element).one(Event.SLID, function () { + return _this.to(index); + }); + return; + } + + if (activeIndex === index) { + this.pause(); + this.cycle(); + return; + } + + var direction = index > activeIndex ? Direction.NEXT : Direction.PREV; + + this._slide(direction, this._items[index]); + }; + + _proto.dispose = function dispose() { + $$$1(this._element).off(EVENT_KEY); + $$$1.removeData(this._element, DATA_KEY); + this._items = null; + this._config = null; + this._element = null; + this._interval = null; + this._isPaused = null; + this._isSliding = null; + this._activeElement = null; + this._indicatorsElement = null; + }; // Private + + + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; + + _proto._addEventListeners = function _addEventListeners() { + var _this2 = this; + + if (this._config.keyboard) { + $$$1(this._element).on(Event.KEYDOWN, function (event) { + return _this2._keydown(event); + }); + } + + if (this._config.pause === 'hover') { + $$$1(this._element).on(Event.MOUSEENTER, function (event) { + return _this2.pause(event); + }).on(Event.MOUSELEAVE, function (event) { + return _this2.cycle(event); + }); + + if ('ontouchstart' in document.documentElement) { + // If it's a touch-enabled device, mouseenter/leave are fired as + // part of the mouse compatibility events on first tap - the carousel + // would stop cycling until user tapped out of it; + // here, we listen for touchend, explicitly pause the carousel + // (as if it's the second time we tap on it, mouseenter compat event + // is NOT fired) and after a timeout (to allow for mouse compatibility + // events to fire) we explicitly restart cycling + $$$1(this._element).on(Event.TOUCHEND, function () { + _this2.pause(); + + if (_this2.touchTimeout) { + clearTimeout(_this2.touchTimeout); + } + + _this2.touchTimeout = setTimeout(function (event) { + return _this2.cycle(event); + }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval); + }); + } + } + }; + + _proto._keydown = function _keydown(event) { + if (/input|textarea/i.test(event.target.tagName)) { + return; + } + + switch (event.which) { + case ARROW_LEFT_KEYCODE: + event.preventDefault(); + this.prev(); + break; + + case ARROW_RIGHT_KEYCODE: + event.preventDefault(); + this.next(); + break; + + default: + } + }; + + _proto._getItemIndex = function _getItemIndex(element) { + this._items = $$$1.makeArray($$$1(element).parent().find(Selector.ITEM)); + return this._items.indexOf(element); + }; + + _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) { + var isNextDirection = direction === Direction.NEXT; + var isPrevDirection = direction === Direction.PREV; + + var activeIndex = this._getItemIndex(activeElement); + + var lastItemIndex = this._items.length - 1; + var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; + + if (isGoingToWrap && !this._config.wrap) { + return activeElement; + } + + var delta = direction === Direction.PREV ? -1 : 1; + var itemIndex = (activeIndex + delta) % this._items.length; + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; + }; + + _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { + var targetIndex = this._getItemIndex(relatedTarget); + + var fromIndex = this._getItemIndex($$$1(this._element).find(Selector.ACTIVE_ITEM)[0]); + + var slideEvent = $$$1.Event(Event.SLIDE, { + relatedTarget: relatedTarget, + direction: eventDirectionName, + from: fromIndex, + to: targetIndex + }); + $$$1(this._element).trigger(slideEvent); + return slideEvent; + }; + + _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + $$$1(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + + var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; + + if (nextIndicator) { + $$$1(nextIndicator).addClass(ClassName.ACTIVE); + } + } + }; + + _proto._slide = function _slide(direction, element) { + var _this3 = this; + + var activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0]; + + var activeElementIndex = this._getItemIndex(activeElement); + + var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); + + var nextElementIndex = this._getItemIndex(nextElement); + + var isCycling = Boolean(this._interval); + var directionalClassName; + var orderClassName; + var eventDirectionName; + + if (direction === Direction.NEXT) { + directionalClassName = ClassName.LEFT; + orderClassName = ClassName.NEXT; + eventDirectionName = Direction.LEFT; + } else { + directionalClassName = ClassName.RIGHT; + orderClassName = ClassName.PREV; + eventDirectionName = Direction.RIGHT; + } + + if (nextElement && $$$1(nextElement).hasClass(ClassName.ACTIVE)) { + this._isSliding = false; + return; + } + + var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); + + if (slideEvent.isDefaultPrevented()) { + return; + } + + if (!activeElement || !nextElement) { + // Some weirdness is happening, so we bail + return; + } + + this._isSliding = true; + + if (isCycling) { + this.pause(); + } + + this._setActiveIndicatorElement(nextElement); + + var slidEvent = $$$1.Event(Event.SLID, { + relatedTarget: nextElement, + direction: eventDirectionName, + from: activeElementIndex, + to: nextElementIndex + }); + + if ($$$1(this._element).hasClass(ClassName.SLIDE)) { + $$$1(nextElement).addClass(orderClassName); + Util.reflow(nextElement); + $$$1(activeElement).addClass(directionalClassName); + $$$1(nextElement).addClass(directionalClassName); + var transitionDuration = Util.getTransitionDurationFromElement(activeElement); + $$$1(activeElement).one(Util.TRANSITION_END, function () { + $$$1(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE); + $$$1(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName); + _this3._isSliding = false; + setTimeout(function () { + return $$$1(_this3._element).trigger(slidEvent); + }, 0); + }).emulateTransitionEnd(transitionDuration); + } else { + $$$1(activeElement).removeClass(ClassName.ACTIVE); + $$$1(nextElement).addClass(ClassName.ACTIVE); + this._isSliding = false; + $$$1(this._element).trigger(slidEvent); + } + + if (isCycling) { + this.cycle(); + } + }; // Static + + + Carousel._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); + + var _config = _objectSpread({}, Default, $$$1(this).data()); + + if (typeof config === 'object') { + _config = _objectSpread({}, _config, config); + } + + var action = typeof config === 'string' ? config : _config.slide; + + if (!data) { + data = new Carousel(this, _config); + $$$1(this).data(DATA_KEY, data); + } + + if (typeof config === 'number') { + data.to(config); + } else if (typeof action === 'string') { + if (typeof data[action] === 'undefined') { + throw new TypeError("No method named \"" + action + "\""); + } + + data[action](); + } else if (_config.interval) { + data.pause(); + data.cycle(); + } + }); + }; + + Carousel._dataApiClickHandler = function _dataApiClickHandler(event) { + var selector = Util.getSelectorFromElement(this); + + if (!selector) { + return; + } + + var target = $$$1(selector)[0]; + + if (!target || !$$$1(target).hasClass(ClassName.CAROUSEL)) { + return; + } + + var config = _objectSpread({}, $$$1(target).data(), $$$1(this).data()); + + var slideIndex = this.getAttribute('data-slide-to'); + + if (slideIndex) { + config.interval = false; + } + + Carousel._jQueryInterface.call($$$1(target), config); + + if (slideIndex) { + $$$1(target).data(DATA_KEY).to(slideIndex); + } + + event.preventDefault(); + }; + + _createClass(Carousel, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }]); + + return Carousel; + }(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); + $$$1(window).on(Event.LOAD_DATA_API, function () { + $$$1(Selector.DATA_RIDE).each(function () { + var $carousel = $$$1(this); + + Carousel._jQueryInterface.call($carousel, $carousel.data()); + }); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $$$1.fn[NAME] = Carousel._jQueryInterface; + $$$1.fn[NAME].Constructor = Carousel; + + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Carousel._jQueryInterface; + }; + + return Carousel; + }($); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.1): collapse.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Collapse = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'collapse'; + var VERSION = '4.1.1'; + var DATA_KEY = 'bs.collapse'; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var Default = { + toggle: true, + parent: '' + }; + var DefaultType = { + toggle: 'boolean', + parent: '(string|element)' + }; + var Event = { + SHOW: "show" + EVENT_KEY, + SHOWN: "shown" + EVENT_KEY, + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY + }; + var ClassName = { + SHOW: 'show', + COLLAPSE: 'collapse', + COLLAPSING: 'collapsing', + COLLAPSED: 'collapsed' + }; + var Dimension = { + WIDTH: 'width', + HEIGHT: 'height' + }; + var Selector = { + ACTIVES: '.show, .collapsing', + DATA_TOGGLE: '[data-toggle="collapse"]' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Collapse = + /*#__PURE__*/ + function () { + function Collapse(element, config) { + this._isTransitioning = false; + this._element = element; + this._config = this._getConfig(config); + this._triggerArray = $$$1.makeArray($$$1("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]"))); + var tabToggles = $$$1(Selector.DATA_TOGGLE); + + for (var i = 0; i < tabToggles.length; i++) { + var elem = tabToggles[i]; + var selector = Util.getSelectorFromElement(elem); + + if (selector !== null && $$$1(selector).filter(element).length > 0) { + this._selector = selector; + + this._triggerArray.push(elem); + } + } + + this._parent = this._config.parent ? this._getParent() : null; + + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); + } + + if (this._config.toggle) { + this.toggle(); + } + } // Getters + + + var _proto = Collapse.prototype; + + // Public + _proto.toggle = function toggle() { + if ($$$1(this._element).hasClass(ClassName.SHOW)) { + this.hide(); + } else { + this.show(); + } + }; + + _proto.show = function show() { + var _this = this; + + if (this._isTransitioning || $$$1(this._element).hasClass(ClassName.SHOW)) { + return; + } + + var actives; + var activesData; + + if (this._parent) { + actives = $$$1.makeArray($$$1(this._parent).find(Selector.ACTIVES).filter("[data-parent=\"" + this._config.parent + "\"]")); + + if (actives.length === 0) { + actives = null; + } + } + + if (actives) { + activesData = $$$1(actives).not(this._selector).data(DATA_KEY); + + if (activesData && activesData._isTransitioning) { + return; + } + } + + var startEvent = $$$1.Event(Event.SHOW); + $$$1(this._element).trigger(startEvent); + + if (startEvent.isDefaultPrevented()) { + return; + } + + if (actives) { + Collapse._jQueryInterface.call($$$1(actives).not(this._selector), 'hide'); + + if (!activesData) { + $$$1(actives).data(DATA_KEY, null); + } + } + + var dimension = this._getDimension(); + + $$$1(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); + this._element.style[dimension] = 0; + + if (this._triggerArray.length > 0) { + $$$1(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); + } + + this.setTransitioning(true); + + var complete = function complete() { + $$$1(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW); + _this._element.style[dimension] = ''; + + _this.setTransitioning(false); + + $$$1(_this._element).trigger(Event.SHOWN); + }; + + var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + var scrollSize = "scroll" + capitalizedDimension; + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + this._element.style[dimension] = this._element[scrollSize] + "px"; + }; + + _proto.hide = function hide() { + var _this2 = this; + + if (this._isTransitioning || !$$$1(this._element).hasClass(ClassName.SHOW)) { + return; + } + + var startEvent = $$$1.Event(Event.HIDE); + $$$1(this._element).trigger(startEvent); + + if (startEvent.isDefaultPrevented()) { + return; + } + + var dimension = this._getDimension(); + + this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; + Util.reflow(this._element); + $$$1(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW); + + if (this._triggerArray.length > 0) { + for (var i = 0; i < this._triggerArray.length; i++) { + var trigger = this._triggerArray[i]; + var selector = Util.getSelectorFromElement(trigger); + + if (selector !== null) { + var $elem = $$$1(selector); + + if (!$elem.hasClass(ClassName.SHOW)) { + $$$1(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); + } + } + } + } + + this.setTransitioning(true); + + var complete = function complete() { + _this2.setTransitioning(false); + + $$$1(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); + }; + + this._element.style[dimension] = ''; + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + }; + + _proto.setTransitioning = function setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning; + }; + + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + this._config = null; + this._parent = null; + this._element = null; + this._triggerArray = null; + this._isTransitioning = null; + }; // Private + + + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, Default, config); + config.toggle = Boolean(config.toggle); // Coerce string values + + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; + + _proto._getDimension = function _getDimension() { + var hasWidth = $$$1(this._element).hasClass(Dimension.WIDTH); + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; + }; + + _proto._getParent = function _getParent() { + var _this3 = this; + + var parent = null; + + if (Util.isElement(this._config.parent)) { + parent = this._config.parent; // It's a jQuery object + + if (typeof this._config.parent.jquery !== 'undefined') { + parent = this._config.parent[0]; + } + } else { + parent = $$$1(this._config.parent)[0]; + } + + var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]"; + $$$1(parent).find(selector).each(function (i, element) { + _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); + }); + return parent; + }; + + _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { + if (element) { + var isOpen = $$$1(element).hasClass(ClassName.SHOW); + + if (triggerArray.length > 0) { + $$$1(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); + } + } + }; // Static + + + Collapse._getTargetFromElement = function _getTargetFromElement(element) { + var selector = Util.getSelectorFromElement(element); + return selector ? $$$1(selector)[0] : null; + }; + + Collapse._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $this = $$$1(this); + var data = $this.data(DATA_KEY); + + var _config = _objectSpread({}, Default, $this.data(), typeof config === 'object' && config ? config : {}); + + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false; + } + + if (!data) { + data = new Collapse(this, _config); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](); + } + }); + }; + + _createClass(Collapse, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }]); + + return Collapse; + }(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + // preventDefault only for elements (which change the URL) not inside the collapsible element + if (event.currentTarget.tagName === 'A') { + event.preventDefault(); + } + + var $trigger = $$$1(this); + var selector = Util.getSelectorFromElement(this); + $$$1(selector).each(function () { + var $target = $$$1(this); + var data = $target.data(DATA_KEY); + var config = data ? 'toggle' : $trigger.data(); + + Collapse._jQueryInterface.call($target, config); + }); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $$$1.fn[NAME] = Collapse._jQueryInterface; + $$$1.fn[NAME].Constructor = Collapse; + + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Collapse._jQueryInterface; + }; + + return Collapse; + }($); + + /**! + * @fileOverview Kickass library to create and place poppers near their reference elements. + * @version 1.14.3 + * @license + * Copyright (c) 2016 Federico Zivolo and contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'; + + var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; + var timeoutDuration = 0; + for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { + if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) { + timeoutDuration = 1; + break; + } + } + + function microtaskDebounce(fn) { + var called = false; + return function () { + if (called) { + return; + } + called = true; + window.Promise.resolve().then(function () { + called = false; + fn(); + }); + }; + } + + function taskDebounce(fn) { + var scheduled = false; + return function () { + if (!scheduled) { + scheduled = true; + setTimeout(function () { + scheduled = false; + fn(); + }, timeoutDuration); + } + }; + } + + var supportsMicroTasks = isBrowser && window.Promise; + + /** + * Create a debounced version of a method, that's asynchronously deferred + * but called in the minimum time possible. + * + * @method + * @memberof Popper.Utils + * @argument {Function} fn + * @returns {Function} + */ + var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce; + + /** + * Check if the given variable is a function + * @method + * @memberof Popper.Utils + * @argument {Any} functionToCheck - variable to check + * @returns {Boolean} answer to: is a function? + */ + function isFunction(functionToCheck) { + var getType = {}; + return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]'; + } + + /** + * Get CSS computed property of the given element + * @method + * @memberof Popper.Utils + * @argument {Eement} element + * @argument {String} property + */ + function getStyleComputedProperty(element, property) { + if (element.nodeType !== 1) { + return []; + } + // NOTE: 1 DOM access here + var css = getComputedStyle(element, null); + return property ? css[property] : css; + } + + /** + * Returns the parentNode or the host of the element + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} parent + */ + function getParentNode(element) { + if (element.nodeName === 'HTML') { + return element; + } + return element.parentNode || element.host; + } + + /** + * Returns the scrolling parent of the given element + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} scroll parent + */ + function getScrollParent(element) { + // Return body, `getScroll` will take care to get the correct `scrollTop` from it + if (!element) { + return document.body; + } + + switch (element.nodeName) { + case 'HTML': + case 'BODY': + return element.ownerDocument.body; + case '#document': + return element.body; + } + + // Firefox want us to check `-x` and `-y` variations as well + + var _getStyleComputedProp = getStyleComputedProperty(element), + overflow = _getStyleComputedProp.overflow, + overflowX = _getStyleComputedProp.overflowX, + overflowY = _getStyleComputedProp.overflowY; + + if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) { + return element; + } + + return getScrollParent(getParentNode(element)); + } + + var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode); + var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent); + + /** + * Determines if the browser is Internet Explorer + * @method + * @memberof Popper.Utils + * @param {Number} version to check + * @returns {Boolean} isIE + */ + function isIE(version) { + if (version === 11) { + return isIE11; + } + if (version === 10) { + return isIE10; + } + return isIE11 || isIE10; + } + + /** + * Returns the offset parent of the given element + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} offset parent + */ + function getOffsetParent(element) { + if (!element) { + return document.documentElement; + } + + var noOffsetParent = isIE(10) ? document.body : null; + + // NOTE: 1 DOM access here + var offsetParent = element.offsetParent; + // Skip hidden elements which don't have an offsetParent + while (offsetParent === noOffsetParent && element.nextElementSibling) { + offsetParent = (element = element.nextElementSibling).offsetParent; + } + + var nodeName = offsetParent && offsetParent.nodeName; + + if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') { + return element ? element.ownerDocument.documentElement : document.documentElement; + } + + // .offsetParent will return the closest TD or TABLE in case + // no offsetParent is present, I hate this job... + if (['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') { + return getOffsetParent(offsetParent); + } + + return offsetParent; + } + + function isOffsetContainer(element) { + var nodeName = element.nodeName; + + if (nodeName === 'BODY') { + return false; + } + return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element; + } + + /** + * Finds the root node (document, shadowDOM root) of the given element + * @method + * @memberof Popper.Utils + * @argument {Element} node + * @returns {Element} root node + */ + function getRoot(node) { + if (node.parentNode !== null) { + return getRoot(node.parentNode); + } + + return node; + } + + /** + * Finds the offset parent common to the two provided nodes + * @method + * @memberof Popper.Utils + * @argument {Element} element1 + * @argument {Element} element2 + * @returns {Element} common offset parent + */ + function findCommonOffsetParent(element1, element2) { + // This check is needed to avoid errors in case one of the elements isn't defined for any reason + if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { + return document.documentElement; + } + + // Here we make sure to give as "start" the element that comes first in the DOM + var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING; + var start = order ? element1 : element2; + var end = order ? element2 : element1; + + // Get common ancestor container + var range = document.createRange(); + range.setStart(start, 0); + range.setEnd(end, 0); + var commonAncestorContainer = range.commonAncestorContainer; + + // Both nodes are inside #document + + if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) { + if (isOffsetContainer(commonAncestorContainer)) { + return commonAncestorContainer; + } + + return getOffsetParent(commonAncestorContainer); + } + + // one of the nodes is inside shadowDOM, find which one + var element1root = getRoot(element1); + if (element1root.host) { + return findCommonOffsetParent(element1root.host, element2); + } else { + return findCommonOffsetParent(element1, getRoot(element2).host); + } + } + + /** + * Gets the scroll value of the given element in the given side (top and left) + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @argument {String} side `top` or `left` + * @returns {number} amount of scrolled pixels + */ + function getScroll(element) { + var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top'; + + var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft'; + var nodeName = element.nodeName; + + if (nodeName === 'BODY' || nodeName === 'HTML') { + var html = element.ownerDocument.documentElement; + var scrollingElement = element.ownerDocument.scrollingElement || html; + return scrollingElement[upperSide]; + } + + return element[upperSide]; + } + + /* + * Sum or subtract the element scroll values (left and top) from a given rect object + * @method + * @memberof Popper.Utils + * @param {Object} rect - Rect object you want to change + * @param {HTMLElement} element - The element from the function reads the scroll values + * @param {Boolean} subtract - set to true if you want to subtract the scroll values + * @return {Object} rect - The modifier rect object + */ + function includeScroll(rect, element) { + var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + var scrollTop = getScroll(element, 'top'); + var scrollLeft = getScroll(element, 'left'); + var modifier = subtract ? -1 : 1; + rect.top += scrollTop * modifier; + rect.bottom += scrollTop * modifier; + rect.left += scrollLeft * modifier; + rect.right += scrollLeft * modifier; + return rect; + } + + /* + * Helper to detect borders of a given element + * @method + * @memberof Popper.Utils + * @param {CSSStyleDeclaration} styles + * Result of `getStyleComputedProperty` on the given element + * @param {String} axis - `x` or `y` + * @return {number} borders - The borders size of the given axis + */ + + function getBordersSize(styles, axis) { + var sideA = axis === 'x' ? 'Left' : 'Top'; + var sideB = sideA === 'Left' ? 'Right' : 'Bottom'; + + return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10); + } + + function getSize(axis, body, html, computedStyle) { + return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? html['offset' + axis] + computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')] + computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')] : 0); + } + + function getWindowSizes() { + var body = document.body; + var html = document.documentElement; + var computedStyle = isIE(10) && getComputedStyle(html); + + return { + height: getSize('Height', body, html, computedStyle), + width: getSize('Width', body, html, computedStyle) + }; + } + + var classCallCheck = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + }; + + var createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + + + + + + var defineProperty = function (obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + }; + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + /** + * Given element offsets, generate an output similar to getBoundingClientRect + * @method + * @memberof Popper.Utils + * @argument {Object} offsets + * @returns {Object} ClientRect like output + */ + function getClientRect(offsets) { + return _extends({}, offsets, { + right: offsets.left + offsets.width, + bottom: offsets.top + offsets.height + }); + } + + /** + * Get bounding client rect of given element + * @method + * @memberof Popper.Utils + * @param {HTMLElement} element + * @return {Object} client rect + */ + function getBoundingClientRect(element) { + var rect = {}; + + // IE10 10 FIX: Please, don't ask, the element isn't + // considered in DOM in some circumstances... + // This isn't reproducible in IE10 compatibility mode of IE11 + try { + if (isIE(10)) { + rect = element.getBoundingClientRect(); + var scrollTop = getScroll(element, 'top'); + var scrollLeft = getScroll(element, 'left'); + rect.top += scrollTop; + rect.left += scrollLeft; + rect.bottom += scrollTop; + rect.right += scrollLeft; + } else { + rect = element.getBoundingClientRect(); + } + } catch (e) {} + + var result = { + left: rect.left, + top: rect.top, + width: rect.right - rect.left, + height: rect.bottom - rect.top + }; + + // subtract scrollbar size from sizes + var sizes = element.nodeName === 'HTML' ? getWindowSizes() : {}; + var width = sizes.width || element.clientWidth || result.right - result.left; + var height = sizes.height || element.clientHeight || result.bottom - result.top; + + var horizScrollbar = element.offsetWidth - width; + var vertScrollbar = element.offsetHeight - height; + + // if an hypothetical scrollbar is detected, we must be sure it's not a `border` + // we make this check conditional for performance reasons + if (horizScrollbar || vertScrollbar) { + var styles = getStyleComputedProperty(element); + horizScrollbar -= getBordersSize(styles, 'x'); + vertScrollbar -= getBordersSize(styles, 'y'); + + result.width -= horizScrollbar; + result.height -= vertScrollbar; + } + + return getClientRect(result); + } + + function getOffsetRectRelativeToArbitraryNode(children, parent) { + var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + var isIE10 = isIE(10); + var isHTML = parent.nodeName === 'HTML'; + var childrenRect = getBoundingClientRect(children); + var parentRect = getBoundingClientRect(parent); + var scrollParent = getScrollParent(children); + + var styles = getStyleComputedProperty(parent); + var borderTopWidth = parseFloat(styles.borderTopWidth, 10); + var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); + + // In cases where the parent is fixed, we must ignore negative scroll in offset calc + if (fixedPosition && parent.nodeName === 'HTML') { + parentRect.top = Math.max(parentRect.top, 0); + parentRect.left = Math.max(parentRect.left, 0); + } + var offsets = getClientRect({ + top: childrenRect.top - parentRect.top - borderTopWidth, + left: childrenRect.left - parentRect.left - borderLeftWidth, + width: childrenRect.width, + height: childrenRect.height + }); + offsets.marginTop = 0; + offsets.marginLeft = 0; + + // Subtract margins of documentElement in case it's being used as parent + // we do this only on HTML because it's the only element that behaves + // differently when margins are applied to it. The margins are included in + // the box of the documentElement, in the other cases not. + if (!isIE10 && isHTML) { + var marginTop = parseFloat(styles.marginTop, 10); + var marginLeft = parseFloat(styles.marginLeft, 10); + + offsets.top -= borderTopWidth - marginTop; + offsets.bottom -= borderTopWidth - marginTop; + offsets.left -= borderLeftWidth - marginLeft; + offsets.right -= borderLeftWidth - marginLeft; + + // Attach marginTop and marginLeft because in some circumstances we may need them + offsets.marginTop = marginTop; + offsets.marginLeft = marginLeft; + } + + if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') { + offsets = includeScroll(offsets, parent); + } + + return offsets; + } + + function getViewportOffsetRectRelativeToArtbitraryNode(element) { + var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + var html = element.ownerDocument.documentElement; + var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html); + var width = Math.max(html.clientWidth, window.innerWidth || 0); + var height = Math.max(html.clientHeight, window.innerHeight || 0); + + var scrollTop = !excludeScroll ? getScroll(html) : 0; + var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0; + + var offset = { + top: scrollTop - relativeOffset.top + relativeOffset.marginTop, + left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft, + width: width, + height: height + }; + + return getClientRect(offset); + } + + /** + * Check if the given element is fixed or is inside a fixed parent + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @argument {Element} customContainer + * @returns {Boolean} answer to "isFixed?" + */ + function isFixed(element) { + var nodeName = element.nodeName; + if (nodeName === 'BODY' || nodeName === 'HTML') { + return false; + } + if (getStyleComputedProperty(element, 'position') === 'fixed') { + return true; + } + return isFixed(getParentNode(element)); + } + + /** + * Finds the first parent of an element that has a transformed property defined + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} first transformed parent or documentElement + */ + + function getFixedPositionOffsetParent(element) { + // This check is needed to avoid errors in case one of the elements isn't defined for any reason + if (!element || !element.parentElement || isIE()) { + return document.documentElement; + } + var el = element.parentElement; + while (el && getStyleComputedProperty(el, 'transform') === 'none') { + el = el.parentElement; + } + return el || document.documentElement; + } + + /** + * Computed the boundaries limits and return them + * @method + * @memberof Popper.Utils + * @param {HTMLElement} popper + * @param {HTMLElement} reference + * @param {number} padding + * @param {HTMLElement} boundariesElement - Element used to define the boundaries + * @param {Boolean} fixedPosition - Is in fixed position mode + * @returns {Object} Coordinates of the boundaries + */ + function getBoundaries(popper, reference, padding, boundariesElement) { + var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + + // NOTE: 1 DOM access here + + var boundaries = { top: 0, left: 0 }; + var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); + + // Handle viewport case + if (boundariesElement === 'viewport') { + boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition); + } else { + // Handle other cases based on DOM element used as boundaries + var boundariesNode = void 0; + if (boundariesElement === 'scrollParent') { + boundariesNode = getScrollParent(getParentNode(reference)); + if (boundariesNode.nodeName === 'BODY') { + boundariesNode = popper.ownerDocument.documentElement; + } + } else if (boundariesElement === 'window') { + boundariesNode = popper.ownerDocument.documentElement; + } else { + boundariesNode = boundariesElement; + } + + var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); + + // In case of HTML, we need a different computation + if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) { + var _getWindowSizes = getWindowSizes(), + height = _getWindowSizes.height, + width = _getWindowSizes.width; + + boundaries.top += offsets.top - offsets.marginTop; + boundaries.bottom = height + offsets.top; + boundaries.left += offsets.left - offsets.marginLeft; + boundaries.right = width + offsets.left; + } else { + // for all the other DOM elements, this one is good + boundaries = offsets; + } + } + + // Add paddings + boundaries.left += padding; + boundaries.top += padding; + boundaries.right -= padding; + boundaries.bottom -= padding; + + return boundaries; + } + + function getArea(_ref) { + var width = _ref.width, + height = _ref.height; + + return width * height; + } + + /** + * Utility used to transform the `auto` placement to the placement with more + * available space. + * @method + * @memberof Popper.Utils + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) { + var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0; + + if (placement.indexOf('auto') === -1) { + return placement; + } + + var boundaries = getBoundaries(popper, reference, padding, boundariesElement); + + var rects = { + top: { + width: boundaries.width, + height: refRect.top - boundaries.top + }, + right: { + width: boundaries.right - refRect.right, + height: boundaries.height + }, + bottom: { + width: boundaries.width, + height: boundaries.bottom - refRect.bottom + }, + left: { + width: refRect.left - boundaries.left, + height: boundaries.height + } + }; + + var sortedAreas = Object.keys(rects).map(function (key) { + return _extends({ + key: key + }, rects[key], { + area: getArea(rects[key]) + }); + }).sort(function (a, b) { + return b.area - a.area; + }); + + var filteredAreas = sortedAreas.filter(function (_ref2) { + var width = _ref2.width, + height = _ref2.height; + return width >= popper.clientWidth && height >= popper.clientHeight; + }); + + var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key; + + var variation = placement.split('-')[1]; + + return computedPlacement + (variation ? '-' + variation : ''); + } + + /** + * Get offsets to the reference element + * @method + * @memberof Popper.Utils + * @param {Object} state + * @param {Element} popper - the popper element + * @param {Element} reference - the reference element (the popper will be relative to this) + * @param {Element} fixedPosition - is in fixed position mode + * @returns {Object} An object containing the offsets which will be applied to the popper + */ + function getReferenceOffsets(state, popper, reference) { + var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + + var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); + return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition); + } + + /** + * Get the outer sizes of the given element (offset size + margins) + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Object} object containing width and height properties + */ + function getOuterSizes(element) { + var styles = getComputedStyle(element); + var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom); + var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight); + var result = { + width: element.offsetWidth + y, + height: element.offsetHeight + x + }; + return result; + } + + /** + * Get the opposite placement of the given one + * @method + * @memberof Popper.Utils + * @argument {String} placement + * @returns {String} flipped placement + */ + function getOppositePlacement(placement) { + var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; + return placement.replace(/left|right|bottom|top/g, function (matched) { + return hash[matched]; + }); + } + + /** + * Get offsets to the popper + * @method + * @memberof Popper.Utils + * @param {Object} position - CSS position the Popper will get applied + * @param {HTMLElement} popper - the popper element + * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this) + * @param {String} placement - one of the valid placement options + * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper + */ + function getPopperOffsets(popper, referenceOffsets, placement) { + placement = placement.split('-')[0]; + + // Get popper node sizes + var popperRect = getOuterSizes(popper); + + // Add position, width and height to our offsets object + var popperOffsets = { + width: popperRect.width, + height: popperRect.height + }; + + // depending by the popper placement we have to compute its offsets slightly differently + var isHoriz = ['right', 'left'].indexOf(placement) !== -1; + var mainSide = isHoriz ? 'top' : 'left'; + var secondarySide = isHoriz ? 'left' : 'top'; + var measurement = isHoriz ? 'height' : 'width'; + var secondaryMeasurement = !isHoriz ? 'height' : 'width'; + + popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2; + if (placement === secondarySide) { + popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement]; + } else { + popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)]; + } + + return popperOffsets; + } + + /** + * Mimics the `find` method of Array + * @method + * @memberof Popper.Utils + * @argument {Array} arr + * @argument prop + * @argument value + * @returns index or -1 + */ + function find(arr, check) { + // use native find if supported + if (Array.prototype.find) { + return arr.find(check); + } + + // use `filter` to obtain the same behavior of `find` + return arr.filter(check)[0]; + } + + /** + * Return the index of the matching object + * @method + * @memberof Popper.Utils + * @argument {Array} arr + * @argument prop + * @argument value + * @returns index or -1 + */ + function findIndex(arr, prop, value) { + // use native findIndex if supported + if (Array.prototype.findIndex) { + return arr.findIndex(function (cur) { + return cur[prop] === value; + }); + } + + // use `find` + `indexOf` if `findIndex` isn't supported + var match = find(arr, function (obj) { + return obj[prop] === value; + }); + return arr.indexOf(match); + } + + /** + * Loop trough the list of modifiers and run them in order, + * each of them will then edit the data object. + * @method + * @memberof Popper.Utils + * @param {dataObject} data + * @param {Array} modifiers + * @param {String} ends - Optional modifier name used as stopper + * @returns {dataObject} + */ + function runModifiers(modifiers, data, ends) { + var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends)); + + modifiersToRun.forEach(function (modifier) { + if (modifier['function']) { + // eslint-disable-line dot-notation + console.warn('`modifier.function` is deprecated, use `modifier.fn`!'); + } + var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation + if (modifier.enabled && isFunction(fn)) { + // Add properties to offsets to make them a complete clientRect object + // we do this before each modifier to make sure the previous one doesn't + // mess with these values + data.offsets.popper = getClientRect(data.offsets.popper); + data.offsets.reference = getClientRect(data.offsets.reference); + + data = fn(data, modifier); + } + }); + + return data; + } + + /** + * Updates the position of the popper, computing the new offsets and applying + * the new style.
    + * Prefer `scheduleUpdate` over `update` because of performance reasons. + * @method + * @memberof Popper + */ + function update() { + // if popper is destroyed, don't perform any further update + if (this.state.isDestroyed) { + return; + } + + var data = { + instance: this, + styles: {}, + arrowStyles: {}, + attributes: {}, + flipped: false, + offsets: {} + }; + + // compute reference element offsets + data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); + + // compute auto placement, store placement inside the data object, + // modifiers will be able to edit `placement` if needed + // and refer to originalPlacement to know the original value + data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); + + // store the computed placement inside `originalPlacement` + data.originalPlacement = data.placement; + + data.positionFixed = this.options.positionFixed; + + // compute the popper offsets + data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement); + + data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; + + // run the modifiers + data = runModifiers(this.modifiers, data); + + // the first `update` will call `onCreate` callback + // the other ones will call `onUpdate` callback + if (!this.state.isCreated) { + this.state.isCreated = true; + this.options.onCreate(data); + } else { + this.options.onUpdate(data); + } + } + + /** + * Helper used to know if the given modifier is enabled. + * @method + * @memberof Popper.Utils + * @returns {Boolean} + */ + function isModifierEnabled(modifiers, modifierName) { + return modifiers.some(function (_ref) { + var name = _ref.name, + enabled = _ref.enabled; + return enabled && name === modifierName; + }); + } + + /** + * Get the prefixed supported property name + * @method + * @memberof Popper.Utils + * @argument {String} property (camelCase) + * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix) + */ + function getSupportedPropertyName(property) { + var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O']; + var upperProp = property.charAt(0).toUpperCase() + property.slice(1); + + for (var i = 0; i < prefixes.length; i++) { + var prefix = prefixes[i]; + var toCheck = prefix ? '' + prefix + upperProp : property; + if (typeof document.body.style[toCheck] !== 'undefined') { + return toCheck; + } + } + return null; + } + + /** + * Destroy the popper + * @method + * @memberof Popper + */ + function destroy() { + this.state.isDestroyed = true; + + // touch DOM only if `applyStyle` modifier is enabled + if (isModifierEnabled(this.modifiers, 'applyStyle')) { + this.popper.removeAttribute('x-placement'); + this.popper.style.position = ''; + this.popper.style.top = ''; + this.popper.style.left = ''; + this.popper.style.right = ''; + this.popper.style.bottom = ''; + this.popper.style.willChange = ''; + this.popper.style[getSupportedPropertyName('transform')] = ''; + } + + this.disableEventListeners(); + + // remove the popper if user explicity asked for the deletion on destroy + // do not use `remove` because IE11 doesn't support it + if (this.options.removeOnDestroy) { + this.popper.parentNode.removeChild(this.popper); + } + return this; + } + + /** + * Get the window associated with the element + * @argument {Element} element + * @returns {Window} + */ + function getWindow(element) { + var ownerDocument = element.ownerDocument; + return ownerDocument ? ownerDocument.defaultView : window; + } + + function attachToScrollParents(scrollParent, event, callback, scrollParents) { + var isBody = scrollParent.nodeName === 'BODY'; + var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent; + target.addEventListener(event, callback, { passive: true }); + + if (!isBody) { + attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents); + } + scrollParents.push(target); + } + + /** + * Setup needed event listeners used to update the popper position + * @method + * @memberof Popper.Utils + * @private + */ + function setupEventListeners(reference, options, state, updateBound) { + // Resize event listener on window + state.updateBound = updateBound; + getWindow(reference).addEventListener('resize', state.updateBound, { passive: true }); + + // Scroll event listener on scroll parents + var scrollElement = getScrollParent(reference); + attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents); + state.scrollElement = scrollElement; + state.eventsEnabled = true; + + return state; + } + + /** + * It will add resize/scroll events and start recalculating + * position of the popper element when they are triggered. + * @method + * @memberof Popper + */ + function enableEventListeners() { + if (!this.state.eventsEnabled) { + this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate); + } + } + + /** + * Remove event listeners used to update the popper position + * @method + * @memberof Popper.Utils + * @private + */ + function removeEventListeners(reference, state) { + // Remove resize event listener on window + getWindow(reference).removeEventListener('resize', state.updateBound); + + // Remove scroll event listener on scroll parents + state.scrollParents.forEach(function (target) { + target.removeEventListener('scroll', state.updateBound); + }); + + // Reset state + state.updateBound = null; + state.scrollParents = []; + state.scrollElement = null; + state.eventsEnabled = false; + return state; + } + + /** + * It will remove resize/scroll events and won't recalculate popper position + * when they are triggered. It also won't trigger onUpdate callback anymore, + * unless you call `update` method manually. + * @method + * @memberof Popper + */ + function disableEventListeners() { + if (this.state.eventsEnabled) { + cancelAnimationFrame(this.scheduleUpdate); + this.state = removeEventListeners(this.reference, this.state); + } + } + + /** + * Tells if a given input is a number + * @method + * @memberof Popper.Utils + * @param {*} input to check + * @return {Boolean} + */ + function isNumeric(n) { + return n !== '' && !isNaN(parseFloat(n)) && isFinite(n); + } + + /** + * Set the style to the given popper + * @method + * @memberof Popper.Utils + * @argument {Element} element - Element to apply the style to + * @argument {Object} styles + * Object with a list of properties and values which will be applied to the element + */ + function setStyles(element, styles) { + Object.keys(styles).forEach(function (prop) { + var unit = ''; + // add unit if the value is numeric and is one of the following + if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) { + unit = 'px'; + } + element.style[prop] = styles[prop] + unit; + }); + } + + /** + * Set the attributes to the given popper + * @method + * @memberof Popper.Utils + * @argument {Element} element - Element to apply the attributes to + * @argument {Object} styles + * Object with a list of properties and values which will be applied to the element + */ + function setAttributes(element, attributes) { + Object.keys(attributes).forEach(function (prop) { + var value = attributes[prop]; + if (value !== false) { + element.setAttribute(prop, attributes[prop]); + } else { + element.removeAttribute(prop); + } + }); + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} data.styles - List of style properties - values to apply to popper element + * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The same data object + */ + function applyStyle(data) { + // any property present in `data.styles` will be applied to the popper, + // in this way we can make the 3rd party modifiers add custom styles to it + // Be aware, modifiers could override the properties defined in the previous + // lines of this modifier! + setStyles(data.instance.popper, data.styles); + + // any property present in `data.attributes` will be applied to the popper, + // they will be set as HTML attributes of the element + setAttributes(data.instance.popper, data.attributes); + + // if arrowElement is defined and arrowStyles has some properties + if (data.arrowElement && Object.keys(data.arrowStyles).length) { + setStyles(data.arrowElement, data.arrowStyles); + } + + return data; + } + + /** + * Set the x-placement attribute before everything else because it could be used + * to add margins to the popper margins needs to be calculated to get the + * correct popper offsets. + * @method + * @memberof Popper.modifiers + * @param {HTMLElement} reference - The reference element used to position the popper + * @param {HTMLElement} popper - The HTML element used as popper + * @param {Object} options - Popper.js options + */ + function applyStyleOnLoad(reference, popper, options, modifierOptions, state) { + // compute reference element offsets + var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); + + // compute auto placement, store placement inside the data object, + // modifiers will be able to edit `placement` if needed + // and refer to originalPlacement to know the original value + var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding); + + popper.setAttribute('x-placement', placement); + + // Apply `position` to popper before anything else because + // without the position applied we can't guarantee correct computations + setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' }); + + return options; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function computeStyle(data, options) { + var x = options.x, + y = options.y; + var popper = data.offsets.popper; + + // Remove this legacy support in Popper.js v2 + + var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) { + return modifier.name === 'applyStyle'; + }).gpuAcceleration; + if (legacyGpuAccelerationOption !== undefined) { + console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'); + } + var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration; + + var offsetParent = getOffsetParent(data.instance.popper); + var offsetParentRect = getBoundingClientRect(offsetParent); + + // Styles + var styles = { + position: popper.position + }; + + // Avoid blurry text by using full pixel integers. + // For pixel-perfect positioning, top/bottom prefers rounded + // values, while left/right prefers floored values. + var offsets = { + left: Math.floor(popper.left), + top: Math.round(popper.top), + bottom: Math.round(popper.bottom), + right: Math.floor(popper.right) + }; + + var sideA = x === 'bottom' ? 'top' : 'bottom'; + var sideB = y === 'right' ? 'left' : 'right'; + + // if gpuAcceleration is set to `true` and transform is supported, + // we use `translate3d` to apply the position to the popper we + // automatically use the supported prefixed version if needed + var prefixedProperty = getSupportedPropertyName('transform'); + + // now, let's make a step back and look at this code closely (wtf?) + // If the content of the popper grows once it's been positioned, it + // may happen that the popper gets misplaced because of the new content + // overflowing its reference element + // To avoid this problem, we provide two options (x and y), which allow + // the consumer to define the offset origin. + // If we position a popper on top of a reference element, we can set + // `x` to `top` to make the popper grow towards its top instead of + // its bottom. + var left = void 0, + top = void 0; + if (sideA === 'bottom') { + top = -offsetParentRect.height + offsets.bottom; + } else { + top = offsets.top; + } + if (sideB === 'right') { + left = -offsetParentRect.width + offsets.right; + } else { + left = offsets.left; + } + if (gpuAcceleration && prefixedProperty) { + styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)'; + styles[sideA] = 0; + styles[sideB] = 0; + styles.willChange = 'transform'; + } else { + // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties + var invertTop = sideA === 'bottom' ? -1 : 1; + var invertLeft = sideB === 'right' ? -1 : 1; + styles[sideA] = top * invertTop; + styles[sideB] = left * invertLeft; + styles.willChange = sideA + ', ' + sideB; + } + + // Attributes + var attributes = { + 'x-placement': data.placement + }; + + // Update `data` attributes, styles and arrowStyles + data.attributes = _extends({}, attributes, data.attributes); + data.styles = _extends({}, styles, data.styles); + data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles); + + return data; + } + + /** + * Helper used to know if the given modifier depends from another one.
    + * It checks if the needed modifier is listed and enabled. + * @method + * @memberof Popper.Utils + * @param {Array} modifiers - list of modifiers + * @param {String} requestingName - name of requesting modifier + * @param {String} requestedName - name of requested modifier + * @returns {Boolean} + */ + function isModifierRequired(modifiers, requestingName, requestedName) { + var requesting = find(modifiers, function (_ref) { + var name = _ref.name; + return name === requestingName; + }); + + var isRequired = !!requesting && modifiers.some(function (modifier) { + return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order; + }); + + if (!isRequired) { + var _requesting = '`' + requestingName + '`'; + var requested = '`' + requestedName + '`'; + console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!'); + } + return isRequired; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function arrow(data, options) { + var _data$offsets$arrow; + + // arrow depends on keepTogether in order to work + if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) { + return data; + } + + var arrowElement = options.element; + + // if arrowElement is a string, suppose it's a CSS selector + if (typeof arrowElement === 'string') { + arrowElement = data.instance.popper.querySelector(arrowElement); + + // if arrowElement is not found, don't run the modifier + if (!arrowElement) { + return data; + } + } else { + // if the arrowElement isn't a query selector we must check that the + // provided DOM node is child of its popper node + if (!data.instance.popper.contains(arrowElement)) { + console.warn('WARNING: `arrow.element` must be child of its popper element!'); + return data; + } + } + + var placement = data.placement.split('-')[0]; + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + + var isVertical = ['left', 'right'].indexOf(placement) !== -1; + + var len = isVertical ? 'height' : 'width'; + var sideCapitalized = isVertical ? 'Top' : 'Left'; + var side = sideCapitalized.toLowerCase(); + var altSide = isVertical ? 'left' : 'top'; + var opSide = isVertical ? 'bottom' : 'right'; + var arrowElementSize = getOuterSizes(arrowElement)[len]; + + // + // extends keepTogether behavior making sure the popper and its + // reference have enough pixels in conjuction + // + + // top/left side + if (reference[opSide] - arrowElementSize < popper[side]) { + data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize); + } + // bottom/right side + if (reference[side] + arrowElementSize > popper[opSide]) { + data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; + } + data.offsets.popper = getClientRect(data.offsets.popper); + + // compute center of the popper + var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; + + // Compute the sideValue using the updated popper offsets + // take popper margin in account because we don't have this info available + var css = getStyleComputedProperty(data.instance.popper); + var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10); + var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10); + var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; + + // prevent arrowElement from being placed not contiguously to its popper + sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); + + data.arrowElement = arrowElement; + data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow); + + return data; + } + + /** + * Get the opposite placement variation of the given one + * @method + * @memberof Popper.Utils + * @argument {String} placement variation + * @returns {String} flipped placement variation + */ + function getOppositeVariation(variation) { + if (variation === 'end') { + return 'start'; + } else if (variation === 'start') { + return 'end'; + } + return variation; + } + + /** + * List of accepted placements to use as values of the `placement` option.
    + * Valid placements are: + * - `auto` + * - `top` + * - `right` + * - `bottom` + * - `left` + * + * Each placement can have a variation from this list: + * - `-start` + * - `-end` + * + * Variations are interpreted easily if you think of them as the left to right + * written languages. Horizontally (`top` and `bottom`), `start` is left and `end` + * is right.
    + * Vertically (`left` and `right`), `start` is top and `end` is bottom. + * + * Some valid examples are: + * - `top-end` (on top of reference, right aligned) + * - `right-start` (on right of reference, top aligned) + * - `bottom` (on bottom, centered) + * - `auto-right` (on the side with more space available, alignment depends by placement) + * + * @static + * @type {Array} + * @enum {String} + * @readonly + * @method placements + * @memberof Popper + */ + var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; + + // Get rid of `auto` `auto-start` and `auto-end` + var validPlacements = placements.slice(3); + + /** + * Given an initial placement, returns all the subsequent placements + * clockwise (or counter-clockwise). + * + * @method + * @memberof Popper.Utils + * @argument {String} placement - A valid placement (it accepts variations) + * @argument {Boolean} counter - Set to true to walk the placements counterclockwise + * @returns {Array} placements including their variations + */ + function clockwise(placement) { + var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + var index = validPlacements.indexOf(placement); + var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index)); + return counter ? arr.reverse() : arr; + } + + var BEHAVIORS = { + FLIP: 'flip', + CLOCKWISE: 'clockwise', + COUNTERCLOCKWISE: 'counterclockwise' + }; + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function flip(data, options) { + // if `inner` modifier is enabled, we can't use the `flip` modifier + if (isModifierEnabled(data.instance.modifiers, 'inner')) { + return data; + } + + if (data.flipped && data.placement === data.originalPlacement) { + // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides + return data; + } + + var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed); + + var placement = data.placement.split('-')[0]; + var placementOpposite = getOppositePlacement(placement); + var variation = data.placement.split('-')[1] || ''; + + var flipOrder = []; + + switch (options.behavior) { + case BEHAVIORS.FLIP: + flipOrder = [placement, placementOpposite]; + break; + case BEHAVIORS.CLOCKWISE: + flipOrder = clockwise(placement); + break; + case BEHAVIORS.COUNTERCLOCKWISE: + flipOrder = clockwise(placement, true); + break; + default: + flipOrder = options.behavior; + } + + flipOrder.forEach(function (step, index) { + if (placement !== step || flipOrder.length === index + 1) { + return data; + } + + placement = data.placement.split('-')[0]; + placementOpposite = getOppositePlacement(placement); + + var popperOffsets = data.offsets.popper; + var refOffsets = data.offsets.reference; + + // using floor because the reference offsets may contain decimals we are not going to consider here + var floor = Math.floor; + var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom); + + var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left); + var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right); + var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top); + var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom); + + var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; + + // flip the variation if required + var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; + var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); + + if (overlapsRef || overflowsBoundaries || flippedVariation) { + // this boolean to detect any flip loop + data.flipped = true; + + if (overlapsRef || overflowsBoundaries) { + placement = flipOrder[index + 1]; + } + + if (flippedVariation) { + variation = getOppositeVariation(variation); + } + + data.placement = placement + (variation ? '-' + variation : ''); + + // this object contains `position`, we want to preserve it along with + // any additional property we may add in the future + data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement)); + + data = runModifiers(data.instance.modifiers, data, 'flip'); + } + }); + return data; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function keepTogether(data) { + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + + var placement = data.placement.split('-')[0]; + var floor = Math.floor; + var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; + var side = isVertical ? 'right' : 'bottom'; + var opSide = isVertical ? 'left' : 'top'; + var measurement = isVertical ? 'width' : 'height'; + + if (popper[side] < floor(reference[opSide])) { + data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement]; + } + if (popper[opSide] > floor(reference[side])) { + data.offsets.popper[opSide] = floor(reference[side]); + } + + return data; + } + + /** + * Converts a string containing value + unit into a px value number + * @function + * @memberof {modifiers~offset} + * @private + * @argument {String} str - Value + unit string + * @argument {String} measurement - `height` or `width` + * @argument {Object} popperOffsets + * @argument {Object} referenceOffsets + * @returns {Number|String} + * Value in pixels, or original string if no values were extracted + */ + function toValue(str, measurement, popperOffsets, referenceOffsets) { + // separate value from unit + var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/); + var value = +split[1]; + var unit = split[2]; + + // If it's not a number it's an operator, I guess + if (!value) { + return str; + } + + if (unit.indexOf('%') === 0) { + var element = void 0; + switch (unit) { + case '%p': + element = popperOffsets; + break; + case '%': + case '%r': + default: + element = referenceOffsets; + } + + var rect = getClientRect(element); + return rect[measurement] / 100 * value; + } else if (unit === 'vh' || unit === 'vw') { + // if is a vh or vw, we calculate the size based on the viewport + var size = void 0; + if (unit === 'vh') { + size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); + } else { + size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); + } + return size / 100 * value; + } else { + // if is an explicit pixel unit, we get rid of the unit and keep the value + // if is an implicit unit, it's px, and we return just the value + return value; + } + } + + /** + * Parse an `offset` string to extrapolate `x` and `y` numeric offsets. + * @function + * @memberof {modifiers~offset} + * @private + * @argument {String} offset + * @argument {Object} popperOffsets + * @argument {Object} referenceOffsets + * @argument {String} basePlacement + * @returns {Array} a two cells array with x and y offsets in numbers + */ + function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) { + var offsets = [0, 0]; + + // Use height if placement is left or right and index is 0 otherwise use width + // in this way the first offset will use an axis and the second one + // will use the other one + var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; + + // Split the offset string to obtain a list of values and operands + // The regex addresses values with the plus or minus sign in front (+10, -20, etc) + var fragments = offset.split(/(\+|\-)/).map(function (frag) { + return frag.trim(); + }); + + // Detect if the offset string contains a pair of values or a single one + // they could be separated by comma or space + var divider = fragments.indexOf(find(fragments, function (frag) { + return frag.search(/,|\s/) !== -1; + })); + + if (fragments[divider] && fragments[divider].indexOf(',') === -1) { + console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.'); + } + + // If divider is found, we divide the list of values and operands to divide + // them by ofset X and Y. + var splitRegex = /\s*,\s*|\s+/; + var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; + + // Convert the values with units to absolute pixels to allow our computations + ops = ops.map(function (op, index) { + // Most of the units rely on the orientation of the popper + var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width'; + var mergeWithPrevious = false; + return op + // This aggregates any `+` or `-` sign that aren't considered operators + // e.g.: 10 + +5 => [10, +, +5] + .reduce(function (a, b) { + if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) { + a[a.length - 1] = b; + mergeWithPrevious = true; + return a; + } else if (mergeWithPrevious) { + a[a.length - 1] += b; + mergeWithPrevious = false; + return a; + } else { + return a.concat(b); + } + }, []) + // Here we convert the string values into number values (in px) + .map(function (str) { + return toValue(str, measurement, popperOffsets, referenceOffsets); + }); + }); + + // Loop trough the offsets arrays and execute the operations + ops.forEach(function (op, index) { + op.forEach(function (frag, index2) { + if (isNumeric(frag)) { + offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1); + } + }); + }); + return offsets; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @argument {Number|String} options.offset=0 + * The offset value as described in the modifier description + * @returns {Object} The data object, properly modified + */ + function offset(data, _ref) { + var offset = _ref.offset; + var placement = data.placement, + _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + + var basePlacement = placement.split('-')[0]; + + var offsets = void 0; + if (isNumeric(+offset)) { + offsets = [+offset, 0]; + } else { + offsets = parseOffset(offset, popper, reference, basePlacement); + } + + if (basePlacement === 'left') { + popper.top += offsets[0]; + popper.left -= offsets[1]; + } else if (basePlacement === 'right') { + popper.top += offsets[0]; + popper.left += offsets[1]; + } else if (basePlacement === 'top') { + popper.left += offsets[0]; + popper.top -= offsets[1]; + } else if (basePlacement === 'bottom') { + popper.left += offsets[0]; + popper.top += offsets[1]; + } + + data.popper = popper; + return data; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function preventOverflow(data, options) { + var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); + + // If offsetParent is the reference element, we really want to + // go one step up and use the next offsetParent as reference to + // avoid to make this modifier completely useless and look like broken + if (data.instance.reference === boundariesElement) { + boundariesElement = getOffsetParent(boundariesElement); + } + + // NOTE: DOM access here + // resets the popper's position so that the document size can be calculated excluding + // the size of the popper element itself + var transformProp = getSupportedPropertyName('transform'); + var popperStyles = data.instance.popper.style; // assignment to help minification + var top = popperStyles.top, + left = popperStyles.left, + transform = popperStyles[transformProp]; + + popperStyles.top = ''; + popperStyles.left = ''; + popperStyles[transformProp] = ''; + + var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); + + // NOTE: DOM access here + // restores the original style properties after the offsets have been computed + popperStyles.top = top; + popperStyles.left = left; + popperStyles[transformProp] = transform; + + options.boundaries = boundaries; + + var order = options.priority; + var popper = data.offsets.popper; + + var check = { + primary: function primary(placement) { + var value = popper[placement]; + if (popper[placement] < boundaries[placement] && !options.escapeWithReference) { + value = Math.max(popper[placement], boundaries[placement]); + } + return defineProperty({}, placement, value); + }, + secondary: function secondary(placement) { + var mainSide = placement === 'right' ? 'left' : 'top'; + var value = popper[mainSide]; + if (popper[placement] > boundaries[placement] && !options.escapeWithReference) { + value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height)); + } + return defineProperty({}, mainSide, value); + } + }; + + order.forEach(function (placement) { + var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary'; + popper = _extends({}, popper, check[side](placement)); + }); + + data.offsets.popper = popper; + + return data; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function shift(data) { + var placement = data.placement; + var basePlacement = placement.split('-')[0]; + var shiftvariation = placement.split('-')[1]; + + // if shift shiftvariation is specified, run the modifier + if (shiftvariation) { + var _data$offsets = data.offsets, + reference = _data$offsets.reference, + popper = _data$offsets.popper; + + var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1; + var side = isVertical ? 'left' : 'top'; + var measurement = isVertical ? 'width' : 'height'; + + var shiftOffsets = { + start: defineProperty({}, side, reference[side]), + end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement]) + }; + + data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]); + } + + return data; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function hide(data) { + if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) { + return data; + } + + var refRect = data.offsets.reference; + var bound = find(data.instance.modifiers, function (modifier) { + return modifier.name === 'preventOverflow'; + }).boundaries; + + if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) { + // Avoid unnecessary DOM access if visibility hasn't changed + if (data.hide === true) { + return data; + } + + data.hide = true; + data.attributes['x-out-of-boundaries'] = ''; + } else { + // Avoid unnecessary DOM access if visibility hasn't changed + if (data.hide === false) { + return data; + } + + data.hide = false; + data.attributes['x-out-of-boundaries'] = false; + } + + return data; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function inner(data) { + var placement = data.placement; + var basePlacement = placement.split('-')[0]; + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + + var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1; + + var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1; + + popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0); + + data.placement = getOppositePlacement(placement); + data.offsets.popper = getClientRect(popper); + + return data; + } + + /** + * Modifier function, each modifier can have a function of this type assigned + * to its `fn` property.
    + * These functions will be called on each update, this means that you must + * make sure they are performant enough to avoid performance bottlenecks. + * + * @function ModifierFn + * @argument {dataObject} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {dataObject} The data object, properly modified + */ + + /** + * Modifiers are plugins used to alter the behavior of your poppers.
    + * Popper.js uses a set of 9 modifiers to provide all the basic functionalities + * needed by the library. + * + * Usually you don't want to override the `order`, `fn` and `onLoad` props. + * All the other properties are configurations that could be tweaked. + * @namespace modifiers + */ + var modifiers = { + /** + * Modifier used to shift the popper on the start or end of its reference + * element.
    + * It will read the variation of the `placement` property.
    + * It can be one either `-end` or `-start`. + * @memberof modifiers + * @inner + */ + shift: { + /** @prop {number} order=100 - Index used to define the order of execution */ + order: 100, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: shift + }, + + /** + * The `offset` modifier can shift your popper on both its axis. + * + * It accepts the following units: + * - `px` or unitless, interpreted as pixels + * - `%` or `%r`, percentage relative to the length of the reference element + * - `%p`, percentage relative to the length of the popper element + * - `vw`, CSS viewport width unit + * - `vh`, CSS viewport height unit + * + * For length is intended the main axis relative to the placement of the popper.
    + * This means that if the placement is `top` or `bottom`, the length will be the + * `width`. In case of `left` or `right`, it will be the height. + * + * You can provide a single value (as `Number` or `String`), or a pair of values + * as `String` divided by a comma or one (or more) white spaces.
    + * The latter is a deprecated method because it leads to confusion and will be + * removed in v2.
    + * Additionally, it accepts additions and subtractions between different units. + * Note that multiplications and divisions aren't supported. + * + * Valid examples are: + * ``` + * 10 + * '10%' + * '10, 10' + * '10%, 10' + * '10 + 10%' + * '10 - 5vh + 3%' + * '-10px + 5vh, 5px - 6%' + * ``` + * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap + * > with their reference element, unfortunately, you will have to disable the `flip` modifier. + * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373) + * + * @memberof modifiers + * @inner + */ + offset: { + /** @prop {number} order=200 - Index used to define the order of execution */ + order: 200, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: offset, + /** @prop {Number|String} offset=0 + * The offset value as described in the modifier description + */ + offset: 0 + }, + + /** + * Modifier used to prevent the popper from being positioned outside the boundary. + * + * An scenario exists where the reference itself is not within the boundaries.
    + * We can say it has "escaped the boundaries" — or just "escaped".
    + * In this case we need to decide whether the popper should either: + * + * - detach from the reference and remain "trapped" in the boundaries, or + * - if it should ignore the boundary and "escape with its reference" + * + * When `escapeWithReference` is set to`true` and reference is completely + * outside its boundaries, the popper will overflow (or completely leave) + * the boundaries in order to remain attached to the edge of the reference. + * + * @memberof modifiers + * @inner + */ + preventOverflow: { + /** @prop {number} order=300 - Index used to define the order of execution */ + order: 300, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: preventOverflow, + /** + * @prop {Array} [priority=['left','right','top','bottom']] + * Popper will try to prevent overflow following these priorities by default, + * then, it could overflow on the left and on top of the `boundariesElement` + */ + priority: ['left', 'right', 'top', 'bottom'], + /** + * @prop {number} padding=5 + * Amount of pixel used to define a minimum distance between the boundaries + * and the popper this makes sure the popper has always a little padding + * between the edges of its container + */ + padding: 5, + /** + * @prop {String|HTMLElement} boundariesElement='scrollParent' + * Boundaries used by the modifier, can be `scrollParent`, `window`, + * `viewport` or any DOM element. + */ + boundariesElement: 'scrollParent' + }, + + /** + * Modifier used to make sure the reference and its popper stay near eachothers + * without leaving any gap between the two. Expecially useful when the arrow is + * enabled and you want to assure it to point to its reference element. + * It cares only about the first axis, you can still have poppers with margin + * between the popper and its reference element. + * @memberof modifiers + * @inner + */ + keepTogether: { + /** @prop {number} order=400 - Index used to define the order of execution */ + order: 400, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: keepTogether + }, + + /** + * This modifier is used to move the `arrowElement` of the popper to make + * sure it is positioned between the reference element and its popper element. + * It will read the outer size of the `arrowElement` node to detect how many + * pixels of conjuction are needed. + * + * It has no effect if no `arrowElement` is provided. + * @memberof modifiers + * @inner + */ + arrow: { + /** @prop {number} order=500 - Index used to define the order of execution */ + order: 500, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: arrow, + /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */ + element: '[x-arrow]' + }, + + /** + * Modifier used to flip the popper's placement when it starts to overlap its + * reference element. + * + * Requires the `preventOverflow` modifier before it in order to work. + * + * **NOTE:** this modifier will interrupt the current update cycle and will + * restart it if it detects the need to flip the placement. + * @memberof modifiers + * @inner + */ + flip: { + /** @prop {number} order=600 - Index used to define the order of execution */ + order: 600, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: flip, + /** + * @prop {String|Array} behavior='flip' + * The behavior used to change the popper's placement. It can be one of + * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid + * placements (with optional variations). + */ + behavior: 'flip', + /** + * @prop {number} padding=5 + * The popper will flip if it hits the edges of the `boundariesElement` + */ + padding: 5, + /** + * @prop {String|HTMLElement} boundariesElement='viewport' + * The element which will define the boundaries of the popper position, + * the popper will never be placed outside of the defined boundaries + * (except if keepTogether is enabled) + */ + boundariesElement: 'viewport' + }, + + /** + * Modifier used to make the popper flow toward the inner of the reference element. + * By default, when this modifier is disabled, the popper will be placed outside + * the reference element. + * @memberof modifiers + * @inner + */ + inner: { + /** @prop {number} order=700 - Index used to define the order of execution */ + order: 700, + /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */ + enabled: false, + /** @prop {ModifierFn} */ + fn: inner + }, + + /** + * Modifier used to hide the popper when its reference element is outside of the + * popper boundaries. It will set a `x-out-of-boundaries` attribute which can + * be used to hide with a CSS selector the popper when its reference is + * out of boundaries. + * + * Requires the `preventOverflow` modifier before it in order to work. + * @memberof modifiers + * @inner + */ + hide: { + /** @prop {number} order=800 - Index used to define the order of execution */ + order: 800, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: hide + }, + + /** + * Computes the style that will be applied to the popper element to gets + * properly positioned. + * + * Note that this modifier will not touch the DOM, it just prepares the styles + * so that `applyStyle` modifier can apply it. This separation is useful + * in case you need to replace `applyStyle` with a custom implementation. + * + * This modifier has `850` as `order` value to maintain backward compatibility + * with previous versions of Popper.js. Expect the modifiers ordering method + * to change in future major versions of the library. + * + * @memberof modifiers + * @inner + */ + computeStyle: { + /** @prop {number} order=850 - Index used to define the order of execution */ + order: 850, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: computeStyle, + /** + * @prop {Boolean} gpuAcceleration=true + * If true, it uses the CSS 3d transformation to position the popper. + * Otherwise, it will use the `top` and `left` properties. + */ + gpuAcceleration: true, + /** + * @prop {string} [x='bottom'] + * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin. + * Change this if your popper should grow in a direction different from `bottom` + */ + x: 'bottom', + /** + * @prop {string} [x='left'] + * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin. + * Change this if your popper should grow in a direction different from `right` + */ + y: 'right' + }, + + /** + * Applies the computed styles to the popper element. + * + * All the DOM manipulations are limited to this modifier. This is useful in case + * you want to integrate Popper.js inside a framework or view library and you + * want to delegate all the DOM manipulations to it. + * + * Note that if you disable this modifier, you must make sure the popper element + * has its position set to `absolute` before Popper.js can do its work! + * + * Just disable this modifier and define you own to achieve the desired effect. + * + * @memberof modifiers + * @inner + */ + applyStyle: { + /** @prop {number} order=900 - Index used to define the order of execution */ + order: 900, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: applyStyle, + /** @prop {Function} */ + onLoad: applyStyleOnLoad, + /** + * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier + * @prop {Boolean} gpuAcceleration=true + * If true, it uses the CSS 3d transformation to position the popper. + * Otherwise, it will use the `top` and `left` properties. + */ + gpuAcceleration: undefined + } + }; + + /** + * The `dataObject` is an object containing all the informations used by Popper.js + * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks. + * @name dataObject + * @property {Object} data.instance The Popper.js instance + * @property {String} data.placement Placement applied to popper + * @property {String} data.originalPlacement Placement originally defined on init + * @property {Boolean} data.flipped True if popper has been flipped by flip modifier + * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper. + * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier + * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`) + * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`) + * @property {Object} data.boundaries Offsets of the popper boundaries + * @property {Object} data.offsets The measurements of popper, reference and arrow elements. + * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values + * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values + * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0 + */ + + /** + * Default options provided to Popper.js constructor.
    + * These can be overriden using the `options` argument of Popper.js.
    + * To override an option, simply pass as 3rd argument an object with the same + * structure of this object, example: + * ``` + * new Popper(ref, pop, { + * modifiers: { + * preventOverflow: { enabled: false } + * } + * }) + * ``` + * @type {Object} + * @static + * @memberof Popper + */ + var Defaults = { + /** + * Popper's placement + * @prop {Popper.placements} placement='bottom' + */ + placement: 'bottom', + + /** + * Set this to true if you want popper to position it self in 'fixed' mode + * @prop {Boolean} positionFixed=false + */ + positionFixed: false, + + /** + * Whether events (resize, scroll) are initially enabled + * @prop {Boolean} eventsEnabled=true + */ + eventsEnabled: true, + + /** + * Set to true if you want to automatically remove the popper when + * you call the `destroy` method. + * @prop {Boolean} removeOnDestroy=false + */ + removeOnDestroy: false, + + /** + * Callback called when the popper is created.
    + * By default, is set to no-op.
    + * Access Popper.js instance with `data.instance`. + * @prop {onCreate} + */ + onCreate: function onCreate() {}, + + /** + * Callback called when the popper is updated, this callback is not called + * on the initialization/creation of the popper, but only on subsequent + * updates.
    + * By default, is set to no-op.
    + * Access Popper.js instance with `data.instance`. + * @prop {onUpdate} + */ + onUpdate: function onUpdate() {}, + + /** + * List of modifiers used to modify the offsets before they are applied to the popper. + * They provide most of the functionalities of Popper.js + * @prop {modifiers} + */ + modifiers: modifiers + }; + + /** + * @callback onCreate + * @param {dataObject} data + */ + + /** + * @callback onUpdate + * @param {dataObject} data + */ + + // Utils + // Methods + var Popper = function () { + /** + * Create a new Popper.js instance + * @class Popper + * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper + * @param {HTMLElement} popper - The HTML element used as popper. + * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults) + * @return {Object} instance - The generated Popper.js instance + */ + function Popper(reference, popper) { + var _this = this; + + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + classCallCheck(this, Popper); + + this.scheduleUpdate = function () { + return requestAnimationFrame(_this.update); + }; + + // make update() debounced, so that it only runs at most once-per-tick + this.update = debounce(this.update.bind(this)); + + // with {} we create a new object with the options inside it + this.options = _extends({}, Popper.Defaults, options); + + // init state + this.state = { + isDestroyed: false, + isCreated: false, + scrollParents: [] + }; + + // get reference and popper elements (allow jQuery wrappers) + this.reference = reference && reference.jquery ? reference[0] : reference; + this.popper = popper && popper.jquery ? popper[0] : popper; + + // Deep merge modifiers options + this.options.modifiers = {}; + Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) { + _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {}); + }); + + // Refactoring modifiers' list (Object => Array) + this.modifiers = Object.keys(this.options.modifiers).map(function (name) { + return _extends({ + name: name + }, _this.options.modifiers[name]); + }) + // sort the modifiers by order + .sort(function (a, b) { + return a.order - b.order; + }); + + // modifiers have the ability to execute arbitrary code when Popper.js get inited + // such code is executed in the same order of its modifier + // they could add new properties to their options configuration + // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`! + this.modifiers.forEach(function (modifierOptions) { + if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) { + modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state); + } + }); + + // fire the first update to position the popper in the right place + this.update(); + + var eventsEnabled = this.options.eventsEnabled; + if (eventsEnabled) { + // setup event listeners, they will take care of update the position in specific situations + this.enableEventListeners(); + } + + this.state.eventsEnabled = eventsEnabled; + } + + // We can't use class properties because they don't get listed in the + // class prototype and break stuff like Sinon stubs + + + createClass(Popper, [{ + key: 'update', + value: function update$$1() { + return update.call(this); + } + }, { + key: 'destroy', + value: function destroy$$1() { + return destroy.call(this); + } + }, { + key: 'enableEventListeners', + value: function enableEventListeners$$1() { + return enableEventListeners.call(this); + } + }, { + key: 'disableEventListeners', + value: function disableEventListeners$$1() { + return disableEventListeners.call(this); + } + + /** + * Schedule an update, it will run on the next UI update available + * @method scheduleUpdate + * @memberof Popper + */ + + + /** + * Collection of utilities useful when writing custom modifiers. + * Starting from version 1.7, this method is available only if you + * include `popper-utils.js` before `popper.js`. + * + * **DEPRECATION**: This way to access PopperUtils is deprecated + * and will be removed in v2! Use the PopperUtils module directly instead. + * Due to the high instability of the methods contained in Utils, we can't + * guarantee them to follow semver. Use them at your own risk! + * @static + * @private + * @type {Object} + * @deprecated since version 1.8 + * @member Utils + * @memberof Popper + */ + + }]); + return Popper; + }(); + + /** + * The `referenceObject` is an object that provides an interface compatible with Popper.js + * and lets you use it as replacement of a real DOM node.
    + * You can use this method to position a popper relatively to a set of coordinates + * in case you don't have a DOM node to use as reference. + * + * ``` + * new Popper(referenceObject, popperNode); + * ``` + * + * NB: This feature isn't supported in Internet Explorer 10 + * @name referenceObject + * @property {Function} data.getBoundingClientRect + * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method. + * @property {number} data.clientWidth + * An ES6 getter that will return the width of the virtual reference element. + * @property {number} data.clientHeight + * An ES6 getter that will return the height of the virtual reference element. + */ + + + Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils; + Popper.placements = placements; + Popper.Defaults = Defaults; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.1): dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Dropdown = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'dropdown'; + var VERSION = '4.1.1'; + var DATA_KEY = 'bs.dropdown'; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + + var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key + + var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key + + var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key + + var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key + + var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) + + var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE); + var Event = { + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, + SHOW: "show" + EVENT_KEY, + SHOWN: "shown" + EVENT_KEY, + CLICK: "click" + EVENT_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, + KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY, + KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY + }; + var ClassName = { + DISABLED: 'disabled', + SHOW: 'show', + DROPUP: 'dropup', + DROPRIGHT: 'dropright', + DROPLEFT: 'dropleft', + MENURIGHT: 'dropdown-menu-right', + MENULEFT: 'dropdown-menu-left', + POSITION_STATIC: 'position-static' + }; + var Selector = { + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: '.dropdown form', + MENU: '.dropdown-menu', + NAVBAR_NAV: '.navbar-nav', + VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)' + }; + var AttachmentMap = { + TOP: 'top-start', + TOPEND: 'top-end', + BOTTOM: 'bottom-start', + BOTTOMEND: 'bottom-end', + RIGHT: 'right-start', + RIGHTEND: 'right-end', + LEFT: 'left-start', + LEFTEND: 'left-end' + }; + var Default = { + offset: 0, + flip: true, + boundary: 'scrollParent', + reference: 'toggle', + display: 'dynamic' + }; + var DefaultType = { + offset: '(number|string|function)', + flip: 'boolean', + boundary: '(string|element)', + reference: '(string|element)', + display: 'string' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Dropdown = + /*#__PURE__*/ + function () { + function Dropdown(element, config) { + this._element = element; + this._popper = null; + this._config = this._getConfig(config); + this._menu = this._getMenuElement(); + this._inNavbar = this._detectNavbar(); + + this._addEventListeners(); + } // Getters + + + var _proto = Dropdown.prototype; + + // Public + _proto.toggle = function toggle() { + if (this._element.disabled || $$$1(this._element).hasClass(ClassName.DISABLED)) { + return; + } + + var parent = Dropdown._getParentFromElement(this._element); + + var isActive = $$$1(this._menu).hasClass(ClassName.SHOW); + + Dropdown._clearMenus(); + + if (isActive) { + return; + } + + var relatedTarget = { + relatedTarget: this._element + }; + var showEvent = $$$1.Event(Event.SHOW, relatedTarget); + $$$1(parent).trigger(showEvent); + + if (showEvent.isDefaultPrevented()) { + return; + } // Disable totally Popper.js for Dropdown in Navbar + + + if (!this._inNavbar) { + /** + * Check for Popper dependency + * Popper - https://popper.js.org + */ + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)'); + } + + var referenceElement = this._element; + + if (this._config.reference === 'parent') { + referenceElement = parent; + } else if (Util.isElement(this._config.reference)) { + referenceElement = this._config.reference; // Check if it's jQuery element + + if (typeof this._config.reference.jquery !== 'undefined') { + referenceElement = this._config.reference[0]; + } + } // If boundary is not `scrollParent`, then set position to `static` + // to allow the menu to "escape" the scroll parent's boundaries + // https://github.com/twbs/bootstrap/issues/24251 + + + if (this._config.boundary !== 'scrollParent') { + $$$1(parent).addClass(ClassName.POSITION_STATIC); + } + + this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig()); + } // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + + if ('ontouchstart' in document.documentElement && $$$1(parent).closest(Selector.NAVBAR_NAV).length === 0) { + $$$1(document.body).children().on('mouseover', null, $$$1.noop); + } + + this._element.focus(); + + this._element.setAttribute('aria-expanded', true); + + $$$1(this._menu).toggleClass(ClassName.SHOW); + $$$1(parent).toggleClass(ClassName.SHOW).trigger($$$1.Event(Event.SHOWN, relatedTarget)); + }; + + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + $$$1(this._element).off(EVENT_KEY); + this._element = null; + this._menu = null; + + if (this._popper !== null) { + this._popper.destroy(); + + this._popper = null; + } + }; + + _proto.update = function update() { + this._inNavbar = this._detectNavbar(); + + if (this._popper !== null) { + this._popper.scheduleUpdate(); + } + }; // Private + + + _proto._addEventListeners = function _addEventListeners() { + var _this = this; + + $$$1(this._element).on(Event.CLICK, function (event) { + event.preventDefault(); + event.stopPropagation(); + + _this.toggle(); + }); + }; + + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, this.constructor.Default, $$$1(this._element).data(), config); + Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); + return config; + }; + + _proto._getMenuElement = function _getMenuElement() { + if (!this._menu) { + var parent = Dropdown._getParentFromElement(this._element); + + this._menu = $$$1(parent).find(Selector.MENU)[0]; + } + + return this._menu; + }; + + _proto._getPlacement = function _getPlacement() { + var $parentDropdown = $$$1(this._element).parent(); + var placement = AttachmentMap.BOTTOM; // Handle dropup + + if ($parentDropdown.hasClass(ClassName.DROPUP)) { + placement = AttachmentMap.TOP; + + if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) { + placement = AttachmentMap.TOPEND; + } + } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) { + placement = AttachmentMap.RIGHT; + } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) { + placement = AttachmentMap.LEFT; + } else if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) { + placement = AttachmentMap.BOTTOMEND; + } + + return placement; + }; + + _proto._detectNavbar = function _detectNavbar() { + return $$$1(this._element).closest('.navbar').length > 0; + }; + + _proto._getPopperConfig = function _getPopperConfig() { + var _this2 = this; + + var offsetConf = {}; + + if (typeof this._config.offset === 'function') { + offsetConf.fn = function (data) { + data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets) || {}); + return data; + }; + } else { + offsetConf.offset = this._config.offset; + } + + var popperConfig = { + placement: this._getPlacement(), + modifiers: { + offset: offsetConf, + flip: { + enabled: this._config.flip + }, + preventOverflow: { + boundariesElement: this._config.boundary + } + } // Disable Popper.js if we have a static display + + }; + + if (this._config.display === 'static') { + popperConfig.modifiers.applyStyle = { + enabled: false + }; + } + + return popperConfig; + }; // Static + + + Dropdown._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); + + var _config = typeof config === 'object' ? config : null; + + if (!data) { + data = new Dropdown(this, _config); + $$$1(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](); + } + }); + }; + + Dropdown._clearMenus = function _clearMenus(event) { + if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) { + return; + } + + var toggles = $$$1.makeArray($$$1(Selector.DATA_TOGGLE)); + + for (var i = 0; i < toggles.length; i++) { + var parent = Dropdown._getParentFromElement(toggles[i]); + + var context = $$$1(toggles[i]).data(DATA_KEY); + var relatedTarget = { + relatedTarget: toggles[i] + }; + + if (!context) { + continue; + } + + var dropdownMenu = context._menu; + + if (!$$$1(parent).hasClass(ClassName.SHOW)) { + continue; + } + + if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $$$1.contains(parent, event.target)) { + continue; + } + + var hideEvent = $$$1.Event(Event.HIDE, relatedTarget); + $$$1(parent).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + continue; + } // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + + + if ('ontouchstart' in document.documentElement) { + $$$1(document.body).children().off('mouseover', null, $$$1.noop); + } + + toggles[i].setAttribute('aria-expanded', 'false'); + $$$1(dropdownMenu).removeClass(ClassName.SHOW); + $$$1(parent).removeClass(ClassName.SHOW).trigger($$$1.Event(Event.HIDDEN, relatedTarget)); + } + }; + + Dropdown._getParentFromElement = function _getParentFromElement(element) { + var parent; + var selector = Util.getSelectorFromElement(element); + + if (selector) { + parent = $$$1(selector)[0]; + } + + return parent || element.parentNode; + }; // eslint-disable-next-line complexity + + + Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { + // If not input/textarea: + // - And not a key in REGEXP_KEYDOWN => not a dropdown command + // If input/textarea: + // - If space key => not a dropdown command + // - If key is other than escape + // - If key is not up or down => not a dropdown command + // - If trigger inside the menu => not a dropdown command + if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $$$1(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { + return; + } + + event.preventDefault(); + event.stopPropagation(); + + if (this.disabled || $$$1(this).hasClass(ClassName.DISABLED)) { + return; + } + + var parent = Dropdown._getParentFromElement(this); + + var isActive = $$$1(parent).hasClass(ClassName.SHOW); + + if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) { + if (event.which === ESCAPE_KEYCODE) { + var toggle = $$$1(parent).find(Selector.DATA_TOGGLE)[0]; + $$$1(toggle).trigger('focus'); + } + + $$$1(this).trigger('click'); + return; + } + + var items = $$$1(parent).find(Selector.VISIBLE_ITEMS).get(); + + if (items.length === 0) { + return; + } + + var index = items.indexOf(event.target); + + if (event.which === ARROW_UP_KEYCODE && index > 0) { + // Up + index--; + } + + if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { + // Down + index++; + } + + if (index < 0) { + index = 0; + } + + items[index].focus(); + }; + + _createClass(Dropdown, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType; + } + }]); + + return Dropdown; + }(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + $$$1(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + event.stopPropagation(); + + Dropdown._jQueryInterface.call($$$1(this), 'toggle'); + }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { + e.stopPropagation(); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $$$1.fn[NAME] = Dropdown._jQueryInterface; + $$$1.fn[NAME].Constructor = Dropdown; + + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Dropdown._jQueryInterface; + }; + + return Dropdown; + }($, Popper); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.1): modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Modal = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'modal'; + var VERSION = '4.1.1'; + var DATA_KEY = 'bs.modal'; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + + var Default = { + backdrop: true, + keyboard: true, + focus: true, + show: true + }; + var DefaultType = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean', + show: 'boolean' + }; + var Event = { + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, + SHOW: "show" + EVENT_KEY, + SHOWN: "shown" + EVENT_KEY, + FOCUSIN: "focusin" + EVENT_KEY, + RESIZE: "resize" + EVENT_KEY, + CLICK_DISMISS: "click.dismiss" + EVENT_KEY, + KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY, + MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY, + MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY + }; + var ClassName = { + SCROLLBAR_MEASURER: 'modal-scrollbar-measure', + BACKDROP: 'modal-backdrop', + OPEN: 'modal-open', + FADE: 'fade', + SHOW: 'show' + }; + var Selector = { + DIALOG: '.modal-dialog', + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top', + STICKY_CONTENT: '.sticky-top', + NAVBAR_TOGGLER: '.navbar-toggler' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Modal = + /*#__PURE__*/ + function () { + function Modal(element, config) { + this._config = this._getConfig(config); + this._element = element; + this._dialog = $$$1(element).find(Selector.DIALOG)[0]; + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._scrollbarWidth = 0; + } // Getters + + + var _proto = Modal.prototype; + + // Public + _proto.toggle = function toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + }; + + _proto.show = function show(relatedTarget) { + var _this = this; + + if (this._isTransitioning || this._isShown) { + return; + } + + if ($$$1(this._element).hasClass(ClassName.FADE)) { + this._isTransitioning = true; + } + + var showEvent = $$$1.Event(Event.SHOW, { + relatedTarget: relatedTarget + }); + $$$1(this._element).trigger(showEvent); + + if (this._isShown || showEvent.isDefaultPrevented()) { + return; + } + + this._isShown = true; + + this._checkScrollbar(); + + this._setScrollbar(); + + this._adjustDialog(); + + $$$1(document.body).addClass(ClassName.OPEN); + + this._setEscapeEvent(); + + this._setResizeEvent(); + + $$$1(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) { + return _this.hide(event); + }); + $$$1(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { + $$$1(_this._element).one(Event.MOUSEUP_DISMISS, function (event) { + if ($$$1(event.target).is(_this._element)) { + _this._ignoreBackdropClick = true; + } + }); + }); + + this._showBackdrop(function () { + return _this._showElement(relatedTarget); + }); + }; + + _proto.hide = function hide(event) { + var _this2 = this; + + if (event) { + event.preventDefault(); + } + + if (this._isTransitioning || !this._isShown) { + return; + } + + var hideEvent = $$$1.Event(Event.HIDE); + $$$1(this._element).trigger(hideEvent); + + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return; + } + + this._isShown = false; + var transition = $$$1(this._element).hasClass(ClassName.FADE); + + if (transition) { + this._isTransitioning = true; + } + + this._setEscapeEvent(); + + this._setResizeEvent(); + + $$$1(document).off(Event.FOCUSIN); + $$$1(this._element).removeClass(ClassName.SHOW); + $$$1(this._element).off(Event.CLICK_DISMISS); + $$$1(this._dialog).off(Event.MOUSEDOWN_DISMISS); + + if (transition) { + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $$$1(this._element).one(Util.TRANSITION_END, function (event) { + return _this2._hideModal(event); + }).emulateTransitionEnd(transitionDuration); + } else { + this._hideModal(); + } + }; + + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + $$$1(window, document, this._element, this._backdrop).off(EVENT_KEY); + this._config = null; + this._element = null; + this._dialog = null; + this._backdrop = null; + this._isShown = null; + this._isBodyOverflowing = null; + this._ignoreBackdropClick = null; + this._scrollbarWidth = null; + }; + + _proto.handleUpdate = function handleUpdate() { + this._adjustDialog(); + }; // Private + + + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; + + _proto._showElement = function _showElement(relatedTarget) { + var _this3 = this; + + var transition = $$$1(this._element).hasClass(ClassName.FADE); + + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // Don't move modal's DOM position + document.body.appendChild(this._element); + } + + this._element.style.display = 'block'; + + this._element.removeAttribute('aria-hidden'); + + this._element.scrollTop = 0; + + if (transition) { + Util.reflow(this._element); + } + + $$$1(this._element).addClass(ClassName.SHOW); + + if (this._config.focus) { + this._enforceFocus(); + } + + var shownEvent = $$$1.Event(Event.SHOWN, { + relatedTarget: relatedTarget + }); + + var transitionComplete = function transitionComplete() { + if (_this3._config.focus) { + _this3._element.focus(); + } + + _this3._isTransitioning = false; + $$$1(_this3._element).trigger(shownEvent); + }; + + if (transition) { + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $$$1(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration); + } else { + transitionComplete(); + } + }; + + _proto._enforceFocus = function _enforceFocus() { + var _this4 = this; + + $$$1(document).off(Event.FOCUSIN) // Guard against infinite focus loop + .on(Event.FOCUSIN, function (event) { + if (document !== event.target && _this4._element !== event.target && $$$1(_this4._element).has(event.target).length === 0) { + _this4._element.focus(); + } + }); + }; + + _proto._setEscapeEvent = function _setEscapeEvent() { + var _this5 = this; + + if (this._isShown && this._config.keyboard) { + $$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) { + if (event.which === ESCAPE_KEYCODE) { + event.preventDefault(); + + _this5.hide(); + } + }); + } else if (!this._isShown) { + $$$1(this._element).off(Event.KEYDOWN_DISMISS); + } + }; + + _proto._setResizeEvent = function _setResizeEvent() { + var _this6 = this; + + if (this._isShown) { + $$$1(window).on(Event.RESIZE, function (event) { + return _this6.handleUpdate(event); + }); + } else { + $$$1(window).off(Event.RESIZE); + } + }; + + _proto._hideModal = function _hideModal() { + var _this7 = this; + + this._element.style.display = 'none'; + + this._element.setAttribute('aria-hidden', true); + + this._isTransitioning = false; + + this._showBackdrop(function () { + $$$1(document.body).removeClass(ClassName.OPEN); + + _this7._resetAdjustments(); + + _this7._resetScrollbar(); + + $$$1(_this7._element).trigger(Event.HIDDEN); + }); + }; + + _proto._removeBackdrop = function _removeBackdrop() { + if (this._backdrop) { + $$$1(this._backdrop).remove(); + this._backdrop = null; + } + }; + + _proto._showBackdrop = function _showBackdrop(callback) { + var _this8 = this; + + var animate = $$$1(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; + + if (this._isShown && this._config.backdrop) { + this._backdrop = document.createElement('div'); + this._backdrop.className = ClassName.BACKDROP; + + if (animate) { + $$$1(this._backdrop).addClass(animate); + } + + $$$1(this._backdrop).appendTo(document.body); + $$$1(this._element).on(Event.CLICK_DISMISS, function (event) { + if (_this8._ignoreBackdropClick) { + _this8._ignoreBackdropClick = false; + return; + } + + if (event.target !== event.currentTarget) { + return; + } + + if (_this8._config.backdrop === 'static') { + _this8._element.focus(); + } else { + _this8.hide(); + } + }); + + if (animate) { + Util.reflow(this._backdrop); + } + + $$$1(this._backdrop).addClass(ClassName.SHOW); + + if (!callback) { + return; + } + + if (!animate) { + callback(); + return; + } + + var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); + $$$1(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration); + } else if (!this._isShown && this._backdrop) { + $$$1(this._backdrop).removeClass(ClassName.SHOW); + + var callbackRemove = function callbackRemove() { + _this8._removeBackdrop(); + + if (callback) { + callback(); + } + }; + + if ($$$1(this._element).hasClass(ClassName.FADE)) { + var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); + + $$$1(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration); + } else { + callbackRemove(); + } + } else if (callback) { + callback(); + } + }; // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // todo (fat): these should probably be refactored out of modal.js + // ---------------------------------------------------------------------- + + + _proto._adjustDialog = function _adjustDialog() { + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = this._scrollbarWidth + "px"; + } + + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = this._scrollbarWidth + "px"; + } + }; + + _proto._resetAdjustments = function _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + }; + + _proto._checkScrollbar = function _checkScrollbar() { + var rect = document.body.getBoundingClientRect(); + this._isBodyOverflowing = rect.left + rect.right < window.innerWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + }; + + _proto._setScrollbar = function _setScrollbar() { + var _this9 = this; + + if (this._isBodyOverflowing) { + // Note: DOMNode.style.paddingRight returns the actual value or '' if not set + // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set + // Adjust fixed content padding + $$$1(Selector.FIXED_CONTENT).each(function (index, element) { + var actualPadding = $$$1(element)[0].style.paddingRight; + var calculatedPadding = $$$1(element).css('padding-right'); + $$$1(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px"); + }); // Adjust sticky content margin + + $$$1(Selector.STICKY_CONTENT).each(function (index, element) { + var actualMargin = $$$1(element)[0].style.marginRight; + var calculatedMargin = $$$1(element).css('margin-right'); + $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px"); + }); // Adjust navbar-toggler margin + + $$$1(Selector.NAVBAR_TOGGLER).each(function (index, element) { + var actualMargin = $$$1(element)[0].style.marginRight; + var calculatedMargin = $$$1(element).css('margin-right'); + $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px"); + }); // Adjust body padding + + var actualPadding = document.body.style.paddingRight; + var calculatedPadding = $$$1(document.body).css('padding-right'); + $$$1(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px"); + } + }; + + _proto._resetScrollbar = function _resetScrollbar() { + // Restore fixed content padding + $$$1(Selector.FIXED_CONTENT).each(function (index, element) { + var padding = $$$1(element).data('padding-right'); + + if (typeof padding !== 'undefined') { + $$$1(element).css('padding-right', padding).removeData('padding-right'); + } + }); // Restore sticky content and navbar-toggler margin + + $$$1(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function (index, element) { + var margin = $$$1(element).data('margin-right'); + + if (typeof margin !== 'undefined') { + $$$1(element).css('margin-right', margin).removeData('margin-right'); + } + }); // Restore body padding + + var padding = $$$1(document.body).data('padding-right'); + + if (typeof padding !== 'undefined') { + $$$1(document.body).css('padding-right', padding).removeData('padding-right'); + } + }; + + _proto._getScrollbarWidth = function _getScrollbarWidth() { + // thx d.walsh + var scrollDiv = document.createElement('div'); + scrollDiv.className = ClassName.SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + }; // Static + + + Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); + + var _config = _objectSpread({}, Default, $$$1(this).data(), typeof config === 'object' && config ? config : {}); + + if (!data) { + data = new Modal(this, _config); + $$$1(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); + } + }); + }; + + _createClass(Modal, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }]); + + return Modal; + }(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + var _this10 = this; + + var target; + var selector = Util.getSelectorFromElement(this); + + if (selector) { + target = $$$1(selector)[0]; + } + + var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _objectSpread({}, $$$1(target).data(), $$$1(this).data()); + + if (this.tagName === 'A' || this.tagName === 'AREA') { + event.preventDefault(); + } + + var $target = $$$1(target).one(Event.SHOW, function (showEvent) { + if (showEvent.isDefaultPrevented()) { + // Only register focus restorer if modal will actually get shown + return; + } + + $target.one(Event.HIDDEN, function () { + if ($$$1(_this10).is(':visible')) { + _this10.focus(); + } + }); + }); + + Modal._jQueryInterface.call($$$1(target), config, this); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $$$1.fn[NAME] = Modal._jQueryInterface; + $$$1.fn[NAME].Constructor = Modal; + + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Modal._jQueryInterface; + }; + + return Modal; + }($); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.1): tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Tooltip = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'tooltip'; + var VERSION = '4.1.1'; + var DATA_KEY = 'bs.tooltip'; + var EVENT_KEY = "." + DATA_KEY; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var CLASS_PREFIX = 'bs-tooltip'; + var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); + var DefaultType = { + animation: 'boolean', + template: 'string', + title: '(string|element|function)', + trigger: 'string', + delay: '(number|object)', + html: 'boolean', + selector: '(string|boolean)', + placement: '(string|function)', + offset: '(number|string)', + container: '(string|element|boolean)', + fallbackPlacement: '(string|array)', + boundary: '(string|element)' + }; + var AttachmentMap = { + AUTO: 'auto', + TOP: 'top', + RIGHT: 'right', + BOTTOM: 'bottom', + LEFT: 'left' + }; + var Default = { + animation: true, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + selector: false, + placement: 'top', + offset: 0, + container: false, + fallbackPlacement: 'flip', + boundary: 'scrollParent' + }; + var HoverState = { + SHOW: 'show', + OUT: 'out' + }; + var Event = { + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, + SHOW: "show" + EVENT_KEY, + SHOWN: "shown" + EVENT_KEY, + INSERTED: "inserted" + EVENT_KEY, + CLICK: "click" + EVENT_KEY, + FOCUSIN: "focusin" + EVENT_KEY, + FOCUSOUT: "focusout" + EVENT_KEY, + MOUSEENTER: "mouseenter" + EVENT_KEY, + MOUSELEAVE: "mouseleave" + EVENT_KEY + }; + var ClassName = { + FADE: 'fade', + SHOW: 'show' + }; + var Selector = { + TOOLTIP: '.tooltip', + TOOLTIP_INNER: '.tooltip-inner', + ARROW: '.arrow' + }; + var Trigger = { + HOVER: 'hover', + FOCUS: 'focus', + CLICK: 'click', + MANUAL: 'manual' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Tooltip = + /*#__PURE__*/ + function () { + function Tooltip(element, config) { + /** + * Check for Popper dependency + * Popper - https://popper.js.org + */ + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)'); + } // private + + + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._popper = null; // Protected + + this.element = element; + this.config = this._getConfig(config); + this.tip = null; + + this._setListeners(); + } // Getters + + + var _proto = Tooltip.prototype; + + // Public + _proto.enable = function enable() { + this._isEnabled = true; + }; + + _proto.disable = function disable() { + this._isEnabled = false; + }; + + _proto.toggleEnabled = function toggleEnabled() { + this._isEnabled = !this._isEnabled; + }; + + _proto.toggle = function toggle(event) { + if (!this._isEnabled) { + return; + } + + if (event) { + var dataKey = this.constructor.DATA_KEY; + var context = $$$1(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $$$1(event.currentTarget).data(dataKey, context); + } + + context._activeTrigger.click = !context._activeTrigger.click; + + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } + } else { + if ($$$1(this.getTipElement()).hasClass(ClassName.SHOW)) { + this._leave(null, this); + + return; + } + + this._enter(null, this); + } + }; + + _proto.dispose = function dispose() { + clearTimeout(this._timeout); + $$$1.removeData(this.element, this.constructor.DATA_KEY); + $$$1(this.element).off(this.constructor.EVENT_KEY); + $$$1(this.element).closest('.modal').off('hide.bs.modal'); + + if (this.tip) { + $$$1(this.tip).remove(); + } + + this._isEnabled = null; + this._timeout = null; + this._hoverState = null; + this._activeTrigger = null; + + if (this._popper !== null) { + this._popper.destroy(); + } + + this._popper = null; + this.element = null; + this.config = null; + this.tip = null; + }; + + _proto.show = function show() { + var _this = this; + + if ($$$1(this.element).css('display') === 'none') { + throw new Error('Please use show on visible elements'); + } + + var showEvent = $$$1.Event(this.constructor.Event.SHOW); + + if (this.isWithContent() && this._isEnabled) { + $$$1(this.element).trigger(showEvent); + var isInTheDom = $$$1.contains(this.element.ownerDocument.documentElement, this.element); + + if (showEvent.isDefaultPrevented() || !isInTheDom) { + return; + } + + var tip = this.getTipElement(); + var tipId = Util.getUID(this.constructor.NAME); + tip.setAttribute('id', tipId); + this.element.setAttribute('aria-describedby', tipId); + this.setContent(); + + if (this.config.animation) { + $$$1(tip).addClass(ClassName.FADE); + } + + var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; + + var attachment = this._getAttachment(placement); + + this.addAttachmentClass(attachment); + var container = this.config.container === false ? document.body : $$$1(this.config.container); + $$$1(tip).data(this.constructor.DATA_KEY, this); + + if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) { + $$$1(tip).appendTo(container); + } + + $$$1(this.element).trigger(this.constructor.Event.INSERTED); + this._popper = new Popper(this.element, tip, { + placement: attachment, + modifiers: { + offset: { + offset: this.config.offset + }, + flip: { + behavior: this.config.fallbackPlacement + }, + arrow: { + element: Selector.ARROW + }, + preventOverflow: { + boundariesElement: this.config.boundary + } + }, + onCreate: function onCreate(data) { + if (data.originalPlacement !== data.placement) { + _this._handlePopperPlacementChange(data); + } + }, + onUpdate: function onUpdate(data) { + _this._handlePopperPlacementChange(data); + } + }); + $$$1(tip).addClass(ClassName.SHOW); // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + if ('ontouchstart' in document.documentElement) { + $$$1(document.body).children().on('mouseover', null, $$$1.noop); + } + + var complete = function complete() { + if (_this.config.animation) { + _this._fixTransition(); + } + + var prevHoverState = _this._hoverState; + _this._hoverState = null; + $$$1(_this.element).trigger(_this.constructor.Event.SHOWN); + + if (prevHoverState === HoverState.OUT) { + _this._leave(null, _this); + } + }; + + if ($$$1(this.tip).hasClass(ClassName.FADE)) { + var transitionDuration = Util.getTransitionDurationFromElement(this.tip); + $$$1(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + } else { + complete(); + } + } + }; + + _proto.hide = function hide(callback) { + var _this2 = this; + + var tip = this.getTipElement(); + var hideEvent = $$$1.Event(this.constructor.Event.HIDE); + + var complete = function complete() { + if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) { + tip.parentNode.removeChild(tip); + } + + _this2._cleanTipClass(); + + _this2.element.removeAttribute('aria-describedby'); + + $$$1(_this2.element).trigger(_this2.constructor.Event.HIDDEN); + + if (_this2._popper !== null) { + _this2._popper.destroy(); + } + + if (callback) { + callback(); + } + }; + + $$$1(this.element).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + return; + } + + $$$1(tip).removeClass(ClassName.SHOW); // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + + if ('ontouchstart' in document.documentElement) { + $$$1(document.body).children().off('mouseover', null, $$$1.noop); + } + + this._activeTrigger[Trigger.CLICK] = false; + this._activeTrigger[Trigger.FOCUS] = false; + this._activeTrigger[Trigger.HOVER] = false; + + if ($$$1(this.tip).hasClass(ClassName.FADE)) { + var transitionDuration = Util.getTransitionDurationFromElement(tip); + $$$1(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + } else { + complete(); + } + + this._hoverState = ''; + }; + + _proto.update = function update() { + if (this._popper !== null) { + this._popper.scheduleUpdate(); + } + }; // Protected + + + _proto.isWithContent = function isWithContent() { + return Boolean(this.getTitle()); + }; + + _proto.addAttachmentClass = function addAttachmentClass(attachment) { + $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); + }; + + _proto.getTipElement = function getTipElement() { + this.tip = this.tip || $$$1(this.config.template)[0]; + return this.tip; + }; + + _proto.setContent = function setContent() { + var $tip = $$$1(this.getTipElement()); + this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle()); + $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW); + }; + + _proto.setElementContent = function setElementContent($element, content) { + var html = this.config.html; + + if (typeof content === 'object' && (content.nodeType || content.jquery)) { + // Content is a DOM node or a jQuery + if (html) { + if (!$$$1(content).parent().is($element)) { + $element.empty().append(content); + } + } else { + $element.text($$$1(content).text()); + } + } else { + $element[html ? 'html' : 'text'](content); + } + }; + + _proto.getTitle = function getTitle() { + var title = this.element.getAttribute('data-original-title'); + + if (!title) { + title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; + } + + return title; + }; // Private + + + _proto._getAttachment = function _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()]; + }; + + _proto._setListeners = function _setListeners() { + var _this3 = this; + + var triggers = this.config.trigger.split(' '); + triggers.forEach(function (trigger) { + if (trigger === 'click') { + $$$1(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) { + return _this3.toggle(event); + }); + } else if (trigger !== Trigger.MANUAL) { + var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN; + var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT; + $$$1(_this3.element).on(eventIn, _this3.config.selector, function (event) { + return _this3._enter(event); + }).on(eventOut, _this3.config.selector, function (event) { + return _this3._leave(event); + }); + } + + $$$1(_this3.element).closest('.modal').on('hide.bs.modal', function () { + return _this3.hide(); + }); + }); + + if (this.config.selector) { + this.config = _objectSpread({}, this.config, { + trigger: 'manual', + selector: '' + }); + } else { + this._fixTitle(); + } + }; + + _proto._fixTitle = function _fixTitle() { + var titleType = typeof this.element.getAttribute('data-original-title'); + + if (this.element.getAttribute('title') || titleType !== 'string') { + this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); + this.element.setAttribute('title', ''); + } + }; + + _proto._enter = function _enter(event, context) { + var dataKey = this.constructor.DATA_KEY; + context = context || $$$1(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $$$1(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; + } + + if ($$$1(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) { + context._hoverState = HoverState.SHOW; + return; + } + + clearTimeout(context._timeout); + context._hoverState = HoverState.SHOW; + + if (!context.config.delay || !context.config.delay.show) { + context.show(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.SHOW) { + context.show(); + } + }, context.config.delay.show); + }; + + _proto._leave = function _leave(event, context) { + var dataKey = this.constructor.DATA_KEY; + context = context || $$$1(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $$$1(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; + } + + if (context._isWithActiveTrigger()) { + return; + } + + clearTimeout(context._timeout); + context._hoverState = HoverState.OUT; + + if (!context.config.delay || !context.config.delay.hide) { + context.hide(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.OUT) { + context.hide(); + } + }, context.config.delay.hide); + }; + + _proto._isWithActiveTrigger = function _isWithActiveTrigger() { + for (var trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } + + return false; + }; + + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, this.constructor.Default, $$$1(this.element).data(), typeof config === 'object' && config ? config : {}); + + if (typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + + if (typeof config.title === 'number') { + config.title = config.title.toString(); + } + + if (typeof config.content === 'number') { + config.content = config.content.toString(); + } + + Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); + return config; + }; + + _proto._getDelegateConfig = function _getDelegateConfig() { + var config = {}; + + if (this.config) { + for (var key in this.config) { + if (this.constructor.Default[key] !== this.config[key]) { + config[key] = this.config[key]; + } + } + } + + return config; + }; + + _proto._cleanTipClass = function _cleanTipClass() { + var $tip = $$$1(this.getTipElement()); + var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); + + if (tabClass !== null && tabClass.length > 0) { + $tip.removeClass(tabClass.join('')); + } + }; + + _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) { + this._cleanTipClass(); + + this.addAttachmentClass(this._getAttachment(data.placement)); + }; + + _proto._fixTransition = function _fixTransition() { + var tip = this.getTipElement(); + var initConfigAnimation = this.config.animation; + + if (tip.getAttribute('x-placement') !== null) { + return; + } + + $$$1(tip).removeClass(ClassName.FADE); + this.config.animation = false; + this.hide(); + this.show(); + this.config.animation = initConfigAnimation; + }; // Static + + + Tooltip._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); + + var _config = typeof config === 'object' && config; + + if (!data && /dispose|hide/.test(config)) { + return; + } + + if (!data) { + data = new Tooltip(this, _config); + $$$1(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](); + } + }); + }; + + _createClass(Tooltip, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }, { + key: "NAME", + get: function get() { + return NAME; + } + }, { + key: "DATA_KEY", + get: function get() { + return DATA_KEY; + } + }, { + key: "Event", + get: function get() { + return Event; + } + }, { + key: "EVENT_KEY", + get: function get() { + return EVENT_KEY; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType; + } + }]); + + return Tooltip; + }(); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + + $$$1.fn[NAME] = Tooltip._jQueryInterface; + $$$1.fn[NAME].Constructor = Tooltip; + + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Tooltip._jQueryInterface; + }; + + return Tooltip; + }($, Popper); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.1): popover.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Popover = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'popover'; + var VERSION = '4.1.1'; + var DATA_KEY = 'bs.popover'; + var EVENT_KEY = "." + DATA_KEY; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var CLASS_PREFIX = 'bs-popover'; + var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); + + var Default = _objectSpread({}, Tooltip.Default, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }); + + var DefaultType = _objectSpread({}, Tooltip.DefaultType, { + content: '(string|element|function)' + }); + + var ClassName = { + FADE: 'fade', + SHOW: 'show' + }; + var Selector = { + TITLE: '.popover-header', + CONTENT: '.popover-body' + }; + var Event = { + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, + SHOW: "show" + EVENT_KEY, + SHOWN: "shown" + EVENT_KEY, + INSERTED: "inserted" + EVENT_KEY, + CLICK: "click" + EVENT_KEY, + FOCUSIN: "focusin" + EVENT_KEY, + FOCUSOUT: "focusout" + EVENT_KEY, + MOUSEENTER: "mouseenter" + EVENT_KEY, + MOUSELEAVE: "mouseleave" + EVENT_KEY + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Popover = + /*#__PURE__*/ + function (_Tooltip) { + _inheritsLoose(Popover, _Tooltip); + + function Popover() { + return _Tooltip.apply(this, arguments) || this; + } + + var _proto = Popover.prototype; + + // Overrides + _proto.isWithContent = function isWithContent() { + return this.getTitle() || this._getContent(); + }; + + _proto.addAttachmentClass = function addAttachmentClass(attachment) { + $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); + }; + + _proto.getTipElement = function getTipElement() { + this.tip = this.tip || $$$1(this.config.template)[0]; + return this.tip; + }; + + _proto.setContent = function setContent() { + var $tip = $$$1(this.getTipElement()); // We use append for html objects to maintain js events + + this.setElementContent($tip.find(Selector.TITLE), this.getTitle()); + + var content = this._getContent(); + + if (typeof content === 'function') { + content = content.call(this.element); + } + + this.setElementContent($tip.find(Selector.CONTENT), content); + $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW); + }; // Private + + + _proto._getContent = function _getContent() { + return this.element.getAttribute('data-content') || this.config.content; + }; + + _proto._cleanTipClass = function _cleanTipClass() { + var $tip = $$$1(this.getTipElement()); + var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); + + if (tabClass !== null && tabClass.length > 0) { + $tip.removeClass(tabClass.join('')); + } + }; // Static + + + Popover._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); + + var _config = typeof config === 'object' ? config : null; + + if (!data && /destroy|hide/.test(config)) { + return; + } + + if (!data) { + data = new Popover(this, _config); + $$$1(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](); + } + }); + }; + + _createClass(Popover, null, [{ + key: "VERSION", + // Getters + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }, { + key: "NAME", + get: function get() { + return NAME; + } + }, { + key: "DATA_KEY", + get: function get() { + return DATA_KEY; + } + }, { + key: "Event", + get: function get() { + return Event; + } + }, { + key: "EVENT_KEY", + get: function get() { + return EVENT_KEY; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType; + } + }]); + + return Popover; + }(Tooltip); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + + $$$1.fn[NAME] = Popover._jQueryInterface; + $$$1.fn[NAME].Constructor = Popover; + + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Popover._jQueryInterface; + }; + + return Popover; + }($); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.1): scrollspy.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var ScrollSpy = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'scrollspy'; + var VERSION = '4.1.1'; + var DATA_KEY = 'bs.scrollspy'; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var Default = { + offset: 10, + method: 'auto', + target: '' + }; + var DefaultType = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; + var Event = { + ACTIVATE: "activate" + EVENT_KEY, + SCROLL: "scroll" + EVENT_KEY, + LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY + }; + var ClassName = { + DROPDOWN_ITEM: 'dropdown-item', + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active' + }; + var Selector = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: '.active', + NAV_LIST_GROUP: '.nav, .list-group', + NAV_LINKS: '.nav-link', + NAV_ITEMS: '.nav-item', + LIST_ITEMS: '.list-group-item', + DROPDOWN: '.dropdown', + DROPDOWN_ITEMS: '.dropdown-item', + DROPDOWN_TOGGLE: '.dropdown-toggle' + }; + var OffsetMethod = { + OFFSET: 'offset', + POSITION: 'position' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var ScrollSpy = + /*#__PURE__*/ + function () { + function ScrollSpy(element, config) { + var _this = this; + + this._element = element; + this._scrollElement = element.tagName === 'BODY' ? window : element; + this._config = this._getConfig(config); + this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS); + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + $$$1(this._scrollElement).on(Event.SCROLL, function (event) { + return _this._process(event); + }); + this.refresh(); + + this._process(); + } // Getters + + + var _proto = ScrollSpy.prototype; + + // Public + _proto.refresh = function refresh() { + var _this2 = this; + + var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION; + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; + this._offsets = []; + this._targets = []; + this._scrollHeight = this._getScrollHeight(); + var targets = $$$1.makeArray($$$1(this._selector)); + targets.map(function (element) { + var target; + var targetSelector = Util.getSelectorFromElement(element); + + if (targetSelector) { + target = $$$1(targetSelector)[0]; + } + + if (target) { + var targetBCR = target.getBoundingClientRect(); + + if (targetBCR.width || targetBCR.height) { + // TODO (fat): remove sketch reliance on jQuery position/offset + return [$$$1(target)[offsetMethod]().top + offsetBase, targetSelector]; + } + } + + return null; + }).filter(function (item) { + return item; + }).sort(function (a, b) { + return a[0] - b[0]; + }).forEach(function (item) { + _this2._offsets.push(item[0]); + + _this2._targets.push(item[1]); + }); + }; + + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + $$$1(this._scrollElement).off(EVENT_KEY); + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + }; // Private + + + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, Default, typeof config === 'object' && config ? config : {}); + + if (typeof config.target !== 'string') { + var id = $$$1(config.target).attr('id'); + + if (!id) { + id = Util.getUID(NAME); + $$$1(config.target).attr('id', id); + } + + config.target = "#" + id; + } + + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; + + _proto._getScrollTop = function _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; + }; + + _proto._getScrollHeight = function _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + }; + + _proto._getOffsetHeight = function _getOffsetHeight() { + return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; + }; + + _proto._process = function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; + + var scrollHeight = this._getScrollHeight(); + + var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); + + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } + + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; + + if (this._activeTarget !== target) { + this._activate(target); + } + + return; + } + + if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { + this._activeTarget = null; + + this._clear(); + + return; + } + + for (var i = this._offsets.length; i--;) { + var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); + + if (isActiveTarget) { + this._activate(this._targets[i]); + } + } + }; + + _proto._activate = function _activate(target) { + this._activeTarget = target; + + this._clear(); + + var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style + + + queries = queries.map(function (selector) { + return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]"); + }); + var $link = $$$1(queries.join(',')); + + if ($link.hasClass(ClassName.DROPDOWN_ITEM)) { + $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); + $link.addClass(ClassName.ACTIVE); + } else { + // Set triggered link as active + $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active + // With both