@ardium-ui/ui 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ardium-ui-ui.mjs","sources":["../../../projects/ui/src/lib/types/alignment.types.ts","../../../projects/ui/src/lib/types/colors.types.ts","../../../projects/ui/src/lib/types/theming.types.ts","../../../projects/ui/src/lib/_internal/disablable-component.ts","../../../projects/ui/src/lib/chip/chip.component.ts","../../../projects/ui/src/lib/chip/chip.component.html","../../../projects/ui/src/lib/_internal/focusable-component.ts","../../../projects/ui/src/lib/_internal/ngmodel-component.ts","../../../projects/ui/src/lib/_internal/boolean-component.ts","../../../projects/ui/src/lib/chip/selectable-chip/selectable-chip.component.ts","../../../projects/ui/src/lib/chip/selectable-chip/selectable-chip.component.html","../../../projects/ui/src/lib/_internal/clear-button/clear-button.component.ts","../../../projects/ui/src/lib/_internal/clear-button/clear-button.component.html","../../../projects/ui/src/lib/chip/deletable-chip/deletable-chip.component.ts","../../../projects/ui/src/lib/chip/deletable-chip/deletable-chip.component.html","../../../projects/ui/src/lib/_internal/clear-button/clear-button.module.ts","../../../projects/ui/src/lib/chip/chip.module.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.types.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.component.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.component.html","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.module.ts","../../../projects/ui/src/lib/_internal/item-storages/dropdown-item-storage.ts","../../../projects/ui/src/lib/option/option.component.ts","../../../projects/ui/src/lib/search-functions.ts","../../../projects/ui/src/lib/types/item-storage.types.ts","../../../projects/ui/src/lib/select/select.directive.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.directives.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.component.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.component.html","../../../projects/ui/src/lib/select/select.component.ts","../../../projects/ui/src/lib/select/select.component.html","../../../projects/ui/src/lib/form-field-frame/form-field-frame.module.ts","../../../projects/ui/src/lib/select/select.module.ts","../../../projects/ui/src/lib/option/option.module.ts","../../../projects/ui/src/lib/inputs/input-transformers.ts","../../../projects/ui/src/lib/inputs/input-utils.ts","../../../projects/ui/src/lib/inputs/simple-input/simple-input.directives.ts","../../../projects/ui/src/lib/inputs/simple-input/simple-input.component.ts","../../../projects/ui/src/lib/inputs/simple-input/simple-input.component.html","../../../projects/ui/src/lib/inputs/simple-input/simple-input.module.ts","../../../projects/ui/src/lib/_internal/item-storages/simplest-item-storage.ts","../../../projects/ui/src/lib/inputs/input/input.directives.ts","../../../projects/ui/src/lib/inputs/input/input.component.ts","../../../projects/ui/src/lib/inputs/input/input.component.html","../../../projects/ui/src/lib/inputs/input/input.module.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.types.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.utils.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.model.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.component.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.component.html","../../../projects/ui/src/lib/inputs/digit-input/digit-input.module.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.directives.ts","../../../projects/ui/src/lib/icon/icon.pipe.ts","../../../projects/ui/src/lib/icon/icon.component.ts","../../../projects/ui/src/lib/icon/icon.component.html","../../../projects/ui/src/lib/inputs/password-input/password-input.component.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.component.html","../../../projects/ui/src/lib/icon/icon.module.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.module.ts","../../../projects/ui/src/lib/types/button.types.ts","../../../projects/ui/src/lib/buttons/general-button.types.ts","../../../projects/ui/src/lib/buttons/_button-base.ts","../../../projects/ui/src/lib/buttons/button/button.component.ts","../../../projects/ui/src/lib/buttons/button/button.component.html","../../../projects/ui/src/lib/buttons/button/button.module.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.directives.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.component.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.component.html","../../../projects/ui/src/lib/inputs/number-input/number-input.module.ts","../../../projects/ui/src/lib/file-inputs/file-input-base.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.directives.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.component.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.component.html","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.module.ts","../../../projects/ui/src/lib/inputs/color-input/color-input.directives.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.directives.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.component.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.component.html","../../../projects/ui/src/lib/file-inputs/file-input/file-input.module.ts","../../../projects/ui/src/lib/inputs/input-types.ts","../../../projects/ui/src/lib/inputs/hex-input.model.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.directives.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.component.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.component.html","../../../projects/ui/src/lib/inputs/hex-input/hex-input.module.ts","../../../projects/ui/src/lib/radio/radio/radio.component.ts","../../../projects/ui/src/lib/radio/radio/radio.component.html","../../../projects/ui/src/lib/radio/radio-group.component.ts","../../../projects/ui/src/lib/radio/radio.module.ts","../../../projects/ui/src/lib/_internal/item-storages/simple-item-storage.ts","../../../projects/ui/src/lib/_internal/selectable-list-component.ts","../../../projects/ui/src/lib/segment/segment.directives.ts","../../../projects/ui/src/lib/segment/segment.types.ts","../../../projects/ui/src/lib/segment/segment.component.ts","../../../projects/ui/src/lib/segment/segment.component.html","../../../projects/ui/src/lib/segment/segment.module.ts","../../../projects/ui/src/lib/slider/slider.directive.ts","../../../projects/ui/src/lib/slider/slider.types.ts","../../../projects/ui/src/lib/slider/abstract-slider.ts","../../../projects/ui/src/lib/slider/slider.component.ts","../../../projects/ui/src/lib/slider/slider.component.html","../../../projects/ui/src/lib/slider/slider.module.ts","../../../projects/ui/src/lib/slider/range-slider/range-slider.component.ts","../../../projects/ui/src/lib/slider/range-slider/range-slider.component.html","../../../projects/ui/src/lib/slider/range-slider/range-slider.module.ts","../../../projects/ui/src/lib/types/utility.types.ts","../../../projects/ui/src/lib/star/star.types.ts","../../../projects/ui/src/lib/star/star.component.ts","../../../projects/ui/src/lib/star/star.component.html","../../../projects/ui/src/lib/star/star-button/star-button.component.ts","../../../projects/ui/src/lib/star/star-button/star-button.component.html","../../../projects/ui/src/lib/star/star.module.ts","../../../projects/ui/src/lib/star/star-button/star-button.module.ts","../../../projects/ui/src/lib/star/star-input/star-input.component.ts","../../../projects/ui/src/lib/star/star-input/star-input.component.html","../../../projects/ui/src/lib/star/star-input/star-input.module.ts","../../../projects/ui/src/lib/statebox/statebox.component.ts","../../../projects/ui/src/lib/statebox/statebox.component.html","../../../projects/ui/src/lib/statebox/statebox.module.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.types.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.component.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.component.html","../../../projects/ui/src/lib/slide-toggle/slide-toggle.module.ts","../../../projects/ui/src/lib/checkbox/checkbox.types.ts","../../../projects/ui/src/lib/checkbox/checkbox.component.ts","../../../projects/ui/src/lib/checkbox/checkbox.component.html","../../../projects/ui/src/lib/checkbox/checkbox.module.ts","../../../projects/ui/src/lib/buttons/fab/fab.component.ts","../../../projects/ui/src/lib/buttons/fab/fab.component.html","../../../projects/ui/src/lib/buttons/fab/fab.module.ts","../../../projects/ui/src/lib/buttons/icon-button/icon-button.component.ts","../../../projects/ui/src/lib/buttons/icon-button/icon-button.component.html","../../../projects/ui/src/lib/buttons/icon-button/icon-button.module.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.types.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.component.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.component.html","../../../projects/ui/src/lib/checkbox-list/checkbox-list.module.ts","../../../projects/ui/src/lib/spinner/spinner.component.ts","../../../projects/ui/src/lib/spinner/spinner.component.html","../../../projects/ui/src/lib/spinner/spinner.module.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.directive.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.types.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.component.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.component.html","../../../projects/ui/src/lib/progress-bar/progress-bar.module.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.directive.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.types.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.component.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.component.html","../../../projects/ui/src/lib/progress-circle/progress-circle.module.ts","../../../projects/ui/src/lib/badge/badge.types.ts","../../../projects/ui/src/lib/badge/badge.directive.ts","../../../projects/ui/src/lib/badge/badge.module.ts","../../../projects/ui/src/lib/color/color-display/color-display.types.ts","../../../projects/ui/src/lib/color/color-display/color-display.component.ts","../../../projects/ui/src/lib/color/color-display/color-display.component.html","../../../projects/ui/src/lib/color/color-display/color-display.module.ts","../../../projects/ui/src/lib/kbd/kbd.pipe.ts","../../../projects/ui/src/lib/kbd/kbd.component.ts","../../../projects/ui/src/lib/kbd/kbd.component.html","../../../projects/ui/src/lib/kbd/kbd.module.ts","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.component.ts","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.component.html","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.module.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.types.ts","../../../projects/ui/src/lib/table/table.types.ts","../../../projects/ui/src/lib/table/utils.ts","../../../projects/ui/src/lib/table/table-item-storage.ts","../../../projects/ui/src/lib/table/table.directives.ts","../../../projects/ui/src/lib/_internal/models/pagination.model.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.component.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.component.html","../../../projects/ui/src/lib/table/table.component.ts","../../../projects/ui/src/lib/table/table.component.html","../../../projects/ui/src/lib/table-pagination/table-pagination.module.ts","../../../projects/ui/src/lib/table/table.module.ts","../../../projects/ui/src/lib/table-from-csv/table-from-csv.component.ts","../../../projects/ui/src/lib/table-from-csv/table-from-csv.component.html","../../../projects/ui/src/lib/table-from-csv/table-from-csv.module.ts","../../../projects/ui/src/lib/star/star-display/star-display.component.ts","../../../projects/ui/src/lib/star/star-display/star-display.component.html","../../../projects/ui/src/lib/star/star-display/star-display.module.ts","../../../projects/ui/src/lib/tabber/tab/tab.component.ts","../../../projects/ui/src/lib/tabber/tab/tab.component.html","../../../projects/ui/src/lib/tabber/tabber.component.ts","../../../projects/ui/src/lib/tabber/tabber.component.html","../../../projects/ui/src/lib/tabber/tabber.module.ts","../../../projects/ui/src/lib/card/card.children.ts","../../../projects/ui/src/lib/card/card-header.template.html","../../../projects/ui/src/lib/card/card.types.ts","../../../projects/ui/src/lib/card/card.component.ts","../../../projects/ui/src/lib/card/card.module.ts","../../../projects/ui/src/lib/divider/divider.component.ts","../../../projects/ui/src/lib/divider/divider.module.ts","../../../projects/ui/src/lib/modal/modal.component.ts","../../../projects/ui/src/lib/modal/modal.component.html","../../../projects/ui/src/lib/modal/modal.module.ts","../../../projects/ui/src/lib/dialog/dialog.directives.ts","../../../projects/ui/src/lib/dialog/dialog.component.ts","../../../projects/ui/src/lib/dialog/dialog.component.html","../../../projects/ui/src/lib/dialog/dialog.module.ts","../../../projects/ui/src/lib/dialog/dialog.types.ts","../../../projects/ui/src/lib/_internal/queue.ts","../../../projects/ui/src/lib/snackbar/snackbar-ref.ts","../../../projects/ui/src/lib/snackbar/snackbar.types.ts","../../../projects/ui/src/lib/snackbar/snackbar.component.ts","../../../projects/ui/src/lib/snackbar/snackbar.component.html","../../../projects/ui/src/lib/snackbar/snackbar.token.ts","../../../projects/ui/src/lib/snackbar/snackbar.service.ts","../../../projects/ui/src/public-api.ts","../../../projects/ui/src/ardium-ui-ui.ts"],"sourcesContent":["export const SimpleOneAxisAlignment = {\n Left: 'left',\n Right: 'right',\n} as const;\nexport type SimpleOneAxisAlignment = (typeof SimpleOneAxisAlignment)[keyof typeof SimpleOneAxisAlignment];\n\nexport const OneAxisAlignment = {\n Left: 'left',\n Middle: 'middle',\n Right: 'right',\n} as const;\nexport type OneAxisAlignment = (typeof OneAxisAlignment)[keyof typeof OneAxisAlignment];\n","/**\n * The color of the component.\n *\n * @see {@link ButtonColoringMode} to set what part of the component should be colored.\n */\nexport const ComponentColor = {\n /**\n * The app's standard text color.\n */\n None: 'none',\n /**\n * The app's primary color.\n */\n Primary: 'primary',\n /**\n * The app's secondary color.\n */\n Secondary: 'secondary',\n /**\n * The app's warning color. Usually some shade of yellow.\n */\n Warning: 'warn',\n /**\n * The app's danger color. Usually some shade of red.\n */\n Danger: 'danger',\n /**\n * The app's success color. Usually some shade of green or lime.\n */\n Success: 'success',\n /**\n * The app's info color. Usually some shade of blue or light blue.\n */\n Info: 'info',\n} as const;\nexport type ComponentColor = (typeof ComponentColor)[keyof typeof ComponentColor];\n\nexport const SimpleComponentColor = {\n ...ComponentColor,\n /**\n * The current color set by css.\n */\n CurrentColor: 'currentColor',\n} as const;\nexport type SimpleComponentColor = (typeof SimpleComponentColor)[keyof typeof SimpleComponentColor];\n","//! appearances\nexport const OutlinedAppearance = {\n /**\n * No background with solid border.\n */\n Outlined: 'outlined',\n} as const;\nexport type OutlinedAppearance = (typeof OutlinedAppearance)[keyof typeof OutlinedAppearance];\n\nexport const PanelAppearance = {\n /**\n * Filled with a background color, with slight shadow.\n */\n Raised: 'raised',\n} as const;\nexport type PanelAppearance = (typeof PanelAppearance)[keyof typeof PanelAppearance];\n\nexport const FormElementAppearance = {\n ...OutlinedAppearance,\n /**\n * No background and no border. Useful for when trying to create a component that uses another component inside its borders.\n */\n Transparent: 'transparent',\n /**\n * Slighthly darker/lighter background with rounded but transparent border.\n */\n Filled: 'filled',\n} as const;\nexport type FormElementAppearance = (typeof FormElementAppearance)[keyof typeof FormElementAppearance];\n\nexport const DecorationElementAppearance = {\n Outlined: 'outlined',\n OutlinedStrong: 'outlined-strong',\n Filled: 'filled',\n} as const;\nexport type DecorationElementAppearance = (typeof DecorationElementAppearance)[keyof typeof DecorationElementAppearance];\n\n//! variants\nexport const PanelVariant = {\n /**\n * Slightly rounded corners.\n */\n Rounded: 'rounded',\n /**\n * Sharp corners.\n */\n Sharp: 'sharp',\n} as const;\nexport type PanelVariant = (typeof PanelVariant)[keyof typeof PanelVariant];\n\nexport const FormElementVariant = {\n ...PanelVariant,\n /**\n * Fully rounded corners - pill shaped.\n */\n Pill: 'pill',\n} as const;\nexport type FormElementVariant = (typeof FormElementVariant)[keyof typeof FormElementVariant];\n","import { Directive, HostBinding, Input, input, signal } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\n\r\n@Directive()\r\nexport abstract class _DisablableComponentBase {\r\n //! no value arguments\r\n /**\r\n * Whether the component is read-only. Defines the `readonly` host attribute and `ard-readonly` host class. Coearcible into a boolean.\r\n */\r\n readonly readonly = input<any, boolean>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n /**\r\n * Whether the component is disabled. Defines the `disabled` host attribute and `ard-disabled` host class. Coearcible into a boolean.\r\n */\r\n readonly disabled = signal<boolean>(false);\r\n @Input('disabled')\r\n set _disabled(v: any) {\r\n this.disabled.set(coerceBooleanProperty(v));\r\n }\r\n\r\n @HostBinding('attr.readonly')\r\n @HostBinding('class.ard-readonly')\r\n get _readonlyHostAttribute(): boolean {\r\n return this.readonly();\r\n }\r\n @HostBinding('attr.disabled')\r\n @HostBinding('class.ard-disabled')\r\n get _disabledHostAttribute(): boolean {\r\n return this.disabled();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleOneAxisAlignment } from '../types/alignment.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { DecorationElementAppearance, FormElementVariant } from '../types/theming.types';\r\nimport { _DisablableComponentBase } from './../_internal/disablable-component';\r\n\r\n@Component({\r\n selector: 'ard-chip',\r\n templateUrl: './chip.component.html',\r\n styleUrls: ['./chip.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumChipComponent extends _DisablableComponentBase {\r\n //! appearance\r\n readonly contentAlignment = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n readonly appearance = input<DecorationElementAppearance>(DecorationElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-chip-align-${this.contentAlignment()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<div\r\n class=\"ard-chip-wrapper ard-chip\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { Directive, ElementRef, QueryList, ViewChildren, computed, input, output } from '@angular/core';\r\nimport { coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { _DisablableComponentBase } from './disablable-component';\r\n\r\n@Directive()\r\nexport abstract class _FocusableComponentBase extends _DisablableComponentBase {\r\n //! make the component focusable programmatically\r\n @ViewChildren('focusableElement')\r\n private readonly _focusableElement!: QueryList<ElementRef<HTMLElement>>;\r\n\r\n /**\r\n * Focuses the correct element in the component.\r\n */\r\n public focus(): void {\r\n this._focusableElement?.first?.nativeElement.focus();\r\n }\r\n /**\r\n * Focuses the first of all available elements in the component.\r\n */\r\n public focusFirst(): void {\r\n this.focus();\r\n }\r\n /**\r\n * Focuses the last of all available elements in the component.\r\n */\r\n public focusLast(): void {\r\n this._focusableElement?.last?.nativeElement.focus();\r\n }\r\n /**\r\n * Blurs all focusable elements in the component.\r\n */\r\n public blur(): void {\r\n this._focusableElement?.forEach(el => el.nativeElement.blur());\r\n }\r\n\r\n //! tabindex\r\n /**\r\n * The component's overall tab index. If the component is disabled, it is always `-1`. Coercible into a number, defaults to `0`.\r\n */\r\n readonly tabIndex = computed(() => (this.disabled() ? -1 : this._tabIndex()));\r\n readonly _tabIndex = input<any, number>(0, { alias: 'tabIndex', transform: v => coerceNumberProperty(v) });\r\n\r\n //! events\r\n /**\r\n * The event emitter responsible for firing `focus` events.\r\n */\r\n readonly focusEvent = output<FocusEvent>({ alias: 'focus' });\r\n /**\r\n * The event emitter responsible for firing `blur` events.\r\n */\r\n readonly blurEvent = output<FocusEvent>({ alias: 'blur' });\r\n\r\n //! focus event handlers\r\n /**\r\n * Whether the component is currently focused.\r\n */\r\n public isFocused = false;\r\n\r\n /**\r\n * Function to handle when an element is focused. Sets `isFocused` and fires the `focus` event.\r\n * @param event The focus event to emit.\r\n */\r\n onFocus(event: FocusEvent) {\r\n this.isFocused = true;\r\n this.focusEvent.emit(event);\r\n }\r\n /**\r\n * Function to handle when an element is blurred. Sets `isFocused` and fires the `blur` event.\r\n * @param event The focus event to emit.\r\n */\r\n onBlur(event: FocusEvent) {\r\n this.isFocused = false;\r\n this.blurEvent.emit(event);\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { _FocusableComponentBase } from './focusable-component';\r\n\r\n/**\r\n * Common code for components, which implement the ControlValueAccessor.\r\n *\r\n * **Warning**: `writeValue` function should be implemented on the child component!\r\n */\r\n@Directive()\r\nexport abstract class _NgModelComponentBase extends _FocusableComponentBase implements ControlValueAccessor {\r\n //! control value accessor\r\n protected _onChangeRegistered!: (_: any) => void;\r\n protected _onTouchedRegistered!: () => void;\r\n /**\r\n * Registers a function to handle touched state. Required by ControlValueAccessor.\r\n * @param fn The function to register.\r\n */\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouchedRegistered = fn;\r\n }\r\n /**\r\n * Registers a function to handle value change. Required by ControlValueAccessor.\r\n * @param fn The function to register.\r\n */\r\n registerOnChange(fn: (_: any) => void): void {\r\n this._onChangeRegistered = fn;\r\n }\r\n /**\r\n * Sets the component's disabled state. Required by ControlValueAccessor.\r\n * @param isDisabled the new disabled state.\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n\r\n /**\r\n * Writes the a new value into the component. Required by ControlValueAccessor.\r\n * @abstract\r\n * @param v The new value to write.\r\n */\r\n abstract writeValue(v: any): void; //* abstract\r\n\r\n /**\r\n * Writes the a new value into the component. Required by ControlValueAccessor.\r\n * @abstract\r\n * @param v The new value to write.\r\n */\r\n protected abstract _emitChange(): void; //* abstract\r\n\r\n //! event handlers\r\n override onBlur(event: FocusEvent) {\r\n super.onBlur(event);\r\n this._onTouchedRegistered?.();\r\n }\r\n}\r\n","import { Directive, HostBinding, Input, output, signal } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from './ngmodel-component';\r\n\r\n/**\r\n * Common code for components, which only operate on the \"selected\" state.\r\n */\r\n@Directive()\r\nexport abstract class _BooleanComponentBase extends _NgModelComponentBase implements ControlValueAccessor {\r\n //! control value accessor\r\n writeValue(v: any): void {\r\n this._selected = v;\r\n }\r\n //emitter function\r\n /**\r\n * Emits all select-state-related events.\r\n */\r\n protected _emitChange() {\r\n this._onChangeRegistered?.(this.selected());\r\n\r\n if (this.selected()) this.selectEvent.emit(null);\r\n else this.unselectEvent.emit(null);\r\n\r\n this.selectedChange.emit(this.selected());\r\n this.changeEvent.emit(this.selected());\r\n }\r\n\r\n //! events\r\n /**\r\n * The event emitter responsible for firing `select` events. Fired when the `selected` state is set to true.\r\n */\r\n readonly selectEvent = output<null>({ alias: 'select' });\r\n /**\r\n * The event emitter responsible for firing `unselect` events. Fired when the `selected` state is set to false.\r\n */\r\n readonly unselectEvent = output<null>({ alias: 'unselect' });\r\n /**\r\n * The event emitter responsible for firing `change` events. Fired when the `selected` state is changed.\r\n */\r\n readonly changeEvent = output<boolean>({ alias: 'change' });\r\n\r\n //! [(selected)] two-way binding\r\n // can be set using a no-value argument\r\n readonly selected = signal<boolean>(false);\r\n /**\r\n * The selection state of the component. Coercible into a boolean.\r\n */\r\n @Input('selected')\r\n set _selected(v: any) {\r\n this.selected.set(coerceBooleanProperty(v));\r\n }\r\n @HostBinding('attr.selected')\r\n @HostBinding('class.ard-selected')\r\n get _selectedHostAttribute(): boolean {\r\n return this.selected();\r\n }\r\n /**\r\n * The event emitter responsible for firing `selectedChange` events. Fired when the `selected` state is changed.\r\n */\r\n readonly selectedChange = output<boolean>();\r\n\r\n /**\r\n * Toggles the selected state. Emits all appropriate events.\r\n */\r\n toggleSelected() {\r\n this.selected.update(v => !v);\r\n this._emitChange();\r\n }\r\n\r\n /**\r\n * Sets the state to \"selected\". Emits all appropriate events only if the state changes.\r\n */\r\n select() {\r\n this.selected.set(true);\r\n this._emitChange();\r\n }\r\n /**\r\n * Sets the state to \"unselected\". Emits all appropriate events only if the state changes.\r\n */\r\n unselect() {\r\n this.selected.set(false);\r\n this._emitChange();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleOneAxisAlignment } from '../../types/alignment.types';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { DecorationElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { _BooleanComponentBase } from './../../_internal/boolean-component';\r\n\r\n@Component({\r\n selector: 'ard-selectable-chip',\r\n templateUrl: './selectable-chip.component.html',\r\n styleUrls: ['../chip.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSelectableChipComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSelectableChipComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n readonly DEFAULTS = {\r\n chipTitle: 'Select',\r\n };\r\n\r\n readonly chipTitle = input<string>(this.DEFAULTS.chipTitle);\r\n readonly hideSelectionIcon = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! appearance\r\n readonly contentAlignment = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n readonly appearance = input<DecorationElementAppearance>(DecorationElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-chip-align-${this.contentAlignment()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n type=\"button\"\r\n class=\"ard-chip-wrapper ard-chip-selectable\"\r\n [class.ard-chip-selected]=\"selected()\"\r\n [ngClass]=\"ngClasses()\"\r\n [title]=\"chipTitle()\"\r\n [tabindex]=\"tabIndex()\"\r\n (click)=\"toggleSelected()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div\r\n class=\"ard-chip-selection-icon\"\r\n role=\"img\"\r\n ></div>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</button>\r\n","import { Component } from '@angular/core';\r\nimport { _FocusableComponentBase } from './../focusable-component';\r\n\r\n@Component({\r\n selector: 'ard-clear-button',\r\n templateUrl: './clear-button.component.html',\r\n styleUrls: ['./clear-button.component.scss'],\r\n})\r\nexport class _ClearButtonComponent extends _FocusableComponentBase {}\r\n","<button\r\n #focusableElement\r\n class=\"ard-clear-btn-wrapper\"\r\n type=\"button\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div\r\n class=\"ard-clear-btn\"\r\n aria-hidden=\"true\"\r\n ></div>\r\n</button>\r\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, output, ViewEncapsulation } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../../_internal/focusable-component';\r\nimport { SimpleOneAxisAlignment } from '../../types/alignment.types';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { DecorationElementAppearance, FormElementVariant } from '../../types/theming.types';\r\n\r\n@Component({\r\n selector: 'ard-deletable-chip',\r\n templateUrl: './deletable-chip.component.html',\r\n styleUrls: ['../chip.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumDeletableChipComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumDeletableChipComponent extends _FocusableComponentBase {\r\n readonly DEFAULTS = {\r\n deleteButtonTitle: 'Delete',\r\n };\r\n\r\n readonly deleteButtonTitle = input<string>(this.DEFAULTS.deleteButtonTitle);\r\n\r\n //! appearance\r\n readonly contentAlignment = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n readonly appearance = input<DecorationElementAppearance>(DecorationElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-chip-align-${this.contentAlignment()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! events\r\n readonly deleteEvent = output<MouseEvent>({ alias: 'delete' });\r\n}\r\n","<div\r\n class=\"ard-chip-wrapper ard-chip-deletable\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-clear-button\r\n [title]=\"deleteButtonTitle()\"\r\n (click)=\"deleteEvent.emit($event)\"\r\n [tabIndex]=\"tabIndex()\"\r\n ></ard-clear-button>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { _ClearButtonComponent } from './clear-button.component';\n\n@NgModule({\n declarations: [_ClearButtonComponent],\n imports: [CommonModule],\n exports: [_ClearButtonComponent],\n})\nexport class _ClearButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumChipComponent } from './chip.component';\nimport { ArdiumSelectableChipComponent } from './selectable-chip/selectable-chip.component';\nimport { ArdiumDeletableChipComponent } from './deletable-chip/deletable-chip.component';\nimport { _ClearButtonModule } from '../_internal/clear-button/clear-button.module';\n\n@NgModule({\n declarations: [ArdiumChipComponent, ArdiumSelectableChipComponent, ArdiumDeletableChipComponent],\n imports: [CommonModule, _ClearButtonModule],\n exports: [ArdiumChipComponent, ArdiumSelectableChipComponent, ArdiumDeletableChipComponent],\n})\nexport class ArdiumChipModule {}\n","export type ScrollAlignment = 'top' | 'bottom' | 'middle';\n\nexport const DropdownPanelAppearance = {\n Outlined: 'outlined',\n Raised: 'raised',\n} as const;\nexport type DropdownPanelAppearance = (typeof DropdownPanelAppearance)[keyof typeof DropdownPanelAppearance];\n\nexport const DropdownPanelVariant = {\n Rounded: 'rounded',\n Sharp: 'sharp',\n SharpConnected: 'sharp ard-connected',\n} as const;\nexport type DropdownPanelVariant = (typeof DropdownPanelVariant)[keyof typeof DropdownPanelVariant];\n","import {\r\n AfterViewChecked,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n output,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant, ScrollAlignment } from './dropdown-panel.types';\r\n\r\n@Component({\r\n selector: 'ard-dropdown-panel',\r\n templateUrl: './dropdown-panel.component.html',\r\n styleUrls: ['./dropdown-panel.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class.ard-open]': 'isOpen()',\r\n },\r\n})\r\nexport class ArdiumDropdownPanelComponent implements AfterViewChecked {\r\n private readonly _scrollElementRef = viewChild<ElementRef<HTMLElement>>('scroll');\r\n private readonly _scrollEl = computed(() => this._scrollElementRef()?.nativeElement);\r\n\r\n //! options\r\n readonly panelId = input<string>();\r\n readonly headerTemplate = input<TemplateRef<any> | null>(null);\r\n readonly footerTemplate = input<TemplateRef<any> | null>(null);\r\n readonly filterValue = input<Nullable<string>>();\r\n\r\n //! appearance\r\n readonly appearance = input<DropdownPanelAppearance>(DropdownPanelAppearance.Raised);\r\n readonly variant = input<DropdownPanelVariant>(DropdownPanelVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string =>\r\n [`ard-appearance-${this.appearance()}`, `ard-variant-${this.variant()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! states\r\n readonly isOpen = input.required<boolean>();\r\n\r\n //! output events\r\n readonly scrollEvent = output<{\r\n start: number;\r\n end: number;\r\n }>({ alias: 'scroll' });\r\n readonly scrollToEndEvent = output({ alias: 'scrollToEnd' });\r\n\r\n //! event handlers\r\n onScroll() {\r\n const start = this._scrollTop;\r\n const end = this._scrollBottom;\r\n this.scrollEvent.emit({ start, end });\r\n\r\n if (end === this._scrollEl()?.scrollHeight) {\r\n this.scrollToEndEvent.emit();\r\n }\r\n }\r\n\r\n //! hooks\r\n ngAfterViewChecked(): void {\r\n if (!this._currentScrollToDirection) return;\r\n\r\n const recent = this._scrollEl()?.querySelector<HTMLElement>('.ard-option-highlighted-recent');\r\n if (!recent) return;\r\n\r\n const isInView = this._isElementInView(recent);\r\n if (!isInView) {\r\n this._scrollToElement(recent, this._currentScrollToDirection);\r\n }\r\n\r\n this._currentScrollToDirection = null;\r\n }\r\n\r\n //! scroll position\r\n private get _scrollTop(): number {\r\n return this._scrollEl()?.scrollTop ?? 0;\r\n }\r\n private set _scrollTop(value: number) {\r\n const el = this._scrollEl();\r\n if (!el) return;\r\n el.scrollTop = value;\r\n }\r\n private get _scrollBottom(): number {\r\n return this._scrollTop + (this._scrollEl()?.getBoundingClientRect().height ?? 0);\r\n }\r\n\r\n //! scroll to element methods\r\n private _scrollToElement(el: HTMLElement, alignTo: ScrollAlignment = 'middle'): void {\r\n const scrollEl = this._scrollEl();\r\n if (!scrollEl) return;\r\n\r\n const parentContentRect = this._getContentRect(scrollEl);\r\n const elementRect = el.getBoundingClientRect();\r\n\r\n switch (alignTo) {\r\n case 'top':\r\n this._scrollTop += elementRect.top - parentContentRect.top;\r\n break;\r\n case 'bottom':\r\n this._scrollTop += elementRect.bottom - parentContentRect.bottom;\r\n break;\r\n case 'middle':\r\n this._scrollTop += (elementRect.top + elementRect.bottom) / 2 - parentContentRect.top - parentContentRect.height / 2;\r\n break;\r\n }\r\n }\r\n\r\n private _currentScrollToDirection: ScrollAlignment | null = null;\r\n scrollToRecentlyHighlighted(direction: ScrollAlignment): void {\r\n this._currentScrollToDirection = direction;\r\n }\r\n private _isElementInView(el: HTMLElement): boolean {\r\n const scrollEl = this._scrollEl();\r\n if (!scrollEl) return true;\r\n\r\n const parentContentRect = this._getContentRect(scrollEl);\r\n const elementRect = el.getBoundingClientRect();\r\n return elementRect.bottom < parentContentRect.bottom && elementRect.top > parentContentRect.top;\r\n }\r\n private _getContentRect(el: HTMLElement): DOMRect {\r\n const elRect = el.getBoundingClientRect();\r\n const elPadding = window.getComputedStyle(el).getPropertyValue('padding');\r\n const paddings = elPadding.split(' ').map(v => (v ? parseFloat(v) : null));\r\n const topPadd = paddings[0] ?? 0;\r\n const rightPadd = paddings[1] ?? topPadd;\r\n const bottomPadd = paddings[2] ?? topPadd;\r\n const leftPadd = paddings[3] ?? rightPadd ?? topPadd;\r\n\r\n return new DOMRect(\r\n elRect.x + leftPadd,\r\n elRect.y + topPadd,\r\n elRect.width - leftPadd - rightPadd,\r\n elRect.height - topPadd - bottomPadd\r\n );\r\n }\r\n}\r\n","<div\r\n class=\"ard-dropdown-panel-container\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @if (headerTemplate()) {\r\n <div class=\"ard-dropdown-header\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"headerTemplate()\"\r\n [ngTemplateOutletContext]=\"{ searchTerm: filterValue() }\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n <div\r\n #scroll\r\n class=\"ard-dropdown-panel-content\"\r\n [attr.id]=\"panelId()\"\r\n (scroll)=\"onScroll()\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n @if (footerTemplate()) {\r\n <div class=\"ard-dropdown-footer\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"footerTemplate()\"\r\n [ngTemplateOutletContext]=\"{ searchTerm: filterValue() }\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDropdownPanelComponent } from './dropdown-panel.component';\n\n@NgModule({\n declarations: [ArdiumDropdownPanelComponent],\n imports: [CommonModule],\n exports: [ArdiumDropdownPanelComponent],\n})\nexport class ArdiumDropdownPanelModule {}\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { any, evaluate, isArray, isDefined, isObject, isPrimitive, isPromise } from 'simple-bool';\r\nimport { AddCustomFn } from '../../select/select.types';\r\nimport { ArdItemGroupMap, ArdOption, ArdOptionGroup, CompareWithFn, GroupByFn, SearchFn } from '../../types/item-storage.types';\r\nimport { Nullable } from '../../types/utility.types';\r\n\r\nexport interface ItemStorageHostDefaults {\r\n valueFrom: string;\r\n labelFrom: string;\r\n disabledFrom: string;\r\n groupLabelFrom: string;\r\n groupDisabledFrom: string;\r\n childrenFrom: string;\r\n [key: string]: any;\r\n}\r\nexport interface ItemStorageHost {\r\n readonly valueFrom: Signal<Nullable<string>>;\r\n readonly labelFrom: Signal<Nullable<string>>;\r\n readonly disabledFrom: Signal<Nullable<string>>;\r\n readonly invertDisabled: Signal<Nullable<boolean>>;\r\n readonly groupLabelFrom: Signal<Nullable<string | GroupByFn>>;\r\n readonly groupDisabledFrom: Signal<Nullable<string>>;\r\n readonly childrenFrom: Signal<Nullable<string>>;\r\n readonly DEFAULTS: ItemStorageHostDefaults;\r\n readonly itemsAlreadyGrouped: Signal<Nullable<boolean>>;\r\n readonly hideSelected: Signal<boolean>;\r\n readonly searchCaseSensitive: Signal<boolean>;\r\n readonly searchFn: Signal<SearchFn>;\r\n readonly compareWith: Signal<Nullable<CompareWithFn>>;\r\n readonly multiselectable: Signal<boolean>;\r\n readonly sortMultipleValues: Signal<boolean>;\r\n readonly maxSelectedItems: Signal<Nullable<number>>;\r\n readonly addCustom: Signal<boolean | AddCustomFn<any> | AddCustomFn<Promise<any>>>;\r\n readonly _componentId: string;\r\n}\r\n\r\nexport class ItemStorage {\r\n private readonly _groups = signal<ArdItemGroupMap>(this._createEmptyGroupMap());\r\n private readonly _items = signal<ArdOption[]>([]);\r\n private readonly _filteredItems = signal<ArdOption[]>([]);\r\n private readonly _highlightedItems = signal<ArdOption[]>([]);\r\n private readonly _highlightedGroups = signal<ArdOptionGroup[]>([]);\r\n private readonly _recentlyHighlightedItem = signal<Nullable<ArdOption>>(undefined);\r\n private readonly _selectedItems = signal<ArdOption[]>([]);\r\n\r\n constructor(private readonly _ardParentComp: ItemStorageHost) {}\r\n\r\n readonly groups = computed(() =>\r\n Array.from(this._groups().entries())\r\n .map(([, group]) => group)\r\n .filter(group => group.children().length)\r\n );\r\n readonly items = this._items.asReadonly();\r\n readonly filteredItems = this._filteredItems.asReadonly();\r\n readonly highlightedItems = this._highlightedItems.asReadonly();\r\n\r\n readonly selectedItems = computed(() => {\r\n if (this._ardParentComp.sortMultipleValues()) {\r\n return this._selectedItems().sort((a, b) => {\r\n return a.index() - b.index();\r\n });\r\n }\r\n return this._selectedItems();\r\n });\r\n readonly lastSelectedItem = computed(() => this._filteredItems().last(1, item => !item.disabled()));\r\n\r\n readonly value = computed(() => this._itemsToValue(this.selectedItems()));\r\n private _itemsToValue(items: ArdOption[]): any[] {\r\n return items.map(item => item.value());\r\n }\r\n\r\n readonly isNoItemsToSelect = computed(() => this._items().length === this._selectedItems().length);\r\n readonly isNoItemsFound = computed(() => this._filteredItems().length === 0);\r\n readonly isAnyItemSelected = computed(() => this._selectedItems().length > 0);\r\n readonly isAnyItemHighlighted = computed(() => this._highlightedItems().length > 0);\r\n readonly isItemLimitReached = computed(\r\n () =>\r\n this._ardParentComp.multiselectable() &&\r\n isDefined(this._ardParentComp.maxSelectedItems()) &&\r\n this._ardParentComp.maxSelectedItems()! <= this.selectedItems().length\r\n );\r\n\r\n setItems(items: any[]): boolean {\r\n let areItemsPrimitive = false;\r\n if (this._ardParentComp.groupLabelFrom() && this._ardParentComp.itemsAlreadyGrouped()) {\r\n const newItems = [];\r\n for (const group of items) {\r\n let children: any[];\r\n [children, areItemsPrimitive] = this._ungroupAlreadyGroupedItems(group);\r\n newItems.push(...children);\r\n }\r\n items = newItems;\r\n }\r\n if (any(items, isPrimitive)) {\r\n items = items.map(this._primitiveItemsMapFn);\r\n areItemsPrimitive = true;\r\n }\r\n\r\n this._items.set(\r\n items.map((item, index) => {\r\n return this._setItemsMapFn(item, index, areItemsPrimitive);\r\n })\r\n );\r\n\r\n //add all items to filter array\r\n this._filteredItems.set(this._items());\r\n\r\n //add items to groups\r\n this._populateGroups();\r\n\r\n //write value if it was\r\n const toWrite = this._valueToWriteAfterItemsLoad();\r\n if (toWrite !== undefined) {\r\n this.handleWriteValue(toWrite);\r\n }\r\n\r\n return areItemsPrimitive;\r\n }\r\n private _addSingleItem(item: any): ArdOption {\r\n const isItemPrimitive = isPrimitive(item);\r\n //map a primitive item to a usable object\r\n if (isItemPrimitive) {\r\n item = this._primitiveItemsMapFn(item);\r\n }\r\n //map the item to create data bindings\r\n const ardOption = this._setItemsMapFn(item, (this._items().last()?.index() ?? 0) + 1, isItemPrimitive);\r\n\r\n //push the item into all items\r\n this._items.update(v => [...v, ardOption]);\r\n\r\n //add item to groups\r\n this._populateGroups();\r\n\r\n return ardOption;\r\n }\r\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\r\n return { value: item };\r\n }\r\n private _ungroupAlreadyGroupedItems<T extends object>(group: T): [any[], boolean] {\r\n //determine groupBy (groupLabel) path\r\n const groupBy = this._ardParentComp.groupLabelFrom() ?? this._ardParentComp.DEFAULTS.groupLabelFrom;\r\n\r\n //get group label from object\r\n let groupName: any;\r\n if (typeof groupBy === 'string') {\r\n groupName = resolvePath(group, groupBy);\r\n } else {\r\n groupName = groupBy(group);\r\n }\r\n\r\n //determine group children path\r\n const childrenPath = this._ardParentComp.childrenFrom() ?? this._ardParentComp.DEFAULTS.childrenFrom;\r\n\r\n //get group children\r\n let groupItems: any = resolvePath(group, childrenPath);\r\n\r\n //return empty array if groupItems is not an array or is empty\r\n if (!isArray(groupItems) || groupItems.length === 0) return [[], false];\r\n\r\n //check if the array is an array of primitives, and map it if needed\r\n const areItemsPrimitive = false;\r\n if (any(groupItems, isPrimitive)) {\r\n groupItems = groupItems.map(this._primitiveItemsMapFn);\r\n }\r\n //add group name to every child\r\n groupItems = groupItems.map((item: any) => {\r\n item.$ardgroup = groupName;\r\n return item;\r\n });\r\n\r\n return [groupItems, areItemsPrimitive];\r\n }\r\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdOption {\r\n if (areItemsPrimitive) {\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(rawItemData.value),\r\n label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),\r\n disabled: signal(false),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n group: signal(undefined),\r\n highlighted_recently: signal(false),\r\n };\r\n }\r\n //get value\r\n const valuePath =\r\n this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom() ?? this._ardParentComp.DEFAULTS.valueFrom;\r\n const value = resolvePath(rawItemData, valuePath);\r\n\r\n //get label\r\n const labelPath =\r\n this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom() ?? this._ardParentComp.DEFAULTS.labelFrom;\r\n const label = resolvePath(rawItemData, labelPath) ?? value;\r\n\r\n //get disabled\r\n const disabledPath = this._ardParentComp.disabledFrom() ?? this._ardParentComp.DEFAULTS.disabledFrom;\r\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\r\n if (this._ardParentComp.invertDisabled()) {\r\n disabled = !disabled;\r\n }\r\n\r\n //get groups\r\n let group: any = undefined;\r\n const groupBy = this._ardParentComp.groupLabelFrom();\r\n if (groupBy) {\r\n if (rawItemData.$ardgroup) {\r\n group = rawItemData.$ardgroup;\r\n } else {\r\n if (typeof groupBy === 'string') {\r\n group = resolvePath(rawItemData, groupBy);\r\n } else {\r\n group = groupBy(rawItemData);\r\n }\r\n }\r\n }\r\n\r\n //return\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(value),\r\n label: signal(label?.toString?.() ?? String(label)),\r\n disabled: signal(disabled),\r\n group: signal(group),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n highlighted_recently: signal(false),\r\n };\r\n }\r\n private _populateGroups(): void {\r\n this._groups.set(this._createEmptyGroupMap());\r\n\r\n for (const item of this._filteredItems()) {\r\n if (this._ardParentComp.hideSelected() && item.selected()) continue;\r\n\r\n this._addToGroup(item);\r\n }\r\n }\r\n private _addToGroup(item: ArdOption): void {\r\n const groupKey = item.group();\r\n const targetGroup = this._groups().get(groupKey);\r\n //create new group if needed\r\n if (!targetGroup) {\r\n this._groups.update(v => {\r\n const map = new Map(v);\r\n map.set(groupKey, {\r\n label: signal(String(groupKey ?? '')),\r\n children: signal([item]),\r\n disabled: signal(false),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n });\r\n return map;\r\n });\r\n return;\r\n }\r\n targetGroup.children.update(v => [...v, item]);\r\n }\r\n private _createEmptyGroupMap(): ArdItemGroupMap {\r\n return new Map([\r\n [\r\n undefined,\r\n {\r\n label: signal(''),\r\n children: signal([]),\r\n disabled: signal(false),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n },\r\n ],\r\n ]) as ArdItemGroupMap;\r\n }\r\n private _isWriteValueValid(ngModel: any[]): boolean {\r\n return ngModel.every(item => {\r\n if (!isDefined(this._ardParentComp.compareWith) && isObject(item) && this._ardParentComp.valueFrom()) {\r\n console.warn(\r\n `ARD-WA${this._ardParentComp._componentId}0: Setting object(${JSON.stringify(\r\n item\r\n )}) as your model with [valueFrom] is not allowed unless [compareWith] is used.`\r\n );\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n private readonly _valueToWriteAfterItemsLoad = signal<any>(undefined);\r\n private readonly _wasValueWriteDeferred = signal<boolean>(false);\r\n handleWriteValue(ngModel: any[]): void {\r\n //defer writing the value if no options are yet loaded\r\n if (!this._wasValueWriteDeferred() && this._items().length === 0) {\r\n this._valueToWriteAfterItemsLoad.set(ngModel);\r\n return;\r\n }\r\n\r\n this.clearAllSelected();\r\n\r\n if (!this._isWriteValueValid(ngModel)) {\r\n return;\r\n }\r\n\r\n const selectItemByValue = (value: any) => {\r\n const item = this.findItemByValue(value);\r\n\r\n if (item) {\r\n this.selectItem(item);\r\n return;\r\n }\r\n console.warn(\r\n `ARD-WA${this._ardParentComp._componentId}1: Couldn't find an item with value ${value?.toString?.() || String(value)}.`\r\n );\r\n };\r\n\r\n for (const modelValue of ngModel) {\r\n selectItemByValue(modelValue);\r\n }\r\n }\r\n findItemByValue(valueToFind: any): ArdOption | undefined {\r\n let findBy: (item: ArdOption) => boolean;\r\n if (this._ardParentComp.compareWith()) {\r\n findBy = item => this._ardParentComp.compareWith()!(valueToFind, item.value);\r\n } else {\r\n findBy = item => item.value === valueToFind;\r\n }\r\n return this._items().find(item => findBy(item));\r\n }\r\n async addCustomOption(value: string, fn: AddCustomFn<any> | AddCustomFn<Promise<any>>): Promise<ArdOption> {\r\n const fnResult = fn(value);\r\n\r\n let optionValue = fnResult;\r\n if (isPromise(optionValue)) optionValue = await optionValue;\r\n\r\n const newOptionObj = this._addSingleItem(optionValue);\r\n\r\n return newOptionObj;\r\n }\r\n\r\n clearAllSelected(repopulateGroups = false): any[] {\r\n for (const item of this._selectedItems()) {\r\n item.selected.set(false);\r\n }\r\n const removedItemValues = this._itemsToValue(this._selectedItems());\r\n this._selectedItems.set([]);\r\n\r\n if (repopulateGroups && this._ardParentComp.hideSelected()) this._populateGroups();\r\n\r\n return removedItemValues;\r\n }\r\n clearLastSelected(): ArdOption {\r\n const item = this._selectedItems().last();\r\n if (!item) return item;\r\n this.unselectItem(item);\r\n return item;\r\n }\r\n selectItem(...items: ArdOption[]): [any[], any[], any[]] {\r\n if (this.isItemLimitReached()) {\r\n return [[], [], this._itemsToValue(items)];\r\n }\r\n let unselected = [];\r\n if (!this._ardParentComp.multiselectable()) {\r\n unselected = this.clearAllSelected(false);\r\n }\r\n\r\n let itemsSelectedCount = 0;\r\n const itemsSelected = [];\r\n for (const item of items) {\r\n itemsSelectedCount++;\r\n if (item.selected()) continue;\r\n if (this.isItemLimitReached()) {\r\n break;\r\n }\r\n item.selected.set(true);\r\n this._selectedItems.update(v => [...v, item]);\r\n itemsSelected.push(item);\r\n }\r\n\r\n if (this._ardParentComp.hideSelected()) {\r\n this._populateGroups();\r\n }\r\n\r\n const itemsFailedToSelect = items.slice(itemsSelectedCount - 1);\r\n return [this._itemsToValue(itemsSelected), unselected, this._itemsToValue(itemsFailedToSelect)];\r\n }\r\n unselectItem(...items: ArdOption[]): any[] {\r\n for (const item of items) {\r\n if (!item.selected()) continue;\r\n item.selected.set(false);\r\n }\r\n this._selectedItems.update(v => v.filter(v => v.selected()));\r\n\r\n if (this._ardParentComp.hideSelected()) {\r\n this._populateGroups();\r\n }\r\n\r\n return this._itemsToValue(items);\r\n }\r\n\r\n clearAllHighlights(): void {\r\n for (const item of this._highlightedItems()) {\r\n item.highlighted.set(false);\r\n }\r\n for (const group of this._highlightedGroups()) {\r\n group.highlighted.set(false);\r\n }\r\n this._highlightedItems.set([]);\r\n this._highlightedGroups.set([]);\r\n }\r\n highlightGroup(group: ArdOptionGroup): ArdOption {\r\n this.clearAllHighlights();\r\n group.highlighted.set(true);\r\n this.highlightItem(...group.children());\r\n return group.children().first();\r\n }\r\n highlightSingleItem(item: ArdOption): ArdOption | null {\r\n if (!item || item.disabled()) return null;\r\n this.clearAllHighlights();\r\n return this.highlightItem(item);\r\n }\r\n highlightItem(...items: ArdOption[]): ArdOption {\r\n for (const item of items) {\r\n item.highlighted.set(true);\r\n }\r\n this._highlightedItems.update(v => [...v, ...items]);\r\n return items.last();\r\n }\r\n unhighlightItem(...items: ArdOption[]): void {\r\n for (const item of items) {\r\n if (!item || !item.highlighted) return;\r\n\r\n item.highlighted.set(false);\r\n }\r\n this._highlightedItems.update(v => v.filter(v => v.highlighted()));\r\n }\r\n highlightFirstItem(): ArdOption | null {\r\n this.clearAllHighlights();\r\n const itemsToHighlight = this._getHiglightableItems();\r\n return this.highlightSingleItem(itemsToHighlight.first());\r\n }\r\n highlightLastItem(): ArdOption | null {\r\n this.clearAllHighlights();\r\n const itemsToHighlight = this._getHiglightableItems();\r\n return this.highlightSingleItem(itemsToHighlight.last());\r\n }\r\n private _getHiglightableItems(): ArdOption[] {\r\n let itemsToHighlight = this._filteredItems().filter(item => !item.disabled());\r\n if (this._ardParentComp.hideSelected()) {\r\n itemsToHighlight = itemsToHighlight.filter(item => !item.selected());\r\n }\r\n return itemsToHighlight;\r\n }\r\n highlightAllItems(): void {\r\n this.highlightItem(...this._getHiglightableItems());\r\n }\r\n private _clearRecentlyHighlighted(): void {\r\n if (this._recentlyHighlightedItem()) {\r\n this._recentlyHighlightedItem()!.highlighted_recently.set(false);\r\n }\r\n }\r\n setRecentlyHighlighted(item: ArdOption): void {\r\n this._clearRecentlyHighlighted();\r\n item.highlighted_recently.set(true);\r\n this._recentlyHighlightedItem.set(item);\r\n }\r\n highlightNextItem(offset: number, hasShift?: boolean): ArdOption | null {\r\n if (!this.isAnyItemHighlighted()) {\r\n return this.highlightFirstItem();\r\n }\r\n const currentItem = this.highlightedItems().last();\r\n const highlightableItems = this._getHiglightableItems();\r\n const currentIndexInFiltered = highlightableItems.findIndex(item => item.index() === currentItem.index());\r\n\r\n let nextItemIndex = currentIndexInFiltered + offset;\r\n if (nextItemIndex >= highlightableItems.length) {\r\n nextItemIndex -= highlightableItems.length;\r\n }\r\n if (nextItemIndex < 0) {\r\n nextItemIndex += highlightableItems.length;\r\n }\r\n const itemToHighlight = highlightableItems[nextItemIndex];\r\n\r\n if (hasShift && this._ardParentComp.multiselectable()) {\r\n if (itemToHighlight.highlighted()) {\r\n this.unhighlightItem(currentItem);\r\n }\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n return this.highlightSingleItem(itemToHighlight);\r\n }\r\n filter(filterTerm: string): any[] {\r\n if (!filterTerm) {\r\n return this._itemsToValue(this.resetFiltered());\r\n }\r\n if (!this._ardParentComp.searchCaseSensitive()) {\r\n filterTerm = filterTerm.toLocaleLowerCase();\r\n }\r\n\r\n const searchFn = this._ardParentComp.searchFn();\r\n const newFilteredItems = this._items().filter(item => searchFn(filterTerm, item));\r\n this._filteredItems.set(newFilteredItems);\r\n\r\n this._populateGroups();\r\n\r\n if (!this.isNoItemsFound) this.highlightFirstItem();\r\n else this.clearAllHighlights();\r\n\r\n return this._itemsToValue(newFilteredItems);\r\n }\r\n resetFiltered(): ArdOption[] {\r\n if (this._filteredItems().length === this._items().length) return this._items();\r\n\r\n let newFilteredItems = this._items();\r\n if (this._ardParentComp.hideSelected() && this.isAnyItemSelected()) {\r\n newFilteredItems = newFilteredItems.filter(item => !item.selected());\r\n }\r\n this._populateGroups();\r\n return newFilteredItems;\r\n }\r\n}\r\n","import {\r\n AfterViewChecked,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { Subject } from 'rxjs';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\n@Component({\r\n selector: 'ard-option',\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumOptionComponent implements OnChanges, AfterViewChecked, OnDestroy {\r\n private readonly elementRef = inject(ElementRef<HTMLElement>);\r\n\r\n readonly value = input<any>(undefined);\r\n\r\n readonly hasImplicitValue = computed<boolean>(() => this.value() === undefined);\r\n\r\n readonly label = input<Nullable<string>>(undefined);\r\n\r\n get labelOrInnerHtml(): string {\r\n return this.label() ?? (this.elementRef.nativeElement.innerHTML || '').trim();\r\n }\r\n\r\n readonly disabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! state change listener\r\n readonly stateChange$ = new Subject<{\r\n value: any;\r\n oldValue?: string;\r\n disabled: boolean;\r\n label?: Nullable<string>;\r\n }>();\r\n\r\n private _previousLabel: Nullable<string>;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['disabled']) {\r\n this.stateChange$.next({\r\n value: this.value(),\r\n disabled: changes['disabled'].currentValue,\r\n });\r\n }\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n if (this.label() !== this._previousLabel) {\r\n let oldValue = this.value();\r\n if (this.hasImplicitValue()) oldValue = this._previousLabel;\r\n\r\n this._previousLabel = this.label();\r\n\r\n this.stateChange$.next({\r\n value: this.value(),\r\n oldValue,\r\n disabled: this.disabled(),\r\n label: this.label(),\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChange$.complete();\r\n }\r\n}\r\n","import { ArdOption, SearchFn } from './types/item-storage.types';\r\n\r\nexport function searchInString(searchTerm: string, toSearch: any) {\r\n if (toSearch === undefined) return false;\r\n return String(toSearch).toLocaleLowerCase().indexOf(searchTerm) !== -1;\r\n}\r\nexport const searchFunctions: {\r\n byLabel: SearchFn;\r\n byValue: SearchFn;\r\n byGroup: SearchFn;\r\n byLabelAndGroup: SearchFn;\r\n byLabelAndValue: SearchFn;\r\n byLabelAndGroupAndValue: SearchFn;\r\n} = {\r\n /**\r\n * Determines if the item should appear in the search results, based on the label only.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabel: (searchTerm: string, item: ArdOption) => {\r\n return searchInString(searchTerm, item.label());\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the value only.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byValue: (searchTerm: string, item: ArdOption) => {\r\n return searchInString(searchTerm, item.value());\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the group only.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byGroup: (searchTerm: string, item: ArdOption) => {\r\n return searchInString(searchTerm, item.group());\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the label and group.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabelAndGroup: (searchTerm: string, item: ArdOption) => {\r\n return (\r\n searchFunctions.byLabel(searchTerm, item) || (item.label() !== item.value() && searchFunctions.byValue(searchTerm, item))\r\n );\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the label and value.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabelAndValue: (searchTerm: string, item: ArdOption) => {\r\n return searchFunctions.byLabel(searchTerm, item) || searchFunctions.byValue(searchTerm, item);\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the label, group, and value.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabelAndGroupAndValue: (searchTerm: string, item: ArdOption) => {\r\n return (\r\n searchFunctions.byLabel(searchTerm, item) ||\r\n (item.label() !== item.value() && searchFunctions.byValue(searchTerm, item)) ||\r\n searchFunctions.byGroup(searchTerm, item)\r\n );\r\n },\r\n};\r\n","import { Signal, WritableSignal } from '@angular/core';\r\nimport { Nullable } from './utility.types';\r\n\r\n/**\r\n```typescript\r\ninterface OptionContext {\r\n $implicit: ArdOption;\r\n item: ArdOption;\r\n itemData: any;\r\n}\r\n```\r\n */\r\nexport interface OptionContext<T extends ArdSimplestStorageItem> {\r\n $implicit: T;\r\n item: T;\r\n itemData: any;\r\n}\r\n\r\n/**\r\n```typescript\r\ninterface ArdOption {\r\n readonly itemData: any;\r\n readonly index: number;\r\n label: string;\r\n value: any;\r\n highlighted?: boolean;\r\n selected?: boolean;\r\n}\r\n```\r\n */\r\nexport interface ArdSimplestStorageItem {\r\n readonly itemData: WritableSignal<any>;\r\n readonly index: Signal<number>;\r\n readonly value: WritableSignal<any>;\r\n readonly label: WritableSignal<string>;\r\n readonly selected: WritableSignal<Nullable<boolean>>;\r\n readonly highlighted: WritableSignal<Nullable<boolean>>;\r\n}\r\n\r\n/**\r\n```typescript\r\ninterface ArdOption {\r\n readonly itemData: any;\r\n readonly index: number;\r\n readonly label: string;\r\n readonly value: any;\r\n disabled?: boolean;\r\n highlighted?: boolean;\r\n selected?: boolean;\r\n}\r\n```\r\n */\r\nexport interface ArdOptionSimple extends ArdSimplestStorageItem {\r\n readonly disabled: WritableSignal<Nullable<boolean>>;\r\n}\r\n/**\r\n```typescript\r\ninterface ArdOption {\r\n readonly itemData: any;\r\n readonly index: number;\r\n readonly label: string;\r\n readonly value: any;\r\n readonly group?: any;\r\n disabled?: boolean;\r\n selected?: boolean;\r\n highlighted?: boolean;\r\n highlighted_recently?: boolean;\r\n}\r\n```\r\n */\r\nexport interface ArdOption extends ArdOptionSimple {\r\n readonly group: Signal<any>;\r\n readonly highlighted_recently: WritableSignal<Nullable<boolean>>;\r\n}\r\n\r\n/**\r\n```typescript\r\ninterface ArdItemGroup {\r\n label: string;\r\n disabled?: boolean;\r\n highlighted?: boolean;\r\n selected?: boolean;\r\n children: ArdOption[];\r\n}\r\n```\r\n */\r\nexport interface ArdOptionGroup {\r\n readonly label: WritableSignal<string>;\r\n readonly disabled: WritableSignal<Nullable<boolean>>;\r\n readonly highlighted: WritableSignal<Nullable<boolean>>;\r\n readonly selected: WritableSignal<Nullable<boolean>>;\r\n readonly children: WritableSignal<ArdOption[]>;\r\n}\r\n\r\nexport const ArdPanelPosition = {\r\n Top: 'top',\r\n Bottom: 'bottom',\r\n Auto: 'auto',\r\n} as const;\r\nexport type ArdPanelPosition = (typeof ArdPanelPosition)[keyof typeof ArdPanelPosition];\r\n\r\nexport type ArdItemGroupMap = Map<any, ArdOptionGroup>;\r\n\r\nexport type GroupByFn = (item: any) => any;\r\nexport type SearchFn = (searchTerm: string, item: ArdOption) => boolean;\r\nexport type CompareWithFn = (value: any, optionValue: any) => boolean;\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { ArdOption, OptionContext } from '../types/item-storage.types';\r\nimport {\r\n CustomOptionContext,\r\n GroupContext,\r\n ItemDisplayLimitContext,\r\n ItemLimitContext,\r\n PlaceholderContext,\r\n SearchContext,\r\n ValueContext,\r\n} from './select.types';\r\n\r\n//public (exported)\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-prefix-tmp]' })\r\nexport class ArdSelectPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-suffix-tmp]' })\r\nexport class ArdSelectSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-value-tmp]' })\r\nexport class ArdValueTemplateDirective {\r\n constructor(public template: TemplateRef<ValueContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-value-chip-tmp]' })\r\nexport class ArdValueChipTemplateDirective {\r\n constructor(public template: TemplateRef<ValueContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-option-tmp]' })\r\nexport class ArdOptionTemplateDirective {\r\n constructor(public template: TemplateRef<OptionContext<ArdOption>>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-optgroup-tmp]' })\r\nexport class ArdOptgroupTemplateDirective {\r\n constructor(public template: TemplateRef<GroupContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-placeholder-tmp]' })\r\nexport class ArdSelectPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<PlaceholderContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-loading-spinner-tmp]' })\r\nexport class ArdLoadingSpinnerTemplateDirective {\r\n constructor(public template: TemplateRef<null>) {}\r\n}\r\n\r\n@Directive({\r\n selector: 'ard-select > ng-template[ard-loading-placeholder-tmp]',\r\n})\r\nexport class ArdLoadingPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-dropdown-header-tmp]' })\r\nexport class ArdDropdownHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-dropdown-footer-tmp]' })\r\nexport class ArdDropdownFooterTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-no-items-found-tmp]' })\r\nexport class ArdNoItemsFoundTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-add-custom-tmp]' })\r\nexport class ArdAddCustomTemplateDirective {\r\n constructor(public template: TemplateRef<CustomOptionContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-item-limit-reached-tmp]' })\r\nexport class ArdItemLimitReachedTemplateDirective {\r\n constructor(public template: TemplateRef<ItemLimitContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-item-display-limit-tmp]' })\r\nexport class ArdItemDisplayLimitTemplateDirective {\r\n constructor(public template: TemplateRef<ItemDisplayLimitContext>) {}\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-form-field-frame > ng-template[ard-prefix-tmp]' })\nexport class ArdFormFieldPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-form-field-frame > ng-template[ard-suffix-tmp]' })\nexport class ArdFormFieldSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n input\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective } from './form-field-frame.directives';\r\n\r\n@Component({\r\n selector: 'ard-form-field-frame',\r\n templateUrl: './form-field-frame.component.html',\r\n styleUrls: ['./form-field-frame.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumFormFieldFrameComponent extends _FocusableComponentBase {\r\n //! focused state\r\n @Input() override isFocused = false;\r\n\r\n //! appearance\r\n /**\r\n * The appearance of the component, aka the styling.\r\n */\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n /**\r\n * The variant of the component, aka the shape.\r\n */\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n\r\n /**\r\n * Whether to use the compact styling or not.\r\n */\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.isFocused ? 'ard-focused' : 'ard-unfocused',\r\n ].join(' ')\r\n );\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplateInput = input<Nullable<TemplateRef<any>>>(undefined, { alias: 'prefixTemplate' });\r\n readonly suffixTemplateInput = input<Nullable<TemplateRef<any>>>(undefined, { alias: 'suffixTemplate' });\r\n readonly prefixTemplate = contentChild(ArdFormFieldPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdFormFieldSuffixTemplateDirective);\r\n}\r\n","<div\r\n class=\"ard-form-field-frame\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-form-field-overlay\"></div>\r\n @if (prefixTemplateInput() ?? prefixTemplate()) {\r\n <div class=\"ard-form-field-prefix-container\">\r\n <ng-template [ngTemplateOutlet]=\"prefixTemplateInput() ?? prefixTemplate()?.template ?? null\"></ng-template>\r\n </div>\r\n }\r\n <div class=\"ard-form-field-content-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (suffixTemplateInput() ?? suffixTemplate()) {\r\n <div class=\"ard-form-field-suffix-container\">\r\n <ng-template [ngTemplateOutlet]=\"suffixTemplateInput() ?? suffixTemplate()?.template ?? null\"></ng-template>\r\n </div>\r\n }\r\n</div>\r\n","import { Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n HostBinding,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n QueryList,\r\n Signal,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n inject,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceArrayProperty, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { Subject, merge, startWith, takeUntil } from 'rxjs';\r\nimport { isAnyString, isArray, isFunction } from 'simple-bool';\r\nimport { ItemStorage, ItemStorageHost } from '../_internal/item-storages/dropdown-item-storage';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\nimport { ArdiumDropdownPanelComponent } from '../dropdown-panel/dropdown-panel.component';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant } from '../dropdown-panel/dropdown-panel.types';\r\nimport { ArdiumOptionComponent } from '../option/option.component';\r\nimport { searchFunctions } from '../search-functions';\r\nimport { ArdOption, ArdOptionGroup, ArdPanelPosition, GroupByFn, OptionContext, SearchFn } from '../types/item-storage.types';\r\nimport { FormElementAppearance } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { FormElementVariant } from './../types/theming.types';\r\nimport {\r\n ArdAddCustomTemplateDirective,\r\n ArdDropdownFooterTemplateDirective,\r\n ArdDropdownHeaderTemplateDirective,\r\n ArdItemDisplayLimitTemplateDirective,\r\n ArdItemLimitReachedTemplateDirective,\r\n ArdLoadingPlaceholderTemplateDirective,\r\n ArdLoadingSpinnerTemplateDirective,\r\n ArdNoItemsFoundTemplateDirective,\r\n ArdOptgroupTemplateDirective,\r\n ArdOptionTemplateDirective,\r\n ArdSelectPlaceholderTemplateDirective,\r\n ArdSelectPrefixTemplateDirective,\r\n ArdSelectSuffixTemplateDirective,\r\n ArdValueTemplateDirective,\r\n} from './select.directive';\r\nimport {\r\n AddCustomFn,\r\n CustomOptionContext,\r\n GroupContext,\r\n ItemDisplayLimitContext,\r\n ItemLimitContext,\r\n PlaceholderContext,\r\n SearchContext,\r\n StatsContext,\r\n ValueContext,\r\n} from './select.types';\r\n\r\n@Component({\r\n selector: 'ard-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSelectComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSelectComponent\r\n extends _NgModelComponentBase\r\n implements OnChanges, AfterViewInit, AfterContentInit, OnInit, OnDestroy, ControlValueAccessor, ItemStorageHost\r\n{\r\n readonly _componentId: string = '000';\r\n //! public constants\r\n readonly itemStorage = new ItemStorage(this);\r\n readonly DEFAULTS = {\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n disabledFrom: 'disabled',\r\n groupLabelFrom: 'group',\r\n groupDisabledFrom: 'disabled',\r\n childrenFrom: 'children',\r\n searchFn: searchFunctions.byLabel,\r\n clearButtonTitle: 'Clear',\r\n noItemsFoundText: 'No items found.',\r\n loadingPlaceholderText: 'Loading...',\r\n };\r\n\r\n //! privates\r\n private _items: any[] | null = [];\r\n private readonly _isMouseBeingUsed = signal<boolean>(false);\r\n private readonly _searchBarFocused = signal<boolean>(false);\r\n private readonly _destroy$ = new Subject<void>();\r\n\r\n //! publics\r\n readonly searchTerm = signal<string>('');\r\n isItemsInputUsed = false;\r\n\r\n //! binding-related inputs\r\n //value/label/disabled/group/pre-grouped children paths\r\n readonly valueFrom = input<Nullable<string>>(undefined);\r\n readonly labelFrom = input<Nullable<string>>(undefined);\r\n readonly disabledFrom = input<Nullable<string>>(undefined);\r\n //! group-related inputs\r\n readonly groupLabelFrom = input<Nullable<string | GroupByFn>>(undefined);\r\n readonly groupDisabledFrom = input<Nullable<string>>(undefined);\r\n readonly childrenFrom = input<Nullable<string>>(undefined);\r\n //! settings\r\n readonly placeholder = input<string>('Select item');\r\n readonly searchPlaceholder = input<string>('Search...');\r\n readonly clearButtonTitle = input<string>(this.DEFAULTS.clearButtonTitle);\r\n\r\n readonly dropdownPosition = input<ArdPanelPosition>(ArdPanelPosition.Auto);\r\n //! template-related settings\r\n readonly noItemsFoundText = input<string>(this.DEFAULTS.noItemsFoundText);\r\n readonly loadingPlaceholderText = input<string>(this.DEFAULTS.loadingPlaceholderText);\r\n //! search-related options\r\n readonly searchInputId = input<Nullable<string>>(undefined);\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n //! other inputs\r\n readonly isLoading = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly inputProps = input<Record<string, any>>({});\r\n readonly htmlId = input<string>(crypto.randomUUID());\r\n\r\n //! boolean settings\r\n readonly itemsAlreadyGrouped = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //should the value that the \"disabledFrom\" path lead to be inverted?\r\n //useful when the property is e.g. \"active\", which is the oposite of \"disabled\"\r\n readonly invertDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly noGroupActions = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly autoHighlightFirst = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly autoFocus = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly keepOpen = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly hideSelected = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly noBackspaceClear = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly sortMultipleValues = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly searchCaseSensitive = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly keepSearchAfterSelect = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! number inputs\r\n readonly maxSelectedItems = input<number, any>(Infinity, { transform: v => coerceNumberProperty(v, Infinity) });\r\n readonly itemDisplayLimit = input<number, any>(Infinity, { transform: v => coerceNumberProperty(v, Infinity) });\r\n\r\n //! function inputs\r\n readonly searchFn = input<SearchFn>(this.DEFAULTS.searchFn);\r\n readonly compareWith = input<Nullable<SearchFn>>(undefined);\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n //appearance, variant handled in ard-form-field-frame component\r\n this.compact() ? 'ard-compact' : '',\r\n this.multiselectable() ? 'ard-multiselect' : 'ard-singleselect',\r\n this.clearable() ? 'ard-clearable' : '',\r\n this.searchable() ? 'ard-searchable' : '',\r\n this.filtered() ? 'ard-filtered' : '',\r\n this.touched() ? 'ard-touched' : '',\r\n this.isOpen() ? 'ard-dropdown-open' : '',\r\n this._searchBarFocused() ? 'ard-select-focused' : '',\r\n this._searchBarFocused() ? 'ard-select-focused' : '',\r\n ].join(' ')\r\n );\r\n\r\n readonly dropdownAppearance = input<Nullable<DropdownPanelAppearance>>(undefined);\r\n readonly dropdownAppearanceOrDefault = computed(() => {\r\n if (this.dropdownAppearance()) return this.dropdownAppearance()!;\r\n if (this.appearance() === FormElementAppearance.Outlined) return DropdownPanelAppearance.Outlined;\r\n return DropdownPanelAppearance.Raised;\r\n });\r\n readonly dropdownVariant = input<Nullable<DropdownPanelVariant>>(undefined);\r\n readonly dropdownVariantOrDefault = computed(() => {\r\n if (this.dropdownVariant()) return this.dropdownVariant()!;\r\n const variant = this.variant();\r\n if (variant === FormElementVariant.Pill) return DropdownPanelVariant.Rounded;\r\n return variant;\r\n });\r\n\r\n @HostBinding('class.ard-group-items')\r\n get _groupItemsHostAttribute() {\r\n return this.groupLabelFrom();\r\n }\r\n\r\n //! items setter/getter\r\n @Input()\r\n get items() {\r\n return this._items;\r\n }\r\n set items(value: string | any[] | null) {\r\n this.isItemsInputUsed = true;\r\n if (value === null) {\r\n value = [];\r\n this.isItemsInputUsed = false;\r\n } else if (isAnyString(value)) {\r\n value = coerceArrayProperty(value);\r\n }\r\n const printErrors = this.itemStorage.setItems(value);\r\n if (printErrors) {\r\n this._printPrimitiveWarnings();\r\n }\r\n }\r\n\r\n @ContentChildren(ArdiumOptionComponent)\r\n optionComponents!: QueryList<ArdiumOptionComponent>;\r\n\r\n private _setItemsFromComponents() {\r\n const handleOptionChange = () => {\r\n const changedOrDestroyed = merge(this.optionComponents.changes, this._destroy$);\r\n merge(...this.optionComponents.map(option => option.stateChange$))\r\n .pipe(takeUntil(changedOrDestroyed))\r\n .subscribe(option => {\r\n setTimeout(() => {\r\n const item = this.itemStorage.findItemByValue(option.oldValue ?? option.value);\r\n if (item) {\r\n item.disabled.set(option.disabled);\r\n item.label.set(option.label || item.label());\r\n item.value.set(option.value);\r\n item.itemData.set({\r\n label: option.label || item.label(),\r\n value: option.value,\r\n disabled: option.disabled,\r\n });\r\n }\r\n this.detectChanges();\r\n }, 0);\r\n });\r\n };\r\n this.optionComponents.changes\r\n .pipe(startWith(this.optionComponents), takeUntil(this._destroy$))\r\n .subscribe((options: QueryList<ArdiumOptionComponent>) => {\r\n if (options.length === 0) return;\r\n setTimeout(() => {\r\n this.items = options.map(option => ({\r\n value: option.value,\r\n label: option.label,\r\n disabled: option.disabled,\r\n }));\r\n handleOptionChange();\r\n this.detectChanges();\r\n }, 0);\r\n });\r\n }\r\n\r\n //! attribute and/or class setters/getters\r\n readonly multiselectable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly clearable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly searchable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly filtered = computed<boolean>(() => this.searchable() && this.searchTerm() !== '');\r\n\r\n readonly touched = signal<boolean>(false);\r\n\r\n //! custom options\r\n private _defaultAddCustomFn: AddCustomFn<any> = (value: string) => value;\r\n\r\n readonly addCustom = input<\r\n false | AddCustomFn<any> | AddCustomFn<Promise<any>>,\r\n string | boolean | AddCustomFn<any> | AddCustomFn<Promise<any>>\r\n >(false, {\r\n transform: v => {\r\n if (isFunction(v)) {\r\n return v;\r\n }\r\n //coerce the value into a boolean\r\n //if \"true\", use the default function. Otherwise, just set to \"false\".\r\n return coerceBooleanProperty(v) && this._defaultAddCustomFn;\r\n },\r\n });\r\n readonly shouldShowAddCustom = computed<boolean>(\r\n () => this.addCustom() !== false && this.searchTerm().length > 0 && this.itemStorage.isNoItemsFound()\r\n );\r\n\r\n async addCustomOption(value: string) {\r\n const ac = this.addCustom();\r\n if (!ac) return;\r\n\r\n const newOptionObj = await this.itemStorage.addCustomOption(value, ac);\r\n\r\n this.selectItem(newOptionObj);\r\n }\r\n\r\n //! control value accessor\r\n //override the writeValue and setDisabledState defined in _NgModelComponent\r\n override setDisabledState(state: boolean): void {\r\n this._disabled = state;\r\n this._cd.markForCheck();\r\n }\r\n writeValue(ngModel: any[]): void {\r\n this.itemStorage.handleWriteValue(ngModel);\r\n this._cd.markForCheck();\r\n }\r\n //! change & touch event emitters\r\n protected _emitChange(): void {\r\n const value = this.itemStorage.value();\r\n this._onChangeRegistered?.(value);\r\n this.changeEvent.emit(value);\r\n this.valueChange.emit(value);\r\n }\r\n private _onTouched(): void {\r\n this.touched.set(true);\r\n this._onTouchedRegistered?.();\r\n }\r\n\r\n //! value input & output\r\n @Input()\r\n set value(newValue: any) {\r\n //if is a string, coerce it into array of strings\r\n if (isAnyString(newValue)) newValue = coerceArrayProperty(newValue);\r\n //if it is not a string and not an array, just put it in an array\r\n else if (!isArray(newValue)) newValue = [newValue];\r\n\r\n this.writeValue(newValue);\r\n }\r\n get value(): Signal<any[]> {\r\n return this.itemStorage.value;\r\n }\r\n readonly valueChange = output<any[]>();\r\n\r\n //! output events\r\n readonly changeEvent = output<any[]>({ alias: 'change' });\r\n readonly addEvent = output<any[]>({ alias: 'add' });\r\n readonly failedToAddEvent = output<any[]>({ alias: 'failedToAdd' });\r\n readonly removeEvent = output<any[]>({ alias: 'remove' });\r\n readonly clearEvent = output<void>({ alias: 'clear' });\r\n readonly openEvent = output<void>({ alias: 'open' });\r\n readonly closeEvent = output<void>({ alias: 'close' });\r\n readonly scrollEvent = output<{\r\n start: number;\r\n end: number;\r\n }>({ alias: 'scroll' });\r\n readonly scrollToEndEvent = output({ alias: 'scrollToEnd' });\r\n readonly searchEvent = output<{\r\n search: string;\r\n matching: any[];\r\n }>({ alias: 'search' });\r\n\r\n readonly isOpen = model<boolean>(false);\r\n\r\n //! view children\r\n readonly searchInput = viewChild<ElementRef<HTMLInputElement>>('searchInput');\r\n readonly dropdownPanel = viewChild<ArdiumDropdownPanelComponent>(ArdiumDropdownPanelComponent);\r\n\r\n //! templates\r\n readonly optionTemplate = contentChild(ArdOptionTemplateDirective);\r\n readonly optgroupTemplate = contentChild(ArdOptgroupTemplateDirective);\r\n readonly valueTemplate = contentChild(ArdValueTemplateDirective);\r\n readonly placeholderTemplate = contentChild(ArdSelectPlaceholderTemplateDirective);\r\n readonly loadingSpinnerTemplate = contentChild(ArdLoadingSpinnerTemplateDirective);\r\n readonly loadingPlaceholderTemplate = contentChild(ArdLoadingPlaceholderTemplateDirective);\r\n readonly dropdownHeaderTemplate = contentChild(ArdDropdownHeaderTemplateDirective);\r\n readonly dropdownFooterTemplate = contentChild(ArdDropdownFooterTemplateDirective);\r\n readonly noItemsFoundTemplate = contentChild(ArdNoItemsFoundTemplateDirective);\r\n readonly addCustomTemplate = contentChild(ArdAddCustomTemplateDirective);\r\n readonly itemLimitReachedTemplate = contentChild(ArdItemLimitReachedTemplateDirective);\r\n readonly itemDisplayLimitTemplate = contentChild(ArdItemDisplayLimitTemplateDirective);\r\n\r\n readonly prefixTemplate = contentChild(ArdSelectPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdSelectSuffixTemplateDirective);\r\n\r\n //! context providers\r\n getValueContext(item: ArdOption): ValueContext {\r\n return {\r\n $implicit: item,\r\n item,\r\n itemData: item.itemData(),\r\n unselect: () => {\r\n this.unselectItem(item);\r\n },\r\n };\r\n }\r\n readonly getStatsContext = computed(\r\n (): StatsContext => ({\r\n totalItems: this.totalItems(),\r\n foundItems: this.foundItems(),\r\n })\r\n );\r\n readonly getSearchContext = computed(\r\n (): SearchContext => ({\r\n $implicit: this.searchTerm(),\r\n searchTerm: this.searchTerm(),\r\n totalItems: this.totalItems(),\r\n foundItems: this.foundItems(),\r\n })\r\n );\r\n readonly getPlaceholderContext = computed((): PlaceholderContext => {\r\n const placeholder = this.placeholderForCurrentContext();\r\n return {\r\n placeholder,\r\n $implicit: placeholder,\r\n };\r\n });\r\n readonly getCustomOptionContext = computed(\r\n (): CustomOptionContext => ({\r\n $implicit: this.searchTerm(),\r\n searchTerm: this.searchTerm(),\r\n })\r\n );\r\n getGroupContext(group: ArdOptionGroup): GroupContext {\r\n return {\r\n $implicit: group,\r\n group,\r\n selectedChildren: group.children().filter(v => v.selected()).length,\r\n totalChildren: group.children().length,\r\n };\r\n }\r\n getOptionContext(item: ArdOption): OptionContext<ArdOption> {\r\n return {\r\n $implicit: item,\r\n item,\r\n itemData: item.itemData(),\r\n };\r\n }\r\n readonly getItemLimitContext = computed(\r\n (): ItemLimitContext => ({\r\n totalItems: this.totalItems(),\r\n selectedItems: this.itemStorage.selectedItems().length,\r\n itemLimit: this.maxSelectedItems(),\r\n })\r\n );\r\n readonly getItemDisplayLimitContext = computed((): ItemDisplayLimitContext => {\r\n const selectedItems = this.itemStorage.selectedItems().length;\r\n return {\r\n totalItems: this.totalItems(),\r\n selectedItems,\r\n itemLimit: this.maxSelectedItems(),\r\n overflowCount: selectedItems - (this.itemDisplayLimit() ?? 0),\r\n };\r\n });\r\n\r\n private readonly elementRef = inject(ElementRef<HTMLElement>);\r\n private readonly _cd = inject(ChangeDetectorRef);\r\n private readonly overlay = inject(Overlay);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly scrollStrategyOpts = inject(ScrollStrategyOptions);\r\n\r\n //! dropdown overlay\r\n @ViewChild('dropdownHost', { read: ElementRef })\r\n dropdownHost!: ElementRef<HTMLDivElement>;\r\n @ViewChild('dropdownTemplate', { read: TemplateRef })\r\n dropdownTemplate!: TemplateRef<any>;\r\n\r\n private dropdownOverlay?: OverlayRef;\r\n\r\n private _createOverlay(): void {\r\n const strategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.dropdownHost)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n },\r\n ]);\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n scrollStrategy: this.scrollStrategyOpts.block(),\r\n hasBackdrop: false,\r\n });\r\n\r\n this.dropdownOverlay = this.overlay.create(config);\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate, this.viewContainerRef);\r\n this.dropdownOverlay.attach(portal);\r\n this.setOverlaySize();\r\n }\r\n private _destroyOverlay(): void {\r\n if (!this.dropdownOverlay) return;\r\n\r\n this.dropdownOverlay.dispose();\r\n delete this.dropdownOverlay;\r\n }\r\n\r\n setOverlaySize(): void {\r\n if (!this.dropdownOverlay) return;\r\n\r\n const rect = this.dropdownHost.nativeElement.getBoundingClientRect();\r\n this.dropdownOverlay.updateSize({ width: rect.width });\r\n }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n this.setOverlaySize();\r\n }\r\n\r\n //! hooks\r\n ngOnInit(): void {\r\n this._setSearchInputAttributes();\r\n }\r\n ngOnDestroy() {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n ngAfterViewInit(): void {\r\n if (this.autoFocus()) {\r\n this.focus();\r\n }\r\n }\r\n ngAfterContentInit(): void {\r\n if (!this.isItemsInputUsed) {\r\n this._setItemsFromComponents();\r\n }\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n //fire items load handler when loading is set to false\r\n if (changes['loading']) {\r\n if (changes['loading'].currentValue === false) {\r\n this._onItemsLoad();\r\n }\r\n }\r\n }\r\n private _onItemsLoad() {\r\n if (!this._searchBarFocused) return;\r\n this.open();\r\n }\r\n private _printPrimitiveWarnings() {\r\n function makeWarning(str: string, errorCode: string): void {\r\n console.warn(\r\n `ARD-WA000${errorCode}: Skipped using [${str}] property bound to <ard-select>, as some provided items are of primitive type`\r\n );\r\n }\r\n if (this.valueFrom()) {\r\n makeWarning('valueFrom', '5a');\r\n }\r\n if (this.labelFrom()) {\r\n makeWarning('labelFrom', '5b');\r\n }\r\n if (this.disabledFrom()) {\r\n makeWarning('disabledFrom', '5c');\r\n }\r\n if (this.groupLabelFrom()) {\r\n makeWarning('groupLabelFrom', '5d');\r\n }\r\n if (this.groupDisabledFrom()) {\r\n makeWarning('groupDisabledFrom', '5e');\r\n }\r\n if (this.childrenFrom()) {\r\n makeWarning('childrenFrom', '5f');\r\n }\r\n if (this.invertDisabled()) {\r\n makeWarning('invertDisabled', '5g');\r\n }\r\n }\r\n\r\n //! getters\r\n readonly firstHighlightedItem = computed<ArdOption | undefined>(() => this.itemStorage.highlightedItems()?.first());\r\n readonly shouldDisplayPlaceholder = computed<boolean>(() => !this.itemStorage.isAnyItemSelected() && !this.searchTerm());\r\n readonly shouldDisplayValue = computed<boolean>(\r\n () => this.itemStorage.isAnyItemSelected() && (!this.searchTerm() || this.multiselectable())\r\n );\r\n readonly shouldShowClearButton = computed<boolean>(\r\n () => this.clearable() && !this.disabled() && (this.itemStorage.isAnyItemSelected() || this.searchTerm() !== '')\r\n );\r\n readonly itemsToDisplay = computed<IterableIterator<ArdOptionGroup>>(() => this.itemStorage.groups().values());\r\n readonly shouldShowNoItemsFound = computed<boolean>(\r\n () => this.itemStorage.isNoItemsFound() && !this.isLoading() && !this.shouldShowAddCustom()\r\n );\r\n readonly totalItems = computed<number>(() => this.itemStorage.items().length);\r\n readonly foundItems = computed<number | undefined>(() =>\r\n this.searchable() ? this.itemStorage.filteredItems().length : undefined\r\n );\r\n readonly shouldShowItemDisplayLimit = computed<boolean>(\r\n () =>\r\n this.multiselectable() &&\r\n this.itemDisplayLimit() !== Infinity &&\r\n this.itemStorage.selectedItems().length > this.itemDisplayLimit()\r\n );\r\n readonly isInputElementReadonly = computed<boolean>(\r\n () => !this.addCustom() && (!this.searchable() || this.itemStorage.isItemLimitReached())\r\n );\r\n\r\n isValueWithinDisplayLimit(i: number): boolean {\r\n return !this.multiselectable() || this.itemDisplayLimit() === Infinity || i < this.itemDisplayLimit();\r\n }\r\n readonly placeholderForCurrentContext = computed<string>(() => {\r\n if (this.searchPlaceholder() && this.searchable() && (this._searchBarFocused() || this._isClickedWithin()))\r\n return this.searchPlaceholder();\r\n return this.placeholder();\r\n });\r\n\r\n //! search input event handlers\r\n filter(filterTerm: string, suppressSearchEvent = false): void {\r\n this.searchTerm.set(filterTerm);\r\n const matching = this.itemStorage.filter(filterTerm);\r\n if (!suppressSearchEvent) this.searchEvent.emit({ search: filterTerm, matching });\r\n this.open();\r\n }\r\n onSearchInputFocus(): void {\r\n this._searchBarFocused.set(true);\r\n }\r\n onSearchInputBlur(): void {\r\n if (!this._searchBarFocused()) return;\r\n\r\n this._onTouched();\r\n\r\n this._searchBarFocused.set(false);\r\n }\r\n //! item selection handlers\r\n toggleItem(item: ArdOption): void {\r\n if (item.selected()) {\r\n this.unselectItem(item);\r\n return;\r\n }\r\n this.selectItem(item);\r\n }\r\n selectItem(...items: ArdOption[]): void {\r\n const [selected, unselected, failedToSelect] = this.itemStorage.selectItem(...items);\r\n\r\n if (unselected.length > 0) {\r\n this.removeEvent.emit(unselected);\r\n }\r\n if (failedToSelect.length > 0) {\r\n this.failedToAddEvent.emit(failedToSelect);\r\n }\r\n if (selected.length > 0) {\r\n this.addEvent.emit(selected);\r\n\r\n this.focus();\r\n if (!this.keepSearchAfterSelect()) this._clearSearch(true);\r\n\r\n if (!this.keepOpen() || this.itemStorage.isNoItemsToSelect()) {\r\n this.close();\r\n }\r\n }\r\n if (unselected.length > 0 || selected.length > 0) {\r\n this._emitChange();\r\n }\r\n }\r\n unselectItem(...items: ArdOption[]): void {\r\n const unselected = this.itemStorage.unselectItem(...items);\r\n\r\n this.removeEvent.emit(unselected);\r\n this._emitChange();\r\n if (!this.keepSearchAfterSelect()) this._clearSearch();\r\n\r\n this.focus();\r\n\r\n if (!this.keepOpen() || this.itemStorage.isNoItemsToSelect()) {\r\n this.close();\r\n }\r\n }\r\n private _clearAllItems(): void {\r\n const cleared = this.itemStorage.clearAllSelected(true);\r\n\r\n this.focus();\r\n\r\n this.clearEvent.emit();\r\n this.removeEvent.emit(cleared);\r\n this._emitChange();\r\n }\r\n private _clearLastItem(): void {\r\n const clearedValue = this.itemStorage.clearLastSelected().value();\r\n\r\n this.focus();\r\n\r\n this.removeEvent.emit([clearedValue]);\r\n this._emitChange();\r\n }\r\n //! highligh-related\r\n onMouseMove() {\r\n this._isMouseBeingUsed.set(true);\r\n }\r\n onGroupMouseover(group: ArdOptionGroup): void {\r\n if (!this.multiselectable() || this.noGroupActions()) return;\r\n this.itemStorage.highlightGroup(group);\r\n }\r\n onItemMouseOver(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n onItemMouseEnter(option: ArdOption, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed()) return;\r\n this.itemStorage.highlightSingleItem(option);\r\n event.stopPropagation();\r\n }\r\n onItemMouseLeave(option: ArdOption, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed()) return;\r\n this.itemStorage.unhighlightItem(option);\r\n event.stopPropagation();\r\n }\r\n //! click handlers\r\n private readonly _isClickedWithin = signal<boolean>(false);\r\n onItemClick(option: ArdOption, event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (this.clearable()) this.toggleItem(option);\r\n else this.selectItem(option);\r\n\r\n this._isClickedWithin.set(true);\r\n }\r\n onGroupClick(group: ArdOptionGroup): void {\r\n if (!this.multiselectable() || this.noGroupActions()) return;\r\n if (group.children().every(o => o.selected)) {\r\n this.unselectItem(...group.children());\r\n return;\r\n }\r\n this.selectItem(...group.children());\r\n\r\n this._isClickedWithin.set(true);\r\n }\r\n handleClearButtonClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (this.searchTerm()) {\r\n this._clearSearch();\r\n return;\r\n }\r\n this._clearAllItems();\r\n }\r\n handleDropdownArrowClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this._isClickedWithin.set(true);\r\n\r\n this.toggle();\r\n }\r\n handleOutsideClick(event: MouseEvent): void {\r\n if (!this.isOpen()) return;\r\n const target = event.target as HTMLElement;\r\n if (this.elementRef.nativeElement.contains(target)) return;\r\n\r\n this.close();\r\n }\r\n handleAnywhereClick(event: MouseEvent): void {\r\n const target = event.target as HTMLElement;\r\n if (target.tagName !== 'INPUT') {\r\n event.preventDefault();\r\n }\r\n\r\n this._isClickedWithin.set(true);\r\n\r\n if (!this._searchBarFocused()) {\r\n this.focus();\r\n }\r\n\r\n if (this.searchable()) {\r\n this.open();\r\n } else {\r\n this.toggle();\r\n }\r\n }\r\n @HostListener('mouseup')\r\n onMouseup(): void {\r\n this._isClickedWithin.set(false);\r\n }\r\n //! dropdown state handlers\r\n toggle(): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n return;\r\n }\r\n this.open();\r\n }\r\n open(): void {\r\n if (this.disabled() || this.isOpen()) return;\r\n\r\n this.isOpen.set(true);\r\n if (this.autoHighlightFirst()) this.itemStorage.highlightFirstItem();\r\n\r\n this._createOverlay();\r\n this.focus();\r\n\r\n this.openEvent.emit();\r\n this.detectChanges();\r\n }\r\n close(): void {\r\n if (!this.isOpen()) return;\r\n\r\n this.isOpen.set(false);\r\n\r\n this._destroyOverlay();\r\n\r\n this._onTouched();\r\n this.closeEvent.emit();\r\n this._cd.markForCheck();\r\n }\r\n //! ChangeDetectorRef\r\n detectChanges(): void {\r\n if (!(this._cd as any).destroyed) {\r\n this._cd.detectChanges();\r\n }\r\n }\r\n //! search\r\n private _clearSearch(suppressSearchEvent = false): void {\r\n this._setSearch('', suppressSearchEvent);\r\n }\r\n private _setSearch(searchTerm: string, suppressSearchEvent = false): void {\r\n this.searchTerm.set(searchTerm);\r\n this.filter(searchTerm, suppressSearchEvent);\r\n }\r\n private _setSearchInputAttributes() {\r\n const input = this.searchInput()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n ...this.inputAttrs(),\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, attributes[key]);\r\n }\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'Enter': {\r\n this._onEnterPress(event);\r\n return;\r\n }\r\n case 'Space': {\r\n this._onSpacePress(event);\r\n return;\r\n }\r\n case 'ArrowDown': {\r\n this._onArrowDownPress(event);\r\n return;\r\n }\r\n case 'ArrowUp': {\r\n this._onArrowUpPress(event);\r\n return;\r\n }\r\n case 'Home': {\r\n this._onHomePress(event);\r\n return;\r\n }\r\n case 'End': {\r\n this._onEndPress(event);\r\n return;\r\n }\r\n case 'Backspace':\r\n case 'Delete': {\r\n this._onBackspaceOrDeletePress(event);\r\n return;\r\n }\r\n case 'KeyA': {\r\n if (event.ctrlKey) {\r\n this._onCtrlAPress();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n private async _onEnterPress(event: KeyboardEvent) {\r\n event.preventDefault();\r\n let shouldClose = true;\r\n\r\n //select the currently highlighted option\r\n if (this.isOpen() && this.firstHighlightedItem()) {\r\n if (this.clearable() && this.itemStorage.highlightedItems().every(item => item.selected)) {\r\n this.unselectItem(...this.itemStorage.highlightedItems());\r\n } else {\r\n this.selectItem(...this.itemStorage.highlightedItems());\r\n }\r\n }\r\n //add a custom option\r\n else if (this.isOpen() && this.shouldShowAddCustom()) {\r\n await this.addCustomOption(this.searchTerm());\r\n }\r\n //in case of no action, open the dropdown (or keep it open)\r\n else shouldClose = false;\r\n\r\n if (!this.keepOpen() && shouldClose) {\r\n this.itemStorage.clearAllHighlights();\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n private _onSpacePress(event: KeyboardEvent): void {\r\n if (this.isOpen()) return;\r\n\r\n event.preventDefault();\r\n this.open();\r\n }\r\n private _onArrowDownPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this.open();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightNextItem(+1, event.shiftKey);\r\n if (recentlyHighlighted) {\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n }\r\n\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('bottom');\r\n }\r\n private _onArrowUpPress(event: KeyboardEvent): void {\r\n if (!this.isOpen()) return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightNextItem(-1, event.shiftKey);\r\n if (recentlyHighlighted) {\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n }\r\n\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('top');\r\n }\r\n private _onHomePress(event: KeyboardEvent): void {\r\n if (\r\n !this.isOpen() ||\r\n (this.searchInput()?.nativeElement.selectionEnd !== 0 && this.searchInput()?.nativeElement.selectionStart !== 0)\r\n )\r\n return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightFirstItem();\r\n if (!recentlyHighlighted) return;\r\n\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('top');\r\n }\r\n private _onEndPress(event: KeyboardEvent): void {\r\n if (\r\n !this.isOpen() ||\r\n (this.searchInput()?.nativeElement.selectionEnd !== this.searchTerm().length &&\r\n this.searchInput()?.nativeElement.selectionStart !== this.searchTerm().length)\r\n )\r\n return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightLastItem();\r\n if (!recentlyHighlighted) return;\r\n\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('bottom');\r\n }\r\n private _onBackspaceOrDeletePress(event: KeyboardEvent): void {\r\n if (this.searchTerm() || !this.clearable() || this.noBackspaceClear() || !this.itemStorage.isAnyItemSelected()) return;\r\n\r\n event.preventDefault();\r\n if (this.multiselectable() && this.itemStorage.selectedItems().length > 1) {\r\n this._clearLastItem();\r\n return;\r\n }\r\n this._clearAllItems();\r\n }\r\n private _onCtrlAPress(): void {\r\n this.itemStorage.highlightAllItems();\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-select\"\r\n #dropdownHost\r\n (click)=\"handleAnywhereClick($event)\"\r\n [class.ard-has-value]=\"itemStorage.isAnyItemSelected()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-select-value-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n } @if (shouldDisplayValue()) { @for (item of itemStorage.selectedItems(); track item.index()) {\r\n <div\r\n class=\"ard-select-value\"\r\n [class.ard-value-disabled]=\"item.disabled()\"\r\n [attr.hidden]=\"!isValueWithinDisplayLimit($index)\"\r\n >\r\n <ng-template\r\n *ngIf=\"isValueWithinDisplayLimit($index)\"\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || (multiselectable() ? defaultMultiValueTemplate : defaultValueTemplate)\"\r\n [ngTemplateOutletContext]=\"getValueContext(item)\"\r\n />\r\n </div>\r\n }\r\n\r\n <ng-template\r\n #defaultValueTemplate\r\n let-item\r\n >\r\n <div\r\n [ardInnerHTML]=\"item.label()\"\r\n [ardEscapeInnerHTML]=\"isItemsInputUsed\"\r\n ></div>\r\n </ng-template>\r\n <ng-template\r\n #defaultMultiValueTemplate\r\n let-item\r\n let-unselect=\"unselect\"\r\n >\r\n <ard-deletable-chip\r\n (delete)=\"unselect(item)\"\r\n [variant]=\"variant()\"\r\n compact\r\n appearance=\"outlined-strong\"\r\n >\r\n <div\r\n [ardInnerHTML]=\"item.label()\"\r\n [ardEscapeInnerHTML]=\"isItemsInputUsed\"\r\n ></div>\r\n <!-- TODO check if can remove div -->\r\n </ard-deletable-chip>\r\n </ng-template>\r\n } @if (itemStorage.isAnyItemSelected() && shouldShowItemDisplayLimit()) {\r\n <div class=\"ard-overflow-indicator\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"itemDisplayLimitTemplate()?.template || defaultItemDisplayLimitTemplate\"\r\n [ngTemplateOutletContext]=\"getItemDisplayLimitContext()\"\r\n />\r\n\r\n <ng-template\r\n #defaultItemDisplayLimitTemplate\r\n let-count=\"overflowCount\"\r\n >\r\n <div>{{ count }} more...</div>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"ard-search-input\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n >\r\n <input\r\n #searchInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"searchInputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"isInputElementReadonly()\"\r\n [disabled]=\"disabled()\"\r\n [value]=\"searchTerm()\"\r\n aria-autocomplete=\"list\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"filter(searchInput.value)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onSearchInputFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onSearchInputBlur()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"ard-select-controls\">\r\n @if (isLoading()) {\r\n <ng-template #defaultLoadingSpinnerTemplate>\r\n <div class=\"ard-simple-spinner\"></div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate()?.template || defaultLoadingSpinnerTemplate\" />\r\n } @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"handleClearButtonClick($event)\"\r\n />\r\n }\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ard-dropdown-arrow-wrapper\"\r\n (click)=\"handleDropdownArrowClick($event)\"\r\n >\r\n <span class=\"ard-dropdown-arrow\"></span>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n </div>\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-select-dropdown-panel\"\r\n role=\"listbox\"\r\n aria-label=\"Options list\"\r\n [headerTemplate]=\"dropdownHeaderTemplate()?.template ?? null\"\r\n [footerTemplate]=\"dropdownFooterTemplate()?.template ?? null\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [filterValue]=\"searchTerm()\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"handleOutsideClick($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n (scroll)=\"scrollEvent.emit($event)\"\r\n (scrollToEnd)=\"scrollToEndEvent.emit($event)\"\r\n >\r\n @if (!shouldShowNoItemsFound()) { @for (group of itemStorage.groups(); track $index) {\r\n <div\r\n class=\"ard-optgroup\"\r\n role=\"group\"\r\n [class.ard-group-disabled]=\"group.disabled()\"\r\n [class.ard-group-selected]=\"group.selected()\"\r\n [class.ard-group-highlighted]=\"group.highlighted()\"\r\n (mouseover)=\"onGroupMouseover(group)\"\r\n (click)=\"onGroupClick(group)\"\r\n >\r\n @if (group.label() !== '' && group.label() !== undefined) {\r\n <ng-template\r\n #defaultOptgroupTemplate\r\n let-group\r\n >\r\n <span\r\n class=\"ard-optgroup-label\"\r\n [ardInnerHTML]=\"group.label()\"\r\n [ardEscapeInnerHTML]=\"isItemsInputUsed\"\r\n ></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optgroupTemplate()?.template || defaultOptgroupTemplate\"\r\n [ngTemplateOutletContext]=\"getGroupContext(group)\"\r\n />\r\n }\r\n\r\n <div class=\"ard-optgroup-children\">\r\n @for (option of group.children(); track option.index()) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-disabled]=\"option.disabled()\"\r\n [class.ard-option-selected]=\"option.selected()\"\r\n [class.ard-option-highlighted]=\"option.highlighted()\"\r\n [class.ard-option-highlighted-recent]=\"option.highlighted_recently()\"\r\n [attr.aria-selected]=\"option.selected()\"\r\n [attr.id]=\"htmlId() + '-' + option.index()\"\r\n (click)=\"onItemClick(option, $event)\"\r\n (mouseover)=\"onItemMouseOver($event)\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n >\r\n <div class=\"ard-option-label\">\r\n <ng-template\r\n #defaultOptionTemplate\r\n let-option\r\n >\r\n <span\r\n [ardInnerHTML]=\"option.label()\"\r\n [ardEscapeInnerHTML]=\"isItemsInputUsed\"\r\n ></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(option)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } } @if (shouldShowNoItemsFound()) {\r\n <ng-template #defaultNoItemsFoundTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ noItemsFoundText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"noItemsFoundTemplate()?.template || defaultNoItemsFoundTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n } @if (shouldShowAddCustom()) {\r\n <ng-template\r\n #defaultAddCustomTemplate\r\n let-searchTerm\r\n >\r\n <div\r\n class=\"ard-option ard-option-highlighted ard-add-custom\"\r\n (click)=\"addCustomOption(searchTerm)\"\r\n >\r\n <span class=\"ard-add-custom-label\">Add option</span>\r\n <span class=\"ard-add-custom-value\">\"{{ searchTerm }}\"</span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"addCustomTemplate()?.template || defaultAddCustomTemplate\"\r\n [ngTemplateOutletContext]=\"getCustomOptionContext()\"\r\n />\r\n } @if (isLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ loadingPlaceholderText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"loadingPlaceholderTemplate()?.template || defaultLoadingPlaceholderTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumFormFieldFrameComponent } from './form-field-frame.component';\nimport { ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective } from './form-field-frame.directives';\n\n@NgModule({\n declarations: [ArdiumFormFieldFrameComponent, ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumFormFieldFrameComponent, ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective],\n})\nexport class ArdiumFormFieldFrameModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ArdiumChipModule } from './../chip/chip.module';\n\nimport { ArdiumClickOutsideEventModule, ArdiumInnerHTMLModule } from '@ardium-ui/devkit';\nimport { ArdiumDropdownPanelModule } from '../dropdown-panel/dropdown-panel.module';\nimport { ArdiumSelectComponent } from './select.component';\nimport {\n ArdAddCustomTemplateDirective,\n ArdDropdownFooterTemplateDirective,\n ArdDropdownHeaderTemplateDirective,\n ArdItemDisplayLimitTemplateDirective,\n ArdItemLimitReachedTemplateDirective,\n ArdLoadingPlaceholderTemplateDirective,\n ArdLoadingSpinnerTemplateDirective,\n ArdNoItemsFoundTemplateDirective,\n ArdOptgroupTemplateDirective,\n ArdOptionTemplateDirective,\n ArdSelectPlaceholderTemplateDirective,\n ArdSelectPrefixTemplateDirective,\n ArdSelectSuffixTemplateDirective,\n ArdValueChipTemplateDirective,\n ArdValueTemplateDirective,\n} from './select.directive';\n\nimport { _ClearButtonModule } from './../_internal/clear-button/clear-button.module';\nimport { ArdiumFormFieldFrameModule } from '../form-field-frame/form-field-frame.module';\n\n@NgModule({\n declarations: [\n ArdiumSelectComponent,\n //tempalate directives\n ArdOptionTemplateDirective,\n ArdOptgroupTemplateDirective,\n ArdValueTemplateDirective,\n ArdSelectPlaceholderTemplateDirective,\n ArdLoadingSpinnerTemplateDirective,\n ArdLoadingPlaceholderTemplateDirective,\n ArdDropdownHeaderTemplateDirective,\n ArdDropdownFooterTemplateDirective,\n ArdNoItemsFoundTemplateDirective,\n ArdValueChipTemplateDirective,\n ArdItemLimitReachedTemplateDirective,\n ArdItemDisplayLimitTemplateDirective,\n ArdAddCustomTemplateDirective,\n ArdSelectPrefixTemplateDirective,\n ArdSelectSuffixTemplateDirective,\n ],\n imports: [\n CommonModule,\n ArdiumFormFieldFrameModule,\n ArdiumDropdownPanelModule,\n ArdiumChipModule,\n ArdiumClickOutsideEventModule,\n _ClearButtonModule,\n ArdiumInnerHTMLModule,\n ],\n exports: [\n ArdiumSelectComponent,\n //tempalate directives\n ArdOptionTemplateDirective,\n ArdOptgroupTemplateDirective,\n ArdValueTemplateDirective,\n ArdSelectPlaceholderTemplateDirective,\n ArdLoadingSpinnerTemplateDirective,\n ArdLoadingPlaceholderTemplateDirective,\n ArdDropdownHeaderTemplateDirective,\n ArdDropdownFooterTemplateDirective,\n ArdNoItemsFoundTemplateDirective,\n ArdValueChipTemplateDirective,\n ArdItemLimitReachedTemplateDirective,\n ArdItemDisplayLimitTemplateDirective,\n ArdAddCustomTemplateDirective,\n ArdSelectPrefixTemplateDirective,\n ArdSelectSuffixTemplateDirective,\n ],\n})\nexport class ArdiumSelectModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumOptionComponent } from './option.component';\n\n@NgModule({\n declarations: [ArdiumOptionComponent],\n imports: [CommonModule],\n exports: [ArdiumOptionComponent],\n})\nexport class ArdiumOptionModule {}\n","export type ArdTransformerFn = (\r\n currentText: string,\r\n previousText: string,\r\n caretPos: number\r\n) => { text: string; caretPos: number };\r\n\r\ninterface IRegExpTransformer {\r\n apply: ArdTransformerFn;\r\n}\r\nexport class RegExpTransformer implements IRegExpTransformer {\r\n constructor(\r\n public regex: RegExp,\r\n public replace = '',\r\n public caretModif = 0\r\n ) {}\r\n\r\n apply(currentText: string, previousText: string, caretPos: number): { text: string; caretPos: number } {\r\n let text = currentText;\r\n if (text && this.regex) {\r\n let safetySwitch = 0;\r\n while (text.match(this.regex)) {\r\n //prevent infinite loop\r\n if (safetySwitch > 999) {\r\n console.error(this, new Error('Possible infinite loop in the above RegExpTransformer. Exited after 1000 iterations.'));\r\n break;\r\n }\r\n //apply regex\r\n const lengthBefore = text.length;\r\n text = text.replace(this.regex, this.replace);\r\n const lengthAfter = text.length;\r\n //fix caret pos\r\n caretPos = caretPos + (lengthAfter - lengthBefore);\r\n //for infinite loop prevention\r\n safetySwitch++;\r\n }\r\n }\r\n return { text, caretPos };\r\n }\r\n}\r\n\r\nconst toUpper: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n return { text: currentText.toUpperCase(), caretPos };\r\n};\r\nconst toLower: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n return { text: currentText.toLowerCase(), caretPos };\r\n};\r\nconst int: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n const regexes: ([RegExp] | [RegExp, string] | [RegExp, string, number])[] = [[/[^0-9-]/], [/(.+)-/, '$1']];\r\n let obj = { text: currentText, caretPos };\r\n for (const arr of regexes) {\r\n const [regex, replace, caretModif] = arr;\r\n obj = new RegExpTransformer(regex, replace, caretModif).apply(obj.text, previousText, obj.caretPos);\r\n }\r\n return obj;\r\n};\r\nconst float: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n const regexes: ([RegExp] | [RegExp, string] | [RegExp, string, number])[] = [\r\n [/[^0-9,.-]/],\r\n [/,/, '.'],\r\n [/(.+)-/, '$1'],\r\n [/\\.(.*)\\./, '$1.'],\r\n [/^(-?)\\./, '$10.'],\r\n ];\r\n let obj = { text: currentText, caretPos };\r\n for (const arr of regexes) {\r\n const [regex, replace, caretModif] = arr;\r\n obj = new RegExpTransformer(regex, replace, caretModif).apply(obj.text, previousText, obj.caretPos);\r\n }\r\n return obj;\r\n};\r\nexport const ArdTransformer = {\r\n ToUpper: toUpper,\r\n ToLower: toLower,\r\n Integer: int,\r\n Float: float,\r\n} as const;\r\n","import { ElementRef, Signal, computed, signal } from '@angular/core';\r\nimport { isAnyString, isDefined, isNull, isNumber } from 'simple-bool';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdTransformer, RegExpTransformer } from './input-transformers';\r\n\r\nexport interface SimpleInputModelHost {\r\n readonly maxLength: Signal<Nullable<number>>;\r\n readonly textInputEl: Signal<ElementRef<HTMLInputElement> | undefined>;\r\n}\r\nexport class SimpleInputModel {\r\n constructor(protected readonly _ardHostCmp: SimpleInputModelHost) {}\r\n\r\n readonly value = signal<string | null>(null);\r\n readonly stringValue = computed<string>(() => this.value() ?? '');\r\n\r\n writeValue(v: any): boolean {\r\n if (!isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(\r\n `ARD-WA0020: Trying to set <ard-simple-input>'s value to \"${v}\" (of type ${typeof v}), expected string or null.`\r\n )\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n return this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | null): boolean {\r\n //constraints\r\n v = this._applyLengthTransformer(v);\r\n //update view\r\n const oldVal = this.value();\r\n this.value.set(v);\r\n this._updateInputElement();\r\n return oldVal !== v;\r\n }\r\n rewriteValueAfterHostUpdate(): void {\r\n this._writeValue(this.value());\r\n }\r\n clear(): void {\r\n this.value.set(null);\r\n this._updateInputElement();\r\n }\r\n\r\n _updateInputElement() {\r\n const el = this._ardHostCmp.textInputEl()?.nativeElement;\r\n if (!el) return;\r\n el.value = this.stringValue();\r\n }\r\n get caretPos(): number {\r\n return this._ardHostCmp.textInputEl()?.nativeElement.selectionEnd ?? this.stringValue.length;\r\n }\r\n set caretPos(pos: number) {\r\n this._ardHostCmp.textInputEl()?.nativeElement.setSelectionRange(pos, pos);\r\n }\r\n //! constraints\r\n protected _applyLengthTransformer(v: string | null): string | null {\r\n const max = this._ardHostCmp.maxLength();\r\n if (!isDefined(max)) return v;\r\n if (!v || v.length <= max) return v;\r\n\r\n v = v.substring(0, max);\r\n this.caretPos = max;\r\n return v;\r\n }\r\n}\r\nexport interface InputModelHost extends SimpleInputModelHost {\r\n charlist: Signal<RegExp | undefined>;\r\n}\r\nexport class InputModel extends SimpleInputModel {\r\n constructor(protected override readonly _ardHostCmp: InputModelHost) {\r\n super(_ardHostCmp);\r\n }\r\n protected override _writeValue(v: string | null): boolean {\r\n //transformers\r\n if (v) {\r\n let prev = this.stringValue();\r\n v = this._applyAllowOrDenylistTransformer(v, prev);\r\n prev = this.stringValue();\r\n v = this._applyLengthTransformer(v);\r\n }\r\n const oldVal = this.value();\r\n //update view\r\n this.value.set(v);\r\n this._updateInputElement();\r\n return oldVal !== v;\r\n }\r\n\r\n setSelection(from: number | null, to: number | null): void;\r\n setSelection(from: number | null, to?: number | null): void {\r\n to = to ?? this.value()?.length ?? Infinity;\r\n this._ardHostCmp.textInputEl()?.nativeElement.setSelectionRange(from, to);\r\n }\r\n //* constraints\r\n protected _applyAllowOrDenylistTransformer(v: string, prev: string): string {\r\n const charlist = this._ardHostCmp.charlist();\r\n if (!charlist || !v) return v;\r\n const { text, caretPos } = new RegExpTransformer(charlist).apply(v, prev, this.caretPos);\r\n this.caretPos = caretPos;\r\n return text;\r\n }\r\n}\r\n\r\nexport interface NumberInputModelHost {\r\n readonly max: Signal<number>;\r\n readonly min: Signal<number>;\r\n readonly allowFloat: Signal<boolean>;\r\n readonly inputEl: Signal<ElementRef<HTMLInputElement> | undefined>;\r\n}\r\nexport class NumberInputModel {\r\n constructor(protected readonly _ardHostCmp: NumberInputModelHost) {}\r\n\r\n //! value setters/getters\r\n protected readonly _value = signal<string | null>(null);\r\n readonly value = this._value.asReadonly();\r\n readonly stringValue = computed(() => this._value() ?? '');\r\n readonly numberValue = computed(() => (this._value() === null ? null : Number(this._value())));\r\n\r\n setValue(v: string | number | null): void {\r\n const stringV = isNumber(v) ? String(v) : v;\r\n this._value.set(stringV);\r\n this._updateInputEl();\r\n }\r\n\r\n private _updateInputEl(): void {\r\n const stringV = this.stringValue();\r\n const el = this._ardHostCmp.inputEl()?.nativeElement;\r\n if (!el) return;\r\n\r\n const caretPos = this.caretPos;\r\n el.value = stringV;\r\n this.caretPos = caretPos;\r\n }\r\n\r\n //! write value handlers\r\n writeValue(v: any): boolean {\r\n if (!isNumber(v) && !isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(`ARD-WA0070: Trying to set <ard-number-input>'s value to \"${typeof v}\", expected string, number, or null.`)\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n v = String(v);\r\n return this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | number | null): boolean {\r\n //constraints\r\n if (v) {\r\n v = this._removeDecimalPlaces(v);\r\n v = this._applyNumberConstraint(v);\r\n v = this._applyMinMaxConstraints(v);\r\n }\r\n //update view\r\n const oldVal = this._value();\r\n this.setValue(v);\r\n return oldVal !== v;\r\n }\r\n rewriteValueAfterHostUpdate(): void {\r\n this._writeValue(this._value());\r\n }\r\n\r\n //! input element methods\r\n get caretPos(): number {\r\n return this._ardHostCmp.inputEl()?.nativeElement.selectionEnd ?? this.stringValue().length;\r\n }\r\n set caretPos(pos: number) {\r\n const el = this._ardHostCmp.inputEl()?.nativeElement;\r\n el?.setSelectionRange(pos, pos);\r\n }\r\n\r\n //! constraints\r\n private _removeDecimalPlaces(v: string | number | null): string | number {\r\n if (!v) return '';\r\n if (this._ardHostCmp.allowFloat()) return v;\r\n\r\n let num = isNumber(v) ? v : Number(v);\r\n\r\n if (!isNumber(v) && v.match(/[.,].+/)) {\r\n num = Number(v);\r\n }\r\n if (!isNaN(num)) return Math.round(num);\r\n return v;\r\n }\r\n private _applyNumberConstraint(v: string | number): string {\r\n if (!v) return '';\r\n\r\n const transformerFn = this._ardHostCmp.allowFloat() ? ArdTransformer.Float : ArdTransformer.Integer;\r\n const { text, caretPos } = transformerFn(String(v), this.stringValue(), this.caretPos);\r\n this.caretPos = caretPos;\r\n return text;\r\n }\r\n private _applyMinMaxConstraints(v: string): string {\r\n if (!v) return '';\r\n\r\n const numericValue = Number(v);\r\n if (numericValue > this._ardHostCmp.max()) return this._ardHostCmp.max().toString();\r\n if (numericValue < this._ardHostCmp.min()) return this._ardHostCmp.min().toString();\r\n return v;\r\n }\r\n}\r\n\r\nexport function escapeAndCreateRegex(str: string, flags?: string, negated = true): RegExp {\r\n str = str.replace(/([\\]]+)/g, '\\\\$1');\r\n return new RegExp(`[${negated ? '^' : ''}${str}]`, flags);\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-simple-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdSimpleInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-simple-input > ng-template[ard-prefix-tmp]' })\nexport class ArdSimpleInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-simple-input > ng-template[ard-suffix-tmp]' })\nexport class ArdSimpleInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n ElementRef,\r\n forwardRef,\r\n input,\r\n Input,\r\n output,\r\n viewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { SimpleOneAxisAlignment } from './../../types/alignment.types';\r\nimport { SimpleInputModel, SimpleInputModelHost } from './../input-utils';\r\nimport {\r\n ArdSimpleInputPlaceholderTemplateDirective,\r\n ArdSimpleInputPrefixTemplateDirective,\r\n ArdSimpleInputSuffixTemplateDirective,\r\n} from './simple-input.directives';\r\n\r\n@Component({\r\n selector: 'ard-simple-input',\r\n templateUrl: './simple-input.component.html',\r\n styleUrls: ['./simple-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSimpleInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSimpleInputComponent\r\n extends _NgModelComponentBase\r\n implements SimpleInputModelHost, ControlValueAccessor, AfterViewInit\r\n{\r\n readonly DEFAULTS = {\r\n clearButtonTitle: 'Clear',\r\n };\r\n //! input view\r\n readonly textInputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n protected readonly inputModel = new SimpleInputModel(this);\r\n private _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._wasViewInit = true;\r\n this._setInputAttributes();\r\n //set the value\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n delete this._valueBeforeInit;\r\n }\r\n }\r\n\r\n readonly placeholder = input<string>('');\r\n readonly inputId = input<Nullable<string>>(undefined);\r\n readonly clearButtonTitle = input<string>(this.DEFAULTS.clearButtonTitle);\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplate = contentChild(ArdSimpleInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdSimpleInputSuffixTemplateDirective);\r\n\r\n //! placeholder\r\n readonly placeholderTemplate = contentChild(ArdSimpleInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed<boolean>(() => Boolean(this.placeholder()) && !this.inputModel.value());\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly alignText = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-text-align-${this.alignText()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.clearable() ? 'ard-clearable' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! number attribute setters/getters\r\n readonly maxLength = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n //! no-value attribute setters/getters\r\n readonly clearable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n this.inputModel.writeValue(v);\r\n }\r\n //! value two-way binding\r\n protected _valueBeforeInit?: string | null = null;\r\n @Input()\r\n set value(v: string | null) {\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.writeValue(v);\r\n }\r\n get value(): string | null {\r\n return this.inputModel.value();\r\n }\r\n readonly valueChange = output<string | null>();\r\n\r\n //! event emitters\r\n readonly inputEvent = output<string | null>({ alias: 'input' });\r\n readonly changeEvent = output<string | null>({ alias: 'change' });\r\n readonly clearEvent = output<MouseEvent>({ alias: 'clear' });\r\n\r\n //! event handlers\r\n onInput(newVal: string): void {\r\n const valueHasChanged = this.inputModel.writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitInput();\r\n }\r\n protected _emitInput(): void {\r\n this._onChangeRegistered?.(this.value);\r\n this.inputEvent.emit(this.value);\r\n this.valueChange.emit(this.value);\r\n }\r\n //focus, blur, change\r\n onFocusMaster(event: FocusEvent): void {\r\n this.onFocus(event);\r\n }\r\n onBlurMaster(event: FocusEvent): void {\r\n this.onBlur(event);\r\n }\r\n onChange(event: Event): void {\r\n event.stopPropagation();\r\n this._emitChange();\r\n }\r\n protected _emitChange(): void {\r\n this.changeEvent.emit(this.inputModel.value());\r\n }\r\n // clear button\r\n readonly shouldShowClearButton = computed<boolean>(\r\n () => this.clearable() && !this.disabled() && Boolean(this.inputModel.value())\r\n );\r\n onClearButtonClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.inputModel.clear();\r\n this._emitChange();\r\n this._emitInput();\r\n this.clearEvent.emit(event);\r\n this.focus();\r\n }\r\n\r\n //! copy event\r\n onCopy(event: ClipboardEvent): void {\r\n if (\r\n this.value &&\r\n //does the selection cover the entire input\r\n ((this.textInputEl()?.nativeElement.selectionStart === 0 &&\r\n this.textInputEl()?.nativeElement.selectionEnd === this.textInputEl()?.nativeElement.value.length) ||\r\n //or is zero-wide\r\n this.textInputEl()?.nativeElement.selectionStart === this.textInputEl()?.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', this.value);\r\n event.preventDefault();\r\n }\r\n }\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.textInputEl()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex()),\r\n ...this.inputAttrs(),\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-simple-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template\r\n #defaultPlaceholderTemplate\r\n >\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSimpleInputComponent } from './simple-input.component';\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\nimport {\n ArdSimpleInputPlaceholderTemplateDirective,\n ArdSimpleInputPrefixTemplateDirective,\n ArdSimpleInputSuffixTemplateDirective,\n} from './simple-input.directives';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\n\n@NgModule({\n declarations: [\n ArdiumSimpleInputComponent,\n ArdSimpleInputPlaceholderTemplateDirective,\n ArdSimpleInputPrefixTemplateDirective,\n ArdSimpleInputSuffixTemplateDirective,\n ],\n imports: [CommonModule, _ClearButtonModule, ArdiumFormFieldFrameModule],\n exports: [\n ArdiumSimpleInputComponent,\n ArdSimpleInputPlaceholderTemplateDirective,\n ArdSimpleInputPrefixTemplateDirective,\n ArdSimpleInputSuffixTemplateDirective,\n ],\n})\nexport class ArdiumSimpleInputModule {}\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { any, isDefined, isPrimitive } from 'simple-bool';\r\nimport { ArdSimplestStorageItem } from '../../types/item-storage.types';\r\nimport { Nullable } from '../../types/utility.types';\r\n\r\nexport interface SimplestItemStorageHostDefaults {\r\n valueFrom: string;\r\n labelFrom: string;\r\n}\r\nexport interface SimplestItemStorageHost {\r\n readonly valueFrom: Signal<Nullable<string>>;\r\n readonly labelFrom: Signal<Nullable<string>>;\r\n readonly DEFAULTS: SimplestItemStorageHostDefaults;\r\n}\r\n\r\nexport class SimplestItemStorage {\r\n private readonly _items = signal<ArdSimplestStorageItem[]>([]);\r\n private readonly _highlightedItem = signal<Nullable<ArdSimplestStorageItem>>(null);\r\n\r\n constructor(private readonly _ardParentComp: SimplestItemStorageHost) {}\r\n\r\n /**\r\n * Gets all items.\r\n */\r\n readonly items = this._items.asReadonly();\r\n /**\r\n * The currently highlighted item.\r\n */\r\n readonly highlightedItem = this._highlightedItem.asReadonly();\r\n /**\r\n * True if at least one item is highlighted, otherwise false.\r\n */\r\n readonly isAnyItemHighlighted = computed(() => isDefined(this._highlightedItem()));\r\n\r\n /**\r\n * Sets the component's items. Takes into account the values defined by the parent component for `suggValueFrom` and `suggLabelFrom`.\r\n * @param items An array of items to be set as the component's items.\r\n * @returns true if at least one of the items is of primitive type, otherwise false.\r\n */\r\n setItems(items: any[]): boolean {\r\n let areItemsPrimitive = false;\r\n if (any(items, isPrimitive)) {\r\n items = items.map(this._primitiveItemsMapFn);\r\n areItemsPrimitive = true;\r\n }\r\n\r\n this._items.set(\r\n items.map((item, index) => {\r\n return this._setItemsMapFn(item, index, areItemsPrimitive);\r\n })\r\n );\r\n\r\n return areItemsPrimitive;\r\n }\r\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\r\n return { value: item };\r\n }\r\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdSimplestStorageItem {\r\n if (areItemsPrimitive) {\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(rawItemData.value),\r\n label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n };\r\n }\r\n //get value\r\n const valuePath =\r\n this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom() ?? this._ardParentComp.DEFAULTS.valueFrom;\r\n const value = resolvePath(rawItemData, valuePath);\r\n\r\n //get label\r\n const labelPath =\r\n this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom() ?? this._ardParentComp.DEFAULTS.labelFrom;\r\n const label = resolvePath(rawItemData, labelPath) ?? value;\r\n\r\n //return\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(value),\r\n label: signal(label?.toString?.() ?? String(label)),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n };\r\n }\r\n\r\n /**\r\n * Selects the given item.\r\n * @param items The item to select.\r\n * @returns The value of the selected item.\r\n */\r\n selectItem(item: ArdSimplestStorageItem): any {\r\n return item.value;\r\n }\r\n selectCurrent(): any {\r\n const hi = this._highlightedItem();\r\n if (!hi) return undefined;\r\n return this.selectItem(hi);\r\n }\r\n\r\n /**\r\n * Unhighlights all currently highlighted items.\r\n */\r\n unhighlightCurrent(): void {\r\n const hi = this._highlightedItem();\r\n if (hi) {\r\n hi.highlighted.set(false);\r\n }\r\n this._highlightedItem.set(null);\r\n }\r\n /**\r\n * Highlights a given item.\r\n * @param item The item to be highlighted.\r\n */\r\n highlightItem(item: ArdSimplestStorageItem): void {\r\n this.unhighlightCurrent();\r\n\r\n item.highlighted.set(true);\r\n\r\n this._highlightedItem.set(item);\r\n }\r\n /**\r\n * Unhighlights a given item.\r\n * @param item The item to be unhighlighted.\r\n */\r\n unhighlightItem(item: ArdSimplestStorageItem): void {\r\n item.highlighted.set(false);\r\n\r\n if (this._highlightedItem()?.index() === item.index()) this._highlightedItem.set(null);\r\n }\r\n /**\r\n * Highlights the first item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightFirstItem(): ArdSimplestStorageItem | null {\r\n if (!this._items().length) return null;\r\n\r\n this.unhighlightCurrent();\r\n\r\n const itemToHighlight = this._items().first();\r\n this.highlightItem(itemToHighlight);\r\n\r\n return itemToHighlight;\r\n }\r\n /**\r\n * Highlights the last item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightLastItem(): ArdSimplestStorageItem | null {\r\n if (!this._items().length) return null;\r\n\r\n this.unhighlightCurrent();\r\n\r\n const itemToHighlight = this._items().last();\r\n this.highlightItem(itemToHighlight);\r\n\r\n return itemToHighlight;\r\n }\r\n /**\r\n * Highlights the next non-disabled item defined by the offset amount.\r\n * @param offset The amount of items to offset the highlight by.\r\n * @returns The item highlighted.\r\n */\r\n highlightNextItem(offset: number): ArdSimplestStorageItem | null {\r\n const currentItem = this._highlightedItem();\r\n if (!currentItem) {\r\n return this.highlightFirstItem();\r\n }\r\n const items = this._items();\r\n const currentIndexInItems = items.findIndex(item => item.index() === currentItem.index());\r\n\r\n let nextItemIndex = currentIndexInItems + offset;\r\n if (nextItemIndex >= items.length) {\r\n nextItemIndex -= items.length;\r\n } else if (nextItemIndex < 0) {\r\n nextItemIndex += items.length;\r\n }\r\n const itemToHighlight = items[nextItemIndex];\r\n\r\n this.highlightItem(itemToHighlight);\r\n\r\n return itemToHighlight;\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { ArdSimplestStorageItem, OptionContext } from '../../types/item-storage.types';\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-suggestion-tmp]' })\r\nexport class ArdSuggestionTemplateDirective {\r\n constructor(public template: TemplateRef<OptionContext<ArdSimplestStorageItem>>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-placeholder-tmp]' })\r\nexport class ArdInputPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-loading-tmp]' })\r\nexport class ArdInputLoadingTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-prefix-tmp]' })\r\nexport class ArdInputPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-suffix-tmp]' })\r\nexport class ArdInputSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n","import { ConnectedPosition, Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n TemplateRef,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n input,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceArrayProperty, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { isString } from 'simple-bool';\r\nimport { SimplestItemStorage, SimplestItemStorageHost } from '../../_internal/item-storages/simplest-item-storage';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant } from '../../dropdown-panel/dropdown-panel.types';\r\nimport { ArdSimplestStorageItem } from '../../types/item-storage.types';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { ArdiumSimpleInputComponent } from '../simple-input/simple-input.component';\r\nimport { OptionContext } from './../../types/item-storage.types';\r\nimport { InputModel, InputModelHost, escapeAndCreateRegex } from './../input-utils';\r\nimport {\r\n ArdInputLoadingTemplateDirective,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ArdSuggestionTemplateDirective,\r\n} from './input.directives';\r\n\r\n@Component({\r\n selector: 'ard-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumInputComponent\r\n extends ArdiumSimpleInputComponent\r\n implements InputModelHost, SimplestItemStorageHost, AfterViewInit\r\n{\r\n private readonly element!: HTMLElement;\r\n\r\n constructor(\r\n private viewContainerRef: ViewContainerRef,\r\n private overlay: Overlay,\r\n private scrollStrategyOpts: ScrollStrategyOptions\r\n ) {\r\n super();\r\n\r\n this.element = viewContainerRef.element.nativeElement;\r\n }\r\n\r\n override readonly DEFAULTS = {\r\n clearButtonTitle: 'Clear',\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n suggestionsLoadingText: 'Loading...',\r\n };\r\n //! input view\r\n protected override readonly inputModel = new InputModel(this);\r\n\r\n //! allowlist/denylist of characters\r\n //use standard string for denylist, prepend with ^ for allowlist\r\n readonly charlistFromInput = input<RegExp | undefined, string>(undefined, {\r\n alias: 'charlist',\r\n transform: v => {\r\n if (!isString(v)) {\r\n throw new Error('ARD-FT0033: [charlist] must be a non-empty string, got \"\".');\r\n }\r\n const negated = v.startsWith('^');\r\n return escapeAndCreateRegex(v, '', !negated);\r\n },\r\n });\r\n readonly charlistCaseInsensitive = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly charlist = computed<RegExp | undefined>(() => {\r\n const c = this.charlistFromInput();\r\n if (!this.charlistCaseInsensitive() || !c) {\r\n return c;\r\n }\r\n return new RegExp(c.source, 'i');\r\n });\r\n\r\n //! autocomplete\r\n readonly autocomplete = input<Nullable<string>>(undefined);\r\n\r\n readonly shouldDisplayAutocomplete = computed<boolean>(() => !this.disabled() && Boolean(this.autocomplete()));\r\n\r\n //autocomplete event\r\n readonly acceptAutocompleteEvent = output({ alias: 'acceptAutocomplete' });\r\n\r\n //! prefix & suffix\r\n override readonly prefixTemplate = contentChild(ArdInputPrefixTemplateDirective);\r\n override readonly suffixTemplate = contentChild(ArdInputSuffixTemplateDirective);\r\n\r\n //! placeholder\r\n override readonly placeholderTemplate = contentChild(ArdInputPlaceholderTemplateDirective);\r\n\r\n //! suggestions\r\n readonly suggestionStorage = new SimplestItemStorage(this);\r\n\r\n readonly valueFrom = input<Nullable<string>>(undefined, { alias: 'suggValueFrom' });\r\n readonly labelFrom = input<Nullable<string>>(undefined, { alias: 'suggLabelFrom' });\r\n\r\n readonly acceptSuggestionEvent = output<any>({ alias: 'acceptSuggestion' });\r\n\r\n readonly suggestionItems = this.suggestionStorage.items;\r\n\r\n @Input()\r\n set suggestions(value: any) {\r\n if (!Array.isArray(value)) value = coerceArrayProperty(value);\r\n\r\n const shouldPrintErrors = this.suggestionStorage.setItems(value);\r\n\r\n this._suggestionDropdowOpen.set(true);\r\n this.suggestionStorage.highlightFirstItem();\r\n\r\n if (shouldPrintErrors) {\r\n this._printPrimitiveWarnings();\r\n }\r\n }\r\n\r\n private _printPrimitiveWarnings() {\r\n function makeWarning(str: string): void {\r\n console.warn(\r\n `ARD-WA0031: Skipped using [${str}] property bound to <ard-input>, as some provided suggestion items are of primitive type`\r\n );\r\n }\r\n if (this.valueFrom()) {\r\n makeWarning('valueFrom');\r\n }\r\n if (this.labelFrom()) {\r\n makeWarning('labelFrom');\r\n }\r\n }\r\n\r\n private readonly _suggestionDropdowOpen = signal<boolean>(false);\r\n\r\n readonly shouldDisplaySuggestions = computed(\r\n () => !this.disabled() && (this.suggestionItems().length > 0 || this.areSuggestionsLoading()) && this._suggestionDropdowOpen()\r\n );\r\n\r\n readonly areSuggestionsLoading = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly suggestionsLoadingText = input<string>(this.DEFAULTS.suggestionsLoadingText);\r\n\r\n readonly suggestionTemplate = contentChild(ArdSuggestionTemplateDirective);\r\n readonly suggestionLoadingTemplate = contentChild(ArdInputLoadingTemplateDirective);\r\n\r\n //! suggestions overlay\r\n readonly dropdownHost = viewChild<ElementRef<HTMLDivElement>>('suggestionsHost');\r\n readonly dropdownTemplate = viewChild('suggestionsTemplate', { read: TemplateRef });\r\n\r\n private dropdownOverlay!: OverlayRef;\r\n\r\n override ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n const strategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.dropdownHost()!)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n } as ConnectedPosition,\r\n ])\r\n .withPush(false);\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n scrollStrategy: this.scrollStrategyOpts.block(),\r\n hasBackdrop: false,\r\n });\r\n\r\n this.dropdownOverlay = this.overlay.create(config);\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate()!, this.viewContainerRef);\r\n this.dropdownOverlay.attach(portal);\r\n\r\n this.setOverlaySize();\r\n }\r\n\r\n setOverlaySize(): void {\r\n const rect = this.dropdownHost()?.nativeElement.getBoundingClientRect();\r\n this.dropdownOverlay.updateSize({ width: rect?.width });\r\n }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n this.setOverlaySize();\r\n }\r\n\r\n getOptionContext(item: ArdSimplestStorageItem): OptionContext<ArdSimplestStorageItem> {\r\n return {\r\n $implicit: item,\r\n item,\r\n itemData: item.itemData,\r\n };\r\n }\r\n\r\n //! suggestion-highligh-related\r\n private _isMouseBeingUsed = false;\r\n @HostListener('mousemove')\r\n onMouseMove() {\r\n this._isMouseBeingUsed = true;\r\n }\r\n onSuggestionMouseEnter(item: ArdSimplestStorageItem, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed) return;\r\n this.suggestionStorage.highlightItem(item);\r\n\r\n event.stopPropagation();\r\n }\r\n onSuggestionMouseLeave(item: ArdSimplestStorageItem, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed) return;\r\n this.suggestionStorage.unhighlightItem(item);\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n //! suggestion selection\r\n selectSuggestion(item: ArdSimplestStorageItem, event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this._selectSuggestion(item);\r\n }\r\n private _selectSuggestion(item: ArdSimplestStorageItem): void {\r\n const selected = this.suggestionStorage.selectItem(item);\r\n this.writeValue(selected ?? '');\r\n\r\n this.acceptSuggestionEvent.emit(selected);\r\n\r\n //important to do those two things in this exact order\r\n this.focus();\r\n this._suggestionDropdowOpen.set(false);\r\n }\r\n handleSuggestionClickOutside(event: MouseEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n\r\n const target = event.target as HTMLElement;\r\n if (this.element.contains(target)) return;\r\n\r\n this._suggestionDropdowOpen.set(false);\r\n }\r\n //! suggestion appearance\r\n readonly dropdownAppearance = input<Nullable<DropdownPanelAppearance>>(undefined);\r\n readonly dropdownAppearanceOrDefault = computed(() => {\r\n if (this.dropdownAppearance()) return this.dropdownAppearance()!;\r\n if (this.appearance() === FormElementAppearance.Outlined) return DropdownPanelAppearance.Outlined;\r\n return DropdownPanelAppearance.Raised;\r\n });\r\n readonly dropdownVariant = input<Nullable<DropdownPanelVariant>>(undefined);\r\n readonly dropdownVariantOrDefault = computed(() => {\r\n if (this.dropdownVariant()) return this.dropdownVariant()!;\r\n const variant = this.variant();\r\n if (variant === FormElementVariant.Pill) return DropdownPanelVariant.Rounded;\r\n return variant;\r\n });\r\n\r\n //! focus override\r\n override onFocus(event: FocusEvent): void {\r\n this._suggestionDropdowOpen.set(true);\r\n if (!this.suggestionStorage.highlightedItem()) this.suggestionStorage.highlightFirstItem();\r\n\r\n super.onFocus(event);\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'Enter': {\r\n this._onTabOrEnterPress(event);\r\n this._onEnterPress(event);\r\n return;\r\n }\r\n case 'Tab': {\r\n this._onTabOrEnterPress(event);\r\n return;\r\n }\r\n case 'ArrowDown': {\r\n this._onArrowDownPress(event);\r\n return;\r\n }\r\n case 'ArrowUp': {\r\n this._onArrowUpPress(event);\r\n return;\r\n }\r\n }\r\n }\r\n protected _onTabOrEnterPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplayAutocomplete()) return;\r\n event.preventDefault();\r\n\r\n this.onInput(this.autocomplete() ?? '');\r\n this.acceptAutocompleteEvent.emit();\r\n }\r\n private _onEnterPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n const item = this.suggestionStorage.highlightedItem();\r\n if (!item) return;\r\n\r\n event.preventDefault();\r\n this._selectSuggestion(item);\r\n }\r\n private _onArrowDownPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed = false;\r\n\r\n this.suggestionStorage.highlightNextItem(+1);\r\n }\r\n private _onArrowUpPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed = false;\r\n\r\n this.suggestionStorage.highlightNextItem(-1);\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-input\"\r\n #suggestionsHost\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayAutocomplete()) {\r\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\r\n }\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template\r\n #defaultPlaceholderTemplate\r\n >\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\r\n role=\"listbox\"\r\n [compact]=\"compact\"\r\n aria-label=\"Suggestions\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"shouldDisplaySuggestions()\"\r\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n >\r\n @for (item of suggestionItems(); track item.index()) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-selected]=\"item.selected()\"\r\n [class.ard-option-highlighted]=\"item.highlighted()\"\r\n [attr.aria-selected]=\"item.selected()\"\r\n (click)=\"selectSuggestion(item, $event)\"\r\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\r\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\r\n >\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ item.label() }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"suggestionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(item)\"\r\n ></ng-template>\r\n </span>\r\n </div>\r\n }\r\n @if (areSuggestionsLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ suggestionsLoadingText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate()?.template || defaultLoadingPlaceholderTemplate\"></ng-template>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumClickOutsideEventModule } from '@ardium-ui/devkit';\r\nimport { ArdiumDropdownPanelModule } from '../../dropdown-panel/dropdown-panel.module';\r\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\r\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\r\nimport { ArdiumInputComponent } from './input.component';\r\nimport {\r\n ArdInputLoadingTemplateDirective,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ArdSuggestionTemplateDirective,\r\n} from './input.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumInputComponent,\r\n ArdSuggestionTemplateDirective,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputLoadingTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ArdiumFormFieldFrameModule,\r\n _ClearButtonModule,\r\n ArdiumDropdownPanelModule,\r\n ArdiumClickOutsideEventModule,\r\n ],\r\n exports: [\r\n ArdiumInputComponent,\r\n ArdSuggestionTemplateDirective,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputLoadingTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumInputModule {}\r\n","export const DigitInputShape = {\r\n Square: 'square',\r\n Rectangle: 'rectangle',\r\n} as const;\r\nexport type DigitInputShape = (typeof DigitInputShape)[keyof typeof DigitInputShape];\r\n\r\nexport const TransformType = {\r\n Uppercase: 'uppercase',\r\n Lowercase: 'lowercase',\r\n} as const;\r\nexport type TransformType = (typeof TransformType)[keyof typeof TransformType];\r\n\r\nexport const DigitInputPrimitiveOption = {\r\n Number: 'number',\r\n Letter: 'letter',\r\n Alphanumeric: 'alphanumeric',\r\n Special: 'special',\r\n} as const;\r\nexport type DigitInputPrimitiveOption = (typeof DigitInputPrimitiveOption)[keyof typeof DigitInputPrimitiveOption];\r\n\r\nexport interface DigitInputAcceptObject {\r\n accept: string | RegExp | ((char: string, charsBefore: string) => boolean);\r\n transform?: TransformType | null;\r\n readonly?: boolean;\r\n}\r\nexport interface DigitInputStaticObject {\r\n static: string;\r\n}\r\n\r\nexport type DigitInputOption = DigitInputAcceptObject | DigitInputStaticObject;\r\n\r\nexport type DigitInputConfig = (DigitInputPrimitiveOption | DigitInputOption)[] | string | number;\r\n","import { ElementRef, Signal } from '@angular/core';\r\n\r\nexport interface DigitInputConfigData {\r\n type: DigitInputConfigDataType;\r\n char?: string;\r\n index?: number;\r\n readonly?: boolean;\r\n}\r\nexport interface DigitInputModelHost {\r\n readonly inputs: Signal<readonly ElementRef<HTMLInputElement>[]>;\r\n}\r\n\r\nexport const DigitInputConfigDataType = {\r\n Input: 'input',\r\n Static: 'static',\r\n} as const;\r\nexport type DigitInputConfigDataType = (typeof DigitInputConfigDataType)[keyof typeof DigitInputConfigDataType];\r\n\r\nexport function _sanitizeRegExpString(str: string): string {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\n","import { computed, effect, signal } from '@angular/core';\r\nimport { coerceArrayProperty } from '@ardium-ui/devkit';\r\nimport { isAnyString, isArray, isFunction, isNull, isNumber, isRegExp } from 'simple-bool';\r\nimport {\r\n DigitInputAcceptObject,\r\n DigitInputConfig,\r\n DigitInputOption,\r\n DigitInputPrimitiveOption,\r\n TransformType,\r\n} from './digit-input.types';\r\nimport { DigitInputConfigData, DigitInputConfigDataType, DigitInputModelHost, _sanitizeRegExpString } from './digit-input.utils';\r\n\r\nexport class DigitInputModel {\r\n constructor(private _ardHost: DigitInputModelHost) {\r\n //set the value array to be the same length\r\n effect(\r\n () => {\r\n const length = this.configArrayData().length;\r\n\r\n this.value.update(arr => {\r\n if (!arr) return new Array(length).fill(null);\r\n if (arr.length >= length) return arr.slice(0, length);\r\n return [...arr, ...new Array(length - arr.length).fill(null)];\r\n });\r\n },\r\n { allowSignalWrites: true }\r\n );\r\n }\r\n\r\n private readonly _configArray = signal<DigitInputOption[]>([]);\r\n\r\n readonly configArrayData = computed<DigitInputConfigData[]>(() => {\r\n let inputIndex = 0;\r\n return this._configArray().map(v => {\r\n if ('static' in v) {\r\n return {\r\n type: DigitInputConfigDataType.Static,\r\n char: v.static,\r\n };\r\n }\r\n return {\r\n type: DigitInputConfigDataType.Input,\r\n index: inputIndex++,\r\n };\r\n });\r\n });\r\n\r\n private readonly _configArrayNoStatics = computed<DigitInputAcceptObject[]>(\r\n () => this._configArray().filter(v => !('static' in v)) as DigitInputAcceptObject[]\r\n );\r\n\r\n readonly isConfigDefined = computed((): boolean => this._configArray().length > 0);\r\n\r\n readonly value = signal<(string | null)[] | null>(null);\r\n\r\n readonly stringValue = computed(\r\n (): string =>\r\n this.value()\r\n ?.map(v => v ?? ' ')\r\n .join('')\r\n .trimEnd() ?? ''\r\n );\r\n\r\n readonly isValueFull = computed((): boolean => this.value()?.filter(v => v).length === this._configArrayNoStatics().length);\r\n\r\n isDefinedAtIndex(index: number): boolean {\r\n return !!this.value()?.[index];\r\n }\r\n\r\n writeValue(v: any): boolean {\r\n if (!isArray(v) && !isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string value\r\n console.warn(\r\n new Error(\r\n `ARD-WA0020: Trying to set <ard-digit-input>'s value to \"${v}\" (of type ${typeof v}), expected string or array of strings.`\r\n )\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n const vArray = coerceArrayProperty(v);\r\n const problemIndex = vArray.findIndex(el => !isAnyString(el) || el.length > 1);\r\n if (problemIndex !== -1) {\r\n throw new Error(\r\n `ARD-FT0042: Array passed to <ard-digit-input>'s value must only contain strings of length 1 or 0. Element \"${vArray[problemIndex]}\" at index ${problemIndex} does not match those requirements.`\r\n );\r\n }\r\n return this._writeValue(vArray);\r\n }\r\n private _writeValue(v: string[] | null): boolean {\r\n const oldVal = this.value();\r\n this.value.set(v && v.map(el => el || null));\r\n this.validateValueAndUpdate();\r\n this._updateInputElements();\r\n return oldVal !== v;\r\n }\r\n\r\n private _updateInputElements() {\r\n const value = this.value ?? [];\r\n let i = 0;\r\n for (const inputEl of this._ardHost.inputs()) {\r\n inputEl.nativeElement.value = value()?.[i] ?? '';\r\n i++;\r\n }\r\n }\r\n\r\n //! setting config\r\n setConfig(config: DigitInputConfig): void {\r\n this._setConfig(config);\r\n this.validateValueAndUpdate();\r\n }\r\n private _setConfig(config: DigitInputConfig): void {\r\n //map a number to ready objects\r\n let configAsNumber = isAnyString(config) ? Number(config) : null;\r\n if (isNumber(config) || isNumber(configAsNumber)) {\r\n configAsNumber = isNumber(config) ? config : configAsNumber!;\r\n this._configArray.set(new Array(configAsNumber).fill({ accept: (str: string) => /[0-9]/.test(str) }));\r\n return;\r\n }\r\n //map a string to an array\r\n let configArr: string[] | Exclude<DigitInputConfig, number | string>;\r\n if (isAnyString(config)) {\r\n configArr = coerceArrayProperty(config);\r\n } else {\r\n configArr = config;\r\n }\r\n //map array to ready objects\r\n this._configArray.set(\r\n configArr.map((v, i) => {\r\n if (!isAnyString(v)) {\r\n if ('accept' in v && !isFunction(v.accept)) {\r\n const regExp = isRegExp(v.accept) ? v.accept : new RegExp(`[${_sanitizeRegExpString(v.accept)}]`);\r\n v.accept = str => regExp.test(str);\r\n }\r\n return v;\r\n }\r\n\r\n switch (v) {\r\n case DigitInputPrimitiveOption.Number:\r\n return { accept: str => /[0-9]/.test(str) };\r\n case DigitInputPrimitiveOption.Letter:\r\n return { accept: str => /[a-zA-Z]/.test(str) };\r\n case DigitInputPrimitiveOption.Alphanumeric:\r\n return { accept: str => /[0-9a-zA-Z]/.test(str) };\r\n case DigitInputPrimitiveOption.Special:\r\n return { accept: str => /[!@#$%^&*-_=+/\\\\.,]/.test(str) };\r\n\r\n default:\r\n if (configArr.length === 1) {\r\n throw new Error(`ARD-NF0043S: <ard-digit-input>'s config is invalid. Expected number or array, got \"${v}\"`);\r\n }\r\n throw new Error(`ARD-NF0043B: Found invalid string \"${v}\" in <ard-digit-input>'s config at index ${i}`);\r\n }\r\n })\r\n );\r\n }\r\n\r\n //! validate against the config\r\n validateInputAndSetValue(input: string, index: number): false | [boolean, string | null] {\r\n if (index < 0 || index > this._configArrayNoStatics().length) return false;\r\n\r\n let v = this.value();\r\n //prepare the value array if does not exist\r\n if (!v) {\r\n this.value.set([]);\r\n }\r\n v = [];\r\n //prepare the characters before the current one (to be used in validation)\r\n const before = this.stringValue().charAt(index);\r\n\r\n //remove the old character from the input element\r\n if (before && input.length > 1 && input.match(before)) {\r\n input = input.replace(before, '');\r\n }\r\n //use only the first or last character (error safety)\r\n const firstChar = input.charAt(0);\r\n const lastChar = input.charAt(input.length - 1);\r\n input = firstChar === before ? lastChar : firstChar;\r\n\r\n //validate and transform, if necessary\r\n const inputChar = this._validateSingleChar(input, before, this._configArrayNoStatics()[index]);\r\n\r\n //get the corresponding HTML input element\r\n const inputEl = this._ardHost.inputs()[index];\r\n if (!inputEl) {\r\n throw new Error(\r\n \"ARD-IS0048: <ard-digit-input>'s value changed, but its corresponding input element could not be found. This is error is fatal to the functioning of Ardium UI. Please report this issue to the creators.\"\r\n );\r\n }\r\n //update the input element and value array\r\n const newVal = inputChar ?? before;\r\n inputEl.nativeElement.value = newVal ?? '';\r\n\r\n this.value.update(arr => {\r\n if (!arr) arr = [];\r\n const newArr = [...arr];\r\n newArr[index] = newVal || null;\r\n return newArr;\r\n });\r\n //return changes marker and validated value\r\n return [newVal !== before, inputChar];\r\n }\r\n validateValueAndUpdate(): void {\r\n const v = this.value();\r\n if (!v) return;\r\n\r\n let before = '';\r\n const newValue: (string | null)[] = [];\r\n for (let i = 0; i < Math.min(this._configArrayNoStatics().length, v.length); i++) {\r\n const char = v[i];\r\n before += char ?? ' ';\r\n\r\n if (!char) {\r\n newValue.push(char);\r\n continue;\r\n }\r\n const config = this._configArrayNoStatics()[i];\r\n\r\n const newChar = this._validateSingleChar(char, before, config);\r\n newValue.push(newChar);\r\n }\r\n this.value.set(newValue);\r\n }\r\n private _validateSingleChar(char: string | null, before: string, config: DigitInputAcceptObject): string | null {\r\n if (config.readonly) {\r\n throw new Error(\r\n `ARD-IS0049R: trying to set value of a <ard-digit-input>'s readonly field. This is error is fatal to the functioning of Ardium UI. Please report this issue to the creators.`\r\n );\r\n }\r\n if (!isFunction(config.accept)) {\r\n const regExp = isRegExp(config.accept) ? config.accept : new RegExp(`[${_sanitizeRegExpString(config.accept)}]`);\r\n config.accept = str => regExp.test(str);\r\n }\r\n if (!char) return char;\r\n\r\n const canAccept = config.accept(char, before);\r\n if (!canAccept) return null;\r\n\r\n if (config.transform) {\r\n if (config.transform === TransformType.Lowercase) {\r\n return char.toLowerCase();\r\n }\r\n if (config.transform === TransformType.Uppercase) {\r\n return char.toUpperCase();\r\n }\r\n console.warn(\r\n `ARD-IS0049T: <ard-digit-input>'s value validator encountered an unexpected value of the config's \"transform\" property. Ardium UI was able to handle this issue, but please report it to the creators.`\r\n );\r\n }\r\n return char;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n forwardRef,\r\n input,\r\n output,\r\n viewChildren,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { DigitInputModel } from './digit-input.model';\r\nimport { DigitInputConfig, DigitInputShape } from './digit-input.types';\r\nimport { DigitInputModelHost } from './digit-input.utils';\r\n\r\n@Component({\r\n selector: 'ard-digit-input',\r\n templateUrl: './digit-input.component.html',\r\n styleUrls: ['./digit-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumDigitInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumDigitInputComponent extends _NgModelComponentBase implements ControlValueAccessor, DigitInputModelHost {\r\n //! inputs ref\r\n readonly inputs = viewChildren<ElementRef<HTMLInputElement>>('input');\r\n\r\n //! data model\r\n private readonly model = new DigitInputModel(this);\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly shape = input<DigitInputShape>(DigitInputShape.Square);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-shape-${this.shape()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! model access points\r\n readonly config = input.required<void, DigitInputConfig>({\r\n transform: v => this.model.setConfig(v),\r\n });\r\n readonly configArrayData = this.model.configArrayData;\r\n\r\n private _oldConfigArrayDataLength = -1;\r\n readonly configArrayDataEffect = effect(() => {\r\n if (this.configArrayData().length === this._oldConfigArrayDataLength) return;\r\n\r\n this._oldConfigArrayDataLength = this.configArrayData().length;\r\n this._emitChange();\r\n });\r\n\r\n isInputEmpty(index: number): boolean {\r\n return !this.model.isDefinedAtIndex(index);\r\n }\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any): void {\r\n this._writeValue(v);\r\n }\r\n private _writeValue(v: any): boolean {\r\n return this.model.writeValue(v);\r\n }\r\n\r\n //! value two-way binding\r\n readonly outputAsString = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n @Input()\r\n set value(v: string | (string | null)[] | null) {\r\n this.writeValue(v);\r\n }\r\n readonly valueChange = output<string | (string | null)[] | null>();\r\n\r\n readonly stringValue = this.model.stringValue;\r\n\r\n readonly emittableValue = computed((): string | (string | null)[] | null => {\r\n if (this.outputAsString()) return this.model.stringValue();\r\n return this.model.value();\r\n });\r\n\r\n //! event emitters\r\n readonly finishedValue = output<string | (string | null)[] | null>();\r\n\r\n readonly focusIndexEvent = output<number>({ alias: 'focusIndex' });\r\n readonly blurIndexEvent = output<number>({ alias: 'blurIndex' });\r\n\r\n //! event handlers\r\n onPaste(event: ClipboardEvent, index: number): void {\r\n const value = event.clipboardData?.getData('text');\r\n event.stopPropagation();\r\n event.preventDefault();\r\n if (!value) return;\r\n\r\n const maxLength = this.inputs().length - index;\r\n value\r\n .slice(0, maxLength)\r\n .split('')\r\n .forEach((char, i) => {\r\n this.model.validateInputAndSetValue(char, index + i);\r\n });\r\n this.focusByIndex(index - 1 + Math.min(value.length, maxLength));\r\n }\r\n onInput(event: Event, index: number): void {\r\n this._updateSingleInputValue((event.target as HTMLInputElement).value, index);\r\n this.focusByIndex(index + 1);\r\n }\r\n private _updateSingleInputValue(value: string, index: number): void {\r\n const valueChanged = this.model.validateInputAndSetValue(value, index);\r\n if (!valueChanged || !valueChanged[0]) return;\r\n\r\n this._emitChange();\r\n\r\n if (this.model.isValueFull()) {\r\n this.blur();\r\n }\r\n }\r\n focusByIndex(index: number): boolean;\r\n focusByIndex(index: number, tryFocusingNext: boolean, direction: 1 | -1): boolean;\r\n focusByIndex(index: number, tryFocusingNext?: boolean, direction?: 1 | -1): boolean {\r\n if (index < 0 || index >= this.inputs().length) return false;\r\n const nextEl = this.inputs()[index]?.nativeElement;\r\n if (!nextEl) return false;\r\n\r\n nextEl.focus();\r\n if (tryFocusingNext && direction && document.activeElement !== nextEl) {\r\n return this.focusByIndex(index + direction);\r\n }\r\n return document.activeElement === nextEl;\r\n }\r\n //focus, blur, change\r\n onFocusMaster(event: FocusEvent, index: number): void {\r\n this.focusIndexEvent.emit(index);\r\n this.onFocus(event);\r\n }\r\n onBlurMaster(event: FocusEvent, index: number): void {\r\n this.blurIndexEvent.emit(index);\r\n this.onBlur(event);\r\n }\r\n protected _emitChange(): void {\r\n const v = this.emittableValue();\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n if (this.model.isValueFull()) {\r\n this.finishedValue.emit(v);\r\n }\r\n }\r\n onKeydown(event: KeyboardEvent, index: number): void {\r\n switch (event.key) {\r\n case 'ArrowLeft':\r\n this.focusByIndex(index - 1, true, -1);\r\n return;\r\n case 'ArrowRight':\r\n this.focusByIndex(index + 1, true, +1);\r\n return;\r\n case 'Home':\r\n this.focusByIndex(0, true, 1);\r\n return;\r\n case 'End':\r\n this.focusByIndex(this.inputs.length - 1, true, -1);\r\n return;\r\n case 'Backspace':\r\n case 'Delete':\r\n this._updateSingleInputValue('', index);\r\n this.focusByIndex(index - 1, true, -1);\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"ard-digit-input\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (data of configArrayData(); track $index) {\r\n <div class=\"ard-digit-input__item\">\r\n @if (data.type === 'input') {\r\n <input\r\n #input\r\n #focusableElement\r\n class=\"ard-digit-input__input\"\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\r\n (paste)=\"onPaste($event, data.index!)\"\r\n (input)=\"onInput($event, data.index!)\"\r\n (focus)=\"onFocusMaster($event, data.index!)\"\r\n (blur)=\"onBlurMaster($event, data.index!)\"\r\n (keydown)=\"onKeydown($event, data.index!)\"\r\n />\r\n } @else {\r\n <div class=\"ard-digit-input__static\">\r\n {{ data.char }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDigitInputComponent } from './digit-input.component';\n\n@NgModule({\n declarations: [ArdiumDigitInputComponent],\n imports: [CommonModule],\n exports: [ArdiumDigitInputComponent],\n})\nexport class ArdiumDigitInputModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { PasswordInputRevealButtonContext } from './password-input.types';\n\n@Directive({\n selector: 'ard-password-input > ng-template[ard-placeholder-tmp]',\n})\nexport class ArdPasswordInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-password-input > ng-template[ard-prefix-tmp]' })\nexport class ArdPasswordInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-password-input > ng-template[ard-suffix-tmp]' })\nexport class ArdPasswordInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-password-input > ng-template[ard-reveal-tmp]' })\nexport class ArdPasswordInputRevealButtonTemplateDirective {\n constructor(public template: TemplateRef<PasswordInputRevealButtonContext>) {}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'icon',\n})\nexport class ArdiumIconPipe implements PipeTransform {\n transform(value: string): string {\n value = value.trim().toLowerCase();\n value = value.replace(/[ -]/g, '_');\n return value;\n }\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isDefined } from 'simple-bool';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\ntype WeightNumber = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\r\ntype WeightString = '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';\r\n\r\ntype GradeNumber = -25 | 0 | 200;\r\ntype GradeString = '-25' | '0' | '200';\r\n\r\ntype OpticalSizeNumber = 20 | 24 | 40 | 48;\r\ntype OpticalSizeString = '20' | '24' | '40' | '48';\r\n\r\n@Component({\r\n selector: 'ard-icon',\r\n templateUrl: `./icon.component.html`,\r\n styleUrls: ['./icon.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumIconComponent implements AfterViewInit {\r\n readonly ariaLabel = input<string>('');\r\n readonly icon = input<Nullable<string>>(undefined);\r\n\r\n readonly filled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly weight = input<WeightNumber | undefined, Nullable<WeightNumber | WeightString>>(400, {\r\n transform: v => coerceNumberProperty(v, 400) as WeightNumber,\r\n });\r\n readonly grade = input<GradeNumber | undefined, Nullable<GradeNumber | GradeString>>(0, {\r\n transform: v => coerceNumberProperty(v, 0) as GradeNumber,\r\n });\r\n readonly opticalSize = input<OpticalSizeNumber | undefined, Nullable<OpticalSizeNumber | OpticalSizeString>>(40, {\r\n transform: v => coerceNumberProperty(v, 40) as OpticalSizeNumber,\r\n });\r\n\r\n readonly fontVariationSettings = computed<string>(() => {\r\n //map values to different properties defined by google icons\r\n const propObject = {\r\n FILL: isDefined(this.filled()) ? Number(this.filled()) : undefined,\r\n wght: this.weight(),\r\n GRAD: this.grade(),\r\n opsz: this.opticalSize(),\r\n };\r\n //map the object to an array of strings\r\n const propObjectAsArray = Object.entries(propObject) //object to array\r\n .filter(v => isDefined(v[1])) //filter undefined values\r\n .map(v => `\"${v[0]}\" ${v[1]}`) //map key-value pairs to strings\r\n .flat(); //flatten\r\n\r\n //create the final string only if any of the properties are defined\r\n return propObjectAsArray.length === 0 ? '' : ['font-variation-settings: ', propObjectAsArray.join(', ')].join('');\r\n });\r\n\r\n readonly contentWrapper = viewChild<ElementRef<HTMLElement>>('contentWrapperEl');\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.icon() && !this.contentWrapper()?.nativeElement.innerText) {\r\n console.warn(`ARD-FT9000: Using <ard-icon> without specifying the [icon] field.`);\r\n }\r\n }\r\n}\r\n","<span\r\n class=\"ard-icon material-symbols-outlined\"\r\n [attr.aria-hidden]=\"ariaLabel() !== undefined\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [style]=\"fontVariationSettings()\"\r\n>\r\n {{ icon() ?? contentWrapperEl.innerText | icon }}\r\n</span>\r\n\r\n<div\r\n #contentWrapperEl\r\n class=\"ard-icon-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n OnDestroy,\r\n OnInit,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n input,\r\n model,\r\n viewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isAnyString, isDefined } from 'simple-bool';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport {\r\n ArdPasswordInputPlaceholderTemplateDirective,\r\n ArdPasswordInputPrefixTemplateDirective,\r\n ArdPasswordInputRevealButtonTemplateDirective,\r\n ArdPasswordInputSuffixTemplateDirective,\r\n} from './password-input.directives';\r\nimport { PasswordInputRevealButtonContext } from './password-input.types';\r\n\r\n@Component({\r\n selector: 'ard-password-input',\r\n templateUrl: './password-input.component.html',\r\n styleUrls: ['./password-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumPasswordInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumPasswordInputComponent extends _NgModelComponentBase implements ControlValueAccessor, OnInit, OnDestroy {\r\n //! input view\r\n readonly textInputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n ngOnInit(): void {\r\n this._setInputAttributes();\r\n }\r\n\r\n readonly placeholder = input<string>('');\r\n readonly inputId = input<Nullable<string>>();\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplate = contentChild(ArdPasswordInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdPasswordInputSuffixTemplateDirective);\r\n\r\n //! placeholder\r\n readonly placeholderTemplate = contentChild(ArdPasswordInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed(() => !!this.placeholder() && !this.value());\r\n\r\n //! revealing\r\n readonly revealable = input<boolean, any>(true, { transform: v => coerceBooleanProperty(v) });\r\n readonly holdToReveal = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly autoHideTimeoutMs = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n readonly revealed = model<boolean>(false);\r\n\r\n private _hideTimeout: NodeJS.Timeout | null = null;\r\n toggleReveal(newState = !this.revealed()): void {\r\n this.revealed.set(newState);\r\n\r\n if (this._hideTimeout) {\r\n clearTimeout(this._hideTimeout);\r\n }\r\n const timeout = this.autoHideTimeoutMs();\r\n if (timeout && newState) {\r\n this._hideTimeout = setTimeout(() => this.revealed.set(false), timeout);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._hideTimeout) {\r\n clearTimeout(this._hideTimeout);\r\n }\r\n }\r\n\r\n readonly revealTemplate = contentChild(ArdPasswordInputRevealButtonTemplateDirective);\r\n\r\n readonly revealButtonContext = computed(\r\n (): PasswordInputRevealButtonContext => ({\r\n $implicit: this.revealed(),\r\n })\r\n );\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.revealable() ? 'ard-revealable' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n if (!isAnyString(v) && isDefined(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(\r\n `ARD-WA0020: Trying to set <ard-password-input>'s value to \"${v}\" (of type ${typeof v}), expected string or null.`\r\n )\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n return;\r\n }\r\n this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | null | undefined): boolean {\r\n const oldVal = this.value();\r\n this.value.set(v);\r\n return oldVal !== v;\r\n }\r\n //! value two-way binding\r\n readonly value = model<Nullable<string>>();\r\n\r\n //! event handlers\r\n onInput(newVal: string): void {\r\n const valueHasChanged = this._writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitChange();\r\n }\r\n protected _emitChange(): void {\r\n const v = this.value();\r\n this._onChangeRegistered?.(v);\r\n }\r\n //focus, blur, change\r\n onChange(event: Event): void {\r\n event.stopPropagation();\r\n this._emitChange();\r\n }\r\n\r\n // copy\r\n onCopy(event: ClipboardEvent): void {\r\n const textInputEl = this.textInputEl();\r\n const v = this.value();\r\n if (\r\n v &&\r\n textInputEl &&\r\n //does the selection cover the entire input\r\n ((textInputEl.nativeElement.selectionStart === 0 &&\r\n textInputEl.nativeElement.selectionEnd === textInputEl.nativeElement.value.length) ||\r\n //or is zero-wide\r\n textInputEl.nativeElement.selectionStart === textInputEl.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', v);\r\n event.preventDefault();\r\n }\r\n }\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.textInputEl()?.nativeElement;\r\n if (!input) return;\r\n\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex()),\r\n ...this.inputAttrs(),\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-password-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value()\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n [type]=\"!revealable() || !revealed() ? 'password' : 'text'\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n [class.ard-revealed]=\"revealable() && revealed()\"\r\n />\r\n </div>\r\n\r\n @if (revealable()) {\r\n <button\r\n class=\"ard-reveal-button\"\r\n type=\"button\"\r\n (click)=\"!holdToReveal() && toggleReveal()\"\r\n (mousedown)=\"holdToReveal() && revealed.set(true)\"\r\n (mouseup)=\"holdToReveal() && revealed.set(false)\"\r\n >\r\n <ng-template\r\n #defaultRevealTemplate\r\n let-revealed\r\n >\r\n <ard-icon [icon]=\"revealed ? 'visibility' : 'visibility_off'\"></ard-icon>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"revealTemplate()?.template || defaultRevealTemplate\"\r\n [ngTemplateOutletContext]=\"revealButtonContext()\"\r\n />\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumIconComponent } from './icon.component';\nimport { ArdiumIconPipe } from './icon.pipe';\n\n@NgModule({\n declarations: [ArdiumIconComponent, ArdiumIconPipe],\n imports: [CommonModule],\n exports: [ArdiumIconComponent, ArdiumIconPipe],\n})\nexport class ArdiumIconModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumPasswordInputComponent } from './password-input.component';\nimport {\n ArdPasswordInputPlaceholderTemplateDirective,\n ArdPasswordInputPrefixTemplateDirective,\n ArdPasswordInputRevealButtonTemplateDirective,\n ArdPasswordInputSuffixTemplateDirective,\n} from './password-input.directives';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\nimport { ArdiumIconModule } from '../../icon/icon.module';\n\n@NgModule({\n declarations: [\n ArdiumPasswordInputComponent,\n ArdPasswordInputPlaceholderTemplateDirective,\n ArdPasswordInputPrefixTemplateDirective,\n ArdPasswordInputSuffixTemplateDirective,\n ArdPasswordInputRevealButtonTemplateDirective,\n ],\n imports: [CommonModule, ArdiumFormFieldFrameModule, ArdiumIconModule],\n exports: [\n ArdiumPasswordInputComponent,\n ArdPasswordInputPlaceholderTemplateDirective,\n ArdPasswordInputPrefixTemplateDirective,\n ArdPasswordInputSuffixTemplateDirective,\n ArdPasswordInputRevealButtonTemplateDirective,\n ],\n})\nexport class ArdiumPasswordInputModule {}\n","\r\n\r\nexport const ButtonType = {\r\n Button: 'button',\r\n Submit: 'submit',\r\n Reset: 'reset',\r\n} as const;\r\nexport type ButtonType = typeof ButtonType[keyof typeof ButtonType];","/**\n * General button appearance. Controls which parts of the button can be colored.\n *\n * @see {@link ButtonColoringMode}\n */\nexport const ButtonAppearance = {\n /**\n * No border and no background. Text and icon are colored.\n */\n Transparent: 'transparent',\n /**\n * No border, but with text shadow. Text, icon, and background are colored.\n */\n Raised: 'raised',\n /**\n * No border, but with text shadow. White background. Text and icon are colored.\n */\n RaisedStrong: 'raised-strong',\n /**\n * White background. Text and icon are colored.\n */\n Outlined: 'outlined',\n /**\n * White background. Text, icon, and border may be colored.\n *\n * Background becomes colored on hover/focus.\n */\n OutlinedStrong: 'outlined-strong',\n /**\n * No border. Text, icon, and background are colored.\n */\n Flat: 'flat',\n} as const;\nexport type ButtonAppearance = (typeof ButtonAppearance)[keyof typeof ButtonAppearance];\n\nexport const ButtonVariant = {\n /**\n * Basic, rectangular button.\n */\n Rounded: 'rounded',\n /**\n * Pill-shaped button.\n */\n Pill: 'pill',\n /**\n * Basic, rectangular button with sharp corners.\n */\n Sharp: 'sharp',\n} as const;\nexport type ButtonVariant = (typeof ButtonVariant)[keyof typeof ButtonVariant];\n\n/**\n * **F**loating **A**ction **B**utton size.\n */\nexport const FABSize = {\n Standard: 'standard',\n Small: 'small',\n} as const;\nexport type FABSize = (typeof FABSize)[keyof typeof FABSize];\n","import { Directive, Signal, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ButtonAppearance } from './general-button.types';\r\n\r\n@Directive()\r\nexport abstract class _ButtonBase extends _FocusableComponentBase {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! button settings\r\n readonly appearance = input<ButtonAppearance>(ButtonAppearance.Raised);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly lightColoring = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n abstract readonly ngClasses: Signal<string>;\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleOneAxisAlignment } from '../../types/alignment.types';\r\nimport { ButtonType } from '../../types/button.types';\r\nimport { _ButtonBase } from '../_button-base';\r\nimport { ButtonVariant } from '../general-button.types';\r\n\r\n@Component({\r\n selector: 'ard-button',\r\n templateUrl: './button.component.html',\r\n styleUrls: ['./button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumButtonComponent extends _ButtonBase {\r\n readonly icon = input<string>('');\r\n\r\n readonly type = input<ButtonType>(ButtonType.Button);\r\n\r\n //! button settings\r\n readonly variant = input<ButtonVariant>(ButtonVariant.Rounded);\r\n readonly alignIcon = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n\r\n readonly vertical = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-align-${this.alignIcon()}`,\r\n this.lightColoring() ? `ard-light-coloring` : '',\r\n this.compact() ? 'ard-compact' : '',\r\n this.vertical() ? 'ard-button-vertical' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n #buttonElement\r\n class=\"ard-button\"\r\n [type]=\"type()\"\r\n [ngClass]=\"ngClasses()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n @if (icon()) {\r\n <div class=\"ard-button-icon\">\r\n {{ icon() }}\r\n </div>\r\n }\r\n <div class=\"ard-button-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumButtonComponent } from './button.component';\n\n@NgModule({\n declarations: [ArdiumButtonComponent],\n imports: [CommonModule],\n exports: [ArdiumButtonComponent],\n})\nexport class ArdiumButtonModule {}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-number-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdNumberInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n effect,\r\n forwardRef,\r\n input,\r\n output,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { roundToPrecision } from 'more-rounding';\r\nimport { isDefined } from 'simple-bool';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { ButtonAppearance, ButtonVariant } from '../../buttons/general-button.types';\r\nimport { OneAxisAlignment } from '../../types/alignment.types';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { NumberInputModel, NumberInputModelHost } from '../input-utils';\r\nimport { ArdNumberInputPlaceholderTemplateDirective } from './number-input.directives';\r\n\r\n@Component({\r\n selector: 'ard-number-input',\r\n templateUrl: './number-input.component.html',\r\n styleUrls: ['./number-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumNumberInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumNumberInputComponent\r\n extends _NgModelComponentBase\r\n implements ControlValueAccessor, NumberInputModelHost, AfterViewInit\r\n{\r\n //! input view\r\n readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n protected readonly inputModel = new NumberInputModel(this);\r\n private _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._setInputAttributes();\r\n this._wasViewInit = true;\r\n //set the value\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n delete this._valueBeforeInit;\r\n }\r\n }\r\n\r\n readonly inputId = input<Nullable<string>>();\r\n\r\n //! placeholder\r\n readonly placeholder = input<Nullable<string>>();\r\n\r\n readonly placeholderTemplate = contentChild(ArdNumberInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed<boolean>(() => !!this.placeholder() && !this.inputModel.stringValue());\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly alignText = input<OneAxisAlignment>(OneAxisAlignment.Middle);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string => {\r\n return [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-text-align-${this.alignText()}`,\r\n `ard-quick-change-${this.noButtons}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ');\r\n });\r\n\r\n readonly buttonVariant = computed((): ButtonVariant => {\r\n if (this.variant() === FormElementVariant.Rounded) return ButtonVariant.Rounded;\r\n if (this.variant() === FormElementVariant.Pill) return ButtonVariant.Pill;\r\n if (this.variant() === FormElementVariant.Sharp) return ButtonVariant.Sharp;\r\n return ButtonVariant.Rounded;\r\n });\r\n readonly buttonAppearance = computed<ButtonAppearance>(() => {\r\n if (this.appearance() === FormElementAppearance.Outlined && this.variant() !== FormElementVariant.Pill) {\r\n return ButtonAppearance.Outlined;\r\n }\r\n return ButtonAppearance.Transparent;\r\n });\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n this.inputModel.writeValue(v);\r\n }\r\n\r\n //! value two-way binding\r\n protected _valueBeforeInit?: string | null = '0';\r\n @Input()\r\n set value(v: string | number | null) {\r\n if (typeof v === 'number') v = v.toString();\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.writeValue(v);\r\n }\r\n readonly valueChange = output<number | null>();\r\n\r\n constructor() {\r\n super();\r\n\r\n effect(() => {\r\n const v = this.inputModel.numberValue();\r\n this.valueChange.emit(v);\r\n this._onChangeRegistered?.(v);\r\n });\r\n }\r\n\r\n //! event emitters\r\n readonly inputEvent = output<number | null>({ alias: 'input' });\r\n readonly changeEvent = output<number | null>({ alias: 'change' });\r\n readonly clearEvent = output<MouseEvent>({ alias: 'clear' });\r\n readonly quickChangeEvent = output<{\r\n readonly direction: 1 | -1;\r\n readonly value: number;\r\n }>({ alias: 'quickChange' });\r\n\r\n //! min/max and number type\r\n readonly min = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) });\r\n readonly max = input<number, any>(Infinity, { transform: v => coerceNumberProperty(v, Infinity) });\r\n\r\n readonly allowFloat = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! incerement/decrement buttons\r\n readonly noButtons = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly stepSize = input<number, any>(1, {\r\n transform: v => {\r\n const newValue = coerceNumberProperty(v, 1);\r\n if (newValue === 0) throw new Error(`ARD-FT0071a: Cannot set <ard-number-input>'s [stepSize] to 0.`);\r\n if (newValue < 0)\r\n throw new Error(`ARD-FT0071b: Cannot set <ard-number-input>'s [stepSize] to a negative value, got \"${newValue}\".`);\r\n return newValue;\r\n },\r\n });\r\n\r\n onQuickChangeButtonClick(direction: 1 | -1, event?: MouseEvent): void {\r\n let num = this.inputModel.numberValue();\r\n if (!num) num = 0;\r\n\r\n if (direction === 1 && num >= this.max()) return;\r\n if (direction === -1 && num <= this.min()) return;\r\n\r\n if (event) event.stopPropagation();\r\n\r\n const newValue = num + this.stepSize() * direction;\r\n //round to 9 decimal places to avoid floating point arithmetic errors\r\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\r\n const newValuePrecise = roundToPrecision(newValue, 9);\r\n\r\n this.writeValue(newValuePrecise);\r\n this.quickChangeEvent.emit({ direction, value: newValuePrecise });\r\n this._emitChange();\r\n\r\n this._focusInputIfCantQuickChange();\r\n }\r\n private _focusInputIfCantQuickChange(): void {\r\n if (!this.canDecrement() || !this.canIncrement()) this.focus();\r\n }\r\n\r\n canIncrement(): boolean {\r\n const num = this.inputModel.numberValue();\r\n return !isDefined(num) || num < this.max();\r\n }\r\n canDecrement(): boolean {\r\n const num = this.inputModel.numberValue();\r\n return !isDefined(num) || num > this.min();\r\n }\r\n\r\n //! event handlers\r\n onInput(newVal: string): void {\r\n const valueHasChanged = this.inputModel.writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitInput();\r\n }\r\n protected _emitInput(): void {\r\n this.inputEvent.emit(this.inputModel.numberValue());\r\n this._emitChange();\r\n }\r\n\r\n //focus, blur, change\r\n onFocusMaster(event: FocusEvent): void {\r\n this.onFocus(event);\r\n }\r\n onBlurMaster(event: FocusEvent): void {\r\n this.onBlur(event);\r\n }\r\n //change\r\n onChange(event: Event): void {\r\n event.stopPropagation();\r\n this._emitChange();\r\n }\r\n protected _emitChange(): void {\r\n const v = this.inputModel.numberValue();\r\n this.changeEvent.emit(v);\r\n }\r\n\r\n //smart focus\r\n onMouseup(): void {\r\n const selection = window.getSelection();\r\n if (selection && selection.type === 'Range') return;\r\n\r\n this.focus();\r\n }\r\n\r\n // copy\r\n onCopy(event: ClipboardEvent): void {\r\n if (\r\n this.value &&\r\n //does the selection cover the entire input\r\n ((this.inputEl()?.nativeElement.selectionStart === 0 &&\r\n this.inputEl()?.nativeElement.selectionEnd === this.inputEl()?.nativeElement.value.length) ||\r\n //or is zero-wide\r\n this.inputEl()?.nativeElement.selectionStart === this.inputEl()?.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', String(this.value));\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.inputEl()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex),\r\n ...this.inputAttrs,\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"ard-number-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (mouseup)=\"onMouseup()\"\r\n>\r\n @if (!noButtons()) {\r\n <ard-button\r\n class=\"ard-quick-change-button decrement\"\r\n [variant]=\"buttonVariant()\"\r\n [appearance]=\"buttonAppearance()\"\r\n color=\"none\"\r\n [disabled]=\"!canDecrement()\"\r\n [tabIndex]=\"!canDecrement() ? -1 : tabIndex()\"\r\n (click)=\"onQuickChangeButtonClick(-1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(-1)\"\r\n ardHoldSpaceKey\r\n >\r\n -\r\n </ard-button>\r\n }\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template\r\n #defaultPlaceholderTemplate\r\n let-plchldr\r\n >\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n @if (!noButtons()) {\r\n <ard-button\r\n class=\"ard-quick-change-button increment\"\r\n [variant]=\"buttonVariant()\"\r\n [appearance]=\"buttonAppearance()\"\r\n color=\"none\"\r\n [disabled]=\"!canIncrement()\"\r\n [tabIndex]=\"!canIncrement() ? -1 : tabIndex()\"\r\n (click)=\"onQuickChangeButtonClick(1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(1)\"\r\n ardHoldSpaceKey\r\n >\r\n +\r\n </ard-button>\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumHoldEventModule } from '@ardium-ui/devkit';\nimport { ArdiumButtonModule } from '../../buttons/button/button.module';\nimport { ArdiumNumberInputComponent } from './number-input.component';\nimport { ArdNumberInputPlaceholderTemplateDirective } from './number-input.directives';\n\n@NgModule({\n declarations: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective],\n imports: [CommonModule, ArdiumHoldEventModule, ArdiumButtonModule],\n exports: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective],\n})\nexport class ArdiumNumberInputModule {}\n","import {\r\n AfterViewInit,\r\n Directive,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n input,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { isDefined } from 'simple-bool';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\n\r\n@Directive()\r\nexport abstract class _FileInputComponentBase extends _NgModelComponentBase implements OnInit, AfterViewInit {\r\n abstract readonly componentId: string;\r\n\r\n readonly fileInputEl = viewChild<ElementRef<HTMLInputElement>>('fileInput');\r\n\r\n readonly htmlId = input<string>(crypto.randomUUID());\r\n readonly name = input<string>('');\r\n\r\n ngOnInit(): void {\r\n if (!(window.File && window.FileReader && window.Blob)) {\r\n console.error(\r\n new Error(`ARD-${this.componentId}0: Cannot use Ardium UI file features because this browser does not support them!`)\r\n );\r\n }\r\n }\r\n protected _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._wasViewInit = true;\r\n\r\n this._updateElementValue();\r\n }\r\n\r\n //! appearance\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! settings\r\n readonly multiple = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly blockAfterUpload = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n get shouldBeBlocked(): boolean {\r\n return this.blockAfterUpload() && isDefined(this.value);\r\n }\r\n\r\n //! value\r\n protected _value: File[] | null = null;\r\n @Input()\r\n get value(): File[] | null {\r\n return this._value;\r\n }\r\n set value(v: File | File[] | null) {\r\n this.writeValue(v);\r\n }\r\n\r\n readonly valueChange = output<File[] | null>();\r\n readonly changeEvent = output<File[] | null>({ alias: 'change' });\r\n readonly dragFilesEvent = output<File[] | null>({ alias: 'dragFiles' });\r\n\r\n protected _valueBeforeInit: File[] | null = null;\r\n writeValue(v: File | File[] | null): void {\r\n this._writeValue(v, false);\r\n }\r\n protected _writeValue(v: File | File[] | null, emitEvents = true): void {\r\n if (v instanceof File) {\r\n v = [v];\r\n }\r\n\r\n this.currentViewState.set('uploaded');\r\n this._value = v;\r\n\r\n if (this._wasViewInit) this._updateElementValue();\r\n\r\n if (emitEvents) {\r\n this._emitChange();\r\n }\r\n }\r\n\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n this.changeEvent.emit(v);\r\n }\r\n\r\n openBrowseDialog(): void {\r\n this.fileInputEl()?.nativeElement.click();\r\n }\r\n\r\n //! temporary value\r\n //for drag event handling\r\n protected _draggedFiles: number | null = null;\r\n\r\n //! view state\r\n readonly currentViewState = signal<'idle' | 'dragover' | 'uploaded'>('idle');\r\n private _beforeDragoverState: 'idle' | 'uploaded' = 'idle';\r\n\r\n //! event handlers\r\n onDragover(event: DragEvent): void {\r\n event.preventDefault();\r\n if (this.shouldBeBlocked) {\r\n if (!event.dataTransfer) return;\r\n\r\n event.dataTransfer.dropEffect = 'none';\r\n return;\r\n }\r\n if (this.currentViewState() === 'dragover') return;\r\n\r\n this._draggedFiles = this._countDragenterFiles(event.dataTransfer);\r\n\r\n if (!this._draggedFiles) return;\r\n\r\n this._beforeDragoverState = this.currentViewState() as 'idle' | 'uploaded';\r\n this.currentViewState.set('dragover');\r\n }\r\n onDragleave(): void {\r\n if (this.shouldBeBlocked) return;\r\n if (this.currentViewState() !== 'dragover') return;\r\n\r\n this.currentViewState.set(this._beforeDragoverState);\r\n }\r\n onDrop(event: DragEvent): void {\r\n event.preventDefault();\r\n\r\n if (this.shouldBeBlocked) return;\r\n\r\n const filelist = event.dataTransfer?.files;\r\n if (!filelist) {\r\n this.currentViewState.set('idle');\r\n return;\r\n }\r\n const files = Array.from(filelist);\r\n if (!files) {\r\n this.currentViewState.set('idle');\r\n return;\r\n }\r\n\r\n this.currentViewState.set('uploaded');\r\n this._writeValue(files);\r\n }\r\n onInputChange(): void {\r\n const files = Array.from(this.fileInputEl()?.nativeElement.files ?? []);\r\n if (files.length === 0) {\r\n this._writeValue(null);\r\n this.currentViewState.set('idle');\r\n return;\r\n }\r\n this._writeValue(files);\r\n this.currentViewState.set('uploaded');\r\n }\r\n\r\n //! helpers\r\n protected _countDragenterFiles(data: DataTransfer | null): number | null {\r\n if (!data) return null;\r\n\r\n return Array.from(data.items).filter(item => item.kind === 'file').length;\r\n }\r\n\r\n protected _updateElementValue(): void {\r\n const v = this.value;\r\n\r\n const inputEl = this.fileInputEl()?.nativeElement;\r\n if (!inputEl) return;\r\n if (!v) {\r\n inputEl.files = null;\r\n return;\r\n }\r\n\r\n const dataTransfer = new DataTransfer();\r\n for (const file of v) {\r\n dataTransfer.items.add(file);\r\n }\r\n inputEl.files = dataTransfer.files;\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\nimport { FileInputBrowseContext, FileInputFilesContext } from '../file-input-types';\n\n@Directive({\n selector: 'ard-file-drop-area > ng-template[ard-idle-content-tmp]',\n})\nexport class ArdiumFileDropAreaIdleContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputBrowseContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-drop-area > ng-template[ard-dragover-content-tmp]',\n})\nexport class ArdiumFileDropAreaDragoverContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-drop-area > ng-template[ard-dropped-content-tmp]',\n})\nexport class ArdiumFileDropAreaUploadedContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n OnInit,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { FormElementVariant } from '../../types/theming.types';\r\nimport { _FileInputComponentBase } from '../file-input-base';\r\nimport { FileInputBrowseContext, FileInputFileAmountContext, FileInputFilesContext } from '../file-input-types';\r\nimport {\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n} from './file-drop-area.directives';\r\n\r\n@Component({\r\n selector: 'ard-file-drop-area',\r\n templateUrl: './file-drop-area.component.html',\r\n styleUrls: ['./file-drop-area.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumFileDropAreaComponent extends _FileInputComponentBase implements OnInit {\r\n readonly componentId = '010';\r\n\r\n //! appearance\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [`ard-variant-${this.variant()}`, `ard-color-${this.color()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! triggering file dialog\r\n protected _wasMousedownOnElement: true | null = null;\r\n onMousedown(): void {\r\n this._wasMousedownOnElement = true;\r\n }\r\n onMouseup(): void {\r\n if (!this._wasMousedownOnElement) return;\r\n this._wasMousedownOnElement = null;\r\n\r\n this.openBrowseDialog();\r\n }\r\n\r\n //! templates\r\n @ContentChild(ArdiumFileDropAreaIdleContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n idleTemplate: TemplateRef<FileInputBrowseContext> | null = null;\r\n @ContentChild(ArdiumFileDropAreaDragoverContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n dragoverTemplate: TemplateRef<FileInputFilesContext> | null = null;\r\n @ContentChild(ArdiumFileDropAreaUploadedContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n uploadedTemplate: TemplateRef<FileInputFilesContext> | null = null;\r\n\r\n getIdleContext(): FileInputBrowseContext {\r\n return {\r\n browse: () => {\r\n this.openBrowseDialog();\r\n },\r\n };\r\n }\r\n getDragoverContext(): FileInputFileAmountContext {\r\n return {\r\n amount: this._draggedFiles!,\r\n };\r\n }\r\n getUploadedContext(): FileInputFilesContext {\r\n const files = this.value!;\r\n return {\r\n $implicit: files,\r\n amount: files.length,\r\n files,\r\n };\r\n }\r\n}\r\n","<div\r\n class=\"ard-file-drop-area\"\r\n (ardClickOutside)=\"onDragleave()\"\r\n (dragleave)=\"onDragleave()\"\r\n (dragover)=\"onDragover($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n <div class=\"ard-file-drop-area-outline\">\r\n <div class=\"ard-file-drop-area-content\">\r\n @if (currentViewState() === 'idle') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"idleTemplate ?? defaultIdleTemplate\"\r\n [ngTemplateOutletContext]=\"getIdleContext()\"\r\n />\r\n }\r\n <ng-template\r\n *ngIf=\"currentViewState() === 'dragover'\"\r\n [ngTemplateOutlet]=\"dragoverTemplate ?? defaultDragoverTemplate\"\r\n [ngTemplateOutletContext]=\"getDragoverContext()\"\r\n ></ng-template>\r\n <ng-template\r\n *ngIf=\"currentViewState() === 'uploaded'\"\r\n [ngTemplateOutlet]=\"uploadedTemplate ?? defaultUploadedTemplate\"\r\n [ngTemplateOutletContext]=\"getUploadedContext()\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n<input\r\n #fileInput\r\n class=\"ard-file-drop-area-input-element\"\r\n type=\"file\"\r\n [name]=\"name()\"\r\n [multiple]=\"multiple()\"\r\n [id]=\"htmlId()\"\r\n (change)=\"onInputChange()\"\r\n/>\r\n\r\n<ng-template\r\n #defaultIdleTemplate\r\n let-browse=\"browse\"\r\n>\r\n <ard-icon class=\"ard-file-drop-area-icon\">upload</ard-icon>\r\n <strong class=\"ard-file-drop-area-drop-text\">\r\n <span *ngIf=\"!multiple\">Drag & Drop a file</span>\r\n <span *ngIf=\"multiple\">Drag & Drop files</span>\r\n here\r\n </strong>\r\n <span class=\"ard-file-drop-area-or-text\">or</span>\r\n <ard-button\r\n class=\"ard-file-drop-area-browse-button\"\r\n appearance=\"transparent\"\r\n [compact]=\"compact()\"\r\n [variant]=\"variant()\"\r\n [color]=\"color()\"\r\n (click)=\"browse()\"\r\n >Browse files</ard-button\r\n >\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultDragoverTemplate\r\n let-amount=\"amount\"\r\n>\r\n <span class=\"ard-file-drop-area-dragover-text\">Drop </span>\r\n <span class=\"ard-file-drop-area-dragover-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-drop-area-dragover-text\"> here to upload. </span>\r\n @if (amount > 1 && !multiple()) {\r\n <strong class=\"ard-file-drop-area-dragover-warning\"> Only the first file will be uploaded! </strong>\r\n }\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultUploadedTemplate\r\n let-amount=\"amount\"\r\n let-files=\"files\"\r\n>\r\n <div class=\"ard-file-drop-area-uploaded-container\">\r\n <div class=\"ard-file-drop-area-uploaded-message\">\r\n <span class=\"ard-file-drop-area-uploaded-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-drop-area-uploaded-text\"> uploaded.</span>\r\n </div>\r\n <div class=\"ard-file-drop-area-uploaded-files\">\r\n @for (file of files; track $index) {\r\n <div class=\"ard-file-drop-area-file\">\r\n <ard-icon>draft</ard-icon>\r\n <div class=\"ard-file-drop-area-file-info\">\r\n <span class=\"ard-file-drop-area-filename\">\r\n <span class=\"ard-file-drop-area-filename-name\">{{ file | filename }}</span>\r\n <span class=\"ard-file-drop-area-filename-ext\">{{ file | fileext: true }}</span>\r\n </span>\r\n <span class=\"ard-file-drop-area-filesize\">{{ file.size | filesize }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport {\r\n ArdiumClickOutsideEventModule,\r\n ArdiumFileextPipeModule,\r\n ArdiumFilenamePipeModule,\r\n ArdiumFilesizePipeModule,\r\n} from '@ardium-ui/devkit';\r\nimport { ArdiumButtonModule } from '../../buttons/button/button.module';\r\nimport { ArdiumIconModule } from '../../icon/icon.module';\r\nimport { ArdiumFileDropAreaComponent } from './file-drop-area.component';\r\nimport {\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n} from './file-drop-area.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumFileDropAreaComponent,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ArdiumButtonModule,\r\n ArdiumIconModule,\r\n ArdiumFilesizePipeModule,\r\n ArdiumFilenamePipeModule,\r\n ArdiumFileextPipeModule,\r\n ArdiumClickOutsideEventModule,\r\n ],\r\n exports: [\r\n ArdiumFileDropAreaComponent,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumFileDropAreaModule {}\r\n","import { Directive, TemplateRef } from '@angular/core';\nimport { ColorPickerColorReferenceContext, ColorPickerIndicatorContext } from '../../color/color-picker/color-picker.types';\nimport { ColorInputActionButtonsContext } from './color-input.types';\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdColorInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-prefix-tmp]' })\nexport class ArdColorInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-suffix-tmp]' })\nexport class ArdColorInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n//! picker directives\n@Directive({\n selector: 'ard-color-input > ng-template[ard-shade-indicator-tmp]',\n})\nexport class ArdColorInputShadeIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-hue-indicator-tmp]' })\nexport class ArdColorInputHueIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({\n selector: 'ard-color-input > ng-template[ard-opacity-indicator-tmp]',\n})\nexport class ArdColorInputOpacityIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({\n selector: 'ard-color-input > ng-template[ard-color-reference-tmp]',\n})\nexport class ArdColorInputColorReferenceTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerColorReferenceContext>) {}\n}\n\n//! action buttons\n@Directive({\n selector: 'ard-color-picker > ng-template[ard-action-buttons-tmp]',\n})\nexport class ArdColorInputActionButtonsTemplateDirective {\n constructor(public template: TemplateRef<ColorInputActionButtonsContext>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { FileInputBrowseContext, FileInputFilesContext } from '../file-input-types';\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdFileInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-prefix-tmp]' })\nexport class ArdFileInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-suffix-tmp]' })\nexport class ArdFileInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-idle-content-tmp]' })\nexport class ArdiumFileInputIdleContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputBrowseContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-input > ng-template[ard-dragover-content-tmp]',\n})\nexport class ArdiumFileInputDragoverContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-input > ng-template[ard-dropped-content-tmp]',\n})\nexport class ArdiumFileInputUploadedContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n forwardRef,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ArdColorInputPlaceholderTemplateDirective } from '../../inputs/color-input/color-input.directives';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { _FileInputComponentBase } from '../file-input-base';\r\nimport { FileInputBrowseContext, FileInputFileAmountContext, FileInputFilesContext } from '../file-input-types';\r\nimport {\r\n ArdFileInputPrefixTemplateDirective,\r\n ArdFileInputSuffixTemplateDirective,\r\n ArdiumFileInputDragoverContentTemplateDirective,\r\n ArdiumFileInputIdleContentTemplateDirective,\r\n ArdiumFileInputUploadedContentTemplateDirective,\r\n} from './file-input.directives';\r\n\r\n@Component({\r\n selector: 'ard-file-input',\r\n templateUrl: './file-input.component.html',\r\n styleUrls: ['./file-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumFileInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumFileInputComponent extends _FileInputComponentBase {\r\n readonly DEFAULTS = {\r\n clearButtonTitle: 'Clear',\r\n };\r\n\r\n readonly componentId = '011';\r\n\r\n //! appearance\r\n //all handled in ard-form-field-frame component\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! placeholder\r\n readonly placeholder = input<string>('');\r\n\r\n //! root element classes\r\n readonly ngClasses = computed<string>(() =>\r\n [`ard-color-${this.color()}`, `ard-state-${this.currentViewState()}`, this.value ? 'ard-has-value' : ''].join(' ')\r\n );\r\n\r\n @ContentChild(ArdColorInputPlaceholderTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n placeholderTemplate?: TemplateRef<any>;\r\n\r\n get shouldDisplayPlaceholder(): boolean {\r\n return Boolean(this.placeholder()) && !this.value;\r\n }\r\n\r\n //! clear button\r\n readonly clearable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly clearButtonTitle = input<string>(this.DEFAULTS.clearButtonTitle);\r\n\r\n get shouldShowClearButton(): boolean {\r\n return this.clearable() && !this.disabled() && Boolean(this.value);\r\n }\r\n onClearButtonClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.clear();\r\n this.focus();\r\n }\r\n\r\n //! clear function\r\n clear(): void {\r\n if (!this.clearable()) return;\r\n\r\n this.writeValue(null);\r\n this._emitChange();\r\n this.clearEvent.emit();\r\n }\r\n\r\n readonly clearEvent = output();\r\n\r\n //! state\r\n readonly touched = signal<boolean>(false);\r\n\r\n //! prefix & suffix\r\n @ContentChild(ArdFileInputPrefixTemplateDirective, { read: TemplateRef })\r\n prefixTemplate?: TemplateRef<any>;\r\n @ContentChild(ArdFileInputSuffixTemplateDirective, { read: TemplateRef })\r\n suffixTemplate?: TemplateRef<any>;\r\n //! templates\r\n @ContentChild(ArdiumFileInputIdleContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n idleTemplate: TemplateRef<FileInputBrowseContext> | null = null;\r\n @ContentChild(ArdiumFileInputDragoverContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n dragoverTemplate: TemplateRef<FileInputFilesContext> | null = null;\r\n @ContentChild(ArdiumFileInputUploadedContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n uploadedTemplate: TemplateRef<FileInputFilesContext> | null = null;\r\n\r\n getIdleContext(): FileInputBrowseContext {\r\n return {\r\n browse: () => {\r\n this.openBrowseDialog();\r\n },\r\n };\r\n }\r\n getDragoverContext(): FileInputFileAmountContext {\r\n return {\r\n amount: this._draggedFiles!,\r\n };\r\n }\r\n getUploadedContext(): FileInputFilesContext {\r\n const files = this.value!;\r\n return {\r\n $implicit: files,\r\n amount: files.length,\r\n files,\r\n };\r\n }\r\n}\r\n","<ard-form-field-frame\r\n class=\"ard-file-input-form-field-frame\"\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate\"\r\n [suffixTemplate]=\"suffixTemplate\"\r\n (dragover)=\"onDragover($event)\"\r\n (dragleave)=\"onDragleave()\"\r\n (drop)=\"onDrop($event)\"\r\n (ardClickOutside)=\"onDragleave()\"\r\n>\r\n <div\r\n class=\"ard-file-input\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <div class=\"ard-file-input__value\">\r\n @if (currentViewState() === 'idle') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"idleTemplate ?? defaultIdleTemplate\"\r\n [ngTemplateOutletContext]=\"getIdleContext()\"\r\n />\r\n } @if (currentViewState() === 'dragover') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"dragoverTemplate ?? defaultDragoverTemplate\"\r\n [ngTemplateOutletContext]=\"getDragoverContext()\"\r\n />\r\n } @if (currentViewState() === 'uploaded') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"uploadedTemplate ?? defaultUploadedTemplate\"\r\n [ngTemplateOutletContext]=\"getUploadedContext()\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (shouldShowClearButton) {\r\n <ard-clear-button\r\n #focusableElement\r\n [title]=\"clearButtonTitle()\"\r\n (mouseup)=\"onClearButtonClick($event)\"\r\n />\r\n } @if (!shouldBeBlocked) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-browse-button\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (click)=\"openBrowseDialog()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-icon>folder</ard-icon>\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<input\r\n #fileInput\r\n class=\"ard-file-input__input\"\r\n type=\"file\"\r\n [name]=\"name()\"\r\n [multiple]=\"multiple()\"\r\n [attr.id]=\"htmlId()\"\r\n (change)=\"onInputChange()\"\r\n/>\r\n\r\n<ng-template\r\n #defaultIdleTemplate\r\n let-browse=\"browse\"\r\n>\r\n <span class=\"ard-file-input__idle\">\r\n @if (multiple()) {\r\n <span>Upload a file</span>\r\n } @else {\r\n <span>Upload files</span>\r\n }\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultDragoverTemplate\r\n let-amount=\"amount\"\r\n>\r\n <span class=\"ard-file-input__dragover-text\">Drop </span>\r\n @if (multiple()) {\r\n <span class=\"ard-file-input__dragover-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n } @else {\r\n <span class=\"ard-file-input__dragover-amount\"> a file </span>\r\n }\r\n <span class=\"ard-file-input__dragover-text\"> here to upload </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultUploadedTemplate\r\n let-amount=\"amount\"\r\n>\r\n <div class=\"ard-file-input__uploaded\">\r\n <span class=\"ard-file-input__uploaded-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-input__uploaded-text\"> uploaded.</span>\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumFileInputComponent } from './file-input.component';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\nimport { ArdiumIconModule } from '../../icon/icon.module';\n\n@NgModule({\n declarations: [ArdiumFileInputComponent],\n imports: [CommonModule, ArdiumFormFieldFrameModule, _ClearButtonModule, ArdiumIconModule],\n exports: [ArdiumFileInputComponent],\n})\nexport class ArdiumFileInputModule {}\n","export const CaseTransformerType = {\n NoChange: 'nochange',\n Uppercase: 'uppercase',\n Lowercase: 'lowercase',\n} as const;\nexport type CaseTransformerType = (typeof CaseTransformerType)[keyof typeof CaseTransformerType];\n","import { isAnyString, isDefined, isNull } from 'simple-bool';\r\nimport { RegExpTransformer } from './input-transformers';\r\nimport { CaseTransformerType } from './input-types';\r\nimport { ElementRef, Signal, computed, signal } from '@angular/core';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\nexport interface HexInputModelHost {\r\n readonly case: Signal<CaseTransformerType>;\r\n readonly maxDigits: Signal<Nullable<number>>;\r\n readonly textInputEl: Signal<ElementRef<HTMLInputElement> | undefined>;\r\n}\r\nexport class HexInputModel {\r\n constructor(protected readonly _hostComp: HexInputModelHost) {}\r\n\r\n //! value setters/getters\r\n readonly value = signal<string | null>(null);\r\n readonly stringValue = computed<string>(() => this.value() ?? '');\r\n //value with the hash sign\r\n readonly hashSignValue = computed<string>(() => '#' + this.stringValue());\r\n\r\n //! write value handlers\r\n writeValue(v: any): boolean {\r\n if (!isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(`ARD-WA0160: Trying to set <ard-hex-input>'s value to \"${v}\" (of type ${typeof v}), expected string or null.`)\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n //normalize the value\r\n v = v ?? '';\r\n if (typeof v === 'string') v = v.replace('#', '');\r\n\r\n return this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | null): boolean {\r\n const oldVal = this.value();\r\n //constraints\r\n if (v) {\r\n v = this._applyCharactersConstraint(v);\r\n v = this._applyDigitsConstraint(v, oldVal ?? '');\r\n v = this._applyCaseTransformer(v);\r\n }\r\n //update view\r\n this.value.set(v);\r\n this._updateInputElement();\r\n return oldVal !== v;\r\n }\r\n clear(): void {\r\n this._writeValue(null);\r\n }\r\n rewriteValueAfterHostUpdate(): void {\r\n this._writeValue(this.value());\r\n }\r\n\r\n //! input element methods\r\n _updateInputElement() {\r\n const el = this._hostComp.textInputEl()?.nativeElement;\r\n if (!el) return;\r\n const caretPos = this.caretPos;\r\n el.value = this.stringValue();\r\n this.caretPos = caretPos;\r\n }\r\n get caretPos(): number {\r\n return this._hostComp.textInputEl()?.nativeElement.selectionEnd ?? this.stringValue().length;\r\n }\r\n set caretPos(pos: number) {\r\n this._hostComp.textInputEl()?.nativeElement.setSelectionRange(pos, pos);\r\n }\r\n\r\n //! constraints\r\n private _charactersRegexTransformer = new RegExpTransformer(/[^0-9a-f]/i, '');\r\n private _applyCharactersConstraint(v: string): string {\r\n const { text, caretPos } = this._charactersRegexTransformer.apply(v, '', this.caretPos);\r\n this.caretPos = caretPos;\r\n return text;\r\n }\r\n private _applyDigitsConstraint(v: string, prev: string): string {\r\n const maxLength = this._hostComp.maxDigits();\r\n if (!isDefined(maxLength)) return v;\r\n if (v.length <= maxLength) return v;\r\n if (v.length < prev.length) return v;\r\n\r\n let firstChangeIndex = 0;\r\n while (\r\n firstChangeIndex < v.length &&\r\n (!prev.charAt(firstChangeIndex) || v.charAt(firstChangeIndex) === prev.charAt(firstChangeIndex)) &&\r\n firstChangeIndex <= maxLength\r\n ) {\r\n firstChangeIndex++;\r\n }\r\n if (firstChangeIndex > maxLength) return v.substring(0, maxLength);\r\n\r\n const overflow = v.length - maxLength;\r\n this.caretPos -= overflow;\r\n return v.substring(0, firstChangeIndex) + v.substring(firstChangeIndex + overflow);\r\n }\r\n private _applyCaseTransformer(v: string): string {\r\n if (this._hostComp.case() === CaseTransformerType.Uppercase) return v.toUpperCase();\r\n if (this._hostComp.case() === CaseTransformerType.Lowercase) return v.toLowerCase();\r\n return v;\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-hex-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdHexInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-hex-input ng-template[ard-prefix-tmp]' })\nexport class ArdHexInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-hex-input ng-template[ard-suffix-tmp]' })\nexport class ArdHexInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n ElementRef,\r\n forwardRef,\r\n input,\r\n Input,\r\n output,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { HexInputModel, HexInputModelHost } from '../hex-input.model';\r\nimport { CaseTransformerType } from '../input-types';\r\nimport {\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n} from './hex-input.directives';\r\n\r\n@Component({\r\n selector: 'ard-hex-input',\r\n templateUrl: './hex-input.component.html',\r\n styleUrls: ['./hex-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumHexInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumHexInputComponent\r\n extends _NgModelComponentBase\r\n implements ControlValueAccessor, HexInputModelHost, AfterViewInit\r\n{\r\n //! input view\r\n readonly textInputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n protected readonly inputModel = new HexInputModel(this);\r\n protected _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._wasViewInit = true;\r\n this._setInputAttributes();\r\n //set the value\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n delete this._valueBeforeInit;\r\n }\r\n }\r\n\r\n readonly DEFAULTS = {\r\n clearButtonTitle: 'Clear',\r\n };\r\n\r\n readonly inputId = input<Nullable<string>>();\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplate = contentChild(ArdHexInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdHexInputSuffixTemplateDirective);\r\n\r\n //! placeholder\r\n readonly placeholder = input<Nullable<string>>();\r\n\r\n readonly placeholderTemplate = contentChild(ArdHexInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed((): boolean => Boolean(this.placeholder()) && !this.inputModel.stringValue());\r\n\r\n //! appearance\r\n //all handled in ard-form-field-frame component\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! settings\r\n readonly case = input<CaseTransformerType>(CaseTransformerType.NoChange);\r\n\r\n readonly maxDigits = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n readonly hideHash = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly showHash = computed(() => !this.hideHash());\r\n\r\n //! clear button\r\n readonly clearable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly clearButtonTitle = input<string>(this.DEFAULTS.clearButtonTitle);\r\n\r\n readonly shouldShowClearButton = computed<boolean>(\r\n () => this.clearable() && !this.disabled() && Boolean(this.inputModel?.value())\r\n );\r\n\r\n onClearButtonClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.inputModel.clear();\r\n this._emitChange();\r\n this._emitInput();\r\n this.clearEvent.emit();\r\n this.focus();\r\n }\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.inputModel.writeValue(v);\r\n }\r\n\r\n //! value two-way binding\r\n protected _valueBeforeInit?: string | null = null;\r\n @Input()\r\n set value(v: string | null) {\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.writeValue(v);\r\n }\r\n get value(): string | null {\r\n return this.inputModel?.hashSignValue();\r\n }\r\n readonly valueChange = output<string>();\r\n\r\n //! event emitters\r\n readonly inputEvent = output<string>({ alias: 'input' });\r\n readonly changeEvent = output<string>({ alias: 'change' });\r\n readonly clearEvent = output<void>({ alias: 'clear' });\r\n\r\n //! event handlers\r\n onInput(newVal: string, event: Event): void {\r\n event.stopPropagation();\r\n const valueHasChanged = this.inputModel.writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitInput();\r\n }\r\n protected _emitInput(): void {\r\n const v = this.inputModel.hashSignValue();\r\n this.inputEvent.emit(v);\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n onChange(event: Event): void {\r\n this._emitChange();\r\n event.stopPropagation();\r\n }\r\n protected _emitChange(): void {\r\n const v = this.inputModel.hashSignValue();\r\n this.changeEvent.emit(v);\r\n }\r\n\r\n override onBlur(event: FocusEvent): void {\r\n super.onBlur(event);\r\n this._emitChange();\r\n }\r\n\r\n //smart focus\r\n onMouseup(): void {\r\n const selection = window.getSelection();\r\n if (selection && selection.type === 'Range') return;\r\n\r\n this.focus();\r\n }\r\n\r\n onCopy(event: ClipboardEvent): void {\r\n if (\r\n this.value &&\r\n //does the selection cover the entire input\r\n ((this.textInputEl()?.nativeElement.selectionStart === 0 &&\r\n this.textInputEl()?.nativeElement.selectionEnd === this.textInputEl()?.nativeElement.value.length) ||\r\n //or is zero-wide\r\n this.textInputEl()?.nativeElement.selectionStart === this.textInputEl()?.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', this.value);\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.textInputEl()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex),\r\n ...this.inputAttrs,\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-hex-input\"\r\n [class.ard-has-value]=\"value\"\r\n (mouseup)=\"onMouseup()\"\r\n >\r\n <div\r\n class=\"ard-hash-container\"\r\n *ngIf=\"showHash\"\r\n >\r\n #\r\n </div>\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value, $event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumHexInputComponent } from './hex-input.component';\r\nimport {\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n} from './hex-input.directives';\r\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\r\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumHexInputComponent,\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n ],\r\n imports: [CommonModule, ArdiumFormFieldFrameModule, _ClearButtonModule],\r\n exports: [\r\n ArdiumHexInputComponent,\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumHexInputModule {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { _BooleanComponentBase } from '../../_internal/boolean-component';\r\nimport { ComponentColor } from '../../types/colors.types';\r\n\r\n@Component({\r\n selector: 'ard-radio',\r\n templateUrl: './radio.component.html',\r\n styleUrls: ['./radio.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumRadioComponent extends _BooleanComponentBase {\r\n protected readonly _changeDetector = inject(ChangeDetectorRef);\r\n\r\n readonly htmlId = input<string>(crypto.randomUUID());\r\n\r\n readonly value = input<any>();\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [`ard-color-${this.color()}`, `ard-radio-${this.selected() ? 'selected' : 'unselected'}`].join(' ')\r\n );\r\n\r\n //! event handlers\r\n onMousedown(): void {\r\n this.focus();\r\n }\r\n onMouseup(): void {\r\n this.focus();\r\n this.selected.set(true);\r\n this._emitChange();\r\n }\r\n\r\n //! radio-group access points\r\n readonly name = signal<string | null>(null);\r\n\r\n /**\r\n * Marks the radio button as needing checking for change detection.\r\n * This method is exposed because the parent radio group will directly\r\n * update bound properties of the radio button.\r\n */\r\n markForCheck() {\r\n // When group value changes, the button will not be notified. Use `markForCheck` to explicit\r\n // update radio button's status\r\n this._changeDetector.markForCheck();\r\n }\r\n}\r\n","<button\r\n #focusableElement\r\n class=\"ard-radio\"\r\n type=\"button\"\r\n [ngClass]=\"ngClasses()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (mousedown)=\"onMousedown()\"\r\n (mouseup)=\"onMouseup()\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-radio-circles\">\r\n <div class=\"ard-radio-outer-circle\"></div>\r\n <div class=\"ard-radio-inner-circle\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </div>\r\n <label [for]=\"htmlId()\">\r\n <ng-content></ng-content>\r\n </label>\r\n</button>\r\n\r\n<input\r\n class=\"ard-radio-input-element\"\r\n type=\"radio\"\r\n [name]=\"name()\"\r\n [id]=\"htmlId()\"\r\n [checked]=\"selected()\"\r\n #radio\r\n/>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n Input,\r\n OnDestroy,\r\n OutputRefSubscription,\r\n ViewEncapsulation,\r\n contentChildren,\r\n effect,\r\n forwardRef,\r\n input,\r\n model,\r\n output\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdiumRadioComponent } from './radio/radio.component';\r\n\r\n@Component({\r\n selector: 'ard-radio-group',\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[attr.tabindex]': 'null',\r\n '[attr.aria-label]': 'null',\r\n '[attr.aria-labelledby]': 'null',\r\n '[attr.aria-describedby]': 'null',\r\n role: 'radiogroup',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumRadioGroupComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumRadioGroupComponent extends _NgModelComponentBase implements AfterContentInit, OnDestroy {\r\n private readonly _radios = contentChildren<ArdiumRadioComponent>(ArdiumRadioComponent, { descendants: true });\r\n\r\n readonly htmlId = input<string>('');\r\n\r\n @HostBinding('attr.id')\r\n get _htmlIdHostAttribute() {\r\n return this.htmlId();\r\n }\r\n\r\n constructor() {\r\n super();\r\n\r\n effect(() => {\r\n this.name();\r\n this._updateRadioButtonNames();\r\n });\r\n effect(() => {\r\n this.selected();\r\n this._checkSelectedRadioButton();\r\n });\r\n effect(() => {\r\n const radios = this._radios();\r\n if (!radios) return;\r\n \r\n setTimeout(() => {\r\n this._updateRadioButtonNames();\r\n }, 0);\r\n\r\n this._destroyChildSubscriptions();\r\n\r\n //sub to child component events\r\n for (const radio of radios) {\r\n this._childEventSubs.push(\r\n radio.blurEvent.subscribe(v => {\r\n this._handleBlurEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.focusEvent.subscribe(v => {\r\n this._handleFocusEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.selectedChange.subscribe((v: boolean) => {\r\n if (!v) return;\r\n this._handleChangeEvents(radio);\r\n })\r\n );\r\n }\r\n })\r\n }\r\n\r\n //! value\r\n @Input()\r\n get value(): any | undefined {\r\n return this.selected()?.value();\r\n }\r\n set value(v: any) {\r\n this.writeValue(v);\r\n }\r\n\r\n readonly valueChange = output<any>();\r\n readonly changeEvent = output<any>({ alias: 'change' });\r\n\r\n private _valueBeforeInit: any;\r\n writeValue(v: any): void {\r\n if (this.value !== v) {\r\n if (!this._isContentInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n\r\n this._findRadioByValue(v);\r\n }\r\n setTimeout(() => {\r\n this._updateRadiosByValue();\r\n }, 0);\r\n }\r\n\r\n private _findRadioByValue(v: any): void {\r\n if (!this._radios) return;\r\n\r\n this.selected.set(this._radios().find(radio => v === radio.value()) ?? null);\r\n }\r\n\r\n /** Updates all child radios depending on the currently selected radio. */\r\n private _updateRadiosByValue(): void {\r\n if (!this._isContentInit) return;\r\n\r\n this._radios().forEach(radio => {\r\n radio.selected.set(this.value === radio.value());\r\n radio.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * The currently selected radio button. If set to a new radio button, the radio group value\r\n * will be updated to match the new selected button.\r\n */\r\n readonly selected = model<Nullable<ArdiumRadioComponent>>(null);\r\n\r\n private _checkSelectedRadioButton() {\r\n const s = this.selected();\r\n if (s && !s.selected()) {\r\n s.selected.set(true);\r\n s.markForCheck();\r\n }\r\n }\r\n\r\n //! name\r\n /** Name of the radio button group. All radio buttons inside this group will use this name. */\r\n readonly name = input<string>(crypto.randomUUID());\r\n\r\n private _updateRadioButtonNames(): void {\r\n if (this._radios()) {\r\n this._radios().forEach(radio => {\r\n radio.name.set(this.name());\r\n radio.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n //! update handlers\r\n private _handleBlurEvents(event: FocusEvent): void {\r\n this.onBlur(event);\r\n }\r\n private _handleFocusEvents(event: FocusEvent): void {\r\n this.onFocus(event);\r\n }\r\n private _handleChangeEvents(selected: ArdiumRadioComponent): void {\r\n this.writeValue(selected.value());\r\n\r\n this._emitChange();\r\n }\r\n\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.changeEvent.emit(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n //! hooks\r\n private _childEventSubs: OutputRefSubscription[] = [];\r\n private _isContentInit = false;\r\n ngAfterContentInit(): void {\r\n this._isContentInit = true;\r\n\r\n if (this._valueBeforeInit !== undefined) {\r\n this.writeValue(this._valueBeforeInit);\r\n }\r\n\r\n setTimeout(() => {\r\n this._updateRadioButtonNames();\r\n }, 0);\r\n\r\n //sub to child component events\r\n for (const radio of this._radios()) {\r\n this._childEventSubs.push(\r\n radio.blurEvent.subscribe(v => {\r\n this._handleBlurEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.focusEvent.subscribe(v => {\r\n this._handleFocusEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.selectedChange.subscribe((v: boolean) => {\r\n if (!v) return;\r\n this._handleChangeEvents(radio);\r\n })\r\n );\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this._destroyChildSubscriptions();\r\n }\r\n private _destroyChildSubscriptions(): void {\r\n for (const sub of this._childEventSubs) {\r\n sub.unsubscribe();\r\n }\r\n this._childEventSubs = [];\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumRadioGroupComponent } from './radio-group.component';\nimport { ArdiumRadioComponent } from './radio/radio.component';\n\n@NgModule({\n declarations: [ArdiumRadioGroupComponent, ArdiumRadioComponent],\n imports: [CommonModule],\n exports: [ArdiumRadioGroupComponent, ArdiumRadioComponent],\n})\nexport class ArdiumRadioModule {}\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { evaluate, isDefined, isObject, isPrimitive } from 'simple-bool';\r\nimport { ArdOptionSimple, CompareWithFn } from '../../types/item-storage.types';\r\nimport { Nullable } from '../../types/utility.types';\r\n\r\nexport interface ItemStorageHostDefaults {\r\n valueFrom: string;\r\n labelFrom: string;\r\n disabledFrom: string;\r\n}\r\nexport interface SimpleItemStorageHost {\r\n readonly valueFrom: Signal<Nullable<string>>;\r\n readonly labelFrom: Signal<Nullable<string>>;\r\n readonly disabledFrom: Signal<Nullable<string>>;\r\n readonly invertDisabled: Signal<boolean>;\r\n readonly DEFAULTS: ItemStorageHostDefaults;\r\n readonly compareWith: Signal<Nullable<CompareWithFn>>;\r\n readonly multiselectable: Signal<boolean>;\r\n readonly isValueRequired: Signal<boolean>;\r\n readonly maxSelectedItems: Signal<Nullable<number>>;\r\n readonly _componentId: string;\r\n}\r\n\r\nexport class SimpleItemStorage {\r\n private readonly _items = signal<ArdOptionSimple[]>([]);\r\n private readonly _highlightedItems = signal<ArdOptionSimple[]>([]);\r\n private readonly _selectedItems = signal<ArdOptionSimple[]>([]);\r\n\r\n constructor(private readonly _ardParentComp: SimpleItemStorageHost) {}\r\n\r\n /**\r\n * Gets all items.\r\n */\r\n readonly items = this._items.asReadonly();\r\n /**\r\n * Gets all currently highlighted items.\r\n */\r\n readonly highlightedItems = this._highlightedItems.asReadonly();\r\n /**\r\n * Gets all currently selected items.\r\n */\r\n readonly selectedItems = this._selectedItems.asReadonly();\r\n /**\r\n * Gets the values of the currently selected items.\r\n */\r\n readonly value = computed(() => this._itemsToValue(this._selectedItems()));\r\n /**\r\n * Maps an array of items into their values.\r\n * @param items The items to convert to value.\r\n * @returns An array of item values.\r\n */\r\n private _itemsToValue(items: ArdOptionSimple[]): any[] {\r\n return items.map(item => item.value());\r\n }\r\n\r\n /**\r\n * Returns true if at least one item is highlighted, otherwise false.\r\n */\r\n readonly isAnyItemHighlighted = computed(() => this._highlightedItems().length > 0);\r\n /**\r\n * Returns true if the parent component defines the limit of concurrently selectable items and the amount of currently selected items matches that limit. Otherwise returns false.\r\n *\r\n * **TLDR**: true if `maxSelectedItems` is defined and the number of selected items matches that value.\r\n */\r\n readonly isItemLimitReached = computed(() => {\r\n const msi = this._ardParentComp.maxSelectedItems();\r\n if (!this._ardParentComp.multiselectable() || !isDefined(msi)) {\r\n return false;\r\n }\r\n return msi <= this.selectedItems().length;\r\n });\r\n\r\n /**\r\n * Sets the component's items. Takes into account the values defined by the parent component for `valueFrom`, `labelFrom`, and `disabledFrom`.\r\n * @param items An array of items to be set as the component's items.\r\n * @returns true if at least one of the items is of primitive type, otherwise false.\r\n */\r\n setItems(items: unknown[]): boolean {\r\n let areItemsPrimitive = false;\r\n if (items.some(isPrimitive)) {\r\n items = items.map(this._primitiveItemsMapFn);\r\n areItemsPrimitive = true;\r\n }\r\n\r\n this._items.set(\r\n items.map((item, index) => {\r\n return this._setItemsMapFn(item, index, areItemsPrimitive);\r\n })\r\n );\r\n\r\n return areItemsPrimitive;\r\n }\r\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\r\n return { value: item };\r\n }\r\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdOptionSimple {\r\n if (areItemsPrimitive) {\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(rawItemData.value),\r\n label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),\r\n disabled: signal(false),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n };\r\n }\r\n //get value\r\n const valuePath =\r\n this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom() ?? this._ardParentComp.DEFAULTS.valueFrom;\r\n const value = resolvePath(rawItemData, valuePath);\r\n\r\n //get label\r\n const labelPath =\r\n this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom() ?? this._ardParentComp.DEFAULTS.labelFrom;\r\n const label = resolvePath(rawItemData, labelPath) ?? value;\r\n\r\n //get disabled\r\n const disabledPath = this._ardParentComp.disabledFrom() ?? this._ardParentComp.DEFAULTS.disabledFrom;\r\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\r\n if (this._ardParentComp.invertDisabled()) {\r\n disabled = !disabled;\r\n }\r\n\r\n //return\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(value),\r\n label: signal(label?.toString?.() ?? String(label)),\r\n disabled: signal(disabled),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n };\r\n }\r\n /**\r\n * Writes a new value to the item storage. Selects the correct items based on the provided values, warning the user if the value is not found.\r\n * @param ngModel The value of the ngModel to set.\r\n */\r\n writeValue(ngModel: any[]): void {\r\n this._forceUnselectAll();\r\n\r\n if (!this._validateWriteValue(ngModel)) return;\r\n\r\n const selectItemByValue = (value: any) => {\r\n const item = this.findItemByValue(value);\r\n\r\n if (item) {\r\n this.selectItem(item);\r\n return;\r\n }\r\n console.warn(\r\n `ARD-WA${this._ardParentComp._componentId}1: Couldn't find an item with value ${value?.toString?.() || String(value)}.`\r\n );\r\n };\r\n\r\n for (const modelValue of ngModel) {\r\n selectItemByValue(modelValue);\r\n }\r\n }\r\n /**\r\n * Validates that all values of the value to be written are able to be accurately compared against the storage items.\r\n *\r\n * An item from the ngModel array is considered valid if it is a primitive value, or if all of the below points are met:\r\n * 1. The parent component defines the `compareWith` property.\r\n * 2. The ngModel value item is an object (or array).\r\n * 3. The parent component has a defined `valueFrom` property.\r\n * @param ngModel The value of ngModel to validate.\r\n * @returns true if all items are valid, otherwise false.\r\n */\r\n private _validateWriteValue(ngModel: any[]): boolean {\r\n return ngModel.every(item => {\r\n if (!isDefined(this._ardParentComp.compareWith()) && isObject(item) && this._ardParentComp.valueFrom()) {\r\n console.warn(\r\n `ARD-FT${this._ardParentComp._componentId}0: Setting object(${JSON.stringify(\r\n item\r\n )}) as your model with [valueFrom] is not allowed unless [compareWith] is used.`\r\n );\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n findItemByValue(valueToFind: any): ArdOptionSimple | undefined {\r\n let findBy: (item: ArdOptionSimple) => boolean;\r\n const cmpFn = this._ardParentComp.compareWith();\r\n if (isDefined(cmpFn)) {\r\n findBy = item => cmpFn(valueToFind, item.value());\r\n } else {\r\n findBy = item => item.value() === valueToFind;\r\n }\r\n return this._items().find(item => findBy(item));\r\n }\r\n\r\n /**\r\n * Unselects all selected items.\r\n *\r\n * If the parent component requires at least one value to be selected at all times, the first selected items is left selected.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n unselectAll(): any[] {\r\n for (const item of this._selectedItems()) {\r\n item.selected.set(false);\r\n }\r\n\r\n const ret = this.value();\r\n\r\n if (this._ardParentComp.isValueRequired() && this._selectedItems().length > 0) {\r\n this._selectedItems().first().selected.set(true);\r\n ret.splice(0, 1);\r\n }\r\n\r\n this._selectedItems.set([]);\r\n\r\n return ret;\r\n }\r\n /**\r\n * Unselects all selected items, no matter what the component settings are.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n private _forceUnselectAll(): any[] {\r\n for (const item of this._selectedItems()) {\r\n item.selected.set(false);\r\n }\r\n\r\n const ret = this._itemsToValue(this._selectedItems());\r\n\r\n this._selectedItems.set([]);\r\n\r\n return ret;\r\n }\r\n /**\r\n * Selects one or multiple items.\r\n *\r\n * Accounts for the limit of concurrently selected items defined by the parent component.\r\n * @param items A rest operator array of item objects to be selected.\r\n * @returns A tuple containing three arrays, all mapped to only their values:\r\n * - An array of items selected,\r\n * - An array of items unselected,\r\n * - An array of items failed to select due to the limit.\r\n */\r\n selectItem(...items: ArdOptionSimple[]): [any[], any[], any[]] {\r\n if (this.isItemLimitReached()) {\r\n return [[], [], this._itemsToValue(items)];\r\n }\r\n let unselected = [];\r\n if (!this._ardParentComp.multiselectable()) {\r\n unselected = this._forceUnselectAll();\r\n }\r\n\r\n let itemsSelectedCount = 0;\r\n const itemsSelected: ArdOptionSimple[] = [];\r\n for (const item of items) {\r\n itemsSelectedCount++;\r\n if (item.selected()) continue;\r\n if (this.isItemLimitReached()) {\r\n break;\r\n }\r\n item.selected.set(true);\r\n itemsSelected.push(item);\r\n }\r\n this._selectedItems.update(v => [...v, ...itemsSelected]);\r\n\r\n const itemsFailedToSelect = items.slice(itemsSelectedCount - 1);\r\n return [this._itemsToValue(itemsSelected), unselected, this._itemsToValue(itemsFailedToSelect)];\r\n }\r\n /**\r\n *\r\n * @param items A rest operator array of item objects to be unselected.\r\n * @returns An array of items unselected, mapped to only their values.\r\n */\r\n unselectItem(...items: ArdOptionSimple[]): any[] {\r\n let skippedItem = false;\r\n for (const item of items) {\r\n if (this._ardParentComp.isValueRequired() && !skippedItem) {\r\n skippedItem = true;\r\n continue;\r\n }\r\n\r\n if (!item.selected()) continue;\r\n item.selected.set(false);\r\n }\r\n this._selectedItems.update(v => v.filter(v => v.selected()));\r\n\r\n return this._itemsToValue(items);\r\n }\r\n\r\n /**\r\n * Unhighlights all currently highlighted items.\r\n */\r\n unhighlightAll(): void {\r\n for (const item of this._highlightedItems()) {\r\n item.highlighted.set(false);\r\n }\r\n this._highlightedItems.set([]);\r\n }\r\n /**\r\n * Highlights the given item, while unhighlighting all other items. Does nothing when the item is disabled.\r\n * @param item The item to be highlighted.\r\n * @returns The highlighted item.\r\n */\r\n highlightSingleItem(item: ArdOptionSimple): ArdOptionSimple | null {\r\n if (!item || item.disabled()) return null;\r\n this.unhighlightAll();\r\n return this.highlightItem(item);\r\n }\r\n /**\r\n * Highlights all given items.\r\n * @param items A rest operator array of items to be highlighted.\r\n * @returns The last highlighted item.\r\n */\r\n highlightItem(...items: ArdOptionSimple[]): ArdOptionSimple {\r\n for (const item of items) {\r\n item.highlighted.set(true);\r\n }\r\n this._highlightedItems.update(v => [...v, ...items]);\r\n return items.last();\r\n }\r\n /**\r\n * Unhighlights all given items.\r\n * @param items A rest operator array of items to be unhighlighted.\r\n */\r\n unhighlightItem(...items: ArdOptionSimple[]): void {\r\n for (const item of items) {\r\n if (!item || !item.highlighted()) return;\r\n\r\n item.highlighted.set(false);\r\n }\r\n this._highlightedItems.update(v => v.filter(v => v.highlighted()));\r\n }\r\n /**\r\n * Highlights the first item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightFirstItem(): ArdOptionSimple | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().first();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights the last item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightLastItem(): ArdOptionSimple | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().last();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights all non-disabled items.\r\n */\r\n highlightAllItems(): void {\r\n const itemsToHighlight = this.highlightableItems();\r\n\r\n this.highlightItem(...itemsToHighlight);\r\n }\r\n /**\r\n * Highlights the next non-disabled item defined by the offset amount.\r\n *\r\n * If `hasShift` is set to true, all originally highlighted items are kept. Otherwise, all original items are unselected.\r\n * @param offset The amount of items to offset the highlight by.\r\n * @param hasShift Whether the user has the shift key pressed.\r\n * @returns The item highlighted.\r\n */\r\n highlightNextItem(offset: number, hasShift?: boolean): ArdOptionSimple | null {\r\n if (!this.isAnyItemHighlighted()) {\r\n return this.highlightFirstItem();\r\n }\r\n const currentItem = this.highlightedItems().last();\r\n const itemsWithoutDisabled = this._items().filter(\r\n item => !item.disabled() && (!this.isItemLimitReached() || item.selected())\r\n );\r\n const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index() === currentItem.index());\r\n\r\n let nextItemIndex = currentIndexInItems + offset;\r\n if (nextItemIndex >= itemsWithoutDisabled.length) {\r\n nextItemIndex -= itemsWithoutDisabled.length;\r\n }\r\n if (nextItemIndex < 0) {\r\n nextItemIndex += itemsWithoutDisabled.length;\r\n }\r\n const itemToHighlight = itemsWithoutDisabled[nextItemIndex];\r\n\r\n if (hasShift && this._ardParentComp.multiselectable()) {\r\n if (itemToHighlight.highlighted()) {\r\n this.unhighlightItem(currentItem);\r\n }\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n return this.highlightSingleItem(itemToHighlight);\r\n }\r\n /**\r\n * Finds all highlightable items. An item is considered highlightable if it is **not** disabled.\r\n * @returns An array of all highlightable items.\r\n */\r\n private readonly highlightableItems = computed(() => this._items().filter(item => !item.disabled()));\r\n}\r\n","import { ChangeDetectorRef, Directive, HostBinding, HostListener, Input, computed, input, output, signal } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { coerceArrayProperty, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { ArdOptionSimple, CompareWithFn, OptionContext } from '../types/item-storage.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { SimpleItemStorage, SimpleItemStorageHost } from './item-storages/simple-item-storage';\r\nimport { _NgModelComponentBase } from './ngmodel-component';\r\n\r\n@Directive()\r\nexport abstract class _SelectableListComponentBase\r\n extends _NgModelComponentBase\r\n implements ControlValueAccessor, SimpleItemStorageHost\r\n{\r\n //! public constants\r\n readonly itemStorage = new SimpleItemStorage(this);\r\n readonly htmlId = crypto.randomUUID();\r\n readonly element!: HTMLElement;\r\n readonly DEFAULTS = {\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n disabledFrom: 'disabled',\r\n };\r\n\r\n abstract readonly _componentId: string;\r\n abstract readonly _componentName: string;\r\n\r\n constructor(private _cd: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n //! binding-related inputs\r\n readonly valueFrom = input<Nullable<string>>(undefined);\r\n readonly labelFrom = input<Nullable<string>>(undefined);\r\n readonly disabledFrom = input<Nullable<string>>(undefined);\r\n readonly compareWith = input<Nullable<CompareWithFn>>(undefined);\r\n\r\n //! items setter/getter\r\n @Input()\r\n get items(): any[] {\r\n return this.itemStorage.items();\r\n }\r\n set items(value: any) {\r\n if (!Array.isArray(value)) value = coerceArrayProperty(value);\r\n\r\n const shouldPrintErrors = this.itemStorage.setItems(value);\r\n\r\n if (shouldPrintErrors) {\r\n this._printPrimitiveWarnings();\r\n }\r\n }\r\n private _printPrimitiveWarnings() {\r\n const makeWarning = (str: string): void => {\r\n console.warn(\r\n `ARD-WA${this._componentId} Skipped using [${str}] property bound to <ard-${this._componentName}>, as some provided items are of primitive type`\r\n );\r\n };\r\n if (this.valueFrom()) {\r\n makeWarning('valueFrom');\r\n }\r\n if (this.labelFrom()) {\r\n makeWarning('labelFrom');\r\n }\r\n if (this.disabledFrom()) {\r\n makeWarning('disabledFrom');\r\n }\r\n if (this.invertDisabled()) {\r\n makeWarning('invertDisabled');\r\n }\r\n }\r\n\r\n //! multiselectable\r\n readonly multiselectable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n @HostBinding('attr.multiple')\r\n @HostBinding('class.ard-multiselect')\r\n get _multiselectableHostAttribute() {\r\n return this.multiselectable();\r\n }\r\n\r\n readonly singleselectable = computed(() => !this.multiselectable());\r\n\r\n //! require value\r\n readonly requireValue = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly isValueRequired = computed(() => this.requireValue() || !this.multiselectable());\r\n\r\n @HostBinding('class.ard-require-value')\r\n get _requireValueHostAttribute() {\r\n return this.requireValue();\r\n }\r\n\r\n //! coerced properties\r\n readonly invertDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly maxSelectedItems = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n //! control value accessor\r\n //override the writeValue and setDisabledState defined in _NgModelComponent\r\n override setDisabledState(state: boolean): void {\r\n this.disabled.set(state);\r\n this._cd.markForCheck();\r\n }\r\n writeValue(ngModel: any[]): void {\r\n this.itemStorage.writeValue(ngModel);\r\n this._cd.markForCheck();\r\n }\r\n\r\n //! change & touch event emitters\r\n readonly touched = signal<boolean>(false);\r\n\r\n @HostBinding('class.ard-touched')\r\n get _touchedHostAttribute(): boolean {\r\n return this.touched();\r\n }\r\n\r\n protected _emitChange(): void {\r\n const value = this.itemStorage.value();\r\n this._onChangeRegistered?.(value);\r\n this.changeEvent.emit(value);\r\n this.valueChange.emit(value);\r\n }\r\n protected _onTouched(): void {\r\n if (this.touched()) return;\r\n\r\n this._onTouchedRegistered?.();\r\n this.touched.set(true);\r\n }\r\n\r\n //! focus & blur handlers\r\n private readonly lastBlurTimestamp = signal<Nullable<number>>(undefined);\r\n override onFocus(event: FocusEvent): void {\r\n super.onFocus(event);\r\n\r\n const lbt = this.lastBlurTimestamp();\r\n if (this.touched() || !lbt || lbt + 1 < Date.now()) return;\r\n this.lastBlurTimestamp.set(null);\r\n\r\n this._onTouched();\r\n }\r\n override onBlur(event: FocusEvent): void {\r\n super.onBlur(event);\r\n\r\n if (!this.touched()) this.lastBlurTimestamp.set(Date.now());\r\n }\r\n\r\n //! getters\r\n readonly highlightedItems = computed<ArdOptionSimple[]>(() => this.itemStorage.highlightedItems());\r\n readonly firstHighlightedItem = computed<Nullable<ArdOptionSimple>>(() => this.highlightedItems()?.first());\r\n readonly isItemLimitReached = computed(() => this.itemStorage.isItemLimitReached());\r\n\r\n //! context providers\r\n getOptionContext(item: ArdOptionSimple): OptionContext<ArdOptionSimple> {\r\n return {\r\n $implicit: item,\r\n item,\r\n itemData: item.itemData(),\r\n };\r\n }\r\n\r\n //! value input & output\r\n @Input()\r\n set value(newValue: any) {\r\n if (!Array.isArray(newValue)) newValue = coerceArrayProperty(newValue);\r\n this.writeValue(newValue);\r\n }\r\n readonly valueChange = output<any[]>();\r\n\r\n //! output events\r\n readonly changeEvent = output<any[]>({ alias: 'change' });\r\n readonly addEvent = output<any[]>({ alias: 'add' });\r\n readonly removeEvent = output<any[]>({ alias: 'remove' });\r\n\r\n //! item selection handlers\r\n toggleItem(item: ArdOptionSimple): void {\r\n if (item.selected()) {\r\n if (this.singleselectable()) return;\r\n\r\n this.unselectItem(item);\r\n return;\r\n }\r\n this.selectItem(item);\r\n }\r\n selectItem(...items: ArdOptionSimple[]): void {\r\n const [selected, unselected] = this.itemStorage.selectItem(...items);\r\n\r\n if (unselected.length > 0) this.removeEvent.emit(unselected);\r\n\r\n if (selected.length > 0) {\r\n this.addEvent.emit(selected);\r\n this._emitChange();\r\n }\r\n }\r\n unselectItem(...items: ArdOptionSimple[]): void {\r\n const unselected = this.itemStorage.unselectItem(...items);\r\n\r\n if (unselected.length > 0) this.removeEvent.emit(unselected);\r\n \r\n this._emitChange();\r\n }\r\n\r\n //! highligh-related\r\n\r\n readonly isMouseBeingUsed = signal<boolean>(false);\r\n @HostListener('mousemove')\r\n onMouseMove() {\r\n this.isMouseBeingUsed.set(true);\r\n }\r\n onItemMouseEnter(option: ArdOptionSimple, event: MouseEvent): void {\r\n if (!this.isMouseBeingUsed) return;\r\n this.itemStorage.highlightSingleItem(option);\r\n event.stopPropagation();\r\n }\r\n onItemMouseLeave(option: ArdOptionSimple, event: MouseEvent): void {\r\n if (!this.isMouseBeingUsed) return;\r\n this.itemStorage.unhighlightItem(option);\r\n event.stopPropagation();\r\n }\r\n\r\n //! click handlers\r\n onItemClick(option: ArdOptionSimple, event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.toggleItem(option);\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'Space':\r\n case 'Enter': {\r\n this._toggleHighlightedItems(event);\r\n return;\r\n }\r\n case 'ArrowRight': {\r\n this._highlightNext(event);\r\n return;\r\n }\r\n case 'ArrowLeft': {\r\n this._highlightPrevious(event);\r\n return;\r\n }\r\n case 'Home': {\r\n this._highlightFirst(event);\r\n return;\r\n }\r\n case 'End': {\r\n this._highlightLast(event);\r\n return;\r\n }\r\n case 'KeyA': {\r\n if (event.ctrlKey) {\r\n this._highlightAll();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n private _toggleHighlightedItems(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n\r\n const highlightedItems = this.highlightedItems();\r\n\r\n if (highlightedItems.every(item => item.selected)) {\r\n this.unselectItem(...highlightedItems);\r\n } else {\r\n this.selectItem(...highlightedItems);\r\n }\r\n }\r\n private _highlightPrevious(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightNextItem(-1, event.shiftKey);\r\n }\r\n private _highlightNext(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightNextItem(+1, event.shiftKey);\r\n }\r\n private _highlightFirst(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightFirstItem();\r\n }\r\n private _highlightLast(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightLastItem();\r\n }\r\n private _highlightAll(): void {\r\n this.itemStorage.highlightAllItems();\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({ selector: 'ng-template[ard-segm-option-tmp]' })\r\nexport class ArdSegmentOptionTemplateDirective {\r\n constructor(readonly template: TemplateRef<any>) {}\r\n}\r\n","import { FormElementAppearance, FormElementVariant } from '../types/theming.types';\n\nexport const SegmentVariant = {\n ...FormElementVariant,\n RoundedConnected: 'rounded-connected',\n SharpConnected: 'sharp-connected',\n PillConnected: 'pill-connected',\n} as const;\nexport type SegmentVariant = (typeof SegmentVariant)[keyof typeof SegmentVariant];\n\nexport const SegmentAppearance = {\n ...FormElementAppearance,\n FilledStrong: 'filled-strong',\n OutlinedStrong: 'outlined-strong',\n} as const;\nexport type SegmentAppearance = (typeof SegmentAppearance)[keyof typeof SegmentAppearance];\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n input\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { _SelectableListComponentBase } from '../_internal/selectable-list-component';\r\nimport { OneAxisAlignment } from '../types/alignment.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdOptionSimple } from '../types/item-storage.types';\r\nimport { SimpleItemStorageHost } from './../_internal/item-storages/simple-item-storage';\r\nimport { ArdSegmentOptionTemplateDirective } from './segment.directives';\r\nimport { SegmentAppearance, SegmentVariant } from './segment.types';\r\n\r\ninterface SegmentRow {\r\n options: ArdOptionSimple[];\r\n isNotFull?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ard-segment',\r\n templateUrl: './segment.component.html',\r\n styleUrls: ['./segment.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumSegmentComponent extends _SelectableListComponentBase implements SimpleItemStorageHost, AfterContentInit {\r\n override readonly _componentId: string = '104';\r\n override readonly _componentName: string = 'segment';\r\n\r\n //! appearance\r\n readonly appearance = input<SegmentAppearance>(SegmentAppearance.Outlined);\r\n readonly variant = input<SegmentVariant>(SegmentVariant.RoundedConnected);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly align = input<OneAxisAlignment>(OneAxisAlignment.Middle);\r\n\r\n readonly iconBased = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-align-${this.align()}`,\r\n this.iconBased() ? 'ard-icon-based' : '',\r\n this.compact() ? 'ard-compact' : '',\r\n this.itemRows().length > 1 ? 'ard-multirow' : 'ard-singlerow',\r\n ].join(' ')\r\n );\r\n\r\n //! coerced properties\r\n readonly autoFocus = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly uniformWidths = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly itemsPerRow = input<number, any>(Infinity, {\r\n transform: v => {\r\n const newValue = coerceNumberProperty(v, Infinity);\r\n if (newValue === 0) throw new Error(`ARD-FT1040a: Cannot set <ard-segment>'s [itemsPerRow] to 0.`);\r\n if (newValue < 0)\r\n throw new Error(`ARD-FT1040b: Cannot set <ard-segment>'s [itemsPerRow] to a negative value, got \"${newValue}\".`);\r\n if (newValue % 1 !== 0) {\r\n const roundedValue = Math.round(newValue) || 1; // round to nearest int, but never round to zero\r\n console.warn(\r\n new Error(\r\n `ARD-WA1040c: Cannot set <ard-segment>'s [itemsPerRow] to a non-interger value, got \"${newValue}\". The value was rounded to \"${roundedValue}\".`\r\n )\r\n );\r\n return Math.ceil(newValue);\r\n }\r\n return newValue;\r\n },\r\n });\r\n get itemsInActualRow(): number {\r\n return this.itemsPerRow() === Infinity ? this.items.length : this.itemsPerRow();\r\n }\r\n\r\n //! option template\r\n readonly optionTemplate = contentChild(ArdSegmentOptionTemplateDirective);\r\n\r\n //! lifecycle hooks\r\n ngAfterContentInit(): void {\r\n if (this.autoFocus()) {\r\n this.focus();\r\n }\r\n }\r\n\r\n //! item row getters\r\n readonly itemRows = computed<SegmentRow[]>(() => {\r\n const itemRows: SegmentRow[] = [];\r\n let currentRow: ArdOptionSimple[] = [];\r\n //get all rows\r\n for (const item of this.items) {\r\n //add item\r\n currentRow.push(item);\r\n\r\n //push if item amount reached the limit\r\n if (this.itemsPerRow() && currentRow.length === this.itemsPerRow()) {\r\n itemRows.push({ options: currentRow });\r\n currentRow = [];\r\n }\r\n }\r\n //push the last row if it is not empty\r\n if (currentRow.length !== 0) {\r\n itemRows.push({\r\n options: currentRow,\r\n isNotFull: Boolean(this.itemsPerRow()),\r\n });\r\n }\r\n return itemRows;\r\n });\r\n\r\n //! focus handler override\r\n override onFocus(event: FocusEvent): void {\r\n super.onFocus(event);\r\n\r\n if (this.itemStorage.isAnyItemHighlighted()) return;\r\n\r\n this.itemStorage.highlightFirstItem();\r\n }\r\n\r\n override onBlur(event: FocusEvent): void {\r\n super.onBlur(event);\r\n\r\n this.itemStorage.unhighlightAll();\r\n }\r\n}\r\n","<div\r\n #focusableElement\r\n class=\"ard-segment-container\"\r\n [class.ard-disabled]=\"disabled()\"\r\n [ariaDisabled]=\"disabled()\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-focus-visible]=\"isFocused && !isMouseBeingUsed\"\r\n [class.ard-using-keyboard]=\"!isMouseBeingUsed\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n @for (row of itemRows(); track $index) {\r\n <div\r\n class=\"ard-segment-row\"\r\n [class.ard-segment-row-partial]=\"row.isNotFull\"\r\n [class.ard-segment-row-uniform]=\"uniformWidths() || itemsPerRow() < items.length\"\r\n [style]=\"{ '--ard-_segment-row-items': itemsInActualRow }\"\r\n >\r\n @for (option of row.options; track $index) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-segment-option\"\r\n tabindex=\"-1\"\r\n [class.ard-option-disabled]=\"option.disabled() || (isItemLimitReached() && !option.selected())\"\r\n [class.ard-option-selected]=\"option.selected()\"\r\n [class.ard-option-highlighted]=\"option.highlighted()\"\r\n [ariaSelected]=\"option.selected()\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n (click)=\"onItemClick(option, $event)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ option.label() }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(option)\"\r\n />\r\n </span>\r\n </div>\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSegmentComponent } from './segment.component';\nimport { ArdSegmentOptionTemplateDirective } from './segment.directives';\n\n@NgModule({\n declarations: [ArdiumSegmentComponent, ArdSegmentOptionTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumSegmentComponent, ArdSegmentOptionTemplateDirective],\n})\nexport class ArdiumSegmentModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { SliderTooltipContext } from './slider.types';\n\n@Directive({\n selector: 'ng-template[ard-slider-tooltip-tmp]',\n})\nexport class ArdSliderTooltipDirective {\n constructor(public template: TemplateRef<SliderTooltipContext>) {}\n}\n","export interface SliderTooltipContext {\r\n value: string | number;\r\n $implicit: string | number;\r\n}\r\n\r\nexport const SliderTooltipBehavior = {\r\n Always: 'always',\r\n Auto: 'auto',\r\n Never: 'never',\r\n} as const;\r\nexport type SliderTooltipBehavior = (typeof SliderTooltipBehavior)[keyof typeof SliderTooltipBehavior];\r\n\r\nexport const SliderDecorationPosition = {\r\n Top: 'top',\r\n Bottom: 'bottom',\r\n} as const;\r\nexport type SliderDecorationPosition = (typeof SliderDecorationPosition)[keyof typeof SliderDecorationPosition];\r\n\r\nexport interface SliderLabelObject {\r\n label: string | number;\r\n for: number;\r\n}\r\nexport interface _InternalSliderLabelObject {\r\n label: string;\r\n positionPercent: string;\r\n}\r\n\r\nexport interface SliderRange<T = number> {\r\n low: T;\r\n high: T;\r\n}\r\n\r\nexport type SliderTooltipFormatFn = (value: number) => string | number;\r\n","import { Overlay, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n Renderer2,\r\n ViewContainerRef,\r\n computed,\r\n contentChild,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { roundToMultiple, roundToPrecision } from 'more-rounding';\r\nimport { isDefined, isObject } from 'simple-bool';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdSliderTooltipDirective } from './slider.directive';\r\nimport {\r\n SliderDecorationPosition,\r\n SliderLabelObject,\r\n SliderTooltipBehavior,\r\n SliderTooltipFormatFn,\r\n _InternalSliderLabelObject,\r\n} from './slider.types';\r\n\r\n@Directive()\r\nexport abstract class _AbstractSlider<T> extends _NgModelComponentBase {\r\n abstract readonly componentId: string;\r\n abstract readonly componentName: string;\r\n\r\n public readonly elementRef = viewChild<ElementRef<HTMLElement>>('track');\r\n\r\n protected readonly document = inject(DOCUMENT);\r\n protected readonly renderer = inject(Renderer2);\r\n protected readonly overlay = inject(Overlay);\r\n protected readonly scrollStrategyOpts = inject(ScrollStrategyOptions);\r\n protected readonly viewContainerRef = inject(ViewContainerRef);\r\n\r\n readonly noTooltip = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly tooltipFormat = input<Nullable<SliderTooltipFormatFn>>();\r\n\r\n protected abstract _updateTooltipValue(): void;\r\n\r\n //! min, max, step sizes\r\n readonly min = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) });\r\n readonly max = input<number, any>(100, { transform: v => coerceNumberProperty(v, 100) });\r\n\r\n readonly step = input<number, any>(1, {\r\n transform: v => {\r\n const step = coerceNumberProperty(v, 1);\r\n if (step === 0) {\r\n throw new Error(`ARD-FT${this.componentId}0a: Cannot set <ard-${this.componentName}>'s [step] to 0.`);\r\n }\r\n if (step < 0) {\r\n throw new Error(`ARD-FT${this.componentId}0b: Cannot set <ard-${this.componentName}>'s [step] to a negative value, got ${step}.`);\r\n }\r\n return step;\r\n },\r\n });\r\n\r\n readonly shiftMultiplier = input<number, any>(5, { transform: v => coerceNumberProperty(v, 1) });\r\n\r\n protected readonly _stepSizeComputed = computed<number>(() => this.step() / Math.abs(this.min() - this.max()));\r\n\r\n //! value ticks\r\n readonly showValueTicks = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly percentStepSize = computed<number>(() => this._stepSizeComputed() * 100);\r\n\r\n protected readonly _tickArray = computed<string[]>(() => {\r\n const newArr: number[] = [];\r\n\r\n let positionPercentCumulative = 0;\r\n while (positionPercentCumulative < 100) {\r\n newArr.push(positionPercentCumulative);\r\n positionPercentCumulative += this._stepSizeComputed() * 100;\r\n positionPercentCumulative = roundToPrecision(positionPercentCumulative, 6);\r\n }\r\n newArr.push(100);\r\n\r\n return newArr.map(v => `${v}%`);\r\n });\r\n\r\n //! labels\r\n readonly labelPosition = input<SliderDecorationPosition>(SliderDecorationPosition.Bottom);\r\n\r\n readonly labelObjects = input<_InternalSliderLabelObject[], SliderLabelObject[] | number[] | null>([], {\r\n alias: 'labels',\r\n transform: val => {\r\n if (!isDefined(val) || val.length === 0) {\r\n return [];\r\n }\r\n return val.map(this._numberLabelArrayMapFn).map(label => {\r\n const v = this._clampValue(label.for);\r\n return {\r\n label: String(label.label),\r\n positionPercent: `${this._valueToPercent(v) * 100}%`,\r\n };\r\n });\r\n },\r\n });\r\n\r\n protected _numberLabelArrayMapFn(val: SliderLabelObject | number): SliderLabelObject {\r\n if (isObject(val)) return val;\r\n return {\r\n label: val,\r\n for: val,\r\n };\r\n }\r\n\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-color-${this.color()}`,\r\n `ard-labels-${this.labelPosition()}`,\r\n `ard-tooltip-${this.tooltipPosition()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! determining transition\r\n readonly sliderTransition = computed(() => {\r\n const x = this._totalSteps();\r\n //this is determined using this graph: https://www.geogebra.org/calculator/nqgnhpap\r\n //capped at y=80\r\n //this specific graph is chosen because it looks the best in my opinion\r\n const formulaResult = (20 * (x + 200)) / (x + 20) - 80;\r\n const formulaResultRounded = roundToPrecision(formulaResult, 3);\r\n\r\n if (formulaResultRounded < 0) return '0';\r\n\r\n const transitionDuration = Math.min(80, formulaResultRounded);\r\n return transitionDuration + 'ms';\r\n });\r\n private readonly _totalSteps = computed<number>(() => (this.max() - this.min()) / this.step());\r\n\r\n //! value input & output\r\n //! abstract here\r\n protected abstract _value: T;\r\n @Input()\r\n set value(newValue: T) {\r\n this.writeValue(newValue);\r\n }\r\n get value(): T {\r\n return this._value;\r\n }\r\n readonly valueChange = output<T>();\r\n\r\n //! writeValue\r\n //! abstract here\r\n abstract override writeValue(v: any): void; //* abstact\r\n //! methods for programmatic manipulation\r\n abstract reset(): void;\r\n\r\n protected _offset(offset: number, hasShift: boolean, handleId = 1): void {\r\n const stepSize = this._stepSizeComputed() * (hasShift ? this.shiftMultiplier() : 1);\r\n let newPercent = this._positionPercent[handleId - 1] + stepSize * offset;\r\n newPercent = this._clampPercentValue(newPercent);\r\n this._setValueFromPercent(newPercent);\r\n }\r\n\r\n //! helper methods\r\n protected _clampValue(v: number): number {\r\n //clamp between min and max\r\n v = Math.min(v, this.max());\r\n v = Math.max(v, this.min());\r\n //round to the nearest step\r\n v -= this.min();\r\n v = roundToMultiple(v, this.step());\r\n v += this.min();\r\n return v;\r\n }\r\n protected _valueToPercent(v: number): number {\r\n const minMaxDifference = Math.abs(this.min() - this.max());\r\n return (v - this.min()) / minMaxDifference;\r\n }\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n //! tooltip\r\n readonly tooltipTemplate = contentChild(ArdSliderTooltipDirective);\r\n\r\n readonly tooltipPosition = input<SliderDecorationPosition>(SliderDecorationPosition.Top);\r\n readonly tooltipBehavior = input<SliderTooltipBehavior>(SliderTooltipBehavior.Auto);\r\n\r\n //! event handlers\r\n protected readonly _grabbedHandleId = signal<null | number>(null);\r\n protected _shouldCheckForMovement = false;\r\n protected _bodyHasClass = false;\r\n\r\n readonly isSliderHandleGrabbed = computed(() => !!this._grabbedHandleId());\r\n\r\n abstract onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void; //* abstact\r\n\r\n onPointerDownOnHandle(event: MouseEvent | TouchEvent, handleId = 1): void {\r\n this._grabbedHandleId.set(handleId);\r\n this._shouldCheckForMovement = true;\r\n if (!this._bodyHasClass) {\r\n this._bodyHasClass = true;\r\n this.renderer.addClass(this.document.body, 'ard-prevent-touch-actions');\r\n }\r\n }\r\n\r\n abstract onPointerMove(event: MouseEvent | TouchEvent): void; //* abstact\r\n\r\n @HostListener('document:pointerup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onPointerUp(): void {\r\n if (!this._shouldCheckForMovement) return;\r\n this._grabbedHandleId.set(null);\r\n this._shouldCheckForMovement = false;\r\n if (this._bodyHasClass) {\r\n this._bodyHasClass = false;\r\n this.renderer.removeClass(this.document.body, 'ard-prevent-touch-actions');\r\n }\r\n }\r\n\r\n //! position calculators\r\n protected _positionPercent: [number] | [number, number] = [0];\r\n getHandlePosition(handleId = 1): string {\r\n return this._positionPercent[handleId - 1] * 100 + '%';\r\n }\r\n protected _setValueFromPercent(percent: number, handleId: number | null = 1): void {\r\n if (!handleId) return;\r\n if (this._positionPercent[handleId - 1] === percent) return;\r\n this._positionPercent[handleId - 1] = percent;\r\n this._value = this._percentValueToValue(percent, handleId);\r\n\r\n this._updateTooltipValue();\r\n\r\n this._emitChange();\r\n }\r\n protected _writeValueFromEvent(event: MouseEvent | TouchEvent, handleId?: number | null): void {\r\n const percent = this._getPercentValueFromEvent(event);\r\n this._setValueFromPercent(percent, handleId);\r\n }\r\n protected abstract _percentValueToValue(percent: number, handleId?: number): T; //* abstact\r\n\r\n protected _getElementRect(): DOMRect {\r\n return this.elementRef()!.nativeElement.getBoundingClientRect();\r\n }\r\n protected _clampPercentValue(percent: number): number {\r\n //clamp between 0 and 1\r\n percent = Math.min(percent, 1);\r\n percent = Math.max(percent, 0);\r\n //round to the nearest step\r\n percent = roundToMultiple(percent, this._stepSizeComputed());\r\n return percent;\r\n }\r\n protected _getPercentValueFromEvent(event: MouseEvent | TouchEvent): number {\r\n const rect = this._getElementRect();\r\n let position: number;\r\n if (event instanceof MouseEvent) {\r\n position = event.clientX;\r\n } else {\r\n position = event.targetTouches[0].clientX;\r\n }\r\n const percent = (position - rect.left) / rect.width;\r\n return this._clampPercentValue(percent);\r\n }\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'ArrowLeft': {\r\n this._decrement(event);\r\n return;\r\n }\r\n case 'ArrowRight': {\r\n this._increment(event);\r\n return;\r\n }\r\n }\r\n }\r\n protected _decrement(event: KeyboardEvent, steps = 1): void {\r\n this._offset(-steps, event.shiftKey);\r\n }\r\n protected _increment(event: KeyboardEvent, steps = 1): void {\r\n this._offset(+steps, event.shiftKey);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, HostListener, ViewEncapsulation } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { roundToPrecision } from 'more-rounding';\r\nimport { _AbstractSlider } from './abstract-slider';\r\nimport { SliderTooltipContext } from './slider.types';\r\n\r\n@Component({\r\n selector: 'ard-slider',\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSliderComponent extends _AbstractSlider<number> {\r\n readonly componentId = '105';\r\n readonly componentName = 'slider';\r\n\r\n //! value input & output\r\n protected _value = 0;\r\n\r\n //! tooltip updater\r\n _tooltipValue = String(this.value);\r\n\r\n protected _updateTooltipValue(): void {\r\n let v: string | number = this._value;\r\n const formatFn = this.tooltipFormat();\r\n if (formatFn) v = formatFn(v);\r\n this._tooltipValue = String(v);\r\n }\r\n\r\n getTooltipContext(): SliderTooltipContext {\r\n return {\r\n value: this._tooltipValue,\r\n $implicit: this._tooltipValue,\r\n };\r\n }\r\n\r\n //! writeValue\r\n writeValue(v: any): void {\r\n v = Number(v);\r\n if (isNaN(v)) {\r\n this.reset();\r\n return;\r\n }\r\n v = this._clampValue(v);\r\n this._value = v;\r\n this._positionPercent[0] = this._valueToPercent(v);\r\n this._updateTooltipValue();\r\n }\r\n\r\n //! methods for programmatic manipulation\r\n reset(): void {\r\n this._value = 0;\r\n this._positionPercent[0] = 0;\r\n }\r\n increment(steps = 1): void {\r\n this._offset(steps, false);\r\n }\r\n decrement(steps = 1): void {\r\n this._offset(-steps, false);\r\n }\r\n\r\n //! event handlers\r\n onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void {\r\n this._writeValueFromEvent(event);\r\n this.onPointerDownOnHandle(event);\r\n }\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onPointerMove(event: MouseEvent | TouchEvent): void {\r\n if (!this._shouldCheckForMovement) return;\r\n this._writeValueFromEvent(event);\r\n }\r\n\r\n //! position calculators\r\n protected _percentValueToValue(percent: number): number {\r\n const minMaxDifference = Math.abs(this.min() - this.max());\r\n const newVal = percent * minMaxDifference + this.min();\r\n //round to 9 decimal places to avoid floating point arithmetic errors\r\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\r\n return roundToPrecision(newVal, 9);\r\n }\r\n}\r\n","<div\r\n class=\"ard-slider-container-master\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-slider-handle-grabbed]=\"isSliderHandleGrabbed()\"\r\n [style]=\"{ '--_ard-slider-transition': sliderTransition() }\"\r\n>\r\n <div class=\"ard-slider-container\">\r\n <div\r\n #track\r\n class=\"ard-slider-track\"\r\n (pointerdown)=\"onTrackHitboxPointerDown($event)\"\r\n >\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slider-track-overlay ard-slider-track-inactive\"></div>\r\n <div\r\n class=\"ard-slider-track-overlay ard-slider-track-active\"\r\n [style]=\"{ width: getHandlePosition(1) }\"\r\n ></div>\r\n @if (showValueTicks()) {\r\n <div class=\"ard-value-tick-container\">\r\n @for (tick of _tickArray(); track tick) {\r\n <div\r\n class=\"ard-value-tick\"\r\n [style]=\"{ left: tick }\"\r\n ></div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed()\"\r\n (pointerdown)=\"onPointerDownOnHandle($event)\"\r\n (touchstart)=\"onPointerDownOnHandle($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext()\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n </div>\r\n @if (labelObjects().length) {\r\n <div\r\n class=\"ard-slider-label-container\"\r\n *ngIf=\"labelObjects.length\"\r\n >\r\n @for (label of labelObjects(); track $index) {\r\n <div\r\n class=\"ard-slider-label\"\r\n [style]=\"{ left: label.positionPercent }\"\r\n >\r\n {{ label.label }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { OverlayModule } from '@angular/cdk/overlay';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumSliderComponent } from './slider.component';\r\nimport { ArdSliderTooltipDirective } from './slider.directive';\r\n\r\n@NgModule({\r\n declarations: [ArdiumSliderComponent, ArdSliderTooltipDirective],\r\n imports: [CommonModule, OverlayModule],\r\n exports: [ArdiumSliderComponent, ArdSliderTooltipDirective],\r\n})\r\nexport class ArdiumSliderModule {}\r\n","import { ChangeDetectionStrategy, Component, HostListener, OnInit, ViewEncapsulation, signal } from '@angular/core';\r\nimport { roundToPrecision } from 'more-rounding';\r\nimport { isNumber, isObject } from 'simple-bool';\r\nimport { _AbstractSlider } from '../abstract-slider';\r\nimport { SliderRange, SliderTooltipContext } from '../slider.types';\r\n\r\n@Component({\r\n selector: 'ard-range-slider',\r\n templateUrl: './range-slider.component.html',\r\n styleUrls: ['./range-slider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumRangeSliderComponent extends _AbstractSlider<SliderRange> implements OnInit {\r\n readonly componentId = '106';\r\n readonly componentName = 'range-slider';\r\n\r\n protected _value: SliderRange = { low: -Infinity, high: Infinity };\r\n\r\n ngOnInit(): void {\r\n if (this._value.low !== -Infinity && this._value.high !== Infinity) return;\r\n\r\n this.writeValue({ low: this.min(), high: this.max() });\r\n }\r\n\r\n //! writeValue\r\n private _isValidObject(v: any): v is SliderRange {\r\n return isObject(v) && isNumber(v['low']) && isNumber(v['high']);\r\n }\r\n private _isValidTuple(v: any): v is [number, number] {\r\n return Array.isArray(v) && isNumber(v[0]) && isNumber(v[1]) && v.length === 2;\r\n }\r\n private _arrayValueToObjectValue(v: [number, number]): SliderRange {\r\n return { low: v[0], high: v[1] };\r\n }\r\n private _normalizeSliderRange(v: SliderRange): SliderRange {\r\n if (v.low <= v.high) return v;\r\n return { low: v.high, high: v.low };\r\n }\r\n writeValue(v: any): void {\r\n if (!this._isValidObject(v) && !this._isValidTuple(v)) {\r\n this.reset();\r\n return;\r\n }\r\n let low = -Infinity;\r\n let high = Infinity;\r\n if (this._isValidObject(v)) {\r\n low = v.low;\r\n high = v.high;\r\n } else if (this._isValidTuple(v)) {\r\n low = v[0];\r\n high = v[1];\r\n }\r\n const lowClamped = this._clampValue(low);\r\n const highClamped = this._clampValue(high);\r\n const value: SliderRange = this._arrayValueToObjectValue([lowClamped, highClamped]);\r\n this._value = value;\r\n this._positionPercent[0] = this._valueToPercent(lowClamped);\r\n this._positionPercent[1] = this._valueToPercent(highClamped);\r\n this._updateTooltipValue();\r\n }\r\n override get value(): SliderRange {\r\n return this._normalizeSliderRange(this._value);\r\n }\r\n override set value(v: any) {\r\n this.writeValue(v);\r\n }\r\n\r\n //! tooltip updater\r\n _tooltipValue: SliderRange<string | number> = this.value;\r\n\r\n protected _updateTooltipValue(): void {\r\n const v: SliderRange<string | number> = Object.create(this._value);\r\n const formatFn = this.tooltipFormat();\r\n if (formatFn) {\r\n v.low = formatFn(v.low as number);\r\n v.high = formatFn(v.high as number);\r\n }\r\n this._tooltipValue = v;\r\n }\r\n\r\n getTooltipContext(type: 'low' | 'high'): SliderTooltipContext {\r\n return {\r\n value: this._tooltipValue[type],\r\n $implicit: this._tooltipValue[type],\r\n };\r\n }\r\n\r\n //! methods for programmatic manipulation\r\n reset(): void {\r\n this._value = { low: -Infinity, high: Infinity };\r\n this._positionPercent[0] = 0;\r\n this._positionPercent[1] = 1;\r\n }\r\n\r\n //! track overlay getters\r\n get trackOverlayLeft(): string {\r\n return Math.min(...this._positionPercent) * 100 + '%';\r\n }\r\n get trackOverlayWidth(): string {\r\n return Math.abs(this._positionPercent[0] - this._positionPercent[1]!) * 100 + '%';\r\n }\r\n\r\n //! event handlers\r\n onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void {\r\n this._writeValueFromEvent(event);\r\n this.onPointerDownOnHandle(event);\r\n }\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onPointerMove(event: MouseEvent | TouchEvent): void {\r\n if (!this._shouldCheckForMovement) return;\r\n if (!this._bodyHasClass) {\r\n this._bodyHasClass = true;\r\n this.renderer.addClass(this.document.body, 'ard-prevent-touch-actions');\r\n }\r\n this._writeValueFromEvent(event, this._grabbedHandleId());\r\n }\r\n\r\n //! position calculators\r\n protected _percentValueToValue(percent: number, handleId: number): SliderRange {\r\n const minMaxDifference = Math.abs(this.min() - this.max());\r\n let newVal = percent * minMaxDifference + this.min();\r\n //round to 9 decimal places to avoid floating point arithmetic errors\r\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\r\n newVal = roundToPrecision(newVal, 9);\r\n\r\n const newValObj = { low: this._value.low, high: this._value.high };\r\n if (handleId === 1) {\r\n newValObj.low = newVal;\r\n } else {\r\n newValObj.high = newVal;\r\n }\r\n return newValObj;\r\n }\r\n\r\n //! handle focus monitors\r\n readonly currentHandle = signal<1 | 2 | null>(null);\r\n onHandleFocus(event: FocusEvent, handleId: 1 | 2) {\r\n this.onFocus(event);\r\n\r\n this.currentHandle.set(handleId);\r\n }\r\n override onBlur(event: FocusEvent) {\r\n super.onBlur(event);\r\n this.currentHandle.set(null);\r\n }\r\n}\r\n","<div\r\n class=\"ard-range-slider-container-master\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-slider-handle-grabbed]=\"isSliderHandleGrabbed()\"\r\n [style]=\"{ '--_ard-slider-transition': sliderTransition() }\"\r\n>\r\n <div class=\"ard-slider-container\">\r\n <div\r\n #track\r\n class=\"ard-slider-track\"\r\n (pointerdown)=\"onTrackHitboxPointerDown($event)\"\r\n >\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slider-track-overlay ard-slider-track-inactive\"></div>\r\n <div\r\n class=\"ard-slider-track-overlay ard-slider-track-active\"\r\n [style]=\"{\r\n left: trackOverlayLeft,\r\n width: trackOverlayWidth\r\n }\"\r\n ></div>\r\n @if (showValueTicks()) {\r\n <div class=\"ard-value-tick-container\">\r\n @for (tick of _tickArray(); track tick) {\r\n <div\r\n class=\"ard-value-tick\"\r\n [style]=\"{ left: tick }\"\r\n ></div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed() && currentHandle() === 1\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 1)\"\r\n (focus)=\"onHandleFocus($event, 1)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext('low')\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed() && currentHandle() === 2\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 2)\"\r\n (focus)=\"onHandleFocus($event, 2)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(2) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(2) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext('high')\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n </div>\r\n @if (labelObjects().length) {\r\n <div\r\n class=\"ard-slider-label-container\"\r\n *ngIf=\"labelObjects.length\"\r\n >\r\n @for (label of labelObjects(); track $index) {\r\n <div\r\n class=\"ard-slider-label\"\r\n [style]=\"{ left: label.positionPercent }\"\r\n >\r\n {{ label.label }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<ng-template #handleThumbBase>\r\n <div class=\"ard-slide-thumb\"></div>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumRangeSliderComponent } from './range-slider.component';\n\n@NgModule({\n declarations: [ArdiumRangeSliderComponent],\n imports: [CommonModule],\n exports: [ArdiumRangeSliderComponent],\n})\nexport class ArdiumRangeSliderModule {}\n","export const ClickStrategy = {\r\n Noop: 'noop',\r\n Default: 'default',\r\n} as const;\r\nexport type ClickStrategy = (typeof ClickStrategy)[keyof typeof ClickStrategy];\r\n\r\n/**\r\n * Represents an array type that must contain at least one element.\r\n *\r\n * @template T - The type of elements in the array.\r\n */\r\nexport type NonEmptyArray<T> = [T, ...T[]];\r\n\r\nexport type Nullable<T> = T | undefined | null;\r\n","import { SimpleComponentColor } from '../types/colors.types';\n\nexport const StarFillMode = {\n /**\n * The star is not filled, just an outline.\n */\n None: 'none',\n /**\n * Half of the star is filled.\n */\n Half: 'half',\n /**\n * The star is fully filled.\n */\n Filled: 'filled',\n} as const;\nexport type StarFillMode = (typeof StarFillMode)[keyof typeof StarFillMode];\n\nexport const StarColor = {\n ...SimpleComponentColor,\n /**\n * THe app's color set for all stars. Usually gold or yellow-gold.\n */\n Star: 'star',\n} as const;\nexport type StarColor = (typeof StarColor)[keyof typeof StarColor];\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { StarColor, StarFillMode } from './star.types';\r\n\r\n@Component({\r\n selector: 'ard-star',\r\n templateUrl: './star.component.html',\r\n styleUrls: ['./star.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumStarComponent {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(StarColor.Star);\r\n readonly fill = input<StarFillMode>(StarFillMode.Filled);\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [this.wrapperClasses(), `ard-color-${this.color()}`, `ard-star-fill-${this.fill()}`].join(' ')\r\n );\r\n}\r\n","<div\r\n class=\"ard-star\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-star-icon ard-star-selected\"></div>\r\n <div class=\"ard-star-icon ard-star-half\"></div>\r\n <div class=\"ard-star-icon ard-star-unselected\"></div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, forwardRef, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { _BooleanComponentBase } from '../../_internal/boolean-component';\r\nimport { ClickStrategy } from '../../types/utility.types';\r\nimport { StarColor } from '../star.types';\r\nimport { StarFillMode } from './../star.types';\r\n\r\n@Component({\r\n selector: 'ard-star-button',\r\n templateUrl: './star-button.component.html',\r\n styleUrls: ['./star-button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumStarButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumStarButtonComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly clickStrategy = input<ClickStrategy>(ClickStrategy.Default);\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(StarColor.Star);\r\n\r\n readonly ngClasses = computed<string>(() => [this.wrapperClasses(), `ard-color-${this.color}`].join(' '));\r\n\r\n readonly starFillState = computed<StarFillMode>(() => (this.selected() ? StarFillMode.Filled : StarFillMode.None));\r\n\r\n onClick(): void {\r\n if (this.clickStrategy() === ClickStrategy.Noop) return;\r\n this.toggleSelected();\r\n }\r\n}\r\n","<button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-star-button\"\r\n [ngClass]=\"ngClasses()\"\r\n (click)=\"onClick()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-star\r\n [fill]=\"starFillState()\"\r\n [color]=\"color()\"\r\n ></ard-star>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStarComponent } from './star.component';\n\n@NgModule({\n declarations: [ArdiumStarComponent],\n imports: [CommonModule],\n exports: [ArdiumStarComponent],\n})\nexport class ArdiumStarModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStarButtonComponent } from './star-button.component';\nimport { ArdiumStarModule } from '../star.module';\n\n@NgModule({\n declarations: [ArdiumStarButtonComponent],\n imports: [CommonModule, ArdiumStarModule],\n exports: [ArdiumStarButtonComponent],\n})\nexport class ArdiumStarButtonModule {}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostListener,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n forwardRef,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n viewChildren,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { ArdiumStarButtonComponent } from '../star-button/star-button.component';\r\nimport { _NgModelComponentBase } from './../../_internal/ngmodel-component';\r\nimport { StarColor } from './../star.types';\r\n\r\ninterface StarInputObject {\r\n filled: boolean;\r\n isInValue: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ard-star-input',\r\n templateUrl: './star-input.component.html',\r\n styleUrls: ['./star-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumStarInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumStarInputComponent extends _NgModelComponentBase implements ControlValueAccessor {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(StarColor.Star);\r\n\r\n readonly ngClasses = computed<string>(() => [this.wrapperClasses(), `ard-color-${this.color()}`].join(' '));\r\n\r\n //! events\r\n readonly changeEvent = output<number>({ alias: 'change' });\r\n readonly highlightEvent = output<number>({ alias: 'highlight' });\r\n\r\n readonly value = model<number>(0);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const hi = this._highlightedStarIndex();\r\n if (hi !== null) {\r\n this.highlightEvent.emit(hi);\r\n }\r\n });\r\n effect(() => {\r\n this.value(); // let the effect know when to fire\r\n this._emitChange();\r\n });\r\n }\r\n\r\n //! stars\r\n readonly max = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) });\r\n\r\n readonly starButtonInstances = viewChildren<ArdiumStarButtonComponent>('starButton');\r\n private readonly _highlightedStarIndex = signal<number | null>(null);\r\n\r\n readonly starArray = computed<StarInputObject[]>(() => {\r\n const v = this.value();\r\n const max = this.max();\r\n const hi = Math.round(this._highlightedStarIndex() ?? -1);\r\n\r\n const arr = new Array(max);\r\n for (let i = 0; i < max; i++) {\r\n if (i <= hi) {\r\n arr[i] = { filled: true, isInValue: true };\r\n continue;\r\n }\r\n if (i < v) {\r\n arr[i] = { filled: hi === -1, isInValue: true };\r\n continue;\r\n }\r\n arr[i] = { filled: false, isInValue: false };\r\n }\r\n return arr;\r\n });\r\n\r\n //! ControlValueAccessor's writeValue\r\n writeValue(v: number): void {\r\n this.value.set(v);\r\n }\r\n onStarClick(index: number): void {\r\n this.value.set(index + 1);\r\n }\r\n onStarHighlight(index: number): void {\r\n this._highlightedStarIndex.set(index);\r\n }\r\n setDisplayToValue() {\r\n this._highlightedStarIndex.set(null);\r\n }\r\n protected _emitChange(): void {\r\n this._onChangeRegistered?.(this.value());\r\n this.changeEvent.emit(this.value());\r\n }\r\n\r\n //* focus handlers\r\n private _isFocusEventSuppressed = false;\r\n private _isBlurEventSuppressed = false;\r\n private _currentFocusIndex: number | null = null;\r\n onStarButtonFocus(index: number, event: FocusEvent) {\r\n this._currentFocusIndex = index;\r\n if (this._isFocusEventSuppressed) {\r\n this._isFocusEventSuppressed = false;\r\n return;\r\n }\r\n this.focusEvent.emit(event);\r\n }\r\n onStarButtonBlur(event: FocusEvent): void {\r\n this._currentFocusIndex = null;\r\n if (this._isBlurEventSuppressed) {\r\n this._isBlurEventSuppressed = false;\r\n return;\r\n }\r\n this.blurEvent.emit(event);\r\n }\r\n focusStarButtonByIndex(index: number): void {\r\n if (!this.starButtonInstances()) return;\r\n this.starButtonInstances()[index]!.focus();\r\n }\r\n focusNextStarButton(offset: number): void {\r\n if (!this.starButtonInstances() || this._currentFocusIndex === null) return;\r\n\r\n let nextIndex = this._currentFocusIndex + offset;\r\n nextIndex = Math.min(nextIndex, this.max() - 1);\r\n nextIndex = Math.max(nextIndex, 0);\r\n\r\n this.focusStarButtonByIndex(nextIndex);\r\n }\r\n private _suppressFocusEvents(): void {\r\n this._isFocusEventSuppressed = true;\r\n this._isBlurEventSuppressed = true;\r\n }\r\n\r\n override focus(): void {\r\n this.focusStarButtonByIndex(0);\r\n }\r\n override blur(): void {\r\n if (!this.starButtonInstances() || this._currentFocusIndex === null) return;\r\n this.starButtonInstances()[this._currentFocusIndex]!.blur();\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'Tab': {\r\n this._onTabPress();\r\n return;\r\n }\r\n case 'ArrowRight': {\r\n this._onArrowRightPress(event);\r\n return;\r\n }\r\n case 'ArrowLeft': {\r\n this._onArrowLeftPress(event);\r\n return;\r\n }\r\n case 'Home': {\r\n this._onHomePress(event);\r\n return;\r\n }\r\n case 'End': {\r\n this._onEndPress(event);\r\n return;\r\n }\r\n }\r\n }\r\n private _onArrowRightPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this.focusNextStarButton(+1);\r\n }\r\n private _onArrowLeftPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this.focusNextStarButton(-1);\r\n }\r\n private _onHomePress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this.focusStarButtonByIndex(0);\r\n }\r\n private _onEndPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this._onTabPress();\r\n }\r\n private _onTabPress(): void {\r\n this.focusStarButtonByIndex(this.max() - 1);\r\n }\r\n}\r\n","<div\r\n class=\"ard-star-input\"\r\n [ngClass]=\"ngClasses()\"\r\n (mouseleave)=\"setDisplayToValue()\"\r\n>\r\n @for (object of starArray(); track $index) {\r\n <ard-star-button\r\n #starButton\r\n [class.ard-star-not-in-value]=\"!object.isInValue\"\r\n [color]=\"object.isInValue ? color() : 'none'\"\r\n clickStrategy=\"noop\"\r\n [selected]=\"object.filled\"\r\n (click)=\"onStarClick($index)\"\r\n (focus)=\"onStarButtonFocus($index, $event)\"\r\n (blur)=\"onStarButtonBlur($event)\"\r\n (mouseenter)=\"onStarHighlight($index)\"\r\n [tabIndex]=\"tabIndex()\"\r\n />\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumStarButtonModule } from '../star-button/star-button.module';\nimport { ArdiumStarInputComponent } from './star-input.component';\n\n@NgModule({\n declarations: [ArdiumStarInputComponent],\n imports: [CommonModule, ArdiumStarButtonModule],\n exports: [ArdiumStarInputComponent],\n})\nexport class ArdiumStarInputModule {}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n forwardRef,\r\n input,\r\n model,\r\n output,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from './../_internal/ngmodel-component';\r\nimport { ArdiumStarButtonComponent } from './../star/star-button/star-button.component';\r\nimport { StateboxState, StateboxValue, _StateboxInternalState } from './statebox.types';\r\n\r\nconst DEFAULT_STATES: StateboxState[] = [\r\n { value: false, color: 'none' },\r\n { value: true, color: 'secondary', icon: 'check_box', filled: true },\r\n];\r\n\r\n@Component({\r\n selector: 'ard-statebox',\r\n templateUrl: './statebox.component.html',\r\n styleUrls: ['./statebox.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumStarButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumStateboxComponent extends _NgModelComponentBase implements ControlValueAccessor {\r\n readonly states = input<StateboxState[]>(DEFAULT_STATES);\r\n readonly _states = computed(() => this.states().map(this._stateMapFn));\r\n readonly _defaultState = computed(() => this._states()[0]);\r\n\r\n readonly manualStateHandling = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! appearance\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n this.wrapperClasses(),\r\n this.internalState().useCustomColor ? 'ard-color-custom' : `ard-color-${this.internalState().color}`,\r\n this.internalState().filled ? 'ard-statebox-filled' : '',\r\n this.internalState().keepFrame ? 'ard-statebox-keep-frame' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! events\r\n readonly changeEvent = output<StateboxValue>({ alias: 'change' });\r\n readonly clickEvent = output<MouseEvent>({ alias: 'click' });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n this.state(); // let the effect know when to fire\r\n this._emitChange();\r\n });\r\n }\r\n\r\n //! state handlers\r\n readonly state = model<StateboxValue>(this._defaultState().value);\r\n private readonly _stateIndex = computed<number>(() => {\r\n const v = this.state();\r\n const foundStateIndex = this._states().findIndex(state => state.value === v);\r\n return foundStateIndex === -1 ? 0 : foundStateIndex;\r\n });\r\n readonly internalState = computed<_StateboxInternalState>(() => this._states()[this._stateIndex()]);\r\n\r\n writeValue(v: StateboxValue) {\r\n this.state.set(v);\r\n }\r\n\r\n //! change handlers\r\n private _stateMapFn(state: StateboxState): _StateboxInternalState {\r\n let display: string;\r\n let displayAsIcon = false;\r\n let keepFrame = true;\r\n\r\n if (state.icon) {\r\n display = state.icon;\r\n displayAsIcon = true;\r\n keepFrame = false;\r\n } else if (state.character) {\r\n display = state.character.substring(0, 1);\r\n } else {\r\n display = '';\r\n }\r\n return {\r\n value: state.value,\r\n display,\r\n displayAsIcon,\r\n color: state.color ?? state.customColor ?? 'none',\r\n useCustomColor: state.color ? false : true,\r\n colorOnCustom: state.colorOnCustom,\r\n filled: state.filled ?? false,\r\n keepFrame: state.keepFrame ?? keepFrame,\r\n };\r\n }\r\n\r\n //! event handlers\r\n onClick(event: MouseEvent) {\r\n if (this.manualStateHandling()) {\r\n this.clickEvent.emit(event);\r\n return;\r\n }\r\n\r\n let newIndex = this._stateIndex() + 1;\r\n if (newIndex >= this._states().length) {\r\n newIndex = 0;\r\n }\r\n this.state.set(this._states()[newIndex].value);\r\n }\r\n\r\n protected _emitChange() {\r\n const s = this.state();\r\n this._onChangeRegistered?.(s);\r\n this.changeEvent.emit(s);\r\n }\r\n\r\n readonly ngStyle = computed<Record<string, any>>(() => {\r\n let customColor = null;\r\n const state = this.internalState();\r\n if (state.useCustomColor) {\r\n customColor = state.color;\r\n }\r\n return {\r\n '--ard-custom-color': customColor,\r\n '--ard-on-custom-color': state.colorOnCustom ?? '#fff',\r\n };\r\n });\r\n}\r\n","<button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-statebox\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (click)=\"onClick($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"ngStyle()\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n @if (internalState().keepFrame) {\r\n <div class=\"ard-statebox-frame\"></div>\r\n }\r\n <div [class]=\"internalState().displayAsIcon ? 'ard-statebox-icon' : 'ard-statebox-character'\">\r\n {{ internalState().display }}\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStateboxComponent } from './statebox.component';\n\n@NgModule({\n declarations: [ArdiumStateboxComponent],\n imports: [CommonModule],\n exports: [ArdiumStateboxComponent],\n})\nexport class ArdiumStateboxModule {}\n","export const ArdSlideToggleAppearance = {\r\n Raised: 'raised',\r\n Contained: 'contained',\r\n} as const;\r\nexport type ArdSlideToggleAppearance = (typeof ArdSlideToggleAppearance)[keyof typeof ArdSlideToggleAppearance];\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, forwardRef, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { _BooleanComponentBase } from './../_internal/boolean-component';\r\nimport { ArdSlideToggleAppearance } from './slide-toggle.types';\r\n\r\n@Component({\r\n selector: 'ard-slide-toggle',\r\n templateUrl: './slide-toggle.component.html',\r\n styleUrls: ['./slide-toggle.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSlideToggleComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSlideToggleComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n readonly wrapperClass = input<string | undefined | null>(undefined);\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly appearance = input<ArdSlideToggleAppearance>(ArdSlideToggleAppearance.Raised);\r\n readonly icon = input<string | undefined | null>(undefined);\r\n readonly selectedIcon = input<string | undefined | null>(undefined);\r\n readonly unselectedIcon = input<string | undefined | null>(undefined);\r\n\r\n readonly ngClasses = computed(() => {\r\n return [`ard-color-${this.color()}`, `ard-appearance-${this.appearance()}`, this.wrapperClass() ?? ''].join(' ');\r\n });\r\n}\r\n","<button\r\n type=\"button\"\r\n role=\"checkbox\"\r\n [ariaChecked]=\"selected()\"\r\n class=\"ard-slide-toggle\"\r\n [class.ard-slide-toggle-selected]=\"selected()\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (click)=\"toggleSelected()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slide-toggle-track\">\r\n <div class=\"ard-slide-toggle-track-overlay\"></div>\r\n </div>\r\n <div class=\"ard-slide-toggle-handle\">\r\n <div class=\"ard-focus-overlay\"></div>\r\n @if (selectedIcon() ?? icon()) {\r\n <div class=\"ard-slide-toggle-icon ard-icon-for-selected\">{{ selectedIcon() ?? icon() }}</div>\r\n } @if (unselectedIcon() ?? icon()) {\r\n <div class=\"ard-slide-toggle-icon ard-icon-for-unselected\">{{ unselectedIcon() ?? icon() }}</div>\r\n }\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSlideToggleComponent } from './slide-toggle.component';\n\n@NgModule({\n declarations: [ArdiumSlideToggleComponent],\n imports: [CommonModule],\n exports: [ArdiumSlideToggleComponent],\n})\nexport class ArdiumSlideToggleModule {}\n","export const CheckboxState = {\n Unselected: 'unselected',\n Indeterminate: 'indeterminate',\n Selected: 'selected',\n} as const;\nexport type CheckboxState = (typeof CheckboxState)[keyof typeof CheckboxState];\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, forwardRef, input, model } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { _BooleanComponentBase } from './../_internal/boolean-component';\r\nimport { CheckboxState } from './checkbox.types';\r\n\r\n@Component({\r\n selector: 'ard-checkbox',\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumCheckboxComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumCheckboxComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n readonly wrapperClasses = input<string>('');\r\n readonly htmlId = input<string>('');\r\n\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n readonly unselectedColor = input<SimpleComponentColor>(SimpleComponentColor.None);\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-color-${this.color()}`,\r\n `ard-unselected-color-${this.unselectedColor()}`,\r\n `ard-checkbox-${this.state()}`,\r\n ].join(' ')\r\n );\r\n\r\n //override the \"selected\" setter, so it changes the state too.\r\n override set _selected(v: any) {\r\n const selected = coerceBooleanProperty(v);\r\n this.selected.set(selected);\r\n this.state.set(selected ? CheckboxState.Selected : CheckboxState.Unselected);\r\n }\r\n\r\n readonly state = model<CheckboxState>(CheckboxState.Unselected);\r\n\r\n //! click action\r\n toggleState() {\r\n let newState: CheckboxState = CheckboxState.Unselected;\r\n if (this.state() === CheckboxState.Unselected) {\r\n newState = CheckboxState.Selected;\r\n }\r\n this.state.set(newState);\r\n this.selected.set(this.state() === CheckboxState.Selected);\r\n\r\n this._emitChange();\r\n }\r\n}\r\n","<button\r\n class=\"ard-checkbox\"\r\n role=\"checkbox\"\r\n type=\"button\"\r\n [id]=\"htmlId()\"\r\n [ariaChecked]=\"selected()\"\r\n [tabindex]=\"tabIndex()\"\r\n [ngClass]=\"ngClasses()\"\r\n (click)=\"toggleState()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-checkbox-icon ard-icon-for-selected\"></div>\r\n <div class=\"ard-checkbox-icon ard-icon-for-indeterminate\"></div>\r\n <div class=\"ard-checkbox-icon ard-icon-for-unselected\"></div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumCheckboxComponent } from './checkbox.component';\n\n@NgModule({\n declarations: [ArdiumCheckboxComponent],\n imports: [CommonModule],\n exports: [ArdiumCheckboxComponent],\n})\nexport class ArdiumCheckboxModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ButtonType } from '../../types/button.types';\r\nimport { _ButtonBase } from '../_button-base';\r\nimport { FABSize } from '../general-button.types';\r\n\r\n@Component({\r\n selector: 'ard-fab',\r\n templateUrl: './fab.component.html',\r\n styleUrls: ['./fab.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumFabComponent extends _ButtonBase {\r\n readonly type = input<ButtonType>(ButtonType.Button);\r\n \r\n //! appearance\r\n readonly size = input<FABSize>(FABSize.Standard);\r\n\r\n readonly extended = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-fab-size-${this.size()}`,\r\n this.lightColoring() ? `ard-light-coloring` : '',\r\n this.extended() ? 'ard-fab-extended' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n class=\"ard-fab\"\r\n [type]=\"type()\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div\r\n class=\"ard-button-content\"\r\n #content\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumFabComponent } from './fab.component';\n\n@NgModule({\n declarations: [ArdiumFabComponent],\n imports: [CommonModule],\n exports: [ArdiumFabComponent],\n})\nexport class ArdiumFabModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../../_internal/focusable-component';\r\nimport { ButtonType } from '../../types/button.types';\r\nimport { ComponentColor } from '../../types/colors.types';\r\n\r\n@Component({\r\n selector: 'ard-icon-button',\r\n templateUrl: './icon-button.component.html',\r\n styleUrls: ['./icon-button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumIconButtonComponent extends _FocusableComponentBase {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly type = input<ButtonType>(ButtonType.Button);\r\n\r\n //! button settings\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly lightColoring = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n 'ard-appearance-transparent',\r\n `ard-color-${this.disabled() ? ComponentColor.None : this.color()}`,\r\n this.lightColoring() ? `ard-light-coloring` : '',\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n class=\"ard-icon-button\"\r\n [type]=\"type()\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumIconButtonComponent } from './icon-button.component';\n\n@NgModule({\n declarations: [ArdiumIconButtonComponent],\n imports: [CommonModule],\n exports: [ArdiumIconButtonComponent],\n})\nexport class ArdiumIconButtonModule {}\n","export const CheckboxListAlignType = {\n LeftClumped: 'left-clumped',\n LeftSplit: 'left-split',\n RightSplit: 'right-split',\n RightClumped: 'right-clumped',\n} as const;\nexport type CheckboxListAlignType = (typeof CheckboxListAlignType)[keyof typeof CheckboxListAlignType];\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { SimpleItemStorage, SimpleItemStorageHost } from '../_internal/item-storages/simple-item-storage';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdOptionSimple, CompareWithFn } from '../types/item-storage.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { CheckboxListAlignType } from './checkbox-list.types';\r\n\r\n@Component({\r\n selector: 'ard-checkbox-list',\r\n templateUrl: './checkbox-list.component.html',\r\n styleUrls: ['./checkbox-list.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumCheckboxListComponent extends _NgModelComponentBase implements SimpleItemStorageHost, AfterViewInit {\r\n readonly htmlId = input<string>(crypto.randomUUID());\r\n\r\n @HostBinding('attr.id')\r\n get _htmlIdHostAttribute() {\r\n return this.htmlId();\r\n }\r\n\r\n readonly DEFAULTS = {\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n disabledFrom: 'disabled',\r\n };\r\n // static values. Not meant to be changed.\r\n readonly multiselectable = signal<true>(true);\r\n readonly isValueRequired = signal<false>(false);\r\n readonly _componentId = '300';\r\n readonly _componentName = 'checkbox-list';\r\n\r\n private readonly _itemStorage = new SimpleItemStorage(this);\r\n\r\n readonly valueFrom = input<string>(this.DEFAULTS.valueFrom);\r\n readonly labelFrom = input<string>(this.DEFAULTS.labelFrom);\r\n readonly disabledFrom = input<string>(this.DEFAULTS.disabledFrom);\r\n\r\n @Input()\r\n set items(v: any[]) {\r\n this._itemStorage.setItems(v);\r\n }\r\n get items(): ArdOptionSimple[] {\r\n return this._itemStorage.items();\r\n }\r\n\r\n readonly compareWith = input<Nullable<CompareWithFn>>(undefined);\r\n\r\n readonly invertDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly maxSelectedItems = input<number, any>(Infinity, { transform: v => coerceNumberProperty(v) });\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly align = input<CheckboxListAlignType>(CheckboxListAlignType.LeftClumped);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [`ard-color-${this.color()}`, `ard-align-${this.align()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! value\r\n @Input()\r\n get value(): any {\r\n return this._itemStorage.value();\r\n }\r\n set value(v: any) {\r\n this.writeValue(v);\r\n }\r\n\r\n readonly valueChange = output<any>();\r\n readonly changeEvent = output<any>({ alias: 'change' });\r\n\r\n private _valueBeforeInit: any;\r\n writeValue(v: any): void {\r\n if (!this._isViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this._itemStorage.writeValue(v);\r\n }\r\n\r\n private _isViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._isViewInit = true;\r\n\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n }\r\n }\r\n\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.changeEvent.emit(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n onItemHighlight(v: ArdOptionSimple): void {\r\n this._itemStorage.highlightSingleItem(v);\r\n }\r\n onItemFocus(v: ArdOptionSimple): void {\r\n this._itemStorage.highlightSingleItem(v);\r\n }\r\n onItemBlur(): void {\r\n this._itemStorage.unhighlightAll();\r\n }\r\n selectItem(v: ArdOptionSimple): void {\r\n this._itemStorage.selectItem(v);\r\n this._emitChange();\r\n }\r\n unselectItem(v: ArdOptionSimple): void {\r\n this._itemStorage.unselectItem(v);\r\n this._emitChange();\r\n }\r\n toggleItem(v: ArdOptionSimple): void {\r\n if (v.selected()) {\r\n this.unselectItem(v);\r\n return;\r\n }\r\n this.selectItem(v);\r\n }\r\n}\r\n","<div\r\n class=\"ard-checkbox-list\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (item of items; track item.index()) {\r\n <div\r\n class=\"ard-checkbox-list__item\"\r\n [class.ard-item-highlighted]=\"item.highlighted()\"\r\n [class.ard-item-disabled]=\"item.disabled()\"\r\n (mouseover)=\"onItemHighlight(item)\"\r\n (mouseleave)=\"onItemBlur()\"\r\n (click)=\"toggleItem(item)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-checkbox\r\n [selected]=\"item.selected()\"\r\n [disabled]=\"item.disabled()\"\r\n [color]=\"color()\"\r\n [htmlId]=\"htmlId() + item.index()\"\r\n [tabIndex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onItemFocus(item)\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onItemBlur()\"\r\n (select)=\"selectItem(item)\"\r\n (unselect)=\"unselectItem(item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n <label [for]=\"htmlId() + item.index()\">\r\n {{ item.label() }}\r\n </label>\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumCheckboxListComponent } from './checkbox-list.component';\nimport { ArdiumCheckboxModule } from '../checkbox/checkbox.module';\n\n@NgModule({\n declarations: [ArdiumCheckboxListComponent],\n imports: [CommonModule, ArdiumCheckboxModule],\n exports: [ArdiumCheckboxListComponent],\n})\nexport class ArdiumCheckboxListModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\n\r\n@Component({\r\n selector: 'ard-spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrls: ['./spinner.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumSpinnerComponent {\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n\r\n readonly ngClasses = computed((): string => [`ard-color-${this.color()}`].join(' '));\r\n}\r\n","<svg\r\n class=\"ard-spinner\"\r\n [ngClass]=\"ngClasses()\"\r\n viewBox=\"0 0 100 100\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n>\r\n <circle\r\n class=\"ard-spinner-circle\"\r\n cx=\"50\"\r\n cy=\"50\"\r\n r=\"20\"\r\n ></circle>\r\n</svg>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSpinnerComponent } from './spinner.component';\n\n@NgModule({\n declarations: [ArdiumSpinnerComponent],\n imports: [CommonModule],\n exports: [ArdiumSpinnerComponent],\n})\nexport class ArdiumSpinnerModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { ProgressBarValueContext } from './progress-bar.types';\n\n@Directive({ selector: 'ard-progress-bar > ng-template[ard-value-tmp]' })\nexport class ArdProgressBarValueTemplateDirective {\n constructor(public template: TemplateRef<ProgressBarValueContext>) {}\n}\n","export interface ProgressBarValueContext {\r\n value: number;\r\n $implicit: number;\r\n}\r\n\r\nexport const ProgressBarSize = {\r\n Default: 'default',\r\n Auto: 'auto',\r\n} as const;\r\nexport type ProgressBarSize = (typeof ProgressBarSize)[keyof typeof ProgressBarSize];\r\n\r\nexport const ProgressBarAppearance = {\r\n Colorless: 'colorless',\r\n Colored: 'colored',\r\n} as const;\r\nexport type ProgressBarAppearance = (typeof ProgressBarAppearance)[keyof typeof ProgressBarAppearance];\r\n\r\nexport const ProgressBarVariant = {\r\n Sharp: 'sharp',\r\n Pill: 'pill',\r\n} as const;\r\nexport type ProgressBarVariant = (typeof ProgressBarVariant)[keyof typeof ProgressBarVariant];\r\n\r\nexport const ProgressBarMode = {\r\n Determinate: 'determinate',\r\n Indeterminate: 'indeterminate',\r\n Buffer: 'buffer',\r\n Query: 'query',\r\n} as const;\r\nexport type ProgressBarMode = (typeof ProgressBarMode)[keyof typeof ProgressBarMode];\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n input,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { ArdProgressBarValueTemplateDirective } from './progress-bar.directive';\r\nimport { ProgressBarMode, ProgressBarSize, ProgressBarValueContext, ProgressBarVariant } from './progress-bar.types';\r\n\r\n@Component({\r\n selector: 'ard-progress-bar',\r\n templateUrl: './progress-bar.component.html',\r\n styleUrls: ['./progress-bar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumProgressBarComponent {\r\n readonly value = input<number, any>(0, { transform: v => coerceNumberProperty(v) });\r\n readonly bufferValue = input<number, any>(0, { transform: v => coerceNumberProperty(v) });\r\n\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n readonly variant = input<ProgressBarVariant>(ProgressBarVariant.Pill);\r\n readonly size = input<ProgressBarSize>(ProgressBarSize.Default);\r\n readonly mode = input<ProgressBarMode>(ProgressBarMode.Determinate);\r\n\r\n readonly hideValue = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-progress-bar__size-${this.size()}`,\r\n `ard-progress-bar__mode-${this.mode()}`,\r\n this.hideValue() ? 'ard-progress-bar__hide-value' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! error detection\r\n constructor() {\r\n effect(() => {\r\n if (this.mode() === ProgressBarMode.Buffer && this.size() === ProgressBarSize.Auto) {\r\n console.error(\r\n new Error(\r\n `ARD-NF4010: Forbidden param combination in <ard-progress-bar>: cannot use 'mode=\"buffer\"' and 'size=\"auto\"' at the same time.`\r\n )\r\n );\r\n }\r\n });\r\n }\r\n\r\n //! bar styling\r\n readonly cssVariables = computed<string>(() => {\r\n if (this.mode() === ProgressBarMode.Indeterminate || this.mode() === ProgressBarMode.Query) {\r\n return '--ard-_progress-bar-main: 0;';\r\n }\r\n const mainVariable = `--ard-_progress-bar-main: ${this.value()}%;`;\r\n if (this.mode() === ProgressBarMode.Buffer) {\r\n return mainVariable + `--ard-_progress-bar-buffer: ${this.bufferValue()}%;`;\r\n }\r\n return mainVariable;\r\n });\r\n\r\n //! templates\r\n @ContentChild(ArdProgressBarValueTemplateDirective, { read: TemplateRef })\r\n valueTemplate?: TemplateRef<any>;\r\n\r\n readonly getValueContext = computed<ProgressBarValueContext>(() => ({\r\n value: this.value(),\r\n $implicit: this.value(),\r\n }));\r\n}\r\n","<div\r\n class=\"ard-progress-bar\"\r\n role=\"progressbar\"\r\n [style]=\"cssVariables()\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-progress-bar__background\"></div>\r\n <div class=\"ard-progress-bar__overlay-buffer\"></div>\r\n <div class=\"ard-progress-bar__overlay\"></div>\r\n <div class=\"ard-progress-bar__value\">\r\n <ng-template\r\n #defaultValueTemplate\r\n let-value\r\n >\r\n {{ value * 100 | number: '1.0-0' }}%\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"getValueContext()\"\r\n ></ng-template>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumProgressBarComponent } from './progress-bar.component';\nimport { ArdProgressBarValueTemplateDirective } from './progress-bar.directive';\n\n@NgModule({\n declarations: [ArdiumProgressBarComponent, ArdProgressBarValueTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumProgressBarComponent, ArdProgressBarValueTemplateDirective],\n})\nexport class ArdiumProgressBarModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { ProgressCircleValueContext } from './progress-circle.types';\n\n@Directive({ selector: 'ard-progress-circle > ng-template[ard-value-tmp]' })\nexport class ArdProgressCircleValueTemplateDirective {\n constructor(public template: TemplateRef<ProgressCircleValueContext>) {}\n}\n","export interface ProgressCircleValueContext {\r\n value: number;\r\n percentValue: number;\r\n max: number;\r\n $implicit: number;\r\n}\r\n\r\nexport const ProgressCircleAppearance = {\r\n Transparent: 'transparent',\r\n Colorless: 'colorless',\r\n Colored: 'colored',\r\n} as const;\r\nexport type ProgressCircleAppearance = (typeof ProgressCircleAppearance)[keyof typeof ProgressCircleAppearance];\r\n\r\nexport const ProgressCircleVariant = {\r\n Full: 'full',\r\n Ring: 'ring',\r\n} as const;\r\nexport type ProgressCircleVariant = (typeof ProgressCircleVariant)[keyof typeof ProgressCircleVariant];\r\n","import { ChangeDetectionStrategy, Component, ContentChild, TemplateRef, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { ArdProgressCircleValueTemplateDirective } from './progress-circle.directive';\r\nimport { ProgressCircleAppearance, ProgressCircleValueContext, ProgressCircleVariant } from './progress-circle.types';\r\n\r\n@Component({\r\n selector: 'ard-progress-circle',\r\n templateUrl: './progress-circle.component.html',\r\n styleUrls: ['./progress-circle.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumProgressCircleComponent {\r\n readonly value = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) });\r\n readonly max = input<number, any>(100, { transform: v => coerceNumberProperty(v, 100) });\r\n\r\n readonly percentValue = computed<number>(() => (this.value() / this.max()) * 100);\r\n\r\n //! appearance\r\n readonly appearance = input<ProgressCircleAppearance>(ProgressCircleAppearance.Transparent);\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n readonly variant = input<ProgressCircleVariant>(ProgressCircleVariant.Full);\r\n\r\n readonly hideValue = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly reverse = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-progress-circle-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n this.hideValue() ? 'ard-progress-circle-hide-value' : '',\r\n this.reverse() ? 'ard-progress-circle-reversed' : '',\r\n ].join(' ')\r\n );\r\n\r\n readonly fillPercentVariable = computed<string>(() => {\r\n const fillAmount = this.reverse() ? 100 - this.percentValue() : this.percentValue();\r\n return `--ard-_progress-circle-fill-amount: ${fillAmount}%`;\r\n });\r\n\r\n //! templates\r\n @ContentChild(ArdProgressCircleValueTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n valueTemplate?: TemplateRef<any>;\r\n\r\n readonly getValueContext = computed<ProgressCircleValueContext>(() => ({\r\n value: this.value(),\r\n percentValue: Math.round(this.percentValue()),\r\n max: this.max(),\r\n $implicit: Math.round(this.percentValue()),\r\n }));\r\n}\r\n","<div\r\n class=\"ard-progress-circle\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-progress-circle-background\"></div>\r\n <div\r\n class=\"ard-progress-circle-overlay\"\r\n [style]=\"fillPercentVariable()\"\r\n ></div>\r\n <div class=\"ard-progress-circle-value\">\r\n <ng-template\r\n #defaultValueTemplate\r\n let-value\r\n >\r\n {{ value }}%\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"getValueContext()\"\r\n ></ng-template>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumProgressCircleComponent } from './progress-circle.component';\nimport { ArdProgressCircleValueTemplateDirective } from './progress-circle.directive';\n\n@NgModule({\n declarations: [ArdiumProgressCircleComponent, ArdProgressCircleValueTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumProgressCircleComponent, ArdProgressCircleValueTemplateDirective],\n})\nexport class ArdiumProgressCircleModule {}\n","export const BadgeSize = {\n Small: 'small',\n Medium: 'medium',\n Large: 'large',\n} as const;\nexport type BadgeSize = (typeof BadgeSize)[keyof typeof BadgeSize];\n\nexport const BadgePosition = {\n AboveBefore: 'above-before',\n AboveAfter: 'above-after',\n BelowBefore: 'below-before',\n BelowAfter: 'below-after',\n Before: 'before',\n After: 'after',\n Above: 'above',\n Below: 'below',\n} as const;\nexport type BadgePosition = (typeof BadgePosition)[keyof typeof BadgePosition];\n","import { AfterViewInit, Directive, ElementRef, OnChanges, OnDestroy, Renderer2, computed, input, signal } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { FormElementVariant } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { BadgePosition, BadgeSize } from './badge.types';\r\n\r\n@Directive({\r\n selector: '[ardBadge]',\r\n})\r\nexport class ArdiumBadgeDirective implements OnChanges, AfterViewInit, OnDestroy {\r\n constructor(\r\n private _elRef: ElementRef,\r\n private _renderer: Renderer2\r\n ) {}\r\n\r\n readonly text = input<string>('', { alias: 'ardBadge' });\r\n\r\n readonly color = input<ComponentColor>(ComponentColor.Primary, { alias: 'ardBadgeColor' });\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Pill, { alias: 'ardBadgeVariant' });\r\n readonly size = input<BadgeSize>(BadgeSize.Medium, { alias: 'ardBadgeSize' });\r\n\r\n readonly position = input<BadgePosition, BadgePosition>(BadgePosition.AboveAfter, {\r\n alias: 'ardBadgePosition',\r\n transform: v => {\r\n switch (v) {\r\n case BadgePosition.Before:\r\n return BadgePosition.AboveBefore;\r\n case BadgePosition.After:\r\n case BadgePosition.Above:\r\n return BadgePosition.AboveAfter;\r\n case BadgePosition.Below:\r\n return BadgePosition.BelowAfter;\r\n\r\n default:\r\n return v;\r\n }\r\n },\r\n });\r\n\r\n readonly ariaLabel = input<string>('', { alias: 'ardBadgeAriaLabel' });\r\n\r\n readonly hidden = input<boolean, any>(false, { alias: 'ardBadgeHidden', transform: v => coerceBooleanProperty(v) });\r\n readonly overlap = input<boolean, any>(false, { alias: 'ardBadgeOverlap', transform: v => coerceBooleanProperty(v) });\r\n\r\n private readonly _elementClasses = computed(() =>\r\n [\r\n 'ard-badge',\r\n `ard-color-${this.color()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-badge-size-${this.size()}`,\r\n `ard-badge-position-${this.position()}`,\r\n this.hidden() ? 'ard-badge-hidden' : '',\r\n this.overlap() ? 'ard-badge-overlap' : 'ard-badge-no-overlap',\r\n ].join(' ')\r\n );\r\n\r\n private _createBadgeElement(): HTMLElement {\r\n try {\r\n const R = this._renderer;\r\n const element = R.createElement('div') as HTMLDivElement;\r\n R.setAttribute(element, 'class', this._elementClasses());\r\n R.setAttribute(element, 'aria-label', this.ariaLabel());\r\n\r\n if (this.text()) {\r\n const textHost = R.createElement('div') as HTMLDivElement;\r\n R.addClass(textHost, 'ard-badge-content');\r\n\r\n const text = R.createText(this.text());\r\n R.appendChild(textHost, text);\r\n R.appendChild(element, textHost);\r\n }\r\n\r\n return element;\r\n } catch (error: unknown) {\r\n if (error instanceof Error) {\r\n error.message = 'ARD-FT4030: An unknown error has occured while rendering ardBadge: ' + error.message;\r\n throw error;\r\n }\r\n throw new Error(`ARD-FT4030: An unknown error has occured while rendering ardBadge: ` + error);\r\n }\r\n }\r\n\r\n private readonly _badgeElement = signal<Nullable<HTMLElement>>(undefined);\r\n ngOnChanges(): void {\r\n if (this._badgeElement()) {\r\n this._renderer.removeChild(this._elRef.nativeElement, this._badgeElement());\r\n }\r\n const element = this._createBadgeElement();\r\n this._badgeElement.set(element);\r\n this._renderer.appendChild(this._elRef.nativeElement, element);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._renderer.addClass(this._elRef.nativeElement, 'ard-badge-host');\r\n }\r\n ngOnDestroy(): void {\r\n if (this._badgeElement()) {\r\n this._renderer.removeChild(this._elRef.nativeElement, this._badgeElement());\r\n }\r\n this._renderer.removeClass(this._elRef.nativeElement, 'ard-badge-host');\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumBadgeDirective } from './badge.directive';\n\n@NgModule({\n declarations: [ArdiumBadgeDirective],\n imports: [CommonModule],\n exports: [ArdiumBadgeDirective],\n})\nexport class ArdiumBadgeModule {}\n","export const ColorDisplayAppearance = {\n Rounded: 'rounded with-border',\n Circle: 'circle with-border',\n Sharp: 'sharp with-border',\n RoundedBorderless: 'rounded',\n CircleBorderless: 'circle',\n SharpBorderless: 'sharp',\n} as const;\nexport type ColorDisplayAppearance = (typeof ColorDisplayAppearance)[keyof typeof ColorDisplayAppearance];\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ViewEncapsulation, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport * as Color from 'color';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { ColorDisplayAppearance } from './color-display.types';\r\n\r\n@Component({\r\n selector: 'ard-color-display',\r\n templateUrl: './color-display.component.html',\r\n styleUrls: ['./color-display.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumColorDisplayComponent implements AfterViewInit {\r\n readonly ariaLabel = input<string>('');\r\n\r\n readonly withLabel = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! appearance\r\n readonly appearance = input<ColorDisplayAppearance>(ColorDisplayAppearance.Rounded);\r\n\r\n get ngClasses(): string {\r\n const apprncParts = this.appearance().split(' ');\r\n return `ard-appearance-${apprncParts[0]} ${apprncParts[1] ? 'ard-with-border' : ''}`;\r\n }\r\n\r\n //! color\r\n readonly color = input<Nullable<string>, any>(undefined, { transform: v => Color(v).hex() });\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.color()) console.warn(`ARD-WA3000: Using <ard-color-display> without specifying the [color] field.`);\r\n }\r\n}\r\n","<div\r\n class=\"ard-color-display-wrapper\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n <div\r\n class=\"ard-color-display\"\r\n [title]=\"color()\"\r\n [style]=\"{ background: color() }\"\r\n ></div>\r\n <span\r\n class=\"ard-color-display-label\"\r\n *ngIf=\"withLabel\"\r\n >{{ color() }}</span\r\n >\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumColorDisplayComponent } from './color-display.component';\n\n@NgModule({\n declarations: [ArdiumColorDisplayComponent],\n imports: [CommonModule],\n exports: [ArdiumColorDisplayComponent],\n})\nexport class ArdiumColorDisplayModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { keyToString } from 'key-display-names';\n\n@Pipe({\n name: 'kbd',\n})\nexport class ArdiumKbdPipe implements PipeTransform {\n transform(value: string, useShort?: boolean): string {\n return keyToString(value, useShort);\n }\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { FormElementAppearance } from './../types/theming.types';\r\n\r\n@Component({\r\n selector: 'ard-kbd',\r\n templateUrl: './kbd.component.html',\r\n styleUrls: ['./kbd.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumKbdComponent implements AfterViewInit {\r\n readonly contentWrapper = viewChild<ElementRef<HTMLElement>>('contentWrapperEl');\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.key() && !this.contentWrapper()!.nativeElement.innerText) {\r\n throw new Error(`ARD-FT5030: Using <ard-kbd> without specifying the [key] field is not allowed.`);\r\n }\r\n }\r\n\r\n readonly key = input<string>('');\r\n readonly full = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Filled);\r\n\r\n readonly ngClasses = computed<string>(() => [`ard-appearance-${this.appearance()}`].join(' '));\r\n}\r\n","<kbd\r\n class=\"ard-kbd\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n {{ key() || contentWrapper()?.nativeElement?.innerText || '' | kbd: !full() }}\r\n</kbd>\r\n\r\n<div\r\n #contentWrapperEl\r\n class=\"ard-kbd-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumKbdComponent } from './kbd.component';\nimport { ArdiumKbdPipe } from './kbd.pipe';\n\n@NgModule({\n declarations: [ArdiumKbdComponent, ArdiumKbdPipe],\n imports: [CommonModule],\n exports: [ArdiumKbdComponent, ArdiumKbdPipe],\n})\nexport class ArdiumKbdModule {}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { FormElementAppearance } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\n@Component({\r\n selector: 'ard-kbd-shortcut',\r\n templateUrl: './kbd-shortcut.component.html',\r\n styleUrls: ['./kbd-shortcut.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumKbdShortcutComponent implements AfterViewInit {\r\n readonly contentWrapper = viewChild<ElementRef<HTMLElement>>('contentWrapperEl');\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.keys() && !this.contentWrapper()?.nativeElement.innerText) {\r\n throw new Error(`ARD-FT5040: Using <ard-kbd-shortcut> without specifying the [keys] field is not allowed.`);\r\n }\r\n }\r\n\r\n readonly splitRegex = /[+ ]/;\r\n\r\n readonly keys = input<Nullable<string[]>, Nullable<string | string[]>>(undefined, {\r\n transform: v => {\r\n //assign from string\r\n if (typeof v === 'string') {\r\n return v.split(this.splitRegex);\r\n }\r\n //assign undefined or array\r\n return v && [...v];\r\n },\r\n });\r\n\r\n readonly full = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Filled);\r\n\r\n readonly ngClasses = computed<string>(() => [`ard-appearance-${this.appearance}`].join(' '));\r\n}\r\n","<div\r\n class=\"ard-kbd-shortcut\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n @for (key of keys() ?? contentWrapper()?.nativeElement?.innerText?.split(splitRegex); track $index) {\r\n @if ($index !== 0) {\r\n <span>+</span>\r\n }\r\n <ard-kbd\r\n [appearance]=\"appearance()\"\r\n [full]=\"full()\"\r\n [key]=\"key\"\r\n />\r\n }\r\n</div>\r\n\r\n<div\r\n #contentWrapperEl\r\n class=\"ard-kbd-shortcut-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumKbdShortcutComponent } from './kbd-shortcut.component';\nimport { ArdiumKbdModule } from '../kbd/kbd.module';\n\n@NgModule({\n declarations: [ArdiumKbdShortcutComponent],\n imports: [CommonModule, ArdiumKbdModule],\n exports: [ArdiumKbdShortcutComponent],\n})\nexport class ArdiumKbdShortcutModule {}\n","import { PaginationCurrentItemsContext } from '../_internal/models/pagination.model';\n\nexport const PaginationAlign = {\n Left: 'left',\n Center: 'center',\n Right: 'right',\n Split: 'split',\n} as const;\nexport type PaginationAlign = (typeof PaginationAlign)[keyof typeof PaginationAlign];\n\nexport type CurrentItemsFormatFn = (context: PaginationCurrentItemsContext) => string;\n","import { TemplateRef } from '@angular/core';\nimport { ComponentColor } from '../types/colors.types';\nimport { NonEmptyArray } from '../types/utility.types';\nimport { CheckboxState } from '../checkbox/checkbox.types';\n\nexport type DataSource = string | { type: 'checkbox' | 'autocount' };\n\nexport interface _GenericColumn {\n header: string | { template: string | TemplateRef<unknown> };\n cellClass?: string;\n}\n\nexport interface TableDataColumn extends _GenericColumn {\n dataSource: DataSource;\n template?: string | TemplateRef<unknown>;\n sortable?: boolean;\n sortFn?: (columnAData: any, columnBData: any) => number;\n highlight?: boolean | ComponentColor;\n width?: string | number;\n minWidth?: string | number;\n isRowHeader?: boolean;\n}\nexport interface TableSubheader extends _GenericColumn {\n children: NonEmptyArray<TableSubheader | TableDataColumn>;\n}\n\nexport const SortType = {\n Ascending: 'ascending',\n Descending: 'descending',\n} as const;\nexport type SortType = (typeof SortType)[keyof typeof SortType];\n\n//! contexts\nexport interface TableSubheaderContext {\n $implicit: string;\n header: string;\n}\nexport interface TableHeaderContext extends TableSubheaderContext {\n sortable: boolean;\n sortType: SortType | null;\n onTriggerSort: (event?: MouseEvent) => void;\n onTriggerResetSort: (event?: MouseEvent) => void;\n}\nexport interface TableCheckboxContext {\n $implicit: boolean;\n selected: boolean;\n disabled: boolean;\n onChange: (event: MouseEvent) => void;\n}\nexport interface TableHeaderCheckboxContext {\n $implicit: CheckboxState;\n state: CheckboxState;\n onChange: () => void;\n}\nexport interface TableCaptionContext {\n $implicit: string;\n}\n\n//! appearance-related\nexport const TableAppearance = {\n Strong: 'strong',\n Light: 'light',\n Colorless: 'colorless',\n} as const;\nexport type TableAppearance = (typeof TableAppearance)[keyof typeof TableAppearance];\n\nexport const TableVariant = {\n Rounded: 'rounded',\n Sharp: 'sharp',\n} as const;\nexport type TableVariant = (typeof TableVariant)[keyof typeof TableVariant];\n\nexport const TablePaginationStrategy = {\n Noop: 'noop',\n Slice: 'slice',\n} as const;\nexport type TablePaginationStrategy = (typeof TablePaginationStrategy)[keyof typeof TablePaginationStrategy];\n\nexport const TableAlignType = {\n TopLeft: 'top-left',\n TopCenter: 'top-center',\n TopRight: 'top-right',\n CenterLeft: 'center-left',\n Center: 'center-center',\n CenterRight: 'center-right',\n BottomLeft: 'bottom-left',\n BottomCenter: 'bottom-center',\n BottomRight: 'bottom-right',\n} as const;\nexport type TableAlignType = (typeof TableAlignType)[keyof typeof TableAlignType];\n","import { TableDataColumn, TableSubheader } from './table.types';\n\nexport function isTableSubheader(v: TableDataColumn | TableSubheader): v is TableSubheader {\n return 'children' in v;\n}\n\nexport function areAllDataColumns(cols: (TableDataColumn | TableSubheader)[]): boolean {\n return cols.every(col => !isTableSubheader(col));\n}\n\nexport function merge2dArrays<T>(destArr: T[][], arr: T[][]): void {\n const diff = arr.length - destArr.length;\n if (diff > 0) {\n for (let i = 0; i < diff; i++) {\n destArr.push([]);\n }\n }\n for (let row = 0; row < arr.length; row++) {\n destArr[row] = [...destArr[row], ...arr[row]];\n }\n}\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { evaluate, isDefined, isNull } from 'simple-bool';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { SortType, TableDataColumn, TablePaginationStrategy, TableSubheader } from './table.types';\r\nimport { areAllDataColumns, isTableSubheader, merge2dArrays } from './utils';\r\n\r\nexport class ArdTableRow {\r\n private readonly _itemData = signal<any>(undefined);\r\n readonly itemData = this._itemData.asReadonly();\r\n\r\n private readonly _index = signal<number>(-1);\r\n readonly index = this._index.asReadonly();\r\n\r\n private readonly _isEmpty = signal<boolean>(false);\r\n readonly isEmpty = this._isEmpty.asReadonly();\r\n\r\n private readonly _data = signal<any[]>([]);\r\n readonly data = this._data.asReadonly();\r\n\r\n private readonly _dataColumns = signal<TableDataColumn[]>([]);\r\n readonly dataColumns = this._dataColumns.asReadonly();\r\n\r\n private readonly _class = signal<string>('');\r\n readonly class = this._class.asReadonly();\r\n\r\n readonly disabled = signal<boolean>(false);\r\n readonly bold = signal<boolean>(false);\r\n readonly selected = signal<boolean>(false);\r\n readonly highlighted = signal<boolean>(false);\r\n\r\n constructor(\r\n itemData: any,\r\n index: number,\r\n data: any[],\r\n dataColumns: TableDataColumn[],\r\n disabled: boolean,\r\n bold: boolean,\r\n isEmpty = false\r\n ) {\r\n this._itemData.set(itemData);\r\n this._index.set(index);\r\n this._data.set(data);\r\n this._dataColumns.set(dataColumns);\r\n this.disabled.set(disabled);\r\n this.bold.set(bold);\r\n this._isEmpty.set(isEmpty);\r\n }\r\n static newEmptyCell(index: number) {\r\n return new ArdTableRow(null, index, [], [], false, false, true);\r\n }\r\n}\r\nexport interface TableItemStorageHostDefaults {\r\n readonly rowDisabledFrom: string;\r\n readonly rowBoldFrom: string;\r\n}\r\nexport interface TableItemStorageHost {\r\n readonly rowDisabledFrom: Signal<Nullable<string>>;\r\n readonly rowBoldFrom: Signal<Nullable<string>>;\r\n readonly invertRowDisabled: Signal<Nullable<boolean>>;\r\n readonly invertRowBold: Signal<Nullable<boolean>>;\r\n readonly data: Signal<Nullable<any>>[];\r\n readonly DEFAULTS: TableItemStorageHostDefaults;\r\n readonly maxSelectedItems: Signal<Nullable<number>>;\r\n readonly treatDataSourceAsString: Signal<Nullable<boolean>>;\r\n\r\n readonly paginated: Signal<boolean>;\r\n readonly paginationStrategy: Signal<TablePaginationStrategy>;\r\n readonly itemsPerPage: Signal<number>;\r\n readonly page: Signal<number>;\r\n}\r\nexport class HeaderCell {\r\n readonly cell = signal<TableDataColumn | TableSubheader>(undefined as any);\r\n readonly colspan = signal<number>(1);\r\n readonly rowspan = signal<number>(1);\r\n\r\n constructor(cell: TableDataColumn | TableSubheader, colspan = 1, rowspan = 1) {\r\n this.cell.set(cell);\r\n this.colspan.set(colspan);\r\n this.rowspan.set(rowspan);\r\n }\r\n\r\n get width(): string | null {\r\n const cell = this.cell();\r\n if (isTableSubheader(cell)) return null;\r\n return this._getWidth(cell.width);\r\n }\r\n get minWidth(): string | null {\r\n const cell = this.cell();\r\n if (isTableSubheader(cell)) return null;\r\n return this._getWidth(cell.minWidth);\r\n }\r\n /**\r\n * Thransforms a numeric width into a CSS string if needed. Pure function.\r\n * @param width the width to be converted.\r\n * @returns The width expressed as a CSS-compatible string or null.\r\n */\r\n private _getWidth(width: string | number | undefined): string | null {\r\n if (!width) return null;\r\n if (typeof width === 'number') return `${width}px`;\r\n return width;\r\n }\r\n}\r\n\r\nexport class TableItemStorage {\r\n private readonly _items = signal<ArdTableRow[]>([]);\r\n private readonly _sortedItems = signal<ArdTableRow[]>([]);\r\n\r\n private readonly _dataColumns = signal<TableDataColumn[]>([]);\r\n private readonly _headerCells = signal<HeaderCell[][]>([]);\r\n\r\n constructor(private readonly _ardParentComp: TableItemStorageHost) {}\r\n\r\n /**\r\n * Gets all items.\r\n */\r\n readonly items = this._items.asReadonly();\r\n readonly sortedItems = this._sortedItems.asReadonly();\r\n /**\r\n * Gets items based on the current pagination state.\r\n */\r\n readonly paginatedItems = computed(() => {\r\n if (!this._ardParentComp.paginated() || this._ardParentComp.paginationStrategy() === TablePaginationStrategy.Noop) {\r\n return this.sortedItems();\r\n }\r\n const page = this._ardParentComp.page();\r\n const IPP = this._ardParentComp.itemsPerPage();\r\n const itemsStart = (page - 1) * IPP;\r\n const itemsEnd = page * IPP;\r\n return this.sortedItems().slice(itemsStart, itemsEnd);\r\n });\r\n /**\r\n * Gets all currently selected items.\r\n */\r\n readonly selectedItems = computed<ArdTableRow[]>(() => this.items().filter(item => item.selected()));\r\n /**\r\n * Gets all currently highlighted items.\r\n */\r\n readonly highlightedItems = computed<ArdTableRow[]>(() => this.items().filter(item => item.highlighted()));\r\n /**\r\n * Gets all highlightable items. An item is considered highlightable if it is **not** disabled.\r\n */\r\n readonly highlightableItems = computed<ArdTableRow[]>(() => this._items().filter(item => !item.disabled()));\r\n /**\r\n * Gets the values of the currently selected items.\r\n */\r\n readonly value = computed(() => this._itemsToValue(this.selectedItems()));\r\n /**\r\n * Maps an array of items into their values.\r\n * @param items The items to convert to value.\r\n * @returns An array of item values.\r\n */\r\n private _itemsToValue(items: ArdTableRow[]): any[] {\r\n return items.map(item => item.itemData());\r\n }\r\n\r\n /**\r\n * Returns true if at least one item is highlighted, otherwise false.\r\n */\r\n readonly isAnyItemHighlighted = computed(() => this.highlightedItems().length > 0);\r\n /**\r\n * Checks if any item in the table is selected.\r\n * @returns A boolean value indicating if any item is selected.\r\n */\r\n readonly isAnyItemSelected = computed(() => this.selectedItems().length > 0);\r\n /**\r\n * Checks if all items in the table are selected.\r\n * @returns A boolean value indicating if all items are selected.\r\n */\r\n readonly areAllSelected = computed(() => this.selectedItems().length === this._items().filter(item => !item.disabled()).length);\r\n /**\r\n * Returns true if the parent component defines the limit of concurrently selectable items and the amount of currently selected items matches that limit. Otherwise returns false.\r\n *\r\n * **TLDR**: true if `maxSelectedItems` is defined and the number of selected items matches that value.\r\n */\r\n readonly isItemLimitReached = computed(() => {\r\n const max = this._ardParentComp.maxSelectedItems();\r\n if (!isDefined(max)) {\r\n return false;\r\n }\r\n return max <= this.selectedItems().length;\r\n });\r\n\r\n /**\r\n * Gets the header cells of the table.\r\n * @returns a 2D array of header cells.\r\n */\r\n readonly headerCells = this._headerCells.asReadonly();\r\n /**\r\n * Checks if the table has defined columns.\r\n * @returns a boolean value indicating if the table has defined columns.\r\n */\r\n readonly hasDefinedColumns = computed(() => this._dataColumns().length > 0);\r\n\r\n //! setting columns\r\n /**\r\n * Sets the columns of the table.\r\n * @param cols an array of table data columns or table subheaders.\r\n */\r\n setColumns(cols: (TableDataColumn | TableSubheader)[]): void {\r\n const maxNestingLevel = this._getHeaderMaxNesting(cols);\r\n const headerCells = this._mapColumnsToArray(cols, maxNestingLevel, 0);\r\n this._headerCells.set(this._filterHeaderCells(headerCells));\r\n this._dataColumns.set(this._extractDataSources(cols));\r\n }\r\n /**\r\n * Filters out null values from the header cells array. Pure function.\r\n * @param cells a 2D array of header cells or null values.\r\n * @returns a 2D array of header cells without null values and empty arrays.\r\n */\r\n private _filterHeaderCells(cells: (HeaderCell | null)[][]): HeaderCell[][] {\r\n for (let i = 0; i < cells.length; i++) {\r\n cells[i] = cells[i].filter(v => v !== null);\r\n }\r\n return cells.filter(row => row.length) as HeaderCell[][];\r\n }\r\n /**\r\n * Extracts the data sources from the columns array. Pure function.\r\n * @param cols an array of table data columns or table subheaders.\r\n * @returns an array of table data columns.\r\n */\r\n private _extractDataSources(cols: (TableDataColumn | TableSubheader)[]): TableDataColumn[] {\r\n const dataColumns: TableDataColumn[] = [];\r\n\r\n for (const col of cols) {\r\n if (!isTableSubheader(col)) {\r\n dataColumns.push(col);\r\n continue;\r\n }\r\n dataColumns.push(...this._extractDataSources(col.children));\r\n }\r\n\r\n return dataColumns;\r\n }\r\n /**\r\n * Gets the maximum nesting level of the columns array. Pure function.\r\n * @param cols an array of table data columns or table subheaders.\r\n * @returns the maximum nesting level as a number.\r\n */\r\n private _getHeaderMaxNesting(cols: (TableDataColumn | TableSubheader)[]): number {\r\n if (areAllDataColumns(cols)) return 1;\r\n let max = 1;\r\n for (const col of cols.filter(v => isTableSubheader(v)) as TableSubheader[]) {\r\n const height = 1 + this._getHeaderMaxNesting(col.children);\r\n if (height > max) max = height;\r\n }\r\n return max;\r\n }\r\n /**\r\n * Maps the columns tree to a 2D array of header cells or null values. Pure function.\r\n * @param cols an array of table data columns or table subheaders.\r\n * @param maxNesting the maximum nesting level of the columns array.\r\n * @param currentNesting the current nesting level of the columns array.\r\n * @returns a 2D array of header cells or null values.\r\n */\r\n private _mapColumnsToArray(\r\n cols: (TableDataColumn | TableSubheader)[],\r\n maxNesting: number,\r\n currentNesting: number\r\n ): (HeaderCell | null)[][] {\r\n if (areAllDataColumns(cols)) {\r\n return [cols.map(col => new HeaderCell(col, 1, maxNesting - currentNesting))];\r\n }\r\n const headerCells: (HeaderCell | null)[][] = [[]];\r\n for (const col of cols) {\r\n if (!isTableSubheader(col)) {\r\n headerCells[0].push(new HeaderCell(col, 1, maxNesting - currentNesting));\r\n continue;\r\n }\r\n const childCells: (HeaderCell | null)[][] = [[], ...this._mapColumnsToArray(col.children, maxNesting, currentNesting + 1)];\r\n const height = childCells.length - 1;\r\n const width = childCells[1].length;\r\n for (let i = 0; i < height; i++) {\r\n headerCells.push([null]);\r\n }\r\n headerCells[0].push(new HeaderCell(col, width, 1));\r\n for (let i = 0; i < width - 1; i++) {\r\n headerCells[0].push(null);\r\n }\r\n merge2dArrays(headerCells, childCells);\r\n }\r\n return headerCells;\r\n }\r\n\r\n //! setting items\r\n /**\r\n * Sets the component's items. Takes into account the values defined by the parent component for `rowDisabledFrom`, `rowBoldFrom`, and `rowHighlightedFrom`.\r\n * @param items An array of items to be set as the component's items.\r\n */\r\n setItems(items: any[]): void {\r\n if (!this.hasDefinedColumns()) return;\r\n\r\n const mappedItems = items.map((item, i) => this._setItemsMapFn(item, i));\r\n this._items.set(mappedItems);\r\n this._sortedItems.set(mappedItems);\r\n }\r\n /**\r\n * Maps raw item data to an {@link ArdTableRow} object.\r\n *\r\n * @param {any} rawItemData - The raw data of the item.\r\n * @param {number} index - The index of the item.\r\n * @returns {ArdTableRow} Returns an ArdTableRow object with mapped properties.\r\n * @private\r\n */\r\n private _setItemsMapFn(rawItemData: any, index: number): ArdTableRow {\r\n //get data\r\n const [data, dataColumns] = this._getRowData(rawItemData, index);\r\n\r\n //get bold\r\n const rowBoldFromPath = this._ardParentComp.rowBoldFrom() ?? this._ardParentComp.DEFAULTS.rowBoldFrom;\r\n let bold = resolvePath(rawItemData, rowBoldFromPath);\r\n if (this._ardParentComp.invertRowBold()) {\r\n bold = !bold;\r\n }\r\n\r\n //get disabled\r\n const disabledPath = this._ardParentComp.rowDisabledFrom() ?? this._ardParentComp.DEFAULTS.rowDisabledFrom;\r\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\r\n if (this._ardParentComp.invertRowDisabled()) {\r\n disabled = !disabled;\r\n }\r\n\r\n return new ArdTableRow(rawItemData, index, data, dataColumns, disabled, bold);\r\n }\r\n /**\r\n * Retrieves data for a row based on data columns configuration.\r\n *\r\n * @param {any} rawItemData - The raw data of the item.\r\n * @param {number} index - The index of the item.\r\n * @returns {any[]} Returns an array containing the row data.\r\n * @private\r\n */\r\n private _getRowData(rawItemData: any, index: number): [any[], TableDataColumn[]] {\r\n const data: any[] = [];\r\n const _cols = this._dataColumns();\r\n for (let i = 0; i < _cols.length; i++) {\r\n const dataColumn = _cols[i];\r\n const sourcePath = dataColumn.dataSource;\r\n\r\n if (typeof sourcePath === 'string') {\r\n if (this._ardParentComp.treatDataSourceAsString()) {\r\n data.push(rawItemData[sourcePath]);\r\n continue;\r\n }\r\n data.push(resolvePath(rawItemData, sourcePath));\r\n continue;\r\n }\r\n if (sourcePath.type === 'autocount') {\r\n data.push(index + 1);\r\n continue;\r\n }\r\n if (sourcePath.type === 'checkbox') {\r\n data.push({ _ardCheckbox: true, index });\r\n continue;\r\n }\r\n const sourceString = typeof sourcePath === 'object' ? JSON.stringify(sourcePath) : sourcePath;\r\n throw new Error(`ARD-FT5052: Unexpected data source \"${sourceString}\" at index ${i}.`);\r\n }\r\n return [data, this._dataColumns()];\r\n }\r\n /**\r\n * Writes a new value to the item storage. Selects the correct items based on the provided values, warning the user if the value is not found.\r\n * @param indexes The value of the ngModel to set.\r\n */\r\n writeValue(indexes: number[]): void {\r\n this._forceUnselectAll();\r\n this.selectItem(...indexes);\r\n }\r\n\r\n //! selecting items\r\n /**\r\n * Checks if an item with the given index is selected.\r\n *\r\n * @param {number} index The index of the item to check.\r\n * @returns {boolean} _true_ if the item is selected, otherwise _false_.\r\n */\r\n isItemSelected(index: number): boolean {\r\n return this.selectedItems().some(item => item.index() === index);\r\n }\r\n /**\r\n * Selects all items.\r\n *\r\n * Accounts for the limit of concurrently selected items defined by the parent component.\r\n * @returns a tuple containing two arrays:\r\n * * An array of items selected.\r\n * * An array of items failed to select.\r\n */\r\n selectAll(): [any[], any[]] {\r\n return this.selectItem(...this._items().map(v => v.index()));\r\n }\r\n /**\r\n * Unselects all selected items.\r\n *\r\n * If the parent component requires at least one value to be selected at all times, the first selected items is left selected.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n unselectAll(): any[] {\r\n const selected = this.selectedItems();\r\n for (const item of selected) {\r\n item.selected.set(false);\r\n }\r\n\r\n return this._itemsToValue(selected);\r\n }\r\n /**\r\n * Unselects all selected items, no matter what the component settings are.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n private _forceUnselectAll(): any[] {\r\n const selected = this.selectedItems();\r\n for (const item of selected) {\r\n item.selected.set(false);\r\n }\r\n\r\n return this._itemsToValue(selected);\r\n }\r\n /**\r\n * Selects one or multiple items.\r\n *\r\n * Accounts for the limit of concurrently selected items defined by the parent component.\r\n *\r\n * @param indexes A rest operator array of item indexes to be selected.\r\n * @returns a tuple containing two arrays:\r\n * - An array of items selected.\r\n * - An array of items failed to select.\r\n */\r\n selectItem(...indexes: number[]): [any[], any[]] {\r\n const itemsToBeSelected = this._items().filter(item => !item.disabled() && indexes.includes(item.index()));\r\n if (this.isItemLimitReached()) {\r\n return [[], this._itemsToValue(itemsToBeSelected)];\r\n }\r\n\r\n let itemsSelectedCount = 0;\r\n const itemsSelected = [];\r\n let itemsLeftUntilLimit = (this._ardParentComp.maxSelectedItems() ?? Infinity) - this.selectedItems().length;\r\n for (const item of itemsToBeSelected) {\r\n itemsSelectedCount++;\r\n if (item.selected()) continue;\r\n if (itemsLeftUntilLimit <= 0) {\r\n break;\r\n }\r\n itemsLeftUntilLimit--;\r\n item.selected.set(true);\r\n itemsSelected.push(item);\r\n }\r\n\r\n const itemsFailedToSelect = itemsToBeSelected.slice(itemsSelectedCount - 1);\r\n return [this._itemsToValue(itemsSelected), this._itemsToValue(itemsFailedToSelect)];\r\n }\r\n /**\r\n * Unselects one or multiple items.\r\n * @param items A rest operator array of item indexes to be unselected.\r\n * @returns An array of items unselected, mapped to only their values.\r\n */\r\n unselectItem(...indexes: number[]): any[] {\r\n const itemsToBeUnselected = this._items().filter(item => indexes.includes(item.index()));\r\n for (const item of itemsToBeUnselected) {\r\n item.selected.set(false);\r\n }\r\n\r\n return this._itemsToValue(itemsToBeUnselected);\r\n }\r\n\r\n //! highlighting items\r\n /**\r\n * Unhighlights all currently highlighted items.\r\n */\r\n unhighlightAll(): void {\r\n const highlighted = this.highlightedItems();\r\n for (const item of highlighted) {\r\n item.highlighted.set(false);\r\n }\r\n }\r\n /**\r\n * Highlights the given item, while unhighlighting all other items. Does nothing when the item is disabled.\r\n * @param item The index of the item to be highlighted.\r\n * @returns The highlighted item.\r\n */\r\n highlightSingleItem(index: number): ArdTableRow | null {\r\n this.unhighlightAll();\r\n return this.highlightItem(index);\r\n }\r\n /**\r\n * Highlights all given items.\r\n * @param items A rest operator array of item indexes to be highlighted.\r\n * @returns The last highlighted item.\r\n */\r\n highlightItem(...indexes: number[]): ArdTableRow {\r\n const items = this._items().filter(item => indexes.includes(item.index()));\r\n for (const item of items) {\r\n item.highlighted.set(true);\r\n }\r\n return items.last();\r\n }\r\n /**\r\n * Unhighlights all given items.\r\n * @param items A rest operator array of item indexes to be unhighlighted.\r\n */\r\n unhighlightItem(...indexes: number[]): void {\r\n const items = this._items().filter(item => indexes.includes(item.index()));\r\n for (const item of items) {\r\n if (!item || !item.highlighted()) return;\r\n\r\n item.highlighted.set(false);\r\n }\r\n }\r\n /**\r\n * Highlights the first item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightFirstItem(): ArdTableRow | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().first().index();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights the last item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightLastItem(): ArdTableRow | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().last().index();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights all non-disabled items.\r\n */\r\n highlightAllItems(): void {\r\n const itemsToHighlight = this.highlightableItems().map(v => v.index());\r\n this.highlightItem(...itemsToHighlight);\r\n }\r\n /**\r\n * Highlights the next non-disabled item defined by the offset amount.\r\n *\r\n * If `hasShift` is set to true, all originally highlighted items are kept. Otherwise, all original items are unselected.\r\n * @param offset The amount of items to offset the highlight by.\r\n * @param hasShift Whether the user has the shift key pressed.\r\n * @returns The item highlighted.\r\n */\r\n highlightNextItem(offset: number, hasShift?: boolean): ArdTableRow | null {\r\n if (!this.isAnyItemHighlighted()) {\r\n return this.highlightFirstItem();\r\n }\r\n const currentItem = this.highlightedItems().last();\r\n const itemsWithoutDisabled = this._items().filter(\r\n item => !item.disabled() && (!this.isItemLimitReached() || item.selected())\r\n );\r\n const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index() === currentItem.index());\r\n\r\n let nextItemIndex = currentIndexInItems + offset;\r\n if (nextItemIndex >= itemsWithoutDisabled.length) {\r\n nextItemIndex -= itemsWithoutDisabled.length;\r\n }\r\n if (nextItemIndex < 0) {\r\n nextItemIndex += itemsWithoutDisabled.length;\r\n }\r\n const itemToHighlight = itemsWithoutDisabled[nextItemIndex];\r\n\r\n if (hasShift) {\r\n if (itemToHighlight.highlighted()) {\r\n this.unhighlightItem(nextItemIndex);\r\n }\r\n return this.highlightItem(nextItemIndex);\r\n }\r\n return this.highlightSingleItem(nextItemIndex);\r\n }\r\n\r\n //! sorting\r\n private _currentSortColumn: number | null = null;\r\n private _currentSortType: SortType | null = null;\r\n\r\n toggleCurrentSortColumn(column: number): void {\r\n if (this._currentSortColumn === column) {\r\n if (this._currentSortType === SortType.Ascending) {\r\n this._currentSortType = SortType.Descending;\r\n } else {\r\n this._currentSortType = SortType.Ascending;\r\n }\r\n this._generateSortedRows(true);\r\n return;\r\n }\r\n this._currentSortColumn = column;\r\n this._currentSortType = SortType.Ascending;\r\n this._generateSortedRows();\r\n }\r\n resetSort(): void {\r\n this._currentSortColumn = null;\r\n this._currentSortType = null;\r\n this._sortedItems.set([...this.items()]);\r\n }\r\n getColumnSortType(column: number): SortType | null {\r\n if (this._currentSortColumn === column) {\r\n return this._currentSortType;\r\n }\r\n return null;\r\n }\r\n private _generateSortedRows(justReverse?: boolean): void {\r\n if (justReverse) {\r\n this._sortedItems().reverse();\r\n return;\r\n }\r\n const sortColumnIndex = this._currentSortColumn;\r\n if (isNull(sortColumnIndex) || !this._currentSortType) {\r\n this._sortedItems.set(this.items());\r\n return;\r\n }\r\n const sortColumn = this._dataColumns()[sortColumnIndex];\r\n if (!sortColumn) {\r\n throw new Error(\r\n `ARD-IS5059: Encountered an issue in <ard-table>: could not find the column with index ${sortColumnIndex}. This is most likely an Ardium UI bug, please report it to the creators.`\r\n );\r\n }\r\n\r\n const direction = this._currentSortType === SortType.Ascending ? 1 : -1;\r\n const sortFn =\r\n sortColumn.sortFn ??\r\n ((a, b) => {\r\n if (a > b) return direction;\r\n if (a < b) return -1 * direction;\r\n return 0;\r\n });\r\n\r\n this._sortedItems.set([...this.items()].sort((a, b) => sortFn(a.data()[sortColumnIndex], b.data()[sortColumnIndex])));\r\n }\r\n}\r\n","import { Directive, TemplateRef, input } from '@angular/core';\r\nimport { PaginationContext } from '../_internal/models/pagination.model';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { TableCaptionContext, TableCheckboxContext } from './table.types';\r\n\r\n@Directive({ selector: 'ard-table > ng-template[ard-table-tmp]' })\r\nexport class ArdiumTableTemplateDirective {\r\n readonly name = input.required<Nullable<string>>({ alias: 'ard-table-tmp' });\r\n\r\n constructor(public template: TemplateRef<any>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-table > ng-template[ard-table-checkbox-tmp]' })\r\nexport class ArdiumTableCheckboxTemplateDirective {\r\n constructor(public template: TemplateRef<TableCheckboxContext>) {}\r\n}\r\n\r\n@Directive({\r\n selector: 'ard-table > ng-template[ard-table-header-checkbox-tmp]',\r\n})\r\nexport class ArdiumTableHeaderCheckboxTemplateDirective {\r\n constructor(public template: TemplateRef<TableCheckboxContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-table > ng-template[ard-table-caption-tmp]' })\r\nexport class ArdiumTableCaptionTemplateDirective {\r\n constructor(public template: TemplateRef<TableCaptionContext>) {}\r\n}\r\n\r\n//! paginations\r\n@Directive({ selector: 'ard-table > ng-template[ard-table-pagination-tmp]' })\r\nexport class ArdiumTablePaginationTemplateDirective {\r\n constructor(public template: TemplateRef<PaginationContext>) {}\r\n}\r\n","import { ModelSignal, Signal, computed } from '@angular/core';\r\nimport { isDefined } from 'simple-bool';\r\n\r\nexport interface PaginationModelHost {\r\n readonly componentId: string;\r\n readonly totalItems: Signal<number>;\r\n readonly options: Signal<number[] | { value: number; label: string }[]>;\r\n readonly itemsPerPage: ModelSignal<number>;\r\n readonly page: ModelSignal<number>;\r\n}\r\n\r\nexport interface PaginationCurrentItemsContext {\r\n readonly currentItemsFirst: number;\r\n readonly currentItemsLast: number;\r\n readonly totalItems: number;\r\n readonly totalPages: number;\r\n readonly page: number;\r\n}\r\n\r\nexport interface PaginationContext extends PaginationCurrentItemsContext {\r\n readonly itemsPerPageOptions: number[] | { value: number; label: string }[];\r\n readonly itemsPerPage: number;\r\n readonly onItemsPerPageChange: (newValue: number) => void;\r\n readonly firstPageDisabled: boolean;\r\n readonly prevPageDisabled: boolean;\r\n readonly nextPageDisabled: boolean;\r\n readonly lastPageDisabled: boolean;\r\n readonly onPageChange: (newPage: number) => void;\r\n}\r\n\r\nexport class PaginationModel {\r\n constructor(private readonly _ardHostCmp: PaginationModelHost) {}\r\n\r\n readonly isTotalItemsDefined = computed<boolean>(() => isDefined(this._ardHostCmp.totalItems()));\r\n\r\n readonly lastPageNum = computed<number | null>(() => {\r\n const total = this._ardHostCmp.totalItems();\r\n if (!total) return null;\r\n return Math.ceil(total / this._ardHostCmp.itemsPerPage());\r\n });\r\n readonly isLastPage = computed<boolean>(() => {\r\n return !isDefined(this._ardHostCmp.totalItems()) || this.lastPageNum() === this._ardHostCmp.page();\r\n });\r\n readonly itemsOnCurrentPage = computed<[number, number] | null>(() => {\r\n const total = this._ardHostCmp.totalItems();\r\n if (!total) return null;\r\n return [\r\n Math.min(total, (this._ardHostCmp.page() - 1) * this._ardHostCmp.itemsPerPage() + 1),\r\n Math.min(total, this._ardHostCmp.page() * this._ardHostCmp.itemsPerPage()),\r\n ];\r\n });\r\n\r\n //! action disabled states\r\n readonly firstPageDisabled = computed<boolean>(() => {\r\n return !isDefined(this._ardHostCmp.totalItems()) || this._ardHostCmp.page() === 1;\r\n });\r\n readonly lastPageDisabled = computed<boolean>(() => {\r\n return !isDefined(this._ardHostCmp.totalItems()) || this._ardHostCmp.page() === this.lastPageNum();\r\n });\r\n\r\n //! current page\r\n setPage(v: number): void {\r\n this._ardHostCmp.page.set(v);\r\n }\r\n getPage(): number {\r\n return this._ardHostCmp.page();\r\n }\r\n goToFirstPage(): number | null {\r\n if (this.firstPageDisabled()) return null;\r\n this.setPage(1);\r\n return 1;\r\n }\r\n goToPrevPage(): number | null {\r\n if (this.firstPageDisabled()) return null;\r\n this.setPage(this._ardHostCmp.page() - 1);\r\n return this._ardHostCmp.page();\r\n }\r\n goToNextPage(): number | null {\r\n if (this.lastPageDisabled()) return null;\r\n this.setPage(this._ardHostCmp.page() + 1);\r\n return this._ardHostCmp.page();\r\n }\r\n goToLastPage(): number | null {\r\n if (this.lastPageDisabled()) return null;\r\n this.setPage(this.lastPageNum()!);\r\n return this._ardHostCmp.page();\r\n }\r\n\r\n //! context\r\n readonly getCurrentItemsContext = computed<PaginationCurrentItemsContext>(() => {\r\n const total = this._ardHostCmp.totalItems();\r\n if (!total)\r\n throw new Error(`ARD-FT${this._ardHostCmp.componentId}90: Cannot use pagination model without defining total items first.`);\r\n\r\n const pageItems = this.itemsOnCurrentPage()!;\r\n return {\r\n totalPages: this.lastPageNum()!,\r\n totalItems: total,\r\n page: this._ardHostCmp.page(),\r\n currentItemsFirst: pageItems[0],\r\n currentItemsLast: pageItems[1],\r\n };\r\n });\r\n readonly getPartialContext = computed<Omit<PaginationContext, 'onItemsPerPageChange' | 'onPageChange'>>(() => {\r\n return {\r\n ...this.getCurrentItemsContext(),\r\n itemsPerPageOptions: this._ardHostCmp.options(),\r\n itemsPerPage: this._ardHostCmp.itemsPerPage(),\r\n firstPageDisabled: this.firstPageDisabled(),\r\n prevPageDisabled: this.firstPageDisabled(),\r\n nextPageDisabled: this.lastPageDisabled(),\r\n lastPageDisabled: this.lastPageDisabled(),\r\n };\r\n });\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation, computed, input, model, output } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { PaginationModel } from '../_internal/models/pagination.model';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { CurrentItemsFormatFn, PaginationAlign } from './table-pagination.types';\r\n\r\n@Component({\r\n selector: 'ard-table-pagination',\r\n templateUrl: './table-pagination.component.html',\r\n styleUrls: ['./table-pagination.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTablePaginationComponent extends _FocusableComponentBase implements OnInit {\r\n readonly componentId = '506';\r\n\r\n private readonly _pagination = new PaginationModel(this);\r\n\r\n //! main settings\r\n readonly totalItems = input.required<number>();\r\n readonly options = input<number[] | { value: number; label: string }[]>([10, 25, 50]);\r\n readonly itemsPerPage = model<number>(50);\r\n readonly page = model<number>(1);\r\n\r\n readonly itemsPerPageChangeEvent = output<number>({ alias: 'itemsPerPageChange' });\r\n readonly pageChangeEvent = output<number>({ alias: 'pageChange' });\r\n\r\n ngOnInit(): void {\r\n if (this._pagination.isTotalItemsDefined()) return;\r\n throw new Error('ARD-FT5060: Table pagination requires [totalItems] to be defined.');\r\n }\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly align = input<PaginationAlign>(PaginationAlign.Split);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [`ard-color-${this.color()}`, `ard-align-${this.align()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! miscellaneous\r\n readonly useFirstLastButtons = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly isLoading = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly itemsPerPageText = input<string>('Items per page:');\r\n\r\n readonly currentItemsFormatFn = input<CurrentItemsFormatFn>(\r\n ({ currentItemsFirst, currentItemsLast, totalItems }) => `${currentItemsFirst} – ${currentItemsLast} of ${totalItems}`\r\n );\r\n\r\n //! contexts\r\n readonly getCurrentItemsContext = this._pagination.getCurrentItemsContext;\r\n\r\n readonly firstPageDisabled = this._pagination.firstPageDisabled;\r\n readonly lastPageDisabled = this._pagination.lastPageDisabled;\r\n\r\n //! methods\r\n onItemsPerPageChange(newValue: number): void {\r\n if (this.isLoading()) return;\r\n if (newValue === this.itemsPerPage()) return;\r\n this.itemsPerPage.set(newValue);\r\n this.itemsPerPageChangeEvent.emit(this.itemsPerPage());\r\n this._emitPageEvent();\r\n }\r\n\r\n private _emitPageEvent(): void {\r\n this.pageChangeEvent.emit(this.page());\r\n }\r\n onPageChange(newPage: number): void {\r\n if (this.isLoading()) return;\r\n if (newPage === this.page()) return;\r\n this._pagination.setPage(newPage);\r\n this._emitPageEvent();\r\n }\r\n onFirstPage(): void {\r\n if (this.isLoading()) return;\r\n const newPage = this._pagination.goToFirstPage();\r\n if (!newPage) return;\r\n this._emitPageEvent();\r\n }\r\n onPrevPage(): void {\r\n if (this.isLoading()) return;\r\n const newPage = this._pagination.goToPrevPage();\r\n if (!newPage) return;\r\n this._emitPageEvent();\r\n }\r\n onNextPage(): void {\r\n if (this.isLoading()) return;\r\n const newPage = this._pagination.goToNextPage();\r\n if (!newPage) return;\r\n this._emitPageEvent();\r\n }\r\n onLastPage(): void {\r\n if (this.isLoading()) return;\r\n const newPage = this._pagination.goToLastPage();\r\n if (!newPage) return;\r\n this._emitPageEvent();\r\n }\r\n}\r\n","<div\r\n class=\"ard-pagination\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n <div class=\"ard-pagination__items-per-page\">\r\n <div class=\"ard-pagination__text\">{{ itemsPerPageText() }}</div>\r\n <ard-select\r\n [items]=\"options()\"\r\n [compact]=\"compact()\"\r\n [value]=\"itemsPerPage()\"\r\n autoHighlightFirst=\"false\"\r\n [disabled]=\"disabled()\"\r\n (valueChange)=\"onItemsPerPageChange($event[0])\"\r\n clearable=\"false\"\r\n />\r\n </div>\r\n <div class=\"ard-pagination__current-page\">\r\n <div class=\"ard-pagination__text\">\r\n {{ currentItemsFormatFn()(getCurrentItemsContext()) }}\r\n </div>\r\n <div class=\"ard-pagination__buttons\">\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onFirstPage()\"\r\n >\r\n <ard-icon>first page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onPrevPage()\"\r\n >\r\n <ard-icon>navigate before</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onNextPage()\"\r\n >\r\n <ard-icon>navigate next</ard-icon>\r\n </ard-icon-button>\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onLastPage()\"\r\n >\r\n <ard-icon>last page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n contentChildren,\r\n input,\r\n model,\r\n output,\r\n OnChanges,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isDefined, isNumber } from 'simple-bool';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { CheckboxState } from '../checkbox/checkbox.types';\r\nimport { CurrentItemsFormatFn, PaginationAlign } from '../table-pagination/table-pagination.types';\r\nimport { ComponentColor, SimpleComponentColor } from '../types/colors.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdTableRow, HeaderCell, TableItemStorage, TableItemStorageHost } from './table-item-storage';\r\nimport {\r\n ArdiumTableCaptionTemplateDirective,\r\n ArdiumTableCheckboxTemplateDirective,\r\n ArdiumTableHeaderCheckboxTemplateDirective,\r\n ArdiumTableTemplateDirective,\r\n} from './table.directives';\r\nimport {\r\n TableAlignType,\r\n TableAppearance,\r\n TableCaptionContext,\r\n TableCheckboxContext,\r\n TableDataColumn,\r\n TableHeaderCheckboxContext,\r\n TableHeaderContext,\r\n TablePaginationStrategy,\r\n TableSubheader,\r\n TableSubheaderContext,\r\n TableVariant,\r\n} from './table.types';\r\nimport { isTableSubheader } from './utils';\r\n\r\n@Component({\r\n selector: 'ard-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTableComponent extends _FocusableComponentBase implements TableItemStorageHost, AfterContentInit, OnChanges {\r\n private readonly _itemStorage = new TableItemStorage(this);\r\n\r\n readonly DEFAULTS = {\r\n rowDisabledFrom: 'disabled',\r\n rowBoldFrom: 'bold',\r\n };\r\n\r\n readonly rowDisabledFrom = input<Nullable<string>>(undefined);\r\n readonly rowBoldFrom = input<Nullable<string>>(undefined);\r\n readonly invertRowDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly invertRowBold = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly selectableRows = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly maxSelectedItems = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n readonly clickableRows = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly caption = input<Nullable<string>>(undefined);\r\n\r\n readonly isLoading = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly loadingProgress = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) }); //TODO add progress bar\r\n\r\n //! appearance\r\n readonly appearance = input<TableAppearance>(TableAppearance.Strong);\r\n readonly variant = input<TableVariant>(TableVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly align = input<TableAlignType>(TableAlignType.CenterLeft);\r\n readonly headerAlign = input<TableAlignType>(TableAlignType.CenterLeft);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly zebra = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly stickyHeader = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-align-${this.align()}`,\r\n `ard-header-align-${this.headerAlign()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.zebra() ? 'ard-zebra-table' : '',\r\n this.selectableRows() ? 'ard-selectable-rows' : '',\r\n this.stickyHeader() ? 'ard-sticky-header' : '',\r\n this.isLoading() ? 'ard-table-loading' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! pagination\r\n readonly paginated = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly paginationStrategy = input<TablePaginationStrategy>(TablePaginationStrategy.Noop);\r\n readonly paginationOptions = input<\r\n number[] | { value: number; label: string }[],\r\n number[] | { value: number; label: string }[]\r\n >([10, 25, 50], {\r\n transform: v => {\r\n return v.filter(el => {\r\n const opt = isNumber(el) ? el : el.value;\r\n if (opt <= 0 || opt % 1 !== 0) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5052: each item of <ard-table>'s [paginationOptions] must be a positive integer. The \"${opt}\" option will be ignored.`\r\n )\r\n );\r\n return false;\r\n }\r\n return true;\r\n }) as number[] | { value: number; label: string }[];\r\n },\r\n });\r\n readonly totalItems = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n readonly paginationColor = input<ComponentColor>(ComponentColor.None);\r\n readonly paginationAlign = input<PaginationAlign>(PaginationAlign.Split);\r\n readonly itemsPerPageText = input<string>('Items per page:');\r\n readonly currentItemsFormatFn = input<CurrentItemsFormatFn>(\r\n ({ currentItemsFirst, currentItemsLast, totalItems }) => `${currentItemsFirst} – ${currentItemsLast} of ${totalItems}`\r\n );\r\n\r\n readonly pageFillRemaining = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly paginationDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly useFirstLastButtons = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly itemsPerPage = model<number>(50);\r\n readonly page = model<number>(1);\r\n\r\n readonly isDefinedTotalItems = computed(\r\n () => this.paginationStrategy() !== TablePaginationStrategy.Noop || isDefined(this.totalItems())\r\n );\r\n readonly canDisplayPagination = computed(() => this.paginated() && this.isDefinedTotalItems());\r\n\r\n //! print errors if needed\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['itemsPerPage']) {\r\n const ipp = changes['itemsPerPage'].currentValue;\r\n const options =\r\n (changes['paginationOptions']?.currentValue as number[] | { value: number; label: string }[]) ||\r\n (this.paginationOptions() as number[] | { value: number; label: string }[]);\r\n if (!options.find(v => (typeof v === 'number' ? v === ipp : v.value === ipp))) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5051: value of \"${ipp}\" in <ard-table>'s [itemsPerPage] does not appear in [paginationOptions] array [${options\r\n .map(v => (typeof v === 'number' ? v : v.value))\r\n .join(', ')}]`\r\n )\r\n );\r\n }\r\n }\r\n if (changes['page']) {\r\n const page = changes['page'].currentValue as number;\r\n if (page === 0) {\r\n throw new Error(`ARD-FT5053a: <ard-table>'s [page] uses 1-indexed numbering system. The value 0 is not accepted.`);\r\n } else if (page < 0 || page % 1 !== 0) {\r\n throw new Error(`ARD-FT5053b: value of <ard-table>'s [page] must be a positive integer, got \"${page}\".`);\r\n }\r\n }\r\n }\r\n\r\n //! item storage getters\r\n readonly headerCells = computed(() => this._itemStorage.headerCells());\r\n\r\n readonly dataRows = computed(() => {\r\n const items: ArdTableRow[] = this._itemStorage.paginatedItems();\r\n\r\n if (!this.pageFillRemaining()) return items;\r\n if (!this.isDefinedTotalItems()) {\r\n throw new Error('ARD-FT5050: <ard-table> requires [totalItems] to be defined when using \"slice\" pagination strategy.');\r\n }\r\n if (this.page() === 1) return items;\r\n\r\n const ipp = this.itemsPerPage();\r\n for (let i = items.length; i < ipp; i++) {\r\n items.push(ArdTableRow.newEmptyCell(i));\r\n }\r\n return items;\r\n });\r\n\r\n //! columns/data setters\r\n @Input()\r\n set columns(v: (TableDataColumn | TableSubheader)[]) {\r\n this._itemStorage.setColumns(v);\r\n }\r\n private _data: any[] = [];\r\n @Input()\r\n set data(v: any[]) {\r\n this._data = v;\r\n this._itemStorage.setItems(v);\r\n }\r\n get data(): any[] {\r\n return this._data;\r\n }\r\n\r\n readonly treatDataSourceAsString = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly _suppressErrors = input<boolean>(false);\r\n\r\n //! templates\r\n readonly checkboxTemplate = contentChild<ArdiumTableCheckboxTemplateDirective, TemplateRef<TableCheckboxContext>>(\r\n ArdiumTableCheckboxTemplateDirective,\r\n {\r\n read: TemplateRef<TableCheckboxContext>,\r\n }\r\n );\r\n readonly headerCheckboxTemplate = contentChild<\r\n ArdiumTableHeaderCheckboxTemplateDirective,\r\n TemplateRef<TableHeaderCheckboxContext>\r\n >(ArdiumTableHeaderCheckboxTemplateDirective, {\r\n read: TemplateRef<TableHeaderCheckboxContext>,\r\n });\r\n readonly captionTemplate = contentChild<ArdiumTableCaptionTemplateDirective, TemplateRef<TableCaptionContext>>(\r\n ArdiumTableCaptionTemplateDirective,\r\n {\r\n read: TemplateRef<TableCaptionContext>,\r\n }\r\n );\r\n\r\n private _itemTemplates: Record<string, TemplateRef<any>> = {};\r\n readonly templateChildren = contentChildren<ArdiumTableTemplateDirective>(ArdiumTableTemplateDirective);\r\n\r\n ngAfterContentInit(): void {\r\n const templates = Array.from(this.templateChildren());\r\n for (const instance of templates) {\r\n const name = instance.name();\r\n if (!name) {\r\n console.error(new Error('ARD-FT5054: [ard-table-tmp] requires a value to be specified.'));\r\n continue;\r\n }\r\n this._itemTemplates[name] = instance.template;\r\n }\r\n }\r\n\r\n getHeaderTemplate(tmp: string | { template: string | TemplateRef<any> }): TemplateRef<any> | undefined {\r\n if (typeof tmp === 'string') return undefined;\r\n return this.getCellTemplate(tmp.template);\r\n }\r\n getHeaderCheckboxColor(): SimpleComponentColor {\r\n if (this.appearance() === TableAppearance.Strong) return SimpleComponentColor.CurrentColor;\r\n return this.color();\r\n }\r\n getCellTemplate(tmp?: string | TemplateRef<any>): TemplateRef<any> | undefined {\r\n //return undefined\r\n if (!tmp) return undefined;\r\n //return template, if it is one\r\n if (tmp instanceof TemplateRef) return tmp;\r\n //check if the name can be found\r\n if (!(tmp in this._itemTemplates)) {\r\n console.error(new Error(`ARD-NF5055: <ard-table> error: cannot find template named \"${tmp}\"`));\r\n return undefined;\r\n }\r\n //return the template\r\n return this._itemTemplates[tmp];\r\n }\r\n getCellStyle(cell: TableDataColumn | TableSubheader): string {\r\n if (isTableSubheader(cell)) return 'width:unset;min-width:unset';\r\n const width = typeof cell.width === 'number' ? `${cell.width}px` : cell.width;\r\n const minWidth = typeof cell.minWidth === 'number' ? `${cell.minWidth}px` : cell.minWidth;\r\n return [`width:${width ?? 'unset'}`, `min-width:${minWidth ?? 'unset'}`].join(';');\r\n }\r\n\r\n //! click & hover handlers\r\n onCheckboxClick(index: number): void {\r\n this.toggleRowSelected(index);\r\n }\r\n onRowClick(row: ArdTableRow, event: MouseEvent): void {\r\n if (this.clickableRows()) {\r\n event.stopPropagation();\r\n this.clickRowEvent.emit(row.itemData());\r\n return;\r\n }\r\n if (this.selectableRows()) {\r\n event.stopPropagation();\r\n this.toggleRowSelected(row.index());\r\n return;\r\n }\r\n }\r\n onRowMouseOver(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n onRowMouseEnter(index: number, event: MouseEvent): void {\r\n if (!this.selectableRows() && !this.clickableRows()) return;\r\n event.stopPropagation();\r\n this._itemStorage.highlightSingleItem(index);\r\n }\r\n onRowMouseLeave(index: number, event: MouseEvent): void {\r\n if (!this.selectableRows() && !this.clickableRows()) return;\r\n event.stopPropagation();\r\n this._itemStorage.unhighlightItem(index);\r\n }\r\n\r\n //! select handlers\r\n /**\r\n * Toggles the selection state of a row in the table.\r\n * @param selected a boolean value indicating if the row is currently selected.\r\n * @param index the index of the row in the table.\r\n */\r\n toggleRowSelected(index: number): void {\r\n if (this._itemStorage.isItemSelected(index)) {\r\n const unselected = this._itemStorage.unselectItem(index);\r\n if (unselected.length) this.unselectRowEvent.emit(unselected);\r\n } else {\r\n const [selected, failed] = this._itemStorage.selectItem(index);\r\n if (selected.length) this.selectRowEvent.emit(selected);\r\n if (failed.length) this.failedSelectRowEvent.emit(failed);\r\n }\r\n this._emitSelect();\r\n }\r\n /**\r\n * Toggles the selection state of all rows in the table.\r\n */\r\n toggleAllRowsSelected(): void {\r\n if (this._itemStorage.areAllSelected()) {\r\n const unselected = this._itemStorage.unselectAll();\r\n if (unselected.length) this.unselectRowEvent.emit(unselected);\r\n } else {\r\n const [selected, failed] = this._itemStorage.selectAll();\r\n if (selected.length) this.selectRowEvent.emit(selected);\r\n if (failed.length) this.failedSelectRowEvent.emit(failed);\r\n }\r\n this._emitSelect();\r\n }\r\n private _emitSelect(): void {\r\n const v = this._itemStorage.value();\r\n this.selectedRowsChangeEvent.emit(v);\r\n }\r\n isCellCheckbox(cell: any): boolean {\r\n return typeof cell === 'object' && '_ardCheckbox' in cell && 'index' in cell;\r\n }\r\n isHeaderCellCheckbox(cell: HeaderCell): boolean {\r\n const dataCell = cell.cell();\r\n if (isTableSubheader(dataCell)) return false;\r\n if (typeof dataCell.dataSource === 'string') return false;\r\n return dataCell.dataSource.type === 'checkbox';\r\n }\r\n isHeaderCellSortable(cell: HeaderCell): boolean {\r\n const dataCell = cell.cell();\r\n if (isTableSubheader(dataCell)) return false;\r\n return dataCell.sortable ?? false;\r\n }\r\n\r\n readonly selectedRowsChangeEvent = output<any[]>({ alias: 'selectedRowsChange' });\r\n readonly failedSelectRowEvent = output<any[]>({ alias: 'failedSelectRow' });\r\n readonly selectRowEvent = output<any[]>({ alias: 'selectRow' });\r\n readonly unselectRowEvent = output<any[]>({ alias: 'unselectRow' });\r\n readonly clickRowEvent = output<any>({ alias: 'clickRow' });\r\n\r\n //! contexts\r\n getHeaderContext(cell: TableDataColumn, index: number): TableHeaderContext | null;\r\n getHeaderContext(cell: TableSubheader, index: number): TableSubheaderContext | null;\r\n getHeaderContext(cell: TableDataColumn | TableSubheader, index: number): TableHeaderContext | TableSubheaderContext | null;\r\n getHeaderContext(cell: TableDataColumn | TableSubheader, index: number): TableHeaderContext | TableSubheaderContext | null {\r\n if (typeof cell.header !== 'string') return null;\r\n if (isTableSubheader(cell))\r\n return {\r\n $implicit: cell.header,\r\n header: cell.header,\r\n };\r\n return {\r\n $implicit: cell.header,\r\n header: cell.header,\r\n sortable: cell.sortable ?? false,\r\n sortType: this._itemStorage.getColumnSortType(index),\r\n onTriggerSort: () => this._itemStorage.toggleCurrentSortColumn(index),\r\n onTriggerResetSort: (event?: Event) => {\r\n this._itemStorage.resetSort();\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n },\r\n };\r\n }\r\n readonly getHeaderCheckboxContext = computed<TableHeaderCheckboxContext>(() => {\r\n let state: CheckboxState = CheckboxState.Unselected;\r\n if (this._itemStorage.isAnyItemSelected()) {\r\n state = CheckboxState.Indeterminate;\r\n if (this._itemStorage.areAllSelected()) {\r\n state = CheckboxState.Selected;\r\n }\r\n }\r\n return {\r\n $implicit: state,\r\n state,\r\n onChange: () => {\r\n this.toggleAllRowsSelected();\r\n },\r\n };\r\n });\r\n getCheckboxContext(index: number): TableCheckboxContext {\r\n const item = this._itemStorage.items().find(v => v.index() === index)!;\r\n const selected = item.selected();\r\n return {\r\n $implicit: selected,\r\n selected: selected,\r\n disabled: item.disabled(),\r\n onChange: () => {\r\n this.onCheckboxClick(index);\r\n },\r\n };\r\n }\r\n}\r\n","<table\r\n class=\"ard-table\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @if (caption()) {\r\n <caption class=\"ard-table__caption\">\r\n <div class=\"ard-table__caption-container\">\r\n <ng-template\r\n #defaultCaptionTemplate\r\n let-captionText\r\n >\r\n {{ captionText }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"captionTemplate() ?? defaultCaptionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: caption() }\"\r\n />\r\n </div>\r\n </caption>\r\n }\r\n <thead class=\"ard-table__header\">\r\n @for (row of headerCells(); track $index) {\r\n <tr class=\"ard-table__header-row\">\r\n @for (cell of row; track $index) {\r\n <th\r\n class=\"ard-table__header-cell\"\r\n [ngClass]=\"cell.cell().cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isHeaderCellCheckbox(cell)\"\r\n [attr.colspan]=\"cell.colspan()\"\r\n [attr.rowspan]=\"cell.rowspan()\"\r\n [scope]=\"cell.colspan() > 1 ? 'colgroup' : 'col'\"\r\n >\r\n <div\r\n class=\"ard-table__cell-container\"\r\n [class.ard-table__sortable]=\"isHeaderCellSortable(cell)\"\r\n [style.width]=\"cell.width\"\r\n [style.minWidth]=\"cell.minWidth\"\r\n >\r\n @if (isHeaderCellCheckbox(cell)) {\r\n <ng-template\r\n #defaultHeaderCheckboxTemplate\r\n let-state\r\n let-onChange=\"onChange\"\r\n >\r\n <ard-checkbox\r\n [tabIndex]=\"isLoading() ? -1 : tabIndex()\"\r\n [state]=\"state\"\r\n [color]=\"getHeaderCheckboxColor()\"\r\n unselectedColor=\"currentColor\"\r\n (change)=\"onChange()\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"headerCheckboxTemplate() ?? defaultHeaderCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"getHeaderCheckboxContext()\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultHeaderCellTemplate\r\n let-content\r\n let-sortable=\"sortable\"\r\n let-sortType=\"sortType\"\r\n let-onTriggerSort=\"onTriggerSort\"\r\n let-onTriggerResetSort=\"onTriggerResetSort\"\r\n >\r\n <div\r\n class=\"ard-table__header-template-container\"\r\n [class.ard-sortable]=\"sortable\"\r\n [class.ard-nonsortable]=\"!sortable\"\r\n >\r\n @if (sortable) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-table__header-content-container\"\r\n (click)=\"onTriggerSort($event)\"\r\n [tabindex]=\"tabIndex()\"\r\n (keydown.Esc)=\"onTriggerResetSort($event)\"\r\n >\r\n <div class=\"ard-table__header-content\">{{ content }}</div>\r\n @if (sortType !== null) {\r\n <div class=\"ard-table__header-sort-icon\">\r\n @if (sortType === 'ascending') {\r\n <ard-icon>south</ard-icon>\r\n } @else if (sortType === 'descending') {\r\n <ard-icon>north</ard-icon>\r\n }\r\n </div>\r\n }\r\n </button>\r\n } @else {\r\n <div class=\"ard-table__header-content-container\">\r\n <div class=\"ard-table__header-content\">{{ content }}</div>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"getHeaderTemplate(cell.cell().header) ?? defaultHeaderCellTemplate\"\r\n [ngTemplateOutletContext]=\"getHeaderContext(cell.cell(), $index)\"\r\n />\r\n }\r\n </div>\r\n </th>\r\n }\r\n </tr>\r\n }\r\n </thead>\r\n <tbody class=\"ard-table__body\">\r\n @for (row of dataRows(); track $index) { @if (row.isEmpty()) {\r\n <tr class=\"ard-table__empty-row\">\r\n <td\r\n class=\"ard-table__empty-cell\"\r\n colspan=\"9999\"\r\n ></td>\r\n </tr>\r\n } @else {\r\n <tr\r\n class=\"ard-table__body-row\"\r\n [class.ard-table__selected-row]=\"row.selected()\"\r\n [class.ard-table__highlighted-row]=\"row.highlighted()\"\r\n [class.ard-table__disabled-row]=\"row.disabled()\"\r\n [class.ard-table__bold-row]=\"row.bold()\"\r\n (click)=\"onRowClick(row, $event)\"\r\n (mouseover)=\"onRowMouseOver($event)\"\r\n (mouseenter)=\"onRowMouseEnter(row.index(), $event)\"\r\n (mouseleave)=\"onRowMouseLeave(row.index(), $event)\"\r\n >\r\n @for (cell of row.data(); track $index) {\r\n <ng-template #cellTmp>\r\n <div\r\n class=\"ard-table__cell-container\"\r\n [style]=\"getCellStyle(row.dataColumns()[$index])\"\r\n >\r\n @if (isCellCheckbox(cell)) {\r\n <ng-template\r\n #defaultCheckboxTemplate\r\n let-isChecked\r\n let-onChange=\"onChange\"\r\n let-disabled=\"disabled\"\r\n >\r\n <ard-checkbox\r\n [tabIndex]=\"isLoading() ? -1 : tabIndex()\"\r\n [selected]=\"isChecked\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChange()\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"checkboxTemplate() ?? defaultCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"getCheckboxContext(row.index())\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultCellTemplate\r\n let-content\r\n >\r\n {{ content }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"getCellTemplate(row.dataColumns()[$index].template) ?? defaultCellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: cell }\"\r\n />\r\n }\r\n </div>\r\n </ng-template>\r\n @if (!row.dataColumns()[$index].isRowHeader) {\r\n <td\r\n class=\"ard-table__body-cell\"\r\n [ngClass]=\"row.dataColumns()[$index].cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isCellCheckbox(cell)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"cellTmp\"></ng-template>\r\n </td>\r\n } @else {\r\n <th\r\n class=\"ard-table__body-cell ard-table__row-header\"\r\n scope=\"row\"\r\n [ngClass]=\"row.dataColumns()[$index].cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isCellCheckbox(cell)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"cellTmp\"></ng-template>\r\n </th>\r\n } }\r\n </tr>\r\n } }\r\n </tbody>\r\n @if (canDisplayPagination()) {\r\n <tfoot class=\"ard-table__foot\">\r\n <tr class=\"ard-table__foot-row\">\r\n <td\r\n class=\"ard-table__pagination-cell\"\r\n colspan=\"9999\"\r\n >\r\n <ard-table-pagination\r\n [options]=\"paginationOptions()\"\r\n [totalItems]=\"totalItems()!\"\r\n [disabled]=\"paginationDisabled()\"\r\n [(itemsPerPage)]=\"itemsPerPage\"\r\n [(page)]=\"page\"\r\n [align]=\"paginationAlign()\"\r\n [isLoading]=\"isLoading()\"\r\n [itemsPerPageText]=\"itemsPerPageText()\"\r\n [currentItemsFormatFn]=\"currentItemsFormatFn()\"\r\n />\r\n </td>\r\n </tr>\r\n </tfoot>\r\n }\r\n</table>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumIconButtonModule } from '../buttons/icon-button/icon-button.module';\nimport { ArdiumSelectModule } from '../select/select.module';\nimport { ArdiumTablePaginationComponent } from './table-pagination.component';\nimport { ArdiumIconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [ArdiumTablePaginationComponent],\n imports: [CommonModule, ArdiumSelectModule, ArdiumIconButtonModule, ArdiumIconModule],\n exports: [ArdiumTablePaginationComponent],\n})\nexport class ArdiumTablePaginationModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumTableComponent } from './table.component';\nimport { ArdiumCheckboxModule } from '../checkbox/checkbox.module';\nimport { ArdiumTablePaginationModule } from '../table-pagination/table-pagination.module';\nimport {\n ArdiumTableCaptionTemplateDirective,\n ArdiumTableCheckboxTemplateDirective,\n ArdiumTableHeaderCheckboxTemplateDirective,\n ArdiumTablePaginationTemplateDirective,\n ArdiumTableTemplateDirective,\n} from './table.directives';\nimport { ArdiumIconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [\n ArdiumTableComponent,\n ArdiumTableTemplateDirective,\n ArdiumTableCheckboxTemplateDirective,\n ArdiumTableHeaderCheckboxTemplateDirective,\n ArdiumTableCaptionTemplateDirective,\n ArdiumTablePaginationTemplateDirective,\n ],\n imports: [CommonModule, ArdiumCheckboxModule, ArdiumTablePaginationModule, ArdiumIconModule],\n exports: [\n ArdiumTableComponent,\n ArdiumTableTemplateDirective,\n ArdiumTableCheckboxTemplateDirective,\n ArdiumTableHeaderCheckboxTemplateDirective,\n ArdiumTableCaptionTemplateDirective,\n ArdiumTablePaginationTemplateDirective,\n ],\n})\nexport class ArdiumTableModule {}\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n OnChanges,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n model,\r\n} from '@angular/core';\r\nimport { TableDataColumn, TablePaginationStrategy } from '../table/table.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { CurrentItemsFormatFn, PaginationAlign } from '../table-pagination/table-pagination.types';\r\n\r\n@Component({\r\n selector: 'ard-table-from-csv',\r\n templateUrl: './table-from-csv.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTableFromCsvComponent implements AfterContentInit, OnChanges {\r\n readonly selectableRows = input<any>();\r\n readonly maxSelectedItems = input<any>();\r\n readonly clickableRows = input<any>();\r\n\r\n readonly isLoading = input<any>();\r\n readonly loadingProgress = input<any>();\r\n\r\n readonly caption = input<Nullable<string>>(undefined);\r\n\r\n readonly appearance = input<any>();\r\n readonly variant = input<any>();\r\n readonly color = input<any>();\r\n readonly align = input<any>();\r\n readonly headerAlign = input<any>();\r\n\r\n readonly compact = input<any>();\r\n readonly zebra = input<any>();\r\n readonly stickyHeader = input<any>();\r\n\r\n //! pagination\r\n readonly paginated = input<any>();\r\n\r\n readonly paginationStrategy = input<TablePaginationStrategy>(TablePaginationStrategy.Slice);\r\n\r\n readonly paginationOptions = input<number[] | { value: number; label: string }[]>([10, 25, 50]);\r\n readonly totalItems = input<any>();\r\n readonly paginationColor = input<ComponentColor>(ComponentColor.None);\r\n readonly paginationAlign = input<PaginationAlign>(PaginationAlign.Split);\r\n readonly itemsPerPageText = input<string>('Items per page:');\r\n readonly currentItemsFormatFn = input<CurrentItemsFormatFn>(\r\n ({ currentItemsFirst, currentItemsLast, totalItems }) => `${currentItemsFirst} – ${currentItemsLast} of ${totalItems}`\r\n );\r\n\r\n readonly pageFillRemaining = input<any>();\r\n readonly paginationDisabled = input<any>();\r\n readonly useFirstLastButtons = input<any>();\r\n\r\n readonly itemsPerPage = model<number>(50);\r\n readonly page = model<number>(1);\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['itemsPerPage']) {\r\n const ipp = changes['itemsPerPage'].currentValue;\r\n const options =\r\n (changes['paginationOptions']?.currentValue as number[] | { value: number; label: string }[]) ||\r\n (this.paginationOptions() as number[] | { value: number; label: string }[]);\r\n if (!options.find(v => (typeof v === 'number' ? v === ipp : v.value === ipp))) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5071: value of \"${ipp}\" in <ard-table-from-csv>'s [itemsPerPage] does not appear in [paginationOptions] array [${options\r\n .map(v => (typeof v === 'number' ? v : v.value))\r\n .join(', ')}]`\r\n )\r\n );\r\n }\r\n }\r\n if (changes['paginationOptions']) {\r\n const options = changes['paginationOptions'].currentValue.map((v: number | { value: number; label: string }) =>\r\n typeof v === 'number' ? v : v.value\r\n ) as number[];\r\n for (const opt of options) {\r\n if (opt <= 0 || opt % 1 !== 0) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5072: each item of <ard-table-from-csv>'s [paginationOptions] must be a positive integer. The \"${opt}\" option will be ignored.`\r\n )\r\n );\r\n }\r\n }\r\n }\r\n if (changes['page']) {\r\n const page = changes['page'].currentValue as number;\r\n if (page === 0) {\r\n throw new Error(\r\n `ARD-FT5073a: <ard-table-from-csv>'s [page] uses 1-indexed numbering system. The value 0 is not accepted.`\r\n );\r\n } else if (page < 0 || page % 1 !== 0) {\r\n throw new Error(`ARD-FT5073b: value of <ard-table-from-csv>'s [page] must be a positive integer, got \"${page}\".`);\r\n }\r\n }\r\n }\r\n\r\n //! data\r\n readonly separator = input<string>(',');\r\n\r\n readonly data = input<{ headers: TableDataColumn[]; dataRows: any[] } | null, string>(null, {\r\n transform: v => {\r\n if (!this._isCsvValid(v)) return null;\r\n const lines = v.split('\\n');\r\n const headers = this._convertCsvToHeaders(lines.shift()!);\r\n const dataRows = this._convertCsvToArray(lines, headers);\r\n return { headers, dataRows };\r\n },\r\n });\r\n private readonly _isDataOkay = computed(() => this.data() !== null);\r\n\r\n readonly headers = computed(() => this.data()?.headers ?? []);\r\n readonly dataRows = computed(() => this.data()?.dataRows ?? []);\r\n\r\n ngAfterContentInit(): void {\r\n if (!this._isDataOkay()) {\r\n console.error(new Error(`ARD-FT5070: Expected <ard-table-from-csv>'s [data] attribute to be a non-empty string, got \"\".`));\r\n }\r\n }\r\n\r\n private _isCsvValid(csv: string): boolean {\r\n return csv.length > 1;\r\n }\r\n private _convertCsvToHeaders(line: string): TableDataColumn[] {\r\n const headers = line.split(this.separator());\r\n return headers.map(header => {\r\n header = header.trim();\r\n return {\r\n header,\r\n dataSource: header,\r\n };\r\n });\r\n }\r\n private _convertCsvToArray(lines: string[], headers: TableDataColumn[]): any[] {\r\n const dataRows: Record<string, any>[] = [];\r\n\r\n for (const line of lines) {\r\n const lineArr = line.split(this.separator());\r\n\r\n const obj: Record<string, any> = {};\r\n for (let i = 0; i < headers.length; i++) {\r\n const source = headers[i].dataSource as string;\r\n obj[source] = lineArr[i]?.trim() ?? '';\r\n }\r\n dataRows.push(obj);\r\n }\r\n return dataRows;\r\n }\r\n}\r\n","<ard-table\r\n treatDataSourceAsString\r\n [columns]=\"headers()\"\r\n [data]=\"dataRows()\"\r\n [selectableRows]=\"selectableRows()\"\r\n [maxSelectedItems]=\"maxSelectedItems()\"\r\n [clickableRows]=\"clickableRows()\"\r\n [isLoading]=\"isLoading()\"\r\n [loadingProgress]=\"loadingProgress()\"\r\n [caption]=\"caption()\"\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [color]=\"color()\"\r\n [align]=\"align()\"\r\n [headerAlign]=\"headerAlign()\"\r\n [compact]=\"compact()\"\r\n [zebra]=\"zebra()\"\r\n [stickyHeader]=\"stickyHeader()\"\r\n [paginated]=\"paginated()\"\r\n [paginationStrategy]=\"paginationStrategy()\"\r\n [totalItems]=\"totalItems()\"\r\n [paginationColor]=\"paginationColor()\"\r\n [paginationAlign]=\"paginationAlign()\"\r\n [itemsPerPageText]=\"itemsPerPageText()\"\r\n [currentItemsFormatFn]=\"currentItemsFormatFn()\"\r\n [pageFillRemaining]=\"pageFillRemaining()\"\r\n [paginationDisabled]=\"paginationDisabled()\"\r\n [useFirstLastButtons]=\"useFirstLastButtons()\"\r\n [(itemsPerPage)]=\"itemsPerPage\"\r\n [(page)]=\"page\"\r\n/>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumTableFromCsvComponent } from './table-from-csv.component';\nimport { ArdiumTableModule } from './../table/table.module';\n\n@NgModule({\n declarations: [ArdiumTableFromCsvComponent],\n imports: [CommonModule, ArdiumTableModule],\n exports: [ArdiumTableFromCsvComponent],\n})\nexport class ArdiumTableFromCsvModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isArray } from 'simple-bool';\r\nimport { StarColor, StarFillMode } from './../star.types';\r\n\r\n@Component({\r\n selector: 'ard-star-display',\r\n templateUrl: './star-display.component.html',\r\n styleUrls: ['./star-display.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumStarDisplayComponent {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(StarColor.Star);\r\n\r\n readonly ngClasses = computed<string>(() => [this.wrapperClasses(), `ard-color-${this.color}`].join(' '));\r\n\r\n //! stars\r\n readonly max = input<number, any>(5, { transform: v => coerceNumberProperty(v, 0) });\r\n\r\n readonly value = input<number | StarFillMode[], string | number | StarFillMode[]>(0, {\r\n transform: v => {\r\n if (isArray(v)) {\r\n return v;\r\n }\r\n return coerceNumberProperty(v, 0);\r\n },\r\n });\r\n\r\n readonly starArray = computed<StarFillMode[]>(() => {\r\n let v = this.value();\r\n let newArr: StarFillMode[];\r\n\r\n // pad the array with non-filled stars and return it\r\n if (isArray(v)) {\r\n newArr = [...v];\r\n while (newArr.length < this.max()) {\r\n newArr.push(StarFillMode.None);\r\n }\r\n return newArr;\r\n }\r\n\r\n // create an array from a numeric value\r\n newArr = [];\r\n while (newArr.length < this.max()) {\r\n v--;\r\n if (v + 1 >= 1) {\r\n newArr.push(StarFillMode.Filled);\r\n continue;\r\n }\r\n if (Math.round(v + 1) === 1) {\r\n newArr.push(StarFillMode.Half);\r\n continue;\r\n }\r\n newArr.push(StarFillMode.None);\r\n }\r\n return newArr;\r\n });\r\n}\r\n","<div\r\n class=\"ard-star-display\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (fillMode of starArray(); track $index) {\r\n <ard-star\r\n [fill]=\"fillMode\"\r\n [color]=\"color()\"\r\n />\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStarDisplayComponent } from './star-display.component';\nimport { ArdiumStarModule } from '../star.module';\n\n@NgModule({\n declarations: [ArdiumStarDisplayComponent],\n imports: [CommonModule, ArdiumStarModule],\n exports: [ArdiumStarDisplayComponent],\n})\nexport class ArdiumStarDisplayModule {}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\n\r\n@Component({\r\n selector: 'ard-tab',\r\n templateUrl: './tab.component.html',\r\n styleUrl: './tab.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTabComponent {\r\n readonly disabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly selected = signal<boolean>(false);\r\n @Input('selected')\r\n set _selected(v: any) {\r\n this.selected.set(coerceBooleanProperty(v));\r\n }\r\n\r\n setSelected(state: boolean): void {\r\n this.selected.set(state);\r\n this._emitChange();\r\n }\r\n\r\n @HostBinding('class.ard-tab-selected')\r\n get _selectedHostAttribute() {\r\n return this.selected();\r\n }\r\n\r\n private _emitChange(): void {\r\n this.selectedChange.emit(this.selected());\r\n }\r\n\r\n readonly focused = signal<boolean>(false);\r\n\r\n readonly _label = input<string | null>(null, { alias: 'label' });\r\n readonly label = computed(() => this._label() ?? this.tabId());\r\n\r\n readonly tabId = input.required<string>();\r\n\r\n readonly focusEvent = output<void>();\r\n readonly blurEvent = output<void>();\r\n readonly selectedChange = output<boolean>();\r\n}\r\n","<ng-content></ng-content>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n contentChildren,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { OneAxisAlignment } from '../types/alignment.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdiumTabComponent } from './tab/tab.component';\r\n\r\n@Component({\r\n selector: 'ard-tabber',\r\n templateUrl: './tabber.component.html',\r\n styleUrl: './tabber.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTabberComponent implements AfterContentInit {\r\n public readonly tabs = contentChildren(ArdiumTabComponent, { descendants: true });\r\n\r\n readonly currentTab = signal<ArdiumTabComponent | null>(null);\r\n readonly currentFocusedTab = signal<ArdiumTabComponent | null>(null);\r\n\r\n ngAfterContentInit(): void {\r\n let selectedCmp: ArdiumTabComponent | null = null;\r\n for (const cmp of this.tabs()) {\r\n if (cmp.selected()) {\r\n // ensure only one tab is selected\r\n if (selectedCmp) {\r\n cmp.selected.set(false);\r\n }\r\n\r\n selectedCmp = cmp;\r\n }\r\n\r\n cmp.focusEvent.subscribe(() => {\r\n this.focusEvent.emit(cmp.tabId());\r\n });\r\n cmp.blurEvent.subscribe(() => {\r\n this.blurEvent.emit(cmp.tabId());\r\n });\r\n cmp.selectedChange.subscribe(isSelected => {\r\n if (!isSelected) return;\r\n this.changeTab.emit(cmp.tabId());\r\n });\r\n }\r\n\r\n if (!selectedCmp) {\r\n selectedCmp = this.tabs()[0] ?? null;\r\n\r\n if (selectedCmp) {\r\n selectedCmp.selected.set(true);\r\n }\r\n }\r\n\r\n this.currentTab.set(selectedCmp);\r\n }\r\n\r\n onTabClick(tab: ArdiumTabComponent): void {\r\n const curr = this.currentTab();\r\n if (curr) {\r\n curr.selected.set(false);\r\n curr.selectedChange.emit(false);\r\n }\r\n this.currentTab.set(tab);\r\n\r\n tab.selected.set(true);\r\n tab.selectedChange.emit(true);\r\n }\r\n onTabFocus(tab: ArdiumTabComponent): void {\r\n tab.focusEvent.emit();\r\n tab.focused.set(true);\r\n\r\n this.currentFocusedTab.set(tab);\r\n }\r\n onTabBlur(tab: ArdiumTabComponent): void {\r\n tab.blurEvent.emit();\r\n tab.focused.set(false);\r\n\r\n this.currentFocusedTab.set(null);\r\n }\r\n\r\n readonly focusEvent = output<string>({ alias: 'focus' });\r\n readonly blurEvent = output<string>({ alias: 'blur' });\r\n readonly changeTab = output<string>();\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly ngClasses = computed(() => [`ard-color-${this.color()}`].join(' '));\r\n\r\n //! tab container settings\r\n readonly stretchTabs = input<boolean, any>(true, { transform: v => coerceBooleanProperty(v) });\r\n readonly tabAlignment = input<OneAxisAlignment>(OneAxisAlignment.Left);\r\n\r\n readonly tabContainerClasses = computed(() =>\r\n [this.stretchTabs() ? 'ard-stretch-tabs' : '', this.stretchTabs() ? '' : `ard-tab-align-${this.tabAlignment()}`].join(' ')\r\n );\r\n\r\n //! other\r\n readonly tabIndex = input<number | string>(0);\r\n}\r\n","<div\r\n class=\"ard-tabber\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div\r\n class=\"ard-tabber-tabs\"\r\n [ngClass]=\"tabContainerClasses()\"\r\n >\r\n @for (tab of tabs(); track tab) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n role=\"tab\"\r\n class=\"ard-tab-button\"\r\n [id]=\"tab.tabId()\"\r\n [class.ard-tab-active]=\"tab === currentTab()\"\r\n [class.ard-tab-focused]=\"tab === currentFocusedTab()\"\r\n (click)=\"!tab.selected() && onTabClick(tab)\"\r\n (focus)=\"onTabFocus(tab)\"\r\n (blur)=\"onTabBlur(tab)\"\r\n [tabindex]=\"tabIndex()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n {{ tab.label() }}\r\n </button>\r\n }\r\n </div>\r\n <div\r\n role=\"tabpanel\"\r\n class=\"ard-tabber-content\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumTabberComponent } from './tabber.component';\r\nimport { ArdiumTabComponent } from './tab/tab.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumTabberComponent, ArdiumTabComponent],\r\n imports: [CommonModule],\r\n exports: [ArdiumTabberComponent, ArdiumTabComponent],\r\n})\r\nexport class ArdiumTabberModule {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n ElementRef,\r\n HostBinding,\r\n Renderer2,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\nimport { OneAxisAlignment } from '../types/alignment.types';\r\n\r\n@Component({\r\n selector: 'ard-card-header',\r\n templateUrl: 'card-header.template.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumCardHeaderComponent {}\r\n\r\n@Directive({ selector: 'ard-card-subtitle, [ard-card-subtitle]' })\r\nexport class ArdiumCardSubtitleDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-subtitle');\r\n }\r\n}\r\n\r\n@Directive({ selector: 'ard-card-title, [ard-card-title]' })\r\nexport class ArdiumCardTitleDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-title');\r\n }\r\n}\r\n\r\n@Directive({ selector: '[ard-card-avatar]' })\r\nexport class ArdiumCardAvatarDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-avatar');\r\n }\r\n}\r\n\r\n@Directive({ selector: 'ard-card-content, [ard-card-content]' })\r\nexport class ArdiumCardContentDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-content');\r\n }\r\n}\r\n\r\n@Directive({ selector: '[ard-card-image]' })\r\nexport class ArdiumCardImageDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-image');\r\n }\r\n}\r\n\r\n@Directive({ selector: 'ard-card-action-buttons, [ard-card-action-buttons]' })\r\nexport class ArdiumCardActionButtonsDirective {\r\n readonly align = input<OneAxisAlignment>(OneAxisAlignment.Right);\r\n\r\n readonly alignClass = computed(() => `ard-card-action-buttons ard-align-${this.align()}`);\r\n\r\n @HostBinding('class')\r\n get _alignClassHostAttribute() {\r\n return this.alignClass();\r\n }\r\n}\r\n\r\n@Directive({ selector: 'ard-card-footer, [ard-card-footer]' })\r\nexport class ArdiumCardFooterDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-footer');\r\n }\r\n}\r\n","<ng-content select=\"[ard-card-avatar]\" />\r\n<div class=\"ard-card-header-title-container\">\r\n <ng-content\r\n select=\"ard-card-title, ard-card-subtitle,\r\n [ard-card-title], [ard-card-subtitle]\"\r\n />\r\n</div>\r\n<ng-content />\r\n","export const CardAppearance = {\n Outlined: 'outlined',\n Raised: 'raised',\n} as const;\nexport type CardAppearance = (typeof CardAppearance)[keyof typeof CardAppearance];\n\nexport const CardVariant = {\n Rounded: 'rounded',\n Sharp: 'sharp',\n} as const;\nexport type CardVariant = (typeof CardVariant)[keyof typeof CardVariant];\n","import { ChangeDetectionStrategy, Component, Directive, HostBinding, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { CardAppearance, CardVariant } from './card.types';\r\n\r\n@Directive({ selector: '[ard-card]' })\r\nexport class ArdiumCardDirective {\r\n //! appearance\r\n readonly appearance = input<CardAppearance>(CardAppearance.Raised);\r\n readonly variant = input<CardVariant>(CardVariant.Rounded);\r\n\r\n readonly ngClasses = computed(() =>\r\n ['ard-card', `ard-appearance-${this.appearance()}`, `ard-variant-${this.variant()}`].join(' ')\r\n );\r\n\r\n @HostBinding('class')\r\n get _ngClassesHostAttribute() {\r\n return this.ngClasses();\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'ard-card',\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumCardComponent extends ArdiumCardDirective {}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport {\n ArdiumCardActionButtonsDirective,\n ArdiumCardAvatarDirective,\n ArdiumCardContentDirective,\n ArdiumCardFooterDirective,\n ArdiumCardHeaderComponent,\n ArdiumCardImageDirective,\n ArdiumCardSubtitleDirective,\n ArdiumCardTitleDirective,\n} from './card.children';\nimport { ArdiumCardComponent, ArdiumCardDirective } from './card.component';\n\n@NgModule({\n declarations: [\n ArdiumCardComponent,\n ArdiumCardDirective,\n ArdiumCardHeaderComponent,\n ArdiumCardTitleDirective,\n ArdiumCardSubtitleDirective,\n ArdiumCardAvatarDirective,\n ArdiumCardContentDirective,\n ArdiumCardImageDirective,\n ArdiumCardActionButtonsDirective,\n ArdiumCardFooterDirective,\n ],\n imports: [CommonModule],\n exports: [\n ArdiumCardComponent,\n ArdiumCardDirective,\n ArdiumCardHeaderComponent,\n ArdiumCardTitleDirective,\n ArdiumCardSubtitleDirective,\n ArdiumCardAvatarDirective,\n ArdiumCardContentDirective,\n ArdiumCardImageDirective,\n ArdiumCardActionButtonsDirective,\n ArdiumCardFooterDirective,\n ],\n})\nexport class ArdiumCardModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\n\r\n@Component({\r\n selector: 'ard-divider',\r\n template: '',\r\n styleUrls: ['./divider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumDividerComponent {\r\n readonly vertical = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n @HostBinding('class.ard-divider-vertical')\r\n get _verticalHostAttribute() {\r\n return this.vertical();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDividerComponent } from './divider.component';\n\n@NgModule({\n declarations: [ArdiumDividerComponent],\n imports: [CommonModule],\n exports: [ArdiumDividerComponent],\n})\nexport class ArdiumDividerModule {}\n","import { Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n TemplateRef,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\r\n\r\n@Component({\r\n selector: 'ard-modal',\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumModalComponent {\r\n private readonly overlay = inject(Overlay);\r\n private readonly scrollStrategyOpts = inject(ScrollStrategyOptions);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n\r\n //! appearance\r\n readonly appearance = input<PanelAppearance>(PanelAppearance.Raised);\r\n readonly variant = input<PanelVariant>(PanelVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [`ard-variant-${this.variant()}`, `ard-appearance-${this.appearance()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! heading\r\n readonly heading = input<string>('');\r\n\r\n readonly noCloseButton = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! options\r\n readonly noBackdrop = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly disableBackdropClose = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! open state handling\r\n private readonly open = signal<boolean>(false);\r\n @Input({ alias: 'open' })\r\n set _open(v: any) {\r\n this.open.set(coerceBooleanProperty(v));\r\n if (this.open()) this._openOverlay();\r\n else this._destroyOverlay();\r\n }\r\n\r\n readonly openChange = output<boolean>();\r\n readonly closeEvent = output<void>({ alias: 'close' });\r\n\r\n //! overlay handling\r\n readonly modalTemplate = viewChild('modalTemplate', { read: TemplateRef });\r\n\r\n private _modalOverlay?: OverlayRef;\r\n\r\n private _openOverlay(): void {\r\n const strategy = this.overlay.position().global();\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n scrollStrategy: this.scrollStrategyOpts.block(),\r\n hasBackdrop: false,\r\n });\r\n\r\n this._modalOverlay = this.overlay.create(config);\r\n\r\n const portal = new TemplatePortal(this.modalTemplate()!, this.viewContainerRef);\r\n this._modalOverlay.attach(portal);\r\n }\r\n private _destroyOverlay(): void {\r\n if (!this._modalOverlay) return;\r\n\r\n this.openChange.emit(false);\r\n this.closeEvent.emit();\r\n this._modalOverlay.dispose();\r\n delete this._modalOverlay;\r\n }\r\n\r\n //! events\r\n onBackdropClick(): void {\r\n if (this.disableBackdropClose()) return;\r\n this._destroyOverlay();\r\n }\r\n onCloseButtonClick(): void {\r\n this._destroyOverlay();\r\n }\r\n}\r\n","<ng-template #modalTemplate>\r\n @if (noBackdrop()) {\r\n <div\r\n class=\"ard-modal\"\r\n [ngClass]=\"ngClasses\"\r\n (click)=\"onBackdropClick()\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"_modalInsidePanel\"></ng-template>\r\n </div>\r\n } @else {\r\n <div\r\n class=\"ard-modal ard-modal-backdrop\"\r\n [ngClass]=\"ngClasses\"\r\n (click)=\"onBackdropClick()\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"_modalInsidePanel\"></ng-template>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #_modalInsidePanel>\r\n <div\r\n class=\"ard-modal-panel\"\r\n cdkTrapFocus\r\n [class.ard-modal-no-heading-text]=\"!heading\"\r\n [class.ard-modal-has-close-button]=\"!this.noCloseButton()\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <div class=\"ard-modal-heading\">\r\n <div class=\"ard-modal-heading-text\">{{ heading() }}</div>\r\n @if (!noCloseButton()) {\r\n <ard-icon-button\r\n class=\"ard-modal-close-button\"\r\n color=\"none\"\r\n [compact]=\"compact()\"\r\n (click)=\"onCloseButtonClick()\"\r\n >\r\n <ard-icon>close</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n <div class=\"ard-modal-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumModalComponent } from './modal.component';\nimport { ArdiumIconButtonModule } from '../buttons/icon-button/icon-button.module';\nimport { ArdiumIconModule } from '../icon/icon.module';\nimport { A11yModule } from '@angular/cdk/a11y';\n\n@NgModule({\n declarations: [ArdiumModalComponent],\n imports: [CommonModule, ArdiumIconButtonModule, ArdiumIconModule, A11yModule],\n exports: [ArdiumModalComponent],\n})\nexport class ArdiumModalModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { DialogButtonsContext } from './dialog.types';\n\n@Directive({ selector: 'ard-dialog > ng-template[ard-buttons-tmp]' })\nexport class ArdDialogButtonsTemplateDirective {\n constructor(public template: TemplateRef<DialogButtonsContext>) {}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n input,\r\n model,\r\n output,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ButtonAppearance } from '../buttons/general-button.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\r\nimport { ArdDialogButtonsTemplateDirective } from './dialog.directives';\r\nimport { DialogButtonsContext, DialogResult } from './dialog.types';\r\n\r\n@Component({\r\n selector: 'ard-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrl: './dialog.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumDialogComponent {\r\n //! appearance\r\n //all handled by modal component\r\n readonly appearance = input<PanelAppearance>(PanelAppearance.Raised);\r\n readonly variant = input<PanelVariant>(PanelVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! heading\r\n //all handled by modal component\r\n readonly heading = input<string>('');\r\n\r\n readonly noCloseButton = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! options\r\n //all handled by modal component\r\n readonly noBackdrop = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly disableBackdropClose = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! open state handling\r\n //all handled by modal component\r\n readonly open = model<boolean>(false);\r\n\r\n readonly closeEvent = output<DialogResult>({ alias: 'close' });\r\n readonly confirmEvent = output<void>({ alias: 'confirm' });\r\n readonly rejectEvent = output<void>({ alias: 'reject' });\r\n\r\n //! button settings\r\n readonly confirmButtonText = input<string>('Confirm');\r\n readonly confirmButtonColor = input<ComponentColor>(ComponentColor.Primary);\r\n readonly confirmButtonAppearance = input<ButtonAppearance>(ButtonAppearance.RaisedStrong);\r\n readonly rejectButtonText = input<string>('Cancel');\r\n readonly rejectButtonColor = input<ComponentColor>(ComponentColor.Primary);\r\n readonly rejectButtonAppearance = input<ButtonAppearance>(ButtonAppearance.Transparent);\r\n\r\n readonly noRejectButton = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly canConfirm = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n onConfirmClick() {\r\n if (!this.canConfirm()) return;\r\n\r\n this.open.set(false);\r\n setTimeout(() => {\r\n this.closeEvent.emit('confirm');\r\n this.confirmEvent.emit();\r\n }, 0);\r\n }\r\n onRejectClick() {\r\n this.open.set(false);\r\n setTimeout(() => {\r\n this.closeEvent.emit('reject');\r\n this.rejectEvent.emit();\r\n }, 0);\r\n }\r\n onModalClose() {\r\n this.closeEvent.emit('close');\r\n }\r\n\r\n //! templates\r\n readonly buttonsTemplate = contentChild(ArdDialogButtonsTemplateDirective);\r\n\r\n readonly getButtonsContext = computed<DialogButtonsContext>(() => {\r\n return {\r\n confirmButton: {\r\n text: this.confirmButtonText(),\r\n color: this.confirmButtonColor(),\r\n appearance: this.confirmButtonAppearance(),\r\n },\r\n rejectButton: {\r\n enabled: !this.noRejectButton(),\r\n text: this.rejectButtonText(),\r\n color: this.rejectButtonColor(),\r\n appearance: this.rejectButtonAppearance(),\r\n },\r\n canConfirm: this.canConfirm(),\r\n onConfirm: () => this.onConfirmClick(),\r\n onReject: () => this.onRejectClick(),\r\n dialogAppearance: this.appearance(),\r\n dialogVariant: this.variant(),\r\n dialogCompact: this.compact(),\r\n };\r\n });\r\n}\r\n","<ard-modal\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [heading]=\"heading()\"\r\n [noCloseButton]=\"noCloseButton()\"\r\n [noBackdrop]=\"noBackdrop()\"\r\n [disableBackdropClose]=\"disableBackdropClose()\"\r\n [(open)]=\"open\"\r\n (close)=\"onModalClose()\"\r\n>\r\n <div class=\"ard-dialog-container\">\r\n <div class=\"ard-dialog-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"ard-dialog-buttons\">\r\n <ng-template\r\n #defaultButtonsTemplate\r\n let-confirmButton=\"confirmButton\"\r\n let-rejectButton=\"rejectButton\"\r\n let-canConfirm=\"canConfirm\"\r\n let-onConfirm=\"onConfirm\"\r\n let-onReject=\"onReject\"\r\n let-dialogVariant=\"dialogVariant\"\r\n let-dialogCompact=\"dialogCompact\"\r\n >\r\n <div class=\"ard-dialog-buttons-container\">\r\n @if (rejectButton.enabled) {\r\n <ard-button\r\n [color]=\"rejectButton.color\"\r\n [appearance]=\"rejectButton.appearance\"\r\n [variant]=\"dialogVariant\"\r\n [compact]=\"dialogCompact\"\r\n (click)=\"onReject()\"\r\n >\r\n {{ rejectButton.text }}\r\n </ard-button>\r\n }\r\n <ard-button\r\n [color]=\"confirmButton.color\"\r\n [appearance]=\"confirmButton.appearance\"\r\n [variant]=\"dialogVariant\"\r\n [compact]=\"dialogCompact\"\r\n (click)=\"onConfirm()\"\r\n [disabled]=\"!canConfirm\"\r\n >\r\n {{ confirmButton.text }}\r\n </ard-button>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"buttonsTemplate()?.template ?? defaultButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"getButtonsContext()\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n</ard-modal>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDialogComponent } from './dialog.component';\nimport { ArdiumButtonModule } from '../buttons/button/button.module';\nimport { ArdiumModalModule } from '../modal/modal.module';\nimport { ArdDialogButtonsTemplateDirective } from './dialog.directives';\n\n@NgModule({\n declarations: [ArdiumDialogComponent, ArdDialogButtonsTemplateDirective],\n imports: [CommonModule, ArdiumButtonModule, ArdiumModalModule],\n exports: [ArdiumDialogComponent, ArdDialogButtonsTemplateDirective],\n})\nexport class ArdiumDialogModule {}\n","import { ButtonAppearance } from '../buttons/general-button.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\r\n\r\nexport const DialogResult = {\r\n Confirm: 'confirm',\r\n Reject: 'reject',\r\n Close: 'close',\r\n} as const;\r\nexport type DialogResult = (typeof DialogResult)[keyof typeof DialogResult];\r\n\r\nexport interface DialogButtonsContext {\r\n confirmButton: {\r\n text: string;\r\n color: ComponentColor;\r\n appearance: ButtonAppearance;\r\n };\r\n rejectButton: {\r\n enabled: boolean;\r\n text: string;\r\n color: ComponentColor;\r\n appearance: ButtonAppearance;\r\n };\r\n canConfirm: boolean;\r\n onConfirm: () => void;\r\n onReject: () => void;\r\n dialogAppearance: PanelAppearance;\r\n dialogVariant: PanelVariant;\r\n dialogCompact: boolean;\r\n}\r\n","interface IQueue {\n readonly length: number;\n}\n\nexport class Queue<T = unknown> implements IQueue {\n private head?: QueueItem<T>;\n private tail?: QueueItem<T>;\n\n push(item: T): void {\n if (!this.tail) return this.pushFront(item);\n this.tail!.next = new QueueItem(item);\n this.tail = this.tail!.next!;\n }\n pushFront(item: T): void {\n this.head = new QueueItem(item, this.head);\n if (!this.tail) this.tail = this.head;\n }\n pop(): T | undefined {\n const head = this.head;\n if (!head) return;\n //replace head with the next item\n this.head = head.next;\n //delete the tail if there are no next items\n if (!this.head) this.tail = undefined;\n\n return head.value;\n }\n peek(): T | undefined {\n return this.head?.value;\n }\n clear(): void {\n this.head = undefined;\n this.tail = undefined;\n }\n get length(): number {\n let length = 0;\n let currentNode = this.head;\n while (currentNode) {\n length++;\n currentNode = currentNode.next;\n }\n return length;\n }\n isEmpty(): boolean {\n return !this.head;\n }\n toArray(): T[] {\n const array: T[] = [];\n let currentNode = this.head;\n while (currentNode) {\n array.push(currentNode.value);\n currentNode = currentNode.next;\n }\n return array;\n }\n}\n\nexport class QueueItem<T> {\n constructor(\n public value: T,\n public next?: QueueItem<T>\n ) {}\n}\n","import { ComponentType } from '@angular/cdk/portal';\r\nimport { InjectionToken } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { ArdSnackbarData, ArdSnackbarOptions, ArdSnackbarType } from './snackbar.types';\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentColor } from '../types/colors.types';\r\n\r\nexport const ARD_SNACKBAR_DATA = new InjectionToken<ArdSnackbarData>('ArdSnackbarData');\r\nexport const ARD_SNACKBAR_COLOR = new InjectionToken<ComponentColor>('ArdSnackbarColor');\r\nexport const ARD_SNACKBAR_TYPE = new InjectionToken<ArdSnackbarType>('ArdSnackbarType');\r\n\r\nexport class _ArdSnackbarRefInternal<T> {\r\n constructor(\r\n public component: ComponentType<T>,\r\n public options: Required<ArdSnackbarOptions>,\r\n dismiss: (withAction?: boolean) => void\r\n ) {\r\n this.publicRef = new ArdSnackbarRef(dismiss, this._onOpen, this._onCloseStart);\r\n }\r\n\r\n readonly publicRef!: ArdSnackbarRef<T>;\r\n\r\n timeout!: any;\r\n overlay!: OverlayRef;\r\n\r\n private readonly _onOpen = new Subject<void>();\r\n private readonly _onCloseStart = new BehaviorSubject<boolean>(false);\r\n\r\n markAsOpened() {\r\n this._onOpen.next();\r\n this._onOpen.complete();\r\n }\r\n markAsStartingToClose() {\r\n this._onCloseStart.next(true);\r\n this._onCloseStart.complete();\r\n }\r\n}\r\nexport class ArdSnackbarRef<T = unknown> {\r\n constructor(\r\n private readonly dismiss: (withAction?: boolean) => void,\r\n private readonly _onOpen: Subject<void>,\r\n private readonly _onCloseStart: BehaviorSubject<boolean>\r\n ) {}\r\n\r\n private readonly _onClose = new Subject<boolean>();\r\n public readonly onOpen = this._onOpen.asObservable();\r\n public readonly onClose = this._onClose.asObservable();\r\n public readonly onCloseStart = this._onCloseStart.asObservable();\r\n\r\n public instance!: T;\r\n\r\n close(withAction = false): void {\r\n if (this.isClosed) return;\r\n this.dismiss(withAction);\r\n this.markAsClosed();\r\n }\r\n\r\n markAsClosed(withAction = false): void {\r\n if (this.isClosed) return;\r\n this._onClose.next(withAction);\r\n this._onClose.complete();\r\n this._isClosed = true;\r\n }\r\n\r\n private _isClosed = false;\r\n public get isClosed(): boolean {\r\n return this._isClosed;\r\n }\r\n}\r\n","import { ElementRef } from '@angular/core';\r\nimport { ComponentColor } from '../types/colors.types';\r\n\r\nexport const ArdSnackbarAlignment = {\r\n TopLeft: 'top-left',\r\n TopCenter: 'top-center',\r\n TopRight: 'top-right',\r\n BottomLeft: 'bottom-left',\r\n BottomCenter: 'bottom-center',\r\n BottomRight: 'bottom-right',\r\n} as const;\r\nexport type ArdSnackbarAlignment = (typeof ArdSnackbarAlignment)[keyof typeof ArdSnackbarAlignment];\r\n\r\nexport const ArdSnackbarOriginRelation = {\r\n Inside: 'inside',\r\n Outside: 'outside',\r\n} as const;\r\nexport type ArdSnackbarOriginRelation = (typeof ArdSnackbarOriginRelation)[keyof typeof ArdSnackbarOriginRelation];\r\n\r\nexport const ArdSnackbarQueueHandling = {\r\n Default: 'default',\r\n Skip: 'skip',\r\n Overwrite: 'overwrite',\r\n} as const;\r\nexport type ArdSnackbarQueueHandling = (typeof ArdSnackbarQueueHandling)[keyof typeof ArdSnackbarQueueHandling];\r\n\r\nexport type ArdSnackbarOrigin<T = any> = HTMLElement | ElementRef<T>;\r\n\r\nexport const ArdSnackbarType = {\r\n None: 'none',\r\n Danger: 'danger',\r\n Warning: 'warn',\r\n Success: 'success',\r\n Info: 'info',\r\n} as const;\r\nexport type ArdSnackbarType = (typeof ArdSnackbarType)[keyof typeof ArdSnackbarType];\r\n\r\nexport interface ArdSnackbarData {\r\n message: string;\r\n action?: string;\r\n}\r\n\r\nexport interface ArdSnackbarOptions {\r\n data?: ArdSnackbarData;\r\n placement?: {\r\n align?: ArdSnackbarAlignment;\r\n origin?: ArdSnackbarOrigin;\r\n originRelation?: ArdSnackbarOriginRelation;\r\n };\r\n duration?: number;\r\n color?: ComponentColor;\r\n type?: ArdSnackbarType;\r\n queueHandling?: ArdSnackbarQueueHandling;\r\n panelClass?: string | string[];\r\n}\r\n","import { AsyncPipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\r\nimport { isDefined } from 'simple-bool';\r\nimport { ArdiumButtonModule } from '../buttons/button/button.module';\r\nimport { ArdiumIconModule } from '../icon/icon.module';\r\nimport { ARD_SNACKBAR_COLOR, ARD_SNACKBAR_DATA, ARD_SNACKBAR_TYPE, ArdSnackbarRef } from './snackbar-ref';\r\nimport { ArdSnackbarType } from './snackbar.types';\r\n\r\n@Component({\r\n selector: 'ard-simple-snackbar',\r\n templateUrl: './snackbar.component.html',\r\n styles: ``,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [ArdiumButtonModule, AsyncPipe, ArdiumIconModule],\r\n standalone: true,\r\n})\r\nexport class _ArdSimpleSnackbarComponent {\r\n public readonly snackbarRef = inject(ArdSnackbarRef);\r\n public readonly data = inject(ARD_SNACKBAR_DATA);\r\n public readonly color = inject(ARD_SNACKBAR_COLOR);\r\n public readonly type = inject(ARD_SNACKBAR_TYPE);\r\n\r\n public readonly typeIcon = this._getTypeIcon();\r\n\r\n closeWithAction(): void {\r\n this.snackbarRef.close(true);\r\n }\r\n\r\n get hasAction(): boolean {\r\n return isDefined(this.data.action);\r\n }\r\n\r\n private _getTypeIcon(): string | null {\r\n switch (this.type) {\r\n case ArdSnackbarType.Danger:\r\n return 'error';\r\n case ArdSnackbarType.Warning:\r\n return 'warning';\r\n case ArdSnackbarType.Success:\r\n return 'check_circle';\r\n case ArdSnackbarType.Info:\r\n return 'info';\r\n }\r\n return null;\r\n }\r\n\r\n get colorClass(): string {\r\n return `ard-color-${this.color}`;\r\n }\r\n}\r\n","<div\r\n class=\"ard-snackbar\"\r\n [class.ard-snackbar-closing]=\"snackbarRef.onCloseStart | async\"\r\n [class]=\"colorClass\"\r\n>\r\n <div class=\"ard-snackbar-content\">\r\n @if (typeIcon) {\r\n <ard-icon filled>{{ typeIcon }}</ard-icon>\r\n }\r\n <div class=\"ard-snackbar-message\">{{ data.message }}</div>\r\n </div>\r\n @if (data.action) {\r\n <ard-button\r\n class=\"ard-snackbar-action\"\r\n appearance=\"transparent\"\r\n lightColoring\r\n [color]=\"color\"\r\n (click)=\"closeWithAction()\"\r\n >{{ data.action }}</ard-button\r\n >\r\n }\r\n</div>\r\n","import { InjectionToken } from '@angular/core';\nimport { ArdSnackbarAlignment, ArdSnackbarOptions, ArdSnackbarOriginRelation, ArdSnackbarQueueHandling } from './snackbar.types';\n\nexport const _DEFAULT_OPTIONS_STATIC = {\n placement: {\n align: ArdSnackbarAlignment.BottomCenter,\n origin: document.body,\n originRelation: ArdSnackbarOriginRelation.Inside,\n },\n duration: 5000,\n queueHandling: ArdSnackbarQueueHandling.Default,\n panelClass: [],\n data: { message: null },\n} as unknown as Required<ArdSnackbarOptions>;\n\nexport const ARD_SNACKBAR_DEFAULT_OPTIONS = new InjectionToken<Required<ArdSnackbarOptions>>('ard-snackbar-default-options', {\n factory: () => ({ ..._DEFAULT_OPTIONS_STATIC }),\n});\n\nexport const ARD_SNACKBAR_ANIMATION_LENGTH = new InjectionToken<number>('ard-snackbar-animation-length', {\n factory: () => 150,\n});\n","import { ComponentType, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Injectable, Injector, OnDestroy, inject } from '@angular/core';\r\nimport { isArray, isDefined } from 'simple-bool';\r\nimport { Queue } from '../_internal/queue';\r\nimport {\r\n ARD_SNACKBAR_COLOR,\r\n ARD_SNACKBAR_DATA,\r\n ARD_SNACKBAR_TYPE,\r\n ArdSnackbarRef,\r\n _ArdSnackbarRefInternal,\r\n} from './snackbar-ref';\r\nimport { _ArdSimpleSnackbarComponent } from './snackbar.component';\r\nimport { ARD_SNACKBAR_ANIMATION_LENGTH, ARD_SNACKBAR_DEFAULT_OPTIONS, _DEFAULT_OPTIONS_STATIC } from './snackbar.token';\r\nimport { ArdSnackbarOptions, ArdSnackbarOriginRelation, ArdSnackbarQueueHandling, ArdSnackbarType } from './snackbar.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ArdiumSnackbarService implements OnDestroy {\r\n private readonly _snackbarQueue = new Queue<_ArdSnackbarRefInternal<unknown>>();\r\n private _openedSnackbar?: _ArdSnackbarRefInternal<unknown>;\r\n\r\n private readonly _defaultOptionsStatic = _DEFAULT_OPTIONS_STATIC;\r\n private readonly _defaultOptions = inject(ARD_SNACKBAR_DEFAULT_OPTIONS);\r\n private readonly _animationLength = inject(ARD_SNACKBAR_ANIMATION_LENGTH);\r\n private readonly _overlay = inject(Overlay);\r\n private readonly _injector = inject(Injector);\r\n\r\n //! public methods for creating new snackbars\r\n open(message: string, action?: string, options: ArdSnackbarOptions = {}): ArdSnackbarRef<_ArdSimpleSnackbarComponent> {\r\n options.data = {\r\n message,\r\n action: action ?? options.data?.action,\r\n };\r\n const mergedOptions = this._mergeOptions(options);\r\n\r\n if (typeof mergedOptions.data === 'object' && !isArray(mergedOptions.data)) {\r\n mergedOptions.data.message = message;\r\n mergedOptions.data.action = action;\r\n }\r\n\r\n const internalRef = new _ArdSnackbarRefInternal(_ArdSimpleSnackbarComponent, mergedOptions, (withAction?: boolean) =>\r\n this.dismissCurrent(withAction)\r\n );\r\n\r\n this._handleQueue(mergedOptions.queueHandling!, internalRef);\r\n return internalRef.publicRef;\r\n }\r\n openFromComponent<T>(component: ComponentType<T>, options: ArdSnackbarOptions): ArdSnackbarRef<T> {\r\n const mergedOptions = this._mergeOptions(options);\r\n\r\n const internalRef = new _ArdSnackbarRefInternal(component, mergedOptions, (withAction?: boolean) =>\r\n this.dismissCurrent(withAction)\r\n );\r\n\r\n this._handleQueue(options.queueHandling!, internalRef);\r\n return internalRef.publicRef;\r\n }\r\n //! handling adding new snackbars to queue\r\n private _handleQueue<T>(handling: ArdSnackbarQueueHandling, ref: _ArdSnackbarRefInternal<T>) {\r\n const isNotOpen = !isDefined(this._openedSnackbar);\r\n if (handling === ArdSnackbarQueueHandling.Default) {\r\n const wasEmpty = this._snackbarQueue.isEmpty();\r\n this._snackbarQueue.push(ref);\r\n if (wasEmpty && isNotOpen) {\r\n this._openNext();\r\n }\r\n } else if (handling === ArdSnackbarQueueHandling.Skip || handling === ArdSnackbarQueueHandling.Overwrite) {\r\n const wasEmpty = this._snackbarQueue.isEmpty();\r\n if (!wasEmpty && handling === ArdSnackbarQueueHandling.Overwrite) this._snackbarQueue.clear();\r\n this._snackbarQueue.pushFront(ref);\r\n if (wasEmpty && isNotOpen) {\r\n this._openNext();\r\n } else {\r\n this.dismissCurrent(false);\r\n //it is opened automatically within the dismiss method\r\n }\r\n }\r\n }\r\n private _mergeOptions(options: ArdSnackbarOptions): Required<ArdSnackbarOptions> {\r\n // merge placement\r\n if (options.placement) {\r\n options.placement = {\r\n ...this._defaultOptionsStatic.placement,\r\n ...this._defaultOptions.placement,\r\n ...options.placement,\r\n };\r\n } else {\r\n options.placement = this._defaultOptions.placement ?? this._defaultOptionsStatic.placement;\r\n }\r\n // merge data\r\n if (options.data) {\r\n options.data = {\r\n ...this._defaultOptionsStatic.data,\r\n ...this._defaultOptions.data,\r\n ...options.data,\r\n };\r\n } else {\r\n options.data = this._defaultOptions.data ?? this._defaultOptionsStatic.data;\r\n }\r\n return {\r\n ...this._defaultOptionsStatic,\r\n ...this._defaultOptions,\r\n ...options,\r\n } as Required<ArdSnackbarOptions>;\r\n }\r\n //! opening snackbars\r\n private _openNext() {\r\n const sb = this._snackbarQueue.pop();\r\n if (!sb) return;\r\n this._openedSnackbar = sb;\r\n const overlay = this._createOverlay(sb.options);\r\n sb.overlay = overlay;\r\n\r\n const injector = this._createInjector(sb.options, sb.publicRef);\r\n const portal = new ComponentPortal(sb.component, undefined, injector);\r\n const componentRef = overlay.attach(portal);\r\n sb.publicRef.instance = componentRef.instance;\r\n sb.markAsOpened();\r\n\r\n this._openedSnackbar = sb;\r\n\r\n const duration =\r\n sb.options.duration === Infinity || sb.options.duration <= 0\r\n ? 2_147_483_647 //maximum duration for setTimeout\r\n : sb.options.duration;\r\n\r\n sb.timeout = setTimeout(() => {\r\n this.dismissCurrent(false);\r\n }, duration);\r\n }\r\n private _createOverlay(options: ArdSnackbarOptions): OverlayRef {\r\n let x!: 'start' | 'center' | 'end';\r\n let originY!: 'top' | 'center' | 'bottom';\r\n let overlayY!: 'top' | 'center' | 'bottom';\r\n let overlayY2!: 'top' | 'center' | 'bottom';\r\n\r\n //horizontal alignments\r\n if (options.placement?.align?.match('left')) {\r\n x = 'start';\r\n } else if (options.placement?.align?.match('right')) {\r\n x = 'end';\r\n } else {\r\n x = 'center';\r\n }\r\n // vertical alignments\r\n if (options.placement?.align?.match('bottom')) {\r\n originY = 'bottom';\r\n overlayY = 'bottom';\r\n overlayY2 = 'top';\r\n } else {\r\n originY = 'top';\r\n overlayY = 'top';\r\n overlayY2 = 'bottom';\r\n }\r\n\r\n let origin = options.placement!.origin;\r\n if (!origin) {\r\n console.error(\r\n new Error(`ARD-NF7021: trying to open a snackbar, but the origin is undefined. Using \"document.body\" instead.`)\r\n );\r\n origin = document.body;\r\n }\r\n\r\n const isInside = options.placement?.originRelation === ArdSnackbarOriginRelation.Inside;\r\n const strategy = this._overlay\r\n .position()\r\n .flexibleConnectedTo(origin)\r\n .withPositions([\r\n {\r\n originX: x,\r\n originY,\r\n overlayX: x,\r\n overlayY: isInside ? overlayY : overlayY2,\r\n },\r\n {\r\n originX: x,\r\n originY,\r\n overlayX: x,\r\n overlayY: !isInside ? overlayY : overlayY2,\r\n },\r\n ]);\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n hasBackdrop: false,\r\n panelClass: options.panelClass,\r\n });\r\n\r\n return this._overlay.create(config);\r\n }\r\n\r\n //! public actions\r\n dismissCurrent(withAction?: boolean) {\r\n const sb = this._openedSnackbar;\r\n if (!sb) {\r\n console.warn(new Error(`ARD-WA7020: trying to dismiss the current snackbar, but no snackbar is currently opened.`));\r\n return;\r\n }\r\n\r\n sb.markAsStartingToClose();\r\n\r\n setTimeout(() => {\r\n sb.overlay?.dispose();\r\n this._openedSnackbar = undefined;\r\n sb.publicRef.markAsClosed(withAction);\r\n clearTimeout(sb.timeout);\r\n\r\n this._openNext();\r\n }, this._animationLength);\r\n }\r\n\r\n //! public queue methods\r\n getQueue(): ArdSnackbarRef<unknown>[] {\r\n return this._snackbarQueue.toArray().map(v => v.publicRef);\r\n }\r\n clearQueue(): void {\r\n this._snackbarQueue.clear();\r\n }\r\n\r\n /**\r\n * @deprecated Internal implementation detail, do not use directly.\r\n */\r\n ngOnDestroy(): void {\r\n this._snackbarQueue.clear();\r\n this.dismissCurrent(false);\r\n }\r\n\r\n private _createInjector<T>(options: ArdSnackbarOptions, snackbarRef: ArdSnackbarRef<T>): Injector {\r\n return Injector.create({\r\n parent: this._injector,\r\n providers: [\r\n { provide: ArdSnackbarRef, useValue: snackbarRef },\r\n { provide: ARD_SNACKBAR_DATA, useValue: options.data },\r\n {\r\n provide: ARD_SNACKBAR_TYPE,\r\n useValue: options.type ?? ArdSnackbarType.None,\r\n },\r\n {\r\n provide: ARD_SNACKBAR_COLOR,\r\n useValue: options.color ?? (options.type !== ArdSnackbarType.None ? options.type : null) ?? ComponentColor.Secondary,\r\n },\r\n ],\r\n });\r\n }\r\n}\r\n","/*\r\n * Public API Surface of Ardium UI\r\n */\r\nimport 'first-last';\r\n\r\n//! component group 0 - inputs and selects\r\nexport * from './lib/select'; // 000\r\nexport * from './lib/option'; // 001\r\nexport * from './lib/inputs/simple-input'; // 002\r\nexport * from './lib/inputs/input'; // 003\r\nexport * from './lib/inputs/digit-input'; // 004\r\nexport * from './lib/inputs/password-input'; // 005\r\n// export * from './lib/inputs/color-input'; // 006\r\nexport * from './lib/inputs/number-input'; // 007\r\nexport * from './lib/file-inputs/file-drop-area'; // 010\r\nexport * from './lib/file-inputs/file-input'; // 011\r\nexport * from './lib/inputs/hex-input'; // 016\r\n\r\n//! component group 1 - small forms-related components\r\nexport * from './lib/radio'; // 103\r\nexport * from './lib/segment'; // 104\r\nexport * from './lib/slider'; // 105 & 106\r\nexport * from './lib/star/star-button'; // 107\r\nexport * from './lib/star/star-input'; // 108\r\nexport * from './lib/statebox'; // 109\r\nexport * from './lib/slide-toggle';\r\nexport * from './lib/checkbox';\r\nexport * from './lib/buttons/general-button.types';\r\nexport * from './lib/buttons/button';\r\nexport * from './lib/buttons/fab';\r\nexport * from './lib/buttons/icon-button';\r\nexport * from './lib/chip';\r\n\r\n//! component group 2 - pickers\r\n// export * from './lib/calendar'; // 200 & (future: 201)\r\n// export * from './lib/color/color-picker'; // 202\r\n\r\n//! component group 3 - lists\r\nexport * from './lib/checkbox-list'; // 300\r\n\r\n//! component group 4 - state display components\r\nexport * from './lib/spinner'; // 400\r\nexport * from './lib/progress-bar'; // 401\r\nexport * from './lib/progress-circle'; // 402\r\nexport * from './lib/badge'; // 403\r\n\r\n//! component group 5 - data display components\r\nexport * from './lib/form-field-frame'; // 500\r\nexport * from './lib/dropdown-panel'; // 501\r\nexport * from './lib/color/color-display'; // 502\r\nexport * from './lib/kbd'; // 503\r\nexport * from './lib/kbd-shortcut'; // 504\r\nexport * from './lib/table'; // 505\r\nexport * from './lib/table-pagination'; // 506\r\nexport * from './lib/table-from-csv'; // 507\r\nexport * from './lib/star'; // 508\r\nexport * from './lib/star/star-display'; // 509\r\n\r\n//! component group 6 - layout components\r\nexport * from './lib/tabber'; // 600\r\nexport * from './lib/card';\r\nexport * from './lib/divider';\r\n\r\n//! component group 7 - popups\r\nexport * from './lib/modal'; // 700\r\nexport * from './lib/dialog'; // 701\r\nexport * from './lib/snackbar'; // 702\r\n\r\n//! component group 9 - other\r\nexport * from './lib/icon'; // 900\r\n\r\n//! types\r\nexport * from './lib/types/alignment.types';\r\nexport * from './lib/types/colors.types';\r\nexport * from './lib/types/theming.types';\r\nexport * from './lib/types/utility.types';\r\nexport * from './lib/types/item-storage.types';\r\n\r\n//! miscellaneous\r\nexport { searchInString, searchFunctions as ArdSearchFunction } from './lib/search-functions';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2._ClearButtonComponent","i2.ArdiumFormFieldFrameComponent","i3.ArdiumDropdownPanelComponent","i4.ArdiumDeletableChipComponent","i5","i6._ClearButtonComponent","i3.ArdiumFormFieldFrameComponent","i1","i2","i4._ClearButtonComponent","i5.ArdiumDropdownPanelComponent","i6","i1.ArdiumIconPipe","i3.ArdiumIconComponent","i3.ArdiumButtonComponent","i2.ArdiumButtonComponent","i3._ClearButtonComponent","i4.ArdiumIconComponent","i2.ArdiumStarComponent","i2.ArdiumStarButtonComponent","i2.ArdiumCheckboxComponent","i2.ArdiumKbdPipe","i2.ArdiumKbdComponent","i2.ArdiumSelectComponent","i3.ArdiumIconButtonComponent","i3.ArdiumTablePaginationComponent","i1.ArdiumTableComponent","i2.ArdiumIconButtonComponent","i4","i3.ArdiumModalComponent","i1.ArdiumButtonComponent","i2.ArdiumIconComponent"],"mappings":"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"}
1
+ {"version":3,"file":"ardium-ui-ui.mjs","sources":["../../../projects/ui/src/lib/types/alignment.types.ts","../../../projects/ui/src/lib/types/colors.types.ts","../../../projects/ui/src/lib/types/theming.types.ts","../../../projects/ui/src/lib/_internal/disablable-component.ts","../../../projects/ui/src/lib/chip/chip.component.ts","../../../projects/ui/src/lib/chip/chip.component.html","../../../projects/ui/src/lib/_internal/focusable-component.ts","../../../projects/ui/src/lib/_internal/ngmodel-component.ts","../../../projects/ui/src/lib/_internal/boolean-component.ts","../../../projects/ui/src/lib/chip/selectable-chip/selectable-chip.component.ts","../../../projects/ui/src/lib/chip/selectable-chip/selectable-chip.component.html","../../../projects/ui/src/lib/_internal/clear-button/clear-button.component.ts","../../../projects/ui/src/lib/_internal/clear-button/clear-button.component.html","../../../projects/ui/src/lib/chip/deletable-chip/deletable-chip.component.ts","../../../projects/ui/src/lib/chip/deletable-chip/deletable-chip.component.html","../../../projects/ui/src/lib/_internal/clear-button/clear-button.module.ts","../../../projects/ui/src/lib/chip/chip.module.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.types.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.component.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.component.html","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.module.ts","../../../projects/ui/src/lib/_internal/item-storages/dropdown-item-storage.ts","../../../projects/ui/src/lib/option/option.component.ts","../../../projects/ui/src/lib/search-functions.ts","../../../projects/ui/src/lib/types/item-storage.types.ts","../../../projects/ui/src/lib/select/select.directive.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.directives.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.component.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.component.html","../../../projects/ui/src/lib/select/select.component.ts","../../../projects/ui/src/lib/select/select.component.html","../../../projects/ui/src/lib/form-field-frame/form-field-frame.module.ts","../../../projects/ui/src/lib/select/select.module.ts","../../../projects/ui/src/lib/option/option.module.ts","../../../projects/ui/src/lib/inputs/input-transformers.ts","../../../projects/ui/src/lib/inputs/input-utils.ts","../../../projects/ui/src/lib/inputs/simple-input/simple-input.directives.ts","../../../projects/ui/src/lib/inputs/simple-input/simple-input.component.ts","../../../projects/ui/src/lib/inputs/simple-input/simple-input.component.html","../../../projects/ui/src/lib/inputs/simple-input/simple-input.module.ts","../../../projects/ui/src/lib/_internal/item-storages/simplest-item-storage.ts","../../../projects/ui/src/lib/inputs/input/input.directives.ts","../../../projects/ui/src/lib/inputs/input/input.component.ts","../../../projects/ui/src/lib/inputs/input/input.component.html","../../../projects/ui/src/lib/inputs/input/input.module.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.types.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.utils.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.model.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.component.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.component.html","../../../projects/ui/src/lib/inputs/digit-input/digit-input.module.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.directives.ts","../../../projects/ui/src/lib/icon/icon.pipe.ts","../../../projects/ui/src/lib/icon/icon.component.ts","../../../projects/ui/src/lib/icon/icon.component.html","../../../projects/ui/src/lib/inputs/password-input/password-input.component.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.component.html","../../../projects/ui/src/lib/icon/icon.module.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.module.ts","../../../projects/ui/src/lib/types/button.types.ts","../../../projects/ui/src/lib/buttons/general-button.types.ts","../../../projects/ui/src/lib/buttons/_button-base.ts","../../../projects/ui/src/lib/buttons/button/button.component.ts","../../../projects/ui/src/lib/buttons/button/button.component.html","../../../projects/ui/src/lib/buttons/button/button.module.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.directives.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.component.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.component.html","../../../projects/ui/src/lib/inputs/number-input/number-input.module.ts","../../../projects/ui/src/lib/file-inputs/file-input-base.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.directives.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.component.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.component.html","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.module.ts","../../../projects/ui/src/lib/inputs/color-input/color-input.directives.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.directives.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.component.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.component.html","../../../projects/ui/src/lib/file-inputs/file-input/file-input.module.ts","../../../projects/ui/src/lib/inputs/input-types.ts","../../../projects/ui/src/lib/inputs/hex-input.model.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.directives.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.component.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.component.html","../../../projects/ui/src/lib/inputs/hex-input/hex-input.module.ts","../../../projects/ui/src/lib/radio/radio/radio.component.ts","../../../projects/ui/src/lib/radio/radio/radio.component.html","../../../projects/ui/src/lib/radio/radio-group.component.ts","../../../projects/ui/src/lib/radio/radio.module.ts","../../../projects/ui/src/lib/_internal/item-storages/simple-item-storage.ts","../../../projects/ui/src/lib/_internal/selectable-list-component.ts","../../../projects/ui/src/lib/segment/segment.directives.ts","../../../projects/ui/src/lib/segment/segment.types.ts","../../../projects/ui/src/lib/segment/segment.component.ts","../../../projects/ui/src/lib/segment/segment.component.html","../../../projects/ui/src/lib/segment/segment.module.ts","../../../projects/ui/src/lib/slider/slider.directive.ts","../../../projects/ui/src/lib/slider/slider.types.ts","../../../projects/ui/src/lib/slider/abstract-slider.ts","../../../projects/ui/src/lib/slider/slider.component.ts","../../../projects/ui/src/lib/slider/slider.component.html","../../../projects/ui/src/lib/slider/slider.module.ts","../../../projects/ui/src/lib/slider/range-slider/range-slider.component.ts","../../../projects/ui/src/lib/slider/range-slider/range-slider.component.html","../../../projects/ui/src/lib/slider/range-slider/range-slider.module.ts","../../../projects/ui/src/lib/types/utility.types.ts","../../../projects/ui/src/lib/star/star.types.ts","../../../projects/ui/src/lib/star/star.component.ts","../../../projects/ui/src/lib/star/star.component.html","../../../projects/ui/src/lib/star/star-button/star-button.component.ts","../../../projects/ui/src/lib/star/star-button/star-button.component.html","../../../projects/ui/src/lib/star/star.module.ts","../../../projects/ui/src/lib/star/star-button/star-button.module.ts","../../../projects/ui/src/lib/star/star-input/star-input.component.ts","../../../projects/ui/src/lib/star/star-input/star-input.component.html","../../../projects/ui/src/lib/star/star-input/star-input.module.ts","../../../projects/ui/src/lib/statebox/statebox.component.ts","../../../projects/ui/src/lib/statebox/statebox.component.html","../../../projects/ui/src/lib/statebox/statebox.module.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.types.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.component.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.component.html","../../../projects/ui/src/lib/slide-toggle/slide-toggle.module.ts","../../../projects/ui/src/lib/checkbox/checkbox.types.ts","../../../projects/ui/src/lib/checkbox/checkbox.component.ts","../../../projects/ui/src/lib/checkbox/checkbox.component.html","../../../projects/ui/src/lib/checkbox/checkbox.module.ts","../../../projects/ui/src/lib/buttons/fab/fab.component.ts","../../../projects/ui/src/lib/buttons/fab/fab.component.html","../../../projects/ui/src/lib/buttons/fab/fab.module.ts","../../../projects/ui/src/lib/buttons/icon-button/icon-button.component.ts","../../../projects/ui/src/lib/buttons/icon-button/icon-button.component.html","../../../projects/ui/src/lib/buttons/icon-button/icon-button.module.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.types.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.component.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.component.html","../../../projects/ui/src/lib/checkbox-list/checkbox-list.module.ts","../../../projects/ui/src/lib/spinner/spinner.component.ts","../../../projects/ui/src/lib/spinner/spinner.component.html","../../../projects/ui/src/lib/spinner/spinner.module.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.directive.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.types.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.component.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.component.html","../../../projects/ui/src/lib/progress-bar/progress-bar.module.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.directive.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.types.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.component.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.component.html","../../../projects/ui/src/lib/progress-circle/progress-circle.module.ts","../../../projects/ui/src/lib/badge/badge.types.ts","../../../projects/ui/src/lib/badge/badge.directive.ts","../../../projects/ui/src/lib/badge/badge.module.ts","../../../projects/ui/src/lib/color/color-display/color-display.types.ts","../../../projects/ui/src/lib/color/color-display/color-display.component.ts","../../../projects/ui/src/lib/color/color-display/color-display.component.html","../../../projects/ui/src/lib/color/color-display/color-display.module.ts","../../../projects/ui/src/lib/kbd/kbd.pipe.ts","../../../projects/ui/src/lib/kbd/kbd.component.ts","../../../projects/ui/src/lib/kbd/kbd.component.html","../../../projects/ui/src/lib/kbd/kbd.module.ts","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.component.ts","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.component.html","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.module.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.types.ts","../../../projects/ui/src/lib/table/table.types.ts","../../../projects/ui/src/lib/table/utils.ts","../../../projects/ui/src/lib/table/table-item-storage.ts","../../../projects/ui/src/lib/table/table.directives.ts","../../../projects/ui/src/lib/_internal/models/pagination.model.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.component.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.component.html","../../../projects/ui/src/lib/table/table.component.ts","../../../projects/ui/src/lib/table/table.component.html","../../../projects/ui/src/lib/table-pagination/table-pagination.module.ts","../../../projects/ui/src/lib/table/table.module.ts","../../../projects/ui/src/lib/table-from-csv/table-from-csv.component.ts","../../../projects/ui/src/lib/table-from-csv/table-from-csv.component.html","../../../projects/ui/src/lib/table-from-csv/table-from-csv.module.ts","../../../projects/ui/src/lib/star/star-display/star-display.component.ts","../../../projects/ui/src/lib/star/star-display/star-display.component.html","../../../projects/ui/src/lib/star/star-display/star-display.module.ts","../../../projects/ui/src/lib/tabber/tab/tab.component.ts","../../../projects/ui/src/lib/tabber/tab/tab.component.html","../../../projects/ui/src/lib/tabber/tabber.component.ts","../../../projects/ui/src/lib/tabber/tabber.component.html","../../../projects/ui/src/lib/tabber/tabber.module.ts","../../../projects/ui/src/lib/card/card.children.ts","../../../projects/ui/src/lib/card/card-header.template.html","../../../projects/ui/src/lib/card/card.types.ts","../../../projects/ui/src/lib/card/card.component.ts","../../../projects/ui/src/lib/card/card.module.ts","../../../projects/ui/src/lib/divider/divider.component.ts","../../../projects/ui/src/lib/divider/divider.module.ts","../../../projects/ui/src/lib/modal/modal.component.ts","../../../projects/ui/src/lib/modal/modal.component.html","../../../projects/ui/src/lib/modal/modal.module.ts","../../../projects/ui/src/lib/dialog/dialog.directives.ts","../../../projects/ui/src/lib/dialog/dialog.component.ts","../../../projects/ui/src/lib/dialog/dialog.component.html","../../../projects/ui/src/lib/dialog/dialog.module.ts","../../../projects/ui/src/lib/dialog/dialog.types.ts","../../../projects/ui/src/lib/_internal/queue.ts","../../../projects/ui/src/lib/snackbar/snackbar-ref.ts","../../../projects/ui/src/lib/snackbar/snackbar.types.ts","../../../projects/ui/src/lib/snackbar/snackbar.component.ts","../../../projects/ui/src/lib/snackbar/snackbar.component.html","../../../projects/ui/src/lib/snackbar/snackbar.token.ts","../../../projects/ui/src/lib/snackbar/snackbar.service.ts","../../../projects/ui/src/public-api.ts","../../../projects/ui/src/ardium-ui-ui.ts"],"sourcesContent":["export const SimpleOneAxisAlignment = {\n Left: 'left',\n Right: 'right',\n} as const;\nexport type SimpleOneAxisAlignment = (typeof SimpleOneAxisAlignment)[keyof typeof SimpleOneAxisAlignment];\n\nexport const OneAxisAlignment = {\n Left: 'left',\n Middle: 'middle',\n Right: 'right',\n} as const;\nexport type OneAxisAlignment = (typeof OneAxisAlignment)[keyof typeof OneAxisAlignment];\n","/**\n * The color of the component.\n *\n * @see {@link ButtonColoringMode} to set what part of the component should be colored.\n */\nexport const ComponentColor = {\n /**\n * The app's standard text color.\n */\n None: 'none',\n /**\n * The app's primary color.\n */\n Primary: 'primary',\n /**\n * The app's secondary color.\n */\n Secondary: 'secondary',\n /**\n * The app's warning color. Usually some shade of yellow.\n */\n Warning: 'warn',\n /**\n * The app's danger color. Usually some shade of red.\n */\n Danger: 'danger',\n /**\n * The app's success color. Usually some shade of green or lime.\n */\n Success: 'success',\n /**\n * The app's info color. Usually some shade of blue or light blue.\n */\n Info: 'info',\n} as const;\nexport type ComponentColor = (typeof ComponentColor)[keyof typeof ComponentColor];\n\nexport const SimpleComponentColor = {\n ...ComponentColor,\n /**\n * The current color set by css.\n */\n CurrentColor: 'currentColor',\n} as const;\nexport type SimpleComponentColor = (typeof SimpleComponentColor)[keyof typeof SimpleComponentColor];\n","//! appearances\nexport const OutlinedAppearance = {\n /**\n * No background with solid border.\n */\n Outlined: 'outlined',\n} as const;\nexport type OutlinedAppearance = (typeof OutlinedAppearance)[keyof typeof OutlinedAppearance];\n\nexport const PanelAppearance = {\n /**\n * Filled with a background color, with slight shadow.\n */\n Raised: 'raised',\n} as const;\nexport type PanelAppearance = (typeof PanelAppearance)[keyof typeof PanelAppearance];\n\nexport const FormElementAppearance = {\n ...OutlinedAppearance,\n /**\n * No background and no border. Useful for when trying to create a component that uses another component inside its borders.\n */\n Transparent: 'transparent',\n /**\n * Slighthly darker/lighter background with rounded but transparent border.\n */\n Filled: 'filled',\n} as const;\nexport type FormElementAppearance = (typeof FormElementAppearance)[keyof typeof FormElementAppearance];\n\nexport const DecorationElementAppearance = {\n Outlined: 'outlined',\n OutlinedStrong: 'outlined-strong',\n Filled: 'filled',\n} as const;\nexport type DecorationElementAppearance = (typeof DecorationElementAppearance)[keyof typeof DecorationElementAppearance];\n\n//! variants\nexport const PanelVariant = {\n /**\n * Slightly rounded corners.\n */\n Rounded: 'rounded',\n /**\n * Sharp corners.\n */\n Sharp: 'sharp',\n} as const;\nexport type PanelVariant = (typeof PanelVariant)[keyof typeof PanelVariant];\n\nexport const FormElementVariant = {\n ...PanelVariant,\n /**\n * Fully rounded corners - pill shaped.\n */\n Pill: 'pill',\n} as const;\nexport type FormElementVariant = (typeof FormElementVariant)[keyof typeof FormElementVariant];\n","import { Directive, HostBinding, Input, input, signal } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\n\r\n@Directive()\r\nexport abstract class _DisablableComponentBase {\r\n //! no value arguments\r\n /**\r\n * Whether the component is read-only. Defines the `readonly` host attribute and `ard-readonly` host class. Coearcible into a boolean.\r\n */\r\n readonly readonly = input<any, boolean>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n /**\r\n * Whether the component is disabled. Defines the `disabled` host attribute and `ard-disabled` host class. Coearcible into a boolean.\r\n */\r\n readonly disabled = signal<boolean>(false);\r\n @Input('disabled')\r\n set _disabled(v: any) {\r\n this.disabled.set(coerceBooleanProperty(v));\r\n }\r\n\r\n @HostBinding('attr.readonly')\r\n @HostBinding('class.ard-readonly')\r\n get _readonlyHostAttribute(): boolean {\r\n return this.readonly();\r\n }\r\n @HostBinding('attr.disabled')\r\n @HostBinding('class.ard-disabled')\r\n get _disabledHostAttribute(): boolean {\r\n return this.disabled();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleOneAxisAlignment } from '../types/alignment.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { DecorationElementAppearance, FormElementVariant } from '../types/theming.types';\r\nimport { _DisablableComponentBase } from './../_internal/disablable-component';\r\n\r\n@Component({\r\n selector: 'ard-chip',\r\n templateUrl: './chip.component.html',\r\n styleUrls: ['./chip.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumChipComponent extends _DisablableComponentBase {\r\n //! appearance\r\n readonly contentAlignment = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n readonly appearance = input<DecorationElementAppearance>(DecorationElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-chip-align-${this.contentAlignment()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<div\r\n class=\"ard-chip-wrapper ard-chip\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { Directive, ElementRef, QueryList, ViewChildren, computed, input, output } from '@angular/core';\r\nimport { coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { _DisablableComponentBase } from './disablable-component';\r\n\r\n@Directive()\r\nexport abstract class _FocusableComponentBase extends _DisablableComponentBase {\r\n //! make the component focusable programmatically\r\n @ViewChildren('focusableElement')\r\n private readonly _focusableElement!: QueryList<ElementRef<HTMLElement>>;\r\n\r\n /**\r\n * Focuses the correct element in the component.\r\n */\r\n public focus(): void {\r\n this._focusableElement?.first?.nativeElement.focus();\r\n }\r\n /**\r\n * Focuses the first of all available elements in the component.\r\n */\r\n public focusFirst(): void {\r\n this.focus();\r\n }\r\n /**\r\n * Focuses the last of all available elements in the component.\r\n */\r\n public focusLast(): void {\r\n this._focusableElement?.last?.nativeElement.focus();\r\n }\r\n /**\r\n * Blurs all focusable elements in the component.\r\n */\r\n public blur(): void {\r\n this._focusableElement?.forEach(el => el.nativeElement.blur());\r\n }\r\n\r\n //! tabindex\r\n /**\r\n * The component's overall tab index. If the component is disabled, it is always `-1`. Coercible into a number, defaults to `0`.\r\n */\r\n readonly tabIndex = computed(() => (this.disabled() ? -1 : this._tabIndex()));\r\n readonly _tabIndex = input<any, number>(0, { alias: 'tabIndex', transform: v => coerceNumberProperty(v) });\r\n\r\n //! events\r\n /**\r\n * The event emitter responsible for firing `focus` events.\r\n */\r\n readonly focusEvent = output<FocusEvent>({ alias: 'focus' });\r\n /**\r\n * The event emitter responsible for firing `blur` events.\r\n */\r\n readonly blurEvent = output<FocusEvent>({ alias: 'blur' });\r\n\r\n //! focus event handlers\r\n /**\r\n * Whether the component is currently focused.\r\n */\r\n public isFocused = false;\r\n\r\n /**\r\n * Function to handle when an element is focused. Sets `isFocused` and fires the `focus` event.\r\n * @param event The focus event to emit.\r\n */\r\n onFocus(event: FocusEvent) {\r\n this.isFocused = true;\r\n this.focusEvent.emit(event);\r\n }\r\n /**\r\n * Function to handle when an element is blurred. Sets `isFocused` and fires the `blur` event.\r\n * @param event The focus event to emit.\r\n */\r\n onBlur(event: FocusEvent) {\r\n this.isFocused = false;\r\n this.blurEvent.emit(event);\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { _FocusableComponentBase } from './focusable-component';\r\n\r\n/**\r\n * Common code for components, which implement the ControlValueAccessor.\r\n *\r\n * **Warning**: `writeValue` function should be implemented on the child component!\r\n */\r\n@Directive()\r\nexport abstract class _NgModelComponentBase extends _FocusableComponentBase implements ControlValueAccessor {\r\n //! control value accessor\r\n protected _onChangeRegistered!: (_: any) => void;\r\n protected _onTouchedRegistered!: () => void;\r\n /**\r\n * Registers a function to handle touched state. Required by ControlValueAccessor.\r\n * @param fn The function to register.\r\n */\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouchedRegistered = fn;\r\n }\r\n /**\r\n * Registers a function to handle value change. Required by ControlValueAccessor.\r\n * @param fn The function to register.\r\n */\r\n registerOnChange(fn: (_: any) => void): void {\r\n this._onChangeRegistered = fn;\r\n }\r\n /**\r\n * Sets the component's disabled state. Required by ControlValueAccessor.\r\n * @param isDisabled the new disabled state.\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n\r\n /**\r\n * Writes the a new value into the component. Required by ControlValueAccessor.\r\n * @abstract\r\n * @param v The new value to write.\r\n */\r\n abstract writeValue(v: any): void; //* abstract\r\n\r\n /**\r\n * Writes the a new value into the component. Required by ControlValueAccessor.\r\n * @abstract\r\n * @param v The new value to write.\r\n */\r\n protected abstract _emitChange(): void; //* abstract\r\n\r\n //! event handlers\r\n override onBlur(event: FocusEvent) {\r\n super.onBlur(event);\r\n this._onTouchedRegistered?.();\r\n }\r\n}\r\n","import { Directive, HostBinding, Input, output, signal } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from './ngmodel-component';\r\n\r\n/**\r\n * Common code for components, which only operate on the \"selected\" state.\r\n */\r\n@Directive()\r\nexport abstract class _BooleanComponentBase extends _NgModelComponentBase implements ControlValueAccessor {\r\n //! control value accessor\r\n writeValue(v: any): void {\r\n this._selected = v;\r\n }\r\n //emitter function\r\n /**\r\n * Emits all select-state-related events.\r\n */\r\n protected _emitChange() {\r\n this._onChangeRegistered?.(this.selected());\r\n\r\n if (this.selected()) this.selectEvent.emit(null);\r\n else this.unselectEvent.emit(null);\r\n\r\n this.selectedChange.emit(this.selected());\r\n this.changeEvent.emit(this.selected());\r\n }\r\n\r\n //! events\r\n /**\r\n * The event emitter responsible for firing `select` events. Fired when the `selected` state is set to true.\r\n */\r\n readonly selectEvent = output<null>({ alias: 'select' });\r\n /**\r\n * The event emitter responsible for firing `unselect` events. Fired when the `selected` state is set to false.\r\n */\r\n readonly unselectEvent = output<null>({ alias: 'unselect' });\r\n /**\r\n * The event emitter responsible for firing `change` events. Fired when the `selected` state is changed.\r\n */\r\n readonly changeEvent = output<boolean>({ alias: 'change' });\r\n\r\n //! [(selected)] two-way binding\r\n // can be set using a no-value argument\r\n readonly selected = signal<boolean>(false);\r\n /**\r\n * The selection state of the component. Coercible into a boolean.\r\n */\r\n @Input('selected')\r\n set _selected(v: any) {\r\n this.selected.set(coerceBooleanProperty(v));\r\n }\r\n @HostBinding('attr.selected')\r\n @HostBinding('class.ard-selected')\r\n get _selectedHostAttribute(): boolean {\r\n return this.selected();\r\n }\r\n /**\r\n * The event emitter responsible for firing `selectedChange` events. Fired when the `selected` state is changed.\r\n */\r\n readonly selectedChange = output<boolean>();\r\n\r\n /**\r\n * Toggles the selected state. Emits all appropriate events.\r\n */\r\n toggleSelected() {\r\n this.selected.update(v => !v);\r\n this._emitChange();\r\n }\r\n\r\n /**\r\n * Sets the state to \"selected\". Emits all appropriate events only if the state changes.\r\n */\r\n select() {\r\n this.selected.set(true);\r\n this._emitChange();\r\n }\r\n /**\r\n * Sets the state to \"unselected\". Emits all appropriate events only if the state changes.\r\n */\r\n unselect() {\r\n this.selected.set(false);\r\n this._emitChange();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleOneAxisAlignment } from '../../types/alignment.types';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { DecorationElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { _BooleanComponentBase } from './../../_internal/boolean-component';\r\n\r\n@Component({\r\n selector: 'ard-selectable-chip',\r\n templateUrl: './selectable-chip.component.html',\r\n styleUrls: ['../chip.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSelectableChipComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSelectableChipComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n readonly DEFAULTS = {\r\n chipTitle: 'Select',\r\n };\r\n\r\n readonly chipTitle = input<string>(this.DEFAULTS.chipTitle);\r\n readonly hideSelectionIcon = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! appearance\r\n readonly contentAlignment = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n readonly appearance = input<DecorationElementAppearance>(DecorationElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-chip-align-${this.contentAlignment()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n type=\"button\"\r\n class=\"ard-chip-wrapper ard-chip-selectable\"\r\n [class.ard-chip-selected]=\"selected()\"\r\n [ngClass]=\"ngClasses()\"\r\n [title]=\"chipTitle()\"\r\n [tabindex]=\"tabIndex()\"\r\n (click)=\"toggleSelected()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div\r\n class=\"ard-chip-selection-icon\"\r\n role=\"img\"\r\n ></div>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</button>\r\n","import { Component } from '@angular/core';\r\nimport { _FocusableComponentBase } from './../focusable-component';\r\n\r\n@Component({\r\n selector: 'ard-clear-button',\r\n templateUrl: './clear-button.component.html',\r\n styleUrls: ['./clear-button.component.scss'],\r\n})\r\nexport class _ClearButtonComponent extends _FocusableComponentBase {}\r\n","<button\r\n #focusableElement\r\n class=\"ard-clear-btn-wrapper\"\r\n type=\"button\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div\r\n class=\"ard-clear-btn\"\r\n aria-hidden=\"true\"\r\n ></div>\r\n</button>\r\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, output, ViewEncapsulation } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../../_internal/focusable-component';\r\nimport { SimpleOneAxisAlignment } from '../../types/alignment.types';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { DecorationElementAppearance, FormElementVariant } from '../../types/theming.types';\r\n\r\n@Component({\r\n selector: 'ard-deletable-chip',\r\n templateUrl: './deletable-chip.component.html',\r\n styleUrls: ['../chip.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumDeletableChipComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumDeletableChipComponent extends _FocusableComponentBase {\r\n readonly DEFAULTS = {\r\n deleteButtonTitle: 'Delete',\r\n };\r\n\r\n readonly deleteButtonTitle = input<string>(this.DEFAULTS.deleteButtonTitle);\r\n\r\n //! appearance\r\n readonly contentAlignment = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n readonly appearance = input<DecorationElementAppearance>(DecorationElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-chip-align-${this.contentAlignment()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! events\r\n readonly deleteEvent = output<MouseEvent>({ alias: 'delete' });\r\n}\r\n","<div\r\n class=\"ard-chip-wrapper ard-chip-deletable\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-clear-button\r\n [title]=\"deleteButtonTitle()\"\r\n (click)=\"deleteEvent.emit($event)\"\r\n [tabIndex]=\"tabIndex()\"\r\n ></ard-clear-button>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { _ClearButtonComponent } from './clear-button.component';\n\n@NgModule({\n declarations: [_ClearButtonComponent],\n imports: [CommonModule],\n exports: [_ClearButtonComponent],\n})\nexport class _ClearButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumChipComponent } from './chip.component';\nimport { ArdiumSelectableChipComponent } from './selectable-chip/selectable-chip.component';\nimport { ArdiumDeletableChipComponent } from './deletable-chip/deletable-chip.component';\nimport { _ClearButtonModule } from '../_internal/clear-button/clear-button.module';\n\n@NgModule({\n declarations: [ArdiumChipComponent, ArdiumSelectableChipComponent, ArdiumDeletableChipComponent],\n imports: [CommonModule, _ClearButtonModule],\n exports: [ArdiumChipComponent, ArdiumSelectableChipComponent, ArdiumDeletableChipComponent],\n})\nexport class ArdiumChipModule {}\n","export type ScrollAlignment = 'top' | 'bottom' | 'middle';\n\nexport const DropdownPanelAppearance = {\n Outlined: 'outlined',\n Raised: 'raised',\n} as const;\nexport type DropdownPanelAppearance = (typeof DropdownPanelAppearance)[keyof typeof DropdownPanelAppearance];\n\nexport const DropdownPanelVariant = {\n Rounded: 'rounded',\n Sharp: 'sharp',\n SharpConnected: 'sharp ard-connected',\n} as const;\nexport type DropdownPanelVariant = (typeof DropdownPanelVariant)[keyof typeof DropdownPanelVariant];\n","import {\r\n AfterViewChecked,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n output,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant, ScrollAlignment } from './dropdown-panel.types';\r\n\r\n@Component({\r\n selector: 'ard-dropdown-panel',\r\n templateUrl: './dropdown-panel.component.html',\r\n styleUrls: ['./dropdown-panel.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class.ard-open]': 'isOpen()',\r\n },\r\n})\r\nexport class ArdiumDropdownPanelComponent implements AfterViewChecked {\r\n private readonly _scrollElementRef = viewChild<ElementRef<HTMLElement>>('scroll');\r\n private readonly _scrollEl = computed(() => this._scrollElementRef()?.nativeElement);\r\n\r\n //! options\r\n readonly panelId = input<string>();\r\n readonly headerTemplate = input<TemplateRef<any> | null>(null);\r\n readonly footerTemplate = input<TemplateRef<any> | null>(null);\r\n readonly filterValue = input<Nullable<string>>();\r\n\r\n //! appearance\r\n readonly appearance = input<DropdownPanelAppearance>(DropdownPanelAppearance.Raised);\r\n readonly variant = input<DropdownPanelVariant>(DropdownPanelVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string =>\r\n [`ard-appearance-${this.appearance()}`, `ard-variant-${this.variant()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! states\r\n readonly isOpen = input.required<boolean>();\r\n\r\n //! output events\r\n readonly scrollEvent = output<{\r\n start: number;\r\n end: number;\r\n }>({ alias: 'scroll' });\r\n readonly scrollToEndEvent = output({ alias: 'scrollToEnd' });\r\n\r\n //! event handlers\r\n onScroll() {\r\n const start = this._scrollTop;\r\n const end = this._scrollBottom;\r\n this.scrollEvent.emit({ start, end });\r\n\r\n if (end === this._scrollEl()?.scrollHeight) {\r\n this.scrollToEndEvent.emit();\r\n }\r\n }\r\n\r\n //! hooks\r\n ngAfterViewChecked(): void {\r\n if (!this._currentScrollToDirection) return;\r\n\r\n const recent = this._scrollEl()?.querySelector<HTMLElement>('.ard-option-highlighted-recent');\r\n if (!recent) return;\r\n\r\n const isInView = this._isElementInView(recent);\r\n if (!isInView) {\r\n this._scrollToElement(recent, this._currentScrollToDirection);\r\n }\r\n\r\n this._currentScrollToDirection = null;\r\n }\r\n\r\n //! scroll position\r\n private get _scrollTop(): number {\r\n return this._scrollEl()?.scrollTop ?? 0;\r\n }\r\n private set _scrollTop(value: number) {\r\n const el = this._scrollEl();\r\n if (!el) return;\r\n el.scrollTop = value;\r\n }\r\n private get _scrollBottom(): number {\r\n return this._scrollTop + (this._scrollEl()?.getBoundingClientRect().height ?? 0);\r\n }\r\n\r\n //! scroll to element methods\r\n private _scrollToElement(el: HTMLElement, alignTo: ScrollAlignment = 'middle'): void {\r\n const scrollEl = this._scrollEl();\r\n if (!scrollEl) return;\r\n\r\n const parentContentRect = this._getContentRect(scrollEl);\r\n const elementRect = el.getBoundingClientRect();\r\n\r\n switch (alignTo) {\r\n case 'top':\r\n this._scrollTop += elementRect.top - parentContentRect.top;\r\n break;\r\n case 'bottom':\r\n this._scrollTop += elementRect.bottom - parentContentRect.bottom;\r\n break;\r\n case 'middle':\r\n this._scrollTop += (elementRect.top + elementRect.bottom) / 2 - parentContentRect.top - parentContentRect.height / 2;\r\n break;\r\n }\r\n }\r\n\r\n private _currentScrollToDirection: ScrollAlignment | null = null;\r\n scrollToRecentlyHighlighted(direction: ScrollAlignment): void {\r\n this._currentScrollToDirection = direction;\r\n }\r\n private _isElementInView(el: HTMLElement): boolean {\r\n const scrollEl = this._scrollEl();\r\n if (!scrollEl) return true;\r\n\r\n const parentContentRect = this._getContentRect(scrollEl);\r\n const elementRect = el.getBoundingClientRect();\r\n return elementRect.bottom < parentContentRect.bottom && elementRect.top > parentContentRect.top;\r\n }\r\n private _getContentRect(el: HTMLElement): DOMRect {\r\n const elRect = el.getBoundingClientRect();\r\n const elPadding = window.getComputedStyle(el).getPropertyValue('padding');\r\n const paddings = elPadding.split(' ').map(v => (v ? parseFloat(v) : null));\r\n const topPadd = paddings[0] ?? 0;\r\n const rightPadd = paddings[1] ?? topPadd;\r\n const bottomPadd = paddings[2] ?? topPadd;\r\n const leftPadd = paddings[3] ?? rightPadd ?? topPadd;\r\n\r\n return new DOMRect(\r\n elRect.x + leftPadd,\r\n elRect.y + topPadd,\r\n elRect.width - leftPadd - rightPadd,\r\n elRect.height - topPadd - bottomPadd\r\n );\r\n }\r\n}\r\n","<div\r\n class=\"ard-dropdown-panel-container\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @if (headerTemplate()) {\r\n <div class=\"ard-dropdown-header\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"headerTemplate()\"\r\n [ngTemplateOutletContext]=\"{ searchTerm: filterValue() }\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n <div\r\n #scroll\r\n class=\"ard-dropdown-panel-content\"\r\n [attr.id]=\"panelId()\"\r\n (scroll)=\"onScroll()\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n @if (footerTemplate()) {\r\n <div class=\"ard-dropdown-footer\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"footerTemplate()\"\r\n [ngTemplateOutletContext]=\"{ searchTerm: filterValue() }\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDropdownPanelComponent } from './dropdown-panel.component';\n\n@NgModule({\n declarations: [ArdiumDropdownPanelComponent],\n imports: [CommonModule],\n exports: [ArdiumDropdownPanelComponent],\n})\nexport class ArdiumDropdownPanelModule {}\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { any, evaluate, isArray, isDefined, isObject, isPrimitive, isPromise } from 'simple-bool';\r\nimport { AddCustomFn } from '../../select/select.types';\r\nimport { ArdItemGroupMap, ArdOption, ArdOptionGroup, CompareWithFn, GroupByFn, SearchFn } from '../../types/item-storage.types';\r\nimport { Nullable } from '../../types/utility.types';\r\n\r\nexport interface ItemStorageHostDefaults {\r\n valueFrom: string;\r\n labelFrom: string;\r\n disabledFrom: string;\r\n groupLabelFrom: string;\r\n groupDisabledFrom: string;\r\n childrenFrom: string;\r\n [key: string]: any;\r\n}\r\nexport interface ItemStorageHost {\r\n readonly valueFrom: Signal<Nullable<string>>;\r\n readonly labelFrom: Signal<Nullable<string>>;\r\n readonly disabledFrom: Signal<Nullable<string>>;\r\n readonly invertDisabled: Signal<Nullable<boolean>>;\r\n readonly groupLabelFrom: Signal<Nullable<string | GroupByFn>>;\r\n readonly groupDisabledFrom: Signal<Nullable<string>>;\r\n readonly childrenFrom: Signal<Nullable<string>>;\r\n readonly DEFAULTS: ItemStorageHostDefaults;\r\n readonly itemsAlreadyGrouped: Signal<Nullable<boolean>>;\r\n readonly hideSelected: Signal<boolean>;\r\n readonly searchCaseSensitive: Signal<boolean>;\r\n readonly searchFn: Signal<SearchFn>;\r\n readonly compareWith: Signal<Nullable<CompareWithFn>>;\r\n readonly multiselectable: Signal<boolean>;\r\n readonly sortMultipleValues: Signal<boolean>;\r\n readonly maxSelectedItems: Signal<Nullable<number>>;\r\n readonly addCustom: Signal<boolean | AddCustomFn<any> | AddCustomFn<Promise<any>>>;\r\n readonly _componentId: string;\r\n}\r\n\r\nexport class ItemStorage {\r\n private readonly _groups = signal<ArdItemGroupMap>(this._createEmptyGroupMap());\r\n private readonly _items = signal<ArdOption[]>([]);\r\n private readonly _filteredItems = signal<ArdOption[]>([]);\r\n private readonly _highlightedItems = signal<ArdOption[]>([]);\r\n private readonly _highlightedGroups = signal<ArdOptionGroup[]>([]);\r\n private readonly _recentlyHighlightedItem = signal<Nullable<ArdOption>>(undefined);\r\n private readonly _selectedItems = signal<ArdOption[]>([]);\r\n\r\n constructor(private readonly _ardParentComp: ItemStorageHost) {}\r\n\r\n readonly groups = computed(() =>\r\n Array.from(this._groups().entries())\r\n .map(([, group]) => group)\r\n .filter(group => group.children().length)\r\n );\r\n readonly items = this._items.asReadonly();\r\n readonly filteredItems = this._filteredItems.asReadonly();\r\n readonly highlightedItems = this._highlightedItems.asReadonly();\r\n\r\n readonly selectedItems = computed(() => {\r\n if (this._ardParentComp.sortMultipleValues()) {\r\n return this._selectedItems().sort((a, b) => {\r\n return a.index() - b.index();\r\n });\r\n }\r\n return this._selectedItems();\r\n });\r\n readonly lastSelectedItem = computed(() => this._filteredItems().last(1, item => !item.disabled()));\r\n\r\n readonly value = computed(() => this._itemsToValue(this.selectedItems()));\r\n private _itemsToValue(items: ArdOption[]): any[] {\r\n return items.map(item => item.value());\r\n }\r\n\r\n readonly isNoItemsToSelect = computed(() => this._items().length === this._selectedItems().length);\r\n readonly isNoItemsFound = computed(() => this._filteredItems().length === 0);\r\n readonly isAnyItemSelected = computed(() => this._selectedItems().length > 0);\r\n readonly isAnyItemHighlighted = computed(() => this._highlightedItems().length > 0);\r\n readonly isItemLimitReached = computed(\r\n () =>\r\n this._ardParentComp.multiselectable() &&\r\n isDefined(this._ardParentComp.maxSelectedItems()) &&\r\n this._ardParentComp.maxSelectedItems()! <= this.selectedItems().length\r\n );\r\n\r\n setItems(items: any[]): boolean {\r\n let areItemsPrimitive = false;\r\n if (this._ardParentComp.groupLabelFrom() && this._ardParentComp.itemsAlreadyGrouped()) {\r\n const newItems = [];\r\n for (const group of items) {\r\n let children: any[];\r\n [children, areItemsPrimitive] = this._ungroupAlreadyGroupedItems(group);\r\n newItems.push(...children);\r\n }\r\n items = newItems;\r\n }\r\n if (any(items, isPrimitive)) {\r\n items = items.map(this._primitiveItemsMapFn);\r\n areItemsPrimitive = true;\r\n }\r\n\r\n this._items.set(\r\n items.map((item, index) => {\r\n return this._setItemsMapFn(item, index, areItemsPrimitive);\r\n })\r\n );\r\n\r\n //add all items to filter array\r\n this._filteredItems.set(this._items());\r\n\r\n //add items to groups\r\n this._populateGroups();\r\n\r\n //write value if it was\r\n const toWrite = this._valueToWriteAfterItemsLoad();\r\n if (toWrite !== undefined) {\r\n this.handleWriteValue(toWrite);\r\n }\r\n\r\n return areItemsPrimitive;\r\n }\r\n private _addSingleItem(item: any): ArdOption {\r\n const isItemPrimitive = isPrimitive(item);\r\n //map a primitive item to a usable object\r\n if (isItemPrimitive) {\r\n item = this._primitiveItemsMapFn(item);\r\n }\r\n //map the item to create data bindings\r\n const ardOption = this._setItemsMapFn(item, (this._items().last()?.index() ?? 0) + 1, isItemPrimitive);\r\n\r\n //push the item into all items\r\n this._items.update(v => [...v, ardOption]);\r\n\r\n //add item to groups\r\n this._populateGroups();\r\n\r\n return ardOption;\r\n }\r\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\r\n return { value: item };\r\n }\r\n private _ungroupAlreadyGroupedItems<T extends object>(group: T): [any[], boolean] {\r\n //determine groupBy (groupLabel) path\r\n const groupBy = this._ardParentComp.groupLabelFrom() ?? this._ardParentComp.DEFAULTS.groupLabelFrom;\r\n\r\n //get group label from object\r\n let groupName: any;\r\n if (typeof groupBy === 'string') {\r\n groupName = resolvePath(group, groupBy);\r\n } else {\r\n groupName = groupBy(group);\r\n }\r\n\r\n //determine group children path\r\n const childrenPath = this._ardParentComp.childrenFrom() ?? this._ardParentComp.DEFAULTS.childrenFrom;\r\n\r\n //get group children\r\n let groupItems: any = resolvePath(group, childrenPath);\r\n\r\n //return empty array if groupItems is not an array or is empty\r\n if (!isArray(groupItems) || groupItems.length === 0) return [[], false];\r\n\r\n //check if the array is an array of primitives, and map it if needed\r\n const areItemsPrimitive = false;\r\n if (any(groupItems, isPrimitive)) {\r\n groupItems = groupItems.map(this._primitiveItemsMapFn);\r\n }\r\n //add group name to every child\r\n groupItems = groupItems.map((item: any) => {\r\n item.$ardgroup = groupName;\r\n return item;\r\n });\r\n\r\n return [groupItems, areItemsPrimitive];\r\n }\r\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdOption {\r\n if (areItemsPrimitive) {\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(rawItemData.value),\r\n label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),\r\n disabled: signal(false),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n group: signal(undefined),\r\n highlighted_recently: signal(false),\r\n };\r\n }\r\n //get value\r\n const valuePath =\r\n this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom() ?? this._ardParentComp.DEFAULTS.valueFrom;\r\n const value = resolvePath(rawItemData, valuePath);\r\n\r\n //get label\r\n const labelPath =\r\n this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom() ?? this._ardParentComp.DEFAULTS.labelFrom;\r\n const label = resolvePath(rawItemData, labelPath) ?? value;\r\n\r\n //get disabled\r\n const disabledPath = this._ardParentComp.disabledFrom() ?? this._ardParentComp.DEFAULTS.disabledFrom;\r\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\r\n if (this._ardParentComp.invertDisabled()) {\r\n disabled = !disabled;\r\n }\r\n\r\n //get groups\r\n let group: any = undefined;\r\n const groupBy = this._ardParentComp.groupLabelFrom();\r\n if (groupBy) {\r\n if (rawItemData.$ardgroup) {\r\n group = rawItemData.$ardgroup;\r\n } else {\r\n if (typeof groupBy === 'string') {\r\n group = resolvePath(rawItemData, groupBy);\r\n } else {\r\n group = groupBy(rawItemData);\r\n }\r\n }\r\n }\r\n\r\n //return\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(value),\r\n label: signal(label?.toString?.() ?? String(label)),\r\n disabled: signal(disabled),\r\n group: signal(group),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n highlighted_recently: signal(false),\r\n };\r\n }\r\n private _populateGroups(): void {\r\n this._groups.set(this._createEmptyGroupMap());\r\n\r\n for (const item of this._filteredItems()) {\r\n if (this._ardParentComp.hideSelected() && item.selected()) continue;\r\n\r\n this._addToGroup(item);\r\n }\r\n }\r\n private _addToGroup(item: ArdOption): void {\r\n const groupKey = item.group();\r\n const targetGroup = this._groups().get(groupKey);\r\n //create new group if needed\r\n if (!targetGroup) {\r\n this._groups.update(v => {\r\n const map = new Map(v);\r\n map.set(groupKey, {\r\n label: signal(String(groupKey ?? '')),\r\n children: signal([item]),\r\n disabled: signal(false),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n });\r\n return map;\r\n });\r\n return;\r\n }\r\n targetGroup.children.update(v => [...v, item]);\r\n }\r\n private _createEmptyGroupMap(): ArdItemGroupMap {\r\n return new Map([\r\n [\r\n undefined,\r\n {\r\n label: signal(''),\r\n children: signal([]),\r\n disabled: signal(false),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n },\r\n ],\r\n ]) as ArdItemGroupMap;\r\n }\r\n private _isWriteValueValid(ngModel: any[]): boolean {\r\n return ngModel.every(item => {\r\n if (!isDefined(this._ardParentComp.compareWith) && isObject(item) && this._ardParentComp.valueFrom()) {\r\n console.warn(\r\n `ARD-WA${this._ardParentComp._componentId}0: Setting object(${JSON.stringify(\r\n item\r\n )}) as your model with [valueFrom] is not allowed unless [compareWith] is used.`\r\n );\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n private readonly _valueToWriteAfterItemsLoad = signal<any>(undefined);\r\n private readonly _wasValueWriteDeferred = signal<boolean>(false);\r\n handleWriteValue(ngModel: any[]): void {\r\n //defer writing the value if no options are yet loaded\r\n if (!this._wasValueWriteDeferred() && this._items().length === 0) {\r\n this._valueToWriteAfterItemsLoad.set(ngModel);\r\n return;\r\n }\r\n\r\n this.clearAllSelected();\r\n\r\n if (!this._isWriteValueValid(ngModel)) {\r\n return;\r\n }\r\n\r\n const selectItemByValue = (value: any) => {\r\n const item = this.findItemByValue(value);\r\n\r\n if (item) {\r\n this.selectItem(item);\r\n return;\r\n }\r\n console.warn(\r\n `ARD-WA${this._ardParentComp._componentId}1: Couldn't find an item with value ${value?.toString?.() || String(value)}.`\r\n );\r\n };\r\n\r\n for (const modelValue of ngModel) {\r\n selectItemByValue(modelValue);\r\n }\r\n }\r\n findItemByValue(valueToFind: any): ArdOption | undefined {\r\n let findBy: (item: ArdOption) => boolean;\r\n if (this._ardParentComp.compareWith()) {\r\n findBy = item => this._ardParentComp.compareWith()!(valueToFind, item.value);\r\n } else {\r\n findBy = item => item.value === valueToFind;\r\n }\r\n return this._items().find(item => findBy(item));\r\n }\r\n async addCustomOption(value: string, fn: AddCustomFn<any> | AddCustomFn<Promise<any>>): Promise<ArdOption> {\r\n const fnResult = fn(value);\r\n\r\n let optionValue = fnResult;\r\n if (isPromise(optionValue)) optionValue = await optionValue;\r\n\r\n const newOptionObj = this._addSingleItem(optionValue);\r\n\r\n return newOptionObj;\r\n }\r\n\r\n clearAllSelected(repopulateGroups = false): any[] {\r\n for (const item of this._selectedItems()) {\r\n item.selected.set(false);\r\n }\r\n const removedItemValues = this._itemsToValue(this._selectedItems());\r\n this._selectedItems.set([]);\r\n\r\n if (repopulateGroups && this._ardParentComp.hideSelected()) this._populateGroups();\r\n\r\n return removedItemValues;\r\n }\r\n clearLastSelected(): ArdOption {\r\n const item = this._selectedItems().last();\r\n if (!item) return item;\r\n this.unselectItem(item);\r\n return item;\r\n }\r\n selectItem(...items: ArdOption[]): [any[], any[], any[]] {\r\n if (this.isItemLimitReached()) {\r\n return [[], [], this._itemsToValue(items)];\r\n }\r\n let unselected = [];\r\n if (!this._ardParentComp.multiselectable()) {\r\n unselected = this.clearAllSelected(false);\r\n }\r\n\r\n let itemsSelectedCount = 0;\r\n const itemsSelected = [];\r\n for (const item of items) {\r\n itemsSelectedCount++;\r\n if (item.selected()) continue;\r\n if (this.isItemLimitReached()) {\r\n break;\r\n }\r\n item.selected.set(true);\r\n this._selectedItems.update(v => [...v, item]);\r\n itemsSelected.push(item);\r\n }\r\n\r\n if (this._ardParentComp.hideSelected()) {\r\n this._populateGroups();\r\n }\r\n\r\n const itemsFailedToSelect = items.slice(itemsSelectedCount - 1);\r\n return [this._itemsToValue(itemsSelected), unselected, this._itemsToValue(itemsFailedToSelect)];\r\n }\r\n unselectItem(...items: ArdOption[]): any[] {\r\n for (const item of items) {\r\n if (!item.selected()) continue;\r\n item.selected.set(false);\r\n }\r\n this._selectedItems.update(v => v.filter(v => v.selected()));\r\n\r\n if (this._ardParentComp.hideSelected()) {\r\n this._populateGroups();\r\n }\r\n\r\n return this._itemsToValue(items);\r\n }\r\n\r\n clearAllHighlights(): void {\r\n for (const item of this._highlightedItems()) {\r\n item.highlighted.set(false);\r\n }\r\n for (const group of this._highlightedGroups()) {\r\n group.highlighted.set(false);\r\n }\r\n this._highlightedItems.set([]);\r\n this._highlightedGroups.set([]);\r\n }\r\n highlightGroup(group: ArdOptionGroup): ArdOption {\r\n this.clearAllHighlights();\r\n group.highlighted.set(true);\r\n this.highlightItem(...group.children());\r\n return group.children().first();\r\n }\r\n highlightSingleItem(item: ArdOption): ArdOption | null {\r\n if (!item || item.disabled()) return null;\r\n this.clearAllHighlights();\r\n return this.highlightItem(item);\r\n }\r\n highlightItem(...items: ArdOption[]): ArdOption {\r\n for (const item of items) {\r\n item.highlighted.set(true);\r\n }\r\n this._highlightedItems.update(v => [...v, ...items]);\r\n return items.last();\r\n }\r\n unhighlightItem(...items: ArdOption[]): void {\r\n for (const item of items) {\r\n if (!item || !item.highlighted) return;\r\n\r\n item.highlighted.set(false);\r\n }\r\n this._highlightedItems.update(v => v.filter(v => v.highlighted()));\r\n }\r\n highlightFirstItem(): ArdOption | null {\r\n this.clearAllHighlights();\r\n const itemsToHighlight = this._getHiglightableItems();\r\n return this.highlightSingleItem(itemsToHighlight.first());\r\n }\r\n highlightLastItem(): ArdOption | null {\r\n this.clearAllHighlights();\r\n const itemsToHighlight = this._getHiglightableItems();\r\n return this.highlightSingleItem(itemsToHighlight.last());\r\n }\r\n private _getHiglightableItems(): ArdOption[] {\r\n let itemsToHighlight = this._filteredItems().filter(item => !item.disabled());\r\n if (this._ardParentComp.hideSelected()) {\r\n itemsToHighlight = itemsToHighlight.filter(item => !item.selected());\r\n }\r\n return itemsToHighlight;\r\n }\r\n highlightAllItems(): void {\r\n this.highlightItem(...this._getHiglightableItems());\r\n }\r\n private _clearRecentlyHighlighted(): void {\r\n if (this._recentlyHighlightedItem()) {\r\n this._recentlyHighlightedItem()!.highlighted_recently.set(false);\r\n }\r\n }\r\n setRecentlyHighlighted(item: ArdOption): void {\r\n this._clearRecentlyHighlighted();\r\n item.highlighted_recently.set(true);\r\n this._recentlyHighlightedItem.set(item);\r\n }\r\n highlightNextItem(offset: number, hasShift?: boolean): ArdOption | null {\r\n if (!this.isAnyItemHighlighted()) {\r\n return this.highlightFirstItem();\r\n }\r\n const currentItem = this.highlightedItems().last();\r\n const highlightableItems = this._getHiglightableItems();\r\n const currentIndexInFiltered = highlightableItems.findIndex(item => item.index() === currentItem.index());\r\n\r\n let nextItemIndex = currentIndexInFiltered + offset;\r\n if (nextItemIndex >= highlightableItems.length) {\r\n nextItemIndex -= highlightableItems.length;\r\n }\r\n if (nextItemIndex < 0) {\r\n nextItemIndex += highlightableItems.length;\r\n }\r\n const itemToHighlight = highlightableItems[nextItemIndex];\r\n\r\n if (hasShift && this._ardParentComp.multiselectable()) {\r\n if (itemToHighlight.highlighted()) {\r\n this.unhighlightItem(currentItem);\r\n }\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n return this.highlightSingleItem(itemToHighlight);\r\n }\r\n filter(filterTerm: string): any[] {\r\n if (!filterTerm) {\r\n return this._itemsToValue(this.resetFiltered());\r\n }\r\n if (!this._ardParentComp.searchCaseSensitive()) {\r\n filterTerm = filterTerm.toLocaleLowerCase();\r\n }\r\n\r\n const searchFn = this._ardParentComp.searchFn();\r\n const newFilteredItems = this._items().filter(item => searchFn(filterTerm, item));\r\n this._filteredItems.set(newFilteredItems);\r\n\r\n this._populateGroups();\r\n\r\n if (!this.isNoItemsFound) this.highlightFirstItem();\r\n else this.clearAllHighlights();\r\n\r\n return this._itemsToValue(newFilteredItems);\r\n }\r\n resetFiltered(): ArdOption[] {\r\n if (this._filteredItems().length === this._items().length) return this._items();\r\n\r\n let newFilteredItems = this._items();\r\n if (this._ardParentComp.hideSelected() && this.isAnyItemSelected()) {\r\n newFilteredItems = newFilteredItems.filter(item => !item.selected());\r\n }\r\n this._populateGroups();\r\n return newFilteredItems;\r\n }\r\n}\r\n","import {\r\n AfterViewChecked,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { Subject } from 'rxjs';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\n@Component({\r\n selector: 'ard-option',\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumOptionComponent implements OnChanges, AfterViewChecked, OnDestroy {\r\n private readonly elementRef = inject(ElementRef<HTMLElement>);\r\n\r\n readonly value = input<any>(undefined);\r\n\r\n readonly hasImplicitValue = computed<boolean>(() => this.value() === undefined);\r\n\r\n readonly label = input<Nullable<string>>(undefined);\r\n\r\n get labelOrInnerHtml(): string {\r\n return this.label() ?? (this.elementRef.nativeElement.innerHTML || '').trim();\r\n }\r\n\r\n readonly disabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! state change listener\r\n readonly stateChange$ = new Subject<{\r\n value: any;\r\n oldValue?: string;\r\n disabled: boolean;\r\n label?: Nullable<string>;\r\n }>();\r\n\r\n private _previousLabel: Nullable<string>;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['disabled']) {\r\n this.stateChange$.next({\r\n value: this.value(),\r\n disabled: changes['disabled'].currentValue,\r\n });\r\n }\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n if (this.label() !== this._previousLabel) {\r\n let oldValue = this.value();\r\n if (this.hasImplicitValue()) oldValue = this._previousLabel;\r\n\r\n this._previousLabel = this.label();\r\n\r\n this.stateChange$.next({\r\n value: this.value(),\r\n oldValue,\r\n disabled: this.disabled(),\r\n label: this.label(),\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChange$.complete();\r\n }\r\n}\r\n","import { ArdOption, SearchFn } from './types/item-storage.types';\r\n\r\nexport function searchInString(searchTerm: string, toSearch: any) {\r\n if (toSearch === undefined) return false;\r\n return String(toSearch).toLocaleLowerCase().indexOf(searchTerm) !== -1;\r\n}\r\nexport const searchFunctions: {\r\n byLabel: SearchFn;\r\n byValue: SearchFn;\r\n byGroup: SearchFn;\r\n byLabelAndGroup: SearchFn;\r\n byLabelAndValue: SearchFn;\r\n byLabelAndGroupAndValue: SearchFn;\r\n} = {\r\n /**\r\n * Determines if the item should appear in the search results, based on the label only.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabel: (searchTerm: string, item: ArdOption) => {\r\n return searchInString(searchTerm, item.label());\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the value only.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byValue: (searchTerm: string, item: ArdOption) => {\r\n return searchInString(searchTerm, item.value());\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the group only.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byGroup: (searchTerm: string, item: ArdOption) => {\r\n return searchInString(searchTerm, item.group());\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the label and group.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabelAndGroup: (searchTerm: string, item: ArdOption) => {\r\n return (\r\n searchFunctions.byLabel(searchTerm, item) || (item.label() !== item.value() && searchFunctions.byValue(searchTerm, item))\r\n );\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the label and value.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabelAndValue: (searchTerm: string, item: ArdOption) => {\r\n return searchFunctions.byLabel(searchTerm, item) || searchFunctions.byValue(searchTerm, item);\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the label, group, and value.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabelAndGroupAndValue: (searchTerm: string, item: ArdOption) => {\r\n return (\r\n searchFunctions.byLabel(searchTerm, item) ||\r\n (item.label() !== item.value() && searchFunctions.byValue(searchTerm, item)) ||\r\n searchFunctions.byGroup(searchTerm, item)\r\n );\r\n },\r\n};\r\n","import { Signal, WritableSignal } from '@angular/core';\r\nimport { Nullable } from './utility.types';\r\n\r\n/**\r\n```typescript\r\ninterface OptionContext {\r\n $implicit: ArdOption;\r\n item: ArdOption;\r\n itemData: any;\r\n}\r\n```\r\n */\r\nexport interface OptionContext<T extends ArdSimplestStorageItem> {\r\n $implicit: T;\r\n item: T;\r\n itemData: any;\r\n}\r\n\r\n/**\r\n```typescript\r\ninterface ArdOption {\r\n readonly itemData: any;\r\n readonly index: number;\r\n label: string;\r\n value: any;\r\n highlighted?: boolean;\r\n selected?: boolean;\r\n}\r\n```\r\n */\r\nexport interface ArdSimplestStorageItem {\r\n readonly itemData: WritableSignal<any>;\r\n readonly index: Signal<number>;\r\n readonly value: WritableSignal<any>;\r\n readonly label: WritableSignal<string>;\r\n readonly selected: WritableSignal<Nullable<boolean>>;\r\n readonly highlighted: WritableSignal<Nullable<boolean>>;\r\n}\r\n\r\n/**\r\n```typescript\r\ninterface ArdOption {\r\n readonly itemData: any;\r\n readonly index: number;\r\n readonly label: string;\r\n readonly value: any;\r\n disabled?: boolean;\r\n highlighted?: boolean;\r\n selected?: boolean;\r\n}\r\n```\r\n */\r\nexport interface ArdOptionSimple extends ArdSimplestStorageItem {\r\n readonly disabled: WritableSignal<Nullable<boolean>>;\r\n}\r\n/**\r\n```typescript\r\ninterface ArdOption {\r\n readonly itemData: any;\r\n readonly index: number;\r\n readonly label: string;\r\n readonly value: any;\r\n readonly group?: any;\r\n disabled?: boolean;\r\n selected?: boolean;\r\n highlighted?: boolean;\r\n highlighted_recently?: boolean;\r\n}\r\n```\r\n */\r\nexport interface ArdOption extends ArdOptionSimple {\r\n readonly group: Signal<any>;\r\n readonly highlighted_recently: WritableSignal<Nullable<boolean>>;\r\n}\r\n\r\n/**\r\n```typescript\r\ninterface ArdItemGroup {\r\n label: string;\r\n disabled?: boolean;\r\n highlighted?: boolean;\r\n selected?: boolean;\r\n children: ArdOption[];\r\n}\r\n```\r\n */\r\nexport interface ArdOptionGroup {\r\n readonly label: WritableSignal<string>;\r\n readonly disabled: WritableSignal<Nullable<boolean>>;\r\n readonly highlighted: WritableSignal<Nullable<boolean>>;\r\n readonly selected: WritableSignal<Nullable<boolean>>;\r\n readonly children: WritableSignal<ArdOption[]>;\r\n}\r\n\r\nexport const ArdPanelPosition = {\r\n Top: 'top',\r\n Bottom: 'bottom',\r\n Auto: 'auto',\r\n} as const;\r\nexport type ArdPanelPosition = (typeof ArdPanelPosition)[keyof typeof ArdPanelPosition];\r\n\r\nexport type ArdItemGroupMap = Map<any, ArdOptionGroup>;\r\n\r\nexport type GroupByFn = (item: any) => any;\r\nexport type SearchFn = (searchTerm: string, item: ArdOption) => boolean;\r\nexport type CompareWithFn = (value: any, optionValue: any) => boolean;\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { ArdOption, OptionContext } from '../types/item-storage.types';\r\nimport {\r\n CustomOptionContext,\r\n GroupContext,\r\n ItemDisplayLimitContext,\r\n ItemLimitContext,\r\n PlaceholderContext,\r\n SearchContext,\r\n ValueContext,\r\n} from './select.types';\r\n\r\n//public (exported)\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-prefix-tmp]' })\r\nexport class ArdSelectPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-suffix-tmp]' })\r\nexport class ArdSelectSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-value-tmp]' })\r\nexport class ArdValueTemplateDirective {\r\n constructor(public template: TemplateRef<ValueContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-value-chip-tmp]' })\r\nexport class ArdValueChipTemplateDirective {\r\n constructor(public template: TemplateRef<ValueContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-option-tmp]' })\r\nexport class ArdOptionTemplateDirective {\r\n constructor(public template: TemplateRef<OptionContext<ArdOption>>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-optgroup-tmp]' })\r\nexport class ArdOptgroupTemplateDirective {\r\n constructor(public template: TemplateRef<GroupContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-placeholder-tmp]' })\r\nexport class ArdSelectPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<PlaceholderContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-loading-spinner-tmp]' })\r\nexport class ArdLoadingSpinnerTemplateDirective {\r\n constructor(public template: TemplateRef<null>) {}\r\n}\r\n\r\n@Directive({\r\n selector: 'ard-select > ng-template[ard-loading-placeholder-tmp]',\r\n})\r\nexport class ArdLoadingPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-dropdown-header-tmp]' })\r\nexport class ArdDropdownHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-dropdown-footer-tmp]' })\r\nexport class ArdDropdownFooterTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-no-items-found-tmp]' })\r\nexport class ArdNoItemsFoundTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-add-custom-tmp]' })\r\nexport class ArdAddCustomTemplateDirective {\r\n constructor(public template: TemplateRef<CustomOptionContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-item-limit-reached-tmp]' })\r\nexport class ArdItemLimitReachedTemplateDirective {\r\n constructor(public template: TemplateRef<ItemLimitContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-item-display-limit-tmp]' })\r\nexport class ArdItemDisplayLimitTemplateDirective {\r\n constructor(public template: TemplateRef<ItemDisplayLimitContext>) {}\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-form-field-frame > ng-template[ard-prefix-tmp]' })\nexport class ArdFormFieldPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-form-field-frame > ng-template[ard-suffix-tmp]' })\nexport class ArdFormFieldSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n input\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective } from './form-field-frame.directives';\r\n\r\n@Component({\r\n selector: 'ard-form-field-frame',\r\n templateUrl: './form-field-frame.component.html',\r\n styleUrls: ['./form-field-frame.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumFormFieldFrameComponent extends _FocusableComponentBase {\r\n //! focused state\r\n @Input() override isFocused = false;\r\n\r\n //! appearance\r\n /**\r\n * The appearance of the component, aka the styling.\r\n */\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n /**\r\n * The variant of the component, aka the shape.\r\n */\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n\r\n /**\r\n * Whether to use the compact styling or not.\r\n */\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.isFocused ? 'ard-focused' : 'ard-unfocused',\r\n ].join(' ')\r\n );\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplateInput = input<Nullable<TemplateRef<any>>>(undefined, { alias: 'prefixTemplate' });\r\n readonly suffixTemplateInput = input<Nullable<TemplateRef<any>>>(undefined, { alias: 'suffixTemplate' });\r\n readonly prefixTemplate = contentChild(ArdFormFieldPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdFormFieldSuffixTemplateDirective);\r\n}\r\n","<div\r\n class=\"ard-form-field-frame\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-form-field-overlay\"></div>\r\n @if (prefixTemplateInput() ?? prefixTemplate()) {\r\n <div class=\"ard-form-field-prefix-container\">\r\n <ng-template [ngTemplateOutlet]=\"prefixTemplateInput() ?? prefixTemplate()?.template ?? null\"></ng-template>\r\n </div>\r\n }\r\n <div class=\"ard-form-field-content-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (suffixTemplateInput() ?? suffixTemplate()) {\r\n <div class=\"ard-form-field-suffix-container\">\r\n <ng-template [ngTemplateOutlet]=\"suffixTemplateInput() ?? suffixTemplate()?.template ?? null\"></ng-template>\r\n </div>\r\n }\r\n</div>\r\n","import { Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n HostBinding,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n QueryList,\r\n Signal,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n inject,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceArrayProperty, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { Subject, merge, startWith, takeUntil } from 'rxjs';\r\nimport { isAnyString, isArray, isFunction } from 'simple-bool';\r\nimport { ItemStorage, ItemStorageHost } from '../_internal/item-storages/dropdown-item-storage';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\nimport { ArdiumDropdownPanelComponent } from '../dropdown-panel/dropdown-panel.component';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant } from '../dropdown-panel/dropdown-panel.types';\r\nimport { ArdiumOptionComponent } from '../option/option.component';\r\nimport { searchFunctions } from '../search-functions';\r\nimport { ArdOption, ArdOptionGroup, ArdPanelPosition, GroupByFn, OptionContext, SearchFn } from '../types/item-storage.types';\r\nimport { FormElementAppearance } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { FormElementVariant } from './../types/theming.types';\r\nimport {\r\n ArdAddCustomTemplateDirective,\r\n ArdDropdownFooterTemplateDirective,\r\n ArdDropdownHeaderTemplateDirective,\r\n ArdItemDisplayLimitTemplateDirective,\r\n ArdItemLimitReachedTemplateDirective,\r\n ArdLoadingPlaceholderTemplateDirective,\r\n ArdLoadingSpinnerTemplateDirective,\r\n ArdNoItemsFoundTemplateDirective,\r\n ArdOptgroupTemplateDirective,\r\n ArdOptionTemplateDirective,\r\n ArdSelectPlaceholderTemplateDirective,\r\n ArdSelectPrefixTemplateDirective,\r\n ArdSelectSuffixTemplateDirective,\r\n ArdValueTemplateDirective,\r\n} from './select.directive';\r\nimport {\r\n AddCustomFn,\r\n CustomOptionContext,\r\n GroupContext,\r\n ItemDisplayLimitContext,\r\n ItemLimitContext,\r\n PlaceholderContext,\r\n SearchContext,\r\n StatsContext,\r\n ValueContext,\r\n} from './select.types';\r\n\r\n@Component({\r\n selector: 'ard-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSelectComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSelectComponent\r\n extends _NgModelComponentBase\r\n implements OnChanges, AfterViewInit, AfterContentInit, OnInit, OnDestroy, ControlValueAccessor, ItemStorageHost\r\n{\r\n readonly _componentId: string = '000';\r\n //! public constants\r\n readonly itemStorage = new ItemStorage(this);\r\n readonly DEFAULTS = {\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n disabledFrom: 'disabled',\r\n groupLabelFrom: 'group',\r\n groupDisabledFrom: 'disabled',\r\n childrenFrom: 'children',\r\n searchFn: searchFunctions.byLabel,\r\n clearButtonTitle: 'Clear',\r\n noItemsFoundText: 'No items found.',\r\n loadingPlaceholderText: 'Loading...',\r\n };\r\n\r\n //! privates\r\n private _items: any[] | null = [];\r\n private readonly _isMouseBeingUsed = signal<boolean>(false);\r\n private readonly _searchBarFocused = signal<boolean>(false);\r\n private readonly _destroy$ = new Subject<void>();\r\n\r\n //! publics\r\n readonly searchTerm = signal<string>('');\r\n isItemsInputUsed = false;\r\n\r\n //! binding-related inputs\r\n //value/label/disabled/group/pre-grouped children paths\r\n readonly valueFrom = input<Nullable<string>>(undefined);\r\n readonly labelFrom = input<Nullable<string>>(undefined);\r\n readonly disabledFrom = input<Nullable<string>>(undefined);\r\n //! group-related inputs\r\n readonly groupLabelFrom = input<Nullable<string | GroupByFn>>(undefined);\r\n readonly groupDisabledFrom = input<Nullable<string>>(undefined);\r\n readonly childrenFrom = input<Nullable<string>>(undefined);\r\n //! settings\r\n readonly placeholder = input<string>('Select item');\r\n readonly searchPlaceholder = input<string>('Search...');\r\n readonly clearButtonTitle = input<string>(this.DEFAULTS.clearButtonTitle);\r\n\r\n readonly dropdownPosition = input<ArdPanelPosition>(ArdPanelPosition.Auto);\r\n //! template-related settings\r\n readonly noItemsFoundText = input<string>(this.DEFAULTS.noItemsFoundText);\r\n readonly loadingPlaceholderText = input<string>(this.DEFAULTS.loadingPlaceholderText);\r\n //! search-related options\r\n readonly searchInputId = input<Nullable<string>>(undefined);\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n //! other inputs\r\n readonly isLoading = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly inputProps = input<Record<string, any>>({});\r\n readonly htmlId = input<string>(crypto.randomUUID());\r\n\r\n //! boolean settings\r\n readonly itemsAlreadyGrouped = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //should the value that the \"disabledFrom\" path lead to be inverted?\r\n //useful when the property is e.g. \"active\", which is the oposite of \"disabled\"\r\n readonly invertDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly noGroupActions = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly autoHighlightFirst = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly autoFocus = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly keepOpen = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly hideSelected = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly noBackspaceClear = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly sortMultipleValues = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly searchCaseSensitive = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly keepSearchAfterSelect = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! number inputs\r\n readonly maxSelectedItems = input<number, any>(Infinity, { transform: v => coerceNumberProperty(v, Infinity) });\r\n readonly itemDisplayLimit = input<number, any>(Infinity, { transform: v => coerceNumberProperty(v, Infinity) });\r\n\r\n //! function inputs\r\n readonly searchFn = input<SearchFn>(this.DEFAULTS.searchFn);\r\n readonly compareWith = input<Nullable<SearchFn>>(undefined);\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n //appearance, variant handled in ard-form-field-frame component\r\n this.compact() ? 'ard-compact' : '',\r\n this.multiselectable() ? 'ard-multiselect' : 'ard-singleselect',\r\n this.clearable() ? 'ard-clearable' : '',\r\n this.searchable() ? 'ard-searchable' : '',\r\n this.filtered() ? 'ard-filtered' : '',\r\n this.touched() ? 'ard-touched' : '',\r\n this.isOpen() ? 'ard-dropdown-open' : '',\r\n this._searchBarFocused() ? 'ard-select-focused' : '',\r\n this._searchBarFocused() ? 'ard-select-focused' : '',\r\n ].join(' ')\r\n );\r\n\r\n readonly dropdownAppearance = input<Nullable<DropdownPanelAppearance>>(undefined);\r\n readonly dropdownAppearanceOrDefault = computed(() => {\r\n if (this.dropdownAppearance()) return this.dropdownAppearance()!;\r\n if (this.appearance() === FormElementAppearance.Outlined) return DropdownPanelAppearance.Outlined;\r\n return DropdownPanelAppearance.Raised;\r\n });\r\n readonly dropdownVariant = input<Nullable<DropdownPanelVariant>>(undefined);\r\n readonly dropdownVariantOrDefault = computed(() => {\r\n if (this.dropdownVariant()) return this.dropdownVariant()!;\r\n const variant = this.variant();\r\n if (variant === FormElementVariant.Pill) return DropdownPanelVariant.Rounded;\r\n return variant;\r\n });\r\n\r\n @HostBinding('class.ard-group-items')\r\n get _groupItemsHostAttribute() {\r\n return this.groupLabelFrom();\r\n }\r\n\r\n //! items setter/getter\r\n @Input()\r\n get items() {\r\n return this._items;\r\n }\r\n set items(value: string | any[] | null) {\r\n this.isItemsInputUsed = true;\r\n if (value === null) {\r\n value = [];\r\n this.isItemsInputUsed = false;\r\n } else if (isAnyString(value)) {\r\n value = coerceArrayProperty(value);\r\n }\r\n const printErrors = this.itemStorage.setItems(value);\r\n if (printErrors) {\r\n this._printPrimitiveWarnings();\r\n }\r\n }\r\n\r\n @ContentChildren(ArdiumOptionComponent)\r\n optionComponents!: QueryList<ArdiumOptionComponent>;\r\n\r\n private _setItemsFromComponents() {\r\n const handleOptionChange = () => {\r\n const changedOrDestroyed = merge(this.optionComponents.changes, this._destroy$);\r\n merge(...this.optionComponents.map(option => option.stateChange$))\r\n .pipe(takeUntil(changedOrDestroyed))\r\n .subscribe(option => {\r\n setTimeout(() => {\r\n const item = this.itemStorage.findItemByValue(option.oldValue ?? option.value);\r\n if (item) {\r\n item.disabled.set(option.disabled);\r\n item.label.set(option.label || item.label());\r\n item.value.set(option.value);\r\n item.itemData.set({\r\n label: option.label || item.label(),\r\n value: option.value,\r\n disabled: option.disabled,\r\n });\r\n }\r\n this.detectChanges();\r\n }, 0);\r\n });\r\n };\r\n this.optionComponents.changes\r\n .pipe(startWith(this.optionComponents), takeUntil(this._destroy$))\r\n .subscribe((options: QueryList<ArdiumOptionComponent>) => {\r\n if (options.length === 0) return;\r\n setTimeout(() => {\r\n this.items = options.map(option => ({\r\n value: option.value,\r\n label: option.label,\r\n disabled: option.disabled,\r\n }));\r\n handleOptionChange();\r\n this.detectChanges();\r\n }, 0);\r\n });\r\n }\r\n\r\n //! attribute and/or class setters/getters\r\n readonly multiselectable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly clearable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly searchable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly filtered = computed<boolean>(() => this.searchable() && this.searchTerm() !== '');\r\n\r\n readonly touched = signal<boolean>(false);\r\n\r\n //! custom options\r\n private _defaultAddCustomFn: AddCustomFn<any> = (value: string) => value;\r\n\r\n readonly addCustom = input<\r\n false | AddCustomFn<any> | AddCustomFn<Promise<any>>,\r\n string | boolean | AddCustomFn<any> | AddCustomFn<Promise<any>>\r\n >(false, {\r\n transform: v => {\r\n if (isFunction(v)) {\r\n return v;\r\n }\r\n //coerce the value into a boolean\r\n //if \"true\", use the default function. Otherwise, just set to \"false\".\r\n return coerceBooleanProperty(v) && this._defaultAddCustomFn;\r\n },\r\n });\r\n readonly shouldShowAddCustom = computed<boolean>(\r\n () => this.addCustom() !== false && this.searchTerm().length > 0 && this.itemStorage.isNoItemsFound()\r\n );\r\n\r\n async addCustomOption(value: string) {\r\n const ac = this.addCustom();\r\n if (!ac) return;\r\n\r\n const newOptionObj = await this.itemStorage.addCustomOption(value, ac);\r\n\r\n this.selectItem(newOptionObj);\r\n }\r\n\r\n //! control value accessor\r\n //override the writeValue and setDisabledState defined in _NgModelComponent\r\n override setDisabledState(state: boolean): void {\r\n this._disabled = state;\r\n this._cd.markForCheck();\r\n }\r\n writeValue(ngModel: any[]): void {\r\n this.itemStorage.handleWriteValue(ngModel);\r\n this._cd.markForCheck();\r\n }\r\n //! change & touch event emitters\r\n protected _emitChange(): void {\r\n const value = this.itemStorage.value();\r\n this._onChangeRegistered?.(value);\r\n this.changeEvent.emit(value);\r\n this.valueChange.emit(value);\r\n }\r\n private _onTouched(): void {\r\n this.touched.set(true);\r\n this._onTouchedRegistered?.();\r\n }\r\n\r\n //! value input & output\r\n @Input()\r\n set value(newValue: any) {\r\n //if is a string, coerce it into array of strings\r\n if (isAnyString(newValue)) newValue = coerceArrayProperty(newValue);\r\n //if it is not a string and not an array, just put it in an array\r\n else if (!isArray(newValue)) newValue = [newValue];\r\n\r\n this.writeValue(newValue);\r\n }\r\n get value(): Signal<any[]> {\r\n return this.itemStorage.value;\r\n }\r\n readonly valueChange = output<any[]>();\r\n\r\n //! output events\r\n readonly changeEvent = output<any[]>({ alias: 'change' });\r\n readonly addEvent = output<any[]>({ alias: 'add' });\r\n readonly failedToAddEvent = output<any[]>({ alias: 'failedToAdd' });\r\n readonly removeEvent = output<any[]>({ alias: 'remove' });\r\n readonly clearEvent = output<void>({ alias: 'clear' });\r\n readonly openEvent = output<void>({ alias: 'open' });\r\n readonly closeEvent = output<void>({ alias: 'close' });\r\n readonly scrollEvent = output<{\r\n start: number;\r\n end: number;\r\n }>({ alias: 'scroll' });\r\n readonly scrollToEndEvent = output({ alias: 'scrollToEnd' });\r\n readonly searchEvent = output<{\r\n search: string;\r\n matching: any[];\r\n }>({ alias: 'search' });\r\n\r\n readonly isOpen = model<boolean>(false);\r\n\r\n //! view children\r\n readonly searchInput = viewChild<ElementRef<HTMLInputElement>>('searchInput');\r\n readonly dropdownPanel = viewChild<ArdiumDropdownPanelComponent>(ArdiumDropdownPanelComponent);\r\n\r\n //! templates\r\n readonly optionTemplate = contentChild(ArdOptionTemplateDirective);\r\n readonly optgroupTemplate = contentChild(ArdOptgroupTemplateDirective);\r\n readonly valueTemplate = contentChild(ArdValueTemplateDirective);\r\n readonly placeholderTemplate = contentChild(ArdSelectPlaceholderTemplateDirective);\r\n readonly loadingSpinnerTemplate = contentChild(ArdLoadingSpinnerTemplateDirective);\r\n readonly loadingPlaceholderTemplate = contentChild(ArdLoadingPlaceholderTemplateDirective);\r\n readonly dropdownHeaderTemplate = contentChild(ArdDropdownHeaderTemplateDirective);\r\n readonly dropdownFooterTemplate = contentChild(ArdDropdownFooterTemplateDirective);\r\n readonly noItemsFoundTemplate = contentChild(ArdNoItemsFoundTemplateDirective);\r\n readonly addCustomTemplate = contentChild(ArdAddCustomTemplateDirective);\r\n readonly itemLimitReachedTemplate = contentChild(ArdItemLimitReachedTemplateDirective);\r\n readonly itemDisplayLimitTemplate = contentChild(ArdItemDisplayLimitTemplateDirective);\r\n\r\n readonly prefixTemplate = contentChild(ArdSelectPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdSelectSuffixTemplateDirective);\r\n\r\n //! context providers\r\n getValueContext(item: ArdOption): ValueContext {\r\n return {\r\n $implicit: item,\r\n item,\r\n itemData: item.itemData(),\r\n unselect: () => {\r\n this.unselectItem(item);\r\n },\r\n };\r\n }\r\n readonly getStatsContext = computed(\r\n (): StatsContext => ({\r\n totalItems: this.totalItems(),\r\n foundItems: this.foundItems(),\r\n })\r\n );\r\n readonly getSearchContext = computed(\r\n (): SearchContext => ({\r\n $implicit: this.searchTerm(),\r\n searchTerm: this.searchTerm(),\r\n totalItems: this.totalItems(),\r\n foundItems: this.foundItems(),\r\n })\r\n );\r\n readonly getPlaceholderContext = computed((): PlaceholderContext => {\r\n const placeholder = this.placeholderForCurrentContext();\r\n return {\r\n placeholder,\r\n $implicit: placeholder,\r\n };\r\n });\r\n readonly getCustomOptionContext = computed(\r\n (): CustomOptionContext => ({\r\n $implicit: this.searchTerm(),\r\n searchTerm: this.searchTerm(),\r\n })\r\n );\r\n getGroupContext(group: ArdOptionGroup): GroupContext {\r\n return {\r\n $implicit: group,\r\n group,\r\n selectedChildren: group.children().filter(v => v.selected()).length,\r\n totalChildren: group.children().length,\r\n };\r\n }\r\n getOptionContext(item: ArdOption): OptionContext<ArdOption> {\r\n return {\r\n $implicit: item,\r\n item,\r\n itemData: item.itemData(),\r\n };\r\n }\r\n readonly getItemLimitContext = computed(\r\n (): ItemLimitContext => ({\r\n totalItems: this.totalItems(),\r\n selectedItems: this.itemStorage.selectedItems().length,\r\n itemLimit: this.maxSelectedItems(),\r\n })\r\n );\r\n readonly getItemDisplayLimitContext = computed((): ItemDisplayLimitContext => {\r\n const selectedItems = this.itemStorage.selectedItems().length;\r\n return {\r\n totalItems: this.totalItems(),\r\n selectedItems,\r\n itemLimit: this.maxSelectedItems(),\r\n overflowCount: selectedItems - (this.itemDisplayLimit() ?? 0),\r\n };\r\n });\r\n\r\n private readonly elementRef = inject(ElementRef<HTMLElement>);\r\n private readonly _cd = inject(ChangeDetectorRef);\r\n private readonly overlay = inject(Overlay);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly scrollStrategyOpts = inject(ScrollStrategyOptions);\r\n\r\n //! dropdown overlay\r\n @ViewChild('dropdownHost', { read: ElementRef })\r\n dropdownHost!: ElementRef<HTMLDivElement>;\r\n @ViewChild('dropdownTemplate', { read: TemplateRef })\r\n dropdownTemplate!: TemplateRef<any>;\r\n\r\n private dropdownOverlay?: OverlayRef;\r\n\r\n private _createOverlay(): void {\r\n const strategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.dropdownHost)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n },\r\n ]);\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n scrollStrategy: this.scrollStrategyOpts.block(),\r\n hasBackdrop: false,\r\n });\r\n\r\n this.dropdownOverlay = this.overlay.create(config);\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate, this.viewContainerRef);\r\n this.dropdownOverlay.attach(portal);\r\n this.setOverlaySize();\r\n }\r\n private _destroyOverlay(): void {\r\n if (!this.dropdownOverlay) return;\r\n\r\n this.dropdownOverlay.dispose();\r\n delete this.dropdownOverlay;\r\n }\r\n\r\n setOverlaySize(): void {\r\n if (!this.dropdownOverlay) return;\r\n\r\n const rect = this.dropdownHost.nativeElement.getBoundingClientRect();\r\n this.dropdownOverlay.updateSize({ width: rect.width });\r\n }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n this.setOverlaySize();\r\n }\r\n\r\n //! hooks\r\n ngOnInit(): void {\r\n this._setSearchInputAttributes();\r\n }\r\n ngOnDestroy() {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n ngAfterViewInit(): void {\r\n if (this.autoFocus()) {\r\n this.focus();\r\n }\r\n }\r\n ngAfterContentInit(): void {\r\n if (!this.isItemsInputUsed) {\r\n this._setItemsFromComponents();\r\n }\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n //fire items load handler when loading is set to false\r\n if (changes['loading']) {\r\n if (changes['loading'].currentValue === false) {\r\n this._onItemsLoad();\r\n }\r\n }\r\n }\r\n private _onItemsLoad() {\r\n if (!this._searchBarFocused) return;\r\n this.open();\r\n }\r\n private _printPrimitiveWarnings() {\r\n function makeWarning(str: string, errorCode: string): void {\r\n console.warn(\r\n `ARD-WA000${errorCode}: Skipped using [${str}] property bound to <ard-select>, as some provided items are of primitive type`\r\n );\r\n }\r\n if (this.valueFrom()) {\r\n makeWarning('valueFrom', '5a');\r\n }\r\n if (this.labelFrom()) {\r\n makeWarning('labelFrom', '5b');\r\n }\r\n if (this.disabledFrom()) {\r\n makeWarning('disabledFrom', '5c');\r\n }\r\n if (this.groupLabelFrom()) {\r\n makeWarning('groupLabelFrom', '5d');\r\n }\r\n if (this.groupDisabledFrom()) {\r\n makeWarning('groupDisabledFrom', '5e');\r\n }\r\n if (this.childrenFrom()) {\r\n makeWarning('childrenFrom', '5f');\r\n }\r\n if (this.invertDisabled()) {\r\n makeWarning('invertDisabled', '5g');\r\n }\r\n }\r\n\r\n //! getters\r\n readonly firstHighlightedItem = computed<ArdOption | undefined>(() => this.itemStorage.highlightedItems()?.first());\r\n readonly shouldDisplayPlaceholder = computed<boolean>(() => !this.itemStorage.isAnyItemSelected() && !this.searchTerm());\r\n readonly shouldDisplayValue = computed<boolean>(\r\n () => this.itemStorage.isAnyItemSelected() && (!this.searchTerm() || this.multiselectable())\r\n );\r\n readonly shouldShowClearButton = computed<boolean>(\r\n () => this.clearable() && !this.disabled() && (this.itemStorage.isAnyItemSelected() || this.searchTerm() !== '')\r\n );\r\n readonly itemsToDisplay = computed<IterableIterator<ArdOptionGroup>>(() => this.itemStorage.groups().values());\r\n readonly shouldShowNoItemsFound = computed<boolean>(\r\n () => this.itemStorage.isNoItemsFound() && !this.isLoading() && !this.shouldShowAddCustom()\r\n );\r\n readonly totalItems = computed<number>(() => this.itemStorage.items().length);\r\n readonly foundItems = computed<number | undefined>(() =>\r\n this.searchable() ? this.itemStorage.filteredItems().length : undefined\r\n );\r\n readonly shouldShowItemDisplayLimit = computed<boolean>(\r\n () =>\r\n this.multiselectable() &&\r\n this.itemDisplayLimit() !== Infinity &&\r\n this.itemStorage.selectedItems().length > this.itemDisplayLimit()\r\n );\r\n readonly isInputElementReadonly = computed<boolean>(\r\n () => !this.addCustom() && (!this.searchable() || this.itemStorage.isItemLimitReached())\r\n );\r\n\r\n isValueWithinDisplayLimit(i: number): boolean {\r\n return !this.multiselectable() || this.itemDisplayLimit() === Infinity || i < this.itemDisplayLimit();\r\n }\r\n readonly placeholderForCurrentContext = computed<string>(() => {\r\n if (this.searchPlaceholder() && this.searchable() && (this._searchBarFocused() || this._isClickedWithin()))\r\n return this.searchPlaceholder();\r\n return this.placeholder();\r\n });\r\n\r\n //! search input event handlers\r\n filter(filterTerm: string, suppressSearchEvent = false): void {\r\n this.searchTerm.set(filterTerm);\r\n const matching = this.itemStorage.filter(filterTerm);\r\n if (!suppressSearchEvent) this.searchEvent.emit({ search: filterTerm, matching });\r\n this.open();\r\n }\r\n onSearchInputFocus(): void {\r\n this._searchBarFocused.set(true);\r\n }\r\n onSearchInputBlur(): void {\r\n if (!this._searchBarFocused()) return;\r\n\r\n this._onTouched();\r\n\r\n this._searchBarFocused.set(false);\r\n }\r\n //! item selection handlers\r\n toggleItem(item: ArdOption): void {\r\n if (item.selected()) {\r\n this.unselectItem(item);\r\n return;\r\n }\r\n this.selectItem(item);\r\n }\r\n selectItem(...items: ArdOption[]): void {\r\n const [selected, unselected, failedToSelect] = this.itemStorage.selectItem(...items);\r\n\r\n if (unselected.length > 0) {\r\n this.removeEvent.emit(unselected);\r\n }\r\n if (failedToSelect.length > 0) {\r\n this.failedToAddEvent.emit(failedToSelect);\r\n }\r\n if (selected.length > 0) {\r\n this.addEvent.emit(selected);\r\n\r\n this.focus();\r\n if (!this.keepSearchAfterSelect()) this._clearSearch(true);\r\n\r\n if (!this.keepOpen() || this.itemStorage.isNoItemsToSelect()) {\r\n this.close();\r\n }\r\n }\r\n if (unselected.length > 0 || selected.length > 0) {\r\n this._emitChange();\r\n }\r\n }\r\n unselectItem(...items: ArdOption[]): void {\r\n const unselected = this.itemStorage.unselectItem(...items);\r\n\r\n this.removeEvent.emit(unselected);\r\n this._emitChange();\r\n if (!this.keepSearchAfterSelect()) this._clearSearch();\r\n\r\n this.focus();\r\n\r\n if (!this.keepOpen() || this.itemStorage.isNoItemsToSelect()) {\r\n this.close();\r\n }\r\n }\r\n private _clearAllItems(): void {\r\n const cleared = this.itemStorage.clearAllSelected(true);\r\n\r\n this.focus();\r\n\r\n this.clearEvent.emit();\r\n this.removeEvent.emit(cleared);\r\n this._emitChange();\r\n }\r\n private _clearLastItem(): void {\r\n const clearedValue = this.itemStorage.clearLastSelected().value();\r\n\r\n this.focus();\r\n\r\n this.removeEvent.emit([clearedValue]);\r\n this._emitChange();\r\n }\r\n //! highligh-related\r\n onMouseMove() {\r\n this._isMouseBeingUsed.set(true);\r\n }\r\n onGroupMouseover(group: ArdOptionGroup): void {\r\n if (!this.multiselectable() || this.noGroupActions()) return;\r\n this.itemStorage.highlightGroup(group);\r\n }\r\n onItemMouseOver(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n onItemMouseEnter(option: ArdOption, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed()) return;\r\n this.itemStorage.highlightSingleItem(option);\r\n event.stopPropagation();\r\n }\r\n onItemMouseLeave(option: ArdOption, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed()) return;\r\n this.itemStorage.unhighlightItem(option);\r\n event.stopPropagation();\r\n }\r\n //! click handlers\r\n private readonly _isClickedWithin = signal<boolean>(false);\r\n onItemClick(option: ArdOption, event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (this.clearable()) this.toggleItem(option);\r\n else this.selectItem(option);\r\n\r\n this._isClickedWithin.set(true);\r\n }\r\n onGroupClick(group: ArdOptionGroup): void {\r\n if (!this.multiselectable() || this.noGroupActions()) return;\r\n if (group.children().every(o => o.selected)) {\r\n this.unselectItem(...group.children());\r\n return;\r\n }\r\n this.selectItem(...group.children());\r\n\r\n this._isClickedWithin.set(true);\r\n }\r\n handleClearButtonClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (this.searchTerm()) {\r\n this._clearSearch();\r\n return;\r\n }\r\n this._clearAllItems();\r\n }\r\n handleDropdownArrowClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this._isClickedWithin.set(true);\r\n\r\n this.toggle();\r\n }\r\n handleOutsideClick(event: MouseEvent): void {\r\n if (!this.isOpen()) return;\r\n const target = event.target as HTMLElement;\r\n if (this.elementRef.nativeElement.contains(target)) return;\r\n\r\n this.close();\r\n }\r\n handleAnywhereClick(event: MouseEvent): void {\r\n const target = event.target as HTMLElement;\r\n if (target.tagName !== 'INPUT') {\r\n event.preventDefault();\r\n }\r\n\r\n this._isClickedWithin.set(true);\r\n\r\n if (!this._searchBarFocused()) {\r\n this.focus();\r\n }\r\n\r\n if (this.searchable()) {\r\n this.open();\r\n } else {\r\n this.toggle();\r\n }\r\n }\r\n @HostListener('mouseup')\r\n onMouseup(): void {\r\n this._isClickedWithin.set(false);\r\n }\r\n //! dropdown state handlers\r\n toggle(): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n return;\r\n }\r\n this.open();\r\n }\r\n open(): void {\r\n if (this.disabled() || this.isOpen()) return;\r\n\r\n this.isOpen.set(true);\r\n if (this.autoHighlightFirst()) this.itemStorage.highlightFirstItem();\r\n\r\n this._createOverlay();\r\n this.focus();\r\n\r\n this.openEvent.emit();\r\n this.detectChanges();\r\n }\r\n close(): void {\r\n if (!this.isOpen()) return;\r\n\r\n this.isOpen.set(false);\r\n\r\n this._destroyOverlay();\r\n\r\n this._onTouched();\r\n this.closeEvent.emit();\r\n this._cd.markForCheck();\r\n }\r\n //! ChangeDetectorRef\r\n detectChanges(): void {\r\n if (!(this._cd as any).destroyed) {\r\n this._cd.detectChanges();\r\n }\r\n }\r\n //! search\r\n private _clearSearch(suppressSearchEvent = false): void {\r\n this._setSearch('', suppressSearchEvent);\r\n }\r\n private _setSearch(searchTerm: string, suppressSearchEvent = false): void {\r\n this.searchTerm.set(searchTerm);\r\n this.filter(searchTerm, suppressSearchEvent);\r\n }\r\n private _setSearchInputAttributes() {\r\n const input = this.searchInput()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n ...this.inputAttrs(),\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, attributes[key]);\r\n }\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'Enter': {\r\n this._onEnterPress(event);\r\n return;\r\n }\r\n case 'Space': {\r\n this._onSpacePress(event);\r\n return;\r\n }\r\n case 'ArrowDown': {\r\n this._onArrowDownPress(event);\r\n return;\r\n }\r\n case 'ArrowUp': {\r\n this._onArrowUpPress(event);\r\n return;\r\n }\r\n case 'Home': {\r\n this._onHomePress(event);\r\n return;\r\n }\r\n case 'End': {\r\n this._onEndPress(event);\r\n return;\r\n }\r\n case 'Backspace':\r\n case 'Delete': {\r\n this._onBackspaceOrDeletePress(event);\r\n return;\r\n }\r\n case 'KeyA': {\r\n if (event.ctrlKey) {\r\n this._onCtrlAPress();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n private async _onEnterPress(event: KeyboardEvent) {\r\n event.preventDefault();\r\n let shouldClose = true;\r\n\r\n //select the currently highlighted option\r\n if (this.isOpen() && this.firstHighlightedItem()) {\r\n if (this.clearable() && this.itemStorage.highlightedItems().every(item => item.selected)) {\r\n this.unselectItem(...this.itemStorage.highlightedItems());\r\n } else {\r\n this.selectItem(...this.itemStorage.highlightedItems());\r\n }\r\n }\r\n //add a custom option\r\n else if (this.isOpen() && this.shouldShowAddCustom()) {\r\n await this.addCustomOption(this.searchTerm());\r\n }\r\n //in case of no action, open the dropdown (or keep it open)\r\n else shouldClose = false;\r\n\r\n if (!this.keepOpen() && shouldClose) {\r\n this.itemStorage.clearAllHighlights();\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n private _onSpacePress(event: KeyboardEvent): void {\r\n if (this.isOpen()) return;\r\n\r\n event.preventDefault();\r\n this.open();\r\n }\r\n private _onArrowDownPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this.open();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightNextItem(+1, event.shiftKey);\r\n if (recentlyHighlighted) {\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n }\r\n\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('bottom');\r\n }\r\n private _onArrowUpPress(event: KeyboardEvent): void {\r\n if (!this.isOpen()) return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightNextItem(-1, event.shiftKey);\r\n if (recentlyHighlighted) {\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n }\r\n\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('top');\r\n }\r\n private _onHomePress(event: KeyboardEvent): void {\r\n if (\r\n !this.isOpen() ||\r\n (this.searchInput()?.nativeElement.selectionEnd !== 0 && this.searchInput()?.nativeElement.selectionStart !== 0)\r\n )\r\n return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightFirstItem();\r\n if (!recentlyHighlighted) return;\r\n\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('top');\r\n }\r\n private _onEndPress(event: KeyboardEvent): void {\r\n if (\r\n !this.isOpen() ||\r\n (this.searchInput()?.nativeElement.selectionEnd !== this.searchTerm().length &&\r\n this.searchInput()?.nativeElement.selectionStart !== this.searchTerm().length)\r\n )\r\n return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightLastItem();\r\n if (!recentlyHighlighted) return;\r\n\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('bottom');\r\n }\r\n private _onBackspaceOrDeletePress(event: KeyboardEvent): void {\r\n if (this.searchTerm() || !this.clearable() || this.noBackspaceClear() || !this.itemStorage.isAnyItemSelected()) return;\r\n\r\n event.preventDefault();\r\n if (this.multiselectable() && this.itemStorage.selectedItems().length > 1) {\r\n this._clearLastItem();\r\n return;\r\n }\r\n this._clearAllItems();\r\n }\r\n private _onCtrlAPress(): void {\r\n this.itemStorage.highlightAllItems();\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-select\"\r\n #dropdownHost\r\n (click)=\"handleAnywhereClick($event)\"\r\n [class.ard-has-value]=\"itemStorage.isAnyItemSelected()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-select-value-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n } @if (shouldDisplayValue()) { @for (item of itemStorage.selectedItems(); track item.index()) {\r\n <div\r\n class=\"ard-select-value\"\r\n [class.ard-value-disabled]=\"item.disabled()\"\r\n [attr.hidden]=\"!isValueWithinDisplayLimit($index)\"\r\n >\r\n <ng-template\r\n *ngIf=\"isValueWithinDisplayLimit($index)\"\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || (multiselectable() ? defaultMultiValueTemplate : defaultValueTemplate)\"\r\n [ngTemplateOutletContext]=\"getValueContext(item)\"\r\n />\r\n </div>\r\n }\r\n\r\n <ng-template\r\n #defaultValueTemplate\r\n let-item\r\n >\r\n <div\r\n [ardInnerHTML]=\"item.label()\"\r\n [ardEscapeInnerHTML]=\"isItemsInputUsed\"\r\n ></div>\r\n </ng-template>\r\n <ng-template\r\n #defaultMultiValueTemplate\r\n let-item\r\n let-unselect=\"unselect\"\r\n >\r\n <ard-deletable-chip\r\n (delete)=\"unselect(item)\"\r\n [variant]=\"variant()\"\r\n compact\r\n appearance=\"outlined-strong\"\r\n >\r\n <div\r\n [ardInnerHTML]=\"item.label()\"\r\n [ardEscapeInnerHTML]=\"isItemsInputUsed\"\r\n ></div>\r\n <!-- TODO check if can remove div -->\r\n </ard-deletable-chip>\r\n </ng-template>\r\n } @if (itemStorage.isAnyItemSelected() && shouldShowItemDisplayLimit()) {\r\n <div class=\"ard-overflow-indicator\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"itemDisplayLimitTemplate()?.template || defaultItemDisplayLimitTemplate\"\r\n [ngTemplateOutletContext]=\"getItemDisplayLimitContext()\"\r\n />\r\n\r\n <ng-template\r\n #defaultItemDisplayLimitTemplate\r\n let-count=\"overflowCount\"\r\n >\r\n <div>{{ count }} more...</div>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"ard-search-input\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n >\r\n <input\r\n #searchInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"searchInputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"isInputElementReadonly()\"\r\n [disabled]=\"disabled()\"\r\n [value]=\"searchTerm()\"\r\n aria-autocomplete=\"list\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"filter(searchInput.value)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onSearchInputFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onSearchInputBlur()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"ard-select-controls\">\r\n @if (isLoading()) {\r\n <ng-template #defaultLoadingSpinnerTemplate>\r\n <div class=\"ard-simple-spinner\"></div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate()?.template || defaultLoadingSpinnerTemplate\" />\r\n } @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"handleClearButtonClick($event)\"\r\n />\r\n }\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ard-dropdown-arrow-wrapper\"\r\n (click)=\"handleDropdownArrowClick($event)\"\r\n >\r\n <span class=\"ard-dropdown-arrow\"></span>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n </div>\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-select-dropdown-panel\"\r\n role=\"listbox\"\r\n aria-label=\"Options list\"\r\n [headerTemplate]=\"dropdownHeaderTemplate()?.template ?? null\"\r\n [footerTemplate]=\"dropdownFooterTemplate()?.template ?? null\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [filterValue]=\"searchTerm()\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"handleOutsideClick($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n (scroll)=\"scrollEvent.emit($event)\"\r\n (scrollToEnd)=\"scrollToEndEvent.emit($event)\"\r\n >\r\n @if (!shouldShowNoItemsFound()) { @for (group of itemStorage.groups(); track $index) {\r\n <div\r\n class=\"ard-optgroup\"\r\n role=\"group\"\r\n [class.ard-group-disabled]=\"group.disabled()\"\r\n [class.ard-group-selected]=\"group.selected()\"\r\n [class.ard-group-highlighted]=\"group.highlighted()\"\r\n (mouseover)=\"onGroupMouseover(group)\"\r\n (click)=\"onGroupClick(group)\"\r\n >\r\n @if (group.label() !== '' && group.label() !== undefined) {\r\n <ng-template\r\n #defaultOptgroupTemplate\r\n let-group\r\n >\r\n <span\r\n class=\"ard-optgroup-label\"\r\n [ardInnerHTML]=\"group.label()\"\r\n [ardEscapeInnerHTML]=\"isItemsInputUsed\"\r\n ></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optgroupTemplate()?.template || defaultOptgroupTemplate\"\r\n [ngTemplateOutletContext]=\"getGroupContext(group)\"\r\n />\r\n }\r\n\r\n <div class=\"ard-optgroup-children\">\r\n @for (option of group.children(); track option.index()) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-disabled]=\"option.disabled()\"\r\n [class.ard-option-selected]=\"option.selected()\"\r\n [class.ard-option-highlighted]=\"option.highlighted()\"\r\n [class.ard-option-highlighted-recent]=\"option.highlighted_recently()\"\r\n [attr.aria-selected]=\"option.selected()\"\r\n [attr.id]=\"htmlId() + '-' + option.index()\"\r\n (click)=\"onItemClick(option, $event)\"\r\n (mouseover)=\"onItemMouseOver($event)\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n >\r\n <div class=\"ard-option-label\">\r\n <ng-template\r\n #defaultOptionTemplate\r\n let-option\r\n >\r\n <span\r\n [ardInnerHTML]=\"option.label()\"\r\n [ardEscapeInnerHTML]=\"isItemsInputUsed\"\r\n ></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(option)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } } @if (shouldShowNoItemsFound()) {\r\n <ng-template #defaultNoItemsFoundTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ noItemsFoundText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"noItemsFoundTemplate()?.template || defaultNoItemsFoundTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n } @if (shouldShowAddCustom()) {\r\n <ng-template\r\n #defaultAddCustomTemplate\r\n let-searchTerm\r\n >\r\n <div\r\n class=\"ard-option ard-option-highlighted ard-add-custom\"\r\n (click)=\"addCustomOption(searchTerm)\"\r\n >\r\n <span class=\"ard-add-custom-label\">Add option</span>\r\n <span class=\"ard-add-custom-value\">\"{{ searchTerm }}\"</span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"addCustomTemplate()?.template || defaultAddCustomTemplate\"\r\n [ngTemplateOutletContext]=\"getCustomOptionContext()\"\r\n />\r\n } @if (isLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ loadingPlaceholderText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"loadingPlaceholderTemplate()?.template || defaultLoadingPlaceholderTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumFormFieldFrameComponent } from './form-field-frame.component';\nimport { ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective } from './form-field-frame.directives';\n\n@NgModule({\n declarations: [ArdiumFormFieldFrameComponent, ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumFormFieldFrameComponent, ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective],\n})\nexport class ArdiumFormFieldFrameModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ArdiumChipModule } from './../chip/chip.module';\n\nimport { ArdiumClickOutsideEventModule, ArdiumInnerHTMLModule } from '@ardium-ui/devkit';\nimport { ArdiumDropdownPanelModule } from '../dropdown-panel/dropdown-panel.module';\nimport { ArdiumSelectComponent } from './select.component';\nimport {\n ArdAddCustomTemplateDirective,\n ArdDropdownFooterTemplateDirective,\n ArdDropdownHeaderTemplateDirective,\n ArdItemDisplayLimitTemplateDirective,\n ArdItemLimitReachedTemplateDirective,\n ArdLoadingPlaceholderTemplateDirective,\n ArdLoadingSpinnerTemplateDirective,\n ArdNoItemsFoundTemplateDirective,\n ArdOptgroupTemplateDirective,\n ArdOptionTemplateDirective,\n ArdSelectPlaceholderTemplateDirective,\n ArdSelectPrefixTemplateDirective,\n ArdSelectSuffixTemplateDirective,\n ArdValueChipTemplateDirective,\n ArdValueTemplateDirective,\n} from './select.directive';\n\nimport { _ClearButtonModule } from './../_internal/clear-button/clear-button.module';\nimport { ArdiumFormFieldFrameModule } from '../form-field-frame/form-field-frame.module';\n\n@NgModule({\n declarations: [\n ArdiumSelectComponent,\n //tempalate directives\n ArdOptionTemplateDirective,\n ArdOptgroupTemplateDirective,\n ArdValueTemplateDirective,\n ArdSelectPlaceholderTemplateDirective,\n ArdLoadingSpinnerTemplateDirective,\n ArdLoadingPlaceholderTemplateDirective,\n ArdDropdownHeaderTemplateDirective,\n ArdDropdownFooterTemplateDirective,\n ArdNoItemsFoundTemplateDirective,\n ArdValueChipTemplateDirective,\n ArdItemLimitReachedTemplateDirective,\n ArdItemDisplayLimitTemplateDirective,\n ArdAddCustomTemplateDirective,\n ArdSelectPrefixTemplateDirective,\n ArdSelectSuffixTemplateDirective,\n ],\n imports: [\n CommonModule,\n ArdiumFormFieldFrameModule,\n ArdiumDropdownPanelModule,\n ArdiumChipModule,\n ArdiumClickOutsideEventModule,\n _ClearButtonModule,\n ArdiumInnerHTMLModule,\n ],\n exports: [\n ArdiumSelectComponent,\n //tempalate directives\n ArdOptionTemplateDirective,\n ArdOptgroupTemplateDirective,\n ArdValueTemplateDirective,\n ArdSelectPlaceholderTemplateDirective,\n ArdLoadingSpinnerTemplateDirective,\n ArdLoadingPlaceholderTemplateDirective,\n ArdDropdownHeaderTemplateDirective,\n ArdDropdownFooterTemplateDirective,\n ArdNoItemsFoundTemplateDirective,\n ArdValueChipTemplateDirective,\n ArdItemLimitReachedTemplateDirective,\n ArdItemDisplayLimitTemplateDirective,\n ArdAddCustomTemplateDirective,\n ArdSelectPrefixTemplateDirective,\n ArdSelectSuffixTemplateDirective,\n ],\n})\nexport class ArdiumSelectModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumOptionComponent } from './option.component';\n\n@NgModule({\n declarations: [ArdiumOptionComponent],\n imports: [CommonModule],\n exports: [ArdiumOptionComponent],\n})\nexport class ArdiumOptionModule {}\n","export type ArdTransformerFn = (\r\n currentText: string,\r\n previousText: string,\r\n caretPos: number\r\n) => { text: string; caretPos: number };\r\n\r\ninterface IRegExpTransformer {\r\n apply: ArdTransformerFn;\r\n}\r\nexport class RegExpTransformer implements IRegExpTransformer {\r\n constructor(\r\n public regex: RegExp,\r\n public replace = '',\r\n public caretModif = 0\r\n ) {}\r\n\r\n apply(currentText: string, previousText: string, caretPos: number): { text: string; caretPos: number } {\r\n let text = currentText;\r\n if (text && this.regex) {\r\n let safetySwitch = 0;\r\n while (text.match(this.regex)) {\r\n //prevent infinite loop\r\n if (safetySwitch > 999) {\r\n console.error(this, new Error('Possible infinite loop in the above RegExpTransformer. Exited after 1000 iterations.'));\r\n break;\r\n }\r\n //apply regex\r\n const lengthBefore = text.length;\r\n text = text.replace(this.regex, this.replace);\r\n const lengthAfter = text.length;\r\n //fix caret pos\r\n caretPos = caretPos + (lengthAfter - lengthBefore);\r\n //for infinite loop prevention\r\n safetySwitch++;\r\n }\r\n }\r\n return { text, caretPos };\r\n }\r\n}\r\n\r\nconst toUpper: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n return { text: currentText.toUpperCase(), caretPos };\r\n};\r\nconst toLower: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n return { text: currentText.toLowerCase(), caretPos };\r\n};\r\nconst int: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n const regexes: ([RegExp] | [RegExp, string] | [RegExp, string, number])[] = [[/[^0-9-]/], [/(.+)-/, '$1']];\r\n let obj = { text: currentText, caretPos };\r\n for (const arr of regexes) {\r\n const [regex, replace, caretModif] = arr;\r\n obj = new RegExpTransformer(regex, replace, caretModif).apply(obj.text, previousText, obj.caretPos);\r\n }\r\n return obj;\r\n};\r\nconst float: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n const regexes: ([RegExp] | [RegExp, string] | [RegExp, string, number])[] = [\r\n [/[^0-9,.-]/],\r\n [/,/, '.'],\r\n [/(.+)-/, '$1'],\r\n [/\\.(.*)\\./, '$1.'],\r\n [/^(-?)\\./, '$10.'],\r\n ];\r\n let obj = { text: currentText, caretPos };\r\n for (const arr of regexes) {\r\n const [regex, replace, caretModif] = arr;\r\n obj = new RegExpTransformer(regex, replace, caretModif).apply(obj.text, previousText, obj.caretPos);\r\n }\r\n return obj;\r\n};\r\nexport const ArdTransformer = {\r\n ToUpper: toUpper,\r\n ToLower: toLower,\r\n Integer: int,\r\n Float: float,\r\n} as const;\r\n","import { ElementRef, Signal, computed, signal } from '@angular/core';\r\nimport { isAnyString, isDefined, isNull, isNumber } from 'simple-bool';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdTransformer, RegExpTransformer } from './input-transformers';\r\n\r\nexport interface SimpleInputModelHost {\r\n readonly maxLength: Signal<Nullable<number>>;\r\n readonly textInputEl: Signal<ElementRef<HTMLInputElement> | undefined>;\r\n}\r\nexport class SimpleInputModel {\r\n constructor(protected readonly _ardHostCmp: SimpleInputModelHost) {}\r\n\r\n readonly value = signal<string | null>(null);\r\n readonly stringValue = computed<string>(() => this.value() ?? '');\r\n\r\n writeValue(v: any): boolean {\r\n if (!isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(\r\n `ARD-WA0020: Trying to set <ard-simple-input>'s value to \"${v}\" (of type ${typeof v}), expected string or null.`\r\n )\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n return this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | null): boolean {\r\n //constraints\r\n v = this._applyLengthTransformer(v);\r\n //update view\r\n const oldVal = this.value();\r\n this.value.set(v);\r\n this._updateInputElement();\r\n return oldVal !== v;\r\n }\r\n rewriteValueAfterHostUpdate(): void {\r\n this._writeValue(this.value());\r\n }\r\n clear(): void {\r\n this.value.set(null);\r\n this._updateInputElement();\r\n }\r\n\r\n _updateInputElement() {\r\n const el = this._ardHostCmp.textInputEl()?.nativeElement;\r\n if (!el) return;\r\n el.value = this.stringValue();\r\n }\r\n get caretPos(): number {\r\n return this._ardHostCmp.textInputEl()?.nativeElement.selectionEnd ?? this.stringValue.length;\r\n }\r\n set caretPos(pos: number) {\r\n this._ardHostCmp.textInputEl()?.nativeElement.setSelectionRange(pos, pos);\r\n }\r\n //! constraints\r\n protected _applyLengthTransformer(v: string | null): string | null {\r\n const max = this._ardHostCmp.maxLength();\r\n if (!isDefined(max)) return v;\r\n if (!v || v.length <= max) return v;\r\n\r\n v = v.substring(0, max);\r\n this.caretPos = max;\r\n return v;\r\n }\r\n}\r\nexport interface InputModelHost extends SimpleInputModelHost {\r\n charlist: Signal<RegExp | undefined>;\r\n}\r\nexport class InputModel extends SimpleInputModel {\r\n constructor(protected override readonly _ardHostCmp: InputModelHost) {\r\n super(_ardHostCmp);\r\n }\r\n protected override _writeValue(v: string | null): boolean {\r\n //transformers\r\n if (v) {\r\n let prev = this.stringValue();\r\n v = this._applyAllowOrDenylistTransformer(v, prev);\r\n prev = this.stringValue();\r\n v = this._applyLengthTransformer(v);\r\n }\r\n const oldVal = this.value();\r\n //update view\r\n this.value.set(v);\r\n this._updateInputElement();\r\n return oldVal !== v;\r\n }\r\n\r\n setSelection(from: number | null, to: number | null): void;\r\n setSelection(from: number | null, to?: number | null): void {\r\n to = to ?? this.value()?.length ?? Infinity;\r\n this._ardHostCmp.textInputEl()?.nativeElement.setSelectionRange(from, to);\r\n }\r\n //* constraints\r\n protected _applyAllowOrDenylistTransformer(v: string, prev: string): string {\r\n const charlist = this._ardHostCmp.charlist();\r\n if (!charlist || !v) return v;\r\n const { text, caretPos } = new RegExpTransformer(charlist).apply(v, prev, this.caretPos);\r\n this.caretPos = caretPos;\r\n return text;\r\n }\r\n}\r\n\r\nexport interface NumberInputModelHost {\r\n readonly max: Signal<number>;\r\n readonly min: Signal<number>;\r\n readonly allowFloat: Signal<boolean>;\r\n readonly inputEl: Signal<ElementRef<HTMLInputElement> | undefined>;\r\n}\r\nexport class NumberInputModel {\r\n constructor(protected readonly _ardHostCmp: NumberInputModelHost) {}\r\n\r\n //! value setters/getters\r\n protected readonly _value = signal<string | null>(null);\r\n readonly value = this._value.asReadonly();\r\n readonly stringValue = computed(() => this._value() ?? '');\r\n readonly numberValue = computed(() => (this._value() === null ? null : Number(this._value())));\r\n\r\n setValue(v: string | number | null): void {\r\n const stringV = isNumber(v) ? String(v) : v;\r\n this._value.set(stringV);\r\n this._updateInputEl();\r\n }\r\n\r\n private _updateInputEl(): void {\r\n const stringV = this.stringValue();\r\n const el = this._ardHostCmp.inputEl()?.nativeElement;\r\n if (!el) return;\r\n\r\n const caretPos = this.caretPos;\r\n el.value = stringV;\r\n this.caretPos = caretPos;\r\n }\r\n\r\n //! write value handlers\r\n writeValue(v: any): boolean {\r\n if (!isNumber(v) && !isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(`ARD-WA0070: Trying to set <ard-number-input>'s value to \"${typeof v}\", expected string, number, or null.`)\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n v = String(v);\r\n return this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | number | null): boolean {\r\n //constraints\r\n if (v) {\r\n v = this._removeDecimalPlaces(v);\r\n v = this._applyNumberConstraint(v);\r\n v = this._applyMinMaxConstraints(v);\r\n }\r\n //update view\r\n const oldVal = this._value();\r\n this.setValue(v);\r\n return oldVal !== v;\r\n }\r\n rewriteValueAfterHostUpdate(): void {\r\n this._writeValue(this._value());\r\n }\r\n\r\n //! input element methods\r\n get caretPos(): number {\r\n return this._ardHostCmp.inputEl()?.nativeElement.selectionEnd ?? this.stringValue().length;\r\n }\r\n set caretPos(pos: number) {\r\n const el = this._ardHostCmp.inputEl()?.nativeElement;\r\n el?.setSelectionRange(pos, pos);\r\n }\r\n\r\n //! constraints\r\n private _removeDecimalPlaces(v: string | number | null): string | number {\r\n if (!v) return '';\r\n if (this._ardHostCmp.allowFloat()) return v;\r\n\r\n let num = isNumber(v) ? v : Number(v);\r\n\r\n if (!isNumber(v) && v.match(/[.,].+/)) {\r\n num = Number(v);\r\n }\r\n if (!isNaN(num)) return Math.round(num);\r\n return v;\r\n }\r\n private _applyNumberConstraint(v: string | number): string {\r\n if (!v) return '';\r\n\r\n const transformerFn = this._ardHostCmp.allowFloat() ? ArdTransformer.Float : ArdTransformer.Integer;\r\n const { text, caretPos } = transformerFn(String(v), this.stringValue(), this.caretPos);\r\n this.caretPos = caretPos;\r\n return text;\r\n }\r\n private _applyMinMaxConstraints(v: string): string {\r\n if (!v) return '';\r\n\r\n const numericValue = Number(v);\r\n if (numericValue > this._ardHostCmp.max()) return this._ardHostCmp.max().toString();\r\n if (numericValue < this._ardHostCmp.min()) return this._ardHostCmp.min().toString();\r\n return v;\r\n }\r\n}\r\n\r\nexport function escapeAndCreateRegex(str: string, flags?: string, negated = true): RegExp {\r\n str = str.replace(/([\\]]+)/g, '\\\\$1');\r\n return new RegExp(`[${negated ? '^' : ''}${str}]`, flags);\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-simple-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdSimpleInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-simple-input > ng-template[ard-prefix-tmp]' })\nexport class ArdSimpleInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-simple-input > ng-template[ard-suffix-tmp]' })\nexport class ArdSimpleInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n ElementRef,\r\n forwardRef,\r\n input,\r\n Input,\r\n output,\r\n viewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { SimpleOneAxisAlignment } from './../../types/alignment.types';\r\nimport { SimpleInputModel, SimpleInputModelHost } from './../input-utils';\r\nimport {\r\n ArdSimpleInputPlaceholderTemplateDirective,\r\n ArdSimpleInputPrefixTemplateDirective,\r\n ArdSimpleInputSuffixTemplateDirective,\r\n} from './simple-input.directives';\r\n\r\n@Component({\r\n selector: 'ard-simple-input',\r\n templateUrl: './simple-input.component.html',\r\n styleUrls: ['./simple-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSimpleInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSimpleInputComponent\r\n extends _NgModelComponentBase\r\n implements SimpleInputModelHost, ControlValueAccessor, AfterViewInit\r\n{\r\n readonly DEFAULTS = {\r\n clearButtonTitle: 'Clear',\r\n };\r\n //! input view\r\n readonly textInputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n protected readonly inputModel = new SimpleInputModel(this);\r\n private _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._wasViewInit = true;\r\n this._setInputAttributes();\r\n //set the value\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n delete this._valueBeforeInit;\r\n }\r\n }\r\n\r\n readonly placeholder = input<string>('');\r\n readonly inputId = input<Nullable<string>>(undefined);\r\n readonly clearButtonTitle = input<string>(this.DEFAULTS.clearButtonTitle);\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplate = contentChild(ArdSimpleInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdSimpleInputSuffixTemplateDirective);\r\n\r\n //! placeholder\r\n readonly placeholderTemplate = contentChild(ArdSimpleInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed<boolean>(() => Boolean(this.placeholder()) && !this.inputModel.value());\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly alignText = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-text-align-${this.alignText()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.clearable() ? 'ard-clearable' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! number attribute setters/getters\r\n readonly maxLength = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n //! no-value attribute setters/getters\r\n readonly clearable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n this.inputModel.writeValue(v);\r\n }\r\n //! value two-way binding\r\n protected _valueBeforeInit?: string | null = null;\r\n @Input()\r\n set value(v: string | null) {\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.writeValue(v);\r\n }\r\n get value(): string | null {\r\n return this.inputModel.value();\r\n }\r\n readonly valueChange = output<string | null>();\r\n\r\n //! event emitters\r\n readonly inputEvent = output<string | null>({ alias: 'input' });\r\n readonly changeEvent = output<string | null>({ alias: 'change' });\r\n readonly clearEvent = output<MouseEvent>({ alias: 'clear' });\r\n\r\n //! event handlers\r\n onInput(newVal: string): void {\r\n const valueHasChanged = this.inputModel.writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitInput();\r\n }\r\n protected _emitInput(): void {\r\n this._onChangeRegistered?.(this.value);\r\n this.inputEvent.emit(this.value);\r\n this.valueChange.emit(this.value);\r\n }\r\n //focus, blur, change\r\n onFocusMaster(event: FocusEvent): void {\r\n this.onFocus(event);\r\n }\r\n onBlurMaster(event: FocusEvent): void {\r\n this.onBlur(event);\r\n }\r\n onChange(event: Event): void {\r\n event.stopPropagation();\r\n this._emitChange();\r\n }\r\n protected _emitChange(): void {\r\n this.changeEvent.emit(this.inputModel.value());\r\n }\r\n // clear button\r\n readonly shouldShowClearButton = computed<boolean>(\r\n () => this.clearable() && !this.disabled() && Boolean(this.inputModel.value())\r\n );\r\n onClearButtonClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.inputModel.clear();\r\n this._emitChange();\r\n this._emitInput();\r\n this.clearEvent.emit(event);\r\n this.focus();\r\n }\r\n\r\n //! copy event\r\n onCopy(event: ClipboardEvent): void {\r\n if (\r\n this.value &&\r\n //does the selection cover the entire input\r\n ((this.textInputEl()?.nativeElement.selectionStart === 0 &&\r\n this.textInputEl()?.nativeElement.selectionEnd === this.textInputEl()?.nativeElement.value.length) ||\r\n //or is zero-wide\r\n this.textInputEl()?.nativeElement.selectionStart === this.textInputEl()?.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', this.value);\r\n event.preventDefault();\r\n }\r\n }\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.textInputEl()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex()),\r\n ...this.inputAttrs(),\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-simple-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template\r\n #defaultPlaceholderTemplate\r\n >\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSimpleInputComponent } from './simple-input.component';\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\nimport {\n ArdSimpleInputPlaceholderTemplateDirective,\n ArdSimpleInputPrefixTemplateDirective,\n ArdSimpleInputSuffixTemplateDirective,\n} from './simple-input.directives';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\n\n@NgModule({\n declarations: [\n ArdiumSimpleInputComponent,\n ArdSimpleInputPlaceholderTemplateDirective,\n ArdSimpleInputPrefixTemplateDirective,\n ArdSimpleInputSuffixTemplateDirective,\n ],\n imports: [CommonModule, _ClearButtonModule, ArdiumFormFieldFrameModule],\n exports: [\n ArdiumSimpleInputComponent,\n ArdSimpleInputPlaceholderTemplateDirective,\n ArdSimpleInputPrefixTemplateDirective,\n ArdSimpleInputSuffixTemplateDirective,\n ],\n})\nexport class ArdiumSimpleInputModule {}\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { any, isDefined, isPrimitive } from 'simple-bool';\r\nimport { ArdSimplestStorageItem } from '../../types/item-storage.types';\r\nimport { Nullable } from '../../types/utility.types';\r\n\r\nexport interface SimplestItemStorageHostDefaults {\r\n valueFrom: string;\r\n labelFrom: string;\r\n}\r\nexport interface SimplestItemStorageHost {\r\n readonly valueFrom: Signal<Nullable<string>>;\r\n readonly labelFrom: Signal<Nullable<string>>;\r\n readonly DEFAULTS: SimplestItemStorageHostDefaults;\r\n}\r\n\r\nexport class SimplestItemStorage {\r\n private readonly _items = signal<ArdSimplestStorageItem[]>([]);\r\n private readonly _highlightedItem = signal<Nullable<ArdSimplestStorageItem>>(null);\r\n\r\n constructor(private readonly _ardParentComp: SimplestItemStorageHost) {}\r\n\r\n /**\r\n * Gets all items.\r\n */\r\n readonly items = this._items.asReadonly();\r\n /**\r\n * The currently highlighted item.\r\n */\r\n readonly highlightedItem = this._highlightedItem.asReadonly();\r\n /**\r\n * True if at least one item is highlighted, otherwise false.\r\n */\r\n readonly isAnyItemHighlighted = computed(() => isDefined(this._highlightedItem()));\r\n\r\n /**\r\n * Sets the component's items. Takes into account the values defined by the parent component for `suggValueFrom` and `suggLabelFrom`.\r\n * @param items An array of items to be set as the component's items.\r\n * @returns true if at least one of the items is of primitive type, otherwise false.\r\n */\r\n setItems(items: any[]): boolean {\r\n let areItemsPrimitive = false;\r\n if (any(items, isPrimitive)) {\r\n items = items.map(this._primitiveItemsMapFn);\r\n areItemsPrimitive = true;\r\n }\r\n\r\n this._items.set(\r\n items.map((item, index) => {\r\n return this._setItemsMapFn(item, index, areItemsPrimitive);\r\n })\r\n );\r\n\r\n return areItemsPrimitive;\r\n }\r\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\r\n return { value: item };\r\n }\r\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdSimplestStorageItem {\r\n if (areItemsPrimitive) {\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(rawItemData.value),\r\n label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n };\r\n }\r\n //get value\r\n const valuePath =\r\n this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom() ?? this._ardParentComp.DEFAULTS.valueFrom;\r\n const value = resolvePath(rawItemData, valuePath);\r\n\r\n //get label\r\n const labelPath =\r\n this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom() ?? this._ardParentComp.DEFAULTS.labelFrom;\r\n const label = resolvePath(rawItemData, labelPath) ?? value;\r\n\r\n //return\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(value),\r\n label: signal(label?.toString?.() ?? String(label)),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n };\r\n }\r\n\r\n /**\r\n * Selects the given item.\r\n * @param items The item to select.\r\n * @returns The value of the selected item.\r\n */\r\n selectItem(item: ArdSimplestStorageItem): any {\r\n return item.value;\r\n }\r\n selectCurrent(): any {\r\n const hi = this._highlightedItem();\r\n if (!hi) return undefined;\r\n return this.selectItem(hi);\r\n }\r\n\r\n /**\r\n * Unhighlights all currently highlighted items.\r\n */\r\n unhighlightCurrent(): void {\r\n const hi = this._highlightedItem();\r\n if (hi) {\r\n hi.highlighted.set(false);\r\n }\r\n this._highlightedItem.set(null);\r\n }\r\n /**\r\n * Highlights a given item.\r\n * @param item The item to be highlighted.\r\n */\r\n highlightItem(item: ArdSimplestStorageItem): void {\r\n this.unhighlightCurrent();\r\n\r\n item.highlighted.set(true);\r\n\r\n this._highlightedItem.set(item);\r\n }\r\n /**\r\n * Unhighlights a given item.\r\n * @param item The item to be unhighlighted.\r\n */\r\n unhighlightItem(item: ArdSimplestStorageItem): void {\r\n item.highlighted.set(false);\r\n\r\n if (this._highlightedItem()?.index() === item.index()) this._highlightedItem.set(null);\r\n }\r\n /**\r\n * Highlights the first item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightFirstItem(): ArdSimplestStorageItem | null {\r\n if (!this._items().length) return null;\r\n\r\n this.unhighlightCurrent();\r\n\r\n const itemToHighlight = this._items().first();\r\n this.highlightItem(itemToHighlight);\r\n\r\n return itemToHighlight;\r\n }\r\n /**\r\n * Highlights the last item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightLastItem(): ArdSimplestStorageItem | null {\r\n if (!this._items().length) return null;\r\n\r\n this.unhighlightCurrent();\r\n\r\n const itemToHighlight = this._items().last();\r\n this.highlightItem(itemToHighlight);\r\n\r\n return itemToHighlight;\r\n }\r\n /**\r\n * Highlights the next non-disabled item defined by the offset amount.\r\n * @param offset The amount of items to offset the highlight by.\r\n * @returns The item highlighted.\r\n */\r\n highlightNextItem(offset: number): ArdSimplestStorageItem | null {\r\n const currentItem = this._highlightedItem();\r\n if (!currentItem) {\r\n return this.highlightFirstItem();\r\n }\r\n const items = this._items();\r\n const currentIndexInItems = items.findIndex(item => item.index() === currentItem.index());\r\n\r\n let nextItemIndex = currentIndexInItems + offset;\r\n if (nextItemIndex >= items.length) {\r\n nextItemIndex -= items.length;\r\n } else if (nextItemIndex < 0) {\r\n nextItemIndex += items.length;\r\n }\r\n const itemToHighlight = items[nextItemIndex];\r\n\r\n this.highlightItem(itemToHighlight);\r\n\r\n return itemToHighlight;\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { ArdSimplestStorageItem, OptionContext } from '../../types/item-storage.types';\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-suggestion-tmp]' })\r\nexport class ArdSuggestionTemplateDirective {\r\n constructor(public template: TemplateRef<OptionContext<ArdSimplestStorageItem>>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-placeholder-tmp]' })\r\nexport class ArdInputPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-loading-tmp]' })\r\nexport class ArdInputLoadingTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-prefix-tmp]' })\r\nexport class ArdInputPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-suffix-tmp]' })\r\nexport class ArdInputSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n","import { ConnectedPosition, Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n TemplateRef,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n input,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceArrayProperty, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { isString } from 'simple-bool';\r\nimport { SimplestItemStorage, SimplestItemStorageHost } from '../../_internal/item-storages/simplest-item-storage';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant } from '../../dropdown-panel/dropdown-panel.types';\r\nimport { ArdSimplestStorageItem } from '../../types/item-storage.types';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { ArdiumSimpleInputComponent } from '../simple-input/simple-input.component';\r\nimport { OptionContext } from './../../types/item-storage.types';\r\nimport { InputModel, InputModelHost, escapeAndCreateRegex } from './../input-utils';\r\nimport {\r\n ArdInputLoadingTemplateDirective,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ArdSuggestionTemplateDirective,\r\n} from './input.directives';\r\n\r\n@Component({\r\n selector: 'ard-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumInputComponent\r\n extends ArdiumSimpleInputComponent\r\n implements InputModelHost, SimplestItemStorageHost, AfterViewInit\r\n{\r\n private readonly element!: HTMLElement;\r\n\r\n constructor(\r\n private viewContainerRef: ViewContainerRef,\r\n private overlay: Overlay,\r\n private scrollStrategyOpts: ScrollStrategyOptions\r\n ) {\r\n super();\r\n\r\n this.element = viewContainerRef.element.nativeElement;\r\n }\r\n\r\n override readonly DEFAULTS = {\r\n clearButtonTitle: 'Clear',\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n suggestionsLoadingText: 'Loading...',\r\n };\r\n //! input view\r\n protected override readonly inputModel = new InputModel(this);\r\n\r\n //! allowlist/denylist of characters\r\n //use standard string for denylist, prepend with ^ for allowlist\r\n readonly charlistFromInput = input<RegExp | undefined, string>(undefined, {\r\n alias: 'charlist',\r\n transform: v => {\r\n if (!isString(v)) {\r\n throw new Error('ARD-FT0033: [charlist] must be a non-empty string, got \"\".');\r\n }\r\n const negated = v.startsWith('^');\r\n return escapeAndCreateRegex(v, '', !negated);\r\n },\r\n });\r\n readonly charlistCaseInsensitive = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly charlist = computed<RegExp | undefined>(() => {\r\n const c = this.charlistFromInput();\r\n if (!this.charlistCaseInsensitive() || !c) {\r\n return c;\r\n }\r\n return new RegExp(c.source, 'i');\r\n });\r\n\r\n //! autocomplete\r\n readonly autocomplete = input<Nullable<string>>(undefined);\r\n\r\n readonly shouldDisplayAutocomplete = computed<boolean>(() => !this.disabled() && Boolean(this.autocomplete()));\r\n\r\n //autocomplete event\r\n readonly acceptAutocompleteEvent = output({ alias: 'acceptAutocomplete' });\r\n\r\n //! prefix & suffix\r\n override readonly prefixTemplate = contentChild(ArdInputPrefixTemplateDirective);\r\n override readonly suffixTemplate = contentChild(ArdInputSuffixTemplateDirective);\r\n\r\n //! placeholder\r\n override readonly placeholderTemplate = contentChild(ArdInputPlaceholderTemplateDirective);\r\n\r\n //! suggestions\r\n readonly suggestionStorage = new SimplestItemStorage(this);\r\n\r\n readonly valueFrom = input<Nullable<string>>(undefined, { alias: 'suggValueFrom' });\r\n readonly labelFrom = input<Nullable<string>>(undefined, { alias: 'suggLabelFrom' });\r\n\r\n readonly acceptSuggestionEvent = output<any>({ alias: 'acceptSuggestion' });\r\n\r\n readonly suggestionItems = this.suggestionStorage.items;\r\n\r\n @Input()\r\n set suggestions(value: any) {\r\n if (!Array.isArray(value)) value = coerceArrayProperty(value);\r\n\r\n const shouldPrintErrors = this.suggestionStorage.setItems(value);\r\n\r\n this._suggestionDropdowOpen.set(true);\r\n this.suggestionStorage.highlightFirstItem();\r\n\r\n if (shouldPrintErrors) {\r\n this._printPrimitiveWarnings();\r\n }\r\n }\r\n\r\n private _printPrimitiveWarnings() {\r\n function makeWarning(str: string): void {\r\n console.warn(\r\n `ARD-WA0031: Skipped using [${str}] property bound to <ard-input>, as some provided suggestion items are of primitive type`\r\n );\r\n }\r\n if (this.valueFrom()) {\r\n makeWarning('valueFrom');\r\n }\r\n if (this.labelFrom()) {\r\n makeWarning('labelFrom');\r\n }\r\n }\r\n\r\n private readonly _suggestionDropdowOpen = signal<boolean>(false);\r\n\r\n readonly shouldDisplaySuggestions = computed(\r\n () => !this.disabled() && (this.suggestionItems().length > 0 || this.areSuggestionsLoading()) && this._suggestionDropdowOpen()\r\n );\r\n\r\n readonly areSuggestionsLoading = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly suggestionsLoadingText = input<string>(this.DEFAULTS.suggestionsLoadingText);\r\n\r\n readonly suggestionTemplate = contentChild(ArdSuggestionTemplateDirective);\r\n readonly suggestionLoadingTemplate = contentChild(ArdInputLoadingTemplateDirective);\r\n\r\n //! suggestions overlay\r\n readonly dropdownHost = viewChild<ElementRef<HTMLDivElement>>('suggestionsHost');\r\n readonly dropdownTemplate = viewChild('suggestionsTemplate', { read: TemplateRef });\r\n\r\n private dropdownOverlay!: OverlayRef;\r\n\r\n override ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n const strategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.dropdownHost()!)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n } as ConnectedPosition,\r\n ])\r\n .withPush(false);\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n scrollStrategy: this.scrollStrategyOpts.block(),\r\n hasBackdrop: false,\r\n });\r\n\r\n this.dropdownOverlay = this.overlay.create(config);\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate()!, this.viewContainerRef);\r\n this.dropdownOverlay.attach(portal);\r\n\r\n this.setOverlaySize();\r\n }\r\n\r\n setOverlaySize(): void {\r\n const rect = this.dropdownHost()?.nativeElement.getBoundingClientRect();\r\n this.dropdownOverlay.updateSize({ width: rect?.width });\r\n }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n this.setOverlaySize();\r\n }\r\n\r\n getOptionContext(item: ArdSimplestStorageItem): OptionContext<ArdSimplestStorageItem> {\r\n return {\r\n $implicit: item,\r\n item,\r\n itemData: item.itemData,\r\n };\r\n }\r\n\r\n //! suggestion-highligh-related\r\n private _isMouseBeingUsed = false;\r\n @HostListener('mousemove')\r\n onMouseMove() {\r\n this._isMouseBeingUsed = true;\r\n }\r\n onSuggestionMouseEnter(item: ArdSimplestStorageItem, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed) return;\r\n this.suggestionStorage.highlightItem(item);\r\n\r\n event.stopPropagation();\r\n }\r\n onSuggestionMouseLeave(item: ArdSimplestStorageItem, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed) return;\r\n this.suggestionStorage.unhighlightItem(item);\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n //! suggestion selection\r\n selectSuggestion(item: ArdSimplestStorageItem, event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this._selectSuggestion(item);\r\n }\r\n private _selectSuggestion(item: ArdSimplestStorageItem): void {\r\n const selected = this.suggestionStorage.selectItem(item);\r\n this.writeValue(selected ?? '');\r\n\r\n this.acceptSuggestionEvent.emit(selected);\r\n\r\n //important to do those two things in this exact order\r\n this.focus();\r\n this._suggestionDropdowOpen.set(false);\r\n }\r\n handleSuggestionClickOutside(event: MouseEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n\r\n const target = event.target as HTMLElement;\r\n if (this.element.contains(target)) return;\r\n\r\n this._suggestionDropdowOpen.set(false);\r\n }\r\n //! suggestion appearance\r\n readonly dropdownAppearance = input<Nullable<DropdownPanelAppearance>>(undefined);\r\n readonly dropdownAppearanceOrDefault = computed(() => {\r\n if (this.dropdownAppearance()) return this.dropdownAppearance()!;\r\n if (this.appearance() === FormElementAppearance.Outlined) return DropdownPanelAppearance.Outlined;\r\n return DropdownPanelAppearance.Raised;\r\n });\r\n readonly dropdownVariant = input<Nullable<DropdownPanelVariant>>(undefined);\r\n readonly dropdownVariantOrDefault = computed(() => {\r\n if (this.dropdownVariant()) return this.dropdownVariant()!;\r\n const variant = this.variant();\r\n if (variant === FormElementVariant.Pill) return DropdownPanelVariant.Rounded;\r\n return variant;\r\n });\r\n\r\n //! focus override\r\n override onFocus(event: FocusEvent): void {\r\n this._suggestionDropdowOpen.set(true);\r\n if (!this.suggestionStorage.highlightedItem()) this.suggestionStorage.highlightFirstItem();\r\n\r\n super.onFocus(event);\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'Enter': {\r\n this._onTabOrEnterPress(event);\r\n this._onEnterPress(event);\r\n return;\r\n }\r\n case 'Tab': {\r\n this._onTabOrEnterPress(event);\r\n return;\r\n }\r\n case 'ArrowDown': {\r\n this._onArrowDownPress(event);\r\n return;\r\n }\r\n case 'ArrowUp': {\r\n this._onArrowUpPress(event);\r\n return;\r\n }\r\n }\r\n }\r\n protected _onTabOrEnterPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplayAutocomplete()) return;\r\n event.preventDefault();\r\n\r\n this.onInput(this.autocomplete() ?? '');\r\n this.acceptAutocompleteEvent.emit();\r\n }\r\n private _onEnterPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n const item = this.suggestionStorage.highlightedItem();\r\n if (!item) return;\r\n\r\n event.preventDefault();\r\n this._selectSuggestion(item);\r\n }\r\n private _onArrowDownPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed = false;\r\n\r\n this.suggestionStorage.highlightNextItem(+1);\r\n }\r\n private _onArrowUpPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed = false;\r\n\r\n this.suggestionStorage.highlightNextItem(-1);\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-input\"\r\n #suggestionsHost\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayAutocomplete()) {\r\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\r\n }\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template\r\n #defaultPlaceholderTemplate\r\n >\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\r\n role=\"listbox\"\r\n [compact]=\"compact\"\r\n aria-label=\"Suggestions\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"shouldDisplaySuggestions()\"\r\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n >\r\n @for (item of suggestionItems(); track item.index()) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-selected]=\"item.selected()\"\r\n [class.ard-option-highlighted]=\"item.highlighted()\"\r\n [attr.aria-selected]=\"item.selected()\"\r\n (click)=\"selectSuggestion(item, $event)\"\r\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\r\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\r\n >\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ item.label() }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"suggestionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(item)\"\r\n ></ng-template>\r\n </span>\r\n </div>\r\n }\r\n @if (areSuggestionsLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ suggestionsLoadingText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate()?.template || defaultLoadingPlaceholderTemplate\"></ng-template>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumClickOutsideEventModule } from '@ardium-ui/devkit';\r\nimport { ArdiumDropdownPanelModule } from '../../dropdown-panel/dropdown-panel.module';\r\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\r\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\r\nimport { ArdiumInputComponent } from './input.component';\r\nimport {\r\n ArdInputLoadingTemplateDirective,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ArdSuggestionTemplateDirective,\r\n} from './input.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumInputComponent,\r\n ArdSuggestionTemplateDirective,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputLoadingTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ArdiumFormFieldFrameModule,\r\n _ClearButtonModule,\r\n ArdiumDropdownPanelModule,\r\n ArdiumClickOutsideEventModule,\r\n ],\r\n exports: [\r\n ArdiumInputComponent,\r\n ArdSuggestionTemplateDirective,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputLoadingTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumInputModule {}\r\n","export const DigitInputShape = {\r\n Square: 'square',\r\n Rectangle: 'rectangle',\r\n} as const;\r\nexport type DigitInputShape = (typeof DigitInputShape)[keyof typeof DigitInputShape];\r\n\r\nexport const TransformType = {\r\n Uppercase: 'uppercase',\r\n Lowercase: 'lowercase',\r\n} as const;\r\nexport type TransformType = (typeof TransformType)[keyof typeof TransformType];\r\n\r\nexport const DigitInputPrimitiveOption = {\r\n Number: 'number',\r\n Letter: 'letter',\r\n Alphanumeric: 'alphanumeric',\r\n Special: 'special',\r\n} as const;\r\nexport type DigitInputPrimitiveOption = (typeof DigitInputPrimitiveOption)[keyof typeof DigitInputPrimitiveOption];\r\n\r\nexport interface DigitInputAcceptObject {\r\n accept: string | RegExp | ((char: string, charsBefore: string) => boolean);\r\n transform?: TransformType | null;\r\n readonly?: boolean;\r\n}\r\nexport interface DigitInputStaticObject {\r\n static: string;\r\n}\r\n\r\nexport type DigitInputOption = DigitInputAcceptObject | DigitInputStaticObject;\r\n\r\nexport type DigitInputConfig = (DigitInputPrimitiveOption | DigitInputOption)[] | string | number;\r\n","import { ElementRef, Signal } from '@angular/core';\r\n\r\nexport interface DigitInputConfigData {\r\n type: DigitInputConfigDataType;\r\n char?: string;\r\n index?: number;\r\n readonly?: boolean;\r\n}\r\nexport interface DigitInputModelHost {\r\n readonly inputs: Signal<readonly ElementRef<HTMLInputElement>[]>;\r\n}\r\n\r\nexport const DigitInputConfigDataType = {\r\n Input: 'input',\r\n Static: 'static',\r\n} as const;\r\nexport type DigitInputConfigDataType = (typeof DigitInputConfigDataType)[keyof typeof DigitInputConfigDataType];\r\n\r\nexport function _sanitizeRegExpString(str: string): string {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\n","import { computed, effect, signal } from '@angular/core';\r\nimport { coerceArrayProperty } from '@ardium-ui/devkit';\r\nimport { isAnyString, isArray, isFunction, isNull, isNumber, isRegExp } from 'simple-bool';\r\nimport {\r\n DigitInputAcceptObject,\r\n DigitInputConfig,\r\n DigitInputOption,\r\n DigitInputPrimitiveOption,\r\n TransformType,\r\n} from './digit-input.types';\r\nimport { DigitInputConfigData, DigitInputConfigDataType, DigitInputModelHost, _sanitizeRegExpString } from './digit-input.utils';\r\n\r\nexport class DigitInputModel {\r\n constructor(private _ardHost: DigitInputModelHost) {\r\n //set the value array to be the same length\r\n effect(\r\n () => {\r\n const length = this.configArrayData().length;\r\n\r\n this.value.update(arr => {\r\n if (!arr) return new Array(length).fill(null);\r\n if (arr.length >= length) return arr.slice(0, length);\r\n return [...arr, ...new Array(length - arr.length).fill(null)];\r\n });\r\n },\r\n { allowSignalWrites: true }\r\n );\r\n }\r\n\r\n private readonly _configArray = signal<DigitInputOption[]>([]);\r\n\r\n readonly configArrayData = computed<DigitInputConfigData[]>(() => {\r\n let inputIndex = 0;\r\n return this._configArray().map(v => {\r\n if ('static' in v) {\r\n return {\r\n type: DigitInputConfigDataType.Static,\r\n char: v.static,\r\n };\r\n }\r\n return {\r\n type: DigitInputConfigDataType.Input,\r\n index: inputIndex++,\r\n };\r\n });\r\n });\r\n\r\n private readonly _configArrayNoStatics = computed<DigitInputAcceptObject[]>(\r\n () => this._configArray().filter(v => !('static' in v)) as DigitInputAcceptObject[]\r\n );\r\n\r\n readonly isConfigDefined = computed((): boolean => this._configArray().length > 0);\r\n\r\n readonly value = signal<(string | null)[] | null>(null);\r\n\r\n readonly stringValue = computed(\r\n (): string =>\r\n this.value()\r\n ?.map(v => v ?? ' ')\r\n .join('')\r\n .trimEnd() ?? ''\r\n );\r\n\r\n readonly isValueFull = computed((): boolean => this.value()?.filter(v => v).length === this._configArrayNoStatics().length);\r\n\r\n isDefinedAtIndex(index: number): boolean {\r\n return !!this.value()?.[index];\r\n }\r\n\r\n writeValue(v: any): boolean {\r\n if (!isArray(v) && !isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string value\r\n console.warn(\r\n new Error(\r\n `ARD-WA0020: Trying to set <ard-digit-input>'s value to \"${v}\" (of type ${typeof v}), expected string or array of strings.`\r\n )\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n const vArray = coerceArrayProperty(v);\r\n const problemIndex = vArray.findIndex(el => !isAnyString(el) || el.length > 1);\r\n if (problemIndex !== -1) {\r\n throw new Error(\r\n `ARD-FT0042: Array passed to <ard-digit-input>'s value must only contain strings of length 1 or 0. Element \"${vArray[problemIndex]}\" at index ${problemIndex} does not match those requirements.`\r\n );\r\n }\r\n return this._writeValue(vArray);\r\n }\r\n private _writeValue(v: string[] | null): boolean {\r\n const oldVal = this.value();\r\n this.value.set(v && v.map(el => el || null));\r\n this.validateValueAndUpdate();\r\n this._updateInputElements();\r\n return oldVal !== v;\r\n }\r\n\r\n private _updateInputElements() {\r\n const value = this.value ?? [];\r\n let i = 0;\r\n for (const inputEl of this._ardHost.inputs()) {\r\n inputEl.nativeElement.value = value()?.[i] ?? '';\r\n i++;\r\n }\r\n }\r\n\r\n //! setting config\r\n setConfig(config: DigitInputConfig): void {\r\n this._setConfig(config);\r\n this.validateValueAndUpdate();\r\n }\r\n private _setConfig(config: DigitInputConfig): void {\r\n //map a number to ready objects\r\n let configAsNumber = isAnyString(config) ? Number(config) : null;\r\n if (isNumber(config) || isNumber(configAsNumber)) {\r\n configAsNumber = isNumber(config) ? config : configAsNumber!;\r\n this._configArray.set(new Array(configAsNumber).fill({ accept: (str: string) => /[0-9]/.test(str) }));\r\n return;\r\n }\r\n //map a string to an array\r\n let configArr: string[] | Exclude<DigitInputConfig, number | string>;\r\n if (isAnyString(config)) {\r\n configArr = coerceArrayProperty(config);\r\n } else {\r\n configArr = config;\r\n }\r\n //map array to ready objects\r\n this._configArray.set(\r\n configArr.map((v, i) => {\r\n if (!isAnyString(v)) {\r\n if ('accept' in v && !isFunction(v.accept)) {\r\n const regExp = isRegExp(v.accept) ? v.accept : new RegExp(`[${_sanitizeRegExpString(v.accept)}]`);\r\n v.accept = str => regExp.test(str);\r\n }\r\n return v;\r\n }\r\n\r\n switch (v) {\r\n case DigitInputPrimitiveOption.Number:\r\n return { accept: str => /[0-9]/.test(str) };\r\n case DigitInputPrimitiveOption.Letter:\r\n return { accept: str => /[a-zA-Z]/.test(str) };\r\n case DigitInputPrimitiveOption.Alphanumeric:\r\n return { accept: str => /[0-9a-zA-Z]/.test(str) };\r\n case DigitInputPrimitiveOption.Special:\r\n return { accept: str => /[!@#$%^&*-_=+/\\\\.,]/.test(str) };\r\n\r\n default:\r\n if (configArr.length === 1) {\r\n throw new Error(`ARD-NF0043S: <ard-digit-input>'s config is invalid. Expected number or array, got \"${v}\"`);\r\n }\r\n throw new Error(`ARD-NF0043B: Found invalid string \"${v}\" in <ard-digit-input>'s config at index ${i}`);\r\n }\r\n })\r\n );\r\n }\r\n\r\n //! validate against the config\r\n validateInputAndSetValue(input: string, index: number): false | [boolean, string | null] {\r\n if (index < 0 || index > this._configArrayNoStatics().length) return false;\r\n\r\n let v = this.value();\r\n //prepare the value array if does not exist\r\n if (!v) {\r\n this.value.set([]);\r\n }\r\n v = [];\r\n //prepare the characters before the current one (to be used in validation)\r\n const before = this.stringValue().charAt(index);\r\n\r\n //remove the old character from the input element\r\n if (before && input.length > 1 && input.match(before)) {\r\n input = input.replace(before, '');\r\n }\r\n //use only the first or last character (error safety)\r\n const firstChar = input.charAt(0);\r\n const lastChar = input.charAt(input.length - 1);\r\n input = firstChar === before ? lastChar : firstChar;\r\n\r\n //validate and transform, if necessary\r\n const inputChar = this._validateSingleChar(input, before, this._configArrayNoStatics()[index]);\r\n\r\n //get the corresponding HTML input element\r\n const inputEl = this._ardHost.inputs()[index];\r\n if (!inputEl) {\r\n throw new Error(\r\n \"ARD-IS0048: <ard-digit-input>'s value changed, but its corresponding input element could not be found. This is error is fatal to the functioning of Ardium UI. Please report this issue to the creators.\"\r\n );\r\n }\r\n //update the input element and value array\r\n const newVal = inputChar ?? before;\r\n inputEl.nativeElement.value = newVal ?? '';\r\n\r\n this.value.update(arr => {\r\n if (!arr) arr = [];\r\n const newArr = [...arr];\r\n newArr[index] = newVal || null;\r\n return newArr;\r\n });\r\n //return changes marker and validated value\r\n return [newVal !== before, inputChar];\r\n }\r\n validateValueAndUpdate(): void {\r\n const v = this.value();\r\n if (!v) return;\r\n\r\n let before = '';\r\n const newValue: (string | null)[] = [];\r\n for (let i = 0; i < Math.min(this._configArrayNoStatics().length, v.length); i++) {\r\n const char = v[i];\r\n before += char ?? ' ';\r\n\r\n if (!char) {\r\n newValue.push(char);\r\n continue;\r\n }\r\n const config = this._configArrayNoStatics()[i];\r\n\r\n const newChar = this._validateSingleChar(char, before, config);\r\n newValue.push(newChar);\r\n }\r\n this.value.set(newValue);\r\n }\r\n private _validateSingleChar(char: string | null, before: string, config: DigitInputAcceptObject): string | null {\r\n if (config.readonly) {\r\n throw new Error(\r\n `ARD-IS0049R: trying to set value of a <ard-digit-input>'s readonly field. This is error is fatal to the functioning of Ardium UI. Please report this issue to the creators.`\r\n );\r\n }\r\n if (!isFunction(config.accept)) {\r\n const regExp = isRegExp(config.accept) ? config.accept : new RegExp(`[${_sanitizeRegExpString(config.accept)}]`);\r\n config.accept = str => regExp.test(str);\r\n }\r\n if (!char) return char;\r\n\r\n const canAccept = config.accept(char, before);\r\n if (!canAccept) return null;\r\n\r\n if (config.transform) {\r\n if (config.transform === TransformType.Lowercase) {\r\n return char.toLowerCase();\r\n }\r\n if (config.transform === TransformType.Uppercase) {\r\n return char.toUpperCase();\r\n }\r\n console.warn(\r\n `ARD-IS0049T: <ard-digit-input>'s value validator encountered an unexpected value of the config's \"transform\" property. Ardium UI was able to handle this issue, but please report it to the creators.`\r\n );\r\n }\r\n return char;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n forwardRef,\r\n input,\r\n output,\r\n viewChildren,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { DigitInputModel } from './digit-input.model';\r\nimport { DigitInputConfig, DigitInputShape } from './digit-input.types';\r\nimport { DigitInputModelHost } from './digit-input.utils';\r\n\r\n@Component({\r\n selector: 'ard-digit-input',\r\n templateUrl: './digit-input.component.html',\r\n styleUrls: ['./digit-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumDigitInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumDigitInputComponent extends _NgModelComponentBase implements ControlValueAccessor, DigitInputModelHost {\r\n //! inputs ref\r\n readonly inputs = viewChildren<ElementRef<HTMLInputElement>>('input');\r\n\r\n //! data model\r\n private readonly model = new DigitInputModel(this);\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly shape = input<DigitInputShape>(DigitInputShape.Square);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-shape-${this.shape()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! model access points\r\n readonly config = input.required<void, DigitInputConfig>({\r\n transform: v => this.model.setConfig(v),\r\n });\r\n readonly configArrayData = this.model.configArrayData;\r\n\r\n private _oldConfigArrayDataLength = -1;\r\n readonly configArrayDataEffect = effect(() => {\r\n if (this.configArrayData().length === this._oldConfigArrayDataLength) return;\r\n\r\n this._oldConfigArrayDataLength = this.configArrayData().length;\r\n this._emitChange();\r\n });\r\n\r\n isInputEmpty(index: number): boolean {\r\n return !this.model.isDefinedAtIndex(index);\r\n }\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any): void {\r\n this._writeValue(v);\r\n }\r\n private _writeValue(v: any): boolean {\r\n return this.model.writeValue(v);\r\n }\r\n\r\n //! value two-way binding\r\n readonly outputAsString = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n @Input()\r\n set value(v: string | (string | null)[] | null) {\r\n this.writeValue(v);\r\n }\r\n readonly valueChange = output<string | (string | null)[] | null>();\r\n\r\n readonly stringValue = this.model.stringValue;\r\n\r\n readonly emittableValue = computed((): string | (string | null)[] | null => {\r\n if (this.outputAsString()) return this.model.stringValue();\r\n return this.model.value();\r\n });\r\n\r\n //! event emitters\r\n readonly finishedValue = output<string | (string | null)[] | null>();\r\n\r\n readonly focusIndexEvent = output<number>({ alias: 'focusIndex' });\r\n readonly blurIndexEvent = output<number>({ alias: 'blurIndex' });\r\n\r\n //! event handlers\r\n onPaste(event: ClipboardEvent, index: number): void {\r\n const value = event.clipboardData?.getData('text');\r\n event.stopPropagation();\r\n event.preventDefault();\r\n if (!value) return;\r\n\r\n const maxLength = this.inputs().length - index;\r\n value\r\n .slice(0, maxLength)\r\n .split('')\r\n .forEach((char, i) => {\r\n this.model.validateInputAndSetValue(char, index + i);\r\n });\r\n this.focusByIndex(index - 1 + Math.min(value.length, maxLength));\r\n }\r\n onInput(event: Event, index: number): void {\r\n this._updateSingleInputValue((event.target as HTMLInputElement).value, index);\r\n this.focusByIndex(index + 1);\r\n }\r\n private _updateSingleInputValue(value: string, index: number): void {\r\n const valueChanged = this.model.validateInputAndSetValue(value, index);\r\n if (!valueChanged || !valueChanged[0]) return;\r\n\r\n this._emitChange();\r\n\r\n if (this.model.isValueFull()) {\r\n this.blur();\r\n }\r\n }\r\n focusByIndex(index: number): boolean;\r\n focusByIndex(index: number, tryFocusingNext: boolean, direction: 1 | -1): boolean;\r\n focusByIndex(index: number, tryFocusingNext?: boolean, direction?: 1 | -1): boolean {\r\n if (index < 0 || index >= this.inputs().length) return false;\r\n const nextEl = this.inputs()[index]?.nativeElement;\r\n if (!nextEl) return false;\r\n\r\n nextEl.focus();\r\n if (tryFocusingNext && direction && document.activeElement !== nextEl) {\r\n return this.focusByIndex(index + direction);\r\n }\r\n return document.activeElement === nextEl;\r\n }\r\n //focus, blur, change\r\n onFocusMaster(event: FocusEvent, index: number): void {\r\n this.focusIndexEvent.emit(index);\r\n this.onFocus(event);\r\n }\r\n onBlurMaster(event: FocusEvent, index: number): void {\r\n this.blurIndexEvent.emit(index);\r\n this.onBlur(event);\r\n }\r\n protected _emitChange(): void {\r\n const v = this.emittableValue();\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n if (this.model.isValueFull()) {\r\n this.finishedValue.emit(v);\r\n }\r\n }\r\n onKeydown(event: KeyboardEvent, index: number): void {\r\n switch (event.key) {\r\n case 'ArrowLeft':\r\n this.focusByIndex(index - 1, true, -1);\r\n return;\r\n case 'ArrowRight':\r\n this.focusByIndex(index + 1, true, +1);\r\n return;\r\n case 'Home':\r\n this.focusByIndex(0, true, 1);\r\n return;\r\n case 'End':\r\n this.focusByIndex(this.inputs.length - 1, true, -1);\r\n return;\r\n case 'Backspace':\r\n case 'Delete':\r\n this._updateSingleInputValue('', index);\r\n this.focusByIndex(index - 1, true, -1);\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"ard-digit-input\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (data of configArrayData(); track $index) {\r\n <div class=\"ard-digit-input__item\">\r\n @if (data.type === 'input') {\r\n <input\r\n #input\r\n #focusableElement\r\n class=\"ard-digit-input__input\"\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\r\n (paste)=\"onPaste($event, data.index!)\"\r\n (input)=\"onInput($event, data.index!)\"\r\n (focus)=\"onFocusMaster($event, data.index!)\"\r\n (blur)=\"onBlurMaster($event, data.index!)\"\r\n (keydown)=\"onKeydown($event, data.index!)\"\r\n />\r\n } @else {\r\n <div class=\"ard-digit-input__static\">\r\n {{ data.char }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDigitInputComponent } from './digit-input.component';\n\n@NgModule({\n declarations: [ArdiumDigitInputComponent],\n imports: [CommonModule],\n exports: [ArdiumDigitInputComponent],\n})\nexport class ArdiumDigitInputModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { PasswordInputRevealButtonContext } from './password-input.types';\n\n@Directive({\n selector: 'ard-password-input > ng-template[ard-placeholder-tmp]',\n})\nexport class ArdPasswordInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-password-input > ng-template[ard-prefix-tmp]' })\nexport class ArdPasswordInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-password-input > ng-template[ard-suffix-tmp]' })\nexport class ArdPasswordInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-password-input > ng-template[ard-reveal-tmp]' })\nexport class ArdPasswordInputRevealButtonTemplateDirective {\n constructor(public template: TemplateRef<PasswordInputRevealButtonContext>) {}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'icon',\n})\nexport class ArdiumIconPipe implements PipeTransform {\n transform(value: string): string {\n value = value.trim().toLowerCase();\n value = value.replace(/[ -]/g, '_');\n return value;\n }\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isDefined } from 'simple-bool';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\ntype WeightNumber = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\r\ntype WeightString = '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';\r\n\r\ntype GradeNumber = -25 | 0 | 200;\r\ntype GradeString = '-25' | '0' | '200';\r\n\r\ntype OpticalSizeNumber = 20 | 24 | 40 | 48;\r\ntype OpticalSizeString = '20' | '24' | '40' | '48';\r\n\r\n@Component({\r\n selector: 'ard-icon',\r\n templateUrl: `./icon.component.html`,\r\n styleUrls: ['./icon.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumIconComponent implements AfterViewInit {\r\n readonly ariaLabel = input<string>('');\r\n readonly icon = input<Nullable<string>>(undefined);\r\n\r\n readonly filled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly weight = input<WeightNumber | undefined, Nullable<WeightNumber | WeightString>>(400, {\r\n transform: v => coerceNumberProperty(v, 400) as WeightNumber,\r\n });\r\n readonly grade = input<GradeNumber | undefined, Nullable<GradeNumber | GradeString>>(0, {\r\n transform: v => coerceNumberProperty(v, 0) as GradeNumber,\r\n });\r\n readonly opticalSize = input<OpticalSizeNumber | undefined, Nullable<OpticalSizeNumber | OpticalSizeString>>(40, {\r\n transform: v => coerceNumberProperty(v, 40) as OpticalSizeNumber,\r\n });\r\n\r\n readonly fontVariationSettings = computed<string>(() => {\r\n //map values to different properties defined by google icons\r\n const propObject = {\r\n FILL: isDefined(this.filled()) ? Number(this.filled()) : undefined,\r\n wght: this.weight(),\r\n GRAD: this.grade(),\r\n opsz: this.opticalSize(),\r\n };\r\n //map the object to an array of strings\r\n const propObjectAsArray = Object.entries(propObject) //object to array\r\n .filter(v => isDefined(v[1])) //filter undefined values\r\n .map(v => `\"${v[0]}\" ${v[1]}`) //map key-value pairs to strings\r\n .flat(); //flatten\r\n\r\n //create the final string only if any of the properties are defined\r\n return propObjectAsArray.length === 0 ? '' : ['font-variation-settings: ', propObjectAsArray.join(', ')].join('');\r\n });\r\n\r\n readonly contentWrapper = viewChild<ElementRef<HTMLElement>>('contentWrapperEl');\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.icon() && !this.contentWrapper()?.nativeElement.innerText) {\r\n console.warn(`ARD-FT9000: Using <ard-icon> without specifying the [icon] field.`);\r\n }\r\n }\r\n}\r\n","<span\r\n class=\"ard-icon material-symbols-outlined\"\r\n [attr.aria-hidden]=\"ariaLabel() !== undefined\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [style]=\"fontVariationSettings()\"\r\n>\r\n {{ icon() ?? contentWrapperEl.innerText | icon }}\r\n</span>\r\n\r\n<div\r\n #contentWrapperEl\r\n class=\"ard-icon-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n OnDestroy,\r\n OnInit,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n input,\r\n model,\r\n viewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isAnyString, isDefined } from 'simple-bool';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport {\r\n ArdPasswordInputPlaceholderTemplateDirective,\r\n ArdPasswordInputPrefixTemplateDirective,\r\n ArdPasswordInputRevealButtonTemplateDirective,\r\n ArdPasswordInputSuffixTemplateDirective,\r\n} from './password-input.directives';\r\nimport { PasswordInputRevealButtonContext } from './password-input.types';\r\n\r\n@Component({\r\n selector: 'ard-password-input',\r\n templateUrl: './password-input.component.html',\r\n styleUrls: ['./password-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumPasswordInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumPasswordInputComponent extends _NgModelComponentBase implements ControlValueAccessor, OnInit, OnDestroy {\r\n //! input view\r\n readonly textInputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n ngOnInit(): void {\r\n this._setInputAttributes();\r\n }\r\n\r\n readonly placeholder = input<string>('');\r\n readonly inputId = input<Nullable<string>>();\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplate = contentChild(ArdPasswordInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdPasswordInputSuffixTemplateDirective);\r\n\r\n //! placeholder\r\n readonly placeholderTemplate = contentChild(ArdPasswordInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed(() => !!this.placeholder() && !this.value());\r\n\r\n //! revealing\r\n readonly revealable = input<boolean, any>(true, { transform: v => coerceBooleanProperty(v) });\r\n readonly holdToReveal = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly autoHideTimeoutMs = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n readonly revealed = model<boolean>(false);\r\n\r\n private _hideTimeout: NodeJS.Timeout | null = null;\r\n toggleReveal(newState = !this.revealed()): void {\r\n this.revealed.set(newState);\r\n\r\n if (this._hideTimeout) {\r\n clearTimeout(this._hideTimeout);\r\n }\r\n const timeout = this.autoHideTimeoutMs();\r\n if (timeout && newState) {\r\n this._hideTimeout = setTimeout(() => this.revealed.set(false), timeout);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._hideTimeout) {\r\n clearTimeout(this._hideTimeout);\r\n }\r\n }\r\n\r\n readonly revealTemplate = contentChild(ArdPasswordInputRevealButtonTemplateDirective);\r\n\r\n readonly revealButtonContext = computed(\r\n (): PasswordInputRevealButtonContext => ({\r\n $implicit: this.revealed(),\r\n })\r\n );\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.revealable() ? 'ard-revealable' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n if (!isAnyString(v) && isDefined(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(\r\n `ARD-WA0020: Trying to set <ard-password-input>'s value to \"${v}\" (of type ${typeof v}), expected string or null.`\r\n )\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n return;\r\n }\r\n this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | null | undefined): boolean {\r\n const oldVal = this.value();\r\n this.value.set(v);\r\n return oldVal !== v;\r\n }\r\n //! value two-way binding\r\n readonly value = model<Nullable<string>>();\r\n\r\n //! event handlers\r\n onInput(newVal: string): void {\r\n const valueHasChanged = this._writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitChange();\r\n }\r\n protected _emitChange(): void {\r\n const v = this.value();\r\n this._onChangeRegistered?.(v);\r\n }\r\n //focus, blur, change\r\n onChange(event: Event): void {\r\n event.stopPropagation();\r\n this._emitChange();\r\n }\r\n\r\n // copy\r\n onCopy(event: ClipboardEvent): void {\r\n const textInputEl = this.textInputEl();\r\n const v = this.value();\r\n if (\r\n v &&\r\n textInputEl &&\r\n //does the selection cover the entire input\r\n ((textInputEl.nativeElement.selectionStart === 0 &&\r\n textInputEl.nativeElement.selectionEnd === textInputEl.nativeElement.value.length) ||\r\n //or is zero-wide\r\n textInputEl.nativeElement.selectionStart === textInputEl.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', v);\r\n event.preventDefault();\r\n }\r\n }\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.textInputEl()?.nativeElement;\r\n if (!input) return;\r\n\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex()),\r\n ...this.inputAttrs(),\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-password-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value()\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n [type]=\"!revealable() || !revealed() ? 'password' : 'text'\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n [class.ard-revealed]=\"revealable() && revealed()\"\r\n />\r\n </div>\r\n\r\n @if (revealable()) {\r\n <button\r\n class=\"ard-reveal-button\"\r\n type=\"button\"\r\n (click)=\"!holdToReveal() && toggleReveal()\"\r\n (mousedown)=\"holdToReveal() && revealed.set(true)\"\r\n (mouseup)=\"holdToReveal() && revealed.set(false)\"\r\n >\r\n <ng-template\r\n #defaultRevealTemplate\r\n let-revealed\r\n >\r\n <ard-icon [icon]=\"revealed ? 'visibility' : 'visibility_off'\"></ard-icon>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"revealTemplate()?.template || defaultRevealTemplate\"\r\n [ngTemplateOutletContext]=\"revealButtonContext()\"\r\n />\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumIconComponent } from './icon.component';\nimport { ArdiumIconPipe } from './icon.pipe';\n\n@NgModule({\n declarations: [ArdiumIconComponent, ArdiumIconPipe],\n imports: [CommonModule],\n exports: [ArdiumIconComponent, ArdiumIconPipe],\n})\nexport class ArdiumIconModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumPasswordInputComponent } from './password-input.component';\nimport {\n ArdPasswordInputPlaceholderTemplateDirective,\n ArdPasswordInputPrefixTemplateDirective,\n ArdPasswordInputRevealButtonTemplateDirective,\n ArdPasswordInputSuffixTemplateDirective,\n} from './password-input.directives';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\nimport { ArdiumIconModule } from '../../icon/icon.module';\n\n@NgModule({\n declarations: [\n ArdiumPasswordInputComponent,\n ArdPasswordInputPlaceholderTemplateDirective,\n ArdPasswordInputPrefixTemplateDirective,\n ArdPasswordInputSuffixTemplateDirective,\n ArdPasswordInputRevealButtonTemplateDirective,\n ],\n imports: [CommonModule, ArdiumFormFieldFrameModule, ArdiumIconModule],\n exports: [\n ArdiumPasswordInputComponent,\n ArdPasswordInputPlaceholderTemplateDirective,\n ArdPasswordInputPrefixTemplateDirective,\n ArdPasswordInputSuffixTemplateDirective,\n ArdPasswordInputRevealButtonTemplateDirective,\n ],\n})\nexport class ArdiumPasswordInputModule {}\n","\r\n\r\nexport const ButtonType = {\r\n Button: 'button',\r\n Submit: 'submit',\r\n Reset: 'reset',\r\n} as const;\r\nexport type ButtonType = typeof ButtonType[keyof typeof ButtonType];","/**\n * General button appearance. Controls which parts of the button can be colored.\n *\n * @see {@link ButtonColoringMode}\n */\nexport const ButtonAppearance = {\n /**\n * No border and no background. Text and icon are colored.\n */\n Transparent: 'transparent',\n /**\n * No border, but with text shadow. Text, icon, and background are colored.\n */\n Raised: 'raised',\n /**\n * No border, but with text shadow. White background. Text and icon are colored.\n */\n RaisedStrong: 'raised-strong',\n /**\n * White background. Text and icon are colored.\n */\n Outlined: 'outlined',\n /**\n * White background. Text, icon, and border may be colored.\n *\n * Background becomes colored on hover/focus.\n */\n OutlinedStrong: 'outlined-strong',\n /**\n * No border. Text, icon, and background are colored.\n */\n Flat: 'flat',\n} as const;\nexport type ButtonAppearance = (typeof ButtonAppearance)[keyof typeof ButtonAppearance];\n\nexport const ButtonVariant = {\n /**\n * Basic, rectangular button.\n */\n Rounded: 'rounded',\n /**\n * Pill-shaped button.\n */\n Pill: 'pill',\n /**\n * Basic, rectangular button with sharp corners.\n */\n Sharp: 'sharp',\n} as const;\nexport type ButtonVariant = (typeof ButtonVariant)[keyof typeof ButtonVariant];\n\n/**\n * **F**loating **A**ction **B**utton size.\n */\nexport const FABSize = {\n Standard: 'standard',\n Small: 'small',\n} as const;\nexport type FABSize = (typeof FABSize)[keyof typeof FABSize];\n","import { Directive, Signal, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ButtonAppearance } from './general-button.types';\r\n\r\n@Directive()\r\nexport abstract class _ButtonBase extends _FocusableComponentBase {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! button settings\r\n readonly appearance = input<ButtonAppearance>(ButtonAppearance.Raised);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly lightColoring = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n abstract readonly ngClasses: Signal<string>;\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleOneAxisAlignment } from '../../types/alignment.types';\r\nimport { ButtonType } from '../../types/button.types';\r\nimport { _ButtonBase } from '../_button-base';\r\nimport { ButtonVariant } from '../general-button.types';\r\n\r\n@Component({\r\n selector: 'ard-button',\r\n templateUrl: './button.component.html',\r\n styleUrls: ['./button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumButtonComponent extends _ButtonBase {\r\n readonly icon = input<string>('');\r\n\r\n readonly type = input<ButtonType>(ButtonType.Button);\r\n\r\n //! button settings\r\n readonly variant = input<ButtonVariant>(ButtonVariant.Rounded);\r\n readonly alignIcon = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n\r\n readonly vertical = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-align-${this.alignIcon()}`,\r\n this.lightColoring() ? `ard-light-coloring` : '',\r\n this.compact() ? 'ard-compact' : '',\r\n this.vertical() ? 'ard-button-vertical' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n #buttonElement\r\n class=\"ard-button\"\r\n [type]=\"type()\"\r\n [ngClass]=\"ngClasses()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n @if (icon()) {\r\n <div class=\"ard-button-icon\">\r\n {{ icon() }}\r\n </div>\r\n }\r\n <div class=\"ard-button-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumButtonComponent } from './button.component';\n\n@NgModule({\n declarations: [ArdiumButtonComponent],\n imports: [CommonModule],\n exports: [ArdiumButtonComponent],\n})\nexport class ArdiumButtonModule {}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-number-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdNumberInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n effect,\r\n forwardRef,\r\n input,\r\n output,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { roundToPrecision } from 'more-rounding';\r\nimport { isDefined } from 'simple-bool';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { ButtonAppearance, ButtonVariant } from '../../buttons/general-button.types';\r\nimport { OneAxisAlignment } from '../../types/alignment.types';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { NumberInputModel, NumberInputModelHost } from '../input-utils';\r\nimport { ArdNumberInputPlaceholderTemplateDirective } from './number-input.directives';\r\n\r\n@Component({\r\n selector: 'ard-number-input',\r\n templateUrl: './number-input.component.html',\r\n styleUrls: ['./number-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumNumberInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumNumberInputComponent\r\n extends _NgModelComponentBase\r\n implements ControlValueAccessor, NumberInputModelHost, AfterViewInit\r\n{\r\n //! input view\r\n readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n protected readonly inputModel = new NumberInputModel(this);\r\n private _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._setInputAttributes();\r\n this._wasViewInit = true;\r\n //set the value\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n delete this._valueBeforeInit;\r\n }\r\n }\r\n\r\n readonly inputId = input<Nullable<string>>();\r\n\r\n //! placeholder\r\n readonly placeholder = input<Nullable<string>>();\r\n\r\n readonly placeholderTemplate = contentChild(ArdNumberInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed<boolean>(() => !!this.placeholder() && !this.inputModel.stringValue());\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly alignText = input<OneAxisAlignment>(OneAxisAlignment.Middle);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string => {\r\n return [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-text-align-${this.alignText()}`,\r\n `ard-quick-change-${this.noButtons}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ');\r\n });\r\n\r\n readonly buttonVariant = computed((): ButtonVariant => {\r\n if (this.variant() === FormElementVariant.Rounded) return ButtonVariant.Rounded;\r\n if (this.variant() === FormElementVariant.Pill) return ButtonVariant.Pill;\r\n if (this.variant() === FormElementVariant.Sharp) return ButtonVariant.Sharp;\r\n return ButtonVariant.Rounded;\r\n });\r\n readonly buttonAppearance = computed<ButtonAppearance>(() => {\r\n if (this.appearance() === FormElementAppearance.Outlined && this.variant() !== FormElementVariant.Pill) {\r\n return ButtonAppearance.Outlined;\r\n }\r\n return ButtonAppearance.Transparent;\r\n });\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n this.inputModel.writeValue(v);\r\n }\r\n\r\n //! value two-way binding\r\n protected _valueBeforeInit?: string | null = '0';\r\n @Input()\r\n set value(v: string | number | null) {\r\n if (typeof v === 'number') v = v.toString();\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.writeValue(v);\r\n }\r\n readonly valueChange = output<number | null>();\r\n\r\n constructor() {\r\n super();\r\n\r\n effect(() => {\r\n const v = this.inputModel.numberValue();\r\n this.valueChange.emit(v);\r\n this._onChangeRegistered?.(v);\r\n });\r\n }\r\n\r\n //! event emitters\r\n readonly inputEvent = output<number | null>({ alias: 'input' });\r\n readonly changeEvent = output<number | null>({ alias: 'change' });\r\n readonly clearEvent = output<MouseEvent>({ alias: 'clear' });\r\n readonly quickChangeEvent = output<{\r\n readonly direction: 1 | -1;\r\n readonly value: number;\r\n }>({ alias: 'quickChange' });\r\n\r\n //! min/max and number type\r\n readonly min = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) });\r\n readonly max = input<number, any>(Infinity, { transform: v => coerceNumberProperty(v, Infinity) });\r\n\r\n readonly allowFloat = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! incerement/decrement buttons\r\n readonly noButtons = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly stepSize = input<number, any>(1, {\r\n transform: v => {\r\n const newValue = coerceNumberProperty(v, 1);\r\n if (newValue === 0) throw new Error(`ARD-FT0071a: Cannot set <ard-number-input>'s [stepSize] to 0.`);\r\n if (newValue < 0)\r\n throw new Error(`ARD-FT0071b: Cannot set <ard-number-input>'s [stepSize] to a negative value, got \"${newValue}\".`);\r\n return newValue;\r\n },\r\n });\r\n\r\n onQuickChangeButtonClick(direction: 1 | -1, event?: MouseEvent): void {\r\n let num = this.inputModel.numberValue();\r\n if (!num) num = 0;\r\n\r\n if (direction === 1 && num >= this.max()) return;\r\n if (direction === -1 && num <= this.min()) return;\r\n\r\n if (event) event.stopPropagation();\r\n\r\n const newValue = num + this.stepSize() * direction;\r\n //round to 9 decimal places to avoid floating point arithmetic errors\r\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\r\n const newValuePrecise = roundToPrecision(newValue, 9);\r\n\r\n this.writeValue(newValuePrecise);\r\n this.quickChangeEvent.emit({ direction, value: newValuePrecise });\r\n this._emitChange();\r\n\r\n this._focusInputIfCantQuickChange();\r\n }\r\n private _focusInputIfCantQuickChange(): void {\r\n if (!this.canDecrement() || !this.canIncrement()) this.focus();\r\n }\r\n\r\n canIncrement(): boolean {\r\n const num = this.inputModel.numberValue();\r\n return !isDefined(num) || num < this.max();\r\n }\r\n canDecrement(): boolean {\r\n const num = this.inputModel.numberValue();\r\n return !isDefined(num) || num > this.min();\r\n }\r\n\r\n //! event handlers\r\n onInput(newVal: string): void {\r\n const valueHasChanged = this.inputModel.writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitInput();\r\n }\r\n protected _emitInput(): void {\r\n this.inputEvent.emit(this.inputModel.numberValue());\r\n this._emitChange();\r\n }\r\n\r\n //focus, blur, change\r\n onFocusMaster(event: FocusEvent): void {\r\n this.onFocus(event);\r\n }\r\n onBlurMaster(event: FocusEvent): void {\r\n this.onBlur(event);\r\n }\r\n //change\r\n onChange(event: Event): void {\r\n event.stopPropagation();\r\n this._emitChange();\r\n }\r\n protected _emitChange(): void {\r\n const v = this.inputModel.numberValue();\r\n this.changeEvent.emit(v);\r\n }\r\n\r\n //smart focus\r\n onMouseup(): void {\r\n const selection = window.getSelection();\r\n if (selection && selection.type === 'Range') return;\r\n\r\n this.focus();\r\n }\r\n\r\n // copy\r\n onCopy(event: ClipboardEvent): void {\r\n if (\r\n this.value &&\r\n //does the selection cover the entire input\r\n ((this.inputEl()?.nativeElement.selectionStart === 0 &&\r\n this.inputEl()?.nativeElement.selectionEnd === this.inputEl()?.nativeElement.value.length) ||\r\n //or is zero-wide\r\n this.inputEl()?.nativeElement.selectionStart === this.inputEl()?.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', String(this.value));\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.inputEl()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex),\r\n ...this.inputAttrs,\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"ard-number-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (mouseup)=\"onMouseup()\"\r\n>\r\n @if (!noButtons()) {\r\n <ard-button\r\n class=\"ard-quick-change-button decrement\"\r\n [variant]=\"buttonVariant()\"\r\n [appearance]=\"buttonAppearance()\"\r\n color=\"none\"\r\n [disabled]=\"!canDecrement()\"\r\n [tabIndex]=\"!canDecrement() ? -1 : tabIndex()\"\r\n (click)=\"onQuickChangeButtonClick(-1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(-1)\"\r\n ardHoldSpaceKey\r\n >\r\n -\r\n </ard-button>\r\n }\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template\r\n #defaultPlaceholderTemplate\r\n let-plchldr\r\n >\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n @if (!noButtons()) {\r\n <ard-button\r\n class=\"ard-quick-change-button increment\"\r\n [variant]=\"buttonVariant()\"\r\n [appearance]=\"buttonAppearance()\"\r\n color=\"none\"\r\n [disabled]=\"!canIncrement()\"\r\n [tabIndex]=\"!canIncrement() ? -1 : tabIndex()\"\r\n (click)=\"onQuickChangeButtonClick(1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(1)\"\r\n ardHoldSpaceKey\r\n >\r\n +\r\n </ard-button>\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumHoldEventModule } from '@ardium-ui/devkit';\nimport { ArdiumButtonModule } from '../../buttons/button/button.module';\nimport { ArdiumNumberInputComponent } from './number-input.component';\nimport { ArdNumberInputPlaceholderTemplateDirective } from './number-input.directives';\n\n@NgModule({\n declarations: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective],\n imports: [CommonModule, ArdiumHoldEventModule, ArdiumButtonModule],\n exports: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective],\n})\nexport class ArdiumNumberInputModule {}\n","import {\r\n AfterViewInit,\r\n Directive,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n input,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { isDefined } from 'simple-bool';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\n\r\n@Directive()\r\nexport abstract class _FileInputComponentBase extends _NgModelComponentBase implements OnInit, AfterViewInit {\r\n abstract readonly componentId: string;\r\n\r\n readonly fileInputEl = viewChild<ElementRef<HTMLInputElement>>('fileInput');\r\n\r\n readonly htmlId = input<string>(crypto.randomUUID());\r\n readonly name = input<string>('');\r\n\r\n ngOnInit(): void {\r\n if (!(window.File && window.FileReader && window.Blob)) {\r\n console.error(\r\n new Error(`ARD-${this.componentId}0: Cannot use Ardium UI file features because this browser does not support them!`)\r\n );\r\n }\r\n }\r\n protected _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._wasViewInit = true;\r\n\r\n this._updateElementValue();\r\n }\r\n\r\n //! appearance\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! settings\r\n readonly multiple = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly blockAfterUpload = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n get shouldBeBlocked(): boolean {\r\n return this.blockAfterUpload() && isDefined(this.value);\r\n }\r\n\r\n //! value\r\n protected _value: File[] | null = null;\r\n @Input()\r\n get value(): File[] | null {\r\n return this._value;\r\n }\r\n set value(v: File | File[] | null) {\r\n this.writeValue(v);\r\n }\r\n\r\n readonly valueChange = output<File[] | null>();\r\n readonly changeEvent = output<File[] | null>({ alias: 'change' });\r\n readonly dragFilesEvent = output<File[] | null>({ alias: 'dragFiles' });\r\n\r\n protected _valueBeforeInit: File[] | null = null;\r\n writeValue(v: File | File[] | null): void {\r\n this._writeValue(v, false);\r\n }\r\n protected _writeValue(v: File | File[] | null, emitEvents = true): void {\r\n if (v instanceof File) {\r\n v = [v];\r\n }\r\n\r\n this.currentViewState.set('uploaded');\r\n this._value = v;\r\n\r\n if (this._wasViewInit) this._updateElementValue();\r\n\r\n if (emitEvents) {\r\n this._emitChange();\r\n }\r\n }\r\n\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n this.changeEvent.emit(v);\r\n }\r\n\r\n openBrowseDialog(): void {\r\n this.fileInputEl()?.nativeElement.click();\r\n }\r\n\r\n //! temporary value\r\n //for drag event handling\r\n protected _draggedFiles: number | null = null;\r\n\r\n //! view state\r\n readonly currentViewState = signal<'idle' | 'dragover' | 'uploaded'>('idle');\r\n private _beforeDragoverState: 'idle' | 'uploaded' = 'idle';\r\n\r\n //! event handlers\r\n onDragover(event: DragEvent): void {\r\n event.preventDefault();\r\n if (this.shouldBeBlocked) {\r\n if (!event.dataTransfer) return;\r\n\r\n event.dataTransfer.dropEffect = 'none';\r\n return;\r\n }\r\n if (this.currentViewState() === 'dragover') return;\r\n\r\n this._draggedFiles = this._countDragenterFiles(event.dataTransfer);\r\n\r\n if (!this._draggedFiles) return;\r\n\r\n this._beforeDragoverState = this.currentViewState() as 'idle' | 'uploaded';\r\n this.currentViewState.set('dragover');\r\n }\r\n onDragleave(): void {\r\n if (this.shouldBeBlocked) return;\r\n if (this.currentViewState() !== 'dragover') return;\r\n\r\n this.currentViewState.set(this._beforeDragoverState);\r\n }\r\n onDrop(event: DragEvent): void {\r\n event.preventDefault();\r\n\r\n if (this.shouldBeBlocked) return;\r\n\r\n const filelist = event.dataTransfer?.files;\r\n if (!filelist) {\r\n this.currentViewState.set('idle');\r\n return;\r\n }\r\n const files = Array.from(filelist);\r\n if (!files) {\r\n this.currentViewState.set('idle');\r\n return;\r\n }\r\n\r\n this.currentViewState.set('uploaded');\r\n this._writeValue(files);\r\n }\r\n onInputChange(): void {\r\n const files = Array.from(this.fileInputEl()?.nativeElement.files ?? []);\r\n if (files.length === 0) {\r\n this._writeValue(null);\r\n this.currentViewState.set('idle');\r\n return;\r\n }\r\n this._writeValue(files);\r\n this.currentViewState.set('uploaded');\r\n }\r\n\r\n //! helpers\r\n protected _countDragenterFiles(data: DataTransfer | null): number | null {\r\n if (!data) return null;\r\n\r\n return Array.from(data.items).filter(item => item.kind === 'file').length;\r\n }\r\n\r\n protected _updateElementValue(): void {\r\n const v = this.value;\r\n\r\n const inputEl = this.fileInputEl()?.nativeElement;\r\n if (!inputEl) return;\r\n if (!v) {\r\n inputEl.files = null;\r\n return;\r\n }\r\n\r\n const dataTransfer = new DataTransfer();\r\n for (const file of v) {\r\n dataTransfer.items.add(file);\r\n }\r\n inputEl.files = dataTransfer.files;\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\nimport { FileInputBrowseContext, FileInputFilesContext } from '../file-input-types';\n\n@Directive({\n selector: 'ard-file-drop-area > ng-template[ard-idle-content-tmp]',\n})\nexport class ArdiumFileDropAreaIdleContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputBrowseContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-drop-area > ng-template[ard-dragover-content-tmp]',\n})\nexport class ArdiumFileDropAreaDragoverContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-drop-area > ng-template[ard-dropped-content-tmp]',\n})\nexport class ArdiumFileDropAreaUploadedContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n OnInit,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { FormElementVariant } from '../../types/theming.types';\r\nimport { _FileInputComponentBase } from '../file-input-base';\r\nimport { FileInputBrowseContext, FileInputFileAmountContext, FileInputFilesContext } from '../file-input-types';\r\nimport {\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n} from './file-drop-area.directives';\r\n\r\n@Component({\r\n selector: 'ard-file-drop-area',\r\n templateUrl: './file-drop-area.component.html',\r\n styleUrls: ['./file-drop-area.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumFileDropAreaComponent extends _FileInputComponentBase implements OnInit {\r\n readonly componentId = '010';\r\n\r\n //! appearance\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [`ard-variant-${this.variant()}`, `ard-color-${this.color()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! triggering file dialog\r\n protected _wasMousedownOnElement: true | null = null;\r\n onMousedown(): void {\r\n this._wasMousedownOnElement = true;\r\n }\r\n onMouseup(): void {\r\n if (!this._wasMousedownOnElement) return;\r\n this._wasMousedownOnElement = null;\r\n\r\n this.openBrowseDialog();\r\n }\r\n\r\n //! templates\r\n @ContentChild(ArdiumFileDropAreaIdleContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n idleTemplate: TemplateRef<FileInputBrowseContext> | null = null;\r\n @ContentChild(ArdiumFileDropAreaDragoverContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n dragoverTemplate: TemplateRef<FileInputFilesContext> | null = null;\r\n @ContentChild(ArdiumFileDropAreaUploadedContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n uploadedTemplate: TemplateRef<FileInputFilesContext> | null = null;\r\n\r\n getIdleContext(): FileInputBrowseContext {\r\n return {\r\n browse: () => {\r\n this.openBrowseDialog();\r\n },\r\n };\r\n }\r\n getDragoverContext(): FileInputFileAmountContext {\r\n return {\r\n amount: this._draggedFiles!,\r\n };\r\n }\r\n getUploadedContext(): FileInputFilesContext {\r\n const files = this.value!;\r\n return {\r\n $implicit: files,\r\n amount: files.length,\r\n files,\r\n };\r\n }\r\n}\r\n","<div\r\n class=\"ard-file-drop-area\"\r\n (ardClickOutside)=\"onDragleave()\"\r\n (dragleave)=\"onDragleave()\"\r\n (dragover)=\"onDragover($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n <div class=\"ard-file-drop-area-outline\">\r\n <div class=\"ard-file-drop-area-content\">\r\n @if (currentViewState() === 'idle') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"idleTemplate ?? defaultIdleTemplate\"\r\n [ngTemplateOutletContext]=\"getIdleContext()\"\r\n />\r\n }\r\n <ng-template\r\n *ngIf=\"currentViewState() === 'dragover'\"\r\n [ngTemplateOutlet]=\"dragoverTemplate ?? defaultDragoverTemplate\"\r\n [ngTemplateOutletContext]=\"getDragoverContext()\"\r\n ></ng-template>\r\n <ng-template\r\n *ngIf=\"currentViewState() === 'uploaded'\"\r\n [ngTemplateOutlet]=\"uploadedTemplate ?? defaultUploadedTemplate\"\r\n [ngTemplateOutletContext]=\"getUploadedContext()\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n<input\r\n #fileInput\r\n class=\"ard-file-drop-area-input-element\"\r\n type=\"file\"\r\n [name]=\"name()\"\r\n [multiple]=\"multiple()\"\r\n [id]=\"htmlId()\"\r\n (change)=\"onInputChange()\"\r\n/>\r\n\r\n<ng-template\r\n #defaultIdleTemplate\r\n let-browse=\"browse\"\r\n>\r\n <ard-icon class=\"ard-file-drop-area-icon\">upload</ard-icon>\r\n <strong class=\"ard-file-drop-area-drop-text\">\r\n <span *ngIf=\"!multiple\">Drag & Drop a file</span>\r\n <span *ngIf=\"multiple\">Drag & Drop files</span>\r\n here\r\n </strong>\r\n <span class=\"ard-file-drop-area-or-text\">or</span>\r\n <ard-button\r\n class=\"ard-file-drop-area-browse-button\"\r\n appearance=\"transparent\"\r\n [compact]=\"compact()\"\r\n [variant]=\"variant()\"\r\n [color]=\"color()\"\r\n (click)=\"browse()\"\r\n >Browse files</ard-button\r\n >\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultDragoverTemplate\r\n let-amount=\"amount\"\r\n>\r\n <span class=\"ard-file-drop-area-dragover-text\">Drop </span>\r\n <span class=\"ard-file-drop-area-dragover-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-drop-area-dragover-text\"> here to upload. </span>\r\n @if (amount > 1 && !multiple()) {\r\n <strong class=\"ard-file-drop-area-dragover-warning\"> Only the first file will be uploaded! </strong>\r\n }\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultUploadedTemplate\r\n let-amount=\"amount\"\r\n let-files=\"files\"\r\n>\r\n <div class=\"ard-file-drop-area-uploaded-container\">\r\n <div class=\"ard-file-drop-area-uploaded-message\">\r\n <span class=\"ard-file-drop-area-uploaded-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-drop-area-uploaded-text\"> uploaded.</span>\r\n </div>\r\n <div class=\"ard-file-drop-area-uploaded-files\">\r\n @for (file of files; track $index) {\r\n <div class=\"ard-file-drop-area-file\">\r\n <ard-icon>draft</ard-icon>\r\n <div class=\"ard-file-drop-area-file-info\">\r\n <span class=\"ard-file-drop-area-filename\">\r\n <span class=\"ard-file-drop-area-filename-name\">{{ file | filename }}</span>\r\n <span class=\"ard-file-drop-area-filename-ext\">{{ file | fileext: true }}</span>\r\n </span>\r\n <span class=\"ard-file-drop-area-filesize\">{{ file.size | filesize }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport {\r\n ArdiumClickOutsideEventModule,\r\n ArdiumFileextPipeModule,\r\n ArdiumFilenamePipeModule,\r\n ArdiumFilesizePipeModule,\r\n} from '@ardium-ui/devkit';\r\nimport { ArdiumButtonModule } from '../../buttons/button/button.module';\r\nimport { ArdiumIconModule } from '../../icon/icon.module';\r\nimport { ArdiumFileDropAreaComponent } from './file-drop-area.component';\r\nimport {\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n} from './file-drop-area.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumFileDropAreaComponent,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ArdiumButtonModule,\r\n ArdiumIconModule,\r\n ArdiumFilesizePipeModule,\r\n ArdiumFilenamePipeModule,\r\n ArdiumFileextPipeModule,\r\n ArdiumClickOutsideEventModule,\r\n ],\r\n exports: [\r\n ArdiumFileDropAreaComponent,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumFileDropAreaModule {}\r\n","import { Directive, TemplateRef } from '@angular/core';\nimport { ColorPickerColorReferenceContext, ColorPickerIndicatorContext } from '../../color/color-picker/color-picker.types';\nimport { ColorInputActionButtonsContext } from './color-input.types';\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdColorInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-prefix-tmp]' })\nexport class ArdColorInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-suffix-tmp]' })\nexport class ArdColorInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n//! picker directives\n@Directive({\n selector: 'ard-color-input > ng-template[ard-shade-indicator-tmp]',\n})\nexport class ArdColorInputShadeIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-hue-indicator-tmp]' })\nexport class ArdColorInputHueIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({\n selector: 'ard-color-input > ng-template[ard-opacity-indicator-tmp]',\n})\nexport class ArdColorInputOpacityIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({\n selector: 'ard-color-input > ng-template[ard-color-reference-tmp]',\n})\nexport class ArdColorInputColorReferenceTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerColorReferenceContext>) {}\n}\n\n//! action buttons\n@Directive({\n selector: 'ard-color-picker > ng-template[ard-action-buttons-tmp]',\n})\nexport class ArdColorInputActionButtonsTemplateDirective {\n constructor(public template: TemplateRef<ColorInputActionButtonsContext>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { FileInputBrowseContext, FileInputFilesContext } from '../file-input-types';\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdFileInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-prefix-tmp]' })\nexport class ArdFileInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-suffix-tmp]' })\nexport class ArdFileInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-idle-content-tmp]' })\nexport class ArdiumFileInputIdleContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputBrowseContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-input > ng-template[ard-dragover-content-tmp]',\n})\nexport class ArdiumFileInputDragoverContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-input > ng-template[ard-dropped-content-tmp]',\n})\nexport class ArdiumFileInputUploadedContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n forwardRef,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ArdColorInputPlaceholderTemplateDirective } from '../../inputs/color-input/color-input.directives';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { _FileInputComponentBase } from '../file-input-base';\r\nimport { FileInputBrowseContext, FileInputFileAmountContext, FileInputFilesContext } from '../file-input-types';\r\nimport {\r\n ArdFileInputPrefixTemplateDirective,\r\n ArdFileInputSuffixTemplateDirective,\r\n ArdiumFileInputDragoverContentTemplateDirective,\r\n ArdiumFileInputIdleContentTemplateDirective,\r\n ArdiumFileInputUploadedContentTemplateDirective,\r\n} from './file-input.directives';\r\n\r\n@Component({\r\n selector: 'ard-file-input',\r\n templateUrl: './file-input.component.html',\r\n styleUrls: ['./file-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumFileInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumFileInputComponent extends _FileInputComponentBase {\r\n readonly DEFAULTS = {\r\n clearButtonTitle: 'Clear',\r\n };\r\n\r\n readonly componentId = '011';\r\n\r\n //! appearance\r\n //all handled in ard-form-field-frame component\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! placeholder\r\n readonly placeholder = input<string>('');\r\n\r\n //! root element classes\r\n readonly ngClasses = computed<string>(() =>\r\n [`ard-color-${this.color()}`, `ard-state-${this.currentViewState()}`, this.value ? 'ard-has-value' : ''].join(' ')\r\n );\r\n\r\n @ContentChild(ArdColorInputPlaceholderTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n placeholderTemplate?: TemplateRef<any>;\r\n\r\n get shouldDisplayPlaceholder(): boolean {\r\n return Boolean(this.placeholder()) && !this.value;\r\n }\r\n\r\n //! clear button\r\n readonly clearable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly clearButtonTitle = input<string>(this.DEFAULTS.clearButtonTitle);\r\n\r\n get shouldShowClearButton(): boolean {\r\n return this.clearable() && !this.disabled() && Boolean(this.value);\r\n }\r\n onClearButtonClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.clear();\r\n this.focus();\r\n }\r\n\r\n //! clear function\r\n clear(): void {\r\n if (!this.clearable()) return;\r\n\r\n this.writeValue(null);\r\n this._emitChange();\r\n this.clearEvent.emit();\r\n }\r\n\r\n readonly clearEvent = output();\r\n\r\n //! state\r\n readonly touched = signal<boolean>(false);\r\n\r\n //! prefix & suffix\r\n @ContentChild(ArdFileInputPrefixTemplateDirective, { read: TemplateRef })\r\n prefixTemplate?: TemplateRef<any>;\r\n @ContentChild(ArdFileInputSuffixTemplateDirective, { read: TemplateRef })\r\n suffixTemplate?: TemplateRef<any>;\r\n //! templates\r\n @ContentChild(ArdiumFileInputIdleContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n idleTemplate: TemplateRef<FileInputBrowseContext> | null = null;\r\n @ContentChild(ArdiumFileInputDragoverContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n dragoverTemplate: TemplateRef<FileInputFilesContext> | null = null;\r\n @ContentChild(ArdiumFileInputUploadedContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n uploadedTemplate: TemplateRef<FileInputFilesContext> | null = null;\r\n\r\n getIdleContext(): FileInputBrowseContext {\r\n return {\r\n browse: () => {\r\n this.openBrowseDialog();\r\n },\r\n };\r\n }\r\n getDragoverContext(): FileInputFileAmountContext {\r\n return {\r\n amount: this._draggedFiles!,\r\n };\r\n }\r\n getUploadedContext(): FileInputFilesContext {\r\n const files = this.value!;\r\n return {\r\n $implicit: files,\r\n amount: files.length,\r\n files,\r\n };\r\n }\r\n}\r\n","<ard-form-field-frame\r\n class=\"ard-file-input-form-field-frame\"\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate\"\r\n [suffixTemplate]=\"suffixTemplate\"\r\n (dragover)=\"onDragover($event)\"\r\n (dragleave)=\"onDragleave()\"\r\n (drop)=\"onDrop($event)\"\r\n (ardClickOutside)=\"onDragleave()\"\r\n>\r\n <div\r\n class=\"ard-file-input\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <div class=\"ard-file-input__value\">\r\n @if (currentViewState() === 'idle') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"idleTemplate ?? defaultIdleTemplate\"\r\n [ngTemplateOutletContext]=\"getIdleContext()\"\r\n />\r\n } @if (currentViewState() === 'dragover') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"dragoverTemplate ?? defaultDragoverTemplate\"\r\n [ngTemplateOutletContext]=\"getDragoverContext()\"\r\n />\r\n } @if (currentViewState() === 'uploaded') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"uploadedTemplate ?? defaultUploadedTemplate\"\r\n [ngTemplateOutletContext]=\"getUploadedContext()\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (shouldShowClearButton) {\r\n <ard-clear-button\r\n #focusableElement\r\n [title]=\"clearButtonTitle()\"\r\n (mouseup)=\"onClearButtonClick($event)\"\r\n />\r\n } @if (!shouldBeBlocked) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-browse-button\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (click)=\"openBrowseDialog()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-icon>folder</ard-icon>\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<input\r\n #fileInput\r\n class=\"ard-file-input__input\"\r\n type=\"file\"\r\n [name]=\"name()\"\r\n [multiple]=\"multiple()\"\r\n [attr.id]=\"htmlId()\"\r\n (change)=\"onInputChange()\"\r\n/>\r\n\r\n<ng-template\r\n #defaultIdleTemplate\r\n let-browse=\"browse\"\r\n>\r\n <span class=\"ard-file-input__idle\">\r\n @if (multiple()) {\r\n <span>Upload a file</span>\r\n } @else {\r\n <span>Upload files</span>\r\n }\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultDragoverTemplate\r\n let-amount=\"amount\"\r\n>\r\n <span class=\"ard-file-input__dragover-text\">Drop </span>\r\n @if (multiple()) {\r\n <span class=\"ard-file-input__dragover-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n } @else {\r\n <span class=\"ard-file-input__dragover-amount\"> a file </span>\r\n }\r\n <span class=\"ard-file-input__dragover-text\"> here to upload </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultUploadedTemplate\r\n let-amount=\"amount\"\r\n>\r\n <div class=\"ard-file-input__uploaded\">\r\n <span class=\"ard-file-input__uploaded-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-input__uploaded-text\"> uploaded.</span>\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumFileInputComponent } from './file-input.component';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\nimport { ArdiumIconModule } from '../../icon/icon.module';\n\n@NgModule({\n declarations: [ArdiumFileInputComponent],\n imports: [CommonModule, ArdiumFormFieldFrameModule, _ClearButtonModule, ArdiumIconModule],\n exports: [ArdiumFileInputComponent],\n})\nexport class ArdiumFileInputModule {}\n","export const CaseTransformerType = {\n NoChange: 'nochange',\n Uppercase: 'uppercase',\n Lowercase: 'lowercase',\n} as const;\nexport type CaseTransformerType = (typeof CaseTransformerType)[keyof typeof CaseTransformerType];\n","import { isAnyString, isDefined, isNull } from 'simple-bool';\r\nimport { RegExpTransformer } from './input-transformers';\r\nimport { CaseTransformerType } from './input-types';\r\nimport { ElementRef, Signal, computed, signal } from '@angular/core';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\nexport interface HexInputModelHost {\r\n readonly case: Signal<CaseTransformerType>;\r\n readonly maxDigits: Signal<Nullable<number>>;\r\n readonly textInputEl: Signal<ElementRef<HTMLInputElement> | undefined>;\r\n}\r\nexport class HexInputModel {\r\n constructor(protected readonly _hostComp: HexInputModelHost) {}\r\n\r\n //! value setters/getters\r\n readonly value = signal<string | null>(null);\r\n readonly stringValue = computed<string>(() => this.value() ?? '');\r\n //value with the hash sign\r\n readonly hashSignValue = computed<string>(() => '#' + this.stringValue());\r\n\r\n //! write value handlers\r\n writeValue(v: any): boolean {\r\n if (!isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(`ARD-WA0160: Trying to set <ard-hex-input>'s value to \"${v}\" (of type ${typeof v}), expected string or null.`)\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n //normalize the value\r\n v = v ?? '';\r\n if (typeof v === 'string') v = v.replace('#', '');\r\n\r\n return this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | null): boolean {\r\n const oldVal = this.value();\r\n //constraints\r\n if (v) {\r\n v = this._applyCharactersConstraint(v);\r\n v = this._applyDigitsConstraint(v, oldVal ?? '');\r\n v = this._applyCaseTransformer(v);\r\n }\r\n //update view\r\n this.value.set(v);\r\n this._updateInputElement();\r\n return oldVal !== v;\r\n }\r\n clear(): void {\r\n this._writeValue(null);\r\n }\r\n rewriteValueAfterHostUpdate(): void {\r\n this._writeValue(this.value());\r\n }\r\n\r\n //! input element methods\r\n _updateInputElement() {\r\n const el = this._hostComp.textInputEl()?.nativeElement;\r\n if (!el) return;\r\n const caretPos = this.caretPos;\r\n el.value = this.stringValue();\r\n this.caretPos = caretPos;\r\n }\r\n get caretPos(): number {\r\n return this._hostComp.textInputEl()?.nativeElement.selectionEnd ?? this.stringValue().length;\r\n }\r\n set caretPos(pos: number) {\r\n this._hostComp.textInputEl()?.nativeElement.setSelectionRange(pos, pos);\r\n }\r\n\r\n //! constraints\r\n private _charactersRegexTransformer = new RegExpTransformer(/[^0-9a-f]/i, '');\r\n private _applyCharactersConstraint(v: string): string {\r\n const { text, caretPos } = this._charactersRegexTransformer.apply(v, '', this.caretPos);\r\n this.caretPos = caretPos;\r\n return text;\r\n }\r\n private _applyDigitsConstraint(v: string, prev: string): string {\r\n const maxLength = this._hostComp.maxDigits();\r\n if (!isDefined(maxLength)) return v;\r\n if (v.length <= maxLength) return v;\r\n if (v.length < prev.length) return v;\r\n\r\n let firstChangeIndex = 0;\r\n while (\r\n firstChangeIndex < v.length &&\r\n (!prev.charAt(firstChangeIndex) || v.charAt(firstChangeIndex) === prev.charAt(firstChangeIndex)) &&\r\n firstChangeIndex <= maxLength\r\n ) {\r\n firstChangeIndex++;\r\n }\r\n if (firstChangeIndex > maxLength) return v.substring(0, maxLength);\r\n\r\n const overflow = v.length - maxLength;\r\n this.caretPos -= overflow;\r\n return v.substring(0, firstChangeIndex) + v.substring(firstChangeIndex + overflow);\r\n }\r\n private _applyCaseTransformer(v: string): string {\r\n if (this._hostComp.case() === CaseTransformerType.Uppercase) return v.toUpperCase();\r\n if (this._hostComp.case() === CaseTransformerType.Lowercase) return v.toLowerCase();\r\n return v;\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-hex-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdHexInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-hex-input ng-template[ard-prefix-tmp]' })\nexport class ArdHexInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-hex-input ng-template[ard-suffix-tmp]' })\nexport class ArdHexInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n ElementRef,\r\n forwardRef,\r\n input,\r\n Input,\r\n output,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { HexInputModel, HexInputModelHost } from '../hex-input.model';\r\nimport { CaseTransformerType } from '../input-types';\r\nimport {\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n} from './hex-input.directives';\r\n\r\n@Component({\r\n selector: 'ard-hex-input',\r\n templateUrl: './hex-input.component.html',\r\n styleUrls: ['./hex-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumHexInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumHexInputComponent\r\n extends _NgModelComponentBase\r\n implements ControlValueAccessor, HexInputModelHost, AfterViewInit\r\n{\r\n //! input view\r\n readonly textInputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n protected readonly inputModel = new HexInputModel(this);\r\n protected _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._wasViewInit = true;\r\n this._setInputAttributes();\r\n //set the value\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n delete this._valueBeforeInit;\r\n }\r\n }\r\n\r\n readonly DEFAULTS = {\r\n clearButtonTitle: 'Clear',\r\n };\r\n\r\n readonly inputId = input<Nullable<string>>();\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplate = contentChild(ArdHexInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdHexInputSuffixTemplateDirective);\r\n\r\n //! placeholder\r\n readonly placeholder = input<Nullable<string>>();\r\n\r\n readonly placeholderTemplate = contentChild(ArdHexInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed((): boolean => Boolean(this.placeholder()) && !this.inputModel.stringValue());\r\n\r\n //! appearance\r\n //all handled in ard-form-field-frame component\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! settings\r\n readonly case = input<CaseTransformerType>(CaseTransformerType.NoChange);\r\n\r\n readonly maxDigits = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n readonly hideHash = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly showHash = computed(() => !this.hideHash());\r\n\r\n //! clear button\r\n readonly clearable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly clearButtonTitle = input<string>(this.DEFAULTS.clearButtonTitle);\r\n\r\n readonly shouldShowClearButton = computed<boolean>(\r\n () => this.clearable() && !this.disabled() && Boolean(this.inputModel?.value())\r\n );\r\n\r\n onClearButtonClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.inputModel.clear();\r\n this._emitChange();\r\n this._emitInput();\r\n this.clearEvent.emit();\r\n this.focus();\r\n }\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.inputModel.writeValue(v);\r\n }\r\n\r\n //! value two-way binding\r\n protected _valueBeforeInit?: string | null = null;\r\n @Input()\r\n set value(v: string | null) {\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.writeValue(v);\r\n }\r\n get value(): string | null {\r\n return this.inputModel?.hashSignValue();\r\n }\r\n readonly valueChange = output<string>();\r\n\r\n //! event emitters\r\n readonly inputEvent = output<string>({ alias: 'input' });\r\n readonly changeEvent = output<string>({ alias: 'change' });\r\n readonly clearEvent = output<void>({ alias: 'clear' });\r\n\r\n //! event handlers\r\n onInput(newVal: string, event: Event): void {\r\n event.stopPropagation();\r\n const valueHasChanged = this.inputModel.writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitInput();\r\n }\r\n protected _emitInput(): void {\r\n const v = this.inputModel.hashSignValue();\r\n this.inputEvent.emit(v);\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n onChange(event: Event): void {\r\n this._emitChange();\r\n event.stopPropagation();\r\n }\r\n protected _emitChange(): void {\r\n const v = this.inputModel.hashSignValue();\r\n this.changeEvent.emit(v);\r\n }\r\n\r\n override onBlur(event: FocusEvent): void {\r\n super.onBlur(event);\r\n this._emitChange();\r\n }\r\n\r\n //smart focus\r\n onMouseup(): void {\r\n const selection = window.getSelection();\r\n if (selection && selection.type === 'Range') return;\r\n\r\n this.focus();\r\n }\r\n\r\n onCopy(event: ClipboardEvent): void {\r\n if (\r\n this.value &&\r\n //does the selection cover the entire input\r\n ((this.textInputEl()?.nativeElement.selectionStart === 0 &&\r\n this.textInputEl()?.nativeElement.selectionEnd === this.textInputEl()?.nativeElement.value.length) ||\r\n //or is zero-wide\r\n this.textInputEl()?.nativeElement.selectionStart === this.textInputEl()?.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', this.value);\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.textInputEl()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex),\r\n ...this.inputAttrs,\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-hex-input\"\r\n [class.ard-has-value]=\"value\"\r\n (mouseup)=\"onMouseup()\"\r\n >\r\n <div\r\n class=\"ard-hash-container\"\r\n *ngIf=\"showHash\"\r\n >\r\n #\r\n </div>\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value, $event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumHexInputComponent } from './hex-input.component';\r\nimport {\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n} from './hex-input.directives';\r\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\r\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumHexInputComponent,\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n ],\r\n imports: [CommonModule, ArdiumFormFieldFrameModule, _ClearButtonModule],\r\n exports: [\r\n ArdiumHexInputComponent,\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumHexInputModule {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { _BooleanComponentBase } from '../../_internal/boolean-component';\r\nimport { ComponentColor } from '../../types/colors.types';\r\n\r\n@Component({\r\n selector: 'ard-radio',\r\n templateUrl: './radio.component.html',\r\n styleUrls: ['./radio.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumRadioComponent extends _BooleanComponentBase {\r\n protected readonly _changeDetector = inject(ChangeDetectorRef);\r\n\r\n readonly htmlId = input<string>(crypto.randomUUID());\r\n\r\n readonly value = input<any>();\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [`ard-color-${this.color()}`, `ard-radio-${this.selected() ? 'selected' : 'unselected'}`].join(' ')\r\n );\r\n\r\n //! event handlers\r\n onMousedown(): void {\r\n this.focus();\r\n }\r\n onMouseup(): void {\r\n this.focus();\r\n this.selected.set(true);\r\n this._emitChange();\r\n }\r\n\r\n //! radio-group access points\r\n readonly name = signal<string | null>(null);\r\n\r\n /**\r\n * Marks the radio button as needing checking for change detection.\r\n * This method is exposed because the parent radio group will directly\r\n * update bound properties of the radio button.\r\n */\r\n markForCheck() {\r\n // When group value changes, the button will not be notified. Use `markForCheck` to explicit\r\n // update radio button's status\r\n this._changeDetector.markForCheck();\r\n }\r\n}\r\n","<button\r\n #focusableElement\r\n class=\"ard-radio\"\r\n type=\"button\"\r\n [ngClass]=\"ngClasses()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (mousedown)=\"onMousedown()\"\r\n (mouseup)=\"onMouseup()\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-radio-circles\">\r\n <div class=\"ard-radio-outer-circle\"></div>\r\n <div class=\"ard-radio-inner-circle\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </div>\r\n <label [for]=\"htmlId()\">\r\n <ng-content></ng-content>\r\n </label>\r\n</button>\r\n\r\n<input\r\n class=\"ard-radio-input-element\"\r\n type=\"radio\"\r\n [name]=\"name()\"\r\n [id]=\"htmlId()\"\r\n [checked]=\"selected()\"\r\n #radio\r\n/>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n Input,\r\n OnDestroy,\r\n OutputRefSubscription,\r\n ViewEncapsulation,\r\n contentChildren,\r\n effect,\r\n forwardRef,\r\n input,\r\n model,\r\n output\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdiumRadioComponent } from './radio/radio.component';\r\n\r\n@Component({\r\n selector: 'ard-radio-group',\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[attr.tabindex]': 'null',\r\n '[attr.aria-label]': 'null',\r\n '[attr.aria-labelledby]': 'null',\r\n '[attr.aria-describedby]': 'null',\r\n role: 'radiogroup',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumRadioGroupComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumRadioGroupComponent extends _NgModelComponentBase implements AfterContentInit, OnDestroy {\r\n private readonly _radios = contentChildren<ArdiumRadioComponent>(ArdiumRadioComponent, { descendants: true });\r\n\r\n readonly htmlId = input<string>('');\r\n\r\n @HostBinding('attr.id')\r\n get _htmlIdHostAttribute() {\r\n return this.htmlId();\r\n }\r\n\r\n constructor() {\r\n super();\r\n\r\n effect(() => {\r\n this.name();\r\n this._updateRadioButtonNames();\r\n });\r\n effect(() => {\r\n this.selected();\r\n this._checkSelectedRadioButton();\r\n });\r\n effect(() => {\r\n const radios = this._radios();\r\n if (!radios) return;\r\n \r\n setTimeout(() => {\r\n this._updateRadioButtonNames();\r\n }, 0);\r\n\r\n this._destroyChildSubscriptions();\r\n\r\n //sub to child component events\r\n for (const radio of radios) {\r\n this._childEventSubs.push(\r\n radio.blurEvent.subscribe(v => {\r\n this._handleBlurEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.focusEvent.subscribe(v => {\r\n this._handleFocusEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.selectedChange.subscribe((v: boolean) => {\r\n if (!v) return;\r\n this._handleChangeEvents(radio);\r\n })\r\n );\r\n }\r\n })\r\n }\r\n\r\n //! value\r\n @Input()\r\n get value(): any | undefined {\r\n return this.selected()?.value();\r\n }\r\n set value(v: any) {\r\n this.writeValue(v);\r\n }\r\n\r\n readonly valueChange = output<any>();\r\n readonly changeEvent = output<any>({ alias: 'change' });\r\n\r\n private _valueBeforeInit: any;\r\n writeValue(v: any): void {\r\n if (this.value !== v) {\r\n if (!this._isContentInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n\r\n this._findRadioByValue(v);\r\n }\r\n setTimeout(() => {\r\n this._updateRadiosByValue();\r\n }, 0);\r\n }\r\n\r\n private _findRadioByValue(v: any): void {\r\n if (!this._radios) return;\r\n\r\n this.selected.set(this._radios().find(radio => v === radio.value()) ?? null);\r\n }\r\n\r\n /** Updates all child radios depending on the currently selected radio. */\r\n private _updateRadiosByValue(): void {\r\n if (!this._isContentInit) return;\r\n\r\n this._radios().forEach(radio => {\r\n radio.selected.set(this.value === radio.value());\r\n radio.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * The currently selected radio button. If set to a new radio button, the radio group value\r\n * will be updated to match the new selected button.\r\n */\r\n readonly selected = model<Nullable<ArdiumRadioComponent>>(null);\r\n\r\n private _checkSelectedRadioButton() {\r\n const s = this.selected();\r\n if (s && !s.selected()) {\r\n s.selected.set(true);\r\n s.markForCheck();\r\n }\r\n }\r\n\r\n //! name\r\n /** Name of the radio button group. All radio buttons inside this group will use this name. */\r\n readonly name = input<string>(crypto.randomUUID());\r\n\r\n private _updateRadioButtonNames(): void {\r\n if (this._radios()) {\r\n this._radios().forEach(radio => {\r\n radio.name.set(this.name());\r\n radio.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n //! update handlers\r\n private _handleBlurEvents(event: FocusEvent): void {\r\n this.onBlur(event);\r\n }\r\n private _handleFocusEvents(event: FocusEvent): void {\r\n this.onFocus(event);\r\n }\r\n private _handleChangeEvents(selected: ArdiumRadioComponent): void {\r\n this.writeValue(selected.value());\r\n\r\n this._emitChange();\r\n }\r\n\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.changeEvent.emit(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n //! hooks\r\n private _childEventSubs: OutputRefSubscription[] = [];\r\n private _isContentInit = false;\r\n ngAfterContentInit(): void {\r\n this._isContentInit = true;\r\n\r\n if (this._valueBeforeInit !== undefined) {\r\n this.writeValue(this._valueBeforeInit);\r\n }\r\n\r\n setTimeout(() => {\r\n this._updateRadioButtonNames();\r\n }, 0);\r\n\r\n //sub to child component events\r\n for (const radio of this._radios()) {\r\n this._childEventSubs.push(\r\n radio.blurEvent.subscribe(v => {\r\n this._handleBlurEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.focusEvent.subscribe(v => {\r\n this._handleFocusEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.selectedChange.subscribe((v: boolean) => {\r\n if (!v) return;\r\n this._handleChangeEvents(radio);\r\n })\r\n );\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this._destroyChildSubscriptions();\r\n }\r\n private _destroyChildSubscriptions(): void {\r\n for (const sub of this._childEventSubs) {\r\n sub.unsubscribe();\r\n }\r\n this._childEventSubs = [];\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumRadioGroupComponent } from './radio-group.component';\nimport { ArdiumRadioComponent } from './radio/radio.component';\n\n@NgModule({\n declarations: [ArdiumRadioGroupComponent, ArdiumRadioComponent],\n imports: [CommonModule],\n exports: [ArdiumRadioGroupComponent, ArdiumRadioComponent],\n})\nexport class ArdiumRadioModule {}\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { evaluate, isDefined, isObject, isPrimitive } from 'simple-bool';\r\nimport { ArdOptionSimple, CompareWithFn } from '../../types/item-storage.types';\r\nimport { Nullable } from '../../types/utility.types';\r\n\r\nexport interface ItemStorageHostDefaults {\r\n valueFrom: string;\r\n labelFrom: string;\r\n disabledFrom: string;\r\n}\r\nexport interface SimpleItemStorageHost {\r\n readonly valueFrom: Signal<Nullable<string>>;\r\n readonly labelFrom: Signal<Nullable<string>>;\r\n readonly disabledFrom: Signal<Nullable<string>>;\r\n readonly invertDisabled: Signal<boolean>;\r\n readonly DEFAULTS: ItemStorageHostDefaults;\r\n readonly compareWith: Signal<Nullable<CompareWithFn>>;\r\n readonly multiselectable: Signal<boolean>;\r\n readonly isValueRequired: Signal<boolean>;\r\n readonly maxSelectedItems: Signal<Nullable<number>>;\r\n readonly _componentId: string;\r\n}\r\n\r\nexport class SimpleItemStorage {\r\n private readonly _items = signal<ArdOptionSimple[]>([]);\r\n private readonly _highlightedItems = signal<ArdOptionSimple[]>([]);\r\n private readonly _selectedItems = signal<ArdOptionSimple[]>([]);\r\n\r\n constructor(private readonly _ardParentComp: SimpleItemStorageHost) {}\r\n\r\n /**\r\n * Gets all items.\r\n */\r\n readonly items = this._items.asReadonly();\r\n /**\r\n * Gets all currently highlighted items.\r\n */\r\n readonly highlightedItems = this._highlightedItems.asReadonly();\r\n /**\r\n * Gets all currently selected items.\r\n */\r\n readonly selectedItems = this._selectedItems.asReadonly();\r\n /**\r\n * Gets the values of the currently selected items.\r\n */\r\n readonly value = computed(() => this._itemsToValue(this._selectedItems()));\r\n /**\r\n * Maps an array of items into their values.\r\n * @param items The items to convert to value.\r\n * @returns An array of item values.\r\n */\r\n private _itemsToValue(items: ArdOptionSimple[]): any[] {\r\n return items.map(item => item.value());\r\n }\r\n\r\n /**\r\n * Returns true if at least one item is highlighted, otherwise false.\r\n */\r\n readonly isAnyItemHighlighted = computed(() => this._highlightedItems().length > 0);\r\n /**\r\n * Returns true if the parent component defines the limit of concurrently selectable items and the amount of currently selected items matches that limit. Otherwise returns false.\r\n *\r\n * **TLDR**: true if `maxSelectedItems` is defined and the number of selected items matches that value.\r\n */\r\n readonly isItemLimitReached = computed(() => {\r\n const msi = this._ardParentComp.maxSelectedItems();\r\n if (!this._ardParentComp.multiselectable() || !isDefined(msi)) {\r\n return false;\r\n }\r\n return msi <= this.selectedItems().length;\r\n });\r\n\r\n /**\r\n * Sets the component's items. Takes into account the values defined by the parent component for `valueFrom`, `labelFrom`, and `disabledFrom`.\r\n * @param items An array of items to be set as the component's items.\r\n * @returns true if at least one of the items is of primitive type, otherwise false.\r\n */\r\n setItems(items: unknown[]): boolean {\r\n let areItemsPrimitive = false;\r\n if (items.some(isPrimitive)) {\r\n items = items.map(this._primitiveItemsMapFn);\r\n areItemsPrimitive = true;\r\n }\r\n\r\n this._items.set(\r\n items.map((item, index) => {\r\n return this._setItemsMapFn(item, index, areItemsPrimitive);\r\n })\r\n );\r\n\r\n return areItemsPrimitive;\r\n }\r\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\r\n return { value: item };\r\n }\r\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdOptionSimple {\r\n if (areItemsPrimitive) {\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(rawItemData.value),\r\n label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),\r\n disabled: signal(false),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n };\r\n }\r\n //get value\r\n const valuePath =\r\n this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom() ?? this._ardParentComp.DEFAULTS.valueFrom;\r\n const value = resolvePath(rawItemData, valuePath);\r\n\r\n //get label\r\n const labelPath =\r\n this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom() ?? this._ardParentComp.DEFAULTS.labelFrom;\r\n const label = resolvePath(rawItemData, labelPath) ?? value;\r\n\r\n //get disabled\r\n const disabledPath = this._ardParentComp.disabledFrom() ?? this._ardParentComp.DEFAULTS.disabledFrom;\r\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\r\n if (this._ardParentComp.invertDisabled()) {\r\n disabled = !disabled;\r\n }\r\n\r\n //return\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(value),\r\n label: signal(label?.toString?.() ?? String(label)),\r\n disabled: signal(disabled),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n };\r\n }\r\n /**\r\n * Writes a new value to the item storage. Selects the correct items based on the provided values, warning the user if the value is not found.\r\n * @param ngModel The value of the ngModel to set.\r\n */\r\n writeValue(ngModel: any[]): void {\r\n this._forceUnselectAll();\r\n\r\n if (!this._validateWriteValue(ngModel)) return;\r\n\r\n const selectItemByValue = (value: any) => {\r\n const item = this.findItemByValue(value);\r\n\r\n if (item) {\r\n this.selectItem(item);\r\n return;\r\n }\r\n console.warn(\r\n `ARD-WA${this._ardParentComp._componentId}1: Couldn't find an item with value ${value?.toString?.() || String(value)}.`\r\n );\r\n };\r\n\r\n for (const modelValue of ngModel) {\r\n selectItemByValue(modelValue);\r\n }\r\n }\r\n /**\r\n * Validates that all values of the value to be written are able to be accurately compared against the storage items.\r\n *\r\n * An item from the ngModel array is considered valid if it is a primitive value, or if all of the below points are met:\r\n * 1. The parent component defines the `compareWith` property.\r\n * 2. The ngModel value item is an object (or array).\r\n * 3. The parent component has a defined `valueFrom` property.\r\n * @param ngModel The value of ngModel to validate.\r\n * @returns true if all items are valid, otherwise false.\r\n */\r\n private _validateWriteValue(ngModel: any[]): boolean {\r\n return ngModel.every(item => {\r\n if (!isDefined(this._ardParentComp.compareWith()) && isObject(item) && this._ardParentComp.valueFrom()) {\r\n console.warn(\r\n `ARD-FT${this._ardParentComp._componentId}0: Setting object(${JSON.stringify(\r\n item\r\n )}) as your model with [valueFrom] is not allowed unless [compareWith] is used.`\r\n );\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n findItemByValue(valueToFind: any): ArdOptionSimple | undefined {\r\n let findBy: (item: ArdOptionSimple) => boolean;\r\n const cmpFn = this._ardParentComp.compareWith();\r\n if (isDefined(cmpFn)) {\r\n findBy = item => cmpFn(valueToFind, item.value());\r\n } else {\r\n findBy = item => item.value() === valueToFind;\r\n }\r\n return this._items().find(item => findBy(item));\r\n }\r\n\r\n /**\r\n * Unselects all selected items.\r\n *\r\n * If the parent component requires at least one value to be selected at all times, the first selected items is left selected.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n unselectAll(): any[] {\r\n for (const item of this._selectedItems()) {\r\n item.selected.set(false);\r\n }\r\n\r\n const ret = this.value();\r\n\r\n if (this._ardParentComp.isValueRequired() && this._selectedItems().length > 0) {\r\n this._selectedItems().first().selected.set(true);\r\n ret.splice(0, 1);\r\n }\r\n\r\n this._selectedItems.set([]);\r\n\r\n return ret;\r\n }\r\n /**\r\n * Unselects all selected items, no matter what the component settings are.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n private _forceUnselectAll(): any[] {\r\n for (const item of this._selectedItems()) {\r\n item.selected.set(false);\r\n }\r\n\r\n const ret = this._itemsToValue(this._selectedItems());\r\n\r\n this._selectedItems.set([]);\r\n\r\n return ret;\r\n }\r\n /**\r\n * Selects one or multiple items.\r\n *\r\n * Accounts for the limit of concurrently selected items defined by the parent component.\r\n * @param items A rest operator array of item objects to be selected.\r\n * @returns A tuple containing three arrays, all mapped to only their values:\r\n * - An array of items selected,\r\n * - An array of items unselected,\r\n * - An array of items failed to select due to the limit.\r\n */\r\n selectItem(...items: ArdOptionSimple[]): [any[], any[], any[]] {\r\n if (this.isItemLimitReached()) {\r\n return [[], [], this._itemsToValue(items)];\r\n }\r\n let unselected = [];\r\n if (!this._ardParentComp.multiselectable()) {\r\n unselected = this._forceUnselectAll();\r\n }\r\n\r\n let itemsSelectedCount = 0;\r\n const itemsSelected: ArdOptionSimple[] = [];\r\n for (const item of items) {\r\n itemsSelectedCount++;\r\n if (item.selected()) continue;\r\n if (this.isItemLimitReached()) {\r\n break;\r\n }\r\n item.selected.set(true);\r\n itemsSelected.push(item);\r\n }\r\n this._selectedItems.update(v => [...v, ...itemsSelected]);\r\n\r\n const itemsFailedToSelect = items.slice(itemsSelectedCount - 1);\r\n return [this._itemsToValue(itemsSelected), unselected, this._itemsToValue(itemsFailedToSelect)];\r\n }\r\n /**\r\n *\r\n * @param items A rest operator array of item objects to be unselected.\r\n * @returns An array of items unselected, mapped to only their values.\r\n */\r\n unselectItem(...items: ArdOptionSimple[]): any[] {\r\n let skippedItem = false;\r\n for (const item of items) {\r\n if (this._ardParentComp.isValueRequired() && !skippedItem) {\r\n skippedItem = true;\r\n continue;\r\n }\r\n\r\n if (!item.selected()) continue;\r\n item.selected.set(false);\r\n }\r\n this._selectedItems.update(v => v.filter(v => v.selected()));\r\n\r\n return this._itemsToValue(items);\r\n }\r\n\r\n /**\r\n * Unhighlights all currently highlighted items.\r\n */\r\n unhighlightAll(): void {\r\n for (const item of this._highlightedItems()) {\r\n item.highlighted.set(false);\r\n }\r\n this._highlightedItems.set([]);\r\n }\r\n /**\r\n * Highlights the given item, while unhighlighting all other items. Does nothing when the item is disabled.\r\n * @param item The item to be highlighted.\r\n * @returns The highlighted item.\r\n */\r\n highlightSingleItem(item: ArdOptionSimple): ArdOptionSimple | null {\r\n if (!item || item.disabled()) return null;\r\n this.unhighlightAll();\r\n return this.highlightItem(item);\r\n }\r\n /**\r\n * Highlights all given items.\r\n * @param items A rest operator array of items to be highlighted.\r\n * @returns The last highlighted item.\r\n */\r\n highlightItem(...items: ArdOptionSimple[]): ArdOptionSimple {\r\n for (const item of items) {\r\n item.highlighted.set(true);\r\n }\r\n this._highlightedItems.update(v => [...v, ...items]);\r\n return items.last();\r\n }\r\n /**\r\n * Unhighlights all given items.\r\n * @param items A rest operator array of items to be unhighlighted.\r\n */\r\n unhighlightItem(...items: ArdOptionSimple[]): void {\r\n for (const item of items) {\r\n if (!item || !item.highlighted()) return;\r\n\r\n item.highlighted.set(false);\r\n }\r\n this._highlightedItems.update(v => v.filter(v => v.highlighted()));\r\n }\r\n /**\r\n * Highlights the first item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightFirstItem(): ArdOptionSimple | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().first();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights the last item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightLastItem(): ArdOptionSimple | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().last();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights all non-disabled items.\r\n */\r\n highlightAllItems(): void {\r\n const itemsToHighlight = this.highlightableItems();\r\n\r\n this.highlightItem(...itemsToHighlight);\r\n }\r\n /**\r\n * Highlights the next non-disabled item defined by the offset amount.\r\n *\r\n * If `hasShift` is set to true, all originally highlighted items are kept. Otherwise, all original items are unselected.\r\n * @param offset The amount of items to offset the highlight by.\r\n * @param hasShift Whether the user has the shift key pressed.\r\n * @returns The item highlighted.\r\n */\r\n highlightNextItem(offset: number, hasShift?: boolean): ArdOptionSimple | null {\r\n if (!this.isAnyItemHighlighted()) {\r\n return this.highlightFirstItem();\r\n }\r\n const currentItem = this.highlightedItems().last();\r\n const itemsWithoutDisabled = this._items().filter(\r\n item => !item.disabled() && (!this.isItemLimitReached() || item.selected())\r\n );\r\n const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index() === currentItem.index());\r\n\r\n let nextItemIndex = currentIndexInItems + offset;\r\n if (nextItemIndex >= itemsWithoutDisabled.length) {\r\n nextItemIndex -= itemsWithoutDisabled.length;\r\n }\r\n if (nextItemIndex < 0) {\r\n nextItemIndex += itemsWithoutDisabled.length;\r\n }\r\n const itemToHighlight = itemsWithoutDisabled[nextItemIndex];\r\n\r\n if (hasShift && this._ardParentComp.multiselectable()) {\r\n if (itemToHighlight.highlighted()) {\r\n this.unhighlightItem(currentItem);\r\n }\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n return this.highlightSingleItem(itemToHighlight);\r\n }\r\n /**\r\n * Finds all highlightable items. An item is considered highlightable if it is **not** disabled.\r\n * @returns An array of all highlightable items.\r\n */\r\n private readonly highlightableItems = computed(() => this._items().filter(item => !item.disabled()));\r\n}\r\n","import { ChangeDetectorRef, Directive, HostBinding, HostListener, Input, computed, input, output, signal } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { coerceArrayProperty, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { ArdOptionSimple, CompareWithFn, OptionContext } from '../types/item-storage.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { SimpleItemStorage, SimpleItemStorageHost } from './item-storages/simple-item-storage';\r\nimport { _NgModelComponentBase } from './ngmodel-component';\r\n\r\n@Directive()\r\nexport abstract class _SelectableListComponentBase\r\n extends _NgModelComponentBase\r\n implements ControlValueAccessor, SimpleItemStorageHost\r\n{\r\n //! public constants\r\n readonly itemStorage = new SimpleItemStorage(this);\r\n readonly htmlId = crypto.randomUUID();\r\n readonly element!: HTMLElement;\r\n readonly DEFAULTS = {\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n disabledFrom: 'disabled',\r\n };\r\n\r\n abstract readonly _componentId: string;\r\n abstract readonly _componentName: string;\r\n\r\n constructor(private _cd: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n //! binding-related inputs\r\n readonly valueFrom = input<Nullable<string>>(undefined);\r\n readonly labelFrom = input<Nullable<string>>(undefined);\r\n readonly disabledFrom = input<Nullable<string>>(undefined);\r\n readonly compareWith = input<Nullable<CompareWithFn>>(undefined);\r\n\r\n //! items setter/getter\r\n @Input()\r\n get items(): any[] {\r\n return this.itemStorage.items();\r\n }\r\n set items(value: any) {\r\n if (!Array.isArray(value)) value = coerceArrayProperty(value);\r\n\r\n const shouldPrintErrors = this.itemStorage.setItems(value);\r\n\r\n if (shouldPrintErrors) {\r\n this._printPrimitiveWarnings();\r\n }\r\n }\r\n private _printPrimitiveWarnings() {\r\n const makeWarning = (str: string): void => {\r\n console.warn(\r\n `ARD-WA${this._componentId} Skipped using [${str}] property bound to <ard-${this._componentName}>, as some provided items are of primitive type`\r\n );\r\n };\r\n if (this.valueFrom()) {\r\n makeWarning('valueFrom');\r\n }\r\n if (this.labelFrom()) {\r\n makeWarning('labelFrom');\r\n }\r\n if (this.disabledFrom()) {\r\n makeWarning('disabledFrom');\r\n }\r\n if (this.invertDisabled()) {\r\n makeWarning('invertDisabled');\r\n }\r\n }\r\n\r\n //! multiselectable\r\n readonly multiselectable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n @HostBinding('attr.multiple')\r\n @HostBinding('class.ard-multiselect')\r\n get _multiselectableHostAttribute() {\r\n return this.multiselectable();\r\n }\r\n\r\n readonly singleselectable = computed(() => !this.multiselectable());\r\n\r\n //! require value\r\n readonly requireValue = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly isValueRequired = computed(() => this.requireValue() || !this.multiselectable());\r\n\r\n @HostBinding('class.ard-require-value')\r\n get _requireValueHostAttribute() {\r\n return this.requireValue();\r\n }\r\n\r\n //! coerced properties\r\n readonly invertDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly maxSelectedItems = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n //! control value accessor\r\n //override the writeValue and setDisabledState defined in _NgModelComponent\r\n override setDisabledState(state: boolean): void {\r\n this.disabled.set(state);\r\n this._cd.markForCheck();\r\n }\r\n writeValue(ngModel: any[]): void {\r\n this.itemStorage.writeValue(ngModel);\r\n this._cd.markForCheck();\r\n }\r\n\r\n //! change & touch event emitters\r\n readonly touched = signal<boolean>(false);\r\n\r\n @HostBinding('class.ard-touched')\r\n get _touchedHostAttribute(): boolean {\r\n return this.touched();\r\n }\r\n\r\n protected _emitChange(): void {\r\n const value = this.itemStorage.value();\r\n this._onChangeRegistered?.(value);\r\n this.changeEvent.emit(value);\r\n this.valueChange.emit(value);\r\n }\r\n protected _onTouched(): void {\r\n if (this.touched()) return;\r\n\r\n this._onTouchedRegistered?.();\r\n this.touched.set(true);\r\n }\r\n\r\n //! focus & blur handlers\r\n private readonly lastBlurTimestamp = signal<Nullable<number>>(undefined);\r\n override onFocus(event: FocusEvent): void {\r\n super.onFocus(event);\r\n\r\n const lbt = this.lastBlurTimestamp();\r\n if (this.touched() || !lbt || lbt + 1 < Date.now()) return;\r\n this.lastBlurTimestamp.set(null);\r\n\r\n this._onTouched();\r\n }\r\n override onBlur(event: FocusEvent): void {\r\n super.onBlur(event);\r\n\r\n if (!this.touched()) this.lastBlurTimestamp.set(Date.now());\r\n }\r\n\r\n //! getters\r\n readonly highlightedItems = computed<ArdOptionSimple[]>(() => this.itemStorage.highlightedItems());\r\n readonly firstHighlightedItem = computed<Nullable<ArdOptionSimple>>(() => this.highlightedItems()?.first());\r\n readonly isItemLimitReached = computed(() => this.itemStorage.isItemLimitReached());\r\n\r\n //! context providers\r\n getOptionContext(item: ArdOptionSimple): OptionContext<ArdOptionSimple> {\r\n return {\r\n $implicit: item,\r\n item,\r\n itemData: item.itemData(),\r\n };\r\n }\r\n\r\n //! value input & output\r\n @Input()\r\n set value(newValue: any) {\r\n if (!Array.isArray(newValue)) newValue = coerceArrayProperty(newValue);\r\n this.writeValue(newValue);\r\n }\r\n readonly valueChange = output<any[]>();\r\n\r\n //! output events\r\n readonly changeEvent = output<any[]>({ alias: 'change' });\r\n readonly addEvent = output<any[]>({ alias: 'add' });\r\n readonly removeEvent = output<any[]>({ alias: 'remove' });\r\n\r\n //! item selection handlers\r\n toggleItem(item: ArdOptionSimple): void {\r\n if (item.selected()) {\r\n if (this.singleselectable()) return;\r\n\r\n this.unselectItem(item);\r\n return;\r\n }\r\n this.selectItem(item);\r\n }\r\n selectItem(...items: ArdOptionSimple[]): void {\r\n const [selected, unselected] = this.itemStorage.selectItem(...items);\r\n\r\n if (unselected.length > 0) this.removeEvent.emit(unselected);\r\n\r\n if (selected.length > 0) {\r\n this.addEvent.emit(selected);\r\n this._emitChange();\r\n }\r\n }\r\n unselectItem(...items: ArdOptionSimple[]): void {\r\n const unselected = this.itemStorage.unselectItem(...items);\r\n\r\n if (unselected.length > 0) this.removeEvent.emit(unselected);\r\n \r\n this._emitChange();\r\n }\r\n\r\n //! highligh-related\r\n\r\n readonly isMouseBeingUsed = signal<boolean>(false);\r\n @HostListener('mousemove')\r\n onMouseMove() {\r\n this.isMouseBeingUsed.set(true);\r\n }\r\n onItemMouseEnter(option: ArdOptionSimple, event: MouseEvent): void {\r\n if (!this.isMouseBeingUsed) return;\r\n this.itemStorage.highlightSingleItem(option);\r\n event.stopPropagation();\r\n }\r\n onItemMouseLeave(option: ArdOptionSimple, event: MouseEvent): void {\r\n if (!this.isMouseBeingUsed) return;\r\n this.itemStorage.unhighlightItem(option);\r\n event.stopPropagation();\r\n }\r\n\r\n //! click handlers\r\n onItemClick(option: ArdOptionSimple, event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.toggleItem(option);\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'Space':\r\n case 'Enter': {\r\n this._toggleHighlightedItems(event);\r\n return;\r\n }\r\n case 'ArrowRight': {\r\n this._highlightNext(event);\r\n return;\r\n }\r\n case 'ArrowLeft': {\r\n this._highlightPrevious(event);\r\n return;\r\n }\r\n case 'Home': {\r\n this._highlightFirst(event);\r\n return;\r\n }\r\n case 'End': {\r\n this._highlightLast(event);\r\n return;\r\n }\r\n case 'KeyA': {\r\n if (event.ctrlKey) {\r\n this._highlightAll();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n private _toggleHighlightedItems(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n\r\n const highlightedItems = this.highlightedItems();\r\n\r\n if (highlightedItems.every(item => item.selected)) {\r\n this.unselectItem(...highlightedItems);\r\n } else {\r\n this.selectItem(...highlightedItems);\r\n }\r\n }\r\n private _highlightPrevious(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightNextItem(-1, event.shiftKey);\r\n }\r\n private _highlightNext(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightNextItem(+1, event.shiftKey);\r\n }\r\n private _highlightFirst(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightFirstItem();\r\n }\r\n private _highlightLast(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightLastItem();\r\n }\r\n private _highlightAll(): void {\r\n this.itemStorage.highlightAllItems();\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({ selector: 'ng-template[ard-segm-option-tmp]' })\r\nexport class ArdSegmentOptionTemplateDirective {\r\n constructor(readonly template: TemplateRef<any>) {}\r\n}\r\n","import { FormElementAppearance, FormElementVariant } from '../types/theming.types';\n\nexport const SegmentVariant = {\n ...FormElementVariant,\n RoundedConnected: 'rounded-connected',\n SharpConnected: 'sharp-connected',\n PillConnected: 'pill-connected',\n} as const;\nexport type SegmentVariant = (typeof SegmentVariant)[keyof typeof SegmentVariant];\n\nexport const SegmentAppearance = {\n ...FormElementAppearance,\n FilledStrong: 'filled-strong',\n OutlinedStrong: 'outlined-strong',\n} as const;\nexport type SegmentAppearance = (typeof SegmentAppearance)[keyof typeof SegmentAppearance];\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n input\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { _SelectableListComponentBase } from '../_internal/selectable-list-component';\r\nimport { OneAxisAlignment } from '../types/alignment.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdOptionSimple } from '../types/item-storage.types';\r\nimport { SimpleItemStorageHost } from './../_internal/item-storages/simple-item-storage';\r\nimport { ArdSegmentOptionTemplateDirective } from './segment.directives';\r\nimport { SegmentAppearance, SegmentVariant } from './segment.types';\r\n\r\ninterface SegmentRow {\r\n options: ArdOptionSimple[];\r\n isNotFull?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ard-segment',\r\n templateUrl: './segment.component.html',\r\n styleUrls: ['./segment.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumSegmentComponent extends _SelectableListComponentBase implements SimpleItemStorageHost, AfterContentInit {\r\n override readonly _componentId: string = '104';\r\n override readonly _componentName: string = 'segment';\r\n\r\n //! appearance\r\n readonly appearance = input<SegmentAppearance>(SegmentAppearance.Outlined);\r\n readonly variant = input<SegmentVariant>(SegmentVariant.RoundedConnected);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly align = input<OneAxisAlignment>(OneAxisAlignment.Middle);\r\n\r\n readonly iconBased = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-align-${this.align()}`,\r\n this.iconBased() ? 'ard-icon-based' : '',\r\n this.compact() ? 'ard-compact' : '',\r\n this.itemRows().length > 1 ? 'ard-multirow' : 'ard-singlerow',\r\n ].join(' ')\r\n );\r\n\r\n //! coerced properties\r\n readonly autoFocus = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly uniformWidths = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly itemsPerRow = input<number, any>(Infinity, {\r\n transform: v => {\r\n const newValue = coerceNumberProperty(v, Infinity);\r\n if (newValue === 0) throw new Error(`ARD-FT1040a: Cannot set <ard-segment>'s [itemsPerRow] to 0.`);\r\n if (newValue < 0)\r\n throw new Error(`ARD-FT1040b: Cannot set <ard-segment>'s [itemsPerRow] to a negative value, got \"${newValue}\".`);\r\n if (newValue % 1 !== 0) {\r\n const roundedValue = Math.round(newValue) || 1; // round to nearest int, but never round to zero\r\n console.warn(\r\n new Error(\r\n `ARD-WA1040c: Cannot set <ard-segment>'s [itemsPerRow] to a non-interger value, got \"${newValue}\". The value was rounded to \"${roundedValue}\".`\r\n )\r\n );\r\n return Math.ceil(newValue);\r\n }\r\n return newValue;\r\n },\r\n });\r\n get itemsInActualRow(): number {\r\n return this.itemsPerRow() === Infinity ? this.items.length : this.itemsPerRow();\r\n }\r\n\r\n //! option template\r\n readonly optionTemplate = contentChild(ArdSegmentOptionTemplateDirective);\r\n\r\n //! lifecycle hooks\r\n ngAfterContentInit(): void {\r\n if (this.autoFocus()) {\r\n this.focus();\r\n }\r\n }\r\n\r\n //! item row getters\r\n readonly itemRows = computed<SegmentRow[]>(() => {\r\n const itemRows: SegmentRow[] = [];\r\n let currentRow: ArdOptionSimple[] = [];\r\n //get all rows\r\n for (const item of this.items) {\r\n //add item\r\n currentRow.push(item);\r\n\r\n //push if item amount reached the limit\r\n if (this.itemsPerRow() && currentRow.length === this.itemsPerRow()) {\r\n itemRows.push({ options: currentRow });\r\n currentRow = [];\r\n }\r\n }\r\n //push the last row if it is not empty\r\n if (currentRow.length !== 0) {\r\n itemRows.push({\r\n options: currentRow,\r\n isNotFull: Boolean(this.itemsPerRow()),\r\n });\r\n }\r\n return itemRows;\r\n });\r\n\r\n //! focus handler override\r\n override onFocus(event: FocusEvent): void {\r\n super.onFocus(event);\r\n\r\n if (this.itemStorage.isAnyItemHighlighted()) return;\r\n\r\n this.itemStorage.highlightFirstItem();\r\n }\r\n\r\n override onBlur(event: FocusEvent): void {\r\n super.onBlur(event);\r\n\r\n this.itemStorage.unhighlightAll();\r\n }\r\n}\r\n","<div\r\n #focusableElement\r\n class=\"ard-segment-container\"\r\n [class.ard-disabled]=\"disabled()\"\r\n [ariaDisabled]=\"disabled()\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-focus-visible]=\"isFocused && !isMouseBeingUsed\"\r\n [class.ard-using-keyboard]=\"!isMouseBeingUsed\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n @for (row of itemRows(); track $index) {\r\n <div\r\n class=\"ard-segment-row\"\r\n [class.ard-segment-row-partial]=\"row.isNotFull\"\r\n [class.ard-segment-row-uniform]=\"uniformWidths() || itemsPerRow() < items.length\"\r\n [style]=\"{ '--ard-_segment-row-items': itemsInActualRow }\"\r\n >\r\n @for (option of row.options; track $index) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-segment-option\"\r\n tabindex=\"-1\"\r\n [class.ard-option-disabled]=\"option.disabled() || (isItemLimitReached() && !option.selected())\"\r\n [class.ard-option-selected]=\"option.selected()\"\r\n [class.ard-option-highlighted]=\"option.highlighted()\"\r\n [ariaSelected]=\"option.selected()\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n (click)=\"onItemClick(option, $event)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ option.label() }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(option)\"\r\n />\r\n </span>\r\n </div>\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSegmentComponent } from './segment.component';\nimport { ArdSegmentOptionTemplateDirective } from './segment.directives';\n\n@NgModule({\n declarations: [ArdiumSegmentComponent, ArdSegmentOptionTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumSegmentComponent, ArdSegmentOptionTemplateDirective],\n})\nexport class ArdiumSegmentModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { SliderTooltipContext } from './slider.types';\n\n@Directive({\n selector: 'ng-template[ard-slider-tooltip-tmp]',\n})\nexport class ArdSliderTooltipDirective {\n constructor(public template: TemplateRef<SliderTooltipContext>) {}\n}\n","export interface SliderTooltipContext {\r\n value: string | number;\r\n $implicit: string | number;\r\n}\r\n\r\nexport const SliderTooltipBehavior = {\r\n Always: 'always',\r\n Auto: 'auto',\r\n Never: 'never',\r\n} as const;\r\nexport type SliderTooltipBehavior = (typeof SliderTooltipBehavior)[keyof typeof SliderTooltipBehavior];\r\n\r\nexport const SliderDecorationPosition = {\r\n Top: 'top',\r\n Bottom: 'bottom',\r\n} as const;\r\nexport type SliderDecorationPosition = (typeof SliderDecorationPosition)[keyof typeof SliderDecorationPosition];\r\n\r\nexport interface SliderLabelObject {\r\n label: string | number;\r\n for: number;\r\n}\r\nexport interface _InternalSliderLabelObject {\r\n label: string;\r\n positionPercent: string;\r\n}\r\n\r\nexport interface SliderRange<T = number> {\r\n low: T;\r\n high: T;\r\n}\r\n\r\nexport type SliderTooltipFormatFn = (value: number) => string | number;\r\n","import { Overlay, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n Renderer2,\r\n ViewContainerRef,\r\n computed,\r\n contentChild,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { roundToMultiple, roundToPrecision } from 'more-rounding';\r\nimport { isDefined, isObject } from 'simple-bool';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdSliderTooltipDirective } from './slider.directive';\r\nimport {\r\n SliderDecorationPosition,\r\n SliderLabelObject,\r\n SliderTooltipBehavior,\r\n SliderTooltipFormatFn,\r\n _InternalSliderLabelObject,\r\n} from './slider.types';\r\n\r\n@Directive()\r\nexport abstract class _AbstractSlider<T> extends _NgModelComponentBase {\r\n abstract readonly componentId: string;\r\n abstract readonly componentName: string;\r\n\r\n public readonly elementRef = viewChild<ElementRef<HTMLElement>>('track');\r\n\r\n protected readonly document = inject(DOCUMENT);\r\n protected readonly renderer = inject(Renderer2);\r\n protected readonly overlay = inject(Overlay);\r\n protected readonly scrollStrategyOpts = inject(ScrollStrategyOptions);\r\n protected readonly viewContainerRef = inject(ViewContainerRef);\r\n\r\n readonly noTooltip = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly tooltipFormat = input<Nullable<SliderTooltipFormatFn>>();\r\n\r\n protected abstract _updateTooltipValue(): void;\r\n\r\n //! min, max, step sizes\r\n readonly min = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) });\r\n readonly max = input<number, any>(100, { transform: v => coerceNumberProperty(v, 100) });\r\n\r\n readonly step = input<number, any>(1, {\r\n transform: v => {\r\n const step = coerceNumberProperty(v, 1);\r\n if (step === 0) {\r\n throw new Error(`ARD-FT${this.componentId}0a: Cannot set <ard-${this.componentName}>'s [step] to 0.`);\r\n }\r\n if (step < 0) {\r\n throw new Error(`ARD-FT${this.componentId}0b: Cannot set <ard-${this.componentName}>'s [step] to a negative value, got ${step}.`);\r\n }\r\n return step;\r\n },\r\n });\r\n\r\n readonly shiftMultiplier = input<number, any>(5, { transform: v => coerceNumberProperty(v, 1) });\r\n\r\n protected readonly _stepSizeComputed = computed<number>(() => this.step() / Math.abs(this.min() - this.max()));\r\n\r\n //! value ticks\r\n readonly showValueTicks = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly percentStepSize = computed<number>(() => this._stepSizeComputed() * 100);\r\n\r\n protected readonly _tickArray = computed<string[]>(() => {\r\n const newArr: number[] = [];\r\n\r\n let positionPercentCumulative = 0;\r\n while (positionPercentCumulative < 100) {\r\n newArr.push(positionPercentCumulative);\r\n positionPercentCumulative += this._stepSizeComputed() * 100;\r\n positionPercentCumulative = roundToPrecision(positionPercentCumulative, 6);\r\n }\r\n newArr.push(100);\r\n\r\n return newArr.map(v => `${v}%`);\r\n });\r\n\r\n //! labels\r\n readonly labelPosition = input<SliderDecorationPosition>(SliderDecorationPosition.Bottom);\r\n\r\n readonly labelObjects = input<_InternalSliderLabelObject[], SliderLabelObject[] | number[] | null>([], {\r\n alias: 'labels',\r\n transform: val => {\r\n if (!isDefined(val) || val.length === 0) {\r\n return [];\r\n }\r\n return val.map(this._numberLabelArrayMapFn).map(label => {\r\n const v = this._clampValue(label.for);\r\n return {\r\n label: String(label.label),\r\n positionPercent: `${this._valueToPercent(v) * 100}%`,\r\n };\r\n });\r\n },\r\n });\r\n\r\n protected _numberLabelArrayMapFn(val: SliderLabelObject | number): SliderLabelObject {\r\n if (isObject(val)) return val;\r\n return {\r\n label: val,\r\n for: val,\r\n };\r\n }\r\n\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-color-${this.color()}`,\r\n `ard-labels-${this.labelPosition()}`,\r\n `ard-tooltip-${this.tooltipPosition()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! determining transition\r\n readonly sliderTransition = computed(() => {\r\n const x = this._totalSteps();\r\n //this is determined using this graph: https://www.geogebra.org/calculator/nqgnhpap\r\n //capped at y=80\r\n //this specific graph is chosen because it looks the best in my opinion\r\n const formulaResult = (20 * (x + 200)) / (x + 20) - 80;\r\n const formulaResultRounded = roundToPrecision(formulaResult, 3);\r\n\r\n if (formulaResultRounded < 0) return '0';\r\n\r\n const transitionDuration = Math.min(80, formulaResultRounded);\r\n return transitionDuration + 'ms';\r\n });\r\n private readonly _totalSteps = computed<number>(() => (this.max() - this.min()) / this.step());\r\n\r\n //! value input & output\r\n //! abstract here\r\n protected abstract _value: T;\r\n @Input()\r\n set value(newValue: T) {\r\n this.writeValue(newValue);\r\n }\r\n get value(): T {\r\n return this._value;\r\n }\r\n readonly valueChange = output<T>();\r\n\r\n //! writeValue\r\n //! abstract here\r\n abstract override writeValue(v: any): void; //* abstact\r\n //! methods for programmatic manipulation\r\n abstract reset(): void;\r\n\r\n protected _offset(offset: number, hasShift: boolean, handleId = 1): void {\r\n const stepSize = this._stepSizeComputed() * (hasShift ? this.shiftMultiplier() : 1);\r\n let newPercent = this._positionPercent[handleId - 1] + stepSize * offset;\r\n newPercent = this._clampPercentValue(newPercent);\r\n this._setValueFromPercent(newPercent);\r\n }\r\n\r\n //! helper methods\r\n protected _clampValue(v: number): number {\r\n //clamp between min and max\r\n v = Math.min(v, this.max());\r\n v = Math.max(v, this.min());\r\n //round to the nearest step\r\n v -= this.min();\r\n v = roundToMultiple(v, this.step());\r\n v += this.min();\r\n return v;\r\n }\r\n protected _valueToPercent(v: number): number {\r\n const minMaxDifference = Math.abs(this.min() - this.max());\r\n return (v - this.min()) / minMaxDifference;\r\n }\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n //! tooltip\r\n readonly tooltipTemplate = contentChild(ArdSliderTooltipDirective);\r\n\r\n readonly tooltipPosition = input<SliderDecorationPosition>(SliderDecorationPosition.Top);\r\n readonly tooltipBehavior = input<SliderTooltipBehavior>(SliderTooltipBehavior.Auto);\r\n\r\n //! event handlers\r\n protected readonly _grabbedHandleId = signal<null | number>(null);\r\n protected _shouldCheckForMovement = false;\r\n protected _bodyHasClass = false;\r\n\r\n readonly isSliderHandleGrabbed = computed(() => !!this._grabbedHandleId());\r\n\r\n abstract onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void; //* abstact\r\n\r\n onPointerDownOnHandle(event: MouseEvent | TouchEvent, handleId = 1): void {\r\n this._grabbedHandleId.set(handleId);\r\n this._shouldCheckForMovement = true;\r\n if (!this._bodyHasClass) {\r\n this._bodyHasClass = true;\r\n this.renderer.addClass(this.document.body, 'ard-prevent-touch-actions');\r\n }\r\n }\r\n\r\n abstract onPointerMove(event: MouseEvent | TouchEvent): void; //* abstact\r\n\r\n @HostListener('document:pointerup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onPointerUp(): void {\r\n if (!this._shouldCheckForMovement) return;\r\n this._grabbedHandleId.set(null);\r\n this._shouldCheckForMovement = false;\r\n if (this._bodyHasClass) {\r\n this._bodyHasClass = false;\r\n this.renderer.removeClass(this.document.body, 'ard-prevent-touch-actions');\r\n }\r\n }\r\n\r\n //! position calculators\r\n protected _positionPercent: [number] | [number, number] = [0];\r\n getHandlePosition(handleId = 1): string {\r\n return this._positionPercent[handleId - 1] * 100 + '%';\r\n }\r\n protected _setValueFromPercent(percent: number, handleId: number | null = 1): void {\r\n if (!handleId) return;\r\n if (this._positionPercent[handleId - 1] === percent) return;\r\n this._positionPercent[handleId - 1] = percent;\r\n this._value = this._percentValueToValue(percent, handleId);\r\n\r\n this._updateTooltipValue();\r\n\r\n this._emitChange();\r\n }\r\n protected _writeValueFromEvent(event: MouseEvent | TouchEvent, handleId?: number | null): void {\r\n const percent = this._getPercentValueFromEvent(event);\r\n this._setValueFromPercent(percent, handleId);\r\n }\r\n protected abstract _percentValueToValue(percent: number, handleId?: number): T; //* abstact\r\n\r\n protected _getElementRect(): DOMRect {\r\n return this.elementRef()!.nativeElement.getBoundingClientRect();\r\n }\r\n protected _clampPercentValue(percent: number): number {\r\n //clamp between 0 and 1\r\n percent = Math.min(percent, 1);\r\n percent = Math.max(percent, 0);\r\n //round to the nearest step\r\n percent = roundToMultiple(percent, this._stepSizeComputed());\r\n return percent;\r\n }\r\n protected _getPercentValueFromEvent(event: MouseEvent | TouchEvent): number {\r\n const rect = this._getElementRect();\r\n let position: number;\r\n if (event instanceof MouseEvent) {\r\n position = event.clientX;\r\n } else {\r\n position = event.targetTouches[0].clientX;\r\n }\r\n const percent = (position - rect.left) / rect.width;\r\n return this._clampPercentValue(percent);\r\n }\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'ArrowLeft': {\r\n this._decrement(event);\r\n return;\r\n }\r\n case 'ArrowRight': {\r\n this._increment(event);\r\n return;\r\n }\r\n }\r\n }\r\n protected _decrement(event: KeyboardEvent, steps = 1): void {\r\n this._offset(-steps, event.shiftKey);\r\n }\r\n protected _increment(event: KeyboardEvent, steps = 1): void {\r\n this._offset(+steps, event.shiftKey);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, HostListener, ViewEncapsulation } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { roundToPrecision } from 'more-rounding';\r\nimport { _AbstractSlider } from './abstract-slider';\r\nimport { SliderTooltipContext } from './slider.types';\r\n\r\n@Component({\r\n selector: 'ard-slider',\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSliderComponent extends _AbstractSlider<number> {\r\n readonly componentId = '105';\r\n readonly componentName = 'slider';\r\n\r\n //! value input & output\r\n protected _value = 0;\r\n\r\n //! tooltip updater\r\n _tooltipValue = String(this.value);\r\n\r\n protected _updateTooltipValue(): void {\r\n let v: string | number = this._value;\r\n const formatFn = this.tooltipFormat();\r\n if (formatFn) v = formatFn(v);\r\n this._tooltipValue = String(v);\r\n }\r\n\r\n getTooltipContext(): SliderTooltipContext {\r\n return {\r\n value: this._tooltipValue,\r\n $implicit: this._tooltipValue,\r\n };\r\n }\r\n\r\n //! writeValue\r\n writeValue(v: any): void {\r\n v = Number(v);\r\n if (isNaN(v)) {\r\n this.reset();\r\n return;\r\n }\r\n v = this._clampValue(v);\r\n this._value = v;\r\n this._positionPercent[0] = this._valueToPercent(v);\r\n this._updateTooltipValue();\r\n }\r\n\r\n //! methods for programmatic manipulation\r\n reset(): void {\r\n this._value = 0;\r\n this._positionPercent[0] = 0;\r\n }\r\n increment(steps = 1): void {\r\n this._offset(steps, false);\r\n }\r\n decrement(steps = 1): void {\r\n this._offset(-steps, false);\r\n }\r\n\r\n //! event handlers\r\n onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void {\r\n this._writeValueFromEvent(event);\r\n this.onPointerDownOnHandle(event);\r\n }\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onPointerMove(event: MouseEvent | TouchEvent): void {\r\n if (!this._shouldCheckForMovement) return;\r\n this._writeValueFromEvent(event);\r\n }\r\n\r\n //! position calculators\r\n protected _percentValueToValue(percent: number): number {\r\n const minMaxDifference = Math.abs(this.min() - this.max());\r\n const newVal = percent * minMaxDifference + this.min();\r\n //round to 9 decimal places to avoid floating point arithmetic errors\r\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\r\n return roundToPrecision(newVal, 9);\r\n }\r\n}\r\n","<div\r\n class=\"ard-slider-container-master\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-slider-handle-grabbed]=\"isSliderHandleGrabbed()\"\r\n [style]=\"{ '--_ard-slider-transition': sliderTransition() }\"\r\n>\r\n <div class=\"ard-slider-container\">\r\n <div\r\n #track\r\n class=\"ard-slider-track\"\r\n (pointerdown)=\"onTrackHitboxPointerDown($event)\"\r\n >\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slider-track-overlay ard-slider-track-inactive\"></div>\r\n <div\r\n class=\"ard-slider-track-overlay ard-slider-track-active\"\r\n [style]=\"{ width: getHandlePosition(1) }\"\r\n ></div>\r\n @if (showValueTicks()) {\r\n <div class=\"ard-value-tick-container\">\r\n @for (tick of _tickArray(); track tick) {\r\n <div\r\n class=\"ard-value-tick\"\r\n [style]=\"{ left: tick }\"\r\n ></div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed()\"\r\n (pointerdown)=\"onPointerDownOnHandle($event)\"\r\n (touchstart)=\"onPointerDownOnHandle($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext()\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n </div>\r\n @if (labelObjects().length) {\r\n <div\r\n class=\"ard-slider-label-container\"\r\n *ngIf=\"labelObjects.length\"\r\n >\r\n @for (label of labelObjects(); track $index) {\r\n <div\r\n class=\"ard-slider-label\"\r\n [style]=\"{ left: label.positionPercent }\"\r\n >\r\n {{ label.label }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { OverlayModule } from '@angular/cdk/overlay';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumSliderComponent } from './slider.component';\r\nimport { ArdSliderTooltipDirective } from './slider.directive';\r\n\r\n@NgModule({\r\n declarations: [ArdiumSliderComponent, ArdSliderTooltipDirective],\r\n imports: [CommonModule, OverlayModule],\r\n exports: [ArdiumSliderComponent, ArdSliderTooltipDirective],\r\n})\r\nexport class ArdiumSliderModule {}\r\n","import { ChangeDetectionStrategy, Component, HostListener, OnInit, ViewEncapsulation, signal } from '@angular/core';\r\nimport { roundToPrecision } from 'more-rounding';\r\nimport { isNumber, isObject } from 'simple-bool';\r\nimport { _AbstractSlider } from '../abstract-slider';\r\nimport { SliderRange, SliderTooltipContext } from '../slider.types';\r\n\r\n@Component({\r\n selector: 'ard-range-slider',\r\n templateUrl: './range-slider.component.html',\r\n styleUrls: ['./range-slider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumRangeSliderComponent extends _AbstractSlider<SliderRange> implements OnInit {\r\n readonly componentId = '106';\r\n readonly componentName = 'range-slider';\r\n\r\n protected _value: SliderRange = { low: -Infinity, high: Infinity };\r\n\r\n ngOnInit(): void {\r\n if (this._value.low !== -Infinity && this._value.high !== Infinity) return;\r\n\r\n this.writeValue({ low: this.min(), high: this.max() });\r\n }\r\n\r\n //! writeValue\r\n private _isValidObject(v: any): v is SliderRange {\r\n return isObject(v) && isNumber(v['low']) && isNumber(v['high']);\r\n }\r\n private _isValidTuple(v: any): v is [number, number] {\r\n return Array.isArray(v) && isNumber(v[0]) && isNumber(v[1]) && v.length === 2;\r\n }\r\n private _arrayValueToObjectValue(v: [number, number]): SliderRange {\r\n return { low: v[0], high: v[1] };\r\n }\r\n private _normalizeSliderRange(v: SliderRange): SliderRange {\r\n if (v.low <= v.high) return v;\r\n return { low: v.high, high: v.low };\r\n }\r\n writeValue(v: any): void {\r\n if (!this._isValidObject(v) && !this._isValidTuple(v)) {\r\n this.reset();\r\n return;\r\n }\r\n let low = -Infinity;\r\n let high = Infinity;\r\n if (this._isValidObject(v)) {\r\n low = v.low;\r\n high = v.high;\r\n } else if (this._isValidTuple(v)) {\r\n low = v[0];\r\n high = v[1];\r\n }\r\n const lowClamped = this._clampValue(low);\r\n const highClamped = this._clampValue(high);\r\n const value: SliderRange = this._arrayValueToObjectValue([lowClamped, highClamped]);\r\n this._value = value;\r\n this._positionPercent[0] = this._valueToPercent(lowClamped);\r\n this._positionPercent[1] = this._valueToPercent(highClamped);\r\n this._updateTooltipValue();\r\n }\r\n override get value(): SliderRange {\r\n return this._normalizeSliderRange(this._value);\r\n }\r\n override set value(v: any) {\r\n this.writeValue(v);\r\n }\r\n\r\n //! tooltip updater\r\n _tooltipValue: SliderRange<string | number> = this.value;\r\n\r\n protected _updateTooltipValue(): void {\r\n const v: SliderRange<string | number> = Object.create(this._value);\r\n const formatFn = this.tooltipFormat();\r\n if (formatFn) {\r\n v.low = formatFn(v.low as number);\r\n v.high = formatFn(v.high as number);\r\n }\r\n this._tooltipValue = v;\r\n }\r\n\r\n getTooltipContext(type: 'low' | 'high'): SliderTooltipContext {\r\n return {\r\n value: this._tooltipValue[type],\r\n $implicit: this._tooltipValue[type],\r\n };\r\n }\r\n\r\n //! methods for programmatic manipulation\r\n reset(): void {\r\n this._value = { low: -Infinity, high: Infinity };\r\n this._positionPercent[0] = 0;\r\n this._positionPercent[1] = 1;\r\n }\r\n\r\n //! track overlay getters\r\n get trackOverlayLeft(): string {\r\n return Math.min(...this._positionPercent) * 100 + '%';\r\n }\r\n get trackOverlayWidth(): string {\r\n return Math.abs(this._positionPercent[0] - this._positionPercent[1]!) * 100 + '%';\r\n }\r\n\r\n //! event handlers\r\n onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void {\r\n this._writeValueFromEvent(event);\r\n this.onPointerDownOnHandle(event);\r\n }\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onPointerMove(event: MouseEvent | TouchEvent): void {\r\n if (!this._shouldCheckForMovement) return;\r\n if (!this._bodyHasClass) {\r\n this._bodyHasClass = true;\r\n this.renderer.addClass(this.document.body, 'ard-prevent-touch-actions');\r\n }\r\n this._writeValueFromEvent(event, this._grabbedHandleId());\r\n }\r\n\r\n //! position calculators\r\n protected _percentValueToValue(percent: number, handleId: number): SliderRange {\r\n const minMaxDifference = Math.abs(this.min() - this.max());\r\n let newVal = percent * minMaxDifference + this.min();\r\n //round to 9 decimal places to avoid floating point arithmetic errors\r\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\r\n newVal = roundToPrecision(newVal, 9);\r\n\r\n const newValObj = { low: this._value.low, high: this._value.high };\r\n if (handleId === 1) {\r\n newValObj.low = newVal;\r\n } else {\r\n newValObj.high = newVal;\r\n }\r\n return newValObj;\r\n }\r\n\r\n //! handle focus monitors\r\n readonly currentHandle = signal<1 | 2 | null>(null);\r\n onHandleFocus(event: FocusEvent, handleId: 1 | 2) {\r\n this.onFocus(event);\r\n\r\n this.currentHandle.set(handleId);\r\n }\r\n override onBlur(event: FocusEvent) {\r\n super.onBlur(event);\r\n this.currentHandle.set(null);\r\n }\r\n}\r\n","<div\r\n class=\"ard-range-slider-container-master\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-slider-handle-grabbed]=\"isSliderHandleGrabbed()\"\r\n [style]=\"{ '--_ard-slider-transition': sliderTransition() }\"\r\n>\r\n <div class=\"ard-slider-container\">\r\n <div\r\n #track\r\n class=\"ard-slider-track\"\r\n (pointerdown)=\"onTrackHitboxPointerDown($event)\"\r\n >\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slider-track-overlay ard-slider-track-inactive\"></div>\r\n <div\r\n class=\"ard-slider-track-overlay ard-slider-track-active\"\r\n [style]=\"{\r\n left: trackOverlayLeft,\r\n width: trackOverlayWidth\r\n }\"\r\n ></div>\r\n @if (showValueTicks()) {\r\n <div class=\"ard-value-tick-container\">\r\n @for (tick of _tickArray(); track tick) {\r\n <div\r\n class=\"ard-value-tick\"\r\n [style]=\"{ left: tick }\"\r\n ></div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed() && currentHandle() === 1\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 1)\"\r\n (focus)=\"onHandleFocus($event, 1)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext('low')\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed() && currentHandle() === 2\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 2)\"\r\n (focus)=\"onHandleFocus($event, 2)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(2) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(2) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext('high')\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n </div>\r\n @if (labelObjects().length) {\r\n <div\r\n class=\"ard-slider-label-container\"\r\n *ngIf=\"labelObjects.length\"\r\n >\r\n @for (label of labelObjects(); track $index) {\r\n <div\r\n class=\"ard-slider-label\"\r\n [style]=\"{ left: label.positionPercent }\"\r\n >\r\n {{ label.label }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<ng-template #handleThumbBase>\r\n <div class=\"ard-slide-thumb\"></div>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumRangeSliderComponent } from './range-slider.component';\n\n@NgModule({\n declarations: [ArdiumRangeSliderComponent],\n imports: [CommonModule],\n exports: [ArdiumRangeSliderComponent],\n})\nexport class ArdiumRangeSliderModule {}\n","export const ClickStrategy = {\r\n Noop: 'noop',\r\n Default: 'default',\r\n} as const;\r\nexport type ClickStrategy = (typeof ClickStrategy)[keyof typeof ClickStrategy];\r\n\r\n/**\r\n * Represents an array type that must contain at least one element.\r\n *\r\n * @template T - The type of elements in the array.\r\n */\r\nexport type NonEmptyArray<T> = [T, ...T[]];\r\n\r\nexport type Nullable<T> = T | undefined | null;\r\n","import { SimpleComponentColor } from '../types/colors.types';\n\nexport const StarFillMode = {\n /**\n * The star is not filled, just an outline.\n */\n None: 'none',\n /**\n * Half of the star is filled.\n */\n Half: 'half',\n /**\n * The star is fully filled.\n */\n Filled: 'filled',\n} as const;\nexport type StarFillMode = (typeof StarFillMode)[keyof typeof StarFillMode];\n\nexport const StarColor = {\n ...SimpleComponentColor,\n /**\n * THe app's color set for all stars. Usually gold or yellow-gold.\n */\n Star: 'star',\n} as const;\nexport type StarColor = (typeof StarColor)[keyof typeof StarColor];\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { StarColor, StarFillMode } from './star.types';\r\n\r\n@Component({\r\n selector: 'ard-star',\r\n templateUrl: './star.component.html',\r\n styleUrls: ['./star.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumStarComponent {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(StarColor.Star);\r\n readonly fill = input<StarFillMode>(StarFillMode.Filled);\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [this.wrapperClasses(), `ard-color-${this.color()}`, `ard-star-fill-${this.fill()}`].join(' ')\r\n );\r\n}\r\n","<div\r\n class=\"ard-star\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-star-icon ard-star-selected\"></div>\r\n <div class=\"ard-star-icon ard-star-half\"></div>\r\n <div class=\"ard-star-icon ard-star-unselected\"></div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, forwardRef, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { _BooleanComponentBase } from '../../_internal/boolean-component';\r\nimport { ClickStrategy } from '../../types/utility.types';\r\nimport { StarColor } from '../star.types';\r\nimport { StarFillMode } from './../star.types';\r\n\r\n@Component({\r\n selector: 'ard-star-button',\r\n templateUrl: './star-button.component.html',\r\n styleUrls: ['./star-button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumStarButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumStarButtonComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly clickStrategy = input<ClickStrategy>(ClickStrategy.Default);\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(StarColor.Star);\r\n\r\n readonly ngClasses = computed<string>(() => [this.wrapperClasses(), `ard-color-${this.color}`].join(' '));\r\n\r\n readonly starFillState = computed<StarFillMode>(() => (this.selected() ? StarFillMode.Filled : StarFillMode.None));\r\n\r\n onClick(): void {\r\n if (this.clickStrategy() === ClickStrategy.Noop) return;\r\n this.toggleSelected();\r\n }\r\n}\r\n","<button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-star-button\"\r\n [ngClass]=\"ngClasses()\"\r\n (click)=\"onClick()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-star\r\n [fill]=\"starFillState()\"\r\n [color]=\"color()\"\r\n ></ard-star>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStarComponent } from './star.component';\n\n@NgModule({\n declarations: [ArdiumStarComponent],\n imports: [CommonModule],\n exports: [ArdiumStarComponent],\n})\nexport class ArdiumStarModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStarButtonComponent } from './star-button.component';\nimport { ArdiumStarModule } from '../star.module';\n\n@NgModule({\n declarations: [ArdiumStarButtonComponent],\n imports: [CommonModule, ArdiumStarModule],\n exports: [ArdiumStarButtonComponent],\n})\nexport class ArdiumStarButtonModule {}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostListener,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n forwardRef,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n viewChildren,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { ArdiumStarButtonComponent } from '../star-button/star-button.component';\r\nimport { _NgModelComponentBase } from './../../_internal/ngmodel-component';\r\nimport { StarColor } from './../star.types';\r\n\r\ninterface StarInputObject {\r\n filled: boolean;\r\n isInValue: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ard-star-input',\r\n templateUrl: './star-input.component.html',\r\n styleUrls: ['./star-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumStarInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumStarInputComponent extends _NgModelComponentBase implements ControlValueAccessor {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(StarColor.Star);\r\n\r\n readonly ngClasses = computed<string>(() => [this.wrapperClasses(), `ard-color-${this.color()}`].join(' '));\r\n\r\n //! events\r\n readonly changeEvent = output<number>({ alias: 'change' });\r\n readonly highlightEvent = output<number>({ alias: 'highlight' });\r\n\r\n readonly value = model<number>(0);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const hi = this._highlightedStarIndex();\r\n if (hi !== null) {\r\n this.highlightEvent.emit(hi);\r\n }\r\n });\r\n effect(() => {\r\n this.value(); // let the effect know when to fire\r\n this._emitChange();\r\n });\r\n }\r\n\r\n //! stars\r\n readonly max = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) });\r\n\r\n readonly starButtonInstances = viewChildren<ArdiumStarButtonComponent>('starButton');\r\n private readonly _highlightedStarIndex = signal<number | null>(null);\r\n\r\n readonly starArray = computed<StarInputObject[]>(() => {\r\n const v = this.value();\r\n const max = this.max();\r\n const hi = Math.round(this._highlightedStarIndex() ?? -1);\r\n\r\n const arr = new Array(max);\r\n for (let i = 0; i < max; i++) {\r\n if (i <= hi) {\r\n arr[i] = { filled: true, isInValue: true };\r\n continue;\r\n }\r\n if (i < v) {\r\n arr[i] = { filled: hi === -1, isInValue: true };\r\n continue;\r\n }\r\n arr[i] = { filled: false, isInValue: false };\r\n }\r\n return arr;\r\n });\r\n\r\n //! ControlValueAccessor's writeValue\r\n writeValue(v: number): void {\r\n this.value.set(v);\r\n }\r\n onStarClick(index: number): void {\r\n this.value.set(index + 1);\r\n }\r\n onStarHighlight(index: number): void {\r\n this._highlightedStarIndex.set(index);\r\n }\r\n setDisplayToValue() {\r\n this._highlightedStarIndex.set(null);\r\n }\r\n protected _emitChange(): void {\r\n this._onChangeRegistered?.(this.value());\r\n this.changeEvent.emit(this.value());\r\n }\r\n\r\n //* focus handlers\r\n private _isFocusEventSuppressed = false;\r\n private _isBlurEventSuppressed = false;\r\n private _currentFocusIndex: number | null = null;\r\n onStarButtonFocus(index: number, event: FocusEvent) {\r\n this._currentFocusIndex = index;\r\n if (this._isFocusEventSuppressed) {\r\n this._isFocusEventSuppressed = false;\r\n return;\r\n }\r\n this.focusEvent.emit(event);\r\n }\r\n onStarButtonBlur(event: FocusEvent): void {\r\n this._currentFocusIndex = null;\r\n if (this._isBlurEventSuppressed) {\r\n this._isBlurEventSuppressed = false;\r\n return;\r\n }\r\n this.blurEvent.emit(event);\r\n }\r\n focusStarButtonByIndex(index: number): void {\r\n if (!this.starButtonInstances()) return;\r\n this.starButtonInstances()[index]!.focus();\r\n }\r\n focusNextStarButton(offset: number): void {\r\n if (!this.starButtonInstances() || this._currentFocusIndex === null) return;\r\n\r\n let nextIndex = this._currentFocusIndex + offset;\r\n nextIndex = Math.min(nextIndex, this.max() - 1);\r\n nextIndex = Math.max(nextIndex, 0);\r\n\r\n this.focusStarButtonByIndex(nextIndex);\r\n }\r\n private _suppressFocusEvents(): void {\r\n this._isFocusEventSuppressed = true;\r\n this._isBlurEventSuppressed = true;\r\n }\r\n\r\n override focus(): void {\r\n this.focusStarButtonByIndex(0);\r\n }\r\n override blur(): void {\r\n if (!this.starButtonInstances() || this._currentFocusIndex === null) return;\r\n this.starButtonInstances()[this._currentFocusIndex]!.blur();\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'Tab': {\r\n this._onTabPress();\r\n return;\r\n }\r\n case 'ArrowRight': {\r\n this._onArrowRightPress(event);\r\n return;\r\n }\r\n case 'ArrowLeft': {\r\n this._onArrowLeftPress(event);\r\n return;\r\n }\r\n case 'Home': {\r\n this._onHomePress(event);\r\n return;\r\n }\r\n case 'End': {\r\n this._onEndPress(event);\r\n return;\r\n }\r\n }\r\n }\r\n private _onArrowRightPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this.focusNextStarButton(+1);\r\n }\r\n private _onArrowLeftPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this.focusNextStarButton(-1);\r\n }\r\n private _onHomePress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this.focusStarButtonByIndex(0);\r\n }\r\n private _onEndPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this._onTabPress();\r\n }\r\n private _onTabPress(): void {\r\n this.focusStarButtonByIndex(this.max() - 1);\r\n }\r\n}\r\n","<div\r\n class=\"ard-star-input\"\r\n [ngClass]=\"ngClasses()\"\r\n (mouseleave)=\"setDisplayToValue()\"\r\n>\r\n @for (object of starArray(); track $index) {\r\n <ard-star-button\r\n #starButton\r\n [class.ard-star-not-in-value]=\"!object.isInValue\"\r\n [color]=\"object.isInValue ? color() : 'none'\"\r\n clickStrategy=\"noop\"\r\n [selected]=\"object.filled\"\r\n (click)=\"onStarClick($index)\"\r\n (focus)=\"onStarButtonFocus($index, $event)\"\r\n (blur)=\"onStarButtonBlur($event)\"\r\n (mouseenter)=\"onStarHighlight($index)\"\r\n [tabIndex]=\"tabIndex()\"\r\n />\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumStarButtonModule } from '../star-button/star-button.module';\nimport { ArdiumStarInputComponent } from './star-input.component';\n\n@NgModule({\n declarations: [ArdiumStarInputComponent],\n imports: [CommonModule, ArdiumStarButtonModule],\n exports: [ArdiumStarInputComponent],\n})\nexport class ArdiumStarInputModule {}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n forwardRef,\r\n input,\r\n model,\r\n output,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from './../_internal/ngmodel-component';\r\nimport { ArdiumStarButtonComponent } from './../star/star-button/star-button.component';\r\nimport { StateboxState, StateboxValue, _StateboxInternalState } from './statebox.types';\r\n\r\nconst DEFAULT_STATES: StateboxState[] = [\r\n { value: false, color: 'none' },\r\n { value: true, color: 'secondary', icon: 'check_box', filled: true },\r\n];\r\n\r\n@Component({\r\n selector: 'ard-statebox',\r\n templateUrl: './statebox.component.html',\r\n styleUrls: ['./statebox.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumStarButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumStateboxComponent extends _NgModelComponentBase implements ControlValueAccessor {\r\n readonly states = input<StateboxState[]>(DEFAULT_STATES);\r\n readonly _states = computed(() => this.states().map(this._stateMapFn));\r\n readonly _defaultState = computed(() => this._states()[0]);\r\n\r\n readonly manualStateHandling = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! appearance\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n this.wrapperClasses(),\r\n this.internalState().useCustomColor ? 'ard-color-custom' : `ard-color-${this.internalState().color}`,\r\n this.internalState().filled ? 'ard-statebox-filled' : '',\r\n this.internalState().keepFrame ? 'ard-statebox-keep-frame' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! events\r\n readonly changeEvent = output<StateboxValue>({ alias: 'change' });\r\n readonly clickEvent = output<MouseEvent>({ alias: 'click' });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n this.state(); // let the effect know when to fire\r\n this._emitChange();\r\n });\r\n }\r\n\r\n //! state handlers\r\n readonly state = model<StateboxValue>(this._defaultState().value);\r\n private readonly _stateIndex = computed<number>(() => {\r\n const v = this.state();\r\n const foundStateIndex = this._states().findIndex(state => state.value === v);\r\n return foundStateIndex === -1 ? 0 : foundStateIndex;\r\n });\r\n readonly internalState = computed<_StateboxInternalState>(() => this._states()[this._stateIndex()]);\r\n\r\n writeValue(v: StateboxValue) {\r\n this.state.set(v);\r\n }\r\n\r\n //! change handlers\r\n private _stateMapFn(state: StateboxState): _StateboxInternalState {\r\n let display: string;\r\n let displayAsIcon = false;\r\n let keepFrame = true;\r\n\r\n if (state.icon) {\r\n display = state.icon;\r\n displayAsIcon = true;\r\n keepFrame = false;\r\n } else if (state.character) {\r\n display = state.character.substring(0, 1);\r\n } else {\r\n display = '';\r\n }\r\n return {\r\n value: state.value,\r\n display,\r\n displayAsIcon,\r\n color: state.color ?? state.customColor ?? 'none',\r\n useCustomColor: state.color ? false : true,\r\n colorOnCustom: state.colorOnCustom,\r\n filled: state.filled ?? false,\r\n keepFrame: state.keepFrame ?? keepFrame,\r\n };\r\n }\r\n\r\n //! event handlers\r\n onClick(event: MouseEvent) {\r\n if (this.manualStateHandling()) {\r\n this.clickEvent.emit(event);\r\n return;\r\n }\r\n\r\n let newIndex = this._stateIndex() + 1;\r\n if (newIndex >= this._states().length) {\r\n newIndex = 0;\r\n }\r\n this.state.set(this._states()[newIndex].value);\r\n }\r\n\r\n protected _emitChange() {\r\n const s = this.state();\r\n this._onChangeRegistered?.(s);\r\n this.changeEvent.emit(s);\r\n }\r\n\r\n readonly ngStyle = computed<Record<string, any>>(() => {\r\n let customColor = null;\r\n const state = this.internalState();\r\n if (state.useCustomColor) {\r\n customColor = state.color;\r\n }\r\n return {\r\n '--ard-custom-color': customColor,\r\n '--ard-on-custom-color': state.colorOnCustom ?? '#fff',\r\n };\r\n });\r\n}\r\n","<button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-statebox\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (click)=\"onClick($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"ngStyle()\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n @if (internalState().keepFrame) {\r\n <div class=\"ard-statebox-frame\"></div>\r\n }\r\n <div [class]=\"internalState().displayAsIcon ? 'ard-statebox-icon' : 'ard-statebox-character'\">\r\n {{ internalState().display }}\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStateboxComponent } from './statebox.component';\n\n@NgModule({\n declarations: [ArdiumStateboxComponent],\n imports: [CommonModule],\n exports: [ArdiumStateboxComponent],\n})\nexport class ArdiumStateboxModule {}\n","export const ArdSlideToggleAppearance = {\r\n Raised: 'raised',\r\n Contained: 'contained',\r\n} as const;\r\nexport type ArdSlideToggleAppearance = (typeof ArdSlideToggleAppearance)[keyof typeof ArdSlideToggleAppearance];\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, forwardRef, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { _BooleanComponentBase } from './../_internal/boolean-component';\r\nimport { ArdSlideToggleAppearance } from './slide-toggle.types';\r\n\r\n@Component({\r\n selector: 'ard-slide-toggle',\r\n templateUrl: './slide-toggle.component.html',\r\n styleUrls: ['./slide-toggle.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSlideToggleComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSlideToggleComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n readonly wrapperClass = input<string | undefined | null>(undefined);\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly appearance = input<ArdSlideToggleAppearance>(ArdSlideToggleAppearance.Raised);\r\n readonly icon = input<string | undefined | null>(undefined);\r\n readonly selectedIcon = input<string | undefined | null>(undefined);\r\n readonly unselectedIcon = input<string | undefined | null>(undefined);\r\n\r\n readonly ngClasses = computed(() => {\r\n return [`ard-color-${this.color()}`, `ard-appearance-${this.appearance()}`, this.wrapperClass() ?? ''].join(' ');\r\n });\r\n}\r\n","<button\r\n type=\"button\"\r\n role=\"checkbox\"\r\n [ariaChecked]=\"selected()\"\r\n class=\"ard-slide-toggle\"\r\n [class.ard-slide-toggle-selected]=\"selected()\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (click)=\"toggleSelected()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slide-toggle-track\">\r\n <div class=\"ard-slide-toggle-track-overlay\"></div>\r\n </div>\r\n <div class=\"ard-slide-toggle-handle\">\r\n <div class=\"ard-focus-overlay\"></div>\r\n @if (selectedIcon() ?? icon()) {\r\n <div class=\"ard-slide-toggle-icon ard-icon-for-selected\">{{ selectedIcon() ?? icon() }}</div>\r\n } @if (unselectedIcon() ?? icon()) {\r\n <div class=\"ard-slide-toggle-icon ard-icon-for-unselected\">{{ unselectedIcon() ?? icon() }}</div>\r\n }\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSlideToggleComponent } from './slide-toggle.component';\n\n@NgModule({\n declarations: [ArdiumSlideToggleComponent],\n imports: [CommonModule],\n exports: [ArdiumSlideToggleComponent],\n})\nexport class ArdiumSlideToggleModule {}\n","export const CheckboxState = {\n Unselected: 'unselected',\n Indeterminate: 'indeterminate',\n Selected: 'selected',\n} as const;\nexport type CheckboxState = (typeof CheckboxState)[keyof typeof CheckboxState];\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, forwardRef, input, model } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { _BooleanComponentBase } from './../_internal/boolean-component';\r\nimport { CheckboxState } from './checkbox.types';\r\n\r\n@Component({\r\n selector: 'ard-checkbox',\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumCheckboxComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumCheckboxComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n readonly wrapperClasses = input<string>('');\r\n readonly htmlId = input<string>('');\r\n\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n readonly unselectedColor = input<SimpleComponentColor>(SimpleComponentColor.None);\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-color-${this.color()}`,\r\n `ard-unselected-color-${this.unselectedColor()}`,\r\n `ard-checkbox-${this.state()}`,\r\n ].join(' ')\r\n );\r\n\r\n //override the \"selected\" setter, so it changes the state too.\r\n override set _selected(v: any) {\r\n const selected = coerceBooleanProperty(v);\r\n this.selected.set(selected);\r\n this.state.set(selected ? CheckboxState.Selected : CheckboxState.Unselected);\r\n }\r\n\r\n readonly state = model<CheckboxState>(CheckboxState.Unselected);\r\n\r\n //! click action\r\n toggleState() {\r\n let newState: CheckboxState = CheckboxState.Unselected;\r\n if (this.state() === CheckboxState.Unselected) {\r\n newState = CheckboxState.Selected;\r\n }\r\n this.state.set(newState);\r\n this.selected.set(this.state() === CheckboxState.Selected);\r\n\r\n this._emitChange();\r\n }\r\n}\r\n","<button\r\n class=\"ard-checkbox\"\r\n role=\"checkbox\"\r\n type=\"button\"\r\n [id]=\"htmlId()\"\r\n [ariaChecked]=\"selected()\"\r\n [tabindex]=\"tabIndex()\"\r\n [ngClass]=\"ngClasses()\"\r\n (click)=\"toggleState()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-checkbox-icon ard-icon-for-selected\"></div>\r\n <div class=\"ard-checkbox-icon ard-icon-for-indeterminate\"></div>\r\n <div class=\"ard-checkbox-icon ard-icon-for-unselected\"></div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumCheckboxComponent } from './checkbox.component';\n\n@NgModule({\n declarations: [ArdiumCheckboxComponent],\n imports: [CommonModule],\n exports: [ArdiumCheckboxComponent],\n})\nexport class ArdiumCheckboxModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ButtonType } from '../../types/button.types';\r\nimport { _ButtonBase } from '../_button-base';\r\nimport { FABSize } from '../general-button.types';\r\n\r\n@Component({\r\n selector: 'ard-fab',\r\n templateUrl: './fab.component.html',\r\n styleUrls: ['./fab.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumFabComponent extends _ButtonBase {\r\n readonly type = input<ButtonType>(ButtonType.Button);\r\n \r\n //! appearance\r\n readonly size = input<FABSize>(FABSize.Standard);\r\n\r\n readonly extended = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-fab-size-${this.size()}`,\r\n this.lightColoring() ? `ard-light-coloring` : '',\r\n this.extended() ? 'ard-fab-extended' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n class=\"ard-fab\"\r\n [type]=\"type()\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div\r\n class=\"ard-button-content\"\r\n #content\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumFabComponent } from './fab.component';\n\n@NgModule({\n declarations: [ArdiumFabComponent],\n imports: [CommonModule],\n exports: [ArdiumFabComponent],\n})\nexport class ArdiumFabModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../../_internal/focusable-component';\r\nimport { ButtonType } from '../../types/button.types';\r\nimport { ComponentColor } from '../../types/colors.types';\r\n\r\n@Component({\r\n selector: 'ard-icon-button',\r\n templateUrl: './icon-button.component.html',\r\n styleUrls: ['./icon-button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumIconButtonComponent extends _FocusableComponentBase {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly type = input<ButtonType>(ButtonType.Button);\r\n\r\n //! button settings\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly lightColoring = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n 'ard-appearance-transparent',\r\n `ard-color-${this.disabled() ? ComponentColor.None : this.color()}`,\r\n this.lightColoring() ? `ard-light-coloring` : '',\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n class=\"ard-icon-button\"\r\n [type]=\"type()\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumIconButtonComponent } from './icon-button.component';\n\n@NgModule({\n declarations: [ArdiumIconButtonComponent],\n imports: [CommonModule],\n exports: [ArdiumIconButtonComponent],\n})\nexport class ArdiumIconButtonModule {}\n","export const CheckboxListAlignType = {\n LeftClumped: 'left-clumped',\n LeftSplit: 'left-split',\n RightSplit: 'right-split',\n RightClumped: 'right-clumped',\n} as const;\nexport type CheckboxListAlignType = (typeof CheckboxListAlignType)[keyof typeof CheckboxListAlignType];\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { SimpleItemStorage, SimpleItemStorageHost } from '../_internal/item-storages/simple-item-storage';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdOptionSimple, CompareWithFn } from '../types/item-storage.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { CheckboxListAlignType } from './checkbox-list.types';\r\n\r\n@Component({\r\n selector: 'ard-checkbox-list',\r\n templateUrl: './checkbox-list.component.html',\r\n styleUrls: ['./checkbox-list.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumCheckboxListComponent extends _NgModelComponentBase implements SimpleItemStorageHost, AfterViewInit {\r\n readonly htmlId = input<string>(crypto.randomUUID());\r\n\r\n @HostBinding('attr.id')\r\n get _htmlIdHostAttribute() {\r\n return this.htmlId();\r\n }\r\n\r\n readonly DEFAULTS = {\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n disabledFrom: 'disabled',\r\n };\r\n // static values. Not meant to be changed.\r\n readonly multiselectable = signal<true>(true);\r\n readonly isValueRequired = signal<false>(false);\r\n readonly _componentId = '300';\r\n readonly _componentName = 'checkbox-list';\r\n\r\n private readonly _itemStorage = new SimpleItemStorage(this);\r\n\r\n readonly valueFrom = input<string>(this.DEFAULTS.valueFrom);\r\n readonly labelFrom = input<string>(this.DEFAULTS.labelFrom);\r\n readonly disabledFrom = input<string>(this.DEFAULTS.disabledFrom);\r\n\r\n @Input()\r\n set items(v: any[]) {\r\n this._itemStorage.setItems(v);\r\n }\r\n get items(): ArdOptionSimple[] {\r\n return this._itemStorage.items();\r\n }\r\n\r\n readonly compareWith = input<Nullable<CompareWithFn>>(undefined);\r\n\r\n readonly invertDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly maxSelectedItems = input<number, any>(Infinity, { transform: v => coerceNumberProperty(v) });\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly align = input<CheckboxListAlignType>(CheckboxListAlignType.LeftClumped);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [`ard-color-${this.color()}`, `ard-align-${this.align()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! value\r\n @Input()\r\n get value(): any {\r\n return this._itemStorage.value();\r\n }\r\n set value(v: any) {\r\n this.writeValue(v);\r\n }\r\n\r\n readonly valueChange = output<any>();\r\n readonly changeEvent = output<any>({ alias: 'change' });\r\n\r\n private _valueBeforeInit: any;\r\n writeValue(v: any): void {\r\n if (!this._isViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this._itemStorage.writeValue(v);\r\n }\r\n\r\n private _isViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._isViewInit = true;\r\n\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n }\r\n }\r\n\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.changeEvent.emit(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n onItemHighlight(v: ArdOptionSimple): void {\r\n this._itemStorage.highlightSingleItem(v);\r\n }\r\n onItemFocus(v: ArdOptionSimple): void {\r\n this._itemStorage.highlightSingleItem(v);\r\n }\r\n onItemBlur(): void {\r\n this._itemStorage.unhighlightAll();\r\n }\r\n selectItem(v: ArdOptionSimple): void {\r\n this._itemStorage.selectItem(v);\r\n this._emitChange();\r\n }\r\n unselectItem(v: ArdOptionSimple): void {\r\n this._itemStorage.unselectItem(v);\r\n this._emitChange();\r\n }\r\n toggleItem(v: ArdOptionSimple): void {\r\n if (v.selected()) {\r\n this.unselectItem(v);\r\n return;\r\n }\r\n this.selectItem(v);\r\n }\r\n}\r\n","<div\r\n class=\"ard-checkbox-list\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (item of items; track item.index()) {\r\n <div\r\n class=\"ard-checkbox-list__item\"\r\n [class.ard-item-highlighted]=\"item.highlighted()\"\r\n [class.ard-item-disabled]=\"item.disabled()\"\r\n (mouseover)=\"onItemHighlight(item)\"\r\n (mouseleave)=\"onItemBlur()\"\r\n (click)=\"toggleItem(item)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-checkbox\r\n [selected]=\"item.selected()\"\r\n [disabled]=\"item.disabled()\"\r\n [color]=\"color()\"\r\n [htmlId]=\"htmlId() + item.index()\"\r\n [tabIndex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onItemFocus(item)\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onItemBlur()\"\r\n (select)=\"selectItem(item)\"\r\n (unselect)=\"unselectItem(item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n <label [for]=\"htmlId() + item.index()\">\r\n {{ item.label() }}\r\n </label>\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumCheckboxListComponent } from './checkbox-list.component';\nimport { ArdiumCheckboxModule } from '../checkbox/checkbox.module';\n\n@NgModule({\n declarations: [ArdiumCheckboxListComponent],\n imports: [CommonModule, ArdiumCheckboxModule],\n exports: [ArdiumCheckboxListComponent],\n})\nexport class ArdiumCheckboxListModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\n\r\n@Component({\r\n selector: 'ard-spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrls: ['./spinner.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumSpinnerComponent {\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n\r\n readonly ngClasses = computed((): string => [`ard-color-${this.color()}`].join(' '));\r\n}\r\n","<svg\r\n class=\"ard-spinner\"\r\n [ngClass]=\"ngClasses()\"\r\n viewBox=\"0 0 100 100\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n>\r\n <circle\r\n class=\"ard-spinner-circle\"\r\n cx=\"50\"\r\n cy=\"50\"\r\n r=\"20\"\r\n ></circle>\r\n</svg>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSpinnerComponent } from './spinner.component';\n\n@NgModule({\n declarations: [ArdiumSpinnerComponent],\n imports: [CommonModule],\n exports: [ArdiumSpinnerComponent],\n})\nexport class ArdiumSpinnerModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { ProgressBarValueContext } from './progress-bar.types';\n\n@Directive({ selector: 'ard-progress-bar > ng-template[ard-value-tmp]' })\nexport class ArdProgressBarValueTemplateDirective {\n constructor(public template: TemplateRef<ProgressBarValueContext>) {}\n}\n","export interface ProgressBarValueContext {\r\n value: number;\r\n $implicit: number;\r\n}\r\n\r\nexport const ProgressBarSize = {\r\n Default: 'default',\r\n Auto: 'auto',\r\n} as const;\r\nexport type ProgressBarSize = (typeof ProgressBarSize)[keyof typeof ProgressBarSize];\r\n\r\nexport const ProgressBarAppearance = {\r\n Colorless: 'colorless',\r\n Colored: 'colored',\r\n} as const;\r\nexport type ProgressBarAppearance = (typeof ProgressBarAppearance)[keyof typeof ProgressBarAppearance];\r\n\r\nexport const ProgressBarVariant = {\r\n Sharp: 'sharp',\r\n Pill: 'pill',\r\n} as const;\r\nexport type ProgressBarVariant = (typeof ProgressBarVariant)[keyof typeof ProgressBarVariant];\r\n\r\nexport const ProgressBarMode = {\r\n Determinate: 'determinate',\r\n Indeterminate: 'indeterminate',\r\n Buffer: 'buffer',\r\n Query: 'query',\r\n} as const;\r\nexport type ProgressBarMode = (typeof ProgressBarMode)[keyof typeof ProgressBarMode];\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n input,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { ArdProgressBarValueTemplateDirective } from './progress-bar.directive';\r\nimport { ProgressBarMode, ProgressBarSize, ProgressBarValueContext, ProgressBarVariant } from './progress-bar.types';\r\n\r\n@Component({\r\n selector: 'ard-progress-bar',\r\n templateUrl: './progress-bar.component.html',\r\n styleUrls: ['./progress-bar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumProgressBarComponent {\r\n readonly value = input<number, any>(0, { transform: v => coerceNumberProperty(v) });\r\n readonly bufferValue = input<number, any>(0, { transform: v => coerceNumberProperty(v) });\r\n\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n readonly variant = input<ProgressBarVariant>(ProgressBarVariant.Pill);\r\n readonly size = input<ProgressBarSize>(ProgressBarSize.Default);\r\n readonly mode = input<ProgressBarMode>(ProgressBarMode.Determinate);\r\n\r\n readonly hideValue = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-progress-bar__size-${this.size()}`,\r\n `ard-progress-bar__mode-${this.mode()}`,\r\n this.hideValue() ? 'ard-progress-bar__hide-value' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! error detection\r\n constructor() {\r\n effect(() => {\r\n if (this.mode() === ProgressBarMode.Buffer && this.size() === ProgressBarSize.Auto) {\r\n console.error(\r\n new Error(\r\n `ARD-NF4010: Forbidden param combination in <ard-progress-bar>: cannot use 'mode=\"buffer\"' and 'size=\"auto\"' at the same time.`\r\n )\r\n );\r\n }\r\n });\r\n }\r\n\r\n //! bar styling\r\n readonly cssVariables = computed<string>(() => {\r\n if (this.mode() === ProgressBarMode.Indeterminate || this.mode() === ProgressBarMode.Query) {\r\n return '--ard-_progress-bar-main: 0;';\r\n }\r\n const mainVariable = `--ard-_progress-bar-main: ${this.value()}%;`;\r\n if (this.mode() === ProgressBarMode.Buffer) {\r\n return mainVariable + `--ard-_progress-bar-buffer: ${this.bufferValue()}%;`;\r\n }\r\n return mainVariable;\r\n });\r\n\r\n //! templates\r\n @ContentChild(ArdProgressBarValueTemplateDirective, { read: TemplateRef })\r\n valueTemplate?: TemplateRef<any>;\r\n\r\n readonly getValueContext = computed<ProgressBarValueContext>(() => ({\r\n value: this.value(),\r\n $implicit: this.value(),\r\n }));\r\n}\r\n","<div\r\n class=\"ard-progress-bar\"\r\n role=\"progressbar\"\r\n [style]=\"cssVariables()\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-progress-bar__background\"></div>\r\n <div class=\"ard-progress-bar__overlay-buffer\"></div>\r\n <div class=\"ard-progress-bar__overlay\"></div>\r\n <div class=\"ard-progress-bar__value\">\r\n <ng-template\r\n #defaultValueTemplate\r\n let-value\r\n >\r\n {{ value * 100 | number: '1.0-0' }}%\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"getValueContext()\"\r\n ></ng-template>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumProgressBarComponent } from './progress-bar.component';\nimport { ArdProgressBarValueTemplateDirective } from './progress-bar.directive';\n\n@NgModule({\n declarations: [ArdiumProgressBarComponent, ArdProgressBarValueTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumProgressBarComponent, ArdProgressBarValueTemplateDirective],\n})\nexport class ArdiumProgressBarModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { ProgressCircleValueContext } from './progress-circle.types';\n\n@Directive({ selector: 'ard-progress-circle > ng-template[ard-value-tmp]' })\nexport class ArdProgressCircleValueTemplateDirective {\n constructor(public template: TemplateRef<ProgressCircleValueContext>) {}\n}\n","export interface ProgressCircleValueContext {\r\n value: number;\r\n percentValue: number;\r\n max: number;\r\n $implicit: number;\r\n}\r\n\r\nexport const ProgressCircleAppearance = {\r\n Transparent: 'transparent',\r\n Colorless: 'colorless',\r\n Colored: 'colored',\r\n} as const;\r\nexport type ProgressCircleAppearance = (typeof ProgressCircleAppearance)[keyof typeof ProgressCircleAppearance];\r\n\r\nexport const ProgressCircleVariant = {\r\n Full: 'full',\r\n Ring: 'ring',\r\n} as const;\r\nexport type ProgressCircleVariant = (typeof ProgressCircleVariant)[keyof typeof ProgressCircleVariant];\r\n","import { ChangeDetectionStrategy, Component, ContentChild, TemplateRef, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { ArdProgressCircleValueTemplateDirective } from './progress-circle.directive';\r\nimport { ProgressCircleAppearance, ProgressCircleValueContext, ProgressCircleVariant } from './progress-circle.types';\r\n\r\n@Component({\r\n selector: 'ard-progress-circle',\r\n templateUrl: './progress-circle.component.html',\r\n styleUrls: ['./progress-circle.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumProgressCircleComponent {\r\n readonly value = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) });\r\n readonly max = input<number, any>(100, { transform: v => coerceNumberProperty(v, 100) });\r\n\r\n readonly percentValue = computed<number>(() => (this.value() / this.max()) * 100);\r\n\r\n //! appearance\r\n readonly appearance = input<ProgressCircleAppearance>(ProgressCircleAppearance.Transparent);\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n readonly variant = input<ProgressCircleVariant>(ProgressCircleVariant.Full);\r\n\r\n readonly hideValue = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly reverse = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-progress-circle-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n this.hideValue() ? 'ard-progress-circle-hide-value' : '',\r\n this.reverse() ? 'ard-progress-circle-reversed' : '',\r\n ].join(' ')\r\n );\r\n\r\n readonly fillPercentVariable = computed<string>(() => {\r\n const fillAmount = this.reverse() ? 100 - this.percentValue() : this.percentValue();\r\n return `--ard-_progress-circle-fill-amount: ${fillAmount}%`;\r\n });\r\n\r\n //! templates\r\n @ContentChild(ArdProgressCircleValueTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n valueTemplate?: TemplateRef<any>;\r\n\r\n readonly getValueContext = computed<ProgressCircleValueContext>(() => ({\r\n value: this.value(),\r\n percentValue: Math.round(this.percentValue()),\r\n max: this.max(),\r\n $implicit: Math.round(this.percentValue()),\r\n }));\r\n}\r\n","<div\r\n class=\"ard-progress-circle\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-progress-circle-background\"></div>\r\n <div\r\n class=\"ard-progress-circle-overlay\"\r\n [style]=\"fillPercentVariable()\"\r\n ></div>\r\n <div class=\"ard-progress-circle-value\">\r\n <ng-template\r\n #defaultValueTemplate\r\n let-value\r\n >\r\n {{ value }}%\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"getValueContext()\"\r\n ></ng-template>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumProgressCircleComponent } from './progress-circle.component';\nimport { ArdProgressCircleValueTemplateDirective } from './progress-circle.directive';\n\n@NgModule({\n declarations: [ArdiumProgressCircleComponent, ArdProgressCircleValueTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumProgressCircleComponent, ArdProgressCircleValueTemplateDirective],\n})\nexport class ArdiumProgressCircleModule {}\n","export const BadgeSize = {\n Small: 'small',\n Medium: 'medium',\n Large: 'large',\n} as const;\nexport type BadgeSize = (typeof BadgeSize)[keyof typeof BadgeSize];\n\nexport const BadgePosition = {\n AboveBefore: 'above-before',\n AboveAfter: 'above-after',\n BelowBefore: 'below-before',\n BelowAfter: 'below-after',\n Before: 'before',\n After: 'after',\n Above: 'above',\n Below: 'below',\n} as const;\nexport type BadgePosition = (typeof BadgePosition)[keyof typeof BadgePosition];\n","import { AfterViewInit, Directive, ElementRef, OnChanges, OnDestroy, Renderer2, computed, input, signal } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { FormElementVariant } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { BadgePosition, BadgeSize } from './badge.types';\r\n\r\n@Directive({\r\n selector: '[ardBadge]',\r\n})\r\nexport class ArdiumBadgeDirective implements OnChanges, AfterViewInit, OnDestroy {\r\n constructor(\r\n private _elRef: ElementRef,\r\n private _renderer: Renderer2\r\n ) {}\r\n\r\n readonly text = input<string>('', { alias: 'ardBadge' });\r\n\r\n readonly color = input<ComponentColor>(ComponentColor.Primary, { alias: 'ardBadgeColor' });\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Pill, { alias: 'ardBadgeVariant' });\r\n readonly size = input<BadgeSize>(BadgeSize.Medium, { alias: 'ardBadgeSize' });\r\n\r\n readonly position = input<BadgePosition, BadgePosition>(BadgePosition.AboveAfter, {\r\n alias: 'ardBadgePosition',\r\n transform: v => {\r\n switch (v) {\r\n case BadgePosition.Before:\r\n return BadgePosition.AboveBefore;\r\n case BadgePosition.After:\r\n case BadgePosition.Above:\r\n return BadgePosition.AboveAfter;\r\n case BadgePosition.Below:\r\n return BadgePosition.BelowAfter;\r\n\r\n default:\r\n return v;\r\n }\r\n },\r\n });\r\n\r\n readonly ariaLabel = input<string>('', { alias: 'ardBadgeAriaLabel' });\r\n\r\n readonly hidden = input<boolean, any>(false, { alias: 'ardBadgeHidden', transform: v => coerceBooleanProperty(v) });\r\n readonly overlap = input<boolean, any>(false, { alias: 'ardBadgeOverlap', transform: v => coerceBooleanProperty(v) });\r\n\r\n private readonly _elementClasses = computed(() =>\r\n [\r\n 'ard-badge',\r\n `ard-color-${this.color()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-badge-size-${this.size()}`,\r\n `ard-badge-position-${this.position()}`,\r\n this.hidden() ? 'ard-badge-hidden' : '',\r\n this.overlap() ? 'ard-badge-overlap' : 'ard-badge-no-overlap',\r\n ].join(' ')\r\n );\r\n\r\n private _createBadgeElement(): HTMLElement {\r\n try {\r\n const R = this._renderer;\r\n const element = R.createElement('div') as HTMLDivElement;\r\n R.setAttribute(element, 'class', this._elementClasses());\r\n R.setAttribute(element, 'aria-label', this.ariaLabel());\r\n\r\n if (this.text()) {\r\n const textHost = R.createElement('div') as HTMLDivElement;\r\n R.addClass(textHost, 'ard-badge-content');\r\n\r\n const text = R.createText(this.text());\r\n R.appendChild(textHost, text);\r\n R.appendChild(element, textHost);\r\n }\r\n\r\n return element;\r\n } catch (error: unknown) {\r\n if (error instanceof Error) {\r\n error.message = 'ARD-FT4030: An unknown error has occured while rendering ardBadge: ' + error.message;\r\n throw error;\r\n }\r\n throw new Error(`ARD-FT4030: An unknown error has occured while rendering ardBadge: ` + error);\r\n }\r\n }\r\n\r\n private readonly _badgeElement = signal<Nullable<HTMLElement>>(undefined);\r\n ngOnChanges(): void {\r\n if (this._badgeElement()) {\r\n this._renderer.removeChild(this._elRef.nativeElement, this._badgeElement());\r\n }\r\n const element = this._createBadgeElement();\r\n this._badgeElement.set(element);\r\n this._renderer.appendChild(this._elRef.nativeElement, element);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._renderer.addClass(this._elRef.nativeElement, 'ard-badge-host');\r\n }\r\n ngOnDestroy(): void {\r\n if (this._badgeElement()) {\r\n this._renderer.removeChild(this._elRef.nativeElement, this._badgeElement());\r\n }\r\n this._renderer.removeClass(this._elRef.nativeElement, 'ard-badge-host');\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumBadgeDirective } from './badge.directive';\n\n@NgModule({\n declarations: [ArdiumBadgeDirective],\n imports: [CommonModule],\n exports: [ArdiumBadgeDirective],\n})\nexport class ArdiumBadgeModule {}\n","export const ColorDisplayAppearance = {\n Rounded: 'rounded with-border',\n Circle: 'circle with-border',\n Sharp: 'sharp with-border',\n RoundedBorderless: 'rounded',\n CircleBorderless: 'circle',\n SharpBorderless: 'sharp',\n} as const;\nexport type ColorDisplayAppearance = (typeof ColorDisplayAppearance)[keyof typeof ColorDisplayAppearance];\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ViewEncapsulation, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport * as Color from 'color';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { ColorDisplayAppearance } from './color-display.types';\r\n\r\n@Component({\r\n selector: 'ard-color-display',\r\n templateUrl: './color-display.component.html',\r\n styleUrls: ['./color-display.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumColorDisplayComponent implements AfterViewInit {\r\n readonly ariaLabel = input<string>('');\r\n\r\n readonly withLabel = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! appearance\r\n readonly appearance = input<ColorDisplayAppearance>(ColorDisplayAppearance.Rounded);\r\n\r\n get ngClasses(): string {\r\n const apprncParts = this.appearance().split(' ');\r\n return `ard-appearance-${apprncParts[0]} ${apprncParts[1] ? 'ard-with-border' : ''}`;\r\n }\r\n\r\n //! color\r\n readonly color = input<Nullable<string>, any>(undefined, { transform: v => Color(v).hex() });\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.color()) console.warn(`ARD-WA3000: Using <ard-color-display> without specifying the [color] field.`);\r\n }\r\n}\r\n","<div\r\n class=\"ard-color-display-wrapper\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n <div\r\n class=\"ard-color-display\"\r\n [title]=\"color()\"\r\n [style]=\"{ background: color() }\"\r\n ></div>\r\n <span\r\n class=\"ard-color-display-label\"\r\n *ngIf=\"withLabel\"\r\n >{{ color() }}</span\r\n >\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumColorDisplayComponent } from './color-display.component';\n\n@NgModule({\n declarations: [ArdiumColorDisplayComponent],\n imports: [CommonModule],\n exports: [ArdiumColorDisplayComponent],\n})\nexport class ArdiumColorDisplayModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { keyToString } from 'key-display-names';\n\n@Pipe({\n name: 'kbd',\n})\nexport class ArdiumKbdPipe implements PipeTransform {\n transform(value: string, useShort?: boolean): string {\n return keyToString(value, useShort);\n }\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { FormElementAppearance } from './../types/theming.types';\r\n\r\n@Component({\r\n selector: 'ard-kbd',\r\n templateUrl: './kbd.component.html',\r\n styleUrls: ['./kbd.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumKbdComponent implements AfterViewInit {\r\n readonly contentWrapper = viewChild<ElementRef<HTMLElement>>('contentWrapperEl');\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.key() && !this.contentWrapper()!.nativeElement.innerText) {\r\n throw new Error(`ARD-FT5030: Using <ard-kbd> without specifying the [key] field is not allowed.`);\r\n }\r\n }\r\n\r\n readonly key = input<string>('');\r\n readonly full = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Filled);\r\n\r\n readonly ngClasses = computed<string>(() => [`ard-appearance-${this.appearance()}`].join(' '));\r\n}\r\n","<kbd\r\n class=\"ard-kbd\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n {{ key() || contentWrapper()?.nativeElement?.innerText || '' | kbd: !full() }}\r\n</kbd>\r\n\r\n<div\r\n #contentWrapperEl\r\n class=\"ard-kbd-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumKbdComponent } from './kbd.component';\nimport { ArdiumKbdPipe } from './kbd.pipe';\n\n@NgModule({\n declarations: [ArdiumKbdComponent, ArdiumKbdPipe],\n imports: [CommonModule],\n exports: [ArdiumKbdComponent, ArdiumKbdPipe],\n})\nexport class ArdiumKbdModule {}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { FormElementAppearance } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\n@Component({\r\n selector: 'ard-kbd-shortcut',\r\n templateUrl: './kbd-shortcut.component.html',\r\n styleUrls: ['./kbd-shortcut.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumKbdShortcutComponent implements AfterViewInit {\r\n readonly contentWrapper = viewChild<ElementRef<HTMLElement>>('contentWrapperEl');\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.keys() && !this.contentWrapper()?.nativeElement.innerText) {\r\n throw new Error(`ARD-FT5040: Using <ard-kbd-shortcut> without specifying the [keys] field is not allowed.`);\r\n }\r\n }\r\n\r\n readonly splitRegex = /[+ ]/;\r\n\r\n readonly keys = input<Nullable<string[]>, Nullable<string | string[]>>(undefined, {\r\n transform: v => {\r\n //assign from string\r\n if (typeof v === 'string') {\r\n return v.split(this.splitRegex);\r\n }\r\n //assign undefined or array\r\n return v && [...v];\r\n },\r\n });\r\n\r\n readonly full = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Filled);\r\n\r\n readonly ngClasses = computed<string>(() => [`ard-appearance-${this.appearance}`].join(' '));\r\n}\r\n","<div\r\n class=\"ard-kbd-shortcut\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n @for (key of keys() ?? contentWrapper()?.nativeElement?.innerText?.split(splitRegex); track $index) {\r\n @if ($index !== 0) {\r\n <span>+</span>\r\n }\r\n <ard-kbd\r\n [appearance]=\"appearance()\"\r\n [full]=\"full()\"\r\n [key]=\"key\"\r\n />\r\n }\r\n</div>\r\n\r\n<div\r\n #contentWrapperEl\r\n class=\"ard-kbd-shortcut-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumKbdShortcutComponent } from './kbd-shortcut.component';\nimport { ArdiumKbdModule } from '../kbd/kbd.module';\n\n@NgModule({\n declarations: [ArdiumKbdShortcutComponent],\n imports: [CommonModule, ArdiumKbdModule],\n exports: [ArdiumKbdShortcutComponent],\n})\nexport class ArdiumKbdShortcutModule {}\n","import { PaginationCurrentItemsContext } from '../_internal/models/pagination.model';\n\nexport const PaginationAlign = {\n Left: 'left',\n Center: 'center',\n Right: 'right',\n Split: 'split',\n} as const;\nexport type PaginationAlign = (typeof PaginationAlign)[keyof typeof PaginationAlign];\n\nexport type CurrentItemsFormatFn = (context: PaginationCurrentItemsContext) => string;\n","import { TemplateRef } from '@angular/core';\nimport { ComponentColor } from '../types/colors.types';\nimport { NonEmptyArray } from '../types/utility.types';\nimport { CheckboxState } from '../checkbox/checkbox.types';\n\nexport type DataSource = string | { type: 'checkbox' | 'autocount' };\n\nexport interface _GenericColumn {\n header: string | { template: string | TemplateRef<unknown> };\n cellClass?: string;\n}\n\nexport interface TableDataColumn extends _GenericColumn {\n dataSource: DataSource;\n template?: string | TemplateRef<unknown>;\n sortable?: boolean;\n sortFn?: (columnAData: any, columnBData: any) => number;\n highlight?: boolean | ComponentColor;\n width?: string | number;\n minWidth?: string | number;\n isRowHeader?: boolean;\n}\nexport interface TableSubheader extends _GenericColumn {\n children: NonEmptyArray<TableSubheader | TableDataColumn>;\n}\n\nexport const SortType = {\n Ascending: 'ascending',\n Descending: 'descending',\n} as const;\nexport type SortType = (typeof SortType)[keyof typeof SortType];\n\n//! contexts\nexport interface TableSubheaderContext {\n $implicit: string;\n header: string;\n}\nexport interface TableHeaderContext extends TableSubheaderContext {\n sortable: boolean;\n sortType: SortType | null;\n onTriggerSort: (event?: MouseEvent) => void;\n onTriggerResetSort: (event?: MouseEvent) => void;\n}\nexport interface TableCheckboxContext {\n $implicit: boolean;\n selected: boolean;\n disabled: boolean;\n onChange: (event: MouseEvent) => void;\n}\nexport interface TableHeaderCheckboxContext {\n $implicit: CheckboxState;\n state: CheckboxState;\n onChange: () => void;\n}\nexport interface TableCaptionContext {\n $implicit: string;\n}\n\n//! appearance-related\nexport const TableAppearance = {\n Strong: 'strong',\n Light: 'light',\n Colorless: 'colorless',\n} as const;\nexport type TableAppearance = (typeof TableAppearance)[keyof typeof TableAppearance];\n\nexport const TableVariant = {\n Rounded: 'rounded',\n Sharp: 'sharp',\n} as const;\nexport type TableVariant = (typeof TableVariant)[keyof typeof TableVariant];\n\nexport const TablePaginationStrategy = {\n Noop: 'noop',\n Slice: 'slice',\n} as const;\nexport type TablePaginationStrategy = (typeof TablePaginationStrategy)[keyof typeof TablePaginationStrategy];\n\nexport const TableAlignType = {\n TopLeft: 'top-left',\n TopCenter: 'top-center',\n TopRight: 'top-right',\n CenterLeft: 'center-left',\n Center: 'center-center',\n CenterRight: 'center-right',\n BottomLeft: 'bottom-left',\n BottomCenter: 'bottom-center',\n BottomRight: 'bottom-right',\n} as const;\nexport type TableAlignType = (typeof TableAlignType)[keyof typeof TableAlignType];\n","import { TableDataColumn, TableSubheader } from './table.types';\n\nexport function isTableSubheader(v: TableDataColumn | TableSubheader): v is TableSubheader {\n return 'children' in v;\n}\n\nexport function areAllDataColumns(cols: (TableDataColumn | TableSubheader)[]): boolean {\n return cols.every(col => !isTableSubheader(col));\n}\n\nexport function merge2dArrays<T>(destArr: T[][], arr: T[][]): void {\n const diff = arr.length - destArr.length;\n if (diff > 0) {\n for (let i = 0; i < diff; i++) {\n destArr.push([]);\n }\n }\n for (let row = 0; row < arr.length; row++) {\n destArr[row] = [...destArr[row], ...arr[row]];\n }\n}\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { evaluate, isDefined, isNull } from 'simple-bool';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { SortType, TableDataColumn, TablePaginationStrategy, TableSubheader } from './table.types';\r\nimport { areAllDataColumns, isTableSubheader, merge2dArrays } from './utils';\r\n\r\nexport class ArdTableRow {\r\n private readonly _itemData = signal<any>(undefined);\r\n readonly itemData = this._itemData.asReadonly();\r\n\r\n private readonly _index = signal<number>(-1);\r\n readonly index = this._index.asReadonly();\r\n\r\n private readonly _isEmpty = signal<boolean>(false);\r\n readonly isEmpty = this._isEmpty.asReadonly();\r\n\r\n private readonly _data = signal<any[]>([]);\r\n readonly data = this._data.asReadonly();\r\n\r\n private readonly _dataColumns = signal<TableDataColumn[]>([]);\r\n readonly dataColumns = this._dataColumns.asReadonly();\r\n\r\n private readonly _class = signal<string>('');\r\n readonly class = this._class.asReadonly();\r\n\r\n readonly disabled = signal<boolean>(false);\r\n readonly bold = signal<boolean>(false);\r\n readonly selected = signal<boolean>(false);\r\n readonly highlighted = signal<boolean>(false);\r\n\r\n constructor(\r\n itemData: any,\r\n index: number,\r\n data: any[],\r\n dataColumns: TableDataColumn[],\r\n disabled: boolean,\r\n bold: boolean,\r\n isEmpty = false\r\n ) {\r\n this._itemData.set(itemData);\r\n this._index.set(index);\r\n this._data.set(data);\r\n this._dataColumns.set(dataColumns);\r\n this.disabled.set(disabled);\r\n this.bold.set(bold);\r\n this._isEmpty.set(isEmpty);\r\n }\r\n static newEmptyCell(index: number) {\r\n return new ArdTableRow(null, index, [], [], false, false, true);\r\n }\r\n}\r\nexport interface TableItemStorageHostDefaults {\r\n readonly rowDisabledFrom: string;\r\n readonly rowBoldFrom: string;\r\n}\r\nexport interface TableItemStorageHost {\r\n readonly rowDisabledFrom: Signal<Nullable<string>>;\r\n readonly rowBoldFrom: Signal<Nullable<string>>;\r\n readonly invertRowDisabled: Signal<Nullable<boolean>>;\r\n readonly invertRowBold: Signal<Nullable<boolean>>;\r\n readonly data: Signal<Nullable<any>>[];\r\n readonly DEFAULTS: TableItemStorageHostDefaults;\r\n readonly maxSelectedItems: Signal<Nullable<number>>;\r\n readonly treatDataSourceAsString: Signal<Nullable<boolean>>;\r\n\r\n readonly paginated: Signal<boolean>;\r\n readonly paginationStrategy: Signal<TablePaginationStrategy>;\r\n readonly itemsPerPage: Signal<number>;\r\n readonly page: Signal<number>;\r\n}\r\nexport class HeaderCell {\r\n readonly cell = signal<TableDataColumn | TableSubheader>(undefined as any);\r\n readonly colspan = signal<number>(1);\r\n readonly rowspan = signal<number>(1);\r\n\r\n constructor(cell: TableDataColumn | TableSubheader, colspan = 1, rowspan = 1) {\r\n this.cell.set(cell);\r\n this.colspan.set(colspan);\r\n this.rowspan.set(rowspan);\r\n }\r\n\r\n get width(): string | null {\r\n const cell = this.cell();\r\n if (isTableSubheader(cell)) return null;\r\n return this._getWidth(cell.width);\r\n }\r\n get minWidth(): string | null {\r\n const cell = this.cell();\r\n if (isTableSubheader(cell)) return null;\r\n return this._getWidth(cell.minWidth);\r\n }\r\n /**\r\n * Thransforms a numeric width into a CSS string if needed. Pure function.\r\n * @param width the width to be converted.\r\n * @returns The width expressed as a CSS-compatible string or null.\r\n */\r\n private _getWidth(width: string | number | undefined): string | null {\r\n if (!width) return null;\r\n if (typeof width === 'number') return `${width}px`;\r\n return width;\r\n }\r\n}\r\n\r\nexport class TableItemStorage {\r\n private readonly _items = signal<ArdTableRow[]>([]);\r\n private readonly _sortedItems = signal<ArdTableRow[]>([]);\r\n\r\n private readonly _dataColumns = signal<TableDataColumn[]>([]);\r\n private readonly _headerCells = signal<HeaderCell[][]>([]);\r\n\r\n constructor(private readonly _ardParentComp: TableItemStorageHost) {}\r\n\r\n /**\r\n * Gets all items.\r\n */\r\n readonly items = this._items.asReadonly();\r\n readonly sortedItems = this._sortedItems.asReadonly();\r\n /**\r\n * Gets items based on the current pagination state.\r\n */\r\n readonly paginatedItems = computed(() => {\r\n if (!this._ardParentComp.paginated() || this._ardParentComp.paginationStrategy() === TablePaginationStrategy.Noop) {\r\n return this.sortedItems();\r\n }\r\n const page = this._ardParentComp.page();\r\n const IPP = this._ardParentComp.itemsPerPage();\r\n const itemsStart = (page - 1) * IPP;\r\n const itemsEnd = page * IPP;\r\n return this.sortedItems().slice(itemsStart, itemsEnd);\r\n });\r\n /**\r\n * Gets all currently selected items.\r\n */\r\n readonly selectedItems = computed<ArdTableRow[]>(() => this.items().filter(item => item.selected()));\r\n /**\r\n * Gets all currently highlighted items.\r\n */\r\n readonly highlightedItems = computed<ArdTableRow[]>(() => this.items().filter(item => item.highlighted()));\r\n /**\r\n * Gets all highlightable items. An item is considered highlightable if it is **not** disabled.\r\n */\r\n readonly highlightableItems = computed<ArdTableRow[]>(() => this._items().filter(item => !item.disabled()));\r\n /**\r\n * Gets the values of the currently selected items.\r\n */\r\n readonly value = computed(() => this._itemsToValue(this.selectedItems()));\r\n /**\r\n * Maps an array of items into their values.\r\n * @param items The items to convert to value.\r\n * @returns An array of item values.\r\n */\r\n private _itemsToValue(items: ArdTableRow[]): any[] {\r\n return items.map(item => item.itemData());\r\n }\r\n\r\n /**\r\n * Returns true if at least one item is highlighted, otherwise false.\r\n */\r\n readonly isAnyItemHighlighted = computed(() => this.highlightedItems().length > 0);\r\n /**\r\n * Checks if any item in the table is selected.\r\n * @returns A boolean value indicating if any item is selected.\r\n */\r\n readonly isAnyItemSelected = computed(() => this.selectedItems().length > 0);\r\n /**\r\n * Checks if all items in the table are selected.\r\n * @returns A boolean value indicating if all items are selected.\r\n */\r\n readonly areAllSelected = computed(() => this.selectedItems().length === this._items().filter(item => !item.disabled()).length);\r\n /**\r\n * Returns true if the parent component defines the limit of concurrently selectable items and the amount of currently selected items matches that limit. Otherwise returns false.\r\n *\r\n * **TLDR**: true if `maxSelectedItems` is defined and the number of selected items matches that value.\r\n */\r\n readonly isItemLimitReached = computed(() => {\r\n const max = this._ardParentComp.maxSelectedItems();\r\n if (!isDefined(max)) {\r\n return false;\r\n }\r\n return max <= this.selectedItems().length;\r\n });\r\n\r\n /**\r\n * Gets the header cells of the table.\r\n * @returns a 2D array of header cells.\r\n */\r\n readonly headerCells = this._headerCells.asReadonly();\r\n /**\r\n * Checks if the table has defined columns.\r\n * @returns a boolean value indicating if the table has defined columns.\r\n */\r\n readonly hasDefinedColumns = computed(() => this._dataColumns().length > 0);\r\n\r\n //! setting columns\r\n /**\r\n * Sets the columns of the table.\r\n * @param cols an array of table data columns or table subheaders.\r\n */\r\n setColumns(cols: (TableDataColumn | TableSubheader)[]): void {\r\n const maxNestingLevel = this._getHeaderMaxNesting(cols);\r\n const headerCells = this._mapColumnsToArray(cols, maxNestingLevel, 0);\r\n this._headerCells.set(this._filterHeaderCells(headerCells));\r\n this._dataColumns.set(this._extractDataSources(cols));\r\n }\r\n /**\r\n * Filters out null values from the header cells array. Pure function.\r\n * @param cells a 2D array of header cells or null values.\r\n * @returns a 2D array of header cells without null values and empty arrays.\r\n */\r\n private _filterHeaderCells(cells: (HeaderCell | null)[][]): HeaderCell[][] {\r\n for (let i = 0; i < cells.length; i++) {\r\n cells[i] = cells[i].filter(v => v !== null);\r\n }\r\n return cells.filter(row => row.length) as HeaderCell[][];\r\n }\r\n /**\r\n * Extracts the data sources from the columns array. Pure function.\r\n * @param cols an array of table data columns or table subheaders.\r\n * @returns an array of table data columns.\r\n */\r\n private _extractDataSources(cols: (TableDataColumn | TableSubheader)[]): TableDataColumn[] {\r\n const dataColumns: TableDataColumn[] = [];\r\n\r\n for (const col of cols) {\r\n if (!isTableSubheader(col)) {\r\n dataColumns.push(col);\r\n continue;\r\n }\r\n dataColumns.push(...this._extractDataSources(col.children));\r\n }\r\n\r\n return dataColumns;\r\n }\r\n /**\r\n * Gets the maximum nesting level of the columns array. Pure function.\r\n * @param cols an array of table data columns or table subheaders.\r\n * @returns the maximum nesting level as a number.\r\n */\r\n private _getHeaderMaxNesting(cols: (TableDataColumn | TableSubheader)[]): number {\r\n if (areAllDataColumns(cols)) return 1;\r\n let max = 1;\r\n for (const col of cols.filter(v => isTableSubheader(v)) as TableSubheader[]) {\r\n const height = 1 + this._getHeaderMaxNesting(col.children);\r\n if (height > max) max = height;\r\n }\r\n return max;\r\n }\r\n /**\r\n * Maps the columns tree to a 2D array of header cells or null values. Pure function.\r\n * @param cols an array of table data columns or table subheaders.\r\n * @param maxNesting the maximum nesting level of the columns array.\r\n * @param currentNesting the current nesting level of the columns array.\r\n * @returns a 2D array of header cells or null values.\r\n */\r\n private _mapColumnsToArray(\r\n cols: (TableDataColumn | TableSubheader)[],\r\n maxNesting: number,\r\n currentNesting: number\r\n ): (HeaderCell | null)[][] {\r\n if (areAllDataColumns(cols)) {\r\n return [cols.map(col => new HeaderCell(col, 1, maxNesting - currentNesting))];\r\n }\r\n const headerCells: (HeaderCell | null)[][] = [[]];\r\n for (const col of cols) {\r\n if (!isTableSubheader(col)) {\r\n headerCells[0].push(new HeaderCell(col, 1, maxNesting - currentNesting));\r\n continue;\r\n }\r\n const childCells: (HeaderCell | null)[][] = [[], ...this._mapColumnsToArray(col.children, maxNesting, currentNesting + 1)];\r\n const height = childCells.length - 1;\r\n const width = childCells[1].length;\r\n for (let i = 0; i < height; i++) {\r\n headerCells.push([null]);\r\n }\r\n headerCells[0].push(new HeaderCell(col, width, 1));\r\n for (let i = 0; i < width - 1; i++) {\r\n headerCells[0].push(null);\r\n }\r\n merge2dArrays(headerCells, childCells);\r\n }\r\n return headerCells;\r\n }\r\n\r\n //! setting items\r\n /**\r\n * Sets the component's items. Takes into account the values defined by the parent component for `rowDisabledFrom`, `rowBoldFrom`, and `rowHighlightedFrom`.\r\n * @param items An array of items to be set as the component's items.\r\n */\r\n setItems(items: any[]): void {\r\n if (!this.hasDefinedColumns()) return;\r\n\r\n const mappedItems = items.map((item, i) => this._setItemsMapFn(item, i));\r\n this._items.set(mappedItems);\r\n this._sortedItems.set(mappedItems);\r\n }\r\n /**\r\n * Maps raw item data to an {@link ArdTableRow} object.\r\n *\r\n * @param {any} rawItemData - The raw data of the item.\r\n * @param {number} index - The index of the item.\r\n * @returns {ArdTableRow} Returns an ArdTableRow object with mapped properties.\r\n * @private\r\n */\r\n private _setItemsMapFn(rawItemData: any, index: number): ArdTableRow {\r\n //get data\r\n const [data, dataColumns] = this._getRowData(rawItemData, index);\r\n\r\n //get bold\r\n const rowBoldFromPath = this._ardParentComp.rowBoldFrom() ?? this._ardParentComp.DEFAULTS.rowBoldFrom;\r\n let bold = resolvePath(rawItemData, rowBoldFromPath);\r\n if (this._ardParentComp.invertRowBold()) {\r\n bold = !bold;\r\n }\r\n\r\n //get disabled\r\n const disabledPath = this._ardParentComp.rowDisabledFrom() ?? this._ardParentComp.DEFAULTS.rowDisabledFrom;\r\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\r\n if (this._ardParentComp.invertRowDisabled()) {\r\n disabled = !disabled;\r\n }\r\n\r\n return new ArdTableRow(rawItemData, index, data, dataColumns, disabled, bold);\r\n }\r\n /**\r\n * Retrieves data for a row based on data columns configuration.\r\n *\r\n * @param {any} rawItemData - The raw data of the item.\r\n * @param {number} index - The index of the item.\r\n * @returns {any[]} Returns an array containing the row data.\r\n * @private\r\n */\r\n private _getRowData(rawItemData: any, index: number): [any[], TableDataColumn[]] {\r\n const data: any[] = [];\r\n const _cols = this._dataColumns();\r\n for (let i = 0; i < _cols.length; i++) {\r\n const dataColumn = _cols[i];\r\n const sourcePath = dataColumn.dataSource;\r\n\r\n if (typeof sourcePath === 'string') {\r\n if (this._ardParentComp.treatDataSourceAsString()) {\r\n data.push(rawItemData[sourcePath]);\r\n continue;\r\n }\r\n data.push(resolvePath(rawItemData, sourcePath));\r\n continue;\r\n }\r\n if (sourcePath.type === 'autocount') {\r\n data.push(index + 1);\r\n continue;\r\n }\r\n if (sourcePath.type === 'checkbox') {\r\n data.push({ _ardCheckbox: true, index });\r\n continue;\r\n }\r\n const sourceString = typeof sourcePath === 'object' ? JSON.stringify(sourcePath) : sourcePath;\r\n throw new Error(`ARD-FT5052: Unexpected data source \"${sourceString}\" at index ${i}.`);\r\n }\r\n return [data, this._dataColumns()];\r\n }\r\n /**\r\n * Writes a new value to the item storage. Selects the correct items based on the provided values, warning the user if the value is not found.\r\n * @param indexes The value of the ngModel to set.\r\n */\r\n writeValue(indexes: number[]): void {\r\n this._forceUnselectAll();\r\n this.selectItem(...indexes);\r\n }\r\n\r\n //! selecting items\r\n /**\r\n * Checks if an item with the given index is selected.\r\n *\r\n * @param {number} index The index of the item to check.\r\n * @returns {boolean} _true_ if the item is selected, otherwise _false_.\r\n */\r\n isItemSelected(index: number): boolean {\r\n return this.selectedItems().some(item => item.index() === index);\r\n }\r\n /**\r\n * Selects all items.\r\n *\r\n * Accounts for the limit of concurrently selected items defined by the parent component.\r\n * @returns a tuple containing two arrays:\r\n * * An array of items selected.\r\n * * An array of items failed to select.\r\n */\r\n selectAll(): [any[], any[]] {\r\n return this.selectItem(...this._items().map(v => v.index()));\r\n }\r\n /**\r\n * Unselects all selected items.\r\n *\r\n * If the parent component requires at least one value to be selected at all times, the first selected items is left selected.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n unselectAll(): any[] {\r\n const selected = this.selectedItems();\r\n for (const item of selected) {\r\n item.selected.set(false);\r\n }\r\n\r\n return this._itemsToValue(selected);\r\n }\r\n /**\r\n * Unselects all selected items, no matter what the component settings are.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n private _forceUnselectAll(): any[] {\r\n const selected = this.selectedItems();\r\n for (const item of selected) {\r\n item.selected.set(false);\r\n }\r\n\r\n return this._itemsToValue(selected);\r\n }\r\n /**\r\n * Selects one or multiple items.\r\n *\r\n * Accounts for the limit of concurrently selected items defined by the parent component.\r\n *\r\n * @param indexes A rest operator array of item indexes to be selected.\r\n * @returns a tuple containing two arrays:\r\n * - An array of items selected.\r\n * - An array of items failed to select.\r\n */\r\n selectItem(...indexes: number[]): [any[], any[]] {\r\n const itemsToBeSelected = this._items().filter(item => !item.disabled() && indexes.includes(item.index()));\r\n if (this.isItemLimitReached()) {\r\n return [[], this._itemsToValue(itemsToBeSelected)];\r\n }\r\n\r\n let itemsSelectedCount = 0;\r\n const itemsSelected = [];\r\n let itemsLeftUntilLimit = (this._ardParentComp.maxSelectedItems() ?? Infinity) - this.selectedItems().length;\r\n for (const item of itemsToBeSelected) {\r\n itemsSelectedCount++;\r\n if (item.selected()) continue;\r\n if (itemsLeftUntilLimit <= 0) {\r\n break;\r\n }\r\n itemsLeftUntilLimit--;\r\n item.selected.set(true);\r\n itemsSelected.push(item);\r\n }\r\n\r\n const itemsFailedToSelect = itemsToBeSelected.slice(itemsSelectedCount - 1);\r\n return [this._itemsToValue(itemsSelected), this._itemsToValue(itemsFailedToSelect)];\r\n }\r\n /**\r\n * Unselects one or multiple items.\r\n * @param items A rest operator array of item indexes to be unselected.\r\n * @returns An array of items unselected, mapped to only their values.\r\n */\r\n unselectItem(...indexes: number[]): any[] {\r\n const itemsToBeUnselected = this._items().filter(item => indexes.includes(item.index()));\r\n for (const item of itemsToBeUnselected) {\r\n item.selected.set(false);\r\n }\r\n\r\n return this._itemsToValue(itemsToBeUnselected);\r\n }\r\n\r\n //! highlighting items\r\n /**\r\n * Unhighlights all currently highlighted items.\r\n */\r\n unhighlightAll(): void {\r\n const highlighted = this.highlightedItems();\r\n for (const item of highlighted) {\r\n item.highlighted.set(false);\r\n }\r\n }\r\n /**\r\n * Highlights the given item, while unhighlighting all other items. Does nothing when the item is disabled.\r\n * @param item The index of the item to be highlighted.\r\n * @returns The highlighted item.\r\n */\r\n highlightSingleItem(index: number): ArdTableRow | null {\r\n this.unhighlightAll();\r\n return this.highlightItem(index);\r\n }\r\n /**\r\n * Highlights all given items.\r\n * @param items A rest operator array of item indexes to be highlighted.\r\n * @returns The last highlighted item.\r\n */\r\n highlightItem(...indexes: number[]): ArdTableRow {\r\n const items = this._items().filter(item => indexes.includes(item.index()));\r\n for (const item of items) {\r\n item.highlighted.set(true);\r\n }\r\n return items.last();\r\n }\r\n /**\r\n * Unhighlights all given items.\r\n * @param items A rest operator array of item indexes to be unhighlighted.\r\n */\r\n unhighlightItem(...indexes: number[]): void {\r\n const items = this._items().filter(item => indexes.includes(item.index()));\r\n for (const item of items) {\r\n if (!item || !item.highlighted()) return;\r\n\r\n item.highlighted.set(false);\r\n }\r\n }\r\n /**\r\n * Highlights the first item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightFirstItem(): ArdTableRow | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().first().index();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights the last item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightLastItem(): ArdTableRow | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().last().index();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights all non-disabled items.\r\n */\r\n highlightAllItems(): void {\r\n const itemsToHighlight = this.highlightableItems().map(v => v.index());\r\n this.highlightItem(...itemsToHighlight);\r\n }\r\n /**\r\n * Highlights the next non-disabled item defined by the offset amount.\r\n *\r\n * If `hasShift` is set to true, all originally highlighted items are kept. Otherwise, all original items are unselected.\r\n * @param offset The amount of items to offset the highlight by.\r\n * @param hasShift Whether the user has the shift key pressed.\r\n * @returns The item highlighted.\r\n */\r\n highlightNextItem(offset: number, hasShift?: boolean): ArdTableRow | null {\r\n if (!this.isAnyItemHighlighted()) {\r\n return this.highlightFirstItem();\r\n }\r\n const currentItem = this.highlightedItems().last();\r\n const itemsWithoutDisabled = this._items().filter(\r\n item => !item.disabled() && (!this.isItemLimitReached() || item.selected())\r\n );\r\n const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index() === currentItem.index());\r\n\r\n let nextItemIndex = currentIndexInItems + offset;\r\n if (nextItemIndex >= itemsWithoutDisabled.length) {\r\n nextItemIndex -= itemsWithoutDisabled.length;\r\n }\r\n if (nextItemIndex < 0) {\r\n nextItemIndex += itemsWithoutDisabled.length;\r\n }\r\n const itemToHighlight = itemsWithoutDisabled[nextItemIndex];\r\n\r\n if (hasShift) {\r\n if (itemToHighlight.highlighted()) {\r\n this.unhighlightItem(nextItemIndex);\r\n }\r\n return this.highlightItem(nextItemIndex);\r\n }\r\n return this.highlightSingleItem(nextItemIndex);\r\n }\r\n\r\n //! sorting\r\n private _currentSortColumn: number | null = null;\r\n private _currentSortType: SortType | null = null;\r\n\r\n toggleCurrentSortColumn(column: number): void {\r\n if (this._currentSortColumn === column) {\r\n if (this._currentSortType === SortType.Ascending) {\r\n this._currentSortType = SortType.Descending;\r\n } else {\r\n this._currentSortType = SortType.Ascending;\r\n }\r\n this._generateSortedRows(true);\r\n return;\r\n }\r\n this._currentSortColumn = column;\r\n this._currentSortType = SortType.Ascending;\r\n this._generateSortedRows();\r\n }\r\n resetSort(): void {\r\n this._currentSortColumn = null;\r\n this._currentSortType = null;\r\n this._sortedItems.set([...this.items()]);\r\n }\r\n getColumnSortType(column: number): SortType | null {\r\n if (this._currentSortColumn === column) {\r\n return this._currentSortType;\r\n }\r\n return null;\r\n }\r\n private _generateSortedRows(justReverse?: boolean): void {\r\n if (justReverse) {\r\n this._sortedItems().reverse();\r\n return;\r\n }\r\n const sortColumnIndex = this._currentSortColumn;\r\n if (isNull(sortColumnIndex) || !this._currentSortType) {\r\n this._sortedItems.set(this.items());\r\n return;\r\n }\r\n const sortColumn = this._dataColumns()[sortColumnIndex];\r\n if (!sortColumn) {\r\n throw new Error(\r\n `ARD-IS5059: Encountered an issue in <ard-table>: could not find the column with index ${sortColumnIndex}. This is most likely an Ardium UI bug, please report it to the creators.`\r\n );\r\n }\r\n\r\n const direction = this._currentSortType === SortType.Ascending ? 1 : -1;\r\n const sortFn =\r\n sortColumn.sortFn ??\r\n ((a, b) => {\r\n if (a > b) return direction;\r\n if (a < b) return -1 * direction;\r\n return 0;\r\n });\r\n\r\n this._sortedItems.set([...this.items()].sort((a, b) => sortFn(a.data()[sortColumnIndex], b.data()[sortColumnIndex])));\r\n }\r\n}\r\n","import { Directive, TemplateRef, input } from '@angular/core';\r\nimport { PaginationContext } from '../_internal/models/pagination.model';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { TableCaptionContext, TableCheckboxContext } from './table.types';\r\n\r\n@Directive({ selector: 'ard-table > ng-template[ard-table-tmp]' })\r\nexport class ArdiumTableTemplateDirective {\r\n readonly name = input.required<Nullable<string>>({ alias: 'ard-table-tmp' });\r\n\r\n constructor(public template: TemplateRef<any>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-table > ng-template[ard-table-checkbox-tmp]' })\r\nexport class ArdiumTableCheckboxTemplateDirective {\r\n constructor(public template: TemplateRef<TableCheckboxContext>) {}\r\n}\r\n\r\n@Directive({\r\n selector: 'ard-table > ng-template[ard-table-header-checkbox-tmp]',\r\n})\r\nexport class ArdiumTableHeaderCheckboxTemplateDirective {\r\n constructor(public template: TemplateRef<TableCheckboxContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-table > ng-template[ard-table-caption-tmp]' })\r\nexport class ArdiumTableCaptionTemplateDirective {\r\n constructor(public template: TemplateRef<TableCaptionContext>) {}\r\n}\r\n\r\n//! paginations\r\n@Directive({ selector: 'ard-table > ng-template[ard-table-pagination-tmp]' })\r\nexport class ArdiumTablePaginationTemplateDirective {\r\n constructor(public template: TemplateRef<PaginationContext>) {}\r\n}\r\n","import { ModelSignal, Signal, computed } from '@angular/core';\r\nimport { isDefined } from 'simple-bool';\r\n\r\nexport interface PaginationModelHost {\r\n readonly componentId: string;\r\n readonly totalItems: Signal<number>;\r\n readonly options: Signal<number[] | { value: number; label: string }[]>;\r\n readonly itemsPerPage: ModelSignal<number>;\r\n readonly page: ModelSignal<number>;\r\n}\r\n\r\nexport interface PaginationCurrentItemsContext {\r\n readonly currentItemsFirst: number;\r\n readonly currentItemsLast: number;\r\n readonly totalItems: number;\r\n readonly totalPages: number;\r\n readonly page: number;\r\n}\r\n\r\nexport interface PaginationContext extends PaginationCurrentItemsContext {\r\n readonly itemsPerPageOptions: number[] | { value: number; label: string }[];\r\n readonly itemsPerPage: number;\r\n readonly onItemsPerPageChange: (newValue: number) => void;\r\n readonly firstPageDisabled: boolean;\r\n readonly prevPageDisabled: boolean;\r\n readonly nextPageDisabled: boolean;\r\n readonly lastPageDisabled: boolean;\r\n readonly onPageChange: (newPage: number) => void;\r\n}\r\n\r\nexport class PaginationModel {\r\n constructor(private readonly _ardHostCmp: PaginationModelHost) {}\r\n\r\n readonly isTotalItemsDefined = computed<boolean>(() => isDefined(this._ardHostCmp.totalItems()));\r\n\r\n readonly lastPageNum = computed<number | null>(() => {\r\n const total = this._ardHostCmp.totalItems();\r\n if (!total) return null;\r\n return Math.ceil(total / this._ardHostCmp.itemsPerPage());\r\n });\r\n readonly isLastPage = computed<boolean>(() => {\r\n return !isDefined(this._ardHostCmp.totalItems()) || this.lastPageNum() === this._ardHostCmp.page();\r\n });\r\n readonly itemsOnCurrentPage = computed<[number, number] | null>(() => {\r\n const total = this._ardHostCmp.totalItems();\r\n if (!total) return null;\r\n return [\r\n Math.min(total, (this._ardHostCmp.page() - 1) * this._ardHostCmp.itemsPerPage() + 1),\r\n Math.min(total, this._ardHostCmp.page() * this._ardHostCmp.itemsPerPage()),\r\n ];\r\n });\r\n\r\n //! action disabled states\r\n readonly firstPageDisabled = computed<boolean>(() => {\r\n return !isDefined(this._ardHostCmp.totalItems()) || this._ardHostCmp.page() === 1;\r\n });\r\n readonly lastPageDisabled = computed<boolean>(() => {\r\n return !isDefined(this._ardHostCmp.totalItems()) || this._ardHostCmp.page() === this.lastPageNum();\r\n });\r\n\r\n //! current page\r\n setPage(v: number): void {\r\n this._ardHostCmp.page.set(v);\r\n }\r\n getPage(): number {\r\n return this._ardHostCmp.page();\r\n }\r\n goToFirstPage(): number | null {\r\n if (this.firstPageDisabled()) return null;\r\n this.setPage(1);\r\n return 1;\r\n }\r\n goToPrevPage(): number | null {\r\n if (this.firstPageDisabled()) return null;\r\n this.setPage(this._ardHostCmp.page() - 1);\r\n return this._ardHostCmp.page();\r\n }\r\n goToNextPage(): number | null {\r\n if (this.lastPageDisabled()) return null;\r\n this.setPage(this._ardHostCmp.page() + 1);\r\n return this._ardHostCmp.page();\r\n }\r\n goToLastPage(): number | null {\r\n if (this.lastPageDisabled()) return null;\r\n this.setPage(this.lastPageNum()!);\r\n return this._ardHostCmp.page();\r\n }\r\n\r\n //! context\r\n readonly getCurrentItemsContext = computed<PaginationCurrentItemsContext>(() => {\r\n const total = this._ardHostCmp.totalItems();\r\n if (!total)\r\n throw new Error(`ARD-FT${this._ardHostCmp.componentId}90: Cannot use pagination model without defining total items first.`);\r\n\r\n const pageItems = this.itemsOnCurrentPage()!;\r\n return {\r\n totalPages: this.lastPageNum()!,\r\n totalItems: total,\r\n page: this._ardHostCmp.page(),\r\n currentItemsFirst: pageItems[0],\r\n currentItemsLast: pageItems[1],\r\n };\r\n });\r\n readonly getPartialContext = computed<Omit<PaginationContext, 'onItemsPerPageChange' | 'onPageChange'>>(() => {\r\n return {\r\n ...this.getCurrentItemsContext(),\r\n itemsPerPageOptions: this._ardHostCmp.options(),\r\n itemsPerPage: this._ardHostCmp.itemsPerPage(),\r\n firstPageDisabled: this.firstPageDisabled(),\r\n prevPageDisabled: this.firstPageDisabled(),\r\n nextPageDisabled: this.lastPageDisabled(),\r\n lastPageDisabled: this.lastPageDisabled(),\r\n };\r\n });\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation, computed, input, model, output } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { PaginationModel } from '../_internal/models/pagination.model';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { CurrentItemsFormatFn, PaginationAlign } from './table-pagination.types';\r\n\r\n@Component({\r\n selector: 'ard-table-pagination',\r\n templateUrl: './table-pagination.component.html',\r\n styleUrls: ['./table-pagination.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTablePaginationComponent extends _FocusableComponentBase implements OnInit {\r\n readonly componentId = '506';\r\n\r\n private readonly _pagination = new PaginationModel(this);\r\n\r\n //! main settings\r\n readonly totalItems = input.required<number>();\r\n readonly options = input<number[] | { value: number; label: string }[]>([10, 25, 50]);\r\n readonly itemsPerPage = model<number>(50);\r\n readonly page = model<number>(1);\r\n\r\n readonly itemsPerPageChangeEvent = output<number>({ alias: 'itemsPerPageChange' });\r\n readonly pageChangeEvent = output<number>({ alias: 'pageChange' });\r\n\r\n ngOnInit(): void {\r\n if (this._pagination.isTotalItemsDefined()) return;\r\n throw new Error('ARD-FT5060: Table pagination requires [totalItems] to be defined.');\r\n }\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly align = input<PaginationAlign>(PaginationAlign.Split);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [`ard-color-${this.color()}`, `ard-align-${this.align()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! miscellaneous\r\n readonly useFirstLastButtons = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly isLoading = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly itemsPerPageText = input<string>('Items per page:');\r\n\r\n readonly currentItemsFormatFn = input<CurrentItemsFormatFn>(\r\n ({ currentItemsFirst, currentItemsLast, totalItems }) => `${currentItemsFirst} – ${currentItemsLast} of ${totalItems}`\r\n );\r\n\r\n //! contexts\r\n readonly getCurrentItemsContext = this._pagination.getCurrentItemsContext;\r\n\r\n readonly firstPageDisabled = this._pagination.firstPageDisabled;\r\n readonly lastPageDisabled = this._pagination.lastPageDisabled;\r\n\r\n //! methods\r\n onItemsPerPageChange(newValue: number): void {\r\n if (this.isLoading()) return;\r\n if (newValue === this.itemsPerPage()) return;\r\n this.itemsPerPage.set(newValue);\r\n this.itemsPerPageChangeEvent.emit(this.itemsPerPage());\r\n this._emitPageEvent();\r\n }\r\n\r\n private _emitPageEvent(): void {\r\n this.pageChangeEvent.emit(this.page());\r\n }\r\n onPageChange(newPage: number): void {\r\n if (this.isLoading()) return;\r\n if (newPage === this.page()) return;\r\n this._pagination.setPage(newPage);\r\n this._emitPageEvent();\r\n }\r\n onFirstPage(): void {\r\n if (this.isLoading()) return;\r\n const newPage = this._pagination.goToFirstPage();\r\n if (!newPage) return;\r\n this._emitPageEvent();\r\n }\r\n onPrevPage(): void {\r\n if (this.isLoading()) return;\r\n const newPage = this._pagination.goToPrevPage();\r\n if (!newPage) return;\r\n this._emitPageEvent();\r\n }\r\n onNextPage(): void {\r\n if (this.isLoading()) return;\r\n const newPage = this._pagination.goToNextPage();\r\n if (!newPage) return;\r\n this._emitPageEvent();\r\n }\r\n onLastPage(): void {\r\n if (this.isLoading()) return;\r\n const newPage = this._pagination.goToLastPage();\r\n if (!newPage) return;\r\n this._emitPageEvent();\r\n }\r\n}\r\n","<div\r\n class=\"ard-pagination\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n <div class=\"ard-pagination__items-per-page\">\r\n <div class=\"ard-pagination__text\">{{ itemsPerPageText() }}</div>\r\n <ard-select\r\n [items]=\"options()\"\r\n [compact]=\"compact()\"\r\n [value]=\"itemsPerPage()\"\r\n autoHighlightFirst=\"false\"\r\n [disabled]=\"disabled()\"\r\n (valueChange)=\"onItemsPerPageChange($event[0])\"\r\n clearable=\"false\"\r\n />\r\n </div>\r\n <div class=\"ard-pagination__current-page\">\r\n <div class=\"ard-pagination__text\">\r\n {{ currentItemsFormatFn()(getCurrentItemsContext()) }}\r\n </div>\r\n <div class=\"ard-pagination__buttons\">\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onFirstPage()\"\r\n >\r\n <ard-icon>first page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onPrevPage()\"\r\n >\r\n <ard-icon>navigate before</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onNextPage()\"\r\n >\r\n <ard-icon>navigate next</ard-icon>\r\n </ard-icon-button>\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onLastPage()\"\r\n >\r\n <ard-icon>last page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n contentChildren,\r\n input,\r\n model,\r\n output,\r\n OnChanges,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isDefined, isNumber } from 'simple-bool';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { CheckboxState } from '../checkbox/checkbox.types';\r\nimport { CurrentItemsFormatFn, PaginationAlign } from '../table-pagination/table-pagination.types';\r\nimport { ComponentColor, SimpleComponentColor } from '../types/colors.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdTableRow, HeaderCell, TableItemStorage, TableItemStorageHost } from './table-item-storage';\r\nimport {\r\n ArdiumTableCaptionTemplateDirective,\r\n ArdiumTableCheckboxTemplateDirective,\r\n ArdiumTableHeaderCheckboxTemplateDirective,\r\n ArdiumTableTemplateDirective,\r\n} from './table.directives';\r\nimport {\r\n TableAlignType,\r\n TableAppearance,\r\n TableCaptionContext,\r\n TableCheckboxContext,\r\n TableDataColumn,\r\n TableHeaderCheckboxContext,\r\n TableHeaderContext,\r\n TablePaginationStrategy,\r\n TableSubheader,\r\n TableSubheaderContext,\r\n TableVariant,\r\n} from './table.types';\r\nimport { isTableSubheader } from './utils';\r\n\r\n@Component({\r\n selector: 'ard-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTableComponent extends _FocusableComponentBase implements TableItemStorageHost, AfterContentInit, OnChanges {\r\n private readonly _itemStorage = new TableItemStorage(this);\r\n\r\n readonly DEFAULTS = {\r\n rowDisabledFrom: 'disabled',\r\n rowBoldFrom: 'bold',\r\n };\r\n\r\n readonly rowDisabledFrom = input<Nullable<string>>(undefined);\r\n readonly rowBoldFrom = input<Nullable<string>>(undefined);\r\n readonly invertRowDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly invertRowBold = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly selectableRows = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly maxSelectedItems = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n readonly clickableRows = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly caption = input<Nullable<string>>(undefined);\r\n\r\n readonly isLoading = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly loadingProgress = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) }); //TODO add progress bar\r\n\r\n //! appearance\r\n readonly appearance = input<TableAppearance>(TableAppearance.Strong);\r\n readonly variant = input<TableVariant>(TableVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly align = input<TableAlignType>(TableAlignType.CenterLeft);\r\n readonly headerAlign = input<TableAlignType>(TableAlignType.CenterLeft);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly zebra = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly stickyHeader = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-align-${this.align()}`,\r\n `ard-header-align-${this.headerAlign()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.zebra() ? 'ard-zebra-table' : '',\r\n this.selectableRows() ? 'ard-selectable-rows' : '',\r\n this.stickyHeader() ? 'ard-sticky-header' : '',\r\n this.isLoading() ? 'ard-table-loading' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! pagination\r\n readonly paginated = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly paginationStrategy = input<TablePaginationStrategy>(TablePaginationStrategy.Noop);\r\n readonly paginationOptions = input<\r\n number[] | { value: number; label: string }[],\r\n number[] | { value: number; label: string }[]\r\n >([10, 25, 50], {\r\n transform: v => {\r\n return v.filter(el => {\r\n const opt = isNumber(el) ? el : el.value;\r\n if (opt <= 0 || opt % 1 !== 0) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5052: each item of <ard-table>'s [paginationOptions] must be a positive integer. The \"${opt}\" option will be ignored.`\r\n )\r\n );\r\n return false;\r\n }\r\n return true;\r\n }) as number[] | { value: number; label: string }[];\r\n },\r\n });\r\n readonly totalItems = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n readonly paginationColor = input<ComponentColor>(ComponentColor.None);\r\n readonly paginationAlign = input<PaginationAlign>(PaginationAlign.Split);\r\n readonly itemsPerPageText = input<string>('Items per page:');\r\n readonly currentItemsFormatFn = input<CurrentItemsFormatFn>(\r\n ({ currentItemsFirst, currentItemsLast, totalItems }) => `${currentItemsFirst} – ${currentItemsLast} of ${totalItems}`\r\n );\r\n\r\n readonly pageFillRemaining = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly paginationDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly useFirstLastButtons = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly itemsPerPage = model<number>(50);\r\n readonly page = model<number>(1);\r\n\r\n readonly isDefinedTotalItems = computed(\r\n () => this.paginationStrategy() !== TablePaginationStrategy.Noop || isDefined(this.totalItems())\r\n );\r\n readonly canDisplayPagination = computed(() => this.paginated() && this.isDefinedTotalItems());\r\n\r\n //! print errors if needed\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['itemsPerPage']) {\r\n const ipp = changes['itemsPerPage'].currentValue;\r\n const options =\r\n (changes['paginationOptions']?.currentValue as number[] | { value: number; label: string }[]) ||\r\n (this.paginationOptions() as number[] | { value: number; label: string }[]);\r\n if (!options.find(v => (typeof v === 'number' ? v === ipp : v.value === ipp))) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5051: value of \"${ipp}\" in <ard-table>'s [itemsPerPage] does not appear in [paginationOptions] array [${options\r\n .map(v => (typeof v === 'number' ? v : v.value))\r\n .join(', ')}]`\r\n )\r\n );\r\n }\r\n }\r\n if (changes['page']) {\r\n const page = changes['page'].currentValue as number;\r\n if (page === 0) {\r\n throw new Error(`ARD-FT5053a: <ard-table>'s [page] uses 1-indexed numbering system. The value 0 is not accepted.`);\r\n } else if (page < 0 || page % 1 !== 0) {\r\n throw new Error(`ARD-FT5053b: value of <ard-table>'s [page] must be a positive integer, got \"${page}\".`);\r\n }\r\n }\r\n }\r\n\r\n //! item storage getters\r\n readonly headerCells = computed(() => this._itemStorage.headerCells());\r\n\r\n readonly dataRows = computed(() => {\r\n const items: ArdTableRow[] = this._itemStorage.paginatedItems();\r\n\r\n if (!this.pageFillRemaining()) return items;\r\n if (!this.isDefinedTotalItems()) {\r\n throw new Error('ARD-FT5050: <ard-table> requires [totalItems] to be defined when using \"slice\" pagination strategy.');\r\n }\r\n if (this.page() === 1) return items;\r\n\r\n const ipp = this.itemsPerPage();\r\n for (let i = items.length; i < ipp; i++) {\r\n items.push(ArdTableRow.newEmptyCell(i));\r\n }\r\n return items;\r\n });\r\n\r\n //! columns/data setters\r\n @Input()\r\n set columns(v: (TableDataColumn | TableSubheader)[]) {\r\n this._itemStorage.setColumns(v);\r\n }\r\n private _data: any[] = [];\r\n @Input()\r\n set data(v: any[]) {\r\n this._data = v;\r\n this._itemStorage.setItems(v);\r\n }\r\n get data(): any[] {\r\n return this._data;\r\n }\r\n\r\n readonly treatDataSourceAsString = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly _suppressErrors = input<boolean>(false);\r\n\r\n //! templates\r\n readonly checkboxTemplate = contentChild<ArdiumTableCheckboxTemplateDirective, TemplateRef<TableCheckboxContext>>(\r\n ArdiumTableCheckboxTemplateDirective,\r\n {\r\n read: TemplateRef<TableCheckboxContext>,\r\n }\r\n );\r\n readonly headerCheckboxTemplate = contentChild<\r\n ArdiumTableHeaderCheckboxTemplateDirective,\r\n TemplateRef<TableHeaderCheckboxContext>\r\n >(ArdiumTableHeaderCheckboxTemplateDirective, {\r\n read: TemplateRef<TableHeaderCheckboxContext>,\r\n });\r\n readonly captionTemplate = contentChild<ArdiumTableCaptionTemplateDirective, TemplateRef<TableCaptionContext>>(\r\n ArdiumTableCaptionTemplateDirective,\r\n {\r\n read: TemplateRef<TableCaptionContext>,\r\n }\r\n );\r\n\r\n private _itemTemplates: Record<string, TemplateRef<any>> = {};\r\n readonly templateChildren = contentChildren<ArdiumTableTemplateDirective>(ArdiumTableTemplateDirective);\r\n\r\n ngAfterContentInit(): void {\r\n const templates = Array.from(this.templateChildren());\r\n for (const instance of templates) {\r\n const name = instance.name();\r\n if (!name) {\r\n console.error(new Error('ARD-FT5054: [ard-table-tmp] requires a value to be specified.'));\r\n continue;\r\n }\r\n this._itemTemplates[name] = instance.template;\r\n }\r\n }\r\n\r\n getHeaderTemplate(tmp: string | { template: string | TemplateRef<any> }): TemplateRef<any> | undefined {\r\n if (typeof tmp === 'string') return undefined;\r\n return this.getCellTemplate(tmp.template);\r\n }\r\n getHeaderCheckboxColor(): SimpleComponentColor {\r\n if (this.appearance() === TableAppearance.Strong) return SimpleComponentColor.CurrentColor;\r\n return this.color();\r\n }\r\n getCellTemplate(tmp?: string | TemplateRef<any>): TemplateRef<any> | undefined {\r\n //return undefined\r\n if (!tmp) return undefined;\r\n //return template, if it is one\r\n if (tmp instanceof TemplateRef) return tmp;\r\n //check if the name can be found\r\n if (!(tmp in this._itemTemplates)) {\r\n console.error(new Error(`ARD-NF5055: <ard-table> error: cannot find template named \"${tmp}\"`));\r\n return undefined;\r\n }\r\n //return the template\r\n return this._itemTemplates[tmp];\r\n }\r\n getCellStyle(cell: TableDataColumn | TableSubheader): string {\r\n if (isTableSubheader(cell)) return 'width:unset;min-width:unset';\r\n const width = typeof cell.width === 'number' ? `${cell.width}px` : cell.width;\r\n const minWidth = typeof cell.minWidth === 'number' ? `${cell.minWidth}px` : cell.minWidth;\r\n return [`width:${width ?? 'unset'}`, `min-width:${minWidth ?? 'unset'}`].join(';');\r\n }\r\n\r\n //! click & hover handlers\r\n onCheckboxClick(index: number): void {\r\n this.toggleRowSelected(index);\r\n }\r\n onRowClick(row: ArdTableRow, event: MouseEvent): void {\r\n if (this.clickableRows()) {\r\n event.stopPropagation();\r\n this.clickRowEvent.emit(row.itemData());\r\n return;\r\n }\r\n if (this.selectableRows()) {\r\n event.stopPropagation();\r\n this.toggleRowSelected(row.index());\r\n return;\r\n }\r\n }\r\n onRowMouseOver(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n onRowMouseEnter(index: number, event: MouseEvent): void {\r\n if (!this.selectableRows() && !this.clickableRows()) return;\r\n event.stopPropagation();\r\n this._itemStorage.highlightSingleItem(index);\r\n }\r\n onRowMouseLeave(index: number, event: MouseEvent): void {\r\n if (!this.selectableRows() && !this.clickableRows()) return;\r\n event.stopPropagation();\r\n this._itemStorage.unhighlightItem(index);\r\n }\r\n\r\n //! select handlers\r\n /**\r\n * Toggles the selection state of a row in the table.\r\n * @param selected a boolean value indicating if the row is currently selected.\r\n * @param index the index of the row in the table.\r\n */\r\n toggleRowSelected(index: number): void {\r\n if (this._itemStorage.isItemSelected(index)) {\r\n const unselected = this._itemStorage.unselectItem(index);\r\n if (unselected.length) this.unselectRowEvent.emit(unselected);\r\n } else {\r\n const [selected, failed] = this._itemStorage.selectItem(index);\r\n if (selected.length) this.selectRowEvent.emit(selected);\r\n if (failed.length) this.failedSelectRowEvent.emit(failed);\r\n }\r\n this._emitSelect();\r\n }\r\n /**\r\n * Toggles the selection state of all rows in the table.\r\n */\r\n toggleAllRowsSelected(): void {\r\n if (this._itemStorage.areAllSelected()) {\r\n const unselected = this._itemStorage.unselectAll();\r\n if (unselected.length) this.unselectRowEvent.emit(unselected);\r\n } else {\r\n const [selected, failed] = this._itemStorage.selectAll();\r\n if (selected.length) this.selectRowEvent.emit(selected);\r\n if (failed.length) this.failedSelectRowEvent.emit(failed);\r\n }\r\n this._emitSelect();\r\n }\r\n private _emitSelect(): void {\r\n const v = this._itemStorage.value();\r\n this.selectedRowsChangeEvent.emit(v);\r\n }\r\n isCellCheckbox(cell: any): boolean {\r\n return typeof cell === 'object' && '_ardCheckbox' in cell && 'index' in cell;\r\n }\r\n isHeaderCellCheckbox(cell: HeaderCell): boolean {\r\n const dataCell = cell.cell();\r\n if (isTableSubheader(dataCell)) return false;\r\n if (typeof dataCell.dataSource === 'string') return false;\r\n return dataCell.dataSource.type === 'checkbox';\r\n }\r\n isHeaderCellSortable(cell: HeaderCell): boolean {\r\n const dataCell = cell.cell();\r\n if (isTableSubheader(dataCell)) return false;\r\n return dataCell.sortable ?? false;\r\n }\r\n\r\n readonly selectedRowsChangeEvent = output<any[]>({ alias: 'selectedRowsChange' });\r\n readonly failedSelectRowEvent = output<any[]>({ alias: 'failedSelectRow' });\r\n readonly selectRowEvent = output<any[]>({ alias: 'selectRow' });\r\n readonly unselectRowEvent = output<any[]>({ alias: 'unselectRow' });\r\n readonly clickRowEvent = output<any>({ alias: 'clickRow' });\r\n\r\n //! contexts\r\n getHeaderContext(cell: TableDataColumn, index: number): TableHeaderContext | null;\r\n getHeaderContext(cell: TableSubheader, index: number): TableSubheaderContext | null;\r\n getHeaderContext(cell: TableDataColumn | TableSubheader, index: number): TableHeaderContext | TableSubheaderContext | null;\r\n getHeaderContext(cell: TableDataColumn | TableSubheader, index: number): TableHeaderContext | TableSubheaderContext | null {\r\n if (typeof cell.header !== 'string') return null;\r\n if (isTableSubheader(cell))\r\n return {\r\n $implicit: cell.header,\r\n header: cell.header,\r\n };\r\n return {\r\n $implicit: cell.header,\r\n header: cell.header,\r\n sortable: cell.sortable ?? false,\r\n sortType: this._itemStorage.getColumnSortType(index),\r\n onTriggerSort: () => this._itemStorage.toggleCurrentSortColumn(index),\r\n onTriggerResetSort: (event?: Event) => {\r\n this._itemStorage.resetSort();\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n },\r\n };\r\n }\r\n readonly getHeaderCheckboxContext = computed<TableHeaderCheckboxContext>(() => {\r\n let state: CheckboxState = CheckboxState.Unselected;\r\n if (this._itemStorage.isAnyItemSelected()) {\r\n state = CheckboxState.Indeterminate;\r\n if (this._itemStorage.areAllSelected()) {\r\n state = CheckboxState.Selected;\r\n }\r\n }\r\n return {\r\n $implicit: state,\r\n state,\r\n onChange: () => {\r\n this.toggleAllRowsSelected();\r\n },\r\n };\r\n });\r\n getCheckboxContext(index: number): TableCheckboxContext {\r\n const item = this._itemStorage.items().find(v => v.index() === index)!;\r\n const selected = item.selected();\r\n return {\r\n $implicit: selected,\r\n selected: selected,\r\n disabled: item.disabled(),\r\n onChange: () => {\r\n this.onCheckboxClick(index);\r\n },\r\n };\r\n }\r\n}\r\n","<table\r\n class=\"ard-table\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @if (caption()) {\r\n <caption class=\"ard-table__caption\">\r\n <div class=\"ard-table__caption-container\">\r\n <ng-template\r\n #defaultCaptionTemplate\r\n let-captionText\r\n >\r\n {{ captionText }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"captionTemplate() ?? defaultCaptionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: caption() }\"\r\n />\r\n </div>\r\n </caption>\r\n }\r\n <thead class=\"ard-table__header\">\r\n @for (row of headerCells(); track $index) {\r\n <tr class=\"ard-table__header-row\">\r\n @for (cell of row; track $index) {\r\n <th\r\n class=\"ard-table__header-cell\"\r\n [ngClass]=\"cell.cell().cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isHeaderCellCheckbox(cell)\"\r\n [attr.colspan]=\"cell.colspan()\"\r\n [attr.rowspan]=\"cell.rowspan()\"\r\n [scope]=\"cell.colspan() > 1 ? 'colgroup' : 'col'\"\r\n >\r\n <div\r\n class=\"ard-table__cell-container\"\r\n [class.ard-table__sortable]=\"isHeaderCellSortable(cell)\"\r\n [style.width]=\"cell.width\"\r\n [style.minWidth]=\"cell.minWidth\"\r\n >\r\n @if (isHeaderCellCheckbox(cell)) {\r\n <ng-template\r\n #defaultHeaderCheckboxTemplate\r\n let-state\r\n let-onChange=\"onChange\"\r\n >\r\n <ard-checkbox\r\n [tabIndex]=\"isLoading() ? -1 : tabIndex()\"\r\n [state]=\"state\"\r\n [color]=\"getHeaderCheckboxColor()\"\r\n unselectedColor=\"currentColor\"\r\n (change)=\"onChange()\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"headerCheckboxTemplate() ?? defaultHeaderCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"getHeaderCheckboxContext()\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultHeaderCellTemplate\r\n let-content\r\n let-sortable=\"sortable\"\r\n let-sortType=\"sortType\"\r\n let-onTriggerSort=\"onTriggerSort\"\r\n let-onTriggerResetSort=\"onTriggerResetSort\"\r\n >\r\n <div\r\n class=\"ard-table__header-template-container\"\r\n [class.ard-sortable]=\"sortable\"\r\n [class.ard-nonsortable]=\"!sortable\"\r\n >\r\n @if (sortable) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-table__header-content-container\"\r\n (click)=\"onTriggerSort($event)\"\r\n [tabindex]=\"tabIndex()\"\r\n (keydown.Esc)=\"onTriggerResetSort($event)\"\r\n >\r\n <div class=\"ard-table__header-content\">{{ content }}</div>\r\n @if (sortType !== null) {\r\n <div class=\"ard-table__header-sort-icon\">\r\n @if (sortType === 'ascending') {\r\n <ard-icon>south</ard-icon>\r\n } @else if (sortType === 'descending') {\r\n <ard-icon>north</ard-icon>\r\n }\r\n </div>\r\n }\r\n </button>\r\n } @else {\r\n <div class=\"ard-table__header-content-container\">\r\n <div class=\"ard-table__header-content\">{{ content }}</div>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"getHeaderTemplate(cell.cell().header) ?? defaultHeaderCellTemplate\"\r\n [ngTemplateOutletContext]=\"getHeaderContext(cell.cell(), $index)\"\r\n />\r\n }\r\n </div>\r\n </th>\r\n }\r\n </tr>\r\n }\r\n </thead>\r\n <tbody class=\"ard-table__body\">\r\n @for (row of dataRows(); track $index) { @if (row.isEmpty()) {\r\n <tr class=\"ard-table__empty-row\">\r\n <td\r\n class=\"ard-table__empty-cell\"\r\n colspan=\"9999\"\r\n ></td>\r\n </tr>\r\n } @else {\r\n <tr\r\n class=\"ard-table__body-row\"\r\n [class.ard-table__selected-row]=\"row.selected()\"\r\n [class.ard-table__highlighted-row]=\"row.highlighted()\"\r\n [class.ard-table__disabled-row]=\"row.disabled()\"\r\n [class.ard-table__bold-row]=\"row.bold()\"\r\n (click)=\"onRowClick(row, $event)\"\r\n (mouseover)=\"onRowMouseOver($event)\"\r\n (mouseenter)=\"onRowMouseEnter(row.index(), $event)\"\r\n (mouseleave)=\"onRowMouseLeave(row.index(), $event)\"\r\n >\r\n @for (cell of row.data(); track $index) {\r\n <ng-template #cellTmp>\r\n <div\r\n class=\"ard-table__cell-container\"\r\n [style]=\"getCellStyle(row.dataColumns()[$index])\"\r\n >\r\n @if (isCellCheckbox(cell)) {\r\n <ng-template\r\n #defaultCheckboxTemplate\r\n let-isChecked\r\n let-onChange=\"onChange\"\r\n let-disabled=\"disabled\"\r\n >\r\n <ard-checkbox\r\n [tabIndex]=\"isLoading() ? -1 : tabIndex()\"\r\n [selected]=\"isChecked\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChange()\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"checkboxTemplate() ?? defaultCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"getCheckboxContext(row.index())\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultCellTemplate\r\n let-content\r\n >\r\n {{ content }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"getCellTemplate(row.dataColumns()[$index].template) ?? defaultCellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: cell }\"\r\n />\r\n }\r\n </div>\r\n </ng-template>\r\n @if (!row.dataColumns()[$index].isRowHeader) {\r\n <td\r\n class=\"ard-table__body-cell\"\r\n [ngClass]=\"row.dataColumns()[$index].cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isCellCheckbox(cell)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"cellTmp\"></ng-template>\r\n </td>\r\n } @else {\r\n <th\r\n class=\"ard-table__body-cell ard-table__row-header\"\r\n scope=\"row\"\r\n [ngClass]=\"row.dataColumns()[$index].cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isCellCheckbox(cell)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"cellTmp\"></ng-template>\r\n </th>\r\n } }\r\n </tr>\r\n } }\r\n </tbody>\r\n @if (canDisplayPagination()) {\r\n <tfoot class=\"ard-table__foot\">\r\n <tr class=\"ard-table__foot-row\">\r\n <td\r\n class=\"ard-table__pagination-cell\"\r\n colspan=\"9999\"\r\n >\r\n <ard-table-pagination\r\n [options]=\"paginationOptions()\"\r\n [totalItems]=\"totalItems()!\"\r\n [disabled]=\"paginationDisabled()\"\r\n [(itemsPerPage)]=\"itemsPerPage\"\r\n [(page)]=\"page\"\r\n [align]=\"paginationAlign()\"\r\n [isLoading]=\"isLoading()\"\r\n [itemsPerPageText]=\"itemsPerPageText()\"\r\n [currentItemsFormatFn]=\"currentItemsFormatFn()\"\r\n />\r\n </td>\r\n </tr>\r\n </tfoot>\r\n }\r\n</table>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumIconButtonModule } from '../buttons/icon-button/icon-button.module';\nimport { ArdiumSelectModule } from '../select/select.module';\nimport { ArdiumTablePaginationComponent } from './table-pagination.component';\nimport { ArdiumIconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [ArdiumTablePaginationComponent],\n imports: [CommonModule, ArdiumSelectModule, ArdiumIconButtonModule, ArdiumIconModule],\n exports: [ArdiumTablePaginationComponent],\n})\nexport class ArdiumTablePaginationModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumTableComponent } from './table.component';\nimport { ArdiumCheckboxModule } from '../checkbox/checkbox.module';\nimport { ArdiumTablePaginationModule } from '../table-pagination/table-pagination.module';\nimport {\n ArdiumTableCaptionTemplateDirective,\n ArdiumTableCheckboxTemplateDirective,\n ArdiumTableHeaderCheckboxTemplateDirective,\n ArdiumTablePaginationTemplateDirective,\n ArdiumTableTemplateDirective,\n} from './table.directives';\nimport { ArdiumIconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [\n ArdiumTableComponent,\n ArdiumTableTemplateDirective,\n ArdiumTableCheckboxTemplateDirective,\n ArdiumTableHeaderCheckboxTemplateDirective,\n ArdiumTableCaptionTemplateDirective,\n ArdiumTablePaginationTemplateDirective,\n ],\n imports: [CommonModule, ArdiumCheckboxModule, ArdiumTablePaginationModule, ArdiumIconModule],\n exports: [\n ArdiumTableComponent,\n ArdiumTableTemplateDirective,\n ArdiumTableCheckboxTemplateDirective,\n ArdiumTableHeaderCheckboxTemplateDirective,\n ArdiumTableCaptionTemplateDirective,\n ArdiumTablePaginationTemplateDirective,\n ],\n})\nexport class ArdiumTableModule {}\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n OnChanges,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n model,\r\n} from '@angular/core';\r\nimport { TableDataColumn, TablePaginationStrategy } from '../table/table.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { CurrentItemsFormatFn, PaginationAlign } from '../table-pagination/table-pagination.types';\r\n\r\n@Component({\r\n selector: 'ard-table-from-csv',\r\n templateUrl: './table-from-csv.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTableFromCsvComponent implements AfterContentInit, OnChanges {\r\n readonly selectableRows = input<any>();\r\n readonly maxSelectedItems = input<any>();\r\n readonly clickableRows = input<any>();\r\n\r\n readonly isLoading = input<any>();\r\n readonly loadingProgress = input<any>();\r\n\r\n readonly caption = input<Nullable<string>>(undefined);\r\n\r\n readonly appearance = input<any>();\r\n readonly variant = input<any>();\r\n readonly color = input<any>();\r\n readonly align = input<any>();\r\n readonly headerAlign = input<any>();\r\n\r\n readonly compact = input<any>();\r\n readonly zebra = input<any>();\r\n readonly stickyHeader = input<any>();\r\n\r\n //! pagination\r\n readonly paginated = input<any>();\r\n\r\n readonly paginationStrategy = input<TablePaginationStrategy>(TablePaginationStrategy.Slice);\r\n\r\n readonly paginationOptions = input<number[] | { value: number; label: string }[]>([10, 25, 50]);\r\n readonly totalItems = input<any>();\r\n readonly paginationColor = input<ComponentColor>(ComponentColor.None);\r\n readonly paginationAlign = input<PaginationAlign>(PaginationAlign.Split);\r\n readonly itemsPerPageText = input<string>('Items per page:');\r\n readonly currentItemsFormatFn = input<CurrentItemsFormatFn>(\r\n ({ currentItemsFirst, currentItemsLast, totalItems }) => `${currentItemsFirst} – ${currentItemsLast} of ${totalItems}`\r\n );\r\n\r\n readonly pageFillRemaining = input<any>();\r\n readonly paginationDisabled = input<any>();\r\n readonly useFirstLastButtons = input<any>();\r\n\r\n readonly itemsPerPage = model<number>(50);\r\n readonly page = model<number>(1);\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['itemsPerPage']) {\r\n const ipp = changes['itemsPerPage'].currentValue;\r\n const options =\r\n (changes['paginationOptions']?.currentValue as number[] | { value: number; label: string }[]) ||\r\n (this.paginationOptions() as number[] | { value: number; label: string }[]);\r\n if (!options.find(v => (typeof v === 'number' ? v === ipp : v.value === ipp))) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5071: value of \"${ipp}\" in <ard-table-from-csv>'s [itemsPerPage] does not appear in [paginationOptions] array [${options\r\n .map(v => (typeof v === 'number' ? v : v.value))\r\n .join(', ')}]`\r\n )\r\n );\r\n }\r\n }\r\n if (changes['paginationOptions']) {\r\n const options = changes['paginationOptions'].currentValue.map((v: number | { value: number; label: string }) =>\r\n typeof v === 'number' ? v : v.value\r\n ) as number[];\r\n for (const opt of options) {\r\n if (opt <= 0 || opt % 1 !== 0) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5072: each item of <ard-table-from-csv>'s [paginationOptions] must be a positive integer. The \"${opt}\" option will be ignored.`\r\n )\r\n );\r\n }\r\n }\r\n }\r\n if (changes['page']) {\r\n const page = changes['page'].currentValue as number;\r\n if (page === 0) {\r\n throw new Error(\r\n `ARD-FT5073a: <ard-table-from-csv>'s [page] uses 1-indexed numbering system. The value 0 is not accepted.`\r\n );\r\n } else if (page < 0 || page % 1 !== 0) {\r\n throw new Error(`ARD-FT5073b: value of <ard-table-from-csv>'s [page] must be a positive integer, got \"${page}\".`);\r\n }\r\n }\r\n }\r\n\r\n //! data\r\n readonly separator = input<string>(',');\r\n\r\n readonly data = input<{ headers: TableDataColumn[]; dataRows: any[] } | null, string>(null, {\r\n transform: v => {\r\n if (!this._isCsvValid(v)) return null;\r\n const lines = v.split('\\n');\r\n const headers = this._convertCsvToHeaders(lines.shift()!);\r\n const dataRows = this._convertCsvToArray(lines, headers);\r\n return { headers, dataRows };\r\n },\r\n });\r\n private readonly _isDataOkay = computed(() => this.data() !== null);\r\n\r\n readonly headers = computed(() => this.data()?.headers ?? []);\r\n readonly dataRows = computed(() => this.data()?.dataRows ?? []);\r\n\r\n ngAfterContentInit(): void {\r\n if (!this._isDataOkay()) {\r\n console.error(new Error(`ARD-FT5070: Expected <ard-table-from-csv>'s [data] attribute to be a non-empty string, got \"\".`));\r\n }\r\n }\r\n\r\n private _isCsvValid(csv: string): boolean {\r\n return csv.length > 1;\r\n }\r\n private _convertCsvToHeaders(line: string): TableDataColumn[] {\r\n const headers = line.split(this.separator());\r\n return headers.map(header => {\r\n header = header.trim();\r\n return {\r\n header,\r\n dataSource: header,\r\n };\r\n });\r\n }\r\n private _convertCsvToArray(lines: string[], headers: TableDataColumn[]): any[] {\r\n const dataRows: Record<string, any>[] = [];\r\n\r\n for (const line of lines) {\r\n const lineArr = line.split(this.separator());\r\n\r\n const obj: Record<string, any> = {};\r\n for (let i = 0; i < headers.length; i++) {\r\n const source = headers[i].dataSource as string;\r\n obj[source] = lineArr[i]?.trim() ?? '';\r\n }\r\n dataRows.push(obj);\r\n }\r\n return dataRows;\r\n }\r\n}\r\n","<ard-table\r\n treatDataSourceAsString\r\n [columns]=\"headers()\"\r\n [data]=\"dataRows()\"\r\n [selectableRows]=\"selectableRows()\"\r\n [maxSelectedItems]=\"maxSelectedItems()\"\r\n [clickableRows]=\"clickableRows()\"\r\n [isLoading]=\"isLoading()\"\r\n [loadingProgress]=\"loadingProgress()\"\r\n [caption]=\"caption()\"\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [color]=\"color()\"\r\n [align]=\"align()\"\r\n [headerAlign]=\"headerAlign()\"\r\n [compact]=\"compact()\"\r\n [zebra]=\"zebra()\"\r\n [stickyHeader]=\"stickyHeader()\"\r\n [paginated]=\"paginated()\"\r\n [paginationStrategy]=\"paginationStrategy()\"\r\n [totalItems]=\"totalItems()\"\r\n [paginationColor]=\"paginationColor()\"\r\n [paginationAlign]=\"paginationAlign()\"\r\n [itemsPerPageText]=\"itemsPerPageText()\"\r\n [currentItemsFormatFn]=\"currentItemsFormatFn()\"\r\n [pageFillRemaining]=\"pageFillRemaining()\"\r\n [paginationDisabled]=\"paginationDisabled()\"\r\n [useFirstLastButtons]=\"useFirstLastButtons()\"\r\n [(itemsPerPage)]=\"itemsPerPage\"\r\n [(page)]=\"page\"\r\n/>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumTableFromCsvComponent } from './table-from-csv.component';\nimport { ArdiumTableModule } from './../table/table.module';\n\n@NgModule({\n declarations: [ArdiumTableFromCsvComponent],\n imports: [CommonModule, ArdiumTableModule],\n exports: [ArdiumTableFromCsvComponent],\n})\nexport class ArdiumTableFromCsvModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isArray } from 'simple-bool';\r\nimport { StarColor, StarFillMode } from './../star.types';\r\n\r\n@Component({\r\n selector: 'ard-star-display',\r\n templateUrl: './star-display.component.html',\r\n styleUrls: ['./star-display.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumStarDisplayComponent {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(StarColor.Star);\r\n\r\n readonly ngClasses = computed<string>(() => [this.wrapperClasses(), `ard-color-${this.color}`].join(' '));\r\n\r\n //! stars\r\n readonly max = input<number, any>(5, { transform: v => coerceNumberProperty(v, 0) });\r\n\r\n readonly value = input<number | StarFillMode[], string | number | StarFillMode[]>(0, {\r\n transform: v => {\r\n if (isArray(v)) {\r\n return v;\r\n }\r\n return coerceNumberProperty(v, 0);\r\n },\r\n });\r\n\r\n readonly starArray = computed<StarFillMode[]>(() => {\r\n let v = this.value();\r\n let newArr: StarFillMode[];\r\n\r\n // pad the array with non-filled stars and return it\r\n if (isArray(v)) {\r\n newArr = [...v];\r\n while (newArr.length < this.max()) {\r\n newArr.push(StarFillMode.None);\r\n }\r\n return newArr;\r\n }\r\n\r\n // create an array from a numeric value\r\n newArr = [];\r\n while (newArr.length < this.max()) {\r\n v--;\r\n if (v + 1 >= 1) {\r\n newArr.push(StarFillMode.Filled);\r\n continue;\r\n }\r\n if (Math.round(v + 1) === 1) {\r\n newArr.push(StarFillMode.Half);\r\n continue;\r\n }\r\n newArr.push(StarFillMode.None);\r\n }\r\n return newArr;\r\n });\r\n}\r\n","<div\r\n class=\"ard-star-display\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (fillMode of starArray(); track $index) {\r\n <ard-star\r\n [fill]=\"fillMode\"\r\n [color]=\"color()\"\r\n />\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStarDisplayComponent } from './star-display.component';\nimport { ArdiumStarModule } from '../star.module';\n\n@NgModule({\n declarations: [ArdiumStarDisplayComponent],\n imports: [CommonModule, ArdiumStarModule],\n exports: [ArdiumStarDisplayComponent],\n})\nexport class ArdiumStarDisplayModule {}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\n\r\n@Component({\r\n selector: 'ard-tab',\r\n templateUrl: './tab.component.html',\r\n styleUrl: './tab.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTabComponent {\r\n readonly disabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly selected = signal<boolean>(false);\r\n @Input('selected')\r\n set _selected(v: any) {\r\n this.selected.set(coerceBooleanProperty(v));\r\n }\r\n\r\n setSelected(state: boolean): void {\r\n this.selected.set(state);\r\n this._emitChange();\r\n }\r\n\r\n @HostBinding('class.ard-tab-selected')\r\n get _selectedHostAttribute() {\r\n return this.selected();\r\n }\r\n\r\n private _emitChange(): void {\r\n this.selectedChange.emit(this.selected());\r\n }\r\n\r\n readonly focused = signal<boolean>(false);\r\n\r\n readonly _label = input<string | null>(null, { alias: 'label' });\r\n readonly label = computed(() => this._label() ?? this.tabId());\r\n\r\n readonly tabId = input.required<string>();\r\n\r\n readonly focusEvent = output<void>();\r\n readonly blurEvent = output<void>();\r\n readonly selectedChange = output<boolean>();\r\n}\r\n","<ng-content></ng-content>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n contentChildren,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { OneAxisAlignment } from '../types/alignment.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdiumTabComponent } from './tab/tab.component';\r\n\r\n@Component({\r\n selector: 'ard-tabber',\r\n templateUrl: './tabber.component.html',\r\n styleUrl: './tabber.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTabberComponent implements AfterContentInit {\r\n public readonly tabs = contentChildren(ArdiumTabComponent, { descendants: true });\r\n\r\n readonly currentTab = signal<ArdiumTabComponent | null>(null);\r\n readonly currentFocusedTab = signal<ArdiumTabComponent | null>(null);\r\n\r\n ngAfterContentInit(): void {\r\n let selectedCmp: ArdiumTabComponent | null = null;\r\n for (const cmp of this.tabs()) {\r\n if (cmp.selected()) {\r\n // ensure only one tab is selected\r\n if (selectedCmp) {\r\n cmp.selected.set(false);\r\n }\r\n\r\n selectedCmp = cmp;\r\n }\r\n\r\n cmp.focusEvent.subscribe(() => {\r\n this.focusEvent.emit(cmp.tabId());\r\n });\r\n cmp.blurEvent.subscribe(() => {\r\n this.blurEvent.emit(cmp.tabId());\r\n });\r\n cmp.selectedChange.subscribe(isSelected => {\r\n if (!isSelected) return;\r\n this.changeTab.emit(cmp.tabId());\r\n });\r\n }\r\n\r\n if (!selectedCmp) {\r\n selectedCmp = this.tabs()[0] ?? null;\r\n\r\n if (selectedCmp) {\r\n selectedCmp.selected.set(true);\r\n }\r\n }\r\n\r\n this.currentTab.set(selectedCmp);\r\n }\r\n\r\n onTabClick(tab: ArdiumTabComponent): void {\r\n const curr = this.currentTab();\r\n if (curr) {\r\n curr.selected.set(false);\r\n curr.selectedChange.emit(false);\r\n }\r\n this.currentTab.set(tab);\r\n\r\n tab.selected.set(true);\r\n tab.selectedChange.emit(true);\r\n }\r\n onTabFocus(tab: ArdiumTabComponent): void {\r\n tab.focusEvent.emit();\r\n tab.focused.set(true);\r\n\r\n this.currentFocusedTab.set(tab);\r\n }\r\n onTabBlur(tab: ArdiumTabComponent): void {\r\n tab.blurEvent.emit();\r\n tab.focused.set(false);\r\n\r\n this.currentFocusedTab.set(null);\r\n }\r\n\r\n readonly focusEvent = output<string>({ alias: 'focus' });\r\n readonly blurEvent = output<string>({ alias: 'blur' });\r\n readonly changeTab = output<string>();\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly ngClasses = computed(() => [`ard-color-${this.color()}`].join(' '));\r\n\r\n //! tab container settings\r\n readonly stretchTabs = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly uniformTabWidths = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly tabAlignment = input<OneAxisAlignment>(OneAxisAlignment.Left);\r\n\r\n readonly tabContainerClasses = computed(() =>\r\n [\r\n this.uniformTabWidths() && !this.stretchTabs() ? 'ard-uniform-tab-widths' : '',\r\n this.stretchTabs() ? 'ard-stretch-tabs' : '',\r\n this.stretchTabs() ? '' : `ard-tab-align-${this.tabAlignment()}`,\r\n ].join(' ')\r\n );\r\n\r\n //! other\r\n readonly tabIndex = input<number | string>(0);\r\n}\r\n","<div\r\n class=\"ard-tabber\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div\r\n class=\"ard-tabber-tabs\"\r\n [ngClass]=\"tabContainerClasses()\"\r\n [style]=\"{ '--ard-_tabber-tabs': tabs().length }\"\r\n >\r\n @for (tab of tabs(); track tab) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n role=\"tab\"\r\n class=\"ard-tab-button\"\r\n [id]=\"tab.tabId()\"\r\n [class.ard-tab-active]=\"tab === currentTab()\"\r\n [class.ard-tab-focused]=\"tab === currentFocusedTab()\"\r\n (click)=\"!tab.selected() && onTabClick(tab)\"\r\n (focus)=\"onTabFocus(tab)\"\r\n (blur)=\"onTabBlur(tab)\"\r\n [tabindex]=\"tabIndex()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n {{ tab.label() }}\r\n </button>\r\n }\r\n </div>\r\n <div\r\n role=\"tabpanel\"\r\n class=\"ard-tabber-content\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumTabberComponent } from './tabber.component';\r\nimport { ArdiumTabComponent } from './tab/tab.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumTabberComponent, ArdiumTabComponent],\r\n imports: [CommonModule],\r\n exports: [ArdiumTabberComponent, ArdiumTabComponent],\r\n})\r\nexport class ArdiumTabberModule {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n ElementRef,\r\n HostBinding,\r\n Renderer2,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\nimport { OneAxisAlignment } from '../types/alignment.types';\r\n\r\n@Component({\r\n selector: 'ard-card-header',\r\n templateUrl: 'card-header.template.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumCardHeaderComponent {}\r\n\r\n@Directive({ selector: 'ard-card-subtitle, [ard-card-subtitle]' })\r\nexport class ArdiumCardSubtitleDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-subtitle');\r\n }\r\n}\r\n\r\n@Directive({ selector: 'ard-card-title, [ard-card-title]' })\r\nexport class ArdiumCardTitleDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-title');\r\n }\r\n}\r\n\r\n@Directive({ selector: '[ard-card-avatar]' })\r\nexport class ArdiumCardAvatarDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-avatar');\r\n }\r\n}\r\n\r\n@Directive({ selector: 'ard-card-content, [ard-card-content]' })\r\nexport class ArdiumCardContentDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-content');\r\n }\r\n}\r\n\r\n@Directive({ selector: '[ard-card-image]' })\r\nexport class ArdiumCardImageDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-image');\r\n }\r\n}\r\n\r\n@Directive({ selector: 'ard-card-action-buttons, [ard-card-action-buttons]' })\r\nexport class ArdiumCardActionButtonsDirective {\r\n readonly align = input<OneAxisAlignment>(OneAxisAlignment.Right);\r\n\r\n readonly alignClass = computed(() => `ard-card-action-buttons ard-align-${this.align()}`);\r\n\r\n @HostBinding('class')\r\n get _alignClassHostAttribute() {\r\n return this.alignClass();\r\n }\r\n}\r\n\r\n@Directive({ selector: 'ard-card-footer, [ard-card-footer]' })\r\nexport class ArdiumCardFooterDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-footer');\r\n }\r\n}\r\n","<ng-content select=\"[ard-card-avatar]\" />\r\n<div class=\"ard-card-header-title-container\">\r\n <ng-content\r\n select=\"ard-card-title, ard-card-subtitle,\r\n [ard-card-title], [ard-card-subtitle]\"\r\n />\r\n</div>\r\n<ng-content />\r\n","export const CardAppearance = {\n Outlined: 'outlined',\n Raised: 'raised',\n} as const;\nexport type CardAppearance = (typeof CardAppearance)[keyof typeof CardAppearance];\n\nexport const CardVariant = {\n Rounded: 'rounded',\n Sharp: 'sharp',\n} as const;\nexport type CardVariant = (typeof CardVariant)[keyof typeof CardVariant];\n","import { ChangeDetectionStrategy, Component, Directive, HostBinding, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { CardAppearance, CardVariant } from './card.types';\r\n\r\n@Directive({ selector: '[ard-card]' })\r\nexport class ArdiumCardDirective {\r\n //! appearance\r\n readonly appearance = input<CardAppearance>(CardAppearance.Raised);\r\n readonly variant = input<CardVariant>(CardVariant.Rounded);\r\n\r\n readonly ngClasses = computed(() =>\r\n ['ard-card', `ard-appearance-${this.appearance()}`, `ard-variant-${this.variant()}`].join(' ')\r\n );\r\n\r\n @HostBinding('class')\r\n get _ngClassesHostAttribute() {\r\n return this.ngClasses();\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'ard-card',\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumCardComponent extends ArdiumCardDirective {}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport {\n ArdiumCardActionButtonsDirective,\n ArdiumCardAvatarDirective,\n ArdiumCardContentDirective,\n ArdiumCardFooterDirective,\n ArdiumCardHeaderComponent,\n ArdiumCardImageDirective,\n ArdiumCardSubtitleDirective,\n ArdiumCardTitleDirective,\n} from './card.children';\nimport { ArdiumCardComponent, ArdiumCardDirective } from './card.component';\n\n@NgModule({\n declarations: [\n ArdiumCardComponent,\n ArdiumCardDirective,\n ArdiumCardHeaderComponent,\n ArdiumCardTitleDirective,\n ArdiumCardSubtitleDirective,\n ArdiumCardAvatarDirective,\n ArdiumCardContentDirective,\n ArdiumCardImageDirective,\n ArdiumCardActionButtonsDirective,\n ArdiumCardFooterDirective,\n ],\n imports: [CommonModule],\n exports: [\n ArdiumCardComponent,\n ArdiumCardDirective,\n ArdiumCardHeaderComponent,\n ArdiumCardTitleDirective,\n ArdiumCardSubtitleDirective,\n ArdiumCardAvatarDirective,\n ArdiumCardContentDirective,\n ArdiumCardImageDirective,\n ArdiumCardActionButtonsDirective,\n ArdiumCardFooterDirective,\n ],\n})\nexport class ArdiumCardModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\n\r\n@Component({\r\n selector: 'ard-divider',\r\n template: '',\r\n styleUrls: ['./divider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumDividerComponent {\r\n readonly vertical = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n @HostBinding('class.ard-divider-vertical')\r\n get _verticalHostAttribute() {\r\n return this.vertical();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDividerComponent } from './divider.component';\n\n@NgModule({\n declarations: [ArdiumDividerComponent],\n imports: [CommonModule],\n exports: [ArdiumDividerComponent],\n})\nexport class ArdiumDividerModule {}\n","import { Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n TemplateRef,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\r\n\r\n@Component({\r\n selector: 'ard-modal',\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumModalComponent {\r\n private readonly overlay = inject(Overlay);\r\n private readonly scrollStrategyOpts = inject(ScrollStrategyOptions);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n\r\n //! appearance\r\n readonly appearance = input<PanelAppearance>(PanelAppearance.Raised);\r\n readonly variant = input<PanelVariant>(PanelVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [`ard-variant-${this.variant()}`, `ard-appearance-${this.appearance()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! heading\r\n readonly heading = input<string>('');\r\n\r\n readonly noCloseButton = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! options\r\n readonly noBackdrop = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly disableBackdropClose = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! open state handling\r\n private readonly open = signal<boolean>(false);\r\n @Input({ alias: 'open' })\r\n set _open(v: any) {\r\n this.open.set(coerceBooleanProperty(v));\r\n if (this.open()) this._openOverlay();\r\n else this._destroyOverlay();\r\n }\r\n\r\n readonly openChange = output<boolean>();\r\n readonly closeEvent = output<void>({ alias: 'close' });\r\n\r\n //! overlay handling\r\n readonly modalTemplate = viewChild('modalTemplate', { read: TemplateRef });\r\n\r\n private _modalOverlay?: OverlayRef;\r\n\r\n private _openOverlay(): void {\r\n const strategy = this.overlay.position().global();\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n scrollStrategy: this.scrollStrategyOpts.block(),\r\n hasBackdrop: false,\r\n });\r\n\r\n this._modalOverlay = this.overlay.create(config);\r\n\r\n const portal = new TemplatePortal(this.modalTemplate()!, this.viewContainerRef);\r\n this._modalOverlay.attach(portal);\r\n }\r\n private _destroyOverlay(): void {\r\n if (!this._modalOverlay) return;\r\n\r\n this.openChange.emit(false);\r\n this.closeEvent.emit();\r\n this._modalOverlay.dispose();\r\n delete this._modalOverlay;\r\n }\r\n\r\n //! events\r\n onBackdropClick(): void {\r\n if (this.disableBackdropClose()) return;\r\n this._destroyOverlay();\r\n }\r\n onCloseButtonClick(): void {\r\n this._destroyOverlay();\r\n }\r\n}\r\n","<ng-template #modalTemplate>\r\n @if (noBackdrop()) {\r\n <div\r\n class=\"ard-modal\"\r\n [ngClass]=\"ngClasses\"\r\n (click)=\"onBackdropClick()\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"_modalInsidePanel\"></ng-template>\r\n </div>\r\n } @else {\r\n <div\r\n class=\"ard-modal ard-modal-backdrop\"\r\n [ngClass]=\"ngClasses\"\r\n (click)=\"onBackdropClick()\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"_modalInsidePanel\"></ng-template>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #_modalInsidePanel>\r\n <div\r\n class=\"ard-modal-panel\"\r\n cdkTrapFocus\r\n [class.ard-modal-no-heading-text]=\"!heading\"\r\n [class.ard-modal-has-close-button]=\"!this.noCloseButton()\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <div class=\"ard-modal-heading\">\r\n <div class=\"ard-modal-heading-text\">{{ heading() }}</div>\r\n @if (!noCloseButton()) {\r\n <ard-icon-button\r\n class=\"ard-modal-close-button\"\r\n color=\"none\"\r\n [compact]=\"compact()\"\r\n (click)=\"onCloseButtonClick()\"\r\n >\r\n <ard-icon>close</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n <div class=\"ard-modal-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumModalComponent } from './modal.component';\nimport { ArdiumIconButtonModule } from '../buttons/icon-button/icon-button.module';\nimport { ArdiumIconModule } from '../icon/icon.module';\nimport { A11yModule } from '@angular/cdk/a11y';\n\n@NgModule({\n declarations: [ArdiumModalComponent],\n imports: [CommonModule, ArdiumIconButtonModule, ArdiumIconModule, A11yModule],\n exports: [ArdiumModalComponent],\n})\nexport class ArdiumModalModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { DialogButtonsContext } from './dialog.types';\n\n@Directive({ selector: 'ard-dialog > ng-template[ard-buttons-tmp]' })\nexport class ArdDialogButtonsTemplateDirective {\n constructor(public template: TemplateRef<DialogButtonsContext>) {}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n input,\r\n model,\r\n output,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ButtonAppearance } from '../buttons/general-button.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\r\nimport { ArdDialogButtonsTemplateDirective } from './dialog.directives';\r\nimport { DialogButtonsContext, DialogResult } from './dialog.types';\r\n\r\n@Component({\r\n selector: 'ard-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrl: './dialog.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumDialogComponent {\r\n //! appearance\r\n //all handled by modal component\r\n readonly appearance = input<PanelAppearance>(PanelAppearance.Raised);\r\n readonly variant = input<PanelVariant>(PanelVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! heading\r\n //all handled by modal component\r\n readonly heading = input<string>('');\r\n\r\n readonly noCloseButton = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! options\r\n //all handled by modal component\r\n readonly noBackdrop = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly disableBackdropClose = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! open state handling\r\n //all handled by modal component\r\n readonly open = model<boolean>(false);\r\n\r\n readonly closeEvent = output<DialogResult>({ alias: 'close' });\r\n readonly confirmEvent = output<void>({ alias: 'confirm' });\r\n readonly rejectEvent = output<void>({ alias: 'reject' });\r\n\r\n //! button settings\r\n readonly confirmButtonText = input<string>('Confirm');\r\n readonly confirmButtonColor = input<ComponentColor>(ComponentColor.Primary);\r\n readonly confirmButtonAppearance = input<ButtonAppearance>(ButtonAppearance.RaisedStrong);\r\n readonly rejectButtonText = input<string>('Cancel');\r\n readonly rejectButtonColor = input<ComponentColor>(ComponentColor.Primary);\r\n readonly rejectButtonAppearance = input<ButtonAppearance>(ButtonAppearance.Transparent);\r\n\r\n readonly noRejectButton = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly canConfirm = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n onConfirmClick() {\r\n if (!this.canConfirm()) return;\r\n\r\n this.open.set(false);\r\n setTimeout(() => {\r\n this.closeEvent.emit('confirm');\r\n this.confirmEvent.emit();\r\n }, 0);\r\n }\r\n onRejectClick() {\r\n this.open.set(false);\r\n setTimeout(() => {\r\n this.closeEvent.emit('reject');\r\n this.rejectEvent.emit();\r\n }, 0);\r\n }\r\n onModalClose() {\r\n this.closeEvent.emit('close');\r\n }\r\n\r\n //! templates\r\n readonly buttonsTemplate = contentChild(ArdDialogButtonsTemplateDirective);\r\n\r\n readonly getButtonsContext = computed<DialogButtonsContext>(() => {\r\n return {\r\n confirmButton: {\r\n text: this.confirmButtonText(),\r\n color: this.confirmButtonColor(),\r\n appearance: this.confirmButtonAppearance(),\r\n },\r\n rejectButton: {\r\n enabled: !this.noRejectButton(),\r\n text: this.rejectButtonText(),\r\n color: this.rejectButtonColor(),\r\n appearance: this.rejectButtonAppearance(),\r\n },\r\n canConfirm: this.canConfirm(),\r\n onConfirm: () => this.onConfirmClick(),\r\n onReject: () => this.onRejectClick(),\r\n dialogAppearance: this.appearance(),\r\n dialogVariant: this.variant(),\r\n dialogCompact: this.compact(),\r\n };\r\n });\r\n}\r\n","<ard-modal\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [heading]=\"heading()\"\r\n [noCloseButton]=\"noCloseButton()\"\r\n [noBackdrop]=\"noBackdrop()\"\r\n [disableBackdropClose]=\"disableBackdropClose()\"\r\n [(open)]=\"open\"\r\n (close)=\"onModalClose()\"\r\n>\r\n <div class=\"ard-dialog-container\">\r\n <div class=\"ard-dialog-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"ard-dialog-buttons\">\r\n <ng-template\r\n #defaultButtonsTemplate\r\n let-confirmButton=\"confirmButton\"\r\n let-rejectButton=\"rejectButton\"\r\n let-canConfirm=\"canConfirm\"\r\n let-onConfirm=\"onConfirm\"\r\n let-onReject=\"onReject\"\r\n let-dialogVariant=\"dialogVariant\"\r\n let-dialogCompact=\"dialogCompact\"\r\n >\r\n <div class=\"ard-dialog-buttons-container\">\r\n @if (rejectButton.enabled) {\r\n <ard-button\r\n [color]=\"rejectButton.color\"\r\n [appearance]=\"rejectButton.appearance\"\r\n [variant]=\"dialogVariant\"\r\n [compact]=\"dialogCompact\"\r\n (click)=\"onReject()\"\r\n >\r\n {{ rejectButton.text }}\r\n </ard-button>\r\n }\r\n <ard-button\r\n [color]=\"confirmButton.color\"\r\n [appearance]=\"confirmButton.appearance\"\r\n [variant]=\"dialogVariant\"\r\n [compact]=\"dialogCompact\"\r\n (click)=\"onConfirm()\"\r\n [disabled]=\"!canConfirm\"\r\n >\r\n {{ confirmButton.text }}\r\n </ard-button>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"buttonsTemplate()?.template ?? defaultButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"getButtonsContext()\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n</ard-modal>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDialogComponent } from './dialog.component';\nimport { ArdiumButtonModule } from '../buttons/button/button.module';\nimport { ArdiumModalModule } from '../modal/modal.module';\nimport { ArdDialogButtonsTemplateDirective } from './dialog.directives';\n\n@NgModule({\n declarations: [ArdiumDialogComponent, ArdDialogButtonsTemplateDirective],\n imports: [CommonModule, ArdiumButtonModule, ArdiumModalModule],\n exports: [ArdiumDialogComponent, ArdDialogButtonsTemplateDirective],\n})\nexport class ArdiumDialogModule {}\n","import { ButtonAppearance } from '../buttons/general-button.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\r\n\r\nexport const DialogResult = {\r\n Confirm: 'confirm',\r\n Reject: 'reject',\r\n Close: 'close',\r\n} as const;\r\nexport type DialogResult = (typeof DialogResult)[keyof typeof DialogResult];\r\n\r\nexport interface DialogButtonsContext {\r\n confirmButton: {\r\n text: string;\r\n color: ComponentColor;\r\n appearance: ButtonAppearance;\r\n };\r\n rejectButton: {\r\n enabled: boolean;\r\n text: string;\r\n color: ComponentColor;\r\n appearance: ButtonAppearance;\r\n };\r\n canConfirm: boolean;\r\n onConfirm: () => void;\r\n onReject: () => void;\r\n dialogAppearance: PanelAppearance;\r\n dialogVariant: PanelVariant;\r\n dialogCompact: boolean;\r\n}\r\n","interface IQueue {\n readonly length: number;\n}\n\nexport class Queue<T = unknown> implements IQueue {\n private head?: QueueItem<T>;\n private tail?: QueueItem<T>;\n\n push(item: T): void {\n if (!this.tail) return this.pushFront(item);\n this.tail!.next = new QueueItem(item);\n this.tail = this.tail!.next!;\n }\n pushFront(item: T): void {\n this.head = new QueueItem(item, this.head);\n if (!this.tail) this.tail = this.head;\n }\n pop(): T | undefined {\n const head = this.head;\n if (!head) return;\n //replace head with the next item\n this.head = head.next;\n //delete the tail if there are no next items\n if (!this.head) this.tail = undefined;\n\n return head.value;\n }\n peek(): T | undefined {\n return this.head?.value;\n }\n clear(): void {\n this.head = undefined;\n this.tail = undefined;\n }\n get length(): number {\n let length = 0;\n let currentNode = this.head;\n while (currentNode) {\n length++;\n currentNode = currentNode.next;\n }\n return length;\n }\n isEmpty(): boolean {\n return !this.head;\n }\n toArray(): T[] {\n const array: T[] = [];\n let currentNode = this.head;\n while (currentNode) {\n array.push(currentNode.value);\n currentNode = currentNode.next;\n }\n return array;\n }\n}\n\nexport class QueueItem<T> {\n constructor(\n public value: T,\n public next?: QueueItem<T>\n ) {}\n}\n","import { ComponentType } from '@angular/cdk/portal';\r\nimport { InjectionToken } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { ArdSnackbarData, ArdSnackbarOptions, ArdSnackbarType } from './snackbar.types';\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentColor } from '../types/colors.types';\r\n\r\nexport const ARD_SNACKBAR_DATA = new InjectionToken<ArdSnackbarData>('ArdSnackbarData');\r\nexport const ARD_SNACKBAR_COLOR = new InjectionToken<ComponentColor>('ArdSnackbarColor');\r\nexport const ARD_SNACKBAR_TYPE = new InjectionToken<ArdSnackbarType>('ArdSnackbarType');\r\n\r\nexport class _ArdSnackbarRefInternal<T> {\r\n constructor(\r\n public component: ComponentType<T>,\r\n public options: Required<ArdSnackbarOptions>,\r\n dismiss: (withAction?: boolean) => void\r\n ) {\r\n this.publicRef = new ArdSnackbarRef(dismiss, this._onOpen, this._onCloseStart);\r\n }\r\n\r\n readonly publicRef!: ArdSnackbarRef<T>;\r\n\r\n timeout!: any;\r\n overlay!: OverlayRef;\r\n\r\n private readonly _onOpen = new Subject<void>();\r\n private readonly _onCloseStart = new BehaviorSubject<boolean>(false);\r\n\r\n markAsOpened() {\r\n this._onOpen.next();\r\n this._onOpen.complete();\r\n }\r\n markAsStartingToClose() {\r\n this._onCloseStart.next(true);\r\n this._onCloseStart.complete();\r\n }\r\n}\r\nexport class ArdSnackbarRef<T = unknown> {\r\n constructor(\r\n private readonly dismiss: (withAction?: boolean) => void,\r\n private readonly _onOpen: Subject<void>,\r\n private readonly _onCloseStart: BehaviorSubject<boolean>\r\n ) {}\r\n\r\n private readonly _onClose = new Subject<boolean>();\r\n public readonly onOpen = this._onOpen.asObservable();\r\n public readonly onClose = this._onClose.asObservable();\r\n public readonly onCloseStart = this._onCloseStart.asObservable();\r\n\r\n public instance!: T;\r\n\r\n close(withAction = false): void {\r\n if (this.isClosed) return;\r\n this.dismiss(withAction);\r\n this.markAsClosed();\r\n }\r\n\r\n markAsClosed(withAction = false): void {\r\n if (this.isClosed) return;\r\n this._onClose.next(withAction);\r\n this._onClose.complete();\r\n this._isClosed = true;\r\n }\r\n\r\n private _isClosed = false;\r\n public get isClosed(): boolean {\r\n return this._isClosed;\r\n }\r\n}\r\n","import { ElementRef } from '@angular/core';\r\nimport { ComponentColor } from '../types/colors.types';\r\n\r\nexport const ArdSnackbarAlignment = {\r\n TopLeft: 'top-left',\r\n TopCenter: 'top-center',\r\n TopRight: 'top-right',\r\n BottomLeft: 'bottom-left',\r\n BottomCenter: 'bottom-center',\r\n BottomRight: 'bottom-right',\r\n} as const;\r\nexport type ArdSnackbarAlignment = (typeof ArdSnackbarAlignment)[keyof typeof ArdSnackbarAlignment];\r\n\r\nexport const ArdSnackbarOriginRelation = {\r\n Inside: 'inside',\r\n Outside: 'outside',\r\n} as const;\r\nexport type ArdSnackbarOriginRelation = (typeof ArdSnackbarOriginRelation)[keyof typeof ArdSnackbarOriginRelation];\r\n\r\nexport const ArdSnackbarQueueHandling = {\r\n Default: 'default',\r\n Skip: 'skip',\r\n Overwrite: 'overwrite',\r\n} as const;\r\nexport type ArdSnackbarQueueHandling = (typeof ArdSnackbarQueueHandling)[keyof typeof ArdSnackbarQueueHandling];\r\n\r\nexport type ArdSnackbarOrigin<T = any> = HTMLElement | ElementRef<T>;\r\n\r\nexport const ArdSnackbarType = {\r\n None: 'none',\r\n Danger: 'danger',\r\n Warning: 'warn',\r\n Success: 'success',\r\n Info: 'info',\r\n} as const;\r\nexport type ArdSnackbarType = (typeof ArdSnackbarType)[keyof typeof ArdSnackbarType];\r\n\r\nexport interface ArdSnackbarData {\r\n message: string;\r\n action?: string;\r\n}\r\n\r\nexport interface ArdSnackbarOptions {\r\n data?: ArdSnackbarData;\r\n placement?: {\r\n align?: ArdSnackbarAlignment;\r\n origin?: ArdSnackbarOrigin;\r\n originRelation?: ArdSnackbarOriginRelation;\r\n };\r\n duration?: number;\r\n color?: ComponentColor;\r\n type?: ArdSnackbarType;\r\n queueHandling?: ArdSnackbarQueueHandling;\r\n panelClass?: string | string[];\r\n}\r\n","import { AsyncPipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\r\nimport { isDefined } from 'simple-bool';\r\nimport { ArdiumButtonModule } from '../buttons/button/button.module';\r\nimport { ArdiumIconModule } from '../icon/icon.module';\r\nimport { ARD_SNACKBAR_COLOR, ARD_SNACKBAR_DATA, ARD_SNACKBAR_TYPE, ArdSnackbarRef } from './snackbar-ref';\r\nimport { ArdSnackbarType } from './snackbar.types';\r\n\r\n@Component({\r\n selector: 'ard-simple-snackbar',\r\n templateUrl: './snackbar.component.html',\r\n styles: ``,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [ArdiumButtonModule, AsyncPipe, ArdiumIconModule],\r\n standalone: true,\r\n})\r\nexport class _ArdSimpleSnackbarComponent {\r\n public readonly snackbarRef = inject(ArdSnackbarRef);\r\n public readonly data = inject(ARD_SNACKBAR_DATA);\r\n public readonly color = inject(ARD_SNACKBAR_COLOR);\r\n public readonly type = inject(ARD_SNACKBAR_TYPE);\r\n\r\n public readonly typeIcon = this._getTypeIcon();\r\n\r\n closeWithAction(): void {\r\n this.snackbarRef.close(true);\r\n }\r\n\r\n get hasAction(): boolean {\r\n return isDefined(this.data.action);\r\n }\r\n\r\n private _getTypeIcon(): string | null {\r\n switch (this.type) {\r\n case ArdSnackbarType.Danger:\r\n return 'error';\r\n case ArdSnackbarType.Warning:\r\n return 'warning';\r\n case ArdSnackbarType.Success:\r\n return 'check_circle';\r\n case ArdSnackbarType.Info:\r\n return 'info';\r\n }\r\n return null;\r\n }\r\n\r\n get colorClass(): string {\r\n return `ard-color-${this.color}`;\r\n }\r\n}\r\n","<div\r\n class=\"ard-snackbar\"\r\n [class.ard-snackbar-closing]=\"snackbarRef.onCloseStart | async\"\r\n [class]=\"colorClass\"\r\n>\r\n <div class=\"ard-snackbar-content\">\r\n @if (typeIcon) {\r\n <ard-icon filled>{{ typeIcon }}</ard-icon>\r\n }\r\n <div class=\"ard-snackbar-message\">{{ data.message }}</div>\r\n </div>\r\n @if (data.action) {\r\n <ard-button\r\n class=\"ard-snackbar-action\"\r\n appearance=\"transparent\"\r\n lightColoring\r\n [color]=\"color\"\r\n (click)=\"closeWithAction()\"\r\n >{{ data.action }}</ard-button\r\n >\r\n }\r\n</div>\r\n","import { InjectionToken } from '@angular/core';\nimport { ArdSnackbarAlignment, ArdSnackbarOptions, ArdSnackbarOriginRelation, ArdSnackbarQueueHandling } from './snackbar.types';\n\nexport const _DEFAULT_OPTIONS_STATIC = {\n placement: {\n align: ArdSnackbarAlignment.BottomCenter,\n origin: document.body,\n originRelation: ArdSnackbarOriginRelation.Inside,\n },\n duration: 5000,\n queueHandling: ArdSnackbarQueueHandling.Default,\n panelClass: [],\n data: { message: null },\n} as unknown as Required<ArdSnackbarOptions>;\n\nexport const ARD_SNACKBAR_DEFAULT_OPTIONS = new InjectionToken<Required<ArdSnackbarOptions>>('ard-snackbar-default-options', {\n factory: () => ({ ..._DEFAULT_OPTIONS_STATIC }),\n});\n\nexport const ARD_SNACKBAR_ANIMATION_LENGTH = new InjectionToken<number>('ard-snackbar-animation-length', {\n factory: () => 150,\n});\n","import { ComponentType, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Injectable, Injector, OnDestroy, inject } from '@angular/core';\r\nimport { isArray, isDefined } from 'simple-bool';\r\nimport { Queue } from '../_internal/queue';\r\nimport {\r\n ARD_SNACKBAR_COLOR,\r\n ARD_SNACKBAR_DATA,\r\n ARD_SNACKBAR_TYPE,\r\n ArdSnackbarRef,\r\n _ArdSnackbarRefInternal,\r\n} from './snackbar-ref';\r\nimport { _ArdSimpleSnackbarComponent } from './snackbar.component';\r\nimport { ARD_SNACKBAR_ANIMATION_LENGTH, ARD_SNACKBAR_DEFAULT_OPTIONS, _DEFAULT_OPTIONS_STATIC } from './snackbar.token';\r\nimport { ArdSnackbarOptions, ArdSnackbarOriginRelation, ArdSnackbarQueueHandling, ArdSnackbarType } from './snackbar.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ArdiumSnackbarService implements OnDestroy {\r\n private readonly _snackbarQueue = new Queue<_ArdSnackbarRefInternal<unknown>>();\r\n private _openedSnackbar?: _ArdSnackbarRefInternal<unknown>;\r\n\r\n private readonly _defaultOptionsStatic = _DEFAULT_OPTIONS_STATIC;\r\n private readonly _defaultOptions = inject(ARD_SNACKBAR_DEFAULT_OPTIONS);\r\n private readonly _animationLength = inject(ARD_SNACKBAR_ANIMATION_LENGTH);\r\n private readonly _overlay = inject(Overlay);\r\n private readonly _injector = inject(Injector);\r\n\r\n //! public methods for creating new snackbars\r\n open(message: string, action?: string, options: ArdSnackbarOptions = {}): ArdSnackbarRef<_ArdSimpleSnackbarComponent> {\r\n options.data = {\r\n message,\r\n action: action ?? options.data?.action,\r\n };\r\n const mergedOptions = this._mergeOptions(options);\r\n\r\n if (typeof mergedOptions.data === 'object' && !isArray(mergedOptions.data)) {\r\n mergedOptions.data.message = message;\r\n mergedOptions.data.action = action;\r\n }\r\n\r\n const internalRef = new _ArdSnackbarRefInternal(_ArdSimpleSnackbarComponent, mergedOptions, (withAction?: boolean) =>\r\n this.dismissCurrent(withAction)\r\n );\r\n\r\n this._handleQueue(mergedOptions.queueHandling!, internalRef);\r\n return internalRef.publicRef;\r\n }\r\n openFromComponent<T>(component: ComponentType<T>, options: ArdSnackbarOptions): ArdSnackbarRef<T> {\r\n const mergedOptions = this._mergeOptions(options);\r\n\r\n const internalRef = new _ArdSnackbarRefInternal(component, mergedOptions, (withAction?: boolean) =>\r\n this.dismissCurrent(withAction)\r\n );\r\n\r\n this._handleQueue(options.queueHandling!, internalRef);\r\n return internalRef.publicRef;\r\n }\r\n //! handling adding new snackbars to queue\r\n private _handleQueue<T>(handling: ArdSnackbarQueueHandling, ref: _ArdSnackbarRefInternal<T>) {\r\n const isNotOpen = !isDefined(this._openedSnackbar);\r\n if (handling === ArdSnackbarQueueHandling.Default) {\r\n const wasEmpty = this._snackbarQueue.isEmpty();\r\n this._snackbarQueue.push(ref);\r\n if (wasEmpty && isNotOpen) {\r\n this._openNext();\r\n }\r\n } else if (handling === ArdSnackbarQueueHandling.Skip || handling === ArdSnackbarQueueHandling.Overwrite) {\r\n const wasEmpty = this._snackbarQueue.isEmpty();\r\n if (!wasEmpty && handling === ArdSnackbarQueueHandling.Overwrite) this._snackbarQueue.clear();\r\n this._snackbarQueue.pushFront(ref);\r\n if (wasEmpty && isNotOpen) {\r\n this._openNext();\r\n } else {\r\n this.dismissCurrent(false);\r\n //it is opened automatically within the dismiss method\r\n }\r\n }\r\n }\r\n private _mergeOptions(options: ArdSnackbarOptions): Required<ArdSnackbarOptions> {\r\n // merge placement\r\n if (options.placement) {\r\n options.placement = {\r\n ...this._defaultOptionsStatic.placement,\r\n ...this._defaultOptions.placement,\r\n ...options.placement,\r\n };\r\n } else {\r\n options.placement = this._defaultOptions.placement ?? this._defaultOptionsStatic.placement;\r\n }\r\n // merge data\r\n if (options.data) {\r\n options.data = {\r\n ...this._defaultOptionsStatic.data,\r\n ...this._defaultOptions.data,\r\n ...options.data,\r\n };\r\n } else {\r\n options.data = this._defaultOptions.data ?? this._defaultOptionsStatic.data;\r\n }\r\n return {\r\n ...this._defaultOptionsStatic,\r\n ...this._defaultOptions,\r\n ...options,\r\n } as Required<ArdSnackbarOptions>;\r\n }\r\n //! opening snackbars\r\n private _openNext() {\r\n const sb = this._snackbarQueue.pop();\r\n if (!sb) return;\r\n this._openedSnackbar = sb;\r\n const overlay = this._createOverlay(sb.options);\r\n sb.overlay = overlay;\r\n\r\n const injector = this._createInjector(sb.options, sb.publicRef);\r\n const portal = new ComponentPortal(sb.component, undefined, injector);\r\n const componentRef = overlay.attach(portal);\r\n sb.publicRef.instance = componentRef.instance;\r\n sb.markAsOpened();\r\n\r\n this._openedSnackbar = sb;\r\n\r\n const duration =\r\n sb.options.duration === Infinity || sb.options.duration <= 0\r\n ? 2_147_483_647 //maximum duration for setTimeout\r\n : sb.options.duration;\r\n\r\n sb.timeout = setTimeout(() => {\r\n this.dismissCurrent(false);\r\n }, duration);\r\n }\r\n private _createOverlay(options: ArdSnackbarOptions): OverlayRef {\r\n let x!: 'start' | 'center' | 'end';\r\n let originY!: 'top' | 'center' | 'bottom';\r\n let overlayY!: 'top' | 'center' | 'bottom';\r\n let overlayY2!: 'top' | 'center' | 'bottom';\r\n\r\n //horizontal alignments\r\n if (options.placement?.align?.match('left')) {\r\n x = 'start';\r\n } else if (options.placement?.align?.match('right')) {\r\n x = 'end';\r\n } else {\r\n x = 'center';\r\n }\r\n // vertical alignments\r\n if (options.placement?.align?.match('bottom')) {\r\n originY = 'bottom';\r\n overlayY = 'bottom';\r\n overlayY2 = 'top';\r\n } else {\r\n originY = 'top';\r\n overlayY = 'top';\r\n overlayY2 = 'bottom';\r\n }\r\n\r\n let origin = options.placement!.origin;\r\n if (!origin) {\r\n console.error(\r\n new Error(`ARD-NF7021: trying to open a snackbar, but the origin is undefined. Using \"document.body\" instead.`)\r\n );\r\n origin = document.body;\r\n }\r\n\r\n const isInside = options.placement?.originRelation === ArdSnackbarOriginRelation.Inside;\r\n const strategy = this._overlay\r\n .position()\r\n .flexibleConnectedTo(origin)\r\n .withPositions([\r\n {\r\n originX: x,\r\n originY,\r\n overlayX: x,\r\n overlayY: isInside ? overlayY : overlayY2,\r\n },\r\n {\r\n originX: x,\r\n originY,\r\n overlayX: x,\r\n overlayY: !isInside ? overlayY : overlayY2,\r\n },\r\n ]);\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n hasBackdrop: false,\r\n panelClass: options.panelClass,\r\n });\r\n\r\n return this._overlay.create(config);\r\n }\r\n\r\n //! public actions\r\n dismissCurrent(withAction?: boolean) {\r\n const sb = this._openedSnackbar;\r\n if (!sb) {\r\n console.warn(new Error(`ARD-WA7020: trying to dismiss the current snackbar, but no snackbar is currently opened.`));\r\n return;\r\n }\r\n\r\n sb.markAsStartingToClose();\r\n\r\n setTimeout(() => {\r\n sb.overlay?.dispose();\r\n this._openedSnackbar = undefined;\r\n sb.publicRef.markAsClosed(withAction);\r\n clearTimeout(sb.timeout);\r\n\r\n this._openNext();\r\n }, this._animationLength);\r\n }\r\n\r\n //! public queue methods\r\n getQueue(): ArdSnackbarRef<unknown>[] {\r\n return this._snackbarQueue.toArray().map(v => v.publicRef);\r\n }\r\n clearQueue(): void {\r\n this._snackbarQueue.clear();\r\n }\r\n\r\n /**\r\n * @deprecated Internal implementation detail, do not use directly.\r\n */\r\n ngOnDestroy(): void {\r\n this._snackbarQueue.clear();\r\n this.dismissCurrent(false);\r\n }\r\n\r\n private _createInjector<T>(options: ArdSnackbarOptions, snackbarRef: ArdSnackbarRef<T>): Injector {\r\n return Injector.create({\r\n parent: this._injector,\r\n providers: [\r\n { provide: ArdSnackbarRef, useValue: snackbarRef },\r\n { provide: ARD_SNACKBAR_DATA, useValue: options.data },\r\n {\r\n provide: ARD_SNACKBAR_TYPE,\r\n useValue: options.type ?? ArdSnackbarType.None,\r\n },\r\n {\r\n provide: ARD_SNACKBAR_COLOR,\r\n useValue: options.color ?? (options.type !== ArdSnackbarType.None ? options.type : null) ?? ComponentColor.Secondary,\r\n },\r\n ],\r\n });\r\n }\r\n}\r\n","/*\r\n * Public API Surface of Ardium UI\r\n */\r\nimport 'first-last';\r\n\r\n//! component group 0 - inputs and selects\r\nexport * from './lib/select'; // 000\r\nexport * from './lib/option'; // 001\r\nexport * from './lib/inputs/simple-input'; // 002\r\nexport * from './lib/inputs/input'; // 003\r\nexport * from './lib/inputs/digit-input'; // 004\r\nexport * from './lib/inputs/password-input'; // 005\r\n// export * from './lib/inputs/color-input'; // 006\r\nexport * from './lib/inputs/number-input'; // 007\r\nexport * from './lib/file-inputs/file-drop-area'; // 010\r\nexport * from './lib/file-inputs/file-input'; // 011\r\nexport * from './lib/inputs/hex-input'; // 016\r\n\r\n//! component group 1 - small forms-related components\r\nexport * from './lib/radio'; // 103\r\nexport * from './lib/segment'; // 104\r\nexport * from './lib/slider'; // 105 & 106\r\nexport * from './lib/star/star-button'; // 107\r\nexport * from './lib/star/star-input'; // 108\r\nexport * from './lib/statebox'; // 109\r\nexport * from './lib/slide-toggle';\r\nexport * from './lib/checkbox';\r\nexport * from './lib/buttons/general-button.types';\r\nexport * from './lib/buttons/button';\r\nexport * from './lib/buttons/fab';\r\nexport * from './lib/buttons/icon-button';\r\nexport * from './lib/chip';\r\n\r\n//! component group 2 - pickers\r\n// export * from './lib/calendar'; // 200 & (future: 201)\r\n// export * from './lib/color/color-picker'; // 202\r\n\r\n//! component group 3 - lists\r\nexport * from './lib/checkbox-list'; // 300\r\n\r\n//! component group 4 - state display components\r\nexport * from './lib/spinner'; // 400\r\nexport * from './lib/progress-bar'; // 401\r\nexport * from './lib/progress-circle'; // 402\r\nexport * from './lib/badge'; // 403\r\n\r\n//! component group 5 - data display components\r\nexport * from './lib/form-field-frame'; // 500\r\nexport * from './lib/dropdown-panel'; // 501\r\nexport * from './lib/color/color-display'; // 502\r\nexport * from './lib/kbd'; // 503\r\nexport * from './lib/kbd-shortcut'; // 504\r\nexport * from './lib/table'; // 505\r\nexport * from './lib/table-pagination'; // 506\r\nexport * from './lib/table-from-csv'; // 507\r\nexport * from './lib/star'; // 508\r\nexport * from './lib/star/star-display'; // 509\r\n\r\n//! component group 6 - layout components\r\nexport * from './lib/tabber'; // 600\r\nexport * from './lib/card';\r\nexport * from './lib/divider';\r\n\r\n//! component group 7 - popups\r\nexport * from './lib/modal'; // 700\r\nexport * from './lib/dialog'; // 701\r\nexport * from './lib/snackbar'; // 702\r\n\r\n//! component group 9 - other\r\nexport * from './lib/icon'; // 900\r\n\r\n//! types\r\nexport * from './lib/types/alignment.types';\r\nexport * from './lib/types/colors.types';\r\nexport * from './lib/types/theming.types';\r\nexport * from './lib/types/utility.types';\r\nexport * from './lib/types/item-storage.types';\r\n\r\n//! miscellaneous\r\nexport { searchInString, searchFunctions as ArdSearchFunction } from './lib/search-functions';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2._ClearButtonComponent","i2.ArdiumFormFieldFrameComponent","i3.ArdiumDropdownPanelComponent","i4.ArdiumDeletableChipComponent","i5","i6._ClearButtonComponent","i3.ArdiumFormFieldFrameComponent","i1","i2","i4._ClearButtonComponent","i5.ArdiumDropdownPanelComponent","i6","i1.ArdiumIconPipe","i3.ArdiumIconComponent","i3.ArdiumButtonComponent","i2.ArdiumButtonComponent","i3._ClearButtonComponent","i4.ArdiumIconComponent","i2.ArdiumStarComponent","i2.ArdiumStarButtonComponent","i2.ArdiumCheckboxComponent","i2.ArdiumKbdPipe","i2.ArdiumKbdComponent","i2.ArdiumSelectComponent","i3.ArdiumIconButtonComponent","i3.ArdiumTablePaginationComponent","i1.ArdiumTableComponent","i2.ArdiumIconButtonComponent","i4","i3.ArdiumModalComponent","i1.ArdiumButtonComponent","i2.ArdiumIconComponent"],"mappings":"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"}