@lucca-front/ng 20.3.3-rc.1 → 20.3.3-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -374,12 +374,13 @@ function deferrableToObservable(deferrable) {
374
374
  return isObservable(deferrable) ? deferrable : deferrable instanceof Promise ? from(deferrable) : of(deferrable);
375
375
  }
376
376
  function createDialogRoute(dialogRouteConfig) {
377
- const { dialogConfigFactory, dataFactory, ...baseRoute } = dialogRouteConfig;
377
+ const { dialogConfigFactory, dataFactory, canMatch, ...baseRoute } = dialogRouteConfig;
378
378
  const data = { dialogRouteConfig };
379
379
  return {
380
380
  path: dialogRouteConfig.path,
381
381
  component: DialogRoutingContainerComponent,
382
382
  data,
383
+ canMatch,
383
384
  children: [
384
385
  {
385
386
  ...baseRoute,
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-dialog.mjs","sources":["../../../packages/ng/dialog/dialog-content/dialog-content.component.ts","../../../packages/ng/dialog/dialog-footer/dialog-footer.component.ts","../../../packages/ng/dialog/model/dialog-config.ts","../../../packages/ng/dialog/model/dialog-ref.ts","../../../packages/ng/dialog/model/injectors.ts","../../../packages/ng/dialog/dialog-header/translations.ts","../../../packages/ng/dialog/dialog-header/dialog-header.translate.ts","../../../packages/ng/dialog/dialog-header/dialog-header.component.ts","../../../packages/ng/dialog/dialog-header/dialog-header.component.html","../../../packages/ng/dialog/dialog.service.ts","../../../packages/ng/dialog/dialog.providers.ts","../../../packages/ng/dialog/dialog/dialog.component.ts","../../../packages/ng/dialog/directives/dialog-close.directive.ts","../../../packages/ng/dialog/directives/dialog-dismiss.directive.ts","../../../packages/ng/dialog/directives/dialog-open.directive.ts","../../../packages/ng/dialog/dialog-routing/dialog-routing.models.ts","../../../packages/ng/dialog/dialog-routing/dialog-routing.utils.ts","../../../packages/ng/dialog/dialog-routing/dialog-routing.component.ts","../../../packages/ng/dialog/lucca-front-ng-dialog.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n\tselector: 'lu-dialog-content',\n\tstandalone: true,\n\ttemplate: '<ng-content />',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'dialog-inside-content',\n\t},\n})\nexport class DialogContentComponent {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n\tselector: 'lu-dialog-footer',\n\tstandalone: true,\n\ttemplate: `<ng-content />`,\n\tstyleUrl: './dialog-footer.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'dialog-inside-footer footer',\n\t},\n})\nexport class DialogFooterComponent {}\n","import { AutoFocusTarget, DialogConfig } from '@angular/cdk/dialog';\nimport { ComponentType } from '@angular/cdk/overlay';\nimport { TemplateRef } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nconst ɵdialogData = Symbol.for('luDialogData');\nconst ɵdialogResult = Symbol.for('luDialogResult');\n\nexport type ɵDialogDataFlag = { [ɵdialogData]: unknown };\nexport type ɵDialogResultFlag<R> = { [ɵdialogResult]: R };\n\nexport type LuDialogData<T> = {\n\t[K in keyof T]: T[K] extends ɵDialogDataFlag ? Omit<T[K], typeof ɵdialogData> : never;\n}[keyof T];\n\ntype DialogRefProps<C> = { [K in keyof C]: C[K] extends ɵDialogResultFlag<unknown> ? K : never }[keyof C] & keyof C;\nexport type LuDialogResult<C> = DialogRefProps<C> extends never ? void : C[DialogRefProps<C>] extends ɵDialogResultFlag<infer T> ? T : void;\n\ninterface BaseLuDialogConfig<C, TData = LuDialogData<C>> {\n\t/**\n\t * The component or template to put inside the dialog container\n\t */\n\tcontent: ComponentType<C> | TemplateRef<C>;\n\n\t/**\n\t * Data to pass to the component, will be required if the component used `injectDialogData` in a field, specifying the data that's needed.\n\t */\n\tdata: TData;\n\n\t/**\n\t * Should we put a backdrop? Defaults to true\n\t */\n\tmodal?: boolean;\n\n\t/**\n\t * Is this dialog a blocking popup that cannot be dismissed ?\n\t *\n\t * Defaults to false, setting this to true will also remove the close button in the header\n\t * if you're using `lu-dialog-header`.\n\t */\n\talert?: boolean;\n\n\t/**\n\t * Can be used if you don't have a header or aren't using the default one, to set an aria-label\n\t * instead of aria-labelledby on the dialog container\n\t */\n\tariaLabel?: string;\n\n\t/**\n\t * Autofocus target\n\t *\n\t * Defaults to the close button from the header, first-input is added by us to focus the first available input\n\t * or the first input that is contained inside a node that has the `.luDialog-autofocus` class\n\t */\n\tautoFocus?: AutoFocusTarget | 'first-input' | string;\n\n\t/**\n\t * This provides a way to override any of the configuration parameters expected by cdk's `Dialog.open` method.\n\t *\n\t * WARNING: this will take full authority and override with your values no matter what's computed by LuDialogService,\n\t * use with caution.\n\t */\n\tcdkConfigOverride?: DialogConfig<C>;\n\n\t/**\n\t * A hook function to determine if the current dialog can be closed or not, if provided.\n\t *\n\t * @param comp the instance of the component that's inside the dialog box.\n\t */\n\tcanClose?: (comp: C) => boolean | Observable<boolean>;\n\n\t/**\n\t * Determine if the current dialog can be close by a click on backdrop or escape key\n\t */\n\tcanCloseWithBackdrop?: boolean;\n\n\t/**\n\t * The size of the panel used for the dialog\n\t */\n\tsize?: 'XS' | 'S' | 'M' | 'L' | 'XL' | 'XXL' | 'fitContent' | `maxContent` | 'fullScreen';\n\n\t/**\n\t * Should it be a modal (default), a drawer? a drawer from bottom?\n\t */\n\tmode?: 'default' | 'drawer' | 'drawer-from-bottom';\n\n\t/**\n\t * Classes to add to the panel\n\t */\n\tpanelClasses?: string[];\n}\n\nexport type LuDialogConfig<T, TData = LuDialogData<T>> = [TData] extends [never] ? Omit<BaseLuDialogConfig<T, TData>, 'data'> : BaseLuDialogConfig<T, TData>;\n","import { DialogRef } from '@angular/cdk/dialog';\nimport { isObservable, Observable, of, Subscription, take } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { LuDialogConfig, LuDialogData, LuDialogResult } from './dialog-config';\n\nexport const DISMISSED_VALUE = {} as const;\n\nfunction isDismissed(v: unknown): v is typeof DISMISSED_VALUE {\n\treturn v === DISMISSED_VALUE;\n}\n\nexport class LuDialogRef<C = unknown, TData = LuDialogData<C>> {\n\t/**\n\t * Instance of the component that's inside the dialog\n\t */\n\tget instance(): C {\n\t\treturn this.cdkRef.componentInstance;\n\t}\n\n\t/**\n\t * Subscription to the detachments of the dialog\n\t * This is used to close the dialog when it is detached\n\t */\n\tdetachSubscription: Subscription | null = null;\n\n\t/**\n\t * Emits when the dialog is closed\n\t *\n\t * Emits either the output of result$ or undefined depending on how it has been closed\n\t */\n\tclosed$: Observable<LuDialogResult<C> | undefined> = this.cdkRef.closed.pipe(map((res): LuDialogResult<C> | undefined => (isDismissed(res) ? undefined : res)));\n\n\t/**\n\t * Emits void when the dialog is dismissed\n\t */\n\tdismissed$: Observable<void> = this.cdkRef.closed.pipe(\n\t\tfilter((res) => res === DISMISSED_VALUE),\n\t\tmap((): void => undefined),\n\t);\n\n\t/**\n\t * Emits the result if it has a value that's not DISMISSED_VALUE\n\t */\n\tresult$: Observable<LuDialogResult<C>> = this.cdkRef.closed.pipe(filter((res): res is LuDialogResult<C> => !isDismissed(res)));\n\n\tconstructor(\n\t\tpublic readonly cdkRef: DialogRef<LuDialogResult<C> | typeof DISMISSED_VALUE, C>,\n\t\tpublic readonly config: LuDialogConfig<C, TData>,\n\t) {\n\t\tthis.detachSubscription = cdkRef.overlayRef\n\t\t\t.detachments()\n\t\t\t.pipe(takeUntil(this.closed$))\n\t\t\t.subscribe(() => {\n\t\t\t\tcdkRef.close(DISMISSED_VALUE);\n\t\t\t});\n\t}\n\n\tdismiss(): void {\n\t\t// If we can't dismiss this dialog box, just ignore the dismiss call.\n\t\tif (this.config.alert) {\n\t\t\treturn;\n\t\t}\n\t\tconst canClose = this.config.canClose?.(this.instance) ?? true;\n\t\tconst canClose$ = isObservable(canClose) ? canClose : of(canClose);\n\t\tcanClose$.pipe(take(1)).subscribe((close) => {\n\t\t\tif (close) {\n\t\t\t\tthis.detachSubscription?.unsubscribe();\n\t\t\t\tthis.cdkRef.close(DISMISSED_VALUE);\n\t\t\t}\n\t\t});\n\t}\n\n\tclose(res: LuDialogResult<C>): void {\n\t\tthis.detachSubscription?.unsubscribe();\n\t\tthis.cdkRef.close(res);\n\t}\n}\n\nexport type LuDialogSelfRef<R> = { dismiss(): void; close(res: R): void };\n","import { DIALOG_DATA } from '@angular/cdk/dialog';\nimport { inject } from '@angular/core';\nimport { ɵDialogDataFlag, ɵDialogResultFlag } from './dialog-config';\nimport { LuDialogRef, LuDialogSelfRef } from './dialog-ref';\n\nexport function injectDialogData<TData>(): TData & ɵDialogDataFlag {\n\treturn inject<TData & ɵDialogDataFlag>(DIALOG_DATA);\n}\n\nexport function injectDialogRef<R = void>(): LuDialogSelfRef<R> & ɵDialogResultFlag<R> {\n\treturn inject<LuDialogSelfRef<R>>(LuDialogRef) as LuDialogSelfRef<R> & ɵDialogResultFlag<R>;\n}\n","export const Translations = {\n\ten: {\n\t\tclose: 'Close',\n\t},\n\tde: {\n\t\tclose: 'Schließen',\n\t},\n\tfr: {\n\t\tclose: 'Fermer',\n\t},\n\tit: {\n\t\tclose: 'Chiudere',\n\t},\n\tnl: {\n\t\tclose: 'Sluiten',\n\t},\n\t'nl-BE': {\n\t\tclose: 'Sluiten',\n\t},\n\tes: {\n\t\tclose: 'Cerrar',\n\t},\n\tpt: {\n\t\tclose: 'Fechar',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_DIALOG_HEADER_TRANSLATIONS = new InjectionToken('LuDialogHeaderTranslations', {\n\tfactory: () => luDialogHeaderTranslations,\n});\n\nexport interface LuDialogHeaderTranslations {\n\tclose: string;\n}\n\nexport const luDialogHeaderTranslations: LuTranslation<LuDialogHeaderTranslations> = Translations;\n","import { CdkDialogContainer } from '@angular/cdk/dialog';\nimport { ChangeDetectionStrategy, Component, contentChild, Directive, ElementRef, inject, OnInit, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuDialogRef } from '../model';\nimport { LU_DIALOG_HEADER_TRANSLATIONS } from './dialog-header.translate';\n\nlet nextId = 0;\n\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: '[dialogHeaderAction]',\n})\nexport class DialogHeaderAction {}\n\n@Component({\n\tselector: 'lu-dialog-header',\n\tstandalone: true,\n\timports: [IconComponent],\n\ttemplateUrl: './dialog-header.component.html',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'dialog-inside-header',\n\t},\n})\nexport class DialogHeaderComponent implements OnInit {\n\t#ref = inject(LuDialogRef);\n\n\tintl = getIntl(LU_DIALOG_HEADER_TRANSLATIONS);\n\n\tdismissible = !this.#ref.config.alert;\n\n\t#elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t#renderer = inject(Renderer2);\n\n\tclose(): void {\n\t\tthis.#ref.dismiss();\n\t}\n\n\toptionalAction = contentChild(DialogHeaderAction);\n\n\tngOnInit(): void {\n\t\t// Using setTimeout here to make sure this will be handled in the next Cd cycle, not the current one.\n\t\tsetTimeout(() => {\n\t\t\tconst header = this.#elementRef.nativeElement.querySelector('h1');\n\t\t\tconst id = header?.id || `lu-dialog-header-${nextId++}`;\n\t\t\tif (header) {\n\t\t\t\tthis.#renderer.setAttribute(header, 'id', id);\n\t\t\t\tthis.#renderer.addClass(header, 'dialog-inside-header-container-title');\n\t\t\t}\n\t\t\t(this.#ref.cdkRef.containerInstance as CdkDialogContainer)?._addAriaLabelledBy(id);\n\t\t});\n\t}\n}\n","@if (dismissible) {\n\t<button class=\"dialog-inside-header-button button\" type=\"button\" (click)=\"close()\">\n\t\t<lu-icon icon=\"signClose\" [alt]=\"intl.close\" />\n\t</button>\n}\n@if (optionalAction()) {\n\t<div class=\"dialog-inside-header-actionOptional\"><ng-content select=\"[dialogHeaderAction]\" /></div>\n}\n\n<div class=\"dialog-inside-header-container\">\n\t<ng-content />\n</div>\n","import { Dialog, DialogRef } from '@angular/cdk/dialog';\nimport { inject, Injectable, Injector, Renderer2 } from '@angular/core';\nimport { isObservable, merge, of, take } from 'rxjs';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\nimport { LuDialogConfig, LuDialogData, LuDialogRef, LuDialogResult } from './model';\nimport { DISMISSED_VALUE } from './model/dialog-ref';\n\n@Injectable()\nexport class LuDialogService {\n\t#cdkDialog = inject(Dialog);\n\n\t#injector = inject(Injector);\n\n\topen<C, TData = LuDialogData<C>>(config: LuDialogConfig<C, NoInfer<TData>>): LuDialogRef<C, TData> {\n\t\tlet luDialogRef: LuDialogRef<C, TData>;\n\t\tlet modeClasses: string[] = [];\n\t\tswitch (config.mode) {\n\t\t\tcase 'drawer':\n\t\t\t\tmodeClasses = ['mod-drawer'];\n\t\t\t\tbreak;\n\t\t\tcase 'drawer-from-bottom':\n\t\t\t\tmodeClasses = ['mod-drawer', 'mod-fromBottom'];\n\t\t\t\tbreak;\n\t\t}\n\t\tconst cdkRef = this.#cdkDialog.open(config.content, {\n\t\t\tariaModal: config.modal ?? true,\n\t\t\thasBackdrop: config.modal ?? true,\n\t\t\tdata: 'data' in config ? config.data : null,\n\t\t\tdisableClose: true,\n\t\t\tcloseOnDestroy: true,\n\t\t\trole: config.alert ? 'alertdialog' : 'dialog',\n\t\t\trestoreFocus: true,\n\t\t\tbackdropClass: 'dialog_backdrop',\n\t\t\tpanelClass: ['dialog', `mod-${config.size || 'M'}`, ...modeClasses, ...(config.panelClasses || [])],\n\t\t\tariaLabel: config.ariaLabel,\n\t\t\t// Handle manually\n\t\t\tcloseOnOverlayDetachments: false,\n\t\t\t// If focus is first-input, focus dialog and let the component do the rest\n\t\t\t// Else, just set it to config value or default to first-tabbable\n\t\t\tautoFocus: config.autoFocus === 'first-input' ? 'dialog' : (config.autoFocus ?? 'first-tabbable'),\n\t\t\ttemplateContext: () => ({ dialogRef: luDialogRef }),\n\t\t\tinjector: this.#injector,\n\t\t\tproviders: (ref: DialogRef<LuDialogResult<C>, C>) => {\n\t\t\t\tluDialogRef = new LuDialogRef(ref, config);\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\tprovide: LuDialogRef,\n\t\t\t\t\t\tuseValue: luDialogRef,\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t},\n\t\t\t...(config.cdkConfigOverride || {}),\n\t\t});\n\n\t\tif (cdkRef.componentRef) {\n\t\t\tconst renderer = cdkRef.componentRef.injector.get(Renderer2);\n\t\t\trenderer.setStyle(cdkRef.componentRef.location.nativeElement, 'display', 'contents');\n\t\t}\n\n\t\tif (!config.alert) {\n\t\t\t// Setup close listeners on backdrop click and escape key by ourselves so we can hook the `canClose` method to it.\n\t\t\tmerge(cdkRef.backdropClick, cdkRef.keydownEvents.pipe(filter((e) => e.key === 'Escape' && !e.defaultPrevented)))\n\t\t\t\t.pipe(\n\t\t\t\t\tfilter(() => config.canCloseWithBackdrop ?? true),\n\t\t\t\t\tswitchMap(() => {\n\t\t\t\t\t\tconst canClose = config.canClose?.(cdkRef.componentInstance) ?? true;\n\t\t\t\t\t\tconst canClose$ = isObservable(canClose) ? canClose : of(canClose);\n\t\t\t\t\t\treturn canClose$.pipe(take(1));\n\t\t\t\t\t}),\n\t\t\t\t\ttakeUntil(luDialogRef.closed$),\n\t\t\t\t)\n\t\t\t\t.subscribe((canClose) => {\n\t\t\t\t\tif (canClose) {\n\t\t\t\t\t\tluDialogRef.detachSubscription?.unsubscribe();\n\t\t\t\t\t\tcdkRef.close(DISMISSED_VALUE);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\treturn luDialogRef;\n\t}\n}\n","import { EnvironmentProviders, importProvidersFrom, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { DialogModule } from '@angular/cdk/dialog';\nimport { LuDialogService } from './dialog.service';\n\nexport function configureLuDialog(): EnvironmentProviders {\n\treturn makeEnvironmentProviders([importProvidersFrom(DialogModule)]);\n}\n\nexport function provideLuDialog(): Provider {\n\treturn LuDialogService;\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, inject, ViewEncapsulation } from '@angular/core';\nimport { LuDialogRef } from '../model';\n\n@Component({\n\tselector: 'lu-dialog',\n\tstandalone: true,\n\ttemplate: '<ng-content />',\n\tstyleUrl: './dialog.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'dialog-inside',\n\t},\n})\nexport class DialogComponent implements AfterViewInit {\n\tpublic readonly dialogRef = inject<LuDialogRef>(LuDialogRef);\n\n\t#htmlElement = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n\tclose(): void {\n\t\tthis.dialogRef.close();\n\t}\n\n\tdismiss(): void {\n\t\tthis.dialogRef.dismiss();\n\t}\n\n\tngAfterViewInit(): void {\n\t\tif (this.dialogRef.config.autoFocus === 'first-input' && !this.dialogRef.config.cdkConfigOverride?.autoFocus) {\n\t\t\tconst focusable: HTMLElement =\n\t\t\t\tthis.#htmlElement.querySelector('.luDialog-autofocus .luNativeInput') || this.#htmlElement.querySelector('.luDialog-autofocus') || this.#htmlElement.querySelector('.luNativeInput');\n\t\t\tfocusable?.focus();\n\t\t}\n\t}\n}\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { LuDialogRef } from '../model';\n\n@Directive({\n\tselector: '[luDialogClose]',\n\tstandalone: true,\n})\nexport class DialogCloseDirective {\n\t#ref = inject<LuDialogRef>(LuDialogRef);\n\n\t@HostListener('click')\n\tclose(): void {\n\t\tthis.#ref.close();\n\t}\n}\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { LuDialogRef } from '../model';\n\n@Directive({\n\tselector: '[luDialogDismiss]',\n\tstandalone: true,\n})\nexport class DialogDismissDirective {\n\t#ref = inject<LuDialogRef>(LuDialogRef);\n\n\t@HostListener('click')\n\tclose(): void {\n\t\tthis.#ref.dismiss();\n\t}\n}\n","import { Directive, HostListener, inject, Input, TemplateRef } from '@angular/core';\nimport { LuDialogService } from '../dialog.service';\nimport { LuDialogConfig } from '../model';\nimport { provideLuDialog } from '../dialog.providers';\n\n@Directive({\n\tselector: '[luDialogOpen]',\n\tstandalone: true,\n\tproviders: [provideLuDialog()],\n})\nexport class DialogOpenDirective {\n\t#dialogService = inject(LuDialogService);\n\n\t@Input({\n\t\trequired: true,\n\t\talias: 'luDialogOpen',\n\t})\n\tdialog: TemplateRef<void>;\n\n\t@Input()\n\tluDialogConfig: LuDialogConfig<unknown>;\n\n\t@HostListener('click')\n\tclick(): void {\n\t\tthis.#dialogService.open({\n\t\t\t...this.luDialogConfig,\n\t\t\tcontent: this.dialog,\n\t\t});\n\t}\n}\n","import { ComponentType } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\nimport { Route } from '@angular/router';\nimport { LuDialogConfig, LuDialogData, LuDialogResult } from '../model';\nimport { DialogResolveFn } from './dialog-routing.utils';\n\nexport type DialogRouteComponentLoader<C> =\n\t| {\n\t\t\tcomponent: ComponentType<C>;\n\t }\n\t| {\n\t\t\tloadComponent: () => Promise<ComponentType<C>>;\n\t };\n\nexport type DialogRouteCloseTrigger = 'navigation' | 'dialog:closed';\nexport type DialogRouteDismissTrigger = 'navigation' | 'dialog:dismissed';\n\nexport type DialogRouteConfig<C> = DialogRouteComponentLoader<C> & {\n\tdialogConfigFactory: DialogResolveFn<DialogRouteDialogConfig<C>>;\n\tdataFactory: LuDialogData<C> extends never ? undefined : DialogResolveFn<LuDialogData<C>>;\n\t/**\n\t * When the dialog is closed, this callback is called with the result of the dialog.\n\t * This callback is called within injection context, so you can inject services in it.\n\t *\n\t * If needed, the reason the dialog was closed can retrieved using `inject(DIALOG_ROUTE_CLOSE_TRIGGER)`\n\t */\n\tonClosed?: (res: LuDialogResult<C>) => unknown;\n\t/**\n\t * When the dialog is dismissed, this callback is called.\n\t * This callback is called within injection context, so you can inject services in it.\n\t *\n\t * If needed, the reason the dialog was dismissed can retrieved using `inject(DIALOG_ROUTE_DISMISS_TRIGGER)`\n\t */\n\tonDismissed?: () => unknown;\n} & Omit<Route, 'component' | 'loadComponent'>;\n\nexport type DialogRouteDialogConfig<C> = Omit<LuDialogConfig<C>, 'data' | 'content'>;\n\nexport interface DialogRouteData<C> {\n\tdialogRouteConfig: DialogRouteConfig<C>;\n}\n\nexport const DIALOG_ROUTE_CLOSE_TRIGGER = new InjectionToken<DialogRouteCloseTrigger>('DIALOG_ROUTE_CLOSE_TRIGGER');\nexport const DIALOG_ROUTE_DISMISS_TRIGGER = new InjectionToken<DialogRouteDismissTrigger>('DIALOG_ROUTE_DISMISS_TRIGGER');\nexport const DIALOG_ROUTE_CONFIG = new InjectionToken<DialogRouteConfig<unknown>>('DIALOG_ROUTE_CONFIG');\n","import { ComponentType } from '@angular/cdk/overlay';\nimport { inject } from '@angular/core';\nimport { CanActivate, CanDeactivateFn, DeprecatedGuard, Route } from '@angular/router';\nimport { firstValueFrom, from, isObservable, Observable, of } from 'rxjs';\nimport { LuDialogData } from '../model';\nimport { DialogRoutingContainerComponent } from './dialog-routing.component';\nimport { DialogRouteConfig, DialogRouteData, DialogRouteDialogConfig } from './dialog-routing.models';\n\nexport type Deferrable<T> = Promise<T> | Observable<T> | T;\nexport type DialogResolveFn<T> = () => Deferrable<T>;\n\nexport async function deferrableToPromise<T>(deferrable: Promise<T> | Observable<T> | T): Promise<T> {\n\treturn isObservable(deferrable) ? firstValueFrom(deferrable) : deferrable;\n}\n\nexport function deferrableToObservable<T>(deferrable: Promise<T> | Observable<T> | T): Observable<T> {\n\treturn isObservable(deferrable) ? deferrable : deferrable instanceof Promise ? from(deferrable) : of(deferrable);\n}\n\nexport function createDialogRoute<C>(dialogRouteConfig: DialogRouteConfig<C>): Route {\n\tconst { dialogConfigFactory, dataFactory, ...baseRoute } = dialogRouteConfig;\n\n\tconst data: DialogRouteData<C> = { dialogRouteConfig };\n\n\treturn {\n\t\tpath: dialogRouteConfig.path,\n\t\tcomponent: DialogRoutingContainerComponent,\n\t\tdata,\n\t\tchildren: [\n\t\t\t{\n\t\t\t\t...baseRoute,\n\t\t\t\tpath: '',\n\t\t\t\tcanDeactivate: dialogRouteConfig.canDeactivate\n\t\t\t\t\t?.map((fn) => toCanDeactivateFn(fn))\n\t\t\t\t\t?.map(\n\t\t\t\t\t\t(guard): CanDeactivateFn<C> =>\n\t\t\t\t\t\t\t(dialogComponentInstance, route, state, nextState) => {\n\t\t\t\t\t\t\t\t// If dialogComponentInstance is null, it means the dialog is already closed. We allow deactivation in this case.\n\t\t\t\t\t\t\t\tif (!dialogComponentInstance) {\n\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn guard(dialogComponentInstance, route, state, nextState);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t},\n\t\t],\n\t};\n}\n\nexport type DialogFactoryResultOptions<C> = {\n\tpath: string;\n\tdialogRouteConfig?: Partial<Omit<DialogRouteConfig<C>, 'path' | 'component' | 'loadComponent' | 'dataFactory'>>;\n} & (LuDialogData<C> extends never\n\t? { dataFactory?: never }\n\t: {\n\t\t\tdataFactory: DialogResolveFn<LuDialogData<C>>;\n\t\t});\n\nexport type DialogFactoryResult<C> = (options: DialogFactoryResultOptions<C>) => Route;\n\nexport type DialogFactoryConfig<C> = Partial<{\n\tdialogConfig: DialogRouteDialogConfig<C>;\n\tdialogRouteConfig: Partial<DialogRouteConfig<C>>;\n}>;\n\nexport function dialogRouteFactory<C>(component: ComponentType<C>, config?: DialogFactoryConfig<C>): DialogFactoryResult<C> {\n\treturn ({ path, dataFactory, dialogRouteConfig }) =>\n\t\tcreateDialogRoute<C>({\n\t\t\tpath,\n\t\t\tcomponent,\n\t\t\tdataFactory: dataFactory as LuDialogData<C> extends never ? undefined : DialogResolveFn<LuDialogData<C>>,\n\t\t\tdialogConfigFactory: () => config?.dialogConfig ?? ({} as DialogRouteDialogConfig<C>),\n\t\t\t...mergeRouteConfig(config?.dialogRouteConfig, dialogRouteConfig),\n\t\t});\n}\n\nexport function dialogLazyRouteFactory<C>(loadComponent: () => Promise<ComponentType<C>>, config?: DialogFactoryConfig<C>): DialogFactoryResult<C> {\n\treturn ({ path, dataFactory, dialogRouteConfig }) =>\n\t\tcreateDialogRoute<C>({\n\t\t\tpath,\n\t\t\tloadComponent,\n\t\t\tdataFactory: dataFactory as LuDialogData<C> extends never ? undefined : DialogResolveFn<LuDialogData<C>>,\n\t\t\tdialogConfigFactory: () => config?.dialogConfig ?? ({} as DialogRouteDialogConfig<C>),\n\t\t\t...mergeRouteConfig(config?.dialogRouteConfig, dialogRouteConfig),\n\t\t});\n}\n\nfunction mergeRouteConfig<C>(config1: Partial<DialogRouteConfig<C>>, config2: Partial<DialogRouteConfig<C>>): Partial<DialogRouteConfig<C>> {\n\tif (!config1) {\n\t\treturn config2;\n\t}\n\n\tif (!config2) {\n\t\treturn config1;\n\t}\n\n\tconst result: Partial<DialogRouteConfig<C>> = { ...config1, ...config2 };\n\n\t// If both configs have the same key, we merge the arrays\n\tconst mergedArrays = (['providers', 'canActivate', 'children', 'canDeactivate', 'canLoad', 'canActivateChild'] as const satisfies Array<keyof Route>).filter(\n\t\t(key) => key in config1 && key in config2,\n\t);\n\n\tfor (const key of mergedArrays) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tresult[key] = [...(config1[key] ?? []), ...(config2[key] ?? [])] as any[];\n\t}\n\n\t// If both configs have the same data key, we merge the objects\n\tif (config1.data && config2.data) {\n\t\tresult.data = { ...config1.data, ...config2.data };\n\t}\n\n\t// If both configs have the same resolve key, we merge the objects\n\tif (config1.resolve && config2.resolve) {\n\t\tresult.resolve = { ...config1.resolve, ...config2.resolve };\n\t}\n\n\treturn result;\n}\n\nexport function toCanDeactivateFn<C>(guard: DeprecatedGuard | CanDeactivateFn<C>): CanDeactivateFn<C> {\n\tif (typeof guard === 'string') {\n\t\tthrow new Error('String guards are not supported in dialog routes');\n\t}\n\n\ttry {\n\t\tconst deprectedGuard = inject(guard) as CanActivate;\n\t\treturn (_component, currentRoute, _currentState, nextState) => deprectedGuard.canActivate(currentRoute, nextState);\n\t} catch {\n\t\treturn guard as CanDeactivateFn<C>;\n\t}\n}\n","import { assertInInjectionContext, ChangeDetectionStrategy, Component, DestroyRef, inject, Injector, OnDestroy, OnInit, runInInjectionContext, signal, TemplateRef, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, CanDeactivateFn, DeprecatedGuard, GuardResult, Router, RouterOutlet } from '@angular/router';\nimport { combineLatest, concat, map, Observable, of } from 'rxjs';\nimport { provideLuDialog } from '../dialog.providers';\nimport { LuDialogService } from '../dialog.service';\nimport { LuDialogRef, LuDialogResult } from '../model';\nimport {\n\tDIALOG_ROUTE_CLOSE_TRIGGER,\n\tDIALOG_ROUTE_CONFIG,\n\tDIALOG_ROUTE_DISMISS_TRIGGER,\n\tDialogRouteCloseTrigger,\n\tDialogRouteData,\n\tDialogRouteDialogConfig,\n\tDialogRouteDismissTrigger,\n} from './dialog-routing.models';\nimport { deferrableToObservable, deferrableToPromise, DialogResolveFn, toCanDeactivateFn } from './dialog-routing.utils';\n\n/**\n * Default onClosed/onDismissed function that navigates back to the parent route when the dialog is closed or dismissed.\n */\nexport function defaultOnClosedFn(): void;\n/**\n * Default onClosed/onDismissed function that navigates back to the parent route when the dialog is closed or dismissed.\n * @deprecated Use non-generic version instead.\n */\nexport function defaultOnClosedFn<_C>(): void;\nexport function defaultOnClosedFn<C>(): void {\n\tlet trigger: DialogRouteCloseTrigger | DialogRouteDismissTrigger | null = null;\n\n\ttry {\n\t\tassertInInjectionContext(defaultOnClosedFn);\n\t\ttrigger = inject(DIALOG_ROUTE_CLOSE_TRIGGER, { optional: true }) ?? inject(DIALOG_ROUTE_DISMISS_TRIGGER, { optional: true });\n\t} catch {\n\t\t// Not in injection context, do nothing\n\t}\n\n\tif (trigger === 'navigation') {\n\t\t// If the dialog is closed because of a navigation, we don't need to do anything.\n\t\t// It would cancel the navigation that is already in progress.\n\t\treturn;\n\t}\n\n\tconst router = inject(Router);\n\tconst route = inject(ActivatedRoute);\n\tconst routeData = route.snapshot.data as DialogRouteData<C>;\n\tconst next = routeData.dialogRouteConfig.path\n\t\t.split('/')\n\t\t.map(() => '..')\n\t\t.join('/');\n\n\treturn void router.navigate([next], {\n\t\trelativeTo: route.children[0],\n\t\tqueryParamsHandling: 'preserve',\n\t});\n}\n\n@Component({\n\tselector: 'lu-dialog-routing-container',\n\timports: [RouterOutlet],\n\ttemplate: `\n\t\t<ng-template>\n\t\t\t<router-outlet (activate)=\"dialogComponentInstance.set($event)\" (deactivate)=\"dialogComponentInstance.set(null)\" />\n\t\t</ng-template>\n\t`,\n\tstyles: [\n\t\t`\n\t\t\t:host {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t`,\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tproviders: [\n\t\tprovideLuDialog(),\n\t\t{\n\t\t\tprovide: DIALOG_ROUTE_CONFIG,\n\t\t\tuseFactory: () => inject(DialogRoutingContainerComponent).config,\n\t\t},\n\t],\n})\nexport class DialogRoutingContainerComponent<C> implements OnDestroy, OnInit {\n\treadonly #route = inject(ActivatedRoute);\n\treadonly #router = inject(Router);\n\treadonly #destroyRef = inject(DestroyRef);\n\treadonly #dialog = inject(LuDialogService);\n\treadonly injector = inject(Injector);\n\treadonly config = this.#routeData.dialogRouteConfig;\n\tprotected readonly dialogComponentInstance = signal<C | null>(null);\n\tprotected readonly dialogTemplate = viewChild.required(TemplateRef);\n\t#closeTrigger?: DialogRouteCloseTrigger | DialogRouteDismissTrigger;\n\n\t#ref?: LuDialogRef<C>;\n\n\tget #routeData(): DialogRouteData<C> {\n\t\treturn this.#route.snapshot.data as DialogRouteData<C>;\n\t}\n\n\tngOnInit(): void {\n\t\tvoid this.#openDialog();\n\t}\n\n\t/**\n\t * In this context, ngOnDestroy is called when the user navigates away from the route.\n\t * The navigation can be triggered:\n\t * - from within the dialog (#ref.dismissed => config.onClosed/defaultOnClosedFn/config.onDismissed/defaultOnClosedFn => ngOnDestroy)\n\t * - from router navigation (ngOnDestroy => #ref.dismissed => config.onDismissed/defaultOnClosedFn)\n\t */\n\tngOnDestroy(): void {\n\t\tthis.#closeTrigger ??= 'navigation';\n\t\tthis.#ref?.dismiss();\n\t}\n\n\tasync #openDialog(): Promise<void> {\n\t\tconst [data, dialogConfig] = await Promise.all([this.#resolve(this.config.dataFactory), this.#resolve(this.config.dialogConfigFactory)]);\n\n\t\tthis.#ref = this.#dialog.open<C>({\n\t\t\t...dialogConfig,\n\t\t\tcontent: this.dialogTemplate(),\n\t\t\tdata,\n\t\t\tcanClose: this.#getCanCloseFn(dialogConfig),\n\t\t});\n\n\t\tthis.#ref.result$.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((result) => this.#onDialogClosed(result));\n\t\tthis.#ref.dismissed$.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => this.#onDialogDismissed());\n\t}\n\n\t#getCanCloseFn(config: DialogRouteDialogConfig<C>): ((c: C) => Observable<boolean>) | undefined {\n\t\tconst canCloseFns: ((c: C) => Observable<boolean>)[] = [];\n\n\t\tif (config.canClose) {\n\t\t\tcanCloseFns.push((c: C) => deferrableToObservable(config.canClose(c)));\n\t\t}\n\n\t\tif (this.config.canDeactivate) {\n\t\t\tcanCloseFns.push(this.#getCanCloseFromGuardDialogFn(this.config.canDeactivate));\n\t\t}\n\n\t\treturn canCloseFns.length ? (c: C) => combineLatest(canCloseFns.map((fn) => fn(c))).pipe(map((results) => results.every((r) => r))) : undefined;\n\t}\n\n\t#getCanCloseFromGuardDialogFn(canDeactivate: (CanDeactivateFn<C> | DeprecatedGuard)[]): () => Observable<boolean> {\n\t\treturn () => {\n\t\t\tconst results$ = canDeactivate.map((cD) => this.callCanDeactivateFn(cD));\n\n\t\t\treturn concat(...results$).pipe(\n\t\t\t\tmap((guardResult) => {\n\t\t\t\t\tif (typeof guardResult === 'boolean') {\n\t\t\t\t\t\treturn guardResult;\n\t\t\t\t\t}\n\t\t\t\t\tvoid this.#router.navigate([guardResult]);\n\t\t\t\t\treturn true;\n\t\t\t\t}),\n\t\t\t);\n\t\t};\n\t}\n\n\tcallCanDeactivateFn(canDeactivateFn: CanDeactivateFn<C> | DeprecatedGuard): Observable<GuardResult> {\n\t\tconst instance = this.dialogComponentInstance();\n\n\t\tif (!instance) {\n\t\t\t// If instance is null, it means the dialog is already closed. We allow deactivation in this case.\n\t\t\treturn of(true);\n\t\t}\n\n\t\tconst maybeAsyncResult = runInInjectionContext(this.injector, () => {\n\t\t\tconst canDeactivate = toCanDeactivateFn(canDeactivateFn);\n\t\t\treturn canDeactivate(instance, this.#route.snapshot, this.#router.routerState.snapshot, this.#router.routerState.snapshot);\n\t\t});\n\t\treturn deferrableToObservable(maybeAsyncResult);\n\t}\n\n\t#onDialogDismissed(): void {\n\t\tthis.#closeTrigger ??= 'dialog:dismissed';\n\n\t\tif (this.#closeTrigger === 'dialog:closed') {\n\t\t\tthrow new Error('Dialog cannot be both closed and dismissed');\n\t\t}\n\n\t\tconst injector = Injector.create({\n\t\t\tparent: this.injector,\n\t\t\tproviders: [{ provide: DIALOG_ROUTE_DISMISS_TRIGGER, useValue: this.#closeTrigger }],\n\t\t});\n\n\t\trunInInjectionContext(injector, () => {\n\t\t\tif (this.config.onDismissed) {\n\t\t\t\tthis.config.onDismissed();\n\t\t\t} else {\n\t\t\t\tdefaultOnClosedFn();\n\t\t\t}\n\t\t});\n\n\t\tthis.#ref = undefined;\n\t}\n\n\t#onDialogClosed(result: LuDialogResult<C>): void {\n\t\tthis.#closeTrigger ??= 'dialog:closed';\n\n\t\tif (this.#closeTrigger === 'dialog:dismissed') {\n\t\t\tthrow new Error('Dialog cannot be both closed and dismissed');\n\t\t}\n\n\t\tconst injector = Injector.create({\n\t\t\tparent: this.injector,\n\t\t\tproviders: [{ provide: DIALOG_ROUTE_CLOSE_TRIGGER, useValue: this.#closeTrigger }],\n\t\t});\n\n\t\trunInInjectionContext(injector, () => {\n\t\t\tif (this.config.onClosed) {\n\t\t\t\tthis.config.onClosed(result);\n\t\t\t} else {\n\t\t\t\tdefaultOnClosedFn();\n\t\t\t}\n\t\t});\n\n\t\tthis.#ref = undefined;\n\t}\n\n\tasync #resolve<T>(resolveFn: DialogResolveFn<T>): Promise<T | undefined> {\n\t\tif (!resolveFn) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst resolved = runInInjectionContext(this.injector, resolveFn);\n\t\treturn deferrableToPromise(resolved);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map"],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-dialog.mjs","sources":["../../../packages/ng/dialog/dialog-content/dialog-content.component.ts","../../../packages/ng/dialog/dialog-footer/dialog-footer.component.ts","../../../packages/ng/dialog/model/dialog-config.ts","../../../packages/ng/dialog/model/dialog-ref.ts","../../../packages/ng/dialog/model/injectors.ts","../../../packages/ng/dialog/dialog-header/translations.ts","../../../packages/ng/dialog/dialog-header/dialog-header.translate.ts","../../../packages/ng/dialog/dialog-header/dialog-header.component.ts","../../../packages/ng/dialog/dialog-header/dialog-header.component.html","../../../packages/ng/dialog/dialog.service.ts","../../../packages/ng/dialog/dialog.providers.ts","../../../packages/ng/dialog/dialog/dialog.component.ts","../../../packages/ng/dialog/directives/dialog-close.directive.ts","../../../packages/ng/dialog/directives/dialog-dismiss.directive.ts","../../../packages/ng/dialog/directives/dialog-open.directive.ts","../../../packages/ng/dialog/dialog-routing/dialog-routing.models.ts","../../../packages/ng/dialog/dialog-routing/dialog-routing.utils.ts","../../../packages/ng/dialog/dialog-routing/dialog-routing.component.ts","../../../packages/ng/dialog/lucca-front-ng-dialog.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n\tselector: 'lu-dialog-content',\n\tstandalone: true,\n\ttemplate: '<ng-content />',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'dialog-inside-content',\n\t},\n})\nexport class DialogContentComponent {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n\tselector: 'lu-dialog-footer',\n\tstandalone: true,\n\ttemplate: `<ng-content />`,\n\tstyleUrl: './dialog-footer.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'dialog-inside-footer footer',\n\t},\n})\nexport class DialogFooterComponent {}\n","import { AutoFocusTarget, DialogConfig } from '@angular/cdk/dialog';\nimport { ComponentType } from '@angular/cdk/overlay';\nimport { TemplateRef } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nconst ɵdialogData = Symbol.for('luDialogData');\nconst ɵdialogResult = Symbol.for('luDialogResult');\n\nexport type ɵDialogDataFlag = { [ɵdialogData]: unknown };\nexport type ɵDialogResultFlag<R> = { [ɵdialogResult]: R };\n\nexport type LuDialogData<T> = {\n\t[K in keyof T]: T[K] extends ɵDialogDataFlag ? Omit<T[K], typeof ɵdialogData> : never;\n}[keyof T];\n\ntype DialogRefProps<C> = { [K in keyof C]: C[K] extends ɵDialogResultFlag<unknown> ? K : never }[keyof C] & keyof C;\nexport type LuDialogResult<C> = DialogRefProps<C> extends never ? void : C[DialogRefProps<C>] extends ɵDialogResultFlag<infer T> ? T : void;\n\ninterface BaseLuDialogConfig<C, TData = LuDialogData<C>> {\n\t/**\n\t * The component or template to put inside the dialog container\n\t */\n\tcontent: ComponentType<C> | TemplateRef<C>;\n\n\t/**\n\t * Data to pass to the component, will be required if the component used `injectDialogData` in a field, specifying the data that's needed.\n\t */\n\tdata: TData;\n\n\t/**\n\t * Should we put a backdrop? Defaults to true\n\t */\n\tmodal?: boolean;\n\n\t/**\n\t * Is this dialog a blocking popup that cannot be dismissed ?\n\t *\n\t * Defaults to false, setting this to true will also remove the close button in the header\n\t * if you're using `lu-dialog-header`.\n\t */\n\talert?: boolean;\n\n\t/**\n\t * Can be used if you don't have a header or aren't using the default one, to set an aria-label\n\t * instead of aria-labelledby on the dialog container\n\t */\n\tariaLabel?: string;\n\n\t/**\n\t * Autofocus target\n\t *\n\t * Defaults to the close button from the header, first-input is added by us to focus the first available input\n\t * or the first input that is contained inside a node that has the `.luDialog-autofocus` class\n\t */\n\tautoFocus?: AutoFocusTarget | 'first-input' | string;\n\n\t/**\n\t * This provides a way to override any of the configuration parameters expected by cdk's `Dialog.open` method.\n\t *\n\t * WARNING: this will take full authority and override with your values no matter what's computed by LuDialogService,\n\t * use with caution.\n\t */\n\tcdkConfigOverride?: DialogConfig<C>;\n\n\t/**\n\t * A hook function to determine if the current dialog can be closed or not, if provided.\n\t *\n\t * @param comp the instance of the component that's inside the dialog box.\n\t */\n\tcanClose?: (comp: C) => boolean | Observable<boolean>;\n\n\t/**\n\t * Determine if the current dialog can be close by a click on backdrop or escape key\n\t */\n\tcanCloseWithBackdrop?: boolean;\n\n\t/**\n\t * The size of the panel used for the dialog\n\t */\n\tsize?: 'XS' | 'S' | 'M' | 'L' | 'XL' | 'XXL' | 'fitContent' | `maxContent` | 'fullScreen';\n\n\t/**\n\t * Should it be a modal (default), a drawer? a drawer from bottom?\n\t */\n\tmode?: 'default' | 'drawer' | 'drawer-from-bottom';\n\n\t/**\n\t * Classes to add to the panel\n\t */\n\tpanelClasses?: string[];\n}\n\nexport type LuDialogConfig<T, TData = LuDialogData<T>> = [TData] extends [never] ? Omit<BaseLuDialogConfig<T, TData>, 'data'> : BaseLuDialogConfig<T, TData>;\n","import { DialogRef } from '@angular/cdk/dialog';\nimport { isObservable, Observable, of, Subscription, take } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { LuDialogConfig, LuDialogData, LuDialogResult } from './dialog-config';\n\nexport const DISMISSED_VALUE = {} as const;\n\nfunction isDismissed(v: unknown): v is typeof DISMISSED_VALUE {\n\treturn v === DISMISSED_VALUE;\n}\n\nexport class LuDialogRef<C = unknown, TData = LuDialogData<C>> {\n\t/**\n\t * Instance of the component that's inside the dialog\n\t */\n\tget instance(): C {\n\t\treturn this.cdkRef.componentInstance;\n\t}\n\n\t/**\n\t * Subscription to the detachments of the dialog\n\t * This is used to close the dialog when it is detached\n\t */\n\tdetachSubscription: Subscription | null = null;\n\n\t/**\n\t * Emits when the dialog is closed\n\t *\n\t * Emits either the output of result$ or undefined depending on how it has been closed\n\t */\n\tclosed$: Observable<LuDialogResult<C> | undefined> = this.cdkRef.closed.pipe(map((res): LuDialogResult<C> | undefined => (isDismissed(res) ? undefined : res)));\n\n\t/**\n\t * Emits void when the dialog is dismissed\n\t */\n\tdismissed$: Observable<void> = this.cdkRef.closed.pipe(\n\t\tfilter((res) => res === DISMISSED_VALUE),\n\t\tmap((): void => undefined),\n\t);\n\n\t/**\n\t * Emits the result if it has a value that's not DISMISSED_VALUE\n\t */\n\tresult$: Observable<LuDialogResult<C>> = this.cdkRef.closed.pipe(filter((res): res is LuDialogResult<C> => !isDismissed(res)));\n\n\tconstructor(\n\t\tpublic readonly cdkRef: DialogRef<LuDialogResult<C> | typeof DISMISSED_VALUE, C>,\n\t\tpublic readonly config: LuDialogConfig<C, TData>,\n\t) {\n\t\tthis.detachSubscription = cdkRef.overlayRef\n\t\t\t.detachments()\n\t\t\t.pipe(takeUntil(this.closed$))\n\t\t\t.subscribe(() => {\n\t\t\t\tcdkRef.close(DISMISSED_VALUE);\n\t\t\t});\n\t}\n\n\tdismiss(): void {\n\t\t// If we can't dismiss this dialog box, just ignore the dismiss call.\n\t\tif (this.config.alert) {\n\t\t\treturn;\n\t\t}\n\t\tconst canClose = this.config.canClose?.(this.instance) ?? true;\n\t\tconst canClose$ = isObservable(canClose) ? canClose : of(canClose);\n\t\tcanClose$.pipe(take(1)).subscribe((close) => {\n\t\t\tif (close) {\n\t\t\t\tthis.detachSubscription?.unsubscribe();\n\t\t\t\tthis.cdkRef.close(DISMISSED_VALUE);\n\t\t\t}\n\t\t});\n\t}\n\n\tclose(res: LuDialogResult<C>): void {\n\t\tthis.detachSubscription?.unsubscribe();\n\t\tthis.cdkRef.close(res);\n\t}\n}\n\nexport type LuDialogSelfRef<R> = { dismiss(): void; close(res: R): void };\n","import { DIALOG_DATA } from '@angular/cdk/dialog';\nimport { inject } from '@angular/core';\nimport { ɵDialogDataFlag, ɵDialogResultFlag } from './dialog-config';\nimport { LuDialogRef, LuDialogSelfRef } from './dialog-ref';\n\nexport function injectDialogData<TData>(): TData & ɵDialogDataFlag {\n\treturn inject<TData & ɵDialogDataFlag>(DIALOG_DATA);\n}\n\nexport function injectDialogRef<R = void>(): LuDialogSelfRef<R> & ɵDialogResultFlag<R> {\n\treturn inject<LuDialogSelfRef<R>>(LuDialogRef) as LuDialogSelfRef<R> & ɵDialogResultFlag<R>;\n}\n","export const Translations = {\n\ten: {\n\t\tclose: 'Close',\n\t},\n\tde: {\n\t\tclose: 'Schließen',\n\t},\n\tfr: {\n\t\tclose: 'Fermer',\n\t},\n\tit: {\n\t\tclose: 'Chiudere',\n\t},\n\tnl: {\n\t\tclose: 'Sluiten',\n\t},\n\t'nl-BE': {\n\t\tclose: 'Sluiten',\n\t},\n\tes: {\n\t\tclose: 'Cerrar',\n\t},\n\tpt: {\n\t\tclose: 'Fechar',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_DIALOG_HEADER_TRANSLATIONS = new InjectionToken('LuDialogHeaderTranslations', {\n\tfactory: () => luDialogHeaderTranslations,\n});\n\nexport interface LuDialogHeaderTranslations {\n\tclose: string;\n}\n\nexport const luDialogHeaderTranslations: LuTranslation<LuDialogHeaderTranslations> = Translations;\n","import { CdkDialogContainer } from '@angular/cdk/dialog';\nimport { ChangeDetectionStrategy, Component, contentChild, Directive, ElementRef, inject, OnInit, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuDialogRef } from '../model';\nimport { LU_DIALOG_HEADER_TRANSLATIONS } from './dialog-header.translate';\n\nlet nextId = 0;\n\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: '[dialogHeaderAction]',\n})\nexport class DialogHeaderAction {}\n\n@Component({\n\tselector: 'lu-dialog-header',\n\tstandalone: true,\n\timports: [IconComponent],\n\ttemplateUrl: './dialog-header.component.html',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'dialog-inside-header',\n\t},\n})\nexport class DialogHeaderComponent implements OnInit {\n\t#ref = inject(LuDialogRef);\n\n\tintl = getIntl(LU_DIALOG_HEADER_TRANSLATIONS);\n\n\tdismissible = !this.#ref.config.alert;\n\n\t#elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t#renderer = inject(Renderer2);\n\n\tclose(): void {\n\t\tthis.#ref.dismiss();\n\t}\n\n\toptionalAction = contentChild(DialogHeaderAction);\n\n\tngOnInit(): void {\n\t\t// Using setTimeout here to make sure this will be handled in the next Cd cycle, not the current one.\n\t\tsetTimeout(() => {\n\t\t\tconst header = this.#elementRef.nativeElement.querySelector('h1');\n\t\t\tconst id = header?.id || `lu-dialog-header-${nextId++}`;\n\t\t\tif (header) {\n\t\t\t\tthis.#renderer.setAttribute(header, 'id', id);\n\t\t\t\tthis.#renderer.addClass(header, 'dialog-inside-header-container-title');\n\t\t\t}\n\t\t\t(this.#ref.cdkRef.containerInstance as CdkDialogContainer)?._addAriaLabelledBy(id);\n\t\t});\n\t}\n}\n","@if (dismissible) {\n\t<button class=\"dialog-inside-header-button button\" type=\"button\" (click)=\"close()\">\n\t\t<lu-icon icon=\"signClose\" [alt]=\"intl.close\" />\n\t</button>\n}\n@if (optionalAction()) {\n\t<div class=\"dialog-inside-header-actionOptional\"><ng-content select=\"[dialogHeaderAction]\" /></div>\n}\n\n<div class=\"dialog-inside-header-container\">\n\t<ng-content />\n</div>\n","import { Dialog, DialogRef } from '@angular/cdk/dialog';\nimport { inject, Injectable, Injector, Renderer2 } from '@angular/core';\nimport { isObservable, merge, of, take } from 'rxjs';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\nimport { LuDialogConfig, LuDialogData, LuDialogRef, LuDialogResult } from './model';\nimport { DISMISSED_VALUE } from './model/dialog-ref';\n\n@Injectable()\nexport class LuDialogService {\n\t#cdkDialog = inject(Dialog);\n\n\t#injector = inject(Injector);\n\n\topen<C, TData = LuDialogData<C>>(config: LuDialogConfig<C, NoInfer<TData>>): LuDialogRef<C, TData> {\n\t\tlet luDialogRef: LuDialogRef<C, TData>;\n\t\tlet modeClasses: string[] = [];\n\t\tswitch (config.mode) {\n\t\t\tcase 'drawer':\n\t\t\t\tmodeClasses = ['mod-drawer'];\n\t\t\t\tbreak;\n\t\t\tcase 'drawer-from-bottom':\n\t\t\t\tmodeClasses = ['mod-drawer', 'mod-fromBottom'];\n\t\t\t\tbreak;\n\t\t}\n\t\tconst cdkRef = this.#cdkDialog.open(config.content, {\n\t\t\tariaModal: config.modal ?? true,\n\t\t\thasBackdrop: config.modal ?? true,\n\t\t\tdata: 'data' in config ? config.data : null,\n\t\t\tdisableClose: true,\n\t\t\tcloseOnDestroy: true,\n\t\t\trole: config.alert ? 'alertdialog' : 'dialog',\n\t\t\trestoreFocus: true,\n\t\t\tbackdropClass: 'dialog_backdrop',\n\t\t\tpanelClass: ['dialog', `mod-${config.size || 'M'}`, ...modeClasses, ...(config.panelClasses || [])],\n\t\t\tariaLabel: config.ariaLabel,\n\t\t\t// Handle manually\n\t\t\tcloseOnOverlayDetachments: false,\n\t\t\t// If focus is first-input, focus dialog and let the component do the rest\n\t\t\t// Else, just set it to config value or default to first-tabbable\n\t\t\tautoFocus: config.autoFocus === 'first-input' ? 'dialog' : (config.autoFocus ?? 'first-tabbable'),\n\t\t\ttemplateContext: () => ({ dialogRef: luDialogRef }),\n\t\t\tinjector: this.#injector,\n\t\t\tproviders: (ref: DialogRef<LuDialogResult<C>, C>) => {\n\t\t\t\tluDialogRef = new LuDialogRef(ref, config);\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\tprovide: LuDialogRef,\n\t\t\t\t\t\tuseValue: luDialogRef,\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t},\n\t\t\t...(config.cdkConfigOverride || {}),\n\t\t});\n\n\t\tif (cdkRef.componentRef) {\n\t\t\tconst renderer = cdkRef.componentRef.injector.get(Renderer2);\n\t\t\trenderer.setStyle(cdkRef.componentRef.location.nativeElement, 'display', 'contents');\n\t\t}\n\n\t\tif (!config.alert) {\n\t\t\t// Setup close listeners on backdrop click and escape key by ourselves so we can hook the `canClose` method to it.\n\t\t\tmerge(cdkRef.backdropClick, cdkRef.keydownEvents.pipe(filter((e) => e.key === 'Escape' && !e.defaultPrevented)))\n\t\t\t\t.pipe(\n\t\t\t\t\tfilter(() => config.canCloseWithBackdrop ?? true),\n\t\t\t\t\tswitchMap(() => {\n\t\t\t\t\t\tconst canClose = config.canClose?.(cdkRef.componentInstance) ?? true;\n\t\t\t\t\t\tconst canClose$ = isObservable(canClose) ? canClose : of(canClose);\n\t\t\t\t\t\treturn canClose$.pipe(take(1));\n\t\t\t\t\t}),\n\t\t\t\t\ttakeUntil(luDialogRef.closed$),\n\t\t\t\t)\n\t\t\t\t.subscribe((canClose) => {\n\t\t\t\t\tif (canClose) {\n\t\t\t\t\t\tluDialogRef.detachSubscription?.unsubscribe();\n\t\t\t\t\t\tcdkRef.close(DISMISSED_VALUE);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\treturn luDialogRef;\n\t}\n}\n","import { EnvironmentProviders, importProvidersFrom, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { DialogModule } from '@angular/cdk/dialog';\nimport { LuDialogService } from './dialog.service';\n\nexport function configureLuDialog(): EnvironmentProviders {\n\treturn makeEnvironmentProviders([importProvidersFrom(DialogModule)]);\n}\n\nexport function provideLuDialog(): Provider {\n\treturn LuDialogService;\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, inject, ViewEncapsulation } from '@angular/core';\nimport { LuDialogRef } from '../model';\n\n@Component({\n\tselector: 'lu-dialog',\n\tstandalone: true,\n\ttemplate: '<ng-content />',\n\tstyleUrl: './dialog.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'dialog-inside',\n\t},\n})\nexport class DialogComponent implements AfterViewInit {\n\tpublic readonly dialogRef = inject<LuDialogRef>(LuDialogRef);\n\n\t#htmlElement = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n\tclose(): void {\n\t\tthis.dialogRef.close();\n\t}\n\n\tdismiss(): void {\n\t\tthis.dialogRef.dismiss();\n\t}\n\n\tngAfterViewInit(): void {\n\t\tif (this.dialogRef.config.autoFocus === 'first-input' && !this.dialogRef.config.cdkConfigOverride?.autoFocus) {\n\t\t\tconst focusable: HTMLElement =\n\t\t\t\tthis.#htmlElement.querySelector('.luDialog-autofocus .luNativeInput') || this.#htmlElement.querySelector('.luDialog-autofocus') || this.#htmlElement.querySelector('.luNativeInput');\n\t\t\tfocusable?.focus();\n\t\t}\n\t}\n}\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { LuDialogRef } from '../model';\n\n@Directive({\n\tselector: '[luDialogClose]',\n\tstandalone: true,\n})\nexport class DialogCloseDirective {\n\t#ref = inject<LuDialogRef>(LuDialogRef);\n\n\t@HostListener('click')\n\tclose(): void {\n\t\tthis.#ref.close();\n\t}\n}\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { LuDialogRef } from '../model';\n\n@Directive({\n\tselector: '[luDialogDismiss]',\n\tstandalone: true,\n})\nexport class DialogDismissDirective {\n\t#ref = inject<LuDialogRef>(LuDialogRef);\n\n\t@HostListener('click')\n\tclose(): void {\n\t\tthis.#ref.dismiss();\n\t}\n}\n","import { Directive, HostListener, inject, Input, TemplateRef } from '@angular/core';\nimport { LuDialogService } from '../dialog.service';\nimport { LuDialogConfig } from '../model';\nimport { provideLuDialog } from '../dialog.providers';\n\n@Directive({\n\tselector: '[luDialogOpen]',\n\tstandalone: true,\n\tproviders: [provideLuDialog()],\n})\nexport class DialogOpenDirective {\n\t#dialogService = inject(LuDialogService);\n\n\t@Input({\n\t\trequired: true,\n\t\talias: 'luDialogOpen',\n\t})\n\tdialog: TemplateRef<void>;\n\n\t@Input()\n\tluDialogConfig: LuDialogConfig<unknown>;\n\n\t@HostListener('click')\n\tclick(): void {\n\t\tthis.#dialogService.open({\n\t\t\t...this.luDialogConfig,\n\t\t\tcontent: this.dialog,\n\t\t});\n\t}\n}\n","import { ComponentType } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\nimport { Route } from '@angular/router';\nimport { LuDialogConfig, LuDialogData, LuDialogResult } from '../model';\nimport { DialogResolveFn } from './dialog-routing.utils';\n\nexport type DialogRouteComponentLoader<C> =\n\t| {\n\t\t\tcomponent: ComponentType<C>;\n\t }\n\t| {\n\t\t\tloadComponent: () => Promise<ComponentType<C>>;\n\t };\n\nexport type DialogRouteCloseTrigger = 'navigation' | 'dialog:closed';\nexport type DialogRouteDismissTrigger = 'navigation' | 'dialog:dismissed';\n\nexport type DialogRouteConfig<C> = DialogRouteComponentLoader<C> & {\n\tdialogConfigFactory: DialogResolveFn<DialogRouteDialogConfig<C>>;\n\tdataFactory: LuDialogData<C> extends never ? undefined : DialogResolveFn<LuDialogData<C>>;\n\t/**\n\t * When the dialog is closed, this callback is called with the result of the dialog.\n\t * This callback is called within injection context, so you can inject services in it.\n\t *\n\t * If needed, the reason the dialog was closed can retrieved using `inject(DIALOG_ROUTE_CLOSE_TRIGGER)`\n\t */\n\tonClosed?: (res: LuDialogResult<C>) => unknown;\n\t/**\n\t * When the dialog is dismissed, this callback is called.\n\t * This callback is called within injection context, so you can inject services in it.\n\t *\n\t * If needed, the reason the dialog was dismissed can retrieved using `inject(DIALOG_ROUTE_DISMISS_TRIGGER)`\n\t */\n\tonDismissed?: () => unknown;\n} & Omit<Route, 'component' | 'loadComponent'>;\n\nexport type DialogRouteDialogConfig<C> = Omit<LuDialogConfig<C>, 'data' | 'content'>;\n\nexport interface DialogRouteData<C> {\n\tdialogRouteConfig: DialogRouteConfig<C>;\n}\n\nexport const DIALOG_ROUTE_CLOSE_TRIGGER = new InjectionToken<DialogRouteCloseTrigger>('DIALOG_ROUTE_CLOSE_TRIGGER');\nexport const DIALOG_ROUTE_DISMISS_TRIGGER = new InjectionToken<DialogRouteDismissTrigger>('DIALOG_ROUTE_DISMISS_TRIGGER');\nexport const DIALOG_ROUTE_CONFIG = new InjectionToken<DialogRouteConfig<unknown>>('DIALOG_ROUTE_CONFIG');\n","import { ComponentType } from '@angular/cdk/overlay';\nimport { inject } from '@angular/core';\nimport { CanActivate, CanDeactivateFn, DeprecatedGuard, Route } from '@angular/router';\nimport { firstValueFrom, from, isObservable, Observable, of } from 'rxjs';\nimport { LuDialogData } from '../model';\nimport { DialogRoutingContainerComponent } from './dialog-routing.component';\nimport { DialogRouteConfig, DialogRouteData, DialogRouteDialogConfig } from './dialog-routing.models';\n\nexport type Deferrable<T> = Promise<T> | Observable<T> | T;\nexport type DialogResolveFn<T> = () => Deferrable<T>;\n\nexport async function deferrableToPromise<T>(deferrable: Promise<T> | Observable<T> | T): Promise<T> {\n\treturn isObservable(deferrable) ? firstValueFrom(deferrable) : deferrable;\n}\n\nexport function deferrableToObservable<T>(deferrable: Promise<T> | Observable<T> | T): Observable<T> {\n\treturn isObservable(deferrable) ? deferrable : deferrable instanceof Promise ? from(deferrable) : of(deferrable);\n}\n\nexport function createDialogRoute<C>(dialogRouteConfig: DialogRouteConfig<C>): Route {\n\tconst { dialogConfigFactory, dataFactory, canMatch, ...baseRoute } = dialogRouteConfig;\n\n\tconst data: DialogRouteData<C> = { dialogRouteConfig };\n\n\treturn {\n\t\tpath: dialogRouteConfig.path,\n\t\tcomponent: DialogRoutingContainerComponent,\n\t\tdata,\n\t\tcanMatch,\n\t\tchildren: [\n\t\t\t{\n\t\t\t\t...baseRoute,\n\t\t\t\tpath: '',\n\t\t\t\tcanDeactivate: dialogRouteConfig.canDeactivate\n\t\t\t\t\t?.map((fn) => toCanDeactivateFn(fn))\n\t\t\t\t\t?.map(\n\t\t\t\t\t\t(guard): CanDeactivateFn<C> =>\n\t\t\t\t\t\t\t(dialogComponentInstance, route, state, nextState) => {\n\t\t\t\t\t\t\t\t// If dialogComponentInstance is null, it means the dialog is already closed. We allow deactivation in this case.\n\t\t\t\t\t\t\t\tif (!dialogComponentInstance) {\n\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn guard(dialogComponentInstance, route, state, nextState);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t},\n\t\t],\n\t};\n}\n\nexport type DialogFactoryResultOptions<C> = {\n\tpath: string;\n\tdialogRouteConfig?: Partial<Omit<DialogRouteConfig<C>, 'path' | 'component' | 'loadComponent' | 'dataFactory'>>;\n} & (LuDialogData<C> extends never\n\t? { dataFactory?: never }\n\t: {\n\t\t\tdataFactory: DialogResolveFn<LuDialogData<C>>;\n\t\t});\n\nexport type DialogFactoryResult<C> = (options: DialogFactoryResultOptions<C>) => Route;\n\nexport type DialogFactoryConfig<C> = Partial<{\n\tdialogConfig: DialogRouteDialogConfig<C>;\n\tdialogRouteConfig: Partial<DialogRouteConfig<C>>;\n}>;\n\nexport function dialogRouteFactory<C>(component: ComponentType<C>, config?: DialogFactoryConfig<C>): DialogFactoryResult<C> {\n\treturn ({ path, dataFactory, dialogRouteConfig }) =>\n\t\tcreateDialogRoute<C>({\n\t\t\tpath,\n\t\t\tcomponent,\n\t\t\tdataFactory: dataFactory as LuDialogData<C> extends never ? undefined : DialogResolveFn<LuDialogData<C>>,\n\t\t\tdialogConfigFactory: () => config?.dialogConfig ?? ({} as DialogRouteDialogConfig<C>),\n\t\t\t...mergeRouteConfig(config?.dialogRouteConfig, dialogRouteConfig),\n\t\t});\n}\n\nexport function dialogLazyRouteFactory<C>(loadComponent: () => Promise<ComponentType<C>>, config?: DialogFactoryConfig<C>): DialogFactoryResult<C> {\n\treturn ({ path, dataFactory, dialogRouteConfig }) =>\n\t\tcreateDialogRoute<C>({\n\t\t\tpath,\n\t\t\tloadComponent,\n\t\t\tdataFactory: dataFactory as LuDialogData<C> extends never ? undefined : DialogResolveFn<LuDialogData<C>>,\n\t\t\tdialogConfigFactory: () => config?.dialogConfig ?? ({} as DialogRouteDialogConfig<C>),\n\t\t\t...mergeRouteConfig(config?.dialogRouteConfig, dialogRouteConfig),\n\t\t});\n}\n\nfunction mergeRouteConfig<C>(config1: Partial<DialogRouteConfig<C>>, config2: Partial<DialogRouteConfig<C>>): Partial<DialogRouteConfig<C>> {\n\tif (!config1) {\n\t\treturn config2;\n\t}\n\n\tif (!config2) {\n\t\treturn config1;\n\t}\n\n\tconst result: Partial<DialogRouteConfig<C>> = { ...config1, ...config2 };\n\n\t// If both configs have the same key, we merge the arrays\n\tconst mergedArrays = (['providers', 'canActivate', 'children', 'canDeactivate', 'canLoad', 'canActivateChild'] as const satisfies Array<keyof Route>).filter(\n\t\t(key) => key in config1 && key in config2,\n\t);\n\n\tfor (const key of mergedArrays) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tresult[key] = [...(config1[key] ?? []), ...(config2[key] ?? [])] as any[];\n\t}\n\n\t// If both configs have the same data key, we merge the objects\n\tif (config1.data && config2.data) {\n\t\tresult.data = { ...config1.data, ...config2.data };\n\t}\n\n\t// If both configs have the same resolve key, we merge the objects\n\tif (config1.resolve && config2.resolve) {\n\t\tresult.resolve = { ...config1.resolve, ...config2.resolve };\n\t}\n\n\treturn result;\n}\n\nexport function toCanDeactivateFn<C>(guard: DeprecatedGuard | CanDeactivateFn<C>): CanDeactivateFn<C> {\n\tif (typeof guard === 'string') {\n\t\tthrow new Error('String guards are not supported in dialog routes');\n\t}\n\n\ttry {\n\t\tconst deprectedGuard = inject(guard) as CanActivate;\n\t\treturn (_component, currentRoute, _currentState, nextState) => deprectedGuard.canActivate(currentRoute, nextState);\n\t} catch {\n\t\treturn guard as CanDeactivateFn<C>;\n\t}\n}\n","import { assertInInjectionContext, ChangeDetectionStrategy, Component, DestroyRef, inject, Injector, OnDestroy, OnInit, runInInjectionContext, signal, TemplateRef, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, CanDeactivateFn, DeprecatedGuard, GuardResult, Router, RouterOutlet } from '@angular/router';\nimport { combineLatest, concat, map, Observable, of } from 'rxjs';\nimport { provideLuDialog } from '../dialog.providers';\nimport { LuDialogService } from '../dialog.service';\nimport { LuDialogRef, LuDialogResult } from '../model';\nimport {\n\tDIALOG_ROUTE_CLOSE_TRIGGER,\n\tDIALOG_ROUTE_CONFIG,\n\tDIALOG_ROUTE_DISMISS_TRIGGER,\n\tDialogRouteCloseTrigger,\n\tDialogRouteData,\n\tDialogRouteDialogConfig,\n\tDialogRouteDismissTrigger,\n} from './dialog-routing.models';\nimport { deferrableToObservable, deferrableToPromise, DialogResolveFn, toCanDeactivateFn } from './dialog-routing.utils';\n\n/**\n * Default onClosed/onDismissed function that navigates back to the parent route when the dialog is closed or dismissed.\n */\nexport function defaultOnClosedFn(): void;\n/**\n * Default onClosed/onDismissed function that navigates back to the parent route when the dialog is closed or dismissed.\n * @deprecated Use non-generic version instead.\n */\nexport function defaultOnClosedFn<_C>(): void;\nexport function defaultOnClosedFn<C>(): void {\n\tlet trigger: DialogRouteCloseTrigger | DialogRouteDismissTrigger | null = null;\n\n\ttry {\n\t\tassertInInjectionContext(defaultOnClosedFn);\n\t\ttrigger = inject(DIALOG_ROUTE_CLOSE_TRIGGER, { optional: true }) ?? inject(DIALOG_ROUTE_DISMISS_TRIGGER, { optional: true });\n\t} catch {\n\t\t// Not in injection context, do nothing\n\t}\n\n\tif (trigger === 'navigation') {\n\t\t// If the dialog is closed because of a navigation, we don't need to do anything.\n\t\t// It would cancel the navigation that is already in progress.\n\t\treturn;\n\t}\n\n\tconst router = inject(Router);\n\tconst route = inject(ActivatedRoute);\n\tconst routeData = route.snapshot.data as DialogRouteData<C>;\n\tconst next = routeData.dialogRouteConfig.path\n\t\t.split('/')\n\t\t.map(() => '..')\n\t\t.join('/');\n\n\treturn void router.navigate([next], {\n\t\trelativeTo: route.children[0],\n\t\tqueryParamsHandling: 'preserve',\n\t});\n}\n\n@Component({\n\tselector: 'lu-dialog-routing-container',\n\timports: [RouterOutlet],\n\ttemplate: `\n\t\t<ng-template>\n\t\t\t<router-outlet (activate)=\"dialogComponentInstance.set($event)\" (deactivate)=\"dialogComponentInstance.set(null)\" />\n\t\t</ng-template>\n\t`,\n\tstyles: [\n\t\t`\n\t\t\t:host {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t`,\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tproviders: [\n\t\tprovideLuDialog(),\n\t\t{\n\t\t\tprovide: DIALOG_ROUTE_CONFIG,\n\t\t\tuseFactory: () => inject(DialogRoutingContainerComponent).config,\n\t\t},\n\t],\n})\nexport class DialogRoutingContainerComponent<C> implements OnDestroy, OnInit {\n\treadonly #route = inject(ActivatedRoute);\n\treadonly #router = inject(Router);\n\treadonly #destroyRef = inject(DestroyRef);\n\treadonly #dialog = inject(LuDialogService);\n\treadonly injector = inject(Injector);\n\treadonly config = this.#routeData.dialogRouteConfig;\n\tprotected readonly dialogComponentInstance = signal<C | null>(null);\n\tprotected readonly dialogTemplate = viewChild.required(TemplateRef);\n\t#closeTrigger?: DialogRouteCloseTrigger | DialogRouteDismissTrigger;\n\n\t#ref?: LuDialogRef<C>;\n\n\tget #routeData(): DialogRouteData<C> {\n\t\treturn this.#route.snapshot.data as DialogRouteData<C>;\n\t}\n\n\tngOnInit(): void {\n\t\tvoid this.#openDialog();\n\t}\n\n\t/**\n\t * In this context, ngOnDestroy is called when the user navigates away from the route.\n\t * The navigation can be triggered:\n\t * - from within the dialog (#ref.dismissed => config.onClosed/defaultOnClosedFn/config.onDismissed/defaultOnClosedFn => ngOnDestroy)\n\t * - from router navigation (ngOnDestroy => #ref.dismissed => config.onDismissed/defaultOnClosedFn)\n\t */\n\tngOnDestroy(): void {\n\t\tthis.#closeTrigger ??= 'navigation';\n\t\tthis.#ref?.dismiss();\n\t}\n\n\tasync #openDialog(): Promise<void> {\n\t\tconst [data, dialogConfig] = await Promise.all([this.#resolve(this.config.dataFactory), this.#resolve(this.config.dialogConfigFactory)]);\n\n\t\tthis.#ref = this.#dialog.open<C>({\n\t\t\t...dialogConfig,\n\t\t\tcontent: this.dialogTemplate(),\n\t\t\tdata,\n\t\t\tcanClose: this.#getCanCloseFn(dialogConfig),\n\t\t});\n\n\t\tthis.#ref.result$.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((result) => this.#onDialogClosed(result));\n\t\tthis.#ref.dismissed$.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => this.#onDialogDismissed());\n\t}\n\n\t#getCanCloseFn(config: DialogRouteDialogConfig<C>): ((c: C) => Observable<boolean>) | undefined {\n\t\tconst canCloseFns: ((c: C) => Observable<boolean>)[] = [];\n\n\t\tif (config.canClose) {\n\t\t\tcanCloseFns.push((c: C) => deferrableToObservable(config.canClose(c)));\n\t\t}\n\n\t\tif (this.config.canDeactivate) {\n\t\t\tcanCloseFns.push(this.#getCanCloseFromGuardDialogFn(this.config.canDeactivate));\n\t\t}\n\n\t\treturn canCloseFns.length ? (c: C) => combineLatest(canCloseFns.map((fn) => fn(c))).pipe(map((results) => results.every((r) => r))) : undefined;\n\t}\n\n\t#getCanCloseFromGuardDialogFn(canDeactivate: (CanDeactivateFn<C> | DeprecatedGuard)[]): () => Observable<boolean> {\n\t\treturn () => {\n\t\t\tconst results$ = canDeactivate.map((cD) => this.callCanDeactivateFn(cD));\n\n\t\t\treturn concat(...results$).pipe(\n\t\t\t\tmap((guardResult) => {\n\t\t\t\t\tif (typeof guardResult === 'boolean') {\n\t\t\t\t\t\treturn guardResult;\n\t\t\t\t\t}\n\t\t\t\t\tvoid this.#router.navigate([guardResult]);\n\t\t\t\t\treturn true;\n\t\t\t\t}),\n\t\t\t);\n\t\t};\n\t}\n\n\tcallCanDeactivateFn(canDeactivateFn: CanDeactivateFn<C> | DeprecatedGuard): Observable<GuardResult> {\n\t\tconst instance = this.dialogComponentInstance();\n\n\t\tif (!instance) {\n\t\t\t// If instance is null, it means the dialog is already closed. We allow deactivation in this case.\n\t\t\treturn of(true);\n\t\t}\n\n\t\tconst maybeAsyncResult = runInInjectionContext(this.injector, () => {\n\t\t\tconst canDeactivate = toCanDeactivateFn(canDeactivateFn);\n\t\t\treturn canDeactivate(instance, this.#route.snapshot, this.#router.routerState.snapshot, this.#router.routerState.snapshot);\n\t\t});\n\t\treturn deferrableToObservable(maybeAsyncResult);\n\t}\n\n\t#onDialogDismissed(): void {\n\t\tthis.#closeTrigger ??= 'dialog:dismissed';\n\n\t\tif (this.#closeTrigger === 'dialog:closed') {\n\t\t\tthrow new Error('Dialog cannot be both closed and dismissed');\n\t\t}\n\n\t\tconst injector = Injector.create({\n\t\t\tparent: this.injector,\n\t\t\tproviders: [{ provide: DIALOG_ROUTE_DISMISS_TRIGGER, useValue: this.#closeTrigger }],\n\t\t});\n\n\t\trunInInjectionContext(injector, () => {\n\t\t\tif (this.config.onDismissed) {\n\t\t\t\tthis.config.onDismissed();\n\t\t\t} else {\n\t\t\t\tdefaultOnClosedFn();\n\t\t\t}\n\t\t});\n\n\t\tthis.#ref = undefined;\n\t}\n\n\t#onDialogClosed(result: LuDialogResult<C>): void {\n\t\tthis.#closeTrigger ??= 'dialog:closed';\n\n\t\tif (this.#closeTrigger === 'dialog:dismissed') {\n\t\t\tthrow new Error('Dialog cannot be both closed and dismissed');\n\t\t}\n\n\t\tconst injector = Injector.create({\n\t\t\tparent: this.injector,\n\t\t\tproviders: [{ provide: DIALOG_ROUTE_CLOSE_TRIGGER, useValue: this.#closeTrigger }],\n\t\t});\n\n\t\trunInInjectionContext(injector, () => {\n\t\t\tif (this.config.onClosed) {\n\t\t\t\tthis.config.onClosed(result);\n\t\t\t} else {\n\t\t\t\tdefaultOnClosedFn();\n\t\t\t}\n\t\t});\n\n\t\tthis.#ref = undefined;\n\t}\n\n\tasync #resolve<T>(resolveFn: DialogResolveFn<T>): Promise<T | undefined> {\n\t\tif (!resolveFn) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst resolved = runInInjectionContext(this.injector, resolveFn);\n\t\treturn deferrableToPromise(resolved);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map"],"mappings":"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"}
@@ -7,7 +7,7 @@ import { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';
7
7
  import * as i1 from '@angular/forms';
8
8
  import { NG_VALUE_ACCESSOR, FormControl, ReactiveFormsModule, FormGroup, Validators } from '@angular/forms';
9
9
  import { registerHistory, createEmptyHistoryState } from '@lexical/history';
10
- import { $canShowPlaceholderCurry } from '@lexical/text';
10
+ import { $isRootTextContentEmpty, $canShowPlaceholderCurry } from '@lexical/text';
11
11
  import { mergeRegister, $getNearestNodeOfType } from '@lexical/utils';
12
12
  import { FormFieldComponent, InputDirective } from '@lucca-front/ng/form-field';
13
13
  import { createEditor, $getRoot, $createTextNode, createCommand, $getSelection, $isRangeSelection, $isTextNode, $createParagraphNode, COMMAND_PRIORITY_NORMAL, SELECTION_CHANGE_COMMAND, INSERT_PARAGRAPH_COMMAND, DecoratorNode, TextNode, $getNodeByKey, FORMAT_TEXT_COMMAND } from 'lexical';
@@ -89,15 +89,7 @@ class RichTextInputComponent {
89
89
  },
90
90
  nodes: [...this.#customNodes()],
91
91
  });
92
- this.#cleanup = mergeRegister(this.#richTextFormatter.registerTextPlugin(this.#editor), registerHistory(this.#editor, createEmptyHistoryState(), 300), this.#editor.registerUpdateListener(({ tags, dirtyElements }) => {
93
- if (!tags.has(INITIAL_UPDATE_TAG) && dirtyElements.size) {
94
- const result = this.#richTextFormatter.format(this.#editor);
95
- this.touch();
96
- this.#onChange?.(result);
97
- }
98
- const currentCanShowPlaceholder = this.#editor.getEditorState().read($canShowPlaceholderCurry(this.#editor.isComposing()));
99
- this.currentCanShowPlaceholder.set(currentCanShowPlaceholder);
100
- }));
92
+ this.#cleanup = mergeRegister(this.#richTextFormatter.registerTextPlugin(this.#editor), registerHistory(this.#editor, createEmptyHistoryState(), 300), this.#editor.registerUpdateListener((payload) => this.#onEditorUpdate(payload)));
101
93
  this.#editor.setRootElement(this.content().nativeElement);
