@arsedizioni/ars-utils 21.2.110 → 21.2.111

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/directives/flex/breakpoints.ts","../../../projects/ars-utils/ui/ui/directives/flex/media-observer.service.ts","../../../projects/ars-utils/ui/ui/directives/flex/responsive-base.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-layout.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-flex.directive.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-flex-extras.directives.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/ui/directives/flex/fx-grid.directives.ts","../../../projects/ars-utils/ui/ui/directives/flex/if-bp.directive.ts","../../../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/public_api.ts","../../../projects/ars-utils/ui/arsedizioni-ars-utils-ui.ts"],"sourcesContent":["/**\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 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","/**\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 * Bootstrap 5 mobile-first cascade: walks from currentBp down to xs and\n * returns the first defined value. O(k ≤ 6).\n */\nexport function resolve<T>(\n values: BpValues<T>,\n currentBp: BreakpointAlias,\n): T | undefined {\n const idx = ALIAS_INDEX.get(currentBp) ?? 0;\n for (let i = idx; i >= 0; i--) {\n const v = values[CANONICAL_ALIASES[i] as keyof BpValues<T>];\n if (v !== undefined) return v;\n }\n return (values as Record<string, T | undefined>)['default'];\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","/**\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","/**\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 // When no value is specified, resolve default based on sibling context:\n // • sibling with fxFlex=\"*\" present → this element is fixed: 0 0 auto\n // • no sibling with fxFlex=\"*\" → equal distribution: 1 1 auto\n const css = (raw === undefined || 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-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 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","/**\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 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","/**\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 * Angular 21 changes:\r\n * • All @Input setters replaced by input() signals with transform\r\n * • computed() derives the resolved boolean visibility value\r\n * • effect() in constructor writes to DOM\r\n *\r\n * Uses removeStyle() when restoring visibility to avoid overriding\r\n * an external display value (e.g. display:grid set by CSS).\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 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// ─── fxShow ──────────────────────────────────────────────────────────────────\r\n\r\n@Directive({\r\n selector: `\r\n [fxShow],\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 `,\r\n standalone: true,\r\n})\r\nexport class FxShowDirective extends ResponsiveBaseDirective {\r\n readonly fxShow = input<boolean, string | boolean>(undefined, { alias: 'fxShow', transform: toBool });\r\n readonly xs = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xs', transform: toBool });\r\n readonly sm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.sm', transform: toBool });\r\n readonly md = input<boolean, string | boolean>(undefined, { alias: 'fxShow.md', transform: toBool });\r\n readonly lg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lg', transform: toBool });\r\n readonly xl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xl', transform: toBool });\r\n readonly xxl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xxl', transform: toBool });\r\n readonly ltSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-sm', transform: toBool });\r\n readonly ltMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-md', transform: toBool });\r\n readonly ltLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-lg', transform: toBool });\r\n readonly ltXl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-xl', transform: toBool });\r\n readonly ltXxl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-xxl', transform: toBool });\r\n readonly gtXs = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-xs', transform: toBool });\r\n readonly gtSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-sm', transform: toBool });\r\n readonly gtMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-md', transform: toBool });\r\n readonly gtLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-lg', transform: toBool });\r\n readonly gtXl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-xl', transform: toBool });\r\n readonly smUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.sm-up', transform: toBool });\r\n readonly mdUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.md-up', transform: toBool });\r\n readonly lgUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lg-up', transform: toBool });\r\n readonly xlUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xl-up', transform: toBool });\r\n readonly xxlUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xxl-up', transform: toBool });\r\n readonly smDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.sm-down', transform: toBool });\r\n readonly mdDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.md-down', transform: toBool });\r\n readonly lgDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lg-down', transform: toBool });\r\n readonly xlDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xl-down', transform: toBool });\r\n\r\n private readonly _show = computed(() =>\r\n ((resolveAll(\r\n { default: this.fxShow() as boolean | undefined,\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 this._show()\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// ─── fxHide ──────────────────────────────────────────────────────────────────\r\n\r\n@Directive({\r\n selector: `\r\n [fxHide],\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 FxHideDirective extends ResponsiveBaseDirective {\r\n readonly fxHide = input<boolean, string | boolean>(undefined, { alias: 'fxHide', transform: toBool });\r\n readonly xs = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xs', transform: toBool });\r\n readonly sm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.sm', transform: toBool });\r\n readonly md = input<boolean, string | boolean>(undefined, { alias: 'fxHide.md', transform: toBool });\r\n readonly lg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lg', transform: toBool });\r\n readonly xl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xl', transform: toBool });\r\n readonly xxl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xxl', transform: toBool });\r\n readonly ltSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-sm', transform: toBool });\r\n readonly ltMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-md', transform: toBool });\r\n readonly ltLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-lg', transform: toBool });\r\n readonly ltXl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-xl', transform: toBool });\r\n readonly ltXxl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-xxl', transform: toBool });\r\n readonly gtXs = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-xs', transform: toBool });\r\n readonly gtSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-sm', transform: toBool });\r\n readonly gtMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-md', transform: toBool });\r\n readonly gtLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-lg', transform: toBool });\r\n readonly gtXl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-xl', transform: toBool });\r\n readonly smUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.sm-up', transform: toBool });\r\n readonly mdUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.md-up', transform: toBool });\r\n readonly lgUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lg-up', transform: toBool });\r\n readonly xlUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xl-up', transform: toBool });\r\n readonly xxlUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xxl-up', transform: toBool });\r\n readonly smDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.sm-down', transform: toBool });\r\n readonly mdDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.md-down', transform: toBool });\r\n readonly lgDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lg-down', transform: toBool });\r\n readonly xlDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xl-down', transform: toBool });\r\n\r\n private readonly _hide = computed(() =>\r\n ((resolveAll(\r\n { default: this.fxHide() as boolean | undefined,\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 this._hide()\r\n ? this.r2.setStyle(this.el.nativeElement, 'display', 'none')\r\n : this.r2.removeStyle(this.el.nativeElement, 'display');\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 * @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 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\nimport { LAYOUT_BREAKPOINTS } from './breakpoints';\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 private readonly bp = inject(LAYOUT_BREAKPOINTS);\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._aliases().some(alias => this.media.isActive(this.bp[alias] ?? 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","import { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class PaginatorIntl extends MatPaginatorIntl {\r\n itemsPerPageLabel = 'Elementi per pagina';\r\n nextPageLabel = 'Prossima pagina';\r\n previousPageLabel = 'Pagina precedente';\r\n lastPageLabel = 'Ultima pagina';\r\n firstPageLabel = 'Prima pagina';\r\n getRangeLabel = (page: number, pageSize: number, length: number) => {\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 length = Math.max(length, 0);\r\n const startIndex = page * pageSize;\r\n // If the start index exceeds the list length, do not try and fix the end index to the end.\r\n const endIndex =\r\n startIndex < length\r\n ? Math.min(startIndex + pageSize, length)\r\n : startIndex + pageSize;\r\n return `${startIndex + 1} - ${endIndex} di ${length}`;\r\n };\r\n}\r\n","import { ChangeDetectionStrategy, Component } 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@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 type: 'bar' | 'spinner' | 'wait' | 'hourglass' = 'bar';\r\n progress = 0;\r\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate';\r\n message = '';\r\n\r\n /**\r\n * Update busy dialog\r\n * @param message : new message or null to keep the previous one\r\n * @param progress : new progress value\r\n * @param progressMode : new progress mode (determinate or indeterminate)\r\n * @param type : the type (bar, spinner, wait o hourglass)\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 = message;\r\n }\r\n if (type) {\r\n this.type = type;\r\n }\r\n this.progress = progress;\r\n this.progressMode = this.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 || 'indeterminate'\" [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 || 'indeterminate'\" 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, OnInit, inject, output } 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 implements OnInit {\r\n readonly choosen = output<DialogResult>();\r\n\r\n private readonly dialogRef = inject(MatDialogRef<ConfirmDialogComponent>);\r\n protected dialogData: ConfirmDialogData = inject(MAT_DIALOG_DATA) ?? { title: 'Conferma', okCaption: 'Si', cancelCaption: 'No', message: '' };\r\n\r\n ngOnInit(): void {\r\n if (this.dialogData) {\r\n this.dialogData.title ??= 'Conferma';\r\n this.dialogData.okCaption ??= 'Si';\r\n this.dialogData.cancelCaption ??= 'No';\r\n }\r\n }\r\n\r\n /** Done */\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 /** Cancelled */\r\n cancel(): void {\r\n this.choosen.emit({ result: 'cancel' });\r\n this.dialogRef.close();\r\n }\r\n\r\n /** Other action */\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\"></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 $index; 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, OnInit, inject } 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, MatButtonModule, MatIconModule, MatDialogClose, MatTooltipModule, SafeHtmlPipe]\r\n})\r\nexport class InfoDialogComponent implements OnInit {\r\n private readonly dialogService = inject(DialogService);\r\n private readonly dialogRef = inject(MatDialogRef<InfoDialogComponent>);\r\n protected dialogData: InfoDialogData = inject(MAT_DIALOG_DATA) ?? { appearance: 'fill', title: 'Informazioni', message: '' };\r\n\r\n ngOnInit(): void {\r\n this.setData(this.dialogData);\r\n }\r\n\r\n /**\r\n * Set the dialog data manually\r\n * @param data : the new dialog data\r\n */\r\n public setData(data: InfoDialogData): void {\r\n this.dialogData = data;\r\n if (this.dialogData) {\r\n this.dialogData.title ??= 'Informazioni';\r\n if (this.dialogData.dismissAfter) {\r\n setTimeout(() => this.dialogRef.close(), this.dialogData.dismissAfter);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Navigate to an url\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\"></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\">{{dialogData.okCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import { Component, ChangeDetectionStrategy, inject, output } 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 readonly action = output<void>();\r\n\r\n protected readonly dialogData: ToastData = inject(MAT_SNACK_BAR_DATA) ?? {};\r\n\r\n /** Do action */\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 } from '@angular/core';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UIService {\r\n \r\n private _appearance: \"fill\" | \"outline\" = \"fill\";\r\n get appearance() {return this._appearance};\r\n set appearance(value: \"fill\" | \"outline\" | undefined) {\r\n this._appearance = value ?? \"fill\";\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit, 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 implements OnInit {\r\n readonly choosen = output<DialogResult>();\r\n private readonly dialogRef = inject(MatDialogRef<DeleteDialogComponent>);\r\n protected dialogData: DeleteDialogData = inject(MAT_DIALOG_DATA) ?? { title: 'Attenzione', confirmMode: DeleteDialogConfirmMode.None, okCaption: 'Si', cancelCaption: 'No', message: '' };\r\n protected confirmed = signal<boolean>(this.dialogData.confirmMode !== DeleteDialogConfirmMode.Simple);\r\n protected confirmValue?: string;\r\n\r\n ngOnInit(): void {\r\n if (this.dialogData) {\r\n this.dialogData.title ??= 'Attenzione';\r\n this.dialogData.okCaption ??= 'Si';\r\n this.dialogData.cancelCaption ??= 'No';\r\n if (!this.dialogData.confirmMode) {\r\n this.dialogData.confirmMode = DeleteDialogConfirmMode.None;\r\n this.confirmed.set(true);\r\n }\r\n }\r\n }\r\n\r\n /** Done */\r\n ok(): void {\r\n this.choosen.emit({ result: 'ok' });\r\n this.dialogRef.close();\r\n }\r\n\r\n /** Cancelled */\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\"></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\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 * Clear url from # in case of page reload\r\n * @param resetPoppingState: true if popping state should be set to false\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 * Open a dialog\r\n * @param component : the component\r\n * @param config : the config\r\n * @returns the dialog object, or null when not running in a 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 * Open a dialog\r\n * @param component : the component\r\n * @param config : the config\r\n * @returns the dialog object\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 * Return current dialog scrollable height\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 * Create the busy overlay\r\n * @param type: the type of spinner to create\r\n * @returns: the new overlay\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 * Update busy dialog\r\n * @param message : new message\r\n * @param progress : new progress\r\n * @param progressMode : new mode (default = 'indeterminate')\r\n * @param type: new type (default = 'hourglass')\r\n * @param action : action to do during the execution (optional)\r\n * @returns true if a new popup has been opened\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); // Use the same\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 * Display a busy dialog\r\n * @param message : new message\r\n * @param progress : new progress\r\n * @param progressMode : new mode (default = 'indeterminate')\r\n * @param action : action to do during the execution (optional)\r\n * @returns true if a new popup has been opened\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 * Display a busy timer\r\n * @param message : new message\r\n * @param due: the number of milliseconds. Default is 100\r\n * @returns the busy timer object\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 * Display a busy indeterminate dialog as hourglass\r\n * @param message : new message\r\n * @param action : action to do during the execution (optional)\r\n * @returns true if a new popup has been opened\r\n */\r\n busyHourglass(\r\n message: string,\r\n action?: Observable<unknown>\r\n ): boolean {\r\n return this.setBusy(message, undefined, undefined, 'hourglass', action);\r\n }\r\n\r\n /**\r\n * Display a busy spinner dialog\r\n * @param message : new message\r\n * @param progress : new progress\r\n * @param progressMode : new mode (default = 'indeterminate')\r\n * @param action : action to do during the execution (optional)\r\n * @returns true if a new popup has been opened\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 * Display a wait spinner\r\n * @param action : action to do during the execution (optional)\r\n * @returns true if a new popup has been opened\r\n */\r\n wait(action?: Observable<unknown>): boolean {\r\n return this.setBusy(undefined, undefined, undefined, 'wait', action);\r\n }\r\n\r\n\r\n /**\r\n * Display an information dialog\r\n * @param message : message\r\n * @param title : dialog title\r\n * @param okCaption : ok button caption\r\n * @param width: the preferred width\r\n * @param dismissAfter: if specified, the dialog will be closed after dismissAfter milliseconds\r\n * @param details: if specified, the details info\r\n * @param onNavigate: the callback to use for navigation. Default is null\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> {\r\n this.clearBusy();\r\n return this.open(InfoDialogComponent, {\r\n ariaLabel: 'informazioni',\r\n autoFocus: true,\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 }) as MatDialogRef<InfoDialogComponent>;\r\n }\r\n\r\n /**\r\n * Display an error dialog\r\n * @param message : message\r\n * @param log : the error log\r\n * @param title : dialog title\r\n * @param okCaption : ok button caption\r\n * @param width: the preferred width\r\n * @param dismissAfter: if specified, the dialog will be closed after dismissAfter milliseconds\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> {\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 this.errorDialogRef = 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 }) as MatDialogRef<InfoDialogComponent>;\r\n return this.errorDialogRef;\r\n }\r\n\r\n /**\r\n * Display toast\r\n * @param message : message to display\r\n * @param duration : duration in msec\r\n * @param icon : the mat-icon to display\r\n * @param actionCaption action button caption\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 * Display a confirm dialog\r\n * @param message : html message\r\n * @param title : dialog title\r\n * @param okCaption : ok button caption\r\n * @param cancelCaption : cancel button caption\r\n * @param otherCaption : other button caption\r\n * @param options: check box options\r\n * @param width: the preferred width\r\n * @param details: optional details\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 * Display a delete dialog\r\n * @param message : html message\r\n * @param title : dialog title\r\n * @param confirmMode : the confirm mode\r\n * @param okCaption : ok button caption\r\n * @param cancelCaption : cancel button caption\r\n * @param width: the preferred width\r\n * @param details: optional details\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// ── Tokens ───────────────────────────────────────────────────────────────────\r\nexport { BS5_BREAKPOINTS, LAYOUT_BREAKPOINTS, CANONICAL_ALIASES } from './directives/flex/breakpoints';\r\nexport type { BreakpointAlias } from './directives/flex/breakpoints';\r\nexport { ALIAS_FAMILIES } from './directives/flex/breakpoints';\r\n\r\n// ── Input type helpers (useful for custom directive extensions) ──────────────\r\nexport type { CanonicalKey, NonCanonicalKey, BpValues, NcValues } from './directives/flex/responsive-inputs.mixin';\r\n\r\n// ── Service ──────────────────────────────────────────────────────────────────\r\nexport { MediaObserver } from './directives/flex/media-observer.service';\r\n\r\n// ── Base (re-export for extension) ───────────────────────────────────────────\r\nexport { ResponsiveBaseDirective, NON_CANONICAL_PRIORITY } from './directives/flex/responsive-base.directive';\r\n\r\n// ── Flex directives ──────────────────────────────────────────────────────────\r\nexport { FxLayoutDirective, FxLayoutWrapDirective } from './directives/flex/fx-layout.directive';\r\nexport { FxFlexDirective } from './directives/flex/fx-flex.directive';\r\nexport { FxLayoutAlignDirective } from './directives/flex/fx-layout-align.directive';\r\nexport { FxLayoutGapDirective } from './directives/flex/fx-layout-gap.directive';\r\nexport {\r\n FxFlexOrderDirective,\r\n FxFlexOffsetDirective,\r\n FxFlexAlignDirective,\r\n FxFlexFillDirective,\r\n} from './directives/flex/fx-flex-extras.directives';\r\n\r\n// ── Visibility directives ─────────────────────────────────────────────────────\r\nexport { FxShowDirective, FxHideDirective } from './directives/flex/fx-show-hide.directives';\r\n\r\n// ── Style / Class directives ─────────────────────────────────────────────────\r\nexport { FxStyleDirective, FxClassDirective } from './directives/flex/fx-style-class.directives';\r\n\r\n// ── Grid directives (bonus — not in original ngx-layout) ─────────────────────\r\nexport {\r\n FxGridDirective,\r\n FxGridColumnDirective,\r\n FxGridAreaDirective,\r\n} from './directives/flex/fx-grid.directives';\r\n\r\n// ── Structural directives ─────────────────────────────────────────────────────\r\nexport { IfBpDirective } from './directives/flex/if-bp.directive';\r\n\r\n// ── Convenience module (for non-standalone NgModule apps) ────────────────────\r\nimport { FxLayoutDirective, FxLayoutWrapDirective } from './directives/flex/fx-layout.directive';\r\nimport { FxFlexDirective } from './directives/flex/fx-flex.directive';\r\nimport { FxLayoutAlignDirective } from './directives/flex/fx-layout-align.directive';\r\nimport { FxLayoutGapDirective } from './directives/flex/fx-layout-gap.directive';\r\nimport {\r\n FxFlexOrderDirective, FxFlexOffsetDirective,\r\n FxFlexAlignDirective, FxFlexFillDirective,\r\n} from './directives/flex/fx-flex-extras.directives';\r\nimport { FxShowDirective, FxHideDirective } from './directives/flex/fx-show-hide.directives';\r\nimport { FxStyleDirective, FxClassDirective } from './directives/flex/fx-style-class.directives';\r\nimport {\r\n FxGridDirective, FxGridColumnDirective, FxGridAreaDirective,\r\n} from './directives/flex/fx-grid.directives';\r\nimport { IfBpDirective } from './directives/flex/if-bp.directive';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n ArsCoreModule,\r\n // Flex\r\n FxLayoutDirective,\r\n FxLayoutWrapDirective,\r\n FxFlexDirective,\r\n FxLayoutAlignDirective,\r\n FxLayoutGapDirective,\r\n FxFlexOrderDirective,\r\n FxFlexOffsetDirective,\r\n FxFlexAlignDirective,\r\n FxFlexFillDirective,\r\n // Visibility\r\n FxShowDirective,\r\n FxHideDirective,\r\n // Style / Class\r\n FxStyleDirective,\r\n FxClassDirective,\r\n // Grid\r\n FxGridDirective,\r\n FxGridColumnDirective,\r\n FxGridAreaDirective,\r\n // Structural\r\n IfBpDirective,\r\n ],\r\n exports: [\r\n // Flex\r\n FxLayoutDirective,\r\n FxLayoutWrapDirective,\r\n FxFlexDirective,\r\n FxLayoutAlignDirective,\r\n FxLayoutGapDirective,\r\n FxFlexOrderDirective,\r\n FxFlexOffsetDirective,\r\n FxFlexAlignDirective,\r\n FxFlexFillDirective,\r\n // Visibility\r\n FxShowDirective,\r\n FxHideDirective,\r\n // Style / Class\r\n FxStyleDirective,\r\n FxClassDirective,\r\n // Grid\r\n FxGridDirective,\r\n FxGridColumnDirective,\r\n FxGridAreaDirective,\r\n // Structural\r\n IfBpDirective,\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@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 readonly password = input<string>('');\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 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}","<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, QueryList, ViewChildren, computed, forwardRef, signal } 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 @ViewChildren('otpField') otpFields!: QueryList<ElementRef<HTMLInputElement>>;\r\n\r\n isValid = computed(() => this.otpArray().every(d => /^\\d$/.test(d)));\r\n otpArray = signal<string[]>(Array(6).fill(''));\r\n disabled = false;\r\n\r\n private onChange: (val: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n // CVA\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 registerOnChange(fn: (val: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\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 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 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 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 private focusField(index: number): void {\r\n const field = this.otpFields.get(index);\r\n field?.nativeElement.focus();\r\n field?.nativeElement.select();\r\n }\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 maxlength=\"1\"\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 { ChangeDetectorRef, Component, OnInit, inject, output } 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 implements OnInit {\r\n readonly done = output<CredentialsDialogResult>();\r\n readonly recoveringPassword = output<CredentialsDialogResult>();\r\n private readonly changeDetector = inject(ChangeDetectorRef);\r\n protected dialogData: CredentialsDialogData = inject(MAT_DIALOG_DATA) ?? { mode: 'email', appearance: 'fill', title: 'Credenziali', okCaption: 'Salva' };\r\n protected item: CredentialsDialogResult = {};\r\n protected showPassword = false;\r\n\r\n ngOnInit(): void {\r\n if (this.dialogData) {\r\n this.dialogData.appearance ??= 'fill';\r\n this.dialogData.title ??= 'Informazioni';\r\n this.dialogData.okCaption ??= 'Salva';\r\n this.dialogData.mode ??= 'email';\r\n if (this.dialogData.mode === 'otp' && !this.dialogData.message) {\r\n this.dialogData.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 if (!this.dialogData.user) {\r\n this.item.user = this.dialogData.user;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Change mode\r\n * @param mode: the new mode\r\n * @param message: the optional new message\r\n */\r\n public changeMode(mode: 'email' | 'user' | 'otp', message?: string): void {\r\n this.dialogData.mode = mode;\r\n if (message) {\r\n this.dialogData.message = message;\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /** Done */\r\n protected ok(): void {\r\n this.done.emit(this.item);\r\n }\r\n\r\n /** Recover password */\r\n protected recoverPassword(): void {\r\n this.recoveringPassword.emit(this.item);\r\n if (this.dialogData.recoverPasswordUrl) {\r\n window.open(this.dialogData.recoverPasswordUrl, '_blank');\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 = !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 } 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 readonly done = output<RecoverPasswordDialogResult>();\r\n\r\n protected readonly dialogData: RecoverPasswordDialogData = inject(MAT_DIALOG_DATA) ?? { appearance: 'fill' };\r\n\r\n protected item: RecoverPasswordDialogResult = {\r\n email: '',\r\n recaptcha: false\r\n };\r\n\r\n /** Done */\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 OnInit,\r\n inject,\r\n output\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 implements OnInit {\r\n readonly done = output<ResetPasswordDialogResult>();\r\n private readonly dialogService = inject(DialogService);\r\n private readonly dialogRef = inject(MatDialogRef<ResetPasswordDialogComponent>);\r\n protected dialogData: ResetPasswordDialogData = inject(MAT_DIALOG_DATA) ?? { mode: 'admin', appearance: 'fill' };\r\n protected item: ResetPasswordDialogResult = {};\r\n protected showOldPassword = false;\r\n protected showPassword = false;\r\n protected showPassword2 = false;\r\n\r\n ngOnInit(): void {\r\n if (this.dialogData) {\r\n if (!this.dialogData.mode) {\r\n this.dialogData.mode = 'admin';\r\n }\r\n if (this.dialogData.mode !== 'forgot' && !this.dialogData.userId) {\r\n this.dialogRef.close();\r\n this.dialogService.error('Utente non specificato.');\r\n return;\r\n } else if (this.dialogData.mode === 'forgot' && !this.dialogData.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 = this.dialogData.userEmail;\r\n this.item.userId = this.dialogData.userId;\r\n } else {\r\n this.dialogService.error('Modalità non riconosciuta.');\r\n this.dialogRef.close();\r\n return;\r\n }\r\n }\r\n\r\n /** Done */\r\n protected ok(): void {\r\n this.done.emit(this.item);\r\n }\r\n\r\n /** Generate a password */\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 = !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 = !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 = !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>","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './ui/ui.module';\r\nexport * from './ui/dialogs/busy/busy-dialog.component';\r\nexport * from './ui/dialogs/credentials/credentials-dialog.component';\r\nexport * from './ui/dialogs/confirm/confirm-dialog.component';\r\nexport * from './ui/dialogs/delete/delete-dialog.component';\r\nexport * from './ui/dialogs/info/info-dialog.component';\r\nexport * from './ui/dialogs/recover-password/recover-password-dialog.component';\r\nexport * from './ui/dialogs/reset-password/reset-password-dialog.component';\r\nexport * from './ui/dialogs/toast/toast.component';\r\nexport * from './ui/components/password-strength/password-strength.component';\r\nexport * from './ui/components/otp/otp-input.component';\r\nexport * from './ui/directives/flex/if-bp.directive';\r\nexport * from './ui/directives/flex/fx-flex-extras.directives';\r\nexport * from './ui/directives/flex/fx-layout-align.directive';\r\nexport * from './ui/directives/flex/fx-layout-gap.directive';\r\nexport * from './ui/directives/flex/fx-layout.directive';\r\nexport * from './ui/directives/flex/fx-show-hide.directives';\r\nexport * from './ui/directives/flex/fx-style-class.directives';\r\nexport * from './ui/directives/flex/fx-flex.directive';\r\nexport * from './ui/directives/flex/fx-grid.directives';\r\nexport * from './ui/directives/flex/responsive-base.directive';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["normalizeGap","toBool","i2","i3","i4","i5","i6","i1","i7"],"mappings":"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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-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/ui/directives/flex/fx-flex.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-grid.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@Injectable()\r\nexport class PaginatorIntl extends MatPaginatorIntl {\r\n itemsPerPageLabel = 'Elementi per pagina';\r\n nextPageLabel = 'Prossima pagina';\r\n previousPageLabel = 'Pagina precedente';\r\n lastPageLabel = 'Ultima pagina';\r\n firstPageLabel = 'Prima pagina';\r\n getRangeLabel = (page: number, pageSize: number, length: number) => {\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 length = Math.max(length, 0);\r\n const startIndex = page * pageSize;\r\n // If the start index exceeds the list length, do not try and fix the end index to the end.\r\n const endIndex =\r\n startIndex < length\r\n ? Math.min(startIndex + pageSize, length)\r\n : startIndex + pageSize;\r\n return `${startIndex + 1} - ${endIndex} di ${length}`;\r\n };\r\n}\r\n","import { ChangeDetectionStrategy, Component } 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@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 type: 'bar' | 'spinner' | 'wait' | 'hourglass' = 'bar';\r\n progress = 0;\r\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate';\r\n message = '';\r\n\r\n /**\r\n * Update busy dialog\r\n * @param message : new message or null to keep the previous one\r\n * @param progress : new progress value\r\n * @param progressMode : new progress mode (determinate or indeterminate)\r\n * @param type : the type (bar, spinner, wait o hourglass)\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 = message;\r\n }\r\n if (type) {\r\n this.type = type;\r\n }\r\n this.progress = progress;\r\n this.progressMode = this.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 || 'indeterminate'\" [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 || 'indeterminate'\" 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, OnInit, inject, output } 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 implements OnInit {\r\n readonly choosen = output<DialogResult>();\r\n\r\n private readonly dialogRef = inject(MatDialogRef<ConfirmDialogComponent>);\r\n protected dialogData: ConfirmDialogData = inject(MAT_DIALOG_DATA) ?? { title: 'Conferma', okCaption: 'Si', cancelCaption: 'No', message: '' };\r\n\r\n ngOnInit(): void {\r\n if (this.dialogData) {\r\n this.dialogData.title ??= 'Conferma';\r\n this.dialogData.okCaption ??= 'Si';\r\n this.dialogData.cancelCaption ??= 'No';\r\n }\r\n }\r\n\r\n /** Done */\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 /** Cancelled */\r\n cancel(): void {\r\n this.choosen.emit({ result: 'cancel' });\r\n this.dialogRef.close();\r\n }\r\n\r\n /** Other action */\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\"></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 $index; 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, OnInit, inject } 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, MatButtonModule, MatIconModule, MatDialogClose, MatTooltipModule, SafeHtmlPipe]\r\n})\r\nexport class InfoDialogComponent implements OnInit {\r\n private readonly dialogService = inject(DialogService);\r\n private readonly dialogRef = inject(MatDialogRef<InfoDialogComponent>);\r\n protected dialogData: InfoDialogData = inject(MAT_DIALOG_DATA) ?? { appearance: 'fill', title: 'Informazioni', message: '' };\r\n\r\n ngOnInit(): void {\r\n this.setData(this.dialogData);\r\n }\r\n\r\n /**\r\n * Set the dialog data manually\r\n * @param data : the new dialog data\r\n */\r\n public setData(data: InfoDialogData): void {\r\n this.dialogData = data;\r\n if (this.dialogData) {\r\n this.dialogData.title ??= 'Informazioni';\r\n if (this.dialogData.dismissAfter) {\r\n setTimeout(() => this.dialogRef.close(), this.dialogData.dismissAfter);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Navigate to an url\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\"></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\">{{dialogData.okCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import { Component, ChangeDetectionStrategy, inject, output } 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 readonly action = output<void>();\r\n\r\n protected readonly dialogData: ToastData = inject(MAT_SNACK_BAR_DATA) ?? {};\r\n\r\n /** Do action */\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 } from '@angular/core';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UIService {\r\n \r\n private _appearance: \"fill\" | \"outline\" = \"fill\";\r\n get appearance() {return this._appearance};\r\n set appearance(value: \"fill\" | \"outline\" | undefined) {\r\n this._appearance = value ?? \"fill\";\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit, 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 implements OnInit {\r\n readonly choosen = output<DialogResult>();\r\n private readonly dialogRef = inject(MatDialogRef<DeleteDialogComponent>);\r\n protected dialogData: DeleteDialogData = inject(MAT_DIALOG_DATA) ?? { title: 'Attenzione', confirmMode: DeleteDialogConfirmMode.None, okCaption: 'Si', cancelCaption: 'No', message: '' };\r\n protected confirmed = signal<boolean>(this.dialogData.confirmMode !== DeleteDialogConfirmMode.Simple);\r\n protected confirmValue?: string;\r\n\r\n ngOnInit(): void {\r\n if (this.dialogData) {\r\n this.dialogData.title ??= 'Attenzione';\r\n this.dialogData.okCaption ??= 'Si';\r\n this.dialogData.cancelCaption ??= 'No';\r\n if (!this.dialogData.confirmMode) {\r\n this.dialogData.confirmMode = DeleteDialogConfirmMode.None;\r\n this.confirmed.set(true);\r\n }\r\n }\r\n }\r\n\r\n /** Done */\r\n ok(): void {\r\n this.choosen.emit({ result: 'ok' });\r\n this.dialogRef.close();\r\n }\r\n\r\n /** Cancelled */\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\"></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\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 * Clear url from # in case of page reload\r\n * @param resetPoppingState: true if popping state should be set to false\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 * Open a dialog\r\n * @param component : the component\r\n * @param config : the config\r\n * @returns the dialog object, or null when not running in a 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 * Open a dialog\r\n * @param component : the component\r\n * @param config : the config\r\n * @returns the dialog object\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 * Return current dialog scrollable height\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 * Create the busy overlay\r\n * @param type: the type of spinner to create\r\n * @returns: the new overlay\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 * Update busy dialog\r\n * @param message : new message\r\n * @param progress : new progress\r\n * @param progressMode : new mode (default = 'indeterminate')\r\n * @param type: new type (default = 'hourglass')\r\n * @param action : action to do during the execution (optional)\r\n * @returns true if a new popup has been opened\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); // Use the same\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 * Display a busy dialog\r\n * @param message : new message\r\n * @param progress : new progress\r\n * @param progressMode : new mode (default = 'indeterminate')\r\n * @param action : action to do during the execution (optional)\r\n * @returns true if a new popup has been opened\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 * Display a busy timer\r\n * @param message : new message\r\n * @param due: the number of milliseconds. Default is 100\r\n * @returns the busy timer object\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 * Display a busy indeterminate dialog as hourglass\r\n * @param message : new message\r\n * @param action : action to do during the execution (optional)\r\n * @returns true if a new popup has been opened\r\n */\r\n busyHourglass(\r\n message: string,\r\n action?: Observable<unknown>\r\n ): boolean {\r\n return this.setBusy(message, undefined, undefined, 'hourglass', action);\r\n }\r\n\r\n /**\r\n * Display a busy spinner dialog\r\n * @param message : new message\r\n * @param progress : new progress\r\n * @param progressMode : new mode (default = 'indeterminate')\r\n * @param action : action to do during the execution (optional)\r\n * @returns true if a new popup has been opened\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 * Display a wait spinner\r\n * @param action : action to do during the execution (optional)\r\n * @returns true if a new popup has been opened\r\n */\r\n wait(action?: Observable<unknown>): boolean {\r\n return this.setBusy(undefined, undefined, undefined, 'wait', action);\r\n }\r\n\r\n\r\n /**\r\n * Display an information dialog\r\n * @param message : message\r\n * @param title : dialog title\r\n * @param okCaption : ok button caption\r\n * @param width: the preferred width\r\n * @param dismissAfter: if specified, the dialog will be closed after dismissAfter milliseconds\r\n * @param details: if specified, the details info\r\n * @param onNavigate: the callback to use for navigation. Default is null\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> {\r\n this.clearBusy();\r\n return this.open(InfoDialogComponent, {\r\n ariaLabel: 'informazioni',\r\n autoFocus: true,\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 }) as MatDialogRef<InfoDialogComponent>;\r\n }\r\n\r\n /**\r\n * Display an error dialog\r\n * @param message : message\r\n * @param log : the error log\r\n * @param title : dialog title\r\n * @param okCaption : ok button caption\r\n * @param width: the preferred width\r\n * @param dismissAfter: if specified, the dialog will be closed after dismissAfter milliseconds\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> {\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 this.errorDialogRef = 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 }) as MatDialogRef<InfoDialogComponent>;\r\n return this.errorDialogRef;\r\n }\r\n\r\n /**\r\n * Display toast\r\n * @param message : message to display\r\n * @param duration : duration in msec\r\n * @param icon : the mat-icon to display\r\n * @param actionCaption action button caption\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 * Display a confirm dialog\r\n * @param message : html message\r\n * @param title : dialog title\r\n * @param okCaption : ok button caption\r\n * @param cancelCaption : cancel button caption\r\n * @param otherCaption : other button caption\r\n * @param options: check box options\r\n * @param width: the preferred width\r\n * @param details: optional details\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 * Display a delete dialog\r\n * @param message : html message\r\n * @param title : dialog title\r\n * @param confirmMode : the confirm mode\r\n * @param okCaption : ok button caption\r\n * @param cancelCaption : cancel button caption\r\n * @param width: the preferred width\r\n * @param details: optional details\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@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 readonly password = input<string>('');\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 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}","<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, QueryList, ViewChildren, computed, forwardRef, signal } 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 @ViewChildren('otpField') otpFields!: QueryList<ElementRef<HTMLInputElement>>;\r\n\r\n isValid = computed(() => this.otpArray().every(d => /^\\d$/.test(d)));\r\n otpArray = signal<string[]>(Array(6).fill(''));\r\n disabled = false;\r\n\r\n private onChange: (val: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n // CVA\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 registerOnChange(fn: (val: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\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 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 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 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 private focusField(index: number): void {\r\n const field = this.otpFields.get(index);\r\n field?.nativeElement.focus();\r\n field?.nativeElement.select();\r\n }\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 maxlength=\"1\"\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 { ChangeDetectorRef, Component, OnInit, inject, output } 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 implements OnInit {\r\n readonly done = output<CredentialsDialogResult>();\r\n readonly recoveringPassword = output<CredentialsDialogResult>();\r\n private readonly changeDetector = inject(ChangeDetectorRef);\r\n protected dialogData: CredentialsDialogData = inject(MAT_DIALOG_DATA) ?? { mode: 'email', appearance: 'fill', title: 'Credenziali', okCaption: 'Salva' };\r\n protected item: CredentialsDialogResult = {};\r\n protected showPassword = false;\r\n\r\n ngOnInit(): void {\r\n if (this.dialogData) {\r\n this.dialogData.appearance ??= 'fill';\r\n this.dialogData.title ??= 'Informazioni';\r\n this.dialogData.okCaption ??= 'Salva';\r\n this.dialogData.mode ??= 'email';\r\n if (this.dialogData.mode === 'otp' && !this.dialogData.message) {\r\n this.dialogData.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 if (!this.dialogData.user) {\r\n this.item.user = this.dialogData.user;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Change mode\r\n * @param mode: the new mode\r\n * @param message: the optional new message\r\n */\r\n public changeMode(mode: 'email' | 'user' | 'otp', message?: string): void {\r\n this.dialogData.mode = mode;\r\n if (message) {\r\n this.dialogData.message = message;\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /** Done */\r\n protected ok(): void {\r\n this.done.emit(this.item);\r\n }\r\n\r\n /** Recover password */\r\n protected recoverPassword(): void {\r\n this.recoveringPassword.emit(this.item);\r\n if (this.dialogData.recoverPasswordUrl) {\r\n window.open(this.dialogData.recoverPasswordUrl, '_blank');\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 = !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 } 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 readonly done = output<RecoverPasswordDialogResult>();\r\n\r\n protected readonly dialogData: RecoverPasswordDialogData = inject(MAT_DIALOG_DATA) ?? { appearance: 'fill' };\r\n\r\n protected item: RecoverPasswordDialogResult = {\r\n email: '',\r\n recaptcha: false\r\n };\r\n\r\n /** Done */\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 OnInit,\r\n inject,\r\n output\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 implements OnInit {\r\n readonly done = output<ResetPasswordDialogResult>();\r\n private readonly dialogService = inject(DialogService);\r\n private readonly dialogRef = inject(MatDialogRef<ResetPasswordDialogComponent>);\r\n protected dialogData: ResetPasswordDialogData = inject(MAT_DIALOG_DATA) ?? { mode: 'admin', appearance: 'fill' };\r\n protected item: ResetPasswordDialogResult = {};\r\n protected showOldPassword = false;\r\n protected showPassword = false;\r\n protected showPassword2 = false;\r\n\r\n ngOnInit(): void {\r\n if (this.dialogData) {\r\n if (!this.dialogData.mode) {\r\n this.dialogData.mode = 'admin';\r\n }\r\n if (this.dialogData.mode !== 'forgot' && !this.dialogData.userId) {\r\n this.dialogRef.close();\r\n this.dialogService.error('Utente non specificato.');\r\n return;\r\n } else if (this.dialogData.mode === 'forgot' && !this.dialogData.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 = this.dialogData.userEmail;\r\n this.item.userId = this.dialogData.userId;\r\n } else {\r\n this.dialogService.error('Modalità non riconosciuta.');\r\n this.dialogRef.close();\r\n return;\r\n }\r\n }\r\n\r\n /** Done */\r\n protected ok(): void {\r\n this.done.emit(this.item);\r\n }\r\n\r\n /** Generate a password */\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 = !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 = !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 = !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","/**\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","/**\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 * Public API Surface of ars-utils\r\n */\r\nexport * from './ui/ui.module';\r\nexport * from './ui/dialogs/busy/busy-dialog.component';\r\nexport * from './ui/dialogs/credentials/credentials-dialog.component';\r\nexport * from './ui/dialogs/confirm/confirm-dialog.component';\r\nexport * from './ui/dialogs/delete/delete-dialog.component';\r\nexport * from './ui/dialogs/info/info-dialog.component';\r\nexport * from './ui/dialogs/recover-password/recover-password-dialog.component';\r\nexport * from './ui/dialogs/reset-password/reset-password-dialog.component';\r\nexport * from './ui/dialogs/toast/toast.component';\r\nexport * from './ui/components/password-strength/password-strength.component';\r\nexport * from './ui/components/otp/otp-input.component';\r\nexport * from './ui/directives/flex/if-bp.directive';\r\nexport * from './ui/directives/flex/fx-flex-extras.directives';\r\nexport * from './ui/directives/flex/fx-layout-align.directive';\r\nexport * from './ui/directives/flex/fx-layout-gap.directive';\r\nexport * from './ui/directives/flex/fx-layout.directive';\r\nexport * from './ui/directives/flex/fx-show-hide.directives';\r\nexport * from './ui/directives/flex/fx-style-class.directives';\r\nexport * from './ui/directives/flex/fx-flex.directive';\r\nexport * from './ui/directives/flex/fx-grid.directives';\r\nexport * from './ui/directives/flex/responsive-base.directive';\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,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAA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AAA,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,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EA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AAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EA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"}