@acorex/components 22.1.0-next.2 → 22.1.0-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/fesm2022/acorex-components-accordion.mjs +2 -2
  2. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  3. package/fesm2022/acorex-components-button.mjs +2 -2
  4. package/fesm2022/acorex-components-button.mjs.map +1 -1
  5. package/fesm2022/acorex-components-check-box.mjs +2 -2
  6. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  7. package/fesm2022/acorex-components-combo-box.mjs +2 -2
  8. package/fesm2022/acorex-components-combo-box.mjs.map +1 -1
  9. package/fesm2022/acorex-components-list.mjs +2 -2
  10. package/fesm2022/acorex-components-list.mjs.map +1 -1
  11. package/fesm2022/acorex-components-lookup.mjs +42 -6
  12. package/fesm2022/acorex-components-lookup.mjs.map +1 -1
  13. package/fesm2022/acorex-components-password-box.mjs +2 -2
  14. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  15. package/fesm2022/acorex-components-radio.mjs +2 -2
  16. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  17. package/fesm2022/acorex-components-range-slider.mjs +2 -2
  18. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  19. package/fesm2022/acorex-components-selection-list.mjs +2 -2
  20. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  21. package/fesm2022/acorex-components-switch.mjs +2 -2
  22. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  23. package/fesm2022/acorex-components-tabs.mjs +2 -2
  24. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  25. package/fesm2022/acorex-components-tag-box.mjs +2 -2
  26. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  27. package/lookup/README.md +11 -0
  28. package/package.json +3 -7
  29. package/types/acorex-components-lookup.d.ts +14 -1
  30. package/fesm2022/acorex-components-selection-list-2.mjs +0 -168
  31. package/fesm2022/acorex-components-selection-list-2.mjs.map +0 -1
  32. package/selection-list-2/README.md +0 -3
  33. package/types/acorex-components-selection-list-2.d.ts +0 -52
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-lookup.mjs","sources":["../../../../packages/components/lookup/src/lib/views/lookup-list-view-base.ts","../../../../packages/components/lookup/src/lib/views/lookup-drop-down-list.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-drop-down-tree.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-multi-column.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-multi-select-tree.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-multi-select.component.ts","../../../../packages/components/lookup/src/lib/lookup.component.ts","../../../../packages/components/lookup/src/lib/lookup.component.html","../../../../packages/components/lookup/src/lib/lookup.module.ts","../../../../packages/components/lookup/src/acorex-components-lookup.ts"],"sourcesContent":["import { AXDataSource, AXHtmlEvent, AXListDataSource } from '@acorex/cdk/common';\nimport {\n AXListNavigationDirective,\n AXListNavigationItemDirective,\n} from '@acorex/cdk/list-navigation';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport {\n Directive,\n NgZone,\n TemplateRef,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { AXLookupItem, AXLookupItemClickEvent } from '../lookup.types';\n\n/**\n * Shared `AXDataSource` + CDK virtual scroll plumbing for the list-based lookup views\n * (`ax-lookup-drop-down-list`, `ax-lookup-multi-select`).\n */\n@Directive()\nexport abstract class AXLookupListViewBase {\n /**\n * The datasource providing the items (paged, remote-capable).\n */\n dataSource = input.required<AXDataSource<AXLookupItem>>();\n\n /**\n * The item property used as the selection value.\n */\n valueField = input('id');\n\n /**\n * The item property used as the display text.\n */\n textField = input('text');\n\n /**\n * The item property marking an item as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Currently selected values (always an array, even for single selection).\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * The fixed row height in pixels used by the virtual scroll viewport.\n */\n itemHeight = input(40);\n\n /**\n * The maximum number of rows visible before the popup scrolls.\n */\n maxVisibleItems = input(8);\n\n /**\n * Custom template rendered for each item. Context: `$implicit` is the item.\n */\n itemTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered when the datasource has no items.\n */\n emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered for rows whose page is still loading.\n */\n loadingTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * When `true`, list rows use alternating background colors for easier scanning.\n */\n alternate = input(false);\n\n /**\n * Emitted when the user picks (or toggles) an item.\n */\n itemClick = output<AXLookupItemClickEvent>();\n\n /**\n * Emitted when keyboard navigation should leave the list (e.g. ArrowUp on the first\n * item, or a printable key that should return focus to the trigger search input).\n */\n navigateOut = output<'up' | 'typeahead'>();\n\n /** CDK virtual scroll adapter over the datasource. */\n protected listDataSource = signal<AXListDataSource<AXLookupItem> | null>(null);\n\n protected totalCount = signal(0);\n protected isLoading = signal(true);\n\n protected isEmpty = computed(() => this.totalCount() === 0 && !this.isLoading());\n\n /** Viewport height so the popup grows with the items up to `maxVisibleItems`. */\n protected viewportHeight = computed(() => {\n const count = this.totalCount() || (this.isLoading() ? 3 : 1);\n return Math.min(count, this.maxVisibleItems()) * this.itemHeight();\n });\n\n protected viewportRef = viewChild(CdkVirtualScrollViewport);\n protected listNavigation = viewChild(AXListNavigationDirective);\n protected navItems = viewChildren(AXListNavigationItemDirective);\n\n #ngZone = inject(NgZone);\n\n constructor() {\n // CDK measures the viewport size only once, when it initializes. Inside the popover the\n // panel is still animating/positioning at that moment (and the height also changes when\n // the loading placeholder is replaced by the real item count), so the measurement is stale\n // and CDK renders too few rows, leaving empty space. A ResizeObserver on the viewport\n // element re-measures on every actual size change, covering all of these cases.\n effect((onCleanup) => {\n const viewport = this.viewportRef();\n if (!viewport || typeof ResizeObserver === 'undefined') {\n return;\n }\n const observer = new ResizeObserver(() => {\n this.#ngZone.run(() => viewport.checkViewportSize());\n });\n observer.observe(viewport.elementRef.nativeElement);\n onCleanup(() => observer.disconnect());\n });\n\n effect((onCleanup) => {\n const source = this.dataSource();\n const list = new AXListDataSource<AXLookupItem>({ source });\n untracked(() => {\n this.totalCount.set(source.totalCount);\n this.isLoading.set(source.totalCount > 0 ? source.isLoading : true);\n this.listDataSource.set(list);\n });\n const loadingSub = source.onLoadingChanged.subscribe((value) => this.isLoading.set(value));\n const changedSub = source.onChanged.subscribe((e) => this.totalCount.set(e.totalCount));\n onCleanup(() => {\n loadingSub.unsubscribe();\n changedSub.unsubscribe();\n });\n });\n }\n\n /** Moves keyboard focus to the first rendered list option. */\n focusFirst() {\n this.listNavigation()?.focusOnIndex(0);\n }\n\n protected getValue(item: AXLookupItem): unknown {\n return item?.[this.valueField()];\n }\n\n protected getText(item: AXLookupItem): string {\n return String(item?.[this.textField()] ?? '');\n }\n\n protected isSelected(item: AXLookupItem): boolean {\n const value = this.getValue(item);\n return this.selectedValues().some((v) => v == value);\n }\n\n protected isDisabled(item: AXLookupItem): boolean {\n return Boolean(item?.[this.disabledField()]);\n }\n\n protected handleItemClick(item: AXLookupItem | null | undefined) {\n if (!item || this.isDisabled(item)) {\n return;\n }\n this.itemClick.emit({ item, value: this.getValue(item) });\n }\n\n protected handleItemKeypress(e: AXHtmlEvent<KeyboardEvent>, item: AXLookupItem | null | undefined) {\n if (e.nativeEvent.key === 'Enter' || e.nativeEvent.code === 'Space') {\n e.nativeEvent.stopPropagation();\n e.nativeEvent.preventDefault();\n this.handleItemClick(item);\n }\n }\n\n protected handleListKeypress(e: AXHtmlEvent<KeyboardEvent>) {\n const key = e.nativeEvent.key;\n const nav = this.listNavigation();\n const viewport = this.viewportRef();\n\n if (key === 'ArrowUp' && nav && nav.activeIndex() === 0) {\n const offset = viewport?.measureScrollOffset() ?? 0;\n if (offset > 0) {\n e.nativeEvent.preventDefault();\n viewport!.scrollToOffset(Math.max(0, offset - this.itemHeight()));\n queueMicrotask(() => nav.focusOnIndex(0));\n return;\n }\n e.nativeEvent.preventDefault();\n this.navigateOut.emit('up');\n return;\n }\n\n if (key === 'ArrowDown' && nav && viewport) {\n const items = this.navItems();\n if (items.length > 0 && nav.activeIndex() >= items.length - 1) {\n const maxOffset = Math.max(0, this.totalCount() * this.itemHeight() - viewport.getViewportSize());\n const nextOffset = Math.min(maxOffset, viewport.measureScrollOffset() + this.itemHeight());\n if (nextOffset > viewport.measureScrollOffset()) {\n e.nativeEvent.preventDefault();\n viewport.scrollToOffset(nextOffset);\n queueMicrotask(() => nav.focusOnIndex(this.navItems().length - 1));\n }\n return;\n }\n }\n\n if (\n key === 'ArrowUp' ||\n key === 'ArrowDown' ||\n key === 'Tab' ||\n key === 'Shift' ||\n key === 'Enter' ||\n key === 'Escape' ||\n key === ' '\n ) {\n return;\n }\n\n this.navigateOut.emit('typeahead');\n }\n\n protected activateNavItem(nav: AXListNavigationDirective, item: AXListNavigationItemDirective) {\n nav?.navigateTo(item);\n }\n\n protected trackByIndex = (index: number) => index;\n}\n","import { AXListNavigationModule } from '@acorex/cdk/list-navigation';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AXLookupListViewBase } from './lookup-list-view-base';\n\n/**\n * Internal mini component for the `drop-down-list` lookup mode:\n * a predefined, virtualized list of options for picking single values.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-drop-down-list',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n ScrollingModule,\n NgTemplateOutlet,\n AXTranslatorPipe,\n AsyncPipe,\n AXDecoratorModule,\n AXListNavigationModule,\n ],\n providers: [{ provide: AXLookupListViewBase, useExisting: AXLookupDropDownListComponent }],\n template: `\n @if (isEmpty()) {\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\" />\n } @else {\n <div class=\"ax-lookup-empty\">\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n </div>\n }\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ax-lookup-viewport\"\n role=\"listbox\"\n axListNavigation\n #nav=\"axListNavigation\"\n [itemSize]=\"itemHeight()\"\n [style.height.px]=\"viewportHeight()\"\n (onKeypress)=\"handleListKeypress($event)\"\n >\n <div\n *cdkVirtualFor=\"let item of listDataSource(); let i = index; trackBy: trackByIndex\"\n role=\"option\"\n class=\"ax-lookup-option-host\"\n axListNavigationItem\n #navItem=\"axListNavigationItem\"\n [style.height.px]=\"itemHeight()\"\n [class.ax-lookup-option]=\"!itemTemplate()\"\n [class.ax-state-alternate]=\"alternate() && i % 2 === 1\"\n [class.ax-state-selected]=\"item != null && isSelected(item)\"\n [class.ax-state-disabled]=\"item != null && isDisabled(item)\"\n [class.ax-state-active]=\"navItem.isActive()\"\n [attr.aria-selected]=\"item != null ? isSelected(item) : null\"\n (mouseenter)=\"activateNavItem(nav, navItem)\"\n (click)=\"handleItemClick(item)\"\n (onKeypress)=\"handleItemKeypress($event, item)\"\n >\n @if (item != null) {\n @if (itemTemplate()) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate()!\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n <span class=\"ax-lookup-option-text\">{{ getText(item) }}</span>\n @if (isSelected(item)) {\n <ax-icon class=\"ax-lookup-option-check ax-icon ax-icon-check\" aria-hidden=\"true\"></ax-icon>\n }\n }\n } @else {\n <ng-container [ngTemplateOutlet]=\"loadingRow\" />\n }\n </div>\n </cdk-virtual-scroll-viewport>\n }\n\n <ng-template #loadingRow>\n @if (loadingTemplate()) {\n <ng-container [ngTemplateOutlet]=\"loadingTemplate()!\" />\n } @else {\n <span class=\"ax-lookup-option-loading\">{{ '@acorex:common.status.loading' | translate | async }}</span>\n }\n </ng-template>\n `,\n})\nexport class AXLookupDropDownListComponent extends AXLookupListViewBase {}\n","import {\n AXTreeViewComponent,\n AXTreeViewDataSource,\n AXTreeViewItemTemplateContext,\n AXTreeViewSelectionChangeEvent,\n} from '@acorex/components/tree-view';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation, computed, input, output } from '@angular/core';\nimport { AXLookupItemClickEvent } from '../lookup.types';\n\n/**\n * Internal mini component for the `drop-down-tree` lookup mode:\n * a predefined list rendered in a tree-like structure for single item selection.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-drop-down-tree',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [AXTreeViewComponent],\n template: `\n <div class=\"ax-lookup-tree\">\n <ax-tree-view\n [datasource]=\"dataSource()\"\n selectMode=\"single\"\n selectionBehavior=\"all\"\n [controlledSelection]=\"true\"\n [selectedIds]=\"selectedIds()\"\n [idField]=\"valueField()\"\n [titleField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [nodeTemplate]=\"nodeTemplate()\"\n (onSelectionChange)=\"handleSelectionChange($event)\"\n />\n </div>\n `,\n})\nexport class AXLookupDropDownTreeComponent {\n /**\n * The tree datasource: an array of nodes or a lazy children callback.\n */\n dataSource = input.required<AXTreeViewDataSource>();\n\n /**\n * The node property used as the selection value (tree `idField`).\n */\n valueField = input('id');\n\n /**\n * The node property used as the display text (tree `titleField`).\n */\n textField = input('title');\n\n /**\n * The node property marking a node as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Currently selected values (at most one for single selection).\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * Custom template rendered for each tree node.\n */\n nodeTemplate = input<TemplateRef<AXTreeViewItemTemplateContext> | undefined>(undefined);\n\n /**\n * Emitted when the user selects a node.\n */\n itemClick = output<AXLookupItemClickEvent>();\n\n protected selectedIds = computed(() => this.selectedValues().map((v) => String(v)));\n\n protected handleSelectionChange(e: AXTreeViewSelectionChangeEvent) {\n if (e.source !== 'user') {\n return;\n }\n const node = e.selectedNodes[0];\n if (!node) {\n return;\n }\n this.itemClick.emit({ item: node, value: node[this.valueField()] });\n }\n}\n","import { AXDataSource } from '@acorex/cdk/common';\nimport {\n AXDataTableComponent,\n AXDataTableRowClick,\n AXDataTableTextColumnComponent,\n} from '@acorex/components/data-table';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { Subscription, auditTime, fromEvent } from 'rxjs';\nimport { AXLookupColumn, AXLookupItem, AXLookupItemClickEvent } from '../lookup.types';\n\n/**\n * Internal mini component for the `multi-column` lookup mode:\n * renders selectable rows in an `ax-data-table` grid and loads further\n * pages as the user scrolls (no pager UI).\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-multi-column',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, AXDataTableComponent, AXDataTableTextColumnComponent],\n host: {\n class: 'ax-lookup-multi-column',\n '[style.height.px]': 'tableHeight()',\n },\n template: `\n <ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"tableDataSource\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowTemplate]=\"itemTemplate() ? customRowTemplate : undefined\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n >\n @for (column of columns(); track trackColumnKey($index, column)) {\n <ax-text-column\n [dataField]=\"column.field\"\n [caption]=\"column.title\"\n [width]=\"resolveColumnWidth(column)\"\n [allowSorting]=\"false\"\n [allowResizing]=\"false\"\n />\n }\n </ax-data-table>\n\n <ng-template #customRowTemplate let-ctx>\n <tr\n [class.ax-state-selected]=\"ctx.data != null && isSelected(ctx.data)\"\n [class.ax-state-disabled]=\"ctx.data != null && isDisabled(ctx.data)\"\n [style.height.px]=\"itemHeight()\"\n [style.max-height.px]=\"itemHeight()\"\n (click)=\"handleItemClick(ctx.data)\"\n >\n <td [attr.colspan]=\"columns().length || 1\">\n @if (ctx.data != null && itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: ctx.data }\"\n />\n }\n </td>\n </tr>\n </ng-template>\n `,\n})\nexport class AXLookupMultiColumnComponent {\n /**\n * The datasource providing the grid rows (paged, remote-capable).\n * Pages are fetched on demand as the user scrolls the table body.\n */\n dataSource = input.required<AXDataSource<AXLookupItem>>();\n\n /**\n * The item property used as the selection value.\n */\n valueField = input('id');\n\n /**\n * The item property used as the display text.\n */\n textField = input('text');\n\n /**\n * The item property marking an item as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Currently selected values (always an array, even for single selection).\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * The fixed row height in pixels passed to the data table.\n */\n itemHeight = input(40);\n\n /**\n * The maximum number of body rows visible before the table scrolls.\n */\n maxVisibleItems = input(8);\n\n /**\n * Column definitions rendered as `ax-text-column` instances.\n */\n columns = input<AXLookupColumn[]>([]);\n\n /**\n * Optional custom row content. Context: `$implicit` is the row item.\n * When set, replaces the default multi-column cell layout.\n */\n itemTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered when the datasource has no items.\n */\n emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered while the table is loading.\n */\n loadingTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * When `true`, table rows use alternating background colors for easier scanning.\n */\n alternate = input(false);\n\n /**\n * Emitted when the user picks a row.\n */\n itemClick = output<AXLookupItemClickEvent>();\n\n protected tableRef = viewChild(AXDataTableComponent);\n\n /** Accumulated rows fed to the table (grows as pages are scrolled in). */\n #loadedItems: AXLookupItem[] = [];\n\n /** Total matching rows from the source (used to size the popup). */\n readonly #totalCount = signal(0);\n\n /**\n * Local table source: one page of whatever has been scrolled in so far.\n * Kept as a stable instance so the table host is not recreated on each page load.\n * `pageSize` grows with `#loadedItems` — never seed with a huge empty array (data-table\n * initializes `displayedRows` as `new Array(pageSize)`, which caused NG0955-level jank).\n */\n protected readonly tableDataSource = new AXDataSource<AXLookupItem>({\n pageSize: 1,\n key: 'id',\n load: async () => ({\n items: this.#loadedItems,\n total: this.#loadedItems.length,\n }),\n });\n\n /**\n * Header (~40px) + body rows. Grows with results up to `maxVisibleItems`,\n * then the table body scrolls for the rest.\n */\n protected tableHeight = computed(() => {\n const header = 40;\n const total = this.#totalCount();\n const rows = total > 0 ? total : Math.min(3, this.maxVisibleItems());\n return header + Math.min(rows, this.maxVisibleItems()) * this.itemHeight();\n });\n\n protected loadingConfig = computed(() => ({\n enabled: true,\n animation: true,\n loadingTemplate: this.loadingTemplate(),\n }));\n\n readonly #host = inject(ElementRef<HTMLElement>);\n\n constructor() {\n effect((onCleanup) => {\n const source = this.dataSource();\n this.tableDataSource.config.key = source.config.key || this.valueField();\n\n untracked(() => {\n this.#loadedItems = [];\n this.#totalCount.set(0);\n this.#syncTablePageSize();\n this.tableDataSource.refresh({ reset: true });\n });\n\n const changedSub = source.onChanged.subscribe((event) => {\n this.#loadedItems = event.cachedItems.filter((item): item is AXLookupItem => item != null);\n this.#totalCount.set(event.totalCount);\n this.#syncTablePageSize();\n this.tableDataSource.refresh({ reset: true });\n });\n\n // Kick the first page; later pages come from scroll.\n queueMicrotask(() => source.setPage(0));\n\n onCleanup(() => changedSub.unsubscribe());\n });\n\n effect((onCleanup) => {\n // Rebind when the table instance appears / source changes.\n this.tableRef();\n this.dataSource();\n\n let scrollSub: Subscription | undefined;\n const timer = setTimeout(() => {\n const wrapper =\n this.tableRef()?.getHostElement()?.querySelector('.ax-data-table-wrapper') ??\n this.#host.nativeElement.querySelector('.ax-data-table-wrapper');\n if (!wrapper) {\n return;\n }\n scrollSub = fromEvent(wrapper, 'scroll')\n .pipe(auditTime(80))\n .subscribe(() => this.#tryLoadMore(wrapper as HTMLElement));\n }, 0);\n\n onCleanup(() => {\n clearTimeout(timer);\n scrollSub?.unsubscribe();\n });\n });\n }\n\n /** Stable unique key for `@for` — avoids NG0955 when `field` is missing or duplicated. */\n protected trackColumnKey(index: number, column: AXLookupColumn): string {\n return `${column?.field ?? ''}::${index}`;\n }\n\n protected resolveColumnWidth(column: AXLookupColumn): string | number | 'auto' {\n const width = column.width?.trim();\n if (!width || width.includes('fr')) {\n return 'auto';\n }\n return width;\n }\n\n #syncTablePageSize() {\n this.tableDataSource.config.pageSize = Math.max(this.#loadedItems.length, 1);\n }\n\n protected resolveRowCssClass = (row: unknown): string => {\n const item = row as AXLookupItem | null | undefined;\n if (!item) {\n return '';\n }\n const classes: string[] = [];\n if (this.isSelected(item)) {\n classes.push('ax-state-selected');\n }\n if (this.isDisabled(item)) {\n classes.push('ax-state-disabled');\n }\n return classes.join(' ');\n };\n\n protected handleRowClick(event: AXDataTableRowClick) {\n this.handleItemClick(event.data as AXLookupItem | null | undefined);\n }\n\n protected handleItemClick(item: AXLookupItem | null | undefined) {\n if (!item || this.isDisabled(item)) {\n return;\n }\n this.itemClick.emit({ item, value: this.getValue(item) });\n }\n\n protected isSelected(item: AXLookupItem): boolean {\n const value = this.getValue(item);\n return this.selectedValues().some((v) => v == value);\n }\n\n protected isDisabled(item: AXLookupItem): boolean {\n return Boolean(item?.[this.disabledField()]);\n }\n\n #tryLoadMore(wrapper: HTMLElement) {\n const nearBottom = wrapper.scrollTop + wrapper.clientHeight >= wrapper.scrollHeight - 48;\n if (!nearBottom) {\n return;\n }\n\n const source = this.dataSource();\n if (source.isLoading || source.totalCount === 0) {\n return;\n }\n\n const loadedCount = source.cachedItems.filter((item) => item != null).length;\n if (loadedCount >= source.totalCount) {\n return;\n }\n\n const nextPage = Math.floor(loadedCount / source.pageSize);\n source.setPage(nextPage);\n }\n\n private getValue(item: AXLookupItem): unknown {\n return item?.[this.valueField()];\n }\n}\n","import {\n AXTreeViewComponent,\n AXTreeViewDataSource,\n AXTreeViewItemTemplateContext,\n AXTreeViewNode,\n AXTreeViewSelectionBehavior,\n AXTreeViewSelectionChangeEvent,\n} from '@acorex/components/tree-view';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation, computed, input, output } from '@angular/core';\n\n/**\n * Selection payload of the multi-select tree view.\n */\nexport interface AXLookupTreeSelectionEvent {\n ids: string[];\n nodes: AXTreeViewNode[];\n}\n\n/**\n * Internal mini component for the `multi-select-tree` lookup mode:\n * a predefined list rendered in a tree-like structure for multiple item selection.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-multi-select-tree',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [AXTreeViewComponent],\n template: `\n <div class=\"ax-lookup-tree\">\n <ax-tree-view\n [datasource]=\"dataSource()\"\n selectMode=\"multiple\"\n [selectionBehavior]=\"selectionBehavior()\"\n [controlledSelection]=\"true\"\n [selectedIds]=\"selectedIds()\"\n [idField]=\"valueField()\"\n [titleField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [nodeTemplate]=\"nodeTemplate()\"\n (onSelectionChange)=\"handleSelectionChange($event)\"\n />\n </div>\n `,\n})\nexport class AXLookupMultiSelectTreeComponent {\n /**\n * The tree datasource: an array of nodes or a lazy children callback.\n */\n dataSource = input.required<AXTreeViewDataSource>();\n\n /**\n * The node property used as the selection value (tree `idField`).\n */\n valueField = input('id');\n\n /**\n * The node property used as the display text (tree `titleField`).\n */\n textField = input('title');\n\n /**\n * The node property marking a node as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Currently selected values.\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * How selecting parent/child nodes affects each other. Passed through to the tree-view.\n */\n selectionBehavior = input<AXTreeViewSelectionBehavior>('all');\n\n /**\n * Custom template rendered for each tree node.\n */\n nodeTemplate = input<TemplateRef<AXTreeViewItemTemplateContext> | undefined>(undefined);\n\n /**\n * Emitted when the user changes the tree selection.\n */\n selectionChange = output<AXLookupTreeSelectionEvent>();\n\n protected selectedIds = computed(() => this.selectedValues().map((v) => String(v)));\n\n protected handleSelectionChange(e: AXTreeViewSelectionChangeEvent) {\n if (e.source !== 'user') {\n return;\n }\n this.selectionChange.emit({ ids: e.selectedIds, nodes: e.selectedNodes });\n }\n}\n","import { AXListNavigationModule } from '@acorex/cdk/list-navigation';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AXLookupListViewBase } from './lookup-list-view-base';\n\n/**\n * Internal mini component for the `multi-select` lookup mode:\n * a predefined, virtualized list of options with checkboxes for multiple item selection.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-multi-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [ScrollingModule, NgTemplateOutlet, AXTranslatorPipe, AsyncPipe, AXListNavigationModule],\n providers: [{ provide: AXLookupListViewBase, useExisting: AXLookupMultiSelectComponent }],\n template: `\n @if (isEmpty()) {\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\" />\n } @else {\n <div class=\"ax-lookup-empty\">\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n </div>\n }\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ax-lookup-viewport\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n axListNavigation\n #nav=\"axListNavigation\"\n [itemSize]=\"itemHeight()\"\n [style.height.px]=\"viewportHeight()\"\n (onKeypress)=\"handleListKeypress($event)\"\n >\n <div\n *cdkVirtualFor=\"let item of listDataSource(); let i = index; trackBy: trackByIndex\"\n role=\"option\"\n class=\"ax-lookup-option-host\"\n axListNavigationItem\n #navItem=\"axListNavigationItem\"\n [style.height.px]=\"itemHeight()\"\n [class.ax-lookup-option]=\"!itemTemplate()\"\n [class.ax-lookup-option-host--check]=\"!!itemTemplate()\"\n [class.ax-state-alternate]=\"alternate() && i % 2 === 1\"\n [class.ax-state-selected]=\"item != null && isSelected(item)\"\n [class.ax-state-disabled]=\"item != null && isDisabled(item)\"\n [class.ax-state-active]=\"navItem.isActive()\"\n [attr.aria-selected]=\"item != null ? isSelected(item) : null\"\n (mouseenter)=\"activateNavItem(nav, navItem)\"\n (click)=\"handleItemClick(item)\"\n (onKeypress)=\"handleItemKeypress($event, item)\"\n >\n @if (item != null) {\n <input\n type=\"checkbox\"\n class=\"ax-lookup-checkbox\"\n tabindex=\"-1\"\n [checked]=\"isSelected(item)\"\n [disabled]=\"isDisabled(item)\"\n />\n @if (itemTemplate()) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate()!\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n <span class=\"ax-lookup-option-text\">{{ getText(item) }}</span>\n }\n } @else {\n <ng-container [ngTemplateOutlet]=\"loadingRow\" />\n }\n </div>\n </cdk-virtual-scroll-viewport>\n }\n\n <ng-template #loadingRow>\n @if (loadingTemplate()) {\n <ng-container [ngTemplateOutlet]=\"loadingTemplate()!\" />\n } @else {\n <span class=\"ax-lookup-option-loading\">{{ '@acorex:common.status.loading' | translate | async }}</span>\n }\n </ng-template>\n `,\n})\nexport class AXLookupMultiSelectComponent extends AXLookupListViewBase {}\n","import {\n AXClearableComponent,\n AXClosableComponent,\n AXComponent,\n AXDataSource,\n AXEvent,\n AXFocusEvent,\n AXItemClickEvent,\n AXItemSelectedEvent,\n AXStyleLookType,\n AXValueChangedEvent,\n NXComponent,\n convertArrayToDataSource,\n} from '@acorex/cdk/common';\nimport { AXChipsComponent } from '@acorex/components/chips';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXTreeViewDataSource, AXTreeViewSelectionBehavior } from '@acorex/components/tree-view';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\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 {\n AXLookupColumn,\n AXLookupItem,\n AXLookupItemClickEvent,\n AXLookupMode,\n AXLookupSelectionChangedEvent,\n} from './lookup.types';\nimport { AXLookupDropDownListComponent } from './views/lookup-drop-down-list.component';\nimport { AXLookupDropDownTreeComponent } from './views/lookup-drop-down-tree.component';\nimport { AXLookupListViewBase } from './views/lookup-list-view-base';\nimport { AXLookupMultiColumnComponent } from './views/lookup-multi-column.component';\nimport {\n AXLookupMultiSelectTreeComponent,\n AXLookupTreeSelectionEvent,\n} from './views/lookup-multi-select-tree.component';\nimport { AXLookupMultiSelectComponent } from './views/lookup-multi-select.component';\n\n/**\n * An advanced drop-down (lookup) editor with five modes, `AXDataSource` support, and virtual scrolling.\n *\n * Modes (each rendered by its own internal mini component):\n * - `drop-down-list` — a predefined list of options for picking single values.\n * - `multi-select` — a predefined list of options for multiple item selection (chips in the trigger).\n * - `drop-down-tree` — a predefined list rendered in a tree-like structure for single item selection.\n * - `multi-select-tree` — a tree-like structure for multiple item selection.\n * - `multi-column` — an `ax-data-table` grid; when searchable, the trigger input filters as you type.\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 * 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-lookup',\n templateUrl: './lookup.component.html',\n styleUrls: ['./lookup.component.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n AsyncPipe,\n AXTranslatorPipe,\n AXChipsComponent,\n AXDecoratorModule,\n AXPopoverComponent,\n AXLookupDropDownListComponent,\n AXLookupMultiSelectComponent,\n AXLookupDropDownTreeComponent,\n AXLookupMultiSelectTreeComponent,\n AXLookupMultiColumnComponent,\n ],\n providers: [\n { provide: AXComponent, useExisting: AXLookupComponent },\n { provide: AXClearableComponent, useExisting: AXLookupComponent },\n { provide: AXClosableComponent, useExisting: AXLookupComponent },\n ],\n})\nexport class AXLookupComponent\n extends NXComponent\n implements FormValueControl<unknown | unknown[] | null>\n{\n readonly #platform = inject(AXPlatform);\n readonly #destroyRef = inject(DestroyRef);\n\n /**\n * The lookup rendering mode. Selects which mini component renders in the popup.\n */\n mode = input<AXLookupMode>('drop-down-list');\n\n /**\n * The items source for list-based modes (`drop-down-list`, `multi-select`, `multi-column`).\n * Accepts an `AXDataSource` (remote paging, `byKey`, server-side filter) or a plain array.\n */\n dataSource = input<AXDataSource<AXLookupItem> | AXLookupItem[] | undefined>(undefined);\n\n /**\n * The nodes source for tree modes (`drop-down-tree`, `multi-select-tree`):\n * an array of nodes or a lazy children callback.\n */\n treeDataSource = input<AXTreeViewDataSource | undefined>(undefined);\n\n /**\n * The item property used as the selection value. Maps to the tree `idField` in tree modes.\n */\n valueField = input('id');\n\n /**\n * The item property used as the display text. Maps to the tree `titleField` in tree modes\n * (set it to `title` when your nodes use the default tree shape).\n */\n textField = input('text');\n\n /**\n * The item property marking an item as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Column definitions for the `multi-column` mode (rendered as `ax-text-column` in `ax-data-table`).\n */\n columns = input<AXLookupColumn[]>([]);\n\n /**\n * Whether the trigger accepts typing and filters the datasource (`true`),\n * or is select-only with no writable input (`false`).\n * Applies to `drop-down-list`, `multi-select`, and `multi-column`. Tree modes ignore this.\n */\n searchable = input(true);\n\n /**\n * When `true` (default), the popup list uses the alternate actionsheet presentation on small\n * screens (`SM`). When `false`, 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 */\n caption = input('');\n\n /**\n * When `true`, list rows use alternating background colors for easier scanning\n * (`drop-down-list`, `multi-select`, and `multi-column` modes).\n */\n alternate = input(false);\n\n /**\n * Placeholder for the trigger search input when items are already selected\n * (mainly useful in `multi-select`). Falls back to `placeholder` when the selection is empty.\n */\n searchPlaceholder = input('Search...');\n\n /**\n * The placeholder text shown when no value is selected.\n */\n placeholder = input('');\n\n /**\n * Whether the lookup is disabled.\n */\n readonly disabled = input(false);\n\n /**\n * Whether the lookup 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 fixed row height in pixels used by the virtual scroll viewport (list-based modes).\n */\n itemHeight = input(40);\n\n /**\n * The maximum number of rows visible before the popup scrolls (list-based modes).\n */\n maxVisibleItems = input(8);\n\n /**\n * How selecting parent/child nodes affects each other in `multi-select-tree` mode.\n */\n treeSelectionBehavior = input<AXTreeViewSelectionBehavior>('all');\n\n /**\n * Custom template rendered for each item/node. Context: `$implicit` is the item.\n */\n itemTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template for the selected item display (trigger text / chips). Context: `$implicit` is the item.\n */\n selectedTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered when the datasource has no items.\n */\n emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered for rows whose page is still loading.\n */\n loadingTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * The selected value(s): a scalar in single modes, an array in\n * `multi-select` / `multi-select-tree`. Supports `[(value)]`, `[(ngModel)]`, and signal forms\n * via {@link FormValueControl}.\n */\n readonly value = model<unknown | unknown[] | null>(null);\n\n /**\n * Emitted when the selected value changes.\n */\n onValueChanged = output<AXValueChangedEvent<unknown | unknown[] | null>>();\n\n /**\n * Emitted when the selection changes, carrying the resolved selected items.\n */\n onSelectionChanged = output<AXLookupSelectionChangedEvent>();\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/tree item is clicked.\n */\n onItemClick = output<AXItemClickEvent<AXLookupItem>>();\n\n /**\n * Emitted when an item is selected (click or keyboard).\n */\n onItemSelected = output<AXItemSelectedEvent<AXLookupItem>>();\n\n /**\n * Emitted when the popup opens.\n */\n onOpened = output<AXEvent>();\n\n /**\n * Emitted when the popup 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 current mode selects multiple values. */\n protected isMultiple = computed(() => this.mode() === 'multi-select' || this.mode() === 'multi-select-tree');\n\n /** Whether the current mode renders a tree. */\n protected isTreeMode = computed(() => this.mode() === 'drop-down-tree' || this.mode() === 'multi-select-tree');\n\n /** Whether the trigger input is writable and filters as you type. */\n protected isEditableTrigger = computed(() => {\n if (!this.searchable() || this.readonly()) {\n return false;\n }\n const mode = this.mode();\n return mode === 'drop-down-list' || mode === 'multi-select' || mode === 'multi-column';\n });\n\n /** The datasource for list-based modes; plain arrays are converted. */\n protected resolvedDataSource = computed<AXDataSource<AXLookupItem>>(() => {\n const source = this.dataSource();\n if (!source) {\n return convertArrayToDataSource<AXLookupItem>([], { key: this.valueField(), pageSize: 20 });\n }\n return Array.isArray(source)\n ? convertArrayToDataSource<AXLookupItem>(source, { key: this.valueField(), pageSize: 20 })\n : source;\n });\n\n /** The current selection normalized to an array. */\n protected selectedValues = computed<unknown[]>(() => {\n const value = this.value();\n if (value == null) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n });\n\n /** The resolved selected items (via cache, datasource `find`/`byKey`, or tree node lookup). */\n protected selectedItems = signal<AXLookupItem[]>([]);\n\n /** Display text shown in the trigger for single modes. */\n protected displayText = computed(() => {\n const item = this.selectedItems()[0];\n return item ? this.getItemText(item) : '';\n });\n\n /**\n * Text typed in the editable trigger input.\n * Multi-select starts empty; single modes sync from the selected display text.\n */\n protected searchText = linkedSignal(() => (this.mode() === 'multi-select' || this.mode() === 'multi-select-tree' ? '' : this.displayText()));\n\n /**\n * Whether the trigger should render `selectedTemplate` instead of the plain input text.\n * Searchable mode shows the template while the popup is closed and the input still matches\n * the selected display text (same pattern as combo-box).\n */\n protected showSelectedTemplate = computed(() => {\n if (this.isMultiple() || !this.selectedTemplate() || this.selectedItems().length === 0) {\n return false;\n }\n if (!this.isEditableTrigger()) {\n return true;\n }\n return !this.expanded() && this.searchText() === this.displayText();\n });\n\n protected popoverRef = viewChild(AXPopoverComponent);\n protected triggerSearchInput = viewChild<ElementRef<HTMLInputElement>>('triggerSearchInput');\n protected listView = viewChild(AXLookupListViewBase);\n\n #itemsCache = new Map<unknown, AXLookupItem>();\n #isUserInteraction = false;\n #lastValue: unknown | unknown[] | null | undefined = undefined;\n #lastExpanded: boolean | undefined = undefined;\n #resolveRevision = 0;\n #selectionInitialized = false;\n #filterApplied = false;\n #searchDebounce?: ReturnType<typeof setTimeout>;\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 // Resolve selected items whenever the value (or the sources) change.\n effect(() => {\n const values = this.selectedValues();\n this.mode();\n this.dataSource();\n this.treeDataSource();\n untracked(() => void this.#resolveSelectedItems(values));\n });\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\n #syncActionsheetStyle() {\n this.isActionsheetStyle.set(this.adaptivityEnabled() && this.#platform.is('SM'));\n }\n\n /** Returns the display text of an item using the `textField` mapping. */\n protected getItemText(item: AXLookupItem): string {\n return String(item?.[this.textField()] ?? '');\n }\n\n /** Stable unique key for selected chips — avoids NG0955 and remounts on reorder/remove. */\n protected trackSelectedKey(item: AXLookupItem): unknown {\n const key = item?.[this.valueField()];\n return key != null ? key : item;\n }\n\n /**\n * Opens (editable trigger) or toggles the popup on trigger click.\n */\n protected onTriggerClick() {\n if (this.disabled() || this.readonly()) {\n return;\n }\n if (this.isEditableTrigger()) {\n this.expanded.set(true);\n queueMicrotask(() => this.triggerSearchInput()?.nativeElement.focus());\n return;\n }\n this.expanded.update((open) => !open);\n if (!this.expanded()) {\n return;\n }\n queueMicrotask(() => this.focusListFirst());\n }\n\n /**\n * Focuses the lookup trigger input.\n */\n focus(options?: FocusOptions): void {\n if (this.disabled()) {\n return;\n }\n this.triggerSearchInput()?.nativeElement.focus(options);\n }\n\n /**\n * Handles keyboard interaction on the trigger input.\n */\n protected onTriggerKeydown(e: KeyboardEvent) {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n if (e.key === 'Escape') {\n this.close();\n return;\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n this.expanded.set(true);\n queueMicrotask(() => this.focusListFirst());\n return;\n }\n\n if (!this.isEditableTrigger() && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n this.expanded.update((open) => !open);\n if (this.expanded()) {\n queueMicrotask(() => this.focusListFirst());\n }\n }\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 * Returns focus to the trigger input when list navigation requests it.\n */\n protected onListNavigateOut(_reason: 'up' | 'typeahead') {\n this.triggerSearchInput()?.nativeElement.focus();\n }\n\n protected focusListFirst() {\n const tryFocus = (attempt = 0) => {\n const list = this.listView();\n if (list) {\n list.focusFirst();\n return;\n }\n if (attempt < 5) {\n setTimeout(() => tryFocus(attempt + 1), 16);\n }\n };\n tryFocus();\n }\n\n /**\n * Keeps the expanded state in sync when the popover closes (e.g. click outside),\n * and clears any applied search filter.\n */\n protected onPopoverClosed() {\n this.expanded.set(false);\n this.searchText.set(this.isMultiple() ? '' : this.displayText());\n if (this.#filterApplied) {\n this.#filterApplied = false;\n const source = this.resolvedDataSource();\n source.clearFilter();\n source.refresh();\n }\n }\n\n /**\n * Closes the popup.\n */\n close() {\n this.expanded.set(false);\n }\n\n /**\n * Closes the popup (alias for {@link close}, required by `AXClosableComponent`).\n */\n closeAll() {\n this.close();\n }\n\n /**\n * Opens the popup.\n */\n open() {\n if (this.disabled() || this.readonly()) {\n return;\n }\n this.expanded.set(true);\n }\n\n /**\n * Handles typing in the editable trigger input.\n */\n protected onTriggerSearchInput(text: string) {\n if (!this.isEditableTrigger()) {\n return;\n }\n this.searchText.set(text);\n this.expanded.set(true);\n this.#applyFilterDebounced(text);\n }\n\n /** Placeholder for the editable trigger search input. */\n protected triggerSearchPlaceholder = computed(() => {\n if (this.mode() === 'multi-select' && this.selectedItems().length > 0) {\n return this.searchPlaceholder();\n }\n return this.placeholder();\n });\n\n /**\n * Commits a single pick (drop-down-list, drop-down-tree, multi-column) and closes the popup.\n */\n protected handleSinglePick(e: AXLookupItemClickEvent) {\n this.#emitItemClick(e.item);\n this.#emitItemSelected(e.item);\n this.#itemsCache.set(e.value, e.item);\n if (!this.#valuesEqual(e.value, this.value())) {\n this.#isUserInteraction = true;\n this.value.set(e.value);\n }\n this.close();\n }\n\n /**\n * Toggles an item in the multi-select list; the popup stays open.\n * Clears the trigger search so the full list returns (select-box-like).\n */\n protected handleMultiToggle(e: AXLookupItemClickEvent) {\n this.#emitItemClick(e.item);\n this.#itemsCache.set(e.value, e.item);\n const current = this.selectedValues();\n const exists = current.some((v) => v == e.value);\n if (!exists) {\n this.#emitItemSelected(e.item);\n }\n const next = exists ? current.filter((v) => !(v == e.value)) : [...current, e.value];\n this.#isUserInteraction = true;\n this.value.set(next);\n if (this.isEditableTrigger() && this.searchText()) {\n this.searchText.set('');\n this.#applyFilterDebounced('');\n }\n }\n\n /**\n * Applies the multi-select-tree selection to the value; the popup stays open.\n */\n protected handleTreeSelectionChange(e: AXLookupTreeSelectionEvent) {\n const prev = new Set(this.selectedValues().map((v) => String(v)));\n const newlySelected = e.nodes.filter((node) => !prev.has(String(node[this.valueField()])));\n if (newlySelected.length > 0) {\n this.#emitItemSelected(newlySelected[0]);\n }\n for (const node of e.nodes) {\n this.#itemsCache.set(String(node[this.valueField()]), node);\n }\n this.#isUserInteraction = true;\n this.value.set([...e.ids]);\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 }\n\n #emitItemClick(item: AXLookupItem) {\n this.onItemClick.emit({\n component: this,\n item,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n });\n }\n\n #emitItemSelected(item: AXLookupItem) {\n this.onItemSelected.emit({\n component: this,\n item,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n });\n }\n\n /**\n * Removes a single chip from the multi selection.\n */\n protected removeChip(event: Event, item: AXLookupItem) {\n event.stopPropagation();\n if (this.disabled() || this.readonly()) {\n return;\n }\n const value = item?.[this.valueField()];\n this.#isUserInteraction = true;\n this.value.set(this.selectedValues().filter((v) => !(v == value)));\n }\n\n /**\n * Clears the whole selection.\n * Sets `null` in single modes and `[]` in multi modes. 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 = this.isMultiple() ? [] : null;\n const current = this.value();\n if (this.isMultiple()) {\n if (Array.isArray(current) && current.length === 0) {\n return;\n }\n } else if (current == null) {\n return;\n }\n this.#isUserInteraction = isUserInteraction;\n this.value.set(next);\n if (this.isEditableTrigger() && this.searchText()) {\n this.searchText.set('');\n this.#applyFilterDebounced('');\n }\n }\n\n #applyFilterDebounced(text: string) {\n if (this.#searchDebounce) {\n clearTimeout(this.#searchDebounce);\n }\n this.#searchDebounce = setTimeout(() => {\n const source = this.resolvedDataSource();\n const query = text?.trim() ?? '';\n if (query) {\n source.filter({ field: this.textField(), value: query, operator: { type: 'contains' } });\n this.#filterApplied = true;\n } else {\n source.clearFilter();\n }\n source.refresh();\n }, 300);\n }\n\n async #resolveSelectedItems(values: unknown[]) {\n const revision = ++this.#resolveRevision;\n const resolved = await Promise.all(values.map((value) => Promise.resolve(this.#resolveItem(value))));\n if (revision !== this.#resolveRevision) {\n return;\n }\n const items = resolved.filter((item): item is AXLookupItem => item != null);\n this.selectedItems.set(items);\n if (this.#selectionInitialized) {\n this.onSelectionChanged.emit({\n component: this,\n htmlElement: this.nativeElement,\n isUserInteraction: this.#isUserInteraction,\n items,\n value: this.value(),\n });\n }\n this.#selectionInitialized = true;\n }\n\n #resolveItem(value: unknown): AXLookupItem | Promise<AXLookupItem | null> | null {\n const cached = this.#itemsCache.get(value) ?? this.#itemsCache.get(String(value));\n if (cached) {\n return cached;\n }\n\n if (this.isTreeMode()) {\n const nodes = this.treeDataSource();\n if (Array.isArray(nodes)) {\n const found = this.#findTreeNode(nodes, value);\n if (found) {\n this.#itemsCache.set(value, found);\n return found;\n }\n }\n return this.#fallbackItem(value);\n }\n\n const source = this.resolvedDataSource();\n const result = source.find(value);\n if (result == null) {\n return this.#fallbackItem(value);\n }\n if (result instanceof Promise) {\n return result.then((item) => {\n if (item) {\n this.#itemsCache.set(value, item);\n return item;\n }\n return this.#fallbackItem(value);\n });\n }\n this.#itemsCache.set(value, result);\n return result;\n }\n\n #fallbackItem(value: unknown): AXLookupItem {\n return { [this.valueField()]: value, [this.textField()]: String(value) };\n }\n\n #findTreeNode(nodes: AXLookupItem[], value: unknown): AXLookupItem | null {\n for (const node of nodes) {\n if (String(node[this.valueField()]) === String(value)) {\n return node;\n }\n const children = node['children'];\n if (Array.isArray(children)) {\n const found = this.#findTreeNode(children as AXLookupItem[], value);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n #valuesEqual(a: unknown, b: unknown): 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((item, index) => item == b[index]);\n }\n return false;\n }\n\n /** Emits onValueChanged when the value actually changes (skips the initial value). */\n #emitValueChanged(value: unknown | unknown[] | null) {\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 /** 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","<div\n #origin\n class=\"ax-editor-container ax-{{ look() }} ax-default\"\n [class.ax-lookup-trigger]=\"!isEditableTrigger()\"\n [class.ax-lookup-trigger-multiple]=\"isMultiple()\"\n [class.ax-state-disabled]=\"disabled()\"\n [class.ax-state-readonly]=\"readonly()\"\n (click)=\"onTriggerClick()\"\n>\n <ng-content select=\"ax-prefix\"></ng-content>\n\n @if (isMultiple()) {\n <div class=\"ax-lookup-chips\">\n @for (item of selectedItems(); track trackSelectedKey(item)) {\n <ax-chips class=\"ax-sm\" color=\"primary\" look=\"twotone\" [text]=\"selectedTemplate() ? '' : getItemText(item)\">\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 <input\n #triggerSearchInput\n type=\"text\"\n class=\"ax-input ax-lookup-trigger-search\"\n [class.ax-lookup-select-input]=\"!isEditableTrigger()\"\n [placeholder]=\"triggerSearchPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !isEditableTrigger()\"\n [attr.inputmode]=\"isEditableTrigger() ? null : 'none'\"\n [value]=\"searchText()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n (keydown)=\"onTriggerKeydown($event)\"\n (beforeinput)=\"onBeforeInput($event)\"\n (focus)=\"emitOnFocus($event)\"\n (blur)=\"emitOnBlur($event)\"\n />\n </div>\n } @else {\n <div class=\"ax-lookup-value\">\n @if (showSelectedTemplate()) {\n <div class=\"ax-lookup-selected-content\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: selectedItems()[0] }\"\n />\n </div>\n }\n <input\n #triggerSearchInput\n type=\"text\"\n class=\"ax-input\"\n [class.ax-lookup-select-input]=\"!isEditableTrigger()\"\n [class.ax-lookup-input-overlay]=\"showSelectedTemplate()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !isEditableTrigger()\"\n [attr.inputmode]=\"isEditableTrigger() ? null : 'none'\"\n [value]=\"searchText()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n (keydown)=\"onTriggerKeydown($event)\"\n (beforeinput)=\"onBeforeInput($event)\"\n (focus)=\"emitOnFocus($event)\"\n (blur)=\"emitOnBlur($event)\"\n />\n </div>\n }\n\n @if (selectedValues().length > 0 && !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 >\n <span\n class=\"ax-icon\"\n [class.ax-icon-chevron-down]=\"!expanded()\"\n [class.ax-icon-chevron-up]=\"expanded()\"\n ></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]=\"'clickOut'\"\n [placement]=\"'bottom-start'\"\n [width]=\"isActionsheetStyle() ? '100%' : origin.offsetWidth + 'px'\"\n [adaptivityEnabled]=\"isActionsheetStyle()\"\n [disabled]=\"disabled() || readonly()\"\n (onClosed)=\"onPopoverClosed()\"\n>\n <div class=\"ax-lookup-popup\" [class.ax-is-actionsheet]=\"isActionsheetStyle()\" [class.ax-is-alternate]=\"alternate()\" (keydown.escape)=\"close()\">\n @if (isActionsheetStyle()) {\n <ax-header class=\"ax-solid\">\n <ax-title>{{ caption() || placeholder() || ('@acorex:selectbox.popover.title' | translate | async) }}</ax-title>\n <ax-close-button [icon]=\"isMultiple() ? 'ax-icon ax-icon-check' : 'ax-icon ax-icon-close'\"></ax-close-button>\n </ax-header>\n }\n <ng-content select=\"ax-header\"></ng-content>\n @if (expanded()) {\n @switch (mode()) {\n @case ('drop-down-list') {\n <ax-lookup-drop-down-list\n [dataSource]=\"resolvedDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [itemHeight]=\"itemHeight()\"\n [maxVisibleItems]=\"maxVisibleItems()\"\n [itemTemplate]=\"itemTemplate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loadingTemplate]=\"loadingTemplate()\"\n [alternate]=\"alternate()\"\n (itemClick)=\"handleSinglePick($event)\"\n (navigateOut)=\"onListNavigateOut($event)\"\n />\n }\n @case ('multi-select') {\n <ax-lookup-multi-select\n [dataSource]=\"resolvedDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [itemHeight]=\"itemHeight()\"\n [maxVisibleItems]=\"maxVisibleItems()\"\n [itemTemplate]=\"itemTemplate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loadingTemplate]=\"loadingTemplate()\"\n [alternate]=\"alternate()\"\n (itemClick)=\"handleMultiToggle($event)\"\n (navigateOut)=\"onListNavigateOut($event)\"\n />\n }\n @case ('drop-down-tree') {\n <ax-lookup-drop-down-tree\n [dataSource]=\"treeDataSource()!\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [nodeTemplate]=\"$any(itemTemplate())\"\n (itemClick)=\"handleSinglePick($event)\"\n />\n }\n @case ('multi-select-tree') {\n <ax-lookup-multi-select-tree\n [dataSource]=\"treeDataSource()!\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [selectionBehavior]=\"treeSelectionBehavior()\"\n [nodeTemplate]=\"$any(itemTemplate())\"\n (selectionChange)=\"handleTreeSelectionChange($event)\"\n />\n }\n @case ('multi-column') {\n <ax-lookup-multi-column\n [dataSource]=\"resolvedDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [itemHeight]=\"itemHeight()\"\n [maxVisibleItems]=\"maxVisibleItems()\"\n [columns]=\"columns()\"\n [itemTemplate]=\"itemTemplate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loadingTemplate]=\"loadingTemplate()\"\n [alternate]=\"alternate()\"\n (itemClick)=\"handleSinglePick($event)\"\n />\n }\n }\n }\n <ng-content select=\"ax-footer\"></ng-content>\n </div>\n</ax-popover>\n","import { NgModule } from '@angular/core';\nimport { AXLookupComponent } from './lookup.component';\nimport { AXLookupDropDownListComponent } from './views/lookup-drop-down-list.component';\nimport { AXLookupDropDownTreeComponent } from './views/lookup-drop-down-tree.component';\nimport { AXLookupMultiColumnComponent } from './views/lookup-multi-column.component';\nimport { AXLookupMultiSelectTreeComponent } from './views/lookup-multi-select-tree.component';\nimport { AXLookupMultiSelectComponent } from './views/lookup-multi-select.component';\n\n@NgModule({\n imports: [\n AXLookupComponent,\n AXLookupDropDownListComponent,\n AXLookupMultiSelectComponent,\n AXLookupDropDownTreeComponent,\n AXLookupMultiSelectTreeComponent,\n AXLookupMultiColumnComponent,\n ],\n exports: [\n AXLookupComponent,\n AXLookupDropDownListComponent,\n AXLookupMultiSelectComponent,\n AXLookupDropDownTreeComponent,\n AXLookupMultiSelectTreeComponent,\n AXLookupMultiColumnComponent,\n ],\n})\nexport class AXLookupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-lookup.mjs","sources":["../../../../packages/components/lookup/src/lib/views/lookup-list-view-base.ts","../../../../packages/components/lookup/src/lib/views/lookup-drop-down-list.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-drop-down-tree.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-multi-column.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-multi-select-tree.component.ts","../../../../packages/components/lookup/src/lib/views/lookup-multi-select.component.ts","../../../../packages/components/lookup/src/lib/lookup.component.ts","../../../../packages/components/lookup/src/lib/lookup.component.html","../../../../packages/components/lookup/src/lib/lookup.module.ts","../../../../packages/components/lookup/src/acorex-components-lookup.ts"],"sourcesContent":["import { AXDataSource, AXHtmlEvent, AXListDataSource } from '@acorex/cdk/common';\nimport {\n AXListNavigationDirective,\n AXListNavigationItemDirective,\n} from '@acorex/cdk/list-navigation';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport {\n Directive,\n NgZone,\n TemplateRef,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { AXLookupItem, AXLookupItemClickEvent } from '../lookup.types';\n\n/**\n * Shared `AXDataSource` + CDK virtual scroll plumbing for the list-based lookup views\n * (`ax-lookup-drop-down-list`, `ax-lookup-multi-select`).\n */\n@Directive()\nexport abstract class AXLookupListViewBase {\n /**\n * The datasource providing the items (paged, remote-capable).\n */\n dataSource = input.required<AXDataSource<AXLookupItem>>();\n\n /**\n * The item property used as the selection value.\n */\n valueField = input('id');\n\n /**\n * The item property used as the display text.\n */\n textField = input('text');\n\n /**\n * The item property marking an item as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Currently selected values (always an array, even for single selection).\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * The fixed row height in pixels used by the virtual scroll viewport.\n */\n itemHeight = input(40);\n\n /**\n * The maximum number of rows visible before the popup scrolls.\n */\n maxVisibleItems = input(8);\n\n /**\n * Custom template rendered for each item. Context: `$implicit` is the item.\n */\n itemTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered when the datasource has no items.\n */\n emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered for rows whose page is still loading.\n */\n loadingTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * When `true`, list rows use alternating background colors for easier scanning.\n */\n alternate = input(false);\n\n /**\n * Emitted when the user picks (or toggles) an item.\n */\n itemClick = output<AXLookupItemClickEvent>();\n\n /**\n * Emitted when keyboard navigation should leave the list (e.g. ArrowUp on the first\n * item, or a printable key that should return focus to the trigger search input).\n */\n navigateOut = output<'up' | 'typeahead'>();\n\n /** CDK virtual scroll adapter over the datasource. */\n protected listDataSource = signal<AXListDataSource<AXLookupItem> | null>(null);\n\n protected totalCount = signal(0);\n protected isLoading = signal(true);\n\n protected isEmpty = computed(() => this.totalCount() === 0 && !this.isLoading());\n\n /** Viewport height so the popup grows with the items up to `maxVisibleItems`. */\n protected viewportHeight = computed(() => {\n const count = this.totalCount() || (this.isLoading() ? 3 : 1);\n return Math.min(count, this.maxVisibleItems()) * this.itemHeight();\n });\n\n protected viewportRef = viewChild(CdkVirtualScrollViewport);\n protected listNavigation = viewChild(AXListNavigationDirective);\n protected navItems = viewChildren(AXListNavigationItemDirective);\n\n #ngZone = inject(NgZone);\n\n constructor() {\n // CDK measures the viewport size only once, when it initializes. Inside the popover the\n // panel is still animating/positioning at that moment (and the height also changes when\n // the loading placeholder is replaced by the real item count), so the measurement is stale\n // and CDK renders too few rows, leaving empty space. A ResizeObserver on the viewport\n // element re-measures on every actual size change, covering all of these cases.\n effect((onCleanup) => {\n const viewport = this.viewportRef();\n if (!viewport || typeof ResizeObserver === 'undefined') {\n return;\n }\n const observer = new ResizeObserver(() => {\n this.#ngZone.run(() => viewport.checkViewportSize());\n });\n observer.observe(viewport.elementRef.nativeElement);\n onCleanup(() => observer.disconnect());\n });\n\n effect((onCleanup) => {\n const source = this.dataSource();\n const list = new AXListDataSource<AXLookupItem>({ source });\n untracked(() => {\n this.totalCount.set(source.totalCount);\n this.isLoading.set(source.totalCount > 0 ? source.isLoading : true);\n this.listDataSource.set(list);\n });\n const loadingSub = source.onLoadingChanged.subscribe((value) => this.isLoading.set(value));\n const changedSub = source.onChanged.subscribe((e) => this.totalCount.set(e.totalCount));\n onCleanup(() => {\n loadingSub.unsubscribe();\n changedSub.unsubscribe();\n });\n });\n }\n\n /** Moves keyboard focus to the first rendered list option. */\n focusFirst() {\n this.listNavigation()?.focusOnIndex(0);\n }\n\n protected getValue(item: AXLookupItem): unknown {\n return item?.[this.valueField()];\n }\n\n protected getText(item: AXLookupItem): string {\n return String(item?.[this.textField()] ?? '');\n }\n\n protected isSelected(item: AXLookupItem): boolean {\n const value = this.getValue(item);\n return this.selectedValues().some((v) => v == value);\n }\n\n protected isDisabled(item: AXLookupItem): boolean {\n return Boolean(item?.[this.disabledField()]);\n }\n\n protected handleItemClick(item: AXLookupItem | null | undefined) {\n if (!item || this.isDisabled(item)) {\n return;\n }\n this.itemClick.emit({ item, value: this.getValue(item) });\n }\n\n protected handleItemKeypress(e: AXHtmlEvent<KeyboardEvent>, item: AXLookupItem | null | undefined) {\n if (e.nativeEvent.key === 'Enter' || e.nativeEvent.code === 'Space') {\n e.nativeEvent.stopPropagation();\n e.nativeEvent.preventDefault();\n this.handleItemClick(item);\n }\n }\n\n protected handleListKeypress(e: AXHtmlEvent<KeyboardEvent>) {\n const key = e.nativeEvent.key;\n const nav = this.listNavigation();\n const viewport = this.viewportRef();\n\n if (key === 'ArrowUp' && nav && nav.activeIndex() === 0) {\n const offset = viewport?.measureScrollOffset() ?? 0;\n if (offset > 0) {\n e.nativeEvent.preventDefault();\n viewport!.scrollToOffset(Math.max(0, offset - this.itemHeight()));\n queueMicrotask(() => nav.focusOnIndex(0));\n return;\n }\n e.nativeEvent.preventDefault();\n this.navigateOut.emit('up');\n return;\n }\n\n if (key === 'ArrowDown' && nav && viewport) {\n const items = this.navItems();\n if (items.length > 0 && nav.activeIndex() >= items.length - 1) {\n const maxOffset = Math.max(0, this.totalCount() * this.itemHeight() - viewport.getViewportSize());\n const nextOffset = Math.min(maxOffset, viewport.measureScrollOffset() + this.itemHeight());\n if (nextOffset > viewport.measureScrollOffset()) {\n e.nativeEvent.preventDefault();\n viewport.scrollToOffset(nextOffset);\n queueMicrotask(() => nav.focusOnIndex(this.navItems().length - 1));\n }\n return;\n }\n }\n\n if (\n key === 'ArrowUp' ||\n key === 'ArrowDown' ||\n key === 'Tab' ||\n key === 'Shift' ||\n key === 'Enter' ||\n key === 'Escape' ||\n key === ' '\n ) {\n return;\n }\n\n this.navigateOut.emit('typeahead');\n }\n\n protected activateNavItem(nav: AXListNavigationDirective, item: AXListNavigationItemDirective) {\n nav?.navigateTo(item);\n }\n\n protected trackByIndex = (index: number) => index;\n}\n","import { AXListNavigationModule } from '@acorex/cdk/list-navigation';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AXLookupListViewBase } from './lookup-list-view-base';\n\n/**\n * Internal mini component for the `drop-down-list` lookup mode:\n * a predefined, virtualized list of options for picking single values.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-drop-down-list',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n ScrollingModule,\n NgTemplateOutlet,\n AXTranslatorPipe,\n AsyncPipe,\n AXDecoratorModule,\n AXListNavigationModule,\n ],\n providers: [{ provide: AXLookupListViewBase, useExisting: AXLookupDropDownListComponent }],\n template: `\n @if (isEmpty()) {\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\" />\n } @else {\n <div class=\"ax-lookup-empty\">\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n </div>\n }\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ax-lookup-viewport\"\n role=\"listbox\"\n axListNavigation\n #nav=\"axListNavigation\"\n [itemSize]=\"itemHeight()\"\n [style.height.px]=\"viewportHeight()\"\n (onKeypress)=\"handleListKeypress($event)\"\n >\n <div\n *cdkVirtualFor=\"let item of listDataSource(); let i = index; trackBy: trackByIndex\"\n role=\"option\"\n class=\"ax-lookup-option-host\"\n axListNavigationItem\n #navItem=\"axListNavigationItem\"\n [style.height.px]=\"itemHeight()\"\n [class.ax-lookup-option]=\"!itemTemplate()\"\n [class.ax-state-alternate]=\"alternate() && i % 2 === 1\"\n [class.ax-state-selected]=\"item != null && isSelected(item)\"\n [class.ax-state-disabled]=\"item != null && isDisabled(item)\"\n [class.ax-state-active]=\"navItem.isActive()\"\n [attr.aria-selected]=\"item != null ? isSelected(item) : null\"\n (mouseenter)=\"activateNavItem(nav, navItem)\"\n (click)=\"handleItemClick(item)\"\n (onKeypress)=\"handleItemKeypress($event, item)\"\n >\n @if (item != null) {\n @if (itemTemplate()) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate()!\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n <span class=\"ax-lookup-option-text\">{{ getText(item) }}</span>\n @if (isSelected(item)) {\n <ax-icon class=\"ax-lookup-option-check ax-icon ax-icon-check\" aria-hidden=\"true\"></ax-icon>\n }\n }\n } @else {\n <ng-container [ngTemplateOutlet]=\"loadingRow\" />\n }\n </div>\n </cdk-virtual-scroll-viewport>\n }\n\n <ng-template #loadingRow>\n @if (loadingTemplate()) {\n <ng-container [ngTemplateOutlet]=\"loadingTemplate()!\" />\n } @else {\n <span class=\"ax-lookup-option-loading\">{{ '@acorex:common.status.loading' | translate | async }}</span>\n }\n </ng-template>\n `,\n})\nexport class AXLookupDropDownListComponent extends AXLookupListViewBase {}\n","import {\n AXTreeViewComponent,\n AXTreeViewDataSource,\n AXTreeViewItemTemplateContext,\n AXTreeViewSelectionChangeEvent,\n} from '@acorex/components/tree-view';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation, computed, input, output } from '@angular/core';\nimport { AXLookupItemClickEvent } from '../lookup.types';\n\n/**\n * Internal mini component for the `drop-down-tree` lookup mode:\n * a predefined list rendered in a tree-like structure for single item selection.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-drop-down-tree',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [AXTreeViewComponent],\n template: `\n <div class=\"ax-lookup-tree\">\n <ax-tree-view\n [datasource]=\"dataSource()\"\n selectMode=\"single\"\n selectionBehavior=\"all\"\n [controlledSelection]=\"true\"\n [selectedIds]=\"selectedIds()\"\n [idField]=\"valueField()\"\n [titleField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [nodeTemplate]=\"nodeTemplate()\"\n (onSelectionChange)=\"handleSelectionChange($event)\"\n />\n </div>\n `,\n})\nexport class AXLookupDropDownTreeComponent {\n /**\n * The tree datasource: an array of nodes or a lazy children callback.\n */\n dataSource = input.required<AXTreeViewDataSource>();\n\n /**\n * The node property used as the selection value (tree `idField`).\n */\n valueField = input('id');\n\n /**\n * The node property used as the display text (tree `titleField`).\n */\n textField = input('title');\n\n /**\n * The node property marking a node as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Currently selected values (at most one for single selection).\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * Custom template rendered for each tree node.\n */\n nodeTemplate = input<TemplateRef<AXTreeViewItemTemplateContext> | undefined>(undefined);\n\n /**\n * Emitted when the user selects a node.\n */\n itemClick = output<AXLookupItemClickEvent>();\n\n protected selectedIds = computed(() => this.selectedValues().map((v) => String(v)));\n\n protected handleSelectionChange(e: AXTreeViewSelectionChangeEvent) {\n if (e.source !== 'user') {\n return;\n }\n const node = e.selectedNodes[0];\n if (!node) {\n return;\n }\n this.itemClick.emit({ item: node, value: node[this.valueField()] });\n }\n}\n","import { AXDataSource } from '@acorex/cdk/common';\nimport {\n AXDataTableComponent,\n AXDataTableRowClick,\n AXDataTableTextColumnComponent,\n} from '@acorex/components/data-table';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { Subscription, auditTime, fromEvent } from 'rxjs';\nimport { AXLookupColumn, AXLookupItem, AXLookupItemClickEvent } from '../lookup.types';\n\n/**\n * Internal mini component for the `multi-column` lookup mode:\n * renders selectable rows in an `ax-data-table` grid and loads further\n * pages as the user scrolls (no pager UI).\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-multi-column',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, AXDataTableComponent, AXDataTableTextColumnComponent],\n host: {\n class: 'ax-lookup-multi-column',\n '[style.height.px]': 'tableHeight()',\n },\n template: `\n <ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"tableDataSource\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowTemplate]=\"itemTemplate() ? customRowTemplate : undefined\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n >\n @for (column of columns(); track trackColumnKey($index, column)) {\n <ax-text-column\n [dataField]=\"column.field\"\n [caption]=\"column.title\"\n [width]=\"resolveColumnWidth(column)\"\n [allowSorting]=\"false\"\n [allowResizing]=\"false\"\n />\n }\n </ax-data-table>\n\n <ng-template #customRowTemplate let-ctx>\n <tr\n [class.ax-state-selected]=\"ctx.data != null && isSelected(ctx.data)\"\n [class.ax-state-disabled]=\"ctx.data != null && isDisabled(ctx.data)\"\n [style.height.px]=\"itemHeight()\"\n [style.max-height.px]=\"itemHeight()\"\n (click)=\"handleItemClick(ctx.data)\"\n >\n <td [attr.colspan]=\"columns().length || 1\">\n @if (ctx.data != null && itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: ctx.data }\"\n />\n }\n </td>\n </tr>\n </ng-template>\n `,\n})\nexport class AXLookupMultiColumnComponent {\n /**\n * The datasource providing the grid rows (paged, remote-capable).\n * Pages are fetched on demand as the user scrolls the table body.\n */\n dataSource = input.required<AXDataSource<AXLookupItem>>();\n\n /**\n * The item property used as the selection value.\n */\n valueField = input('id');\n\n /**\n * The item property used as the display text.\n */\n textField = input('text');\n\n /**\n * The item property marking an item as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Currently selected values (always an array, even for single selection).\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * The fixed row height in pixels passed to the data table.\n */\n itemHeight = input(40);\n\n /**\n * The maximum number of body rows visible before the table scrolls.\n */\n maxVisibleItems = input(8);\n\n /**\n * Column definitions rendered as `ax-text-column` instances.\n */\n columns = input<AXLookupColumn[]>([]);\n\n /**\n * Optional custom row content. Context: `$implicit` is the row item.\n * When set, replaces the default multi-column cell layout.\n */\n itemTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered when the datasource has no items.\n */\n emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered while the table is loading.\n */\n loadingTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * When `true`, table rows use alternating background colors for easier scanning.\n */\n alternate = input(false);\n\n /**\n * Emitted when the user picks a row.\n */\n itemClick = output<AXLookupItemClickEvent>();\n\n protected tableRef = viewChild(AXDataTableComponent);\n\n /** Accumulated rows fed to the table (grows as pages are scrolled in). */\n #loadedItems: AXLookupItem[] = [];\n\n /** Total matching rows from the source (used to size the popup). */\n readonly #totalCount = signal(0);\n\n /**\n * Local table source: one page of whatever has been scrolled in so far.\n * Kept as a stable instance so the table host is not recreated on each page load.\n * `pageSize` grows with `#loadedItems` — never seed with a huge empty array (data-table\n * initializes `displayedRows` as `new Array(pageSize)`, which caused NG0955-level jank).\n */\n protected readonly tableDataSource = new AXDataSource<AXLookupItem>({\n pageSize: 1,\n key: 'id',\n load: async () => ({\n items: this.#loadedItems,\n total: this.#loadedItems.length,\n }),\n });\n\n /**\n * Header (~40px) + body rows. Grows with results up to `maxVisibleItems`,\n * then the table body scrolls for the rest.\n */\n protected tableHeight = computed(() => {\n const header = 40;\n const total = this.#totalCount();\n const rows = total > 0 ? total : Math.min(3, this.maxVisibleItems());\n return header + Math.min(rows, this.maxVisibleItems()) * this.itemHeight();\n });\n\n protected loadingConfig = computed(() => ({\n enabled: true,\n animation: true,\n loadingTemplate: this.loadingTemplate(),\n }));\n\n readonly #host = inject(ElementRef<HTMLElement>);\n\n constructor() {\n effect((onCleanup) => {\n const source = this.dataSource();\n this.tableDataSource.config.key = source.config.key || this.valueField();\n\n untracked(() => {\n this.#loadedItems = [];\n this.#totalCount.set(0);\n this.#syncTablePageSize();\n this.tableDataSource.refresh({ reset: true });\n });\n\n const changedSub = source.onChanged.subscribe((event) => {\n this.#loadedItems = event.cachedItems.filter((item): item is AXLookupItem => item != null);\n this.#totalCount.set(event.totalCount);\n this.#syncTablePageSize();\n this.tableDataSource.refresh({ reset: true });\n });\n\n // Kick the first page; later pages come from scroll.\n queueMicrotask(() => source.setPage(0));\n\n onCleanup(() => changedSub.unsubscribe());\n });\n\n effect((onCleanup) => {\n // Rebind when the table instance appears / source changes.\n this.tableRef();\n this.dataSource();\n\n let scrollSub: Subscription | undefined;\n const timer = setTimeout(() => {\n const wrapper =\n this.tableRef()?.getHostElement()?.querySelector('.ax-data-table-wrapper') ??\n this.#host.nativeElement.querySelector('.ax-data-table-wrapper');\n if (!wrapper) {\n return;\n }\n scrollSub = fromEvent(wrapper, 'scroll')\n .pipe(auditTime(80))\n .subscribe(() => this.#tryLoadMore(wrapper as HTMLElement));\n }, 0);\n\n onCleanup(() => {\n clearTimeout(timer);\n scrollSub?.unsubscribe();\n });\n });\n }\n\n /** Stable unique key for `@for` — avoids NG0955 when `field` is missing or duplicated. */\n protected trackColumnKey(index: number, column: AXLookupColumn): string {\n return `${column?.field ?? ''}::${index}`;\n }\n\n protected resolveColumnWidth(column: AXLookupColumn): string | number | 'auto' {\n const width = column.width?.trim();\n if (!width || width.includes('fr')) {\n return 'auto';\n }\n return width;\n }\n\n #syncTablePageSize() {\n this.tableDataSource.config.pageSize = Math.max(this.#loadedItems.length, 1);\n }\n\n protected resolveRowCssClass = (row: unknown): string => {\n const item = row as AXLookupItem | null | undefined;\n if (!item) {\n return '';\n }\n const classes: string[] = [];\n if (this.isSelected(item)) {\n classes.push('ax-state-selected');\n }\n if (this.isDisabled(item)) {\n classes.push('ax-state-disabled');\n }\n return classes.join(' ');\n };\n\n protected handleRowClick(event: AXDataTableRowClick) {\n this.handleItemClick(event.data as AXLookupItem | null | undefined);\n }\n\n protected handleItemClick(item: AXLookupItem | null | undefined) {\n if (!item || this.isDisabled(item)) {\n return;\n }\n this.itemClick.emit({ item, value: this.getValue(item) });\n }\n\n protected isSelected(item: AXLookupItem): boolean {\n const value = this.getValue(item);\n return this.selectedValues().some((v) => v == value);\n }\n\n protected isDisabled(item: AXLookupItem): boolean {\n return Boolean(item?.[this.disabledField()]);\n }\n\n #tryLoadMore(wrapper: HTMLElement) {\n const nearBottom = wrapper.scrollTop + wrapper.clientHeight >= wrapper.scrollHeight - 48;\n if (!nearBottom) {\n return;\n }\n\n const source = this.dataSource();\n if (source.isLoading || source.totalCount === 0) {\n return;\n }\n\n const loadedCount = source.cachedItems.filter((item) => item != null).length;\n if (loadedCount >= source.totalCount) {\n return;\n }\n\n const nextPage = Math.floor(loadedCount / source.pageSize);\n source.setPage(nextPage);\n }\n\n private getValue(item: AXLookupItem): unknown {\n return item?.[this.valueField()];\n }\n}\n","import {\n AXTreeViewComponent,\n AXTreeViewDataSource,\n AXTreeViewItemTemplateContext,\n AXTreeViewNode,\n AXTreeViewSelectionBehavior,\n AXTreeViewSelectionChangeEvent,\n} from '@acorex/components/tree-view';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation, computed, input, output } from '@angular/core';\n\n/**\n * Selection payload of the multi-select tree view.\n */\nexport interface AXLookupTreeSelectionEvent {\n ids: string[];\n nodes: AXTreeViewNode[];\n}\n\n/**\n * Internal mini component for the `multi-select-tree` lookup mode:\n * a predefined list rendered in a tree-like structure for multiple item selection.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-multi-select-tree',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [AXTreeViewComponent],\n template: `\n <div class=\"ax-lookup-tree\">\n <ax-tree-view\n [datasource]=\"dataSource()\"\n selectMode=\"multiple\"\n [selectionBehavior]=\"selectionBehavior()\"\n [controlledSelection]=\"true\"\n [selectedIds]=\"selectedIds()\"\n [idField]=\"valueField()\"\n [titleField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [nodeTemplate]=\"nodeTemplate()\"\n (onSelectionChange)=\"handleSelectionChange($event)\"\n />\n </div>\n `,\n})\nexport class AXLookupMultiSelectTreeComponent {\n /**\n * The tree datasource: an array of nodes or a lazy children callback.\n */\n dataSource = input.required<AXTreeViewDataSource>();\n\n /**\n * The node property used as the selection value (tree `idField`).\n */\n valueField = input('id');\n\n /**\n * The node property used as the display text (tree `titleField`).\n */\n textField = input('title');\n\n /**\n * The node property marking a node as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Currently selected values.\n */\n selectedValues = input<unknown[]>([]);\n\n /**\n * How selecting parent/child nodes affects each other. Passed through to the tree-view.\n */\n selectionBehavior = input<AXTreeViewSelectionBehavior>('all');\n\n /**\n * Custom template rendered for each tree node.\n */\n nodeTemplate = input<TemplateRef<AXTreeViewItemTemplateContext> | undefined>(undefined);\n\n /**\n * Emitted when the user changes the tree selection.\n */\n selectionChange = output<AXLookupTreeSelectionEvent>();\n\n protected selectedIds = computed(() => this.selectedValues().map((v) => String(v)));\n\n protected handleSelectionChange(e: AXTreeViewSelectionChangeEvent) {\n if (e.source !== 'user') {\n return;\n }\n this.selectionChange.emit({ ids: e.selectedIds, nodes: e.selectedNodes });\n }\n}\n","import { AXListNavigationModule } from '@acorex/cdk/list-navigation';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AXLookupListViewBase } from './lookup-list-view-base';\n\n/**\n * Internal mini component for the `multi-select` lookup mode:\n * a predefined, virtualized list of options with checkboxes for multiple item selection.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-lookup-multi-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [ScrollingModule, NgTemplateOutlet, AXTranslatorPipe, AsyncPipe, AXListNavigationModule],\n providers: [{ provide: AXLookupListViewBase, useExisting: AXLookupMultiSelectComponent }],\n template: `\n @if (isEmpty()) {\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\" />\n } @else {\n <div class=\"ax-lookup-empty\">\n {{ '@acorex:common.general.no-result-found' | translate | async }}\n </div>\n }\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ax-lookup-viewport\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n axListNavigation\n #nav=\"axListNavigation\"\n [itemSize]=\"itemHeight()\"\n [style.height.px]=\"viewportHeight()\"\n (onKeypress)=\"handleListKeypress($event)\"\n >\n <div\n *cdkVirtualFor=\"let item of listDataSource(); let i = index; trackBy: trackByIndex\"\n role=\"option\"\n class=\"ax-lookup-option-host\"\n axListNavigationItem\n #navItem=\"axListNavigationItem\"\n [style.height.px]=\"itemHeight()\"\n [class.ax-lookup-option]=\"!itemTemplate()\"\n [class.ax-lookup-option-host--check]=\"!!itemTemplate()\"\n [class.ax-state-alternate]=\"alternate() && i % 2 === 1\"\n [class.ax-state-selected]=\"item != null && isSelected(item)\"\n [class.ax-state-disabled]=\"item != null && isDisabled(item)\"\n [class.ax-state-active]=\"navItem.isActive()\"\n [attr.aria-selected]=\"item != null ? isSelected(item) : null\"\n (mouseenter)=\"activateNavItem(nav, navItem)\"\n (click)=\"handleItemClick(item)\"\n (onKeypress)=\"handleItemKeypress($event, item)\"\n >\n @if (item != null) {\n <input\n type=\"checkbox\"\n class=\"ax-lookup-checkbox\"\n tabindex=\"-1\"\n [checked]=\"isSelected(item)\"\n [disabled]=\"isDisabled(item)\"\n />\n @if (itemTemplate()) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate()!\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n <span class=\"ax-lookup-option-text\">{{ getText(item) }}</span>\n }\n } @else {\n <ng-container [ngTemplateOutlet]=\"loadingRow\" />\n }\n </div>\n </cdk-virtual-scroll-viewport>\n }\n\n <ng-template #loadingRow>\n @if (loadingTemplate()) {\n <ng-container [ngTemplateOutlet]=\"loadingTemplate()!\" />\n } @else {\n <span class=\"ax-lookup-option-loading\">{{ '@acorex:common.status.loading' | translate | async }}</span>\n }\n </ng-template>\n `,\n})\nexport class AXLookupMultiSelectComponent extends AXLookupListViewBase {}\n","import {\n AXClearableComponent,\n AXClosableComponent,\n AXComponent,\n AXDataSource,\n AXEvent,\n AXFocusEvent,\n AXItemClickEvent,\n AXItemSelectedEvent,\n AXStyleLookType,\n AXValueChangedEvent,\n NXComponent,\n convertArrayToDataSource,\n} from '@acorex/cdk/common';\nimport { AXChipsComponent } from '@acorex/components/chips';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXTreeViewDataSource, AXTreeViewSelectionBehavior } from '@acorex/components/tree-view';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\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 {\n AXLookupColumn,\n AXLookupItem,\n AXLookupItemClickEvent,\n AXLookupMode,\n AXLookupSelectionChangedEvent,\n} from './lookup.types';\nimport { AXLookupDropDownListComponent } from './views/lookup-drop-down-list.component';\nimport { AXLookupDropDownTreeComponent } from './views/lookup-drop-down-tree.component';\nimport { AXLookupListViewBase } from './views/lookup-list-view-base';\nimport { AXLookupMultiColumnComponent } from './views/lookup-multi-column.component';\nimport {\n AXLookupMultiSelectTreeComponent,\n AXLookupTreeSelectionEvent,\n} from './views/lookup-multi-select-tree.component';\nimport { AXLookupMultiSelectComponent } from './views/lookup-multi-select.component';\n\n/**\n * An advanced drop-down (lookup) editor with five modes, `AXDataSource` support, and virtual scrolling.\n *\n * Modes (each rendered by its own internal mini component):\n * - `drop-down-list` — a predefined list of options for picking single values.\n * - `multi-select` — a predefined list of options for multiple item selection (chips in the trigger).\n * - `drop-down-tree` — a predefined list rendered in a tree-like structure for single item selection.\n * - `multi-select-tree` — a tree-like structure for multiple item selection.\n * - `multi-column` — an `ax-data-table` grid; when searchable, the trigger input filters as you type.\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 * 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-lookup',\n templateUrl: './lookup.component.html',\n styleUrls: ['./lookup.component.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n AsyncPipe,\n AXTranslatorPipe,\n AXChipsComponent,\n AXDecoratorModule,\n AXPopoverComponent,\n AXLookupDropDownListComponent,\n AXLookupMultiSelectComponent,\n AXLookupDropDownTreeComponent,\n AXLookupMultiSelectTreeComponent,\n AXLookupMultiColumnComponent,\n ],\n providers: [\n { provide: AXComponent, useExisting: AXLookupComponent },\n { provide: AXClearableComponent, useExisting: AXLookupComponent },\n { provide: AXClosableComponent, useExisting: AXLookupComponent },\n ],\n})\nexport class AXLookupComponent\n extends NXComponent\n implements FormValueControl<unknown | unknown[] | null>\n{\n readonly #platform = inject(AXPlatform);\n readonly #destroyRef = inject(DestroyRef);\n\n /**\n * The lookup rendering mode. Selects which mini component renders in the popup.\n */\n mode = input<AXLookupMode>('drop-down-list');\n\n /**\n * The items source for list-based modes (`drop-down-list`, `multi-select`, `multi-column`).\n * Accepts an `AXDataSource` (remote paging, `byKey`, server-side filter) or a plain array.\n */\n dataSource = input<AXDataSource<AXLookupItem> | AXLookupItem[] | undefined>(undefined);\n\n /**\n * The nodes source for tree modes (`drop-down-tree`, `multi-select-tree`):\n * an array of nodes or a lazy children callback.\n */\n treeDataSource = input<AXTreeViewDataSource | undefined>(undefined);\n\n /**\n * The item property used as the selection value. Maps to the tree `idField` in tree modes.\n */\n valueField = input('id');\n\n /**\n * The item property used as the display text. Maps to the tree `titleField` in tree modes\n * (set it to `title` when your nodes use the default tree shape).\n */\n textField = input('text');\n\n /**\n * The item property marking an item as disabled.\n */\n disabledField = input('disabled');\n\n /**\n * Column definitions for the `multi-column` mode (rendered as `ax-text-column` in `ax-data-table`).\n */\n columns = input<AXLookupColumn[]>([]);\n\n /**\n * Whether the trigger accepts typing and filters the datasource (`true`),\n * or is select-only with no writable input (`false`).\n * Applies to `drop-down-list`, `multi-select`, and `multi-column`. Tree modes ignore this.\n */\n searchable = input(true);\n\n /**\n * When `true` (default), the popup list uses the alternate actionsheet presentation on small\n * screens (`SM`). When `false`, 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 */\n caption = input('');\n\n /**\n * When `true`, list rows use alternating background colors for easier scanning\n * (`drop-down-list`, `multi-select`, and `multi-column` modes).\n */\n alternate = input(false);\n\n /**\n * Placeholder for the trigger search input when items are already selected\n * (mainly useful in `multi-select`). Falls back to `placeholder` when the selection is empty.\n */\n searchPlaceholder = input('Search...');\n\n /**\n * The placeholder text shown when no value is selected.\n */\n placeholder = input('');\n\n /**\n * Whether the lookup is disabled.\n */\n readonly disabled = input(false);\n\n /**\n * Whether the lookup 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 fixed row height in pixels used by the virtual scroll viewport (list-based modes).\n */\n itemHeight = input(40);\n\n /**\n * The maximum number of rows visible before the popup scrolls (list-based modes).\n */\n maxVisibleItems = input(8);\n\n /**\n * How selecting parent/child nodes affects each other in `multi-select-tree` mode.\n */\n treeSelectionBehavior = input<AXTreeViewSelectionBehavior>('all');\n\n /**\n * Custom template rendered for each item/node. Context: `$implicit` is the item.\n */\n itemTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template for the selected item display (trigger text / chips). Context: `$implicit` is the item.\n */\n selectedTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered when the datasource has no items.\n */\n emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * Custom template rendered for rows whose page is still loading.\n */\n loadingTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n /**\n * The selected value(s): a scalar in single modes, an array in\n * `multi-select` / `multi-select-tree`. Supports `[(value)]`, `[(ngModel)]`, and signal forms\n * via {@link FormValueControl}.\n */\n readonly value = model<unknown | unknown[] | null>(null);\n\n /**\n * Full items that resolve the current `value` key(s) without calling datasource `byKey`.\n * Use when the parent already has the selected entity (e.g. edit forms). Seeds the internal\n * item cache; missing keys still fall through to `find` / `byKey`.\n */\n valueItems = input<AXLookupItem[]>([]);\n\n /**\n * Emitted when the selected value changes.\n */\n onValueChanged = output<AXValueChangedEvent<unknown | unknown[] | null>>();\n\n /**\n * Emitted when the selection changes, carrying the resolved selected items.\n */\n onSelectionChanged = output<AXLookupSelectionChangedEvent>();\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/tree item is clicked.\n */\n onItemClick = output<AXItemClickEvent<AXLookupItem>>();\n\n /**\n * Emitted when an item is selected (click or keyboard).\n */\n onItemSelected = output<AXItemSelectedEvent<AXLookupItem>>();\n\n /**\n * Emitted when the popup opens.\n */\n onOpened = output<AXEvent>();\n\n /**\n * Emitted when the popup 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 current mode selects multiple values. */\n protected isMultiple = computed(() => this.mode() === 'multi-select' || this.mode() === 'multi-select-tree');\n\n /** Whether the current mode renders a tree. */\n protected isTreeMode = computed(() => this.mode() === 'drop-down-tree' || this.mode() === 'multi-select-tree');\n\n /** Whether the trigger input is writable and filters as you type. */\n protected isEditableTrigger = computed(() => {\n if (!this.searchable() || this.readonly()) {\n return false;\n }\n const mode = this.mode();\n return mode === 'drop-down-list' || mode === 'multi-select' || mode === 'multi-column';\n });\n\n /** The datasource for list-based modes; plain arrays are converted. */\n protected resolvedDataSource = computed<AXDataSource<AXLookupItem>>(() => {\n const source = this.dataSource();\n if (!source) {\n return convertArrayToDataSource<AXLookupItem>([], { key: this.valueField(), pageSize: 20 });\n }\n return Array.isArray(source)\n ? convertArrayToDataSource<AXLookupItem>(source, { key: this.valueField(), pageSize: 20 })\n : source;\n });\n\n /** The current selection normalized to an array. */\n protected selectedValues = computed<unknown[]>(() => {\n const value = this.value();\n if (value == null) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n });\n\n /** The resolved selected items (via cache, datasource `find`/`byKey`, or tree node lookup). */\n protected selectedItems = signal<AXLookupItem[]>([]);\n\n /** Display text shown in the trigger for single modes. */\n protected displayText = computed(() => {\n const item = this.selectedItems()[0];\n return item ? this.getItemText(item) : '';\n });\n\n /**\n * Text typed in the editable trigger input.\n * Multi-select starts empty; single modes sync from the selected display text.\n */\n protected searchText = linkedSignal(() => (this.mode() === 'multi-select' || this.mode() === 'multi-select-tree' ? '' : this.displayText()));\n\n /**\n * Whether the trigger should render `selectedTemplate` instead of the plain input text.\n * Searchable mode shows the template while the popup is closed and the input still matches\n * the selected display text (same pattern as combo-box).\n */\n protected showSelectedTemplate = computed(() => {\n if (this.isMultiple() || !this.selectedTemplate() || this.selectedItems().length === 0) {\n return false;\n }\n if (!this.isEditableTrigger()) {\n return true;\n }\n return !this.expanded() && this.searchText() === this.displayText();\n });\n\n protected popoverRef = viewChild(AXPopoverComponent);\n protected triggerSearchInput = viewChild<ElementRef<HTMLInputElement>>('triggerSearchInput');\n protected listView = viewChild(AXLookupListViewBase);\n\n #itemsCache = new Map<unknown, AXLookupItem>();\n #isUserInteraction = false;\n #lastValue: unknown | unknown[] | null | undefined = undefined;\n #lastExpanded: boolean | undefined = undefined;\n #resolveRevision = 0;\n #selectionInitialized = false;\n #filterApplied = false;\n #searchDebounce?: ReturnType<typeof setTimeout>;\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 // Seed the item cache from valueItems, then resolve selection.\n effect(() => {\n const seeded = this.valueItems();\n const values = this.selectedValues();\n this.valueField();\n this.mode();\n this.dataSource();\n this.treeDataSource();\n untracked(() => {\n this.#seedItemsCache(seeded);\n void this.#resolveSelectedItems(values);\n });\n });\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\n #syncActionsheetStyle() {\n this.isActionsheetStyle.set(this.adaptivityEnabled() && this.#platform.is('SM'));\n }\n\n /** Returns the display text of an item using the `textField` mapping. */\n protected getItemText(item: AXLookupItem): string {\n return String(item?.[this.textField()] ?? '');\n }\n\n /** Stable unique key for selected chips — avoids NG0955 and remounts on reorder/remove. */\n protected trackSelectedKey(item: AXLookupItem): unknown {\n const key = item?.[this.valueField()];\n return key != null ? key : item;\n }\n\n /**\n * Opens (editable trigger) or toggles the popup on trigger click.\n */\n protected onTriggerClick() {\n if (this.disabled() || this.readonly()) {\n return;\n }\n if (this.isEditableTrigger()) {\n this.expanded.set(true);\n queueMicrotask(() => this.triggerSearchInput()?.nativeElement.focus());\n return;\n }\n this.expanded.update((open) => !open);\n if (!this.expanded()) {\n return;\n }\n queueMicrotask(() => this.focusListFirst());\n }\n\n /**\n * Focuses the lookup trigger input.\n */\n focus(options?: FocusOptions): void {\n if (this.disabled()) {\n return;\n }\n this.triggerSearchInput()?.nativeElement.focus(options);\n }\n\n /**\n * Handles keyboard interaction on the trigger input.\n */\n protected onTriggerKeydown(e: KeyboardEvent) {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n if (e.key === 'Escape') {\n this.close();\n return;\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n this.expanded.set(true);\n queueMicrotask(() => this.focusListFirst());\n return;\n }\n\n if (!this.isEditableTrigger() && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n this.expanded.update((open) => !open);\n if (this.expanded()) {\n queueMicrotask(() => this.focusListFirst());\n }\n }\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 * Returns focus to the trigger input when list navigation requests it.\n */\n protected onListNavigateOut(_reason: 'up' | 'typeahead') {\n this.triggerSearchInput()?.nativeElement.focus();\n }\n\n protected focusListFirst() {\n const tryFocus = (attempt = 0) => {\n const list = this.listView();\n if (list) {\n list.focusFirst();\n return;\n }\n if (attempt < 5) {\n setTimeout(() => tryFocus(attempt + 1), 16);\n }\n };\n tryFocus();\n }\n\n /**\n * Keeps the expanded state in sync when the popover closes (e.g. click outside),\n * and clears any applied search filter.\n */\n protected onPopoverClosed() {\n this.expanded.set(false);\n this.searchText.set(this.isMultiple() ? '' : this.displayText());\n if (this.#filterApplied) {\n this.#filterApplied = false;\n const source = this.resolvedDataSource();\n source.clearFilter();\n source.refresh();\n }\n }\n\n /**\n * Closes the popup.\n */\n close() {\n this.expanded.set(false);\n }\n\n /**\n * Closes the popup (alias for {@link close}, required by `AXClosableComponent`).\n */\n closeAll() {\n this.close();\n }\n\n /**\n * Opens the popup.\n */\n open() {\n if (this.disabled() || this.readonly()) {\n return;\n }\n this.expanded.set(true);\n }\n\n /**\n * Handles typing in the editable trigger input.\n */\n protected onTriggerSearchInput(text: string) {\n if (!this.isEditableTrigger()) {\n return;\n }\n this.searchText.set(text);\n this.expanded.set(true);\n this.#applyFilterDebounced(text);\n }\n\n /** Placeholder for the editable trigger search input. */\n protected triggerSearchPlaceholder = computed(() => {\n if (this.mode() === 'multi-select' && this.selectedItems().length > 0) {\n return this.searchPlaceholder();\n }\n return this.placeholder();\n });\n\n /**\n * Commits a single pick (drop-down-list, drop-down-tree, multi-column) and closes the popup.\n */\n protected handleSinglePick(e: AXLookupItemClickEvent) {\n this.#emitItemClick(e.item);\n this.#emitItemSelected(e.item);\n this.#itemsCache.set(e.value, e.item);\n if (!this.#valuesEqual(e.value, this.value())) {\n this.#isUserInteraction = true;\n this.value.set(e.value);\n }\n this.close();\n }\n\n /**\n * Toggles an item in the multi-select list; the popup stays open.\n * Clears the trigger search so the full list returns (select-box-like).\n */\n protected handleMultiToggle(e: AXLookupItemClickEvent) {\n this.#emitItemClick(e.item);\n this.#itemsCache.set(e.value, e.item);\n const current = this.selectedValues();\n const exists = current.some((v) => v == e.value);\n if (!exists) {\n this.#emitItemSelected(e.item);\n }\n const next = exists ? current.filter((v) => !(v == e.value)) : [...current, e.value];\n this.#isUserInteraction = true;\n this.value.set(next);\n if (this.isEditableTrigger() && this.searchText()) {\n this.searchText.set('');\n this.#applyFilterDebounced('');\n }\n }\n\n /**\n * Applies the multi-select-tree selection to the value; the popup stays open.\n */\n protected handleTreeSelectionChange(e: AXLookupTreeSelectionEvent) {\n const prev = new Set(this.selectedValues().map((v) => String(v)));\n const newlySelected = e.nodes.filter((node) => !prev.has(String(node[this.valueField()])));\n if (newlySelected.length > 0) {\n this.#emitItemSelected(newlySelected[0]);\n }\n for (const node of e.nodes) {\n this.#itemsCache.set(String(node[this.valueField()]), node);\n }\n this.#isUserInteraction = true;\n this.value.set([...e.ids]);\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 }\n\n #emitItemClick(item: AXLookupItem) {\n this.onItemClick.emit({\n component: this,\n item,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n });\n }\n\n #emitItemSelected(item: AXLookupItem) {\n this.onItemSelected.emit({\n component: this,\n item,\n htmlElement: this.nativeElement,\n isUserInteraction: true,\n });\n }\n\n /**\n * Removes a single chip from the multi selection.\n */\n protected removeChip(event: Event, item: AXLookupItem) {\n event.stopPropagation();\n if (this.disabled() || this.readonly()) {\n return;\n }\n const value = item?.[this.valueField()];\n this.#isUserInteraction = true;\n this.value.set(this.selectedValues().filter((v) => !(v == value)));\n }\n\n /**\n * Seeds the item cache with known items so matching `value` keys resolve without `byKey`.\n * Useful after an async parent-entity load when `valueItems` is not bound.\n *\n * @param items - Full items that include `valueField` (and ideally `textField`) properties.\n */\n seedItems(items: AXLookupItem[]): void {\n this.#seedItemsCache(items);\n void this.#resolveSelectedItems(this.selectedValues());\n }\n\n /**\n * Clears the whole selection.\n * Sets `null` in single modes and `[]` in multi modes. 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 = this.isMultiple() ? [] : null;\n const current = this.value();\n if (this.isMultiple()) {\n if (Array.isArray(current) && current.length === 0) {\n return;\n }\n } else if (current == null) {\n return;\n }\n this.#isUserInteraction = isUserInteraction;\n this.value.set(next);\n if (this.isEditableTrigger() && this.searchText()) {\n this.searchText.set('');\n this.#applyFilterDebounced('');\n }\n }\n\n #applyFilterDebounced(text: string) {\n if (this.#searchDebounce) {\n clearTimeout(this.#searchDebounce);\n }\n this.#searchDebounce = setTimeout(() => {\n const source = this.resolvedDataSource();\n const query = text?.trim() ?? '';\n if (query) {\n source.filter({ field: this.textField(), value: query, operator: { type: 'contains' } });\n this.#filterApplied = true;\n } else {\n source.clearFilter();\n }\n source.refresh();\n }, 300);\n }\n\n async #resolveSelectedItems(values: unknown[]) {\n const revision = ++this.#resolveRevision;\n const resolved = await Promise.all(values.map((value) => Promise.resolve(this.#resolveItem(value))));\n if (revision !== this.#resolveRevision) {\n return;\n }\n const items = resolved.filter((item): item is AXLookupItem => item != null);\n this.selectedItems.set(items);\n if (this.#selectionInitialized) {\n this.onSelectionChanged.emit({\n component: this,\n htmlElement: this.nativeElement,\n isUserInteraction: this.#isUserInteraction,\n items,\n value: this.value(),\n });\n }\n this.#selectionInitialized = true;\n }\n\n #seedItemsCache(items: AXLookupItem[]) {\n if (!items?.length) {\n return;\n }\n const field = this.valueField();\n for (const item of items) {\n const key = item?.[field];\n if (key == null) {\n continue;\n }\n this.#itemsCache.set(key, item);\n this.#itemsCache.set(String(key), item);\n }\n }\n\n #resolveItem(value: unknown): AXLookupItem | Promise<AXLookupItem | null> | null {\n const cached = this.#itemsCache.get(value) ?? this.#itemsCache.get(String(value));\n if (cached) {\n return cached;\n }\n\n if (this.isTreeMode()) {\n const nodes = this.treeDataSource();\n if (Array.isArray(nodes)) {\n const found = this.#findTreeNode(nodes, value);\n if (found) {\n this.#itemsCache.set(value, found);\n return found;\n }\n }\n return this.#fallbackItem(value);\n }\n\n const source = this.resolvedDataSource();\n const result = source.find(value);\n if (result == null) {\n return this.#fallbackItem(value);\n }\n if (result instanceof Promise) {\n return result.then((item) => {\n if (item) {\n this.#itemsCache.set(value, item);\n return item;\n }\n return this.#fallbackItem(value);\n });\n }\n this.#itemsCache.set(value, result);\n return result;\n }\n\n #fallbackItem(value: unknown): AXLookupItem {\n return { [this.valueField()]: value, [this.textField()]: String(value) };\n }\n\n #findTreeNode(nodes: AXLookupItem[], value: unknown): AXLookupItem | null {\n for (const node of nodes) {\n if (String(node[this.valueField()]) === String(value)) {\n return node;\n }\n const children = node['children'];\n if (Array.isArray(children)) {\n const found = this.#findTreeNode(children as AXLookupItem[], value);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n #valuesEqual(a: unknown, b: unknown): 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((item, index) => item == b[index]);\n }\n return false;\n }\n\n /** Emits onValueChanged when the value actually changes (skips the initial value). */\n #emitValueChanged(value: unknown | unknown[] | null) {\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 /** 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","<div\n #origin\n class=\"ax-editor-container ax-{{ look() }} ax-default\"\n [class.ax-lookup-trigger]=\"!isEditableTrigger()\"\n [class.ax-lookup-trigger-multiple]=\"isMultiple()\"\n [class.ax-state-disabled]=\"disabled()\"\n [class.ax-state-readonly]=\"readonly()\"\n (click)=\"onTriggerClick()\"\n>\n <ng-content select=\"ax-prefix\"></ng-content>\n\n @if (isMultiple()) {\n <div class=\"ax-lookup-chips\">\n @for (item of selectedItems(); track trackSelectedKey(item)) {\n <ax-chips class=\"ax-sm\" color=\"primary\" look=\"twotone\" [text]=\"selectedTemplate() ? '' : getItemText(item)\">\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 <input\n #triggerSearchInput\n type=\"text\"\n class=\"ax-input ax-lookup-trigger-search\"\n [class.ax-lookup-select-input]=\"!isEditableTrigger()\"\n [placeholder]=\"triggerSearchPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !isEditableTrigger()\"\n [attr.inputmode]=\"isEditableTrigger() ? null : 'none'\"\n [value]=\"searchText()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n (keydown)=\"onTriggerKeydown($event)\"\n (beforeinput)=\"onBeforeInput($event)\"\n (focus)=\"emitOnFocus($event)\"\n (blur)=\"emitOnBlur($event)\"\n />\n </div>\n } @else {\n <div class=\"ax-lookup-value\">\n @if (showSelectedTemplate()) {\n <div class=\"ax-lookup-selected-content\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: selectedItems()[0] }\"\n />\n </div>\n }\n <input\n #triggerSearchInput\n type=\"text\"\n class=\"ax-input\"\n [class.ax-lookup-select-input]=\"!isEditableTrigger()\"\n [class.ax-lookup-input-overlay]=\"showSelectedTemplate()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !isEditableTrigger()\"\n [attr.inputmode]=\"isEditableTrigger() ? null : 'none'\"\n [value]=\"searchText()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n (keydown)=\"onTriggerKeydown($event)\"\n (beforeinput)=\"onBeforeInput($event)\"\n (focus)=\"emitOnFocus($event)\"\n (blur)=\"emitOnBlur($event)\"\n />\n </div>\n }\n\n @if (selectedValues().length > 0 && !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 >\n <span\n class=\"ax-icon\"\n [class.ax-icon-chevron-down]=\"!expanded()\"\n [class.ax-icon-chevron-up]=\"expanded()\"\n ></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]=\"'clickOut'\"\n [placement]=\"'bottom-start'\"\n [width]=\"isActionsheetStyle() ? '100%' : origin.offsetWidth + 'px'\"\n [adaptivityEnabled]=\"isActionsheetStyle()\"\n [disabled]=\"disabled() || readonly()\"\n (onClosed)=\"onPopoverClosed()\"\n>\n <div class=\"ax-lookup-popup\" [class.ax-is-actionsheet]=\"isActionsheetStyle()\" [class.ax-is-alternate]=\"alternate()\" (keydown.escape)=\"close()\">\n @if (isActionsheetStyle()) {\n <ax-header class=\"ax-solid\">\n <ax-title>{{ caption() || placeholder() || ('@acorex:selectbox.popover.title' | translate | async) }}</ax-title>\n <ax-close-button [icon]=\"isMultiple() ? 'ax-icon ax-icon-check' : 'ax-icon ax-icon-close'\"></ax-close-button>\n </ax-header>\n }\n <ng-content select=\"ax-header\"></ng-content>\n @if (expanded()) {\n @switch (mode()) {\n @case ('drop-down-list') {\n <ax-lookup-drop-down-list\n [dataSource]=\"resolvedDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [itemHeight]=\"itemHeight()\"\n [maxVisibleItems]=\"maxVisibleItems()\"\n [itemTemplate]=\"itemTemplate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loadingTemplate]=\"loadingTemplate()\"\n [alternate]=\"alternate()\"\n (itemClick)=\"handleSinglePick($event)\"\n (navigateOut)=\"onListNavigateOut($event)\"\n />\n }\n @case ('multi-select') {\n <ax-lookup-multi-select\n [dataSource]=\"resolvedDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [itemHeight]=\"itemHeight()\"\n [maxVisibleItems]=\"maxVisibleItems()\"\n [itemTemplate]=\"itemTemplate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loadingTemplate]=\"loadingTemplate()\"\n [alternate]=\"alternate()\"\n (itemClick)=\"handleMultiToggle($event)\"\n (navigateOut)=\"onListNavigateOut($event)\"\n />\n }\n @case ('drop-down-tree') {\n <ax-lookup-drop-down-tree\n [dataSource]=\"treeDataSource()!\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [nodeTemplate]=\"$any(itemTemplate())\"\n (itemClick)=\"handleSinglePick($event)\"\n />\n }\n @case ('multi-select-tree') {\n <ax-lookup-multi-select-tree\n [dataSource]=\"treeDataSource()!\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [selectionBehavior]=\"treeSelectionBehavior()\"\n [nodeTemplate]=\"$any(itemTemplate())\"\n (selectionChange)=\"handleTreeSelectionChange($event)\"\n />\n }\n @case ('multi-column') {\n <ax-lookup-multi-column\n [dataSource]=\"resolvedDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"textField()\"\n [disabledField]=\"disabledField()\"\n [selectedValues]=\"selectedValues()\"\n [itemHeight]=\"itemHeight()\"\n [maxVisibleItems]=\"maxVisibleItems()\"\n [columns]=\"columns()\"\n [itemTemplate]=\"itemTemplate()\"\n [emptyTemplate]=\"emptyTemplate()\"\n [loadingTemplate]=\"loadingTemplate()\"\n [alternate]=\"alternate()\"\n (itemClick)=\"handleSinglePick($event)\"\n />\n }\n }\n }\n <ng-content select=\"ax-footer\"></ng-content>\n </div>\n</ax-popover>\n","import { NgModule } from '@angular/core';\nimport { AXLookupComponent } from './lookup.component';\nimport { AXLookupDropDownListComponent } from './views/lookup-drop-down-list.component';\nimport { AXLookupDropDownTreeComponent } from './views/lookup-drop-down-tree.component';\nimport { AXLookupMultiColumnComponent } from './views/lookup-multi-column.component';\nimport { AXLookupMultiSelectTreeComponent } from './views/lookup-multi-select-tree.component';\nimport { AXLookupMultiSelectComponent } from './views/lookup-multi-select.component';\n\n@NgModule({\n imports: [\n AXLookupComponent,\n AXLookupDropDownListComponent,\n AXLookupMultiSelectComponent,\n AXLookupDropDownTreeComponent,\n AXLookupMultiSelectTreeComponent,\n AXLookupMultiColumnComponent,\n ],\n exports: [\n AXLookupComponent,\n AXLookupDropDownListComponent,\n AXLookupMultiSelectComponent,\n AXLookupDropDownTreeComponent,\n AXLookupMultiSelectTreeComponent,\n AXLookupMultiColumnComponent,\n ],\n})\nexport class AXLookupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1"],"mappings":"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"}