102
94
  this.pluginComponents().forEach((plugin) => plugin.setEditorInstance(this.#editor));
103
95
  if (this.#allPlugins().length > 0) {
@@ -157,6 +149,22 @@ class RichTextInputComponent {
157
149
  }
158
150
  });
159
151
  }
152
+ #onEditorUpdate({ tags, dirtyElements }) {
153
+ const isComposing = this.#editor.isComposing();
154
+ if (!tags.has(INITIAL_UPDATE_TAG) && dirtyElements.size) {
155
+ this.#editor.read(() => {
156
+ let result = '';
157
+ // ignore empty nodes
158
+ if (!$isRootTextContentEmpty(isComposing, false)) {
159
+ result = this.#richTextFormatter.format(this.#editor);
160
+ }
161
+ this.touch();
162
+ this.#onChange?.(result);
163
+ });
164
+ }
165
+ const currentCanShowPlaceholder = this.#editor.getEditorState().read($canShowPlaceholderCurry(isComposing));
166
+ this.currentCanShowPlaceholder.set(currentCanShowPlaceholder);
167
+ }
160
168
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: RichTextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
161
169
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: RichTextInputComponent, isStandalone: true, selector: "lu-rich-text-input", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disableSpellcheck: { classPropertyName: "disableSpellcheck", publicName: "disableSpellcheck", isSignal: true, isRequired: false, transformFunction: null }, autoResize: { classPropertyName: "autoResize", publicName: "autoResize", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
162
170
  {
@@ -972,7 +980,7 @@ class TagNode extends DecoratorNode {
972
980
  * This method must be implemented but has no purpose outside of react
973
981
  */
974
982
  decorate() {
975
- return `{{${this.getKey()}}}`;
983
+ return this.getTextContent();
976
984
  }
977
985
  createDOM(_config, editor) {
978
986
  if (TagNode.#viewContainerRef) {
@@ -1007,7 +1015,7 @@ class TagNode extends DecoratorNode {
1007
1015
  this.#componentRef?.destroy();
1008
1016
  }
1009
1017
  exportDOM() {
1010
- const element = document.createTextNode(`{{${this.#tagKey}}}`);
1018
+ const element = document.createTextNode(this.getTextContent());
1011
1019
  return { element };
1012
1020
  }
1013
1021
  static importDOM() {
@@ -1033,6 +1041,10 @@ class TagNode extends DecoratorNode {
1033
1041
  ...{ tagDescription: this.#tagDescription, tagKey: this.#tagKey, disabled: this.#disabled },
1034
1042
  };
1035
1043
  }
1044
+ getTextContent() {
1045
+ // node must have text content or it will be ignored when formatting
1046
+ return `{{${this.#tagKey}}}`;
1047
+ }
1036
1048
  }
1037
1049
  function domConversionFunction(domNode) {
1038
1050
  const html = domNode.textContent ?? '';