@arsedizioni/ars-utils 21.2.327 → 21.2.330

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.
@@ -1 +1 @@
1
- {"version":3,"file":"arsedizioni-ars-utils-ui.mjs","sources":["../../../projects/ars-utils/ui/ui/paginatorIntl.ts","../../../projects/ars-utils/ui/ui/dialogs/busy/busy-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/busy/busy-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/confirm/confirm-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/confirm/confirm-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/info/info-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/info/info-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/toast/toast.component.ts","../../../projects/ars-utils/ui/ui/dialogs/toast/toast.component.html","../../../projects/ars-utils/ui/ui/services/ui.service.ts","../../../projects/ars-utils/ui/ui/dialogs/delete/delete-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/delete/delete-dialog.component.html","../../../projects/ars-utils/ui/ui/services/dialog.service.ts","../../../projects/ars-utils/ui/ui/ui.module.ts","../../../projects/ars-utils/ui/ui/components/password-strength/password-strength.component.ts","../../../projects/ars-utils/ui/ui/components/password-strength/password-strength.component.html","../../../projects/ars-utils/ui/ui/components/otp/otp-input.component.ts","../../../projects/ars-utils/ui/ui/components/otp/otp-input.component.html","../../../projects/ars-utils/ui/ui/dialogs/credentials/credentials-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/credentials/credentials-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/recover-password/recover-password-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/recover-password/recover-password-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/reset-password/reset-password-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/reset-password/reset-password-dialog.component.html","../../../projects/ars-utils/ui/ui/directives/flex/breakpoints.ts","../../../projects/ars-utils/ui/ui/directives/flex/media-observer.service.ts","../../../projects/ars-utils/ui/ui/directives/flex/if-bp.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/responsive-base.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-flex-extras.directives.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-flex.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-grid.directives.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-layout-align.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-layout-gap.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-layout.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-show-hide.directives.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-style-class.directives.ts","../../../projects/ars-utils/ui/public_api.ts","../../../projects/ars-utils/ui/arsedizioni-ars-utils-ui.ts"],"sourcesContent":["import { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { Injectable } from '@angular/core';\r\n\r\n/** Italian localisation for the Material paginator labels. */\r\n@Injectable()\r\nexport class PaginatorIntl extends MatPaginatorIntl {\r\n override itemsPerPageLabel = 'Elementi per pagina';\r\n override nextPageLabel = 'Prossima pagina';\r\n override previousPageLabel = 'Pagina precedente';\r\n override lastPageLabel = 'Ultima pagina';\r\n override firstPageLabel = 'Prima pagina';\r\n\r\n /**\r\n * Returns the human-readable range label shown inside the paginator.\r\n * @param page - Zero-based index of the current page.\r\n * @param pageSize - Number of items displayed per page.\r\n * @param length - Total number of items, or `-1` when the total is still being calculated.\r\n * @returns A formatted string such as `\"1 - 25 di 100\"`.\r\n */\r\n override getRangeLabel = (page: number, pageSize: number, length: number): string => {\r\n if (length === -1) {\r\n return '0 di calcolo...';\r\n }\r\n if (length === 0 || pageSize === 0) {\r\n return `0 di ${length}`;\r\n }\r\n const totalLength = Math.max(length, 0);\r\n const startIndex = page * pageSize;\r\n // If the start index exceeds the list length, do not try to fix the end index.\r\n const endIndex =\r\n startIndex < totalLength\r\n ? Math.min(startIndex + pageSize, totalLength)\r\n : startIndex + pageSize;\r\n return `${startIndex + 1} - ${endIndex} di ${totalLength}`;\r\n };\r\n}\r\n","import { ChangeDetectionStrategy, Component, signal } from '@angular/core';\r\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { MatIcon } from '@angular/material/icon';\r\n\r\n/**\r\n * Overlay dialog that blocks interaction while a background operation is in progress.\r\n * Supports four visual styles: progress bar, spinner, hourglass, and wait icon.\r\n */\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './busy-dialog.component.html',\r\n styleUrl: './busy-dialog.component.scss',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [FlexModule, MatProgressBarModule, MatProgressSpinnerModule, MatIcon, SafeHtmlPipe]\r\n})\r\nexport class BusyDialogComponent {\r\n /** Visual style of the busy indicator. */\r\n readonly type = signal<'bar' | 'spinner' | 'wait' | 'hourglass'>('bar');\r\n\r\n /** Current progress value (0–100). Used when `progressMode` is `'determinate'`. */\r\n readonly progress = signal<number>(0);\r\n\r\n /** Progress mode passed to the Material progress components. */\r\n readonly progressMode = signal<'determinate' | 'indeterminate'>('indeterminate');\r\n\r\n /** Message displayed above the progress indicator. */\r\n readonly message = signal<string>('');\r\n\r\n /**\r\n * Updates the busy dialog state.\r\n * @param message - New message to display. Ignored when empty, preserving the previous text.\r\n * @param progress - Current progress value (0–100). A value > 0 forces `'determinate'` mode.\r\n * @param progressMode - Progress bar/spinner mode (default: `'indeterminate'`).\r\n * @param type - Visual style to use (default: `'bar'`).\r\n */\r\n set(\r\n message: string,\r\n progress: number,\r\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\r\n type: 'bar' | 'spinner' | 'wait' | 'hourglass' = 'bar'\r\n ): void {\r\n if (message) {\r\n this.message.set(message);\r\n }\r\n if (type) {\r\n this.type.set(type);\r\n }\r\n this.progress.set(progress);\r\n this.progressMode.set(progress > 0 ? 'determinate' : progressMode);\r\n }\r\n}\r\n","@if(type() === 'hourglass') {\r\n<div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <div><mat-icon class=\"mat-icon-spinner\">hourglass</mat-icon></div>\r\n @if (message()) {\r\n <div [innerHTML]=\"message() | safeHtml\" class=\"busy-message\"></div>\r\n }\r\n</div>\r\n} @else if (type() === 'wait') {\r\n<div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <div><mat-icon class=\"mat-icon-spinner\">hourglass</mat-icon></div>\r\n</div>\r\n} @else {\r\n<div class=\"busy-panel\">\r\n <div fxLayout=\"column\" fxFill>\r\n @if (message()) {\r\n <div [innerHTML]=\"message() | safeHtml\" class=\"busy-message\"></div>\r\n }\r\n @if (type() === 'bar') {\r\n <div>\r\n <mat-progress-bar [mode]=\"progressMode()\" [value]=\"progress()\"\r\n style=\"margin:15px auto 0 auto; max-width: 350px;\"></mat-progress-bar>\r\n </div>\r\n } @else if (type() === 'spinner') {\r\n <div>\r\n <mat-progress-spinner [mode]=\"progressMode()\" diameter=\"70\" [value]=\"progress()\"\r\n style=\"margin:15px auto 0 auto;\"></mat-progress-spinner>\r\n </div>\r\n }\r\n @if (progress() > 0) {\r\n <div>\r\n <span style=\"font-size: smaller;\"><b>{{progress()}}%</b></span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n}","import { ChangeDetectionStrategy, Component, inject, output, signal } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\r\nimport { DialogOption, DialogResult } from '../../definitions';\r\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\nexport interface ConfirmDialogOption extends DialogOption {}\r\n\r\nexport interface ConfirmDialogData {\r\n title?: string;\r\n message: string;\r\n okCaption?: string;\r\n cancelCaption?: string;\r\n otherCaption?: string;\r\n options?: ConfirmDialogOption[];\r\n details?: string;\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './confirm-dialog.component.html',\r\n styleUrl: './confirm-dialog.component.scss',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, MatDialogContent, MatDialogClose, FlexModule, MatCheckboxModule, FormsModule,\r\n MatDialogActions, MatButtonModule, SafeHtmlPipe]\r\n})\r\nexport class ConfirmDialogComponent {\r\n /** Emitted when the user makes a choice. Carries the selected result and any option state. */\r\n readonly choosen = output<DialogResult>();\r\n\r\n private readonly dialogRef = inject(MatDialogRef<ConfirmDialogComponent>);\r\n\r\n /** Dialog configuration, with sensible defaults applied at construction time. */\r\n protected readonly dialogData = signal<ConfirmDialogData>({\r\n title: 'Conferma',\r\n okCaption: 'Si',\r\n cancelCaption: 'No',\r\n message: '',\r\n ...((inject(MAT_DIALOG_DATA) as ConfirmDialogData | null) ?? {}),\r\n });\r\n\r\n constructor() {\r\n // Ensure optional captions always have a value even when the caller omits them\r\n this.dialogData.update(d => ({\r\n ...d,\r\n title: d.title ?? 'Conferma',\r\n okCaption: d.okCaption ?? 'Si',\r\n cancelCaption: d.cancelCaption ?? 'No',\r\n }));\r\n }\r\n\r\n /**\r\n * Confirms the dialog, emitting `'ok'` together with the current option selections.\r\n */\r\n ok(): void {\r\n this.choosen.emit({ result: 'ok', options: this.dialogData().options });\r\n this.dialogRef.close();\r\n }\r\n\r\n /**\r\n * Cancels the dialog, emitting `'cancel'`.\r\n */\r\n cancel(): void {\r\n this.choosen.emit({ result: 'cancel' });\r\n this.dialogRef.close();\r\n }\r\n\r\n /**\r\n * Triggers the tertiary action, emitting `'other'`.\r\n */\r\n other(): void {\r\n this.choosen.emit({ result: 'other' });\r\n this.dialogRef.close();\r\n }\r\n}\r\n","<h2 mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></h2>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <div fxLayout=\"column\" fxLayoutGap=\"24px\" fxFill>\r\n <div fxFlex=\"*\">\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\"></div>\r\n }\r\n </div>\r\n @if (dialogData().details) {\r\n <div class=\"details-box\">\r\n <p class=\"x-small uppercase secondary\">Dettaglio:</p>\r\n <div class=\"small details\">\r\n <div [innerHtml]=\"dialogData().details | safeHtml\"></div>\r\n </div>\r\n </div>\r\n }\r\n @if (dialogData().options) {\r\n <div>\r\n @for (o of dialogData().options; track o; let i = $index) {\r\n <div>\r\n <mat-checkbox (change)=\"o.selected = $event.checked\" [checked]=\"o.selected === true\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <br>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" fxFill>\r\n <div fxFlex=\"30\">\r\n @if (dialogData().otherCaption) {\r\n <button mat-flat-button (click)=\"other()\"\r\n [mat-dialog-close]=\"true\">{{dialogData().otherCaption}}</button>\r\n }\r\n </div>\r\n <div fxFlex=\"70\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button (click)=\"ok()\"\r\n [mat-dialog-close]=\"true\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" (click)=\"cancel()\">{{dialogData().cancelCaption}}</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>","import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { DialogService } from '../../services/dialog.service';\r\n\r\nexport interface InfoDialogData {\r\n title?: string;\r\n message: string;\r\n details?: string;\r\n okCaption?: string;\r\n dismissAfter?: number;\r\n onNavigate?: (url: string) => void;\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './info-dialog.component.html',\r\n styleUrl: './info-dialog.component.scss',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, MatDialogContent, MatDialogActions, FlexModule,\r\n MatButtonModule, MatIconModule, MatDialogClose, MatTooltipModule, SafeHtmlPipe]\r\n})\r\nexport class InfoDialogComponent {\r\n private readonly dialogService = inject(DialogService);\r\n private readonly dialogRef = inject(MatDialogRef<InfoDialogComponent>);\r\n\r\n /** Dialog configuration with defaults applied at construction time. */\r\n protected readonly dialogData = signal<InfoDialogData>((() => {\r\n const raw = (inject(MAT_DIALOG_DATA) as InfoDialogData | null) ?? { message: '' };\r\n return { title: 'Informazioni', ...raw };\r\n })());\r\n\r\n constructor() {\r\n // Schedule auto-dismiss if configured\r\n const dismissAfter = this.dialogData().dismissAfter;\r\n if (dismissAfter) {\r\n setTimeout(() => this.dialogRef.close(), dismissAfter);\r\n }\r\n }\r\n\r\n /**\r\n * Replaces the dialog data at runtime (e.g. after an async operation resolves).\r\n * Also re-schedules the auto-dismiss timer if `dismissAfter` is set.\r\n * @param data - The new dialog data to display.\r\n */\r\n public setData(data: InfoDialogData): void {\r\n this.dialogData.set({ title: 'Informazioni', ...data });\r\n if (data.dismissAfter) {\r\n setTimeout(() => this.dialogRef.close(), data.dismissAfter);\r\n }\r\n }\r\n\r\n /**\r\n * Invokes the optional navigation callback provided by the caller.\r\n * @param url - The URL to navigate to.\r\n */\r\n protected navigate(url: string): void {\r\n this.dialogData().onNavigate?.(url);\r\n }\r\n\r\n /**\r\n * Copy to clipboard\r\n */\r\n protected async copy(): Promise<void> {\r\n const elem = document.getElementById('info-dialog-content');\r\n if (!elem) return;\r\n const htmlBlob = new Blob([elem.innerHTML], { type: 'text/html' });\r\n const textBlob = new Blob([elem.innerText], { type: 'text/plain' });\r\n try {\r\n const data = [\r\n new ClipboardItem({\r\n 'text/html': htmlBlob,\r\n 'text/plain': textBlob\r\n })\r\n ];\r\n setTimeout(async () => {\r\n window.focus();\r\n await navigator.clipboard.write(data);\r\n }, 0);\r\n this.dialogService.toast('Copiato negli appunti.');\r\n } catch (err) {\r\n this.dialogService.toast(`Errore copiando negli appunti: ${err}`);\r\n }\r\n }\r\n}\r\n","<h2 mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></h2>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <div fxLayout=\"column\" fxLayoutGap=\"24px\" fxFill id=\"info-dialog-content\">\r\n <div fxFlex=\"*\">\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\"></div>\r\n }\r\n </div>\r\n @if (dialogData().details) {\r\n <div class=\"details-box\">\r\n <p class=\"x-small uppercase secondary\">Dettaglio:</p>\r\n <div class=\"small details\">\r\n <div [innerHtml]=\"dialogData().details | safeHtml\"></div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <br>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxFill>\r\n <button mat-icon-button (click)=\"copy()\" matTooltip=\"Copia negli appunti\"><mat-icon>content_copy</mat-icon></button>\r\n <button mat-flat-button [mat-dialog-close]=\"true\" cdkFocusInitial>{{dialogData().okCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import { Component, ChangeDetectionStrategy, inject, output, signal } from '@angular/core';\r\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\r\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\n\r\nexport interface ToastData {\r\n message: string;\r\n icon?: string;\r\n actionCaption?: string;\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './toast.component.html',\r\n styleUrl: './toast.component.scss',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [FlexModule, MatIconModule, MatButtonModule, SafeHtmlPipe]\r\n})\r\nexport class ToastComponent {\r\n /** Emitted when the user clicks the optional action button. */\r\n readonly action = output<void>();\r\n\r\n /** Snack-bar payload with a safe fallback to an empty message when no data is injected. */\r\n protected readonly dialogData = signal<ToastData>(\r\n (inject(MAT_SNACK_BAR_DATA) as ToastData | null) ?? { message: '' }\r\n );\r\n\r\n /**\r\n * Emits the `action` event to notify the caller that the action button was clicked.\r\n */\r\n protected do(): void {\r\n this.action.emit();\r\n }\r\n}\r\n","<div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n @if (dialogData().icon) {\r\n <div fxFlex='30px' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n <mat-icon>{{dialogData().icon}}</mat-icon>\r\n </div>\r\n }\r\n <div fxFlex='*' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n @if (dialogData().message) {\r\n <span [innerHTML]=\"dialogData().message | safeHtml\"></span>\r\n }\r\n </div>\r\n @if (dialogData().actionCaption) {\r\n <div fxLayoutAlign=\"end\" fxFlexAlign=\"center\">\r\n <div style=\"padding-left: 20px;\">\r\n <button type=\"button\" mat-flat-button (click)=\"do()\"\r\n [innerHTML]=\"dialogData().actionCaption\"></button>\r\n </div>\r\n </div>\r\n }\r\n</div>","import { Injectable, signal } from '@angular/core';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UIService {\r\n\r\n /**\r\n * The default Material form-field appearance used across dialogs and forms.\r\n * Defaults to `'fill'`.\r\n */\r\n readonly appearance = signal<'fill' | 'outline'>('fill');\r\n\r\n /**\r\n * Updates the global form-field appearance.\r\n * @param value - The new appearance value. Falls back to `'fill'` when `undefined` is passed.\r\n */\r\n setAppearance(value: 'fill' | 'outline' | undefined): void {\r\n this.appearance.set(value ?? 'fill');\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, output, signal } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\r\nimport { DialogResult } from '../../definitions';\r\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\n\r\nexport enum DeleteDialogConfirmMode {\r\n None = 0,\r\n Simple = 1,\r\n Strong = 2\r\n}\r\n\r\nexport interface DeleteDialogData {\r\n title?: string;\r\n message: string;\r\n confirmMode: DeleteDialogConfirmMode;\r\n okCaption?: string;\r\n cancelCaption?: string;\r\n details?: string;\r\n appearance?: MatFormFieldAppearance;\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './delete-dialog.component.html',\r\n styleUrl: './delete-dialog.component.scss',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, MatDialogContent, MatDialogClose, FlexModule, MatCheckboxModule, FormsModule,\r\n MatDialogActions, MatButtonModule, MatFormFieldModule, MatInputModule, SafeHtmlPipe]\r\n})\r\nexport class DeleteDialogComponent {\r\n /** Emitted when the user makes a choice. Carries the selected result. */\r\n readonly choosen = output<DialogResult>();\r\n\r\n private readonly dialogRef = inject(MatDialogRef<DeleteDialogComponent>);\r\n\r\n /** Dialog configuration with defaults applied at construction time. */\r\n protected readonly dialogData = signal<DeleteDialogData>((() => {\r\n const raw = (inject(MAT_DIALOG_DATA) as DeleteDialogData | null) ?? {};\r\n return {\r\n title: 'Attenzione',\r\n okCaption: 'Si',\r\n cancelCaption: 'No',\r\n confirmMode: DeleteDialogConfirmMode.None,\r\n message: '',\r\n ...raw,\r\n };\r\n })());\r\n\r\n /**\r\n * Whether the user has confirmed the deletion.\r\n * Starts as `true` for all modes except `Simple`, which requires explicit checkbox confirmation.\r\n */\r\n protected readonly confirmed = signal<boolean>(\r\n this.dialogData().confirmMode !== DeleteDialogConfirmMode.Simple\r\n );\r\n\r\n /** Current value typed into the strong-confirmation text field. */\r\n protected confirmValue?: string;\r\n\r\n /**\r\n * Confirms the deletion, emitting `'ok'` and closing the dialog.\r\n */\r\n ok(): void {\r\n this.choosen.emit({ result: 'ok' });\r\n this.dialogRef.close();\r\n }\r\n\r\n /**\r\n * Cancels the operation, emitting `'cancel'` and closing the dialog.\r\n */\r\n cancel(): void {\r\n this.choosen.emit({ result: 'cancel' });\r\n this.dialogRef.close();\r\n }\r\n}\r\n","<h2 mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></h2>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n <div fxLayout=\"column\" fxLayoutGap=\"24px\" fxFill>\r\n <div fxFlex=\"*\">\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\"></div>\r\n }\r\n </div>\r\n @if (dialogData().details) {\r\n <div class=\"details-box\">\r\n <p class=\"x-small uppercase secondary\">Dettaglio:</p>\r\n <div class=\"small details\">\r\n <div [innerHtml]=\"dialogData().details | safeHtml\"></div>\r\n </div>\r\n </div>\r\n }\r\n @if (dialogData().confirmMode === 1) {\r\n <div>\r\n <mat-checkbox (change)=\"confirmed.set($event.checked)\" [checked]=\"confirmed()\">\r\n Confermo la cancellazione\r\n </mat-checkbox>\r\n </div>\r\n } @else if (dialogData().confirmMode === 2) {\r\n <p>Per confermare la cancellazione digita la parola <i><b>elimina</b></i>.</p>\r\n <mat-form-field style=\"width: 200px\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Conferma</mat-label>\r\n <input matInput #field_confirm=\"ngModel\" [(ngModel)]=\"confirmValue\" name=\"field_confirm\" required\r\n [attr.aria-label]=\"'Digita la parola -elimina-'\">\r\n @if (field_confirm.invalid) {\r\n <mat-error>Digita la parola \"elimina\"</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <br>\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"end center\" fxFill>\r\n <button mat-flat-button (click)=\"ok()\"\r\n [disabled]=\"f.form.invalid || (confirmValue && confirmValue.toLowerCase() !== 'elimina') || !confirmed()\"\r\n [mat-dialog-close]=\"true\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\"\r\n (click)=\"cancel()\">{{dialogData().cancelCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\r\nimport { PlatformLocation } from '@angular/common';\r\nimport { ComponentRef, inject, Injectable } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSnackBar, MatSnackBarRef } from '@angular/material/snack-bar';\r\nimport { SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { Observable, Subscription, timer } from 'rxjs';\r\nimport { first, tap } from 'rxjs/operators';\r\nimport { BusyDialogComponent } from '../dialogs/busy/busy-dialog.component';\r\nimport {\r\n ConfirmDialogComponent,\r\n ConfirmDialogData,\r\n ConfirmDialogOption\r\n} from '../dialogs/confirm/confirm-dialog.component';\r\nimport {\r\n InfoDialogComponent,\r\n InfoDialogData\r\n} from '../dialogs/info/info-dialog.component';\r\nimport { ToastComponent, ToastData } from '../dialogs/toast/toast.component';\r\nimport { UIService } from './ui.service';\r\nimport { DeleteDialogComponent, DeleteDialogConfirmMode, DeleteDialogData } from '../dialogs/delete/delete-dialog.component';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\nexport interface IDialogService {}\r\n\r\ninterface PopHistoryEntry {\r\n id: string;\r\n value: number;\r\n}\r\n\r\nexport class BusyTimer {\r\n private readonly subscription: Subscription;\r\n\r\n constructor(\r\n private readonly dialogService: DialogService,\r\n due: number = 100,\r\n message: string = 'Operazione in corso...'\r\n ) {\r\n this.subscription = timer(due).pipe(tap(() => this.dialogService.busy(message))).subscribe();\r\n }\r\n\r\n /** Dispose object */\r\n clear(): void {\r\n this.subscription.unsubscribe();\r\n this.dialogService.clearBusy();\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService extends UIService {\r\n\r\n private readonly dialog = inject(MatDialog);\r\n private readonly overlay = inject(Overlay);\r\n private readonly snackBar = inject(MatSnackBar);\r\n private readonly location = inject(PlatformLocation);\r\n\r\n private busyDialogRef?: OverlayRef;\r\n private busyComponentRef?: ComponentRef<BusyDialogComponent>;\r\n private errorDialogRef?: MatDialogRef<InfoDialogComponent>;\r\n private readonly popHistory: PopHistoryEntry[] = [];\r\n private popState = true;\r\n private poppingState = false;\r\n\r\n constructor() {\r\n super();\r\n\r\n // Handle dialog close when back button is clicked\r\n this.location.onPopState(() => {\r\n if (!this.poppingState) {\r\n const count = this.dialog.openDialogs.length;\r\n if (count > 0) {\r\n // Disable pop state if needed\r\n this.popState = false;\r\n // Close dialog\r\n this.dialog.openDialogs[count - 1].close();\r\n }\r\n } else {\r\n this.poppingState = false;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Removes trailing `#` characters from the current URL (e.g. after a page reload).\r\n * @param resetPoppingState - When `true`, resets the internal popping-state flag.\r\n */\r\n clearUrl(resetPoppingState: boolean = false): void {\r\n const url = location.href;\r\n let l = url.length;\r\n while (l >= 0 && url[l - 1] === '#') l--;\r\n if (l < url.length)\r\n history.replaceState({}, '', url.substring(0, l));\r\n if (resetPoppingState)\r\n this.poppingState = false;\r\n }\r\n\r\n /**\r\n * Close all dialogs\r\n */\r\n closeAll(): void {\r\n this.dialog.closeAll();\r\n }\r\n\r\n\r\n /**\r\n * Opens a Material dialog. Returns `null` when not running in a browser.\r\n * @param component - The component to open as a dialog.\r\n * @param config - The dialog configuration.\r\n * @returns The dialog reference, or `null` outside the browser.\r\n */\r\n open<T>(component: ComponentType<T>, config: MatDialogConfig<unknown>): MatDialogRef<T> | null {\r\n if (!SystemUtils.isBrowser()) return null;\r\n this.clearBusy();\r\n return this.openDialog(component, config);\r\n }\r\n\r\n\r\n /**\r\n * Internal helper that wraps `MatDialog.open`, subscribes to lifecycle hooks\r\n * and manages browser-history push/pop entries.\r\n * @param component - The component to open.\r\n * @param config - The dialog configuration.\r\n * @returns The dialog reference.\r\n */\r\n private openDialog<T>(component: ComponentType<T>, config: MatDialogConfig<unknown>): MatDialogRef<T> {\r\n // We will take care of navigation\r\n config.closeOnNavigation = false;\r\n const d = this.dialog.open(component, config);\r\n d.afterOpened().pipe(first()).subscribe(() => this.pushDialog(d.id));\r\n d.beforeClosed().pipe(first()).subscribe(() => this.popDialog(d.id));\r\n d.afterClosed().pipe(first()).subscribe(() => {\r\n // Final cleanup of middle objects\r\n this.errorDialogRef = undefined;\r\n });\r\n return d;\r\n }\r\n\r\n /**\r\n * Returns the element height including margins\r\n * @param element - element\r\n * @returns the height\r\n */\r\n private outerHeight(element: HTMLElement): number {\r\n if (!SystemUtils.isBrowser()) return 0;\r\n const height = element.offsetHeight;\r\n const style = window.getComputedStyle(element);\r\n return (['top', 'bottom'] as const)\r\n .map(side => parseInt(style.getPropertyValue(`margin-${side}`), 10))\r\n .reduce((total, margin) => total + margin, height);\r\n }\r\n\r\n /**\r\n * Return current dialog height\r\n */\r\n getCurrentDialogHeight(): number {\r\n if (!SystemUtils.isBrowser()) return 0;\r\n const count = this.popHistory.length;\r\n if (count > 0) {\r\n let id = this.popHistory[count - 1].id;\r\n let elem = document.getElementById(id);\r\n if (elem && elem.clientHeight > 0) return elem.clientHeight;\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Returns the scrollable content area height for the topmost open dialog.\r\n * @param fixedPartsClassName - CSS class names of fixed (non-scrollable) elements whose heights are subtracted.\r\n * @param minimalHeight - Minimum height floor to use when the dialog height is smaller.\r\n * @returns The computed scrollable height in pixels.\r\n */\r\n getCurrentDialogScrollableHeight(\r\n fixedPartsClassName: string[],\r\n minimalHeight: number\r\n ): number {\r\n if (!SystemUtils.isBrowser()) return 0;\r\n let h = Math.max(this.getCurrentDialogHeight(), minimalHeight);\r\n if (fixedPartsClassName) {\r\n fixedPartsClassName.forEach(n => {\r\n const elems = document.getElementsByClassName(n);\r\n if (elems) {\r\n for (let i = 0; i < elems.length; i++) {\r\n h -= this.outerHeight(elems[i] as HTMLElement);\r\n }\r\n }\r\n });\r\n }\r\n return h;\r\n }\r\n\r\n /**\r\n * Push a dialog into the browser history\r\n */\r\n private pushDialog(id: string): void {\r\n if (!SystemUtils.isBrowser()) return;\r\n const index = history.length;\r\n history.pushState({ index }, '', location.href + '#');\r\n this.popHistory.push({ id, value: index });\r\n }\r\n\r\n /**\r\n * Pop a dialog from the history\r\n */\r\n private popDialog(id?: string): void {\r\n if (!SystemUtils.isBrowser()) return;\r\n if (this.popState) {\r\n this.poppingState = true;\r\n let popped = 1;\r\n if (id) {\r\n const p = this.popHistory.findIndex(n => n.id === id);\r\n if (p !== -1) {\r\n popped = this.popHistory[p].value - (history.state?.index ?? 0);\r\n popped = popped ? popped + 1 : 1;\r\n this.popHistory.splice(p, 1);\r\n }\r\n const url = location.href;\r\n let l = url.length;\r\n while (l >= 0 && url[l - 1] === '#' && popped > 0) {\r\n l--;\r\n popped--;\r\n }\r\n if (l < url.length)\r\n history.replaceState({}, '', url.substring(0, l));\r\n }\r\n }\r\n this.popState = true;\r\n }\r\n\r\n /**\r\n * Creates the CDK overlay used to host the busy indicator.\r\n * @returns The new `OverlayRef`.\r\n */\r\n private createBusy(): OverlayRef {\r\n return this.overlay.create({\r\n hasBackdrop: true,\r\n backdropClass: 'busy-backdrop',\r\n positionStrategy: this.overlay.position()\r\n .global()\r\n .centerHorizontally()\r\n .centerVertically()\r\n });\r\n }\r\n\r\n /**\r\n * Clear busy dialog\r\n */\r\n clearBusy() {\r\n setTimeout(() => {\r\n this.busyDialogRef?.detach();\r\n this.busyComponentRef?.destroy();\r\n }, 500);\r\n\r\n }\r\n\r\n /**\r\n * Shows or updates the busy overlay.\r\n * @param message - Text to display inside the overlay.\r\n * @param progress - Progress value (`-1` = indeterminate). Defaults to `-1`.\r\n * @param progressMode - Progress bar mode. Defaults to `'indeterminate'`.\r\n * @param type - Visual style of the overlay. Defaults to `'bar'`.\r\n * @param action - Optional observable; the overlay is dismissed when it emits.\r\n * @returns `true` if a new overlay was created, `false` if an existing one was updated.\r\n */\r\n setBusy(\r\n message: string,\r\n progress: number = -1,\r\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\r\n type: 'bar' | 'spinner' | 'wait' | 'hourglass' = 'bar',\r\n action?: Observable<unknown>\r\n ): boolean {\r\n const exists = this.busyDialogRef?.hasAttached();\r\n if (exists) {\r\n this.busyComponentRef?.instance.set(message, progress, progressMode, type); // update existing\r\n } else {\r\n // Open new\r\n if (!this.busyDialogRef) {\r\n this.busyDialogRef = this.createBusy();\r\n }\r\n this.busyComponentRef = this.busyDialogRef.attach(new ComponentPortal(BusyDialogComponent));\r\n this.busyComponentRef.instance.set(message, progress, progressMode, type);\r\n if (action) {\r\n action\r\n .pipe(first())\r\n .subscribe(() => {\r\n this.clearBusy();\r\n });\r\n }\r\n }\r\n return !exists;\r\n }\r\n\r\n /**\r\n * Shows or updates the busy overlay using the progress-bar style.\r\n * @param message - Text to display inside the overlay.\r\n * @param progress - Progress value (`-1` = indeterminate). Defaults to `-1`.\r\n * @param progressMode - Progress bar mode. Defaults to `'indeterminate'`.\r\n * @param action - Optional observable; the overlay is dismissed when it emits.\r\n * @returns `true` if a new overlay was created.\r\n */\r\n busy(\r\n message: string,\r\n progress: number = -1,\r\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\r\n action?: Observable<unknown>\r\n ): boolean {\r\n return this.setBusy(message, progress, progressMode, 'bar', action);\r\n }\r\n\r\n \r\n /**\r\n * Returns a `BusyTimer` that shows the busy overlay after a debounce delay.\r\n * @param message - Text to display. Defaults to `'Operazione in corso...'`.\r\n * @param due - Delay in milliseconds before the overlay appears. Defaults to `100`.\r\n * @returns A `BusyTimer` that must be disposed with `clear()` when the operation ends.\r\n */\r\n busyTimer(message: string = \"Operazione in corso...\", due: number = 100): BusyTimer {\r\n return new BusyTimer(this, due, message);\r\n }\r\n\r\n\r\n /**\r\n * Shows or updates the busy overlay using the hourglass style.\r\n * @param message - Text to display inside the overlay.\r\n * @param action - Optional observable; the overlay is dismissed when it emits.\r\n * @returns `true` if a new overlay was created.\r\n */\r\n busyHourglass(\r\n message: string,\r\n action?: Observable<unknown>\r\n ): boolean {\r\n return this.setBusy(message, -1, 'indeterminate', 'hourglass', action);\r\n }\r\n\r\n /**\r\n * Shows or updates the busy overlay using the spinner style.\r\n * @param message - Text to display inside the overlay.\r\n * @param progress - Progress value (`-1` = indeterminate). Defaults to `-1`.\r\n * @param progressMode - Progress mode. Defaults to `'indeterminate'`.\r\n * @param action - Optional observable; the overlay is dismissed when it emits.\r\n * @returns `true` if a new overlay was created.\r\n */\r\n busySpinner(\r\n message: string,\r\n progress: number = -1,\r\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\r\n action?: Observable<unknown>\r\n ): boolean {\r\n return this.setBusy(message, progress, progressMode, 'spinner', action);\r\n }\r\n\r\n /**\r\n * Shows a minimal wait spinner overlay.\r\n * @param action - Optional observable; the overlay is dismissed when it emits.\r\n * @returns `true` if a new overlay was created.\r\n */\r\n wait(action?: Observable<unknown>): boolean {\r\n return this.setBusy('', -1, 'indeterminate', 'wait', action);\r\n }\r\n\r\n\r\n /**\r\n * Opens an informational dialog.\r\n * @param message - HTML message to display.\r\n * @param title - Dialog title. Defaults to `'Informazioni'`.\r\n * @param okCaption - Confirmation button label. Defaults to `'Ok'`.\r\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\r\n * @param dismissAfter - Auto-close delay in milliseconds (optional).\r\n * @param details - Optional secondary details text.\r\n * @param onNavigate - Optional navigation callback invoked when the user clicks a link.\r\n * @returns The dialog reference, or `null` outside the browser.\r\n */\r\n info(\r\n message: string,\r\n title: string = 'Informazioni',\r\n okCaption: string = 'Ok',\r\n width: number = 500,\r\n dismissAfter?: number,\r\n details?: string,\r\n onNavigate?: (url: string) => void\r\n ): MatDialogRef<InfoDialogComponent> | null {\r\n this.clearBusy();\r\n return this.open(InfoDialogComponent, {\r\n ariaLabel: 'informazioni',\r\n autoFocus: false,\r\n restoreFocus: false,\r\n data: {\r\n message,\r\n title,\r\n okCaption,\r\n dismissAfter,\r\n details,\r\n onNavigate,\r\n appearance: 'fill'\r\n } as InfoDialogData,\r\n closeOnNavigation: false,\r\n minWidth: '375px',\r\n maxWidth: `${width}px`,\r\n width: '100%'\r\n });\r\n }\r\n\r\n /**\r\n * Opens an error dialog. If one is already open, its content is updated in place.\r\n * @param message - HTML error message to display.\r\n * @param log - Optional technical log / stack trace shown in the details panel.\r\n * @param title - Dialog title. Defaults to `'Errore'`.\r\n * @param okCaption - Confirmation button label. Defaults to `'Ok'`.\r\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\r\n * @param dismissAfter - Auto-close delay in milliseconds (optional).\r\n * @returns The dialog reference, or `null` outside the browser.\r\n */\r\n error(\r\n message: string,\r\n log?: string,\r\n title: string = 'Errore',\r\n okCaption: string = 'Ok',\r\n width: number = 500,\r\n dismissAfter?: number,\r\n ): MatDialogRef<InfoDialogComponent> | null {\r\n this.clearBusy();\r\n if (this.errorDialogRef) {\r\n // Just change current error\r\n this.errorDialogRef.componentInstance.setData({\r\n message,\r\n title,\r\n details: log,\r\n okCaption,\r\n dismissAfter\r\n });\r\n return this.errorDialogRef;\r\n }\r\n const ref = this.open(InfoDialogComponent, {\r\n ariaLabel: 'errore',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: {\r\n message,\r\n title,\r\n details: log,\r\n okCaption,\r\n dismissAfter,\r\n appearance: 'fill'\r\n } as InfoDialogData,\r\n closeOnNavigation: false,\r\n minWidth: '375px',\r\n maxWidth: `${width}px`,\r\n width: '100%'\r\n });\r\n this.errorDialogRef = ref ?? undefined;\r\n return ref;\r\n }\r\n\r\n /**\r\n * Shows a snack-bar toast notification.\r\n * @param message - HTML message to display.\r\n * @param duration - Visible duration in milliseconds. Defaults to `2000`.\r\n * @param icon - Material icon name shown beside the message. Defaults to `'check'`.\r\n * @param actionCaption - Optional label for the action button.\r\n * @returns The snack-bar reference.\r\n */\r\n toast(\r\n message: string,\r\n duration: number = 2000,\r\n icon: string = 'check',\r\n actionCaption?: string\r\n ): MatSnackBarRef<ToastComponent> {\r\n this.clearBusy();\r\n if (duration === -1) duration = 2000; // default\r\n const toastRef = this.snackBar.openFromComponent(ToastComponent, {\r\n duration,\r\n data: { message, icon, actionCaption } as ToastData\r\n });\r\n toastRef.instance.action.subscribe(() => toastRef.dismiss());\r\n return toastRef;\r\n }\r\n\r\n /**\r\n * Opens a confirmation dialog.\r\n * @param message - HTML message to display.\r\n * @param title - Dialog title. Defaults to `'Conferma'`.\r\n * @param okCaption - Primary action button label. Defaults to `'Si'`.\r\n * @param cancelCaption - Cancel button label. Defaults to `'No'`.\r\n * @param otherCaption - Optional tertiary action button label.\r\n * @param options - Optional list of checkbox options shown to the user.\r\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\r\n * @param details - Optional secondary details text.\r\n * @returns The dialog reference, or `null` outside the browser.\r\n */\r\n confirm(\r\n message: string,\r\n title: string = 'Conferma',\r\n okCaption: string = 'Si',\r\n cancelCaption: string = 'No',\r\n otherCaption?: string,\r\n options?: ConfirmDialogOption[],\r\n width: number = 500,\r\n details?: string\r\n ): MatDialogRef<ConfirmDialogComponent> | null {\r\n return this.open(ConfirmDialogComponent, {\r\n ariaLabel: 'conferma',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: {\r\n message,\r\n title,\r\n okCaption,\r\n cancelCaption,\r\n otherCaption,\r\n options,\r\n details,\r\n appearance: 'fill'\r\n } as ConfirmDialogData,\r\n closeOnNavigation: false,\r\n disableClose: true,\r\n minWidth: '375px',\r\n maxWidth: `${width}px`,\r\n width: '100%'\r\n });\r\n }\r\n\r\n /**\r\n * Opens a deletion-confirmation dialog.\r\n * @param message - HTML message to display.\r\n * @param title - Dialog title. Defaults to `'Attenzione'`.\r\n * @param confirmMode - Confirmation mode (none / checkbox / type-to-confirm). Defaults to `None`.\r\n * @param okCaption - Primary action button label. Defaults to `'Si'`.\r\n * @param cancelCaption - Cancel button label. Defaults to `'No'`.\r\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\r\n * @param details - Optional secondary details text.\r\n * @returns The dialog reference, or `null` outside the browser.\r\n */\r\n delete(\r\n message: string,\r\n title: string = 'Attenzione',\r\n confirmMode: DeleteDialogConfirmMode = DeleteDialogConfirmMode.None,\r\n okCaption: string = 'Si',\r\n cancelCaption: string = 'No',\r\n width: number = 500,\r\n details?: string\r\n ): MatDialogRef<DeleteDialogComponent> | null {\r\n return this.open(DeleteDialogComponent, {\r\n ariaLabel: 'attenzione',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: {\r\n message,\r\n title,\r\n confirmMode,\r\n okCaption,\r\n cancelCaption,\r\n details,\r\n appearance: 'fill'\r\n } as DeleteDialogData,\r\n closeOnNavigation: false,\r\n disableClose: true,\r\n minWidth: '375px',\r\n maxWidth: `${width}px`,\r\n width: '100%'\r\n });\r\n }\r\n\r\n}\r\n\r\n","import { NgModule } from \"@angular/core\";\r\nimport { ArsCoreModule } from '@arsedizioni/ars-utils/core';\r\n\r\n@NgModule({\r\n imports: [\r\n ArsCoreModule,\r\n ],\r\n exports: [\r\n \r\n ]\r\n})\r\nexport class ArsUIModule { }\r\n\r\nexport * from \"./definitions\";\r\nexport * from \"./paginatorIntl\";\r\nexport * from \"./services/dialog.service\";\r\nexport * from \"./services/ui.service\";\r\n\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { PasswordStrength, SystemUtils } from '@arsedizioni/ars-utils/core';\r\n\r\nconst DEFAULT_STRENGTH: PasswordStrength = { score: 0, label: '', color: '', suggestions: [], isValid: false };\r\n\r\n/**\r\n * Displays a password-strength indicator for the provided password string.\r\n * Uses `SystemUtils.calculatePasswordStrength` to derive the score and label.\r\n */\r\n@Component({\r\n selector: 'password-strength',\r\n templateUrl: './password-strength.component.html',\r\n styleUrl: './password-strength.component.scss',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatTooltipModule]\r\n})\r\nexport class PasswordStrengthComponent {\r\n /** The password to evaluate. An empty string renders the default (score 0) state. */\r\n readonly password = input<string>('');\r\n\r\n /**\r\n * Computed strength result for the current password.\r\n * Falls back to `DEFAULT_STRENGTH` when the password is empty.\r\n */\r\n protected readonly strength = computed<PasswordStrength>(() => {\r\n const pwd = this.password();\r\n return pwd ? SystemUtils.calculatePasswordStrength(pwd) : DEFAULT_STRENGTH;\r\n });\r\n\r\n /**\r\n * CSS class applied to the label element based on the numeric score (1–6 bands).\r\n * Scores ≤ 2 → `'score-2'`, ≤ 3 → `'score-3'`, etc.\r\n */\r\n protected readonly scoreClass = computed<string>(() => {\r\n const score = this.strength().score;\r\n if (score <= 2) return 'score-2';\r\n if (score <= 3) return 'score-3';\r\n if (score <= 4) return 'score-4';\r\n if (score <= 5) return 'score-5';\r\n return 'score-6';\r\n });\r\n}\r\n","<div class=\"wide x-small bold\" style=\"white-space: nowrap; padding-top:4px\" [matTooltip]=\"strength().suggestions?.join('\\n ')\">\r\n <span [class]=\"scoreClass()\">{{strength().label}}</span>\r\n</div>","import { Component, ElementRef, computed, forwardRef, signal, viewChildren } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\n\r\n\r\n@Component({\r\n selector: 'otp-input',\r\n standalone: true,\r\n imports: [FormsModule],\r\n templateUrl: './otp-input.component.html',\r\n styleUrl: './otp-input.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => OtpInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class OtpInputComponent implements ControlValueAccessor {\r\n /** Signal-based query for all individual OTP digit input elements. */\r\n readonly otpFields = viewChildren<ElementRef<HTMLInputElement>>('otpField');\r\n\r\n /** `true` when every digit slot contains a valid single decimal digit. */\r\n readonly isValid = computed(() => this.otpArray().every(d => /^\\d$/.test(d)));\r\n\r\n /** Array of per-digit values backing the OTP display. */\r\n readonly otpArray = signal<string[]>(Array(6).fill(''));\r\n\r\n /** Whether the control is currently disabled. */\r\n readonly disabled = signal<boolean>(false);\r\n\r\n private onChange: (val: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n // ── ControlValueAccessor ───────────────────────────────────────────────────\r\n\r\n /**\r\n * Writes a new value into the control from the model.\r\n * @param value - A string of up to 6 digits to pre-fill the OTP fields.\r\n */\r\n writeValue(value: string): void {\r\n const arr = Array(6).fill('');\r\n if (value) {\r\n value.split('').forEach((c, i) => {\r\n if (i < 6) arr[i] = c;\r\n });\r\n }\r\n this.otpArray.set(arr);\r\n }\r\n\r\n /**\r\n * Registers the callback invoked when the control value changes.\r\n * @param fn - The callback function.\r\n */\r\n registerOnChange(fn: (val: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Registers the callback invoked when the control is touched.\r\n * @param fn - The callback function.\r\n */\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Enables or disables the control.\r\n * @param isDisabled - `true` to disable all OTP inputs.\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n\r\n // ── Event handlers ─────────────────────────────────────────────────────────\r\n\r\n /**\r\n * Blocks non-digit characters before they are inserted.\r\n * @param event - The `beforeinput` event from the input element.\r\n */\r\n onBeforeInput(event: InputEvent): void {\r\n if (event.data && !/^\\d$/.test(event.data)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n /**\r\n * Handles digit input, updates the OTP array, and advances focus.\r\n * @param event - The `input` event from the digit field.\r\n * @param index - Zero-based index of the field that received input.\r\n */\r\n onInput(event: Event, index: number): void {\r\n let val = (event.target as HTMLInputElement).value;\r\n val = val.replace(/\\D/g, '').slice(-1);\r\n\r\n const arr = [...this.otpArray()];\r\n arr[index] = val;\r\n this.otpArray.set(arr);\r\n\r\n this.updateModel();\r\n\r\n if (val && index < 5) {\r\n this.focusField(index + 1);\r\n }\r\n }\r\n\r\n /**\r\n * Handles the Backspace key by moving focus to the previous field when the current one is empty.\r\n * @param event - The `keydown` event.\r\n * @param index - Zero-based index of the field that received the keydown.\r\n */\r\n onKeyDown(event: KeyboardEvent, index: number): void {\r\n if (event.key === 'Backspace' && !this.otpArray()[index] && index > 0) {\r\n this.focusField(index - 1);\r\n }\r\n }\r\n\r\n /**\r\n * Handles paste events by extracting up to 6 digits and distributing them across the OTP fields.\r\n * @param event - The `ClipboardEvent` from the paste action.\r\n */\r\n onPaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n const pasted = event.clipboardData?.getData('text') ?? '';\r\n const digits = pasted.replace(/\\D/g, '').slice(0, 6).split('');\r\n\r\n if (digits.length > 0) {\r\n const arr = Array(6).fill('');\r\n digits.forEach((d, i) => (arr[i] = d));\r\n this.otpArray.set(arr);\r\n this.updateModel();\r\n this.focusField(Math.min(digits.length, 5));\r\n }\r\n }\r\n\r\n /**\r\n * Moves focus to the OTP field at the given index.\r\n * @param index - Zero-based index of the target field.\r\n */\r\n private focusField(index: number): void {\r\n const field = this.otpFields()[index];\r\n field?.nativeElement.focus();\r\n field?.nativeElement.select();\r\n }\r\n\r\n /**\r\n * Notifies the form model of the current OTP value and marks the control as touched.\r\n */\r\n private updateModel(): void {\r\n const code = this.otpArray().join('');\r\n this.onChange(code);\r\n this.onTouched();\r\n }\r\n}\r\n","<div class=\"otp-container\">\r\n @for (digit of otpArray(); track $index) {\r\n <input\r\n #otpField\r\n type=\"text\"\r\n maxlength=\"1\"\r\n inputmode=\"numeric\"\r\n pattern=\"[0-9]*\"\r\n class=\"otp-box\"\r\n [value]=\"digit\"\r\n (beforeinput)=\"onBeforeInput($event)\"\r\n (input)=\"onInput($event, $index)\"\r\n (keydown)=\"onKeyDown($event, $index)\"\r\n (paste)=\"onPaste($event)\"\r\n [disabled]=\"disabled()\"\r\n required\r\n />\r\n }\r\n</div>\r\n\r\n","import { Component, inject, output, signal } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\r\nimport { CredentialsDialogResult } from '../../definitions';\r\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { PasswordStrengthComponent } from '../../components/password-strength/password-strength.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { OtpInputComponent } from '../../components/otp/otp-input.component';\r\n\r\nexport interface CredentialsDialogData {\r\n title?: string;\r\n message?: string;\r\n remember?: boolean;\r\n recoverPassword?: boolean;\r\n recoverPasswordUrl?: string;\r\n user?: string;\r\n okCaption?: string;\r\n mode?: 'email' | 'user' | 'otp';\r\n appearance?: MatFormFieldAppearance;\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './credentials-dialog.component.html',\r\n styleUrl: './credentials-dialog.component.scss',\r\n standalone: true,\r\n imports: [\r\n MatDialogTitle,\r\n MatDialogContent,\r\n FormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatCheckboxModule,\r\n MatDialogActions,\r\n FlexModule,\r\n MatButtonModule,\r\n MatDialogClose,\r\n PasswordStrengthComponent,\r\n OtpInputComponent,\r\n SafeHtmlPipe,\r\n ],\r\n})\r\nexport class CredentialsDialogComponent {\r\n /** Emitted when the user submits the form. Carries the entered credentials. */\r\n readonly done = output<CredentialsDialogResult>();\r\n\r\n /** Emitted when the user requests a password-recovery flow. */\r\n readonly recoveringPassword = output<CredentialsDialogResult>();\r\n\r\n /** Dialog configuration with defaults applied at construction time. */\r\n protected readonly dialogData = signal<CredentialsDialogData>((() => {\r\n const raw = (inject(MAT_DIALOG_DATA) as CredentialsDialogData | null) ?? {};\r\n const data: CredentialsDialogData = {\r\n appearance: 'fill',\r\n title: 'Informazioni',\r\n okCaption: 'Salva',\r\n mode: 'email',\r\n ...raw,\r\n };\r\n data.appearance ??= 'fill';\r\n data.title ??= 'Informazioni';\r\n data.okCaption ??= 'Salva';\r\n data.mode ??= 'email';\r\n if (data.mode === 'otp' && !data.message) {\r\n data.message = '<div class=\"small\">Inserisci il codice di verifica di 6 cifre che ti abbiamo inviato ora per email<br><span class=\"x-small\">(controlla anche la posta indesiderata)</span>.</div>';\r\n }\r\n return data;\r\n })());\r\n\r\n /** Current form model, pre-filled with the user name from dialog data when provided. */\r\n protected item: CredentialsDialogResult = {\r\n user: (inject(MAT_DIALOG_DATA) as CredentialsDialogData | null)?.user,\r\n };\r\n\r\n /** Whether the password field is currently shown as plain text. */\r\n protected readonly showPassword = signal<boolean>(false);\r\n\r\n /**\r\n * Switches the input mode of the dialog at runtime (e.g. from login to OTP).\r\n * Intended to be called from outside via the dialog component reference.\r\n * @param mode - The new input mode (`'email'`, `'user'`, or `'otp'`).\r\n * @param message - Optional new message to display above the form.\r\n */\r\n public changeMode(mode: 'email' | 'user' | 'otp', message?: string): void {\r\n this.dialogData.update(d => ({\r\n ...d,\r\n mode,\r\n message: message ?? d.message,\r\n }));\r\n }\r\n\r\n /**\r\n * Emits the current form result and closes the dialog.\r\n */\r\n protected ok(): void {\r\n this.done.emit(this.item);\r\n }\r\n\r\n /**\r\n * Emits the current form result for the password-recovery flow and optionally\r\n * opens the recovery URL in a new tab.\r\n */\r\n protected recoverPassword(): void {\r\n this.recoveringPassword.emit(this.item);\r\n const url = this.dialogData().recoverPasswordUrl;\r\n if (url) {\r\n window.open(url, '_blank');\r\n }\r\n }\r\n}\r\n\r\n","<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n <span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n } @else {\r\n <span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n }\r\n</div>\r\n<h2 mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></h2>\r\n<mat-dialog-content>\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\" style=\"padding-bottom: 20px;\"></div>\r\n }\r\n <form name=\"form\" #f=\"ngForm\" (keyup.Enter)=\"!f.form.invalid ? ok() : null\" novalidate>\r\n @if(dialogData().mode !== 'otp') {\r\n @if (dialogData().mode === 'email') {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Email</mat-label>\r\n <input type=\"email\" matInput [(ngModel)]=\"item.user\" name=\"email\" #email=\"ngModel\" email required\r\n [attr.aria-label]=\"'Email'\">\r\n @if (email.invalid) {\r\n <mat-error>Email non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n } @else if (dialogData().mode === 'user') {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Utente</mat-label>\r\n <input matInput [(ngModel)]=\"item.user\" name=\"user\" #user=\"ngModel\" required [attr.aria-label]=\"'user'\">\r\n @if (user.invalid) {\r\n <mat-error>Obbligatorio.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>La tua password abilitata</mat-label>\r\n <input matInput name=\"password\" #password=\"ngModel\" [type]=\"!showPassword() ? 'password' : 'text'\"\r\n [(ngModel)]=\"item.password\" required [attr.aria-label]=\"'La tua password abilitata'\" autocomplete=\"on\">\r\n @if(item.password) {\r\n <password-strength [password]=\"item.password\"></password-strength>\r\n }\r\n <button type=\"button\" mat-icon-button class=\"toolbar-suffix\" matSuffix (click)=\"showPassword.set(!showPassword())\">\r\n <mat-icon>{{showPassword() ? 'visibility' : 'visibility_off'}}</mat-icon>\r\n </button>\r\n <mat-hint>Attento a maiuscole e minuscole</mat-hint>\r\n @if (password.invalid) {\r\n <mat-error>Password non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n @if (dialogData().remember || dialogData().recoverPassword) {\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\" fxFill style=\"margin-top: 20px;\">\r\n <div>\r\n @if (dialogData().remember) {\r\n <mat-checkbox fxFlexAlign=\"center\" [(ngModel)]=\"item.rememberMe\" name=\"rememberMe\"> Ricordami</mat-checkbox>\r\n }\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n @if (dialogData().recoverPassword) {\r\n <button fxFlexAlign=\"center\" mat-button (click)=\"recoverPassword()\" title=\"Recupero password\"\r\n >Non riesco ad accedere</button>\r\n }\r\n </div>\r\n </div>\r\n }\r\n } @else {\r\n <otp-input name=\"otp\" [(ngModel)]=\"item.code\" required></otp-input>\r\n }\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button [disabled]=\"f.form.invalid\" (click)=\"ok()\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">Annulla</button>\r\n </div>\r\n</mat-dialog-actions>","import { ChangeDetectionStrategy, Component, inject, output, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from '@angular/material/dialog';\r\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { RecoverPasswordDialogResult } from '../../definitions';\r\n\r\nexport interface RecoverPasswordDialogData {\r\n appearance?: MatFormFieldAppearance;\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './recover-password-dialog.component.html',\r\n styleUrl: './recover-password-dialog.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatDialogTitle,\r\n MatDialogContent,\r\n FormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n MatDialogActions,\r\n FlexModule,\r\n MatDialogClose,\r\n ],\r\n})\r\nexport class RecoverPasswordDialogComponent {\r\n\r\n /** Emitted when the user submits the recovery request. Carries the entered email and recaptcha state. */\r\n readonly done = output<RecoverPasswordDialogResult>();\r\n\r\n /** Dialog configuration with defaults applied at construction time. */\r\n protected readonly dialogData = signal<RecoverPasswordDialogData>({\r\n appearance: 'fill',\r\n ...((inject(MAT_DIALOG_DATA) as RecoverPasswordDialogData | null) ?? {}),\r\n });\r\n\r\n /** Current form model bound to the template inputs. */\r\n protected item: RecoverPasswordDialogResult = {\r\n email: '',\r\n recaptcha: false,\r\n };\r\n\r\n /**\r\n * Emits the current form result to trigger the password-recovery flow.\r\n */\r\n protected ok(): void {\r\n this.done.emit(this.item);\r\n }\r\n}\r\n","<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n <span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n } @else {\r\n <span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n }\r\n</div>\r\n<h2 mat-dialog-title>Per quale ragione non sei in grado di effettuare l'accesso?</h2>\r\n<mat-dialog-content>\r\n\r\n <b>1. Ho dimenticato la password</b>\r\n <p>\r\n Puoi recuperarla facilmente inserendo l'email a cui la password è collegata. Non è possibile recuperare password\r\n aziendali (non collegate ad un email).</p>\r\n <form name=\"form\" #f=\"ngForm\" (keyup.Enter)=\"!f.form.invalid ? ok() : null\" novalidate>\r\n\r\n <mat-form-field style=\"width:100%\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Email con cui ti sei registrato</mat-label>\r\n <input type=\"email\" matInput name=\"email\" #email=\"ngModel\" [(ngModel)]=\"item.email\" required email\r\n maxlength=\"200\" />\r\n @if (email.invalid) {\r\n <mat-error>Email non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <div style=\"margin-top:20px; margin-bottom:20px;\">\r\n <button type=\"button\" mat-flat-button (click)=\"ok()\" [disabled]=\"f.form.invalid\"\r\n aria-label=\"Recupera password\">Recupera password</button>\r\n </div>\r\n </form>\r\n <p></p>\r\n <b>2. Il sistema mi dice che la password non è corretta.</b>\r\n <p>\r\n E' molto probabile che ci sia stato un difetto di digitazione. Per favore controlla bene che non vi siano spazi non\r\n richiesti e che la password rispetti perfettamente le maiuscole e minuscole. Nel caso in cui la digitazione fosse\r\n corretta, verifica che la data del tuo abbonamento non sia scaduta.\r\n </p>\r\n <p></p>\r\n <b>3. Il sistema mi dice che non può accettare connessioni dal mio indirizzo IP</b>\r\n <p>\r\n Il tuo abbonamento è stato vincolato ad un indirizzo IP (indirizzo dal quale ti colleghi). Capita sovente che\r\n questi indirizzi siano cambiati da parte del reparto IT per questioni di sicurezza informatica.\r\n Per risolvere il problema, contattate il reparto IT e fatevi dire qual'è il nuovo indirizzo IP e comunicatelo ad\r\n ARS Edizioni Informatiche.\r\n </p>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" >Chiudi</button>\r\n </div>\r\n</mat-dialog-actions>","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n inject,\r\n output,\r\n signal\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\r\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { EqualsValidatorDirective, PasswordValidatorDirective, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { ResetPasswordDialogResult } from '../../definitions';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { PasswordStrengthComponent } from '../../components/password-strength/password-strength.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n\r\nexport type ResetPasswordDialogMode = 'admin' | 'change' | 'forgot';\r\n\r\nexport interface ResetPasswordDialogData {\r\n mode: ResetPasswordDialogMode;\r\n userId?: number;\r\n userEmail?: string;\r\n appearance?: MatFormFieldAppearance;\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './reset-password-dialog.component.html',\r\n styleUrl: './reset-password-dialog.component.scss',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatDialogTitle,\r\n MatDialogContent,\r\n FormsModule,\r\n FlexModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n PasswordValidatorDirective,\r\n PasswordStrengthComponent,\r\n EqualsValidatorDirective,\r\n MatIconModule,\r\n MatDialogActions,\r\n MatButtonModule,\r\n MatDialogClose,\r\n ],\r\n})\r\nexport class ResetPasswordDialogComponent {\r\n /** Emitted when the user submits the new password. Carries the entered password data. */\r\n readonly done = output<ResetPasswordDialogResult>();\r\n\r\n private readonly dialogService = inject(DialogService);\r\n private readonly dialogRef = inject(MatDialogRef<ResetPasswordDialogComponent>);\r\n\r\n /** Dialog configuration with defaults applied at construction time. */\r\n protected readonly dialogData = signal<ResetPasswordDialogData>((() => {\r\n const raw = (inject(MAT_DIALOG_DATA) as ResetPasswordDialogData | null);\r\n return { mode: 'admin' as ResetPasswordDialogMode, appearance: 'fill' as MatFormFieldAppearance, ...raw };\r\n })());\r\n\r\n /** Current form model bound to the template inputs. */\r\n protected item: ResetPasswordDialogResult = {};\r\n\r\n /** Whether the old-password field is currently shown as plain text. */\r\n protected readonly showOldPassword = signal<boolean>(false);\r\n\r\n /** Whether the new-password field is currently shown as plain text. */\r\n protected readonly showPassword = signal<boolean>(false);\r\n\r\n /** Whether the confirm-password field is currently shown as plain text. */\r\n protected readonly showPassword2 = signal<boolean>(false);\r\n\r\n constructor() {\r\n const data = this.dialogData();\r\n if (data.mode !== 'forgot' && !data.userId) {\r\n this.dialogRef.close();\r\n this.dialogService.error('Utente non specificato.');\r\n return;\r\n }\r\n if (data.mode === 'forgot' && !data.userEmail) {\r\n this.dialogRef.close();\r\n this.dialogService.error('Email utente non specificata.');\r\n return;\r\n }\r\n this.item.userEmail = data.userEmail;\r\n this.item.userId = data.userId;\r\n }\r\n\r\n /**\r\n * Emits the current form result to trigger the password-reset flow.\r\n */\r\n protected ok(): void {\r\n this.done.emit(this.item);\r\n }\r\n\r\n /**\r\n * Generates a random password and populates both password fields with it.\r\n */\r\n protected generatePassword(): void {\r\n const password = SystemUtils.generatePassword();\r\n this.item.password = password;\r\n this.item.password2 = password;\r\n }\r\n}\r\n\r\n\r\n","<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n <span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n } @else {\r\n <span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n }\r\n</div>\r\n<h2 mat-dialog-title>Reimposta password</h2>\r\n<mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n @if (dialogData().mode === 'forgot') {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Email che hai scelto quando ti sei registrato</mat-label>\r\n <input type=\"email\" matInput [(ngModel)]=\"item.userEmail\" name=\"userEmail\" #userEmail=\"ngModel\" email required\r\n [attr.aria-label]=\"'Email con cui ti sei registrato'\">\r\n @if (userEmail.invalid) {\r\n <mat-error>Email non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (dialogData().mode !== 'admin') {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Vecchia password</mat-label>\r\n <input [type]=\"!showOldPassword() ? 'password' : 'text'\" matInput name=\"oldPwd\" autocomplete=\"on\"\r\n [(ngModel)]=\"item.oldPassword\" required maxlength=\"30\" #oldPwd=\"ngModel\">\r\n <button type=\"button\" mat-icon-button class=\"toolbar-suffix\" matSuffix\r\n (click)=\"showOldPassword.set(!showOldPassword())\">\r\n <mat-icon>{{showOldPassword() ? 'visibility' : 'visibility_off'}}</mat-icon>\r\n </button>\r\n @if(item.oldPassword) {\r\n <password-strength [password]=\"item.oldPassword\"></password-strength>\r\n }\r\n @if (oldPwd.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <mat-form-field style=\"width: 100%;\" hintLabel=\"Minimo 10 car. con 1 simbolo e 1 maiuscola\"\r\n [appearance]=\"dialogData().appearance\">\r\n <mat-label>Nuova password</mat-label>\r\n <input [type]=\"!showPassword() ? 'password' : 'text'\" matInput name=\"newPwd\" [(ngModel)]=\"item.password\" required\r\n password minlength=\"10\" maxlength=\"30\" #newPwd=\"ngModel\">\r\n @if(item.password) {\r\n <password-strength [password]=\"item.password\"></password-strength>\r\n }\r\n <button type=\"button\" mat-icon-button class=\"toolbar-suffix\" matSuffix (click)=\"showPassword.set(!showPassword())\">\r\n <mat-icon>{{showPassword() ? 'visibility' : 'visibility_off'}}</mat-icon>\r\n </button>\r\n <mat-hint align=\"end\">{{newPwd.value?.length || 0}}/30</mat-hint>\r\n @if (newPwd.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n <mat-form-field style=\"width: 100%;\" hintLabel=\"Minimo 10 car. con 1 simbolo e 1 maiuscola\"\r\n [appearance]=\"dialogData().appearance\">\r\n <mat-label>Conferma nuova password</mat-label>\r\n <input [type]=\"!showPassword2() ? 'password' : 'text'\" matInput name=\"newPwd2\" [(ngModel)]=\"item.password2\"\r\n [required]=\"dialogData().mode !== 'admin'\" password minlength=\"10\" maxlength=\"30\" [equals]=\"newPwd.control\" #newPwd2=\"ngModel\">\r\n <button type=\"button\" mat-icon-button class=\"toolbar-suffix\" matSuffix (click)=\"showPassword2.set(!showPassword2())\">\r\n <mat-icon>{{showPassword2() ? 'visibility' : 'visibility_off'}}</mat-icon>\r\n </button>\r\n @if(item.password2) {\r\n <password-strength [password]=\"item.password2\"></password-strength>\r\n }\r\n <mat-hint align=\"end\">{{newPwd2.value?.length || 0}}/30</mat-hint>\r\n @if (newPwd2.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"30\">\r\n @if (dialogData().mode === 'admin') {\r\n <button mat-stroked-button (click)=\"generatePassword()\">Genera</button>\r\n }\r\n </div>\r\n <div fxFlex=\"70\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button [disabled]=\"f.form.invalid\" (click)=\"ok()\">Salva</button>\r\n @if (dialogData().mode !== 'forgot') {\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">Annulla</button>\r\n }\r\n </div>\r\n </div>\r\n</mat-dialog-actions>","/**\n * @file breakpoints.ts\n * Bootstrap 5 breakpoint definitions as CDK-compatible MediaQuery strings.\n *\n * CDK's BreakpointObserver already handles the actual matching — we only define aliases.\n *\n * Bootstrap 5 grid tiers:\n * xs < 576px\n * sm >= 576px\n * md >= 768px\n * lg >= 992px\n * xl >= 1200px\n * xxl >= 1400px\n *\n * Supported alias families:\n *\n * Canonical ranges xs | sm | md | lg | xl | xxl\n * \"and up\" sm-up | md-up | lg-up | xl-up | xxl-up\n * gt-xs | gt-sm | gt-md | gt-lg | gt-xl (ngx-layout compat)\n * \"and down\" sm-down | md-down | lg-down | xl-down\n * lt-sm | lt-md | lt-lg | lt-xl | lt-xxl (ngx-layout compat)\n *\n * The lt-* / gt-* aliases are exact mirrors of the -down / -up aliases.\n * They share the same media query string so CDK deduplicates them internally.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport const BS5_BREAKPOINTS: Record<string, string> = {\n // ── Canonical ranges ────────────────────────────────────────────────────────\n 'xs': '(max-width: 575.98px)',\n 'sm': '(min-width: 576px) and (max-width: 767.98px)',\n 'md': '(min-width: 768px) and (max-width: 991.98px)',\n 'lg': '(min-width: 992px) and (max-width: 1199.98px)',\n 'xl': '(min-width: 1200px) and (max-width: 1399.98px)',\n 'xxl': '(min-width: 1400px)',\n\n // ── \"and up\" — Bootstrap style ───────────────────────────────────────────────\n 'sm-up': '(min-width: 576px)',\n 'md-up': '(min-width: 768px)',\n 'lg-up': '(min-width: 992px)',\n 'xl-up': '(min-width: 1200px)',\n 'xxl-up': '(min-width: 1400px)',\n\n // ── \"and up\" — ngx-layout gt-* style ────────────────────────────────────────\n 'gt-xs': '(min-width: 576px)',\n 'gt-sm': '(min-width: 768px)',\n 'gt-md': '(min-width: 992px)',\n 'gt-lg': '(min-width: 1200px)',\n 'gt-xl': '(min-width: 1400px)',\n\n // ── \"and down\" — Bootstrap style ─────────────────────────────────────────────\n 'sm-down': '(max-width: 767.98px)',\n 'md-down': '(max-width: 991.98px)',\n 'lg-down': '(max-width: 1199.98px)',\n 'xl-down': '(max-width: 1399.98px)',\n\n // ── \"and down\" — ngx-layout lt-* style ──────────────────────────────────────\n // lt-sm = everything below sm = xs only\n 'lt-sm': '(max-width: 575.98px)',\n // lt-md = everything below md = xs + sm\n 'lt-md': '(max-width: 767.98px)',\n // lt-lg = everything below lg = xs + sm + md\n 'lt-lg': '(max-width: 991.98px)',\n // lt-xl = everything below xl = xs + sm + md + lg\n 'lt-xl': '(max-width: 1199.98px)',\n // lt-xxl = everything below xxl = xs through xl\n 'lt-xxl': '(max-width: 1399.98px)',\n};\n\n/** InjectionToken — override to customise or extend breakpoints */\nexport const LAYOUT_BREAKPOINTS = new InjectionToken<Record<string, string>>(\n 'LAYOUT_BREAKPOINTS',\n { providedIn: 'root', factory: () => BS5_BREAKPOINTS }\n);\n\n/** Ordered canonical aliases, smallest → largest (used for mobile-first cascade) */\nexport const CANONICAL_ALIASES = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'] as const;\nexport type BreakpointAlias = typeof CANONICAL_ALIASES[number];\n\n/**\n * All non-canonical alias families.\n * Used by ResponsiveBaseDirective.resolveNonCanonical() to handle lt-* / gt-* / *-up / *-down\n * inputs without polluting the mobile-first cascade logic.\n */\nexport const ALIAS_FAMILIES = {\n up: ['sm-up', 'md-up', 'lg-up', 'xl-up', 'xxl-up'],\n down: ['sm-down', 'md-down', 'lg-down', 'xl-down'],\n gt: ['gt-xs', 'gt-sm', 'gt-md', 'gt-lg', 'gt-xl'],\n lt: ['lt-sm', 'lt-md', 'lt-lg', 'lt-xl', 'lt-xxl'],\n} as const;\n","/**\n * @file media-observer.service.ts (v2 — optimized)\n *\n * ── Optimizations over v1 ─────────────────────────────────────────────────\n *\n * ✅ Single bo.observe() call for all 6 canonical breakpoints.\n * CDK internally uses one MediaQueryList listener per query string.\n * Calling observe() N times creates N listeners — here we create only one.\n *\n * ✅ currentBp$ is shared (shareReplay(1)): all subscribers (effects in\n * directives) receive the same value without redundant re-computations.\n *\n * ✅ The currentBp Signal is derived from the Observable via toSignal():\n * Angular manages the subscription internally and tears it down with root.\n *\n * ✅ isActive() delegates to bo.isMatched() — synchronous, O(1), no extra observer.\n *\n * ✅ isActive$() reuses the shared currentBp$ stream instead of opening\n * a new bo.observe() for every requested alias.\n */\n\nimport { Injectable, inject, Signal } from '@angular/core';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { Observable, map, distinctUntilChanged, shareReplay } from 'rxjs';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { LAYOUT_BREAKPOINTS, CANONICAL_ALIASES, BreakpointAlias } from './breakpoints';\n\n@Injectable({ providedIn: 'root' })\nexport class MediaObserver {\n private readonly bo = inject(BreakpointObserver);\n private readonly bp = inject(LAYOUT_BREAKPOINTS);\n\n /**\n * A SINGLE CDK observation for all 6 canonical breakpoints.\n * Each breakpoint change emits → we resolve the current alias → shared.\n *\n * shareReplay(1): all subscribers (N directives in the DOM) receive\n * the same value without N separate recomputations.\n */\n readonly currentBp$: Observable<BreakpointAlias> = this.bo\n .observe(CANONICAL_ALIASES.map(a => this.bp[a]))\n .pipe(\n map(() => this._resolve()),\n distinctUntilChanged(), // does not emit if the breakpoint hasn't actually changed\n shareReplay(1) // multicast: N directives, 1 single execution\n );\n\n /**\n * Signal derived from currentBp$.\n * Directives read it via effect() — zero manual subscriptions.\n * providedIn: 'root' ensures the Signal is a singleton.\n */\n readonly currentBp: Signal<BreakpointAlias> = toSignal(this.currentBp$, {\n initialValue: this._resolve(),\n });\n\n /**\n * Returns true if the given alias (or raw media query) is currently active.\n * Delegates to bo.isMatched() — synchronous, O(1), no extra observer created.\n *\n * @example\n * media.isActive('md') // true on 768–991px screens\n * media.isActive('lg-up') // true on 992px+\n */\n isActive(alias: string): boolean {\n const query = this.bp[alias] ?? alias; // fallback: treat as raw media query\n console.log(`Checking if active: alias=\"${alias}\", query=\"${query}\", matches=${this.bo.isMatched(query)}`);\n return this.bo.isMatched(query);\n }\n\n /**\n * Observable true/false for a specific alias.\n * Reuses currentBp$ instead of opening a new bo.observe():\n * no additional MediaQueryList listener is created.\n */\n isActive$(alias: string): Observable<boolean> {\n return this.currentBp$.pipe(\n map(() => this.isActive(alias)),\n distinctUntilChanged()\n );\n }\n\n /** Resolves the active canonical alias (from xxl down to xs, mobile-first) */\n private _resolve(): BreakpointAlias {\n for (let i = CANONICAL_ALIASES.length - 1; i >= 0; i--) {\n if (this.bo.isMatched(this.bp[CANONICAL_ALIASES[i]])) {\n return CANONICAL_ALIASES[i];\n }\n }\n return 'xs';\n }\n}\n","/**\r\n * @file if-bp.directive.ts (Angular 21 — signals)\r\n *\r\n * *ifBp — structural directive that adds/removes an element from the DOM\r\n * based on the active Bootstrap 5 breakpoint.\r\n *\r\n * Unlike [fxShow]/[fxHide] (which use display:none), *ifBp actually adds and\r\n * removes the element from the DOM — ideal for heavy components like mat-sidenav.\r\n *\r\n * Angular 21 changes:\r\n * • @Input setters replaced by input() / input.required()\r\n * • computed() derives alias list and active state reactively\r\n * • effect() in constructor handles DOM add/remove (no OnInit/OnChanges)\r\n * • No Injector, EffectRef, _initialized guard or manual subscriptions\r\n *\r\n * Usage:\r\n * <mat-sidenav *ifBp=\"'lg-up'\"> only rendered on lg and above\r\n * <div *ifBp=\"'xs'\">Mobile only</div>\r\n * <div *ifBp=\"'sm md'\">sm and md only (space-separated list of aliases)</div>\r\n * <div *ifBp=\"'lg-up'; else mobileRef\">Desktop view</div>\r\n * <ng-template #mobileRef>Mobile fallback</ng-template>\r\n *\r\n * Accepted alias values:\r\n * xs | sm | md | lg | xl | xxl\r\n * sm-up | md-up | lg-up | xl-up | xxl-up\r\n * sm-down | md-down | lg-down | xl-down\r\n * Space-separated list of any of the above\r\n */\r\n\r\nimport {\r\n Directive, TemplateRef, ViewContainerRef,\r\n computed, effect, inject, input,\r\n} from '@angular/core';\r\nimport { MediaObserver } from './media-observer.service';\r\n\r\n@Directive({\r\n selector: '[ifBp]',\r\n standalone: true,\r\n})\r\nexport class IfBpDirective {\r\n private readonly tpl = inject(TemplateRef<unknown>);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly media = inject(MediaObserver);\r\n\r\n /** Space-separated list of breakpoint aliases, e.g. `'lg xl xxl-up'` */\r\n readonly ifBp = input.required<string>();\r\n /** Optional else-template shown when no alias is active */\r\n readonly ifBpElse = input<TemplateRef<unknown>>();\r\n\r\n private readonly _aliases = computed(() => this.ifBp().trim().split(/\\s+/));\r\n private readonly _isActive = computed(() => {\r\n this.media.currentBp(); // reactive dependency — re-evaluates on breakpoint change\r\n return this._aliases().some(alias => this.media.isActive(alias));\r\n });\r\n\r\n /** Tracks whether the main view is currently embedded — plain field, not a signal. */\r\n private _hasView = false;\r\n\r\n constructor() {\r\n effect(() => {\r\n const active = this._isActive();\r\n const elseTpl = this.ifBpElse();\r\n\r\n if (active === this._hasView) return; // dirty-check\r\n\r\n this.vcr.clear();\r\n if (active) {\r\n this.vcr.createEmbeddedView(this.tpl);\r\n } else if (elseTpl) {\r\n this.vcr.createEmbeddedView(elseTpl);\r\n }\r\n this._hasView = active;\r\n });\r\n }\r\n}\r\n","/**\n * @file responsive-base.directive.ts (v5 — Angular 21 signals)\n *\n * ── What changed in v5 ────────────────────────────────────────────────────\n *\n * Full Angular 21 signals refactor:\n *\n * • resolve(), resolveNonCanonical(), resolveAll() are now PURE EXPORTED\n * FUNCTIONS that accept currentBp and isActive as parameters.\n * Directives call them from computed() or effect() with no \"this\" binding.\n *\n * • ResponsiveBaseDirective is now a thin utility base:\n * – Only injects ElementRef, Renderer2, MediaObserver, PLATFORM_ID.\n * – Exposes safeSetStyle() helper.\n * – No lifecycle hooks, no Injector, no EffectRef, no abstract apply().\n *\n * • Each concrete directive uses:\n * – input() for every @Input (signals, no more setters + _v/_nc maps)\n * – computed() to build BpValues / NcValues maps and derive resolved CSS\n * – effect() in the constructor to write to the DOM\n *\n * Benefits vs v4:\n * ✅ Zero manual lifecycle/subscription management (no OnInit/OnChanges/EffectRef)\n * ✅ Angular's reactive graph provides built-in dirty-checking and memoization\n * ✅ DOM writes happen only when the resolved CSS value actually changes\n * ✅ No more Injector injection just to create effects\n *\n * ── Resolution strategy (unchanged) ──────────────────────────────────────\n *\n * Canonical aliases (xs … xxl) → mobile-first cascade via resolve()\n * Non-canonical (lt-*, gt-*, *-up, *-down) → point-in-time isActive() checks\n * Final order: resolveNonCanonical() wins over resolve()\n */\n\nimport {\n Directive,\n inject, ElementRef, Renderer2, PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { MediaObserver } from './media-observer.service';\nimport { CANONICAL_ALIASES, BreakpointAlias } from './breakpoints';\nimport { BpValues, NcValues } from './responsive-inputs.mixin';\n\n// ── O(1) alias → index lookup (module-level constant, shared across instances) ──\nexport const ALIAS_INDEX = new Map<string, number>(\n CANONICAL_ALIASES.map((a, i) => [a, i])\n);\n\n/**\n * All non-canonical alias keys in priority order (most specific first).\n * lt-sm is \"below sm\" (= xs only), lt-md is \"below md\" (= xs+sm), etc.\n * Narrower range = higher priority = checked first.\n */\nexport const NON_CANONICAL_PRIORITY = [\n // lt-* from narrowest to widest\n 'lt-sm', 'lt-md', 'lt-lg', 'lt-xl', 'lt-xxl',\n // gt-* from widest to narrowest\n 'gt-xs', 'gt-sm', 'gt-md', 'gt-lg', 'gt-xl',\n // Bootstrap *-down from narrowest to widest\n 'sm-down', 'md-down', 'lg-down', 'xl-down',\n // Bootstrap *-up from widest to narrowest\n 'sm-up', 'md-up', 'lg-up', 'xl-up', 'xxl-up',\n] as const;\n\n// ── Pure resolution functions ─────────────────────────────────────────────────\n// These are standalone functions (not class methods) so they can be called\n// from computed() closures without capturing `this`.\n\n/**\n * Resolution with three-tier priority:\n *\n * 1. Exact breakpoint match (e.g. currentBp='sm' → values['sm'])\n * 2. Generic `default` value (e.g. [fxFlex]=\"49\" — applies to all unspecified bps)\n * 3. Mobile-first cascade down (e.g. [fxFlex.xs]=\"X\" [fxFlex.md]=\"Y\" → lg cascades to md)\n *\n * This ensures [fxFlex]=\"49\" [fxFlex.xs]=\"100\" gives xs→100 and sm+→49,\n * instead of `xs` cascading up and shadowing the default on sm/md/lg.\n */\nexport function resolve<T>(\n values: BpValues<T>,\n currentBp: BreakpointAlias,\n): T | undefined {\n // 1. Exact match\n const exact = values[currentBp as keyof BpValues<T>];\n if (exact !== undefined) return exact;\n\n // 2. Generic default (wins over cascade — it's the \"applies everywhere\" value)\n const def = (values as Record<string, T | undefined>)['default'];\n if (def !== undefined) return def;\n\n // 3. Mobile-first cascade (only when no default — e.g. [fxFlex.xs]=\"X\" [fxFlex.md]=\"Y\")\n const idx = ALIAS_INDEX.get(currentBp) ?? 0;\n for (let i = idx - 1; i >= 0; i--) {\n const v = values[CANONICAL_ALIASES[i] as keyof BpValues<T>];\n if (v !== undefined) return v;\n }\n return undefined;\n}\n\n/**\n * Non-canonical point-in-time check: iterates NON_CANONICAL_PRIORITY and\n * returns the value for the first alias that isActive().\n */\nexport function resolveNonCanonical<T>(\n nc: NcValues<T>,\n isActive: (alias: string) => boolean,\n): T | undefined {\n for (const alias of NON_CANONICAL_PRIORITY) {\n const v = (nc as Record<string, T | undefined>)[alias];\n if (v !== undefined && isActive(alias)) return v;\n }\n return undefined;\n}\n\n/**\n * Full resolution: non-canonical overrides win over the canonical cascade.\n *\n * Usage inside computed():\n * const resolved = computed(() =>\n * resolveAll(this._v(), this._nc(), this.media.currentBp(), a => this.media.isActive(a))\n * );\n */\nexport function resolveAll<T>(\n canonical: BpValues<T>,\n nonCanonical: NcValues<T>,\n currentBp: BreakpointAlias,\n isActive: (alias: string) => boolean,\n): T | undefined {\n return resolveNonCanonical(nonCanonical, isActive) ?? resolve(canonical, currentBp);\n}\n\n// ── Base directive ─────────────────────────────────────────────────────────────\n\n@Directive()\nexport abstract class ResponsiveBaseDirective {\n protected readonly el = inject(ElementRef<HTMLElement>);\n protected readonly r2 = inject(Renderer2);\n protected readonly media = inject(MediaObserver);\n\n /** true in browser, false in SSR */\n protected readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n /** SSR-safe style setter. Pass null/empty string to remove the property. */\n protected safeSetStyle(prop: string, value: string | null): void {\n if (value === null || value === '') {\n this.r2.removeStyle(this.el.nativeElement, prop);\n } else {\n this.r2.setStyle(this.el.nativeElement, prop, value);\n }\n }\n}\n","/**\r\n * @file fx-flex-extras.directives.ts (Angular 21 — signals)\r\n *\r\n * Flex child helper directives:\r\n * [fxFlexOrder] — CSS order\r\n * [fxFlexOffset] — margin-inline-start (RTL-safe)\r\n * [fxFlexAlign] — align-self override\r\n * [fxFlexFill] — fills the container (width/height 100%)\r\n *\r\n * Angular 21 changes:\r\n * • All @Input setters replaced by input() signals\r\n * • computed() derives the resolved CSS values\r\n * • effect() in constructor writes to DOM — no lifecycle hooks\r\n *\r\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\r\n */\r\n\r\nimport { Directive, computed, effect, input, isDevMode } from '@angular/core';\r\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\r\n\r\n@Directive({\r\n selector: `\r\n [fxFlexOrder],\r\n [fxFlexOrder.xs],[fxFlexOrder.sm],[fxFlexOrder.md],[fxFlexOrder.lg],[fxFlexOrder.xl],[fxFlexOrder.xxl],\r\n [fxFlexOrder.lt-sm],[fxFlexOrder.lt-md],[fxFlexOrder.lt-lg],[fxFlexOrder.lt-xl],[fxFlexOrder.lt-xxl],\r\n [fxFlexOrder.gt-xs],[fxFlexOrder.gt-sm],[fxFlexOrder.gt-md],[fxFlexOrder.gt-lg],[fxFlexOrder.gt-xl],\r\n [fxFlexOrder.sm-up],[fxFlexOrder.md-up],[fxFlexOrder.lg-up],[fxFlexOrder.xl-up],[fxFlexOrder.xxl-up],\r\n [fxFlexOrder.sm-down],[fxFlexOrder.md-down],[fxFlexOrder.lg-down],[fxFlexOrder.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxFlexOrderDirective extends ResponsiveBaseDirective {\r\n readonly fxFlexOrder = input<string>(undefined, { alias: 'fxFlexOrder' });\r\n readonly xs = input<string>(undefined, { alias: 'fxFlexOrder.xs' });\r\n readonly sm = input<string>(undefined, { alias: 'fxFlexOrder.sm' });\r\n readonly md = input<string>(undefined, { alias: 'fxFlexOrder.md' });\r\n readonly lg = input<string>(undefined, { alias: 'fxFlexOrder.lg' });\r\n readonly xl = input<string>(undefined, { alias: 'fxFlexOrder.xl' });\r\n readonly xxl = input<string>(undefined, { alias: 'fxFlexOrder.xxl' });\r\n readonly ltSm = input<string>(undefined, { alias: 'fxFlexOrder.lt-sm' });\r\n readonly ltMd = input<string>(undefined, { alias: 'fxFlexOrder.lt-md' });\r\n readonly ltLg = input<string>(undefined, { alias: 'fxFlexOrder.lt-lg' });\r\n readonly ltXl = input<string>(undefined, { alias: 'fxFlexOrder.lt-xl' });\r\n readonly ltXxl = input<string>(undefined, { alias: 'fxFlexOrder.lt-xxl' });\r\n readonly gtXs = input<string>(undefined, { alias: 'fxFlexOrder.gt-xs' });\r\n readonly gtSm = input<string>(undefined, { alias: 'fxFlexOrder.gt-sm' });\r\n readonly gtMd = input<string>(undefined, { alias: 'fxFlexOrder.gt-md' });\r\n readonly gtLg = input<string>(undefined, { alias: 'fxFlexOrder.gt-lg' });\r\n readonly gtXl = input<string>(undefined, { alias: 'fxFlexOrder.gt-xl' });\r\n readonly smUp = input<string>(undefined, { alias: 'fxFlexOrder.sm-up' });\r\n readonly mdUp = input<string>(undefined, { alias: 'fxFlexOrder.md-up' });\r\n readonly lgUp = input<string>(undefined, { alias: 'fxFlexOrder.lg-up' });\r\n readonly xlUp = input<string>(undefined, { alias: 'fxFlexOrder.xl-up' });\r\n readonly xxlUp = input<string>(undefined, { alias: 'fxFlexOrder.xxl-up' });\r\n readonly smDown = input<string>(undefined, { alias: 'fxFlexOrder.sm-down' });\r\n readonly mdDown = input<string>(undefined, { alias: 'fxFlexOrder.md-down' });\r\n readonly lgDown = input<string>(undefined, { alias: 'fxFlexOrder.lg-down' });\r\n readonly xlDown = input<string>(undefined, { alias: 'fxFlexOrder.xl-down' });\r\n\r\n private readonly _order = computed(() =>\r\n resolveAll(\r\n { default: this.fxFlexOrder(), xs: this.xs(), sm: this.sm(), md: this.md(),\r\n lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ) ?? '0'\r\n );\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const v = this._order();\r\n if (isDevMode() && isNaN(Number(v))) console.warn(`[fxFlexOrder] Non-numeric value: \"${v}\"`);\r\n this.safeSetStyle('order', v);\r\n });\r\n }\r\n}\r\n\r\n// ─── fxFlexOffset ────────────────────────────────────────────────────────────\r\n\r\n@Directive({\r\n selector: `\r\n [fxFlexOffset],\r\n [fxFlexOffset.xs],[fxFlexOffset.sm],[fxFlexOffset.md],[fxFlexOffset.lg],[fxFlexOffset.xl],[fxFlexOffset.xxl],\r\n [fxFlexOffset.lt-sm],[fxFlexOffset.lt-md],[fxFlexOffset.lt-lg],[fxFlexOffset.lt-xl],[fxFlexOffset.lt-xxl],\r\n [fxFlexOffset.gt-xs],[fxFlexOffset.gt-sm],[fxFlexOffset.gt-md],[fxFlexOffset.gt-lg],[fxFlexOffset.gt-xl],\r\n [fxFlexOffset.sm-up],[fxFlexOffset.md-up],[fxFlexOffset.lg-up],[fxFlexOffset.xl-up],[fxFlexOffset.xxl-up],\r\n [fxFlexOffset.sm-down],[fxFlexOffset.md-down],[fxFlexOffset.lg-down],[fxFlexOffset.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxFlexOffsetDirective extends ResponsiveBaseDirective {\r\n readonly fxFlexOffset = input<string>(undefined, { alias: 'fxFlexOffset' });\r\n readonly xs = input<string>(undefined, { alias: 'fxFlexOffset.xs' });\r\n readonly sm = input<string>(undefined, { alias: 'fxFlexOffset.sm' });\r\n readonly md = input<string>(undefined, { alias: 'fxFlexOffset.md' });\r\n readonly lg = input<string>(undefined, { alias: 'fxFlexOffset.lg' });\r\n readonly xl = input<string>(undefined, { alias: 'fxFlexOffset.xl' });\r\n readonly xxl = input<string>(undefined, { alias: 'fxFlexOffset.xxl' });\r\n readonly ltSm = input<string>(undefined, { alias: 'fxFlexOffset.lt-sm' });\r\n readonly ltMd = input<string>(undefined, { alias: 'fxFlexOffset.lt-md' });\r\n readonly ltLg = input<string>(undefined, { alias: 'fxFlexOffset.lt-lg' });\r\n readonly ltXl = input<string>(undefined, { alias: 'fxFlexOffset.lt-xl' });\r\n readonly ltXxl = input<string>(undefined, { alias: 'fxFlexOffset.lt-xxl' });\r\n readonly gtXs = input<string>(undefined, { alias: 'fxFlexOffset.gt-xs' });\r\n readonly gtSm = input<string>(undefined, { alias: 'fxFlexOffset.gt-sm' });\r\n readonly gtMd = input<string>(undefined, { alias: 'fxFlexOffset.gt-md' });\r\n readonly gtLg = input<string>(undefined, { alias: 'fxFlexOffset.gt-lg' });\r\n readonly gtXl = input<string>(undefined, { alias: 'fxFlexOffset.gt-xl' });\r\n readonly smUp = input<string>(undefined, { alias: 'fxFlexOffset.sm-up' });\r\n readonly mdUp = input<string>(undefined, { alias: 'fxFlexOffset.md-up' });\r\n readonly lgUp = input<string>(undefined, { alias: 'fxFlexOffset.lg-up' });\r\n readonly xlUp = input<string>(undefined, { alias: 'fxFlexOffset.xl-up' });\r\n readonly xxlUp = input<string>(undefined, { alias: 'fxFlexOffset.xxl-up' });\r\n readonly smDown = input<string>(undefined, { alias: 'fxFlexOffset.sm-down' });\r\n readonly mdDown = input<string>(undefined, { alias: 'fxFlexOffset.md-down' });\r\n readonly lgDown = input<string>(undefined, { alias: 'fxFlexOffset.lg-down' });\r\n readonly xlDown = input<string>(undefined, { alias: 'fxFlexOffset.xl-down' });\r\n\r\n private readonly _offset = computed(() =>\r\n resolveAll(\r\n { default: this.fxFlexOffset(), xs: this.xs(), sm: this.sm(), md: this.md(),\r\n lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ) ?? '0'\r\n );\r\n\r\n constructor() {\r\n super();\r\n effect(() => { this.safeSetStyle('margin-inline-start', this._offset()); });\r\n }\r\n}\r\n\r\n// ─── fxFlexAlign ─────────────────────────────────────────────────────────────\r\n\r\ntype AlignSelf = 'auto' | 'start' | 'center' | 'end' | 'stretch' | 'baseline';\r\nconst ALIGN_SELF_MAP: Record<string, string> = {\r\n start: 'flex-start', end: 'flex-end', center: 'center',\r\n stretch: 'stretch', baseline: 'baseline', auto: 'auto',\r\n};\r\n\r\n@Directive({\r\n selector: `\r\n [fxFlexAlign],\r\n [fxFlexAlign.xs],[fxFlexAlign.sm],[fxFlexAlign.md],[fxFlexAlign.lg],[fxFlexAlign.xl],[fxFlexAlign.xxl],\r\n [fxFlexAlign.lt-sm],[fxFlexAlign.lt-md],[fxFlexAlign.lt-lg],[fxFlexAlign.lt-xl],[fxFlexAlign.lt-xxl],\r\n [fxFlexAlign.gt-xs],[fxFlexAlign.gt-sm],[fxFlexAlign.gt-md],[fxFlexAlign.gt-lg],[fxFlexAlign.gt-xl],\r\n [fxFlexAlign.sm-up],[fxFlexAlign.md-up],[fxFlexAlign.lg-up],[fxFlexAlign.xl-up],[fxFlexAlign.xxl-up],\r\n [fxFlexAlign.sm-down],[fxFlexAlign.md-down],[fxFlexAlign.lg-down],[fxFlexAlign.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxFlexAlignDirective extends ResponsiveBaseDirective {\r\n readonly fxFlexAlign = input<AlignSelf>(undefined, { alias: 'fxFlexAlign' });\r\n readonly xs = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xs' });\r\n readonly sm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.sm' });\r\n readonly md = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.md' });\r\n readonly lg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lg' });\r\n readonly xl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xl' });\r\n readonly xxl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xxl' });\r\n readonly ltSm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-sm' });\r\n readonly ltMd = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-md' });\r\n readonly ltLg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-lg' });\r\n readonly ltXl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-xl' });\r\n readonly ltXxl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-xxl' });\r\n readonly gtXs = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-xs' });\r\n readonly gtSm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-sm' });\r\n readonly gtMd = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-md' });\r\n readonly gtLg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-lg' });\r\n readonly gtXl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-xl' });\r\n readonly smUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.sm-up' });\r\n readonly mdUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.md-up' });\r\n readonly lgUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lg-up' });\r\n readonly xlUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xl-up' });\r\n readonly xxlUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xxl-up' });\r\n readonly smDown = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.sm-down' });\r\n readonly mdDown = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.md-down' });\r\n readonly lgDown = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lg-down' });\r\n readonly xlDown = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xl-down' });\r\n\r\n private readonly _alignSelf = computed(() => {\r\n const v = resolveAll(\r\n { default: this.fxFlexAlign(), xs: this.xs(), sm: this.sm(), md: this.md(),\r\n lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ) ?? 'stretch';\r\n if (isDevMode() && !ALIGN_SELF_MAP[v]) console.warn(`[fxFlexAlign] Unknown value: \"${v}\". Valid: ${Object.keys(ALIGN_SELF_MAP).join(', ')}`);\r\n return ALIGN_SELF_MAP[v] ?? v;\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => { this.safeSetStyle('align-self', this._alignSelf()); });\r\n }\r\n}\r\n\r\n// ─── fxFlexFill ──────────────────────────────────────────────────────────────\r\n// fxFlexFill is intentionally non-responsive in its most common usage,\r\n// but supports breakpoint suffixes for edge cases where fill must be toggled.\r\n\r\ntype FillValue = 'fill' | 'none' | '' | boolean;\r\nfunction toBool(v: FillValue | undefined): boolean | undefined {\r\n if (v === undefined) return undefined;\r\n if (typeof v === 'boolean') return v;\r\n if (v === '') return true;\r\n return v !== 'none';\r\n}\r\n\r\n@Directive({\r\n selector: `\r\n [fxFlexFill],[fxFill],\r\n [fxFlexFill.xs],[fxFlexFill.sm],[fxFlexFill.md],[fxFlexFill.lg],[fxFlexFill.xl],[fxFlexFill.xxl],\r\n [fxFlexFill.lt-sm],[fxFlexFill.lt-md],[fxFlexFill.lt-lg],[fxFlexFill.lt-xl],[fxFlexFill.lt-xxl],\r\n [fxFlexFill.gt-xs],[fxFlexFill.gt-sm],[fxFlexFill.gt-md],[fxFlexFill.gt-lg],[fxFlexFill.gt-xl],\r\n [fxFlexFill.sm-up],[fxFlexFill.md-up],[fxFlexFill.lg-up],[fxFlexFill.xl-up],[fxFlexFill.xxl-up],\r\n [fxFlexFill.sm-down],[fxFlexFill.md-down],[fxFlexFill.lg-down],[fxFlexFill.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxFlexFillDirective extends ResponsiveBaseDirective {\r\n readonly fxFlexFill = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill', transform: toBool });\r\n readonly fxFill = input<boolean, FillValue>(undefined, { alias: 'fxFill', transform: toBool });\r\n readonly xs = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xs', transform: toBool });\r\n readonly sm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.sm', transform: toBool });\r\n readonly md = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.md', transform: toBool });\r\n readonly lg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lg', transform: toBool });\r\n readonly xl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xl', transform: toBool });\r\n readonly xxl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xxl', transform: toBool });\r\n readonly ltSm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-sm', transform: toBool });\r\n readonly ltMd = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-md', transform: toBool });\r\n readonly ltLg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-lg', transform: toBool });\r\n readonly ltXl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-xl', transform: toBool });\r\n readonly ltXxl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-xxl', transform: toBool });\r\n readonly gtXs = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-xs', transform: toBool });\r\n readonly gtSm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-sm', transform: toBool });\r\n readonly gtMd = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-md', transform: toBool });\r\n readonly gtLg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-lg', transform: toBool });\r\n readonly gtXl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-xl', transform: toBool });\r\n readonly smUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.sm-up', transform: toBool });\r\n readonly mdUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.md-up', transform: toBool });\r\n readonly lgUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lg-up', transform: toBool });\r\n readonly xlUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xl-up', transform: toBool });\r\n readonly xxlUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xxl-up', transform: toBool });\r\n readonly smDown = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.sm-down', transform: toBool });\r\n readonly mdDown = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.md-down', transform: toBool });\r\n readonly lgDown = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lg-down', transform: toBool });\r\n readonly xlDown = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xl-down', transform: toBool });\r\n\r\n private readonly _active = computed(() =>\r\n (resolveAll(\r\n // fxFill is a shorthand alias for the default; fxFlexFill wins if both set\r\n { default: this.fxFlexFill() ?? this.fxFill(),\r\n xs: this.xs() as boolean | undefined, sm: this.sm() as boolean | undefined,\r\n md: this.md() as boolean | undefined, lg: this.lg() as boolean | undefined,\r\n xl: this.xl() as boolean | undefined, xxl: this.xxl() as boolean | undefined },\r\n { 'lt-sm': this.ltSm() as boolean | undefined, 'lt-md': this.ltMd() as boolean | undefined,\r\n 'lt-lg': this.ltLg() as boolean | undefined, 'lt-xl': this.ltXl() as boolean | undefined,\r\n 'lt-xxl': this.ltXxl() as boolean | undefined,\r\n 'gt-xs': this.gtXs() as boolean | undefined, 'gt-sm': this.gtSm() as boolean | undefined,\r\n 'gt-md': this.gtMd() as boolean | undefined, 'gt-lg': this.gtLg() as boolean | undefined,\r\n 'gt-xl': this.gtXl() as boolean | undefined,\r\n 'sm-up': this.smUp() as boolean | undefined, 'md-up': this.mdUp() as boolean | undefined,\r\n 'lg-up': this.lgUp() as boolean | undefined, 'xl-up': this.xlUp() as boolean | undefined,\r\n 'xxl-up': this.xxlUp() as boolean | undefined,\r\n 'sm-down': this.smDown() as boolean | undefined, 'md-down': this.mdDown() as boolean | undefined,\r\n 'lg-down': this.lgDown() as boolean | undefined, 'xl-down': this.xlDown() as boolean | undefined },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ) as boolean | undefined) ?? true\r\n );\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const active = this._active();\r\n const v = active ? '100%' : null;\r\n this.safeSetStyle('margin', active ? '0' : null);\r\n // align-self: stretch ensures this element fills the parent's cross axis even\r\n // when the parent flex container has align-items: center (e.g. mat-toolbar).\r\n // Without this, height: 100% collapses to content height and align-items on\r\n // this container has no visible centering space.\r\n this.safeSetStyle('align-self', active ? 'stretch' : null);\r\n this.safeSetStyle('width', v);\r\n this.safeSetStyle('height', v);\r\n this.safeSetStyle('min-width', v);\r\n this.safeSetStyle('min-height', v);\r\n });\r\n }\r\n}\r\n","/**\n * @file fx-flex.directive.ts (Angular 21 — signals)\n *\n * [fxFlex] — flex shorthand on a flex child element.\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • computed() builds the BpValues / NcValues maps reactively\n * • effect() in constructor writes to the DOM — no lifecycle hooks needed\n * • resolveAll() is the pure function from responsive-base.directive.ts\n *\n * Accepted values:\n * (empty) → flex: 1 1 0%\n * \"auto\" → flex: 1 1 auto\n * \"none\" → flex: none\n * \"grow\" → flex: 1 1 100%\n * \"nogrow\" → flex: 0 1 auto\n * \"noshrink\" → flex: 1 0 auto\n * \"50%\" → flex: 1 1 50%\n * \"50\" → flex: 1 1 50% (unitless normalized to %)\n * \"200px\" → flex: 1 1 200px\n * \"0 0 200px\" → flex: 0 0 200px (full shorthand passthrough)\n *\n * Breakpoint suffixes:\n * Canonical : .xs .sm .md .lg .xl .xxl\n * lt-* : .lt-sm .lt-md .lt-lg .lt-xl .lt-xxl\n * gt-* : .gt-xs .gt-sm .gt-md .gt-lg .gt-xl\n * *-up : .sm-up .md-up .lg-up .xl-up .xxl-up\n * *-down : .sm-down .md-down .lg-down .xl-down\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\nfunction toFlexCss(raw: string | undefined): string {\n if (raw === undefined || raw === '' || raw === '*') return '1 1 auto';\n if (raw === 'none') return 'none';\n if (raw === 'auto') return '1 1 auto';\n if (raw === 'grow') return '1 1 100%';\n if (raw === 'nogrow') return '0 1 auto';\n if (raw === 'noshrink') return '1 0 auto';\n const parts = raw.trim().split(/\\s+/);\n if (parts.length === 3) return raw.trim();\n let basis = parts[0];\n if (/^\\d+(\\.\\d+)?$/.test(basis)) basis = basis + '%';\n // Fixed units (px, em, rem, vh, vw…) → 0 0 (no grow/shrink); % → 1 1\n const fixed = /px|em|rem|vh|vw|vmin|vmax|ch|ex|cm|mm|in|pt|pc/.test(basis);\n return `${fixed ? '0 0' : '1 1'} ${basis}`;\n}\n\n/** Returns true if any sibling element in the same parent has fxFlex=\"*\" */\nfunction parentHasStar(el: HTMLElement): boolean {\n const parent = el.parentElement;\n if (!parent) return false;\n return Array.from(parent.children).some(\n c => c !== el && (c.getAttribute('fxflex') === '*' || c.getAttribute('fxFlex') === '*')\n );\n}\n\n@Directive({\n selector: `\n [fxFlex],\n [fxFlex.xs],[fxFlex.sm],[fxFlex.md],[fxFlex.lg],[fxFlex.xl],[fxFlex.xxl],\n [fxFlex.lt-sm],[fxFlex.lt-md],[fxFlex.lt-lg],[fxFlex.lt-xl],[fxFlex.lt-xxl],\n [fxFlex.gt-xs],[fxFlex.gt-sm],[fxFlex.gt-md],[fxFlex.gt-lg],[fxFlex.gt-xl],\n [fxFlex.sm-up],[fxFlex.md-up],[fxFlex.lg-up],[fxFlex.xl-up],[fxFlex.xxl-up],\n [fxFlex.sm-down],[fxFlex.md-down],[fxFlex.lg-down],[fxFlex.xl-down]\n `,\n standalone: true,\n})\nexport class FxFlexDirective extends ResponsiveBaseDirective {\n // ── Canonical signal inputs ───────────────────────────────────────────────\n readonly fxFlex = input<string>(undefined, { alias: 'fxFlex' });\n readonly xs = input<string>(undefined, { alias: 'fxFlex.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxFlex.sm' });\n readonly md = input<string>(undefined, { alias: 'fxFlex.md' });\n readonly lg = input<string>(undefined, { alias: 'fxFlex.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxFlex.xl' });\n readonly xxl = input<string>(undefined, { alias: 'fxFlex.xxl' });\n // ── lt-* ─────────────────────────────────────────────────────────────────\n readonly ltSm = input<string>(undefined, { alias: 'fxFlex.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxFlex.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxFlex.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxFlex.lt-xl' });\n readonly ltXxl = input<string>(undefined, { alias: 'fxFlex.lt-xxl' });\n // ── gt-* ─────────────────────────────────────────────────────────────────\n readonly gtXs = input<string>(undefined, { alias: 'fxFlex.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxFlex.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxFlex.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxFlex.gt-lg' });\n readonly gtXl = input<string>(undefined, { alias: 'fxFlex.gt-xl' });\n // ── *-up ─────────────────────────────────────────────────────────────────\n readonly smUp = input<string>(undefined, { alias: 'fxFlex.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxFlex.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxFlex.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxFlex.xl-up' });\n readonly xxlUp = input<string>(undefined, { alias: 'fxFlex.xxl-up' });\n // ── *-down ───────────────────────────────────────────────────────────────\n readonly smDown = input<string>(undefined, { alias: 'fxFlex.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxFlex.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxFlex.lg-down' });\n readonly xlDown = input<string>(undefined, { alias: 'fxFlex.xl-down' });\n\n // ── Derived CSS value ──────────────────────────────────────────────────────\n // Inlined single computed: Angular tracks each input() individually,\n // so _flexCss only recomputes when a signal it actually reads changes.\n private readonly _rawFlex = computed(() =>\n resolveAll(\n { default: this.fxFlex(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n\n constructor() {\n super();\n effect(() => {\n const raw = this._rawFlex();\n // undefined means no rule matched the current breakpoint (e.g. only fxFlex.lt-md=\"100\"\n // is set and the current bp is lg+). Remove flex entirely so the browser default\n // (flex: 0 1 auto) applies and justify-content can distribute the remaining space.\n if (raw === undefined) {\n this.safeSetStyle('flex', null);\n this.safeSetStyle('box-sizing', null);\n return;\n }\n // empty string / \"*\" → equal distribution (1 1 auto), unless a star-sibling is present\n const css = raw === ''\n ? (parentHasStar(this.el.nativeElement) ? '0 0 auto' : '1 1 auto')\n : toFlexCss(raw);\n this.safeSetStyle('flex', css);\n this.safeSetStyle('box-sizing', 'border-box');\n });\n }\n}\n","/**\r\n * @file fx-grid.directives.ts (Angular 21 — signals)\r\n *\r\n * CSS Grid responsive directives.\r\n *\r\n * [fxGrid] — display:grid + responsive grid-template-columns.\r\n * Accepts [fxGridRows] and [fxGridGap] inputs on same host.\r\n * [fxGridColumn] — grid-column on a child\r\n * [fxGridArea] — grid-area on a child\r\n *\r\n * Angular 21 changes:\r\n * • All @Input setters replaced by input() signals\r\n * • FxGridDirective uses 3 pairs of computed() for cols/rows/gap maps\r\n * • Single effect() in constructor writes all 3 CSS props\r\n * • Null/undefined props are removed (no style leak)\r\n *\r\n * Unitless numeric gap values are normalized to px (\"16\" → \"16px\").\r\n *\r\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\r\n */\r\n\r\nimport { Directive, computed, effect, input } from '@angular/core';\r\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\r\n\r\nfunction normalizeGap(raw: string | undefined): string | undefined {\r\n if (!raw) return undefined;\r\n return raw.trim().split(/\\s+/)\r\n .map(v => /^\\d+(\\.\\d+)?$/.test(v) ? `${v}px` : v)\r\n .join(' ');\r\n}\r\n\r\n// ─── fxGrid (container) ──────────────────────────────────────────────────────\r\n\r\n@Directive({\r\n selector: `\r\n [fxGrid],\r\n [fxGrid.xs],[fxGrid.sm],[fxGrid.md],[fxGrid.lg],[fxGrid.xl],[fxGrid.xxl],\r\n [fxGrid.lt-sm],[fxGrid.lt-md],[fxGrid.lt-lg],[fxGrid.lt-xl],[fxGrid.lt-xxl],\r\n [fxGrid.gt-xs],[fxGrid.gt-sm],[fxGrid.gt-md],[fxGrid.gt-lg],[fxGrid.gt-xl],\r\n [fxGrid.sm-up],[fxGrid.md-up],[fxGrid.lg-up],[fxGrid.xl-up],[fxGrid.xxl-up],\r\n [fxGrid.sm-down],[fxGrid.md-down],[fxGrid.lg-down],[fxGrid.xl-down]\r\n `,\r\n standalone: true,\r\n host: { '[style.display]': '\"grid\"' },\r\n})\r\nexport class FxGridDirective extends ResponsiveBaseDirective {\r\n // ── grid-template-columns ──────────────────────────────────────────────────\r\n readonly fxGrid = input<string>(undefined, { alias: 'fxGrid' });\r\n readonly xs = input<string>(undefined, { alias: 'fxGrid.xs' });\r\n readonly sm = input<string>(undefined, { alias: 'fxGrid.sm' });\r\n readonly md = input<string>(undefined, { alias: 'fxGrid.md' });\r\n readonly lg = input<string>(undefined, { alias: 'fxGrid.lg' });\r\n readonly xl = input<string>(undefined, { alias: 'fxGrid.xl' });\r\n readonly xxl = input<string>(undefined, { alias: 'fxGrid.xxl' });\r\n readonly ltSm = input<string>(undefined, { alias: 'fxGrid.lt-sm' });\r\n readonly ltMd = input<string>(undefined, { alias: 'fxGrid.lt-md' });\r\n readonly ltLg = input<string>(undefined, { alias: 'fxGrid.lt-lg' });\r\n readonly ltXl = input<string>(undefined, { alias: 'fxGrid.lt-xl' });\r\n readonly ltXxl = input<string>(undefined, { alias: 'fxGrid.lt-xxl' });\r\n readonly gtXs = input<string>(undefined, { alias: 'fxGrid.gt-xs' });\r\n readonly gtSm = input<string>(undefined, { alias: 'fxGrid.gt-sm' });\r\n readonly gtMd = input<string>(undefined, { alias: 'fxGrid.gt-md' });\r\n readonly gtLg = input<string>(undefined, { alias: 'fxGrid.gt-lg' });\r\n readonly gtXl = input<string>(undefined, { alias: 'fxGrid.gt-xl' });\r\n readonly smUp = input<string>(undefined, { alias: 'fxGrid.sm-up' });\r\n readonly mdUp = input<string>(undefined, { alias: 'fxGrid.md-up' });\r\n readonly lgUp = input<string>(undefined, { alias: 'fxGrid.lg-up' });\r\n readonly xlUp = input<string>(undefined, { alias: 'fxGrid.xl-up' });\r\n readonly xxlUp = input<string>(undefined, { alias: 'fxGrid.xxl-up' });\r\n readonly smDown = input<string>(undefined, { alias: 'fxGrid.sm-down' });\r\n readonly mdDown = input<string>(undefined, { alias: 'fxGrid.md-down' });\r\n readonly lgDown = input<string>(undefined, { alias: 'fxGrid.lg-down' });\r\n readonly xlDown = input<string>(undefined, { alias: 'fxGrid.xl-down' });\r\n\r\n // ── grid-template-rows ────────────────────────────────────────────────────\r\n readonly fxGridRows = input<string>(undefined, { alias: 'fxGridRows' });\r\n readonly rowsXs = input<string>(undefined, { alias: 'fxGridRows.xs' });\r\n readonly rowsSm = input<string>(undefined, { alias: 'fxGridRows.sm' });\r\n readonly rowsMd = input<string>(undefined, { alias: 'fxGridRows.md' });\r\n readonly rowsLg = input<string>(undefined, { alias: 'fxGridRows.lg' });\r\n readonly rowsXl = input<string>(undefined, { alias: 'fxGridRows.xl' });\r\n readonly rowsXxl = input<string>(undefined, { alias: 'fxGridRows.xxl' });\r\n readonly rowsLtSm = input<string>(undefined, { alias: 'fxGridRows.lt-sm' });\r\n readonly rowsLtMd = input<string>(undefined, { alias: 'fxGridRows.lt-md' });\r\n readonly rowsLtLg = input<string>(undefined, { alias: 'fxGridRows.lt-lg' });\r\n readonly rowsLtXl = input<string>(undefined, { alias: 'fxGridRows.lt-xl' });\r\n readonly rowsLtXxl = input<string>(undefined, { alias: 'fxGridRows.lt-xxl' });\r\n readonly rowsGtXs = input<string>(undefined, { alias: 'fxGridRows.gt-xs' });\r\n readonly rowsGtSm = input<string>(undefined, { alias: 'fxGridRows.gt-sm' });\r\n readonly rowsGtMd = input<string>(undefined, { alias: 'fxGridRows.gt-md' });\r\n readonly rowsGtLg = input<string>(undefined, { alias: 'fxGridRows.gt-lg' });\r\n readonly rowsGtXl = input<string>(undefined, { alias: 'fxGridRows.gt-xl' });\r\n readonly rowsSmUp = input<string>(undefined, { alias: 'fxGridRows.sm-up' });\r\n readonly rowsMdUp = input<string>(undefined, { alias: 'fxGridRows.md-up' });\r\n readonly rowsLgUp = input<string>(undefined, { alias: 'fxGridRows.lg-up' });\r\n readonly rowsXlUp = input<string>(undefined, { alias: 'fxGridRows.xl-up' });\r\n readonly rowsXxlUp = input<string>(undefined, { alias: 'fxGridRows.xxl-up' });\r\n readonly rowsSmDown = input<string>(undefined, { alias: 'fxGridRows.sm-down' });\r\n readonly rowsMdDown = input<string>(undefined, { alias: 'fxGridRows.md-down' });\r\n readonly rowsLgDown = input<string>(undefined, { alias: 'fxGridRows.lg-down' });\r\n readonly rowsXlDown = input<string>(undefined, { alias: 'fxGridRows.xl-down' });\r\n\r\n // ── gap ───────────────────────────────────────────────────────────────────\r\n readonly fxGridGap = input<string>(undefined, { alias: 'fxGridGap' });\r\n readonly gapXs = input<string>(undefined, { alias: 'fxGridGap.xs' });\r\n readonly gapSm = input<string>(undefined, { alias: 'fxGridGap.sm' });\r\n readonly gapMd = input<string>(undefined, { alias: 'fxGridGap.md' });\r\n readonly gapLg = input<string>(undefined, { alias: 'fxGridGap.lg' });\r\n readonly gapXl = input<string>(undefined, { alias: 'fxGridGap.xl' });\r\n readonly gapXxl = input<string>(undefined, { alias: 'fxGridGap.xxl' });\r\n readonly gapLtSm = input<string>(undefined, { alias: 'fxGridGap.lt-sm' });\r\n readonly gapLtMd = input<string>(undefined, { alias: 'fxGridGap.lt-md' });\r\n readonly gapLtLg = input<string>(undefined, { alias: 'fxGridGap.lt-lg' });\r\n readonly gapLtXl = input<string>(undefined, { alias: 'fxGridGap.lt-xl' });\r\n readonly gapLtXxl = input<string>(undefined, { alias: 'fxGridGap.lt-xxl' });\r\n readonly gapGtXs = input<string>(undefined, { alias: 'fxGridGap.gt-xs' });\r\n readonly gapGtSm = input<string>(undefined, { alias: 'fxGridGap.gt-sm' });\r\n readonly gapGtMd = input<string>(undefined, { alias: 'fxGridGap.gt-md' });\r\n readonly gapGtLg = input<string>(undefined, { alias: 'fxGridGap.gt-lg' });\r\n readonly gapGtXl = input<string>(undefined, { alias: 'fxGridGap.gt-xl' });\r\n readonly gapSmUp = input<string>(undefined, { alias: 'fxGridGap.sm-up' });\r\n readonly gapMdUp = input<string>(undefined, { alias: 'fxGridGap.md-up' });\r\n readonly gapLgUp = input<string>(undefined, { alias: 'fxGridGap.lg-up' });\r\n readonly gapXlUp = input<string>(undefined, { alias: 'fxGridGap.xl-up' });\r\n readonly gapXxlUp = input<string>(undefined, { alias: 'fxGridGap.xxl-up' });\r\n readonly gapSmDown = input<string>(undefined, { alias: 'fxGridGap.sm-down' });\r\n readonly gapMdDown = input<string>(undefined, { alias: 'fxGridGap.md-down' });\r\n readonly gapLgDown = input<string>(undefined, { alias: 'fxGridGap.lg-down' });\r\n readonly gapXlDown = input<string>(undefined, { alias: 'fxGridGap.xl-down' });\r\n\r\n // ── resolved values (flat computed — no intermediate object computed) ──────\r\n private readonly _cols = computed(() =>\r\n resolveAll<string>(\r\n { default: this.fxGrid(), xs: this.xs(), sm: this.sm(),\r\n md: this.md(), lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n )\r\n );\r\n private readonly _rows = computed(() =>\r\n resolveAll<string>(\r\n { default: this.fxGridRows(), xs: this.rowsXs(), sm: this.rowsSm(),\r\n md: this.rowsMd(), lg: this.rowsLg(), xl: this.rowsXl(), xxl: this.rowsXxl() },\r\n { 'lt-sm': this.rowsLtSm(), 'lt-md': this.rowsLtMd(), 'lt-lg': this.rowsLtLg(),\r\n 'lt-xl': this.rowsLtXl(), 'lt-xxl': this.rowsLtXxl(),\r\n 'gt-xs': this.rowsGtXs(), 'gt-sm': this.rowsGtSm(), 'gt-md': this.rowsGtMd(),\r\n 'gt-lg': this.rowsGtLg(), 'gt-xl': this.rowsGtXl(),\r\n 'sm-up': this.rowsSmUp(), 'md-up': this.rowsMdUp(), 'lg-up': this.rowsLgUp(),\r\n 'xl-up': this.rowsXlUp(), 'xxl-up': this.rowsXxlUp(),\r\n 'sm-down': this.rowsSmDown(), 'md-down': this.rowsMdDown(),\r\n 'lg-down': this.rowsLgDown(), 'xl-down': this.rowsXlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n )\r\n );\r\n private readonly _gap = computed(() =>\r\n normalizeGap(resolveAll<string>(\r\n { default: this.fxGridGap(), xs: this.gapXs(), sm: this.gapSm(),\r\n md: this.gapMd(), lg: this.gapLg(), xl: this.gapXl(), xxl: this.gapXxl() },\r\n { 'lt-sm': this.gapLtSm(), 'lt-md': this.gapLtMd(), 'lt-lg': this.gapLtLg(),\r\n 'lt-xl': this.gapLtXl(), 'lt-xxl': this.gapLtXxl(),\r\n 'gt-xs': this.gapGtXs(), 'gt-sm': this.gapGtSm(), 'gt-md': this.gapGtMd(),\r\n 'gt-lg': this.gapGtLg(), 'gt-xl': this.gapGtXl(),\r\n 'sm-up': this.gapSmUp(), 'md-up': this.gapMdUp(), 'lg-up': this.gapLgUp(),\r\n 'xl-up': this.gapXlUp(), 'xxl-up': this.gapXxlUp(),\r\n 'sm-down': this.gapSmDown(), 'md-down': this.gapMdDown(),\r\n 'lg-down': this.gapLgDown(), 'xl-down': this.gapXlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ))\r\n );\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const cols = this._cols();\r\n const rows = this._rows();\r\n const gap = this._gap();\r\n cols ? this.safeSetStyle('grid-template-columns', cols)\r\n : this.r2.removeStyle(this.el.nativeElement, 'grid-template-columns');\r\n rows ? this.safeSetStyle('grid-template-rows', rows)\r\n : this.r2.removeStyle(this.el.nativeElement, 'grid-template-rows');\r\n gap ? this.safeSetStyle('gap', gap)\r\n : this.r2.removeStyle(this.el.nativeElement, 'gap');\r\n });\r\n }\r\n}\r\n\r\n// ─── fxGridColumn ─────────────────────────────────────────────────────────────\r\n\r\n@Directive({\r\n selector: `\r\n [fxGridColumn],\r\n [fxGridColumn.xs],[fxGridColumn.sm],[fxGridColumn.md],[fxGridColumn.lg],[fxGridColumn.xl],[fxGridColumn.xxl],\r\n [fxGridColumn.lt-sm],[fxGridColumn.lt-md],[fxGridColumn.lt-lg],[fxGridColumn.lt-xl],[fxGridColumn.lt-xxl],\r\n [fxGridColumn.gt-xs],[fxGridColumn.gt-sm],[fxGridColumn.gt-md],[fxGridColumn.gt-lg],[fxGridColumn.gt-xl],\r\n [fxGridColumn.sm-up],[fxGridColumn.md-up],[fxGridColumn.lg-up],[fxGridColumn.xl-up],[fxGridColumn.xxl-up],\r\n [fxGridColumn.sm-down],[fxGridColumn.md-down],[fxGridColumn.lg-down],[fxGridColumn.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxGridColumnDirective extends ResponsiveBaseDirective {\r\n readonly fxGridColumn = input<string>(undefined, { alias: 'fxGridColumn' });\r\n readonly xs = input<string>(undefined, { alias: 'fxGridColumn.xs' });\r\n readonly sm = input<string>(undefined, { alias: 'fxGridColumn.sm' });\r\n readonly md = input<string>(undefined, { alias: 'fxGridColumn.md' });\r\n readonly lg = input<string>(undefined, { alias: 'fxGridColumn.lg' });\r\n readonly xl = input<string>(undefined, { alias: 'fxGridColumn.xl' });\r\n readonly xxl = input<string>(undefined, { alias: 'fxGridColumn.xxl' });\r\n readonly ltSm = input<string>(undefined, { alias: 'fxGridColumn.lt-sm' });\r\n readonly ltMd = input<string>(undefined, { alias: 'fxGridColumn.lt-md' });\r\n readonly ltLg = input<string>(undefined, { alias: 'fxGridColumn.lt-lg' });\r\n readonly ltXl = input<string>(undefined, { alias: 'fxGridColumn.lt-xl' });\r\n readonly ltXxl = input<string>(undefined, { alias: 'fxGridColumn.lt-xxl' });\r\n readonly gtXs = input<string>(undefined, { alias: 'fxGridColumn.gt-xs' });\r\n readonly gtSm = input<string>(undefined, { alias: 'fxGridColumn.gt-sm' });\r\n readonly gtMd = input<string>(undefined, { alias: 'fxGridColumn.gt-md' });\r\n readonly gtLg = input<string>(undefined, { alias: 'fxGridColumn.gt-lg' });\r\n readonly gtXl = input<string>(undefined, { alias: 'fxGridColumn.gt-xl' });\r\n readonly smUp = input<string>(undefined, { alias: 'fxGridColumn.sm-up' });\r\n readonly mdUp = input<string>(undefined, { alias: 'fxGridColumn.md-up' });\r\n readonly lgUp = input<string>(undefined, { alias: 'fxGridColumn.lg-up' });\r\n readonly xlUp = input<string>(undefined, { alias: 'fxGridColumn.xl-up' });\r\n readonly xxlUp = input<string>(undefined, { alias: 'fxGridColumn.xxl-up' });\r\n readonly smDown = input<string>(undefined, { alias: 'fxGridColumn.sm-down' });\r\n readonly mdDown = input<string>(undefined, { alias: 'fxGridColumn.md-down' });\r\n readonly lgDown = input<string>(undefined, { alias: 'fxGridColumn.lg-down' });\r\n readonly xlDown = input<string>(undefined, { alias: 'fxGridColumn.xl-down' });\r\n\r\n private readonly _resolved = computed(() =>\r\n resolveAll<string>(\r\n { default: this.fxGridColumn(), xs: this.xs(), sm: this.sm(),\r\n md: this.md(), lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n )\r\n );\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const v = this._resolved();\r\n v ? this.safeSetStyle('grid-column', v)\r\n : this.r2.removeStyle(this.el.nativeElement, 'grid-column');\r\n });\r\n }\r\n}\r\n\r\n// ─── fxGridArea ───────────────────────────────────────────────────────────────\r\n\r\n@Directive({\r\n selector: `\r\n [fxGridArea],\r\n [fxGridArea.xs],[fxGridArea.sm],[fxGridArea.md],[fxGridArea.lg],[fxGridArea.xl],[fxGridArea.xxl],\r\n [fxGridArea.lt-sm],[fxGridArea.lt-md],[fxGridArea.lt-lg],[fxGridArea.lt-xl],[fxGridArea.lt-xxl],\r\n [fxGridArea.gt-xs],[fxGridArea.gt-sm],[fxGridArea.gt-md],[fxGridArea.gt-lg],[fxGridArea.gt-xl],\r\n [fxGridArea.sm-up],[fxGridArea.md-up],[fxGridArea.lg-up],[fxGridArea.xl-up],[fxGridArea.xxl-up],\r\n [fxGridArea.sm-down],[fxGridArea.md-down],[fxGridArea.lg-down],[fxGridArea.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxGridAreaDirective extends ResponsiveBaseDirective {\r\n readonly fxGridArea = input<string>(undefined, { alias: 'fxGridArea' });\r\n readonly xs = input<string>(undefined, { alias: 'fxGridArea.xs' });\r\n readonly sm = input<string>(undefined, { alias: 'fxGridArea.sm' });\r\n readonly md = input<string>(undefined, { alias: 'fxGridArea.md' });\r\n readonly lg = input<string>(undefined, { alias: 'fxGridArea.lg' });\r\n readonly xl = input<string>(undefined, { alias: 'fxGridArea.xl' });\r\n readonly xxl = input<string>(undefined, { alias: 'fxGridArea.xxl' });\r\n readonly ltSm = input<string>(undefined, { alias: 'fxGridArea.lt-sm' });\r\n readonly ltMd = input<string>(undefined, { alias: 'fxGridArea.lt-md' });\r\n readonly ltLg = input<string>(undefined, { alias: 'fxGridArea.lt-lg' });\r\n readonly ltXl = input<string>(undefined, { alias: 'fxGridArea.lt-xl' });\r\n readonly ltXxl = input<string>(undefined, { alias: 'fxGridArea.lt-xxl' });\r\n readonly gtXs = input<string>(undefined, { alias: 'fxGridArea.gt-xs' });\r\n readonly gtSm = input<string>(undefined, { alias: 'fxGridArea.gt-sm' });\r\n readonly gtMd = input<string>(undefined, { alias: 'fxGridArea.gt-md' });\r\n readonly gtLg = input<string>(undefined, { alias: 'fxGridArea.gt-lg' });\r\n readonly gtXl = input<string>(undefined, { alias: 'fxGridArea.gt-xl' });\r\n readonly smUp = input<string>(undefined, { alias: 'fxGridArea.sm-up' });\r\n readonly mdUp = input<string>(undefined, { alias: 'fxGridArea.md-up' });\r\n readonly lgUp = input<string>(undefined, { alias: 'fxGridArea.lg-up' });\r\n readonly xlUp = input<string>(undefined, { alias: 'fxGridArea.xl-up' });\r\n readonly xxlUp = input<string>(undefined, { alias: 'fxGridArea.xxl-up' });\r\n readonly smDown = input<string>(undefined, { alias: 'fxGridArea.sm-down' });\r\n readonly mdDown = input<string>(undefined, { alias: 'fxGridArea.md-down' });\r\n readonly lgDown = input<string>(undefined, { alias: 'fxGridArea.lg-down' });\r\n readonly xlDown = input<string>(undefined, { alias: 'fxGridArea.xl-down' });\r\n\r\n private readonly _resolved = computed(() =>\r\n resolveAll<string>(\r\n { default: this.fxGridArea(), xs: this.xs(), sm: this.sm(),\r\n md: this.md(), lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n )\r\n );\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const v = this._resolved();\r\n v ? this.safeSetStyle('grid-area', v)\r\n : this.r2.removeStyle(this.el.nativeElement, 'grid-area');\r\n });\r\n }\r\n}\r\n","/**\r\n * @file fx-layout-align.directive.ts (Angular 21 — signals)\r\n *\r\n * [fxLayoutAlign] — sets justify-content + align-items on a flex container.\r\n *\r\n * Format: \"mainAxis crossAxis\"\r\n * mainAxis : start | center | end | space-between | space-around | space-evenly\r\n * crossAxis : start | center | end | stretch | baseline (default: stretch)\r\n *\r\n * Angular 21 changes:\r\n * • All @Input setters replaced by input() signals\r\n * • computed() derives the resolved CSS pair\r\n * • effect() in constructor writes to DOM\r\n *\r\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\r\n */\r\n\r\nimport { Directive, computed, effect, input, isDevMode } from '@angular/core';\r\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\r\n\r\nconst MAIN_MAP: Record<string, string> = {\r\n 'start': 'flex-start', 'end': 'flex-end', 'center': 'center',\r\n 'space-between': 'space-between', 'space-around': 'space-around', 'space-evenly': 'space-evenly',\r\n};\r\nconst CROSS_MAP: Record<string, string> = {\r\n 'start': 'flex-start', 'end': 'flex-end', 'center': 'center',\r\n 'stretch': 'stretch', 'baseline': 'baseline',\r\n};\r\n\r\nfunction parseAlign(raw: string): [string, string] {\r\n const [main = 'start', cross = 'stretch'] = raw.trim().split(/\\s+/);\r\n if (isDevMode() && !MAIN_MAP[main]) console.warn(`[fxLayoutAlign] Unknown mainAxis: \"${main}\"`);\r\n if (isDevMode() && !CROSS_MAP[cross]) console.warn(`[fxLayoutAlign] Unknown crossAxis: \"${cross}\"`);\r\n return [MAIN_MAP[main] ?? 'flex-start', CROSS_MAP[cross] ?? 'stretch'];\r\n}\r\n\r\n@Directive({\r\n selector: `\r\n [fxLayoutAlign],\r\n [fxLayoutAlign.xs],[fxLayoutAlign.sm],[fxLayoutAlign.md],[fxLayoutAlign.lg],[fxLayoutAlign.xl],[fxLayoutAlign.xxl],\r\n [fxLayoutAlign.lt-sm],[fxLayoutAlign.lt-md],[fxLayoutAlign.lt-lg],[fxLayoutAlign.lt-xl],[fxLayoutAlign.lt-xxl],\r\n [fxLayoutAlign.gt-xs],[fxLayoutAlign.gt-sm],[fxLayoutAlign.gt-md],[fxLayoutAlign.gt-lg],[fxLayoutAlign.gt-xl],\r\n [fxLayoutAlign.sm-up],[fxLayoutAlign.md-up],[fxLayoutAlign.lg-up],[fxLayoutAlign.xl-up],[fxLayoutAlign.xxl-up],\r\n [fxLayoutAlign.sm-down],[fxLayoutAlign.md-down],[fxLayoutAlign.lg-down],[fxLayoutAlign.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxLayoutAlignDirective extends ResponsiveBaseDirective {\r\n readonly fxLayoutAlign = input<string>(undefined, { alias: 'fxLayoutAlign' });\r\n readonly xs = input<string>(undefined, { alias: 'fxLayoutAlign.xs' });\r\n readonly sm = input<string>(undefined, { alias: 'fxLayoutAlign.sm' });\r\n readonly md = input<string>(undefined, { alias: 'fxLayoutAlign.md' });\r\n readonly lg = input<string>(undefined, { alias: 'fxLayoutAlign.lg' });\r\n readonly xl = input<string>(undefined, { alias: 'fxLayoutAlign.xl' });\r\n readonly xxl = input<string>(undefined, { alias: 'fxLayoutAlign.xxl' });\r\n readonly ltSm = input<string>(undefined, { alias: 'fxLayoutAlign.lt-sm' });\r\n readonly ltMd = input<string>(undefined, { alias: 'fxLayoutAlign.lt-md' });\r\n readonly ltLg = input<string>(undefined, { alias: 'fxLayoutAlign.lt-lg' });\r\n readonly ltXl = input<string>(undefined, { alias: 'fxLayoutAlign.lt-xl' });\r\n readonly ltXxl = input<string>(undefined, { alias: 'fxLayoutAlign.lt-xxl' });\r\n readonly gtXs = input<string>(undefined, { alias: 'fxLayoutAlign.gt-xs' });\r\n readonly gtSm = input<string>(undefined, { alias: 'fxLayoutAlign.gt-sm' });\r\n readonly gtMd = input<string>(undefined, { alias: 'fxLayoutAlign.gt-md' });\r\n readonly gtLg = input<string>(undefined, { alias: 'fxLayoutAlign.gt-lg' });\r\n readonly gtXl = input<string>(undefined, { alias: 'fxLayoutAlign.gt-xl' });\r\n readonly smUp = input<string>(undefined, { alias: 'fxLayoutAlign.sm-up' });\r\n readonly mdUp = input<string>(undefined, { alias: 'fxLayoutAlign.md-up' });\r\n readonly lgUp = input<string>(undefined, { alias: 'fxLayoutAlign.lg-up' });\r\n readonly xlUp = input<string>(undefined, { alias: 'fxLayoutAlign.xl-up' });\r\n readonly xxlUp = input<string>(undefined, { alias: 'fxLayoutAlign.xxl-up' });\r\n readonly smDown = input<string>(undefined, { alias: 'fxLayoutAlign.sm-down' });\r\n readonly mdDown = input<string>(undefined, { alias: 'fxLayoutAlign.md-down' });\r\n readonly lgDown = input<string>(undefined, { alias: 'fxLayoutAlign.lg-down' });\r\n readonly xlDown = input<string>(undefined, { alias: 'fxLayoutAlign.xl-down' });\r\n\r\n private readonly _parsed = computed(() =>\r\n parseAlign(resolveAll(\r\n { default: this.fxLayoutAlign(), xs: this.xs(), sm: this.sm(), md: this.md(),\r\n lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ) ?? 'start stretch')\r\n );\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const [jc, ai] = this._parsed();\r\n // fxLayoutAlign implies a flex container — set display:flex if not already\r\n // set by fxLayout (which uses host binding). This makes fxLayoutAlign work\r\n // standalone (e.g. <div fxFlex=\"*\" fxLayoutAlign=\"end\">).\r\n this.r2.setStyle(this.el.nativeElement, 'display', 'flex');\r\n this.safeSetStyle('justify-content', jc);\r\n this.safeSetStyle('align-items', ai);\r\n });\r\n }\r\n}\r\n","/**\r\n * @file fx-layout-gap.directive.ts (Angular 21 — signals)\r\n *\r\n * [fxLayoutGap] — sets gap on a flex or grid container.\r\n * Unitless numbers are normalized to px (e.g. \"16\" → \"16px\").\r\n *\r\n * Angular 21 changes:\r\n * • All @Input setters replaced by input() signals\r\n * • computed() derives the normalized gap value\r\n * • effect() in constructor writes to DOM\r\n *\r\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\r\n */\r\n\r\nimport { Directive, computed, effect, input } from '@angular/core';\r\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\r\n\r\nfunction normalizeGap(raw: string): string {\r\n return raw.trim().split(/\\s+/)\r\n .map(v => /^\\d+(\\.\\d+)?$/.test(v) ? `${v}px` : v)\r\n .join(' ');\r\n}\r\n\r\n@Directive({\r\n selector: `\r\n [fxLayoutGap],\r\n [fxLayoutGap.xs],[fxLayoutGap.sm],[fxLayoutGap.md],[fxLayoutGap.lg],[fxLayoutGap.xl],[fxLayoutGap.xxl],\r\n [fxLayoutGap.lt-sm],[fxLayoutGap.lt-md],[fxLayoutGap.lt-lg],[fxLayoutGap.lt-xl],[fxLayoutGap.lt-xxl],\r\n [fxLayoutGap.gt-xs],[fxLayoutGap.gt-sm],[fxLayoutGap.gt-md],[fxLayoutGap.gt-lg],[fxLayoutGap.gt-xl],\r\n [fxLayoutGap.sm-up],[fxLayoutGap.md-up],[fxLayoutGap.lg-up],[fxLayoutGap.xl-up],[fxLayoutGap.xxl-up],\r\n [fxLayoutGap.sm-down],[fxLayoutGap.md-down],[fxLayoutGap.lg-down],[fxLayoutGap.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxLayoutGapDirective extends ResponsiveBaseDirective {\r\n readonly fxLayoutGap = input<string>(undefined, { alias: 'fxLayoutGap' });\r\n readonly xs = input<string>(undefined, { alias: 'fxLayoutGap.xs' });\r\n readonly sm = input<string>(undefined, { alias: 'fxLayoutGap.sm' });\r\n readonly md = input<string>(undefined, { alias: 'fxLayoutGap.md' });\r\n readonly lg = input<string>(undefined, { alias: 'fxLayoutGap.lg' });\r\n readonly xl = input<string>(undefined, { alias: 'fxLayoutGap.xl' });\r\n readonly xxl = input<string>(undefined, { alias: 'fxLayoutGap.xxl' });\r\n readonly ltSm = input<string>(undefined, { alias: 'fxLayoutGap.lt-sm' });\r\n readonly ltMd = input<string>(undefined, { alias: 'fxLayoutGap.lt-md' });\r\n readonly ltLg = input<string>(undefined, { alias: 'fxLayoutGap.lt-lg' });\r\n readonly ltXl = input<string>(undefined, { alias: 'fxLayoutGap.lt-xl' });\r\n readonly ltXxl = input<string>(undefined, { alias: 'fxLayoutGap.lt-xxl' });\r\n readonly gtXs = input<string>(undefined, { alias: 'fxLayoutGap.gt-xs' });\r\n readonly gtSm = input<string>(undefined, { alias: 'fxLayoutGap.gt-sm' });\r\n readonly gtMd = input<string>(undefined, { alias: 'fxLayoutGap.gt-md' });\r\n readonly gtLg = input<string>(undefined, { alias: 'fxLayoutGap.gt-lg' });\r\n readonly gtXl = input<string>(undefined, { alias: 'fxLayoutGap.gt-xl' });\r\n readonly smUp = input<string>(undefined, { alias: 'fxLayoutGap.sm-up' });\r\n readonly mdUp = input<string>(undefined, { alias: 'fxLayoutGap.md-up' });\r\n readonly lgUp = input<string>(undefined, { alias: 'fxLayoutGap.lg-up' });\r\n readonly xlUp = input<string>(undefined, { alias: 'fxLayoutGap.xl-up' });\r\n readonly xxlUp = input<string>(undefined, { alias: 'fxLayoutGap.xxl-up' });\r\n readonly smDown = input<string>(undefined, { alias: 'fxLayoutGap.sm-down' });\r\n readonly mdDown = input<string>(undefined, { alias: 'fxLayoutGap.md-down' });\r\n readonly lgDown = input<string>(undefined, { alias: 'fxLayoutGap.lg-down' });\r\n readonly xlDown = input<string>(undefined, { alias: 'fxLayoutGap.xl-down' });\r\n\r\n private readonly _gap = computed(() =>\r\n normalizeGap(resolveAll(\r\n { default: this.fxLayoutGap(), xs: this.xs(), sm: this.sm(), md: this.md(),\r\n lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ) ?? '0')\r\n );\r\n\r\n constructor() {\r\n super();\r\n effect(() => { this.safeSetStyle('gap', this._gap()); });\r\n }\r\n}\r\n","/**\n * @file fx-layout.directive.ts (Angular 21 - signals)\n *\n * [fxLayout] -- sets flex-direction (and optionally flex-wrap) on the host.\n * [fxLayoutWrap] -- dedicated alias for flex-wrap (original ngx-layout compat).\n *\n * Angular 21 changes:\n * - All @Input setters replaced by input() signals\n * - computed() builds reactive BP maps and derives CSS values\n * - effect() in constructor writes to DOM -- no lifecycle hooks\n *\n * Breakpoint suffixes:\n * Canonical : .xs .sm .md .lg .xl .xxl\n * lt-* : .lt-sm .lt-md .lt-lg .lt-xl .lt-xxl\n * gt-* : .gt-xs .gt-sm .gt-md .gt-lg .gt-xl\n * *-up : .sm-up .md-up .lg-up .xl-up .xxl-up\n * *-down : .sm-down .md-down .lg-down .xl-down\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\nconst VALID_DIRECTIONS = new Set(['row', 'column', 'row-reverse', 'column-reverse']);\nconst VALID_WRAPS = new Set(['wrap', 'wrap-reverse', 'nowrap']);\n\nfunction parseLayout(raw: string): [string, string] {\n const parts = raw.trim().split(/\\s+/);\n const dir = VALID_DIRECTIONS.has(parts[0]) ? parts[0] : 'row';\n const wrap = VALID_WRAPS.has(parts[1]) ? parts[1] : 'nowrap';\n return [dir, wrap];\n}\n\n@Directive({\n selector: `\n [fxLayout],\n [fxLayout.xs],[fxLayout.sm],[fxLayout.md],[fxLayout.lg],[fxLayout.xl],[fxLayout.xxl],\n [fxLayout.lt-sm],[fxLayout.lt-md],[fxLayout.lt-lg],[fxLayout.lt-xl],[fxLayout.lt-xxl],\n [fxLayout.gt-xs],[fxLayout.gt-sm],[fxLayout.gt-md],[fxLayout.gt-lg],[fxLayout.gt-xl],\n [fxLayout.sm-up],[fxLayout.md-up],[fxLayout.lg-up],[fxLayout.xl-up],[fxLayout.xxl-up],\n [fxLayout.sm-down],[fxLayout.md-down],[fxLayout.lg-down],[fxLayout.xl-down]\n `,\n standalone: true,\n host: { '[style.display]': '\"flex\"' },\n})\nexport class FxLayoutDirective extends ResponsiveBaseDirective {\n readonly fxLayout = input<string>('row', { alias: 'fxLayout' });\n readonly xs = input<string>(undefined, { alias: 'fxLayout.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayout.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayout.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayout.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayout.xl' });\n readonly xxl = input<string>(undefined, { alias: 'fxLayout.xxl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayout.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayout.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayout.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayout.lt-xl' });\n readonly ltXxl = input<string>(undefined, { alias: 'fxLayout.lt-xxl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayout.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayout.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayout.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayout.gt-lg' });\n readonly gtXl = input<string>(undefined, { alias: 'fxLayout.gt-xl' });\n readonly smUp = input<string>(undefined, { alias: 'fxLayout.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxLayout.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxLayout.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxLayout.xl-up' });\n readonly xxlUp = input<string>(undefined, { alias: 'fxLayout.xxl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxLayout.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxLayout.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxLayout.lg-down' });\n readonly xlDown = input<string>(undefined, { alias: 'fxLayout.xl-down' });\n\n private readonly _parsed = computed(() =>\n parseLayout(resolveAll(\n { default: this.fxLayout(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? 'row')\n );\n constructor() {\n super();\n effect(() => {\n const [dir, wrap] = this._parsed();\n this.safeSetStyle('flex-direction', dir);\n this.safeSetStyle('flex-wrap', wrap);\n });\n }\n}\n\ntype FlexWrap = 'wrap' | 'wrap-reverse' | 'nowrap';\n\n@Directive({\n selector: `\n [fxLayoutWrap],\n [fxLayoutWrap.xs],[fxLayoutWrap.sm],[fxLayoutWrap.md],[fxLayoutWrap.lg],[fxLayoutWrap.xl],[fxLayoutWrap.xxl],\n [fxLayoutWrap.lt-sm],[fxLayoutWrap.lt-md],[fxLayoutWrap.lt-lg],[fxLayoutWrap.lt-xl],[fxLayoutWrap.lt-xxl],\n [fxLayoutWrap.gt-xs],[fxLayoutWrap.gt-sm],[fxLayoutWrap.gt-md],[fxLayoutWrap.gt-lg],[fxLayoutWrap.gt-xl],\n [fxLayoutWrap.sm-up],[fxLayoutWrap.md-up],[fxLayoutWrap.lg-up],[fxLayoutWrap.xl-up],[fxLayoutWrap.xxl-up],\n [fxLayoutWrap.sm-down],[fxLayoutWrap.md-down],[fxLayoutWrap.lg-down],[fxLayoutWrap.xl-down]\n `,\n standalone: true,\n})\nexport class FxLayoutWrapDirective extends ResponsiveBaseDirective {\n readonly fxLayoutWrap = input<FlexWrap>('wrap', { alias: 'fxLayoutWrap' });\n readonly xs = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.xs' });\n readonly sm = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.sm' });\n readonly md = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.md' });\n readonly lg = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.lg' });\n readonly xl = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.xl' });\n readonly xxl = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.xxl' });\n readonly ltSm = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.lt-sm' });\n readonly ltMd = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.lt-md' });\n readonly ltLg = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.lt-lg' });\n readonly ltXl = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.lt-xl' });\n readonly ltXxl = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.lt-xxl' });\n readonly gtXs = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.gt-xs' });\n readonly gtSm = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.gt-sm' });\n readonly gtMd = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.gt-md' });\n readonly gtLg = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.gt-lg' });\n readonly gtXl = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.gt-xl' });\n readonly smUp = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.sm-up' });\n readonly mdUp = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.md-up' });\n readonly lgUp = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.lg-up' });\n readonly xlUp = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.xl-up' });\n readonly xxlUp = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.xxl-up' });\n readonly smDown = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.sm-down' });\n readonly mdDown = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.md-down' });\n readonly lgDown = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.lg-down' });\n readonly xlDown = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.xl-down' });\n\n private readonly _wrap = computed(() => {\n const w = resolveAll(\n { default: this.fxLayoutWrap(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? 'wrap';\n return VALID_WRAPS.has(w) ? w : 'wrap';\n });\n constructor() {\n super();\n effect(() => { this.safeSetStyle('flex-wrap', this._wrap()); });\n }\n}\n","/**\r\n * @file fx-show-hide.directives.ts (Angular 21 — signals)\r\n *\r\n * [fxShow] / [fxHide] — responsive visibility via display:none.\r\n * Elements stay in the DOM (unlike *ifBp which removes them).\r\n *\r\n * IMPORTANT: fxShow and fxHide are implemented as a SINGLE directive class\r\n * (FxShowHideDirective) so that mixed patterns like\r\n * <div fxHide fxShow.xs> ← hidden everywhere, shown on xs\r\n * <div fxShow fxHide.lt-lg> ← shown everywhere, hidden below lg\r\n * work correctly.\r\n *\r\n * Resolution algorithm (no mobile-first cascade — semantics for show/hide\r\n * are point-in-time, not cumulative):\r\n * 1. Non-canonical (lt-*, gt-*, *-up, *-down) isActive checks — most specific first\r\n * 2. Exact canonical match for current bp\r\n * 3. Default values (fxShow / fxHide without suffix)\r\n * 4. Fallback: visible (true)\r\n *\r\n * When both show and hide match at the same priority level, show wins.\r\n *\r\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\r\n */\r\n\r\nimport { Directive, effect, input, computed } from '@angular/core';\r\nimport { ResponsiveBaseDirective, NON_CANONICAL_PRIORITY } from './responsive-base.directive';\r\n\r\nfunction toBool(v: string | boolean | '' | undefined | null): boolean | undefined {\r\n if (v === undefined || v === null) return undefined;\r\n if (typeof v === 'boolean') return v;\r\n if (v === '') return true;\r\n if (v === 'false' || v === '0') return false;\r\n return true;\r\n}\r\n\r\n// ─── Unified fxShow + fxHide ─────────────────────────────────────────────────\r\n\r\n@Directive({\r\n selector: `\r\n [fxShow],[fxHide],\r\n [fxShow.xs],[fxShow.sm],[fxShow.md],[fxShow.lg],[fxShow.xl],[fxShow.xxl],\r\n [fxShow.lt-sm],[fxShow.lt-md],[fxShow.lt-lg],[fxShow.lt-xl],[fxShow.lt-xxl],\r\n [fxShow.gt-xs],[fxShow.gt-sm],[fxShow.gt-md],[fxShow.gt-lg],[fxShow.gt-xl],\r\n [fxShow.sm-up],[fxShow.md-up],[fxShow.lg-up],[fxShow.xl-up],[fxShow.xxl-up],\r\n [fxShow.sm-down],[fxShow.md-down],[fxShow.lg-down],[fxShow.xl-down],\r\n [fxHide.xs],[fxHide.sm],[fxHide.md],[fxHide.lg],[fxHide.xl],[fxHide.xxl],\r\n [fxHide.lt-sm],[fxHide.lt-md],[fxHide.lt-lg],[fxHide.lt-xl],[fxHide.lt-xxl],\r\n [fxHide.gt-xs],[fxHide.gt-sm],[fxHide.gt-md],[fxHide.gt-lg],[fxHide.gt-xl],\r\n [fxHide.sm-up],[fxHide.md-up],[fxHide.lg-up],[fxHide.xl-up],[fxHide.xxl-up],\r\n [fxHide.sm-down],[fxHide.md-down],[fxHide.lg-down],[fxHide.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxShowHideDirective extends ResponsiveBaseDirective {\r\n // ── fxShow inputs ─────────────────────────────────────────────────────────\r\n readonly fxShow = input<boolean, string | boolean>(undefined, { alias: 'fxShow', transform: toBool });\r\n readonly showXs = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xs', transform: toBool });\r\n readonly showSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.sm', transform: toBool });\r\n readonly showMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.md', transform: toBool });\r\n readonly showLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lg', transform: toBool });\r\n readonly showXl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xl', transform: toBool });\r\n readonly showXxl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xxl', transform: toBool });\r\n readonly showLtSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-sm', transform: toBool });\r\n readonly showLtMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-md', transform: toBool });\r\n readonly showLtLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-lg', transform: toBool });\r\n readonly showLtXl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-xl', transform: toBool });\r\n readonly showLtXxl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-xxl', transform: toBool });\r\n readonly showGtXs = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-xs', transform: toBool });\r\n readonly showGtSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-sm', transform: toBool });\r\n readonly showGtMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-md', transform: toBool });\r\n readonly showGtLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-lg', transform: toBool });\r\n readonly showGtXl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-xl', transform: toBool });\r\n readonly showSmUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.sm-up', transform: toBool });\r\n readonly showMdUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.md-up', transform: toBool });\r\n readonly showLgUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lg-up', transform: toBool });\r\n readonly showXlUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xl-up', transform: toBool });\r\n readonly showXxlUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xxl-up', transform: toBool });\r\n readonly showSmDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.sm-down', transform: toBool });\r\n readonly showMdDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.md-down', transform: toBool });\r\n readonly showLgDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lg-down', transform: toBool });\r\n readonly showXlDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xl-down', transform: toBool });\r\n\r\n // ── fxHide inputs ─────────────────────────────────────────────────────────\r\n readonly fxHide = input<boolean, string | boolean>(undefined, { alias: 'fxHide', transform: toBool });\r\n readonly hideXs = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xs', transform: toBool });\r\n readonly hideSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.sm', transform: toBool });\r\n readonly hideMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.md', transform: toBool });\r\n readonly hideLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lg', transform: toBool });\r\n readonly hideXl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xl', transform: toBool });\r\n readonly hideXxl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xxl', transform: toBool });\r\n readonly hideLtSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-sm', transform: toBool });\r\n readonly hideLtMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-md', transform: toBool });\r\n readonly hideLtLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-lg', transform: toBool });\r\n readonly hideLtXl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-xl', transform: toBool });\r\n readonly hideLtXxl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-xxl', transform: toBool });\r\n readonly hideGtXs = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-xs', transform: toBool });\r\n readonly hideGtSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-sm', transform: toBool });\r\n readonly hideGtMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-md', transform: toBool });\r\n readonly hideGtLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-lg', transform: toBool });\r\n readonly hideGtXl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-xl', transform: toBool });\r\n readonly hideSmUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.sm-up', transform: toBool });\r\n readonly hideMdUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.md-up', transform: toBool });\r\n readonly hideLgUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lg-up', transform: toBool });\r\n readonly hideXlUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xl-up', transform: toBool });\r\n readonly hideXxlUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xxl-up', transform: toBool });\r\n readonly hideSmDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.sm-down', transform: toBool });\r\n readonly hideMdDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.md-down', transform: toBool });\r\n readonly hideLgDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lg-down', transform: toBool });\r\n readonly hideXlDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xl-down', transform: toBool });\r\n\r\n private readonly _visible = computed((): boolean => {\r\n const bp = this.media.currentBp();\r\n const isActive = (a: string) => this.media.isActive(a);\r\n\r\n // Non-canonical maps (alias → show value / hide value)\r\n const showNc: Record<string, boolean | undefined> = {\r\n 'lt-sm': this.showLtSm(), 'lt-md': this.showLtMd(), 'lt-lg': this.showLtLg(),\r\n 'lt-xl': this.showLtXl(), 'lt-xxl': this.showLtXxl(),\r\n 'gt-xs': this.showGtXs(), 'gt-sm': this.showGtSm(), 'gt-md': this.showGtMd(),\r\n 'gt-lg': this.showGtLg(), 'gt-xl': this.showGtXl(),\r\n 'sm-up': this.showSmUp(), 'md-up': this.showMdUp(), 'lg-up': this.showLgUp(),\r\n 'xl-up': this.showXlUp(), 'xxl-up': this.showXxlUp(),\r\n 'sm-down': this.showSmDown(), 'md-down': this.showMdDown(),\r\n 'lg-down': this.showLgDown(), 'xl-down': this.showXlDown(),\r\n };\r\n const hideNc: Record<string, boolean | undefined> = {\r\n 'lt-sm': this.hideLtSm(), 'lt-md': this.hideLtMd(), 'lt-lg': this.hideLtLg(),\r\n 'lt-xl': this.hideLtXl(), 'lt-xxl': this.hideLtXxl(),\r\n 'gt-xs': this.hideGtXs(), 'gt-sm': this.hideGtSm(), 'gt-md': this.hideGtMd(),\r\n 'gt-lg': this.hideGtLg(), 'gt-xl': this.hideGtXl(),\r\n 'sm-up': this.hideSmUp(), 'md-up': this.hideMdUp(), 'lg-up': this.hideLgUp(),\r\n 'xl-up': this.hideXlUp(), 'xxl-up': this.hideXxlUp(),\r\n 'sm-down': this.hideSmDown(), 'md-down': this.hideMdDown(),\r\n 'lg-down': this.hideLgDown(), 'xl-down': this.hideXlDown(),\r\n };\r\n\r\n // 1. Non-canonical (lt-*, gt-*, *-up, *-down) — most specific first\r\n for (const alias of NON_CANONICAL_PRIORITY) {\r\n const sv = showNc[alias];\r\n const hv = hideNc[alias];\r\n if ((sv !== undefined || hv !== undefined) && isActive(alias)) {\r\n if (sv !== undefined) return sv; // show beats hide at same priority\r\n return !hv!;\r\n }\r\n }\r\n\r\n // Canonical maps (bp → value) — exact only, NO cascade\r\n const showV: Record<string, boolean | undefined> = {\r\n xs: this.showXs(), sm: this.showSm(), md: this.showMd(),\r\n lg: this.showLg(), xl: this.showXl(), xxl: this.showXxl(),\r\n };\r\n const hideV: Record<string, boolean | undefined> = {\r\n xs: this.hideXs(), sm: this.hideSm(), md: this.hideMd(),\r\n lg: this.hideLg(), xl: this.hideXl(), xxl: this.hideXxl(),\r\n };\r\n\r\n // 2. Exact canonical match for current bp\r\n const showExact = showV[bp];\r\n const hideExact = hideV[bp];\r\n if (showExact !== undefined) return showExact;\r\n if (hideExact !== undefined) return !hideExact;\r\n\r\n // 3. Default values (fxShow / fxHide without suffix)\r\n const showDef = this.fxShow();\r\n const hideDef = this.fxHide();\r\n if (showDef !== undefined) return showDef;\r\n if (hideDef !== undefined) return !hideDef;\r\n\r\n // 4. Neither directive active → visible\r\n return true;\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n this._visible()\r\n ? this.r2.removeStyle(this.el.nativeElement, 'display')\r\n : this.r2.setStyle(this.el.nativeElement, 'display', 'none');\r\n });\r\n }\r\n}\r\n\r\n\r\n","/**\r\n * @file fx-style-class.directives.ts (Angular 21 — signals)\r\n *\r\n * [fxStyle] — responsive inline style binding (Record<string,string>)\r\n * [fxClass] — responsive CSS class binding (string | string[] | Record<string,boolean>)\r\n *\r\n * Angular 21 changes:\r\n * • All @Input setters replaced by input() signals\r\n * • computed() derives resolved StyleMap / ClassInput value\r\n * • effect() in constructor handles DOM writes with diff\r\n *\r\n * Style/class leak prevention:\r\n * _appliedProps / _appliedClasses are regular Set<string> fields\r\n * (NOT signals) — they track what was actively applied so the\r\n * effect can remove stale properties/classes on the next run.\r\n *\r\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\r\n */\r\n\r\nimport { Directive, computed, effect, input } from '@angular/core';\r\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\r\n\r\n// ─── fxStyle ─────────────────────────────────────────────────────────────────\r\n\r\ntype StyleMap = Record<string, string>;\r\n\r\n@Directive({\r\n selector: `\r\n [fxStyle],\r\n [fxStyle.xs],[fxStyle.sm],[fxStyle.md],[fxStyle.lg],[fxStyle.xl],[fxStyle.xxl],\r\n [fxStyle.lt-sm],[fxStyle.lt-md],[fxStyle.lt-lg],[fxStyle.lt-xl],[fxStyle.lt-xxl],\r\n [fxStyle.gt-xs],[fxStyle.gt-sm],[fxStyle.gt-md],[fxStyle.gt-lg],[fxStyle.gt-xl],\r\n [fxStyle.sm-up],[fxStyle.md-up],[fxStyle.lg-up],[fxStyle.xl-up],[fxStyle.xxl-up],\r\n [fxStyle.sm-down],[fxStyle.md-down],[fxStyle.lg-down],[fxStyle.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxStyleDirective extends ResponsiveBaseDirective {\r\n readonly fxStyle = input<StyleMap>(undefined, { alias: 'fxStyle' });\r\n readonly xs = input<StyleMap>(undefined, { alias: 'fxStyle.xs' });\r\n readonly sm = input<StyleMap>(undefined, { alias: 'fxStyle.sm' });\r\n readonly md = input<StyleMap>(undefined, { alias: 'fxStyle.md' });\r\n readonly lg = input<StyleMap>(undefined, { alias: 'fxStyle.lg' });\r\n readonly xl = input<StyleMap>(undefined, { alias: 'fxStyle.xl' });\r\n readonly xxl = input<StyleMap>(undefined, { alias: 'fxStyle.xxl' });\r\n readonly ltSm = input<StyleMap>(undefined, { alias: 'fxStyle.lt-sm' });\r\n readonly ltMd = input<StyleMap>(undefined, { alias: 'fxStyle.lt-md' });\r\n readonly ltLg = input<StyleMap>(undefined, { alias: 'fxStyle.lt-lg' });\r\n readonly ltXl = input<StyleMap>(undefined, { alias: 'fxStyle.lt-xl' });\r\n readonly ltXxl = input<StyleMap>(undefined, { alias: 'fxStyle.lt-xxl' });\r\n readonly gtXs = input<StyleMap>(undefined, { alias: 'fxStyle.gt-xs' });\r\n readonly gtSm = input<StyleMap>(undefined, { alias: 'fxStyle.gt-sm' });\r\n readonly gtMd = input<StyleMap>(undefined, { alias: 'fxStyle.gt-md' });\r\n readonly gtLg = input<StyleMap>(undefined, { alias: 'fxStyle.gt-lg' });\r\n readonly gtXl = input<StyleMap>(undefined, { alias: 'fxStyle.gt-xl' });\r\n readonly smUp = input<StyleMap>(undefined, { alias: 'fxStyle.sm-up' });\r\n readonly mdUp = input<StyleMap>(undefined, { alias: 'fxStyle.md-up' });\r\n readonly lgUp = input<StyleMap>(undefined, { alias: 'fxStyle.lg-up' });\r\n readonly xlUp = input<StyleMap>(undefined, { alias: 'fxStyle.xl-up' });\r\n readonly xxlUp = input<StyleMap>(undefined, { alias: 'fxStyle.xxl-up' });\r\n readonly smDown = input<StyleMap>(undefined, { alias: 'fxStyle.sm-down' });\r\n readonly mdDown = input<StyleMap>(undefined, { alias: 'fxStyle.md-down' });\r\n readonly lgDown = input<StyleMap>(undefined, { alias: 'fxStyle.lg-down' });\r\n readonly xlDown = input<StyleMap>(undefined, { alias: 'fxStyle.xl-down' });\r\n\r\n private readonly _resolved = computed(() =>\r\n (resolveAll<StyleMap>(\r\n { default: this.fxStyle(), xs: this.xs(), sm: this.sm(),\r\n md: this.md(), lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ) ?? {})\r\n );\r\n\r\n /** Tracks which CSS properties were last applied — plain field, not a signal. */\r\n private _appliedProps = new Set<string>();\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (!this.isBrowser) return;\r\n const next = this._resolved();\r\n const nextKeys = new Set(Object.keys(next));\r\n for (const prop of this._appliedProps) {\r\n if (!nextKeys.has(prop)) this.r2.removeStyle(this.el.nativeElement, prop);\r\n }\r\n for (const [prop, value] of Object.entries(next)) {\r\n this.r2.setStyle(this.el.nativeElement, prop, value);\r\n }\r\n this._appliedProps = nextKeys;\r\n });\r\n }\r\n}\r\n\r\n// ─── fxClass ─────────────────────────────────────────────────────────────────\r\n\r\ntype ClassInput = string | string[] | Record<string, boolean>;\r\n\r\nfunction toClassSet(v: ClassInput | undefined): Set<string> {\r\n if (!v) return new Set();\r\n if (typeof v === 'string') return new Set(v.split(/\\s+/).filter(Boolean));\r\n if (Array.isArray(v)) return new Set(v.filter(Boolean));\r\n return new Set(Object.entries(v).filter(([, on]) => on).map(([cls]) => cls));\r\n}\r\n\r\n@Directive({\r\n selector: `\r\n [fxClass],\r\n [fxClass.xs],[fxClass.sm],[fxClass.md],[fxClass.lg],[fxClass.xl],[fxClass.xxl],\r\n [fxClass.lt-sm],[fxClass.lt-md],[fxClass.lt-lg],[fxClass.lt-xl],[fxClass.lt-xxl],\r\n [fxClass.gt-xs],[fxClass.gt-sm],[fxClass.gt-md],[fxClass.gt-lg],[fxClass.gt-xl],\r\n [fxClass.sm-up],[fxClass.md-up],[fxClass.lg-up],[fxClass.xl-up],[fxClass.xxl-up],\r\n [fxClass.sm-down],[fxClass.md-down],[fxClass.lg-down],[fxClass.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxClassDirective extends ResponsiveBaseDirective {\r\n readonly fxClass = input<ClassInput>(undefined, { alias: 'fxClass' });\r\n readonly xs = input<ClassInput>(undefined, { alias: 'fxClass.xs' });\r\n readonly sm = input<ClassInput>(undefined, { alias: 'fxClass.sm' });\r\n readonly md = input<ClassInput>(undefined, { alias: 'fxClass.md' });\r\n readonly lg = input<ClassInput>(undefined, { alias: 'fxClass.lg' });\r\n readonly xl = input<ClassInput>(undefined, { alias: 'fxClass.xl' });\r\n readonly xxl = input<ClassInput>(undefined, { alias: 'fxClass.xxl' });\r\n readonly ltSm = input<ClassInput>(undefined, { alias: 'fxClass.lt-sm' });\r\n readonly ltMd = input<ClassInput>(undefined, { alias: 'fxClass.lt-md' });\r\n readonly ltLg = input<ClassInput>(undefined, { alias: 'fxClass.lt-lg' });\r\n readonly ltXl = input<ClassInput>(undefined, { alias: 'fxClass.lt-xl' });\r\n readonly ltXxl = input<ClassInput>(undefined, { alias: 'fxClass.lt-xxl' });\r\n readonly gtXs = input<ClassInput>(undefined, { alias: 'fxClass.gt-xs' });\r\n readonly gtSm = input<ClassInput>(undefined, { alias: 'fxClass.gt-sm' });\r\n readonly gtMd = input<ClassInput>(undefined, { alias: 'fxClass.gt-md' });\r\n readonly gtLg = input<ClassInput>(undefined, { alias: 'fxClass.gt-lg' });\r\n readonly gtXl = input<ClassInput>(undefined, { alias: 'fxClass.gt-xl' });\r\n readonly smUp = input<ClassInput>(undefined, { alias: 'fxClass.sm-up' });\r\n readonly mdUp = input<ClassInput>(undefined, { alias: 'fxClass.md-up' });\r\n readonly lgUp = input<ClassInput>(undefined, { alias: 'fxClass.lg-up' });\r\n readonly xlUp = input<ClassInput>(undefined, { alias: 'fxClass.xl-up' });\r\n readonly xxlUp = input<ClassInput>(undefined, { alias: 'fxClass.xxl-up' });\r\n readonly smDown = input<ClassInput>(undefined, { alias: 'fxClass.sm-down' });\r\n readonly mdDown = input<ClassInput>(undefined, { alias: 'fxClass.md-down' });\r\n readonly lgDown = input<ClassInput>(undefined, { alias: 'fxClass.lg-down' });\r\n readonly xlDown = input<ClassInput>(undefined, { alias: 'fxClass.xl-down' });\r\n\r\n private readonly _resolved = computed(() =>\r\n toClassSet(resolveAll<ClassInput>(\r\n { default: this.fxClass(), xs: this.xs(), sm: this.sm(),\r\n md: this.md(), lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ))\r\n );\r\n\r\n /** Tracks which CSS classes were last applied — plain field, not a signal. */\r\n private _appliedClasses = new Set<string>();\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (!this.isBrowser) return;\r\n const next = this._resolved();\r\n for (const cls of this._appliedClasses) {\r\n if (!next.has(cls)) this.r2.removeClass(this.el.nativeElement, cls);\r\n }\r\n for (const cls of next) {\r\n this.r2.addClass(this.el.nativeElement, cls);\r\n }\r\n this._appliedClasses = next;\r\n });\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './ui/ui.module';\r\nexport * from './ui/definitions';\r\nexport * from './ui/paginatorIntl';\r\nexport * from './ui/services/index';\r\nexport * from './ui/dialogs/index';\r\nexport * from './ui/components/index';\r\nexport * from './ui/directives/flex/index';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i3","i4","i5","i6","i1","i7","toBool","normalizeGap"],"mappings":"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AA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAA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"}
1
+ {"version":3,"file":"arsedizioni-ars-utils-ui.mjs","sources":["../../../projects/ars-utils/ui/ui/paginatorIntl.ts","../../../projects/ars-utils/ui/ui/dialogs/busy/busy-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/busy/busy-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/confirm/confirm-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/confirm/confirm-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/info/info-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/info/info-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/toast/toast.component.ts","../../../projects/ars-utils/ui/ui/dialogs/toast/toast.component.html","../../../projects/ars-utils/ui/ui/services/ui.service.ts","../../../projects/ars-utils/ui/ui/dialogs/delete/delete-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/delete/delete-dialog.component.html","../../../projects/ars-utils/ui/ui/services/dialog.service.ts","../../../projects/ars-utils/ui/ui/ui.module.ts","../../../projects/ars-utils/ui/ui/components/password-strength/password-strength.component.ts","../../../projects/ars-utils/ui/ui/components/password-strength/password-strength.component.html","../../../projects/ars-utils/ui/ui/components/otp/otp-input.component.ts","../../../projects/ars-utils/ui/ui/components/otp/otp-input.component.html","../../../projects/ars-utils/ui/ui/dialogs/credentials/credentials-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/credentials/credentials-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/recover-password/recover-password-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/recover-password/recover-password-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/reset-password/reset-password-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/reset-password/reset-password-dialog.component.html","../../../projects/ars-utils/ui/ui/directives/flex/breakpoints.ts","../../../projects/ars-utils/ui/ui/directives/flex/media-observer.service.ts","../../../projects/ars-utils/ui/ui/directives/flex/if-bp.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/responsive-base.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-flex-extras.directives.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-flex.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-grid.directives.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-layout-align.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-layout-gap.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-layout.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-show-hide.directives.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-style-class.directives.ts","../../../projects/ars-utils/ui/public_api.ts","../../../projects/ars-utils/ui/arsedizioni-ars-utils-ui.ts"],"sourcesContent":["import { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { Injectable } from '@angular/core';\r\n\r\n/** Italian localisation for the Material paginator labels. */\r\n@Injectable()\r\nexport class PaginatorIntl extends MatPaginatorIntl {\r\n override itemsPerPageLabel = 'Elementi per pagina';\r\n override nextPageLabel = 'Prossima pagina';\r\n override previousPageLabel = 'Pagina precedente';\r\n override lastPageLabel = 'Ultima pagina';\r\n override firstPageLabel = 'Prima pagina';\r\n\r\n /**\r\n * Returns the human-readable range label shown inside the paginator.\r\n * @param page - Zero-based index of the current page.\r\n * @param pageSize - Number of items displayed per page.\r\n * @param length - Total number of items, or `-1` when the total is still being calculated.\r\n * @returns A formatted string such as `\"1 - 25 di 100\"`.\r\n */\r\n override getRangeLabel = (page: number, pageSize: number, length: number): string => {\r\n if (length === -1) {\r\n return '0 di calcolo...';\r\n }\r\n if (length === 0 || pageSize === 0) {\r\n return `0 di ${length}`;\r\n }\r\n const totalLength = Math.max(length, 0);\r\n const startIndex = page * pageSize;\r\n // If the start index exceeds the list length, do not try to fix the end index.\r\n const endIndex =\r\n startIndex < totalLength\r\n ? Math.min(startIndex + pageSize, totalLength)\r\n : startIndex + pageSize;\r\n return `${startIndex + 1} - ${endIndex} di ${totalLength}`;\r\n };\r\n}\r\n","import { ChangeDetectionStrategy, Component, signal } from '@angular/core';\r\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { MatIcon } from '@angular/material/icon';\r\n\r\n/**\r\n * Overlay dialog that blocks interaction while a background operation is in progress.\r\n * Supports four visual styles: progress bar, spinner, hourglass, and wait icon.\r\n */\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './busy-dialog.component.html',\r\n styleUrl: './busy-dialog.component.scss',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [FlexModule, MatProgressBarModule, MatProgressSpinnerModule, MatIcon, SafeHtmlPipe]\r\n})\r\nexport class BusyDialogComponent {\r\n /** Visual style of the busy indicator. */\r\n readonly type = signal<'bar' | 'spinner' | 'wait' | 'hourglass'>('bar');\r\n\r\n /** Current progress value (0–100). Used when `progressMode` is `'determinate'`. */\r\n readonly progress = signal<number>(0);\r\n\r\n /** Progress mode passed to the Material progress components. */\r\n readonly progressMode = signal<'determinate' | 'indeterminate'>('indeterminate');\r\n\r\n /** Message displayed above the progress indicator. */\r\n readonly message = signal<string>('');\r\n\r\n /**\r\n * Updates the busy dialog state.\r\n * @param message - New message to display. Ignored when empty, preserving the previous text.\r\n * @param progress - Current progress value (0–100). A value > 0 forces `'determinate'` mode.\r\n * @param progressMode - Progress bar/spinner mode (default: `'indeterminate'`).\r\n * @param type - Visual style to use (default: `'bar'`).\r\n */\r\n set(\r\n message: string,\r\n progress: number,\r\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\r\n type: 'bar' | 'spinner' | 'wait' | 'hourglass' = 'bar'\r\n ): void {\r\n if (message) {\r\n this.message.set(message);\r\n }\r\n if (type) {\r\n this.type.set(type);\r\n }\r\n this.progress.set(progress);\r\n this.progressMode.set(progress > 0 ? 'determinate' : progressMode);\r\n }\r\n}\r\n","@if(type() === 'hourglass') {\r\n<div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <div><mat-icon class=\"mat-icon-spinner\">hourglass</mat-icon></div>\r\n @if (message()) {\r\n <div [innerHTML]=\"message() | safeHtml\" class=\"busy-message\"></div>\r\n }\r\n</div>\r\n} @else if (type() === 'wait') {\r\n<div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <div><mat-icon class=\"mat-icon-spinner\">hourglass</mat-icon></div>\r\n</div>\r\n} @else {\r\n<div class=\"busy-panel\">\r\n <div fxLayout=\"column\" fxFill>\r\n @if (message()) {\r\n <div [innerHTML]=\"message() | safeHtml\" class=\"busy-message\"></div>\r\n }\r\n @if (type() === 'bar') {\r\n <div>\r\n <mat-progress-bar [mode]=\"progressMode()\" [value]=\"progress()\"\r\n style=\"margin:15px auto 0 auto; max-width: 350px;\"></mat-progress-bar>\r\n </div>\r\n } @else if (type() === 'spinner') {\r\n <div>\r\n <mat-progress-spinner [mode]=\"progressMode()\" diameter=\"70\" [value]=\"progress()\"\r\n style=\"margin:15px auto 0 auto;\"></mat-progress-spinner>\r\n </div>\r\n }\r\n @if (progress() > 0) {\r\n <div>\r\n <span style=\"font-size: smaller;\"><b>{{progress()}}%</b></span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n}","import { ChangeDetectionStrategy, Component, inject, output, signal } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\r\nimport { DialogOption, DialogResult } from '../../definitions';\r\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\nexport interface ConfirmDialogOption extends DialogOption {}\r\n\r\nexport interface ConfirmDialogData {\r\n title?: string;\r\n message: string;\r\n okCaption?: string;\r\n cancelCaption?: string;\r\n otherCaption?: string;\r\n options?: ConfirmDialogOption[];\r\n details?: string;\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './confirm-dialog.component.html',\r\n styleUrl: './confirm-dialog.component.scss',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, MatDialogContent, MatDialogClose, FlexModule, MatCheckboxModule, FormsModule,\r\n MatDialogActions, MatButtonModule, SafeHtmlPipe]\r\n})\r\nexport class ConfirmDialogComponent {\r\n /** Emitted when the user makes a choice. Carries the selected result and any option state. */\r\n readonly choosen = output<DialogResult>();\r\n\r\n private readonly dialogRef = inject(MatDialogRef<ConfirmDialogComponent>);\r\n\r\n /** Dialog configuration, with sensible defaults applied at construction time. */\r\n protected readonly dialogData = signal<ConfirmDialogData>({\r\n title: 'Conferma',\r\n okCaption: 'Si',\r\n cancelCaption: 'No',\r\n message: '',\r\n ...((inject(MAT_DIALOG_DATA) as ConfirmDialogData | null) ?? {}),\r\n });\r\n\r\n constructor() {\r\n // Ensure optional captions always have a value even when the caller omits them\r\n this.dialogData.update(d => ({\r\n ...d,\r\n title: d.title ?? 'Conferma',\r\n okCaption: d.okCaption ?? 'Si',\r\n cancelCaption: d.cancelCaption ?? 'No',\r\n }));\r\n }\r\n\r\n /**\r\n * Confirms the dialog, emitting `'ok'` together with the current option selections.\r\n */\r\n ok(): void {\r\n this.choosen.emit({ result: 'ok', options: this.dialogData().options });\r\n this.dialogRef.close();\r\n }\r\n\r\n /**\r\n * Cancels the dialog, emitting `'cancel'`.\r\n */\r\n cancel(): void {\r\n this.choosen.emit({ result: 'cancel' });\r\n this.dialogRef.close();\r\n }\r\n\r\n /**\r\n * Triggers the tertiary action, emitting `'other'`.\r\n */\r\n other(): void {\r\n this.choosen.emit({ result: 'other' });\r\n this.dialogRef.close();\r\n }\r\n}\r\n","<h2 mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></h2>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <div fxLayout=\"column\" fxLayoutGap=\"24px\" fxFill>\r\n <div fxFlex=\"*\">\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\"></div>\r\n }\r\n </div>\r\n @if (dialogData().details) {\r\n <div class=\"details-box\">\r\n <p class=\"x-small uppercase secondary\">Dettaglio:</p>\r\n <div class=\"small details\">\r\n <div [innerHtml]=\"dialogData().details | safeHtml\"></div>\r\n </div>\r\n </div>\r\n }\r\n @if (dialogData().options) {\r\n <div>\r\n @for (o of dialogData().options; track o; let i = $index) {\r\n <div>\r\n <mat-checkbox (change)=\"o.selected = $event.checked\" [checked]=\"o.selected === true\" name=\"opt_{{i}}\" >\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <br>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" fxFill>\r\n <div fxFlex=\"30\">\r\n @if (dialogData().otherCaption) {\r\n <button mat-flat-button (click)=\"other()\"\r\n [mat-dialog-close]=\"true\">{{dialogData().otherCaption}}</button>\r\n }\r\n </div>\r\n <div fxFlex=\"70\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button (click)=\"ok()\"\r\n [mat-dialog-close]=\"true\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" (click)=\"cancel()\">{{dialogData().cancelCaption}}</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>","import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { DialogService } from '../../services/dialog.service';\r\n\r\nexport interface InfoDialogData {\r\n title?: string;\r\n message: string;\r\n details?: string;\r\n okCaption?: string;\r\n dismissAfter?: number;\r\n onNavigate?: (url: string) => void;\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './info-dialog.component.html',\r\n styleUrl: './info-dialog.component.scss',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, MatDialogContent, MatDialogActions, FlexModule,\r\n MatButtonModule, MatIconModule, MatDialogClose, MatTooltipModule, SafeHtmlPipe]\r\n})\r\nexport class InfoDialogComponent {\r\n private readonly dialogService = inject(DialogService);\r\n private readonly dialogRef = inject(MatDialogRef<InfoDialogComponent>);\r\n\r\n /** Dialog configuration with defaults applied at construction time. */\r\n protected readonly dialogData = signal<InfoDialogData>((() => {\r\n const raw = (inject(MAT_DIALOG_DATA) as InfoDialogData | null) ?? { message: '' };\r\n return { title: 'Informazioni', ...raw };\r\n })());\r\n\r\n constructor() {\r\n // Schedule auto-dismiss if configured\r\n const dismissAfter = this.dialogData().dismissAfter;\r\n if (dismissAfter) {\r\n setTimeout(() => this.dialogRef.close(), dismissAfter);\r\n }\r\n }\r\n\r\n /**\r\n * Replaces the dialog data at runtime (e.g. after an async operation resolves).\r\n * Also re-schedules the auto-dismiss timer if `dismissAfter` is set.\r\n * @param data - The new dialog data to display.\r\n */\r\n public setData(data: InfoDialogData): void {\r\n this.dialogData.set({ title: 'Informazioni', ...data });\r\n if (data.dismissAfter) {\r\n setTimeout(() => this.dialogRef.close(), data.dismissAfter);\r\n }\r\n }\r\n\r\n /**\r\n * Invokes the optional navigation callback provided by the caller.\r\n * @param url - The URL to navigate to.\r\n */\r\n protected navigate(url: string): void {\r\n this.dialogData().onNavigate?.(url);\r\n }\r\n\r\n /**\r\n * Copy to clipboard\r\n */\r\n protected async copy(): Promise<void> {\r\n const elem = document.getElementById('info-dialog-content');\r\n if (!elem) return;\r\n const htmlBlob = new Blob([elem.innerHTML], { type: 'text/html' });\r\n const textBlob = new Blob([elem.innerText], { type: 'text/plain' });\r\n try {\r\n const data = [\r\n new ClipboardItem({\r\n 'text/html': htmlBlob,\r\n 'text/plain': textBlob\r\n })\r\n ];\r\n setTimeout(async () => {\r\n window.focus();\r\n await navigator.clipboard.write(data);\r\n }, 0);\r\n this.dialogService.toast('Copiato negli appunti.');\r\n } catch (err) {\r\n this.dialogService.toast(`Errore copiando negli appunti: ${err}`);\r\n }\r\n }\r\n}\r\n","<h2 mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></h2>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <div fxLayout=\"column\" fxLayoutGap=\"24px\" fxFill id=\"info-dialog-content\">\r\n <div fxFlex=\"*\">\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\"></div>\r\n }\r\n </div>\r\n @if (dialogData().details) {\r\n <div class=\"details-box\">\r\n <p class=\"x-small uppercase secondary\">Dettaglio:</p>\r\n <div class=\"small details\">\r\n <div [innerHtml]=\"dialogData().details | safeHtml\"></div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <br>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxFill>\r\n <button mat-icon-button (click)=\"copy()\" matTooltip=\"Copia negli appunti\"><mat-icon>content_copy</mat-icon></button>\r\n <button mat-flat-button [mat-dialog-close]=\"true\" cdkFocusInitial>{{dialogData().okCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import { Component, ChangeDetectionStrategy, inject, output, signal } from '@angular/core';\r\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\r\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\n\r\nexport interface ToastData {\r\n message: string;\r\n icon?: string;\r\n actionCaption?: string;\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './toast.component.html',\r\n styleUrl: './toast.component.scss',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [FlexModule, MatIconModule, MatButtonModule, SafeHtmlPipe]\r\n})\r\nexport class ToastComponent {\r\n /** Emitted when the user clicks the optional action button. */\r\n readonly action = output<void>();\r\n\r\n /** Snack-bar payload with a safe fallback to an empty message when no data is injected. */\r\n protected readonly dialogData = signal<ToastData>(\r\n (inject(MAT_SNACK_BAR_DATA) as ToastData | null) ?? { message: '' }\r\n );\r\n\r\n /**\r\n * Emits the `action` event to notify the caller that the action button was clicked.\r\n */\r\n protected do(): void {\r\n this.action.emit();\r\n }\r\n}\r\n","<div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n @if (dialogData().icon) {\r\n <div fxFlex='30px' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n <mat-icon>{{dialogData().icon}}</mat-icon>\r\n </div>\r\n }\r\n <div fxFlex='*' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n @if (dialogData().message) {\r\n <span [innerHTML]=\"dialogData().message | safeHtml\"></span>\r\n }\r\n </div>\r\n @if (dialogData().actionCaption) {\r\n <div fxLayoutAlign=\"end\" fxFlexAlign=\"center\">\r\n <div style=\"padding-left: 20px;\">\r\n <button type=\"button\" mat-flat-button (click)=\"do()\"\r\n [innerHTML]=\"dialogData().actionCaption\"></button>\r\n </div>\r\n </div>\r\n }\r\n</div>","import { Injectable, signal } from '@angular/core';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UIService {\r\n\r\n /**\r\n * The default Material form-field appearance used across dialogs and forms.\r\n * Defaults to `'fill'`.\r\n */\r\n readonly appearance = signal<'fill' | 'outline'>('fill');\r\n\r\n /**\r\n * Updates the global form-field appearance.\r\n * @param value - The new appearance value. Falls back to `'fill'` when `undefined` is passed.\r\n */\r\n setAppearance(value: 'fill' | 'outline' | undefined): void {\r\n this.appearance.set(value ?? 'fill');\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, output, signal } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\r\nimport { DialogResult } from '../../definitions';\r\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\n\r\nexport enum DeleteDialogConfirmMode {\r\n None = 0,\r\n Simple = 1,\r\n Strong = 2\r\n}\r\n\r\nexport interface DeleteDialogData {\r\n title?: string;\r\n message: string;\r\n confirmMode: DeleteDialogConfirmMode;\r\n okCaption?: string;\r\n cancelCaption?: string;\r\n details?: string;\r\n appearance?: MatFormFieldAppearance;\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './delete-dialog.component.html',\r\n styleUrl: './delete-dialog.component.scss',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogTitle, MatDialogContent, MatDialogClose, FlexModule, MatCheckboxModule, FormsModule,\r\n MatDialogActions, MatButtonModule, MatFormFieldModule, MatInputModule, SafeHtmlPipe]\r\n})\r\nexport class DeleteDialogComponent {\r\n /** Emitted when the user makes a choice. Carries the selected result. */\r\n readonly choosen = output<DialogResult>();\r\n\r\n private readonly dialogRef = inject(MatDialogRef<DeleteDialogComponent>);\r\n\r\n /** Dialog configuration with defaults applied at construction time. */\r\n protected readonly dialogData = signal<DeleteDialogData>((() => {\r\n const raw = (inject(MAT_DIALOG_DATA) as DeleteDialogData | null) ?? {};\r\n return {\r\n title: 'Attenzione',\r\n okCaption: 'Si',\r\n cancelCaption: 'No',\r\n confirmMode: DeleteDialogConfirmMode.None,\r\n message: '',\r\n ...raw,\r\n };\r\n })());\r\n\r\n /**\r\n * Whether the user has confirmed the deletion.\r\n * Starts as `true` for all modes except `Simple`, which requires explicit checkbox confirmation.\r\n */\r\n protected readonly confirmed = signal<boolean>(\r\n this.dialogData().confirmMode !== DeleteDialogConfirmMode.Simple\r\n );\r\n\r\n /** Current value typed into the strong-confirmation text field. */\r\n protected confirmValue?: string;\r\n\r\n /**\r\n * Confirms the deletion, emitting `'ok'` and closing the dialog.\r\n */\r\n ok(): void {\r\n this.choosen.emit({ result: 'ok' });\r\n this.dialogRef.close();\r\n }\r\n\r\n /**\r\n * Cancels the operation, emitting `'cancel'` and closing the dialog.\r\n */\r\n cancel(): void {\r\n this.choosen.emit({ result: 'cancel' });\r\n this.dialogRef.close();\r\n }\r\n}\r\n","<h2 mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></h2>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n <div fxLayout=\"column\" fxLayoutGap=\"24px\" fxFill>\r\n <div fxFlex=\"*\">\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\"></div>\r\n }\r\n </div>\r\n @if (dialogData().details) {\r\n <div class=\"details-box\">\r\n <p class=\"x-small uppercase secondary\">Dettaglio:</p>\r\n <div class=\"small details\">\r\n <div [innerHtml]=\"dialogData().details | safeHtml\"></div>\r\n </div>\r\n </div>\r\n }\r\n @if (dialogData().confirmMode === 1) {\r\n <div>\r\n <mat-checkbox (change)=\"confirmed.set($event.checked)\" [checked]=\"confirmed()\">\r\n Confermo la cancellazione\r\n </mat-checkbox>\r\n </div>\r\n } @else if (dialogData().confirmMode === 2) {\r\n <p>Per confermare la cancellazione digita la parola <i><b>elimina</b></i>.</p>\r\n <mat-form-field style=\"width: 200px\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Conferma</mat-label>\r\n <input matInput #field_confirm=\"ngModel\" [(ngModel)]=\"confirmValue\" name=\"field_confirm\" required\r\n [attr.aria-label]=\"'Digita la parola -elimina-'\">\r\n @if (field_confirm.invalid) {\r\n <mat-error>Digita la parola \"elimina\"</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <br>\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"end center\" fxFill>\r\n <button mat-flat-button (click)=\"ok()\"\r\n [disabled]=\"f.form.invalid || (confirmValue && confirmValue.toLowerCase() !== 'elimina') || !confirmed()\"\r\n [mat-dialog-close]=\"true\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\"\r\n (click)=\"cancel()\">{{dialogData().cancelCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\r\nimport { PlatformLocation } from '@angular/common';\r\nimport { ComponentRef, inject, Injectable } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSnackBar, MatSnackBarRef } from '@angular/material/snack-bar';\r\nimport { SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { Observable, Subscription, timer } from 'rxjs';\r\nimport { first, tap } from 'rxjs/operators';\r\nimport { BusyDialogComponent } from '../dialogs/busy/busy-dialog.component';\r\nimport {\r\n ConfirmDialogComponent,\r\n ConfirmDialogData,\r\n ConfirmDialogOption\r\n} from '../dialogs/confirm/confirm-dialog.component';\r\nimport {\r\n InfoDialogComponent,\r\n InfoDialogData\r\n} from '../dialogs/info/info-dialog.component';\r\nimport { ToastComponent, ToastData } from '../dialogs/toast/toast.component';\r\nimport { UIService } from './ui.service';\r\nimport { DeleteDialogComponent, DeleteDialogConfirmMode, DeleteDialogData } from '../dialogs/delete/delete-dialog.component';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\nexport interface IDialogService {}\r\n\r\ninterface PopHistoryEntry {\r\n id: string;\r\n value: number;\r\n}\r\n\r\nexport class BusyTimer {\r\n private readonly subscription: Subscription;\r\n\r\n constructor(\r\n private readonly dialogService: DialogService,\r\n due: number = 100,\r\n message: string = 'Operazione in corso...'\r\n ) {\r\n this.subscription = timer(due).pipe(tap(() => this.dialogService.busy(message))).subscribe();\r\n }\r\n\r\n /** Dispose object */\r\n clear(): void {\r\n this.subscription.unsubscribe();\r\n this.dialogService.clearBusy();\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService extends UIService {\r\n\r\n private readonly dialog = inject(MatDialog);\r\n private readonly overlay = inject(Overlay);\r\n private readonly snackBar = inject(MatSnackBar);\r\n private readonly location = inject(PlatformLocation);\r\n\r\n private busyDialogRef?: OverlayRef;\r\n private busyComponentRef?: ComponentRef<BusyDialogComponent>;\r\n private errorDialogRef?: MatDialogRef<InfoDialogComponent>;\r\n private readonly popHistory: PopHistoryEntry[] = [];\r\n private popState = true;\r\n private poppingState = false;\r\n\r\n constructor() {\r\n super();\r\n\r\n // Handle dialog close when back button is clicked\r\n this.location.onPopState(() => {\r\n if (!this.poppingState) {\r\n const count = this.dialog.openDialogs.length;\r\n if (count > 0) {\r\n // Disable pop state if needed\r\n this.popState = false;\r\n // Close dialog\r\n this.dialog.openDialogs[count - 1].close();\r\n }\r\n } else {\r\n this.poppingState = false;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Removes trailing `#` characters from the current URL (e.g. after a page reload).\r\n * @param resetPoppingState - When `true`, resets the internal popping-state flag.\r\n */\r\n clearUrl(resetPoppingState: boolean = false): void {\r\n const url = location.href;\r\n let l = url.length;\r\n while (l >= 0 && url[l - 1] === '#') l--;\r\n if (l < url.length)\r\n history.replaceState({}, '', url.substring(0, l));\r\n if (resetPoppingState)\r\n this.poppingState = false;\r\n }\r\n\r\n /**\r\n * Close all dialogs\r\n */\r\n closeAll(): void {\r\n this.dialog.closeAll();\r\n }\r\n\r\n\r\n /**\r\n * Opens a Material dialog. Returns `null` when not running in a browser.\r\n * @param component - The component to open as a dialog.\r\n * @param config - The dialog configuration.\r\n * @returns The dialog reference, or `null` outside the browser.\r\n */\r\n open<T>(component: ComponentType<T>, config: MatDialogConfig<unknown>): MatDialogRef<T> | null {\r\n if (!SystemUtils.isBrowser()) return null;\r\n this.clearBusy();\r\n return this.openDialog(component, config);\r\n }\r\n\r\n\r\n /**\r\n * Internal helper that wraps `MatDialog.open`, subscribes to lifecycle hooks\r\n * and manages browser-history push/pop entries.\r\n * @param component - The component to open.\r\n * @param config - The dialog configuration.\r\n * @returns The dialog reference.\r\n */\r\n private openDialog<T>(component: ComponentType<T>, config: MatDialogConfig<unknown>): MatDialogRef<T> {\r\n // We will take care of navigation\r\n config.closeOnNavigation = false;\r\n const d = this.dialog.open(component, config);\r\n d.afterOpened().pipe(first()).subscribe(() => this.pushDialog(d.id));\r\n d.beforeClosed().pipe(first()).subscribe(() => this.popDialog(d.id));\r\n d.afterClosed().pipe(first()).subscribe(() => {\r\n // Final cleanup of middle objects\r\n this.errorDialogRef = undefined;\r\n });\r\n return d;\r\n }\r\n\r\n /**\r\n * Returns the element height including margins\r\n * @param element - element\r\n * @returns the height\r\n */\r\n private outerHeight(element: HTMLElement): number {\r\n if (!SystemUtils.isBrowser()) return 0;\r\n const height = element.offsetHeight;\r\n const style = window.getComputedStyle(element);\r\n return (['top', 'bottom'] as const)\r\n .map(side => parseInt(style.getPropertyValue(`margin-${side}`), 10))\r\n .reduce((total, margin) => total + margin, height);\r\n }\r\n\r\n /**\r\n * Return current dialog height\r\n */\r\n getCurrentDialogHeight(): number {\r\n if (!SystemUtils.isBrowser()) return 0;\r\n const count = this.popHistory.length;\r\n if (count > 0) {\r\n let id = this.popHistory[count - 1].id;\r\n let elem = document.getElementById(id);\r\n if (elem && elem.clientHeight > 0) return elem.clientHeight;\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Returns the scrollable content area height for the topmost open dialog.\r\n * @param fixedPartsClassName - CSS class names of fixed (non-scrollable) elements whose heights are subtracted.\r\n * @param minimalHeight - Minimum height floor to use when the dialog height is smaller.\r\n * @returns The computed scrollable height in pixels.\r\n */\r\n getCurrentDialogScrollableHeight(\r\n fixedPartsClassName: string[],\r\n minimalHeight: number\r\n ): number {\r\n if (!SystemUtils.isBrowser()) return 0;\r\n let h = Math.max(this.getCurrentDialogHeight(), minimalHeight);\r\n if (fixedPartsClassName) {\r\n fixedPartsClassName.forEach(n => {\r\n const elems = document.getElementsByClassName(n);\r\n if (elems) {\r\n for (let i = 0; i < elems.length; i++) {\r\n h -= this.outerHeight(elems[i] as HTMLElement);\r\n }\r\n }\r\n });\r\n }\r\n return h;\r\n }\r\n\r\n /**\r\n * Push a dialog into the browser history\r\n */\r\n private pushDialog(id: string): void {\r\n if (!SystemUtils.isBrowser()) return;\r\n const index = history.length;\r\n history.pushState({ index }, '', location.href + '#');\r\n this.popHistory.push({ id, value: index });\r\n }\r\n\r\n /**\r\n * Pop a dialog from the history\r\n */\r\n private popDialog(id?: string): void {\r\n if (!SystemUtils.isBrowser()) return;\r\n if (this.popState) {\r\n this.poppingState = true;\r\n let popped = 1;\r\n if (id) {\r\n const p = this.popHistory.findIndex(n => n.id === id);\r\n if (p !== -1) {\r\n popped = this.popHistory[p].value - (history.state?.index ?? 0);\r\n popped = popped ? popped + 1 : 1;\r\n this.popHistory.splice(p, 1);\r\n }\r\n const url = location.href;\r\n let l = url.length;\r\n while (l >= 0 && url[l - 1] === '#' && popped > 0) {\r\n l--;\r\n popped--;\r\n }\r\n if (l < url.length)\r\n history.replaceState({}, '', url.substring(0, l));\r\n }\r\n }\r\n this.popState = true;\r\n }\r\n\r\n /**\r\n * Creates the CDK overlay used to host the busy indicator.\r\n * @returns The new `OverlayRef`.\r\n */\r\n private createBusy(): OverlayRef {\r\n return this.overlay.create({\r\n hasBackdrop: true,\r\n backdropClass: 'busy-backdrop',\r\n positionStrategy: this.overlay.position()\r\n .global()\r\n .centerHorizontally()\r\n .centerVertically()\r\n });\r\n }\r\n\r\n /**\r\n * Clear busy dialog\r\n */\r\n clearBusy() {\r\n setTimeout(() => {\r\n this.busyDialogRef?.detach();\r\n this.busyComponentRef?.destroy();\r\n }, 500);\r\n\r\n }\r\n\r\n /**\r\n * Shows or updates the busy overlay.\r\n * @param message - Text to display inside the overlay.\r\n * @param progress - Progress value (`-1` = indeterminate). Defaults to `-1`.\r\n * @param progressMode - Progress bar mode. Defaults to `'indeterminate'`.\r\n * @param type - Visual style of the overlay. Defaults to `'bar'`.\r\n * @param action - Optional observable; the overlay is dismissed when it emits.\r\n * @returns `true` if a new overlay was created, `false` if an existing one was updated.\r\n */\r\n setBusy(\r\n message: string,\r\n progress: number = -1,\r\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\r\n type: 'bar' | 'spinner' | 'wait' | 'hourglass' = 'bar',\r\n action?: Observable<unknown>\r\n ): boolean {\r\n const exists = this.busyDialogRef?.hasAttached();\r\n if (exists) {\r\n this.busyComponentRef?.instance.set(message, progress, progressMode, type); // update existing\r\n } else {\r\n // Open new\r\n if (!this.busyDialogRef) {\r\n this.busyDialogRef = this.createBusy();\r\n }\r\n this.busyComponentRef = this.busyDialogRef.attach(new ComponentPortal(BusyDialogComponent));\r\n this.busyComponentRef.instance.set(message, progress, progressMode, type);\r\n if (action) {\r\n action\r\n .pipe(first())\r\n .subscribe(() => {\r\n this.clearBusy();\r\n });\r\n }\r\n }\r\n return !exists;\r\n }\r\n\r\n /**\r\n * Shows or updates the busy overlay using the progress-bar style.\r\n * @param message - Text to display inside the overlay.\r\n * @param progress - Progress value (`-1` = indeterminate). Defaults to `-1`.\r\n * @param progressMode - Progress bar mode. Defaults to `'indeterminate'`.\r\n * @param action - Optional observable; the overlay is dismissed when it emits.\r\n * @returns `true` if a new overlay was created.\r\n */\r\n busy(\r\n message: string,\r\n progress: number = -1,\r\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\r\n action?: Observable<unknown>\r\n ): boolean {\r\n return this.setBusy(message, progress, progressMode, 'bar', action);\r\n }\r\n\r\n \r\n /**\r\n * Returns a `BusyTimer` that shows the busy overlay after a debounce delay.\r\n * @param message - Text to display. Defaults to `'Operazione in corso...'`.\r\n * @param due - Delay in milliseconds before the overlay appears. Defaults to `100`.\r\n * @returns A `BusyTimer` that must be disposed with `clear()` when the operation ends.\r\n */\r\n busyTimer(message: string = \"Operazione in corso...\", due: number = 100): BusyTimer {\r\n return new BusyTimer(this, due, message);\r\n }\r\n\r\n\r\n /**\r\n * Shows or updates the busy overlay using the hourglass style.\r\n * @param message - Text to display inside the overlay.\r\n * @param action - Optional observable; the overlay is dismissed when it emits.\r\n * @returns `true` if a new overlay was created.\r\n */\r\n busyHourglass(\r\n message: string,\r\n action?: Observable<unknown>\r\n ): boolean {\r\n return this.setBusy(message, -1, 'indeterminate', 'hourglass', action);\r\n }\r\n\r\n /**\r\n * Shows or updates the busy overlay using the spinner style.\r\n * @param message - Text to display inside the overlay.\r\n * @param progress - Progress value (`-1` = indeterminate). Defaults to `-1`.\r\n * @param progressMode - Progress mode. Defaults to `'indeterminate'`.\r\n * @param action - Optional observable; the overlay is dismissed when it emits.\r\n * @returns `true` if a new overlay was created.\r\n */\r\n busySpinner(\r\n message: string,\r\n progress: number = -1,\r\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\r\n action?: Observable<unknown>\r\n ): boolean {\r\n return this.setBusy(message, progress, progressMode, 'spinner', action);\r\n }\r\n\r\n /**\r\n * Shows a minimal wait spinner overlay.\r\n * @param action - Optional observable; the overlay is dismissed when it emits.\r\n * @returns `true` if a new overlay was created.\r\n */\r\n wait(action?: Observable<unknown>): boolean {\r\n return this.setBusy('', -1, 'indeterminate', 'wait', action);\r\n }\r\n\r\n\r\n /**\r\n * Opens an informational dialog.\r\n * @param message - HTML message to display.\r\n * @param title - Dialog title. Defaults to `'Informazioni'`.\r\n * @param okCaption - Confirmation button label. Defaults to `'Ok'`.\r\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\r\n * @param dismissAfter - Auto-close delay in milliseconds (optional).\r\n * @param details - Optional secondary details text.\r\n * @param onNavigate - Optional navigation callback invoked when the user clicks a link.\r\n * @returns The dialog reference, or `null` outside the browser.\r\n */\r\n info(\r\n message: string,\r\n title: string = 'Informazioni',\r\n okCaption: string = 'Ok',\r\n width: number = 500,\r\n dismissAfter?: number,\r\n details?: string,\r\n onNavigate?: (url: string) => void\r\n ): MatDialogRef<InfoDialogComponent> | null {\r\n this.clearBusy();\r\n return this.open(InfoDialogComponent, {\r\n ariaLabel: 'informazioni',\r\n autoFocus: false,\r\n restoreFocus: false,\r\n data: {\r\n message,\r\n title,\r\n okCaption,\r\n dismissAfter,\r\n details,\r\n onNavigate,\r\n appearance: 'fill'\r\n } as InfoDialogData,\r\n closeOnNavigation: false,\r\n minWidth: '375px',\r\n maxWidth: `${width}px`,\r\n width: '100%'\r\n });\r\n }\r\n\r\n /**\r\n * Opens an error dialog. If one is already open, its content is updated in place.\r\n * @param message - HTML error message to display.\r\n * @param log - Optional technical log / stack trace shown in the details panel.\r\n * @param title - Dialog title. Defaults to `'Errore'`.\r\n * @param okCaption - Confirmation button label. Defaults to `'Ok'`.\r\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\r\n * @param dismissAfter - Auto-close delay in milliseconds (optional).\r\n * @returns The dialog reference, or `null` outside the browser.\r\n */\r\n error(\r\n message: string,\r\n log?: string,\r\n title: string = 'Errore',\r\n okCaption: string = 'Ok',\r\n width: number = 500,\r\n dismissAfter?: number,\r\n ): MatDialogRef<InfoDialogComponent> | null {\r\n this.clearBusy();\r\n if (this.errorDialogRef) {\r\n // Just change current error\r\n this.errorDialogRef.componentInstance.setData({\r\n message,\r\n title,\r\n details: log,\r\n okCaption,\r\n dismissAfter\r\n });\r\n return this.errorDialogRef;\r\n }\r\n const ref = this.open(InfoDialogComponent, {\r\n ariaLabel: 'errore',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: {\r\n message,\r\n title,\r\n details: log,\r\n okCaption,\r\n dismissAfter,\r\n appearance: 'fill'\r\n } as InfoDialogData,\r\n closeOnNavigation: false,\r\n minWidth: '375px',\r\n maxWidth: `${width}px`,\r\n width: '100%'\r\n });\r\n this.errorDialogRef = ref ?? undefined;\r\n return ref;\r\n }\r\n\r\n /**\r\n * Shows a snack-bar toast notification.\r\n * @param message - HTML message to display.\r\n * @param duration - Visible duration in milliseconds. Defaults to `2000`.\r\n * @param icon - Material icon name shown beside the message. Defaults to `'check'`.\r\n * @param actionCaption - Optional label for the action button.\r\n * @returns The snack-bar reference.\r\n */\r\n toast(\r\n message: string,\r\n duration: number = 2000,\r\n icon: string = 'check',\r\n actionCaption?: string\r\n ): MatSnackBarRef<ToastComponent> {\r\n this.clearBusy();\r\n if (duration === -1) duration = 2000; // default\r\n const toastRef = this.snackBar.openFromComponent(ToastComponent, {\r\n duration,\r\n data: { message, icon, actionCaption } as ToastData\r\n });\r\n toastRef.instance.action.subscribe(() => toastRef.dismiss());\r\n return toastRef;\r\n }\r\n\r\n /**\r\n * Opens a confirmation dialog.\r\n * @param message - HTML message to display.\r\n * @param title - Dialog title. Defaults to `'Conferma'`.\r\n * @param okCaption - Primary action button label. Defaults to `'Si'`.\r\n * @param cancelCaption - Cancel button label. Defaults to `'No'`.\r\n * @param otherCaption - Optional tertiary action button label.\r\n * @param options - Optional list of checkbox options shown to the user.\r\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\r\n * @param details - Optional secondary details text.\r\n * @returns The dialog reference, or `null` outside the browser.\r\n */\r\n confirm(\r\n message: string,\r\n title: string = 'Conferma',\r\n okCaption: string = 'Si',\r\n cancelCaption: string = 'No',\r\n otherCaption?: string,\r\n options?: ConfirmDialogOption[],\r\n width: number = 500,\r\n details?: string\r\n ): MatDialogRef<ConfirmDialogComponent> | null {\r\n return this.open(ConfirmDialogComponent, {\r\n ariaLabel: 'conferma',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: {\r\n message,\r\n title,\r\n okCaption,\r\n cancelCaption,\r\n otherCaption,\r\n options,\r\n details,\r\n appearance: 'fill'\r\n } as ConfirmDialogData,\r\n closeOnNavigation: false,\r\n disableClose: true,\r\n minWidth: '375px',\r\n maxWidth: `${width}px`,\r\n width: '100%'\r\n });\r\n }\r\n\r\n /**\r\n * Opens a deletion-confirmation dialog.\r\n * @param message - HTML message to display.\r\n * @param title - Dialog title. Defaults to `'Attenzione'`.\r\n * @param confirmMode - Confirmation mode (none / checkbox / type-to-confirm). Defaults to `None`.\r\n * @param okCaption - Primary action button label. Defaults to `'Si'`.\r\n * @param cancelCaption - Cancel button label. Defaults to `'No'`.\r\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\r\n * @param details - Optional secondary details text.\r\n * @returns The dialog reference, or `null` outside the browser.\r\n */\r\n delete(\r\n message: string,\r\n title: string = 'Attenzione',\r\n confirmMode: DeleteDialogConfirmMode = DeleteDialogConfirmMode.None,\r\n okCaption: string = 'Si',\r\n cancelCaption: string = 'No',\r\n width: number = 500,\r\n details?: string\r\n ): MatDialogRef<DeleteDialogComponent> | null {\r\n return this.open(DeleteDialogComponent, {\r\n ariaLabel: 'attenzione',\r\n autoFocus: true,\r\n restoreFocus: false,\r\n data: {\r\n message,\r\n title,\r\n confirmMode,\r\n okCaption,\r\n cancelCaption,\r\n details,\r\n appearance: 'fill'\r\n } as DeleteDialogData,\r\n closeOnNavigation: false,\r\n disableClose: true,\r\n minWidth: '375px',\r\n maxWidth: `${width}px`,\r\n width: '100%'\r\n });\r\n }\r\n\r\n}\r\n\r\n","import { NgModule } from \"@angular/core\";\r\nimport { ArsCoreModule } from '@arsedizioni/ars-utils/core';\r\n\r\n@NgModule({\r\n imports: [\r\n ArsCoreModule,\r\n ],\r\n exports: [\r\n \r\n ]\r\n})\r\nexport class ArsUIModule { }\r\n\r\nexport * from \"./definitions\";\r\nexport * from \"./paginatorIntl\";\r\nexport * from \"./services/dialog.service\";\r\nexport * from \"./services/ui.service\";\r\n\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { PasswordStrength, SystemUtils } from '@arsedizioni/ars-utils/core';\r\n\r\nconst DEFAULT_STRENGTH: PasswordStrength = { score: 0, label: '', color: '', suggestions: [], isValid: false };\r\n\r\n/**\r\n * Displays a password-strength indicator for the provided password string.\r\n * Uses `SystemUtils.calculatePasswordStrength` to derive the score and label.\r\n */\r\n@Component({\r\n selector: 'password-strength',\r\n templateUrl: './password-strength.component.html',\r\n styleUrl: './password-strength.component.scss',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatTooltipModule]\r\n})\r\nexport class PasswordStrengthComponent {\r\n /** The password to evaluate. An empty string renders the default (score 0) state. */\r\n readonly password = input<string>('');\r\n\r\n /**\r\n * Computed strength result for the current password.\r\n * Falls back to `DEFAULT_STRENGTH` when the password is empty.\r\n */\r\n protected readonly strength = computed<PasswordStrength>(() => {\r\n const pwd = this.password();\r\n return pwd ? SystemUtils.calculatePasswordStrength(pwd) : DEFAULT_STRENGTH;\r\n });\r\n\r\n /**\r\n * CSS class applied to the label element based on the numeric score (1–6 bands).\r\n * Scores ≤ 2 → `'score-2'`, ≤ 3 → `'score-3'`, etc.\r\n */\r\n protected readonly scoreClass = computed<string>(() => {\r\n const score = this.strength().score;\r\n if (score <= 2) return 'score-2';\r\n if (score <= 3) return 'score-3';\r\n if (score <= 4) return 'score-4';\r\n if (score <= 5) return 'score-5';\r\n return 'score-6';\r\n });\r\n}\r\n","<div class=\"wide x-small bold\" style=\"white-space: nowrap; padding-top:4px\" [matTooltip]=\"strength().suggestions?.join('\\n ')\">\r\n <span [class]=\"scoreClass()\">{{strength().label}}</span>\r\n</div>","import { Component, ElementRef, computed, forwardRef, signal, viewChildren } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\n\r\n\r\n@Component({\r\n selector: 'otp-input',\r\n standalone: true,\r\n imports: [FormsModule],\r\n templateUrl: './otp-input.component.html',\r\n styleUrl: './otp-input.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => OtpInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class OtpInputComponent implements ControlValueAccessor {\r\n /** Signal-based query for all individual OTP digit input elements. */\r\n readonly otpFields = viewChildren<ElementRef<HTMLInputElement>>('otpField');\r\n\r\n /** `true` when every digit slot contains a valid single decimal digit. */\r\n readonly isValid = computed(() => this.otpArray().every(d => /^\\d$/.test(d)));\r\n\r\n /** Array of per-digit values backing the OTP display. */\r\n readonly otpArray = signal<string[]>(Array(6).fill(''));\r\n\r\n /** Whether the control is currently disabled. */\r\n readonly disabled = signal<boolean>(false);\r\n\r\n private onChange: (val: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n // ── ControlValueAccessor ───────────────────────────────────────────────────\r\n\r\n /**\r\n * Writes a new value into the control from the model.\r\n * @param value - A string of up to 6 digits to pre-fill the OTP fields.\r\n */\r\n writeValue(value: string): void {\r\n const arr = Array(6).fill('');\r\n if (value) {\r\n value.split('').forEach((c, i) => {\r\n if (i < 6) arr[i] = c;\r\n });\r\n }\r\n this.otpArray.set(arr);\r\n }\r\n\r\n /**\r\n * Registers the callback invoked when the control value changes.\r\n * @param fn - The callback function.\r\n */\r\n registerOnChange(fn: (val: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Registers the callback invoked when the control is touched.\r\n * @param fn - The callback function.\r\n */\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Enables or disables the control.\r\n * @param isDisabled - `true` to disable all OTP inputs.\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n\r\n // ── Event handlers ─────────────────────────────────────────────────────────\r\n\r\n /**\r\n * Blocks non-digit characters before they are inserted.\r\n * @param event - The `beforeinput` event from the input element.\r\n */\r\n onBeforeInput(event: InputEvent): void {\r\n if (event.data && !/^\\d$/.test(event.data)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n /**\r\n * Handles digit input, updates the OTP array, and advances focus.\r\n * @param event - The `input` event from the digit field.\r\n * @param index - Zero-based index of the field that received input.\r\n */\r\n onInput(event: Event, index: number): void {\r\n let val = (event.target as HTMLInputElement).value;\r\n val = val.replace(/\\D/g, '').slice(-1);\r\n\r\n const arr = [...this.otpArray()];\r\n arr[index] = val;\r\n this.otpArray.set(arr);\r\n\r\n this.updateModel();\r\n\r\n if (val && index < 5) {\r\n this.focusField(index + 1);\r\n }\r\n }\r\n\r\n /**\r\n * Handles the Backspace key by moving focus to the previous field when the current one is empty.\r\n * @param event - The `keydown` event.\r\n * @param index - Zero-based index of the field that received the keydown.\r\n */\r\n onKeyDown(event: KeyboardEvent, index: number): void {\r\n if (event.key === 'Backspace' && !this.otpArray()[index] && index > 0) {\r\n this.focusField(index - 1);\r\n }\r\n }\r\n\r\n /**\r\n * Handles paste events by extracting up to 6 digits and distributing them across the OTP fields.\r\n * @param event - The `ClipboardEvent` from the paste action.\r\n */\r\n onPaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n const pasted = event.clipboardData?.getData('text') ?? '';\r\n const digits = pasted.replace(/\\D/g, '').slice(0, 6).split('');\r\n\r\n if (digits.length > 0) {\r\n const arr = Array(6).fill('');\r\n digits.forEach((d, i) => (arr[i] = d));\r\n this.otpArray.set(arr);\r\n this.updateModel();\r\n this.focusField(Math.min(digits.length, 5));\r\n }\r\n }\r\n\r\n /**\r\n * Moves focus to the OTP field at the given index.\r\n * @param index - Zero-based index of the target field.\r\n */\r\n private focusField(index: number): void {\r\n const field = this.otpFields()[index];\r\n field?.nativeElement.focus();\r\n field?.nativeElement.select();\r\n }\r\n\r\n /**\r\n * Notifies the form model of the current OTP value and marks the control as touched.\r\n */\r\n private updateModel(): void {\r\n const code = this.otpArray().join('');\r\n this.onChange(code);\r\n this.onTouched();\r\n }\r\n}\r\n","<div class=\"otp-container\">\r\n @for (digit of otpArray(); track $index) {\r\n <input\r\n #otpField\r\n type=\"text\"\r\n maxlength=\"1\"\r\n inputmode=\"numeric\"\r\n pattern=\"[0-9]*\"\r\n class=\"otp-box\"\r\n [value]=\"digit\"\r\n (beforeinput)=\"onBeforeInput($event)\"\r\n (input)=\"onInput($event, $index)\"\r\n (keydown)=\"onKeyDown($event, $index)\"\r\n (paste)=\"onPaste($event)\"\r\n [disabled]=\"disabled()\"\r\n required\r\n />\r\n }\r\n</div>\r\n\r\n","import { Component, inject, output, signal } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\r\nimport { CredentialsDialogResult } from '../../definitions';\r\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { PasswordStrengthComponent } from '../../components/password-strength/password-strength.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { OtpInputComponent } from '../../components/otp/otp-input.component';\r\n\r\nexport interface CredentialsDialogData {\r\n title?: string;\r\n message?: string;\r\n remember?: boolean;\r\n recoverPassword?: boolean;\r\n recoverPasswordUrl?: string;\r\n user?: string;\r\n okCaption?: string;\r\n mode?: 'email' | 'user' | 'otp';\r\n appearance?: MatFormFieldAppearance;\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './credentials-dialog.component.html',\r\n styleUrl: './credentials-dialog.component.scss',\r\n standalone: true,\r\n imports: [\r\n MatDialogTitle,\r\n MatDialogContent,\r\n FormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatCheckboxModule,\r\n MatDialogActions,\r\n FlexModule,\r\n MatButtonModule,\r\n MatDialogClose,\r\n PasswordStrengthComponent,\r\n OtpInputComponent,\r\n SafeHtmlPipe,\r\n ],\r\n})\r\nexport class CredentialsDialogComponent {\r\n /** Emitted when the user submits the form. Carries the entered credentials. */\r\n readonly done = output<CredentialsDialogResult>();\r\n\r\n /** Emitted when the user requests a password-recovery flow. */\r\n readonly recoveringPassword = output<CredentialsDialogResult>();\r\n\r\n /** Dialog configuration with defaults applied at construction time. */\r\n protected readonly dialogData = signal<CredentialsDialogData>((() => {\r\n const raw = (inject(MAT_DIALOG_DATA) as CredentialsDialogData | null) ?? {};\r\n const data: CredentialsDialogData = {\r\n appearance: 'fill',\r\n title: 'Informazioni',\r\n okCaption: 'Salva',\r\n mode: 'email',\r\n ...raw,\r\n };\r\n data.appearance ??= 'fill';\r\n data.title ??= 'Informazioni';\r\n data.okCaption ??= 'Salva';\r\n data.mode ??= 'email';\r\n if (data.mode === 'otp' && !data.message) {\r\n data.message = '<div class=\"small\">Inserisci il codice di verifica di 6 cifre che ti abbiamo inviato ora per email<br><span class=\"x-small\">(controlla anche la posta indesiderata)</span>.</div>';\r\n }\r\n return data;\r\n })());\r\n\r\n /** Current form model, pre-filled with the user name from dialog data when provided. */\r\n protected item: CredentialsDialogResult = {\r\n user: (inject(MAT_DIALOG_DATA) as CredentialsDialogData | null)?.user,\r\n };\r\n\r\n /** Whether the password field is currently shown as plain text. */\r\n protected readonly showPassword = signal<boolean>(false);\r\n\r\n /**\r\n * Switches the input mode of the dialog at runtime (e.g. from login to OTP).\r\n * Intended to be called from outside via the dialog component reference.\r\n * @param mode - The new input mode (`'email'`, `'user'`, or `'otp'`).\r\n * @param message - Optional new message to display above the form.\r\n */\r\n public changeMode(mode: 'email' | 'user' | 'otp', message?: string): void {\r\n this.dialogData.update(d => ({\r\n ...d,\r\n mode,\r\n message: message ?? d.message,\r\n }));\r\n }\r\n\r\n /**\r\n * Emits the current form result and closes the dialog.\r\n */\r\n protected ok(): void {\r\n this.done.emit(this.item);\r\n }\r\n\r\n /**\r\n * Emits the current form result for the password-recovery flow and optionally\r\n * opens the recovery URL in a new tab.\r\n */\r\n protected recoverPassword(): void {\r\n this.recoveringPassword.emit(this.item);\r\n const url = this.dialogData().recoverPasswordUrl;\r\n if (url) {\r\n window.open(url, '_blank');\r\n }\r\n }\r\n}\r\n\r\n","<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n <span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n } @else {\r\n <span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n }\r\n</div>\r\n<h2 mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></h2>\r\n<mat-dialog-content>\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\" style=\"padding-bottom: 20px;\"></div>\r\n }\r\n <form name=\"form\" #f=\"ngForm\" (keyup.Enter)=\"!f.form.invalid ? ok() : null\" novalidate>\r\n @if(dialogData().mode !== 'otp') {\r\n @if (dialogData().mode === 'email') {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Email</mat-label>\r\n <input type=\"email\" matInput [(ngModel)]=\"item.user\" name=\"email\" #email=\"ngModel\" email required\r\n [attr.aria-label]=\"'Email'\">\r\n @if (email.invalid) {\r\n <mat-error>Email non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n } @else if (dialogData().mode === 'user') {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Utente</mat-label>\r\n <input matInput [(ngModel)]=\"item.user\" name=\"user\" #user=\"ngModel\" required [attr.aria-label]=\"'user'\">\r\n @if (user.invalid) {\r\n <mat-error>Obbligatorio.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>La tua password abilitata</mat-label>\r\n <input matInput name=\"password\" #password=\"ngModel\" [type]=\"!showPassword() ? 'password' : 'text'\"\r\n [(ngModel)]=\"item.password\" required [attr.aria-label]=\"'La tua password abilitata'\" autocomplete=\"on\">\r\n @if(item.password) {\r\n <password-strength [password]=\"item.password\"></password-strength>\r\n }\r\n <button type=\"button\" mat-icon-button class=\"toolbar-suffix\" matSuffix (click)=\"showPassword.set(!showPassword())\">\r\n <mat-icon>{{showPassword() ? 'visibility' : 'visibility_off'}}</mat-icon>\r\n </button>\r\n <mat-hint>Attento a maiuscole e minuscole</mat-hint>\r\n @if (password.invalid) {\r\n <mat-error>Password non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n @if (dialogData().remember || dialogData().recoverPassword) {\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\" fxFill style=\"margin-top: 20px;\">\r\n <div>\r\n @if (dialogData().remember) {\r\n <mat-checkbox fxFlexAlign=\"center\" [(ngModel)]=\"item.rememberMe\" name=\"rememberMe\"> Ricordami</mat-checkbox>\r\n }\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n @if (dialogData().recoverPassword) {\r\n <button fxFlexAlign=\"center\" mat-button (click)=\"recoverPassword()\" title=\"Recupero password\"\r\n >Non riesco ad accedere</button>\r\n }\r\n </div>\r\n </div>\r\n }\r\n } @else {\r\n <otp-input name=\"otp\" [(ngModel)]=\"item.code\" required></otp-input>\r\n }\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button [disabled]=\"f.form.invalid\" (click)=\"ok()\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">Annulla</button>\r\n </div>\r\n</mat-dialog-actions>","import { ChangeDetectionStrategy, Component, inject, output, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from '@angular/material/dialog';\r\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { RecoverPasswordDialogResult } from '../../definitions';\r\n\r\nexport interface RecoverPasswordDialogData {\r\n appearance?: MatFormFieldAppearance;\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './recover-password-dialog.component.html',\r\n styleUrl: './recover-password-dialog.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatDialogTitle,\r\n MatDialogContent,\r\n FormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n MatDialogActions,\r\n FlexModule,\r\n MatDialogClose,\r\n ],\r\n})\r\nexport class RecoverPasswordDialogComponent {\r\n\r\n /** Emitted when the user submits the recovery request. Carries the entered email and recaptcha state. */\r\n readonly done = output<RecoverPasswordDialogResult>();\r\n\r\n /** Dialog configuration with defaults applied at construction time. */\r\n protected readonly dialogData = signal<RecoverPasswordDialogData>({\r\n appearance: 'fill',\r\n ...((inject(MAT_DIALOG_DATA) as RecoverPasswordDialogData | null) ?? {}),\r\n });\r\n\r\n /** Current form model bound to the template inputs. */\r\n protected item: RecoverPasswordDialogResult = {\r\n email: '',\r\n recaptcha: false,\r\n };\r\n\r\n /**\r\n * Emits the current form result to trigger the password-recovery flow.\r\n */\r\n protected ok(): void {\r\n this.done.emit(this.item);\r\n }\r\n}\r\n","<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n <span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n } @else {\r\n <span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n }\r\n</div>\r\n<h2 mat-dialog-title>Per quale ragione non sei in grado di effettuare l'accesso?</h2>\r\n<mat-dialog-content>\r\n\r\n <b>1. Ho dimenticato la password</b>\r\n <p>\r\n Puoi recuperarla facilmente inserendo l'email a cui la password è collegata. Non è possibile recuperare password\r\n aziendali (non collegate ad un email).</p>\r\n <form name=\"form\" #f=\"ngForm\" (keyup.Enter)=\"!f.form.invalid ? ok() : null\" novalidate>\r\n\r\n <mat-form-field style=\"width:100%\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Email con cui ti sei registrato</mat-label>\r\n <input type=\"email\" matInput name=\"email\" #email=\"ngModel\" [(ngModel)]=\"item.email\" required email\r\n maxlength=\"200\" />\r\n @if (email.invalid) {\r\n <mat-error>Email non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <div style=\"margin-top:20px; margin-bottom:20px;\">\r\n <button type=\"button\" mat-flat-button (click)=\"ok()\" [disabled]=\"f.form.invalid\"\r\n aria-label=\"Recupera password\">Recupera password</button>\r\n </div>\r\n </form>\r\n <p></p>\r\n <b>2. Il sistema mi dice che la password non è corretta.</b>\r\n <p>\r\n E' molto probabile che ci sia stato un difetto di digitazione. Per favore controlla bene che non vi siano spazi non\r\n richiesti e che la password rispetti perfettamente le maiuscole e minuscole. Nel caso in cui la digitazione fosse\r\n corretta, verifica che la data del tuo abbonamento non sia scaduta.\r\n </p>\r\n <p></p>\r\n <b>3. Il sistema mi dice che non può accettare connessioni dal mio indirizzo IP</b>\r\n <p>\r\n Il tuo abbonamento è stato vincolato ad un indirizzo IP (indirizzo dal quale ti colleghi). Capita sovente che\r\n questi indirizzi siano cambiati da parte del reparto IT per questioni di sicurezza informatica.\r\n Per risolvere il problema, contattate il reparto IT e fatevi dire qual'è il nuovo indirizzo IP e comunicatelo ad\r\n ARS Edizioni Informatiche.\r\n </p>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" >Chiudi</button>\r\n </div>\r\n</mat-dialog-actions>","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n inject,\r\n output,\r\n signal\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\r\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { EqualsValidatorDirective, PasswordValidatorDirective, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { ResetPasswordDialogResult } from '../../definitions';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { PasswordStrengthComponent } from '../../components/password-strength/password-strength.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n\r\nexport type ResetPasswordDialogMode = 'admin' | 'change' | 'forgot';\r\n\r\nexport interface ResetPasswordDialogData {\r\n mode: ResetPasswordDialogMode;\r\n userId?: number;\r\n userEmail?: string;\r\n appearance?: MatFormFieldAppearance;\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './reset-password-dialog.component.html',\r\n styleUrl: './reset-password-dialog.component.scss',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatDialogTitle,\r\n MatDialogContent,\r\n FormsModule,\r\n FlexModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n PasswordValidatorDirective,\r\n PasswordStrengthComponent,\r\n EqualsValidatorDirective,\r\n MatIconModule,\r\n MatDialogActions,\r\n MatButtonModule,\r\n MatDialogClose,\r\n ],\r\n})\r\nexport class ResetPasswordDialogComponent {\r\n /** Emitted when the user submits the new password. Carries the entered password data. */\r\n readonly done = output<ResetPasswordDialogResult>();\r\n\r\n private readonly dialogService = inject(DialogService);\r\n private readonly dialogRef = inject(MatDialogRef<ResetPasswordDialogComponent>);\r\n\r\n /** Dialog configuration with defaults applied at construction time. */\r\n protected readonly dialogData = signal<ResetPasswordDialogData>((() => {\r\n const raw = (inject(MAT_DIALOG_DATA) as ResetPasswordDialogData | null);\r\n return { mode: 'admin' as ResetPasswordDialogMode, appearance: 'fill' as MatFormFieldAppearance, ...raw };\r\n })());\r\n\r\n /** Current form model bound to the template inputs. */\r\n protected item: ResetPasswordDialogResult = {};\r\n\r\n /** Whether the old-password field is currently shown as plain text. */\r\n protected readonly showOldPassword = signal<boolean>(false);\r\n\r\n /** Whether the new-password field is currently shown as plain text. */\r\n protected readonly showPassword = signal<boolean>(false);\r\n\r\n /** Whether the confirm-password field is currently shown as plain text. */\r\n protected readonly showPassword2 = signal<boolean>(false);\r\n\r\n constructor() {\r\n const data = this.dialogData();\r\n if (data.mode !== 'forgot' && !data.userId) {\r\n this.dialogRef.close();\r\n this.dialogService.error('Utente non specificato.');\r\n return;\r\n }\r\n if (data.mode === 'forgot' && !data.userEmail) {\r\n this.dialogRef.close();\r\n this.dialogService.error('Email utente non specificata.');\r\n return;\r\n }\r\n this.item.userEmail = data.userEmail;\r\n this.item.userId = data.userId;\r\n }\r\n\r\n /**\r\n * Emits the current form result to trigger the password-reset flow.\r\n */\r\n protected ok(): void {\r\n this.done.emit(this.item);\r\n }\r\n\r\n /**\r\n * Generates a random password and populates both password fields with it.\r\n */\r\n protected generatePassword(): void {\r\n const password = SystemUtils.generatePassword();\r\n this.item.password = password;\r\n this.item.password2 = password;\r\n }\r\n}\r\n\r\n\r\n","<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n <span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n } @else {\r\n <span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n }\r\n</div>\r\n<h2 mat-dialog-title>Reimposta password</h2>\r\n<mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n @if (dialogData().mode === 'forgot') {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Email che hai scelto quando ti sei registrato</mat-label>\r\n <input type=\"email\" matInput [(ngModel)]=\"item.userEmail\" name=\"userEmail\" #userEmail=\"ngModel\" email required\r\n [attr.aria-label]=\"'Email con cui ti sei registrato'\">\r\n @if (userEmail.invalid) {\r\n <mat-error>Email non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (dialogData().mode !== 'admin') {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Vecchia password</mat-label>\r\n <input [type]=\"!showOldPassword() ? 'password' : 'text'\" matInput name=\"oldPwd\" autocomplete=\"on\"\r\n [(ngModel)]=\"item.oldPassword\" required maxlength=\"30\" #oldPwd=\"ngModel\">\r\n <button type=\"button\" mat-icon-button class=\"toolbar-suffix\" matSuffix\r\n (click)=\"showOldPassword.set(!showOldPassword())\">\r\n <mat-icon>{{showOldPassword() ? 'visibility' : 'visibility_off'}}</mat-icon>\r\n </button>\r\n @if(item.oldPassword) {\r\n <password-strength [password]=\"item.oldPassword\"></password-strength>\r\n }\r\n @if (oldPwd.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <mat-form-field style=\"width: 100%;\" hintLabel=\"Minimo 10 car. con 1 simbolo e 1 maiuscola\"\r\n [appearance]=\"dialogData().appearance\">\r\n <mat-label>Nuova password</mat-label>\r\n <input [type]=\"!showPassword() ? 'password' : 'text'\" matInput name=\"newPwd\" [(ngModel)]=\"item.password\" required\r\n password minlength=\"10\" maxlength=\"30\" #newPwd=\"ngModel\">\r\n @if(item.password) {\r\n <password-strength [password]=\"item.password\"></password-strength>\r\n }\r\n <button type=\"button\" mat-icon-button class=\"toolbar-suffix\" matSuffix (click)=\"showPassword.set(!showPassword())\">\r\n <mat-icon>{{showPassword() ? 'visibility' : 'visibility_off'}}</mat-icon>\r\n </button>\r\n <mat-hint align=\"end\">{{newPwd.value?.length || 0}}/30</mat-hint>\r\n @if (newPwd.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n <mat-form-field style=\"width: 100%;\" hintLabel=\"Minimo 10 car. con 1 simbolo e 1 maiuscola\"\r\n [appearance]=\"dialogData().appearance\">\r\n <mat-label>Conferma nuova password</mat-label>\r\n <input [type]=\"!showPassword2() ? 'password' : 'text'\" matInput name=\"newPwd2\" [(ngModel)]=\"item.password2\"\r\n [required]=\"dialogData().mode !== 'admin'\" password minlength=\"10\" maxlength=\"30\" [equals]=\"newPwd.control\" #newPwd2=\"ngModel\">\r\n <button type=\"button\" mat-icon-button class=\"toolbar-suffix\" matSuffix (click)=\"showPassword2.set(!showPassword2())\">\r\n <mat-icon>{{showPassword2() ? 'visibility' : 'visibility_off'}}</mat-icon>\r\n </button>\r\n @if(item.password2) {\r\n <password-strength [password]=\"item.password2\"></password-strength>\r\n }\r\n <mat-hint align=\"end\">{{newPwd2.value?.length || 0}}/30</mat-hint>\r\n @if (newPwd2.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"30\">\r\n @if (dialogData().mode === 'admin') {\r\n <button mat-stroked-button (click)=\"generatePassword()\">Genera</button>\r\n }\r\n </div>\r\n <div fxFlex=\"70\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button [disabled]=\"f.form.invalid\" (click)=\"ok()\">Salva</button>\r\n @if (dialogData().mode !== 'forgot') {\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">Annulla</button>\r\n }\r\n </div>\r\n </div>\r\n</mat-dialog-actions>","/**\n * @file breakpoints.ts\n * Bootstrap 5 breakpoint definitions as CDK-compatible MediaQuery strings.\n *\n * CDK's BreakpointObserver already handles the actual matching — we only define aliases.\n *\n * Bootstrap 5 grid tiers:\n * xs < 576px\n * sm >= 576px\n * md >= 768px\n * lg >= 992px\n * xl >= 1200px\n * xxl >= 1400px\n *\n * Supported alias families:\n *\n * Canonical ranges xs | sm | md | lg | xl | xxl\n * \"and up\" sm-up | md-up | lg-up | xl-up | xxl-up\n * gt-xs | gt-sm | gt-md | gt-lg | gt-xl (ngx-layout compat)\n * \"and down\" sm-down | md-down | lg-down | xl-down\n * lt-sm | lt-md | lt-lg | lt-xl | lt-xxl (ngx-layout compat)\n *\n * The lt-* / gt-* aliases are exact mirrors of the -down / -up aliases.\n * They share the same media query string so CDK deduplicates them internally.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport const BS5_BREAKPOINTS: Record<string, string> = {\n // ── Canonical ranges ────────────────────────────────────────────────────────\n 'xs': '(max-width: 575.98px)',\n 'sm': '(min-width: 576px) and (max-width: 767.98px)',\n 'md': '(min-width: 768px) and (max-width: 991.98px)',\n 'lg': '(min-width: 992px) and (max-width: 1199.98px)',\n 'xl': '(min-width: 1200px) and (max-width: 1399.98px)',\n 'xxl': '(min-width: 1400px)',\n\n // ── \"and up\" — Bootstrap style ───────────────────────────────────────────────\n 'sm-up': '(min-width: 576px)',\n 'md-up': '(min-width: 768px)',\n 'lg-up': '(min-width: 992px)',\n 'xl-up': '(min-width: 1200px)',\n 'xxl-up': '(min-width: 1400px)',\n\n // ── \"and up\" — ngx-layout gt-* style ────────────────────────────────────────\n 'gt-xs': '(min-width: 576px)',\n 'gt-sm': '(min-width: 768px)',\n 'gt-md': '(min-width: 992px)',\n 'gt-lg': '(min-width: 1200px)',\n 'gt-xl': '(min-width: 1400px)',\n\n // ── \"and down\" — Bootstrap style ─────────────────────────────────────────────\n 'sm-down': '(max-width: 767.98px)',\n 'md-down': '(max-width: 991.98px)',\n 'lg-down': '(max-width: 1199.98px)',\n 'xl-down': '(max-width: 1399.98px)',\n\n // ── \"and down\" — ngx-layout lt-* style ──────────────────────────────────────\n // lt-sm = everything below sm = xs only\n 'lt-sm': '(max-width: 575.98px)',\n // lt-md = everything below md = xs + sm\n 'lt-md': '(max-width: 767.98px)',\n // lt-lg = everything below lg = xs + sm + md\n 'lt-lg': '(max-width: 991.98px)',\n // lt-xl = everything below xl = xs + sm + md + lg\n 'lt-xl': '(max-width: 1199.98px)',\n // lt-xxl = everything below xxl = xs through xl\n 'lt-xxl': '(max-width: 1399.98px)',\n};\n\n/** InjectionToken — override to customise or extend breakpoints */\nexport const LAYOUT_BREAKPOINTS = new InjectionToken<Record<string, string>>(\n 'LAYOUT_BREAKPOINTS',\n { providedIn: 'root', factory: () => BS5_BREAKPOINTS }\n);\n\n/** Ordered canonical aliases, smallest → largest (used for mobile-first cascade) */\nexport const CANONICAL_ALIASES = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'] as const;\nexport type BreakpointAlias = typeof CANONICAL_ALIASES[number];\n\n/**\n * All non-canonical alias families.\n * Used by ResponsiveBaseDirective.resolveNonCanonical() to handle lt-* / gt-* / *-up / *-down\n * inputs without polluting the mobile-first cascade logic.\n */\nexport const ALIAS_FAMILIES = {\n up: ['sm-up', 'md-up', 'lg-up', 'xl-up', 'xxl-up'],\n down: ['sm-down', 'md-down', 'lg-down', 'xl-down'],\n gt: ['gt-xs', 'gt-sm', 'gt-md', 'gt-lg', 'gt-xl'],\n lt: ['lt-sm', 'lt-md', 'lt-lg', 'lt-xl', 'lt-xxl'],\n} as const;\n","/**\n * @file media-observer.service.ts (v2 — optimized)\n *\n * ── Optimizations over v1 ─────────────────────────────────────────────────\n *\n * ✅ Single bo.observe() call for all 6 canonical breakpoints.\n * CDK internally uses one MediaQueryList listener per query string.\n * Calling observe() N times creates N listeners — here we create only one.\n *\n * ✅ currentBp$ is shared (shareReplay(1)): all subscribers (effects in\n * directives) receive the same value without redundant re-computations.\n *\n * ✅ The currentBp Signal is derived from the Observable via toSignal():\n * Angular manages the subscription internally and tears it down with root.\n *\n * ✅ isActive() delegates to bo.isMatched() — synchronous, O(1), no extra observer.\n *\n * ✅ isActive$() reuses the shared currentBp$ stream instead of opening\n * a new bo.observe() for every requested alias.\n */\n\nimport { Injectable, inject, Signal } from '@angular/core';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { Observable, map, distinctUntilChanged, shareReplay } from 'rxjs';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { LAYOUT_BREAKPOINTS, CANONICAL_ALIASES, BreakpointAlias } from './breakpoints';\n\n@Injectable({ providedIn: 'root' })\nexport class MediaObserver {\n private readonly bo = inject(BreakpointObserver);\n private readonly bp = inject(LAYOUT_BREAKPOINTS);\n\n /**\n * A SINGLE CDK observation for all 6 canonical breakpoints.\n * Each breakpoint change emits → we resolve the current alias → shared.\n *\n * shareReplay(1): all subscribers (N directives in the DOM) receive\n * the same value without N separate recomputations.\n */\n readonly currentBp$: Observable<BreakpointAlias> = this.bo\n .observe(CANONICAL_ALIASES.map(a => this.bp[a]))\n .pipe(\n map(() => this._resolve()),\n distinctUntilChanged(), // does not emit if the breakpoint hasn't actually changed\n shareReplay(1) // multicast: N directives, 1 single execution\n );\n\n /**\n * Signal derived from currentBp$.\n * Directives read it via effect() — zero manual subscriptions.\n * providedIn: 'root' ensures the Signal is a singleton.\n */\n readonly currentBp: Signal<BreakpointAlias> = toSignal(this.currentBp$, {\n initialValue: this._resolve(),\n });\n\n /**\n * Returns true if the given alias (or raw media query) is currently active.\n * Delegates to bo.isMatched() — synchronous, O(1), no extra observer created.\n *\n * @example\n * media.isActive('md') // true on 768–991px screens\n * media.isActive('lg-up') // true on 992px+\n */\n isActive(alias: string): boolean {\n const query = this.bp[alias] ?? alias; // fallback: treat as raw media query\n console.log(`Checking if active: alias=\"${alias}\", query=\"${query}\", matches=${this.bo.isMatched(query)}`);\n return this.bo.isMatched(query);\n }\n\n /**\n * Observable true/false for a specific alias.\n * Reuses currentBp$ instead of opening a new bo.observe():\n * no additional MediaQueryList listener is created.\n */\n isActive$(alias: string): Observable<boolean> {\n return this.currentBp$.pipe(\n map(() => this.isActive(alias)),\n distinctUntilChanged()\n );\n }\n\n /** Resolves the active canonical alias (from xxl down to xs, mobile-first) */\n private _resolve(): BreakpointAlias {\n for (let i = CANONICAL_ALIASES.length - 1; i >= 0; i--) {\n if (this.bo.isMatched(this.bp[CANONICAL_ALIASES[i]])) {\n return CANONICAL_ALIASES[i];\n }\n }\n return 'xs';\n }\n}\n","/**\r\n * @file if-bp.directive.ts (Angular 21 — signals)\r\n *\r\n * *ifBp — structural directive that adds/removes an element from the DOM\r\n * based on the active Bootstrap 5 breakpoint.\r\n *\r\n * Unlike [fxShow]/[fxHide] (which use display:none), *ifBp actually adds and\r\n * removes the element from the DOM — ideal for heavy components like mat-sidenav.\r\n *\r\n * Angular 21 changes:\r\n * • @Input setters replaced by input() / input.required()\r\n * • computed() derives alias list and active state reactively\r\n * • effect() in constructor handles DOM add/remove (no OnInit/OnChanges)\r\n * • No Injector, EffectRef, _initialized guard or manual subscriptions\r\n *\r\n * Usage:\r\n * <mat-sidenav *ifBp=\"'lg-up'\"> only rendered on lg and above\r\n * <div *ifBp=\"'xs'\">Mobile only</div>\r\n * <div *ifBp=\"'sm md'\">sm and md only (space-separated list of aliases)</div>\r\n * <div *ifBp=\"'lg-up'; else mobileRef\">Desktop view</div>\r\n * <ng-template #mobileRef>Mobile fallback</ng-template>\r\n *\r\n * Accepted alias values:\r\n * xs | sm | md | lg | xl | xxl\r\n * sm-up | md-up | lg-up | xl-up | xxl-up\r\n * sm-down | md-down | lg-down | xl-down\r\n * Space-separated list of any of the above\r\n */\r\n\r\nimport {\r\n Directive, TemplateRef, ViewContainerRef,\r\n computed, effect, inject, input,\r\n} from '@angular/core';\r\nimport { MediaObserver } from './media-observer.service';\r\n\r\n@Directive({\r\n selector: '[ifBp]',\r\n standalone: true,\r\n})\r\nexport class IfBpDirective {\r\n private readonly tpl = inject(TemplateRef<unknown>);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly media = inject(MediaObserver);\r\n\r\n /** Space-separated list of breakpoint aliases, e.g. `'lg xl xxl-up'` */\r\n readonly ifBp = input.required<string>();\r\n /** Optional else-template shown when no alias is active */\r\n readonly ifBpElse = input<TemplateRef<unknown>>();\r\n\r\n private readonly _aliases = computed(() => this.ifBp().trim().split(/\\s+/));\r\n private readonly _isActive = computed(() => {\r\n this.media.currentBp(); // reactive dependency — re-evaluates on breakpoint change\r\n return this._aliases().some(alias => this.media.isActive(alias));\r\n });\r\n\r\n /** Tracks whether the main view is currently embedded — plain field, not a signal. */\r\n private _hasView = false;\r\n\r\n constructor() {\r\n effect(() => {\r\n const active = this._isActive();\r\n const elseTpl = this.ifBpElse();\r\n\r\n if (active === this._hasView) return; // dirty-check\r\n\r\n this.vcr.clear();\r\n if (active) {\r\n this.vcr.createEmbeddedView(this.tpl);\r\n } else if (elseTpl) {\r\n this.vcr.createEmbeddedView(elseTpl);\r\n }\r\n this._hasView = active;\r\n });\r\n }\r\n}\r\n","/**\n * @file responsive-base.directive.ts (v5 — Angular 21 signals)\n *\n * ── What changed in v5 ────────────────────────────────────────────────────\n *\n * Full Angular 21 signals refactor:\n *\n * • resolve(), resolveNonCanonical(), resolveAll() are now PURE EXPORTED\n * FUNCTIONS that accept currentBp and isActive as parameters.\n * Directives call them from computed() or effect() with no \"this\" binding.\n *\n * • ResponsiveBaseDirective is now a thin utility base:\n * – Only injects ElementRef, Renderer2, MediaObserver, PLATFORM_ID.\n * – Exposes safeSetStyle() helper.\n * – No lifecycle hooks, no Injector, no EffectRef, no abstract apply().\n *\n * • Each concrete directive uses:\n * – input() for every @Input (signals, no more setters + _v/_nc maps)\n * – computed() to build BpValues / NcValues maps and derive resolved CSS\n * – effect() in the constructor to write to the DOM\n *\n * Benefits vs v4:\n * ✅ Zero manual lifecycle/subscription management (no OnInit/OnChanges/EffectRef)\n * ✅ Angular's reactive graph provides built-in dirty-checking and memoization\n * ✅ DOM writes happen only when the resolved CSS value actually changes\n * ✅ No more Injector injection just to create effects\n *\n * ── Resolution strategy (unchanged) ──────────────────────────────────────\n *\n * Canonical aliases (xs … xxl) → mobile-first cascade via resolve()\n * Non-canonical (lt-*, gt-*, *-up, *-down) → point-in-time isActive() checks\n * Final order: resolveNonCanonical() wins over resolve()\n */\n\nimport {\n Directive,\n inject, ElementRef, Renderer2, PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { MediaObserver } from './media-observer.service';\nimport { CANONICAL_ALIASES, BreakpointAlias } from './breakpoints';\nimport { BpValues, NcValues } from './responsive-inputs.mixin';\n\n// ── O(1) alias → index lookup (module-level constant, shared across instances) ──\nexport const ALIAS_INDEX = new Map<string, number>(\n CANONICAL_ALIASES.map((a, i) => [a, i])\n);\n\n/**\n * All non-canonical alias keys in priority order (most specific first).\n * lt-sm is \"below sm\" (= xs only), lt-md is \"below md\" (= xs+sm), etc.\n * Narrower range = higher priority = checked first.\n */\nexport const NON_CANONICAL_PRIORITY = [\n // lt-* from narrowest to widest\n 'lt-sm', 'lt-md', 'lt-lg', 'lt-xl', 'lt-xxl',\n // gt-* from widest to narrowest\n 'gt-xs', 'gt-sm', 'gt-md', 'gt-lg', 'gt-xl',\n // Bootstrap *-down from narrowest to widest\n 'sm-down', 'md-down', 'lg-down', 'xl-down',\n // Bootstrap *-up from widest to narrowest\n 'sm-up', 'md-up', 'lg-up', 'xl-up', 'xxl-up',\n] as const;\n\n// ── Pure resolution functions ─────────────────────────────────────────────────\n// These are standalone functions (not class methods) so they can be called\n// from computed() closures without capturing `this`.\n\n/**\n * Resolution with three-tier priority:\n *\n * 1. Exact breakpoint match (e.g. currentBp='sm' → values['sm'])\n * 2. Generic `default` value (e.g. [fxFlex]=\"49\" — applies to all unspecified bps)\n * 3. Mobile-first cascade down (e.g. [fxFlex.xs]=\"X\" [fxFlex.md]=\"Y\" → lg cascades to md)\n *\n * This ensures [fxFlex]=\"49\" [fxFlex.xs]=\"100\" gives xs→100 and sm+→49,\n * instead of `xs` cascading up and shadowing the default on sm/md/lg.\n */\nexport function resolve<T>(\n values: BpValues<T>,\n currentBp: BreakpointAlias,\n): T | undefined {\n // 1. Exact match\n const exact = values[currentBp as keyof BpValues<T>];\n if (exact !== undefined) return exact;\n\n // 2. Generic default (wins over cascade — it's the \"applies everywhere\" value)\n const def = (values as Record<string, T | undefined>)['default'];\n if (def !== undefined) return def;\n\n // 3. Mobile-first cascade (only when no default — e.g. [fxFlex.xs]=\"X\" [fxFlex.md]=\"Y\")\n const idx = ALIAS_INDEX.get(currentBp) ?? 0;\n for (let i = idx - 1; i >= 0; i--) {\n const v = values[CANONICAL_ALIASES[i] as keyof BpValues<T>];\n if (v !== undefined) return v;\n }\n return undefined;\n}\n\n/**\n * Non-canonical point-in-time check: iterates NON_CANONICAL_PRIORITY and\n * returns the value for the first alias that isActive().\n */\nexport function resolveNonCanonical<T>(\n nc: NcValues<T>,\n isActive: (alias: string) => boolean,\n): T | undefined {\n for (const alias of NON_CANONICAL_PRIORITY) {\n const v = (nc as Record<string, T | undefined>)[alias];\n if (v !== undefined && isActive(alias)) return v;\n }\n return undefined;\n}\n\n/**\n * Full resolution: non-canonical overrides win over the canonical cascade.\n *\n * Usage inside computed():\n * const resolved = computed(() =>\n * resolveAll(this._v(), this._nc(), this.media.currentBp(), a => this.media.isActive(a))\n * );\n */\nexport function resolveAll<T>(\n canonical: BpValues<T>,\n nonCanonical: NcValues<T>,\n currentBp: BreakpointAlias,\n isActive: (alias: string) => boolean,\n): T | undefined {\n return resolveNonCanonical(nonCanonical, isActive) ?? resolve(canonical, currentBp);\n}\n\n// ── Base directive ─────────────────────────────────────────────────────────────\n\n@Directive()\nexport abstract class ResponsiveBaseDirective {\n protected readonly el = inject(ElementRef<HTMLElement>);\n protected readonly r2 = inject(Renderer2);\n protected readonly media = inject(MediaObserver);\n\n /** true in browser, false in SSR */\n protected readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n /** SSR-safe style setter. Pass null/empty string to remove the property. */\n protected safeSetStyle(prop: string, value: string | null): void {\n if (value === null || value === '') {\n this.r2.removeStyle(this.el.nativeElement, prop);\n } else {\n this.r2.setStyle(this.el.nativeElement, prop, value);\n }\n }\n}\n","/**\r\n * @file fx-flex-extras.directives.ts (Angular 21 — signals)\r\n *\r\n * Flex child helper directives:\r\n * [fxFlexOrder] — CSS order\r\n * [fxFlexOffset] — margin-inline-start (RTL-safe)\r\n * [fxFlexAlign] — align-self override\r\n * [fxFlexFill] — fills the container (width/height 100%)\r\n *\r\n * Angular 21 changes:\r\n * • All @Input setters replaced by input() signals\r\n * • computed() derives the resolved CSS values\r\n * • effect() in constructor writes to DOM — no lifecycle hooks\r\n *\r\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\r\n */\r\n\r\nimport { Directive, computed, effect, input, isDevMode } from '@angular/core';\r\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\r\n\r\n@Directive({\r\n selector: `\r\n [fxFlexOrder],\r\n [fxFlexOrder.xs],[fxFlexOrder.sm],[fxFlexOrder.md],[fxFlexOrder.lg],[fxFlexOrder.xl],[fxFlexOrder.xxl],\r\n [fxFlexOrder.lt-sm],[fxFlexOrder.lt-md],[fxFlexOrder.lt-lg],[fxFlexOrder.lt-xl],[fxFlexOrder.lt-xxl],\r\n [fxFlexOrder.gt-xs],[fxFlexOrder.gt-sm],[fxFlexOrder.gt-md],[fxFlexOrder.gt-lg],[fxFlexOrder.gt-xl],\r\n [fxFlexOrder.sm-up],[fxFlexOrder.md-up],[fxFlexOrder.lg-up],[fxFlexOrder.xl-up],[fxFlexOrder.xxl-up],\r\n [fxFlexOrder.sm-down],[fxFlexOrder.md-down],[fxFlexOrder.lg-down],[fxFlexOrder.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxFlexOrderDirective extends ResponsiveBaseDirective {\r\n readonly fxFlexOrder = input<string>(undefined, { alias: 'fxFlexOrder' });\r\n readonly xs = input<string>(undefined, { alias: 'fxFlexOrder.xs' });\r\n readonly sm = input<string>(undefined, { alias: 'fxFlexOrder.sm' });\r\n readonly md = input<string>(undefined, { alias: 'fxFlexOrder.md' });\r\n readonly lg = input<string>(undefined, { alias: 'fxFlexOrder.lg' });\r\n readonly xl = input<string>(undefined, { alias: 'fxFlexOrder.xl' });\r\n readonly xxl = input<string>(undefined, { alias: 'fxFlexOrder.xxl' });\r\n readonly ltSm = input<string>(undefined, { alias: 'fxFlexOrder.lt-sm' });\r\n readonly ltMd = input<string>(undefined, { alias: 'fxFlexOrder.lt-md' });\r\n readonly ltLg = input<string>(undefined, { alias: 'fxFlexOrder.lt-lg' });\r\n readonly ltXl = input<string>(undefined, { alias: 'fxFlexOrder.lt-xl' });\r\n readonly ltXxl = input<string>(undefined, { alias: 'fxFlexOrder.lt-xxl' });\r\n readonly gtXs = input<string>(undefined, { alias: 'fxFlexOrder.gt-xs' });\r\n readonly gtSm = input<string>(undefined, { alias: 'fxFlexOrder.gt-sm' });\r\n readonly gtMd = input<string>(undefined, { alias: 'fxFlexOrder.gt-md' });\r\n readonly gtLg = input<string>(undefined, { alias: 'fxFlexOrder.gt-lg' });\r\n readonly gtXl = input<string>(undefined, { alias: 'fxFlexOrder.gt-xl' });\r\n readonly smUp = input<string>(undefined, { alias: 'fxFlexOrder.sm-up' });\r\n readonly mdUp = input<string>(undefined, { alias: 'fxFlexOrder.md-up' });\r\n readonly lgUp = input<string>(undefined, { alias: 'fxFlexOrder.lg-up' });\r\n readonly xlUp = input<string>(undefined, { alias: 'fxFlexOrder.xl-up' });\r\n readonly xxlUp = input<string>(undefined, { alias: 'fxFlexOrder.xxl-up' });\r\n readonly smDown = input<string>(undefined, { alias: 'fxFlexOrder.sm-down' });\r\n readonly mdDown = input<string>(undefined, { alias: 'fxFlexOrder.md-down' });\r\n readonly lgDown = input<string>(undefined, { alias: 'fxFlexOrder.lg-down' });\r\n readonly xlDown = input<string>(undefined, { alias: 'fxFlexOrder.xl-down' });\r\n\r\n private readonly _order = computed(() =>\r\n resolveAll(\r\n { default: this.fxFlexOrder(), xs: this.xs(), sm: this.sm(), md: this.md(),\r\n lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ) ?? '0'\r\n );\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const v = this._order();\r\n if (isDevMode() && isNaN(Number(v))) console.warn(`[fxFlexOrder] Non-numeric value: \"${v}\"`);\r\n this.safeSetStyle('order', v);\r\n });\r\n }\r\n}\r\n\r\n// ─── fxFlexOffset ────────────────────────────────────────────────────────────\r\n\r\n@Directive({\r\n selector: `\r\n [fxFlexOffset],\r\n [fxFlexOffset.xs],[fxFlexOffset.sm],[fxFlexOffset.md],[fxFlexOffset.lg],[fxFlexOffset.xl],[fxFlexOffset.xxl],\r\n [fxFlexOffset.lt-sm],[fxFlexOffset.lt-md],[fxFlexOffset.lt-lg],[fxFlexOffset.lt-xl],[fxFlexOffset.lt-xxl],\r\n [fxFlexOffset.gt-xs],[fxFlexOffset.gt-sm],[fxFlexOffset.gt-md],[fxFlexOffset.gt-lg],[fxFlexOffset.gt-xl],\r\n [fxFlexOffset.sm-up],[fxFlexOffset.md-up],[fxFlexOffset.lg-up],[fxFlexOffset.xl-up],[fxFlexOffset.xxl-up],\r\n [fxFlexOffset.sm-down],[fxFlexOffset.md-down],[fxFlexOffset.lg-down],[fxFlexOffset.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxFlexOffsetDirective extends ResponsiveBaseDirective {\r\n readonly fxFlexOffset = input<string>(undefined, { alias: 'fxFlexOffset' });\r\n readonly xs = input<string>(undefined, { alias: 'fxFlexOffset.xs' });\r\n readonly sm = input<string>(undefined, { alias: 'fxFlexOffset.sm' });\r\n readonly md = input<string>(undefined, { alias: 'fxFlexOffset.md' });\r\n readonly lg = input<string>(undefined, { alias: 'fxFlexOffset.lg' });\r\n readonly xl = input<string>(undefined, { alias: 'fxFlexOffset.xl' });\r\n readonly xxl = input<string>(undefined, { alias: 'fxFlexOffset.xxl' });\r\n readonly ltSm = input<string>(undefined, { alias: 'fxFlexOffset.lt-sm' });\r\n readonly ltMd = input<string>(undefined, { alias: 'fxFlexOffset.lt-md' });\r\n readonly ltLg = input<string>(undefined, { alias: 'fxFlexOffset.lt-lg' });\r\n readonly ltXl = input<string>(undefined, { alias: 'fxFlexOffset.lt-xl' });\r\n readonly ltXxl = input<string>(undefined, { alias: 'fxFlexOffset.lt-xxl' });\r\n readonly gtXs = input<string>(undefined, { alias: 'fxFlexOffset.gt-xs' });\r\n readonly gtSm = input<string>(undefined, { alias: 'fxFlexOffset.gt-sm' });\r\n readonly gtMd = input<string>(undefined, { alias: 'fxFlexOffset.gt-md' });\r\n readonly gtLg = input<string>(undefined, { alias: 'fxFlexOffset.gt-lg' });\r\n readonly gtXl = input<string>(undefined, { alias: 'fxFlexOffset.gt-xl' });\r\n readonly smUp = input<string>(undefined, { alias: 'fxFlexOffset.sm-up' });\r\n readonly mdUp = input<string>(undefined, { alias: 'fxFlexOffset.md-up' });\r\n readonly lgUp = input<string>(undefined, { alias: 'fxFlexOffset.lg-up' });\r\n readonly xlUp = input<string>(undefined, { alias: 'fxFlexOffset.xl-up' });\r\n readonly xxlUp = input<string>(undefined, { alias: 'fxFlexOffset.xxl-up' });\r\n readonly smDown = input<string>(undefined, { alias: 'fxFlexOffset.sm-down' });\r\n readonly mdDown = input<string>(undefined, { alias: 'fxFlexOffset.md-down' });\r\n readonly lgDown = input<string>(undefined, { alias: 'fxFlexOffset.lg-down' });\r\n readonly xlDown = input<string>(undefined, { alias: 'fxFlexOffset.xl-down' });\r\n\r\n private readonly _offset = computed(() =>\r\n resolveAll(\r\n { default: this.fxFlexOffset(), xs: this.xs(), sm: this.sm(), md: this.md(),\r\n lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ) ?? '0'\r\n );\r\n\r\n constructor() {\r\n super();\r\n effect(() => { this.safeSetStyle('margin-inline-start', this._offset()); });\r\n }\r\n}\r\n\r\n// ─── fxFlexAlign ─────────────────────────────────────────────────────────────\r\n\r\ntype AlignSelf = 'auto' | 'start' | 'center' | 'end' | 'stretch' | 'baseline';\r\nconst ALIGN_SELF_MAP: Record<string, string> = {\r\n start: 'flex-start', end: 'flex-end', center: 'center',\r\n stretch: 'stretch', baseline: 'baseline', auto: 'auto',\r\n};\r\n\r\n@Directive({\r\n selector: `\r\n [fxFlexAlign],\r\n [fxFlexAlign.xs],[fxFlexAlign.sm],[fxFlexAlign.md],[fxFlexAlign.lg],[fxFlexAlign.xl],[fxFlexAlign.xxl],\r\n [fxFlexAlign.lt-sm],[fxFlexAlign.lt-md],[fxFlexAlign.lt-lg],[fxFlexAlign.lt-xl],[fxFlexAlign.lt-xxl],\r\n [fxFlexAlign.gt-xs],[fxFlexAlign.gt-sm],[fxFlexAlign.gt-md],[fxFlexAlign.gt-lg],[fxFlexAlign.gt-xl],\r\n [fxFlexAlign.sm-up],[fxFlexAlign.md-up],[fxFlexAlign.lg-up],[fxFlexAlign.xl-up],[fxFlexAlign.xxl-up],\r\n [fxFlexAlign.sm-down],[fxFlexAlign.md-down],[fxFlexAlign.lg-down],[fxFlexAlign.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxFlexAlignDirective extends ResponsiveBaseDirective {\r\n readonly fxFlexAlign = input<AlignSelf>(undefined, { alias: 'fxFlexAlign' });\r\n readonly xs = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xs' });\r\n readonly sm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.sm' });\r\n readonly md = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.md' });\r\n readonly lg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lg' });\r\n readonly xl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xl' });\r\n readonly xxl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xxl' });\r\n readonly ltSm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-sm' });\r\n readonly ltMd = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-md' });\r\n readonly ltLg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-lg' });\r\n readonly ltXl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-xl' });\r\n readonly ltXxl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-xxl' });\r\n readonly gtXs = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-xs' });\r\n readonly gtSm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-sm' });\r\n readonly gtMd = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-md' });\r\n readonly gtLg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-lg' });\r\n readonly gtXl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-xl' });\r\n readonly smUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.sm-up' });\r\n readonly mdUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.md-up' });\r\n readonly lgUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lg-up' });\r\n readonly xlUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xl-up' });\r\n readonly xxlUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xxl-up' });\r\n readonly smDown = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.sm-down' });\r\n readonly mdDown = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.md-down' });\r\n readonly lgDown = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lg-down' });\r\n readonly xlDown = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xl-down' });\r\n\r\n private readonly _alignSelf = computed(() => {\r\n const v = resolveAll(\r\n { default: this.fxFlexAlign(), xs: this.xs(), sm: this.sm(), md: this.md(),\r\n lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ) ?? 'stretch';\r\n if (isDevMode() && !ALIGN_SELF_MAP[v]) console.warn(`[fxFlexAlign] Unknown value: \"${v}\". Valid: ${Object.keys(ALIGN_SELF_MAP).join(', ')}`);\r\n return ALIGN_SELF_MAP[v] ?? v;\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => { this.safeSetStyle('align-self', this._alignSelf()); });\r\n }\r\n}\r\n\r\n// ─── fxFlexFill ──────────────────────────────────────────────────────────────\r\n// fxFlexFill is intentionally non-responsive in its most common usage,\r\n// but supports breakpoint suffixes for edge cases where fill must be toggled.\r\n\r\ntype FillValue = 'fill' | 'none' | '' | boolean;\r\nfunction toBool(v: FillValue | undefined): boolean | undefined {\r\n if (v === undefined) return undefined;\r\n if (typeof v === 'boolean') return v;\r\n if (v === '') return true;\r\n return v !== 'none';\r\n}\r\n\r\n@Directive({\r\n selector: `\r\n [fxFlexFill],[fxFill],\r\n [fxFlexFill.xs],[fxFlexFill.sm],[fxFlexFill.md],[fxFlexFill.lg],[fxFlexFill.xl],[fxFlexFill.xxl],\r\n [fxFlexFill.lt-sm],[fxFlexFill.lt-md],[fxFlexFill.lt-lg],[fxFlexFill.lt-xl],[fxFlexFill.lt-xxl],\r\n [fxFlexFill.gt-xs],[fxFlexFill.gt-sm],[fxFlexFill.gt-md],[fxFlexFill.gt-lg],[fxFlexFill.gt-xl],\r\n [fxFlexFill.sm-up],[fxFlexFill.md-up],[fxFlexFill.lg-up],[fxFlexFill.xl-up],[fxFlexFill.xxl-up],\r\n [fxFlexFill.sm-down],[fxFlexFill.md-down],[fxFlexFill.lg-down],[fxFlexFill.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxFlexFillDirective extends ResponsiveBaseDirective {\r\n readonly fxFlexFill = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill', transform: toBool });\r\n readonly fxFill = input<boolean, FillValue>(undefined, { alias: 'fxFill', transform: toBool });\r\n readonly xs = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xs', transform: toBool });\r\n readonly sm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.sm', transform: toBool });\r\n readonly md = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.md', transform: toBool });\r\n readonly lg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lg', transform: toBool });\r\n readonly xl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xl', transform: toBool });\r\n readonly xxl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xxl', transform: toBool });\r\n readonly ltSm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-sm', transform: toBool });\r\n readonly ltMd = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-md', transform: toBool });\r\n readonly ltLg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-lg', transform: toBool });\r\n readonly ltXl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-xl', transform: toBool });\r\n readonly ltXxl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-xxl', transform: toBool });\r\n readonly gtXs = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-xs', transform: toBool });\r\n readonly gtSm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-sm', transform: toBool });\r\n readonly gtMd = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-md', transform: toBool });\r\n readonly gtLg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-lg', transform: toBool });\r\n readonly gtXl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-xl', transform: toBool });\r\n readonly smUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.sm-up', transform: toBool });\r\n readonly mdUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.md-up', transform: toBool });\r\n readonly lgUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lg-up', transform: toBool });\r\n readonly xlUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xl-up', transform: toBool });\r\n readonly xxlUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xxl-up', transform: toBool });\r\n readonly smDown = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.sm-down', transform: toBool });\r\n readonly mdDown = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.md-down', transform: toBool });\r\n readonly lgDown = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lg-down', transform: toBool });\r\n readonly xlDown = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xl-down', transform: toBool });\r\n\r\n private readonly _active = computed(() =>\r\n (resolveAll(\r\n // fxFill is a shorthand alias for the default; fxFlexFill wins if both set\r\n { default: this.fxFlexFill() ?? this.fxFill(),\r\n xs: this.xs() as boolean | undefined, sm: this.sm() as boolean | undefined,\r\n md: this.md() as boolean | undefined, lg: this.lg() as boolean | undefined,\r\n xl: this.xl() as boolean | undefined, xxl: this.xxl() as boolean | undefined },\r\n { 'lt-sm': this.ltSm() as boolean | undefined, 'lt-md': this.ltMd() as boolean | undefined,\r\n 'lt-lg': this.ltLg() as boolean | undefined, 'lt-xl': this.ltXl() as boolean | undefined,\r\n 'lt-xxl': this.ltXxl() as boolean | undefined,\r\n 'gt-xs': this.gtXs() as boolean | undefined, 'gt-sm': this.gtSm() as boolean | undefined,\r\n 'gt-md': this.gtMd() as boolean | undefined, 'gt-lg': this.gtLg() as boolean | undefined,\r\n 'gt-xl': this.gtXl() as boolean | undefined,\r\n 'sm-up': this.smUp() as boolean | undefined, 'md-up': this.mdUp() as boolean | undefined,\r\n 'lg-up': this.lgUp() as boolean | undefined, 'xl-up': this.xlUp() as boolean | undefined,\r\n 'xxl-up': this.xxlUp() as boolean | undefined,\r\n 'sm-down': this.smDown() as boolean | undefined, 'md-down': this.mdDown() as boolean | undefined,\r\n 'lg-down': this.lgDown() as boolean | undefined, 'xl-down': this.xlDown() as boolean | undefined },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ) as boolean | undefined) ?? true\r\n );\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const active = this._active();\r\n const v = active ? '100%' : null;\r\n this.safeSetStyle('margin', active ? '0' : null);\r\n // align-self: stretch ensures this element fills the parent's cross axis even\r\n // when the parent flex container has align-items: center (e.g. mat-toolbar).\r\n // Without this, height: 100% collapses to content height and align-items on\r\n // this container has no visible centering space.\r\n this.safeSetStyle('align-self', active ? 'stretch' : null);\r\n this.safeSetStyle('width', v);\r\n this.safeSetStyle('height', v);\r\n this.safeSetStyle('min-width', v);\r\n this.safeSetStyle('min-height', v);\r\n });\r\n }\r\n}\r\n","/**\n * @file fx-flex.directive.ts (Angular 21 — signals)\n *\n * [fxFlex] — flex shorthand on a flex child element.\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • computed() builds the BpValues / NcValues maps reactively\n * • effect() in constructor writes to the DOM — no lifecycle hooks needed\n * • resolveAll() is the pure function from responsive-base.directive.ts\n *\n * Accepted values:\n * (empty) → flex: 1 1 0%\n * \"auto\" → flex: 1 1 auto\n * \"none\" → flex: none\n * \"grow\" → flex: 1 1 100%\n * \"nogrow\" → flex: 0 1 auto\n * \"noshrink\" → flex: 1 0 auto\n * \"50%\" → flex: 1 1 50%\n * \"50\" → flex: 1 1 50% (unitless normalized to %)\n * \"200px\" → flex: 1 1 200px\n * \"0 0 200px\" → flex: 0 0 200px (full shorthand passthrough)\n *\n * Breakpoint suffixes:\n * Canonical : .xs .sm .md .lg .xl .xxl\n * lt-* : .lt-sm .lt-md .lt-lg .lt-xl .lt-xxl\n * gt-* : .gt-xs .gt-sm .gt-md .gt-lg .gt-xl\n * *-up : .sm-up .md-up .lg-up .xl-up .xxl-up\n * *-down : .sm-down .md-down .lg-down .xl-down\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\nfunction toFlexCss(raw: string | undefined): string {\n if (raw === undefined || raw === '' || raw === '*') return '1 1 auto';\n if (raw === 'none') return 'none';\n if (raw === 'auto') return '1 1 auto';\n if (raw === 'grow') return '1 1 100%';\n if (raw === 'nogrow') return '0 1 auto';\n if (raw === 'noshrink') return '1 0 auto';\n const parts = raw.trim().split(/\\s+/);\n if (parts.length === 3) return raw.trim();\n let basis = parts[0];\n if (/^\\d+(\\.\\d+)?$/.test(basis)) basis = basis + '%';\n // Fixed units (px, em, rem, vh, vw…) → 0 0 (no grow/shrink); % → 1 1\n const fixed = /px|em|rem|vh|vw|vmin|vmax|ch|ex|cm|mm|in|pt|pc/.test(basis);\n return `${fixed ? '0 0' : '1 1'} ${basis}`;\n}\n\n/** Returns true if any sibling element in the same parent has fxFlex=\"*\" */\nfunction parentHasStar(el: HTMLElement): boolean {\n const parent = el.parentElement;\n if (!parent) return false;\n return Array.from(parent.children).some(\n c => c !== el && (c.getAttribute('fxflex') === '*' || c.getAttribute('fxFlex') === '*')\n );\n}\n\n@Directive({\n selector: `\n [fxFlex],\n [fxFlex.xs],[fxFlex.sm],[fxFlex.md],[fxFlex.lg],[fxFlex.xl],[fxFlex.xxl],\n [fxFlex.lt-sm],[fxFlex.lt-md],[fxFlex.lt-lg],[fxFlex.lt-xl],[fxFlex.lt-xxl],\n [fxFlex.gt-xs],[fxFlex.gt-sm],[fxFlex.gt-md],[fxFlex.gt-lg],[fxFlex.gt-xl],\n [fxFlex.sm-up],[fxFlex.md-up],[fxFlex.lg-up],[fxFlex.xl-up],[fxFlex.xxl-up],\n [fxFlex.sm-down],[fxFlex.md-down],[fxFlex.lg-down],[fxFlex.xl-down]\n `,\n standalone: true,\n})\nexport class FxFlexDirective extends ResponsiveBaseDirective {\n // ── Canonical signal inputs ───────────────────────────────────────────────\n readonly fxFlex = input<string>(undefined, { alias: 'fxFlex' });\n readonly xs = input<string>(undefined, { alias: 'fxFlex.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxFlex.sm' });\n readonly md = input<string>(undefined, { alias: 'fxFlex.md' });\n readonly lg = input<string>(undefined, { alias: 'fxFlex.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxFlex.xl' });\n readonly xxl = input<string>(undefined, { alias: 'fxFlex.xxl' });\n // ── lt-* ─────────────────────────────────────────────────────────────────\n readonly ltSm = input<string>(undefined, { alias: 'fxFlex.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxFlex.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxFlex.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxFlex.lt-xl' });\n readonly ltXxl = input<string>(undefined, { alias: 'fxFlex.lt-xxl' });\n // ── gt-* ─────────────────────────────────────────────────────────────────\n readonly gtXs = input<string>(undefined, { alias: 'fxFlex.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxFlex.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxFlex.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxFlex.gt-lg' });\n readonly gtXl = input<string>(undefined, { alias: 'fxFlex.gt-xl' });\n // ── *-up ─────────────────────────────────────────────────────────────────\n readonly smUp = input<string>(undefined, { alias: 'fxFlex.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxFlex.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxFlex.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxFlex.xl-up' });\n readonly xxlUp = input<string>(undefined, { alias: 'fxFlex.xxl-up' });\n // ── *-down ───────────────────────────────────────────────────────────────\n readonly smDown = input<string>(undefined, { alias: 'fxFlex.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxFlex.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxFlex.lg-down' });\n readonly xlDown = input<string>(undefined, { alias: 'fxFlex.xl-down' });\n\n // ── Derived CSS value ──────────────────────────────────────────────────────\n // Inlined single computed: Angular tracks each input() individually,\n // so _flexCss only recomputes when a signal it actually reads changes.\n private readonly _rawFlex = computed(() =>\n resolveAll(\n { default: this.fxFlex(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n\n constructor() {\n super();\n effect(() => {\n const raw = this._rawFlex();\n // undefined means no rule matched the current breakpoint (e.g. only fxFlex.lt-md=\"100\"\n // is set and the current bp is lg+). Remove flex entirely so the browser default\n // (flex: 0 1 auto) applies and justify-content can distribute the remaining space.\n if (raw === undefined) {\n this.safeSetStyle('flex', null);\n this.safeSetStyle('box-sizing', null);\n return;\n }\n // empty string / \"*\" → equal distribution (1 1 auto), unless a star-sibling is present\n const css = raw === ''\n ? (parentHasStar(this.el.nativeElement) ? '0 0 auto' : '1 1 auto')\n : toFlexCss(raw);\n this.safeSetStyle('flex', css);\n this.safeSetStyle('box-sizing', 'border-box');\n });\n }\n}\n","/**\r\n * @file fx-grid.directives.ts (Angular 21 — signals)\r\n *\r\n * CSS Grid responsive directives.\r\n *\r\n * [fxGrid] — display:grid + responsive grid-template-columns.\r\n * Accepts [fxGridRows] and [fxGridGap] inputs on same host.\r\n * [fxGridColumn] — grid-column on a child\r\n * [fxGridArea] — grid-area on a child\r\n *\r\n * Angular 21 changes:\r\n * • All @Input setters replaced by input() signals\r\n * • FxGridDirective uses 3 pairs of computed() for cols/rows/gap maps\r\n * • Single effect() in constructor writes all 3 CSS props\r\n * • Null/undefined props are removed (no style leak)\r\n *\r\n * Unitless numeric gap values are normalized to px (\"16\" → \"16px\").\r\n *\r\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\r\n */\r\n\r\nimport { Directive, computed, effect, input } from '@angular/core';\r\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\r\n\r\nfunction normalizeGap(raw: string | undefined): string | undefined {\r\n if (!raw) return undefined;\r\n return raw.trim().split(/\\s+/)\r\n .map(v => /^\\d+(\\.\\d+)?$/.test(v) ? `${v}px` : v)\r\n .join(' ');\r\n}\r\n\r\n// ─── fxGrid (container) ──────────────────────────────────────────────────────\r\n\r\n@Directive({\r\n selector: `\r\n [fxGrid],\r\n [fxGrid.xs],[fxGrid.sm],[fxGrid.md],[fxGrid.lg],[fxGrid.xl],[fxGrid.xxl],\r\n [fxGrid.lt-sm],[fxGrid.lt-md],[fxGrid.lt-lg],[fxGrid.lt-xl],[fxGrid.lt-xxl],\r\n [fxGrid.gt-xs],[fxGrid.gt-sm],[fxGrid.gt-md],[fxGrid.gt-lg],[fxGrid.gt-xl],\r\n [fxGrid.sm-up],[fxGrid.md-up],[fxGrid.lg-up],[fxGrid.xl-up],[fxGrid.xxl-up],\r\n [fxGrid.sm-down],[fxGrid.md-down],[fxGrid.lg-down],[fxGrid.xl-down]\r\n `,\r\n standalone: true,\r\n host: { '[style.display]': '\"grid\"' },\r\n})\r\nexport class FxGridDirective extends ResponsiveBaseDirective {\r\n // ── grid-template-columns ──────────────────────────────────────────────────\r\n readonly fxGrid = input<string>(undefined, { alias: 'fxGrid' });\r\n readonly xs = input<string>(undefined, { alias: 'fxGrid.xs' });\r\n readonly sm = input<string>(undefined, { alias: 'fxGrid.sm' });\r\n readonly md = input<string>(undefined, { alias: 'fxGrid.md' });\r\n readonly lg = input<string>(undefined, { alias: 'fxGrid.lg' });\r\n readonly xl = input<string>(undefined, { alias: 'fxGrid.xl' });\r\n readonly xxl = input<string>(undefined, { alias: 'fxGrid.xxl' });\r\n readonly ltSm = input<string>(undefined, { alias: 'fxGrid.lt-sm' });\r\n readonly ltMd = input<string>(undefined, { alias: 'fxGrid.lt-md' });\r\n readonly ltLg = input<string>(undefined, { alias: 'fxGrid.lt-lg' });\r\n readonly ltXl = input<string>(undefined, { alias: 'fxGrid.lt-xl' });\r\n readonly ltXxl = input<string>(undefined, { alias: 'fxGrid.lt-xxl' });\r\n readonly gtXs = input<string>(undefined, { alias: 'fxGrid.gt-xs' });\r\n readonly gtSm = input<string>(undefined, { alias: 'fxGrid.gt-sm' });\r\n readonly gtMd = input<string>(undefined, { alias: 'fxGrid.gt-md' });\r\n readonly gtLg = input<string>(undefined, { alias: 'fxGrid.gt-lg' });\r\n readonly gtXl = input<string>(undefined, { alias: 'fxGrid.gt-xl' });\r\n readonly smUp = input<string>(undefined, { alias: 'fxGrid.sm-up' });\r\n readonly mdUp = input<string>(undefined, { alias: 'fxGrid.md-up' });\r\n readonly lgUp = input<string>(undefined, { alias: 'fxGrid.lg-up' });\r\n readonly xlUp = input<string>(undefined, { alias: 'fxGrid.xl-up' });\r\n readonly xxlUp = input<string>(undefined, { alias: 'fxGrid.xxl-up' });\r\n readonly smDown = input<string>(undefined, { alias: 'fxGrid.sm-down' });\r\n readonly mdDown = input<string>(undefined, { alias: 'fxGrid.md-down' });\r\n readonly lgDown = input<string>(undefined, { alias: 'fxGrid.lg-down' });\r\n readonly xlDown = input<string>(undefined, { alias: 'fxGrid.xl-down' });\r\n\r\n // ── grid-template-rows ────────────────────────────────────────────────────\r\n readonly fxGridRows = input<string>(undefined, { alias: 'fxGridRows' });\r\n readonly rowsXs = input<string>(undefined, { alias: 'fxGridRows.xs' });\r\n readonly rowsSm = input<string>(undefined, { alias: 'fxGridRows.sm' });\r\n readonly rowsMd = input<string>(undefined, { alias: 'fxGridRows.md' });\r\n readonly rowsLg = input<string>(undefined, { alias: 'fxGridRows.lg' });\r\n readonly rowsXl = input<string>(undefined, { alias: 'fxGridRows.xl' });\r\n readonly rowsXxl = input<string>(undefined, { alias: 'fxGridRows.xxl' });\r\n readonly rowsLtSm = input<string>(undefined, { alias: 'fxGridRows.lt-sm' });\r\n readonly rowsLtMd = input<string>(undefined, { alias: 'fxGridRows.lt-md' });\r\n readonly rowsLtLg = input<string>(undefined, { alias: 'fxGridRows.lt-lg' });\r\n readonly rowsLtXl = input<string>(undefined, { alias: 'fxGridRows.lt-xl' });\r\n readonly rowsLtXxl = input<string>(undefined, { alias: 'fxGridRows.lt-xxl' });\r\n readonly rowsGtXs = input<string>(undefined, { alias: 'fxGridRows.gt-xs' });\r\n readonly rowsGtSm = input<string>(undefined, { alias: 'fxGridRows.gt-sm' });\r\n readonly rowsGtMd = input<string>(undefined, { alias: 'fxGridRows.gt-md' });\r\n readonly rowsGtLg = input<string>(undefined, { alias: 'fxGridRows.gt-lg' });\r\n readonly rowsGtXl = input<string>(undefined, { alias: 'fxGridRows.gt-xl' });\r\n readonly rowsSmUp = input<string>(undefined, { alias: 'fxGridRows.sm-up' });\r\n readonly rowsMdUp = input<string>(undefined, { alias: 'fxGridRows.md-up' });\r\n readonly rowsLgUp = input<string>(undefined, { alias: 'fxGridRows.lg-up' });\r\n readonly rowsXlUp = input<string>(undefined, { alias: 'fxGridRows.xl-up' });\r\n readonly rowsXxlUp = input<string>(undefined, { alias: 'fxGridRows.xxl-up' });\r\n readonly rowsSmDown = input<string>(undefined, { alias: 'fxGridRows.sm-down' });\r\n readonly rowsMdDown = input<string>(undefined, { alias: 'fxGridRows.md-down' });\r\n readonly rowsLgDown = input<string>(undefined, { alias: 'fxGridRows.lg-down' });\r\n readonly rowsXlDown = input<string>(undefined, { alias: 'fxGridRows.xl-down' });\r\n\r\n // ── gap ───────────────────────────────────────────────────────────────────\r\n readonly fxGridGap = input<string>(undefined, { alias: 'fxGridGap' });\r\n readonly gapXs = input<string>(undefined, { alias: 'fxGridGap.xs' });\r\n readonly gapSm = input<string>(undefined, { alias: 'fxGridGap.sm' });\r\n readonly gapMd = input<string>(undefined, { alias: 'fxGridGap.md' });\r\n readonly gapLg = input<string>(undefined, { alias: 'fxGridGap.lg' });\r\n readonly gapXl = input<string>(undefined, { alias: 'fxGridGap.xl' });\r\n readonly gapXxl = input<string>(undefined, { alias: 'fxGridGap.xxl' });\r\n readonly gapLtSm = input<string>(undefined, { alias: 'fxGridGap.lt-sm' });\r\n readonly gapLtMd = input<string>(undefined, { alias: 'fxGridGap.lt-md' });\r\n readonly gapLtLg = input<string>(undefined, { alias: 'fxGridGap.lt-lg' });\r\n readonly gapLtXl = input<string>(undefined, { alias: 'fxGridGap.lt-xl' });\r\n readonly gapLtXxl = input<string>(undefined, { alias: 'fxGridGap.lt-xxl' });\r\n readonly gapGtXs = input<string>(undefined, { alias: 'fxGridGap.gt-xs' });\r\n readonly gapGtSm = input<string>(undefined, { alias: 'fxGridGap.gt-sm' });\r\n readonly gapGtMd = input<string>(undefined, { alias: 'fxGridGap.gt-md' });\r\n readonly gapGtLg = input<string>(undefined, { alias: 'fxGridGap.gt-lg' });\r\n readonly gapGtXl = input<string>(undefined, { alias: 'fxGridGap.gt-xl' });\r\n readonly gapSmUp = input<string>(undefined, { alias: 'fxGridGap.sm-up' });\r\n readonly gapMdUp = input<string>(undefined, { alias: 'fxGridGap.md-up' });\r\n readonly gapLgUp = input<string>(undefined, { alias: 'fxGridGap.lg-up' });\r\n readonly gapXlUp = input<string>(undefined, { alias: 'fxGridGap.xl-up' });\r\n readonly gapXxlUp = input<string>(undefined, { alias: 'fxGridGap.xxl-up' });\r\n readonly gapSmDown = input<string>(undefined, { alias: 'fxGridGap.sm-down' });\r\n readonly gapMdDown = input<string>(undefined, { alias: 'fxGridGap.md-down' });\r\n readonly gapLgDown = input<string>(undefined, { alias: 'fxGridGap.lg-down' });\r\n readonly gapXlDown = input<string>(undefined, { alias: 'fxGridGap.xl-down' });\r\n\r\n // ── resolved values (flat computed — no intermediate object computed) ──────\r\n private readonly _cols = computed(() =>\r\n resolveAll<string>(\r\n { default: this.fxGrid(), xs: this.xs(), sm: this.sm(),\r\n md: this.md(), lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n )\r\n );\r\n private readonly _rows = computed(() =>\r\n resolveAll<string>(\r\n { default: this.fxGridRows(), xs: this.rowsXs(), sm: this.rowsSm(),\r\n md: this.rowsMd(), lg: this.rowsLg(), xl: this.rowsXl(), xxl: this.rowsXxl() },\r\n { 'lt-sm': this.rowsLtSm(), 'lt-md': this.rowsLtMd(), 'lt-lg': this.rowsLtLg(),\r\n 'lt-xl': this.rowsLtXl(), 'lt-xxl': this.rowsLtXxl(),\r\n 'gt-xs': this.rowsGtXs(), 'gt-sm': this.rowsGtSm(), 'gt-md': this.rowsGtMd(),\r\n 'gt-lg': this.rowsGtLg(), 'gt-xl': this.rowsGtXl(),\r\n 'sm-up': this.rowsSmUp(), 'md-up': this.rowsMdUp(), 'lg-up': this.rowsLgUp(),\r\n 'xl-up': this.rowsXlUp(), 'xxl-up': this.rowsXxlUp(),\r\n 'sm-down': this.rowsSmDown(), 'md-down': this.rowsMdDown(),\r\n 'lg-down': this.rowsLgDown(), 'xl-down': this.rowsXlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n )\r\n );\r\n private readonly _gap = computed(() =>\r\n normalizeGap(resolveAll<string>(\r\n { default: this.fxGridGap(), xs: this.gapXs(), sm: this.gapSm(),\r\n md: this.gapMd(), lg: this.gapLg(), xl: this.gapXl(), xxl: this.gapXxl() },\r\n { 'lt-sm': this.gapLtSm(), 'lt-md': this.gapLtMd(), 'lt-lg': this.gapLtLg(),\r\n 'lt-xl': this.gapLtXl(), 'lt-xxl': this.gapLtXxl(),\r\n 'gt-xs': this.gapGtXs(), 'gt-sm': this.gapGtSm(), 'gt-md': this.gapGtMd(),\r\n 'gt-lg': this.gapGtLg(), 'gt-xl': this.gapGtXl(),\r\n 'sm-up': this.gapSmUp(), 'md-up': this.gapMdUp(), 'lg-up': this.gapLgUp(),\r\n 'xl-up': this.gapXlUp(), 'xxl-up': this.gapXxlUp(),\r\n 'sm-down': this.gapSmDown(), 'md-down': this.gapMdDown(),\r\n 'lg-down': this.gapLgDown(), 'xl-down': this.gapXlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ))\r\n );\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const cols = this._cols();\r\n const rows = this._rows();\r\n const gap = this._gap();\r\n cols ? this.safeSetStyle('grid-template-columns', cols)\r\n : this.r2.removeStyle(this.el.nativeElement, 'grid-template-columns');\r\n rows ? this.safeSetStyle('grid-template-rows', rows)\r\n : this.r2.removeStyle(this.el.nativeElement, 'grid-template-rows');\r\n gap ? this.safeSetStyle('gap', gap)\r\n : this.r2.removeStyle(this.el.nativeElement, 'gap');\r\n });\r\n }\r\n}\r\n\r\n// ─── fxGridColumn ─────────────────────────────────────────────────────────────\r\n\r\n@Directive({\r\n selector: `\r\n [fxGridColumn],\r\n [fxGridColumn.xs],[fxGridColumn.sm],[fxGridColumn.md],[fxGridColumn.lg],[fxGridColumn.xl],[fxGridColumn.xxl],\r\n [fxGridColumn.lt-sm],[fxGridColumn.lt-md],[fxGridColumn.lt-lg],[fxGridColumn.lt-xl],[fxGridColumn.lt-xxl],\r\n [fxGridColumn.gt-xs],[fxGridColumn.gt-sm],[fxGridColumn.gt-md],[fxGridColumn.gt-lg],[fxGridColumn.gt-xl],\r\n [fxGridColumn.sm-up],[fxGridColumn.md-up],[fxGridColumn.lg-up],[fxGridColumn.xl-up],[fxGridColumn.xxl-up],\r\n [fxGridColumn.sm-down],[fxGridColumn.md-down],[fxGridColumn.lg-down],[fxGridColumn.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxGridColumnDirective extends ResponsiveBaseDirective {\r\n readonly fxGridColumn = input<string>(undefined, { alias: 'fxGridColumn' });\r\n readonly xs = input<string>(undefined, { alias: 'fxGridColumn.xs' });\r\n readonly sm = input<string>(undefined, { alias: 'fxGridColumn.sm' });\r\n readonly md = input<string>(undefined, { alias: 'fxGridColumn.md' });\r\n readonly lg = input<string>(undefined, { alias: 'fxGridColumn.lg' });\r\n readonly xl = input<string>(undefined, { alias: 'fxGridColumn.xl' });\r\n readonly xxl = input<string>(undefined, { alias: 'fxGridColumn.xxl' });\r\n readonly ltSm = input<string>(undefined, { alias: 'fxGridColumn.lt-sm' });\r\n readonly ltMd = input<string>(undefined, { alias: 'fxGridColumn.lt-md' });\r\n readonly ltLg = input<string>(undefined, { alias: 'fxGridColumn.lt-lg' });\r\n readonly ltXl = input<string>(undefined, { alias: 'fxGridColumn.lt-xl' });\r\n readonly ltXxl = input<string>(undefined, { alias: 'fxGridColumn.lt-xxl' });\r\n readonly gtXs = input<string>(undefined, { alias: 'fxGridColumn.gt-xs' });\r\n readonly gtSm = input<string>(undefined, { alias: 'fxGridColumn.gt-sm' });\r\n readonly gtMd = input<string>(undefined, { alias: 'fxGridColumn.gt-md' });\r\n readonly gtLg = input<string>(undefined, { alias: 'fxGridColumn.gt-lg' });\r\n readonly gtXl = input<string>(undefined, { alias: 'fxGridColumn.gt-xl' });\r\n readonly smUp = input<string>(undefined, { alias: 'fxGridColumn.sm-up' });\r\n readonly mdUp = input<string>(undefined, { alias: 'fxGridColumn.md-up' });\r\n readonly lgUp = input<string>(undefined, { alias: 'fxGridColumn.lg-up' });\r\n readonly xlUp = input<string>(undefined, { alias: 'fxGridColumn.xl-up' });\r\n readonly xxlUp = input<string>(undefined, { alias: 'fxGridColumn.xxl-up' });\r\n readonly smDown = input<string>(undefined, { alias: 'fxGridColumn.sm-down' });\r\n readonly mdDown = input<string>(undefined, { alias: 'fxGridColumn.md-down' });\r\n readonly lgDown = input<string>(undefined, { alias: 'fxGridColumn.lg-down' });\r\n readonly xlDown = input<string>(undefined, { alias: 'fxGridColumn.xl-down' });\r\n\r\n private readonly _resolved = computed(() =>\r\n resolveAll<string>(\r\n { default: this.fxGridColumn(), xs: this.xs(), sm: this.sm(),\r\n md: this.md(), lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n )\r\n );\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const v = this._resolved();\r\n v ? this.safeSetStyle('grid-column', v)\r\n : this.r2.removeStyle(this.el.nativeElement, 'grid-column');\r\n });\r\n }\r\n}\r\n\r\n// ─── fxGridArea ───────────────────────────────────────────────────────────────\r\n\r\n@Directive({\r\n selector: `\r\n [fxGridArea],\r\n [fxGridArea.xs],[fxGridArea.sm],[fxGridArea.md],[fxGridArea.lg],[fxGridArea.xl],[fxGridArea.xxl],\r\n [fxGridArea.lt-sm],[fxGridArea.lt-md],[fxGridArea.lt-lg],[fxGridArea.lt-xl],[fxGridArea.lt-xxl],\r\n [fxGridArea.gt-xs],[fxGridArea.gt-sm],[fxGridArea.gt-md],[fxGridArea.gt-lg],[fxGridArea.gt-xl],\r\n [fxGridArea.sm-up],[fxGridArea.md-up],[fxGridArea.lg-up],[fxGridArea.xl-up],[fxGridArea.xxl-up],\r\n [fxGridArea.sm-down],[fxGridArea.md-down],[fxGridArea.lg-down],[fxGridArea.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxGridAreaDirective extends ResponsiveBaseDirective {\r\n readonly fxGridArea = input<string>(undefined, { alias: 'fxGridArea' });\r\n readonly xs = input<string>(undefined, { alias: 'fxGridArea.xs' });\r\n readonly sm = input<string>(undefined, { alias: 'fxGridArea.sm' });\r\n readonly md = input<string>(undefined, { alias: 'fxGridArea.md' });\r\n readonly lg = input<string>(undefined, { alias: 'fxGridArea.lg' });\r\n readonly xl = input<string>(undefined, { alias: 'fxGridArea.xl' });\r\n readonly xxl = input<string>(undefined, { alias: 'fxGridArea.xxl' });\r\n readonly ltSm = input<string>(undefined, { alias: 'fxGridArea.lt-sm' });\r\n readonly ltMd = input<string>(undefined, { alias: 'fxGridArea.lt-md' });\r\n readonly ltLg = input<string>(undefined, { alias: 'fxGridArea.lt-lg' });\r\n readonly ltXl = input<string>(undefined, { alias: 'fxGridArea.lt-xl' });\r\n readonly ltXxl = input<string>(undefined, { alias: 'fxGridArea.lt-xxl' });\r\n readonly gtXs = input<string>(undefined, { alias: 'fxGridArea.gt-xs' });\r\n readonly gtSm = input<string>(undefined, { alias: 'fxGridArea.gt-sm' });\r\n readonly gtMd = input<string>(undefined, { alias: 'fxGridArea.gt-md' });\r\n readonly gtLg = input<string>(undefined, { alias: 'fxGridArea.gt-lg' });\r\n readonly gtXl = input<string>(undefined, { alias: 'fxGridArea.gt-xl' });\r\n readonly smUp = input<string>(undefined, { alias: 'fxGridArea.sm-up' });\r\n readonly mdUp = input<string>(undefined, { alias: 'fxGridArea.md-up' });\r\n readonly lgUp = input<string>(undefined, { alias: 'fxGridArea.lg-up' });\r\n readonly xlUp = input<string>(undefined, { alias: 'fxGridArea.xl-up' });\r\n readonly xxlUp = input<string>(undefined, { alias: 'fxGridArea.xxl-up' });\r\n readonly smDown = input<string>(undefined, { alias: 'fxGridArea.sm-down' });\r\n readonly mdDown = input<string>(undefined, { alias: 'fxGridArea.md-down' });\r\n readonly lgDown = input<string>(undefined, { alias: 'fxGridArea.lg-down' });\r\n readonly xlDown = input<string>(undefined, { alias: 'fxGridArea.xl-down' });\r\n\r\n private readonly _resolved = computed(() =>\r\n resolveAll<string>(\r\n { default: this.fxGridArea(), xs: this.xs(), sm: this.sm(),\r\n md: this.md(), lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n )\r\n );\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const v = this._resolved();\r\n v ? this.safeSetStyle('grid-area', v)\r\n : this.r2.removeStyle(this.el.nativeElement, 'grid-area');\r\n });\r\n }\r\n}\r\n","/**\r\n * @file fx-layout-align.directive.ts (Angular 21 — signals)\r\n *\r\n * [fxLayoutAlign] — sets justify-content + align-items on a flex container.\r\n *\r\n * Format: \"mainAxis crossAxis\"\r\n * mainAxis : start | center | end | space-between | space-around | space-evenly\r\n * crossAxis : start | center | end | stretch | baseline (default: stretch)\r\n *\r\n * Angular 21 changes:\r\n * • All @Input setters replaced by input() signals\r\n * • computed() derives the resolved CSS pair\r\n * • effect() in constructor writes to DOM\r\n *\r\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\r\n */\r\n\r\nimport { Directive, computed, effect, input, isDevMode } from '@angular/core';\r\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\r\n\r\nconst MAIN_MAP: Record<string, string> = {\r\n 'start': 'flex-start', 'end': 'flex-end', 'center': 'center',\r\n 'space-between': 'space-between', 'space-around': 'space-around', 'space-evenly': 'space-evenly',\r\n};\r\nconst CROSS_MAP: Record<string, string> = {\r\n 'start': 'flex-start', 'end': 'flex-end', 'center': 'center',\r\n 'stretch': 'stretch', 'baseline': 'baseline',\r\n};\r\n\r\nfunction parseAlign(raw: string): [string, string] {\r\n const [main = 'start', cross = 'stretch'] = raw.trim().split(/\\s+/);\r\n if (isDevMode() && !MAIN_MAP[main]) console.warn(`[fxLayoutAlign] Unknown mainAxis: \"${main}\"`);\r\n if (isDevMode() && !CROSS_MAP[cross]) console.warn(`[fxLayoutAlign] Unknown crossAxis: \"${cross}\"`);\r\n return [MAIN_MAP[main] ?? 'flex-start', CROSS_MAP[cross] ?? 'stretch'];\r\n}\r\n\r\n@Directive({\r\n selector: `\r\n [fxLayoutAlign],\r\n [fxLayoutAlign.xs],[fxLayoutAlign.sm],[fxLayoutAlign.md],[fxLayoutAlign.lg],[fxLayoutAlign.xl],[fxLayoutAlign.xxl],\r\n [fxLayoutAlign.lt-sm],[fxLayoutAlign.lt-md],[fxLayoutAlign.lt-lg],[fxLayoutAlign.lt-xl],[fxLayoutAlign.lt-xxl],\r\n [fxLayoutAlign.gt-xs],[fxLayoutAlign.gt-sm],[fxLayoutAlign.gt-md],[fxLayoutAlign.gt-lg],[fxLayoutAlign.gt-xl],\r\n [fxLayoutAlign.sm-up],[fxLayoutAlign.md-up],[fxLayoutAlign.lg-up],[fxLayoutAlign.xl-up],[fxLayoutAlign.xxl-up],\r\n [fxLayoutAlign.sm-down],[fxLayoutAlign.md-down],[fxLayoutAlign.lg-down],[fxLayoutAlign.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxLayoutAlignDirective extends ResponsiveBaseDirective {\r\n readonly fxLayoutAlign = input<string>(undefined, { alias: 'fxLayoutAlign' });\r\n readonly xs = input<string>(undefined, { alias: 'fxLayoutAlign.xs' });\r\n readonly sm = input<string>(undefined, { alias: 'fxLayoutAlign.sm' });\r\n readonly md = input<string>(undefined, { alias: 'fxLayoutAlign.md' });\r\n readonly lg = input<string>(undefined, { alias: 'fxLayoutAlign.lg' });\r\n readonly xl = input<string>(undefined, { alias: 'fxLayoutAlign.xl' });\r\n readonly xxl = input<string>(undefined, { alias: 'fxLayoutAlign.xxl' });\r\n readonly ltSm = input<string>(undefined, { alias: 'fxLayoutAlign.lt-sm' });\r\n readonly ltMd = input<string>(undefined, { alias: 'fxLayoutAlign.lt-md' });\r\n readonly ltLg = input<string>(undefined, { alias: 'fxLayoutAlign.lt-lg' });\r\n readonly ltXl = input<string>(undefined, { alias: 'fxLayoutAlign.lt-xl' });\r\n readonly ltXxl = input<string>(undefined, { alias: 'fxLayoutAlign.lt-xxl' });\r\n readonly gtXs = input<string>(undefined, { alias: 'fxLayoutAlign.gt-xs' });\r\n readonly gtSm = input<string>(undefined, { alias: 'fxLayoutAlign.gt-sm' });\r\n readonly gtMd = input<string>(undefined, { alias: 'fxLayoutAlign.gt-md' });\r\n readonly gtLg = input<string>(undefined, { alias: 'fxLayoutAlign.gt-lg' });\r\n readonly gtXl = input<string>(undefined, { alias: 'fxLayoutAlign.gt-xl' });\r\n readonly smUp = input<string>(undefined, { alias: 'fxLayoutAlign.sm-up' });\r\n readonly mdUp = input<string>(undefined, { alias: 'fxLayoutAlign.md-up' });\r\n readonly lgUp = input<string>(undefined, { alias: 'fxLayoutAlign.lg-up' });\r\n readonly xlUp = input<string>(undefined, { alias: 'fxLayoutAlign.xl-up' });\r\n readonly xxlUp = input<string>(undefined, { alias: 'fxLayoutAlign.xxl-up' });\r\n readonly smDown = input<string>(undefined, { alias: 'fxLayoutAlign.sm-down' });\r\n readonly mdDown = input<string>(undefined, { alias: 'fxLayoutAlign.md-down' });\r\n readonly lgDown = input<string>(undefined, { alias: 'fxLayoutAlign.lg-down' });\r\n readonly xlDown = input<string>(undefined, { alias: 'fxLayoutAlign.xl-down' });\r\n\r\n private readonly _parsed = computed(() =>\r\n parseAlign(resolveAll(\r\n { default: this.fxLayoutAlign(), xs: this.xs(), sm: this.sm(), md: this.md(),\r\n lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ) ?? 'start stretch')\r\n );\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const [jc, ai] = this._parsed();\r\n // fxLayoutAlign implies a flex container — set display:flex if not already\r\n // set by fxLayout (which uses host binding). This makes fxLayoutAlign work\r\n // standalone (e.g. <div fxFlex=\"*\" fxLayoutAlign=\"end\">).\r\n this.r2.setStyle(this.el.nativeElement, 'display', 'flex');\r\n this.safeSetStyle('justify-content', jc);\r\n this.safeSetStyle('align-items', ai);\r\n });\r\n }\r\n}\r\n","/**\r\n * @file fx-layout-gap.directive.ts (Angular 21 — signals)\r\n *\r\n * [fxLayoutGap] — sets gap on a flex or grid container.\r\n * Unitless numbers are normalized to px (e.g. \"16\" → \"16px\").\r\n *\r\n * Angular 21 changes:\r\n * • All @Input setters replaced by input() signals\r\n * • computed() derives the normalized gap value\r\n * • effect() in constructor writes to DOM\r\n *\r\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\r\n */\r\n\r\nimport { Directive, computed, effect, input } from '@angular/core';\r\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\r\n\r\nfunction normalizeGap(raw: string): string {\r\n return raw.trim().split(/\\s+/)\r\n .map(v => /^\\d+(\\.\\d+)?$/.test(v) ? `${v}px` : v)\r\n .join(' ');\r\n}\r\n\r\n@Directive({\r\n selector: `\r\n [fxLayoutGap],\r\n [fxLayoutGap.xs],[fxLayoutGap.sm],[fxLayoutGap.md],[fxLayoutGap.lg],[fxLayoutGap.xl],[fxLayoutGap.xxl],\r\n [fxLayoutGap.lt-sm],[fxLayoutGap.lt-md],[fxLayoutGap.lt-lg],[fxLayoutGap.lt-xl],[fxLayoutGap.lt-xxl],\r\n [fxLayoutGap.gt-xs],[fxLayoutGap.gt-sm],[fxLayoutGap.gt-md],[fxLayoutGap.gt-lg],[fxLayoutGap.gt-xl],\r\n [fxLayoutGap.sm-up],[fxLayoutGap.md-up],[fxLayoutGap.lg-up],[fxLayoutGap.xl-up],[fxLayoutGap.xxl-up],\r\n [fxLayoutGap.sm-down],[fxLayoutGap.md-down],[fxLayoutGap.lg-down],[fxLayoutGap.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxLayoutGapDirective extends ResponsiveBaseDirective {\r\n readonly fxLayoutGap = input<string>(undefined, { alias: 'fxLayoutGap' });\r\n readonly xs = input<string>(undefined, { alias: 'fxLayoutGap.xs' });\r\n readonly sm = input<string>(undefined, { alias: 'fxLayoutGap.sm' });\r\n readonly md = input<string>(undefined, { alias: 'fxLayoutGap.md' });\r\n readonly lg = input<string>(undefined, { alias: 'fxLayoutGap.lg' });\r\n readonly xl = input<string>(undefined, { alias: 'fxLayoutGap.xl' });\r\n readonly xxl = input<string>(undefined, { alias: 'fxLayoutGap.xxl' });\r\n readonly ltSm = input<string>(undefined, { alias: 'fxLayoutGap.lt-sm' });\r\n readonly ltMd = input<string>(undefined, { alias: 'fxLayoutGap.lt-md' });\r\n readonly ltLg = input<string>(undefined, { alias: 'fxLayoutGap.lt-lg' });\r\n readonly ltXl = input<string>(undefined, { alias: 'fxLayoutGap.lt-xl' });\r\n readonly ltXxl = input<string>(undefined, { alias: 'fxLayoutGap.lt-xxl' });\r\n readonly gtXs = input<string>(undefined, { alias: 'fxLayoutGap.gt-xs' });\r\n readonly gtSm = input<string>(undefined, { alias: 'fxLayoutGap.gt-sm' });\r\n readonly gtMd = input<string>(undefined, { alias: 'fxLayoutGap.gt-md' });\r\n readonly gtLg = input<string>(undefined, { alias: 'fxLayoutGap.gt-lg' });\r\n readonly gtXl = input<string>(undefined, { alias: 'fxLayoutGap.gt-xl' });\r\n readonly smUp = input<string>(undefined, { alias: 'fxLayoutGap.sm-up' });\r\n readonly mdUp = input<string>(undefined, { alias: 'fxLayoutGap.md-up' });\r\n readonly lgUp = input<string>(undefined, { alias: 'fxLayoutGap.lg-up' });\r\n readonly xlUp = input<string>(undefined, { alias: 'fxLayoutGap.xl-up' });\r\n readonly xxlUp = input<string>(undefined, { alias: 'fxLayoutGap.xxl-up' });\r\n readonly smDown = input<string>(undefined, { alias: 'fxLayoutGap.sm-down' });\r\n readonly mdDown = input<string>(undefined, { alias: 'fxLayoutGap.md-down' });\r\n readonly lgDown = input<string>(undefined, { alias: 'fxLayoutGap.lg-down' });\r\n readonly xlDown = input<string>(undefined, { alias: 'fxLayoutGap.xl-down' });\r\n\r\n private readonly _gap = computed(() =>\r\n normalizeGap(resolveAll(\r\n { default: this.fxLayoutGap(), xs: this.xs(), sm: this.sm(), md: this.md(),\r\n lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ) ?? '0')\r\n );\r\n\r\n constructor() {\r\n super();\r\n effect(() => { this.safeSetStyle('gap', this._gap()); });\r\n }\r\n}\r\n","/**\n * @file fx-layout.directive.ts (Angular 21 - signals)\n *\n * [fxLayout] -- sets flex-direction (and optionally flex-wrap) on the host.\n * [fxLayoutWrap] -- dedicated alias for flex-wrap (original ngx-layout compat).\n *\n * Angular 21 changes:\n * - All @Input setters replaced by input() signals\n * - computed() builds reactive BP maps and derives CSS values\n * - effect() in constructor writes to DOM -- no lifecycle hooks\n *\n * Breakpoint suffixes:\n * Canonical : .xs .sm .md .lg .xl .xxl\n * lt-* : .lt-sm .lt-md .lt-lg .lt-xl .lt-xxl\n * gt-* : .gt-xs .gt-sm .gt-md .gt-lg .gt-xl\n * *-up : .sm-up .md-up .lg-up .xl-up .xxl-up\n * *-down : .sm-down .md-down .lg-down .xl-down\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\nconst VALID_DIRECTIONS = new Set(['row', 'column', 'row-reverse', 'column-reverse']);\nconst VALID_WRAPS = new Set(['wrap', 'wrap-reverse', 'nowrap']);\n\nfunction parseLayout(raw: string): [string, string] {\n const parts = raw.trim().split(/\\s+/);\n const dir = VALID_DIRECTIONS.has(parts[0]) ? parts[0] : 'row';\n const wrap = VALID_WRAPS.has(parts[1]) ? parts[1] : 'nowrap';\n return [dir, wrap];\n}\n\n@Directive({\n selector: `\n [fxLayout],\n [fxLayout.xs],[fxLayout.sm],[fxLayout.md],[fxLayout.lg],[fxLayout.xl],[fxLayout.xxl],\n [fxLayout.lt-sm],[fxLayout.lt-md],[fxLayout.lt-lg],[fxLayout.lt-xl],[fxLayout.lt-xxl],\n [fxLayout.gt-xs],[fxLayout.gt-sm],[fxLayout.gt-md],[fxLayout.gt-lg],[fxLayout.gt-xl],\n [fxLayout.sm-up],[fxLayout.md-up],[fxLayout.lg-up],[fxLayout.xl-up],[fxLayout.xxl-up],\n [fxLayout.sm-down],[fxLayout.md-down],[fxLayout.lg-down],[fxLayout.xl-down]\n `,\n standalone: true,\n host: { '[style.display]': '\"flex\"' },\n})\nexport class FxLayoutDirective extends ResponsiveBaseDirective {\n readonly fxLayout = input<string>('row', { alias: 'fxLayout' });\n readonly xs = input<string>(undefined, { alias: 'fxLayout.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayout.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayout.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayout.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayout.xl' });\n readonly xxl = input<string>(undefined, { alias: 'fxLayout.xxl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayout.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayout.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayout.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayout.lt-xl' });\n readonly ltXxl = input<string>(undefined, { alias: 'fxLayout.lt-xxl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayout.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayout.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayout.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayout.gt-lg' });\n readonly gtXl = input<string>(undefined, { alias: 'fxLayout.gt-xl' });\n readonly smUp = input<string>(undefined, { alias: 'fxLayout.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxLayout.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxLayout.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxLayout.xl-up' });\n readonly xxlUp = input<string>(undefined, { alias: 'fxLayout.xxl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxLayout.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxLayout.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxLayout.lg-down' });\n readonly xlDown = input<string>(undefined, { alias: 'fxLayout.xl-down' });\n\n private readonly _parsed = computed(() =>\n parseLayout(resolveAll(\n { default: this.fxLayout(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? 'row')\n );\n constructor() {\n super();\n effect(() => {\n const [dir, wrap] = this._parsed();\n this.safeSetStyle('flex-direction', dir);\n this.safeSetStyle('flex-wrap', wrap);\n });\n }\n}\n\ntype FlexWrap = 'wrap' | 'wrap-reverse' | 'nowrap';\n\n@Directive({\n selector: `\n [fxLayoutWrap],\n [fxLayoutWrap.xs],[fxLayoutWrap.sm],[fxLayoutWrap.md],[fxLayoutWrap.lg],[fxLayoutWrap.xl],[fxLayoutWrap.xxl],\n [fxLayoutWrap.lt-sm],[fxLayoutWrap.lt-md],[fxLayoutWrap.lt-lg],[fxLayoutWrap.lt-xl],[fxLayoutWrap.lt-xxl],\n [fxLayoutWrap.gt-xs],[fxLayoutWrap.gt-sm],[fxLayoutWrap.gt-md],[fxLayoutWrap.gt-lg],[fxLayoutWrap.gt-xl],\n [fxLayoutWrap.sm-up],[fxLayoutWrap.md-up],[fxLayoutWrap.lg-up],[fxLayoutWrap.xl-up],[fxLayoutWrap.xxl-up],\n [fxLayoutWrap.sm-down],[fxLayoutWrap.md-down],[fxLayoutWrap.lg-down],[fxLayoutWrap.xl-down]\n `,\n standalone: true,\n})\nexport class FxLayoutWrapDirective extends ResponsiveBaseDirective {\n readonly fxLayoutWrap = input<FlexWrap>('wrap', { alias: 'fxLayoutWrap' });\n readonly xs = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.xs' });\n readonly sm = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.sm' });\n readonly md = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.md' });\n readonly lg = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.lg' });\n readonly xl = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.xl' });\n readonly xxl = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.xxl' });\n readonly ltSm = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.lt-sm' });\n readonly ltMd = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.lt-md' });\n readonly ltLg = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.lt-lg' });\n readonly ltXl = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.lt-xl' });\n readonly ltXxl = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.lt-xxl' });\n readonly gtXs = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.gt-xs' });\n readonly gtSm = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.gt-sm' });\n readonly gtMd = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.gt-md' });\n readonly gtLg = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.gt-lg' });\n readonly gtXl = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.gt-xl' });\n readonly smUp = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.sm-up' });\n readonly mdUp = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.md-up' });\n readonly lgUp = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.lg-up' });\n readonly xlUp = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.xl-up' });\n readonly xxlUp = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.xxl-up' });\n readonly smDown = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.sm-down' });\n readonly mdDown = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.md-down' });\n readonly lgDown = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.lg-down' });\n readonly xlDown = input<FlexWrap>(undefined, { alias: 'fxLayoutWrap.xl-down' });\n\n private readonly _wrap = computed(() => {\n const w = resolveAll(\n { default: this.fxLayoutWrap(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? 'wrap';\n return VALID_WRAPS.has(w) ? w : 'wrap';\n });\n constructor() {\n super();\n effect(() => { this.safeSetStyle('flex-wrap', this._wrap()); });\n }\n}\n","/**\r\n * @file fx-show-hide.directives.ts (Angular 21 — signals)\r\n *\r\n * [fxShow] / [fxHide] — responsive visibility via display:none.\r\n * Elements stay in the DOM (unlike *ifBp which removes them).\r\n *\r\n * IMPORTANT: fxShow and fxHide are implemented as a SINGLE directive class\r\n * (FxShowHideDirective) so that mixed patterns like\r\n * <div fxHide fxShow.xs> ← hidden everywhere, shown on xs\r\n * <div fxShow fxHide.lt-lg> ← shown everywhere, hidden below lg\r\n * work correctly.\r\n *\r\n * Resolution algorithm (no mobile-first cascade — semantics for show/hide\r\n * are point-in-time, not cumulative):\r\n * 1. Non-canonical (lt-*, gt-*, *-up, *-down) isActive checks — most specific first\r\n * 2. Exact canonical match for current bp\r\n * 3. Default values (fxShow / fxHide without suffix)\r\n * 4. Fallback: visible (true)\r\n *\r\n * When both show and hide match at the same priority level, show wins.\r\n *\r\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\r\n */\r\n\r\nimport { Directive, effect, input, computed } from '@angular/core';\r\nimport { ResponsiveBaseDirective, NON_CANONICAL_PRIORITY } from './responsive-base.directive';\r\n\r\nfunction toBool(v: string | boolean | '' | undefined | null): boolean | undefined {\r\n if (v === undefined || v === null) return undefined;\r\n if (typeof v === 'boolean') return v;\r\n if (v === '') return true;\r\n if (v === 'false' || v === '0') return false;\r\n return true;\r\n}\r\n\r\n// ─── Unified fxShow + fxHide ─────────────────────────────────────────────────\r\n\r\n@Directive({\r\n selector: `\r\n [fxShow],[fxHide],\r\n [fxShow.xs],[fxShow.sm],[fxShow.md],[fxShow.lg],[fxShow.xl],[fxShow.xxl],\r\n [fxShow.lt-sm],[fxShow.lt-md],[fxShow.lt-lg],[fxShow.lt-xl],[fxShow.lt-xxl],\r\n [fxShow.gt-xs],[fxShow.gt-sm],[fxShow.gt-md],[fxShow.gt-lg],[fxShow.gt-xl],\r\n [fxShow.sm-up],[fxShow.md-up],[fxShow.lg-up],[fxShow.xl-up],[fxShow.xxl-up],\r\n [fxShow.sm-down],[fxShow.md-down],[fxShow.lg-down],[fxShow.xl-down],\r\n [fxHide.xs],[fxHide.sm],[fxHide.md],[fxHide.lg],[fxHide.xl],[fxHide.xxl],\r\n [fxHide.lt-sm],[fxHide.lt-md],[fxHide.lt-lg],[fxHide.lt-xl],[fxHide.lt-xxl],\r\n [fxHide.gt-xs],[fxHide.gt-sm],[fxHide.gt-md],[fxHide.gt-lg],[fxHide.gt-xl],\r\n [fxHide.sm-up],[fxHide.md-up],[fxHide.lg-up],[fxHide.xl-up],[fxHide.xxl-up],\r\n [fxHide.sm-down],[fxHide.md-down],[fxHide.lg-down],[fxHide.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxShowHideDirective extends ResponsiveBaseDirective {\r\n // ── fxShow inputs ─────────────────────────────────────────────────────────\r\n readonly fxShow = input<boolean, string | boolean>(undefined, { alias: 'fxShow', transform: toBool });\r\n readonly showXs = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xs', transform: toBool });\r\n readonly showSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.sm', transform: toBool });\r\n readonly showMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.md', transform: toBool });\r\n readonly showLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lg', transform: toBool });\r\n readonly showXl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xl', transform: toBool });\r\n readonly showXxl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xxl', transform: toBool });\r\n readonly showLtSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-sm', transform: toBool });\r\n readonly showLtMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-md', transform: toBool });\r\n readonly showLtLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-lg', transform: toBool });\r\n readonly showLtXl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-xl', transform: toBool });\r\n readonly showLtXxl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-xxl', transform: toBool });\r\n readonly showGtXs = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-xs', transform: toBool });\r\n readonly showGtSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-sm', transform: toBool });\r\n readonly showGtMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-md', transform: toBool });\r\n readonly showGtLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-lg', transform: toBool });\r\n readonly showGtXl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-xl', transform: toBool });\r\n readonly showSmUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.sm-up', transform: toBool });\r\n readonly showMdUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.md-up', transform: toBool });\r\n readonly showLgUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lg-up', transform: toBool });\r\n readonly showXlUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xl-up', transform: toBool });\r\n readonly showXxlUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xxl-up', transform: toBool });\r\n readonly showSmDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.sm-down', transform: toBool });\r\n readonly showMdDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.md-down', transform: toBool });\r\n readonly showLgDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lg-down', transform: toBool });\r\n readonly showXlDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xl-down', transform: toBool });\r\n\r\n // ── fxHide inputs ─────────────────────────────────────────────────────────\r\n readonly fxHide = input<boolean, string | boolean>(undefined, { alias: 'fxHide', transform: toBool });\r\n readonly hideXs = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xs', transform: toBool });\r\n readonly hideSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.sm', transform: toBool });\r\n readonly hideMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.md', transform: toBool });\r\n readonly hideLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lg', transform: toBool });\r\n readonly hideXl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xl', transform: toBool });\r\n readonly hideXxl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xxl', transform: toBool });\r\n readonly hideLtSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-sm', transform: toBool });\r\n readonly hideLtMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-md', transform: toBool });\r\n readonly hideLtLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-lg', transform: toBool });\r\n readonly hideLtXl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-xl', transform: toBool });\r\n readonly hideLtXxl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-xxl', transform: toBool });\r\n readonly hideGtXs = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-xs', transform: toBool });\r\n readonly hideGtSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-sm', transform: toBool });\r\n readonly hideGtMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-md', transform: toBool });\r\n readonly hideGtLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-lg', transform: toBool });\r\n readonly hideGtXl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-xl', transform: toBool });\r\n readonly hideSmUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.sm-up', transform: toBool });\r\n readonly hideMdUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.md-up', transform: toBool });\r\n readonly hideLgUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lg-up', transform: toBool });\r\n readonly hideXlUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xl-up', transform: toBool });\r\n readonly hideXxlUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xxl-up', transform: toBool });\r\n readonly hideSmDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.sm-down', transform: toBool });\r\n readonly hideMdDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.md-down', transform: toBool });\r\n readonly hideLgDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lg-down', transform: toBool });\r\n readonly hideXlDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xl-down', transform: toBool });\r\n\r\n private readonly _visible = computed((): boolean => {\r\n const bp = this.media.currentBp();\r\n const isActive = (a: string) => this.media.isActive(a);\r\n\r\n // Non-canonical maps (alias → show value / hide value)\r\n const showNc: Record<string, boolean | undefined> = {\r\n 'lt-sm': this.showLtSm(), 'lt-md': this.showLtMd(), 'lt-lg': this.showLtLg(),\r\n 'lt-xl': this.showLtXl(), 'lt-xxl': this.showLtXxl(),\r\n 'gt-xs': this.showGtXs(), 'gt-sm': this.showGtSm(), 'gt-md': this.showGtMd(),\r\n 'gt-lg': this.showGtLg(), 'gt-xl': this.showGtXl(),\r\n 'sm-up': this.showSmUp(), 'md-up': this.showMdUp(), 'lg-up': this.showLgUp(),\r\n 'xl-up': this.showXlUp(), 'xxl-up': this.showXxlUp(),\r\n 'sm-down': this.showSmDown(), 'md-down': this.showMdDown(),\r\n 'lg-down': this.showLgDown(), 'xl-down': this.showXlDown(),\r\n };\r\n const hideNc: Record<string, boolean | undefined> = {\r\n 'lt-sm': this.hideLtSm(), 'lt-md': this.hideLtMd(), 'lt-lg': this.hideLtLg(),\r\n 'lt-xl': this.hideLtXl(), 'lt-xxl': this.hideLtXxl(),\r\n 'gt-xs': this.hideGtXs(), 'gt-sm': this.hideGtSm(), 'gt-md': this.hideGtMd(),\r\n 'gt-lg': this.hideGtLg(), 'gt-xl': this.hideGtXl(),\r\n 'sm-up': this.hideSmUp(), 'md-up': this.hideMdUp(), 'lg-up': this.hideLgUp(),\r\n 'xl-up': this.hideXlUp(), 'xxl-up': this.hideXxlUp(),\r\n 'sm-down': this.hideSmDown(), 'md-down': this.hideMdDown(),\r\n 'lg-down': this.hideLgDown(), 'xl-down': this.hideXlDown(),\r\n };\r\n\r\n // 1. Non-canonical (lt-*, gt-*, *-up, *-down) — most specific first\r\n for (const alias of NON_CANONICAL_PRIORITY) {\r\n const sv = showNc[alias];\r\n const hv = hideNc[alias];\r\n if ((sv !== undefined || hv !== undefined) && isActive(alias)) {\r\n if (sv !== undefined) return sv; // show beats hide at same priority\r\n return !hv!;\r\n }\r\n }\r\n\r\n // Canonical maps (bp → value) — exact only, NO cascade\r\n const showV: Record<string, boolean | undefined> = {\r\n xs: this.showXs(), sm: this.showSm(), md: this.showMd(),\r\n lg: this.showLg(), xl: this.showXl(), xxl: this.showXxl(),\r\n };\r\n const hideV: Record<string, boolean | undefined> = {\r\n xs: this.hideXs(), sm: this.hideSm(), md: this.hideMd(),\r\n lg: this.hideLg(), xl: this.hideXl(), xxl: this.hideXxl(),\r\n };\r\n\r\n // 2. Exact canonical match for current bp\r\n const showExact = showV[bp];\r\n const hideExact = hideV[bp];\r\n if (showExact !== undefined) return showExact;\r\n if (hideExact !== undefined) return !hideExact;\r\n\r\n // 3. Default values (fxShow / fxHide without suffix)\r\n const showDef = this.fxShow();\r\n const hideDef = this.fxHide();\r\n if (showDef !== undefined) return showDef;\r\n if (hideDef !== undefined) return !hideDef;\r\n\r\n // 4. Neither directive active → visible\r\n return true;\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n this._visible()\r\n ? this.r2.removeStyle(this.el.nativeElement, 'display')\r\n : this.r2.setStyle(this.el.nativeElement, 'display', 'none');\r\n });\r\n }\r\n}\r\n\r\n\r\n","/**\r\n * @file fx-style-class.directives.ts (Angular 21 — signals)\r\n *\r\n * [fxStyle] — responsive inline style binding (Record<string,string>)\r\n * [fxClass] — responsive CSS class binding (string | string[] | Record<string,boolean>)\r\n *\r\n * Angular 21 changes:\r\n * • All @Input setters replaced by input() signals\r\n * • computed() derives resolved StyleMap / ClassInput value\r\n * • effect() in constructor handles DOM writes with diff\r\n *\r\n * Style/class leak prevention:\r\n * _appliedProps / _appliedClasses are regular Set<string> fields\r\n * (NOT signals) — they track what was actively applied so the\r\n * effect can remove stale properties/classes on the next run.\r\n *\r\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\r\n */\r\n\r\nimport { Directive, computed, effect, input } from '@angular/core';\r\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\r\n\r\n// ─── fxStyle ─────────────────────────────────────────────────────────────────\r\n\r\ntype StyleMap = Record<string, string>;\r\n\r\n@Directive({\r\n selector: `\r\n [fxStyle],\r\n [fxStyle.xs],[fxStyle.sm],[fxStyle.md],[fxStyle.lg],[fxStyle.xl],[fxStyle.xxl],\r\n [fxStyle.lt-sm],[fxStyle.lt-md],[fxStyle.lt-lg],[fxStyle.lt-xl],[fxStyle.lt-xxl],\r\n [fxStyle.gt-xs],[fxStyle.gt-sm],[fxStyle.gt-md],[fxStyle.gt-lg],[fxStyle.gt-xl],\r\n [fxStyle.sm-up],[fxStyle.md-up],[fxStyle.lg-up],[fxStyle.xl-up],[fxStyle.xxl-up],\r\n [fxStyle.sm-down],[fxStyle.md-down],[fxStyle.lg-down],[fxStyle.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxStyleDirective extends ResponsiveBaseDirective {\r\n readonly fxStyle = input<StyleMap>(undefined, { alias: 'fxStyle' });\r\n readonly xs = input<StyleMap>(undefined, { alias: 'fxStyle.xs' });\r\n readonly sm = input<StyleMap>(undefined, { alias: 'fxStyle.sm' });\r\n readonly md = input<StyleMap>(undefined, { alias: 'fxStyle.md' });\r\n readonly lg = input<StyleMap>(undefined, { alias: 'fxStyle.lg' });\r\n readonly xl = input<StyleMap>(undefined, { alias: 'fxStyle.xl' });\r\n readonly xxl = input<StyleMap>(undefined, { alias: 'fxStyle.xxl' });\r\n readonly ltSm = input<StyleMap>(undefined, { alias: 'fxStyle.lt-sm' });\r\n readonly ltMd = input<StyleMap>(undefined, { alias: 'fxStyle.lt-md' });\r\n readonly ltLg = input<StyleMap>(undefined, { alias: 'fxStyle.lt-lg' });\r\n readonly ltXl = input<StyleMap>(undefined, { alias: 'fxStyle.lt-xl' });\r\n readonly ltXxl = input<StyleMap>(undefined, { alias: 'fxStyle.lt-xxl' });\r\n readonly gtXs = input<StyleMap>(undefined, { alias: 'fxStyle.gt-xs' });\r\n readonly gtSm = input<StyleMap>(undefined, { alias: 'fxStyle.gt-sm' });\r\n readonly gtMd = input<StyleMap>(undefined, { alias: 'fxStyle.gt-md' });\r\n readonly gtLg = input<StyleMap>(undefined, { alias: 'fxStyle.gt-lg' });\r\n readonly gtXl = input<StyleMap>(undefined, { alias: 'fxStyle.gt-xl' });\r\n readonly smUp = input<StyleMap>(undefined, { alias: 'fxStyle.sm-up' });\r\n readonly mdUp = input<StyleMap>(undefined, { alias: 'fxStyle.md-up' });\r\n readonly lgUp = input<StyleMap>(undefined, { alias: 'fxStyle.lg-up' });\r\n readonly xlUp = input<StyleMap>(undefined, { alias: 'fxStyle.xl-up' });\r\n readonly xxlUp = input<StyleMap>(undefined, { alias: 'fxStyle.xxl-up' });\r\n readonly smDown = input<StyleMap>(undefined, { alias: 'fxStyle.sm-down' });\r\n readonly mdDown = input<StyleMap>(undefined, { alias: 'fxStyle.md-down' });\r\n readonly lgDown = input<StyleMap>(undefined, { alias: 'fxStyle.lg-down' });\r\n readonly xlDown = input<StyleMap>(undefined, { alias: 'fxStyle.xl-down' });\r\n\r\n private readonly _resolved = computed(() =>\r\n (resolveAll<StyleMap>(\r\n { default: this.fxStyle(), xs: this.xs(), sm: this.sm(),\r\n md: this.md(), lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ) ?? {})\r\n );\r\n\r\n /** Tracks which CSS properties were last applied — plain field, not a signal. */\r\n private _appliedProps = new Set<string>();\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (!this.isBrowser) return;\r\n const next = this._resolved();\r\n const nextKeys = new Set(Object.keys(next));\r\n for (const prop of this._appliedProps) {\r\n if (!nextKeys.has(prop)) this.r2.removeStyle(this.el.nativeElement, prop);\r\n }\r\n for (const [prop, value] of Object.entries(next)) {\r\n this.r2.setStyle(this.el.nativeElement, prop, value);\r\n }\r\n this._appliedProps = nextKeys;\r\n });\r\n }\r\n}\r\n\r\n// ─── fxClass ─────────────────────────────────────────────────────────────────\r\n\r\ntype ClassInput = string | string[] | Record<string, boolean>;\r\n\r\nfunction toClassSet(v: ClassInput | undefined): Set<string> {\r\n if (!v) return new Set();\r\n if (typeof v === 'string') return new Set(v.split(/\\s+/).filter(Boolean));\r\n if (Array.isArray(v)) return new Set(v.filter(Boolean));\r\n return new Set(Object.entries(v).filter(([, on]) => on).map(([cls]) => cls));\r\n}\r\n\r\n@Directive({\r\n selector: `\r\n [fxClass],\r\n [fxClass.xs],[fxClass.sm],[fxClass.md],[fxClass.lg],[fxClass.xl],[fxClass.xxl],\r\n [fxClass.lt-sm],[fxClass.lt-md],[fxClass.lt-lg],[fxClass.lt-xl],[fxClass.lt-xxl],\r\n [fxClass.gt-xs],[fxClass.gt-sm],[fxClass.gt-md],[fxClass.gt-lg],[fxClass.gt-xl],\r\n [fxClass.sm-up],[fxClass.md-up],[fxClass.lg-up],[fxClass.xl-up],[fxClass.xxl-up],\r\n [fxClass.sm-down],[fxClass.md-down],[fxClass.lg-down],[fxClass.xl-down]\r\n `,\r\n standalone: true,\r\n})\r\nexport class FxClassDirective extends ResponsiveBaseDirective {\r\n readonly fxClass = input<ClassInput>(undefined, { alias: 'fxClass' });\r\n readonly xs = input<ClassInput>(undefined, { alias: 'fxClass.xs' });\r\n readonly sm = input<ClassInput>(undefined, { alias: 'fxClass.sm' });\r\n readonly md = input<ClassInput>(undefined, { alias: 'fxClass.md' });\r\n readonly lg = input<ClassInput>(undefined, { alias: 'fxClass.lg' });\r\n readonly xl = input<ClassInput>(undefined, { alias: 'fxClass.xl' });\r\n readonly xxl = input<ClassInput>(undefined, { alias: 'fxClass.xxl' });\r\n readonly ltSm = input<ClassInput>(undefined, { alias: 'fxClass.lt-sm' });\r\n readonly ltMd = input<ClassInput>(undefined, { alias: 'fxClass.lt-md' });\r\n readonly ltLg = input<ClassInput>(undefined, { alias: 'fxClass.lt-lg' });\r\n readonly ltXl = input<ClassInput>(undefined, { alias: 'fxClass.lt-xl' });\r\n readonly ltXxl = input<ClassInput>(undefined, { alias: 'fxClass.lt-xxl' });\r\n readonly gtXs = input<ClassInput>(undefined, { alias: 'fxClass.gt-xs' });\r\n readonly gtSm = input<ClassInput>(undefined, { alias: 'fxClass.gt-sm' });\r\n readonly gtMd = input<ClassInput>(undefined, { alias: 'fxClass.gt-md' });\r\n readonly gtLg = input<ClassInput>(undefined, { alias: 'fxClass.gt-lg' });\r\n readonly gtXl = input<ClassInput>(undefined, { alias: 'fxClass.gt-xl' });\r\n readonly smUp = input<ClassInput>(undefined, { alias: 'fxClass.sm-up' });\r\n readonly mdUp = input<ClassInput>(undefined, { alias: 'fxClass.md-up' });\r\n readonly lgUp = input<ClassInput>(undefined, { alias: 'fxClass.lg-up' });\r\n readonly xlUp = input<ClassInput>(undefined, { alias: 'fxClass.xl-up' });\r\n readonly xxlUp = input<ClassInput>(undefined, { alias: 'fxClass.xxl-up' });\r\n readonly smDown = input<ClassInput>(undefined, { alias: 'fxClass.sm-down' });\r\n readonly mdDown = input<ClassInput>(undefined, { alias: 'fxClass.md-down' });\r\n readonly lgDown = input<ClassInput>(undefined, { alias: 'fxClass.lg-down' });\r\n readonly xlDown = input<ClassInput>(undefined, { alias: 'fxClass.xl-down' });\r\n\r\n private readonly _resolved = computed(() =>\r\n toClassSet(resolveAll<ClassInput>(\r\n { default: this.fxClass(), xs: this.xs(), sm: this.sm(),\r\n md: this.md(), lg: this.lg(), xl: this.xl(), xxl: this.xxl() },\r\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\r\n 'lt-xl': this.ltXl(), 'lt-xxl': this.ltXxl(),\r\n 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\r\n 'gt-lg': this.gtLg(), 'gt-xl': this.gtXl(),\r\n 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\r\n 'xl-up': this.xlUp(), 'xxl-up': this.xxlUp(),\r\n 'sm-down': this.smDown(), 'md-down': this.mdDown(),\r\n 'lg-down': this.lgDown(), 'xl-down': this.xlDown() },\r\n this.media.currentBp(), a => this.media.isActive(a)\r\n ))\r\n );\r\n\r\n /** Tracks which CSS classes were last applied — plain field, not a signal. */\r\n private _appliedClasses = new Set<string>();\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (!this.isBrowser) return;\r\n const next = this._resolved();\r\n for (const cls of this._appliedClasses) {\r\n if (!next.has(cls)) this.r2.removeClass(this.el.nativeElement, cls);\r\n }\r\n for (const cls of next) {\r\n this.r2.addClass(this.el.nativeElement, cls);\r\n }\r\n this._appliedClasses = next;\r\n });\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './ui/ui.module';\r\nexport * from './ui/definitions';\r\nexport * from './ui/paginatorIntl';\r\nexport * from './ui/services/index';\r\nexport * from './ui/dialogs/index';\r\nexport * from './ui/components/index';\r\nexport * from './ui/directives/flex/index';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i3","i4","i5","i6","i1","i7","toBool","normalizeGap"],"mappings":"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AA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAA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"}