@taon-dev/ui 21.0.3 → 21.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/VERIFIED-BUILD-DATA.jsonc +3 -3
- package/browser/fesm2022/ui-browser-taon-backoffice-notifications.component.ts.en-US.i18n.data-uyZjV7Qx.mjs +15 -0
- package/browser/fesm2022/ui-browser-taon-backoffice-notifications.component.ts.en-US.i18n.data-uyZjV7Qx.mjs.map +1 -0
- package/browser/fesm2022/ui-browser-taon-backoffice-notifications.component.ts.pl-PL.i18n.data-s0tK5HDk.mjs +15 -0
- package/browser/fesm2022/ui-browser-taon-backoffice-notifications.component.ts.pl-PL.i18n.data-s0tK5HDk.mjs.map +1 -0
- package/browser/fesm2022/ui-browser.mjs +857 -30
- package/browser/fesm2022/ui-browser.mjs.map +1 -1
- package/browser/package.json +1 -1
- package/browser/types/ui-browser.d.ts +213 -6
- package/browser-prod/fesm2022/ui-browser-prod-taon-backoffice-notifications.component.ts.en-US.i18n.data-uyZjV7Qx.mjs +15 -0
- package/browser-prod/fesm2022/ui-browser-prod-taon-backoffice-notifications.component.ts.en-US.i18n.data-uyZjV7Qx.mjs.map +1 -0
- package/browser-prod/fesm2022/ui-browser-prod-taon-backoffice-notifications.component.ts.pl-PL.i18n.data-s0tK5HDk.mjs +15 -0
- package/browser-prod/fesm2022/ui-browser-prod-taon-backoffice-notifications.component.ts.pl-PL.i18n.data-s0tK5HDk.mjs.map +1 -0
- package/browser-prod/fesm2022/ui-browser-prod.mjs +863 -30
- package/browser-prod/fesm2022/ui-browser-prod.mjs.map +1 -1
- package/browser-prod/package.json +1 -1
- package/browser-prod/types/ui-browser-prod.d.ts +209 -6
- package/html/app/main/routes/session/tracking/tracking.component.html +7 -4
- package/html/assets/generated/pwa/html-pwa.html +53 -53
- package/html/lib/taon-admin-layout/taon-admin-layout.component.html +8 -6
- package/html/lib/taon-backoffice-notifications/taon-backoffice-notifications.component.html +3 -0
- package/html/lib/taon-backoffice-notifications/taon-error-details-dialog.component.html +36 -0
- package/html/lib/taon-confirm-dialog/taon-confirm-dialog.component.html +34 -0
- package/html/lib/taon-datatable/taon-datatable.component.html +147 -0
- package/html/lib/taon-draggable-button-panel/taon-draggable-button-panel.component.html +48 -62
- package/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib/build-info._auto-generated_.js +1 -1
- package/lib/directives/taon-horizontal-wheel-scrolling.directive.d.ts +13 -0
- package/lib/env/env.angular-node-app.js.map +1 -1
- package/lib/env/env.docs-webapp.js.map +1 -1
- package/lib/env/env.electron-app.js.map +1 -1
- package/lib/env/env.mobile-app.js.map +1 -1
- package/lib/env/env.npm-lib-and-cli-tool.js.map +1 -1
- package/lib/env/env.vscode-plugin.js.map +1 -1
- package/lib/index._auto-generated_.d.ts +13 -1
- package/lib/index._auto-generated_.js +13 -1
- package/lib/index._auto-generated_.js.map +1 -1
- package/lib/my-organization-proj.js +1 -2
- package/lib/my-organization-proj.js.map +1 -1
- package/lib/package.json +1 -1
- package/lib/taon-admin-layout/index.js +2 -2
- package/lib/taon-admin-layout/taon-admin-layout.component.d.ts +1 -0
- package/lib/taon-admin-layout/taon-admin-layout.models.d.ts +13 -1
- package/lib/taon-admin-layout/taon-admin-layout.models.js +13 -2
- package/lib/taon-admin-layout/taon-admin-layout.models.js.map +1 -1
- package/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.en-US.i18n.data.d.ts +15 -0
- package/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.en-US.i18n.data.js +15 -0
- package/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.en-US.i18n.data.js.map +1 -0
- package/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.pl-PL.i18n.data.d.ts +15 -0
- package/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.pl-PL.i18n.data.js +15 -0
- package/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.pl-PL.i18n.data.js.map +1 -0
- package/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.translation.d.ts +4 -0
- package/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.translation.js +5 -0
- package/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.translation.js.map +1 -0
- package/lib/taon-backoffice-notifications/index.d.ts +4 -0
- package/lib/taon-backoffice-notifications/index.js +24 -0
- package/lib/taon-backoffice-notifications/index.js.map +1 -0
- package/lib/taon-backoffice-notifications/taon-backoffice-notifications.component.d.ts +9 -0
- package/lib/taon-backoffice-notifications/taon-backoffice-notifications.models.d.ts +11 -0
- package/lib/taon-backoffice-notifications/taon-backoffice-notifications.models.js +3 -0
- package/lib/taon-backoffice-notifications/taon-backoffice-notifications.models.js.map +1 -0
- package/lib/taon-backoffice-notifications/taon-backoffice-notifications.service.d.ts +9 -0
- package/lib/taon-backoffice-notifications/taon-error-details-dialog.component.d.ts +24 -0
- package/lib/taon-backoffice-notifications/taon-error-toast.component.d.ts +10 -0
- package/lib/taon-confirm-dialog/taon-confirm-dialog.component.d.ts +12 -0
- package/lib/taon-confirm-dialog/taon-confirm-dialog.models.d.ts +1 -0
- package/lib/taon-confirm-dialog/taon-confirm-dialog.models.js +3 -0
- package/lib/taon-confirm-dialog/taon-confirm-dialog.models.js.map +1 -0
- package/lib/taon-datatable/index.d.ts +1 -0
- package/lib/taon-datatable/index.js +5 -0
- package/lib/taon-datatable/index.js.map +1 -0
- package/lib/taon-datatable/taon-datatable.component.d.ts +60 -0
- package/lib/taon-datatable/taon-datatable.models.d.ts +1 -0
- package/lib/taon-datatable/taon-datatable.models.js +3 -0
- package/lib/taon-datatable/taon-datatable.models.js.map +1 -0
- package/lib/taon-datatable/taon-datatable.routes.d.ts +7 -0
- package/lib/taon-draggable-button-panel/index.js +2 -2
- package/lib/taon-draggable-button-panel/taon-draggable-button-panel.component.d.ts +5 -0
- package/lib-esm/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib-esm/lib/build-info._auto-generated_.js +1 -1
- package/lib-esm/lib/env/env.angular-node-app.js.map +1 -1
- package/lib-esm/lib/env/env.docs-webapp.js.map +1 -1
- package/lib-esm/lib/env/env.electron-app.js.map +1 -1
- package/lib-esm/lib/env/env.mobile-app.js.map +1 -1
- package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js.map +1 -1
- package/lib-esm/lib/env/env.vscode-plugin.js.map +1 -1
- package/lib-esm/lib/index._auto-generated_.d.ts +4 -0
- package/lib-esm/lib/index._auto-generated_.js +13 -1
- package/lib-esm/lib/index._auto-generated_.js.map +1 -1
- package/lib-esm/lib/my-organization-proj.js +1 -2
- package/lib-esm/lib/my-organization-proj.js.map +1 -1
- package/lib-esm/lib/taon-admin-layout/index.d.ts +1 -1
- package/lib-esm/lib/taon-admin-layout/index.js +1 -1
- package/lib-esm/lib/taon-admin-layout/taon-admin-layout.models.d.ts +13 -1
- package/lib-esm/lib/taon-admin-layout/taon-admin-layout.models.js +11 -1
- package/lib-esm/lib/taon-admin-layout/taon-admin-layout.models.js.map +1 -1
- package/lib-esm/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.en-US.i18n.data.d.ts +15 -0
- package/lib-esm/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.en-US.i18n.data.js +13 -0
- package/lib-esm/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.en-US.i18n.data.js.map +1 -0
- package/lib-esm/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.pl-PL.i18n.data.d.ts +15 -0
- package/lib-esm/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.pl-PL.i18n.data.js +13 -0
- package/lib-esm/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.pl-PL.i18n.data.js.map +1 -0
- package/lib-esm/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.translation.d.ts +4 -0
- package/lib-esm/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.translation.js +4 -0
- package/lib-esm/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.translation.js.map +1 -0
- package/lib-esm/lib/taon-backoffice-notifications/index.d.ts +1 -0
- package/lib-esm/lib/taon-backoffice-notifications/index.js +8 -0
- package/lib-esm/lib/taon-backoffice-notifications/index.js.map +1 -0
- package/lib-esm/lib/taon-backoffice-notifications/taon-backoffice-notifications.models.d.ts +11 -0
- package/lib-esm/lib/taon-backoffice-notifications/taon-backoffice-notifications.models.js +2 -0
- package/lib-esm/lib/taon-backoffice-notifications/taon-backoffice-notifications.models.js.map +1 -0
- package/lib-esm/lib/taon-confirm-dialog/taon-confirm-dialog.models.d.ts +1 -0
- package/lib-esm/lib/taon-confirm-dialog/taon-confirm-dialog.models.js +2 -0
- package/lib-esm/lib/taon-confirm-dialog/taon-confirm-dialog.models.js.map +1 -0
- package/lib-esm/lib/taon-datatable/index.d.ts +1 -0
- package/lib-esm/lib/taon-datatable/index.js +2 -0
- package/lib-esm/lib/taon-datatable/index.js.map +1 -0
- package/lib-esm/lib/taon-datatable/taon-datatable.models.d.ts +1 -0
- package/lib-esm/lib/taon-datatable/taon-datatable.models.js +2 -0
- package/lib-esm/lib/taon-datatable/taon-datatable.models.js.map +1 -0
- package/lib-esm/lib/taon-draggable-button-panel/index.d.ts +1 -1
- package/lib-esm/lib/taon-draggable-button-panel/index.js +1 -1
- package/lib-prod/build-info._auto-generated_.d.ts +1 -1
- package/lib-prod/build-info._auto-generated_.js +1 -1
- package/lib-prod/env/env.angular-node-app.js.map +1 -1
- package/lib-prod/env/env.docs-webapp.js.map +1 -1
- package/lib-prod/env/env.electron-app.js.map +1 -1
- package/lib-prod/env/env.mobile-app.js.map +1 -1
- package/lib-prod/env/env.npm-lib-and-cli-tool.js.map +1 -1
- package/lib-prod/env/env.vscode-plugin.js.map +1 -1
- package/lib-prod/index._auto-generated_.d.ts +4 -0
- package/lib-prod/index._auto-generated_.js +13 -1
- package/lib-prod/index._auto-generated_.js.map +1 -1
- package/lib-prod/my-organization-proj.js +1 -2
- package/lib-prod/my-organization-proj.js.map +1 -1
- package/lib-prod/package.json +1 -1
- package/lib-prod/taon-admin-layout/index.d.ts +1 -1
- package/lib-prod/taon-admin-layout/index.js +1 -1
- package/lib-prod/taon-admin-layout/taon-admin-layout.models.d.ts +13 -1
- package/lib-prod/taon-admin-layout/taon-admin-layout.models.js +11 -1
- package/lib-prod/taon-admin-layout/taon-admin-layout.models.js.map +1 -1
- package/lib-prod/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.en-US.i18n.data.d.ts +15 -0
- package/lib-prod/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.en-US.i18n.data.js +13 -0
- package/lib-prod/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.en-US.i18n.data.js.map +1 -0
- package/lib-prod/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.pl-PL.i18n.data.d.ts +15 -0
- package/lib-prod/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.pl-PL.i18n.data.js +13 -0
- package/lib-prod/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.pl-PL.i18n.data.js.map +1 -0
- package/lib-prod/taon-backoffice-notifications/i18n/taon-backoffice-notifications.translation.d.ts +4 -0
- package/lib-prod/taon-backoffice-notifications/i18n/taon-backoffice-notifications.translation.js +4 -0
- package/lib-prod/taon-backoffice-notifications/i18n/taon-backoffice-notifications.translation.js.map +1 -0
- package/lib-prod/taon-backoffice-notifications/index.d.ts +1 -0
- package/lib-prod/taon-backoffice-notifications/index.js +8 -0
- package/lib-prod/taon-backoffice-notifications/index.js.map +1 -0
- package/lib-prod/taon-backoffice-notifications/taon-backoffice-notifications.models.d.ts +11 -0
- package/lib-prod/taon-backoffice-notifications/taon-backoffice-notifications.models.js +2 -0
- package/lib-prod/taon-backoffice-notifications/taon-backoffice-notifications.models.js.map +1 -0
- package/lib-prod/taon-confirm-dialog/taon-confirm-dialog.models.d.ts +0 -0
- package/lib-prod/taon-confirm-dialog/taon-confirm-dialog.models.js +3 -0
- package/lib-prod/taon-confirm-dialog/taon-confirm-dialog.models.js.map +1 -0
- package/lib-prod/taon-datatable/index.d.ts +1 -0
- package/lib-prod/taon-datatable/index.js +2 -0
- package/lib-prod/taon-datatable/index.js.map +1 -0
- package/lib-prod/taon-datatable/taon-datatable.models.d.ts +0 -0
- package/lib-prod/taon-datatable/taon-datatable.models.js +3 -0
- package/lib-prod/taon-datatable/taon-datatable.models.js.map +1 -0
- package/lib-prod/taon-draggable-button-panel/index.d.ts +1 -1
- package/lib-prod/taon-draggable-button-panel/index.js +1 -1
- package/package.json +1 -1
- package/scss/lib/taon-backoffice-notifications/taon-backoffice-notifications.component.scss +3 -0
- package/scss/lib/taon-backoffice-notifications/taon-error-details-dialog.component.scss +62 -0
- package/scss/lib/taon-confirm-dialog/taon-confirm-dialog.component.scss +3 -0
- package/scss/lib/taon-datatable/taon-datatable.component.scss +11 -0
- package/scss/lib/taon-draggable-button-panel/taon-draggable-button-panel.component.scss +3 -3
- package/websql/fesm2022/ui-websql-taon-backoffice-notifications.component.ts.en-US.i18n.data-uyZjV7Qx.mjs +15 -0
- package/websql/fesm2022/ui-websql-taon-backoffice-notifications.component.ts.en-US.i18n.data-uyZjV7Qx.mjs.map +1 -0
- package/websql/fesm2022/ui-websql-taon-backoffice-notifications.component.ts.pl-PL.i18n.data-s0tK5HDk.mjs +15 -0
- package/websql/fesm2022/ui-websql-taon-backoffice-notifications.component.ts.pl-PL.i18n.data-s0tK5HDk.mjs.map +1 -0
- package/websql/fesm2022/ui-websql.mjs +857 -30
- package/websql/fesm2022/ui-websql.mjs.map +1 -1
- package/websql/package.json +1 -1
- package/websql/types/ui-websql.d.ts +213 -6
- package/websql-prod/fesm2022/ui-websql-prod-taon-backoffice-notifications.component.ts.en-US.i18n.data-uyZjV7Qx.mjs +15 -0
- package/websql-prod/fesm2022/ui-websql-prod-taon-backoffice-notifications.component.ts.en-US.i18n.data-uyZjV7Qx.mjs.map +1 -0
- package/websql-prod/fesm2022/ui-websql-prod-taon-backoffice-notifications.component.ts.pl-PL.i18n.data-s0tK5HDk.mjs +15 -0
- package/websql-prod/fesm2022/ui-websql-prod-taon-backoffice-notifications.component.ts.pl-PL.i18n.data-s0tK5HDk.mjs.map +1 -0
- package/websql-prod/fesm2022/ui-websql-prod.mjs +863 -30
- package/websql-prod/fesm2022/ui-websql-prod.mjs.map +1 -1
- package/websql-prod/package.json +1 -1
- package/websql-prod/types/ui-websql-prod.d.ts +209 -6
|
@@ -1,22 +1,41 @@
|
|
|
1
|
-
import { decodeEnv, UtilsJson } from 'tnp-core/browser';
|
|
1
|
+
import { decodeEnv, UtilsJson, _ } from 'tnp-core/browser';
|
|
2
2
|
import { Translation } from '@taon-dev/i18n/browser';
|
|
3
3
|
import { BaseCommandLineFeature } from 'tnp-helpers/browser';
|
|
4
|
-
import { CommonModule } from '@angular/common';
|
|
5
4
|
import * as i0 from '@angular/core';
|
|
6
|
-
import { signal, Input, ChangeDetectionStrategy, Component, ViewChild, EventEmitter, Output } from '@angular/core';
|
|
7
|
-
import * as i2$1 from '@angular/
|
|
5
|
+
import { inject, ElementRef, Directive, signal, Input, ChangeDetectionStrategy, Component, ViewChild, Injectable, DestroyRef, ChangeDetectorRef, EventEmitter, Output } from '@angular/core';
|
|
6
|
+
import * as i2$1 from '@angular/common';
|
|
7
|
+
import { CommonModule, NgIf } from '@angular/common';
|
|
8
|
+
import * as i3 from '@angular/material/expansion';
|
|
8
9
|
import { MatExpansionModule } from '@angular/material/expansion';
|
|
9
|
-
import * as
|
|
10
|
+
import * as i4 from '@angular/material/icon';
|
|
10
11
|
import { MatIconModule } from '@angular/material/icon';
|
|
11
12
|
import * as i1 from '@angular/router';
|
|
12
13
|
import { NavigationEnd, RouterOutlet, RouterLink } from '@angular/router';
|
|
13
|
-
import { filter } from 'rxjs';
|
|
14
|
+
import { filter, BehaviorSubject, Subject, switchMap, debounceTime, distinctUntilChanged, tap, of, from, map, catchError, finalize, firstValueFrom, take } from 'rxjs';
|
|
14
15
|
import * as i2 from '@angular/material/tabs';
|
|
15
16
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
16
|
-
import {
|
|
17
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
18
|
+
import { Resource, getDefaultModel } from 'ng2-rest/browser';
|
|
19
|
+
import { HotToastRef, HotToastService } from '@ngneat/hot-toast';
|
|
20
|
+
import * as i1$1 from '@angular/material/dialog';
|
|
21
|
+
import { MAT_DIALOG_DATA, MatDialogModule, MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
17
22
|
import * as i2$2 from '@angular/material/button';
|
|
18
23
|
import { MatButtonModule } from '@angular/material/button';
|
|
19
|
-
import * as
|
|
24
|
+
import * as i3$1 from '@angular/material/button-toggle';
|
|
25
|
+
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
26
|
+
import * as i1$2 from '@angular/forms';
|
|
27
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
28
|
+
import * as i3$2 from '@angular/material/form-field';
|
|
29
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
30
|
+
import * as i5 from '@angular/material/input';
|
|
31
|
+
import { MatInputModule } from '@angular/material/input';
|
|
32
|
+
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
33
|
+
import { MatSelectModule } from '@angular/material/select';
|
|
34
|
+
import * as i6 from '@ng-matero/extensions/grid';
|
|
35
|
+
import { MtxGridModule } from '@ng-matero/extensions/grid';
|
|
36
|
+
import { ClassHelpers, Symbols } from 'taon/browser';
|
|
37
|
+
import { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';
|
|
38
|
+
import * as i4$1 from '@angular/material/tooltip';
|
|
20
39
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
21
40
|
|
|
22
41
|
// THIS FILE IS GENERATED - DO NOT MODIFY
|
|
@@ -883,12 +902,12 @@ const CURRENT_PACKAGE_TAON_VERSION = 'v21';
|
|
|
883
902
|
/**
|
|
884
903
|
* Autogenerated by current cli tool. Use *tnp release* to bump version.
|
|
885
904
|
*/
|
|
886
|
-
const CURRENT_PACKAGE_VERSION = '21.0.
|
|
905
|
+
const CURRENT_PACKAGE_VERSION = '21.0.4';
|
|
887
906
|
// THIS FILE IS GENERATED - DO NOT MODIFY
|
|
888
907
|
|
|
889
|
-
const t = Translation.for('src/lib/my-organization-proj.ts', { "src/lib/my-organization-proj.ts": { "en-US": async () => (await import('./ui-browser-my-organization-proj.ts.en-US.i18n.data-CoSik70Y.mjs')).default, "pl-PL": async () => (await import('./ui-browser-my-organization-proj.ts.pl-PL.i18n.data-BZPsT3Zk.mjs')).default } });
|
|
908
|
+
const t$1 = Translation.for('src/lib/my-organization-proj.ts', { "src/lib/my-organization-proj.ts": { "en-US": async () => (await import('./ui-browser-my-organization-proj.ts.en-US.i18n.data-CoSik70Y.mjs')).default, "pl-PL": async () => (await import('./ui-browser-my-organization-proj.ts.pl-PL.i18n.data-BZPsT3Zk.mjs')).default } });
|
|
890
909
|
function myOrgProj() {
|
|
891
|
-
t.gettext('My Translated Company Name!');
|
|
910
|
+
t$1.gettext('My Translated Company Name!');
|
|
892
911
|
}
|
|
893
912
|
|
|
894
913
|
//#region tnp-helpers cli template
|
|
@@ -980,6 +999,67 @@ async function startCli(argsv, filename) {
|
|
|
980
999
|
return (void 0);
|
|
981
1000
|
}
|
|
982
1001
|
|
|
1002
|
+
//#region imports
|
|
1003
|
+
//#endregion
|
|
1004
|
+
class TaonHorizontalWheelScrollDirective {
|
|
1005
|
+
constructor() {
|
|
1006
|
+
//#region fields
|
|
1007
|
+
this.elementRef = inject((ElementRef));
|
|
1008
|
+
this.wheelAccumulator = 0;
|
|
1009
|
+
/**
|
|
1010
|
+
* Amount of wheel movement required before triggering
|
|
1011
|
+
* Material's previous/next pagination.
|
|
1012
|
+
*/
|
|
1013
|
+
this.wheelThreshold = 40;
|
|
1014
|
+
//#endregion
|
|
1015
|
+
//#region wheel
|
|
1016
|
+
this.onWheel = (event) => {
|
|
1017
|
+
const delta = Math.abs(event.deltaX) > Math.abs(event.deltaY)
|
|
1018
|
+
? event.deltaX
|
|
1019
|
+
: event.deltaY;
|
|
1020
|
+
if (!delta) {
|
|
1021
|
+
return;
|
|
1022
|
+
}
|
|
1023
|
+
this.wheelAccumulator += delta;
|
|
1024
|
+
if (Math.abs(this.wheelAccumulator) < this.wheelThreshold) {
|
|
1025
|
+
return;
|
|
1026
|
+
}
|
|
1027
|
+
const direction = this.wheelAccumulator > 0 ? 'after' : 'before';
|
|
1028
|
+
this.wheelAccumulator = 0;
|
|
1029
|
+
// @ts-ignore
|
|
1030
|
+
const pagination = this.elementRef.nativeElement.querySelector(`.mat-mdc-tab-header-pagination-${direction}`);
|
|
1031
|
+
if (!pagination) {
|
|
1032
|
+
return;
|
|
1033
|
+
}
|
|
1034
|
+
const disabled = pagination.classList.contains('mat-mdc-tab-header-pagination-disabled');
|
|
1035
|
+
if (disabled) {
|
|
1036
|
+
return;
|
|
1037
|
+
}
|
|
1038
|
+
event.preventDefault();
|
|
1039
|
+
pagination.click();
|
|
1040
|
+
};
|
|
1041
|
+
}
|
|
1042
|
+
//#endregion
|
|
1043
|
+
//#region lifecycle
|
|
1044
|
+
ngAfterViewInit() {
|
|
1045
|
+
this.elementRef.nativeElement.addEventListener('wheel', this.onWheel, {
|
|
1046
|
+
passive: false,
|
|
1047
|
+
});
|
|
1048
|
+
}
|
|
1049
|
+
ngOnDestroy() {
|
|
1050
|
+
this.elementRef.nativeElement.removeEventListener('wheel', this.onWheel);
|
|
1051
|
+
}
|
|
1052
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonHorizontalWheelScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1053
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.9", type: TaonHorizontalWheelScrollDirective, isStandalone: true, selector: "[taonHorizontalWheelScroll]", ngImport: i0 }); }
|
|
1054
|
+
}
|
|
1055
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonHorizontalWheelScrollDirective, decorators: [{
|
|
1056
|
+
type: Directive,
|
|
1057
|
+
args: [{
|
|
1058
|
+
selector: '[taonHorizontalWheelScroll]',
|
|
1059
|
+
standalone: true,
|
|
1060
|
+
}]
|
|
1061
|
+
}] });
|
|
1062
|
+
|
|
983
1063
|
;
|
|
984
1064
|
// THIS FILE IS GENERATED - DO NOT MODIFY
|
|
985
1065
|
|
|
@@ -1477,6 +1557,9 @@ class TaonAdminLayoutComponent {
|
|
|
1477
1557
|
label(route) {
|
|
1478
1558
|
return route.data?.['menuItem'] ?? this.startCase(route.path ?? '');
|
|
1479
1559
|
}
|
|
1560
|
+
color(route) {
|
|
1561
|
+
return route.data?.['color'];
|
|
1562
|
+
}
|
|
1480
1563
|
icon(route) {
|
|
1481
1564
|
return route.data?.['icon'];
|
|
1482
1565
|
}
|
|
@@ -1529,7 +1612,7 @@ class TaonAdminLayoutComponent {
|
|
|
1529
1612
|
.replace(/\b\w/g, char => char.toUpperCase());
|
|
1530
1613
|
}
|
|
1531
1614
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonAdminLayoutComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1532
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonAdminLayoutComponent, isStandalone: true, selector: "taon-admin-layout", inputs: { routes: "routes", basePath: "basePath", outlet: "outlet" }, ngImport: i0, template: "<div class=\"flex h-dvh min-h-0 flex-col overflow-hidden\">\n <!-- ============================================================= -->\n <!-- HEADER -->\n <!-- ============================================================= -->\n\n <header\n class=\"flex h-16 shrink-0 items-center border-b border-gray-200 bg-white\">\n <!-- hamburger ALWAYS visible -->\n <button\n mat-icon-button\n type=\"button\"\n aria-label=\"Toggle admin menu\"\n class=\"mx-2 shrink-0 cursor-pointer\"\n (click)=\"toggleAside()\">\n <mat-icon>menu</mat-icon>\n </button>\n\n <div class=\"min-w-0 flex-1\">\n <ng-content select=\"[header]\" />\n </div>\n </header>\n\n <!-- ============================================================= -->\n <!-- BODY -->\n <!-- ============================================================= -->\n\n <div class=\"relative flex min-h-0 flex-1 overflow-hidden\">\n <!-- =========================================================== -->\n <!-- MOBILE BACKDROP -->\n <!-- =========================================================== -->\n\n @if (asideOpened()) {\n <div\n class=\"absolute inset-0 z-20 bg-black/30 md:hidden\"\n (click)=\"closeAside()\"></div>\n }\n\n <!-- =========================================================== -->\n <!-- ASIDE -->\n <!-- =========================================================== -->\n\n <aside\n class=\"absolute inset-y-0 left-0 z-30 flex min-h-0 flex-col border-r border-gray-200 bg-white transition-[width,transform] duration-200 md:relative md:inset-auto md:z-auto md:translate-x-0\"\n [class.w-72]=\"asideOpened()\"\n [class.-translate-x-full]=\"!asideOpened()\"\n [class.translate-x-0]=\"asideOpened()\"\n [class.md:w-72]=\"asideOpened()\"\n [class.md:w-0]=\"!asideOpened()\"\n [class.md:overflow-hidden]=\"!asideOpened()\">\n <!-- ========================================================= -->\n <!-- SCROLLABLE ASIDE CONTENT -->\n <!-- ========================================================= -->\n\n <div class=\"min-h-0 flex-1 overflow-y-auto\">\n <mat-accordion class=\"admin-menu\">\n @for (level1 of routes; track level1.path) {\n <!-- =================================================== -->\n <!-- EXPANDABLE LEVEL 1 -->\n <!-- =================================================== -->\n\n @if (isExpandable(level1)) {\n <mat-expansion-panel\n [expanded]=\"isLevel1Active(level1)\"\n (expandedChange)=\"panelExpanded(level1, $event)\">\n <!-- ================================================= -->\n <!-- LEVEL 1 -->\n <!-- ================================================= -->\n\n <mat-expansion-panel-header (click)=\"level1Clicked(level1)\">\n <mat-panel-title>\n <div class=\"flex items-center gap-3\">\n @if (icon(level1)) {\n <mat-icon>\n {{ icon(level1) }}\n </mat-icon>\n }\n\n <span
|
|
1615
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonAdminLayoutComponent, isStandalone: true, selector: "taon-admin-layout", inputs: { routes: "routes", basePath: "basePath", outlet: "outlet" }, ngImport: i0, template: "<div class=\"flex h-dvh min-h-0 flex-col overflow-hidden\">\n <!-- ============================================================= -->\n <!-- HEADER -->\n <!-- ============================================================= -->\n\n <header\n class=\"flex h-16 shrink-0 items-center border-b border-gray-200 bg-white\">\n <!-- hamburger ALWAYS visible -->\n <button\n mat-icon-button\n type=\"button\"\n aria-label=\"Toggle admin menu\"\n class=\"mx-2 shrink-0 cursor-pointer\"\n (click)=\"toggleAside()\">\n <mat-icon>menu</mat-icon>\n </button>\n\n <div class=\"min-w-0 flex-1\">\n <ng-content select=\"[header]\" />\n </div>\n </header>\n\n <!-- ============================================================= -->\n <!-- BODY -->\n <!-- ============================================================= -->\n\n <div class=\"relative flex min-h-0 flex-1 overflow-hidden\">\n <!-- =========================================================== -->\n <!-- MOBILE BACKDROP -->\n <!-- =========================================================== -->\n\n @if (asideOpened()) {\n <div\n class=\"absolute inset-0 z-20 bg-black/30 md:hidden\"\n (click)=\"closeAside()\"></div>\n }\n\n <!-- =========================================================== -->\n <!-- ASIDE -->\n <!-- =========================================================== -->\n\n <aside\n class=\"absolute inset-y-0 left-0 z-30 flex min-h-0 flex-col border-r border-gray-200 bg-white transition-[width,transform] duration-200 md:relative md:inset-auto md:z-auto md:translate-x-0\"\n [class.w-72]=\"asideOpened()\"\n [class.-translate-x-full]=\"!asideOpened()\"\n [class.translate-x-0]=\"asideOpened()\"\n [class.md:w-72]=\"asideOpened()\"\n [class.md:w-0]=\"!asideOpened()\"\n [class.md:overflow-hidden]=\"!asideOpened()\">\n <!-- ========================================================= -->\n <!-- SCROLLABLE ASIDE CONTENT -->\n <!-- ========================================================= -->\n\n <div class=\"min-h-0 flex-1 overflow-y-auto\">\n <mat-accordion class=\"admin-menu\">\n @for (level1 of routes; track level1.path) {\n <!-- =================================================== -->\n <!-- EXPANDABLE LEVEL 1 -->\n <!-- =================================================== -->\n\n @if (isExpandable(level1)) {\n <mat-expansion-panel\n [expanded]=\"isLevel1Active(level1)\"\n (expandedChange)=\"panelExpanded(level1, $event)\">\n <!-- ================================================= -->\n <!-- LEVEL 1 -->\n <!-- ================================================= -->\n\n <mat-expansion-panel-header (click)=\"level1Clicked(level1)\">\n <mat-panel-title>\n <div class=\"flex items-center gap-3\">\n @if (icon(level1)) {\n <mat-icon [ngStyle]=\"{ color: color(level1) }\">\n {{ icon(level1) }}\n </mat-icon>\n }\n\n <span\n [class.font-semibold]=\"isLevel1Active(level1)\"\n [ngStyle]=\"{ color: color(level1) }\">\n {{ label(level1) }}\n </span>\n </div>\n </mat-panel-title>\n </mat-expansion-panel-header>\n\n <!-- ================================================= -->\n <!-- LEVEL 2 -->\n <!-- ================================================= -->\n\n <div class=\"flex flex-col\">\n @if (isLoading(level1)) {\n <div class=\"px-4 py-2 text-sm text-gray-400\">\n Loading...\n </div>\n } @else {\n @for (\n level2 of getLevel2Routes(level1);\n track level2.path\n ) {\n <a\n (click)=\"level2Clicked(level1, level2)\"\n class=\"flex cursor-pointer items-center gap-3 px-6 py-2.5 text-sm transition-colors hover:bg-gray-100\"\n [class.bg-gray-100]=\"isLevel2Active(level1, level2)\"\n [class.font-semibold]=\"isLevel2Active(level1, level2)\">\n @if (icon(level2)) {\n <mat-icon [ngStyle]=\"{ color: color(level2) }\">\n {{ icon(level2) }}\n </mat-icon>\n }\n\n <span [ngStyle]=\"{ color: color(level2) }\">\n {{ label(level2) }}\n </span>\n </a>\n }\n }\n </div>\n </mat-expansion-panel>\n } @else {\n <!-- ================================================= -->\n <!-- NON-EXPANDABLE LEVEL 1 -->\n <!-- ================================================= -->\n\n <a\n (click)=\"level1Clicked(level1)\"\n class=\"flex h-14 cursor-pointer items-center gap-3 px-6 transition-colors hover:bg-gray-100\"\n [class.bg-gray-100]=\"isLevel1Active(level1)\"\n [class.font-semibold]=\"isLevel1Active(level1)\">\n @if (icon(level1)) {\n <mat-icon [ngStyle]=\"{ color: color(level1) }\">\n {{ icon(level1) }}\n </mat-icon>\n }\n\n <span [ngStyle]=\"{ color: color(level1) }\">\n {{ label(level1) }}\n </span>\n </a>\n }\n }\n </mat-accordion>\n </div>\n\n <!-- ========================================================= -->\n <!-- ASIDE FOOTER - ALWAYS VISIBLE -->\n <!-- ========================================================= -->\n\n <footer class=\"shrink-0 border-t border-gray-200 bg-white p-3\">\n <ng-content select=\"[asideFooter]\" />\n </footer>\n </aside>\n\n <!-- =========================================================== -->\n <!-- MAIN -->\n <!-- =========================================================== -->\n\n <main class=\"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden\">\n <!-- ========================================================= -->\n <!-- LEVEL 3+ TABS -->\n <!-- ========================================================= -->\n\n <taon-admin-page-tabs\n class=\"shrink-0\"\n [routes]=\"routes\"\n [basePath]=\"basePath\"\n [outlet]=\"outlet\" />\n\n <!-- ========================================================= -->\n <!-- ROUTER CONTENT -->\n <!-- ========================================================= -->\n\n <div class=\"min-h-0 flex-1 overflow-y-auto p-4 md:p-6\">\n <router-outlet />\n </div>\n </main>\n </div>\n</div>\n", styles: [":host{display:block;height:100%;min-height:0}.admin-menu mat-expansion-panel{border-radius:0!important;box-shadow:none!important;border-bottom:1px solid var(--mat-sys-outline-variant);margin-top:0!important;margin-bottom:0!important}.admin-menu mat-expansion-panel:first-of-type,.admin-menu mat-expansion-panel:last-of-type{border-radius:0!important}.admin-menu mat-expansion-panel-header{border-radius:0!important}.admin-aside{position:absolute;inset-block:0;left:0;z-index:30;display:flex;flex-direction:column;width:18rem;min-height:0;background:#fff;border-right:1px solid var(--mat-sys-outline-variant);transform:translate(-100%);transition:transform .2s ease,width .2s ease;overflow:hidden}.admin-aside-open{transform:translate(0)}@media(min-width:768px){.admin-aside{position:relative;inset:auto;z-index:auto;width:0;transform:none}.admin-aside-open{width:18rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i3.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i3.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i3.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i3.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: TaonAdminPageTabsComponent, selector: "taon-admin-page-tabs", inputs: ["routes", "basePath", "outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1533
1616
|
}
|
|
1534
1617
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonAdminLayoutComponent, decorators: [{
|
|
1535
1618
|
type: Component,
|
|
@@ -1540,7 +1623,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
|
|
|
1540
1623
|
MatExpansionModule,
|
|
1541
1624
|
MatIconModule,
|
|
1542
1625
|
TaonAdminPageTabsComponent,
|
|
1543
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex h-dvh min-h-0 flex-col overflow-hidden\">\n <!-- ============================================================= -->\n <!-- HEADER -->\n <!-- ============================================================= -->\n\n <header\n class=\"flex h-16 shrink-0 items-center border-b border-gray-200 bg-white\">\n <!-- hamburger ALWAYS visible -->\n <button\n mat-icon-button\n type=\"button\"\n aria-label=\"Toggle admin menu\"\n class=\"mx-2 shrink-0 cursor-pointer\"\n (click)=\"toggleAside()\">\n <mat-icon>menu</mat-icon>\n </button>\n\n <div class=\"min-w-0 flex-1\">\n <ng-content select=\"[header]\" />\n </div>\n </header>\n\n <!-- ============================================================= -->\n <!-- BODY -->\n <!-- ============================================================= -->\n\n <div class=\"relative flex min-h-0 flex-1 overflow-hidden\">\n <!-- =========================================================== -->\n <!-- MOBILE BACKDROP -->\n <!-- =========================================================== -->\n\n @if (asideOpened()) {\n <div\n class=\"absolute inset-0 z-20 bg-black/30 md:hidden\"\n (click)=\"closeAside()\"></div>\n }\n\n <!-- =========================================================== -->\n <!-- ASIDE -->\n <!-- =========================================================== -->\n\n <aside\n class=\"absolute inset-y-0 left-0 z-30 flex min-h-0 flex-col border-r border-gray-200 bg-white transition-[width,transform] duration-200 md:relative md:inset-auto md:z-auto md:translate-x-0\"\n [class.w-72]=\"asideOpened()\"\n [class.-translate-x-full]=\"!asideOpened()\"\n [class.translate-x-0]=\"asideOpened()\"\n [class.md:w-72]=\"asideOpened()\"\n [class.md:w-0]=\"!asideOpened()\"\n [class.md:overflow-hidden]=\"!asideOpened()\">\n <!-- ========================================================= -->\n <!-- SCROLLABLE ASIDE CONTENT -->\n <!-- ========================================================= -->\n\n <div class=\"min-h-0 flex-1 overflow-y-auto\">\n <mat-accordion class=\"admin-menu\">\n @for (level1 of routes; track level1.path) {\n <!-- =================================================== -->\n <!-- EXPANDABLE LEVEL 1 -->\n <!-- =================================================== -->\n\n @if (isExpandable(level1)) {\n <mat-expansion-panel\n [expanded]=\"isLevel1Active(level1)\"\n (expandedChange)=\"panelExpanded(level1, $event)\">\n <!-- ================================================= -->\n <!-- LEVEL 1 -->\n <!-- ================================================= -->\n\n <mat-expansion-panel-header (click)=\"level1Clicked(level1)\">\n <mat-panel-title>\n <div class=\"flex items-center gap-3\">\n @if (icon(level1)) {\n <mat-icon>\n {{ icon(level1) }}\n </mat-icon>\n }\n\n <span
|
|
1626
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex h-dvh min-h-0 flex-col overflow-hidden\">\n <!-- ============================================================= -->\n <!-- HEADER -->\n <!-- ============================================================= -->\n\n <header\n class=\"flex h-16 shrink-0 items-center border-b border-gray-200 bg-white\">\n <!-- hamburger ALWAYS visible -->\n <button\n mat-icon-button\n type=\"button\"\n aria-label=\"Toggle admin menu\"\n class=\"mx-2 shrink-0 cursor-pointer\"\n (click)=\"toggleAside()\">\n <mat-icon>menu</mat-icon>\n </button>\n\n <div class=\"min-w-0 flex-1\">\n <ng-content select=\"[header]\" />\n </div>\n </header>\n\n <!-- ============================================================= -->\n <!-- BODY -->\n <!-- ============================================================= -->\n\n <div class=\"relative flex min-h-0 flex-1 overflow-hidden\">\n <!-- =========================================================== -->\n <!-- MOBILE BACKDROP -->\n <!-- =========================================================== -->\n\n @if (asideOpened()) {\n <div\n class=\"absolute inset-0 z-20 bg-black/30 md:hidden\"\n (click)=\"closeAside()\"></div>\n }\n\n <!-- =========================================================== -->\n <!-- ASIDE -->\n <!-- =========================================================== -->\n\n <aside\n class=\"absolute inset-y-0 left-0 z-30 flex min-h-0 flex-col border-r border-gray-200 bg-white transition-[width,transform] duration-200 md:relative md:inset-auto md:z-auto md:translate-x-0\"\n [class.w-72]=\"asideOpened()\"\n [class.-translate-x-full]=\"!asideOpened()\"\n [class.translate-x-0]=\"asideOpened()\"\n [class.md:w-72]=\"asideOpened()\"\n [class.md:w-0]=\"!asideOpened()\"\n [class.md:overflow-hidden]=\"!asideOpened()\">\n <!-- ========================================================= -->\n <!-- SCROLLABLE ASIDE CONTENT -->\n <!-- ========================================================= -->\n\n <div class=\"min-h-0 flex-1 overflow-y-auto\">\n <mat-accordion class=\"admin-menu\">\n @for (level1 of routes; track level1.path) {\n <!-- =================================================== -->\n <!-- EXPANDABLE LEVEL 1 -->\n <!-- =================================================== -->\n\n @if (isExpandable(level1)) {\n <mat-expansion-panel\n [expanded]=\"isLevel1Active(level1)\"\n (expandedChange)=\"panelExpanded(level1, $event)\">\n <!-- ================================================= -->\n <!-- LEVEL 1 -->\n <!-- ================================================= -->\n\n <mat-expansion-panel-header (click)=\"level1Clicked(level1)\">\n <mat-panel-title>\n <div class=\"flex items-center gap-3\">\n @if (icon(level1)) {\n <mat-icon [ngStyle]=\"{ color: color(level1) }\">\n {{ icon(level1) }}\n </mat-icon>\n }\n\n <span\n [class.font-semibold]=\"isLevel1Active(level1)\"\n [ngStyle]=\"{ color: color(level1) }\">\n {{ label(level1) }}\n </span>\n </div>\n </mat-panel-title>\n </mat-expansion-panel-header>\n\n <!-- ================================================= -->\n <!-- LEVEL 2 -->\n <!-- ================================================= -->\n\n <div class=\"flex flex-col\">\n @if (isLoading(level1)) {\n <div class=\"px-4 py-2 text-sm text-gray-400\">\n Loading...\n </div>\n } @else {\n @for (\n level2 of getLevel2Routes(level1);\n track level2.path\n ) {\n <a\n (click)=\"level2Clicked(level1, level2)\"\n class=\"flex cursor-pointer items-center gap-3 px-6 py-2.5 text-sm transition-colors hover:bg-gray-100\"\n [class.bg-gray-100]=\"isLevel2Active(level1, level2)\"\n [class.font-semibold]=\"isLevel2Active(level1, level2)\">\n @if (icon(level2)) {\n <mat-icon [ngStyle]=\"{ color: color(level2) }\">\n {{ icon(level2) }}\n </mat-icon>\n }\n\n <span [ngStyle]=\"{ color: color(level2) }\">\n {{ label(level2) }}\n </span>\n </a>\n }\n }\n </div>\n </mat-expansion-panel>\n } @else {\n <!-- ================================================= -->\n <!-- NON-EXPANDABLE LEVEL 1 -->\n <!-- ================================================= -->\n\n <a\n (click)=\"level1Clicked(level1)\"\n class=\"flex h-14 cursor-pointer items-center gap-3 px-6 transition-colors hover:bg-gray-100\"\n [class.bg-gray-100]=\"isLevel1Active(level1)\"\n [class.font-semibold]=\"isLevel1Active(level1)\">\n @if (icon(level1)) {\n <mat-icon [ngStyle]=\"{ color: color(level1) }\">\n {{ icon(level1) }}\n </mat-icon>\n }\n\n <span [ngStyle]=\"{ color: color(level1) }\">\n {{ label(level1) }}\n </span>\n </a>\n }\n }\n </mat-accordion>\n </div>\n\n <!-- ========================================================= -->\n <!-- ASIDE FOOTER - ALWAYS VISIBLE -->\n <!-- ========================================================= -->\n\n <footer class=\"shrink-0 border-t border-gray-200 bg-white p-3\">\n <ng-content select=\"[asideFooter]\" />\n </footer>\n </aside>\n\n <!-- =========================================================== -->\n <!-- MAIN -->\n <!-- =========================================================== -->\n\n <main class=\"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden\">\n <!-- ========================================================= -->\n <!-- LEVEL 3+ TABS -->\n <!-- ========================================================= -->\n\n <taon-admin-page-tabs\n class=\"shrink-0\"\n [routes]=\"routes\"\n [basePath]=\"basePath\"\n [outlet]=\"outlet\" />\n\n <!-- ========================================================= -->\n <!-- ROUTER CONTENT -->\n <!-- ========================================================= -->\n\n <div class=\"min-h-0 flex-1 overflow-y-auto p-4 md:p-6\">\n <router-outlet />\n </div>\n </main>\n </div>\n</div>\n", styles: [":host{display:block;height:100%;min-height:0}.admin-menu mat-expansion-panel{border-radius:0!important;box-shadow:none!important;border-bottom:1px solid var(--mat-sys-outline-variant);margin-top:0!important;margin-bottom:0!important}.admin-menu mat-expansion-panel:first-of-type,.admin-menu mat-expansion-panel:last-of-type{border-radius:0!important}.admin-menu mat-expansion-panel-header{border-radius:0!important}.admin-aside{position:absolute;inset-block:0;left:0;z-index:30;display:flex;flex-direction:column;width:18rem;min-height:0;background:#fff;border-right:1px solid var(--mat-sys-outline-variant);transform:translate(-100%);transition:transform .2s ease,width .2s ease;overflow:hidden}.admin-aside-open{transform:translate(0)}@media(min-width:768px){.admin-aside{position:relative;inset:auto;z-index:auto;width:0;transform:none}.admin-aside-open{width:18rem}}\n"] }]
|
|
1544
1627
|
}], ctorParameters: () => [{ type: i1.Router }], propDecorators: { routes: [{
|
|
1545
1628
|
type: Input,
|
|
1546
1629
|
args: [{ required: true }]
|
|
@@ -1550,8 +1633,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
|
|
|
1550
1633
|
type: Input
|
|
1551
1634
|
}] } });
|
|
1552
1635
|
|
|
1553
|
-
|
|
1636
|
+
const TaonBaselineBackofficeOutletName = 'admin';
|
|
1637
|
+
function adminLazyRoute(options) {
|
|
1638
|
+
const { path, loader, menuItem, icon, color, expandable, hideInNavigation } = options;
|
|
1554
1639
|
return {
|
|
1640
|
+
path,
|
|
1641
|
+
data: {
|
|
1642
|
+
menuItem,
|
|
1643
|
+
color,
|
|
1644
|
+
icon,
|
|
1645
|
+
expandable,
|
|
1646
|
+
hideInNavigation,
|
|
1647
|
+
},
|
|
1555
1648
|
loadChildren: loader,
|
|
1556
1649
|
loadAdminChildren: loader,
|
|
1557
1650
|
};
|
|
@@ -1574,6 +1667,612 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
|
|
|
1574
1667
|
args: [RouterOutlet]
|
|
1575
1668
|
}] } });
|
|
1576
1669
|
|
|
1670
|
+
//#region imports
|
|
1671
|
+
class TaonErrorDetailsDialogComponent {
|
|
1672
|
+
constructor() {
|
|
1673
|
+
//#region injections
|
|
1674
|
+
this.data = inject(MAT_DIALOG_DATA);
|
|
1675
|
+
//#endregion
|
|
1676
|
+
//#region constants
|
|
1677
|
+
this.editorStorageKey = 'taon-error-details-editor';
|
|
1678
|
+
//#endregion
|
|
1679
|
+
//#region state
|
|
1680
|
+
this.editor = this.loadEditor();
|
|
1681
|
+
this.stackLines = this.parseStackTrace(this.data.details);
|
|
1682
|
+
}
|
|
1683
|
+
//#endregion
|
|
1684
|
+
//#region editor
|
|
1685
|
+
setEditor(editor) {
|
|
1686
|
+
this.editor = editor;
|
|
1687
|
+
localStorage.setItem(this.editorStorageKey, editor);
|
|
1688
|
+
}
|
|
1689
|
+
loadEditor() {
|
|
1690
|
+
const editor = localStorage.getItem(this.editorStorageKey);
|
|
1691
|
+
if (editor === 'vscode' || editor === 'vscodium') {
|
|
1692
|
+
return editor;
|
|
1693
|
+
}
|
|
1694
|
+
return 'vscode';
|
|
1695
|
+
}
|
|
1696
|
+
//#endregion
|
|
1697
|
+
//#region stack trace
|
|
1698
|
+
parseStackTrace(stack) {
|
|
1699
|
+
return stack
|
|
1700
|
+
.split('\n')
|
|
1701
|
+
.map(text => text.trimEnd())
|
|
1702
|
+
.filter(text => text.trim().length > 0)
|
|
1703
|
+
.map(text => this.parseStackTraceLine(text));
|
|
1704
|
+
}
|
|
1705
|
+
parseStackTraceLine(text) {
|
|
1706
|
+
/**
|
|
1707
|
+
* Matches:
|
|
1708
|
+
*
|
|
1709
|
+
* /Users/test/file.ts:10:20
|
|
1710
|
+
*
|
|
1711
|
+
* C:\projects\test\file.ts:10:20
|
|
1712
|
+
*
|
|
1713
|
+
* at something (/Users/test/file.ts:10:20)
|
|
1714
|
+
*/
|
|
1715
|
+
const match = text.match(/((?:[A-Za-z]:[\\/]|\/)[^()\n]+?):(\d+):(\d+)/);
|
|
1716
|
+
if (!match) {
|
|
1717
|
+
return {
|
|
1718
|
+
text,
|
|
1719
|
+
};
|
|
1720
|
+
}
|
|
1721
|
+
return {
|
|
1722
|
+
text,
|
|
1723
|
+
file: match[1],
|
|
1724
|
+
line: Number(match[2]),
|
|
1725
|
+
column: Number(match[3]),
|
|
1726
|
+
};
|
|
1727
|
+
}
|
|
1728
|
+
//#endregion
|
|
1729
|
+
//#region open editor
|
|
1730
|
+
openStackLine(stackLine) {
|
|
1731
|
+
if (!stackLine.file || !stackLine.line) {
|
|
1732
|
+
return;
|
|
1733
|
+
}
|
|
1734
|
+
const url = this.createEditorUrl(stackLine.file, stackLine.line, stackLine.column);
|
|
1735
|
+
window.location.href = url;
|
|
1736
|
+
}
|
|
1737
|
+
createEditorUrl(file, line, column) {
|
|
1738
|
+
const protocol = this.editor === 'vscodium' ? 'vscodium' : 'vscode';
|
|
1739
|
+
const location = [file, line, column]
|
|
1740
|
+
.filter(value => value !== undefined)
|
|
1741
|
+
.join(':');
|
|
1742
|
+
return `${protocol}://file${location}`;
|
|
1743
|
+
}
|
|
1744
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonErrorDetailsDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1745
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonErrorDetailsDialogComponent, isStandalone: true, selector: "taon-error-details-dialog", ngImport: i0, template: "<h2 mat-dialog-title>Error details</h2>\n\n<mat-dialog-content>\n <div class=\"error-message\">\n {{ data.message }}\n </div>\n\n <div class=\"editor-selector\">\n <span class=\"editor-selector-label\"> I am using editor: </span>\n\n <mat-button-toggle-group\n [value]=\"editor\"\n (change)=\"setEditor($event.value)\"\n aria-label=\"Code editor\">\n <mat-button-toggle value=\"vscode\"> VS Code </mat-button-toggle>\n\n <mat-button-toggle value=\"vscodium\"> VSCodium </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n\n <pre\n class=\"error-details\"><code>@for (stackLine of stackLines; track $index) {\n@if (stackLine.file) {<a\n class=\"stack-link\"\n title=\"Open {{ stackLine.file }}:{{ stackLine.line }}:{{ stackLine.column }}\"\n (click)=\"openStackLine(stackLine)\">{{ stackLine.text }}</a>} @else {{{ stackLine.text }}}{{ '\\n' }}\n}</code></pre>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n <button\n mat-button\n mat-dialog-close>\n Close\n </button>\n</mat-dialog-actions>\n", styles: [".error-message{margin-bottom:16px;font-weight:500}.editor-selector{display:flex;align-items:center;gap:12px;margin-bottom:12px}.editor-selector-label{font-size:13px}.error-details{box-sizing:border-box;max-width:100%;max-height:60vh;margin:0;padding:16px;overflow-y:auto;overflow-x:hidden;border-radius:6px;background:#0000000f;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}.stack-link{cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:2px}.stack-link:hover{background:#00000014}.stack-line{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}\n"], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i3$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i3$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }] }); }
|
|
1746
|
+
}
|
|
1747
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonErrorDetailsDialogComponent, decorators: [{
|
|
1748
|
+
type: Component,
|
|
1749
|
+
args: [{ selector: 'taon-error-details-dialog', standalone: true, imports: [MatDialogModule, MatButtonModule, MatButtonToggleModule], template: "<h2 mat-dialog-title>Error details</h2>\n\n<mat-dialog-content>\n <div class=\"error-message\">\n {{ data.message }}\n </div>\n\n <div class=\"editor-selector\">\n <span class=\"editor-selector-label\"> I am using editor: </span>\n\n <mat-button-toggle-group\n [value]=\"editor\"\n (change)=\"setEditor($event.value)\"\n aria-label=\"Code editor\">\n <mat-button-toggle value=\"vscode\"> VS Code </mat-button-toggle>\n\n <mat-button-toggle value=\"vscodium\"> VSCodium </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n\n <pre\n class=\"error-details\"><code>@for (stackLine of stackLines; track $index) {\n@if (stackLine.file) {<a\n class=\"stack-link\"\n title=\"Open {{ stackLine.file }}:{{ stackLine.line }}:{{ stackLine.column }}\"\n (click)=\"openStackLine(stackLine)\">{{ stackLine.text }}</a>} @else {{{ stackLine.text }}}{{ '\\n' }}\n}</code></pre>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n <button\n mat-button\n mat-dialog-close>\n Close\n </button>\n</mat-dialog-actions>\n", styles: [".error-message{margin-bottom:16px;font-weight:500}.editor-selector{display:flex;align-items:center;gap:12px;margin-bottom:12px}.editor-selector-label{font-size:13px}.error-details{box-sizing:border-box;max-width:100%;max-height:60vh;margin:0;padding:16px;overflow-y:auto;overflow-x:hidden;border-radius:6px;background:#0000000f;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}.stack-link{cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:2px}.stack-link:hover{background:#00000014}.stack-line{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}\n"] }]
|
|
1750
|
+
}] });
|
|
1751
|
+
|
|
1752
|
+
class TaonErrorToastComponent {
|
|
1753
|
+
constructor() {
|
|
1754
|
+
this.toastRef = inject(HotToastRef);
|
|
1755
|
+
this.dialog = inject(MatDialog);
|
|
1756
|
+
this.data = this.toastRef.data;
|
|
1757
|
+
}
|
|
1758
|
+
showDetails() {
|
|
1759
|
+
this.dialog.open(TaonErrorDetailsDialogComponent, {
|
|
1760
|
+
width: '800px',
|
|
1761
|
+
maxWidth: '95vw',
|
|
1762
|
+
data: {
|
|
1763
|
+
message: this.data.title,
|
|
1764
|
+
details: this.data.details,
|
|
1765
|
+
},
|
|
1766
|
+
});
|
|
1767
|
+
this.toastRef.close();
|
|
1768
|
+
}
|
|
1769
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonErrorToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1770
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.9", type: TaonErrorToastComponent, isStandalone: true, selector: "taon-error-toast", ngImport: i0, template: `
|
|
1771
|
+
<div
|
|
1772
|
+
class="taon-error-toast"
|
|
1773
|
+
(click)="showDetails()">
|
|
1774
|
+
<div>{{ data.title }}</div>
|
|
1775
|
+
|
|
1776
|
+
<small> Click for details </small>
|
|
1777
|
+
</div>
|
|
1778
|
+
`, isInline: true, styles: [".taon-error-toast{cursor:pointer}small{display:block;margin-top:4px;opacity:.7}\n"] }); }
|
|
1779
|
+
}
|
|
1780
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonErrorToastComponent, decorators: [{
|
|
1781
|
+
type: Component,
|
|
1782
|
+
args: [{ selector: 'taon-error-toast', standalone: true, template: `
|
|
1783
|
+
<div
|
|
1784
|
+
class="taon-error-toast"
|
|
1785
|
+
(click)="showDetails()">
|
|
1786
|
+
<div>{{ data.title }}</div>
|
|
1787
|
+
|
|
1788
|
+
<small> Click for details </small>
|
|
1789
|
+
</div>
|
|
1790
|
+
`, styles: [".taon-error-toast{cursor:pointer}small{display:block;margin-top:4px;opacity:.7}\n"] }]
|
|
1791
|
+
}] });
|
|
1792
|
+
|
|
1793
|
+
//#region imports
|
|
1794
|
+
//#endregion
|
|
1795
|
+
class TaonBackofficeNotificationsService {
|
|
1796
|
+
constructor() {
|
|
1797
|
+
//#region injections
|
|
1798
|
+
this.toast = inject(HotToastService);
|
|
1799
|
+
}
|
|
1800
|
+
//#endregion
|
|
1801
|
+
//#region private methods
|
|
1802
|
+
normalize(input) {
|
|
1803
|
+
return typeof input === 'string' ? { title: input } : input;
|
|
1804
|
+
}
|
|
1805
|
+
//#endregion
|
|
1806
|
+
//#region notifications
|
|
1807
|
+
success(input) {
|
|
1808
|
+
const { title } = this.normalize(input);
|
|
1809
|
+
return this.toast.success(title);
|
|
1810
|
+
}
|
|
1811
|
+
error(input) {
|
|
1812
|
+
const { title, details } = this.normalize(input);
|
|
1813
|
+
// Normal error - exactly as before
|
|
1814
|
+
if (!details) {
|
|
1815
|
+
return this.toast.error(title);
|
|
1816
|
+
}
|
|
1817
|
+
// Error with clickable details
|
|
1818
|
+
return this.toast.error(TaonErrorToastComponent, {
|
|
1819
|
+
data: {
|
|
1820
|
+
title,
|
|
1821
|
+
details,
|
|
1822
|
+
},
|
|
1823
|
+
});
|
|
1824
|
+
}
|
|
1825
|
+
warn(input) {
|
|
1826
|
+
const { title } = this.normalize(input);
|
|
1827
|
+
return this.toast.warning(title);
|
|
1828
|
+
}
|
|
1829
|
+
info(input) {
|
|
1830
|
+
const { title } = this.normalize(input);
|
|
1831
|
+
return this.toast.info(title);
|
|
1832
|
+
}
|
|
1833
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonBackofficeNotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1834
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonBackofficeNotificationsService, providedIn: 'root' }); }
|
|
1835
|
+
}
|
|
1836
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonBackofficeNotificationsService, decorators: [{
|
|
1837
|
+
type: Injectable,
|
|
1838
|
+
args: [{
|
|
1839
|
+
providedIn: 'root',
|
|
1840
|
+
}]
|
|
1841
|
+
}] });
|
|
1842
|
+
|
|
1843
|
+
//#region imports
|
|
1844
|
+
//#endregion
|
|
1845
|
+
const t = Translation.for('src/lib/taon-backoffice-notifications/taon-backoffice-notifications.component.ts', { "src/lib/taon-backoffice-notifications/taon-backoffice-notifications.component.ts": { "en-US": async () => (await import('./ui-browser-taon-backoffice-notifications.component.ts.en-US.i18n.data-uyZjV7Qx.mjs')).default, "pl-PL": async () => (await import('./ui-browser-taon-backoffice-notifications.component.ts.pl-PL.i18n.data-s0tK5HDk.mjs')).default } });
|
|
1846
|
+
class TaonBackofficeNotificationsComponent {
|
|
1847
|
+
//#endregion
|
|
1848
|
+
//#region constructor
|
|
1849
|
+
constructor() {
|
|
1850
|
+
//#region injections
|
|
1851
|
+
this.t = t.for(this);
|
|
1852
|
+
this.notification = inject(TaonBackofficeNotificationsService);
|
|
1853
|
+
this.destroyRef = inject(DestroyRef);
|
|
1854
|
+
Resource.listenErrors
|
|
1855
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
1856
|
+
.subscribe((error) => {
|
|
1857
|
+
if (_.isFunction(this.filter)) {
|
|
1858
|
+
error = this.filter(error);
|
|
1859
|
+
}
|
|
1860
|
+
const jsonMsg = error?.body?.json;
|
|
1861
|
+
if (!jsonMsg?.message) {
|
|
1862
|
+
console.log({ error });
|
|
1863
|
+
}
|
|
1864
|
+
this.notification.error({
|
|
1865
|
+
title: jsonMsg?.message || t.gettext('Unknown error'),
|
|
1866
|
+
details: jsonMsg?.details,
|
|
1867
|
+
});
|
|
1868
|
+
});
|
|
1869
|
+
}
|
|
1870
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonBackofficeNotificationsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1871
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.9", type: TaonBackofficeNotificationsComponent, isStandalone: true, selector: "taon-backoffice-notifications", inputs: { filter: "filter" }, ngImport: i0, template: "<!-- <p>\n notyfications works!\n</p> -->\n", styles: [":host{display:none}\n"] }); }
|
|
1872
|
+
}
|
|
1873
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonBackofficeNotificationsComponent, decorators: [{
|
|
1874
|
+
type: Component,
|
|
1875
|
+
args: [{ selector: 'taon-backoffice-notifications', standalone: true, template: "<!-- <p>\n notyfications works!\n</p> -->\n", styles: [":host{display:none}\n"] }]
|
|
1876
|
+
}], ctorParameters: () => [], propDecorators: { filter: [{
|
|
1877
|
+
type: Input
|
|
1878
|
+
}] } });
|
|
1879
|
+
|
|
1880
|
+
class TaonConfirmDialogComponent {
|
|
1881
|
+
constructor() {
|
|
1882
|
+
this.data = inject(MAT_DIALOG_DATA);
|
|
1883
|
+
this.dialogRef = inject((MatDialogRef));
|
|
1884
|
+
}
|
|
1885
|
+
cancel() {
|
|
1886
|
+
this.dialogRef.close(false);
|
|
1887
|
+
}
|
|
1888
|
+
confirm() {
|
|
1889
|
+
this.dialogRef.close(true);
|
|
1890
|
+
}
|
|
1891
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonConfirmDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1892
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonConfirmDialogComponent, isStandalone: true, selector: "taon-confirm-dialog", ngImport: i0, template: "<div\n class=\"flex min-w-[320px] max-w-[560px] flex-col gap-6 p-6 text-gray-900 dark:text-gray-100 sm:p-7\">\n <!-- Header -->\n <h2 class=\"m-0 text-xl leading-snug font-medium sm:text-2xl\">\n {{ data.title }}\n </h2>\n\n <!-- Message -->\n @if (data.message) {\n <p\n class=\"m-0 whitespace-pre-line text-base leading-relaxed text-gray-600 dark:text-gray-300 sm:text-lg\">\n {{ data.message }}\n </p>\n }\n\n <!-- Actions -->\n <div class=\"flex flex-wrap items-center justify-end gap-3\">\n <button\n mat-button\n type=\"button\"\n (click)=\"cancel()\">\n {{ data.cancelText || 'Cancel' }}\n </button>\n\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n class=\"!rounded-full !px-6\"\n (click)=\"confirm()\">\n {{ data.confirmText || 'OK' }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] }); }
|
|
1893
|
+
}
|
|
1894
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonConfirmDialogComponent, decorators: [{
|
|
1895
|
+
type: Component,
|
|
1896
|
+
args: [{ selector: 'taon-confirm-dialog', standalone: true, imports: [MatDialogModule, MatButtonModule], template: "<div\n class=\"flex min-w-[320px] max-w-[560px] flex-col gap-6 p-6 text-gray-900 dark:text-gray-100 sm:p-7\">\n <!-- Header -->\n <h2 class=\"m-0 text-xl leading-snug font-medium sm:text-2xl\">\n {{ data.title }}\n </h2>\n\n <!-- Message -->\n @if (data.message) {\n <p\n class=\"m-0 whitespace-pre-line text-base leading-relaxed text-gray-600 dark:text-gray-300 sm:text-lg\">\n {{ data.message }}\n </p>\n }\n\n <!-- Actions -->\n <div class=\"flex flex-wrap items-center justify-end gap-3\">\n <button\n mat-button\n type=\"button\"\n (click)=\"cancel()\">\n {{ data.cancelText || 'Cancel' }}\n </button>\n\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n class=\"!rounded-full !px-6\"\n (click)=\"confirm()\">\n {{ data.confirmText || 'OK' }}\n </button>\n </div>\n</div>\n" }]
|
|
1897
|
+
}] });
|
|
1898
|
+
|
|
1899
|
+
//#region imports
|
|
1900
|
+
//#endregion
|
|
1901
|
+
const defaultColumns = [
|
|
1902
|
+
{
|
|
1903
|
+
header: 'ID',
|
|
1904
|
+
field: 'id',
|
|
1905
|
+
},
|
|
1906
|
+
{
|
|
1907
|
+
header: 'NAME',
|
|
1908
|
+
field: 'name',
|
|
1909
|
+
},
|
|
1910
|
+
];
|
|
1911
|
+
class TaonDatatableComponent {
|
|
1912
|
+
constructor() {
|
|
1913
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
1914
|
+
this.destroyRef = inject(DestroyRef);
|
|
1915
|
+
//#region inputs
|
|
1916
|
+
this.pageNumber = 1;
|
|
1917
|
+
this.pageSize = 10;
|
|
1918
|
+
this.pageSizeOptions = [5, 10, 20, 50, 100];
|
|
1919
|
+
this.allowedColumns = [];
|
|
1920
|
+
this.columns = defaultColumns;
|
|
1921
|
+
this.hideSearch = false;
|
|
1922
|
+
this.hideAddButton = false;
|
|
1923
|
+
this.safe = false;
|
|
1924
|
+
this.searchMode = 'advanced';
|
|
1925
|
+
//#endregion
|
|
1926
|
+
//#region outputs
|
|
1927
|
+
this.expansionChange = new EventEmitter();
|
|
1928
|
+
this.addingItem = new EventEmitter();
|
|
1929
|
+
//#endregion
|
|
1930
|
+
//#region fields
|
|
1931
|
+
this.rows = [];
|
|
1932
|
+
this.totalElements = 0;
|
|
1933
|
+
this.isLoading = false;
|
|
1934
|
+
this.expandable = false;
|
|
1935
|
+
this.advancedSearchOpened = false;
|
|
1936
|
+
this.searchValue = '';
|
|
1937
|
+
this.columnFilters = {};
|
|
1938
|
+
this.reload$ = new BehaviorSubject(undefined);
|
|
1939
|
+
this.searchChange$ = new Subject();
|
|
1940
|
+
this.data$ = this.reload$.pipe(switchMap(() => this.loadData()));
|
|
1941
|
+
}
|
|
1942
|
+
set data(value) {
|
|
1943
|
+
this._data = value ?? undefined;
|
|
1944
|
+
if (this._data) {
|
|
1945
|
+
this.pageNumber = 1;
|
|
1946
|
+
this.reload();
|
|
1947
|
+
}
|
|
1948
|
+
}
|
|
1949
|
+
get data() {
|
|
1950
|
+
return this._data;
|
|
1951
|
+
}
|
|
1952
|
+
get offlineMode() {
|
|
1953
|
+
return this.data !== undefined;
|
|
1954
|
+
}
|
|
1955
|
+
//#endregion
|
|
1956
|
+
//#region getters
|
|
1957
|
+
get entity() {
|
|
1958
|
+
return this.entityCrudController?.entityClassResolveFn();
|
|
1959
|
+
}
|
|
1960
|
+
get filterableColumns() {
|
|
1961
|
+
return this.columns.filter(column => Boolean(column.field));
|
|
1962
|
+
}
|
|
1963
|
+
//#endregion
|
|
1964
|
+
//#region init
|
|
1965
|
+
ngOnInit() {
|
|
1966
|
+
this.prepareColumns();
|
|
1967
|
+
// console.log({ columns: this.columns });
|
|
1968
|
+
this.expandable = Boolean(this.expansionTemplate);
|
|
1969
|
+
this.showPaginator = _.isBoolean(this.showPaginator)
|
|
1970
|
+
? this.showPaginator
|
|
1971
|
+
: Boolean(this.entity) || this.offlineMode;
|
|
1972
|
+
this.searchChange$
|
|
1973
|
+
.pipe(debounceTime(400), distinctUntilChanged(), tap(search => {
|
|
1974
|
+
this.searchValue = search;
|
|
1975
|
+
this.pageNumber = 1;
|
|
1976
|
+
this.reload();
|
|
1977
|
+
}), takeUntilDestroyed(this.destroyRef))
|
|
1978
|
+
.subscribe();
|
|
1979
|
+
this.data$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(rows => {
|
|
1980
|
+
this.rows = rows;
|
|
1981
|
+
this.cdr.markForCheck();
|
|
1982
|
+
});
|
|
1983
|
+
}
|
|
1984
|
+
//#endregion
|
|
1985
|
+
//#region search
|
|
1986
|
+
searchChanged(value) {
|
|
1987
|
+
this.searchChange$.next(value);
|
|
1988
|
+
}
|
|
1989
|
+
clearSearch() {
|
|
1990
|
+
this.searchValue = '';
|
|
1991
|
+
this.columnFilters = {};
|
|
1992
|
+
this.pageNumber = 1;
|
|
1993
|
+
this.reload();
|
|
1994
|
+
}
|
|
1995
|
+
applyAdvancedFilters() {
|
|
1996
|
+
this.pageNumber = 1;
|
|
1997
|
+
this.reload();
|
|
1998
|
+
}
|
|
1999
|
+
toggleAdvancedSearch() {
|
|
2000
|
+
this.advancedSearchOpened = !this.advancedSearchOpened;
|
|
2001
|
+
}
|
|
2002
|
+
//#endregion
|
|
2003
|
+
//#region pagination
|
|
2004
|
+
getNextPage(event) {
|
|
2005
|
+
this.pageNumber = event.pageIndex + 1;
|
|
2006
|
+
this.pageSize = event.pageSize;
|
|
2007
|
+
this.reload();
|
|
2008
|
+
}
|
|
2009
|
+
//#endregion
|
|
2010
|
+
//#region sorting
|
|
2011
|
+
sortChanged(event) {
|
|
2012
|
+
const field = event?.active ?? event?.field;
|
|
2013
|
+
const direction = event?.direction ?? '';
|
|
2014
|
+
this.sort = {
|
|
2015
|
+
field,
|
|
2016
|
+
direction,
|
|
2017
|
+
};
|
|
2018
|
+
this.pageNumber = 1;
|
|
2019
|
+
this.reload();
|
|
2020
|
+
}
|
|
2021
|
+
//#endregion
|
|
2022
|
+
//#region data
|
|
2023
|
+
reload() {
|
|
2024
|
+
this.reload$.next();
|
|
2025
|
+
}
|
|
2026
|
+
getFieldValue(row, field) {
|
|
2027
|
+
return field.split('.').reduce((value, key) => value?.[key], row);
|
|
2028
|
+
}
|
|
2029
|
+
loadOfflineData() {
|
|
2030
|
+
let rows = [...(this.data ?? [])];
|
|
2031
|
+
//#region global search
|
|
2032
|
+
const search = this.searchValue.trim().toLowerCase();
|
|
2033
|
+
if (search) {
|
|
2034
|
+
rows = rows.filter(row => this.columns.some(column => {
|
|
2035
|
+
if (!column.field) {
|
|
2036
|
+
return false;
|
|
2037
|
+
}
|
|
2038
|
+
const value = this.getFieldValue(row, String(column.field));
|
|
2039
|
+
return String(value ?? '')
|
|
2040
|
+
.toLowerCase()
|
|
2041
|
+
.includes(search);
|
|
2042
|
+
}));
|
|
2043
|
+
}
|
|
2044
|
+
//#endregion
|
|
2045
|
+
//#region column filters
|
|
2046
|
+
const filters = this.cleanFilters(this.columnFilters);
|
|
2047
|
+
for (const [field, filterValue] of Object.entries(filters)) {
|
|
2048
|
+
const normalizedFilter = filterValue.toLowerCase();
|
|
2049
|
+
rows = rows.filter(row => {
|
|
2050
|
+
const value = this.getFieldValue(row, field);
|
|
2051
|
+
return String(value ?? '')
|
|
2052
|
+
.toLowerCase()
|
|
2053
|
+
.includes(normalizedFilter);
|
|
2054
|
+
});
|
|
2055
|
+
}
|
|
2056
|
+
//#endregion
|
|
2057
|
+
//#region sorting
|
|
2058
|
+
if (this.sort?.field && this.sort.direction) {
|
|
2059
|
+
const field = String(this.sort.field);
|
|
2060
|
+
const direction = this.sort.direction === 'desc' ? -1 : 1;
|
|
2061
|
+
rows.sort((a, b) => {
|
|
2062
|
+
const aValue = this.getFieldValue(a, field);
|
|
2063
|
+
const bValue = this.getFieldValue(b, field);
|
|
2064
|
+
if (aValue === bValue) {
|
|
2065
|
+
return 0;
|
|
2066
|
+
}
|
|
2067
|
+
if (aValue === undefined || aValue === null) {
|
|
2068
|
+
return -1 * direction;
|
|
2069
|
+
}
|
|
2070
|
+
if (bValue === undefined || bValue === null) {
|
|
2071
|
+
return 1 * direction;
|
|
2072
|
+
}
|
|
2073
|
+
if (typeof aValue === 'number' && typeof bValue === 'number') {
|
|
2074
|
+
return (aValue - bValue) * direction;
|
|
2075
|
+
}
|
|
2076
|
+
return (String(aValue).localeCompare(String(bValue), undefined, {
|
|
2077
|
+
numeric: true,
|
|
2078
|
+
sensitivity: 'base',
|
|
2079
|
+
}) * direction);
|
|
2080
|
+
});
|
|
2081
|
+
}
|
|
2082
|
+
//#endregion
|
|
2083
|
+
//#region pagination
|
|
2084
|
+
this.totalElements = rows.length;
|
|
2085
|
+
const start = (this.pageNumber - 1) * this.pageSize;
|
|
2086
|
+
const end = start + this.pageSize;
|
|
2087
|
+
return this.prepareRows(rows.slice(start, end));
|
|
2088
|
+
//#endregion
|
|
2089
|
+
}
|
|
2090
|
+
loadData() {
|
|
2091
|
+
if (this.offlineMode) {
|
|
2092
|
+
return of(this.loadOfflineData());
|
|
2093
|
+
}
|
|
2094
|
+
if (!this.entity || !this.entityCrudController) {
|
|
2095
|
+
this.totalElements = 0;
|
|
2096
|
+
return of([]);
|
|
2097
|
+
}
|
|
2098
|
+
this.isLoading = true;
|
|
2099
|
+
this.cdr.markForCheck();
|
|
2100
|
+
const query = {
|
|
2101
|
+
pageNumber: this.pageNumber,
|
|
2102
|
+
pageSize: this.pageSize,
|
|
2103
|
+
search: this.searchValue,
|
|
2104
|
+
filters: this.cleanFilters(this.columnFilters),
|
|
2105
|
+
sort: this.sort,
|
|
2106
|
+
callQueryMethod: this.callQueryMethod,
|
|
2107
|
+
};
|
|
2108
|
+
//#region handle info when not allowed method on controller level
|
|
2109
|
+
if (!this.safe && !this.entityCrudController.paginationQuery(query)) {
|
|
2110
|
+
throw new Error(`Please enable paginationQuery() method in your
|
|
2111
|
+
controller ${ClassHelpers.getName(this.entityCrudController)}
|
|
2112
|
+
|
|
2113
|
+
@Controller({ allowedMethods: ['paginationQuery'] })
|
|
2114
|
+
class ${ClassHelpers.getName(this.entityCrudController)} ..
|
|
2115
|
+
`);
|
|
2116
|
+
}
|
|
2117
|
+
if (this.safe && !this.entityCrudController.paginationQuerySafe(query)) {
|
|
2118
|
+
throw new Error(`Please enable paginationQuerySafe() method in your controller
|
|
2119
|
+
${ClassHelpers.getName(this.entityCrudController)}
|
|
2120
|
+
|
|
2121
|
+
@Controller({ allowedMethods: ['paginationQuerySafe'] })
|
|
2122
|
+
class ${ClassHelpers.getName(this.entityCrudController)} ..
|
|
2123
|
+
`);
|
|
2124
|
+
}
|
|
2125
|
+
//#endregion
|
|
2126
|
+
return from((this.safe
|
|
2127
|
+
? this.entityCrudController.paginationQuerySafe
|
|
2128
|
+
: this.entityCrudController.paginationQuery)(query).request()
|
|
2129
|
+
.observable).pipe(tap(response => {
|
|
2130
|
+
this.totalElements =
|
|
2131
|
+
Number(response.headers.get(Symbols.old.X_TOTAL_COUNT)) || 0;
|
|
2132
|
+
}), map(response => this.prepareRows(response.body.json)), catchError(error => {
|
|
2133
|
+
console.error(`[taon-datatable] Unable to load data from ` +
|
|
2134
|
+
`${ClassHelpers.getName(this.entityCrudController)} ${this.safe ? 'paginationQuerySafe' : 'paginationQuery'}`, error);
|
|
2135
|
+
return of([]);
|
|
2136
|
+
}), finalize(() => {
|
|
2137
|
+
this.isLoading = false;
|
|
2138
|
+
this.cdr.markForCheck();
|
|
2139
|
+
}));
|
|
2140
|
+
}
|
|
2141
|
+
//#endregion
|
|
2142
|
+
//#region helpers
|
|
2143
|
+
cleanFilters(filters) {
|
|
2144
|
+
return Object.fromEntries(Object.entries(filters)
|
|
2145
|
+
.filter(([, value]) => value !== undefined &&
|
|
2146
|
+
value !== null &&
|
|
2147
|
+
String(value).trim() !== '')
|
|
2148
|
+
.map(([key, value]) => [key, String(value).trim()]));
|
|
2149
|
+
}
|
|
2150
|
+
prepareRows(rows) {
|
|
2151
|
+
return rows.map(row => {
|
|
2152
|
+
// const result = {
|
|
2153
|
+
// ...row,
|
|
2154
|
+
// };
|
|
2155
|
+
// for (const key of Object.keys(result)) {
|
|
2156
|
+
// if (_.isObject(result[key])) {
|
|
2157
|
+
// result[key] = json5.stringify(result[key]);
|
|
2158
|
+
// }
|
|
2159
|
+
// }
|
|
2160
|
+
return row;
|
|
2161
|
+
});
|
|
2162
|
+
}
|
|
2163
|
+
prepareColumns() {
|
|
2164
|
+
const entityClass = this.entity;
|
|
2165
|
+
if (!entityClass) {
|
|
2166
|
+
return;
|
|
2167
|
+
}
|
|
2168
|
+
const usingDefaultColumns = _.isEqual(this.columns, defaultColumns);
|
|
2169
|
+
if (!usingDefaultColumns) {
|
|
2170
|
+
return;
|
|
2171
|
+
}
|
|
2172
|
+
try {
|
|
2173
|
+
const props = Object.keys(getDefaultModel(entityClass) || {});
|
|
2174
|
+
let columns = props
|
|
2175
|
+
.filter(prop => this.allowedColumns.length > 0
|
|
2176
|
+
? this.allowedColumns.includes(prop)
|
|
2177
|
+
: true)
|
|
2178
|
+
.map(prop => ({
|
|
2179
|
+
header: _.upperCase(prop),
|
|
2180
|
+
field: prop,
|
|
2181
|
+
}));
|
|
2182
|
+
const extra = this.allowedColumns.filter(field => !props.includes(field));
|
|
2183
|
+
columns = [
|
|
2184
|
+
...columns,
|
|
2185
|
+
...extra.map(field => ({
|
|
2186
|
+
header: _.upperCase(field),
|
|
2187
|
+
field,
|
|
2188
|
+
})),
|
|
2189
|
+
];
|
|
2190
|
+
this.columns = columns;
|
|
2191
|
+
}
|
|
2192
|
+
catch (error) {
|
|
2193
|
+
console.error('[taon-datatable] Unable to generate columns', error);
|
|
2194
|
+
}
|
|
2195
|
+
}
|
|
2196
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonDatatableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2197
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonDatatableComponent, isStandalone: true, selector: "taon-datatable", inputs: { pageNumber: "pageNumber", pageSize: "pageSize", pageSizeOptions: "pageSizeOptions", allowedColumns: "allowedColumns", expansionTemplate: "expansionTemplate", entityCrudController: "entityCrudController", columns: "columns", hideSearch: "hideSearch", hideAddButton: "hideAddButton", safe: "safe", searchMode: "searchMode", callQueryMethod: "callQueryMethod", data: "data", showPaginator: "showPaginator" }, outputs: { expansionChange: "expansionChange", addingItem: "addingItem" }, ngImport: i0, template: "<div class=\"flex w-full flex-col gap-3\">\n <!-- toolbar -->\n @if (!hideSearch) {\n <div\n class=\"flex w-full flex-col gap-2 rounded-lg border border-gray-200 bg-white p-3 shadow-sm dark:border-gray-700 dark:bg-gray-900 md:flex-row md:items-center\">\n <!-- global search -->\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n class=\"min-w-0 flex-1\">\n <mat-icon matPrefix> search </mat-icon>\n\n <input\n matInput\n placeholder=\"Search...\"\n [value]=\"searchValue\"\n (input)=\"searchChanged($any($event.target).value)\" />\n\n @if (searchValue) {\n <button\n mat-icon-button\n matSuffix\n type=\"button\"\n (click)=\"clearSearch()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n\n <!-- advanced search -->\n @if (searchMode === 'advanced') {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"toggleAdvancedSearch()\">\n <mat-icon> tune </mat-icon>\n\n Filters\n\n @if (advancedSearchOpened) {\n <mat-icon> expand_less </mat-icon>\n } @else {\n <mat-icon> expand_more </mat-icon>\n }\n </button>\n }\n\n <!-- refresh -->\n <button\n mat-icon-button\n type=\"button\"\n title=\"Refresh\"\n (click)=\"reload()\">\n <mat-icon> refresh </mat-icon>\n </button>\n\n <!-- add -->\n @if (!hideAddButton) {\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n (click)=\"addingItem.emit()\">\n <mat-icon> add </mat-icon>\n\n Add\n </button>\n }\n </div>\n }\n\n <!-- advanced filters -->\n @if (!hideSearch && searchMode === 'advanced' && advancedSearchOpened) {\n <div\n class=\"grid grid-cols-1 gap-3 rounded-lg border border-gray-200 bg-gray-50 p-4 shadow-sm dark:border-gray-700 dark:bg-gray-800 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\">\n @for (column of filterableColumns; track column.field) {\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n class=\"w-full\">\n <mat-label>\n {{ column.header }}\n </mat-label>\n\n <input\n matInput\n [(ngModel)]=\"columnFilters[$any(column.field)]\"\n (keyup.enter)=\"applyAdvancedFilters()\" />\n </mat-form-field>\n }\n\n <div\n class=\"flex items-center justify-end gap-2 md:col-span-2 lg:col-span-3 xl:col-span-4\">\n <button\n mat-button\n type=\"button\"\n (click)=\"clearSearch()\">\n <mat-icon> filter_alt_off </mat-icon>\n\n Clear\n </button>\n\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n (click)=\"applyAdvancedFilters()\">\n <mat-icon> filter_alt </mat-icon>\n\n Apply filters\n </button>\n </div>\n </div>\n }\n\n <!-- grid -->\n <div\n class=\"relative min-h-[250px] overflow-hidden rounded-lg border border-gray-200 bg-white shadow-sm dark:border-gray-700 dark:bg-gray-900\">\n @if (isLoading) {\n <div\n class=\"absolute inset-0 z-10 flex items-center justify-center bg-white/60 backdrop-blur-[1px] dark:bg-gray-900/60\">\n <div\n class=\"flex items-center gap-2 rounded-md bg-white px-4 py-2 shadow dark:bg-gray-800\">\n <mat-icon class=\"animate-spin\"> refresh </mat-icon>\n\n Loading...\n </div>\n </div>\n }\n\n <mtx-grid\n [data]=\"rows\"\n [columns]=\"columns\"\n [expandable]=\"expandable\"\n [expansionTemplate]=\"expansionTemplate\"\n [length]=\"totalElements\"\n [pageOnFront]=\"false\"\n [pageIndex]=\"pageNumber - 1\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showPaginator]=\"showPaginator\"\n (expansionChange)=\"expansionChange.emit($event)\"\n (page)=\"getNextPage($event)\"\n (sortChange)=\"sortChanged($event)\">\n </mtx-grid>\n </div>\n</div>\n", styles: [":host{display:block;width:100%;min-height:250px}:host ::ng-deep .mat-mdc-form-field{margin:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: MtxGridModule }, { kind: "component", type: i6.MtxGrid, selector: "mtx-grid", inputs: ["displayedColumns", "columns", "data", "length", "loading", "trackBy", "columnResizable", "emptyValuePlaceholder", "pageOnFront", "showPaginator", "pageDisabled", "showFirstLastButtons", "pageIndex", "pageSize", "pageSizeOptions", "hidePageSize", "paginationTemplate", "sortOnFront", "sortActive", "sortDirection", "sortDisableClear", "sortDisabled", "sortStart", "rowHover", "rowStriped", "expandable", "expansionTemplate", "multiSelectable", "multiSelectionWithClick", "rowSelectable", "hideRowSelectionCheckbox", "disableRowClickSelection", "rowSelectionFormatter", "rowClassFormatter", "rowSelected", "cellSelectable", "showToolbar", "toolbarTitle", "toolbarTemplate", "columnHideable", "columnHideableChecked", "columnSortable", "columnPinnable", "columnPinOptions", "showColumnMenuButton", "columnMenuButtonText", "columnMenuButtonType", "columnMenuButtonColor", "columnMenuButtonClass", "columnMenuButtonIcon", "columnMenuButtonFontIcon", "columnMenuButtonSvgIcon", "showColumnMenuHeader", "columnMenuHeaderText", "columnMenuHeaderTemplate", "showColumnMenuFooter", "columnMenuFooterText", "columnMenuFooterTemplate", "noResultText", "noResultTemplate", "headerTemplate", "headerExtraTemplate", "cellTemplate", "useContentRowTemplate", "useContentHeaderRowTemplate", "useContentFooterRowTemplate", "showSummary", "summaryTemplate", "showSidebar", "sidebarTemplate", "showStatusbar", "statusbarTemplate"], outputs: ["page", "sortChange", "rowClick", "rowContextMenu", "expansionChange", "rowSelectedChange", "cellSelectedChange", "columnChange"], exportAs: ["mtxGrid"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2198
|
+
}
|
|
2199
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonDatatableComponent, decorators: [{
|
|
2200
|
+
type: Component,
|
|
2201
|
+
args: [{ selector: 'taon-datatable', standalone: true, imports: [
|
|
2202
|
+
CommonModule,
|
|
2203
|
+
FormsModule,
|
|
2204
|
+
ReactiveFormsModule,
|
|
2205
|
+
MatButtonModule,
|
|
2206
|
+
MatFormFieldModule,
|
|
2207
|
+
MatIconModule,
|
|
2208
|
+
MatInputModule,
|
|
2209
|
+
MatPaginatorModule,
|
|
2210
|
+
MatSelectModule,
|
|
2211
|
+
MtxGridModule,
|
|
2212
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex w-full flex-col gap-3\">\n <!-- toolbar -->\n @if (!hideSearch) {\n <div\n class=\"flex w-full flex-col gap-2 rounded-lg border border-gray-200 bg-white p-3 shadow-sm dark:border-gray-700 dark:bg-gray-900 md:flex-row md:items-center\">\n <!-- global search -->\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n class=\"min-w-0 flex-1\">\n <mat-icon matPrefix> search </mat-icon>\n\n <input\n matInput\n placeholder=\"Search...\"\n [value]=\"searchValue\"\n (input)=\"searchChanged($any($event.target).value)\" />\n\n @if (searchValue) {\n <button\n mat-icon-button\n matSuffix\n type=\"button\"\n (click)=\"clearSearch()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n\n <!-- advanced search -->\n @if (searchMode === 'advanced') {\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"toggleAdvancedSearch()\">\n <mat-icon> tune </mat-icon>\n\n Filters\n\n @if (advancedSearchOpened) {\n <mat-icon> expand_less </mat-icon>\n } @else {\n <mat-icon> expand_more </mat-icon>\n }\n </button>\n }\n\n <!-- refresh -->\n <button\n mat-icon-button\n type=\"button\"\n title=\"Refresh\"\n (click)=\"reload()\">\n <mat-icon> refresh </mat-icon>\n </button>\n\n <!-- add -->\n @if (!hideAddButton) {\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n (click)=\"addingItem.emit()\">\n <mat-icon> add </mat-icon>\n\n Add\n </button>\n }\n </div>\n }\n\n <!-- advanced filters -->\n @if (!hideSearch && searchMode === 'advanced' && advancedSearchOpened) {\n <div\n class=\"grid grid-cols-1 gap-3 rounded-lg border border-gray-200 bg-gray-50 p-4 shadow-sm dark:border-gray-700 dark:bg-gray-800 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\">\n @for (column of filterableColumns; track column.field) {\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n class=\"w-full\">\n <mat-label>\n {{ column.header }}\n </mat-label>\n\n <input\n matInput\n [(ngModel)]=\"columnFilters[$any(column.field)]\"\n (keyup.enter)=\"applyAdvancedFilters()\" />\n </mat-form-field>\n }\n\n <div\n class=\"flex items-center justify-end gap-2 md:col-span-2 lg:col-span-3 xl:col-span-4\">\n <button\n mat-button\n type=\"button\"\n (click)=\"clearSearch()\">\n <mat-icon> filter_alt_off </mat-icon>\n\n Clear\n </button>\n\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n (click)=\"applyAdvancedFilters()\">\n <mat-icon> filter_alt </mat-icon>\n\n Apply filters\n </button>\n </div>\n </div>\n }\n\n <!-- grid -->\n <div\n class=\"relative min-h-[250px] overflow-hidden rounded-lg border border-gray-200 bg-white shadow-sm dark:border-gray-700 dark:bg-gray-900\">\n @if (isLoading) {\n <div\n class=\"absolute inset-0 z-10 flex items-center justify-center bg-white/60 backdrop-blur-[1px] dark:bg-gray-900/60\">\n <div\n class=\"flex items-center gap-2 rounded-md bg-white px-4 py-2 shadow dark:bg-gray-800\">\n <mat-icon class=\"animate-spin\"> refresh </mat-icon>\n\n Loading...\n </div>\n </div>\n }\n\n <mtx-grid\n [data]=\"rows\"\n [columns]=\"columns\"\n [expandable]=\"expandable\"\n [expansionTemplate]=\"expansionTemplate\"\n [length]=\"totalElements\"\n [pageOnFront]=\"false\"\n [pageIndex]=\"pageNumber - 1\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showPaginator]=\"showPaginator\"\n (expansionChange)=\"expansionChange.emit($event)\"\n (page)=\"getNextPage($event)\"\n (sortChange)=\"sortChanged($event)\">\n </mtx-grid>\n </div>\n</div>\n", styles: [":host{display:block;width:100%;min-height:250px}:host ::ng-deep .mat-mdc-form-field{margin:0}\n"] }]
|
|
2213
|
+
}], propDecorators: { pageNumber: [{
|
|
2214
|
+
type: Input
|
|
2215
|
+
}], pageSize: [{
|
|
2216
|
+
type: Input
|
|
2217
|
+
}], pageSizeOptions: [{
|
|
2218
|
+
type: Input
|
|
2219
|
+
}], allowedColumns: [{
|
|
2220
|
+
type: Input
|
|
2221
|
+
}], expansionTemplate: [{
|
|
2222
|
+
type: Input
|
|
2223
|
+
}], entityCrudController: [{
|
|
2224
|
+
type: Input
|
|
2225
|
+
}], columns: [{
|
|
2226
|
+
type: Input
|
|
2227
|
+
}], hideSearch: [{
|
|
2228
|
+
type: Input
|
|
2229
|
+
}], hideAddButton: [{
|
|
2230
|
+
type: Input
|
|
2231
|
+
}], safe: [{
|
|
2232
|
+
type: Input
|
|
2233
|
+
}], searchMode: [{
|
|
2234
|
+
type: Input
|
|
2235
|
+
}], callQueryMethod: [{
|
|
2236
|
+
type: Input
|
|
2237
|
+
}], data: [{
|
|
2238
|
+
type: Input
|
|
2239
|
+
}], expansionChange: [{
|
|
2240
|
+
type: Output
|
|
2241
|
+
}], addingItem: [{
|
|
2242
|
+
type: Output
|
|
2243
|
+
}], showPaginator: [{
|
|
2244
|
+
type: Input
|
|
2245
|
+
}] } });
|
|
2246
|
+
|
|
2247
|
+
var taonDatatable_component = /*#__PURE__*/Object.freeze({
|
|
2248
|
+
__proto__: null,
|
|
2249
|
+
TaonDatatableComponent: TaonDatatableComponent
|
|
2250
|
+
});
|
|
2251
|
+
|
|
2252
|
+
//#endregion
|
|
2253
|
+
const TaonDatatableRoutes = [
|
|
2254
|
+
{
|
|
2255
|
+
path: '',
|
|
2256
|
+
loadComponent: () => Promise.resolve().then(function () { return taonDatatable_component; }).then(m => m.TaonDatatableComponent),
|
|
2257
|
+
children: [
|
|
2258
|
+
// adminLazyRoute({
|
|
2259
|
+
// path: 'dashboard',
|
|
2260
|
+
// menuItem: 'Dashboard',
|
|
2261
|
+
// icon: 'dashboard',
|
|
2262
|
+
// expandable: false,
|
|
2263
|
+
// loader: () =>
|
|
2264
|
+
// import('./anothermodule.routes').then(m => m.DashboardRoutes),
|
|
2265
|
+
// }),
|
|
2266
|
+
],
|
|
2267
|
+
},
|
|
2268
|
+
];
|
|
2269
|
+
/**
|
|
2270
|
+
* By default exporting TaonDatatableRoutes,
|
|
2271
|
+
* the command `taon generate:app:routes`
|
|
2272
|
+
* will automatically add them to the root routes in ./src/app.ts.
|
|
2273
|
+
*/
|
|
2274
|
+
// export default TaonDatatableRoutes;
|
|
2275
|
+
|
|
1577
2276
|
var TaonDraggableButtonPanelState;
|
|
1578
2277
|
(function (TaonDraggableButtonPanelState) {
|
|
1579
2278
|
TaonDraggableButtonPanelState["CLICKABLE_BUTTON"] = "CLICKABLE_BUTTON";
|
|
@@ -1582,6 +2281,8 @@ var TaonDraggableButtonPanelState;
|
|
|
1582
2281
|
TaonDraggableButtonPanelState["FULL_SCREEN_LOCKED"] = "FULL_SCREEN_LOCKED";
|
|
1583
2282
|
})(TaonDraggableButtonPanelState || (TaonDraggableButtonPanelState = {}));
|
|
1584
2283
|
|
|
2284
|
+
//#region imports
|
|
2285
|
+
//#endregion
|
|
1585
2286
|
class TaonDraggableButtonPanelComponent {
|
|
1586
2287
|
set state(state) {
|
|
1587
2288
|
this.currentState.set(state);
|
|
@@ -1597,11 +2298,60 @@ class TaonDraggableButtonPanelComponent {
|
|
|
1597
2298
|
*/
|
|
1598
2299
|
this.stateParamName = 'state';
|
|
1599
2300
|
this.stateChange = new EventEmitter();
|
|
2301
|
+
this.forceFullScreen = signal(window.innerWidth < 900, ...(ngDevMode ? [{ debugName: "forceFullScreen" }] : []));
|
|
2302
|
+
this.resizeListener = () => {
|
|
2303
|
+
const wasForceFullScreen = this.forceFullScreen();
|
|
2304
|
+
const forceFullScreen = window.innerWidth < 900;
|
|
2305
|
+
this.forceFullScreen.set(forceFullScreen);
|
|
2306
|
+
// Desktop -> mobile: remove old CDK drag x/y transform.
|
|
2307
|
+
if (!wasForceFullScreen && forceFullScreen) {
|
|
2308
|
+
this.resetDragPosition();
|
|
2309
|
+
}
|
|
2310
|
+
};
|
|
1600
2311
|
this.currentState = signal(TaonDraggableButtonPanelState.CLICKABLE_BUTTON, ...(ngDevMode ? [{ debugName: "currentState" }] : []));
|
|
1601
2312
|
}
|
|
1602
2313
|
async ngOnInit() {
|
|
2314
|
+
window.addEventListener('resize', this.resizeListener);
|
|
2315
|
+
/**
|
|
2316
|
+
* IMPORTANT:
|
|
2317
|
+
*
|
|
2318
|
+
* The component may be created while Angular is still processing
|
|
2319
|
+
* the application's initial navigation.
|
|
2320
|
+
*
|
|
2321
|
+
* For example:
|
|
2322
|
+
*
|
|
2323
|
+
* / -> redirectTo: /app
|
|
2324
|
+
*
|
|
2325
|
+
* If we create:
|
|
2326
|
+
*
|
|
2327
|
+
* (admin:main)
|
|
2328
|
+
*
|
|
2329
|
+
* before that redirect finishes, the auxiliary outlet navigation
|
|
2330
|
+
* may effectively replace/interfere with the primary navigation,
|
|
2331
|
+
* producing:
|
|
2332
|
+
*
|
|
2333
|
+
* /(admin:main)
|
|
2334
|
+
*
|
|
2335
|
+
* instead of:
|
|
2336
|
+
*
|
|
2337
|
+
* /app(admin:main)
|
|
2338
|
+
*/
|
|
2339
|
+
await this.waitForInitialNavigation();
|
|
2340
|
+
/**
|
|
2341
|
+
* Ensure the auxiliary outlet exists only AFTER the primary
|
|
2342
|
+
* application route has settled.
|
|
2343
|
+
*/
|
|
1603
2344
|
await this.ensureOutletBasePath();
|
|
2345
|
+
/**
|
|
2346
|
+
* The outlet may already contain persisted state, e.g.
|
|
2347
|
+
*
|
|
2348
|
+
* (admin:main;state=WINDOW/dashboard)
|
|
2349
|
+
*/
|
|
1604
2350
|
this.restoreStateFromUrl();
|
|
2351
|
+
/**
|
|
2352
|
+
* From this point on keep the component state synchronized
|
|
2353
|
+
* with subsequent router navigations.
|
|
2354
|
+
*/
|
|
1605
2355
|
this.routerSubscription = this.router.events
|
|
1606
2356
|
.pipe(filter(event => event instanceof NavigationEnd))
|
|
1607
2357
|
.subscribe(() => {
|
|
@@ -1609,18 +2359,77 @@ class TaonDraggableButtonPanelComponent {
|
|
|
1609
2359
|
});
|
|
1610
2360
|
}
|
|
1611
2361
|
ngOnDestroy() {
|
|
2362
|
+
window.removeEventListener('resize', this.resizeListener);
|
|
1612
2363
|
this.routerSubscription?.unsubscribe();
|
|
1613
2364
|
}
|
|
2365
|
+
toogleFullscreen(event) {
|
|
2366
|
+
event.stopImmediatePropagation();
|
|
2367
|
+
event.stopPropagation();
|
|
2368
|
+
event.preventDefault();
|
|
2369
|
+
if (this.forceFullScreen()) {
|
|
2370
|
+
return;
|
|
2371
|
+
}
|
|
2372
|
+
if (this.currentState() === TaonDraggableButtonPanelState.WINDOW) {
|
|
2373
|
+
this.resetDragPosition();
|
|
2374
|
+
void this.setState(TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED);
|
|
2375
|
+
}
|
|
2376
|
+
else if ([
|
|
2377
|
+
TaonDraggableButtonPanelState.FULL_SCREEN_DRAGGABLE,
|
|
2378
|
+
TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED,
|
|
2379
|
+
].includes(this.currentState())) {
|
|
2380
|
+
this.resetDragPosition();
|
|
2381
|
+
void this.setState(TaonDraggableButtonPanelState.WINDOW);
|
|
2382
|
+
}
|
|
2383
|
+
}
|
|
2384
|
+
effectiveState() {
|
|
2385
|
+
if (this.forceFullScreen() &&
|
|
2386
|
+
this.currentState() !== TaonDraggableButtonPanelState.CLICKABLE_BUTTON) {
|
|
2387
|
+
return TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED;
|
|
2388
|
+
}
|
|
2389
|
+
return this.currentState();
|
|
2390
|
+
}
|
|
2391
|
+
// ===========================================================================
|
|
2392
|
+
// INITIAL ROUTING
|
|
2393
|
+
// ===========================================================================
|
|
2394
|
+
async waitForInitialNavigation() {
|
|
2395
|
+
/**
|
|
2396
|
+
* Router already completed at least one navigation.
|
|
2397
|
+
*/
|
|
2398
|
+
if (this.router.navigated) {
|
|
2399
|
+
return;
|
|
2400
|
+
}
|
|
2401
|
+
/**
|
|
2402
|
+
* Wait until redirects/lazy routing/etc. belonging to the initial
|
|
2403
|
+
* navigation have settled.
|
|
2404
|
+
*/
|
|
2405
|
+
await firstValueFrom(this.router.events.pipe(filter(event => event instanceof NavigationEnd), take(1)));
|
|
2406
|
+
}
|
|
1614
2407
|
async ensureOutletBasePath() {
|
|
1615
2408
|
if (!this.outlet || !this.basePath) {
|
|
1616
2409
|
return;
|
|
1617
2410
|
}
|
|
2411
|
+
/**
|
|
2412
|
+
* IMPORTANT:
|
|
2413
|
+
*
|
|
2414
|
+
* Parse the URL only AFTER initial navigation has completed.
|
|
2415
|
+
*
|
|
2416
|
+
* At this point:
|
|
2417
|
+
*
|
|
2418
|
+
* /
|
|
2419
|
+
*
|
|
2420
|
+
* may already have become:
|
|
2421
|
+
*
|
|
2422
|
+
* /app
|
|
2423
|
+
*/
|
|
1618
2424
|
const tree = this.router.parseUrl(this.router.url);
|
|
1619
2425
|
/**
|
|
1620
|
-
* Outlet already exists —
|
|
2426
|
+
* Outlet already exists — preserve it exactly as it is.
|
|
1621
2427
|
*
|
|
1622
|
-
*
|
|
1623
|
-
*
|
|
2428
|
+
* Examples:
|
|
2429
|
+
*
|
|
2430
|
+
* /app(admin:main)
|
|
2431
|
+
*
|
|
2432
|
+
* /app(admin:main;state=WINDOW/dashboard)
|
|
1624
2433
|
*/
|
|
1625
2434
|
if (tree.root.children[this.outlet]) {
|
|
1626
2435
|
return;
|
|
@@ -1629,6 +2438,18 @@ class TaonDraggableButtonPanelComponent {
|
|
|
1629
2438
|
if (!baseSegments.length) {
|
|
1630
2439
|
return;
|
|
1631
2440
|
}
|
|
2441
|
+
/**
|
|
2442
|
+
* Add the auxiliary outlet while preserving the current
|
|
2443
|
+
* primary route.
|
|
2444
|
+
*
|
|
2445
|
+
* Example:
|
|
2446
|
+
*
|
|
2447
|
+
* /app
|
|
2448
|
+
*
|
|
2449
|
+
* becomes:
|
|
2450
|
+
*
|
|
2451
|
+
* /app(admin:main)
|
|
2452
|
+
*/
|
|
1632
2453
|
await this.router.navigate([
|
|
1633
2454
|
{
|
|
1634
2455
|
outlets: {
|
|
@@ -1668,6 +2489,9 @@ class TaonDraggableButtonPanelComponent {
|
|
|
1668
2489
|
void this.setState(TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED);
|
|
1669
2490
|
}
|
|
1670
2491
|
isDraggingEnabled() {
|
|
2492
|
+
if (this.forceFullScreen()) {
|
|
2493
|
+
return false;
|
|
2494
|
+
}
|
|
1671
2495
|
return (this.currentState() === TaonDraggableButtonPanelState.WINDOW ||
|
|
1672
2496
|
this.currentState() ===
|
|
1673
2497
|
TaonDraggableButtonPanelState.FULL_SCREEN_DRAGGABLE);
|
|
@@ -1685,11 +2509,11 @@ class TaonDraggableButtonPanelComponent {
|
|
|
1685
2509
|
return;
|
|
1686
2510
|
}
|
|
1687
2511
|
/**
|
|
1688
|
-
*
|
|
2512
|
+
* State is stored on the first auxiliary outlet segment:
|
|
1689
2513
|
*
|
|
1690
2514
|
* admin:
|
|
1691
2515
|
*
|
|
1692
|
-
* main;state=WINDOW/
|
|
2516
|
+
* main;state=WINDOW/dashboard
|
|
1693
2517
|
* └────────────────┘
|
|
1694
2518
|
*/
|
|
1695
2519
|
const rootSegment = outletGroup.segments[0];
|
|
@@ -1701,15 +2525,14 @@ class TaonDraggableButtonPanelComponent {
|
|
|
1701
2525
|
return;
|
|
1702
2526
|
}
|
|
1703
2527
|
/**
|
|
1704
|
-
* URL restoration should NOT go through
|
|
1705
|
-
*
|
|
2528
|
+
* URL restoration should NOT go through the transition
|
|
2529
|
+
* state machine.
|
|
1706
2530
|
*
|
|
1707
|
-
* A bookmarked URL is authoritative.
|
|
2531
|
+
* A bookmarked/refreshed URL is authoritative.
|
|
1708
2532
|
*/
|
|
1709
2533
|
this.currentState.set(state);
|
|
1710
2534
|
/**
|
|
1711
|
-
* Fullscreen must never inherit an old
|
|
1712
|
-
* CdkDrag transform.
|
|
2535
|
+
* Fullscreen must never inherit an old CdkDrag transform.
|
|
1713
2536
|
*/
|
|
1714
2537
|
if (state === TaonDraggableButtonPanelState.FULL_SCREEN_DRAGGABLE ||
|
|
1715
2538
|
state === TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED) {
|
|
@@ -1727,15 +2550,15 @@ class TaonDraggableButtonPanelComponent {
|
|
|
1727
2550
|
/**
|
|
1728
2551
|
* The outlet might not yet exist.
|
|
1729
2552
|
*
|
|
1730
|
-
* In that case there is nowhere sensible
|
|
1731
|
-
*
|
|
2553
|
+
* In that case there is nowhere sensible to attach
|
|
2554
|
+
* its matrix parameter.
|
|
1732
2555
|
*/
|
|
1733
2556
|
if (!outletGroup || outletGroup.segments.length === 0) {
|
|
1734
2557
|
return;
|
|
1735
2558
|
}
|
|
1736
2559
|
const rootSegment = outletGroup.segments[0];
|
|
1737
2560
|
/**
|
|
1738
|
-
* Preserve any existing matrix
|
|
2561
|
+
* Preserve any existing matrix parameters.
|
|
1739
2562
|
*/
|
|
1740
2563
|
rootSegment.parameters = {
|
|
1741
2564
|
...rootSegment.parameters,
|
|
@@ -1782,17 +2605,18 @@ class TaonDraggableButtonPanelComponent {
|
|
|
1782
2605
|
return transitions[current].includes(next);
|
|
1783
2606
|
}
|
|
1784
2607
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonDraggableButtonPanelComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1785
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonDraggableButtonPanelComponent, isStandalone: true, selector: "taon-draggable-button-panel", inputs: { basePath: "basePath", buttonIcon: "buttonIcon", title: "title", outlet: "outlet", stateParamName: "stateParamName", state: "state" }, outputs: { stateChange: "stateChange" }, viewQueries: [{ propertyName: "drag", first: true, predicate: CdkDrag, descendants: true }], ngImport: i0, template: "@if (currentState() === State.CLICKABLE_BUTTON) {\n <!--
|
|
2608
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonDraggableButtonPanelComponent, isStandalone: true, selector: "taon-draggable-button-panel", inputs: { basePath: "basePath", buttonIcon: "buttonIcon", title: "title", outlet: "outlet", stateParamName: "stateParamName", state: "state" }, outputs: { stateChange: "stateChange" }, viewQueries: [{ propertyName: "drag", first: true, predicate: CdkDrag, descendants: true }], ngImport: i0, template: "@if (currentState() === State.CLICKABLE_BUTTON) {\n <!-- #region BUTTON - works on desktop AND mobile -->\n <button\n class=\"taon-admin-panel-toogle-open-button\"\n mat-icon-button\n type=\"button\"\n [matTooltip]=\"title\"\n (click)=\"open()\">\n <mat-icon>\n {{ buttonIcon }}\n </mat-icon>\n </button>\n <!-- #endregion -->\n} @else {\n <section\n cdkDrag\n [cdkDragDisabled]=\"!isDraggingEnabled()\"\n class=\"taon-draggable-panel\"\n [class.taon-window]=\"effectiveState() === State.WINDOW\"\n [class.taon-fullscreen]=\"\n effectiveState() === State.FULL_SCREEN_DRAGGABLE ||\n effectiveState() === State.FULL_SCREEN_LOCKED\n \">\n <header\n cdkDragHandle\n (dblclick)=\"toogleFullscreen($event)\"\n class=\"taon-window-bar\">\n <div class=\"flex min-w-0 flex-1 items-center gap-2\">\n <mat-icon class=\"text-gray-500\"> admin_panel_settings </mat-icon>\n\n <span class=\"truncate font-medium\">\n {{ title }}\n </span>\n </div>\n\n <!-- #region window buttons -->\n <div class=\"flex shrink-0 items-center\">\n <!-- Desktop-only window/fullscreen controls -->\n @if (!forceFullScreen()) {\n @if (currentState() !== State.WINDOW) {\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Window mode\"\n (click)=\"windowMode()\">\n <mat-icon>filter_none</mat-icon>\n </button>\n }\n\n @if (currentState() === State.WINDOW) {\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Full screen\"\n (click)=\"fullScreenDraggable()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n }\n\n @if (currentState() !== State.FULL_SCREEN_LOCKED) {\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Lock full screen\"\n (click)=\"lockFullScreen()\">\n <mat-icon>lock_open</mat-icon>\n </button>\n } @else {\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Unlock\"\n (click)=\"fullScreenDraggable()\">\n <mat-icon>lock</mat-icon>\n </button>\n }\n }\n\n <!-- ALWAYS available -->\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Close admin panel\"\n (click)=\"returnToButton()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <!-- #endregion -->\n </header>\n\n <div class=\"min-h-0 flex-1 overflow-hidden\">\n <ng-content />\n </div>\n </section>\n}\n", styles: [":host{display:contents}.taon-draggable-panel{position:fixed;display:flex;flex-direction:column;min-width:320px;min-height:240px;overflow:hidden;background:#fff;border:1px solid #e5e7eb;box-shadow:0 20px 50px #00000026;z-index:1000}.taon-window{width:70vw;height:70vh;left:15vw;top:25vh;border-radius:6px}.taon-fullscreen{width:100vw;height:100dvh;left:0;top:0;border-radius:0}.taon-window-bar{height:48px;display:flex;align-items:center;flex-shrink:0;padding-left:12px;border-bottom:1px solid #e5e7eb;background:#fafafa;-webkit-user-select:none;user-select:none;cursor:move}\n"], dependencies: [{ kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1786
2609
|
}
|
|
1787
2610
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonDraggableButtonPanelComponent, decorators: [{
|
|
1788
2611
|
type: Component,
|
|
1789
2612
|
args: [{ selector: 'taon-draggable-button-panel', standalone: true, imports: [
|
|
1790
2613
|
CdkDrag,
|
|
1791
2614
|
CdkDragHandle,
|
|
2615
|
+
NgIf,
|
|
1792
2616
|
MatButtonModule,
|
|
1793
2617
|
MatIconModule,
|
|
1794
2618
|
MatTooltipModule,
|
|
1795
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (currentState() === State.CLICKABLE_BUTTON) {\n <!--
|
|
2619
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (currentState() === State.CLICKABLE_BUTTON) {\n <!-- #region BUTTON - works on desktop AND mobile -->\n <button\n class=\"taon-admin-panel-toogle-open-button\"\n mat-icon-button\n type=\"button\"\n [matTooltip]=\"title\"\n (click)=\"open()\">\n <mat-icon>\n {{ buttonIcon }}\n </mat-icon>\n </button>\n <!-- #endregion -->\n} @else {\n <section\n cdkDrag\n [cdkDragDisabled]=\"!isDraggingEnabled()\"\n class=\"taon-draggable-panel\"\n [class.taon-window]=\"effectiveState() === State.WINDOW\"\n [class.taon-fullscreen]=\"\n effectiveState() === State.FULL_SCREEN_DRAGGABLE ||\n effectiveState() === State.FULL_SCREEN_LOCKED\n \">\n <header\n cdkDragHandle\n (dblclick)=\"toogleFullscreen($event)\"\n class=\"taon-window-bar\">\n <div class=\"flex min-w-0 flex-1 items-center gap-2\">\n <mat-icon class=\"text-gray-500\"> admin_panel_settings </mat-icon>\n\n <span class=\"truncate font-medium\">\n {{ title }}\n </span>\n </div>\n\n <!-- #region window buttons -->\n <div class=\"flex shrink-0 items-center\">\n <!-- Desktop-only window/fullscreen controls -->\n @if (!forceFullScreen()) {\n @if (currentState() !== State.WINDOW) {\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Window mode\"\n (click)=\"windowMode()\">\n <mat-icon>filter_none</mat-icon>\n </button>\n }\n\n @if (currentState() === State.WINDOW) {\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Full screen\"\n (click)=\"fullScreenDraggable()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n }\n\n @if (currentState() !== State.FULL_SCREEN_LOCKED) {\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Lock full screen\"\n (click)=\"lockFullScreen()\">\n <mat-icon>lock_open</mat-icon>\n </button>\n } @else {\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Unlock\"\n (click)=\"fullScreenDraggable()\">\n <mat-icon>lock</mat-icon>\n </button>\n }\n }\n\n <!-- ALWAYS available -->\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Close admin panel\"\n (click)=\"returnToButton()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <!-- #endregion -->\n </header>\n\n <div class=\"min-h-0 flex-1 overflow-hidden\">\n <ng-content />\n </div>\n </section>\n}\n", styles: [":host{display:contents}.taon-draggable-panel{position:fixed;display:flex;flex-direction:column;min-width:320px;min-height:240px;overflow:hidden;background:#fff;border:1px solid #e5e7eb;box-shadow:0 20px 50px #00000026;z-index:1000}.taon-window{width:70vw;height:70vh;left:15vw;top:25vh;border-radius:6px}.taon-fullscreen{width:100vw;height:100dvh;left:0;top:0;border-radius:0}.taon-window-bar{height:48px;display:flex;align-items:center;flex-shrink:0;padding-left:12px;border-bottom:1px solid #e5e7eb;background:#fafafa;-webkit-user-select:none;user-select:none;cursor:move}\n"] }]
|
|
1796
2620
|
}], ctorParameters: () => [{ type: i1.Router }], propDecorators: { drag: [{
|
|
1797
2621
|
type: ViewChild,
|
|
1798
2622
|
args: [CdkDrag]
|
|
@@ -1825,6 +2649,9 @@ const TaonDraggableButtonPanelRoutes = [
|
|
|
1825
2649
|
// },
|
|
1826
2650
|
];
|
|
1827
2651
|
|
|
2652
|
+
;
|
|
2653
|
+
// THIS FILE IS GENERATED - DO NOT MODIFY
|
|
2654
|
+
|
|
1828
2655
|
// @ts-nocheck
|
|
1829
2656
|
// This file is auto-generated during init process. Do not modify.
|
|
1830
2657
|
// This disable this auto generate file.
|
|
@@ -1838,5 +2665,5 @@ var index = {};
|
|
|
1838
2665
|
* Generated bundle index. Do not edit.
|
|
1839
2666
|
*/
|
|
1840
2667
|
|
|
1841
|
-
export { APP_ID, BUILD_BASE_HREF, BUILD_FRAMEWORK_CLI_NAME, CURRENT_PACKAGE_TAON_VERSION, CURRENT_PACKAGE_VERSION, ENV_ANGULAR_NODE_APP_BUILD_BASE_HREF, ENV_ANGULAR_NODE_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_ANGULAR_NODE_APP_BUILD_GEN_ONLY_CLIENT_CODE, ENV_ANGULAR_NODE_APP_BUILD_OVERRIDE_OUTPUT_PATH, ENV_ANGULAR_NODE_APP_BUILD_PROD, ENV_ANGULAR_NODE_APP_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_ANGULAR_NODE_APP_BUILD_PWA_NAME, ENV_ANGULAR_NODE_APP_BUILD_PWA_SHORT_NAME, ENV_ANGULAR_NODE_APP_BUILD_PWA_START_URL, ENV_ANGULAR_NODE_APP_BUILD_SSR, ENV_ANGULAR_NODE_APP_BUILD_WATCH, ENV_ANGULAR_NODE_APP_BUILD_WEBSQL, ENV_ANGULAR_NODE_APP_CONTAINER_END, ENV_ANGULAR_NODE_APP_CONTAINER_ONLY, ENV_ANGULAR_NODE_APP_CONTAINER_SKIP, ENV_ANGULAR_NODE_APP_CONTAINER_SKIP_RELEASED, ENV_ANGULAR_NODE_APP_CONTAINER_START, ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_SKIP, ENV_ANGULAR_NODE_APP_DOCKER_ADDITIONAL_CONTAINER, ENV_ANGULAR_NODE_APP_DOCKER_SKIP_START_IN_ORDER, ENV_ANGULAR_NODE_APP_DOCKER_SKIP_USING_MYSQL_DB, ENV_ANGULAR_NODE_APP_FINISH_CALLBACK, ENV_ANGULAR_NODE_APP_INIT_BRANDING, ENV_ANGULAR_NODE_APP_INIT_STRUCT, ENV_ANGULAR_NODE_APP_IS_CI_PROCESS, ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_ANGULAR_NODE_APP_PURPOSE, ENV_ANGULAR_NODE_APP_RECURSIVE_ACTION, ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_ANGULAR_NODE_APP_RELEASE_CLI_COMPRESS, ENV_ANGULAR_NODE_APP_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_ANGULAR_NODE_APP_RELEASE_CLI_MINIFY, ENV_ANGULAR_NODE_APP_RELEASE_CLI_OBSCURE, ENV_ANGULAR_NODE_APP_RELEASE_CLI_UGLIFY, ENV_ANGULAR_NODE_APP_RELEASE_ENV_NAME, ENV_ANGULAR_NODE_APP_RELEASE_ENV_NUMBER, ENV_ANGULAR_NODE_APP_RELEASE_INSTALL_LOCALLY, ENV_ANGULAR_NODE_APP_RELEASE_LIB_COMPRESS, ENV_ANGULAR_NODE_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_ANGULAR_NODE_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_ANGULAR_NODE_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_ANGULAR_NODE_APP_RELEASE_LIB_REMOVE_DTS, ENV_ANGULAR_NODE_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_ANGULAR_NODE_APP_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_ANGULAR_NODE_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_TYPE, ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_ANGULAR_NODE_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_ANGULAR_NODE_APP_RELEASE_RESOLVED_NEW_VERSION, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_CODE_CUTTING, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_DEPLOY, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_NPM_PUBLISH, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RELEASE_QUESTION, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_TAG_GIT_PUSH, ENV_ANGULAR_NODE_APP_RELEASE_TAON_INSTANCE_IP, ENV_ANGULAR_NODE_APP_RELEASE_TARGET_ARTIFACT, ENV_ANGULAR_NODE_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_ANGULAR_NODE_APP_WEBSITE_DOMAIN, ENV_ANGULAR_NODE_APP_WEBSITE_TITLE, ENV_ANGULAR_NODE_APP_WEBSITE_USE_DOMAIN, ENV_DOCS_WEBAPP_BUILD_BASE_HREF, ENV_DOCS_WEBAPP_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_DOCS_WEBAPP_BUILD_GEN_ONLY_CLIENT_CODE, ENV_DOCS_WEBAPP_BUILD_OVERRIDE_OUTPUT_PATH, ENV_DOCS_WEBAPP_BUILD_PROD, ENV_DOCS_WEBAPP_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_DOCS_WEBAPP_BUILD_PWA_NAME, ENV_DOCS_WEBAPP_BUILD_PWA_SHORT_NAME, ENV_DOCS_WEBAPP_BUILD_PWA_START_URL, ENV_DOCS_WEBAPP_BUILD_SSR, ENV_DOCS_WEBAPP_BUILD_WATCH, ENV_DOCS_WEBAPP_BUILD_WEBSQL, ENV_DOCS_WEBAPP_CONTAINER_END, ENV_DOCS_WEBAPP_CONTAINER_ONLY, ENV_DOCS_WEBAPP_CONTAINER_SKIP, ENV_DOCS_WEBAPP_CONTAINER_SKIP_RELEASED, ENV_DOCS_WEBAPP_CONTAINER_START, ENV_DOCS_WEBAPP_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_DOCS_WEBAPP_COPY_TO_MANAGER_SKIP, ENV_DOCS_WEBAPP_DOCKER_ADDITIONAL_CONTAINER, ENV_DOCS_WEBAPP_DOCKER_SKIP_START_IN_ORDER, ENV_DOCS_WEBAPP_DOCKER_SKIP_USING_MYSQL_DB, ENV_DOCS_WEBAPP_FINISH_CALLBACK, ENV_DOCS_WEBAPP_INIT_BRANDING, ENV_DOCS_WEBAPP_INIT_STRUCT, ENV_DOCS_WEBAPP_IS_CI_PROCESS, ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_DOCS_WEBAPP_PURPOSE, ENV_DOCS_WEBAPP_RECURSIVE_ACTION, ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_DOCS_WEBAPP_RELEASE_CLI_COMPRESS, ENV_DOCS_WEBAPP_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_DOCS_WEBAPP_RELEASE_CLI_MINIFY, ENV_DOCS_WEBAPP_RELEASE_CLI_OBSCURE, ENV_DOCS_WEBAPP_RELEASE_CLI_UGLIFY, ENV_DOCS_WEBAPP_RELEASE_ENV_NAME, ENV_DOCS_WEBAPP_RELEASE_ENV_NUMBER, ENV_DOCS_WEBAPP_RELEASE_INSTALL_LOCALLY, ENV_DOCS_WEBAPP_RELEASE_LIB_COMPRESS, ENV_DOCS_WEBAPP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_DOCS_WEBAPP_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_DOCS_WEBAPP_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_DOCS_WEBAPP_RELEASE_LIB_REMOVE_DTS, ENV_DOCS_WEBAPP_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_DOCS_WEBAPP_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_DOCS_WEBAPP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_DOCS_WEBAPP_RELEASE_RELEASE_TYPE, ENV_DOCS_WEBAPP_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_DOCS_WEBAPP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_DOCS_WEBAPP_RELEASE_RESOLVED_NEW_VERSION, ENV_DOCS_WEBAPP_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_DOCS_WEBAPP_RELEASE_SKIP_CODE_CUTTING, ENV_DOCS_WEBAPP_RELEASE_SKIP_DEPLOY, ENV_DOCS_WEBAPP_RELEASE_SKIP_NPM_PUBLISH, ENV_DOCS_WEBAPP_RELEASE_SKIP_RELEASE_QUESTION, ENV_DOCS_WEBAPP_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_DOCS_WEBAPP_RELEASE_SKIP_TAG_GIT_PUSH, ENV_DOCS_WEBAPP_RELEASE_TAON_INSTANCE_IP, ENV_DOCS_WEBAPP_RELEASE_TARGET_ARTIFACT, ENV_DOCS_WEBAPP_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_DOCS_WEBAPP_WEBSITE_DOMAIN, ENV_DOCS_WEBAPP_WEBSITE_TITLE, ENV_DOCS_WEBAPP_WEBSITE_USE_DOMAIN, ENV_ELECTRON_APP_BUILD_BASE_HREF, ENV_ELECTRON_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_ELECTRON_APP_BUILD_GEN_ONLY_CLIENT_CODE, ENV_ELECTRON_APP_BUILD_OVERRIDE_OUTPUT_PATH, ENV_ELECTRON_APP_BUILD_PROD, ENV_ELECTRON_APP_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_ELECTRON_APP_BUILD_PWA_NAME, ENV_ELECTRON_APP_BUILD_PWA_SHORT_NAME, ENV_ELECTRON_APP_BUILD_PWA_START_URL, ENV_ELECTRON_APP_BUILD_SSR, ENV_ELECTRON_APP_BUILD_WATCH, ENV_ELECTRON_APP_BUILD_WEBSQL, ENV_ELECTRON_APP_CONTAINER_END, ENV_ELECTRON_APP_CONTAINER_ONLY, ENV_ELECTRON_APP_CONTAINER_SKIP, ENV_ELECTRON_APP_CONTAINER_SKIP_RELEASED, ENV_ELECTRON_APP_CONTAINER_START, ENV_ELECTRON_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_ELECTRON_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_ELECTRON_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_ELECTRON_APP_COPY_TO_MANAGER_SKIP, ENV_ELECTRON_APP_DOCKER_ADDITIONAL_CONTAINER, ENV_ELECTRON_APP_DOCKER_SKIP_START_IN_ORDER, ENV_ELECTRON_APP_DOCKER_SKIP_USING_MYSQL_DB, ENV_ELECTRON_APP_FINISH_CALLBACK, ENV_ELECTRON_APP_INIT_BRANDING, ENV_ELECTRON_APP_INIT_STRUCT, ENV_ELECTRON_APP_IS_CI_PROCESS, ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_ELECTRON_APP_PURPOSE, ENV_ELECTRON_APP_RECURSIVE_ACTION, ENV_ELECTRON_APP_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_ELECTRON_APP_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_ELECTRON_APP_RELEASE_CLI_COMPRESS, ENV_ELECTRON_APP_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_ELECTRON_APP_RELEASE_CLI_MINIFY, ENV_ELECTRON_APP_RELEASE_CLI_OBSCURE, ENV_ELECTRON_APP_RELEASE_CLI_UGLIFY, ENV_ELECTRON_APP_RELEASE_ENV_NAME, ENV_ELECTRON_APP_RELEASE_ENV_NUMBER, ENV_ELECTRON_APP_RELEASE_INSTALL_LOCALLY, ENV_ELECTRON_APP_RELEASE_LIB_COMPRESS, ENV_ELECTRON_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_ELECTRON_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_ELECTRON_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_ELECTRON_APP_RELEASE_LIB_REMOVE_DTS, ENV_ELECTRON_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_ELECTRON_APP_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_ELECTRON_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_ELECTRON_APP_RELEASE_RELEASE_TYPE, ENV_ELECTRON_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_ELECTRON_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_ELECTRON_APP_RELEASE_RESOLVED_NEW_VERSION, ENV_ELECTRON_APP_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_ELECTRON_APP_RELEASE_SKIP_CODE_CUTTING, ENV_ELECTRON_APP_RELEASE_SKIP_DEPLOY, ENV_ELECTRON_APP_RELEASE_SKIP_NPM_PUBLISH, ENV_ELECTRON_APP_RELEASE_SKIP_RELEASE_QUESTION, ENV_ELECTRON_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_ELECTRON_APP_RELEASE_SKIP_TAG_GIT_PUSH, ENV_ELECTRON_APP_RELEASE_TAON_INSTANCE_IP, ENV_ELECTRON_APP_RELEASE_TARGET_ARTIFACT, ENV_ELECTRON_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_ELECTRON_APP_WEBSITE_DOMAIN, ENV_ELECTRON_APP_WEBSITE_TITLE, ENV_ELECTRON_APP_WEBSITE_USE_DOMAIN, ENV_MOBILE_APP_BUILD_BASE_HREF, ENV_MOBILE_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_MOBILE_APP_BUILD_GEN_ONLY_CLIENT_CODE, ENV_MOBILE_APP_BUILD_OVERRIDE_OUTPUT_PATH, ENV_MOBILE_APP_BUILD_PROD, ENV_MOBILE_APP_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_MOBILE_APP_BUILD_PWA_NAME, ENV_MOBILE_APP_BUILD_PWA_SHORT_NAME, ENV_MOBILE_APP_BUILD_PWA_START_URL, ENV_MOBILE_APP_BUILD_SSR, ENV_MOBILE_APP_BUILD_WATCH, ENV_MOBILE_APP_BUILD_WEBSQL, ENV_MOBILE_APP_CONTAINER_END, ENV_MOBILE_APP_CONTAINER_ONLY, ENV_MOBILE_APP_CONTAINER_SKIP, ENV_MOBILE_APP_CONTAINER_SKIP_RELEASED, ENV_MOBILE_APP_CONTAINER_START, ENV_MOBILE_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_MOBILE_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_MOBILE_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_MOBILE_APP_COPY_TO_MANAGER_SKIP, ENV_MOBILE_APP_DOCKER_ADDITIONAL_CONTAINER, ENV_MOBILE_APP_DOCKER_SKIP_START_IN_ORDER, ENV_MOBILE_APP_DOCKER_SKIP_USING_MYSQL_DB, ENV_MOBILE_APP_FINISH_CALLBACK, ENV_MOBILE_APP_INIT_BRANDING, ENV_MOBILE_APP_INIT_STRUCT, ENV_MOBILE_APP_IS_CI_PROCESS, ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_MOBILE_APP_PURPOSE, ENV_MOBILE_APP_RECURSIVE_ACTION, ENV_MOBILE_APP_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_MOBILE_APP_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_MOBILE_APP_RELEASE_CLI_COMPRESS, ENV_MOBILE_APP_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_MOBILE_APP_RELEASE_CLI_MINIFY, ENV_MOBILE_APP_RELEASE_CLI_OBSCURE, ENV_MOBILE_APP_RELEASE_CLI_UGLIFY, ENV_MOBILE_APP_RELEASE_ENV_NAME, ENV_MOBILE_APP_RELEASE_ENV_NUMBER, ENV_MOBILE_APP_RELEASE_INSTALL_LOCALLY, ENV_MOBILE_APP_RELEASE_LIB_COMPRESS, ENV_MOBILE_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_MOBILE_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_MOBILE_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_MOBILE_APP_RELEASE_LIB_REMOVE_DTS, ENV_MOBILE_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_MOBILE_APP_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_MOBILE_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_MOBILE_APP_RELEASE_RELEASE_TYPE, ENV_MOBILE_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_MOBILE_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_MOBILE_APP_RELEASE_RESOLVED_NEW_VERSION, ENV_MOBILE_APP_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_MOBILE_APP_RELEASE_SKIP_CODE_CUTTING, ENV_MOBILE_APP_RELEASE_SKIP_DEPLOY, ENV_MOBILE_APP_RELEASE_SKIP_NPM_PUBLISH, ENV_MOBILE_APP_RELEASE_SKIP_RELEASE_QUESTION, ENV_MOBILE_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_MOBILE_APP_RELEASE_SKIP_TAG_GIT_PUSH, ENV_MOBILE_APP_RELEASE_TAON_INSTANCE_IP, ENV_MOBILE_APP_RELEASE_TARGET_ARTIFACT, ENV_MOBILE_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_MOBILE_APP_WEBSITE_DOMAIN, ENV_MOBILE_APP_WEBSITE_TITLE, ENV_MOBILE_APP_WEBSITE_USE_DOMAIN, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_BASE_HREF, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_GEN_ONLY_CLIENT_CODE, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_OVERRIDE_OUTPUT_PATH, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PROD, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_NAME, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_SHORT_NAME, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_START_URL, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_SSR, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_WATCH, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_WEBSQL, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_END, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_ONLY, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_SKIP, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_SKIP_RELEASED, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_START, ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_SKIP, ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_ADDITIONAL_CONTAINER, ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_SKIP_START_IN_ORDER, ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_SKIP_USING_MYSQL_DB, ENV_NPM_LIB_AND_CLI_TOOL_FINISH_CALLBACK, ENV_NPM_LIB_AND_CLI_TOOL_INIT_BRANDING, ENV_NPM_LIB_AND_CLI_TOOL_INIT_STRUCT, ENV_NPM_LIB_AND_CLI_TOOL_IS_CI_PROCESS, ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_NPM_LIB_AND_CLI_TOOL_PURPOSE, ENV_NPM_LIB_AND_CLI_TOOL_RECURSIVE_ACTION, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_COMPRESS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_MINIFY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_OBSCURE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_UGLIFY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_ENV_NAME, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_ENV_NUMBER, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_INSTALL_LOCALLY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_COMPRESS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_REMOVE_DTS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RELEASE_TYPE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RESOLVED_NEW_VERSION, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_CODE_CUTTING, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_DEPLOY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_NPM_PUBLISH, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_RELEASE_QUESTION, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_TAG_GIT_PUSH, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_TAON_INSTANCE_IP, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_TARGET_ARTIFACT, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_DOMAIN, ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_TITLE, ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_USE_DOMAIN, ENV_VSCODE_PLUGIN_BUILD_BASE_HREF, ENV_VSCODE_PLUGIN_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_VSCODE_PLUGIN_BUILD_GEN_ONLY_CLIENT_CODE, ENV_VSCODE_PLUGIN_BUILD_OVERRIDE_OUTPUT_PATH, ENV_VSCODE_PLUGIN_BUILD_PROD, ENV_VSCODE_PLUGIN_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_VSCODE_PLUGIN_BUILD_PWA_NAME, ENV_VSCODE_PLUGIN_BUILD_PWA_SHORT_NAME, ENV_VSCODE_PLUGIN_BUILD_PWA_START_URL, ENV_VSCODE_PLUGIN_BUILD_SSR, ENV_VSCODE_PLUGIN_BUILD_WATCH, ENV_VSCODE_PLUGIN_BUILD_WEBSQL, ENV_VSCODE_PLUGIN_CONTAINER_END, ENV_VSCODE_PLUGIN_CONTAINER_ONLY, ENV_VSCODE_PLUGIN_CONTAINER_SKIP, ENV_VSCODE_PLUGIN_CONTAINER_SKIP_RELEASED, ENV_VSCODE_PLUGIN_CONTAINER_START, ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_SKIP, ENV_VSCODE_PLUGIN_DOCKER_ADDITIONAL_CONTAINER, ENV_VSCODE_PLUGIN_DOCKER_SKIP_START_IN_ORDER, ENV_VSCODE_PLUGIN_DOCKER_SKIP_USING_MYSQL_DB, ENV_VSCODE_PLUGIN_FINISH_CALLBACK, ENV_VSCODE_PLUGIN_INIT_BRANDING, ENV_VSCODE_PLUGIN_INIT_STRUCT, ENV_VSCODE_PLUGIN_IS_CI_PROCESS, ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_VSCODE_PLUGIN_PURPOSE, ENV_VSCODE_PLUGIN_RECURSIVE_ACTION, ENV_VSCODE_PLUGIN_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_VSCODE_PLUGIN_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_VSCODE_PLUGIN_RELEASE_CLI_COMPRESS, ENV_VSCODE_PLUGIN_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_VSCODE_PLUGIN_RELEASE_CLI_MINIFY, ENV_VSCODE_PLUGIN_RELEASE_CLI_OBSCURE, ENV_VSCODE_PLUGIN_RELEASE_CLI_UGLIFY, ENV_VSCODE_PLUGIN_RELEASE_ENV_NAME, ENV_VSCODE_PLUGIN_RELEASE_ENV_NUMBER, ENV_VSCODE_PLUGIN_RELEASE_INSTALL_LOCALLY, ENV_VSCODE_PLUGIN_RELEASE_LIB_COMPRESS, ENV_VSCODE_PLUGIN_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_VSCODE_PLUGIN_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_VSCODE_PLUGIN_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_VSCODE_PLUGIN_RELEASE_LIB_REMOVE_DTS, ENV_VSCODE_PLUGIN_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_VSCODE_PLUGIN_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_VSCODE_PLUGIN_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_VSCODE_PLUGIN_RELEASE_RELEASE_TYPE, ENV_VSCODE_PLUGIN_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_VSCODE_PLUGIN_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_VSCODE_PLUGIN_RELEASE_RESOLVED_NEW_VERSION, ENV_VSCODE_PLUGIN_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_VSCODE_PLUGIN_RELEASE_SKIP_CODE_CUTTING, ENV_VSCODE_PLUGIN_RELEASE_SKIP_DEPLOY, ENV_VSCODE_PLUGIN_RELEASE_SKIP_NPM_PUBLISH, ENV_VSCODE_PLUGIN_RELEASE_SKIP_RELEASE_QUESTION, ENV_VSCODE_PLUGIN_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_VSCODE_PLUGIN_RELEASE_SKIP_TAG_GIT_PUSH, ENV_VSCODE_PLUGIN_RELEASE_TAON_INSTANCE_IP, ENV_VSCODE_PLUGIN_RELEASE_TARGET_ARTIFACT, ENV_VSCODE_PLUGIN_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_VSCODE_PLUGIN_WEBSITE_DOMAIN, ENV_VSCODE_PLUGIN_WEBSITE_TITLE, ENV_VSCODE_PLUGIN_WEBSITE_USE_DOMAIN, PROJECT_NPM_NAME, TaonAdminLayoutComponent, TaonAdminPageTabsComponent, TaonBaseAdminLayoutPage, TaonDraggableButtonPanelComponent, TaonDraggableButtonPanelRoutes, TaonDraggableButtonPanelState, adminLazyRoutes, myOrgProj, startCli };
|
|
2668
|
+
export { APP_ID, BUILD_BASE_HREF, BUILD_FRAMEWORK_CLI_NAME, CURRENT_PACKAGE_TAON_VERSION, CURRENT_PACKAGE_VERSION, ENV_ANGULAR_NODE_APP_BUILD_BASE_HREF, ENV_ANGULAR_NODE_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_ANGULAR_NODE_APP_BUILD_GEN_ONLY_CLIENT_CODE, ENV_ANGULAR_NODE_APP_BUILD_OVERRIDE_OUTPUT_PATH, ENV_ANGULAR_NODE_APP_BUILD_PROD, ENV_ANGULAR_NODE_APP_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_ANGULAR_NODE_APP_BUILD_PWA_NAME, ENV_ANGULAR_NODE_APP_BUILD_PWA_SHORT_NAME, ENV_ANGULAR_NODE_APP_BUILD_PWA_START_URL, ENV_ANGULAR_NODE_APP_BUILD_SSR, ENV_ANGULAR_NODE_APP_BUILD_WATCH, ENV_ANGULAR_NODE_APP_BUILD_WEBSQL, ENV_ANGULAR_NODE_APP_CONTAINER_END, ENV_ANGULAR_NODE_APP_CONTAINER_ONLY, ENV_ANGULAR_NODE_APP_CONTAINER_SKIP, ENV_ANGULAR_NODE_APP_CONTAINER_SKIP_RELEASED, ENV_ANGULAR_NODE_APP_CONTAINER_START, ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_SKIP, ENV_ANGULAR_NODE_APP_DOCKER_ADDITIONAL_CONTAINER, ENV_ANGULAR_NODE_APP_DOCKER_SKIP_START_IN_ORDER, ENV_ANGULAR_NODE_APP_DOCKER_SKIP_USING_MYSQL_DB, ENV_ANGULAR_NODE_APP_FINISH_CALLBACK, ENV_ANGULAR_NODE_APP_INIT_BRANDING, ENV_ANGULAR_NODE_APP_INIT_STRUCT, ENV_ANGULAR_NODE_APP_IS_CI_PROCESS, ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_ANGULAR_NODE_APP_PURPOSE, ENV_ANGULAR_NODE_APP_RECURSIVE_ACTION, ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_ANGULAR_NODE_APP_RELEASE_CLI_COMPRESS, ENV_ANGULAR_NODE_APP_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_ANGULAR_NODE_APP_RELEASE_CLI_MINIFY, ENV_ANGULAR_NODE_APP_RELEASE_CLI_OBSCURE, ENV_ANGULAR_NODE_APP_RELEASE_CLI_UGLIFY, ENV_ANGULAR_NODE_APP_RELEASE_ENV_NAME, ENV_ANGULAR_NODE_APP_RELEASE_ENV_NUMBER, ENV_ANGULAR_NODE_APP_RELEASE_INSTALL_LOCALLY, ENV_ANGULAR_NODE_APP_RELEASE_LIB_COMPRESS, ENV_ANGULAR_NODE_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_ANGULAR_NODE_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_ANGULAR_NODE_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_ANGULAR_NODE_APP_RELEASE_LIB_REMOVE_DTS, ENV_ANGULAR_NODE_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_ANGULAR_NODE_APP_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_ANGULAR_NODE_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_TYPE, ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_ANGULAR_NODE_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_ANGULAR_NODE_APP_RELEASE_RESOLVED_NEW_VERSION, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_CODE_CUTTING, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_DEPLOY, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_NPM_PUBLISH, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RELEASE_QUESTION, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_ANGULAR_NODE_APP_RELEASE_SKIP_TAG_GIT_PUSH, ENV_ANGULAR_NODE_APP_RELEASE_TAON_INSTANCE_IP, ENV_ANGULAR_NODE_APP_RELEASE_TARGET_ARTIFACT, ENV_ANGULAR_NODE_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_ANGULAR_NODE_APP_WEBSITE_DOMAIN, ENV_ANGULAR_NODE_APP_WEBSITE_TITLE, ENV_ANGULAR_NODE_APP_WEBSITE_USE_DOMAIN, ENV_DOCS_WEBAPP_BUILD_BASE_HREF, ENV_DOCS_WEBAPP_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_DOCS_WEBAPP_BUILD_GEN_ONLY_CLIENT_CODE, ENV_DOCS_WEBAPP_BUILD_OVERRIDE_OUTPUT_PATH, ENV_DOCS_WEBAPP_BUILD_PROD, ENV_DOCS_WEBAPP_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_DOCS_WEBAPP_BUILD_PWA_NAME, ENV_DOCS_WEBAPP_BUILD_PWA_SHORT_NAME, ENV_DOCS_WEBAPP_BUILD_PWA_START_URL, ENV_DOCS_WEBAPP_BUILD_SSR, ENV_DOCS_WEBAPP_BUILD_WATCH, ENV_DOCS_WEBAPP_BUILD_WEBSQL, ENV_DOCS_WEBAPP_CONTAINER_END, ENV_DOCS_WEBAPP_CONTAINER_ONLY, ENV_DOCS_WEBAPP_CONTAINER_SKIP, ENV_DOCS_WEBAPP_CONTAINER_SKIP_RELEASED, ENV_DOCS_WEBAPP_CONTAINER_START, ENV_DOCS_WEBAPP_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_DOCS_WEBAPP_COPY_TO_MANAGER_SKIP, ENV_DOCS_WEBAPP_DOCKER_ADDITIONAL_CONTAINER, ENV_DOCS_WEBAPP_DOCKER_SKIP_START_IN_ORDER, ENV_DOCS_WEBAPP_DOCKER_SKIP_USING_MYSQL_DB, ENV_DOCS_WEBAPP_FINISH_CALLBACK, ENV_DOCS_WEBAPP_INIT_BRANDING, ENV_DOCS_WEBAPP_INIT_STRUCT, ENV_DOCS_WEBAPP_IS_CI_PROCESS, ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_DOCS_WEBAPP_PURPOSE, ENV_DOCS_WEBAPP_RECURSIVE_ACTION, ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_DOCS_WEBAPP_RELEASE_CLI_COMPRESS, ENV_DOCS_WEBAPP_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_DOCS_WEBAPP_RELEASE_CLI_MINIFY, ENV_DOCS_WEBAPP_RELEASE_CLI_OBSCURE, ENV_DOCS_WEBAPP_RELEASE_CLI_UGLIFY, ENV_DOCS_WEBAPP_RELEASE_ENV_NAME, ENV_DOCS_WEBAPP_RELEASE_ENV_NUMBER, ENV_DOCS_WEBAPP_RELEASE_INSTALL_LOCALLY, ENV_DOCS_WEBAPP_RELEASE_LIB_COMPRESS, ENV_DOCS_WEBAPP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_DOCS_WEBAPP_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_DOCS_WEBAPP_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_DOCS_WEBAPP_RELEASE_LIB_REMOVE_DTS, ENV_DOCS_WEBAPP_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_DOCS_WEBAPP_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_DOCS_WEBAPP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_DOCS_WEBAPP_RELEASE_RELEASE_TYPE, ENV_DOCS_WEBAPP_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_DOCS_WEBAPP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_DOCS_WEBAPP_RELEASE_RESOLVED_NEW_VERSION, ENV_DOCS_WEBAPP_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_DOCS_WEBAPP_RELEASE_SKIP_CODE_CUTTING, ENV_DOCS_WEBAPP_RELEASE_SKIP_DEPLOY, ENV_DOCS_WEBAPP_RELEASE_SKIP_NPM_PUBLISH, ENV_DOCS_WEBAPP_RELEASE_SKIP_RELEASE_QUESTION, ENV_DOCS_WEBAPP_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_DOCS_WEBAPP_RELEASE_SKIP_TAG_GIT_PUSH, ENV_DOCS_WEBAPP_RELEASE_TAON_INSTANCE_IP, ENV_DOCS_WEBAPP_RELEASE_TARGET_ARTIFACT, ENV_DOCS_WEBAPP_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_DOCS_WEBAPP_WEBSITE_DOMAIN, ENV_DOCS_WEBAPP_WEBSITE_TITLE, ENV_DOCS_WEBAPP_WEBSITE_USE_DOMAIN, ENV_ELECTRON_APP_BUILD_BASE_HREF, ENV_ELECTRON_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_ELECTRON_APP_BUILD_GEN_ONLY_CLIENT_CODE, ENV_ELECTRON_APP_BUILD_OVERRIDE_OUTPUT_PATH, ENV_ELECTRON_APP_BUILD_PROD, ENV_ELECTRON_APP_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_ELECTRON_APP_BUILD_PWA_NAME, ENV_ELECTRON_APP_BUILD_PWA_SHORT_NAME, ENV_ELECTRON_APP_BUILD_PWA_START_URL, ENV_ELECTRON_APP_BUILD_SSR, ENV_ELECTRON_APP_BUILD_WATCH, ENV_ELECTRON_APP_BUILD_WEBSQL, ENV_ELECTRON_APP_CONTAINER_END, ENV_ELECTRON_APP_CONTAINER_ONLY, ENV_ELECTRON_APP_CONTAINER_SKIP, ENV_ELECTRON_APP_CONTAINER_SKIP_RELEASED, ENV_ELECTRON_APP_CONTAINER_START, ENV_ELECTRON_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_ELECTRON_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_ELECTRON_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_ELECTRON_APP_COPY_TO_MANAGER_SKIP, ENV_ELECTRON_APP_DOCKER_ADDITIONAL_CONTAINER, ENV_ELECTRON_APP_DOCKER_SKIP_START_IN_ORDER, ENV_ELECTRON_APP_DOCKER_SKIP_USING_MYSQL_DB, ENV_ELECTRON_APP_FINISH_CALLBACK, ENV_ELECTRON_APP_INIT_BRANDING, ENV_ELECTRON_APP_INIT_STRUCT, ENV_ELECTRON_APP_IS_CI_PROCESS, ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_ELECTRON_APP_PURPOSE, ENV_ELECTRON_APP_RECURSIVE_ACTION, ENV_ELECTRON_APP_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_ELECTRON_APP_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_ELECTRON_APP_RELEASE_CLI_COMPRESS, ENV_ELECTRON_APP_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_ELECTRON_APP_RELEASE_CLI_MINIFY, ENV_ELECTRON_APP_RELEASE_CLI_OBSCURE, ENV_ELECTRON_APP_RELEASE_CLI_UGLIFY, ENV_ELECTRON_APP_RELEASE_ENV_NAME, ENV_ELECTRON_APP_RELEASE_ENV_NUMBER, ENV_ELECTRON_APP_RELEASE_INSTALL_LOCALLY, ENV_ELECTRON_APP_RELEASE_LIB_COMPRESS, ENV_ELECTRON_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_ELECTRON_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_ELECTRON_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_ELECTRON_APP_RELEASE_LIB_REMOVE_DTS, ENV_ELECTRON_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_ELECTRON_APP_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_ELECTRON_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_ELECTRON_APP_RELEASE_RELEASE_TYPE, ENV_ELECTRON_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_ELECTRON_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_ELECTRON_APP_RELEASE_RESOLVED_NEW_VERSION, ENV_ELECTRON_APP_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_ELECTRON_APP_RELEASE_SKIP_CODE_CUTTING, ENV_ELECTRON_APP_RELEASE_SKIP_DEPLOY, ENV_ELECTRON_APP_RELEASE_SKIP_NPM_PUBLISH, ENV_ELECTRON_APP_RELEASE_SKIP_RELEASE_QUESTION, ENV_ELECTRON_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_ELECTRON_APP_RELEASE_SKIP_TAG_GIT_PUSH, ENV_ELECTRON_APP_RELEASE_TAON_INSTANCE_IP, ENV_ELECTRON_APP_RELEASE_TARGET_ARTIFACT, ENV_ELECTRON_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_ELECTRON_APP_WEBSITE_DOMAIN, ENV_ELECTRON_APP_WEBSITE_TITLE, ENV_ELECTRON_APP_WEBSITE_USE_DOMAIN, ENV_MOBILE_APP_BUILD_BASE_HREF, ENV_MOBILE_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_MOBILE_APP_BUILD_GEN_ONLY_CLIENT_CODE, ENV_MOBILE_APP_BUILD_OVERRIDE_OUTPUT_PATH, ENV_MOBILE_APP_BUILD_PROD, ENV_MOBILE_APP_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_MOBILE_APP_BUILD_PWA_NAME, ENV_MOBILE_APP_BUILD_PWA_SHORT_NAME, ENV_MOBILE_APP_BUILD_PWA_START_URL, ENV_MOBILE_APP_BUILD_SSR, ENV_MOBILE_APP_BUILD_WATCH, ENV_MOBILE_APP_BUILD_WEBSQL, ENV_MOBILE_APP_CONTAINER_END, ENV_MOBILE_APP_CONTAINER_ONLY, ENV_MOBILE_APP_CONTAINER_SKIP, ENV_MOBILE_APP_CONTAINER_SKIP_RELEASED, ENV_MOBILE_APP_CONTAINER_START, ENV_MOBILE_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_MOBILE_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_MOBILE_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_MOBILE_APP_COPY_TO_MANAGER_SKIP, ENV_MOBILE_APP_DOCKER_ADDITIONAL_CONTAINER, ENV_MOBILE_APP_DOCKER_SKIP_START_IN_ORDER, ENV_MOBILE_APP_DOCKER_SKIP_USING_MYSQL_DB, ENV_MOBILE_APP_FINISH_CALLBACK, ENV_MOBILE_APP_INIT_BRANDING, ENV_MOBILE_APP_INIT_STRUCT, ENV_MOBILE_APP_IS_CI_PROCESS, ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_MOBILE_APP_PURPOSE, ENV_MOBILE_APP_RECURSIVE_ACTION, ENV_MOBILE_APP_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_MOBILE_APP_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_MOBILE_APP_RELEASE_CLI_COMPRESS, ENV_MOBILE_APP_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_MOBILE_APP_RELEASE_CLI_MINIFY, ENV_MOBILE_APP_RELEASE_CLI_OBSCURE, ENV_MOBILE_APP_RELEASE_CLI_UGLIFY, ENV_MOBILE_APP_RELEASE_ENV_NAME, ENV_MOBILE_APP_RELEASE_ENV_NUMBER, ENV_MOBILE_APP_RELEASE_INSTALL_LOCALLY, ENV_MOBILE_APP_RELEASE_LIB_COMPRESS, ENV_MOBILE_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_MOBILE_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_MOBILE_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_MOBILE_APP_RELEASE_LIB_REMOVE_DTS, ENV_MOBILE_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_MOBILE_APP_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_MOBILE_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_MOBILE_APP_RELEASE_RELEASE_TYPE, ENV_MOBILE_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_MOBILE_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_MOBILE_APP_RELEASE_RESOLVED_NEW_VERSION, ENV_MOBILE_APP_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_MOBILE_APP_RELEASE_SKIP_CODE_CUTTING, ENV_MOBILE_APP_RELEASE_SKIP_DEPLOY, ENV_MOBILE_APP_RELEASE_SKIP_NPM_PUBLISH, ENV_MOBILE_APP_RELEASE_SKIP_RELEASE_QUESTION, ENV_MOBILE_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_MOBILE_APP_RELEASE_SKIP_TAG_GIT_PUSH, ENV_MOBILE_APP_RELEASE_TAON_INSTANCE_IP, ENV_MOBILE_APP_RELEASE_TARGET_ARTIFACT, ENV_MOBILE_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_MOBILE_APP_WEBSITE_DOMAIN, ENV_MOBILE_APP_WEBSITE_TITLE, ENV_MOBILE_APP_WEBSITE_USE_DOMAIN, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_BASE_HREF, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_GEN_ONLY_CLIENT_CODE, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_OVERRIDE_OUTPUT_PATH, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PROD, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_NAME, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_SHORT_NAME, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_START_URL, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_SSR, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_WATCH, ENV_NPM_LIB_AND_CLI_TOOL_BUILD_WEBSQL, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_END, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_ONLY, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_SKIP, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_SKIP_RELEASED, ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_START, ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_SKIP, ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_ADDITIONAL_CONTAINER, ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_SKIP_START_IN_ORDER, ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_SKIP_USING_MYSQL_DB, ENV_NPM_LIB_AND_CLI_TOOL_FINISH_CALLBACK, ENV_NPM_LIB_AND_CLI_TOOL_INIT_BRANDING, ENV_NPM_LIB_AND_CLI_TOOL_INIT_STRUCT, ENV_NPM_LIB_AND_CLI_TOOL_IS_CI_PROCESS, ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_NPM_LIB_AND_CLI_TOOL_PURPOSE, ENV_NPM_LIB_AND_CLI_TOOL_RECURSIVE_ACTION, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_COMPRESS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_MINIFY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_OBSCURE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_UGLIFY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_ENV_NAME, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_ENV_NUMBER, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_INSTALL_LOCALLY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_COMPRESS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_REMOVE_DTS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RELEASE_TYPE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RESOLVED_NEW_VERSION, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_CODE_CUTTING, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_DEPLOY, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_NPM_PUBLISH, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_RELEASE_QUESTION, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_TAG_GIT_PUSH, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_TAON_INSTANCE_IP, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_TARGET_ARTIFACT, ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_DOMAIN, ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_TITLE, ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_USE_DOMAIN, ENV_VSCODE_PLUGIN_BUILD_BASE_HREF, ENV_VSCODE_PLUGIN_BUILD_ELECTRON_SHOW_DEV_TOOLS, ENV_VSCODE_PLUGIN_BUILD_GEN_ONLY_CLIENT_CODE, ENV_VSCODE_PLUGIN_BUILD_OVERRIDE_OUTPUT_PATH, ENV_VSCODE_PLUGIN_BUILD_PROD, ENV_VSCODE_PLUGIN_BUILD_PWA_DISABLE_SERVICE_WORKER, ENV_VSCODE_PLUGIN_BUILD_PWA_NAME, ENV_VSCODE_PLUGIN_BUILD_PWA_SHORT_NAME, ENV_VSCODE_PLUGIN_BUILD_PWA_START_URL, ENV_VSCODE_PLUGIN_BUILD_SSR, ENV_VSCODE_PLUGIN_BUILD_WATCH, ENV_VSCODE_PLUGIN_BUILD_WEBSQL, ENV_VSCODE_PLUGIN_CONTAINER_END, ENV_VSCODE_PLUGIN_CONTAINER_ONLY, ENV_VSCODE_PLUGIN_CONTAINER_SKIP, ENV_VSCODE_PLUGIN_CONTAINER_SKIP_RELEASED, ENV_VSCODE_PLUGIN_CONTAINER_START, ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_BEFORE_COPY_HOOK, ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_COPY_TO_LOCATIONS, ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_COPY_TO_PROJECTS, ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_SKIP, ENV_VSCODE_PLUGIN_DOCKER_ADDITIONAL_CONTAINER, ENV_VSCODE_PLUGIN_DOCKER_SKIP_START_IN_ORDER, ENV_VSCODE_PLUGIN_DOCKER_SKIP_USING_MYSQL_DB, ENV_VSCODE_PLUGIN_FINISH_CALLBACK, ENV_VSCODE_PLUGIN_INIT_BRANDING, ENV_VSCODE_PLUGIN_INIT_STRUCT, ENV_VSCODE_PLUGIN_IS_CI_PROCESS, ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND, ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER, ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME, ENV_VSCODE_PLUGIN_PURPOSE, ENV_VSCODE_PLUGIN_RECURSIVE_ACTION, ENV_VSCODE_PLUGIN_RELEASE_AUTO_RELEASE_TASK_NAME, ENV_VSCODE_PLUGIN_RELEASE_AUTO_RELEASE_USING_CONFIG, ENV_VSCODE_PLUGIN_RELEASE_CLI_COMPRESS, ENV_VSCODE_PLUGIN_RELEASE_CLI_INCLUDE_NODE_MODULES, ENV_VSCODE_PLUGIN_RELEASE_CLI_MINIFY, ENV_VSCODE_PLUGIN_RELEASE_CLI_OBSCURE, ENV_VSCODE_PLUGIN_RELEASE_CLI_UGLIFY, ENV_VSCODE_PLUGIN_RELEASE_ENV_NAME, ENV_VSCODE_PLUGIN_RELEASE_ENV_NUMBER, ENV_VSCODE_PLUGIN_RELEASE_INSTALL_LOCALLY, ENV_VSCODE_PLUGIN_RELEASE_LIB_COMPRESS, ENV_VSCODE_PLUGIN_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES, ENV_VSCODE_PLUGIN_RELEASE_LIB_INCLUDE_SOURCE_MAPS, ENV_VSCODE_PLUGIN_RELEASE_LIB_OBSCURE_FILE_BY_FILE, ENV_VSCODE_PLUGIN_RELEASE_LIB_REMOVE_DTS, ENV_VSCODE_PLUGIN_RELEASE_LIB_UGLIFY_FILE_BY_FILE, ENV_VSCODE_PLUGIN_RELEASE_NODE_BACKEND_APP_MINIFY, ENV_VSCODE_PLUGIN_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH, ENV_VSCODE_PLUGIN_RELEASE_RELEASE_TYPE, ENV_VSCODE_PLUGIN_RELEASE_RELEASE_VERSION_BUMP_TYPE, ENV_VSCODE_PLUGIN_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL, ENV_VSCODE_PLUGIN_RELEASE_RESOLVED_NEW_VERSION, ENV_VSCODE_PLUGIN_RELEASE_SKIP_BUILDING_ARTIFACTS, ENV_VSCODE_PLUGIN_RELEASE_SKIP_CODE_CUTTING, ENV_VSCODE_PLUGIN_RELEASE_SKIP_DEPLOY, ENV_VSCODE_PLUGIN_RELEASE_SKIP_NPM_PUBLISH, ENV_VSCODE_PLUGIN_RELEASE_SKIP_RELEASE_QUESTION, ENV_VSCODE_PLUGIN_RELEASE_SKIP_RESOLVING_GIT_CHANGES, ENV_VSCODE_PLUGIN_RELEASE_SKIP_TAG_GIT_PUSH, ENV_VSCODE_PLUGIN_RELEASE_TAON_INSTANCE_IP, ENV_VSCODE_PLUGIN_RELEASE_TARGET_ARTIFACT, ENV_VSCODE_PLUGIN_RELEASE_USE_LOCAL_RELEASE_BRANCH, ENV_VSCODE_PLUGIN_WEBSITE_DOMAIN, ENV_VSCODE_PLUGIN_WEBSITE_TITLE, ENV_VSCODE_PLUGIN_WEBSITE_USE_DOMAIN, PROJECT_NPM_NAME, TaonAdminLayoutComponent, TaonAdminPageTabsComponent, TaonBackofficeNotificationsComponent, TaonBackofficeNotificationsService, TaonBaseAdminLayoutPage, TaonBaselineBackofficeOutletName, TaonConfirmDialogComponent, TaonDatatableComponent, TaonDatatableRoutes, TaonDraggableButtonPanelComponent, TaonDraggableButtonPanelRoutes, TaonDraggableButtonPanelState, TaonErrorDetailsDialogComponent, TaonErrorToastComponent, TaonHorizontalWheelScrollDirective, adminLazyRoute, myOrgProj, startCli };
|
|
1842
2669
|
//# sourceMappingURL=ui-browser.mjs.map
|