@taon-dev/ui 21.0.10 → 21.0.11
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/browser/fesm2022/ui-browser.mjs +1 -1
- package/browser/fesm2022/ui-browser.mjs.map +1 -1
- package/browser/package.json +1 -1
- package/browser/types/ui-browser.d.ts +1 -1
- package/browser-prod/fesm2022/ui-browser-prod.mjs +1 -1
- 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 +1 -1
- package/cli.d.ts +2 -1
- package/full-dts/build-info._auto-generated_.d.ts +2 -1
- package/full-dts/directives/taon-horizontal-wheel-scrolling.directive.d.ts +1 -0
- package/full-dts/i18n/lib.translation.d.ts +1 -0
- package/full-dts/i18n/my-organization-proj.ts.en-US.i18n.data.d.ts +1 -0
- package/full-dts/i18n/my-organization-proj.ts.pl-PL.i18n.data.d.ts +1 -0
- package/full-dts/index._auto-generated_.d.ts +1 -0
- package/full-dts/index.d.ts +1 -0
- package/full-dts/migrations/index.d.ts +1 -0
- package/full-dts/migrations/migrations_index._auto-generated_.d.ts +1 -0
- package/full-dts/my-organization-proj.d.ts +1 -0
- package/full-dts/start-cli.d.ts +1 -0
- package/full-dts/taon-admin-layout/index.d.ts +1 -0
- package/full-dts/taon-admin-layout/taon-admin-layout.component.d.ts +1 -0
- package/full-dts/taon-admin-layout/taon-admin-layout.models.d.ts +1 -0
- package/full-dts/taon-admin-layout/taon-admin-page-tabs.component.d.ts +1 -0
- package/full-dts/taon-admin-layout/taon-base-admin-page.component.d.ts +1 -0
- package/full-dts/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.en-US.i18n.data.d.ts +1 -0
- package/full-dts/taon-backoffice-notifications/i18n/taon-backoffice-notifications.component.ts.pl-PL.i18n.data.d.ts +1 -0
- package/full-dts/taon-backoffice-notifications/i18n/taon-backoffice-notifications.translation.d.ts +1 -0
- package/full-dts/taon-backoffice-notifications/index.d.ts +1 -0
- package/full-dts/taon-backoffice-notifications/taon-backoffice-notifications.component.d.ts +1 -0
- package/full-dts/taon-backoffice-notifications/taon-backoffice-notifications.models.d.ts +1 -0
- package/full-dts/taon-backoffice-notifications/taon-backoffice-notifications.service.d.ts +1 -0
- package/full-dts/taon-backoffice-notifications/taon-error-details-dialog.component.d.ts +1 -0
- package/full-dts/taon-backoffice-notifications/taon-error-toast.component.d.ts +1 -0
- package/full-dts/taon-confirm-dialog/taon-confirm-dialog.component.d.ts +1 -0
- package/full-dts/taon-confirm-dialog/taon-confirm-dialog.models.d.ts +1 -0
- package/full-dts/taon-datatable/index.d.ts +1 -0
- package/full-dts/taon-datatable/taon-datatable.component.d.ts +1 -0
- package/full-dts/taon-datatable/taon-datatable.models.d.ts +1 -0
- package/full-dts/taon-datatable/taon-datatable.routes.d.ts +1 -0
- package/full-dts/taon-draggable-button-panel/index.d.ts +1 -0
- package/full-dts/taon-draggable-button-panel/taon-draggable-button-panel.component.d.ts +1 -0
- package/full-dts/taon-draggable-button-panel/taon-draggable-button-panel.models.d.ts +1 -0
- package/full-dts/taon-draggable-button-panel/taon-draggable-button-panel.routes.d.ts +1 -0
- package/html/assets/generated/pwa/html-pwa.html +53 -53
- package/i18n/app.ts.en-US.i18n.data.d.ts +1 -0
- package/i18n/app.ts.pl-PL.i18n.data.d.ts +1 -0
- package/i18n/src.translation.d.ts +1 -0
- package/index.d.ts +2 -1
- package/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib/build-info._auto-generated_.js +1 -1
- package/lib/package.json +1 -1
- package/lib/taon-admin-layout/index.d.ts +1 -1
- package/lib/taon-admin-layout/index.js +2 -2
- package/lib/taon-datatable/index.d.ts +1 -1
- package/lib/taon-datatable/index.js +2 -2
- package/lib/taon-draggable-button-panel/index.d.ts +1 -1
- package/lib/taon-draggable-button-panel/index.js +2 -2
- 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/taon-admin-layout/index.d.ts +1 -1
- package/lib-esm/lib/taon-admin-layout/index.js +1 -1
- package/lib-esm/lib/taon-datatable/index.d.ts +1 -1
- package/lib-esm/lib/taon-datatable/index.js +1 -1
- 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/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-datatable/index.d.ts +1 -1
- package/lib-prod/taon-datatable/index.js +1 -1
- 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/websql/fesm2022/ui-websql.mjs +1 -1
- package/websql/fesm2022/ui-websql.mjs.map +1 -1
- package/websql/package.json +1 -1
- package/websql/types/ui-websql.d.ts +1 -1
- package/websql-prod/fesm2022/ui-websql-prod.mjs +1 -1
- 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 +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-websql.mjs","sources":["../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/migrations/migrations_index._auto-generated_.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/migrations/index.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/build-info._auto-generated_.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/my-organization-proj.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/start-cli.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/directives/taon-horizontal-wheel-scrolling.directive.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/i18n/lib.translation.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-admin-layout/taon-admin-page-tabs.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-admin-layout/taon-admin-page-tabs.component.html","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-admin-layout/taon-admin-layout.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-admin-layout/taon-admin-layout.component.html","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-admin-layout/taon-admin-layout.models.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-admin-layout/taon-base-admin-page.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-backoffice-notifications/taon-error-details-dialog.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-backoffice-notifications/taon-error-details-dialog.component.html","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-backoffice-notifications/taon-error-toast.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-backoffice-notifications/taon-backoffice-notifications.service.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-backoffice-notifications/taon-backoffice-notifications.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-backoffice-notifications/taon-backoffice-notifications.component.html","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-confirm-dialog/taon-confirm-dialog.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-confirm-dialog/taon-confirm-dialog.component.html","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-datatable/taon-datatable.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-datatable/taon-datatable.component.html","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-datatable/taon-datatable.routes.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-draggable-button-panel/taon-draggable-button-panel.models.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-draggable-button-panel/taon-draggable-button-panel.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-draggable-button-panel/taon-draggable-button-panel.component.html","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-draggable-button-panel/taon-draggable-button-panel.routes.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.translation.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/index._auto-generated_.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/index.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/ui-websql.ts"],"sourcesContent":["// THIS FILE IS GENERATED - DO NOT MODIFY\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n","//@ts-nocheck\nexport * from './migrations_index._auto-generated_';\n","// THIS FILE IS GENERATED - DO NOT MODIFY\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_FRAMEWORK_CLI_NAME = 'tnp';\n/**\n * This value can be change in taon.jsonc (appId)\n */\nexport const APP_ID = 'com.domain.example.ui';\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_BASE_HREF = '';\n/**\n * This value can be change in taon.jsonc (overrideNpmName)\n */\nexport const PROJECT_NPM_NAME = '@taon-dev/ui';\n/**\n * Taon version from you project taon.json\n */\nexport const CURRENT_PACKAGE_TAON_VERSION = 'v21';\n/**\n * Autogenerated by current cli tool. Use *tnp release* to bump version.\n */\nexport const CURRENT_PACKAGE_VERSION = '21.0.10';\n\n\n\n\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n ","import { Translation } from \"@taon-dev/i18n/websql\";\nimport { Taon } from \"taon/websql\";\n\nconst t = Translation.for('src/lib/my-organization-proj.ts', {\"src/lib/my-organization-proj.ts\":{\"en-US\":async () => (await import('./i18n/my-organization-proj.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/my-organization-proj.ts.pl-PL.i18n.data')).default}} as any);\n\nexport function myOrgProj() {\n t.gettext('My Translated Company Name!')\n}\n","//#region tnp-helpers cli template\nimport { UtilsJson } from 'tnp-core/websql';\nimport { Helpers, BaseCommandLineFeature } from 'tnp-helpers/websql';\n/* */ \n//#endregion\n\n//#region CLI / global scope\n/**\n * This class is for handling global arguments. *\n * Cli engine will parse: hello:world:from:global:arg to helloWorldFromGlobalArg\n * (lower case, camel case) .. so you don't need to worry about misspelling\n * arguments\n */\nclass $Global extends BaseCommandLineFeature<{}> {\n /**\n * When you execute cli without arguments:`$ cli`\n */\n public _() {\n console.log(`Hello world from cli`);\n this._exit();\n }\n\n /**\n * When you execute: `$ cli hello:world:from:global:arg`\n * (or `$ cli helloWorldFromGlobalArg`)\n */\n helloWorldFromGlobalArg() {\n console.log('hello world from global argument!');\n this._exit(0);\n }\n}\n//#endregion\n\n//#region CLI / Version Scope\n/**\n *\n */\nclass $Version extends BaseCommandLineFeature<{\n anyCLIparamsHere: string;\n}> {\n /**\n * When you execute: `$ cli version`\n */\n public _() {\n console.log(`Hello world from version argument`);\n this._exit();\n }\n\n /**\n * When you execute: `$ cli version:getFromPackageJson`\n */\n public getFromPackageJson() {\n const ver = UtilsJson.getValue(\n this.project.pathFor('package.json'),\n 'version',\n {\n defaultValue: '<not defined>',\n },\n );\n console.log(`Version from packageJson ${ver}`);\n this._exit(0);\n }\n}\n//#endregion\n\n/**\n *\n * @param argsv process.argsv\n * @param filename needed if you want ipc communicaiton\n */\nexport async function startCli(\n argsv: string[],\n filename: string,\n): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n}\n\nexport default startCli;\n","//#region imports\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n inject,\n OnDestroy,\n} from '@angular/core';\n//#endregion\n\n@Directive({\n selector: '[taonHorizontalWheelScroll]',\n standalone: true,\n})\nexport class TaonHorizontalWheelScrollDirective\n implements AfterViewInit, OnDestroy\n{\n //#region fields\n\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n private wheelAccumulator = 0;\n\n /**\n * Amount of wheel movement required before triggering\n * Material's previous/next pagination.\n */\n private readonly wheelThreshold = 40;\n\n //#endregion\n\n //#region lifecycle\n\n ngAfterViewInit(): void {\n this.elementRef.nativeElement.addEventListener('wheel', this.onWheel, {\n passive: false,\n });\n }\n\n ngOnDestroy(): void {\n this.elementRef.nativeElement.removeEventListener('wheel', this.onWheel);\n }\n\n //#endregion\n\n //#region wheel\n\n private readonly onWheel = (event: WheelEvent): void => {\n const delta =\n Math.abs(event.deltaX) > Math.abs(event.deltaY)\n ? event.deltaX\n : event.deltaY;\n\n if (!delta) {\n return;\n }\n\n this.wheelAccumulator += delta;\n\n if (Math.abs(this.wheelAccumulator) < this.wheelThreshold) {\n return;\n }\n\n const direction = this.wheelAccumulator > 0 ? 'after' : 'before';\n\n this.wheelAccumulator = 0;\n\n // @ts-ignore\n const pagination = this.elementRef.nativeElement.querySelector<HTMLElement>(\n `.mat-mdc-tab-header-pagination-${direction}`,\n );\n\n if (!pagination) {\n return;\n }\n\n const disabled = pagination.classList.contains(\n 'mat-mdc-tab-header-pagination-disabled',\n );\n\n if (disabled) {\n return;\n }\n\n event.preventDefault();\n\n pagination.click();\n };\n\n //#endregion\n}\n","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels } from 'tnp-core/websql';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibMyOrganizationProjTs } from './my-organization-proj.ts.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibMyOrganizationProjTs } from './my-organization-proj.ts.pl-PL.i18n.data';;\nexport type LibOverride = CoreModels.DeepPartial<EnUsTraslationOverrideSrcLibMyOrganizationProjTs \n| PlPlTraslationOverrideSrcLibMyOrganizationProjTs>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY\n ","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n signal,\n} from '@angular/core';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { NavigationEnd, Route, Router, Routes } from '@angular/router';\nimport { filter } from 'rxjs';\n\nimport { TaonAdminRoute } from './taon-admin-layout.models';\n\nexport interface TaonAdminTabLevel {\n level: number;\n routes: Routes;\n\n /**\n * URL segments before routes from this tab level.\n *\n * Example:\n *\n * ['main', 'session', 'providers']\n */\n baseSegments: string[];\n}\n\n@Component({\n selector: 'taon-admin-page-tabs',\n standalone: true,\n imports: [MatTabsModule],\n templateUrl: './taon-admin-page-tabs.component.html',\n styleUrl: './taon-admin-page-tabs.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonAdminPageTabsComponent implements OnInit {\n @Input({ required: true })\n routes!: Routes;\n\n @Input()\n basePath = '';\n\n /**\n * Undefined:\n * normal primary routing\n *\n * \"admin\":\n * auxiliary admin outlet\n */\n @Input()\n outlet?: string;\n\n protected readonly levels = signal<TaonAdminTabLevel[]>([]);\n\n constructor(private readonly router: Router) {}\n\n async ngOnInit(): Promise<void> {\n await this.refresh();\n\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(async () => {\n await this.refresh();\n });\n }\n\n // ===========================================================================\n // UI\n // ===========================================================================\n\n protected label(route: Route): string {\n return route.data?.['menuItem'] ?? this.startCase(route.path ?? '');\n }\n\n protected isActive(level: TaonAdminTabLevel, route: Route): boolean {\n if (!route.path) {\n return false;\n }\n\n const expected = [...level.baseSegments, route.path];\n\n const current = this.currentOutletSegments();\n\n if (current.length < expected.length) {\n return false;\n }\n\n return expected.every((segment, index) => current[index] === segment);\n }\n\n protected async tabClicked(\n level: TaonAdminTabLevel,\n route: Route,\n ): Promise<void> {\n if (!route.path) {\n return;\n }\n\n await this.navigateTo([\n ...level.baseSegments.slice(this.basePathSegments.length),\n route.path,\n ]);\n }\n\n // ===========================================================================\n // NAVIGATION\n // ===========================================================================\n\n private outletBaseMatrixParams(): Record<string, string> {\n if (!this.outlet) {\n return {};\n }\n\n const tree = this.router.parseUrl(this.router.url);\n\n const outletGroup = tree.root.children[this.outlet];\n\n return {\n ...outletGroup?.segments[0]?.parameters,\n };\n }\n\n private async navigateTo(routeSegments: string[]): Promise<boolean> {\n const segments = [...this.basePathSegments, ...routeSegments];\n\n /**\n * Auxiliary / named outlet.\n *\n * Example:\n *\n * /products/42(admin:main/session/providers/settings)\n */\n if (this.outlet) {\n const [firstSegment, ...remainingSegments] = segments;\n\n if (!firstSegment) {\n return false;\n }\n\n const matrixParams = this.outletBaseMatrixParams();\n\n return this.router.navigate([\n {\n outlets: {\n [this.outlet]: [\n firstSegment,\n\n /**\n * Angular interprets an object following\n * a segment as matrix parameters.\n */\n matrixParams,\n\n ...remainingSegments,\n ],\n },\n },\n ]);\n }\n\n /**\n * Normal primary outlet.\n *\n * Example:\n *\n * /main/session/providers/settings\n */\n return this.router.navigate(['/', ...segments]);\n }\n\n // ===========================================================================\n // BUILD TAB LEVELS\n // ===========================================================================\n\n private async refresh(): Promise<void> {\n const current = this.currentOutletSegments();\n\n const base = this.basePathSegments;\n\n /**\n * Example:\n *\n * current:\n * main/session/providers/settings\n *\n * base:\n * main\n *\n * relative:\n * session/providers/settings\n */\n const relative = current.slice(base.length);\n\n const levels: TaonAdminTabLevel[] = [];\n\n await this.walk(this.routes, relative, base, 1, levels);\n\n /**\n * Levels:\n *\n * 1 -> aside expansion panel\n * 2 -> aside item\n * 3+ -> tabs\n */\n this.levels.set(levels.filter(level => level.level >= 3));\n }\n\n private async walk(\n routes: Routes,\n remainingUrl: string[],\n baseSegments: string[],\n level: number,\n result: TaonAdminTabLevel[],\n ): Promise<void> {\n /**\n * Important:\n *\n * Taon lazy route files commonly look like:\n *\n * [\n * {\n * path: '',\n * component: SomeContainer,\n * children: [...]\n * }\n * ]\n *\n * path:'' is structural and DOES NOT represent\n * another navigation level.\n */\n routes = this.unwrapEmptyPathRoutes(routes);\n\n const visibleRoutes = this.navigationRoutes(routes);\n\n /**\n * Level 3+ becomes tabs.\n */\n if (level >= 3 && visibleRoutes.length > 0) {\n result.push({\n level,\n routes: visibleRoutes,\n baseSegments,\n });\n }\n\n const currentSegment = remainingUrl[0];\n\n if (!currentSegment) {\n return;\n }\n\n const activeRoute = routes.find(route => route.path === currentSegment);\n\n if (!activeRoute) {\n return;\n }\n\n let children = await this.loadChildren(activeRoute);\n\n children = this.unwrapEmptyPathRoutes(children);\n\n if (!children.length) {\n return;\n }\n\n await this.walk(\n children,\n remainingUrl.slice(1),\n [...baseSegments, currentSegment],\n level + 1,\n result,\n );\n }\n\n // ===========================================================================\n // LAZY ROUTES\n // ===========================================================================\n\n private async loadChildren(route: Route): Promise<Routes> {\n if (route.children) {\n return route.children;\n }\n\n const adminRoute = route as TaonAdminRoute;\n\n if (adminRoute.loadAdminChildren) {\n return await adminRoute.loadAdminChildren();\n }\n\n return [];\n }\n\n /**\n * Removes transparent path:'' containers.\n *\n * Example:\n *\n * [\n * {\n * path: '',\n * component: ProvidersComponent,\n * children: [\n * { path: 'info' },\n * { path: 'items' },\n * ],\n * },\n * ]\n *\n * becomes:\n *\n * [\n * { path: 'info' },\n * { path: 'items' },\n * ]\n */\n private unwrapEmptyPathRoutes(routes: Routes): Routes {\n const result: Routes = [];\n\n for (const route of routes) {\n if (route.path === '' && route.children) {\n result.push(...this.unwrapEmptyPathRoutes(route.children));\n\n continue;\n }\n\n result.push(route);\n }\n\n return result;\n }\n\n private navigationRoutes(routes: Routes): Routes {\n return routes.filter(\n route =>\n !!route.path &&\n route.redirectTo === undefined &&\n !route.data?.['hideInNavigation'],\n );\n }\n\n // ===========================================================================\n // CURRENT ROUTE\n // ===========================================================================\n\n private currentOutletSegments(): string[] {\n const tree = this.router.parseUrl(this.router.url);\n\n const outletName = this.outlet || 'primary';\n\n const group = tree.root.children[outletName];\n\n if (!group) {\n return [];\n }\n\n return group.segments.map(segment => segment.path);\n }\n\n private get basePathSegments(): string[] {\n return this.basePath.split('/').filter(Boolean);\n }\n\n // ===========================================================================\n // HELPERS\n // ===========================================================================\n\n private startCase(value: string): string {\n return value\n .replace(/[-_]+/g, ' ')\n .replace(/\\b\\w/g, char => char.toUpperCase());\n }\n}\n","@if (levels().length) {\n <div class=\"shrink-0 border-b border-gray-200 bg-white\">\n @for (level of levels(); track level.level) {\n <nav\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\">\n @for (route of level.routes; track route.path) {\n <a\n mat-tab-link\n class=\"cursor-pointer\"\n [active]=\"isActive(level, route)\"\n (click)=\"tabClicked(level, route)\">\n {{ label(route) }}\n </a>\n }\n </nav>\n }\n </div>\n}\n\n<mat-tab-nav-panel #tabPanel> </mat-tab-nav-panel>\n","//#region imports\nimport { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n NavigationEnd,\n Route,\n Router,\n RouterLink,\n RouterOutlet,\n Routes,\n} from '@angular/router';\nimport { filter } from 'rxjs';\n\nimport { TaonAdminRoute } from './taon-admin-layout.models';\nimport { TaonAdminPageTabsComponent } from './taon-admin-page-tabs.component';\n//#endregion\n\n@Component({\n selector: 'taon-admin-layout',\n standalone: true,\n imports: [\n CommonModule,\n RouterOutlet,\n RouterLink,\n\n MatExpansionModule,\n MatIconModule,\n\n TaonAdminPageTabsComponent,\n ],\n templateUrl: './taon-admin-layout.component.html',\n styleUrls: ['./taon-admin-layout.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonAdminLayoutComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n //#region fields and getters\n\n @Input({ required: true })\n routes!: Routes;\n\n @Input()\n basePath = '';\n\n @Input()\n outlet: string;\n\n protected readonly layoutWidth = signal<number | undefined>(undefined);\n\n protected readonly layoutHeight = signal<number | undefined>(undefined);\n\n protected readonly level2Routes = signal(new Map<Route, Routes>());\n\n protected readonly currentUrl = signal('');\n\n protected readonly loadingRoutes = signal(new Set<Route>());\n\n protected readonly asideOpened = signal(window.innerWidth >= 768);\n\n private resizeObserver?: ResizeObserver;\n\n private mutationObserver?: MutationObserver;\n\n private resizing = false;\n\n private resizeStartX = 0;\n\n private resizeStartY = 0;\n\n private resizeStartWidth = 0;\n\n private resizeStartHeight = 0;\n\n private readonly minDialogWidth = 500;\n\n private readonly minDialogHeight = 350;\n\n protected get isDialogMode(): boolean {\n const windowElement = this.getWindowElement();\n\n if (!windowElement) {\n return false;\n }\n\n return !windowElement.classList.contains('taon-fullscreen');\n }\n\n private get basePathSegments(): string[] {\n return this.basePath.split('/').filter(Boolean);\n }\n\n protected get normalizedBasePath(): string {\n const value = '/' + this.basePath.split('/').filter(Boolean).join('/');\n\n return value === '/' ? '/' : value;\n }\n\n //#endregion\n\n //#region constructor\n\n constructor(\n private readonly router: Router,\n private readonly hostElement: ElementRef<HTMLElement>,\n ) {}\n\n //#endregion\n\n //#region lifecycle\n\n async ngOnInit(): Promise<void> {\n await this.loadCurrentLevel1Route();\n\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(async () => {\n await this.loadCurrentLevel1Route();\n });\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n const windowElement = this.getWindowElement();\n // console.log('[windowElement] should not be undefined', windowElement);\n this.updateLayoutSize();\n this.startWindowObservers();\n }, 500); // TODO QUICK_FIX\n }\n\n // private waitForWindowElement(\n // callback: (windowElement: HTMLElement) => void,\n // ): void {\n // const check = () => {\n // console.log('Waiting for window element...');\n // const windowElement = this.getWindowElement();\n\n // if (windowElement) {\n // callback(windowElement);\n // return;\n // }\n\n // requestAnimationFrame(check);\n // };\n\n // check();\n // }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n this.mutationObserver?.disconnect();\n\n window.removeEventListener('pointermove', this.resize);\n\n window.removeEventListener('pointerup', this.stopResize);\n }\n\n //#endregion\n\n //#region window / layout\n\n private getWindowElement(): HTMLElement | undefined {\n return (\n document.querySelector<HTMLElement>('.taon-window') ??\n document.querySelector<HTMLElement>('.taon-window-full') ??\n undefined\n );\n }\n\n private getDraggablePanelElement(): HTMLElement | undefined {\n return (\n document.querySelector<HTMLElement>('.taon-draggable-panel') ?? undefined\n );\n }\n\n private startWindowObservers(): void {\n this.resizeObserver?.disconnect();\n this.mutationObserver?.disconnect();\n\n const host = this.hostElement.nativeElement;\n\n const windowElement = this.getWindowElement();\n\n // console.log('WINDOW', this.getWindowElement());\n\n // console.log('PANEL', this.getDraggablePanelElement());\n\n // ================================================================\n // SIZE CHANGES\n // ================================================================\n\n const observedElement = windowElement ?? host.parentElement;\n\n if (observedElement) {\n this.resizeObserver = new ResizeObserver(() => {\n this.updateLayoutSize();\n });\n\n this.resizeObserver.observe(observedElement);\n }\n\n // ================================================================\n // DIALOG <-> FULLSCREEN STATE CHANGES\n // ================================================================\n\n if (windowElement) {\n this.mutationObserver = new MutationObserver(mutations => {\n const classChanged = mutations.some(\n mutation =>\n mutation.type === 'attributes' &&\n mutation.attributeName === 'class',\n );\n // console.log('Class changed:', classChanged);\n\n if (!classChanged) {\n return;\n }\n\n this.windowModeChanged(windowElement);\n });\n\n this.mutationObserver.observe(windowElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n }\n }\n\n private windowModeChanged(windowElement: HTMLElement): void {\n const fullscreen = windowElement.classList.contains('taon-fullscreen');\n\n if (fullscreen) {\n this.clearWindowResize(windowElement);\n }\n\n requestAnimationFrame(() => {\n this.updateLayoutSize();\n });\n }\n\n private clearWindowResize(windowElement: HTMLElement): void {\n windowElement.style.removeProperty('width');\n\n windowElement.style.removeProperty('height');\n }\n\n @HostListener('window:resize')\n protected windowResized(): void {\n this.updateLayoutSize();\n }\n\n private updateLayoutSize(): void {\n const host = this.hostElement.nativeElement;\n\n const hostRect = host.getBoundingClientRect();\n\n const windowElement = this.getWindowElement();\n\n const dialogMode =\n !!windowElement && !windowElement.classList.contains('taon-fullscreen');\n\n // ================================================================\n // NORMAL / FULLSCREEN\n // ================================================================\n\n if (!dialogMode) {\n this.layoutWidth.set(Math.floor(hostRect.width));\n\n this.layoutHeight.set(\n Math.max(0, Math.floor(window.innerHeight - hostRect.top)),\n );\n\n return;\n }\n\n // ================================================================\n // DIALOG\n // ================================================================\n\n const windowRect = windowElement.getBoundingClientRect();\n\n this.layoutWidth.set(\n Math.max(0, Math.floor(windowRect.right - hostRect.left)),\n );\n\n this.layoutHeight.set(\n Math.max(0, Math.floor(windowRect.bottom - hostRect.top)),\n );\n }\n\n //#endregion\n\n //#region dialog resizing\n\n protected startResize(event: PointerEvent): void {\n if (!this.isDialogMode) {\n return;\n }\n\n const windowElement = this.getWindowElement();\n\n if (!windowElement) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const windowRect = windowElement.getBoundingClientRect();\n\n this.resizing = true;\n\n this.resizeStartX = event.clientX;\n\n this.resizeStartY = event.clientY;\n\n this.resizeStartWidth = windowRect.width;\n\n this.resizeStartHeight = windowRect.height;\n\n window.addEventListener('pointermove', this.resize);\n\n window.addEventListener('pointerup', this.stopResize);\n }\n\n private readonly resize = (event: PointerEvent): void => {\n if (!this.resizing) {\n return;\n }\n\n const windowElement = this.getWindowElement();\n\n if (!windowElement) {\n return;\n }\n\n const windowRect = windowElement.getBoundingClientRect();\n\n const deltaX = event.clientX - this.resizeStartX;\n\n const deltaY = event.clientY - this.resizeStartY;\n\n const maxWidth = window.innerWidth - windowRect.left;\n\n const maxHeight = window.innerHeight - windowRect.top;\n\n const width = Math.min(\n maxWidth,\n Math.max(this.minDialogWidth, this.resizeStartWidth + deltaX),\n );\n\n const height = Math.min(\n maxHeight,\n Math.max(this.minDialogHeight, this.resizeStartHeight + deltaY),\n );\n\n windowElement.style.width = `${width}px`;\n\n windowElement.style.height = `${height}px`;\n };\n\n private readonly stopResize = (): void => {\n if (!this.resizing) {\n return;\n }\n\n this.resizing = false;\n\n window.removeEventListener('pointermove', this.resize);\n\n window.removeEventListener('pointerup', this.stopResize);\n };\n\n //#endregion\n\n //#region aside\n\n protected toggleAside(): void {\n this.asideOpened.update(opened => !opened);\n }\n\n protected closeAside(): void {\n this.asideOpened.set(false);\n }\n\n private closeAsideOnMobile(): void {\n if (window.innerWidth < 768) {\n this.closeAside();\n }\n }\n\n //#endregion\n\n //#region level 1\n\n protected async level1Clicked(route: Route): Promise<void> {\n if (!route.path) {\n return;\n }\n\n await this.navigateTo([route.path]);\n\n await this.ensureLevel2Loaded(route);\n\n if (!this.isExpandable(route)) {\n this.closeAsideOnMobile();\n }\n }\n\n protected async panelExpanded(\n route: Route,\n expanded: boolean,\n ): Promise<void> {\n if (!expanded) {\n return;\n }\n\n await this.ensureLevel2Loaded(route);\n }\n\n protected isLevel1Active(route: Route): boolean {\n if (!route.path) {\n return false;\n }\n\n return this.isPathActive([route.path]);\n }\n\n //#endregion\n\n //#region level 2\n\n protected async level2Clicked(level1: Route, level2: Route): Promise<void> {\n if (!level1.path || !level2.path) {\n return;\n }\n\n await this.navigateTo([level1.path, level2.path]);\n\n this.closeAsideOnMobile();\n }\n\n protected getLevel2Routes(route: Route): Routes {\n return this.level2Routes().get(route) ?? [];\n }\n\n protected isLevel2Active(level1: Route, level2: Route): boolean {\n if (!level1.path || !level2.path) {\n return false;\n }\n\n return this.isPathActive([level1.path, level2.path]);\n }\n\n protected level2Link(level1: Route, level2: Route): string[] {\n return [this.normalizedBasePath, level1.path!, level2.path!];\n }\n\n //#endregion\n\n //#region navigation\n\n private outletBaseMatrixParams(): Record<string, string> {\n if (!this.outlet) {\n return {};\n }\n\n const tree = this.router.parseUrl(this.router.url);\n\n const outletGroup = tree.root.children[this.outlet];\n\n return {\n ...outletGroup?.segments[0]?.parameters,\n };\n }\n\n private async navigateTo(routeSegments: string[]): Promise<boolean> {\n const segments = [...this.basePathSegments, ...routeSegments];\n\n if (this.outlet) {\n const [firstSegment, ...remainingSegments] = segments;\n\n if (!firstSegment) {\n return false;\n }\n\n const matrixParams = this.outletBaseMatrixParams();\n\n return this.router.navigate([\n {\n outlets: {\n [this.outlet]: [firstSegment, matrixParams, ...remainingSegments],\n },\n },\n ]);\n }\n\n return this.router.navigate(['/', ...segments]);\n }\n\n //#endregion\n\n //#region route loading\n\n private async ensureLevel2Loaded(level1: Route): Promise<void> {\n if (this.level2Routes().has(level1)) {\n return;\n }\n\n if (this.loadingRoutes().has(level1)) {\n return;\n }\n\n this.setLoading(level1, true);\n\n try {\n const lazyRoutes = await this.loadRouteChildren(level1);\n\n const level2 = this.unwrapEmptyPathRoutes(lazyRoutes);\n\n const map = new Map(this.level2Routes());\n\n map.set(level1, level2);\n\n this.level2Routes.set(map);\n } finally {\n this.setLoading(level1, false);\n }\n }\n\n private async loadRouteChildren(route: Route): Promise<Routes> {\n if (route.children) {\n return route.children;\n }\n\n const adminRoute = route as TaonAdminRoute;\n\n if (adminRoute.loadAdminChildren) {\n return await adminRoute.loadAdminChildren();\n }\n\n return [];\n }\n\n private unwrapEmptyPathRoutes(routes: Routes): Routes {\n const result: Routes = [];\n\n for (const route of routes) {\n if (route.path === '' && route.children) {\n result.push(...this.unwrapEmptyPathRoutes(route.children));\n\n continue;\n }\n\n if (route.redirectTo !== undefined || route.data?.['hideInNavigation']) {\n continue;\n }\n\n result.push(route);\n }\n\n return result;\n }\n\n //#endregion\n\n //#region direct url support\n\n private async loadCurrentLevel1Route(): Promise<void> {\n const relativeSegments = this.currentRelativeSegments();\n\n const level1Path = relativeSegments[0];\n\n if (!level1Path) {\n return;\n }\n\n const level1 = this.routes.find(route => route.path === level1Path);\n\n if (level1) {\n await this.ensureLevel2Loaded(level1);\n }\n }\n\n //#endregion\n\n //#region helpers\n\n protected label(route: Route): string {\n return route.data?.['menuItem'] ?? this.startCase(route.path ?? '');\n }\n\n protected color(route: Route): string {\n return route.data?.['color'];\n }\n\n protected icon(route: Route): string | undefined {\n return route.data?.['icon'];\n }\n\n protected isLoading(route: Route): boolean {\n return this.loadingRoutes().has(route);\n }\n\n protected isExpandable(route: Route): boolean {\n return route.data?.['expandable'] !== false;\n }\n\n private isPathActive(routeSegments: string[]): boolean {\n const current = this.currentRelativeSegments();\n\n if (current.length < routeSegments.length) {\n return false;\n }\n\n return routeSegments.every((segment, index) => current[index] === segment);\n }\n\n private currentRelativeSegments(): string[] {\n const current = this.currentOutletSegments();\n\n return current.slice(this.basePathSegments.length);\n }\n\n private currentOutletSegments(): string[] {\n const tree = this.router.parseUrl(this.router.url);\n\n const outletName = this.outlet || 'primary';\n\n const group = tree.root.children[outletName];\n\n if (!group) {\n return [];\n }\n\n return group.segments.map(segment => segment.path);\n }\n\n private setLoading(route: Route, loading: boolean): void {\n const set = new Set(this.loadingRoutes());\n\n if (loading) {\n set.add(route);\n } else {\n set.delete(route);\n }\n\n this.loadingRoutes.set(set);\n }\n\n private startCase(value: string): string {\n return value\n .replace(/[-_]+/g, ' ')\n .replace(/\\b\\w/g, char => char.toUpperCase());\n }\n\n //#endregion\n}\n","<div\n #layout\n class=\"admin-layout\"\n [class.admin-layout-dialog]=\"isDialogMode\"\n [style.width.px]=\"layoutWidth() || null\"\n [style.height.px]=\"layoutHeight() || null\">\n <!-- ============================================================= -->\n <!-- HEADER -->\n <!-- ============================================================= -->\n\n <header class=\"admin-header\">\n <button\n mat-icon-button\n type=\"button\"\n aria-label=\"Toggle admin menu\"\n class=\"admin-menu-button\"\n (click)=\"toggleAside()\">\n <mat-icon>menu</mat-icon>\n </button>\n\n <div class=\"admin-header-content\">\n <ng-content select=\"[header]\" />\n </div>\n </header>\n\n <!-- ============================================================= -->\n <!-- BODY -->\n <!-- ============================================================= -->\n\n <div class=\"admin-body\">\n <!-- =========================================================== -->\n <!-- MOBILE BACKDROP -->\n <!-- =========================================================== -->\n\n @if (asideOpened()) {\n <div\n class=\"admin-aside-backdrop\"\n (click)=\"closeAside()\"></div>\n }\n\n <!-- =========================================================== -->\n <!-- ASIDE -->\n <!-- =========================================================== -->\n\n <aside\n class=\"admin-aside\"\n [class.admin-aside-open]=\"asideOpened()\">\n <!-- ========================================================= -->\n <!-- SCROLLABLE ASIDE CONTENT -->\n <!-- ========================================================= -->\n\n <div class=\"admin-aside-content\">\n <mat-accordion class=\"admin-menu\">\n @for (level1 of routes; track level1.path) {\n @if (isExpandable(level1)) {\n <mat-expansion-panel\n [expanded]=\"isLevel1Active(level1)\"\n (expandedChange)=\"panelExpanded(level1, $event)\">\n <mat-expansion-panel-header (click)=\"level1Clicked(level1)\">\n <mat-panel-title>\n <div class=\"admin-menu-item\">\n @if (icon(level1)) {\n <mat-icon\n [ngStyle]=\"{\n color: color(level1),\n }\">\n {{ icon(level1) }}\n </mat-icon>\n }\n\n <span\n [class.font-semibold]=\"isLevel1Active(level1)\"\n [ngStyle]=\"{\n color: color(level1),\n }\">\n {{ label(level1) }}\n </span>\n </div>\n </mat-panel-title>\n </mat-expansion-panel-header>\n\n <div class=\"admin-level2\">\n @if (isLoading(level1)) {\n <div class=\"admin-loading\">Loading...</div>\n } @else {\n @for (\n level2 of getLevel2Routes(level1);\n track level2.path\n ) {\n <a\n class=\"admin-level2-item\"\n [class.admin-level2-item-active]=\"\n isLevel2Active(level1, level2)\n \"\n (click)=\"level2Clicked(level1, level2)\">\n @if (icon(level2)) {\n <mat-icon\n [ngStyle]=\"{\n color: color(level2),\n }\">\n {{ icon(level2) }}\n </mat-icon>\n }\n\n <span\n [ngStyle]=\"{\n color: color(level2),\n }\">\n {{ label(level2) }}\n </span>\n </a>\n }\n }\n </div>\n </mat-expansion-panel>\n } @else {\n <a\n class=\"admin-level1-item\"\n [class.admin-level1-item-active]=\"isLevel1Active(level1)\"\n (click)=\"level1Clicked(level1)\">\n @if (icon(level1)) {\n <mat-icon\n [ngStyle]=\"{\n color: color(level1),\n }\">\n {{ icon(level1) }}\n </mat-icon>\n }\n\n <span\n [ngStyle]=\"{\n color: color(level1),\n }\">\n {{ label(level1) }}\n </span>\n </a>\n }\n }\n </mat-accordion>\n </div>\n\n <!-- ========================================================= -->\n <!-- ASIDE FOOTER -->\n <!-- ========================================================= -->\n\n <footer class=\"admin-aside-footer\">\n <ng-content select=\"[asideFooter]\" />\n </footer>\n </aside>\n\n <!-- =========================================================== -->\n <!-- MAIN -->\n <!-- =========================================================== -->\n\n <main class=\"admin-main\">\n <!-- ========================================================= -->\n <!-- LEVEL 3+ TABS -->\n <!-- ========================================================= -->\n\n <taon-admin-page-tabs\n class=\"admin-tabs\"\n [routes]=\"routes\"\n [basePath]=\"basePath\"\n [outlet]=\"outlet\" />\n\n <!-- ========================================================= -->\n <!-- SCROLLABLE CONTENT -->\n <!-- ========================================================= -->\n\n <div class=\"admin-content\">\n <router-outlet />\n </div>\n\n <!-- ========================================================= -->\n <!-- CONTENT FOOTER -->\n <!-- ========================================================= -->\n\n <footer class=\"admin-content-footer\">\n <ng-content select=\"[contentFooter]\" />\n </footer>\n </main>\n </div>\n\n <!-- ============================================================= -->\n <!-- DIALOG RESIZE HANDLE -->\n <!-- ============================================================= -->\n\n @if (isDialogMode) {\n <div\n class=\"admin-resize-handle\"\n (pointerdown)=\"startResize($event)\"></div>\n }\n</div>\n","import { Route } from '@angular/router';\n\nexport interface TaonAdminRoute extends Route {\n /**\n * Used only by TaonAdminLayout to discover lazy navigation children.\n *\n * This loads route metadata, NOT page components.\n */\n loadAdminChildren?: () => Promise<TaonAdminRoutes>;\n}\n\nexport type TaonAdminRoutes = TaonAdminRoute[];\n\ntype MaterialIcon =\n | 'manage_accounts'\n | 'dashboard'\n | 'home'\n | 'settings'\n | 'admin_panel_settings'\n | 'person'\n | 'people'\n | 'group'\n | 'groups'\n | 'account_circle'\n | 'login'\n | 'logout'\n | 'lock'\n | 'lock_open'\n | 'security'\n | 'key'\n | 'verified_user'\n | 'shield'\n | 'email'\n | 'mail'\n | 'inbox'\n | 'send'\n | 'campaign'\n | 'notifications'\n | 'article'\n | 'description'\n | 'edit'\n | 'add'\n | 'delete'\n | 'delete_forever'\n | 'restore_from_trash'\n | 'content_copy'\n | 'save'\n | 'search'\n | 'filter_list'\n | 'refresh'\n | 'sync'\n | 'more_vert'\n | 'more_horiz'\n | 'menu'\n | 'close'\n | 'check'\n | 'done'\n | 'warning'\n | 'error'\n | 'info'\n | 'help'\n | 'visibility'\n | 'visibility_off'\n | 'folder'\n | 'folder_open'\n | 'upload'\n | 'download'\n | 'cloud'\n | 'cloud_upload'\n | 'storage'\n | 'database'\n | 'dns'\n | 'code'\n | 'terminal'\n | 'api'\n | 'extension'\n | 'web'\n | 'language'\n | 'public'\n | 'link'\n | 'shopping_cart'\n | 'shopping_bag'\n | 'store'\n | 'inventory'\n | 'inventory_2'\n | 'payments'\n | 'payment'\n | 'credit_card'\n | 'receipt'\n | 'receipt_long'\n | 'sell'\n | 'local_shipping'\n | 'analytics'\n | 'bar_chart'\n | 'pie_chart'\n | 'query_stats'\n | 'monitoring'\n | 'trending_up'\n | 'history'\n | 'schedule'\n | 'calendar_month'\n | 'build'\n | 'tune'\n | 'apps'\n | 'widgets'\n | 'category'\n | 'supervisor_account'\n | 'approval'\n | 'family_group'\n | 'recent_actors'\n | 'perm_media'\n\nexport interface TaonAdminRouteOptions {\n path: string;\n color?: string;\n loader: () => Promise<TaonAdminRoutes>;\n\n menuItem?: string;\n\n icon?: MaterialIcon;\n\n expandable?: boolean;\n\n hideInNavigation?: boolean;\n}\n\nexport const TaonBaselineBackofficeOutletName = 'admin';\n\nexport function adminLazyRoute(options: TaonAdminRouteOptions): TaonAdminRoute {\n const { path, loader, menuItem, icon, color, expandable, hideInNavigation } =\n options;\n\n return {\n path,\n\n data: {\n menuItem,\n color,\n icon,\n expandable,\n hideInNavigation,\n },\n\n loadChildren: loader,\n loadAdminChildren: loader,\n };\n}\n","import { Component, ViewChild } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\n@Component({\n template: '',\n})\nexport abstract class TaonBaseAdminLayoutPage {\n @ViewChild(RouterOutlet)\n routerOutlet!: RouterOutlet;\n\n get hasActiveChildRoute(): boolean {\n return this.routerOutlet?.isActivated ?? false;\n }\n}\n","//#region imports\nimport { Component, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\n//#endregion\n\nexport interface TaonErrorDetailsDialogData {\n message: string;\n details: string;\n}\n\ntype TaonEditor = 'vscode' | 'vscodium';\n\ninterface TaonStackTraceLine {\n text: string;\n file?: string;\n line?: number;\n column?: number;\n}\n\n@Component({\n selector: 'taon-error-details-dialog',\n standalone: true,\n imports: [MatDialogModule, MatButtonModule, MatButtonToggleModule],\n templateUrl: './taon-error-details-dialog.component.html',\n styleUrls: ['./taon-error-details-dialog.component.scss'],\n})\nexport class TaonErrorDetailsDialogComponent {\n //#region injections\n readonly data = inject<TaonErrorDetailsDialogData>(MAT_DIALOG_DATA);\n //#endregion\n\n //#region constants\n private readonly editorStorageKey = 'taon-error-details-editor';\n //#endregion\n\n //#region state\n editor: TaonEditor = this.loadEditor();\n\n readonly stackLines = this.parseStackTrace(this.data.details);\n //#endregion\n\n //#region editor\n setEditor(editor: TaonEditor): void {\n this.editor = editor;\n\n localStorage.setItem(this.editorStorageKey, editor);\n }\n\n private loadEditor(): TaonEditor {\n const editor = localStorage.getItem(this.editorStorageKey);\n\n if (editor === 'vscode' || editor === 'vscodium') {\n return editor;\n }\n\n return 'vscode';\n }\n //#endregion\n\n //#region stack trace\n private parseStackTrace(stack: string): TaonStackTraceLine[] {\n return stack\n .split('\\n')\n .map(text => text.trimEnd())\n .filter(text => text.trim().length > 0)\n .map(text => this.parseStackTraceLine(text));\n }\n\n private parseStackTraceLine(text: string): TaonStackTraceLine {\n /**\n * Matches:\n *\n * /Users/test/file.ts:10:20\n *\n * C:\\projects\\test\\file.ts:10:20\n *\n * at something (/Users/test/file.ts:10:20)\n */\n const match = text.match(/((?:[A-Za-z]:[\\\\/]|\\/)[^()\\n]+?):(\\d+):(\\d+)/);\n\n if (!match) {\n return {\n text,\n };\n }\n\n return {\n text,\n file: match[1],\n line: Number(match[2]),\n column: Number(match[3]),\n };\n }\n //#endregion\n\n //#region open editor\n openStackLine(stackLine: TaonStackTraceLine): void {\n if (!stackLine.file || !stackLine.line) {\n return;\n }\n\n const url = this.createEditorUrl(\n stackLine.file,\n stackLine.line,\n stackLine.column,\n );\n\n window.location.href = url;\n }\n\n private createEditorUrl(file: string, line: number, column?: number): string {\n const protocol = this.editor === 'vscodium' ? 'vscodium' : 'vscode';\n\n const location = [file, line, column]\n .filter(value => value !== undefined)\n .join(':');\n\n return `${protocol}://file${location}`;\n }\n //#endregion\n}\n","<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","import { Component, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { HotToastRef } from '@ngneat/hot-toast';\n\nimport { TaonErrorDetailsDialogComponent } from './taon-error-details-dialog.component';\n\nexport interface TaonErrorToastData {\n title: string;\n details: string;\n}\n\n@Component({\n selector: 'taon-error-toast',\n standalone: true,\n template: `\n <div\n class=\"taon-error-toast\"\n (click)=\"showDetails()\">\n <div>{{ data.title }}</div>\n\n <small> Click for details </small>\n </div>\n `,\n styles: [\n `\n .taon-error-toast {\n cursor: pointer;\n }\n\n small {\n display: block;\n margin-top: 4px;\n opacity: 0.7;\n }\n `,\n ],\n})\nexport class TaonErrorToastComponent {\n private readonly toastRef =\n inject<HotToastRef<TaonErrorToastData>>(HotToastRef);\n\n private readonly dialog = inject(MatDialog);\n\n readonly data = this.toastRef.data;\n\n showDetails(): void {\n this.dialog.open(TaonErrorDetailsDialogComponent, {\n width: '800px',\n maxWidth: '95vw',\n data: {\n message: this.data.title,\n details: this.data.details,\n },\n });\n\n this.toastRef.close();\n }\n}\n","//#region imports\nimport { inject, Injectable } from '@angular/core';\nimport { HotToastService } from '@ngneat/hot-toast';\n\nimport {\n TaonNotificationInput,\n TaonNotificationOptions,\n} from './taon-backoffice-notifications.models';\nimport {\n TaonErrorToastComponent,\n TaonErrorToastData,\n} from './taon-error-toast.component';\n//#endregion\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TaonBackofficeNotificationsService {\n //#region injections\n private readonly toast = inject(HotToastService);\n //#endregion\n\n //#region private methods\n private normalize(input: TaonNotificationInput): TaonNotificationOptions {\n return typeof input === 'string' ? { title: input } : input;\n }\n //#endregion\n\n //#region notifications\n success(input: TaonNotificationInput) {\n const { title } = this.normalize(input);\n\n return this.toast.success(title);\n }\n\n error(input: TaonNotificationInput) {\n const { title, details } = this.normalize(input);\n\n // Normal error - exactly as before\n if (!details) {\n return this.toast.error(title);\n }\n\n // Error with clickable details\n return this.toast.error<TaonErrorToastData>(TaonErrorToastComponent, {\n data: {\n title,\n details,\n },\n });\n }\n\n warn(input: TaonNotificationInput) {\n const { title } = this.normalize(input);\n\n return this.toast.warning(title);\n }\n\n info(input: TaonNotificationInput) {\n const { title } = this.normalize(input);\n\n return this.toast.info(title);\n }\n //#endregion\n}\n","//#region imports\nimport { Component, DestroyRef, inject, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Translation } from '@taon-dev/i18n/websql';\nimport {\n HttpResponseError,\n Resource,\n RestErrorResponseWrapper,\n} from 'ng2-rest/websql';\nimport { getHttpStatus, Taon, TaonAdminService } from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonBackofficeNotificationsService } from './taon-backoffice-notifications.service';\n//#endregion\n\nconst 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('./i18n/taon-backoffice-notifications.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-backoffice-notifications.component.ts.pl-PL.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-backoffice-notifications',\n standalone: true,\n templateUrl: './taon-backoffice-notifications.component.html',\n styleUrls: ['./taon-backoffice-notifications.component.scss'],\n})\nexport class TaonBackofficeNotificationsComponent {\n //#region injections\n t = t.for(this);\n\n private readonly notification = inject(TaonBackofficeNotificationsService);\n\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly taonAdminService = inject(TaonAdminService);\n\n @Input() filter: (\n err: HttpResponseError<RestErrorResponseWrapper>,\n ) => HttpResponseError<RestErrorResponseWrapper>;\n\n //#endregion\n\n //#region constructor\n constructor() {\n Resource.listenErrors\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((error: HttpResponseError<RestErrorResponseWrapper>) => {\n if (_.isFunction(this.filter)) {\n error = this.filter(error);\n }\n\n const jsonMsg = error?.body?.json;\n\n if (!jsonMsg?.message) {\n console.log({ error });\n }\n\n const statusCode = jsonMsg.status ?? error.statusCode;\n\n const httpStatus = getHttpStatus(statusCode, jsonMsg.message);\n if (this.taonAdminService.shouldSkipShowingError(httpStatus)) {\n console.log(\n `[@taon-dev/sudo] Skipping notificaiton for message \"${jsonMsg.message}\" (code=${statusCode})`,\n );\n } else {\n this.notification.error({\n title: jsonMsg?.message || t.gettext('Unknown error'),\n\n details: jsonMsg?.details,\n });\n }\n });\n }\n //#endregion\n}\n","<!-- <p>\n notyfications works!\n</p> -->\n","import { Component, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\n\nexport interface TaonConfirmDialogData {\n title: string;\n message?: string;\n confirmText?: string;\n cancelText?: string;\n}\n\n@Component({\n selector: 'taon-confirm-dialog',\n standalone: true,\n imports: [MatDialogModule, MatButtonModule],\n templateUrl: './taon-confirm-dialog.component.html',\n})\nexport class TaonConfirmDialogComponent {\n readonly data = inject<TaonConfirmDialogData>(MAT_DIALOG_DATA);\n\n private readonly dialogRef = inject(MatDialogRef<TaonConfirmDialogComponent>);\n\n cancel(): void {\n this.dialogRef.close(false);\n }\n\n confirm(): void {\n this.dialogRef.close(true);\n }\n}\n","<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","//#region imports\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MtxGridColumn, MtxGridModule } from '@ng-matero/extensions/grid';\nimport { getDefaultModel } from 'ng2-rest/websql';\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n catchError,\n debounceTime,\n distinctUntilChanged,\n finalize,\n from,\n map,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\nimport {\n Symbols as TaonSymbols,\n TaonBaseCrudController,\n TaonBaseEntity,\n TaonPaginationSort,\n TaonPaginationQuery,\n ClassHelpers,\n} from 'taon/websql';\nimport { _, json5 } from 'tnp-core/websql';\n//#endregion\n\nconst defaultColumns: MtxGridColumn[] = [\n {\n header: 'ID',\n field: 'id',\n },\n {\n header: 'NAME',\n field: 'name',\n },\n];\n\ntype SearchMode = 'simple' | 'advanced';\n\n@Component({\n selector: 'taon-datatable',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatPaginatorModule,\n MatSelectModule,\n\n MtxGridModule,\n ],\n templateUrl: './taon-datatable.component.html',\n styleUrls: ['./taon-datatable.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonDatatableComponent implements OnInit {\n //#region fields & getters\n private readonly cdr = inject(ChangeDetectorRef);\n\n private readonly destroyRef = inject(DestroyRef);\n\n //#region inputs\n\n @Input()\n pageNumber = 1;\n\n @Input()\n pageSize = 10;\n\n @Input()\n pageSizeOptions: number[] = [5, 10, 20, 50, 100];\n\n @Input()\n allowedColumns: string[] = [];\n\n @Input()\n expansionTemplate?: TemplateRef<any>;\n\n @Input()\n entityCrudController?: TaonBaseCrudController<any>;\n\n @Input()\n columns: MtxGridColumn[] = defaultColumns;\n\n @Input()\n hideSearch = false;\n\n @Input()\n hideAddButton = false;\n\n @Input()\n safe = false;\n\n @Input()\n searchMode: SearchMode = 'advanced';\n\n /**\n * Optional custom backend pagination method.\n */\n @Input()\n callQueryMethod?: string;\n\n private _data?: any[];\n\n @Input()\n set data(value: any[] | undefined | null) {\n this._data = value ?? undefined;\n\n if (this._data) {\n this.pageNumber = 1;\n this.reload();\n }\n }\n\n get data(): any[] | undefined {\n return this._data;\n }\n\n get offlineMode(): boolean {\n return this.data !== undefined;\n }\n\n //#endregion\n\n //#region outputs\n\n @Output()\n readonly expansionChange = new EventEmitter<any>();\n\n @Output()\n readonly addingItem = new EventEmitter<void>();\n\n //#endregion\n\n //#region fields\n\n rows: any[] = [];\n\n totalElements = 0;\n\n isLoading = false;\n\n expandable = false;\n\n @Input() showPaginator: boolean;\n\n advancedSearchOpened = false;\n\n searchValue = '';\n\n columnFilters: Record<string, string> = {};\n\n sort?: TaonPaginationSort;\n\n private readonly reload$ = new BehaviorSubject<void>(undefined);\n\n private readonly searchChange$ = new Subject<string>();\n\n readonly data$: Observable<any[]> = this.reload$.pipe(\n switchMap(() => this.loadData()),\n );\n\n expandedRows = new Set<any>();\n\n //#endregion\n\n //#region getters\n\n get entity(): typeof TaonBaseEntity | undefined {\n return this.entityCrudController?.entityClassResolveFn();\n }\n\n get filterableColumns(): MtxGridColumn[] {\n return this.columns.filter(column => Boolean(column.field));\n }\n\n //#endregion\n\n //#endregion\n\n //#region expansion\n onExpansionChange(event: any) {\n // console.log(event);\n // adapt this depending on exact MtxGrid event shape\n if (event.expanded) {\n this.expandedRows.add(event.data);\n } else {\n this.expandedRows.delete(event.data);\n }\n\n this.expansionChange.emit(event);\n }\n\n isExpanded(row: any): boolean {\n return this.expandedRows.has(row);\n }\n\n //#endregion\n\n //#region hooks\n\n ngOnInit(): void {\n this.prepareColumns();\n // console.log({ columns: this.columns });\n this.expandable = Boolean(this.expansionTemplate);\n\n this.showPaginator = _.isBoolean(this.showPaginator)\n ? this.showPaginator\n : Boolean(this.entity) || this.offlineMode;\n\n this.searchChange$\n .pipe(\n debounceTime(400),\n distinctUntilChanged(),\n tap(search => {\n this.searchValue = search;\n this.pageNumber = 1;\n this.reload();\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n\n this.data$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(rows => {\n this.rows = rows;\n this.cdr.markForCheck();\n });\n }\n\n //#endregion\n\n //#region search\n\n searchChanged(value: string): void {\n this.searchChange$.next(value);\n }\n\n clearSearch(): void {\n this.searchValue = '';\n this.columnFilters = {};\n this.pageNumber = 1;\n\n this.reload();\n }\n\n applyAdvancedFilters(): void {\n this.pageNumber = 1;\n this.reload();\n }\n\n toggleAdvancedSearch(): void {\n this.advancedSearchOpened = !this.advancedSearchOpened;\n }\n\n //#endregion\n\n //#region pagination\n\n getNextPage(event: PageEvent): void {\n this.pageNumber = event.pageIndex + 1;\n\n this.pageSize = event.pageSize;\n\n this.reload();\n }\n\n //#endregion\n\n //#region sorting\n\n sortChanged(event: any): void {\n const field = event?.active ?? event?.field;\n\n const direction = event?.direction ?? '';\n\n this.sort = {\n field,\n direction,\n };\n\n this.pageNumber = 1;\n\n this.reload();\n }\n\n //#endregion\n\n //#region data\n\n reload(): void {\n this.reload$.next();\n }\n\n private getFieldValue(row: any, field: string): unknown {\n return field.split('.').reduce((value, key) => value?.[key], row);\n }\n\n private loadOfflineData(): any[] {\n let rows = [...(this.data ?? [])];\n\n //#region global search\n\n const search = this.searchValue.trim().toLowerCase();\n\n if (search) {\n rows = rows.filter(row =>\n this.columns.some(column => {\n if (!column.field) {\n return false;\n }\n\n const value = this.getFieldValue(row, String(column.field));\n\n return String(value ?? '')\n .toLowerCase()\n .includes(search);\n }),\n );\n }\n\n //#endregion\n\n //#region column filters\n\n const filters = this.cleanFilters(this.columnFilters);\n\n for (const [field, filterValue] of Object.entries(filters)) {\n const normalizedFilter = filterValue.toLowerCase();\n\n rows = rows.filter(row => {\n const value = this.getFieldValue(row, field);\n\n return String(value ?? '')\n .toLowerCase()\n .includes(normalizedFilter);\n });\n }\n\n //#endregion\n\n //#region sorting\n\n if (this.sort?.field && this.sort.direction) {\n const field = String(this.sort.field);\n const direction = this.sort.direction === 'desc' ? -1 : 1;\n\n rows.sort((a, b) => {\n const aValue = this.getFieldValue(a, field);\n const bValue = this.getFieldValue(b, field);\n\n if (aValue === bValue) {\n return 0;\n }\n\n if (aValue === undefined || aValue === null) {\n return -1 * direction;\n }\n\n if (bValue === undefined || bValue === null) {\n return 1 * direction;\n }\n\n if (typeof aValue === 'number' && typeof bValue === 'number') {\n return (aValue - bValue) * direction;\n }\n\n return (\n String(aValue).localeCompare(String(bValue), undefined, {\n numeric: true,\n sensitivity: 'base',\n }) * direction\n );\n });\n }\n\n //#endregion\n\n //#region pagination\n\n this.totalElements = rows.length;\n\n const start = (this.pageNumber - 1) * this.pageSize;\n const end = start + this.pageSize;\n\n return this.prepareRows(rows.slice(start, end));\n\n //#endregion\n }\n\n private loadData(): Observable<any[]> {\n if (this.offlineMode) {\n return of(this.loadOfflineData());\n }\n\n if (!this.entity || !this.entityCrudController) {\n this.totalElements = 0;\n return of([]);\n }\n\n this.isLoading = true;\n this.cdr.markForCheck();\n\n const query: TaonPaginationQuery = {\n pageNumber: this.pageNumber,\n pageSize: this.pageSize,\n search: this.searchValue,\n filters: this.cleanFilters(this.columnFilters),\n sort: this.sort,\n callQueryMethod: this.callQueryMethod as any,\n };\n\n //#region handle info when not allowed method on controller level\n\n if (!this.safe && !this.entityCrudController.paginationQuery(query)) {\n throw new Error(\n `Please enable paginationQuery() method in your\n controller ${ClassHelpers.getName(this.entityCrudController)}\n\n @Controller({ allowedMethods: ['paginationQuery'] })\n class ${ClassHelpers.getName(this.entityCrudController)} ..\n `,\n );\n }\n\n if (this.safe && !this.entityCrudController.paginationQuerySafe(query)) {\n throw new Error(\n `Please enable paginationQuerySafe() method in your controller\n ${ClassHelpers.getName(this.entityCrudController)}\n\n @Controller({ allowedMethods: ['paginationQuerySafe'] })\n class ${ClassHelpers.getName(this.entityCrudController)} ..\n `,\n );\n }\n\n //#endregion\n\n return from(\n (this.safe\n ? this.entityCrudController.paginationQuerySafe\n : this.entityCrudController.paginationQuery)(query).request()\n .observable,\n ).pipe(\n tap(response => {\n this.totalElements =\n Number(response.headers.get(TaonSymbols.old.X_TOTAL_COUNT)) || 0;\n }),\n\n map(response => this.prepareRows(response.body.json)),\n\n catchError(error => {\n console.error(\n `[taon-datatable] Unable to load data from ` +\n `${ClassHelpers.getName(this.entityCrudController)} ${\n this.safe ? 'paginationQuerySafe' : 'paginationQuery'\n }`,\n error,\n );\n\n return of([]);\n }),\n\n finalize(() => {\n this.isLoading = false;\n this.cdr.markForCheck();\n }),\n );\n }\n\n //#endregion\n\n //#region helpers\n\n private cleanFilters(\n filters: Record<string, string>,\n ): Record<string, string> {\n return Object.fromEntries(\n Object.entries(filters)\n .filter(\n ([, value]) =>\n value !== undefined &&\n value !== null &&\n String(value).trim() !== '',\n )\n .map(([key, value]) => [key, String(value).trim()]),\n );\n }\n\n private prepareRows(rows: any[]): any[] {\n return rows.map(row => {\n // const result = {\n // ...row,\n // };\n\n // for (const key of Object.keys(result)) {\n // if (_.isObject(result[key])) {\n // result[key] = json5.stringify(result[key]);\n // }\n // }\n\n return row;\n });\n }\n\n private prepareColumns(): void {\n const entityClass = this.entity;\n\n if (!entityClass) {\n return;\n }\n\n const usingDefaultColumns = _.isEqual(this.columns, defaultColumns);\n\n if (!usingDefaultColumns) {\n return;\n }\n\n try {\n const props = Object.keys(getDefaultModel(entityClass as Function) || {});\n\n let columns = props\n .filter(prop =>\n this.allowedColumns.length > 0\n ? this.allowedColumns.includes(prop)\n : true,\n )\n .map(\n prop =>\n ({\n header: _.upperCase(prop),\n field: prop,\n }) as MtxGridColumn,\n );\n\n const extra = this.allowedColumns.filter(field => !props.includes(field));\n\n columns = [\n ...columns,\n ...extra.map(\n field =>\n ({\n header: _.upperCase(field),\n field,\n }) as MtxGridColumn,\n ),\n ];\n\n this.columns = columns;\n } catch (error) {\n console.error('[taon-datatable] Unable to generate columns', error);\n }\n }\n\n //#endregion\n}\n","<div class=\"flex w-full flex-col gap-3\">\n <!-- #region 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 <!-- #endregion -->\n\n <!-- #region 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 <!-- #endregion -->\n\n <!-- #region 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]=\"lazyExpansionTemplate\"\n [length]=\"totalElements\"\n [pageOnFront]=\"false\"\n [pageIndex]=\"pageNumber - 1\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showPaginator]=\"showPaginator\"\n (expansionChange)=\"onExpansionChange($event)\"\n (page)=\"getNextPage($event)\"\n (sortChange)=\"sortChanged($event)\">\n </mtx-grid>\n\n <ng-template\n #lazyExpansionTemplate\n let-row>\n @if (isExpanded(row)) {\n <ng-container\n [ngTemplateOutlet]=\"expansionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row }\">\n </ng-container>\n }\n </ng-template>\n </div>\n <!-- #endregion -->\n</div>\n","//#region imports\nimport { Routes } from '@angular/router';\nimport { adminLazyRoute } from '../index';\n//#endregion\n\nexport const TaonDatatableRoutes: Routes = [\n {\n path: '',\n loadComponent: () =>\n import('./taon-datatable.component').then(m => m.TaonDatatableComponent),\n\n children: [\n // adminLazyRoute({\n // path: 'dashboard',\n // menuItem: 'Dashboard',\n // icon: 'dashboard',\n // expandable: false,\n // loader: () =>\n // import('./anothermodule.routes').then(m => m.DashboardRoutes),\n // }),\n ],\n },\n];\n\n/**\n * By default exporting TaonDatatableRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonDatatableRoutes;","export enum TaonDraggableButtonPanelState {\n CLICKABLE_BUTTON = 'CLICKABLE_BUTTON',\n\n WINDOW = 'WINDOW',\n\n FULL_SCREEN_DRAGGABLE = 'FULL_SCREEN_DRAGGABLE',\n\n FULL_SCREEN_LOCKED = 'FULL_SCREEN_LOCKED',\n}\n\nexport namespace TaonDraggableButtonPanelModels {}\n","//#region imports\nimport { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, firstValueFrom, Subscription, take } from 'rxjs';\n\nimport { TaonDraggableButtonPanelState } from './taon-draggable-button-panel.models';\n//#endregion\n\n@Component({\n selector: 'taon-draggable-button-panel',\n standalone: true,\n imports: [\n CdkDrag,\n CdkDragHandle,\n NgIf,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n ],\n templateUrl: './taon-draggable-button-panel.component.html',\n styleUrls: ['./taon-draggable-button-panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonDraggableButtonPanelComponent implements OnInit, OnDestroy {\n readonly State = TaonDraggableButtonPanelState;\n\n @ViewChild(CdkDrag)\n private drag?: CdkDrag;\n\n @Input()\n basePath = '';\n\n @Input()\n buttonIcon = 'admin_panel_settings';\n\n @Input()\n title = 'Admin';\n\n /**\n * Named outlet containing this panel's application.\n *\n * Example:\n *\n * outlet=\"admin\"\n *\n * /products/42(admin:main;state=WINDOW/session/providers)\n */\n @Input()\n outlet?: string;\n\n /**\n * Matrix parameter used for persisting the panel state.\n */\n @Input()\n stateParamName = 'state';\n\n @Input()\n set state(state: TaonDraggableButtonPanelState) {\n this.currentState.set(state);\n }\n\n @Output()\n readonly stateChange = new EventEmitter<TaonDraggableButtonPanelState>();\n\n protected readonly forceFullScreen = signal(window.innerWidth < 900);\n\n private readonly resizeListener = (): void => {\n const wasForceFullScreen = this.forceFullScreen();\n const forceFullScreen = window.innerWidth < 900;\n\n this.forceFullScreen.set(forceFullScreen);\n\n // Desktop -> mobile: remove old CDK drag x/y transform.\n if (!wasForceFullScreen && forceFullScreen) {\n this.resetDragPosition();\n }\n };\n\n protected readonly currentState = signal(\n TaonDraggableButtonPanelState.CLICKABLE_BUTTON,\n );\n\n private routerSubscription?: Subscription;\n\n constructor(private readonly router: Router) {}\n\n async ngOnInit(): Promise<void> {\n window.addEventListener('resize', this.resizeListener);\n /**\n * IMPORTANT:\n *\n * The component may be created while Angular is still processing\n * the application's initial navigation.\n *\n * For example:\n *\n * / -> redirectTo: /app\n *\n * If we create:\n *\n * (admin:main)\n *\n * before that redirect finishes, the auxiliary outlet navigation\n * may effectively replace/interfere with the primary navigation,\n * producing:\n *\n * /(admin:main)\n *\n * instead of:\n *\n * /app(admin:main)\n */\n await this.waitForInitialNavigation();\n\n /**\n * Ensure the auxiliary outlet exists only AFTER the primary\n * application route has settled.\n */\n await this.ensureOutletBasePath();\n\n /**\n * The outlet may already contain persisted state, e.g.\n *\n * (admin:main;state=WINDOW/dashboard)\n */\n this.restoreStateFromUrl();\n\n /**\n * From this point on keep the component state synchronized\n * with subsequent router navigations.\n */\n this.routerSubscription = this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => {\n this.restoreStateFromUrl();\n });\n }\n\n ngOnDestroy(): void {\n window.removeEventListener('resize', this.resizeListener);\n this.routerSubscription?.unsubscribe();\n }\n\n protected toogleFullscreen(event: Event) {\n event.stopImmediatePropagation();\n event.stopPropagation();\n event.preventDefault();\n if (this.forceFullScreen()) {\n return;\n }\n if (this.currentState() === TaonDraggableButtonPanelState.WINDOW) {\n this.resetDragPosition();\n void this.setState(TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED);\n } else if (\n [\n TaonDraggableButtonPanelState.FULL_SCREEN_DRAGGABLE,\n TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED,\n ].includes(this.currentState())\n ) {\n this.resetDragPosition();\n void this.setState(TaonDraggableButtonPanelState.WINDOW);\n }\n }\n\n protected effectiveState(): TaonDraggableButtonPanelState {\n if (\n this.forceFullScreen() &&\n this.currentState() !== TaonDraggableButtonPanelState.CLICKABLE_BUTTON\n ) {\n return TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED;\n }\n\n return this.currentState();\n }\n\n // ===========================================================================\n // INITIAL ROUTING\n // ===========================================================================\n\n private async waitForInitialNavigation(): Promise<void> {\n /**\n * Router already completed at least one navigation.\n */\n if (this.router.navigated) {\n return;\n }\n\n /**\n * Wait until redirects/lazy routing/etc. belonging to the initial\n * navigation have settled.\n */\n await firstValueFrom(\n this.router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n take(1),\n ),\n );\n }\n\n private async ensureOutletBasePath(): Promise<void> {\n if (!this.outlet || !this.basePath) {\n return;\n }\n\n /**\n * IMPORTANT:\n *\n * Parse the URL only AFTER initial navigation has completed.\n *\n * At this point:\n *\n * /\n *\n * may already have become:\n *\n * /app\n */\n const tree = this.router.parseUrl(this.router.url);\n\n /**\n * Outlet already exists — preserve it exactly as it is.\n *\n * Examples:\n *\n * /app(admin:main)\n *\n * /app(admin:main;state=WINDOW/dashboard)\n */\n if (tree.root.children[this.outlet]) {\n return;\n }\n\n const baseSegments = this.basePath.split('/').filter(Boolean);\n\n if (!baseSegments.length) {\n return;\n }\n\n /**\n * Add the auxiliary outlet while preserving the current\n * primary route.\n *\n * Example:\n *\n * /app\n *\n * becomes:\n *\n * /app(admin:main)\n */\n await this.router.navigate(\n [\n {\n outlets: {\n [this.outlet]: baseSegments,\n },\n },\n ],\n {\n replaceUrl: true,\n },\n );\n }\n\n // ===========================================================================\n // STATE\n // ===========================================================================\n\n protected async setState(next: TaonDraggableButtonPanelState): Promise<void> {\n if (!this.isTransitionAllowed(next)) {\n return;\n }\n\n this.currentState.set(next);\n\n this.stateChange.emit(next);\n\n await this.saveStateToUrl(next);\n }\n\n protected open(): void {\n void this.setState(TaonDraggableButtonPanelState.WINDOW);\n }\n\n protected returnToButton(): void {\n void this.setState(TaonDraggableButtonPanelState.CLICKABLE_BUTTON);\n }\n\n protected windowMode(): void {\n void this.setState(TaonDraggableButtonPanelState.WINDOW);\n }\n\n protected fullScreenDraggable(): void {\n this.resetDragPosition();\n\n void this.setState(TaonDraggableButtonPanelState.FULL_SCREEN_DRAGGABLE);\n }\n\n protected lockFullScreen(): void {\n this.resetDragPosition();\n\n void this.setState(TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED);\n }\n\n protected isDraggingEnabled(): boolean {\n if (this.forceFullScreen()) {\n return false;\n }\n\n return (\n this.currentState() === TaonDraggableButtonPanelState.WINDOW ||\n this.currentState() ===\n TaonDraggableButtonPanelState.FULL_SCREEN_DRAGGABLE\n );\n }\n\n // ===========================================================================\n // URL STATE\n // ===========================================================================\n\n private restoreStateFromUrl(): void {\n if (!this.outlet) {\n return;\n }\n\n const tree = this.router.parseUrl(this.router.url);\n\n const outletGroup = tree.root.children[this.outlet];\n\n if (!outletGroup) {\n return;\n }\n\n /**\n * State is stored on the first auxiliary outlet segment:\n *\n * admin:\n *\n * main;state=WINDOW/dashboard\n * └────────────────┘\n */\n const rootSegment = outletGroup.segments[0];\n\n if (!rootSegment) {\n return;\n }\n\n const state = rootSegment.parameters[this.stateParamName];\n\n if (!this.isValidState(state)) {\n return;\n }\n\n /**\n * URL restoration should NOT go through the transition\n * state machine.\n *\n * A bookmarked/refreshed URL is authoritative.\n */\n this.currentState.set(state);\n\n /**\n * Fullscreen must never inherit an old CdkDrag transform.\n */\n if (\n state === TaonDraggableButtonPanelState.FULL_SCREEN_DRAGGABLE ||\n state === TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED\n ) {\n queueMicrotask(() => {\n this.resetDragPosition();\n });\n }\n }\n\n private async saveStateToUrl(\n state: TaonDraggableButtonPanelState,\n ): Promise<void> {\n if (!this.outlet) {\n return;\n }\n\n const tree = this.router.parseUrl(this.router.url);\n\n const outletGroup = tree.root.children[this.outlet];\n\n /**\n * The outlet might not yet exist.\n *\n * In that case there is nowhere sensible to attach\n * its matrix parameter.\n */\n if (!outletGroup || outletGroup.segments.length === 0) {\n return;\n }\n\n const rootSegment = outletGroup.segments[0];\n\n /**\n * Preserve any existing matrix parameters.\n */\n rootSegment.parameters = {\n ...rootSegment.parameters,\n\n [this.stateParamName]: state,\n };\n\n await this.router.navigateByUrl(tree, {\n replaceUrl: true,\n });\n }\n\n private isValidState(\n value: string | undefined,\n ): value is TaonDraggableButtonPanelState {\n return Object.values(TaonDraggableButtonPanelState).includes(\n value as TaonDraggableButtonPanelState,\n );\n }\n\n // ===========================================================================\n // DRAG\n // ===========================================================================\n\n private resetDragPosition(): void {\n this.drag?.reset();\n }\n\n // ===========================================================================\n // TRANSITIONS\n // ===========================================================================\n\n private isTransitionAllowed(next: TaonDraggableButtonPanelState): boolean {\n const current = this.currentState();\n\n const transitions: Record<\n TaonDraggableButtonPanelState,\n TaonDraggableButtonPanelState[]\n > = {\n [TaonDraggableButtonPanelState.CLICKABLE_BUTTON]: [\n TaonDraggableButtonPanelState.WINDOW,\n ],\n\n [TaonDraggableButtonPanelState.WINDOW]: [\n TaonDraggableButtonPanelState.CLICKABLE_BUTTON,\n TaonDraggableButtonPanelState.FULL_SCREEN_DRAGGABLE,\n TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED,\n ],\n\n [TaonDraggableButtonPanelState.FULL_SCREEN_DRAGGABLE]: [\n TaonDraggableButtonPanelState.CLICKABLE_BUTTON,\n TaonDraggableButtonPanelState.WINDOW,\n TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED,\n ],\n\n [TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED]: [\n TaonDraggableButtonPanelState.CLICKABLE_BUTTON,\n TaonDraggableButtonPanelState.WINDOW,\n TaonDraggableButtonPanelState.FULL_SCREEN_DRAGGABLE,\n ],\n };\n\n return transitions[current].includes(next);\n }\n}\n","@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-window-full]=\"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","//#region imports\nimport { Routes } from '@angular/router';\n\nimport { TaonDraggableButtonPanelComponent } from './taon-draggable-button-panel.component';\n//#endregion\n\nexport const TaonDraggableButtonPanelRoutes: Routes = [\n {\n path: '',\n component: TaonDraggableButtonPanelComponent,\n },\n // {\n // path: 'anothermodulepath',\n // loadChildren: () => import('anothermodule')\n // .then(m => m.AnotherLazyModule),\n // },\n];\n\n/**\n * By default exporting TaonDraggableButtonPanelRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\nexport default TaonDraggableButtonPanelRoutes;","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels } from 'tnp-core/websql';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibTaonBackofficeNotificationsTaonBackofficeNotificationsComponentTs } from './taon-backoffice-notifications.component.ts.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibTaonBackofficeNotificationsTaonBackofficeNotificationsComponentTs } from './taon-backoffice-notifications.component.ts.pl-PL.i18n.data';;\nexport type TaonBackofficeNotificationsOverride = CoreModels.DeepPartial<EnUsTraslationOverrideSrcLibTaonBackofficeNotificationsTaonBackofficeNotificationsComponentTs \n| PlPlTraslationOverrideSrcLibTaonBackofficeNotificationsTaonBackofficeNotificationsComponentTs>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY\n ","// @ts-nocheck\n// This file is auto-generated during init process. Do not modify.\n// This disable this auto generate file.\n// set property \"shouldGenerateAutogenIndexFile: false\" \n// in taon.jsonc of your project. \nexport * from './build-info._auto-generated_'; \nexport * from './my-organization-proj'; \nexport * from './start-cli'; \nexport * from './directives/taon-horizontal-wheel-scrolling.directive'; // @browser\nexport * from './i18n/lib.translation'; \nexport * from './taon-admin-layout/taon-admin-layout.component'; // @browser\nexport * from './taon-admin-layout/taon-admin-layout.models'; \nexport * from './taon-admin-layout/taon-admin-page-tabs.component'; // @browser\nexport * from './taon-admin-layout/taon-base-admin-page.component'; // @browser\nexport * from './taon-backoffice-notifications/taon-backoffice-notifications.component'; // @browser\nexport * from './taon-backoffice-notifications/taon-backoffice-notifications.models'; \nexport * from './taon-backoffice-notifications/taon-backoffice-notifications.service'; // @browser\nexport * from './taon-backoffice-notifications/taon-error-details-dialog.component'; // @browser\nexport * from './taon-backoffice-notifications/taon-error-toast.component'; // @browser\nexport * from './taon-confirm-dialog/taon-confirm-dialog.component'; // @browser\nexport * from './taon-confirm-dialog/taon-confirm-dialog.models'; \nexport * from './taon-datatable/taon-datatable.component'; // @browser\nexport * from './taon-datatable/taon-datatable.models'; \nexport * from './taon-datatable/taon-datatable.routes'; // @browser\nexport * from './taon-draggable-button-panel/taon-draggable-button-panel.component'; // @browser\nexport * from './taon-draggable-button-panel/taon-draggable-button-panel.models'; \nexport * from './taon-draggable-button-panel/taon-draggable-button-panel.routes'; // @browser\nexport * from './taon-backoffice-notifications/i18n/taon-backoffice-notifications.translation'; ","export * from './migrations';\n/* */ \nexport * from './index._auto-generated_';\nexport * from './my-organization-proj';\n/* */ \nexport default {};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["t","i2","i1","i3","TaonSymbols","i4","i5"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ui-websql.mjs","sources":["../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/migrations/migrations_index._auto-generated_.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/migrations/index.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/build-info._auto-generated_.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/my-organization-proj.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/start-cli.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/directives/taon-horizontal-wheel-scrolling.directive.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/i18n/lib.translation.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-admin-layout/taon-admin-page-tabs.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-admin-layout/taon-admin-page-tabs.component.html","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-admin-layout/taon-admin-layout.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-admin-layout/taon-admin-layout.component.html","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-admin-layout/taon-admin-layout.models.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-admin-layout/taon-base-admin-page.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-backoffice-notifications/taon-error-details-dialog.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-backoffice-notifications/taon-error-details-dialog.component.html","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-backoffice-notifications/taon-error-toast.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-backoffice-notifications/taon-backoffice-notifications.service.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-backoffice-notifications/taon-backoffice-notifications.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-backoffice-notifications/taon-backoffice-notifications.component.html","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-confirm-dialog/taon-confirm-dialog.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-confirm-dialog/taon-confirm-dialog.component.html","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-datatable/taon-datatable.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-datatable/taon-datatable.component.html","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-datatable/taon-datatable.routes.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-draggable-button-panel/taon-draggable-button-panel.models.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-draggable-button-panel/taon-draggable-button-panel.component.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-draggable-button-panel/taon-draggable-button-panel.component.html","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-draggable-button-panel/taon-draggable-button-panel.routes.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/taon-backoffice-notifications/i18n/taon-backoffice-notifications.translation.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/index._auto-generated_.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/lib/index.ts","../../../tmp-libs-for-dist-websql/ui/projects/ui/src/ui-websql.ts"],"sourcesContent":["// THIS FILE IS GENERATED - DO NOT MODIFY\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n","//@ts-nocheck\nexport * from './migrations_index._auto-generated_';\n","// THIS FILE IS GENERATED - DO NOT MODIFY\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_FRAMEWORK_CLI_NAME = 'tnp';\n/**\n * This value can be change in taon.jsonc (appId)\n */\nexport const APP_ID = 'com.domain.example.ui';\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_BASE_HREF = '';\n/**\n * This value can be change in taon.jsonc (overrideNpmName)\n */\nexport const PROJECT_NPM_NAME = '@taon-dev/ui';\n/**\n * Taon version from you project taon.json\n */\nexport const CURRENT_PACKAGE_TAON_VERSION = 'v21';\n/**\n * Autogenerated by current cli tool. Use *tnp release* to bump version.\n */\nexport const CURRENT_PACKAGE_VERSION = '21.0.11';\n\n\n\n\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n ","import { Translation } from \"@taon-dev/i18n/websql\";\nimport { Taon } from \"taon/websql\";\n\nconst t = Translation.for('src/lib/my-organization-proj.ts', {\"src/lib/my-organization-proj.ts\":{\"en-US\":async () => (await import('./i18n/my-organization-proj.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/my-organization-proj.ts.pl-PL.i18n.data')).default}} as any);\n\nexport function myOrgProj() {\n t.gettext('My Translated Company Name!')\n}\n","//#region tnp-helpers cli template\nimport { UtilsJson } from 'tnp-core/websql';\nimport { Helpers, BaseCommandLineFeature } from 'tnp-helpers/websql';\n/* */ \n//#endregion\n\n//#region CLI / global scope\n/**\n * This class is for handling global arguments. *\n * Cli engine will parse: hello:world:from:global:arg to helloWorldFromGlobalArg\n * (lower case, camel case) .. so you don't need to worry about misspelling\n * arguments\n */\nclass $Global extends BaseCommandLineFeature<{}> {\n /**\n * When you execute cli without arguments:`$ cli`\n */\n public _() {\n console.log(`Hello world from cli`);\n this._exit();\n }\n\n /**\n * When you execute: `$ cli hello:world:from:global:arg`\n * (or `$ cli helloWorldFromGlobalArg`)\n */\n helloWorldFromGlobalArg() {\n console.log('hello world from global argument!');\n this._exit(0);\n }\n}\n//#endregion\n\n//#region CLI / Version Scope\n/**\n *\n */\nclass $Version extends BaseCommandLineFeature<{\n anyCLIparamsHere: string;\n}> {\n /**\n * When you execute: `$ cli version`\n */\n public _() {\n console.log(`Hello world from version argument`);\n this._exit();\n }\n\n /**\n * When you execute: `$ cli version:getFromPackageJson`\n */\n public getFromPackageJson() {\n const ver = UtilsJson.getValue(\n this.project.pathFor('package.json'),\n 'version',\n {\n defaultValue: '<not defined>',\n },\n );\n console.log(`Version from packageJson ${ver}`);\n this._exit(0);\n }\n}\n//#endregion\n\n/**\n *\n * @param argsv process.argsv\n * @param filename needed if you want ipc communicaiton\n */\nexport async function startCli(\n argsv: string[],\n filename: string,\n): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n}\n\nexport default startCli;\n","//#region imports\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n inject,\n OnDestroy,\n} from '@angular/core';\n//#endregion\n\n@Directive({\n selector: '[taonHorizontalWheelScroll]',\n standalone: true,\n})\nexport class TaonHorizontalWheelScrollDirective\n implements AfterViewInit, OnDestroy\n{\n //#region fields\n\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n private wheelAccumulator = 0;\n\n /**\n * Amount of wheel movement required before triggering\n * Material's previous/next pagination.\n */\n private readonly wheelThreshold = 40;\n\n //#endregion\n\n //#region lifecycle\n\n ngAfterViewInit(): void {\n this.elementRef.nativeElement.addEventListener('wheel', this.onWheel, {\n passive: false,\n });\n }\n\n ngOnDestroy(): void {\n this.elementRef.nativeElement.removeEventListener('wheel', this.onWheel);\n }\n\n //#endregion\n\n //#region wheel\n\n private readonly onWheel = (event: WheelEvent): void => {\n const delta =\n Math.abs(event.deltaX) > Math.abs(event.deltaY)\n ? event.deltaX\n : event.deltaY;\n\n if (!delta) {\n return;\n }\n\n this.wheelAccumulator += delta;\n\n if (Math.abs(this.wheelAccumulator) < this.wheelThreshold) {\n return;\n }\n\n const direction = this.wheelAccumulator > 0 ? 'after' : 'before';\n\n this.wheelAccumulator = 0;\n\n // @ts-ignore\n const pagination = this.elementRef.nativeElement.querySelector<HTMLElement>(\n `.mat-mdc-tab-header-pagination-${direction}`,\n );\n\n if (!pagination) {\n return;\n }\n\n const disabled = pagination.classList.contains(\n 'mat-mdc-tab-header-pagination-disabled',\n );\n\n if (disabled) {\n return;\n }\n\n event.preventDefault();\n\n pagination.click();\n };\n\n //#endregion\n}\n","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels } from 'tnp-core/websql';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibMyOrganizationProjTs } from './my-organization-proj.ts.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibMyOrganizationProjTs } from './my-organization-proj.ts.pl-PL.i18n.data';;\nexport type LibOverride = CoreModels.DeepPartial<EnUsTraslationOverrideSrcLibMyOrganizationProjTs \n| PlPlTraslationOverrideSrcLibMyOrganizationProjTs>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY\n ","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n signal,\n} from '@angular/core';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { NavigationEnd, Route, Router, Routes } from '@angular/router';\nimport { filter } from 'rxjs';\n\nimport { TaonAdminRoute } from './taon-admin-layout.models';\n\nexport interface TaonAdminTabLevel {\n level: number;\n routes: Routes;\n\n /**\n * URL segments before routes from this tab level.\n *\n * Example:\n *\n * ['main', 'session', 'providers']\n */\n baseSegments: string[];\n}\n\n@Component({\n selector: 'taon-admin-page-tabs',\n standalone: true,\n imports: [MatTabsModule],\n templateUrl: './taon-admin-page-tabs.component.html',\n styleUrl: './taon-admin-page-tabs.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonAdminPageTabsComponent implements OnInit {\n @Input({ required: true })\n routes!: Routes;\n\n @Input()\n basePath = '';\n\n /**\n * Undefined:\n * normal primary routing\n *\n * \"admin\":\n * auxiliary admin outlet\n */\n @Input()\n outlet?: string;\n\n protected readonly levels = signal<TaonAdminTabLevel[]>([]);\n\n constructor(private readonly router: Router) {}\n\n async ngOnInit(): Promise<void> {\n await this.refresh();\n\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(async () => {\n await this.refresh();\n });\n }\n\n // ===========================================================================\n // UI\n // ===========================================================================\n\n protected label(route: Route): string {\n return route.data?.['menuItem'] ?? this.startCase(route.path ?? '');\n }\n\n protected isActive(level: TaonAdminTabLevel, route: Route): boolean {\n if (!route.path) {\n return false;\n }\n\n const expected = [...level.baseSegments, route.path];\n\n const current = this.currentOutletSegments();\n\n if (current.length < expected.length) {\n return false;\n }\n\n return expected.every((segment, index) => current[index] === segment);\n }\n\n protected async tabClicked(\n level: TaonAdminTabLevel,\n route: Route,\n ): Promise<void> {\n if (!route.path) {\n return;\n }\n\n await this.navigateTo([\n ...level.baseSegments.slice(this.basePathSegments.length),\n route.path,\n ]);\n }\n\n // ===========================================================================\n // NAVIGATION\n // ===========================================================================\n\n private outletBaseMatrixParams(): Record<string, string> {\n if (!this.outlet) {\n return {};\n }\n\n const tree = this.router.parseUrl(this.router.url);\n\n const outletGroup = tree.root.children[this.outlet];\n\n return {\n ...outletGroup?.segments[0]?.parameters,\n };\n }\n\n private async navigateTo(routeSegments: string[]): Promise<boolean> {\n const segments = [...this.basePathSegments, ...routeSegments];\n\n /**\n * Auxiliary / named outlet.\n *\n * Example:\n *\n * /products/42(admin:main/session/providers/settings)\n */\n if (this.outlet) {\n const [firstSegment, ...remainingSegments] = segments;\n\n if (!firstSegment) {\n return false;\n }\n\n const matrixParams = this.outletBaseMatrixParams();\n\n return this.router.navigate([\n {\n outlets: {\n [this.outlet]: [\n firstSegment,\n\n /**\n * Angular interprets an object following\n * a segment as matrix parameters.\n */\n matrixParams,\n\n ...remainingSegments,\n ],\n },\n },\n ]);\n }\n\n /**\n * Normal primary outlet.\n *\n * Example:\n *\n * /main/session/providers/settings\n */\n return this.router.navigate(['/', ...segments]);\n }\n\n // ===========================================================================\n // BUILD TAB LEVELS\n // ===========================================================================\n\n private async refresh(): Promise<void> {\n const current = this.currentOutletSegments();\n\n const base = this.basePathSegments;\n\n /**\n * Example:\n *\n * current:\n * main/session/providers/settings\n *\n * base:\n * main\n *\n * relative:\n * session/providers/settings\n */\n const relative = current.slice(base.length);\n\n const levels: TaonAdminTabLevel[] = [];\n\n await this.walk(this.routes, relative, base, 1, levels);\n\n /**\n * Levels:\n *\n * 1 -> aside expansion panel\n * 2 -> aside item\n * 3+ -> tabs\n */\n this.levels.set(levels.filter(level => level.level >= 3));\n }\n\n private async walk(\n routes: Routes,\n remainingUrl: string[],\n baseSegments: string[],\n level: number,\n result: TaonAdminTabLevel[],\n ): Promise<void> {\n /**\n * Important:\n *\n * Taon lazy route files commonly look like:\n *\n * [\n * {\n * path: '',\n * component: SomeContainer,\n * children: [...]\n * }\n * ]\n *\n * path:'' is structural and DOES NOT represent\n * another navigation level.\n */\n routes = this.unwrapEmptyPathRoutes(routes);\n\n const visibleRoutes = this.navigationRoutes(routes);\n\n /**\n * Level 3+ becomes tabs.\n */\n if (level >= 3 && visibleRoutes.length > 0) {\n result.push({\n level,\n routes: visibleRoutes,\n baseSegments,\n });\n }\n\n const currentSegment = remainingUrl[0];\n\n if (!currentSegment) {\n return;\n }\n\n const activeRoute = routes.find(route => route.path === currentSegment);\n\n if (!activeRoute) {\n return;\n }\n\n let children = await this.loadChildren(activeRoute);\n\n children = this.unwrapEmptyPathRoutes(children);\n\n if (!children.length) {\n return;\n }\n\n await this.walk(\n children,\n remainingUrl.slice(1),\n [...baseSegments, currentSegment],\n level + 1,\n result,\n );\n }\n\n // ===========================================================================\n // LAZY ROUTES\n // ===========================================================================\n\n private async loadChildren(route: Route): Promise<Routes> {\n if (route.children) {\n return route.children;\n }\n\n const adminRoute = route as TaonAdminRoute;\n\n if (adminRoute.loadAdminChildren) {\n return await adminRoute.loadAdminChildren();\n }\n\n return [];\n }\n\n /**\n * Removes transparent path:'' containers.\n *\n * Example:\n *\n * [\n * {\n * path: '',\n * component: ProvidersComponent,\n * children: [\n * { path: 'info' },\n * { path: 'items' },\n * ],\n * },\n * ]\n *\n * becomes:\n *\n * [\n * { path: 'info' },\n * { path: 'items' },\n * ]\n */\n private unwrapEmptyPathRoutes(routes: Routes): Routes {\n const result: Routes = [];\n\n for (const route of routes) {\n if (route.path === '' && route.children) {\n result.push(...this.unwrapEmptyPathRoutes(route.children));\n\n continue;\n }\n\n result.push(route);\n }\n\n return result;\n }\n\n private navigationRoutes(routes: Routes): Routes {\n return routes.filter(\n route =>\n !!route.path &&\n route.redirectTo === undefined &&\n !route.data?.['hideInNavigation'],\n );\n }\n\n // ===========================================================================\n // CURRENT ROUTE\n // ===========================================================================\n\n private currentOutletSegments(): string[] {\n const tree = this.router.parseUrl(this.router.url);\n\n const outletName = this.outlet || 'primary';\n\n const group = tree.root.children[outletName];\n\n if (!group) {\n return [];\n }\n\n return group.segments.map(segment => segment.path);\n }\n\n private get basePathSegments(): string[] {\n return this.basePath.split('/').filter(Boolean);\n }\n\n // ===========================================================================\n // HELPERS\n // ===========================================================================\n\n private startCase(value: string): string {\n return value\n .replace(/[-_]+/g, ' ')\n .replace(/\\b\\w/g, char => char.toUpperCase());\n }\n}\n","@if (levels().length) {\n <div class=\"shrink-0 border-b border-gray-200 bg-white\">\n @for (level of levels(); track level.level) {\n <nav\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\">\n @for (route of level.routes; track route.path) {\n <a\n mat-tab-link\n class=\"cursor-pointer\"\n [active]=\"isActive(level, route)\"\n (click)=\"tabClicked(level, route)\">\n {{ label(route) }}\n </a>\n }\n </nav>\n }\n </div>\n}\n\n<mat-tab-nav-panel #tabPanel> </mat-tab-nav-panel>\n","//#region imports\nimport { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n NavigationEnd,\n Route,\n Router,\n RouterLink,\n RouterOutlet,\n Routes,\n} from '@angular/router';\nimport { filter } from 'rxjs';\n\nimport { TaonAdminRoute } from './taon-admin-layout.models';\nimport { TaonAdminPageTabsComponent } from './taon-admin-page-tabs.component';\n//#endregion\n\n@Component({\n selector: 'taon-admin-layout',\n standalone: true,\n imports: [\n CommonModule,\n RouterOutlet,\n RouterLink,\n\n MatExpansionModule,\n MatIconModule,\n\n TaonAdminPageTabsComponent,\n ],\n templateUrl: './taon-admin-layout.component.html',\n styleUrls: ['./taon-admin-layout.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonAdminLayoutComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n //#region fields and getters\n\n @Input({ required: true })\n routes!: Routes;\n\n @Input()\n basePath = '';\n\n @Input()\n outlet: string;\n\n protected readonly layoutWidth = signal<number | undefined>(undefined);\n\n protected readonly layoutHeight = signal<number | undefined>(undefined);\n\n protected readonly level2Routes = signal(new Map<Route, Routes>());\n\n protected readonly currentUrl = signal('');\n\n protected readonly loadingRoutes = signal(new Set<Route>());\n\n protected readonly asideOpened = signal(window.innerWidth >= 768);\n\n private resizeObserver?: ResizeObserver;\n\n private mutationObserver?: MutationObserver;\n\n private resizing = false;\n\n private resizeStartX = 0;\n\n private resizeStartY = 0;\n\n private resizeStartWidth = 0;\n\n private resizeStartHeight = 0;\n\n private readonly minDialogWidth = 500;\n\n private readonly minDialogHeight = 350;\n\n protected get isDialogMode(): boolean {\n const windowElement = this.getWindowElement();\n\n if (!windowElement) {\n return false;\n }\n\n return !windowElement.classList.contains('taon-fullscreen');\n }\n\n private get basePathSegments(): string[] {\n return this.basePath.split('/').filter(Boolean);\n }\n\n protected get normalizedBasePath(): string {\n const value = '/' + this.basePath.split('/').filter(Boolean).join('/');\n\n return value === '/' ? '/' : value;\n }\n\n //#endregion\n\n //#region constructor\n\n constructor(\n private readonly router: Router,\n private readonly hostElement: ElementRef<HTMLElement>,\n ) {}\n\n //#endregion\n\n //#region lifecycle\n\n async ngOnInit(): Promise<void> {\n await this.loadCurrentLevel1Route();\n\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(async () => {\n await this.loadCurrentLevel1Route();\n });\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n const windowElement = this.getWindowElement();\n // console.log('[windowElement] should not be undefined', windowElement);\n this.updateLayoutSize();\n this.startWindowObservers();\n }, 500); // TODO QUICK_FIX\n }\n\n // private waitForWindowElement(\n // callback: (windowElement: HTMLElement) => void,\n // ): void {\n // const check = () => {\n // console.log('Waiting for window element...');\n // const windowElement = this.getWindowElement();\n\n // if (windowElement) {\n // callback(windowElement);\n // return;\n // }\n\n // requestAnimationFrame(check);\n // };\n\n // check();\n // }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n this.mutationObserver?.disconnect();\n\n window.removeEventListener('pointermove', this.resize);\n\n window.removeEventListener('pointerup', this.stopResize);\n }\n\n //#endregion\n\n //#region window / layout\n\n private getWindowElement(): HTMLElement | undefined {\n return (\n document.querySelector<HTMLElement>('.taon-window') ??\n document.querySelector<HTMLElement>('.taon-window-full') ??\n undefined\n );\n }\n\n private getDraggablePanelElement(): HTMLElement | undefined {\n return (\n document.querySelector<HTMLElement>('.taon-draggable-panel') ?? undefined\n );\n }\n\n private startWindowObservers(): void {\n this.resizeObserver?.disconnect();\n this.mutationObserver?.disconnect();\n\n const host = this.hostElement.nativeElement;\n\n const windowElement = this.getWindowElement();\n\n // console.log('WINDOW', this.getWindowElement());\n\n // console.log('PANEL', this.getDraggablePanelElement());\n\n // ================================================================\n // SIZE CHANGES\n // ================================================================\n\n const observedElement = windowElement ?? host.parentElement;\n\n if (observedElement) {\n this.resizeObserver = new ResizeObserver(() => {\n this.updateLayoutSize();\n });\n\n this.resizeObserver.observe(observedElement);\n }\n\n // ================================================================\n // DIALOG <-> FULLSCREEN STATE CHANGES\n // ================================================================\n\n if (windowElement) {\n this.mutationObserver = new MutationObserver(mutations => {\n const classChanged = mutations.some(\n mutation =>\n mutation.type === 'attributes' &&\n mutation.attributeName === 'class',\n );\n // console.log('Class changed:', classChanged);\n\n if (!classChanged) {\n return;\n }\n\n this.windowModeChanged(windowElement);\n });\n\n this.mutationObserver.observe(windowElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n }\n }\n\n private windowModeChanged(windowElement: HTMLElement): void {\n const fullscreen = windowElement.classList.contains('taon-fullscreen');\n\n if (fullscreen) {\n this.clearWindowResize(windowElement);\n }\n\n requestAnimationFrame(() => {\n this.updateLayoutSize();\n });\n }\n\n private clearWindowResize(windowElement: HTMLElement): void {\n windowElement.style.removeProperty('width');\n\n windowElement.style.removeProperty('height');\n }\n\n @HostListener('window:resize')\n protected windowResized(): void {\n this.updateLayoutSize();\n }\n\n private updateLayoutSize(): void {\n const host = this.hostElement.nativeElement;\n\n const hostRect = host.getBoundingClientRect();\n\n const windowElement = this.getWindowElement();\n\n const dialogMode =\n !!windowElement && !windowElement.classList.contains('taon-fullscreen');\n\n // ================================================================\n // NORMAL / FULLSCREEN\n // ================================================================\n\n if (!dialogMode) {\n this.layoutWidth.set(Math.floor(hostRect.width));\n\n this.layoutHeight.set(\n Math.max(0, Math.floor(window.innerHeight - hostRect.top)),\n );\n\n return;\n }\n\n // ================================================================\n // DIALOG\n // ================================================================\n\n const windowRect = windowElement.getBoundingClientRect();\n\n this.layoutWidth.set(\n Math.max(0, Math.floor(windowRect.right - hostRect.left)),\n );\n\n this.layoutHeight.set(\n Math.max(0, Math.floor(windowRect.bottom - hostRect.top)),\n );\n }\n\n //#endregion\n\n //#region dialog resizing\n\n protected startResize(event: PointerEvent): void {\n if (!this.isDialogMode) {\n return;\n }\n\n const windowElement = this.getWindowElement();\n\n if (!windowElement) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const windowRect = windowElement.getBoundingClientRect();\n\n this.resizing = true;\n\n this.resizeStartX = event.clientX;\n\n this.resizeStartY = event.clientY;\n\n this.resizeStartWidth = windowRect.width;\n\n this.resizeStartHeight = windowRect.height;\n\n window.addEventListener('pointermove', this.resize);\n\n window.addEventListener('pointerup', this.stopResize);\n }\n\n private readonly resize = (event: PointerEvent): void => {\n if (!this.resizing) {\n return;\n }\n\n const windowElement = this.getWindowElement();\n\n if (!windowElement) {\n return;\n }\n\n const windowRect = windowElement.getBoundingClientRect();\n\n const deltaX = event.clientX - this.resizeStartX;\n\n const deltaY = event.clientY - this.resizeStartY;\n\n const maxWidth = window.innerWidth - windowRect.left;\n\n const maxHeight = window.innerHeight - windowRect.top;\n\n const width = Math.min(\n maxWidth,\n Math.max(this.minDialogWidth, this.resizeStartWidth + deltaX),\n );\n\n const height = Math.min(\n maxHeight,\n Math.max(this.minDialogHeight, this.resizeStartHeight + deltaY),\n );\n\n windowElement.style.width = `${width}px`;\n\n windowElement.style.height = `${height}px`;\n };\n\n private readonly stopResize = (): void => {\n if (!this.resizing) {\n return;\n }\n\n this.resizing = false;\n\n window.removeEventListener('pointermove', this.resize);\n\n window.removeEventListener('pointerup', this.stopResize);\n };\n\n //#endregion\n\n //#region aside\n\n protected toggleAside(): void {\n this.asideOpened.update(opened => !opened);\n }\n\n protected closeAside(): void {\n this.asideOpened.set(false);\n }\n\n private closeAsideOnMobile(): void {\n if (window.innerWidth < 768) {\n this.closeAside();\n }\n }\n\n //#endregion\n\n //#region level 1\n\n protected async level1Clicked(route: Route): Promise<void> {\n if (!route.path) {\n return;\n }\n\n await this.navigateTo([route.path]);\n\n await this.ensureLevel2Loaded(route);\n\n if (!this.isExpandable(route)) {\n this.closeAsideOnMobile();\n }\n }\n\n protected async panelExpanded(\n route: Route,\n expanded: boolean,\n ): Promise<void> {\n if (!expanded) {\n return;\n }\n\n await this.ensureLevel2Loaded(route);\n }\n\n protected isLevel1Active(route: Route): boolean {\n if (!route.path) {\n return false;\n }\n\n return this.isPathActive([route.path]);\n }\n\n //#endregion\n\n //#region level 2\n\n protected async level2Clicked(level1: Route, level2: Route): Promise<void> {\n if (!level1.path || !level2.path) {\n return;\n }\n\n await this.navigateTo([level1.path, level2.path]);\n\n this.closeAsideOnMobile();\n }\n\n protected getLevel2Routes(route: Route): Routes {\n return this.level2Routes().get(route) ?? [];\n }\n\n protected isLevel2Active(level1: Route, level2: Route): boolean {\n if (!level1.path || !level2.path) {\n return false;\n }\n\n return this.isPathActive([level1.path, level2.path]);\n }\n\n protected level2Link(level1: Route, level2: Route): string[] {\n return [this.normalizedBasePath, level1.path!, level2.path!];\n }\n\n //#endregion\n\n //#region navigation\n\n private outletBaseMatrixParams(): Record<string, string> {\n if (!this.outlet) {\n return {};\n }\n\n const tree = this.router.parseUrl(this.router.url);\n\n const outletGroup = tree.root.children[this.outlet];\n\n return {\n ...outletGroup?.segments[0]?.parameters,\n };\n }\n\n private async navigateTo(routeSegments: string[]): Promise<boolean> {\n const segments = [...this.basePathSegments, ...routeSegments];\n\n if (this.outlet) {\n const [firstSegment, ...remainingSegments] = segments;\n\n if (!firstSegment) {\n return false;\n }\n\n const matrixParams = this.outletBaseMatrixParams();\n\n return this.router.navigate([\n {\n outlets: {\n [this.outlet]: [firstSegment, matrixParams, ...remainingSegments],\n },\n },\n ]);\n }\n\n return this.router.navigate(['/', ...segments]);\n }\n\n //#endregion\n\n //#region route loading\n\n private async ensureLevel2Loaded(level1: Route): Promise<void> {\n if (this.level2Routes().has(level1)) {\n return;\n }\n\n if (this.loadingRoutes().has(level1)) {\n return;\n }\n\n this.setLoading(level1, true);\n\n try {\n const lazyRoutes = await this.loadRouteChildren(level1);\n\n const level2 = this.unwrapEmptyPathRoutes(lazyRoutes);\n\n const map = new Map(this.level2Routes());\n\n map.set(level1, level2);\n\n this.level2Routes.set(map);\n } finally {\n this.setLoading(level1, false);\n }\n }\n\n private async loadRouteChildren(route: Route): Promise<Routes> {\n if (route.children) {\n return route.children;\n }\n\n const adminRoute = route as TaonAdminRoute;\n\n if (adminRoute.loadAdminChildren) {\n return await adminRoute.loadAdminChildren();\n }\n\n return [];\n }\n\n private unwrapEmptyPathRoutes(routes: Routes): Routes {\n const result: Routes = [];\n\n for (const route of routes) {\n if (route.path === '' && route.children) {\n result.push(...this.unwrapEmptyPathRoutes(route.children));\n\n continue;\n }\n\n if (route.redirectTo !== undefined || route.data?.['hideInNavigation']) {\n continue;\n }\n\n result.push(route);\n }\n\n return result;\n }\n\n //#endregion\n\n //#region direct url support\n\n private async loadCurrentLevel1Route(): Promise<void> {\n const relativeSegments = this.currentRelativeSegments();\n\n const level1Path = relativeSegments[0];\n\n if (!level1Path) {\n return;\n }\n\n const level1 = this.routes.find(route => route.path === level1Path);\n\n if (level1) {\n await this.ensureLevel2Loaded(level1);\n }\n }\n\n //#endregion\n\n //#region helpers\n\n protected label(route: Route): string {\n return route.data?.['menuItem'] ?? this.startCase(route.path ?? '');\n }\n\n protected color(route: Route): string {\n return route.data?.['color'];\n }\n\n protected icon(route: Route): string | undefined {\n return route.data?.['icon'];\n }\n\n protected isLoading(route: Route): boolean {\n return this.loadingRoutes().has(route);\n }\n\n protected isExpandable(route: Route): boolean {\n return route.data?.['expandable'] !== false;\n }\n\n private isPathActive(routeSegments: string[]): boolean {\n const current = this.currentRelativeSegments();\n\n if (current.length < routeSegments.length) {\n return false;\n }\n\n return routeSegments.every((segment, index) => current[index] === segment);\n }\n\n private currentRelativeSegments(): string[] {\n const current = this.currentOutletSegments();\n\n return current.slice(this.basePathSegments.length);\n }\n\n private currentOutletSegments(): string[] {\n const tree = this.router.parseUrl(this.router.url);\n\n const outletName = this.outlet || 'primary';\n\n const group = tree.root.children[outletName];\n\n if (!group) {\n return [];\n }\n\n return group.segments.map(segment => segment.path);\n }\n\n private setLoading(route: Route, loading: boolean): void {\n const set = new Set(this.loadingRoutes());\n\n if (loading) {\n set.add(route);\n } else {\n set.delete(route);\n }\n\n this.loadingRoutes.set(set);\n }\n\n private startCase(value: string): string {\n return value\n .replace(/[-_]+/g, ' ')\n .replace(/\\b\\w/g, char => char.toUpperCase());\n }\n\n //#endregion\n}\n","<div\n #layout\n class=\"admin-layout\"\n [class.admin-layout-dialog]=\"isDialogMode\"\n [style.width.px]=\"layoutWidth() || null\"\n [style.height.px]=\"layoutHeight() || null\">\n <!-- ============================================================= -->\n <!-- HEADER -->\n <!-- ============================================================= -->\n\n <header class=\"admin-header\">\n <button\n mat-icon-button\n type=\"button\"\n aria-label=\"Toggle admin menu\"\n class=\"admin-menu-button\"\n (click)=\"toggleAside()\">\n <mat-icon>menu</mat-icon>\n </button>\n\n <div class=\"admin-header-content\">\n <ng-content select=\"[header]\" />\n </div>\n </header>\n\n <!-- ============================================================= -->\n <!-- BODY -->\n <!-- ============================================================= -->\n\n <div class=\"admin-body\">\n <!-- =========================================================== -->\n <!-- MOBILE BACKDROP -->\n <!-- =========================================================== -->\n\n @if (asideOpened()) {\n <div\n class=\"admin-aside-backdrop\"\n (click)=\"closeAside()\"></div>\n }\n\n <!-- =========================================================== -->\n <!-- ASIDE -->\n <!-- =========================================================== -->\n\n <aside\n class=\"admin-aside\"\n [class.admin-aside-open]=\"asideOpened()\">\n <!-- ========================================================= -->\n <!-- SCROLLABLE ASIDE CONTENT -->\n <!-- ========================================================= -->\n\n <div class=\"admin-aside-content\">\n <mat-accordion class=\"admin-menu\">\n @for (level1 of routes; track level1.path) {\n @if (isExpandable(level1)) {\n <mat-expansion-panel\n [expanded]=\"isLevel1Active(level1)\"\n (expandedChange)=\"panelExpanded(level1, $event)\">\n <mat-expansion-panel-header (click)=\"level1Clicked(level1)\">\n <mat-panel-title>\n <div class=\"admin-menu-item\">\n @if (icon(level1)) {\n <mat-icon\n [ngStyle]=\"{\n color: color(level1),\n }\">\n {{ icon(level1) }}\n </mat-icon>\n }\n\n <span\n [class.font-semibold]=\"isLevel1Active(level1)\"\n [ngStyle]=\"{\n color: color(level1),\n }\">\n {{ label(level1) }}\n </span>\n </div>\n </mat-panel-title>\n </mat-expansion-panel-header>\n\n <div class=\"admin-level2\">\n @if (isLoading(level1)) {\n <div class=\"admin-loading\">Loading...</div>\n } @else {\n @for (\n level2 of getLevel2Routes(level1);\n track level2.path\n ) {\n <a\n class=\"admin-level2-item\"\n [class.admin-level2-item-active]=\"\n isLevel2Active(level1, level2)\n \"\n (click)=\"level2Clicked(level1, level2)\">\n @if (icon(level2)) {\n <mat-icon\n [ngStyle]=\"{\n color: color(level2),\n }\">\n {{ icon(level2) }}\n </mat-icon>\n }\n\n <span\n [ngStyle]=\"{\n color: color(level2),\n }\">\n {{ label(level2) }}\n </span>\n </a>\n }\n }\n </div>\n </mat-expansion-panel>\n } @else {\n <a\n class=\"admin-level1-item\"\n [class.admin-level1-item-active]=\"isLevel1Active(level1)\"\n (click)=\"level1Clicked(level1)\">\n @if (icon(level1)) {\n <mat-icon\n [ngStyle]=\"{\n color: color(level1),\n }\">\n {{ icon(level1) }}\n </mat-icon>\n }\n\n <span\n [ngStyle]=\"{\n color: color(level1),\n }\">\n {{ label(level1) }}\n </span>\n </a>\n }\n }\n </mat-accordion>\n </div>\n\n <!-- ========================================================= -->\n <!-- ASIDE FOOTER -->\n <!-- ========================================================= -->\n\n <footer class=\"admin-aside-footer\">\n <ng-content select=\"[asideFooter]\" />\n </footer>\n </aside>\n\n <!-- =========================================================== -->\n <!-- MAIN -->\n <!-- =========================================================== -->\n\n <main class=\"admin-main\">\n <!-- ========================================================= -->\n <!-- LEVEL 3+ TABS -->\n <!-- ========================================================= -->\n\n <taon-admin-page-tabs\n class=\"admin-tabs\"\n [routes]=\"routes\"\n [basePath]=\"basePath\"\n [outlet]=\"outlet\" />\n\n <!-- ========================================================= -->\n <!-- SCROLLABLE CONTENT -->\n <!-- ========================================================= -->\n\n <div class=\"admin-content\">\n <router-outlet />\n </div>\n\n <!-- ========================================================= -->\n <!-- CONTENT FOOTER -->\n <!-- ========================================================= -->\n\n <footer class=\"admin-content-footer\">\n <ng-content select=\"[contentFooter]\" />\n </footer>\n </main>\n </div>\n\n <!-- ============================================================= -->\n <!-- DIALOG RESIZE HANDLE -->\n <!-- ============================================================= -->\n\n @if (isDialogMode) {\n <div\n class=\"admin-resize-handle\"\n (pointerdown)=\"startResize($event)\"></div>\n }\n</div>\n","import { Route } from '@angular/router';\n\nexport interface TaonAdminRoute extends Route {\n /**\n * Used only by TaonAdminLayout to discover lazy navigation children.\n *\n * This loads route metadata, NOT page components.\n */\n loadAdminChildren?: () => Promise<TaonAdminRoutes>;\n}\n\nexport type TaonAdminRoutes = TaonAdminRoute[];\n\ntype MaterialIcon =\n | 'manage_accounts'\n | 'dashboard'\n | 'home'\n | 'settings'\n | 'admin_panel_settings'\n | 'person'\n | 'people'\n | 'group'\n | 'groups'\n | 'account_circle'\n | 'login'\n | 'logout'\n | 'lock'\n | 'lock_open'\n | 'security'\n | 'key'\n | 'verified_user'\n | 'shield'\n | 'email'\n | 'mail'\n | 'inbox'\n | 'send'\n | 'campaign'\n | 'notifications'\n | 'article'\n | 'description'\n | 'edit'\n | 'add'\n | 'delete'\n | 'delete_forever'\n | 'restore_from_trash'\n | 'content_copy'\n | 'save'\n | 'search'\n | 'filter_list'\n | 'refresh'\n | 'sync'\n | 'more_vert'\n | 'more_horiz'\n | 'menu'\n | 'close'\n | 'check'\n | 'done'\n | 'warning'\n | 'error'\n | 'info'\n | 'help'\n | 'visibility'\n | 'visibility_off'\n | 'folder'\n | 'folder_open'\n | 'upload'\n | 'download'\n | 'cloud'\n | 'cloud_upload'\n | 'storage'\n | 'database'\n | 'dns'\n | 'code'\n | 'terminal'\n | 'api'\n | 'extension'\n | 'web'\n | 'language'\n | 'public'\n | 'link'\n | 'shopping_cart'\n | 'shopping_bag'\n | 'store'\n | 'inventory'\n | 'inventory_2'\n | 'payments'\n | 'payment'\n | 'credit_card'\n | 'receipt'\n | 'receipt_long'\n | 'sell'\n | 'local_shipping'\n | 'analytics'\n | 'bar_chart'\n | 'pie_chart'\n | 'query_stats'\n | 'monitoring'\n | 'trending_up'\n | 'history'\n | 'schedule'\n | 'calendar_month'\n | 'build'\n | 'tune'\n | 'apps'\n | 'widgets'\n | 'category'\n | 'supervisor_account'\n | 'approval'\n | 'family_group'\n | 'recent_actors'\n | 'perm_media'\n\nexport interface TaonAdminRouteOptions {\n path: string;\n color?: string;\n loader: () => Promise<TaonAdminRoutes>;\n\n menuItem?: string;\n\n icon?: MaterialIcon;\n\n expandable?: boolean;\n\n hideInNavigation?: boolean;\n}\n\nexport const TaonBaselineBackofficeOutletName = 'admin';\n\nexport function adminLazyRoute(options: TaonAdminRouteOptions): TaonAdminRoute {\n const { path, loader, menuItem, icon, color, expandable, hideInNavigation } =\n options;\n\n return {\n path,\n\n data: {\n menuItem,\n color,\n icon,\n expandable,\n hideInNavigation,\n },\n\n loadChildren: loader,\n loadAdminChildren: loader,\n };\n}\n","import { Component, ViewChild } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\n@Component({\n template: '',\n})\nexport abstract class TaonBaseAdminLayoutPage {\n @ViewChild(RouterOutlet)\n routerOutlet!: RouterOutlet;\n\n get hasActiveChildRoute(): boolean {\n return this.routerOutlet?.isActivated ?? false;\n }\n}\n","//#region imports\nimport { Component, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\n//#endregion\n\nexport interface TaonErrorDetailsDialogData {\n message: string;\n details: string;\n}\n\ntype TaonEditor = 'vscode' | 'vscodium';\n\ninterface TaonStackTraceLine {\n text: string;\n file?: string;\n line?: number;\n column?: number;\n}\n\n@Component({\n selector: 'taon-error-details-dialog',\n standalone: true,\n imports: [MatDialogModule, MatButtonModule, MatButtonToggleModule],\n templateUrl: './taon-error-details-dialog.component.html',\n styleUrls: ['./taon-error-details-dialog.component.scss'],\n})\nexport class TaonErrorDetailsDialogComponent {\n //#region injections\n readonly data = inject<TaonErrorDetailsDialogData>(MAT_DIALOG_DATA);\n //#endregion\n\n //#region constants\n private readonly editorStorageKey = 'taon-error-details-editor';\n //#endregion\n\n //#region state\n editor: TaonEditor = this.loadEditor();\n\n readonly stackLines = this.parseStackTrace(this.data.details);\n //#endregion\n\n //#region editor\n setEditor(editor: TaonEditor): void {\n this.editor = editor;\n\n localStorage.setItem(this.editorStorageKey, editor);\n }\n\n private loadEditor(): TaonEditor {\n const editor = localStorage.getItem(this.editorStorageKey);\n\n if (editor === 'vscode' || editor === 'vscodium') {\n return editor;\n }\n\n return 'vscode';\n }\n //#endregion\n\n //#region stack trace\n private parseStackTrace(stack: string): TaonStackTraceLine[] {\n return stack\n .split('\\n')\n .map(text => text.trimEnd())\n .filter(text => text.trim().length > 0)\n .map(text => this.parseStackTraceLine(text));\n }\n\n private parseStackTraceLine(text: string): TaonStackTraceLine {\n /**\n * Matches:\n *\n * /Users/test/file.ts:10:20\n *\n * C:\\projects\\test\\file.ts:10:20\n *\n * at something (/Users/test/file.ts:10:20)\n */\n const match = text.match(/((?:[A-Za-z]:[\\\\/]|\\/)[^()\\n]+?):(\\d+):(\\d+)/);\n\n if (!match) {\n return {\n text,\n };\n }\n\n return {\n text,\n file: match[1],\n line: Number(match[2]),\n column: Number(match[3]),\n };\n }\n //#endregion\n\n //#region open editor\n openStackLine(stackLine: TaonStackTraceLine): void {\n if (!stackLine.file || !stackLine.line) {\n return;\n }\n\n const url = this.createEditorUrl(\n stackLine.file,\n stackLine.line,\n stackLine.column,\n );\n\n window.location.href = url;\n }\n\n private createEditorUrl(file: string, line: number, column?: number): string {\n const protocol = this.editor === 'vscodium' ? 'vscodium' : 'vscode';\n\n const location = [file, line, column]\n .filter(value => value !== undefined)\n .join(':');\n\n return `${protocol}://file${location}`;\n }\n //#endregion\n}\n","<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","import { Component, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { HotToastRef } from '@ngneat/hot-toast';\n\nimport { TaonErrorDetailsDialogComponent } from './taon-error-details-dialog.component';\n\nexport interface TaonErrorToastData {\n title: string;\n details: string;\n}\n\n@Component({\n selector: 'taon-error-toast',\n standalone: true,\n template: `\n <div\n class=\"taon-error-toast\"\n (click)=\"showDetails()\">\n <div>{{ data.title }}</div>\n\n <small> Click for details </small>\n </div>\n `,\n styles: [\n `\n .taon-error-toast {\n cursor: pointer;\n }\n\n small {\n display: block;\n margin-top: 4px;\n opacity: 0.7;\n }\n `,\n ],\n})\nexport class TaonErrorToastComponent {\n private readonly toastRef =\n inject<HotToastRef<TaonErrorToastData>>(HotToastRef);\n\n private readonly dialog = inject(MatDialog);\n\n readonly data = this.toastRef.data;\n\n showDetails(): void {\n this.dialog.open(TaonErrorDetailsDialogComponent, {\n width: '800px',\n maxWidth: '95vw',\n data: {\n message: this.data.title,\n details: this.data.details,\n },\n });\n\n this.toastRef.close();\n }\n}\n","//#region imports\nimport { inject, Injectable } from '@angular/core';\nimport { HotToastService } from '@ngneat/hot-toast';\n\nimport {\n TaonNotificationInput,\n TaonNotificationOptions,\n} from './taon-backoffice-notifications.models';\nimport {\n TaonErrorToastComponent,\n TaonErrorToastData,\n} from './taon-error-toast.component';\n//#endregion\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TaonBackofficeNotificationsService {\n //#region injections\n private readonly toast = inject(HotToastService);\n //#endregion\n\n //#region private methods\n private normalize(input: TaonNotificationInput): TaonNotificationOptions {\n return typeof input === 'string' ? { title: input } : input;\n }\n //#endregion\n\n //#region notifications\n success(input: TaonNotificationInput) {\n const { title } = this.normalize(input);\n\n return this.toast.success(title);\n }\n\n error(input: TaonNotificationInput) {\n const { title, details } = this.normalize(input);\n\n // Normal error - exactly as before\n if (!details) {\n return this.toast.error(title);\n }\n\n // Error with clickable details\n return this.toast.error<TaonErrorToastData>(TaonErrorToastComponent, {\n data: {\n title,\n details,\n },\n });\n }\n\n warn(input: TaonNotificationInput) {\n const { title } = this.normalize(input);\n\n return this.toast.warning(title);\n }\n\n info(input: TaonNotificationInput) {\n const { title } = this.normalize(input);\n\n return this.toast.info(title);\n }\n //#endregion\n}\n","//#region imports\nimport { Component, DestroyRef, inject, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Translation } from '@taon-dev/i18n/websql';\nimport {\n HttpResponseError,\n Resource,\n RestErrorResponseWrapper,\n} from 'ng2-rest/websql';\nimport { getHttpStatus, Taon, TaonAdminService } from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonBackofficeNotificationsService } from './taon-backoffice-notifications.service';\n//#endregion\n\nconst 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('./i18n/taon-backoffice-notifications.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-backoffice-notifications.component.ts.pl-PL.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-backoffice-notifications',\n standalone: true,\n templateUrl: './taon-backoffice-notifications.component.html',\n styleUrls: ['./taon-backoffice-notifications.component.scss'],\n})\nexport class TaonBackofficeNotificationsComponent {\n //#region injections\n t = t.for(this);\n\n private readonly notification = inject(TaonBackofficeNotificationsService);\n\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly taonAdminService = inject(TaonAdminService);\n\n @Input() filter: (\n err: HttpResponseError<RestErrorResponseWrapper>,\n ) => HttpResponseError<RestErrorResponseWrapper>;\n\n //#endregion\n\n //#region constructor\n constructor() {\n Resource.listenErrors\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((error: HttpResponseError<RestErrorResponseWrapper>) => {\n if (_.isFunction(this.filter)) {\n error = this.filter(error);\n }\n\n const jsonMsg = error?.body?.json;\n\n if (!jsonMsg?.message) {\n console.log({ error });\n }\n\n const statusCode = jsonMsg.status ?? error.statusCode;\n\n const httpStatus = getHttpStatus(statusCode, jsonMsg.message);\n if (this.taonAdminService.shouldSkipShowingError(httpStatus)) {\n console.log(\n `[@taon-dev/sudo] Skipping notificaiton for message \"${jsonMsg.message}\" (code=${statusCode})`,\n );\n } else {\n this.notification.error({\n title: jsonMsg?.message || t.gettext('Unknown error'),\n\n details: jsonMsg?.details,\n });\n }\n });\n }\n //#endregion\n}\n","<!-- <p>\n notyfications works!\n</p> -->\n","import { Component, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\n\nexport interface TaonConfirmDialogData {\n title: string;\n message?: string;\n confirmText?: string;\n cancelText?: string;\n}\n\n@Component({\n selector: 'taon-confirm-dialog',\n standalone: true,\n imports: [MatDialogModule, MatButtonModule],\n templateUrl: './taon-confirm-dialog.component.html',\n})\nexport class TaonConfirmDialogComponent {\n readonly data = inject<TaonConfirmDialogData>(MAT_DIALOG_DATA);\n\n private readonly dialogRef = inject(MatDialogRef<TaonConfirmDialogComponent>);\n\n cancel(): void {\n this.dialogRef.close(false);\n }\n\n confirm(): void {\n this.dialogRef.close(true);\n }\n}\n","<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","//#region imports\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MtxGridColumn, MtxGridModule } from '@ng-matero/extensions/grid';\nimport { getDefaultModel } from 'ng2-rest/websql';\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n catchError,\n debounceTime,\n distinctUntilChanged,\n finalize,\n from,\n map,\n of,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\nimport {\n Symbols as TaonSymbols,\n TaonBaseCrudController,\n TaonBaseEntity,\n TaonPaginationSort,\n TaonPaginationQuery,\n ClassHelpers,\n} from 'taon/websql';\nimport { _, json5 } from 'tnp-core/websql';\n//#endregion\n\nconst defaultColumns: MtxGridColumn[] = [\n {\n header: 'ID',\n field: 'id',\n },\n {\n header: 'NAME',\n field: 'name',\n },\n];\n\ntype SearchMode = 'simple' | 'advanced';\n\n@Component({\n selector: 'taon-datatable',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatPaginatorModule,\n MatSelectModule,\n\n MtxGridModule,\n ],\n templateUrl: './taon-datatable.component.html',\n styleUrls: ['./taon-datatable.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonDatatableComponent implements OnInit {\n //#region fields & getters\n private readonly cdr = inject(ChangeDetectorRef);\n\n private readonly destroyRef = inject(DestroyRef);\n\n //#region inputs\n\n @Input()\n pageNumber = 1;\n\n @Input()\n pageSize = 10;\n\n @Input()\n pageSizeOptions: number[] = [5, 10, 20, 50, 100];\n\n @Input()\n allowedColumns: string[] = [];\n\n @Input()\n expansionTemplate?: TemplateRef<any>;\n\n @Input()\n entityCrudController?: TaonBaseCrudController<any>;\n\n @Input()\n columns: MtxGridColumn[] = defaultColumns;\n\n @Input()\n hideSearch = false;\n\n @Input()\n hideAddButton = false;\n\n @Input()\n safe = false;\n\n @Input()\n searchMode: SearchMode = 'advanced';\n\n /**\n * Optional custom backend pagination method.\n */\n @Input()\n callQueryMethod?: string;\n\n private _data?: any[];\n\n @Input()\n set data(value: any[] | undefined | null) {\n this._data = value ?? undefined;\n\n if (this._data) {\n this.pageNumber = 1;\n this.reload();\n }\n }\n\n get data(): any[] | undefined {\n return this._data;\n }\n\n get offlineMode(): boolean {\n return this.data !== undefined;\n }\n\n //#endregion\n\n //#region outputs\n\n @Output()\n readonly expansionChange = new EventEmitter<any>();\n\n @Output()\n readonly addingItem = new EventEmitter<void>();\n\n //#endregion\n\n //#region fields\n\n rows: any[] = [];\n\n totalElements = 0;\n\n isLoading = false;\n\n expandable = false;\n\n @Input() showPaginator: boolean;\n\n advancedSearchOpened = false;\n\n searchValue = '';\n\n columnFilters: Record<string, string> = {};\n\n sort?: TaonPaginationSort;\n\n private readonly reload$ = new BehaviorSubject<void>(undefined);\n\n private readonly searchChange$ = new Subject<string>();\n\n readonly data$: Observable<any[]> = this.reload$.pipe(\n switchMap(() => this.loadData()),\n );\n\n expandedRows = new Set<any>();\n\n //#endregion\n\n //#region getters\n\n get entity(): typeof TaonBaseEntity | undefined {\n return this.entityCrudController?.entityClassResolveFn();\n }\n\n get filterableColumns(): MtxGridColumn[] {\n return this.columns.filter(column => Boolean(column.field));\n }\n\n //#endregion\n\n //#endregion\n\n //#region expansion\n onExpansionChange(event: any) {\n // console.log(event);\n // adapt this depending on exact MtxGrid event shape\n if (event.expanded) {\n this.expandedRows.add(event.data);\n } else {\n this.expandedRows.delete(event.data);\n }\n\n this.expansionChange.emit(event);\n }\n\n isExpanded(row: any): boolean {\n return this.expandedRows.has(row);\n }\n\n //#endregion\n\n //#region hooks\n\n ngOnInit(): void {\n this.prepareColumns();\n // console.log({ columns: this.columns });\n this.expandable = Boolean(this.expansionTemplate);\n\n this.showPaginator = _.isBoolean(this.showPaginator)\n ? this.showPaginator\n : Boolean(this.entity) || this.offlineMode;\n\n this.searchChange$\n .pipe(\n debounceTime(400),\n distinctUntilChanged(),\n tap(search => {\n this.searchValue = search;\n this.pageNumber = 1;\n this.reload();\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n\n this.data$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(rows => {\n this.rows = rows;\n this.cdr.markForCheck();\n });\n }\n\n //#endregion\n\n //#region search\n\n searchChanged(value: string): void {\n this.searchChange$.next(value);\n }\n\n clearSearch(): void {\n this.searchValue = '';\n this.columnFilters = {};\n this.pageNumber = 1;\n\n this.reload();\n }\n\n applyAdvancedFilters(): void {\n this.pageNumber = 1;\n this.reload();\n }\n\n toggleAdvancedSearch(): void {\n this.advancedSearchOpened = !this.advancedSearchOpened;\n }\n\n //#endregion\n\n //#region pagination\n\n getNextPage(event: PageEvent): void {\n this.pageNumber = event.pageIndex + 1;\n\n this.pageSize = event.pageSize;\n\n this.reload();\n }\n\n //#endregion\n\n //#region sorting\n\n sortChanged(event: any): void {\n const field = event?.active ?? event?.field;\n\n const direction = event?.direction ?? '';\n\n this.sort = {\n field,\n direction,\n };\n\n this.pageNumber = 1;\n\n this.reload();\n }\n\n //#endregion\n\n //#region data\n\n reload(): void {\n this.reload$.next();\n }\n\n private getFieldValue(row: any, field: string): unknown {\n return field.split('.').reduce((value, key) => value?.[key], row);\n }\n\n private loadOfflineData(): any[] {\n let rows = [...(this.data ?? [])];\n\n //#region global search\n\n const search = this.searchValue.trim().toLowerCase();\n\n if (search) {\n rows = rows.filter(row =>\n this.columns.some(column => {\n if (!column.field) {\n return false;\n }\n\n const value = this.getFieldValue(row, String(column.field));\n\n return String(value ?? '')\n .toLowerCase()\n .includes(search);\n }),\n );\n }\n\n //#endregion\n\n //#region column filters\n\n const filters = this.cleanFilters(this.columnFilters);\n\n for (const [field, filterValue] of Object.entries(filters)) {\n const normalizedFilter = filterValue.toLowerCase();\n\n rows = rows.filter(row => {\n const value = this.getFieldValue(row, field);\n\n return String(value ?? '')\n .toLowerCase()\n .includes(normalizedFilter);\n });\n }\n\n //#endregion\n\n //#region sorting\n\n if (this.sort?.field && this.sort.direction) {\n const field = String(this.sort.field);\n const direction = this.sort.direction === 'desc' ? -1 : 1;\n\n rows.sort((a, b) => {\n const aValue = this.getFieldValue(a, field);\n const bValue = this.getFieldValue(b, field);\n\n if (aValue === bValue) {\n return 0;\n }\n\n if (aValue === undefined || aValue === null) {\n return -1 * direction;\n }\n\n if (bValue === undefined || bValue === null) {\n return 1 * direction;\n }\n\n if (typeof aValue === 'number' && typeof bValue === 'number') {\n return (aValue - bValue) * direction;\n }\n\n return (\n String(aValue).localeCompare(String(bValue), undefined, {\n numeric: true,\n sensitivity: 'base',\n }) * direction\n );\n });\n }\n\n //#endregion\n\n //#region pagination\n\n this.totalElements = rows.length;\n\n const start = (this.pageNumber - 1) * this.pageSize;\n const end = start + this.pageSize;\n\n return this.prepareRows(rows.slice(start, end));\n\n //#endregion\n }\n\n private loadData(): Observable<any[]> {\n if (this.offlineMode) {\n return of(this.loadOfflineData());\n }\n\n if (!this.entity || !this.entityCrudController) {\n this.totalElements = 0;\n return of([]);\n }\n\n this.isLoading = true;\n this.cdr.markForCheck();\n\n const query: TaonPaginationQuery = {\n pageNumber: this.pageNumber,\n pageSize: this.pageSize,\n search: this.searchValue,\n filters: this.cleanFilters(this.columnFilters),\n sort: this.sort,\n callQueryMethod: this.callQueryMethod as any,\n };\n\n //#region handle info when not allowed method on controller level\n\n if (!this.safe && !this.entityCrudController.paginationQuery(query)) {\n throw new Error(\n `Please enable paginationQuery() method in your\n controller ${ClassHelpers.getName(this.entityCrudController)}\n\n @Controller({ allowedMethods: ['paginationQuery'] })\n class ${ClassHelpers.getName(this.entityCrudController)} ..\n `,\n );\n }\n\n if (this.safe && !this.entityCrudController.paginationQuerySafe(query)) {\n throw new Error(\n `Please enable paginationQuerySafe() method in your controller\n ${ClassHelpers.getName(this.entityCrudController)}\n\n @Controller({ allowedMethods: ['paginationQuerySafe'] })\n class ${ClassHelpers.getName(this.entityCrudController)} ..\n `,\n );\n }\n\n //#endregion\n\n return from(\n (this.safe\n ? this.entityCrudController.paginationQuerySafe\n : this.entityCrudController.paginationQuery)(query).request()\n .observable,\n ).pipe(\n tap(response => {\n this.totalElements =\n Number(response.headers.get(TaonSymbols.old.X_TOTAL_COUNT)) || 0;\n }),\n\n map(response => this.prepareRows(response.body.json)),\n\n catchError(error => {\n console.error(\n `[taon-datatable] Unable to load data from ` +\n `${ClassHelpers.getName(this.entityCrudController)} ${\n this.safe ? 'paginationQuerySafe' : 'paginationQuery'\n }`,\n error,\n );\n\n return of([]);\n }),\n\n finalize(() => {\n this.isLoading = false;\n this.cdr.markForCheck();\n }),\n );\n }\n\n //#endregion\n\n //#region helpers\n\n private cleanFilters(\n filters: Record<string, string>,\n ): Record<string, string> {\n return Object.fromEntries(\n Object.entries(filters)\n .filter(\n ([, value]) =>\n value !== undefined &&\n value !== null &&\n String(value).trim() !== '',\n )\n .map(([key, value]) => [key, String(value).trim()]),\n );\n }\n\n private prepareRows(rows: any[]): any[] {\n return rows.map(row => {\n // const result = {\n // ...row,\n // };\n\n // for (const key of Object.keys(result)) {\n // if (_.isObject(result[key])) {\n // result[key] = json5.stringify(result[key]);\n // }\n // }\n\n return row;\n });\n }\n\n private prepareColumns(): void {\n const entityClass = this.entity;\n\n if (!entityClass) {\n return;\n }\n\n const usingDefaultColumns = _.isEqual(this.columns, defaultColumns);\n\n if (!usingDefaultColumns) {\n return;\n }\n\n try {\n const props = Object.keys(getDefaultModel(entityClass as Function) || {});\n\n let columns = props\n .filter(prop =>\n this.allowedColumns.length > 0\n ? this.allowedColumns.includes(prop)\n : true,\n )\n .map(\n prop =>\n ({\n header: _.upperCase(prop),\n field: prop,\n }) as MtxGridColumn,\n );\n\n const extra = this.allowedColumns.filter(field => !props.includes(field));\n\n columns = [\n ...columns,\n ...extra.map(\n field =>\n ({\n header: _.upperCase(field),\n field,\n }) as MtxGridColumn,\n ),\n ];\n\n this.columns = columns;\n } catch (error) {\n console.error('[taon-datatable] Unable to generate columns', error);\n }\n }\n\n //#endregion\n}\n","<div class=\"flex w-full flex-col gap-3\">\n <!-- #region 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 <!-- #endregion -->\n\n <!-- #region 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 <!-- #endregion -->\n\n <!-- #region 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]=\"lazyExpansionTemplate\"\n [length]=\"totalElements\"\n [pageOnFront]=\"false\"\n [pageIndex]=\"pageNumber - 1\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showPaginator]=\"showPaginator\"\n (expansionChange)=\"onExpansionChange($event)\"\n (page)=\"getNextPage($event)\"\n (sortChange)=\"sortChanged($event)\">\n </mtx-grid>\n\n <ng-template\n #lazyExpansionTemplate\n let-row>\n @if (isExpanded(row)) {\n <ng-container\n [ngTemplateOutlet]=\"expansionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row }\">\n </ng-container>\n }\n </ng-template>\n </div>\n <!-- #endregion -->\n</div>\n","//#region imports\nimport { Routes } from '@angular/router';\nimport { adminLazyRoute } from '../index';\n//#endregion\n\nexport const TaonDatatableRoutes: Routes = [\n {\n path: '',\n loadComponent: () =>\n import('./taon-datatable.component').then(m => m.TaonDatatableComponent),\n\n children: [\n // adminLazyRoute({\n // path: 'dashboard',\n // menuItem: 'Dashboard',\n // icon: 'dashboard',\n // expandable: false,\n // loader: () =>\n // import('./anothermodule.routes').then(m => m.DashboardRoutes),\n // }),\n ],\n },\n];\n\n/**\n * By default exporting TaonDatatableRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonDatatableRoutes;","export enum TaonDraggableButtonPanelState {\n CLICKABLE_BUTTON = 'CLICKABLE_BUTTON',\n\n WINDOW = 'WINDOW',\n\n FULL_SCREEN_DRAGGABLE = 'FULL_SCREEN_DRAGGABLE',\n\n FULL_SCREEN_LOCKED = 'FULL_SCREEN_LOCKED',\n}\n\nexport namespace TaonDraggableButtonPanelModels {}\n","//#region imports\nimport { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, firstValueFrom, Subscription, take } from 'rxjs';\n\nimport { TaonDraggableButtonPanelState } from './taon-draggable-button-panel.models';\n//#endregion\n\n@Component({\n selector: 'taon-draggable-button-panel',\n standalone: true,\n imports: [\n CdkDrag,\n CdkDragHandle,\n NgIf,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n ],\n templateUrl: './taon-draggable-button-panel.component.html',\n styleUrls: ['./taon-draggable-button-panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonDraggableButtonPanelComponent implements OnInit, OnDestroy {\n readonly State = TaonDraggableButtonPanelState;\n\n @ViewChild(CdkDrag)\n private drag?: CdkDrag;\n\n @Input()\n basePath = '';\n\n @Input()\n buttonIcon = 'admin_panel_settings';\n\n @Input()\n title = 'Admin';\n\n /**\n * Named outlet containing this panel's application.\n *\n * Example:\n *\n * outlet=\"admin\"\n *\n * /products/42(admin:main;state=WINDOW/session/providers)\n */\n @Input()\n outlet?: string;\n\n /**\n * Matrix parameter used for persisting the panel state.\n */\n @Input()\n stateParamName = 'state';\n\n @Input()\n set state(state: TaonDraggableButtonPanelState) {\n this.currentState.set(state);\n }\n\n @Output()\n readonly stateChange = new EventEmitter<TaonDraggableButtonPanelState>();\n\n protected readonly forceFullScreen = signal(window.innerWidth < 900);\n\n private readonly resizeListener = (): void => {\n const wasForceFullScreen = this.forceFullScreen();\n const forceFullScreen = window.innerWidth < 900;\n\n this.forceFullScreen.set(forceFullScreen);\n\n // Desktop -> mobile: remove old CDK drag x/y transform.\n if (!wasForceFullScreen && forceFullScreen) {\n this.resetDragPosition();\n }\n };\n\n protected readonly currentState = signal(\n TaonDraggableButtonPanelState.CLICKABLE_BUTTON,\n );\n\n private routerSubscription?: Subscription;\n\n constructor(private readonly router: Router) {}\n\n async ngOnInit(): Promise<void> {\n window.addEventListener('resize', this.resizeListener);\n /**\n * IMPORTANT:\n *\n * The component may be created while Angular is still processing\n * the application's initial navigation.\n *\n * For example:\n *\n * / -> redirectTo: /app\n *\n * If we create:\n *\n * (admin:main)\n *\n * before that redirect finishes, the auxiliary outlet navigation\n * may effectively replace/interfere with the primary navigation,\n * producing:\n *\n * /(admin:main)\n *\n * instead of:\n *\n * /app(admin:main)\n */\n await this.waitForInitialNavigation();\n\n /**\n * Ensure the auxiliary outlet exists only AFTER the primary\n * application route has settled.\n */\n await this.ensureOutletBasePath();\n\n /**\n * The outlet may already contain persisted state, e.g.\n *\n * (admin:main;state=WINDOW/dashboard)\n */\n this.restoreStateFromUrl();\n\n /**\n * From this point on keep the component state synchronized\n * with subsequent router navigations.\n */\n this.routerSubscription = this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => {\n this.restoreStateFromUrl();\n });\n }\n\n ngOnDestroy(): void {\n window.removeEventListener('resize', this.resizeListener);\n this.routerSubscription?.unsubscribe();\n }\n\n protected toogleFullscreen(event: Event) {\n event.stopImmediatePropagation();\n event.stopPropagation();\n event.preventDefault();\n if (this.forceFullScreen()) {\n return;\n }\n if (this.currentState() === TaonDraggableButtonPanelState.WINDOW) {\n this.resetDragPosition();\n void this.setState(TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED);\n } else if (\n [\n TaonDraggableButtonPanelState.FULL_SCREEN_DRAGGABLE,\n TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED,\n ].includes(this.currentState())\n ) {\n this.resetDragPosition();\n void this.setState(TaonDraggableButtonPanelState.WINDOW);\n }\n }\n\n protected effectiveState(): TaonDraggableButtonPanelState {\n if (\n this.forceFullScreen() &&\n this.currentState() !== TaonDraggableButtonPanelState.CLICKABLE_BUTTON\n ) {\n return TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED;\n }\n\n return this.currentState();\n }\n\n // ===========================================================================\n // INITIAL ROUTING\n // ===========================================================================\n\n private async waitForInitialNavigation(): Promise<void> {\n /**\n * Router already completed at least one navigation.\n */\n if (this.router.navigated) {\n return;\n }\n\n /**\n * Wait until redirects/lazy routing/etc. belonging to the initial\n * navigation have settled.\n */\n await firstValueFrom(\n this.router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n take(1),\n ),\n );\n }\n\n private async ensureOutletBasePath(): Promise<void> {\n if (!this.outlet || !this.basePath) {\n return;\n }\n\n /**\n * IMPORTANT:\n *\n * Parse the URL only AFTER initial navigation has completed.\n *\n * At this point:\n *\n * /\n *\n * may already have become:\n *\n * /app\n */\n const tree = this.router.parseUrl(this.router.url);\n\n /**\n * Outlet already exists — preserve it exactly as it is.\n *\n * Examples:\n *\n * /app(admin:main)\n *\n * /app(admin:main;state=WINDOW/dashboard)\n */\n if (tree.root.children[this.outlet]) {\n return;\n }\n\n const baseSegments = this.basePath.split('/').filter(Boolean);\n\n if (!baseSegments.length) {\n return;\n }\n\n /**\n * Add the auxiliary outlet while preserving the current\n * primary route.\n *\n * Example:\n *\n * /app\n *\n * becomes:\n *\n * /app(admin:main)\n */\n await this.router.navigate(\n [\n {\n outlets: {\n [this.outlet]: baseSegments,\n },\n },\n ],\n {\n replaceUrl: true,\n },\n );\n }\n\n // ===========================================================================\n // STATE\n // ===========================================================================\n\n protected async setState(next: TaonDraggableButtonPanelState): Promise<void> {\n if (!this.isTransitionAllowed(next)) {\n return;\n }\n\n this.currentState.set(next);\n\n this.stateChange.emit(next);\n\n await this.saveStateToUrl(next);\n }\n\n protected open(): void {\n void this.setState(TaonDraggableButtonPanelState.WINDOW);\n }\n\n protected returnToButton(): void {\n void this.setState(TaonDraggableButtonPanelState.CLICKABLE_BUTTON);\n }\n\n protected windowMode(): void {\n void this.setState(TaonDraggableButtonPanelState.WINDOW);\n }\n\n protected fullScreenDraggable(): void {\n this.resetDragPosition();\n\n void this.setState(TaonDraggableButtonPanelState.FULL_SCREEN_DRAGGABLE);\n }\n\n protected lockFullScreen(): void {\n this.resetDragPosition();\n\n void this.setState(TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED);\n }\n\n protected isDraggingEnabled(): boolean {\n if (this.forceFullScreen()) {\n return false;\n }\n\n return (\n this.currentState() === TaonDraggableButtonPanelState.WINDOW ||\n this.currentState() ===\n TaonDraggableButtonPanelState.FULL_SCREEN_DRAGGABLE\n );\n }\n\n // ===========================================================================\n // URL STATE\n // ===========================================================================\n\n private restoreStateFromUrl(): void {\n if (!this.outlet) {\n return;\n }\n\n const tree = this.router.parseUrl(this.router.url);\n\n const outletGroup = tree.root.children[this.outlet];\n\n if (!outletGroup) {\n return;\n }\n\n /**\n * State is stored on the first auxiliary outlet segment:\n *\n * admin:\n *\n * main;state=WINDOW/dashboard\n * └────────────────┘\n */\n const rootSegment = outletGroup.segments[0];\n\n if (!rootSegment) {\n return;\n }\n\n const state = rootSegment.parameters[this.stateParamName];\n\n if (!this.isValidState(state)) {\n return;\n }\n\n /**\n * URL restoration should NOT go through the transition\n * state machine.\n *\n * A bookmarked/refreshed URL is authoritative.\n */\n this.currentState.set(state);\n\n /**\n * Fullscreen must never inherit an old CdkDrag transform.\n */\n if (\n state === TaonDraggableButtonPanelState.FULL_SCREEN_DRAGGABLE ||\n state === TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED\n ) {\n queueMicrotask(() => {\n this.resetDragPosition();\n });\n }\n }\n\n private async saveStateToUrl(\n state: TaonDraggableButtonPanelState,\n ): Promise<void> {\n if (!this.outlet) {\n return;\n }\n\n const tree = this.router.parseUrl(this.router.url);\n\n const outletGroup = tree.root.children[this.outlet];\n\n /**\n * The outlet might not yet exist.\n *\n * In that case there is nowhere sensible to attach\n * its matrix parameter.\n */\n if (!outletGroup || outletGroup.segments.length === 0) {\n return;\n }\n\n const rootSegment = outletGroup.segments[0];\n\n /**\n * Preserve any existing matrix parameters.\n */\n rootSegment.parameters = {\n ...rootSegment.parameters,\n\n [this.stateParamName]: state,\n };\n\n await this.router.navigateByUrl(tree, {\n replaceUrl: true,\n });\n }\n\n private isValidState(\n value: string | undefined,\n ): value is TaonDraggableButtonPanelState {\n return Object.values(TaonDraggableButtonPanelState).includes(\n value as TaonDraggableButtonPanelState,\n );\n }\n\n // ===========================================================================\n // DRAG\n // ===========================================================================\n\n private resetDragPosition(): void {\n this.drag?.reset();\n }\n\n // ===========================================================================\n // TRANSITIONS\n // ===========================================================================\n\n private isTransitionAllowed(next: TaonDraggableButtonPanelState): boolean {\n const current = this.currentState();\n\n const transitions: Record<\n TaonDraggableButtonPanelState,\n TaonDraggableButtonPanelState[]\n > = {\n [TaonDraggableButtonPanelState.CLICKABLE_BUTTON]: [\n TaonDraggableButtonPanelState.WINDOW,\n ],\n\n [TaonDraggableButtonPanelState.WINDOW]: [\n TaonDraggableButtonPanelState.CLICKABLE_BUTTON,\n TaonDraggableButtonPanelState.FULL_SCREEN_DRAGGABLE,\n TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED,\n ],\n\n [TaonDraggableButtonPanelState.FULL_SCREEN_DRAGGABLE]: [\n TaonDraggableButtonPanelState.CLICKABLE_BUTTON,\n TaonDraggableButtonPanelState.WINDOW,\n TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED,\n ],\n\n [TaonDraggableButtonPanelState.FULL_SCREEN_LOCKED]: [\n TaonDraggableButtonPanelState.CLICKABLE_BUTTON,\n TaonDraggableButtonPanelState.WINDOW,\n TaonDraggableButtonPanelState.FULL_SCREEN_DRAGGABLE,\n ],\n };\n\n return transitions[current].includes(next);\n }\n}\n","@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-window-full]=\"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","//#region imports\nimport { Routes } from '@angular/router';\n\nimport { TaonDraggableButtonPanelComponent } from './taon-draggable-button-panel.component';\n//#endregion\n\nexport const TaonDraggableButtonPanelRoutes: Routes = [\n {\n path: '',\n component: TaonDraggableButtonPanelComponent,\n },\n // {\n // path: 'anothermodulepath',\n // loadChildren: () => import('anothermodule')\n // .then(m => m.AnotherLazyModule),\n // },\n];\n\n/**\n * By default exporting TaonDraggableButtonPanelRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\nexport default TaonDraggableButtonPanelRoutes;","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels } from 'tnp-core/websql';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibTaonBackofficeNotificationsTaonBackofficeNotificationsComponentTs } from './taon-backoffice-notifications.component.ts.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibTaonBackofficeNotificationsTaonBackofficeNotificationsComponentTs } from './taon-backoffice-notifications.component.ts.pl-PL.i18n.data';;\nexport type TaonBackofficeNotificationsOverride = CoreModels.DeepPartial<EnUsTraslationOverrideSrcLibTaonBackofficeNotificationsTaonBackofficeNotificationsComponentTs \n| PlPlTraslationOverrideSrcLibTaonBackofficeNotificationsTaonBackofficeNotificationsComponentTs>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY\n ","// @ts-nocheck\n// This file is auto-generated during init process. Do not modify.\n// This disable this auto generate file.\n// set property \"shouldGenerateAutogenIndexFile: false\" \n// in taon.jsonc of your project. \nexport * from './build-info._auto-generated_'; \nexport * from './my-organization-proj'; \nexport * from './start-cli'; \nexport * from './directives/taon-horizontal-wheel-scrolling.directive'; // @browser\nexport * from './i18n/lib.translation'; \nexport * from './taon-admin-layout/taon-admin-layout.component'; // @browser\nexport * from './taon-admin-layout/taon-admin-layout.models'; \nexport * from './taon-admin-layout/taon-admin-page-tabs.component'; // @browser\nexport * from './taon-admin-layout/taon-base-admin-page.component'; // @browser\nexport * from './taon-backoffice-notifications/taon-backoffice-notifications.component'; // @browser\nexport * from './taon-backoffice-notifications/taon-backoffice-notifications.models'; \nexport * from './taon-backoffice-notifications/taon-backoffice-notifications.service'; // @browser\nexport * from './taon-backoffice-notifications/taon-error-details-dialog.component'; // @browser\nexport * from './taon-backoffice-notifications/taon-error-toast.component'; // @browser\nexport * from './taon-confirm-dialog/taon-confirm-dialog.component'; // @browser\nexport * from './taon-confirm-dialog/taon-confirm-dialog.models'; \nexport * from './taon-datatable/taon-datatable.component'; // @browser\nexport * from './taon-datatable/taon-datatable.models'; \nexport * from './taon-datatable/taon-datatable.routes'; // @browser\nexport * from './taon-draggable-button-panel/taon-draggable-button-panel.component'; // @browser\nexport * from './taon-draggable-button-panel/taon-draggable-button-panel.models'; \nexport * from './taon-draggable-button-panel/taon-draggable-button-panel.routes'; // @browser\nexport * from './taon-backoffice-notifications/i18n/taon-backoffice-notifications.translation'; ","export * from './migrations';\n/* */ \nexport * from './index._auto-generated_';\nexport * from './my-organization-proj';\n/* */ \nexport default {};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["t","i2","i1","i3","TaonSymbols","i4","i5"],"mappings":"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"}
|