@acorex/components 22.1.8 → 22.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.
Files changed (27) hide show
  1. package/fesm2022/acorex-components-combo-box.mjs +68 -5
  2. package/fesm2022/acorex-components-combo-box.mjs.map +1 -1
  3. package/fesm2022/{acorex-components-conversation-acorex-components-conversation-Cl_dlCTX.mjs → acorex-components-conversation-acorex-components-conversation-CVgneI8Q.mjs} +8 -8
  4. package/fesm2022/acorex-components-conversation-acorex-components-conversation-CVgneI8Q.mjs.map +1 -0
  5. package/fesm2022/{acorex-components-conversation-picker-rename-file-dialog.component-_F-fv3Ti.mjs → acorex-components-conversation-picker-rename-file-dialog.component-Vc1R5AFc.mjs} +2 -2
  6. package/fesm2022/{acorex-components-conversation-picker-rename-file-dialog.component-_F-fv3Ti.mjs.map → acorex-components-conversation-picker-rename-file-dialog.component-Vc1R5AFc.mjs.map} +1 -1
  7. package/fesm2022/acorex-components-conversation.mjs +1 -1
  8. package/fesm2022/acorex-components-highlight.mjs +80 -0
  9. package/fesm2022/acorex-components-highlight.mjs.map +1 -0
  10. package/fesm2022/acorex-components-kanban.mjs +1 -1
  11. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  12. package/fesm2022/acorex-components-lookup.mjs +151 -16
  13. package/fesm2022/acorex-components-lookup.mjs.map +1 -1
  14. package/fesm2022/acorex-components-tabs.mjs +116 -38
  15. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  16. package/fesm2022/acorex-components-tree-view.mjs +2 -2
  17. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  18. package/fesm2022/acorex-components-wysiwyg.mjs +76 -6
  19. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  20. package/highlight/README.md +13 -0
  21. package/package.json +7 -3
  22. package/types/acorex-components-combo-box.d.ts +2 -0
  23. package/types/acorex-components-highlight.d.ts +31 -0
  24. package/types/acorex-components-lookup.d.ts +7 -1
  25. package/types/acorex-components-tabs.d.ts +10 -0
  26. package/types/acorex-components-wysiwyg.d.ts +13 -0
  27. package/fesm2022/acorex-components-conversation-acorex-components-conversation-Cl_dlCTX.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-combo-box.mjs","sources":["../../../../packages/components/combo-box/src/lib/combo-box.component.ts","../../../../packages/components/combo-box/src/lib/combo-box.component.html","../../../../packages/components/combo-box/src/lib/combo-box.module.ts","../../../../packages/components/combo-box/src/acorex-components-combo-box.ts"],"sourcesContent":["import {\n AXClearableComponent,\n AXClosableComponent,\n AXComponent,\n AXEvent,\n AXFocusEvent,\n AXHtmlEvent,\n AXItemClickEvent,\n AXItemSelectedEvent,\n AXStyleLookType,\n AXValuableComponent,\n AXValueChangedEvent,\n NXValueComponent,\n} from '@acorex/cdk/common';\nimport { AXHighlightTextComponent } from '@acorex/cdk/highlight';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXChipsComponent } from '@acorex/components/chips';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXSearchBoxComponent } from '@acorex/components/search-box';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslatorPipe, AXTranslationService, toTranslatedSignal } from '@acorex/core/translation';\nimport { Combobox, ComboboxPopup, ComboboxWidget } from '@angular/aria/combobox';\nimport { Listbox, Option } from '@angular/aria/listbox';\nimport { AsyncPipe, DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\n afterRenderEffect,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n linkedSignal,\n model,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { AXComboBoxItem, AXComboBoxValue } from './combo-box.types';\n\n/**\n * A minimal combo box for selecting one or more values from a list of items.\n *\n * Built on top of the `@angular/aria/combobox` directives, it supports two behaviors:\n * - `searchable=\"true\"` (default): an input with typeahead filtering (matches `id`). On small\n * screens with `adaptivityEnabled`, the trigger is select-like and search moves into the actionsheet.\n * - `searchable=\"false\"`: a select-like, non-editable trigger (same input; typing blocked without\n * Combobox `readonly`, so Tab focus and keyboard open/select keep working).\n *\n * With `multiple=\"true\"`, selected values are shown as chips in the trigger and the popup stays\n * open while toggling items (same interaction model as `ax-lookup` multi-select). Backspace with\n * an empty trigger input removes the last chip; repeated presses clear the whole selection.\n *\n * With `adaptivityEnabled` (default `true`), the list opens as a bottom actionsheet on small\n * screens instead of an anchored dropdown — the same alternate presentation as `ax-select-box`.\n *\n * Items use `text` for display, `id` for search/identity, and `value` as the submitted model value.\n * Implements {@link FormValueControl} so `[(ngModel)]` / signal forms work via the `value` model\n * (no `ControlValueAccessor`).\n *\n * @category Components\n */\n@Component({\n selector: 'ax-combo-box',\n templateUrl: './combo-box.component.html',\n styleUrls: ['./combo-box.component.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AXButtonComponent,\n AXCheckBoxComponent,\n AXChipsComponent,\n AXDecoratorModule,\n Combobox,\n ComboboxPopup,\n ComboboxWidget,\n Listbox,\n Option,\n AXPopoverComponent,\n AXSearchBoxComponent,\n AXTranslatorPipe,\n AXHighlightTextComponent,\n AsyncPipe,\n NgTemplateOutlet,\n ],\n providers: [\n { provide: AXComponent, useExisting: AXComboBoxComponent },\n { provide: AXClearableComponent, useExisting: AXComboBoxComponent },\n { provide: AXClosableComponent, useExisting: AXComboBoxComponent },\n { provide: AXValuableComponent, useExisting: AXComboBoxComponent },\n ],\n})\nexport class AXComboBoxComponent\n extends NXValueComponent\n implements FormValueControl<AXComboBoxValue>\n{\n readonly #platform = inject(AXPlatform);\n readonly #destroyRef = inject(DestroyRef);\n readonly #translation = inject(AXTranslationService);\n\n /**\n * The name of the form field, used by validation rules and `ax-form.validate(names)`.\n */\n name = input('');\n\n /**\n * The list of items the user can select from.\n * Each item has `id` (search/identity), `text` (display), and `value` (submitted).\n */\n items = input<AXComboBoxItem[]>([]);\n\n /**\n * Whether the combo box accepts typing and filters the list (`true`),\n * or is a select-like, non-editable trigger (`false`).\n * On small screens with `adaptivityEnabled`, search is typed in the actionsheet instead of the trigger.\n */\n searchable = input(true);\n\n /**\n * When `true`, multiple items can be selected. Selected values are shown as chips and the\n * popup stays open while toggling. The model value is an array (`[]` when empty).\n */\n multiple = input(false);\n\n /**\n * When `true` (default), the popup list uses the alternate actionsheet presentation on small\n * screens (`SM`). Searchable mode then shows a search field inside the sheet. When `false`,\n * the list always opens as an anchored dropdown.\n */\n adaptivityEnabled = input(true);\n\n /**\n * Title shown in the actionsheet header on small screens. Falls back to `placeholder`.\n * Supports i18n expressions (e.g. `@acorex:selectbox.popover.title`).\n */\n caption = input('');\n\n /**\n * When `true`, list rows use alternating background colors for easier scanning.\n */\n alternate = input(false);\n\n /**\n * The placeholder text shown when no value is selected.\n * Supports i18n expressions (e.g. `@acorex:chat.placeholders.select-conversation`).\n */\n placeholder = input('');\n\n /**\n * Placeholder for the trigger search input when items are already selected (multi-select),\n * and for the in-sheet search field on small screens. Falls back to `placeholder` when the\n * selection is empty on desktop.\n * Supports i18n expressions (e.g. `@acorex:common.actions.search`).\n */\n searchPlaceholder = input('@acorex:common.actions.search');\n\n /** Resolved `placeholder` (i18n-aware). */\n protected translatedPlaceholder = toTranslatedSignal(this.placeholder);\n\n /** Resolved `searchPlaceholder` (i18n-aware). */\n protected translatedSearchPlaceholder = toTranslatedSignal(this.searchPlaceholder);\n\n /**\n * When `true` (default), matching characters in popup result items are highlighted\n * while the user searches.\n */\n highlightSearch = input(true, { transform: booleanAttribute });\n\n /**\n * Custom template rendered when the filtered list has no items.\n * When omitted, a default \"no result found\" message is shown.\n */\n emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered for each item in the popup list.\n * Context: `{ $implicit: AXComboBoxItem }`.\n */\n itemTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered for the selected value in the trigger.\n * Context: `{ $implicit: AXComboBoxItem }`.\n * When `searchable` is true, the template is shown while the popup is closed and the input\n * still reflects the selected text; typing/opening falls back to the plain input.\n * In multi-select mode, the template replaces the chip text for each selected item.\n */\n selectedTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Whether the combo box is disabled.\n */\n readonly disabled = input(false);\n\n /**\n * Whether the combo box is readonly.\n */\n readonly readonly = input(false);\n\n /**\n * Predefined look scheme of the editor container. Same looks as other editor components like ax-text-box.\n */\n look = model<AXStyleLookType>('solid');\n\n /**\n * The selected item `value`(s). Scalar (or `null`) in single mode; an array in multi mode.\n * Supports `[(value)]`, `[(ngModel)]`, and signal forms via {@link FormValueControl}.\n */\n readonly value = model<AXComboBoxValue>(null);\n\n /**\n * Emitted when the selected value changes.\n */\n onValueChanged = output<AXValueChangedEvent<AXComboBoxValue>>();\n\n /**\n * Emitted when the trigger receives focus.\n */\n onFocus = output<AXFocusEvent>();\n\n /**\n * Emitted when the trigger loses focus.\n */\n onBlur = output<AXFocusEvent>();\n\n /**\n * Emitted when a list item is clicked.\n */\n onItemClick = output<AXItemClickEvent<AXComboBoxItem>>();\n\n /**\n * Emitted when a list item is selected (click or keyboard).\n */\n onItemSelected = output<AXItemSelectedEvent<AXComboBoxItem>>();\n\n /**\n * Emitted when the popup list opens.\n */\n onOpened = output<AXEvent>();\n\n /**\n * Emitted when the popup list closes.\n */\n onClosed = output<AXEvent>();\n\n /** Whether the popup is expanded. */\n protected expanded = signal(false);\n\n /** Whether the list is currently shown as a bottom actionsheet (small screens + adaptivity). */\n protected isActionsheetStyle = signal(false);\n\n /** Whether the trigger input is writable and filters as you type (desktop searchable only). */\n protected isEditableTrigger = computed(() => this.searchable() && !this.isActionsheetStyle());\n\n /** Whether search is typed in the actionsheet instead of the trigger. */\n protected isSheetSearchEnabled = computed(() => this.searchable() && this.isActionsheetStyle());\n\n /** Query typed in the actionsheet search field (independent of the trigger display text). */\n protected sheetSearchText = signal('');\n\n /** The current selection normalized to an array of submitted values. */\n protected selectedValues = computed<(string | number)[]>(() => {\n const value = this.value();\n if (value == null) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n });\n\n /** Whether there is at least one selected value. */\n protected hasSelection = computed(() => this.selectedValues().length > 0);\n\n /** Resolved selected items for the current model value(s). */\n protected selectedItems = computed(() => {\n const values = new Set(this.selectedValues());\n return this.items().filter((item) => values.has(item.value));\n });\n\n /** The item whose `value` matches the current model value (single-select). */\n protected selectedItem = computed(() => (this.multiple() ? null : (this.selectedItems()[0] ?? null)));\n\n /** Display text shown in the trigger / used as the searchable input baseline (single-select). */\n protected displayText = computed(() => this.selectedItem()?.text ?? '');\n\n /** Resolved display text for the trigger input (i18n-aware). */\n protected translatedDisplayText = toTranslatedSignal(this.displayText);\n\n /** Actionsheet header title with i18n fallback chain. */\n protected actionsheetTitleSource = computed(\n () => this.caption() || this.placeholder() || '@acorex:selectbox.popover.title',\n );\n\n /** Resolved actionsheet title (i18n-aware). */\n protected actionsheetTitle = toTranslatedSignal(this.actionsheetTitleSource);\n\n /**\n * The text typed in the searchable input.\n * Multi-select starts empty; single mode syncs from the selected display text.\n */\n protected searchText = linkedSignal(() => (this.multiple() ? '' : this.translatedDisplayText()));\n\n /** Whether the trigger should render `selectedTemplate` instead of the plain input text. */\n protected showSelectedTemplate = computed(() => {\n if (this.multiple() || !this.selectedTemplate() || !this.selectedItem()) {\n return false;\n }\n if (!this.isEditableTrigger()) {\n return true;\n }\n return !this.expanded() && this.searchText() === this.translatedDisplayText();\n });\n\n /** Placeholder for the editable trigger search input in multi-select. */\n protected triggerSearchPlaceholder = computed(() => {\n if (this.isActionsheetStyle()) {\n return this.multiple() && this.selectedItems().length > 0 ? '' : this.translatedPlaceholder();\n }\n if (this.multiple() && this.selectedItems().length > 0) {\n return this.translatedSearchPlaceholder();\n }\n return this.translatedPlaceholder();\n });\n\n /** The listbox selection (item ids), kept in sync with the selected value(s). */\n protected selection = linkedSignal<string[]>(() => this.selectedItems().map((item) => item.id));\n\n /** Active search query used for filtering and highlighting. */\n protected searchQuery = computed(() => {\n if (!this.searchable()) {\n return '';\n }\n\n const inSheet = this.isActionsheetStyle();\n const query = (inSheet ? this.sheetSearchText() : this.searchText()).trim();\n if (!query) {\n return '';\n }\n\n // Desktop single-select: the trigger shows the selected label, which is not a filter.\n if (!inSheet && !this.multiple()) {\n const selectedId = (this.selectedItem()?.id ?? '').toLowerCase();\n const translated = this.translatedDisplayText().trim().toLowerCase();\n const raw = this.displayText().trim().toLowerCase();\n if (\n query.toLowerCase() === selectedId ||\n query.toLowerCase() === translated ||\n query.toLowerCase() === raw\n ) {\n return '';\n }\n }\n\n return query;\n });\n\n /** Query passed to result-item highlighting (empty when disabled). */\n protected highlightQuery = computed(() => (this.highlightSearch() ? this.searchQuery() : ''));\n\n /** Items filtered by typed query against `id` when the combo box is searchable. */\n protected filteredItems = computed(() => {\n const items = this.items();\n if (!this.searchable()) {\n return items;\n }\n\n const query = this.searchQuery().toLowerCase();\n if (!query) {\n return items;\n }\n\n return items.filter((item) => {\n const idMatch = item.id.toLowerCase().includes(query);\n if (idMatch) {\n return true;\n }\n const rawText = (item.text ?? '').toLowerCase();\n if (rawText.includes(query)) {\n return true;\n }\n const translatedText = this.#translateItemText(item.text ?? '').toLowerCase();\n return translatedText.includes(query);\n });\n });\n\n /** Whether the filtered list is empty (empty-state vs hidden listbox). */\n protected hasNoMatches = computed(() => this.filteredItems().length === 0);\n\n protected comboboxRef = viewChild(Combobox);\n protected listboxRef = viewChild(Listbox);\n protected popoverRef = viewChild(AXPopoverComponent);\n protected originRef = viewChild<ElementRef<HTMLElement>>('origin');\n protected popupRef = viewChild<ElementRef<HTMLElement>>('popup');\n protected sheetSearchRef = viewChild<AXSearchBoxComponent>('sheetSearch');\n\n readonly #document = inject(DOCUMENT);\n\n #isUserInteraction = false;\n #lastValue: AXComboBoxValue | undefined = undefined;\n #lastExpanded: boolean | undefined = undefined;\n #sheetSearchFocused = false;\n\n constructor() {\n super();\n\n effect(() => this.#emitValueChanged(this.value()));\n effect(() => this.#emitOpenedOrClosed(this.expanded()));\n effect(() => {\n this.adaptivityEnabled();\n untracked(() => this.#syncActionsheetStyle());\n });\n\n this.#platform.resize.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => {\n this.#syncActionsheetStyle();\n // Match dropdown-box: close anchored dropdowns on resize; keep actionsheet open.\n if (this.expanded() && !this.isActionsheetStyle()) {\n this.close();\n }\n });\n\n // Seed the actionsheet flag once.\n this.#syncActionsheetStyle();\n\n // Keep the popover in sync with the expanded state.\n effect(() => {\n const expanded = this.expanded();\n const popover = this.popoverRef();\n if (!popover) {\n return;\n }\n untracked(() => {\n if (expanded && !popover.isOpen) {\n void popover.open();\n } else if (!expanded && popover.isOpen) {\n popover.close();\n }\n });\n });\n\n afterRenderEffect(() => {\n if (!this.expanded()) {\n this.#sheetSearchFocused = false;\n return;\n }\n this.listboxRef()?.scrollActiveItemIntoView();\n this.#tryFocusSheetSearch();\n });\n }\n\n #syncActionsheetStyle() {\n this.isActionsheetStyle.set(this.adaptivityEnabled() && this.#platform.is('SM'));\n }\n\n /** Stable unique key for `@for` — avoids NG0955 when `id` is missing or duplicated. */\n protected trackItemKey(index: number, item: AXComboBoxItem): string {\n const id = item?.id?.trim();\n return id ? id : `item-${index}`;\n }\n\n /** Whether the given item is currently selected. */\n protected isItemSelected(item: AXComboBoxItem): boolean {\n return this.selectedValues().some((value) => value === item.value);\n }\n\n /** Emits onValueChanged when the value actually changes (skips the initial value). */\n #emitValueChanged(value: AXComboBoxValue) {\n const previous = this.#lastValue;\n this.#lastValue = value;\n\n if (previous === undefined || this.#valuesEqual(previous, value)) {\n return;\n }\n\n this.onValueChanged.emit({\n component: this,\n htmlElement: this.nativeElement,\n name: 'value',\n value,\n oldValue: previous,\n isUserInteraction: this.#isUserInteraction,\n });\n this.#isUserInteraction = false;\n }\n\n #valuesEqual(a: AXComboBoxValue, b: AXComboBoxValue): boolean {\n if (a === b) {\n return true;\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.length === b.length && a.every((value, index) => value === b[index]);\n }\n return false;\n }\n\n /** Emits onOpened/onClosed when the expanded state actually changes (skips the initial state). */\n #emitOpenedOrClosed(expanded: boolean) {\n const previous = this.#lastExpanded;\n this.#lastExpanded = expanded;\n\n if (previous === undefined || previous === expanded) {\n return;\n }\n\n const event: AXEvent = {\n component: this,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n };\n expanded ? this.onOpened.emit(event) : this.onClosed.emit(event);\n }\n\n /**\n * Opens (searchable) or toggles (non-searchable) the popup on trigger click.\n */\n protected onTriggerClick() {\n if (this.disabled() || this.readonly()) {\n return;\n }\n if (this.searchable()) {\n this.expanded.set(true);\n return;\n }\n this.expanded.update((open) => !open);\n }\n\n /**\n * Keyboard handling on the trigger:\n * - Searchable: Enter never submits the form; with no matches the value is cleared (`null`).\n * - Non-searchable: open with Enter/Space when collapsed; commit with Space when expanded.\n * - Multi-select: Backspace with an empty trigger input removes the last chip; repeated presses\n * clear the whole selection.\n */\n protected onTriggerKeydown(event: KeyboardEvent) {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n if (event.key === 'Escape' && this.expanded()) {\n event.preventDefault();\n this.close();\n return;\n }\n\n if (event.key === 'Backspace' && this.#removeLastChipOnBackspace(event)) {\n return;\n }\n\n if (event.key === 'Enter') {\n this.#onSearchEnter(event);\n return;\n }\n\n if (this.searchable()) {\n return;\n }\n if (event.key !== ' ') {\n return;\n }\n\n if (!this.expanded()) {\n event.preventDefault();\n this.expanded.set(true);\n return;\n }\n\n event.preventDefault();\n this.commit();\n }\n\n /** Handles Enter in the actionsheet search field (no form submit; clear on no matches). */\n protected onSheetSearchKeydown(e: AXHtmlEvent<KeyboardEvent>) {\n const event = e.nativeEvent;\n if (!event || event.key !== 'Enter') {\n return;\n }\n this.#onSearchEnter(event);\n }\n\n /**\n * Enter in search never submits the surrounding form. When the query has no matches,\n * single-select value is cleared (`null`). With matches, the highlighted item is committed.\n */\n #onSearchEnter(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n if (this.#shouldClearOnEmptyEnter()) {\n if (!this.multiple()) {\n this.reset(true);\n }\n return;\n }\n\n if (this.searchable()) {\n if (this.expanded()) {\n this.commit();\n }\n return;\n }\n\n if (!this.expanded()) {\n this.expanded.set(true);\n }\n }\n\n #currentSearchQuery(): string {\n return (this.isSheetSearchEnabled() ? this.sheetSearchText() : this.searchText()).trim();\n }\n\n #isTypedFilterQuery(): boolean {\n return Boolean(this.searchQuery());\n }\n\n #shouldClearOnEmptyEnter(): boolean {\n return this.searchable() && this.#isTypedFilterQuery() && this.hasNoMatches();\n }\n\n /** Blocks typing when the trigger is not editable (keeps Tab / keyboard open working). */\n protected onBeforeInput(event: Event) {\n if (!this.isEditableTrigger() || this.readonly()) {\n event.preventDefault();\n }\n }\n\n /**\n * Combobox `expanded` two-way binding. On actionsheet with in-sheet search, ignore collapse\n * so focusing the search field (Aria combobox blur) does not close the popup. Dismiss is owned\n * by the header Apply/close button, `commit()`, and Escape. On desktop, outside click also closes.\n */\n protected onExpandedChange(open: boolean) {\n if (!open && this.isSheetSearchEnabled()) {\n return;\n }\n this.expanded.set(open);\n }\n\n /** Filters the list from the actionsheet search field (reads the input so delayed ngModel cannot block typing). */\n protected onSheetSearchInput() {\n this.sheetSearchText.set(this.#sheetSearchInputValue());\n }\n\n #sheetSearchInputValue(): string {\n return this.sheetSearchRef()?.getHostElement()?.querySelector('input')?.value ?? '';\n }\n\n #tryFocusSheetSearch() {\n if (!this.isSheetSearchEnabled() || this.#sheetSearchFocused) {\n return;\n }\n const search = this.sheetSearchRef();\n if (!search) {\n return;\n }\n this.#sheetSearchFocused = true;\n search.focus();\n }\n\n #clearSheetSearch() {\n this.sheetSearchText.set('');\n this.sheetSearchRef()?.commitValue('', false);\n }\n\n /**\n * Keeps the combobox expanded state in sync when the popover closes (e.g. click outside).\n */\n protected onPopoverClosed() {\n this.#sheetSearchFocused = false;\n this.expanded.set(false);\n this.searchText.set(this.multiple() ? '' : this.translatedDisplayText());\n this.#clearSheetSearch();\n }\n\n /**\n * Removes a single chip from the multi selection.\n */\n protected removeChip(event: Event, item: AXComboBoxItem) {\n event.stopPropagation();\n if (this.disabled() || this.readonly() || !this.multiple()) {\n return;\n }\n this.#isUserInteraction = true;\n this.value.set(this.selectedValues().filter((value) => value !== item.value));\n }\n\n /** Removes the last chip when Backspace is pressed with an empty trigger input (multi mode). */\n #removeLastChipOnBackspace(event: KeyboardEvent): boolean {\n if (!this.multiple() || !this.#isTriggerInputEmpty(event)) {\n return false;\n }\n const items = this.selectedItems();\n if (items.length === 0) {\n return false;\n }\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n this.removeChip(event, items[items.length - 1]);\n return true;\n }\n\n #isTriggerInputEmpty(event: KeyboardEvent): boolean {\n const input = this.#triggerInputElement(event);\n return input ? input.value.length === 0 : !this.searchText();\n }\n\n #triggerInputElement(event: KeyboardEvent): HTMLInputElement | null {\n if (event.target instanceof HTMLInputElement) {\n return event.target;\n }\n const element = this.comboboxRef()?.element;\n return element instanceof HTMLInputElement ? element : null;\n }\n\n /**\n * Clears the selected value(s) and closes the popup.\n * Sets `null` in single mode and `[]` in multi mode. Used by projected `ax-clear-button`.\n *\n * @param isUserInteraction - Whether the clear was triggered by the user.\n */\n reset(isUserInteraction = false): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n const next: AXComboBoxValue = this.multiple() ? [] : null;\n const current = this.value();\n if (this.multiple()) {\n if (Array.isArray(current) && current.length === 0) {\n return;\n }\n if (current == null) {\n return;\n }\n } else if (current == null) {\n return;\n }\n this.#isUserInteraction = isUserInteraction;\n this.value.set(next);\n this.selection.set([]);\n this.expanded.set(false);\n }\n\n /**\n * Closes the popup list.\n */\n close(): void {\n this.expanded.set(false);\n }\n\n /**\n * Closes the popup list (alias for {@link close}, required by `AXClosableComponent`).\n */\n closeAll(): void {\n this.close();\n }\n\n /**\n * Commits the highlighted (active) or clicked list item as the component value.\n *\n * With `selectionMode=\"explicit\"`, arrow keys only move the active item; Enter/Space must resolve\n * that option. Clicks resolve from the event target so we do not depend on listener order vs ngListbox.\n *\n * In multi-select mode the item is toggled and the popup stays open.\n * When the user typed a query with no matches, Enter clears single-select to `null`.\n */\n protected onListEnter(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.commit();\n }\n\n protected commit(event?: Event) {\n if (event?.type !== 'click' && this.#shouldClearOnEmptyEnter()) {\n if (!this.multiple()) {\n this.reset(true);\n }\n return;\n }\n\n const listbox = this.listboxRef();\n let selectedId: string | undefined;\n\n if (event?.type === 'click' && event.target instanceof Element) {\n const optionEl = event.target.closest('[role=\"option\"]');\n const match = listbox?._pattern.inputs.items().find((item) => item.element() === optionEl);\n const value = match?.value();\n selectedId = typeof value === 'string' ? value : undefined;\n } else {\n const activeValue = listbox?._pattern.inputs.activeItem()?.value();\n selectedId = typeof activeValue === 'string' ? activeValue : this.selection()[0];\n }\n\n const item = selectedId != null ? this.items().find((i) => i.id === selectedId) : undefined;\n if (item == null) {\n if (!this.multiple()) {\n this.expanded.set(false);\n }\n return;\n }\n\n this.#commitItem(item, event);\n }\n\n #commitItem(item: AXComboBoxItem, event?: Event) {\n if (event?.type === 'click') {\n this.onItemClick.emit({\n component: this,\n item,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n nativeEvent: event as MouseEvent,\n });\n }\n\n if (this.multiple()) {\n const current = this.selectedValues();\n const exists = current.some((value) => value === item.value);\n if (!exists) {\n this.onItemSelected.emit({\n component: this,\n item,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n });\n }\n const next = exists ? current.filter((value) => value !== item.value) : [...current, item.value];\n this.#isUserInteraction = true;\n this.value.set(next);\n this.selection.set(next.map((value) => this.items().find((i) => i.value === value)?.id).filter((id): id is string => id != null));\n if (this.searchable() && this.searchText()) {\n this.searchText.set('');\n }\n if (this.sheetSearchText()) {\n this.#clearSheetSearch();\n }\n return;\n }\n\n this.onItemSelected.emit({\n component: this,\n item,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n });\n if (item.value !== this.value()) {\n this.#isUserInteraction = true;\n this.value.set(item.value);\n this.selection.set([item.id]);\n }\n this.expanded.set(false);\n this.comboboxRef()?.element.focus();\n }\n\n /**\n * Focuses the combo box trigger input.\n */\n focus(options?: FocusOptions): void {\n if (this.disabled()) {\n return;\n }\n this.comboboxRef()?.element.focus(options);\n }\n\n /** Forwards native focus from the trigger input. */\n protected emitOnFocus(e: FocusEvent) {\n this.onFocus.emit({\n component: this,\n htmlElement: this.nativeElement,\n nativeEvent: e,\n });\n }\n\n /** Forwards native blur from the trigger input. */\n protected emitOnBlur(e: FocusEvent) {\n this.onBlur.emit({\n component: this,\n htmlElement: this.nativeElement,\n nativeEvent: e,\n });\n this.#scheduleCloseOnTriggerBlur(e);\n }\n\n /**\n * Closes the popup when the trigger input loses focus, unless focus moved into the\n * popover panel or another part of the trigger (e.g. sheet search or list navigation).\n */\n #scheduleCloseOnTriggerBlur(e: FocusEvent) {\n if (!this.expanded()) {\n return;\n }\n\n const related = e.relatedTarget;\n if (related instanceof Node && this.#isFocusWithinPopupOrTrigger(related)) {\n return;\n }\n\n queueMicrotask(() => {\n if (!this.expanded()) {\n return;\n }\n const active = this.#document.activeElement;\n if (active instanceof Node && this.#isFocusWithinPopupOrTrigger(active)) {\n return;\n }\n this.close();\n });\n }\n\n #isFocusWithinPopupOrTrigger(node: Node): boolean {\n const popup = this.popupRef()?.nativeElement;\n if (popup?.contains(node)) {\n return true;\n }\n const origin = this.originRef()?.nativeElement;\n return Boolean(origin?.contains(node));\n }\n\n #translateItemText(text: string): string {\n return this.#translation.translateSync(text, { waitForLoad: true });\n }\n}\n","<div\n #origin\n class=\"ax-editor-container ax-{{ look() }} ax-default\"\n [class.ax-combo-box-trigger]=\"!isEditableTrigger()\"\n [class.ax-combo-box-trigger-multiple]=\"multiple()\"\n [class.ax-state-disabled]=\"disabled()\"\n [class.ax-state-readonly]=\"readonly()\"\n>\n <ng-content select=\"ax-prefix\"></ng-content>\n\n <div class=\"ax-combo-box-value\" [class.ax-combo-box-chips]=\"multiple()\">\n @if (multiple()) {\n @for (item of selectedItems(); track item.id) {\n <ax-chips class=\"ax-sm\" look=\"fill\" [text]=\"selectedTemplate() ? '' : (item.text | translate | async)\">\n @if (selectedTemplate()) {\n <ax-prefix>\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n />\n </ax-prefix>\n }\n @if (!disabled() && !readonly()) {\n <ax-suffix>\n <button type=\"button\" tabindex=\"-1\" (click)=\"removeChip($event, item)\">\n <span class=\"ax-icon ax-icon-close\"></span>\n </button>\n </ax-suffix>\n }\n </ax-chips>\n }\n } @else if (showSelectedTemplate()) {\n <div class=\"ax-combo-box-selected-content\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: selectedItem() }\"\n />\n </div>\n }\n\n <input\n ngCombobox\n #combobox=\"ngCombobox\"\n type=\"text\"\n class=\"ax-input\"\n [class.ax-combo-box-trigger-search]=\"multiple()\"\n [class.ax-combo-box-select-input]=\"!isEditableTrigger()\"\n [class.ax-combo-box-input-overlay]=\"!multiple() && showSelectedTemplate()\"\n [placeholder]=\"multiple() ? triggerSearchPlaceholder() : translatedPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !isEditableTrigger()\"\n [attr.inputmode]=\"isEditableTrigger() ? null : 'none'\"\n [(value)]=\"searchText\"\n [expanded]=\"expanded()\"\n (expandedChange)=\"onExpandedChange($event)\"\n (click)=\"onTriggerClick()\"\n (keydown)=\"onTriggerKeydown($event)\"\n (beforeinput)=\"onBeforeInput($event)\"\n (focus)=\"emitOnFocus($event)\"\n (blur)=\"emitOnBlur($event)\"\n />\n </div>\n\n @if (hasSelection() && !disabled() && !readonly()) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n\n <button\n type=\"button\"\n class=\"ax-general-button-icon\"\n tabindex=\"-1\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"onTriggerClick()\"\n >\n <span class=\"ax-icon\" [class.ax-icon-chevron-down]=\"!expanded()\" [class.ax-icon-chevron-up]=\"expanded()\"></span>\n </button>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n\n<ax-popover\n [target]=\"origin\"\n [openOn]=\"'manual'\"\n [closeOn]=\"isActionsheetStyle() ? 'manual' : 'clickOut'\"\n [closeOnScroll]=\"!isActionsheetStyle()\"\n [placement]=\"'bottom-start'\"\n [width]=\"isActionsheetStyle() ? '100%' : origin.offsetWidth + 'px'\"\n [adaptivityEnabled]=\"isActionsheetStyle()\"\n [disabled]=\"disabled() || readonly()\"\n (onClosed)=\"onPopoverClosed()\"\n>\n <div\n #popup\n class=\"ax-combo-box-popup\"\n [class.ax-is-empty]=\"hasNoMatches()\"\n [class.ax-is-actionsheet]=\"isActionsheetStyle()\"\n (keydown.escape)=\"close()\"\n >\n @if (isActionsheetStyle()) {\n <ax-header class=\"ax-solid\">\n <ax-title>{{ actionsheetTitle() }}</ax-title>\n @if (multiple()) {\n <ax-button\n class=\"ax-sm\"\n color=\"primary\"\n look=\"solid\"\n text=\"@acorex:common.actions.apply\"\n (onClick)=\"close()\"\n ></ax-button>\n } @else {\n <ax-close-button></ax-close-button>\n }\n </ax-header>\n }\n @if (isSheetSearchEnabled()) {\n <div class=\"ax-combo-box-sheet-search\">\n <ax-search-box\n #sheetSearch\n class=\"ax-sm\"\n look=\"fill\"\n [autoSearch]=\"false\"\n [delayTime]=\"0\"\n [placeholder]=\"searchPlaceholder()\"\n (onValueChanged)=\"onSheetSearchInput()\"\n (onKeyUp)=\"onSheetSearchInput()\"\n (onKeyDown)=\"onSheetSearchKeydown($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n }\n <ng-content select=\"ax-header\"></ng-content>\n @if (expanded()) {\n @if (hasNoMatches()) {\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\" />\n } @else {\n <div class=\"ax-combo-box-empty\">{{ '@acorex:common.general.no-result-found' | translate | async }}</div>\n }\n }\n @if (isActionsheetStyle()) {\n <div\n ngListbox\n class=\"ax-combo-box-listbox\"\n [class.ax-hidden]=\"hasNoMatches()\"\n focusMode=\"activedescendant\"\n selectionMode=\"explicit\"\n [multi]=\"multiple()\"\n [tabindex]=\"-1\"\n [(value)]=\"selection\"\n (click)=\"commit($event)\"\n >\n @for (item of filteredItems(); track trackItemKey($index, item); let odd = $odd) {\n <div\n ngOption\n class=\"ax-combo-box-option-host\"\n [class.ax-combo-box-option]=\"!itemTemplate()\"\n [class.ax-combo-box-option-multiple]=\"multiple()\"\n [class.ax-state-alternate]=\"alternate() && odd\"\n [value]=\"item.id\"\n [label]=\"item.text | translate | async\"\n >\n <ng-container [ngTemplateOutlet]=\"optionContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n }\n </div>\n } @else {\n <ng-template ngComboboxPopup [combobox]=\"combobox\">\n <div\n ngListbox\n ngComboboxWidget\n #listbox=\"ngListbox\"\n class=\"ax-combo-box-listbox\"\n [class.ax-hidden]=\"hasNoMatches()\"\n focusMode=\"activedescendant\"\n selectionMode=\"explicit\"\n [multi]=\"multiple()\"\n [tabindex]=\"-1\"\n [activeDescendant]=\"listbox.activeDescendant()\"\n [(value)]=\"selection\"\n (click)=\"commit($event)\"\n (keydown.enter)=\"onListEnter($event)\"\n (keydown.space)=\"commit()\"\n >\n @for (item of filteredItems(); track trackItemKey($index, item); let odd = $odd) {\n <div\n ngOption\n class=\"ax-combo-box-option-host\"\n [class.ax-combo-box-option]=\"!itemTemplate()\"\n [class.ax-combo-box-option-multiple]=\"multiple()\"\n [class.ax-state-alternate]=\"alternate() && odd\"\n [value]=\"item.id\"\n [label]=\"item.text | translate | async\"\n >\n <ng-container [ngTemplateOutlet]=\"optionContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n }\n </div>\n </ng-template>\n }\n }\n <ng-content select=\"ax-footer\"></ng-content>\n </div>\n</ax-popover>\n<ng-template #optionContent let-item>\n @if (multiple()) {\n <ax-check-box\n class=\"ax-combo-box-checkbox\"\n [tabIndex]=\"-1\"\n [value]=\"isItemSelected(item)\"\n ></ax-check-box>\n }\n @if (itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: item, highlightText: highlightQuery() }\"\n />\n } @else {\n <span class=\"ax-combo-box-option-label\">\n <ax-highlight-text [text]=\"item.text | translate | async\" [query]=\"highlightQuery()\" />\n </span>\n @if (!multiple() && isItemSelected(item)) {\n <ax-icon class=\"ax-combo-box-option-check ax-icon ax-icon-check\" aria-hidden=\"true\"></ax-icon>\n }\n }\n</ng-template>\n<ng-content select=\"ax-validation-rule\"></ng-content>\n","import { NgModule } from '@angular/core';\nimport { AXComboBoxComponent } from './combo-box.component';\n\n@NgModule({\n imports: [AXComboBoxComponent],\n exports: [AXComboBoxComponent],\n})\nexport class AXComboBoxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-combo-box.mjs","sources":["../../../../packages/components/combo-box/src/lib/combo-box.component.ts","../../../../packages/components/combo-box/src/lib/combo-box.component.html","../../../../packages/components/combo-box/src/lib/combo-box.module.ts","../../../../packages/components/combo-box/src/acorex-components-combo-box.ts"],"sourcesContent":["import {\n AXClearableComponent,\n AXClosableComponent,\n AXComponent,\n AXEvent,\n AXFocusEvent,\n AXHtmlEvent,\n AXItemClickEvent,\n AXItemSelectedEvent,\n AXStyleLookType,\n AXValuableComponent,\n AXValueChangedEvent,\n NXValueComponent,\n retryFrames,\n scrollOptionWithinContainer,\n} from '@acorex/cdk/common';\nimport { AXHighlightTextComponent } from '@acorex/components/highlight';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXChipsComponent } from '@acorex/components/chips';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXSearchBoxComponent } from '@acorex/components/search-box';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslatorPipe, AXTranslationService, toTranslatedSignal } from '@acorex/core/translation';\nimport { Combobox, ComboboxPopup, ComboboxWidget } from '@angular/aria/combobox';\nimport { Listbox, Option } from '@angular/aria/listbox';\nimport { AsyncPipe, DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\n afterRenderEffect,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n linkedSignal,\n model,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { AXComboBoxItem, AXComboBoxValue } from './combo-box.types';\n\n/**\n * A minimal combo box for selecting one or more values from a list of items.\n *\n * Built on top of the `@angular/aria/combobox` directives, it supports two behaviors:\n * - `searchable=\"true\"` (default): an input with typeahead filtering (matches `id`). On small\n * screens with `adaptivityEnabled`, the trigger is select-like and search moves into the actionsheet.\n * - `searchable=\"false\"`: a select-like, non-editable trigger (same input; typing blocked without\n * Combobox `readonly`, so Tab focus and keyboard open/select keep working).\n *\n * With `multiple=\"true\"`, selected values are shown as chips in the trigger and the popup stays\n * open while toggling items (same interaction model as `ax-lookup` multi-select). Backspace with\n * an empty trigger input removes the last chip; repeated presses clear the whole selection.\n *\n * With `adaptivityEnabled` (default `true`), the list opens as a bottom actionsheet on small\n * screens instead of an anchored dropdown — the same alternate presentation as `ax-select-box`.\n *\n * Items use `text` for display, `id` for search/identity, and `value` as the submitted model value.\n * Implements {@link FormValueControl} so `[(ngModel)]` / signal forms work via the `value` model\n * (no `ControlValueAccessor`).\n *\n * @category Components\n */\n@Component({\n selector: 'ax-combo-box',\n templateUrl: './combo-box.component.html',\n styleUrls: ['./combo-box.component.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AXButtonComponent,\n AXCheckBoxComponent,\n AXChipsComponent,\n AXDecoratorModule,\n Combobox,\n ComboboxPopup,\n ComboboxWidget,\n Listbox,\n Option,\n AXPopoverComponent,\n AXSearchBoxComponent,\n AXTranslatorPipe,\n AXHighlightTextComponent,\n AsyncPipe,\n NgTemplateOutlet,\n ],\n providers: [\n { provide: AXComponent, useExisting: AXComboBoxComponent },\n { provide: AXClearableComponent, useExisting: AXComboBoxComponent },\n { provide: AXClosableComponent, useExisting: AXComboBoxComponent },\n { provide: AXValuableComponent, useExisting: AXComboBoxComponent },\n ],\n})\nexport class AXComboBoxComponent\n extends NXValueComponent\n implements FormValueControl<AXComboBoxValue>\n{\n readonly #platform = inject(AXPlatform);\n readonly #destroyRef = inject(DestroyRef);\n readonly #translation = inject(AXTranslationService);\n\n /**\n * The name of the form field, used by validation rules and `ax-form.validate(names)`.\n */\n name = input('');\n\n /**\n * The list of items the user can select from.\n * Each item has `id` (search/identity), `text` (display), and `value` (submitted).\n */\n items = input<AXComboBoxItem[]>([]);\n\n /**\n * Whether the combo box accepts typing and filters the list (`true`),\n * or is a select-like, non-editable trigger (`false`).\n * On small screens with `adaptivityEnabled`, search is typed in the actionsheet instead of the trigger.\n */\n searchable = input(true);\n\n /**\n * When `true`, multiple items can be selected. Selected values are shown as chips and the\n * popup stays open while toggling. The model value is an array (`[]` when empty).\n */\n multiple = input(false);\n\n /**\n * When `true` (default), the popup list uses the alternate actionsheet presentation on small\n * screens (`SM`). Searchable mode then shows a search field inside the sheet. When `false`,\n * the list always opens as an anchored dropdown.\n */\n adaptivityEnabled = input(true);\n\n /**\n * Title shown in the actionsheet header on small screens. Falls back to `placeholder`.\n * Supports i18n expressions (e.g. `@acorex:selectbox.popover.title`).\n */\n caption = input('');\n\n /**\n * When `true`, list rows use alternating background colors for easier scanning.\n */\n alternate = input(false);\n\n /**\n * The placeholder text shown when no value is selected.\n * Supports i18n expressions (e.g. `@acorex:chat.placeholders.select-conversation`).\n */\n placeholder = input('');\n\n /**\n * Placeholder for the trigger search input when items are already selected (multi-select),\n * and for the in-sheet search field on small screens. Falls back to `placeholder` when the\n * selection is empty on desktop.\n * Supports i18n expressions (e.g. `@acorex:common.actions.search`).\n */\n searchPlaceholder = input('@acorex:common.actions.search');\n\n /** Resolved `placeholder` (i18n-aware). */\n protected translatedPlaceholder = toTranslatedSignal(this.placeholder);\n\n /** Resolved `searchPlaceholder` (i18n-aware). */\n protected translatedSearchPlaceholder = toTranslatedSignal(this.searchPlaceholder);\n\n /**\n * When `true` (default), matching characters in popup result items are highlighted\n * while the user searches.\n */\n highlightSearch = input(true, { transform: booleanAttribute });\n\n /**\n * Custom template rendered when the filtered list has no items.\n * When omitted, a default \"no result found\" message is shown.\n */\n emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered for each item in the popup list.\n * Context: `{ $implicit: AXComboBoxItem }`.\n */\n itemTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered for the selected value in the trigger.\n * Context: `{ $implicit: AXComboBoxItem }`.\n * When `searchable` is true, the template is shown while the popup is closed and the input\n * still reflects the selected text; typing/opening falls back to the plain input.\n * In multi-select mode, the template replaces the chip text for each selected item.\n */\n selectedTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Whether the combo box is disabled.\n */\n readonly disabled = input(false);\n\n /**\n * Whether the combo box is readonly.\n */\n readonly readonly = input(false);\n\n /**\n * Predefined look scheme of the editor container. Same looks as other editor components like ax-text-box.\n */\n look = model<AXStyleLookType>('solid');\n\n /**\n * The selected item `value`(s). Scalar (or `null`) in single mode; an array in multi mode.\n * Supports `[(value)]`, `[(ngModel)]`, and signal forms via {@link FormValueControl}.\n */\n readonly value = model<AXComboBoxValue>(null);\n\n /**\n * Emitted when the selected value changes.\n */\n onValueChanged = output<AXValueChangedEvent<AXComboBoxValue>>();\n\n /**\n * Emitted when the trigger receives focus.\n */\n onFocus = output<AXFocusEvent>();\n\n /**\n * Emitted when the trigger loses focus.\n */\n onBlur = output<AXFocusEvent>();\n\n /**\n * Emitted when a list item is clicked.\n */\n onItemClick = output<AXItemClickEvent<AXComboBoxItem>>();\n\n /**\n * Emitted when a list item is selected (click or keyboard).\n */\n onItemSelected = output<AXItemSelectedEvent<AXComboBoxItem>>();\n\n /**\n * Emitted when the popup list opens.\n */\n onOpened = output<AXEvent>();\n\n /**\n * Emitted when the popup list closes.\n */\n onClosed = output<AXEvent>();\n\n /** Whether the popup is expanded. */\n protected expanded = signal(false);\n\n /** Whether the list is currently shown as a bottom actionsheet (small screens + adaptivity). */\n protected isActionsheetStyle = signal(false);\n\n /** Whether the trigger input is writable and filters as you type (desktop searchable only). */\n protected isEditableTrigger = computed(() => this.searchable() && !this.isActionsheetStyle());\n\n /** Whether search is typed in the actionsheet instead of the trigger. */\n protected isSheetSearchEnabled = computed(() => this.searchable() && this.isActionsheetStyle());\n\n /** Query typed in the actionsheet search field (independent of the trigger display text). */\n protected sheetSearchText = signal('');\n\n /** The current selection normalized to an array of submitted values. */\n protected selectedValues = computed<(string | number)[]>(() => {\n const value = this.value();\n if (value == null) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n });\n\n /** Whether there is at least one selected value. */\n protected hasSelection = computed(() => this.selectedValues().length > 0);\n\n /** Resolved selected items for the current model value(s). */\n protected selectedItems = computed(() => {\n const values = new Set(this.selectedValues());\n return this.items().filter((item) => values.has(item.value));\n });\n\n /** The item whose `value` matches the current model value (single-select). */\n protected selectedItem = computed(() => (this.multiple() ? null : (this.selectedItems()[0] ?? null)));\n\n /** Display text shown in the trigger / used as the searchable input baseline (single-select). */\n protected displayText = computed(() => this.selectedItem()?.text ?? '');\n\n /** Resolved display text for the trigger input (i18n-aware). */\n protected translatedDisplayText = toTranslatedSignal(this.displayText);\n\n /** Actionsheet header title with i18n fallback chain. */\n protected actionsheetTitleSource = computed(\n () => this.caption() || this.placeholder() || '@acorex:selectbox.popover.title',\n );\n\n /** Resolved actionsheet title (i18n-aware). */\n protected actionsheetTitle = toTranslatedSignal(this.actionsheetTitleSource);\n\n /**\n * The text typed in the searchable input.\n * Multi-select starts empty; single mode syncs from the selected display text.\n */\n protected searchText = linkedSignal(() => (this.multiple() ? '' : this.translatedDisplayText()));\n\n /** Whether the trigger should render `selectedTemplate` instead of the plain input text. */\n protected showSelectedTemplate = computed(() => {\n if (this.multiple() || !this.selectedTemplate() || !this.selectedItem()) {\n return false;\n }\n if (!this.isEditableTrigger()) {\n return true;\n }\n return !this.expanded() && this.searchText() === this.translatedDisplayText();\n });\n\n /** Placeholder for the editable trigger search input in multi-select. */\n protected triggerSearchPlaceholder = computed(() => {\n if (this.isActionsheetStyle()) {\n return this.multiple() && this.selectedItems().length > 0 ? '' : this.translatedPlaceholder();\n }\n if (this.multiple() && this.selectedItems().length > 0) {\n return this.translatedSearchPlaceholder();\n }\n return this.translatedPlaceholder();\n });\n\n /** The listbox selection (item ids), kept in sync with the selected value(s). */\n protected selection = linkedSignal<string[]>(() => this.selectedItems().map((item) => item.id));\n\n /** Active search query used for filtering and highlighting. */\n protected searchQuery = computed(() => {\n if (!this.searchable()) {\n return '';\n }\n\n const inSheet = this.isActionsheetStyle();\n const query = (inSheet ? this.sheetSearchText() : this.searchText()).trim();\n if (!query) {\n return '';\n }\n\n // Desktop single-select: the trigger shows the selected label, which is not a filter.\n if (!inSheet && !this.multiple()) {\n const selectedId = (this.selectedItem()?.id ?? '').toLowerCase();\n const translated = this.translatedDisplayText().trim().toLowerCase();\n const raw = this.displayText().trim().toLowerCase();\n if (\n query.toLowerCase() === selectedId ||\n query.toLowerCase() === translated ||\n query.toLowerCase() === raw\n ) {\n return '';\n }\n }\n\n return query;\n });\n\n /** Query passed to result-item highlighting (empty when disabled). */\n protected highlightQuery = computed(() => (this.highlightSearch() ? this.searchQuery() : ''));\n\n /** Items filtered by typed query against `id` when the combo box is searchable. */\n protected filteredItems = computed(() => {\n const items = this.items();\n if (!this.searchable()) {\n return items;\n }\n\n const query = this.searchQuery().toLowerCase();\n if (!query) {\n return items;\n }\n\n return items.filter((item) => {\n const idMatch = item.id.toLowerCase().includes(query);\n if (idMatch) {\n return true;\n }\n const rawText = (item.text ?? '').toLowerCase();\n if (rawText.includes(query)) {\n return true;\n }\n const translatedText = this.#translateItemText(item.text ?? '').toLowerCase();\n return translatedText.includes(query);\n });\n });\n\n /** Whether the filtered list is empty (empty-state vs hidden listbox). */\n protected hasNoMatches = computed(() => this.filteredItems().length === 0);\n\n protected comboboxRef = viewChild(Combobox);\n protected listboxRef = viewChild(Listbox);\n protected popoverRef = viewChild(AXPopoverComponent);\n protected originRef = viewChild<ElementRef<HTMLElement>>('origin');\n protected popupRef = viewChild<ElementRef<HTMLElement>>('popup');\n protected sheetSearchRef = viewChild<AXSearchBoxComponent>('sheetSearch');\n\n readonly #document = inject(DOCUMENT);\n\n #isUserInteraction = false;\n #lastValue: AXComboBoxValue | undefined = undefined;\n #lastExpanded: boolean | undefined = undefined;\n #sheetSearchFocused = false;\n\n constructor() {\n super();\n\n effect(() => this.#emitValueChanged(this.value()));\n effect(() => this.#emitOpenedOrClosed(this.expanded()));\n effect(() => {\n this.adaptivityEnabled();\n untracked(() => this.#syncActionsheetStyle());\n });\n\n this.#platform.resize.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => {\n this.#syncActionsheetStyle();\n // Match dropdown-box: close anchored dropdowns on resize; keep actionsheet open.\n if (this.expanded() && !this.isActionsheetStyle()) {\n this.close();\n }\n });\n\n // Seed the actionsheet flag once.\n this.#syncActionsheetStyle();\n\n // Keep the popover in sync with the expanded state.\n effect(() => {\n const expanded = this.expanded();\n const popover = this.popoverRef();\n if (!popover) {\n return;\n }\n untracked(() => {\n if (expanded && !popover.isOpen) {\n void popover.open();\n } else if (!expanded && popover.isOpen) {\n popover.close();\n }\n });\n });\n\n // Re-seed listbox selection on open. Angular Aria prunes `value` when options are\n // unmounted (popup close / filter), and linkedSignal does not recompute until selectedItems changes.\n effect(() => {\n if (!this.expanded()) {\n return;\n }\n untracked(() => this.selection.set(this.selectedItems().map((item) => item.id)));\n });\n\n afterRenderEffect(() => {\n if (!this.expanded()) {\n this.#sheetSearchFocused = false;\n return;\n }\n this.#tryFocusSheetSearch();\n });\n }\n\n /** Scrolls the selected option into view after the popover overlay is open and laid out. */\n protected onPopoverOpened() {\n if (!this.expanded()) {\n return;\n }\n this.#scrollToSelectedWhenReady();\n }\n\n #selectedOptionIndex(): number {\n const selected = this.selectedItems()[0];\n if (!selected) {\n return -1;\n }\n return this.filteredItems().findIndex((item) => item.id === selected.id);\n }\n\n #resolveListboxContainer(): HTMLElement | null {\n const listbox = this.listboxRef();\n if (listbox?.element?.isConnected) {\n return listbox.element;\n }\n\n const popup = this.popupRef()?.nativeElement;\n if (popup?.isConnected) {\n const inPopup = popup.querySelector<HTMLElement>('.ax-combo-box-listbox');\n if (inPopup?.isConnected) {\n return inPopup;\n }\n }\n\n // Popover portals projected content into a body overlay.\n const listboxes = this.#document.querySelectorAll<HTMLElement>(\n '.ax-overlay-container .ax-combo-box-listbox',\n );\n return listboxes.length > 0 ? listboxes[listboxes.length - 1] : null;\n }\n\n #scrollToSelectedWhenReady() {\n const index = this.#selectedOptionIndex();\n if (index < 0) {\n return;\n }\n\n retryFrames(() => {\n if (!this.expanded()) {\n return true;\n }\n\n const container = this.#resolveListboxContainer();\n if (!container?.clientHeight) {\n return false;\n }\n\n const options = container.querySelectorAll('.ax-combo-box-option-host');\n if (options.length <= index) {\n return false;\n }\n\n const option = options[index] as HTMLElement;\n if (container.scrollHeight <= container.clientHeight) {\n return false;\n }\n\n scrollOptionWithinContainer(container, option);\n this.listboxRef()?.gotoIndex(index);\n return true;\n }, 60);\n }\n\n #syncActionsheetStyle() {\n this.isActionsheetStyle.set(this.adaptivityEnabled() && this.#platform.is('SM'));\n }\n\n /** Stable unique key for `@for` — avoids NG0955 when `id` is missing or duplicated. */\n protected trackItemKey(index: number, item: AXComboBoxItem): string {\n const id = item?.id?.trim();\n return id ? id : `item-${index}`;\n }\n\n /** Whether the given item is currently selected. */\n protected isItemSelected(item: AXComboBoxItem): boolean {\n return this.selectedValues().some((value) => value === item.value);\n }\n\n /** Emits onValueChanged when the value actually changes (skips the initial value). */\n #emitValueChanged(value: AXComboBoxValue) {\n const previous = this.#lastValue;\n this.#lastValue = value;\n\n if (previous === undefined || this.#valuesEqual(previous, value)) {\n return;\n }\n\n this.onValueChanged.emit({\n component: this,\n htmlElement: this.nativeElement,\n name: 'value',\n value,\n oldValue: previous,\n isUserInteraction: this.#isUserInteraction,\n });\n this.#isUserInteraction = false;\n }\n\n #valuesEqual(a: AXComboBoxValue, b: AXComboBoxValue): boolean {\n if (a === b) {\n return true;\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.length === b.length && a.every((value, index) => value === b[index]);\n }\n return false;\n }\n\n /** Emits onOpened/onClosed when the expanded state actually changes (skips the initial state). */\n #emitOpenedOrClosed(expanded: boolean) {\n const previous = this.#lastExpanded;\n this.#lastExpanded = expanded;\n\n if (previous === undefined || previous === expanded) {\n return;\n }\n\n const event: AXEvent = {\n component: this,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n };\n expanded ? this.onOpened.emit(event) : this.onClosed.emit(event);\n }\n\n /**\n * Opens (searchable) or toggles (non-searchable) the popup on trigger click.\n */\n protected onTriggerClick() {\n if (this.disabled() || this.readonly()) {\n return;\n }\n if (this.searchable()) {\n this.expanded.set(true);\n return;\n }\n this.expanded.update((open) => !open);\n }\n\n /**\n * Keyboard handling on the trigger:\n * - Searchable: Enter never submits the form; with no matches the value is cleared (`null`).\n * - Non-searchable: open with Enter/Space when collapsed; commit with Space when expanded.\n * - Multi-select: Backspace with an empty trigger input removes the last chip; repeated presses\n * clear the whole selection.\n */\n protected onTriggerKeydown(event: KeyboardEvent) {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n if (event.key === 'Escape' && this.expanded()) {\n event.preventDefault();\n this.close();\n return;\n }\n\n if (event.key === 'Backspace' && this.#removeLastChipOnBackspace(event)) {\n return;\n }\n\n if (event.key === 'Enter') {\n this.#onSearchEnter(event);\n return;\n }\n\n if (this.searchable()) {\n return;\n }\n if (event.key !== ' ') {\n return;\n }\n\n if (!this.expanded()) {\n event.preventDefault();\n this.expanded.set(true);\n return;\n }\n\n event.preventDefault();\n this.commit();\n }\n\n /** Handles Enter in the actionsheet search field (no form submit; clear on no matches). */\n protected onSheetSearchKeydown(e: AXHtmlEvent<KeyboardEvent>) {\n const event = e.nativeEvent;\n if (!event || event.key !== 'Enter') {\n return;\n }\n this.#onSearchEnter(event);\n }\n\n /**\n * Enter in search never submits the surrounding form. When the query has no matches,\n * single-select value is cleared (`null`). With matches, the highlighted item is committed.\n */\n #onSearchEnter(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n if (this.#shouldClearOnEmptyEnter()) {\n if (!this.multiple()) {\n this.reset(true);\n }\n return;\n }\n\n if (this.searchable()) {\n if (this.expanded()) {\n this.commit();\n }\n return;\n }\n\n if (!this.expanded()) {\n this.expanded.set(true);\n }\n }\n\n #currentSearchQuery(): string {\n return (this.isSheetSearchEnabled() ? this.sheetSearchText() : this.searchText()).trim();\n }\n\n #isTypedFilterQuery(): boolean {\n return Boolean(this.searchQuery());\n }\n\n #shouldClearOnEmptyEnter(): boolean {\n return this.searchable() && this.#isTypedFilterQuery() && this.hasNoMatches();\n }\n\n /** Blocks typing when the trigger is not editable (keeps Tab / keyboard open working). */\n protected onBeforeInput(event: Event) {\n if (!this.isEditableTrigger() || this.readonly()) {\n event.preventDefault();\n }\n }\n\n /**\n * Combobox `expanded` two-way binding. On actionsheet with in-sheet search, ignore collapse\n * so focusing the search field (Aria combobox blur) does not close the popup. Dismiss is owned\n * by the header Apply/close button, `commit()`, and Escape. On desktop, outside click also closes.\n */\n protected onExpandedChange(open: boolean) {\n if (!open && this.isSheetSearchEnabled()) {\n return;\n }\n this.expanded.set(open);\n }\n\n /** Filters the list from the actionsheet search field (reads the input so delayed ngModel cannot block typing). */\n protected onSheetSearchInput() {\n this.sheetSearchText.set(this.#sheetSearchInputValue());\n }\n\n #sheetSearchInputValue(): string {\n return this.sheetSearchRef()?.getHostElement()?.querySelector('input')?.value ?? '';\n }\n\n #tryFocusSheetSearch() {\n if (!this.isSheetSearchEnabled() || this.#sheetSearchFocused) {\n return;\n }\n const search = this.sheetSearchRef();\n if (!search) {\n return;\n }\n this.#sheetSearchFocused = true;\n search.focus();\n }\n\n #clearSheetSearch() {\n this.sheetSearchText.set('');\n this.sheetSearchRef()?.commitValue('', false);\n }\n\n /**\n * Keeps the combobox expanded state in sync when the popover closes (e.g. click outside).\n */\n protected onPopoverClosed() {\n this.#sheetSearchFocused = false;\n this.expanded.set(false);\n this.searchText.set(this.multiple() ? '' : this.translatedDisplayText());\n this.#clearSheetSearch();\n }\n\n /**\n * Removes a single chip from the multi selection.\n */\n protected removeChip(event: Event, item: AXComboBoxItem) {\n event.stopPropagation();\n if (this.disabled() || this.readonly() || !this.multiple()) {\n return;\n }\n this.#isUserInteraction = true;\n this.value.set(this.selectedValues().filter((value) => value !== item.value));\n }\n\n /** Removes the last chip when Backspace is pressed with an empty trigger input (multi mode). */\n #removeLastChipOnBackspace(event: KeyboardEvent): boolean {\n if (!this.multiple() || !this.#isTriggerInputEmpty(event)) {\n return false;\n }\n const items = this.selectedItems();\n if (items.length === 0) {\n return false;\n }\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n this.removeChip(event, items[items.length - 1]);\n return true;\n }\n\n #isTriggerInputEmpty(event: KeyboardEvent): boolean {\n const input = this.#triggerInputElement(event);\n return input ? input.value.length === 0 : !this.searchText();\n }\n\n #triggerInputElement(event: KeyboardEvent): HTMLInputElement | null {\n if (event.target instanceof HTMLInputElement) {\n return event.target;\n }\n const element = this.comboboxRef()?.element;\n return element instanceof HTMLInputElement ? element : null;\n }\n\n /**\n * Clears the selected value(s) and closes the popup.\n * Sets `null` in single mode and `[]` in multi mode. Used by projected `ax-clear-button`.\n *\n * @param isUserInteraction - Whether the clear was triggered by the user.\n */\n reset(isUserInteraction = false): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n const next: AXComboBoxValue = this.multiple() ? [] : null;\n const current = this.value();\n if (this.multiple()) {\n if (Array.isArray(current) && current.length === 0) {\n return;\n }\n if (current == null) {\n return;\n }\n } else if (current == null) {\n return;\n }\n this.#isUserInteraction = isUserInteraction;\n this.value.set(next);\n this.selection.set([]);\n this.expanded.set(false);\n }\n\n /**\n * Closes the popup list.\n */\n close(): void {\n this.expanded.set(false);\n }\n\n /**\n * Closes the popup list (alias for {@link close}, required by `AXClosableComponent`).\n */\n closeAll(): void {\n this.close();\n }\n\n /**\n * Commits the highlighted (active) or clicked list item as the component value.\n *\n * With `selectionMode=\"explicit\"`, arrow keys only move the active item; Enter/Space must resolve\n * that option. Clicks resolve from the event target so we do not depend on listener order vs ngListbox.\n *\n * In multi-select mode the item is toggled and the popup stays open.\n * When the user typed a query with no matches, Enter clears single-select to `null`.\n */\n protected onListEnter(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.commit();\n }\n\n protected commit(event?: Event) {\n if (event?.type !== 'click' && this.#shouldClearOnEmptyEnter()) {\n if (!this.multiple()) {\n this.reset(true);\n }\n return;\n }\n\n const listbox = this.listboxRef();\n let selectedId: string | undefined;\n\n if (event?.type === 'click' && event.target instanceof Element) {\n const optionEl = event.target.closest('[role=\"option\"]');\n const match = listbox?._pattern.inputs.items().find((item) => item.element() === optionEl);\n const value = match?.value();\n selectedId = typeof value === 'string' ? value : undefined;\n } else {\n const activeValue = listbox?._pattern.inputs.activeItem()?.value();\n selectedId = typeof activeValue === 'string' ? activeValue : this.selection()[0];\n }\n\n const item = selectedId != null ? this.items().find((i) => i.id === selectedId) : undefined;\n if (item == null) {\n if (!this.multiple()) {\n this.expanded.set(false);\n }\n return;\n }\n\n this.#commitItem(item, event);\n }\n\n #commitItem(item: AXComboBoxItem, event?: Event) {\n if (event?.type === 'click') {\n this.onItemClick.emit({\n component: this,\n item,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n nativeEvent: event as MouseEvent,\n });\n }\n\n if (this.multiple()) {\n const current = this.selectedValues();\n const exists = current.some((value) => value === item.value);\n if (!exists) {\n this.onItemSelected.emit({\n component: this,\n item,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n });\n }\n const next = exists ? current.filter((value) => value !== item.value) : [...current, item.value];\n this.#isUserInteraction = true;\n this.value.set(next);\n this.selection.set(next.map((value) => this.items().find((i) => i.value === value)?.id).filter((id): id is string => id != null));\n if (this.searchable() && this.searchText()) {\n this.searchText.set('');\n }\n if (this.sheetSearchText()) {\n this.#clearSheetSearch();\n }\n return;\n }\n\n this.onItemSelected.emit({\n component: this,\n item,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n });\n if (item.value !== this.value()) {\n this.#isUserInteraction = true;\n this.value.set(item.value);\n this.selection.set([item.id]);\n }\n this.expanded.set(false);\n this.comboboxRef()?.element.focus();\n }\n\n /**\n * Focuses the combo box trigger input.\n */\n focus(options?: FocusOptions): void {\n if (this.disabled()) {\n return;\n }\n this.comboboxRef()?.element.focus(options);\n }\n\n /** Forwards native focus from the trigger input. */\n protected emitOnFocus(e: FocusEvent) {\n this.onFocus.emit({\n component: this,\n htmlElement: this.nativeElement,\n nativeEvent: e,\n });\n }\n\n /** Forwards native blur from the trigger input. */\n protected emitOnBlur(e: FocusEvent) {\n this.onBlur.emit({\n component: this,\n htmlElement: this.nativeElement,\n nativeEvent: e,\n });\n this.#scheduleCloseOnTriggerBlur(e);\n }\n\n /**\n * Closes the popup when the trigger input loses focus, unless focus moved into the\n * popover panel or another part of the trigger (e.g. sheet search or list navigation).\n */\n #scheduleCloseOnTriggerBlur(e: FocusEvent) {\n if (!this.expanded()) {\n return;\n }\n\n const related = e.relatedTarget;\n if (related instanceof Node && this.#isFocusWithinPopupOrTrigger(related)) {\n return;\n }\n\n queueMicrotask(() => {\n if (!this.expanded()) {\n return;\n }\n const active = this.#document.activeElement;\n if (active instanceof Node && this.#isFocusWithinPopupOrTrigger(active)) {\n return;\n }\n this.close();\n });\n }\n\n #isFocusWithinPopupOrTrigger(node: Node): boolean {\n const popup = this.popupRef()?.nativeElement;\n if (popup?.contains(node)) {\n return true;\n }\n const origin = this.originRef()?.nativeElement;\n return Boolean(origin?.contains(node));\n }\n\n #translateItemText(text: string): string {\n return this.#translation.translateSync(text, { waitForLoad: true });\n }\n}\n","<div\n #origin\n class=\"ax-editor-container ax-{{ look() }} ax-default\"\n [class.ax-combo-box-trigger]=\"!isEditableTrigger()\"\n [class.ax-combo-box-trigger-multiple]=\"multiple()\"\n [class.ax-state-disabled]=\"disabled()\"\n [class.ax-state-readonly]=\"readonly()\"\n>\n <ng-content select=\"ax-prefix\"></ng-content>\n\n <div class=\"ax-combo-box-value\" [class.ax-combo-box-chips]=\"multiple()\">\n @if (multiple()) {\n @for (item of selectedItems(); track item.id) {\n <ax-chips class=\"ax-sm\" look=\"fill\" [text]=\"selectedTemplate() ? '' : (item.text | translate | async)\">\n @if (selectedTemplate()) {\n <ax-prefix>\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n />\n </ax-prefix>\n }\n @if (!disabled() && !readonly()) {\n <ax-suffix>\n <button type=\"button\" tabindex=\"-1\" (click)=\"removeChip($event, item)\">\n <span class=\"ax-icon ax-icon-close\"></span>\n </button>\n </ax-suffix>\n }\n </ax-chips>\n }\n } @else if (showSelectedTemplate()) {\n <div class=\"ax-combo-box-selected-content\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: selectedItem() }\"\n />\n </div>\n }\n\n <input\n ngCombobox\n #combobox=\"ngCombobox\"\n type=\"text\"\n class=\"ax-input\"\n [class.ax-combo-box-trigger-search]=\"multiple()\"\n [class.ax-combo-box-select-input]=\"!isEditableTrigger()\"\n [class.ax-combo-box-input-overlay]=\"!multiple() && showSelectedTemplate()\"\n [placeholder]=\"multiple() ? triggerSearchPlaceholder() : translatedPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !isEditableTrigger()\"\n [attr.inputmode]=\"isEditableTrigger() ? null : 'none'\"\n [(value)]=\"searchText\"\n [expanded]=\"expanded()\"\n (expandedChange)=\"onExpandedChange($event)\"\n (click)=\"onTriggerClick()\"\n (keydown)=\"onTriggerKeydown($event)\"\n (beforeinput)=\"onBeforeInput($event)\"\n (focus)=\"emitOnFocus($event)\"\n (blur)=\"emitOnBlur($event)\"\n />\n </div>\n\n @if (hasSelection() && !disabled() && !readonly()) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n\n <button\n type=\"button\"\n class=\"ax-general-button-icon\"\n tabindex=\"-1\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"onTriggerClick()\"\n >\n <span class=\"ax-icon\" [class.ax-icon-chevron-down]=\"!expanded()\" [class.ax-icon-chevron-up]=\"expanded()\"></span>\n </button>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n\n<ax-popover\n [target]=\"origin\"\n [openOn]=\"'manual'\"\n [closeOn]=\"isActionsheetStyle() ? 'manual' : 'clickOut'\"\n [closeOnScroll]=\"!isActionsheetStyle()\"\n [placement]=\"'bottom-start'\"\n [width]=\"isActionsheetStyle() ? '100%' : origin.offsetWidth + 'px'\"\n [adaptivityEnabled]=\"isActionsheetStyle()\"\n [disabled]=\"disabled() || readonly()\"\n (onOpened)=\"onPopoverOpened()\"\n (onClosed)=\"onPopoverClosed()\"\n>\n <div\n #popup\n class=\"ax-combo-box-popup\"\n [class.ax-is-empty]=\"hasNoMatches()\"\n [class.ax-is-actionsheet]=\"isActionsheetStyle()\"\n (keydown.escape)=\"close()\"\n >\n @if (isActionsheetStyle()) {\n <ax-header class=\"ax-solid\">\n <ax-title>{{ actionsheetTitle() }}</ax-title>\n @if (multiple()) {\n <ax-button\n class=\"ax-sm\"\n color=\"primary\"\n look=\"solid\"\n text=\"@acorex:common.actions.apply\"\n (onClick)=\"close()\"\n ></ax-button>\n } @else {\n <ax-close-button></ax-close-button>\n }\n </ax-header>\n }\n @if (isSheetSearchEnabled()) {\n <div class=\"ax-combo-box-sheet-search\">\n <ax-search-box\n #sheetSearch\n class=\"ax-sm\"\n look=\"fill\"\n [autoSearch]=\"false\"\n [delayTime]=\"0\"\n [placeholder]=\"searchPlaceholder()\"\n (onValueChanged)=\"onSheetSearchInput()\"\n (onKeyUp)=\"onSheetSearchInput()\"\n (onKeyDown)=\"onSheetSearchKeydown($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n }\n <ng-content select=\"ax-header\"></ng-content>\n @if (expanded()) {\n @if (hasNoMatches()) {\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\" />\n } @else {\n <div class=\"ax-combo-box-empty\">{{ '@acorex:common.general.no-result-found' | translate | async }}</div>\n }\n }\n @if (isActionsheetStyle()) {\n <div\n ngListbox\n class=\"ax-combo-box-listbox\"\n [class.ax-hidden]=\"hasNoMatches()\"\n focusMode=\"activedescendant\"\n selectionMode=\"explicit\"\n [multi]=\"multiple()\"\n [tabindex]=\"-1\"\n [(value)]=\"selection\"\n (click)=\"commit($event)\"\n >\n @for (item of filteredItems(); track trackItemKey($index, item); let odd = $odd) {\n <div\n ngOption\n class=\"ax-combo-box-option-host\"\n [class.ax-combo-box-option]=\"!itemTemplate()\"\n [class.ax-combo-box-option-multiple]=\"multiple()\"\n [class.ax-state-alternate]=\"alternate() && odd\"\n [value]=\"item.id\"\n [label]=\"item.text | translate | async\"\n >\n <ng-container [ngTemplateOutlet]=\"optionContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n }\n </div>\n } @else {\n <ng-template ngComboboxPopup [combobox]=\"combobox\">\n <div\n ngListbox\n ngComboboxWidget\n #listbox=\"ngListbox\"\n class=\"ax-combo-box-listbox\"\n [class.ax-hidden]=\"hasNoMatches()\"\n focusMode=\"activedescendant\"\n selectionMode=\"explicit\"\n [multi]=\"multiple()\"\n [tabindex]=\"-1\"\n [activeDescendant]=\"listbox.activeDescendant()\"\n [(value)]=\"selection\"\n (click)=\"commit($event)\"\n (keydown.enter)=\"onListEnter($event)\"\n (keydown.space)=\"commit()\"\n >\n @for (item of filteredItems(); track trackItemKey($index, item); let odd = $odd) {\n <div\n ngOption\n class=\"ax-combo-box-option-host\"\n [class.ax-combo-box-option]=\"!itemTemplate()\"\n [class.ax-combo-box-option-multiple]=\"multiple()\"\n [class.ax-state-alternate]=\"alternate() && odd\"\n [value]=\"item.id\"\n [label]=\"item.text | translate | async\"\n >\n <ng-container [ngTemplateOutlet]=\"optionContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n }\n </div>\n </ng-template>\n }\n }\n <ng-content select=\"ax-footer\"></ng-content>\n </div>\n</ax-popover>\n<ng-template #optionContent let-item>\n @if (multiple()) {\n <ax-check-box\n class=\"ax-combo-box-checkbox\"\n [tabIndex]=\"-1\"\n [value]=\"isItemSelected(item)\"\n ></ax-check-box>\n }\n @if (itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: item, highlightText: highlightQuery() }\"\n />\n } @else {\n <span class=\"ax-combo-box-option-label\">\n <ax-highlight-text [text]=\"item.text | translate | async\" [query]=\"highlightQuery()\" />\n </span>\n @if (!multiple() && isItemSelected(item)) {\n <ax-icon class=\"ax-combo-box-option-check ax-icon ax-icon-check\" aria-hidden=\"true\"></ax-icon>\n }\n }\n</ng-template>\n<ng-content select=\"ax-validation-rule\"></ng-content>\n","import { NgModule } from '@angular/core';\nimport { AXComboBoxComponent } from './combo-box.component';\n\n@NgModule({\n imports: [AXComboBoxComponent],\n exports: [AXComboBoxComponent],\n})\nexport class AXComboBoxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { AXTabsComponent, AXTabItemComponent } from '@acorex/components/tabs';
6
6
  import * as i1$2 from '@angular/common';
7
7
  import { CommonModule, NgComponentOutlet, DOCUMENT, isPlatformBrowser, AsyncPipe } from '@angular/common';
8
8
  import * as i0 from '@angular/core';
9
- import { InjectionToken, inject, Injectable, signal, computed, Injector, runInInjectionContext, PLATFORM_ID, DestroyRef, viewChild, ViewContainerRef, input, output, effect, ViewEncapsulation, Component, ElementRef, Directive, reflectComponentType, EventEmitter, NgZone, afterNextRender, untracked, model, ChangeDetectorRef, viewChildren, SecurityContext, NgModule } from '@angular/core';
9
+ import { InjectionToken, inject, Injectable, signal, computed, Injector, runInInjectionContext, PLATFORM_ID, DestroyRef, viewChild, ViewContainerRef, input, output, effect, ViewEncapsulation, Component, ChangeDetectionStrategy, ElementRef, Directive, reflectComponentType, EventEmitter, NgZone, afterNextRender, untracked, model, ChangeDetectorRef, viewChildren, SecurityContext, NgModule } from '@angular/core';
10
10
  import { Subject, takeUntil, catchError, EMPTY, merge, filter, map, startWith, debounceTime, distinctUntilChanged, firstValueFrom } from 'rxjs';
11
11
  import { AXUploaderService, AXUploaderZoneDirective, AXUploaderBrowseDirective } from '@acorex/cdk/uploader';
12
12
  import { AXDialogService } from '@acorex/components/dialog';
@@ -6946,11 +6946,11 @@ class AXConversationRegistryComponentOutletComponent {
6946
6946
  });
6947
6947
  }
6948
6948
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXConversationRegistryComponentOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6949
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXConversationRegistryComponentOutletComponent, isStandalone: true, selector: "ax-conversation-registry-component-outlet", inputs: { component: { classPropertyName: "component", publicName: "component", isSignal: true, isRequired: false, transformFunction: null }, componentLoader: { classPropertyName: "componentLoader", publicName: "componentLoader", isSignal: true, isRequired: false, transformFunction: null }, inputs: { classPropertyName: "inputs", publicName: "inputs", isSignal: true, isRequired: false, transformFunction: null }, skeleton: { classPropertyName: "skeleton", publicName: "skeleton", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-busy": "isLoading() ? \"true\" : null", "class.ax-conversation-outlet--loading": "isLoading()", "class.ax-conversation-outlet--text": "isLoading() && skeletonVariant() === \"text\"", "class.ax-conversation-outlet--media": "isLoading() && (skeletonVariant() === \"media\" || skeletonVariant() === \"lines\")" } }, ngImport: i0, template: "@if (resolvedComponent(); as component) {\n <ng-container *ngComponentOutlet=\"component; inputs: inputs()\" />\n} @else if (isLoading() && skeletonVariant() !== 'none') {\n <div\n class=\"ax-conversation-outlet-skeleton\"\n [class.ax-conversation-outlet-skeleton--text]=\"skeletonVariant() === 'text'\"\n [class.ax-conversation-outlet-skeleton--media]=\"skeletonVariant() === 'media'\"\n [class.ax-conversation-outlet-skeleton--lines]=\"skeletonVariant() === 'lines'\"\n aria-hidden=\"true\"\n >\n @switch (skeletonVariant()) {\n @case ('text') {\n <ax-skeleton class=\"ax-conversation-outlet-skeleton__line\" [animated]=\"true\"></ax-skeleton>\n }\n @case ('media') {\n <ax-skeleton class=\"ax-conversation-outlet-skeleton__media\" [animated]=\"true\"></ax-skeleton>\n <ax-skeleton\n class=\"ax-conversation-outlet-skeleton__line ax-conversation-outlet-skeleton__line--full\"\n [animated]=\"true\"\n ></ax-skeleton>\n <ax-skeleton\n class=\"ax-conversation-outlet-skeleton__line ax-conversation-outlet-skeleton__line--mid\"\n [animated]=\"true\"\n ></ax-skeleton>\n }\n @default {\n <ax-skeleton\n class=\"ax-conversation-outlet-skeleton__line ax-conversation-outlet-skeleton__line--full\"\n [animated]=\"true\"\n ></ax-skeleton>\n <ax-skeleton\n class=\"ax-conversation-outlet-skeleton__line ax-conversation-outlet-skeleton__line--full\"\n [animated]=\"true\"\n ></ax-skeleton>\n <ax-skeleton\n class=\"ax-conversation-outlet-skeleton__line ax-conversation-outlet-skeleton__line--mid\"\n [animated]=\"true\"\n ></ax-skeleton>\n }\n }\n </div>\n}\n", styles: ["@layer components{ax-conversation-registry-component-outlet:has(ax-conversation-text-renderer),ax-conversation-registry-component-outlet.ax-conversation-outlet--text{display:inline}ax-conversation-registry-component-outlet{min-width:calc(var(--spacing, .25rem) * 0)}ax-conversation-registry-component-outlet.ax-conversation-outlet--media{display:block;width:min(100%,16.5rem)}.ax-conversation-outlet-skeleton{display:flex;flex-direction:column}.ax-conversation-outlet-skeleton--text{display:inline-flex;vertical-align:middle;min-width:10rem}.ax-conversation-outlet-skeleton--media,.ax-conversation-outlet-skeleton--lines{width:100%;gap:calc(var(--spacing, .25rem) * 1.5);min-width:11rem;width:min(100%,16.5rem)}.ax-conversation-outlet-skeleton ax-skeleton.ax-skeleton{background-color:currentColor}@supports (color: color-mix(in lab,red,red)){.ax-conversation-outlet-skeleton ax-skeleton.ax-skeleton{background-color:color-mix(in srgb,currentColor 16%,transparent)}}.ax-conversation-outlet-skeleton ax-skeleton.ax-skeleton-animate:before{background-image:linear-gradient(to right,transparent,currentColor 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.ax-conversation-outlet-skeleton ax-skeleton.ax-skeleton-animate:before{background-image:linear-gradient(to right,transparent,color-mix(in srgb,currentColor 28%,transparent) 50%,transparent)}}.ax-conversation-outlet-skeleton__line{height:calc(var(--spacing, .25rem) * 3);border-radius:calc(infinity * 1px);width:10.5rem;max-width:100%}.ax-conversation-outlet-skeleton__line--full{width:100%}.ax-conversation-outlet-skeleton__line--mid{width:62%}.ax-conversation-outlet-skeleton--lines .ax-conversation-outlet-skeleton__line:first-child{height:2.25rem;border-radius:.5rem}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }], encapsulation: i0.ViewEncapsulation.None }); }
6949
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXConversationRegistryComponentOutletComponent, isStandalone: true, selector: "ax-conversation-registry-component-outlet", inputs: { component: { classPropertyName: "component", publicName: "component", isSignal: true, isRequired: false, transformFunction: null }, componentLoader: { classPropertyName: "componentLoader", publicName: "componentLoader", isSignal: true, isRequired: false, transformFunction: null }, inputs: { classPropertyName: "inputs", publicName: "inputs", isSignal: true, isRequired: false, transformFunction: null }, skeleton: { classPropertyName: "skeleton", publicName: "skeleton", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-busy": "isLoading() ? \"true\" : null", "class.ax-conversation-outlet--loading": "isLoading()", "class.ax-conversation-outlet--text": "isLoading() && skeletonVariant() === \"text\"", "class.ax-conversation-outlet--media": "isLoading() && (skeletonVariant() === \"media\" || skeletonVariant() === \"lines\")" } }, ngImport: i0, template: "@if (resolvedComponent(); as component) {\n <ng-container *ngComponentOutlet=\"component; inputs: inputs()\" />\n} @else if (isLoading() && skeletonVariant() !== 'none') {\n <div\n class=\"ax-conversation-outlet-skeleton\"\n [class.ax-conversation-outlet-skeleton--text]=\"skeletonVariant() === 'text'\"\n [class.ax-conversation-outlet-skeleton--media]=\"skeletonVariant() === 'media'\"\n [class.ax-conversation-outlet-skeleton--lines]=\"skeletonVariant() === 'lines'\"\n aria-hidden=\"true\"\n >\n @switch (skeletonVariant()) {\n @case ('text') {\n <ax-skeleton class=\"ax-conversation-outlet-skeleton__line\" [animated]=\"true\"></ax-skeleton>\n }\n @case ('media') {\n <ax-skeleton class=\"ax-conversation-outlet-skeleton__media\" [animated]=\"true\"></ax-skeleton>\n <ax-skeleton\n class=\"ax-conversation-outlet-skeleton__line ax-conversation-outlet-skeleton__line--full\"\n [animated]=\"true\"\n ></ax-skeleton>\n <ax-skeleton\n class=\"ax-conversation-outlet-skeleton__line ax-conversation-outlet-skeleton__line--mid\"\n [animated]=\"true\"\n ></ax-skeleton>\n }\n @default {\n <ax-skeleton\n class=\"ax-conversation-outlet-skeleton__line ax-conversation-outlet-skeleton__line--full\"\n [animated]=\"true\"\n ></ax-skeleton>\n <ax-skeleton\n class=\"ax-conversation-outlet-skeleton__line ax-conversation-outlet-skeleton__line--full\"\n [animated]=\"true\"\n ></ax-skeleton>\n <ax-skeleton\n class=\"ax-conversation-outlet-skeleton__line ax-conversation-outlet-skeleton__line--mid\"\n [animated]=\"true\"\n ></ax-skeleton>\n }\n }\n </div>\n}\n", styles: ["@layer components{ax-conversation-registry-component-outlet:has(ax-conversation-text-renderer),ax-conversation-registry-component-outlet.ax-conversation-outlet--text{display:inline}ax-conversation-registry-component-outlet{min-width:calc(var(--spacing, .25rem) * 0)}ax-conversation-registry-component-outlet.ax-conversation-outlet--media{display:block;width:min(100%,16.5rem)}.ax-conversation-outlet-skeleton{display:flex;flex-direction:column}.ax-conversation-outlet-skeleton--text{display:inline-flex;vertical-align:middle;min-width:10rem}.ax-conversation-outlet-skeleton--media,.ax-conversation-outlet-skeleton--lines{width:100%;gap:calc(var(--spacing, .25rem) * 1.5);min-width:11rem;width:min(100%,16.5rem)}.ax-conversation-outlet-skeleton ax-skeleton.ax-skeleton{background-color:currentColor}@supports (color: color-mix(in lab,red,red)){.ax-conversation-outlet-skeleton ax-skeleton.ax-skeleton{background-color:color-mix(in srgb,currentColor 16%,transparent)}}.ax-conversation-outlet-skeleton ax-skeleton.ax-skeleton-animate:before{background-image:linear-gradient(to right,transparent,currentColor 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.ax-conversation-outlet-skeleton ax-skeleton.ax-skeleton-animate:before{background-image:linear-gradient(to right,transparent,color-mix(in srgb,currentColor 28%,transparent) 50%,transparent)}}.ax-conversation-outlet-skeleton__line{height:calc(var(--spacing, .25rem) * 3);border-radius:calc(infinity * 1px);width:10.5rem;max-width:100%}.ax-conversation-outlet-skeleton__line--full{width:100%}.ax-conversation-outlet-skeleton__line--mid{width:62%}.ax-conversation-outlet-skeleton--lines .ax-conversation-outlet-skeleton__line:first-child{height:2.25rem;border-radius:.5rem}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
6950
6950
  }
6951
6951
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXConversationRegistryComponentOutletComponent, decorators: [{
6952
6952
  type: Component,
6953
- args: [{ selector: 'ax-conversation-registry-component-outlet', encapsulation: ViewEncapsulation.None, imports: [NgComponentOutlet, AXSkeletonComponent], host: {
6953
+ args: [{ selector: 'ax-conversation-registry-component-outlet', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgComponentOutlet, AXSkeletonComponent], host: {
6954
6954
  '[attr.aria-busy]': 'isLoading() ? "true" : null',
6955
6955
  '[class.ax-conversation-outlet--loading]': 'isLoading()',
6956
6956
  '[class.ax-conversation-outlet--text]': 'isLoading() && skeletonVariant() === "text"',
@@ -11920,7 +11920,7 @@ class AXConversationAudioPickerComponent {
11920
11920
  if (!item) {
11921
11921
  return;
11922
11922
  }
11923
- const { AXConversationPickerRenameFileDialogComponent } = await import('./acorex-components-conversation-picker-rename-file-dialog.component-_F-fv3Ti.mjs');
11923
+ const { AXConversationPickerRenameFileDialogComponent } = await import('./acorex-components-conversation-picker-rename-file-dialog.component-Vc1R5AFc.mjs');
11924
11924
  const result = await this.popupService.open(AXConversationPickerRenameFileDialogComponent, {
11925
11925
  title: this.translation.translateSync('@acorex:chat.pickers.files.rename-title'),
11926
11926
  size: 'sm',
@@ -12525,7 +12525,7 @@ class AXConversationFilePickerComponent {
12525
12525
  if (!item) {
12526
12526
  return;
12527
12527
  }
12528
- const { AXConversationPickerRenameFileDialogComponent } = await import('./acorex-components-conversation-picker-rename-file-dialog.component-_F-fv3Ti.mjs');
12528
+ const { AXConversationPickerRenameFileDialogComponent } = await import('./acorex-components-conversation-picker-rename-file-dialog.component-Vc1R5AFc.mjs');
12529
12529
  const result = await this.popupService.open(AXConversationPickerRenameFileDialogComponent, {
12530
12530
  title: this.translation.translateSync('@acorex:chat.pickers.files.rename-title'),
12531
12531
  size: 'sm',
@@ -15916,11 +15916,11 @@ class AXConversationFallbackRendererComponent {
15916
15916
  ...(ngDevMode ? [{ debugName: "fallbackDescription" }] : /* istanbul ignore next */ []));
15917
15917
  }
15918
15918
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXConversationFallbackRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15919
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.8", type: AXConversationFallbackRendererComponent, isStandalone: true, selector: "ax-conversation-fallback-renderer", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"ax-conversation-fallback\">\n <ax-conversation-message-renderer-state [rendererState]=\"rendererState()\" [message]=\"message()\" />\n <div class=\"ax-conversation-renderer-state__row ax-conversation-renderer-state__row--warn\" role=\"alert\">\n <span class=\"ax-conversation-renderer-state__msg\">{{ fallbackDescription() }}</span>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{ax-conversation-fallback-renderer{display:block}ax-conversation-fallback-renderer .ax-conversation-fallback{display:flex;max-width:min(100%,18rem);flex-direction:column;gap:calc(var(--spacing, .25rem) * 1.5)}ax-conversation-fallback-renderer .ax-conversation-renderer-state__row{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2);border-radius:var(--ax-sys-border-radius);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * 1.5);font-size:.8125rem;--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375)}ax-conversation-fallback-renderer .ax-conversation-renderer-state__row--warn{background-color:rgba(var(--ax-sys-color-warning-lightest-surface));color:rgba(var(--ax-sys-color-warning-800))}ax-conversation-fallback-renderer .ax-conversation-renderer-state__msg{min-width:calc(var(--spacing, .25rem) * 0);flex:1}}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AXConversationMessageRendererStateComponent, selector: "ax-conversation-message-renderer-state", inputs: ["rendererState", "message", "contentErrorLabel", "deliveryFailedLabel", "showContentErrorChrome", "contentErrorStyle", "contentErrorIconClass", "placement", "contentRetryEnabled"], outputs: ["contentRetry"] }], encapsulation: i0.ViewEncapsulation.None }); }
15919
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.8", type: AXConversationFallbackRendererComponent, isStandalone: true, selector: "ax-conversation-fallback-renderer", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"ax-conversation-fallback\">\n <ax-conversation-message-renderer-state [rendererState]=\"rendererState()\" [message]=\"message()\" />\n <div class=\"ax-conversation-renderer-state__row ax-conversation-renderer-state__row--warn\" role=\"alert\">\n <span class=\"ax-conversation-renderer-state__msg\">{{ fallbackDescription() }}</span>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{ax-conversation-fallback-renderer{display:block}ax-conversation-fallback-renderer .ax-conversation-fallback{display:flex;max-width:min(100%,18rem);flex-direction:column;gap:calc(var(--spacing, .25rem) * 1.5)}ax-conversation-fallback-renderer .ax-conversation-renderer-state__row{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2);border-radius:var(--ax-sys-border-radius);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * 1.5);font-size:.8125rem;--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375)}ax-conversation-fallback-renderer .ax-conversation-renderer-state__row--warn{background-color:rgba(var(--ax-sys-color-warning-lightest-surface));color:rgba(var(--ax-sys-color-warning-800))}ax-conversation-fallback-renderer .ax-conversation-renderer-state__msg{min-width:calc(var(--spacing, .25rem) * 0);flex:1}}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AXConversationMessageRendererStateComponent, selector: "ax-conversation-message-renderer-state", inputs: ["rendererState", "message", "contentErrorLabel", "deliveryFailedLabel", "showContentErrorChrome", "contentErrorStyle", "contentErrorIconClass", "placement", "contentRetryEnabled"], outputs: ["contentRetry"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
15920
15920
  }
15921
15921
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXConversationFallbackRendererComponent, decorators: [{
15922
15922
  type: Component,
15923
- args: [{ selector: 'ax-conversation-fallback-renderer', imports: [CommonModule, AXConversationMessageRendererStateComponent], encapsulation: ViewEncapsulation.None, template: "<div class=\"ax-conversation-fallback\">\n <ax-conversation-message-renderer-state [rendererState]=\"rendererState()\" [message]=\"message()\" />\n <div class=\"ax-conversation-renderer-state__row ax-conversation-renderer-state__row--warn\" role=\"alert\">\n <span class=\"ax-conversation-renderer-state__msg\">{{ fallbackDescription() }}</span>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{ax-conversation-fallback-renderer{display:block}ax-conversation-fallback-renderer .ax-conversation-fallback{display:flex;max-width:min(100%,18rem);flex-direction:column;gap:calc(var(--spacing, .25rem) * 1.5)}ax-conversation-fallback-renderer .ax-conversation-renderer-state__row{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2);border-radius:var(--ax-sys-border-radius);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * 1.5);font-size:.8125rem;--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375)}ax-conversation-fallback-renderer .ax-conversation-renderer-state__row--warn{background-color:rgba(var(--ax-sys-color-warning-lightest-surface));color:rgba(var(--ax-sys-color-warning-800))}ax-conversation-fallback-renderer .ax-conversation-renderer-state__msg{min-width:calc(var(--spacing, .25rem) * 0);flex:1}}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
15923
+ args: [{ selector: 'ax-conversation-fallback-renderer', imports: [CommonModule, AXConversationMessageRendererStateComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"ax-conversation-fallback\">\n <ax-conversation-message-renderer-state [rendererState]=\"rendererState()\" [message]=\"message()\" />\n <div class=\"ax-conversation-renderer-state__row ax-conversation-renderer-state__row--warn\" role=\"alert\">\n <span class=\"ax-conversation-renderer-state__msg\">{{ fallbackDescription() }}</span>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{ax-conversation-fallback-renderer{display:block}ax-conversation-fallback-renderer .ax-conversation-fallback{display:flex;max-width:min(100%,18rem);flex-direction:column;gap:calc(var(--spacing, .25rem) * 1.5)}ax-conversation-fallback-renderer .ax-conversation-renderer-state__row{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2);border-radius:var(--ax-sys-border-radius);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * 1.5);font-size:.8125rem;--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375)}ax-conversation-fallback-renderer .ax-conversation-renderer-state__row--warn{background-color:rgba(var(--ax-sys-color-warning-lightest-surface));color:rgba(var(--ax-sys-color-warning-800))}ax-conversation-fallback-renderer .ax-conversation-renderer-state__msg{min-width:calc(var(--spacing, .25rem) * 0);flex:1}}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
15924
15924
  }], propDecorators: { message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: true }] }] } });
15925
15925
 
15926
15926
  var fallbackRenderer_component = /*#__PURE__*/Object.freeze({
@@ -17662,4 +17662,4 @@ function getErrorMessage(code, params) {
17662
17662
  */
17663
17663
 
17664
17664
  export { AXConversationPickerCaptionComponent as $, AXConversationApi as A, AXConversationFileRendererComponent as B, AXConversationForwardMessageDialogComponent as C, AXConversationImageAttachmentComponent as D, AXConversationImageFileTypeProvider as E, AXConversationImagePickerComponent as F, AXConversationImageRendererComponent as G, AXConversationInfiniteScrollDirective as H, AXConversationInfoBarActionRegistry as I, AXConversationInfoBarComponent as J, AXConversationInfoBarSearchComponent as K, AXConversationInfoBarService as L, AXConversationItemActionRegistry as M, AXConversationLocationPickerComponent as N, AXConversationLocationRendererComponent as O, AXConversationMediaPlaybackInfoBarBannerComponent as P, AXConversationMessageActionRegistry as Q, AXConversationMessageApi as R, AXConversationMessageListComponent as S, AXConversationMessageListNoActiveDefaultComponent as T, AXConversationMessageListService as U, AXConversationMessageRendererCopyHostComponent as V, AXConversationMessageRendererRegistry as W, AXConversationMessageRendererStateComponent as X, AXConversationMessageUtilsService as Y, AXConversationModule as Z, AXConversationNewDialogComponent as _, AXConversationApiLoggerService as a, AX_CONVERSATION_IMAGE_CATALOG as a$, AXConversationPickerEmptyComponent as a0, AXConversationPickerFooterComponent as a1, AXConversationPickerHeaderComponent as a2, AXConversationPickerOptionsComponent as a3, AXConversationPickerShellComponent as a4, AXConversationPickerToolbarComponent as a5, AXConversationRealtimeApi as a6, AXConversationRegistryComponentOutletComponent as a7, AXConversationRegistryService as a8, AXConversationService as a9, AX_CONVERSATION_COMPOSER_VIDEO_ACTION as aA, AX_CONVERSATION_COMPOSER_VOICE_RECORDING_ACTION as aB, AX_CONVERSATION_CONFIG as aC, AX_CONVERSATION_CONNECTION_ERRORS as aD, AX_CONVERSATION_CONVERSATION_AVATAR_COMPONENT as aE, AX_CONVERSATION_DEFAULT_COMPOSER_ACTIONS as aF, AX_CONVERSATION_DEFAULT_COMPOSER_TABS as aG, AX_CONVERSATION_DEFAULT_CONVERSATION_ITEM_ACTIONS as aH, AX_CONVERSATION_DEFAULT_CONVERSATION_TABS as aI, AX_CONVERSATION_DEFAULT_GROUP_ICON as aJ, AX_CONVERSATION_DEFAULT_INFO_BAR_ACTIONS as aK, AX_CONVERSATION_DEFAULT_MESSAGE_ACTIONS as aL, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND as aM, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND_PRESET_ID as aN, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_THEME_BACKGROUND as aO, AX_CONVERSATION_DEFAULT_MESSAGE_RENDERERS as aP, AX_CONVERSATION_DEFAULT_ROOM_PREFERENCES as aQ, AX_CONVERSATION_DEFAULT_USER_ICON as aR, AX_CONVERSATION_ERRORS as aS, AX_CONVERSATION_ERROR_HANDLER_CONFIG as aT, AX_CONVERSATION_ERROR_MESSAGES as aU, AX_CONVERSATION_FALLBACK_RENDERER as aV, AX_CONVERSATION_FILE_CATALOG as aW, AX_CONVERSATION_FILE_ERRORS as aX, AX_CONVERSATION_FILE_PRESENTATION as aY, AX_CONVERSATION_FILE_RENDERER as aZ, AX_CONVERSATION_FILE_TYPES_READY as a_, AXConversationSidebarComponent as aa, AXConversationSidebarService as ab, AXConversationStickerRendererComponent as ac, AXConversationStickerTabComponent as ad, AXConversationSystemRendererComponent as ae, AXConversationTabRegistry as af, AXConversationTextRendererComponent as ag, AXConversationUserApi as ah, AXConversationVideoAttachmentComponent as ai, AXConversationVideoFileTypeProvider as aj, AXConversationVideoPickerComponent as ak, AXConversationVideoRendererComponent as al, AXConversationVoiceFileTypeProvider as am, AXConversationVoiceRecorderComponent as an, AXConversationVoiceRendererComponent as ao, AX_CONVERSATION_AUDIO_CATALOG as ap, AX_CONVERSATION_AUDIO_PRESENTATION as aq, AX_CONVERSATION_AUDIO_RENDERER as ar, AX_CONVERSATION_BUILTIN_COMPOSER_TABS as as, AX_CONVERSATION_COMPOSER_AUDIO_ACTION as at, AX_CONVERSATION_COMPOSER_EMOJI_ACTION as au, AX_CONVERSATION_COMPOSER_EMOJI_TAB as av, AX_CONVERSATION_COMPOSER_FILE_ACTION as aw, AX_CONVERSATION_COMPOSER_IMAGE_ACTION as ax, AX_CONVERSATION_COMPOSER_LOCATION_ACTION as ay, AX_CONVERSATION_COMPOSER_STICKER_TAB as az, AXConversationAudioAttachmentComponent as b, createConversationAudioFileType as b$, AX_CONVERSATION_IMAGE_PRESENTATION as b0, AX_CONVERSATION_IMAGE_RENDERER as b1, AX_CONVERSATION_INFO_BAR_ARCHIVE_ACTION as b2, AX_CONVERSATION_INFO_BAR_BLOCK_ACTION as b3, AX_CONVERSATION_INFO_BAR_DELETE_ACTION as b4, AX_CONVERSATION_INFO_BAR_DIVIDER as b5, AX_CONVERSATION_INFO_BAR_MUTE_ACTION as b6, AX_CONVERSATION_INFO_BAR_SEARCH_ACTION as b7, AX_CONVERSATION_ITEM_BLOCK_ACTION as b8, AX_CONVERSATION_ITEM_DELETE_ACTION as b9, AX_CONVERSATION_URL_ERRORS as bA, AX_CONVERSATION_USER_AVATAR_COMPONENT as bB, AX_CONVERSATION_USER_ERRORS as bC, AX_CONVERSATION_VIDEO_CATALOG as bD, AX_CONVERSATION_VIDEO_PRESENTATION as bE, AX_CONVERSATION_VIDEO_RENDERER as bF, AX_CONVERSATION_VOICE_CATALOG as bG, AX_CONVERSATION_VOICE_PRESENTATION as bH, AX_CONVERSATION_VOICE_RENDERER as bI, AX_DEFAULT_CONVERSATION_CONFIG as bJ, abortPickerUploads as bK, applyAudioLocalPreview as bL, applyFileLocalPreview as bM, applyLocalPreview as bN, applyVideoLocalPreview as bO, applyVoiceLocalPreview as bP, audioItemFromUpload as bQ, bindMediaRendererContentState as bR, buildMediaGalleryTiles as bS, canShowRendererContentError as bT, cleanupPickerUploads as bU, conversationAudioUtilities as bV, conversationFileUtilities as bW, conversationImageUtilities as bX, conversationVideoUtilities as bY, conversationVoiceUtilities as bZ, copyWithFileTypeFallback as b_, AX_CONVERSATION_ITEM_DIVIDER as ba, AX_CONVERSATION_ITEM_MARK_READ_ACTION as bb, AX_CONVERSATION_ITEM_MUTE_ACTION as bc, AX_CONVERSATION_ITEM_PIN_ACTION as bd, AX_CONVERSATION_LOCATION_ERRORS as be, AX_CONVERSATION_LOCATION_RENDERER as bf, AX_CONVERSATION_MESSAGE_DELETE_ACTION as bg, AX_CONVERSATION_MESSAGE_EDIT_ACTION as bh, AX_CONVERSATION_MESSAGE_ERRORS as bi, AX_CONVERSATION_MESSAGE_FORWARD_ACTION as bj, AX_CONVERSATION_MESSAGE_LIST_BACKGROUND_PRESETS as bk, AX_CONVERSATION_MESSAGE_REPLY_ACTION as bl, AX_CONVERSATION_MESSAGE_TYPE_FILE_TYPE as bm, AX_CONVERSATION_PEER_AVATAR_TYPES as bn, AX_CONVERSATION_REGISTRY_CONFIG as bo, AX_CONVERSATION_STICKER_API_KEY as bp, AX_CONVERSATION_STICKER_RENDERER as bq, AX_CONVERSATION_SYSTEM_RENDERER as br, AX_CONVERSATION_TAB_ALL as bs, AX_CONVERSATION_TAB_ARCHIVED as bt, AX_CONVERSATION_TAB_BOT as bu, AX_CONVERSATION_TAB_CHANNELS as bv, AX_CONVERSATION_TAB_GROUPS as bw, AX_CONVERSATION_TAB_PRIVATE as bx, AX_CONVERSATION_TAB_UNREAD as by, AX_CONVERSATION_TEXT_RENDERER as bz, AXConversationAudioFileTypeProvider as c, notifyMaxFilesCapacityExceeded as c$, createConversationFileFileType as c0, createConversationImageFileType as c1, createConversationVideoFileType as c2, createConversationVoiceFileType as c3, createLocalPreviewUrl as c4, createObjectUrl as c5, createPickerDragHandlers as c6, createPickerUploadItemId as c7, createResolvedMediaUrlSignal as c8, deleteUploadedPickerMedia as c9, isConversationReactionsEnabled as cA, isConversationRoomCreator as cB, isGenericPrivateConversationTitle as cC, isGridMediaCategory as cD, isGroupLikeConversation as cE, isMessageDeliveryPending as cF, isMessageListThemeBackground as cG, isMessageVisibleAfterHistoryCutoff as cH, isNonPersistableMediaUrl as cI, isPickerItemReadyToSend as cJ, isSameMessageListBackground as cK, isUploadAborted as cL, limitFilesToCapacity as cM, mediaCopyText as cN, mergeAudioUploadResult as cO, mergeFileUploadResult as cP, mergeInfoPanelMessages as cQ, mergeUploadResult as cR, mergeVideoUploadResult as cS, mergeVoiceUploadResult as cT, mergeWithDefaults as cU, messageContainsLink as cV, normalizeAudioPayload as cW, normalizeFilePayload as cX, normalizeImagePayload as cY, normalizeMessageListBackgroundValue as cZ, normalizeVideoPayload as c_, dismissComposerPickerHost as ca, ensureConversationFileCatalogRegistered as cb, fetchConversationMediaPage as cc, fileItemFromUpload as cd, filesFromClipboardEvent as ce, filterMessagesByMediaCategory as cf, filterSupplementalInfoPanelMessages as cg, findExistingPrivateConversation as ch, formatDuration as ci, formatErrorMessage as cj, formatFileByteSize as ck, formatFileSize as cl, formatMediaDuration as cm, formatPickerValidationMessage as cn, getActiveComposerPickerPasteHandler as co, getConversationMediaCategories as cp, getConversationProfileFields as cq, getErrorMessage as cr, getMessageAudioItems as cs, getMessageVideoItems as ct, getPickerCancelUploadLabel as cu, getPrivatePeerParticipant as cv, hasRegistryComponent as cw, inferFileExtensionHintFromMessage as cx, isAttachmentListCategory as cy, isComposerTabEnabled as cz, AXConversationAudioPickerComponent as d, notifyPickerValidationErrors as d0, openWithFileType as d1, pickDisplayMediaUrl as d2, pickEarliestJoinedParticipant as d3, pickerItemToMediaReference as d4, pickerItemToUploadResult as d5, provideConversation as d6, provideConversationComposerFileTypes as d7, provideConversationFileCatalog as d8, registerComposerPickerPasteHandler as d9, syncPlaybackInfoBarBanner as dA, toUploaderReference$1 as dB, toUploaderReference as dC, uploadPickerFile as dD, usesDefaultMessageListWallpaper as dE, validateConversationId as dF, validateEmail as dG, validateLatitude as dH, validateLongitude as dI, validateMessagePayload as dJ, validateMessageText as dK, validateMessageType as dL, validateUrl as dM, validateUserId as dN, validateUserIds as dO, videoItemFromUpload as dP, reportMediaLoadError as da, resolveComposerMaxFiles as db, resolveConversationAvatarDisplay as dc, resolveConversationComposerTabs as dd, resolveConversationForViewer as de, resolveConversationMessageFileType as df, resolveConversationPeerParticipant as dg, resolveConversationPeerUserId as dh, resolveConversationTitleForViewer as di, resolveGalleryImageUrl as dj, resolveImageDisplayUrl as dk, resolveMessageListBackgroundRaw as dl, resolveMessageListBackgroundStyle as dm, resolveParticipantProfile as dn, resolvePersistableMediaUrl as dp, resolvePersistedThumbnailUrl as dq, resolvePrivatePeerParticipant as dr, resolvePrivatePeerUserId as ds, resolveUserAvatarDisplay as dt, resolveVideoThumbnailUrl as du, revokeObjectUrl as dv, revokePickerBlobPreviews as dw, sanitizeInput as dx, shouldUseUserAvatarForConversation as dy, sortUsersForForward as dz, AXConversationAudioRendererComponent as e, AXConversationAvatarComponent as f, AXConversationAvatarPickerComponent as g, AXConversationBaseRegistry as h, isValidPickerFileName as i, AXConversationComposerActionRegistry as j, AXConversationComposerComponent as k, AXConversationComposerFileTypesProvider as l, AXConversationComposerGenerationStateService as m, AXConversationComposerPopupComponent as n, AXConversationComposerService as o, AXConversationComposerTabRegistry as p, AXConversationContainerComponent as q, AXConversationContainerDirective as r, AXConversationDateUtilsService as s, AXConversationDeleteDialogComponent as t, AXConversationEmojiTabComponent as u, AXConversationErrorHandlerService as v, AXConversationFallbackRendererComponent as w, AXConversationFileAttachmentComponent as x, AXConversationFileFileTypeProvider as y, AXConversationFilePickerComponent as z };
17665
- //# sourceMappingURL=acorex-components-conversation-acorex-components-conversation-Cl_dlCTX.mjs.map
17665
+ //# sourceMappingURL=acorex-components-conversation-acorex-components-conversation-CVgneI8Q.mjs.map