@acorex/components 22.4.31 → 22.4.32

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.
Files changed (42) hide show
  1. package/fesm2022/acorex-components-autocomplete.mjs +1 -1
  2. package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
  3. package/fesm2022/acorex-components-calendar.mjs +1 -1
  4. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  5. package/fesm2022/acorex-components-color-box.mjs +1 -1
  6. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  7. package/fesm2022/acorex-components-color-palette.mjs +1 -1
  8. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  9. package/fesm2022/acorex-components-datetime-box.mjs +1 -1
  10. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  11. package/fesm2022/acorex-components-datetime-picker.mjs +1 -1
  12. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  13. package/fesm2022/acorex-components-dropdown.mjs +13 -3
  14. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  15. package/fesm2022/acorex-components-notification.mjs +237 -28
  16. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  17. package/fesm2022/acorex-components-otp.mjs +175 -43
  18. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  19. package/fesm2022/acorex-components-paint.mjs +92 -11
  20. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  21. package/fesm2022/acorex-components-phone-box.mjs +14 -2
  22. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  23. package/fesm2022/acorex-components-picker.mjs +214 -20
  24. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  25. package/fesm2022/acorex-components-rest-api-generator.mjs +1 -1
  26. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  27. package/fesm2022/acorex-components-rrule.mjs +1 -1
  28. package/fesm2022/acorex-components-rrule.mjs.map +1 -1
  29. package/fesm2022/acorex-components-scheduler-picker.mjs +5 -5
  30. package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
  31. package/fesm2022/acorex-components-scheduler.mjs +1 -1
  32. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  33. package/fesm2022/acorex-components-select-box.mjs +25 -6
  34. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  35. package/package.json +3 -3
  36. package/types/acorex-components-dropdown.d.ts +8 -1
  37. package/types/acorex-components-notification.d.ts +66 -3
  38. package/types/acorex-components-otp.d.ts +39 -5
  39. package/types/acorex-components-paint.d.ts +29 -3
  40. package/types/acorex-components-phone-box.d.ts +3 -0
  41. package/types/acorex-components-picker.d.ts +43 -4
  42. package/types/acorex-components-select-box.d.ts +7 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-dropdown.mjs","sources":["../../../../packages/components/dropdown/src/lib/dropdown-box.class.ts","../../../../packages/components/dropdown/src/lib/dropdown-box.component.ts","../../../../packages/components/dropdown/src/lib/dropdown-box.component.html","../../../../packages/components/dropdown/src/lib/dropdown-panel.component.ts","../../../../packages/components/dropdown/src/lib/dropdown-panel.component.html","../../../../packages/components/dropdown/src/lib/dropdown.module.ts","../../../../packages/components/dropdown/src/acorex-components-dropdown.ts"],"sourcesContent":["import { AXEvent, MXInteractiveComponent } from '@acorex/cdk/common';\nimport { EventEmitter, Injectable } from '@angular/core';\nimport { AXDropdownBoxComponent } from './dropdown-box.component';\n\n@Injectable()\n/**\n * Base behavior for components that manage a dropdown/popup via an internal `AXDropdownBoxComponent`.\n *\n * Extends MXInteractiveComponent to inherit interactive features (focus, blur, disabled, tabIndex)\n * and exposes a consistent API to open/close/toggle the dropdown as well as events for open/close lifecycle.\n */\nexport abstract class MXDropdownBoxBaseComponent extends MXInteractiveComponent {\n /**\n * Emitted when the dropdown/popup is opened.\n *\n * @event\n */\n onOpened: EventEmitter<AXEvent> = new EventEmitter<AXEvent>();\n\n /**\n * Emits the `onOpened` event with component context.\n * @ignore\n */\n protected emitOnOpenedEvent(): void {\n this.onOpened.emit({\n component: this,\n htmlElement: this.getHostElement(),\n });\n }\n\n /**\n * Emitted when the dropdown/popup is closed.\n *\n * @event\n */\n onClosed: EventEmitter<AXEvent> = new EventEmitter<AXEvent>();\n\n /**\n * Emits the `onClosed` event with component context.\n * @ignore\n */\n protected emitOnClosedEvent(): void {\n this.onClosed.emit({\n component: this,\n htmlElement: this.getHostElement(),\n });\n }\n\n /**\n * Reference to the underlying dropdown controller.\n */\n protected abstract dropdown: AXDropdownBoxComponent;\n\n /**\n * Toggles the dropdown if the component is not disabled.\n *\n * @returns void - No return value. Switches between open and closed states.\n */\n toggle() {\n if (this.disabled !== true) {\n this.dropdown.toggle();\n }\n }\n\n /**\n * Closes the dropdown if it is open and the component is not disabled, then focuses the host.\n *\n * @returns void - No return value. Dropdown is closed and focus returns to the host.\n */\n close() {\n if (!this.isOpen || this.disabled) {\n return;\n }\n this.dropdown.close();\n this.focus();\n }\n\n /**\n * Opens the dropdown if it is not already open and the component is not disabled, then focuses the dropdown.\n *\n * @returns void - No return value. Dropdown becomes open and receives focus.\n */\n open() {\n if (this.isOpen || this.disabled) {\n return;\n }\n this.dropdown.open();\n this.dropdown.focus();\n }\n\n /**\n * Indicates whether the dropdown is currently open.\n *\n * @returns boolean - True if open; otherwise false.\n */\n get isOpen(): boolean {\n return this.dropdown?.isOpen;\n }\n}\n","import { AXComponent, AXEvent, MXInteractiveComponent, MXLookComponent, convertToPlacement } from '@acorex/cdk/common';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXPlatform } from '@acorex/core/platform';\nimport {\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n OnInit,\n Output,\n ViewChild,\n inject,\n input,\n} from '@angular/core';\nimport { classes } from 'polytype';\nimport { startWith } from 'rxjs';\n\n@Component({\n selector: 'ax-dropdown-box',\n templateUrl: 'dropdown-box.component.html',\n inputs: ['disabled', 'look'],\n outputs: ['disabledChange', 'onBlur', 'onFocus', 'onClick'],\n host: { ngSkipHydration: 'true' },\n imports: [AXPopoverComponent],\n\n providers: [{ provide: AXComponent, useExisting: AXDropdownBoxComponent }],\n})\nexport class AXDropdownBoxComponent extends classes(MXInteractiveComponent, MXLookComponent) implements OnInit {\n readonly hasInput = input(true);\n\n readonly popoverWidth = input<string>('auto');\n\n private _platform: AXPlatform = inject(AXPlatform);\n\n /**\n * @ignore\n */\n protected _target: HTMLDivElement;\n\n /**\n * @ignore\n */\n protected _popoverTitle: string;\n\n /**\n * @ignore\n */\n protected _popoverWidth = '180px';\n\n /**\n * @ignore\n */\n protected _placement = convertToPlacement('bottom-start');\n\n /**\n * @ignore\n */\n @ViewChild(AXPopoverComponent, { static: true })\n protected _popover: AXPopoverComponent;\n\n /**\n * Emitted when the drawer is opened.\n *\n * @event\n */\n @Output()\n onOpened: EventEmitter<AXEvent> = new EventEmitter<AXEvent>();\n\n /**\n * Emitted when the drawer is closed.\n *\n * @event\n */\n @Output()\n onClosed: EventEmitter<AXEvent> = new EventEmitter<AXEvent>();\n\n /**\n * @ignore\n */\n override ngOnInit() {\n super.ngOnInit();\n this._target = this.getHostElement();\n this._platform.resize.pipe(startWith()).subscribe(() => {\n if (!this.isActionsheetStyle) this.close();\n });\n }\n\n /**\n * @ignore\n */\n protected _handlePopupOnOpened(e: AXEvent) {\n this._popover?.focus();\n this.onOpened.emit({\n component: this,\n isUserInteraction: e.isUserInteraction,\n });\n }\n\n /**\n * @ignore\n */\n protected _handlePopupOnClosed(e: AXEvent) {\n this.focus();\n this.onClosed.emit({\n component: this,\n isUserInteraction: e.isUserInteraction,\n });\n }\n\n /**\n * @ignore\n */\n @HostListener('keydown', ['$event'])\n protected _handleKeydown(e: KeyboardEvent) {\n if (e.code === 'Space' || e.code === 'Enter') {\n this.open();\n }\n if (e.ctrlKey && e.code === 'ArrowDown') {\n e.preventDefault();\n this.open();\n }\n if (e.code === 'Escape') {\n e.preventDefault();\n this.close();\n }\n }\n\n /**\n * Updates the position of the popover.\n * @ignore\n */\n updatePosition() {\n this._popover?.updatePosition();\n }\n\n /**\n * Toggles the popover open or closed, if not disabled.\n * @ignore\n */\n toggle() {\n if (this.disabled !== true) {\n this._popover.toggle();\n }\n }\n\n /**\n * Closes the popover if it's open and not disabled, then focuses the element.\n * @ignore\n */\n close() {\n if (!this.isOpen || this.disabled) {\n return;\n }\n this._popover.close();\n this.focus();\n }\n\n /**\n * Opens the popover if it's not already open and not disabled, then focuses the popover.\n * @ignore\n */\n open() {\n if (this.isOpen || this.disabled) {\n return;\n }\n this._popover.open();\n this._popover.focus();\n }\n\n /**\n * Indicates if the popover is currently open.\n * @ignore\n */\n get isOpen(): boolean {\n return this._popover?.isOpen;\n }\n\n /**\n * Indicates if the popover is styled as an actionsheet.\n */\n get isActionsheetStyle(): boolean {\n return this._platform.is('SM');\n }\n\n /**\n * @ignore\n */\n @HostBinding('class')\n private get __hostClass(): string {\n return this.hasInput()\n ? `ax-editor-container ax-default ${this.look} ${this.disabled ? 'ax-state-disabled' : ''}`\n : '';\n }\n}\n","<ng-content select=\"[input]\"> </ng-content>\n<ax-popover\n [adaptivityEnabled]=\"true\"\n [target]=\"_target\"\n [placement]=\"_placement\"\n [openOn]=\"'manual'\"\n [closeOn]=\"'clickOut'\"\n [closeOnScroll]=\"!isActionsheetStyle\"\n [width]=\"popoverWidth()\"\n visualContextScope=\"theme\"\n (onOpened)=\"_handlePopupOnOpened($event)\"\n (onClosed)=\"_handlePopupOnClosed($event)\"\n #popover\n>\n <div aria-modal=\"true\" (keydown)=\"_handleKeydown($event)\">\n <ng-content select=\"[panel]\"> </ng-content>\n </div>\n</ax-popover>\n","import {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n ViewEncapsulation,\n effect,\n inject,\n input,\n} from '@angular/core';\n\nimport {\n AXClosableComponent,\n AXComponent,\n AXEvent,\n MXInteractiveComponent,\n convertToPlacement,\n} from '@acorex/cdk/common';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXPlatform, isBrowser } from '@acorex/core/platform';\nimport { Subscription, startWith } from 'rxjs';\n\n/**\n * A panel for displaying dropdown content with configurable width and positioning.\n *\n * Do not compose this component inside `ax-button` for menu triggers; use\n * `AXDropdownButtonComponent` from `@acorex/components/dropdown-button` instead. That pattern is\n * deprecated. `ax-dropdown-panel` remains supported for other hosts (for example `ax-dropdown-box`)\n * and for internal use by `ax-dropdown-button`.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-dropdown-panel',\n templateUrl: './dropdown-panel.component.html',\n styleUrls: ['./dropdown-panel.component.css'],\n inputs: ['isOpen', 'fitParent', 'dropdownWidth', 'position'],\n outputs: ['onOpened', 'onClosed'],\n\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: AXClosableComponent,\n useExisting: AXDropdownPanelComponent,\n },\n { provide: AXComponent, useExisting: AXDropdownPanelComponent },\n ],\n host: { ngSkipHydration: 'true' },\n imports: [AXPopoverComponent],\n})\nexport class AXDropdownPanelComponent extends MXInteractiveComponent implements OnDestroy {\n protected _platform: AXPlatform = inject(AXPlatform);\n\n /**\n * @ignore\n */\n protected _isMobile = false;\n\n /**\n * @ignore\n */\n protected _popoverTitle: string;\n\n /**\n * @ignore\n */\n protected _placement = convertToPlacement('bottom-start');\n\n readonly placement = input<'bottom-start' | 'bottom-end'>('bottom-start');\n\n #effect = effect(() => {\n if (!this.placement()) return;\n this._placement = convertToPlacement(this.placement());\n });\n\n /**\n * @ignore\n */\n _subs: Subscription[] = [];\n\n /**\n * @ignore\n */\n private __target: HTMLDivElement;\n\n /**\n * Gets the target HTML element for the dropdown panel.\n */\n @Input()\n public get _target(): HTMLDivElement {\n return this.__target;\n }\n\n /**\n * Sets the target HTML element for the dropdown panel.\n */\n public set _target(v: HTMLDivElement) {\n this.__target = v;\n }\n\n /**\n * @ignore\n */\n @ViewChild(AXPopoverComponent)\n protected _popover: AXPopoverComponent;\n\n /**\n * Emitted when the dropdown panel is opened.\n *\n * @event\n */\n @Output()\n onOpened: EventEmitter<AXEvent> = new EventEmitter<AXEvent>();\n\n /**\n * Emitted when the dropdown panel is closed.\n *\n * @event\n */\n @Output()\n onClosed: EventEmitter<AXEvent> = new EventEmitter<AXEvent>();\n\n /**\n * Determines if adaptivity is enabled for the component.\n *\n * @defaultValue false\n */\n @Input()\n adaptivityEnabled = false;\n\n /**\n * @ignore\n */\n constructor() {\n super();\n }\n\n /**\n * @ignore\n */\n override ngOnInit() {\n if (isBrowser()) {\n super.ngOnInit();\n if (!this._target) {\n this._target = this.getHostElement()?.parentElement as HTMLDivElement;\n }\n this._platform.resize.pipe(startWith(null)).subscribe(() => {\n this._isMobile = this._platform.is('SM');\n this._popover?.close();\n });\n }\n }\n\n /**\n * @ignore\n */\n ngAfterViewInit(): void {\n [this._target, this.getHostElement()].forEach((el) => {\n el?.addEventListener('keydown', (e) => {\n if (e.code == 'Escape' && this.isOpen) {\n e.stopPropagation();\n this.close();\n }\n });\n });\n }\n\n /**\n * @ignore\n */\n ngOnDestroy(): void {\n this._subs.forEach((s) => {\n s?.unsubscribe();\n });\n }\n\n /**\n * @ignore\n */\n protected _handlePopupOnOpened(e: AXEvent) {\n this._popover?.focus();\n this.onOpened.emit({\n component: this,\n isUserInteraction: e.isUserInteraction,\n });\n }\n\n /**\n * @ignore\n */\n protected _handlePopupOnClosed(e: AXEvent) {\n this._target.focus();\n this.onClosed.emit({\n component: this,\n isUserInteraction: e.isUserInteraction,\n });\n }\n\n /**\n * Toggles the popover open or closed, if not disabled.\n * @ignore\n */\n toggle() {\n if (this.disabled !== true) {\n this._popover.toggle();\n }\n }\n\n /**\n * Closes the popover if it is open and not disabled.\n * @ignore\n */\n close() {\n if (!this.isOpen || this.disabled) {\n return;\n }\n this._popover.close();\n this.focus();\n }\n\n /**\n * Opens the popover if it is not already open and not disabled.\n * @ignore\n */\n open() {\n if (this.isOpen || this.disabled) {\n return;\n }\n this._popover.open();\n this._popover.focus();\n }\n\n /**\n * Gets whether the popover is currently open.\n * @ignore\n */\n get isOpen(): boolean {\n return this._popover?.isOpen;\n }\n\n /**\n * @ignore\n */\n @HostBinding('class')\n private get __hostClass(): string[] {\n return ['ax-dropdown-panel'];\n }\n}\n","<ax-popover\n [target]=\"_target\"\n [placement]=\"_placement\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n [adaptivityEnabled]=\"adaptivityEnabled\"\n visualContextScope=\"theme\"\n (onOpened)=\"_handlePopupOnOpened($event)\"\n (onClosed)=\"_handlePopupOnClosed($event)\"\n>\n <div>\n <ng-content> </ng-content>\n </div>\n</ax-popover>\n","import { AXCommonModule } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXDropdownBoxComponent } from './dropdown-box.component';\nimport { AXDropdownPanelComponent } from './dropdown-panel.component';\n\n@NgModule({\n imports: [\n CommonModule,\n AXCommonModule,\n A11yModule,\n AXDecoratorModule,\n AXPopoverModule,\n AXDropdownPanelComponent,\n AXDropdownBoxComponent,\n ],\n exports: [AXDropdownPanelComponent, AXDropdownBoxComponent],\n providers: [],\n})\nexport class AXDropdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-dropdown.mjs","sources":["../../../../packages/components/dropdown/src/lib/dropdown-box.class.ts","../../../../packages/components/dropdown/src/lib/dropdown-box.component.ts","../../../../packages/components/dropdown/src/lib/dropdown-box.component.html","../../../../packages/components/dropdown/src/lib/dropdown-panel.component.ts","../../../../packages/components/dropdown/src/lib/dropdown-panel.component.html","../../../../packages/components/dropdown/src/lib/dropdown.module.ts","../../../../packages/components/dropdown/src/acorex-components-dropdown.ts"],"sourcesContent":["import { AXEvent, MXInteractiveComponent } from '@acorex/cdk/common';\nimport { EventEmitter, Injectable } from '@angular/core';\nimport { AXDropdownBoxComponent } from './dropdown-box.component';\n\n@Injectable()\n/**\n * Base behavior for components that manage a dropdown/popup via an internal `AXDropdownBoxComponent`.\n *\n * Extends MXInteractiveComponent to inherit interactive features (focus, blur, disabled, tabIndex)\n * and exposes a consistent API to open/close/toggle the dropdown as well as events for open/close lifecycle.\n */\nexport abstract class MXDropdownBoxBaseComponent extends MXInteractiveComponent {\n /**\n * Emitted when the dropdown/popup is opened.\n *\n * @event\n */\n onOpened: EventEmitter<AXEvent> = new EventEmitter<AXEvent>();\n\n /**\n * Emits the `onOpened` event with component context.\n * @ignore\n */\n protected emitOnOpenedEvent(): void {\n this.onOpened.emit({\n component: this,\n htmlElement: this.getHostElement(),\n });\n }\n\n /**\n * Emitted when the dropdown/popup is closed.\n *\n * @event\n */\n onClosed: EventEmitter<AXEvent> = new EventEmitter<AXEvent>();\n\n /**\n * Emits the `onClosed` event with component context.\n * @ignore\n */\n protected emitOnClosedEvent(): void {\n this.onClosed.emit({\n component: this,\n htmlElement: this.getHostElement(),\n });\n }\n\n /**\n * Reference to the underlying dropdown controller.\n */\n protected abstract dropdown: AXDropdownBoxComponent;\n\n /**\n * Toggles the dropdown if the component is not disabled.\n *\n * @returns void - No return value. Switches between open and closed states.\n */\n toggle() {\n if (this.disabled !== true) {\n this.dropdown.toggle();\n }\n }\n\n /**\n * Closes the dropdown if it is open and the component is not disabled, then focuses the host.\n *\n * @returns void - No return value. Dropdown is closed and focus returns to the host.\n */\n close() {\n if (!this.isOpen || this.disabled) {\n return;\n }\n this.dropdown.close();\n this.focus();\n }\n\n /**\n * Opens the dropdown if it is not already open and the component is not disabled, then focuses the dropdown.\n *\n * @returns void - No return value. Dropdown becomes open and receives focus.\n */\n open() {\n if (this.isOpen || this.disabled) {\n return;\n }\n this.dropdown.open();\n this.dropdown.focus();\n }\n\n /**\n * Indicates whether the dropdown is currently open.\n *\n * @returns boolean - True if open; otherwise false.\n */\n get isOpen(): boolean {\n return this.dropdown?.isOpen;\n }\n}\n","import { AXComponent, AXEvent, MXInteractiveComponent, MXLookComponent, convertToPlacement } from '@acorex/cdk/common';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXPlatform } from '@acorex/core/platform';\nimport {\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n OnInit,\n Output,\n ViewChild,\n inject,\n input,\n} from '@angular/core';\nimport { classes } from 'polytype';\nimport { startWith } from 'rxjs';\n\n@Component({\n selector: 'ax-dropdown-box',\n templateUrl: 'dropdown-box.component.html',\n inputs: ['disabled', 'look'],\n outputs: ['disabledChange', 'onBlur', 'onFocus', 'onClick'],\n host: { ngSkipHydration: 'true' },\n imports: [AXPopoverComponent],\n\n providers: [{ provide: AXComponent, useExisting: AXDropdownBoxComponent }],\n})\nexport class AXDropdownBoxComponent extends classes(MXInteractiveComponent, MXLookComponent) implements OnInit {\n readonly hasInput = input(true);\n\n readonly popoverWidth = input<string>('auto');\n\n /**\n * When set, the popover is positioned relative to this element instead of the dropdown host\n * (e.g. full phone field while the trigger is only the country prefix).\n */\n readonly popoverAnchor = input<HTMLElement | null>(null);\n\n private _platform: AXPlatform = inject(AXPlatform);\n\n /**\n * @ignore\n */\n protected _target: HTMLDivElement;\n\n /**\n * @ignore\n */\n protected _popoverTitle: string;\n\n /**\n * @ignore\n */\n protected _popoverWidth = '180px';\n\n /**\n * @ignore\n */\n protected _placement = convertToPlacement('bottom-start');\n\n /**\n * @ignore\n */\n @ViewChild(AXPopoverComponent, { static: true })\n protected _popover: AXPopoverComponent;\n\n /**\n * Emitted when the drawer is opened.\n *\n * @event\n */\n @Output()\n onOpened: EventEmitter<AXEvent> = new EventEmitter<AXEvent>();\n\n /**\n * Emitted when the drawer is closed.\n *\n * @event\n */\n @Output()\n onClosed: EventEmitter<AXEvent> = new EventEmitter<AXEvent>();\n\n /**\n * @ignore\n */\n override ngOnInit() {\n super.ngOnInit();\n this._target = this.getHostElement();\n this._platform.resize.pipe(startWith()).subscribe(() => {\n if (!this.isActionsheetStyle) this.close();\n });\n }\n\n /** @ignore */\n protected getOverlayTarget(): HTMLElement {\n return this.popoverAnchor() ?? this._target;\n }\n\n /**\n * @ignore\n */\n protected _handlePopupOnOpened(e: AXEvent) {\n this._popover?.focus();\n this.onOpened.emit({\n component: this,\n isUserInteraction: e.isUserInteraction,\n });\n }\n\n /**\n * @ignore\n */\n protected _handlePopupOnClosed(e: AXEvent) {\n this.focus();\n this.onClosed.emit({\n component: this,\n isUserInteraction: e.isUserInteraction,\n });\n }\n\n /**\n * @ignore\n */\n @HostListener('keydown', ['$event'])\n protected _handleKeydown(e: KeyboardEvent) {\n if (e.code === 'Space' || e.code === 'Enter') {\n this.open();\n }\n if (e.ctrlKey && e.code === 'ArrowDown') {\n e.preventDefault();\n this.open();\n }\n if (e.code === 'Escape') {\n e.preventDefault();\n this.close();\n }\n }\n\n /**\n * Updates the position of the popover.\n * @ignore\n */\n updatePosition() {\n this._popover?.updatePosition();\n }\n\n /**\n * Toggles the popover open or closed, if not disabled.\n * @ignore\n */\n toggle() {\n if (this.disabled !== true) {\n this._popover.toggle();\n }\n }\n\n /**\n * Closes the popover if it's open and not disabled, then focuses the element.\n * @ignore\n */\n close() {\n if (!this.isOpen || this.disabled) {\n return;\n }\n this._popover.close();\n this.focus();\n }\n\n /**\n * Opens the popover if it's not already open and not disabled, then focuses the popover.\n * @ignore\n */\n open() {\n if (this.isOpen || this.disabled) {\n return;\n }\n this._popover.open();\n this._popover.focus();\n }\n\n /**\n * Indicates if the popover is currently open.\n * @ignore\n */\n get isOpen(): boolean {\n return this._popover?.isOpen;\n }\n\n /**\n * Indicates if the popover is styled as an actionsheet.\n */\n get isActionsheetStyle(): boolean {\n return this._platform.is('SM');\n }\n\n /**\n * @ignore\n */\n @HostBinding('class')\n private get __hostClass(): string {\n return this.hasInput()\n ? `ax-editor-container ax-default ${this.look} ${this.disabled ? 'ax-state-disabled' : ''}`\n : '';\n }\n}\n","<ng-content select=\"[input]\"> </ng-content>\n<ax-popover\n [adaptivityEnabled]=\"true\"\n [target]=\"getOverlayTarget()\"\n [placement]=\"_placement\"\n [openOn]=\"'manual'\"\n [closeOn]=\"'clickOut'\"\n [closeOnScroll]=\"!isActionsheetStyle\"\n [width]=\"popoverWidth()\"\n visualContextScope=\"theme\"\n (onOpened)=\"_handlePopupOnOpened($event)\"\n (onClosed)=\"_handlePopupOnClosed($event)\"\n #popover\n>\n <div aria-modal=\"true\" (keydown)=\"_handleKeydown($event)\">\n <ng-content select=\"[panel]\"> </ng-content>\n </div>\n</ax-popover>\n","import {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n ViewEncapsulation,\n effect,\n inject,\n input,\n} from '@angular/core';\n\nimport {\n AXClosableComponent,\n AXComponent,\n AXEvent,\n MXInteractiveComponent,\n convertToPlacement,\n} from '@acorex/cdk/common';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXPlatform, isBrowser } from '@acorex/core/platform';\nimport { Subscription, startWith } from 'rxjs';\n\n/**\n * A panel for displaying dropdown content with configurable width and positioning.\n *\n * Do not compose this component inside `ax-button` for menu triggers; use\n * `AXDropdownButtonComponent` from `@acorex/components/dropdown-button` instead. That pattern is\n * deprecated. `ax-dropdown-panel` remains supported for other hosts (for example `ax-dropdown-box`)\n * and for internal use by `ax-dropdown-button`.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-dropdown-panel',\n templateUrl: './dropdown-panel.component.html',\n styleUrls: ['./dropdown-panel.component.css'],\n inputs: ['isOpen', 'fitParent', 'dropdownWidth', 'position'],\n outputs: ['onOpened', 'onClosed'],\n\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: AXClosableComponent,\n useExisting: AXDropdownPanelComponent,\n },\n { provide: AXComponent, useExisting: AXDropdownPanelComponent },\n ],\n host: { ngSkipHydration: 'true' },\n imports: [AXPopoverComponent],\n})\nexport class AXDropdownPanelComponent extends MXInteractiveComponent implements OnDestroy {\n protected _platform: AXPlatform = inject(AXPlatform);\n\n /**\n * @ignore\n */\n protected _isMobile = false;\n\n /**\n * @ignore\n */\n protected _popoverTitle: string;\n\n /**\n * @ignore\n */\n protected _placement = convertToPlacement('bottom-start');\n\n readonly placement = input<'bottom-start' | 'bottom-end'>('bottom-start');\n\n #effect = effect(() => {\n if (!this.placement()) return;\n this._placement = convertToPlacement(this.placement());\n });\n\n /**\n * @ignore\n */\n _subs: Subscription[] = [];\n\n /**\n * @ignore\n */\n private __target: HTMLDivElement;\n\n /**\n * Gets the target HTML element for the dropdown panel.\n */\n @Input()\n public get _target(): HTMLDivElement {\n return this.__target;\n }\n\n /**\n * Sets the target HTML element for the dropdown panel.\n */\n public set _target(v: HTMLDivElement) {\n this.__target = v;\n }\n\n /**\n * @ignore\n */\n @ViewChild(AXPopoverComponent)\n protected _popover: AXPopoverComponent;\n\n /**\n * Emitted when the dropdown panel is opened.\n *\n * @event\n */\n @Output()\n onOpened: EventEmitter<AXEvent> = new EventEmitter<AXEvent>();\n\n /**\n * Emitted when the dropdown panel is closed.\n *\n * @event\n */\n @Output()\n onClosed: EventEmitter<AXEvent> = new EventEmitter<AXEvent>();\n\n /**\n * Determines if adaptivity is enabled for the component.\n *\n * @defaultValue false\n */\n @Input()\n adaptivityEnabled = false;\n\n /**\n * @ignore\n */\n constructor() {\n super();\n }\n\n /**\n * @ignore\n */\n override ngOnInit() {\n if (isBrowser()) {\n super.ngOnInit();\n if (!this._target) {\n this._target = this.getHostElement()?.parentElement as HTMLDivElement;\n }\n this._platform.resize.pipe(startWith(null)).subscribe(() => {\n this._isMobile = this._platform.is('SM');\n this._popover?.close();\n });\n }\n }\n\n /**\n * @ignore\n */\n ngAfterViewInit(): void {\n [this._target, this.getHostElement()].forEach((el) => {\n el?.addEventListener('keydown', (e) => {\n if (e.code == 'Escape' && this.isOpen) {\n e.stopPropagation();\n this.close();\n }\n });\n });\n }\n\n /**\n * @ignore\n */\n ngOnDestroy(): void {\n this._subs.forEach((s) => {\n s?.unsubscribe();\n });\n }\n\n /**\n * @ignore\n */\n protected _handlePopupOnOpened(e: AXEvent) {\n this._popover?.focus();\n this.onOpened.emit({\n component: this,\n isUserInteraction: e.isUserInteraction,\n });\n }\n\n /**\n * @ignore\n */\n protected _handlePopupOnClosed(e: AXEvent) {\n this._target.focus();\n this.onClosed.emit({\n component: this,\n isUserInteraction: e.isUserInteraction,\n });\n }\n\n /**\n * Toggles the popover open or closed, if not disabled.\n * @ignore\n */\n toggle() {\n if (this.disabled !== true) {\n this._popover.toggle();\n }\n }\n\n /**\n * Closes the popover if it is open and not disabled.\n * @ignore\n */\n close() {\n if (!this.isOpen || this.disabled) {\n return;\n }\n this._popover.close();\n this.focus();\n }\n\n /**\n * Opens the popover if it is not already open and not disabled.\n * @ignore\n */\n open() {\n if (this.isOpen || this.disabled) {\n return;\n }\n this._popover.open();\n this._popover.focus();\n }\n\n /**\n * Gets whether the popover is currently open.\n * @ignore\n */\n get isOpen(): boolean {\n return this._popover?.isOpen;\n }\n\n /**\n * @ignore\n */\n @HostBinding('class')\n private get __hostClass(): string[] {\n return ['ax-dropdown-panel'];\n }\n}\n","<ax-popover\n [target]=\"_target\"\n [placement]=\"_placement\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n [adaptivityEnabled]=\"adaptivityEnabled\"\n visualContextScope=\"theme\"\n (onOpened)=\"_handlePopupOnOpened($event)\"\n (onClosed)=\"_handlePopupOnClosed($event)\"\n>\n <div>\n <ng-content> </ng-content>\n </div>\n</ax-popover>\n","import { AXCommonModule } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXDropdownBoxComponent } from './dropdown-box.component';\nimport { AXDropdownPanelComponent } from './dropdown-panel.component';\n\n@NgModule({\n imports: [\n CommonModule,\n AXCommonModule,\n A11yModule,\n AXDecoratorModule,\n AXPopoverModule,\n AXDropdownPanelComponent,\n AXDropdownBoxComponent,\n ],\n exports: [AXDropdownPanelComponent, AXDropdownBoxComponent],\n providers: [],\n})\nexport class AXDropdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { AXSafePipe } from '@acorex/core/pipes';
5
5
  import { AXTranslationService, AXTranslatorPipe } from '@acorex/core/translation';
6
6
  import { NgTemplateOutlet, NgComponentOutlet, AsyncPipe } from '@angular/common';
7
7
  import * as i0 from '@angular/core';
8
- import { InjectionToken, inject, signal, Injectable, input, computed, TemplateRef, ViewEncapsulation, Component, NgModule } from '@angular/core';
8
+ import { InjectionToken, inject, signal, Injectable, input, computed, TemplateRef, effect, HostBinding, ViewEncapsulation, Component, NgModule } from '@angular/core';
9
9
  import { AXOverlayService } from '@acorex/cdk/overlay';
10
10
 
11
11
  const AX_NOTIFICATION_CONFIG = new InjectionToken('AX_NOTIFICATION_CONFIG', {
@@ -74,15 +74,19 @@ class AXNotificationService {
74
74
  icon: config.icon,
75
75
  title: config.title,
76
76
  content: config.content,
77
+ steps: config.steps,
78
+ stepIndex: config.stepIndex,
77
79
  location: config.location,
78
80
  closeButton: config.closeButton ?? true,
79
81
  color: config.color,
80
82
  timeOut: config.timeOut,
81
83
  timeOutProgress: config.timeOutProgress ?? true,
84
+ stepCompleteTimeOut: config.stepCompleteTimeOut,
82
85
  pauseOnHover: config.pauseOnHover,
83
86
  };
84
87
  const notificationId = `notification-${++notificationIdCounter}`;
85
88
  let internalRef;
89
+ let notificationComponent = null;
86
90
  const closeNotification = () => {
87
91
  if (internalRef) {
88
92
  internalRef.overlayRef.dispose();
@@ -114,6 +118,7 @@ class AXNotificationService {
114
118
  },
115
119
  })
116
120
  .then((overlayRef) => {
121
+ notificationComponent = overlayRef.instance.instance;
117
122
  internalRef = {
118
123
  id: notificationId,
119
124
  overlayRef,
@@ -130,6 +135,12 @@ class AXNotificationService {
130
135
  close: () => {
131
136
  closeNotification();
132
137
  },
138
+ update: (patch) => notificationComponent?.patchConfig(patch),
139
+ nextStep: () => notificationComponent?.nextStep() ?? false,
140
+ previousStep: () => notificationComponent?.previousStep() ?? false,
141
+ goToStep: (index) => notificationComponent?.goToStep(index) ?? false,
142
+ getStepIndex: () => notificationComponent?.getStepIndex() ?? 0,
143
+ getStepCount: () => notificationComponent?.getStepCount() ?? 0,
133
144
  };
134
145
  }
135
146
  hideAll() {
@@ -368,45 +379,135 @@ class AXNotificationComponent extends MXBaseComponent {
368
379
  ...(ngDevMode ? [{ debugName: "remainingTime" }] : /* istanbul ignore next */ []));
369
380
  this.transitionDuration = signal(150, /* @ts-ignore */
370
381
  ...(ngDevMode ? [{ debugName: "transitionDuration" }] : /* istanbul ignore next */ []));
382
+ this.runtimePatch = signal({}, /* @ts-ignore */
383
+ ...(ngDevMode ? [{ debugName: "runtimePatch" }] : /* istanbul ignore next */ []));
384
+ this.currentStepIndex = signal(0, /* @ts-ignore */
385
+ ...(ngDevMode ? [{ debugName: "currentStepIndex" }] : /* istanbul ignore next */ []));
386
+ this.multiStepCompleteCountdown = signal(false, /* @ts-ignore */
387
+ ...(ngDevMode ? [{ debugName: "multiStepCompleteCountdown" }] : /* istanbul ignore next */ []));
388
+ this.stepCompleteTimerId = null;
389
+ this.mergedConfig = computed(() => ({
390
+ ...this.config(),
391
+ ...this.runtimePatch(),
392
+ }), /* @ts-ignore */
393
+ ...(ngDevMode ? [{ debugName: "mergedConfig" }] : /* istanbul ignore next */ []));
394
+ this.steps = computed(() => this.mergedConfig().steps ?? [], /* @ts-ignore */
395
+ ...(ngDevMode ? [{ debugName: "steps" }] : /* istanbul ignore next */ []));
396
+ this.isMultiStep = computed(() => this.steps().length > 0, /* @ts-ignore */
397
+ ...(ngDevMode ? [{ debugName: "isMultiStep" }] : /* istanbul ignore next */ []));
398
+ this.effectiveConfig = computed(() => {
399
+ const base = this.mergedConfig();
400
+ const stepList = base.steps;
401
+ if (!stepList?.length) {
402
+ return base;
403
+ }
404
+ const index = Math.min(Math.max(this.currentStepIndex(), 0), stepList.length - 1);
405
+ const step = stepList[index];
406
+ return {
407
+ ...base,
408
+ title: step.title ?? base.title,
409
+ content: step.content ?? base.content,
410
+ icon: step.icon ?? base.icon,
411
+ color: step.color ?? base.color,
412
+ buttons: step.buttons ?? base.buttons,
413
+ };
414
+ }, /* @ts-ignore */
415
+ ...(ngDevMode ? [{ debugName: "effectiveConfig" }] : /* istanbul ignore next */ []));
416
+ this.stepIndicator = computed(() => {
417
+ const total = this.steps().length;
418
+ if (total <= 1) {
419
+ return null;
420
+ }
421
+ return `${this.currentStepIndex() + 1} / ${total}`;
422
+ }, /* @ts-ignore */
423
+ ...(ngDevMode ? [{ debugName: "stepIndicator" }] : /* istanbul ignore next */ []));
424
+ this.showProgressBar = computed(() => {
425
+ const cfg = this.mergedConfig();
426
+ if (!cfg.timeOutProgress) {
427
+ return false;
428
+ }
429
+ if (this.multiStepCompleteCountdown()) {
430
+ return this.resolveStepCompleteDelay() > 0 && this.remainingTime() > 0;
431
+ }
432
+ if (this.isMultiStep() && this.steps().length > 0) {
433
+ return true;
434
+ }
435
+ return !!cfg.timeOut && this.remainingTime() > 0;
436
+ }, /* @ts-ignore */
437
+ ...(ngDevMode ? [{ debugName: "showProgressBar" }] : /* istanbul ignore next */ []));
438
+ this.progressWidthPercent = computed(() => {
439
+ const cfg = this.mergedConfig();
440
+ const stepTotal = this.steps().length;
441
+ if (cfg.timeOutProgress && this.multiStepCompleteCountdown()) {
442
+ const delay = this.resolveStepCompleteDelay();
443
+ return delay ? (this.remainingTime() * 100) / delay : 0;
444
+ }
445
+ if (cfg.timeOutProgress && this.isMultiStep() && stepTotal > 0) {
446
+ return ((this.currentStepIndex() + 1) / stepTotal) * 100;
447
+ }
448
+ const timeOut = this.mergedConfig().timeOut;
449
+ if (!timeOut) {
450
+ return 0;
451
+ }
452
+ return (this.remainingTime() * 100) / timeOut;
453
+ }, /* @ts-ignore */
454
+ ...(ngDevMode ? [{ debugName: "progressWidthPercent" }] : /* istanbul ignore next */ []));
455
+ this.progressTransitionDuration = computed(() => {
456
+ if (this.multiStepCompleteCountdown()) {
457
+ return this.transitionDuration();
458
+ }
459
+ return this.isMultiStep() ? 300 : this.transitionDuration();
460
+ }, /* @ts-ignore */
461
+ ...(ngDevMode ? [{ debugName: "progressTransitionDuration" }] : /* istanbul ignore next */ []));
371
462
  /** Template content if config.content is a TemplateRef */
372
463
  this.templateContent = computed(() => {
373
- const content = this.config().content;
464
+ const content = this.effectiveConfig().content;
374
465
  return content instanceof TemplateRef ? content : null;
375
466
  }, /* @ts-ignore */
376
467
  ...(ngDevMode ? [{ debugName: "templateContent" }] : /* istanbul ignore next */ []));
377
468
  /** Component content if config.content is a component Type */
378
469
  this.componentContent = computed(() => {
379
- const content = this.config().content;
470
+ const content = this.effectiveConfig().content;
380
471
  return typeof content === 'function' ? content : null;
381
472
  }, /* @ts-ignore */
382
473
  ...(ngDevMode ? [{ debugName: "componentContent" }] : /* istanbul ignore next */ []));
383
474
  /** String content if config.content is a string */
384
475
  this.stringContent = computed(() => {
385
- const content = this.config().content;
476
+ const content = this.effectiveConfig().content;
386
477
  return typeof content === 'string' ? content : '';
387
478
  }, /* @ts-ignore */
388
479
  ...(ngDevMode ? [{ debugName: "stringContent" }] : /* istanbul ignore next */ []));
480
+ this.#iconEffect = effect(() => {
481
+ this._syncIcon(this.effectiveConfig());
482
+ }, /* @ts-ignore */
483
+ ...(ngDevMode ? [{ debugName: "#iconEffect" }] : /* istanbul ignore next */ []));
484
+ }
485
+ static { this.defaultStepCompleteDelayMs = 2000; }
486
+ get hostMultiStepClass() {
487
+ return this.isMultiStep();
389
488
  }
489
+ #iconEffect;
390
490
  ngOnInit() {
391
491
  super.ngOnInit();
392
- this._initIcon();
393
- this.remainingTime.set(this.config().timeOut);
492
+ const initialStep = this.config().stepIndex ?? 0;
493
+ if (this.config().steps?.length) {
494
+ this.currentStepIndex.set(Math.min(initialStep, this.config().steps.length - 1));
495
+ }
496
+ this.remainingTime.set(this.mergedConfig().timeOut);
394
497
  this._handleTimeOut();
395
498
  this.getHostElement().addEventListener('pointerenter', () => {
396
- if (!this.config().pauseOnHover)
499
+ if (!this.mergedConfig().pauseOnHover)
397
500
  return;
398
501
  if (this.isPaused())
399
502
  return;
400
- // Only pause if not already paused
401
503
  this.isPaused.set(true);
402
504
  this.pauseAnimation();
403
505
  });
404
506
  this.getHostElement().addEventListener('pointerleave', () => {
405
- if (!this.config().pauseOnHover)
507
+ if (!this.mergedConfig().pauseOnHover)
406
508
  return;
407
509
  if (!this.isPaused())
408
510
  return;
409
- // Only resume if paused
410
511
  this.isPaused.set(false);
411
512
  this._handleTimeOut();
412
513
  });
@@ -415,20 +516,78 @@ class AXNotificationComponent extends MXBaseComponent {
415
516
  clearInterval(this.intervalId);
416
517
  }
417
518
  _handleTimeOut() {
418
- if (this.config().timeOut) {
419
- this.intervalId = setInterval(() => {
420
- this.remainingTime.update((prev) => prev - this.transitionDuration());
421
- if (this.remainingTime() <= 0) {
422
- clearInterval(this.intervalId);
423
- this.close();
424
- }
425
- }, this.transitionDuration());
519
+ const intervalMs = this.transitionDuration();
520
+ const hasTimeOut = this.multiStepCompleteCountdown()
521
+ ? this.resolveStepCompleteDelay() > 0
522
+ : !!this.mergedConfig().timeOut;
523
+ if (!hasTimeOut) {
524
+ return;
426
525
  }
526
+ this.intervalId = setInterval(() => {
527
+ this.remainingTime.update((prev) => prev - intervalMs);
528
+ if (this.remainingTime() <= 0) {
529
+ clearInterval(this.intervalId);
530
+ this.close();
531
+ }
532
+ }, intervalMs);
427
533
  }
428
- /** @ignore */
429
- _initIcon() {
430
- if (!this.config().icon) {
431
- switch (this.config().color) {
534
+ restartTimeOut() {
535
+ if (this.multiStepCompleteCountdown()) {
536
+ return;
537
+ }
538
+ this.clearStepCompleteClose();
539
+ clearInterval(this.intervalId);
540
+ const timeOut = this.mergedConfig().timeOut;
541
+ this.remainingTime.set(timeOut ?? 0);
542
+ if (timeOut) {
543
+ this._handleTimeOut();
544
+ }
545
+ }
546
+ resolveStepCompleteDelay() {
547
+ const cfg = this.mergedConfig();
548
+ if (cfg.stepCompleteTimeOut === null) {
549
+ return 0;
550
+ }
551
+ if (cfg.stepCompleteTimeOut != null) {
552
+ return cfg.stepCompleteTimeOut;
553
+ }
554
+ return AXNotificationComponent.defaultStepCompleteDelayMs;
555
+ }
556
+ clearStepCompleteClose() {
557
+ if (this.stepCompleteTimerId != null) {
558
+ clearTimeout(this.stepCompleteTimerId);
559
+ this.stepCompleteTimerId = null;
560
+ }
561
+ clearInterval(this.intervalId);
562
+ this.multiStepCompleteCountdown.set(false);
563
+ }
564
+ scheduleStepCompleteClose() {
565
+ if (!this.isMultiStep()) {
566
+ return;
567
+ }
568
+ const delay = this.resolveStepCompleteDelay();
569
+ if (delay <= 0) {
570
+ return;
571
+ }
572
+ this.clearStepCompleteClose();
573
+ const cfg = this.mergedConfig();
574
+ if (cfg.timeOutProgress) {
575
+ this.multiStepCompleteCountdown.set(true);
576
+ this.remainingTime.set(delay);
577
+ this._handleTimeOut();
578
+ return;
579
+ }
580
+ this.stepCompleteTimerId = setTimeout(() => this.close(), delay);
581
+ }
582
+ onReachedFinalMultiStep() {
583
+ const total = this.steps().length;
584
+ if (total > 0 && this.currentStepIndex() === total - 1) {
585
+ this.scheduleStepCompleteClose();
586
+ }
587
+ }
588
+ _syncIcon(cfg) {
589
+ if (!cfg.icon) {
590
+ switch (cfg.color) {
432
591
  case 'success':
433
592
  this._icon = 'ax-icon ax-icon-check-circle';
434
593
  break;
@@ -439,13 +598,60 @@ class AXNotificationComponent extends MXBaseComponent {
439
598
  this._icon = 'ax-icon ax-icon-warning';
440
599
  break;
441
600
  default:
442
- this._icon = this.config().icon || 'ax-icon ax-icon-info';
601
+ this._icon = cfg.icon || 'ax-icon ax-icon-info';
443
602
  break;
444
603
  }
445
604
  }
446
605
  else {
447
- this._icon = this.config().icon;
606
+ this._icon = cfg.icon;
607
+ }
608
+ }
609
+ patchConfig(patch) {
610
+ this.runtimePatch.update((prev) => ({ ...prev, ...patch }));
611
+ if (patch.stepIndex != null && this.steps().length) {
612
+ this.currentStepIndex.set(Math.min(Math.max(patch.stepIndex, 0), this.steps().length - 1));
613
+ }
614
+ if (patch.timeOut != null) {
615
+ this.restartTimeOut();
616
+ }
617
+ }
618
+ nextStep() {
619
+ const total = this.steps().length;
620
+ if (total === 0 || this.currentStepIndex() >= total - 1) {
621
+ return false;
448
622
  }
623
+ this.currentStepIndex.update((index) => index + 1);
624
+ this.restartTimeOut();
625
+ this.onReachedFinalMultiStep();
626
+ return true;
627
+ }
628
+ previousStep() {
629
+ if (this.steps().length === 0 || this.currentStepIndex() <= 0) {
630
+ return false;
631
+ }
632
+ this.clearStepCompleteClose();
633
+ this.currentStepIndex.update((index) => index - 1);
634
+ this.restartTimeOut();
635
+ return true;
636
+ }
637
+ goToStep(index) {
638
+ const total = this.steps().length;
639
+ if (total === 0 || index < 0 || index >= total) {
640
+ return false;
641
+ }
642
+ if (index < total - 1) {
643
+ this.clearStepCompleteClose();
644
+ }
645
+ this.currentStepIndex.set(index);
646
+ this.restartTimeOut();
647
+ this.onReachedFinalMultiStep();
648
+ return true;
649
+ }
650
+ getStepIndex() {
651
+ return this.currentStepIndex();
652
+ }
653
+ getStepCount() {
654
+ return this.steps().length;
449
655
  }
450
656
  /** @ignore */
451
657
  _handleButtonClick(button) {
@@ -469,10 +675,10 @@ class AXNotificationComponent extends MXBaseComponent {
469
675
  this.notificationService.hideAll();
470
676
  }
471
677
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXNotificationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
472
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: AXNotificationComponent, isStandalone: true, selector: "ax-notification", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, onClose: { classPropertyName: "onClose", publicName: "onClose", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
678
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: AXNotificationComponent, isStandalone: true, selector: "ax-notification", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, onClose: { classPropertyName: "onClose", publicName: "onClose", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ax-notification-multi-step": "this.hostMultiStepClass" } }, providers: [
473
679
  { provide: AXClosableComponent, useExisting: AXNotificationComponent },
474
680
  { provide: AXComponent, useExisting: AXNotificationComponent },
475
- ], usesInheritance: true, ngImport: i0, template: "<span class=\"ax-notification-icon ax-icon-solid {{ _icon }} ax-{{ this.config().color }}\"></span>\n<div class=\"ax-notification-content\">\n <div class=\"ax-notification-title\" [class.ax-mb-2]=\"config().title && config().content\">\n {{ config().title | translate | async }}\n </div>\n @if (templateContent(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n } @else if (componentContent(); as component) {\n <ng-container [ngComponentOutlet]=\"component\"></ng-container>\n } @else if (stringContent()) {\n <div class=\"ax-notification-body\" [innerHTML]=\"stringContent() | translate | async | safe: 'html'\"></div>\n }\n\n @if (config().buttons?.length) {\n <div class=\"ax-notification-buttons\">\n @for (button of config().buttons; track $index) {\n <ax-button\n class=\"ax-xs\"\n [text]=\"button.text | translate | async\"\n [color]=\"button.color || 'default'\"\n [look]=\"button.look || 'solid'\"\n [disabled]=\"button.disabled\"\n (onClick)=\"_handleButtonClick(button)\"\n >\n @if (button.loading) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n </div>\n }\n</div>\n@if (config().closeButton) {\n <ax-close-button></ax-close-button>\n}\n@if (config().timeOutProgress && config().timeOut && remainingTime()) {\n <div\n [class]=\"'ax-notification-progress ax-' + this.config().color\"\n [style.transition-duration]=\"transitionDuration()\"\n [style.width]=\"(remainingTime() * 100) / config().timeOut + '%'\"\n ></div>\n}\n", styles: ["@layer properties;@layer components{ax-notification{--ax-comp-notification-shadow-rest: var(--ax-sys-effect-prominent-floating);--ax-comp-notification-inner-border-rest: var(--ax-sys-inner-border-surface);--ax-comp-notification-contrast-inner-border-rest: var(--ax-sys-contrast-inner-border-surface);--ax-comp-notification-contrast-surface-overlay-rest: var(--ax-sys-contrast-surface-overlay-surface);--ax-comp-notification-backdrop-filter-rest: var(--ax-sys-backdrop-filter-surface);--ax-comp-notification-surface-overlay-rest: var(--ax-sys-surface-overlay-prominent-floating);position:relative;display:flex;width:98vw;overflow:hidden;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));padding:calc(var(--spacing, .25rem) * 4);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));background-color:rgba(var(--ax-sys-color-lightest-surface));background-image:linear-gradient(var(--ax-comp-notification-contrast-surface-overlay-rest),var(--ax-comp-notification-contrast-surface-overlay-rest)),linear-gradient(var(--ax-comp-notification-surface-overlay-rest),var(--ax-comp-notification-surface-overlay-rest));box-shadow:var(--ax-comp-notification-contrast-inner-border-rest),var(--ax-comp-notification-inner-border-rest),var(--ax-comp-notification-shadow-rest);backdrop-filter:var(--ax-comp-notification-backdrop-filter-rest);-webkit-backdrop-filter:var(--ax-comp-notification-backdrop-filter-rest)}ax-notification:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:rgba(var(--ax-sys-color-darker-surface))}@media(min-width:768px){ax-notification{width:calc(var(--spacing, .25rem) * 96)}}ax-notification .ax-notification-icon{padding-inline-end:calc(var(--spacing, .25rem) * 3);color:var(--ax-comp-bg)}ax-notification .ax-notification-content{display:flex;flex:1;flex-direction:column;justify-content:center;--tw-font-weight: var(--font-weight-normal, 400);font-weight:var(--font-weight-normal, 400);color:rgba(var(--ax-sys-color-on-surface))}ax-notification .ax-notification-content .ax-notification-title{--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}ax-notification .ax-notification-content .ax-notification-body{--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5)}ax-notification .ax-notification-content .ax-notification-buttons{margin-top:calc(var(--spacing, .25rem) * 3);display:flex;gap:calc(var(--spacing, .25rem) * 3)}ax-notification .ax-notification-progress{position:absolute;inset-inline-start:calc(var(--spacing, .25rem) * 0);inset-inline-end:calc(var(--spacing, .25rem) * 0);bottom:calc(var(--spacing, .25rem) * 0);height:calc(var(--spacing, .25rem) * 1);width:100%;background-color:var(--ax-comp-bg);transition-property:width;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s));--tw-duration: .3s;transition-duration:.3s;--tw-ease: linear;transition-timing-function:linear}ax-notification .ax-notification-icon{max-width:fit-content;align-items:flex-start!important;font-size:var(--text-xl, 1.25rem)!important;line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)))!important}ax-notification ax-close-button{height:fit-content;max-width:fit-content;align-self:flex-start}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-duration{syntax: \"*\"; inherits: false;}@property --tw-ease{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial;--tw-leading: initial;--tw-duration: initial;--tw-ease: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "component", type: AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["closeAll", "icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AXSafePipe, name: "safe" }], encapsulation: i0.ViewEncapsulation.None }); }
681
+ ], usesInheritance: true, ngImport: i0, template: "<span class=\"ax-notification-icon ax-icon-solid {{ _icon }} ax-{{ effectiveConfig().color }}\"></span>\n<div class=\"ax-notification-content\">\n <div class=\"ax-notification-title\" [class.ax-mb-2]=\"effectiveConfig().title && effectiveConfig().content\">\n {{ effectiveConfig().title | translate | async }}\n @if (stepIndicator(); as indicator) {\n <span class=\"ax-notification-step-indicator\">{{ indicator }}</span>\n }\n </div>\n @if (templateContent(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n } @else if (componentContent(); as component) {\n <ng-container [ngComponentOutlet]=\"component\"></ng-container>\n } @else if (stringContent()) {\n <div class=\"ax-notification-body\" [innerHTML]=\"stringContent() | translate | async | safe: 'html'\"></div>\n }\n\n @if (effectiveConfig().buttons?.length) {\n <div class=\"ax-notification-buttons\">\n @for (button of effectiveConfig().buttons; track $index) {\n <ax-button\n class=\"ax-xs\"\n [text]=\"button.text | translate | async\"\n [color]=\"button.color || 'default'\"\n [look]=\"button.look || 'solid'\"\n [disabled]=\"button.disabled\"\n (onClick)=\"_handleButtonClick(button)\"\n >\n @if (button.loading) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n </div>\n }\n</div>\n@if (effectiveConfig().closeButton) {\n <ax-close-button></ax-close-button>\n}\n@if (showProgressBar()) {\n <div\n [class]=\"'ax-notification-progress ax-' + effectiveConfig().color\"\n [style.transition-duration]=\"progressTransitionDuration() + 'ms'\"\n [style.width]=\"progressWidthPercent() + '%'\"\n ></div>\n}\n", styles: ["@layer properties;@layer components{ax-notification{--ax-comp-notification-shadow-rest: var(--ax-sys-effect-prominent-floating);--ax-comp-notification-inner-border-rest: var(--ax-sys-inner-border-surface);--ax-comp-notification-contrast-inner-border-rest: var(--ax-sys-contrast-inner-border-surface);--ax-comp-notification-contrast-surface-overlay-rest: var(--ax-sys-contrast-surface-overlay-surface);--ax-comp-notification-backdrop-filter-rest: var(--ax-sys-backdrop-filter-surface);--ax-comp-notification-surface-overlay-rest: var(--ax-sys-surface-overlay-prominent-floating);position:relative;display:flex;width:98vw;overflow:hidden;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));padding:calc(var(--spacing, .25rem) * 4);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));background-color:rgba(var(--ax-sys-color-lightest-surface));background-image:linear-gradient(var(--ax-comp-notification-contrast-surface-overlay-rest),var(--ax-comp-notification-contrast-surface-overlay-rest)),linear-gradient(var(--ax-comp-notification-surface-overlay-rest),var(--ax-comp-notification-surface-overlay-rest));box-shadow:var(--ax-comp-notification-contrast-inner-border-rest),var(--ax-comp-notification-inner-border-rest),var(--ax-comp-notification-shadow-rest);backdrop-filter:var(--ax-comp-notification-backdrop-filter-rest);-webkit-backdrop-filter:var(--ax-comp-notification-backdrop-filter-rest)}ax-notification:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:rgba(var(--ax-sys-color-darker-surface))}@media(min-width:768px){ax-notification{width:calc(var(--spacing, .25rem) * 96)}}ax-notification .ax-notification-icon{padding-inline-end:calc(var(--spacing, .25rem) * 3);color:var(--ax-comp-bg)}ax-notification .ax-notification-content{display:flex;flex:1;flex-direction:column;justify-content:center;--tw-font-weight: var(--font-weight-normal, 400);font-weight:var(--font-weight-normal, 400);color:rgba(var(--ax-sys-color-on-surface))}ax-notification .ax-notification-content .ax-notification-title{--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}ax-notification .ax-notification-content .ax-notification-body{--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5)}ax-notification .ax-notification-content .ax-notification-buttons{margin-top:calc(var(--spacing, .25rem) * 3);display:flex;gap:calc(var(--spacing, .25rem) * 3)}ax-notification .ax-notification-progress{position:absolute;inset-inline-start:calc(var(--spacing, .25rem) * 0);inset-inline-end:calc(var(--spacing, .25rem) * 0);bottom:calc(var(--spacing, .25rem) * 0);height:calc(var(--spacing, .25rem) * 1);width:100%;background-color:var(--ax-comp-bg);transition-property:width;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s));--tw-duration: .3s;transition-duration:.3s;--tw-ease: linear;transition-timing-function:linear}ax-notification .ax-notification-icon{max-width:fit-content;align-items:flex-start!important;font-size:var(--text-xl, 1.25rem)!important;line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)))!important}ax-notification ax-close-button{height:fit-content;max-width:fit-content;align-self:flex-start}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-duration{syntax: \"*\"; inherits: false;}@property --tw-ease{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial;--tw-leading: initial;--tw-duration: initial;--tw-ease: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n", "@layer properties;@layer components{ax-notification.ax-notification-multi-step .ax-notification-title{display:flex;flex-wrap:wrap;align-items:center;column-gap:calc(var(--spacing, .25rem) * 2)}ax-notification.ax-notification-multi-step .ax-notification-step-indicator{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-normal, 400);font-weight:var(--font-weight-normal, 400);color:rgba(var(--ax-sys-color-on-surface));--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}@supports (color: color-mix(in lab,red,red)){ax-notification.ax-notification-multi-step .ax-notification-step-indicator{color:color-mix(in oklab,rgba(var(--ax-sys-color-on-surface)) 60%,transparent)}}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-ordinal{syntax: \"*\"; inherits: false;}@property --tw-slashed-zero{syntax: \"*\"; inherits: false;}@property --tw-numeric-figure{syntax: \"*\"; inherits: false;}@property --tw-numeric-spacing{syntax: \"*\"; inherits: false;}@property --tw-numeric-fraction{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "component", type: AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["closeAll", "icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AXSafePipe, name: "safe" }], encapsulation: i0.ViewEncapsulation.None }); }
476
682
  }
477
683
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXNotificationComponent, decorators: [{
478
684
  type: Component,
@@ -488,8 +694,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
488
694
  AsyncPipe,
489
695
  AXTranslatorPipe,
490
696
  AXSafePipe,
491
- ], template: "<span class=\"ax-notification-icon ax-icon-solid {{ _icon }} ax-{{ this.config().color }}\"></span>\n<div class=\"ax-notification-content\">\n <div class=\"ax-notification-title\" [class.ax-mb-2]=\"config().title && config().content\">\n {{ config().title | translate | async }}\n </div>\n @if (templateContent(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n } @else if (componentContent(); as component) {\n <ng-container [ngComponentOutlet]=\"component\"></ng-container>\n } @else if (stringContent()) {\n <div class=\"ax-notification-body\" [innerHTML]=\"stringContent() | translate | async | safe: 'html'\"></div>\n }\n\n @if (config().buttons?.length) {\n <div class=\"ax-notification-buttons\">\n @for (button of config().buttons; track $index) {\n <ax-button\n class=\"ax-xs\"\n [text]=\"button.text | translate | async\"\n [color]=\"button.color || 'default'\"\n [look]=\"button.look || 'solid'\"\n [disabled]=\"button.disabled\"\n (onClick)=\"_handleButtonClick(button)\"\n >\n @if (button.loading) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n </div>\n }\n</div>\n@if (config().closeButton) {\n <ax-close-button></ax-close-button>\n}\n@if (config().timeOutProgress && config().timeOut && remainingTime()) {\n <div\n [class]=\"'ax-notification-progress ax-' + this.config().color\"\n [style.transition-duration]=\"transitionDuration()\"\n [style.width]=\"(remainingTime() * 100) / config().timeOut + '%'\"\n ></div>\n}\n", styles: ["@layer properties;@layer components{ax-notification{--ax-comp-notification-shadow-rest: var(--ax-sys-effect-prominent-floating);--ax-comp-notification-inner-border-rest: var(--ax-sys-inner-border-surface);--ax-comp-notification-contrast-inner-border-rest: var(--ax-sys-contrast-inner-border-surface);--ax-comp-notification-contrast-surface-overlay-rest: var(--ax-sys-contrast-surface-overlay-surface);--ax-comp-notification-backdrop-filter-rest: var(--ax-sys-backdrop-filter-surface);--ax-comp-notification-surface-overlay-rest: var(--ax-sys-surface-overlay-prominent-floating);position:relative;display:flex;width:98vw;overflow:hidden;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));padding:calc(var(--spacing, .25rem) * 4);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));background-color:rgba(var(--ax-sys-color-lightest-surface));background-image:linear-gradient(var(--ax-comp-notification-contrast-surface-overlay-rest),var(--ax-comp-notification-contrast-surface-overlay-rest)),linear-gradient(var(--ax-comp-notification-surface-overlay-rest),var(--ax-comp-notification-surface-overlay-rest));box-shadow:var(--ax-comp-notification-contrast-inner-border-rest),var(--ax-comp-notification-inner-border-rest),var(--ax-comp-notification-shadow-rest);backdrop-filter:var(--ax-comp-notification-backdrop-filter-rest);-webkit-backdrop-filter:var(--ax-comp-notification-backdrop-filter-rest)}ax-notification:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:rgba(var(--ax-sys-color-darker-surface))}@media(min-width:768px){ax-notification{width:calc(var(--spacing, .25rem) * 96)}}ax-notification .ax-notification-icon{padding-inline-end:calc(var(--spacing, .25rem) * 3);color:var(--ax-comp-bg)}ax-notification .ax-notification-content{display:flex;flex:1;flex-direction:column;justify-content:center;--tw-font-weight: var(--font-weight-normal, 400);font-weight:var(--font-weight-normal, 400);color:rgba(var(--ax-sys-color-on-surface))}ax-notification .ax-notification-content .ax-notification-title{--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}ax-notification .ax-notification-content .ax-notification-body{--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5)}ax-notification .ax-notification-content .ax-notification-buttons{margin-top:calc(var(--spacing, .25rem) * 3);display:flex;gap:calc(var(--spacing, .25rem) * 3)}ax-notification .ax-notification-progress{position:absolute;inset-inline-start:calc(var(--spacing, .25rem) * 0);inset-inline-end:calc(var(--spacing, .25rem) * 0);bottom:calc(var(--spacing, .25rem) * 0);height:calc(var(--spacing, .25rem) * 1);width:100%;background-color:var(--ax-comp-bg);transition-property:width;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s));--tw-duration: .3s;transition-duration:.3s;--tw-ease: linear;transition-timing-function:linear}ax-notification .ax-notification-icon{max-width:fit-content;align-items:flex-start!important;font-size:var(--text-xl, 1.25rem)!important;line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)))!important}ax-notification ax-close-button{height:fit-content;max-width:fit-content;align-self:flex-start}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-duration{syntax: \"*\"; inherits: false;}@property --tw-ease{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial;--tw-leading: initial;--tw-duration: initial;--tw-ease: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
492
- }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], onClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "onClose", required: false }] }] } });
697
+ ], template: "<span class=\"ax-notification-icon ax-icon-solid {{ _icon }} ax-{{ effectiveConfig().color }}\"></span>\n<div class=\"ax-notification-content\">\n <div class=\"ax-notification-title\" [class.ax-mb-2]=\"effectiveConfig().title && effectiveConfig().content\">\n {{ effectiveConfig().title | translate | async }}\n @if (stepIndicator(); as indicator) {\n <span class=\"ax-notification-step-indicator\">{{ indicator }}</span>\n }\n </div>\n @if (templateContent(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n } @else if (componentContent(); as component) {\n <ng-container [ngComponentOutlet]=\"component\"></ng-container>\n } @else if (stringContent()) {\n <div class=\"ax-notification-body\" [innerHTML]=\"stringContent() | translate | async | safe: 'html'\"></div>\n }\n\n @if (effectiveConfig().buttons?.length) {\n <div class=\"ax-notification-buttons\">\n @for (button of effectiveConfig().buttons; track $index) {\n <ax-button\n class=\"ax-xs\"\n [text]=\"button.text | translate | async\"\n [color]=\"button.color || 'default'\"\n [look]=\"button.look || 'solid'\"\n [disabled]=\"button.disabled\"\n (onClick)=\"_handleButtonClick(button)\"\n >\n @if (button.loading) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n </div>\n }\n</div>\n@if (effectiveConfig().closeButton) {\n <ax-close-button></ax-close-button>\n}\n@if (showProgressBar()) {\n <div\n [class]=\"'ax-notification-progress ax-' + effectiveConfig().color\"\n [style.transition-duration]=\"progressTransitionDuration() + 'ms'\"\n [style.width]=\"progressWidthPercent() + '%'\"\n ></div>\n}\n", styles: ["@layer properties;@layer components{ax-notification{--ax-comp-notification-shadow-rest: var(--ax-sys-effect-prominent-floating);--ax-comp-notification-inner-border-rest: var(--ax-sys-inner-border-surface);--ax-comp-notification-contrast-inner-border-rest: var(--ax-sys-contrast-inner-border-surface);--ax-comp-notification-contrast-surface-overlay-rest: var(--ax-sys-contrast-surface-overlay-surface);--ax-comp-notification-backdrop-filter-rest: var(--ax-sys-backdrop-filter-surface);--ax-comp-notification-surface-overlay-rest: var(--ax-sys-surface-overlay-prominent-floating);position:relative;display:flex;width:98vw;overflow:hidden;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));padding:calc(var(--spacing, .25rem) * 4);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));background-color:rgba(var(--ax-sys-color-lightest-surface));background-image:linear-gradient(var(--ax-comp-notification-contrast-surface-overlay-rest),var(--ax-comp-notification-contrast-surface-overlay-rest)),linear-gradient(var(--ax-comp-notification-surface-overlay-rest),var(--ax-comp-notification-surface-overlay-rest));box-shadow:var(--ax-comp-notification-contrast-inner-border-rest),var(--ax-comp-notification-inner-border-rest),var(--ax-comp-notification-shadow-rest);backdrop-filter:var(--ax-comp-notification-backdrop-filter-rest);-webkit-backdrop-filter:var(--ax-comp-notification-backdrop-filter-rest)}ax-notification:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:rgba(var(--ax-sys-color-darker-surface))}@media(min-width:768px){ax-notification{width:calc(var(--spacing, .25rem) * 96)}}ax-notification .ax-notification-icon{padding-inline-end:calc(var(--spacing, .25rem) * 3);color:var(--ax-comp-bg)}ax-notification .ax-notification-content{display:flex;flex:1;flex-direction:column;justify-content:center;--tw-font-weight: var(--font-weight-normal, 400);font-weight:var(--font-weight-normal, 400);color:rgba(var(--ax-sys-color-on-surface))}ax-notification .ax-notification-content .ax-notification-title{--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}ax-notification .ax-notification-content .ax-notification-body{--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5)}ax-notification .ax-notification-content .ax-notification-buttons{margin-top:calc(var(--spacing, .25rem) * 3);display:flex;gap:calc(var(--spacing, .25rem) * 3)}ax-notification .ax-notification-progress{position:absolute;inset-inline-start:calc(var(--spacing, .25rem) * 0);inset-inline-end:calc(var(--spacing, .25rem) * 0);bottom:calc(var(--spacing, .25rem) * 0);height:calc(var(--spacing, .25rem) * 1);width:100%;background-color:var(--ax-comp-bg);transition-property:width;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s));--tw-duration: .3s;transition-duration:.3s;--tw-ease: linear;transition-timing-function:linear}ax-notification .ax-notification-icon{max-width:fit-content;align-items:flex-start!important;font-size:var(--text-xl, 1.25rem)!important;line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)))!important}ax-notification ax-close-button{height:fit-content;max-width:fit-content;align-self:flex-start}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-duration{syntax: \"*\"; inherits: false;}@property --tw-ease{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial;--tw-leading: initial;--tw-duration: initial;--tw-ease: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n", "@layer properties;@layer components{ax-notification.ax-notification-multi-step .ax-notification-title{display:flex;flex-wrap:wrap;align-items:center;column-gap:calc(var(--spacing, .25rem) * 2)}ax-notification.ax-notification-multi-step .ax-notification-step-indicator{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-normal, 400);font-weight:var(--font-weight-normal, 400);color:rgba(var(--ax-sys-color-on-surface));--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}@supports (color: color-mix(in lab,red,red)){ax-notification.ax-notification-multi-step .ax-notification-step-indicator{color:color-mix(in oklab,rgba(var(--ax-sys-color-on-surface)) 60%,transparent)}}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-ordinal{syntax: \"*\"; inherits: false;}@property --tw-slashed-zero{syntax: \"*\"; inherits: false;}@property --tw-numeric-figure{syntax: \"*\"; inherits: false;}@property --tw-numeric-spacing{syntax: \"*\"; inherits: false;}@property --tw-numeric-fraction{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
698
+ }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], onClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "onClose", required: false }] }], hostMultiStepClass: [{
699
+ type: HostBinding,
700
+ args: ['class.ax-notification-multi-step']
701
+ }] } });
493
702
 
494
703
  class AXNotificationModule {
495
704
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXNotificationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }