{"version":3,"file":"acorex-components-lookup.mjs","sources":["../../../../packages/components/lookup/src/lib/lookup-tree-table-data-source.ts","../../../../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-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, AXDataSourceQuery } from '@acorex/cdk/common';\nimport { AXTreeViewDataSource, AXTreeViewNode } from '@acorex/components/tree-view';\nimport { AXLookupItem } from './lookup.types';\n\n/**\n * Options used when adapting a lookup `treeDataSource` into an `AXDataSource`\n * that `ax-data-table` can expand via `parentField`.\n */\nexport interface AXLookupTreeTableDataSourceOptions {\n  valueField: string;\n  textField: string;\n  parentField: string;\n  hasChildrenField: string;\n}\n\n/**\n * Converts a drop-down-tree datasource (nested array or lazy callback) into an\n * `AXDataSource` that a multi-column data table can load and expand.\n */\nexport function createLookupTreeTableDataSource(\n  source: AXTreeViewDataSource,\n  options: AXLookupTreeTableDataSourceOptions,\n): AXDataSource<AXLookupItem> {\n  const isCallback = typeof source === 'function';\n\n  return new AXDataSource<AXLookupItem>({\n    pageSize: 8,\n    key: options.valueField,\n    load: (query) => loadTreeTableRows(source, options, query, isCallback),\n    byKey: (key) => findTreeTableItem(source, options.valueField, key),\n  });\n}\n\nasync function loadTreeTableRows(\n  source: AXTreeViewDataSource,\n  options: AXLookupTreeTableDataSourceOptions,\n  query: AXDataSourceQuery,\n  isCallback: boolean,\n): Promise<{ items: AXLookupItem[]; total: number }> {\n  const parentFilter = query.filter?.field === options.parentField ? query.filter : undefined;\n  const textFilter = query.filter && query.filter.field !== options.parentField ? query.filter : undefined;\n\n  if (parentFilter) {\n    const children = await loadChildren(source, options, parentFilter.value, isCallback);\n    return { items: children, total: children.length };\n  }\n\n  const roots = mapTreeNodes(await loadRoots(source, isCallback), options);\n  const items = textFilter ? filterTreeNodes(roots, options.textField, String(textFilter.value ?? '')) : roots;\n  return { items, total: items.length };\n}\n\nasync function loadRoots(source: AXTreeViewDataSource, isCallback: boolean): Promise<AXTreeViewNode[]> {\n  if (!isCallback) {\n    return (source as AXTreeViewNode[]) ?? [];\n  }\n  return (await (source as (nodeId?: string) => AXTreeViewNode[] | Promise<AXTreeViewNode[]>)()) ?? [];\n}\n\nasync function loadChildren(\n  source: AXTreeViewDataSource,\n  options: AXLookupTreeTableDataSourceOptions,\n  parentId: unknown,\n  isCallback: boolean,\n): Promise<AXLookupItem[]> {\n  if (isCallback) {\n    const nodes =\n      (await (source as (nodeId?: string) => AXTreeViewNode[] | Promise<AXTreeViewNode[]>)(String(parentId))) ?? [];\n    return mapTreeNodes(nodes, options);\n  }\n\n  const parent = findTreeNode(source as AXTreeViewNode[], options.valueField, parentId);\n  const children = Array.isArray(parent?.['children']) ? (parent['children'] as AXTreeViewNode[]) : [];\n  return mapTreeNodes(children, options);\n}\n\nfunction mapTreeNodes(nodes: AXTreeViewNode[], options: AXLookupTreeTableDataSourceOptions): AXLookupItem[] {\n  return nodes.map((node) => mapTreeNode(node, options));\n}\n\nfunction mapTreeNode(node: AXTreeViewNode, options: AXLookupTreeTableDataSourceOptions): AXLookupItem {\n  const rawChildren = node['children'];\n  const children = Array.isArray(rawChildren) ? mapTreeNodes(rawChildren as AXTreeViewNode[], options) : undefined;\n  const childrenCount = node['childrenCount'];\n  const hasChildren =\n    (children?.length ?? 0) > 0 ||\n    (typeof childrenCount === 'number' && childrenCount > 0) ||\n    node['hasChild'] === true ||\n    node['hasChildren'] === true;\n\n  return {\n    ...node,\n    [options.hasChildrenField]: hasChildren,\n    ...(children && children.length > 0 ? { children } : {}),\n  };\n}\n\n/**\n * Recursively filters a nested tree by `textField` (case-insensitive contains).\n * A node is kept if it matches or any descendant matches. Matching parents keep\n * all children. Every kept ancestor is a new object with `expanded: true` so\n * nested hits are visible without mutating the original tree.\n */\nexport function filterTreeNodes(nodes: AXLookupItem[], textField: string, query: string): AXLookupItem[] {\n  const needle = query.trim().toLowerCase();\n  if (!needle) {\n    return nodes;\n  }\n\n  const result: AXLookupItem[] = [];\n  for (const node of nodes) {\n    const rawChildren = node['children'];\n    const nested = Array.isArray(rawChildren) ? (rawChildren as AXLookupItem[]) : undefined;\n    const children = nested ? filterTreeNodes(nested, textField, needle) : undefined;\n    const selfMatch = String(node[textField] ?? '')\n      .toLowerCase()\n      .includes(needle);\n\n    if (selfMatch) {\n      result.push({\n        ...node,\n        ...(nested && nested.length > 0 ? { children: cloneTreeNodes(nested), expanded: true } : {}),\n      });\n    } else if (children && children.length > 0) {\n      result.push({\n        ...node,\n        children,\n        expanded: true,\n      });\n    }\n  }\n  return result;\n}\n\nfunction cloneTreeNodes(nodes: AXLookupItem[]): AXLookupItem[] {\n  return nodes.map((node) => {\n    const raw = node['children'];\n    const children = Array.isArray(raw) && raw.length > 0 ? cloneTreeNodes(raw as AXLookupItem[]) : undefined;\n    return children ? { ...node, children } : { ...node };\n  });\n}\n\n/** Immutable copy of a nested tree so tree-view mutations cannot poison the source. */\nexport function cloneLookupTreeNodes(nodes: AXLookupItem[]): AXLookupItem[] {\n  return cloneTreeNodes(nodes);\n}\n\n/** Depth-first flattening of nested `children` arrays. */\nexport function flattenTreeNodes(nodes: AXLookupItem[]): AXLookupItem[] {\n  const result: AXLookupItem[] = [];\n  for (const node of nodes) {\n    result.push(node);\n    const children = node['children'];\n    if (Array.isArray(children)) {\n      result.push(...flattenTreeNodes(children as AXLookupItem[]));\n    }\n  }\n  return result;\n}\n\nfunction findTreeTableItem(\n  source: AXTreeViewDataSource,\n  valueField: string,\n  key: unknown,\n): AXLookupItem | undefined {\n  if (typeof source === 'function' || !Array.isArray(source)) {\n    return undefined;\n  }\n  return findTreeNode(source, valueField, key) ?? undefined;\n}\n\nfunction findTreeNode(nodes: AXTreeViewNode[], valueField: string, key: unknown): AXTreeViewNode | null {\n  for (const node of nodes) {\n    if (String(node[valueField]) === String(key)) {\n      return node;\n    }\n    const children = node['children'];\n    if (Array.isArray(children)) {\n      const found = findTreeNode(children as AXTreeViewNode[], valueField, key);\n      if (found) {\n        return found;\n      }\n    }\n  }\n  return null;\n}\n","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   * Default option chrome is not applied on top of the template.\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  /** Whether the filtered datasource currently has no items. */\n  hasNoMatches(): boolean {\n    return this.isEmpty();\n  }\n\n  /** Number of items in the current filtered result set. */\n  matchCount(): number {\n    return this.totalCount();\n  }\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  /**\n   * Commit on mousedown (not click) so a searchable trigger blur cannot destroy the\n   * list before the pick is applied.\n   */\n  protected handleItemMouseDown(event: Event, item: AXLookupItem | null | undefined) {\n    event.preventDefault();\n    event.stopPropagation();\n    this.handleItemClick(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 { 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: [ScrollingModule, NgTemplateOutlet, AXTranslatorPipe, AsyncPipe, AXListNavigationModule],\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          (mousedown)=\"handleItemMouseDown($event, 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                <span class=\"ax-lookup-option-check ax-icon ax-icon-check\" aria-hidden=\"true\"></span>\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 { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\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, NgTemplateOutlet, AXTranslatorPipe, AsyncPipe],\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      <div class=\"ax-lookup-tree\">\n        @for (instance of treeInstances(); track instance.id) {\n          <ax-tree-view\n            [datasource]=\"instance.source\"\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            [alternate]=\"alternate()\"\n            (onSelectionChange)=\"handleSelectionChange($event)\"\n          />\n        }\n      </div>\n    }\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   * Custom template rendered when the filtered tree has no nodes.\n   */\n  emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n  /**\n   * When `true`, visible tree nodes use alternating background colors.\n   */\n  alternate = input(false);\n\n  /**\n   * Unique id that changes on every search apply so a new tree instance is created.\n   */\n  filterKey = input('0');\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 isEmpty = computed(() => {\n    const source = this.dataSource();\n    return Array.isArray(source) && source.length === 0;\n  });\n\n  protected treeInstances = computed(() => [{ id: this.filterKey(), source: this.dataSource() }]);\n\n  /** Whether the filtered tree currently has no nodes. */\n  hasNoMatches(): boolean {\n    return this.isEmpty();\n  }\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  TemplateRef,\n  ViewEncapsulation,\n  computed,\n  input,\n  output,\n} from '@angular/core';\nimport { AXLookupColumn, AXLookupItem, AXLookupItemClickEvent } from '../lookup.types';\n\n/**\n * Internal mini component for the `multi-column-tree` lookup mode:\n * a multi-column `ax-data-table` with a drop-down tree inside it.\n * Rows expand/collapse via the data-table hierarchy (`parentField` / nested `children`).\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-lookup-multi-column-tree',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  imports: [NgTemplateOutlet, AXDataTableComponent, AXDataTableTextColumnComponent],\n  host: {\n    class: 'ax-lookup-multi-column ax-lookup-multi-column-tree',\n    '[style.height.px]': 'tableHeight()',\n  },\n  template: `\n    <ax-data-table\n      class=\"ax-lookup-multi-column-table\"\n      look=\"minimal\"\n      [dataSource]=\"dataSource()\"\n      [parentField]=\"parentField()\"\n      [hasChildrenField]=\"hasChildrenField()\"\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          [expandHandler]=\"isExpandColumn($index, 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        (mousedown)=\"handleItemMouseDown($event, 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 AXLookupMultiColumnTreeComponent {\n  /**\n   * The datasource providing hierarchical rows (roots on load, children via `parentField`).\n   */\n  dataSource = input.required<AXDataSource<AXLookupItem>>();\n\n  /**\n   * The item property used as the selection value (also the data-table row key).\n   */\n  valueField = input('id');\n\n  /**\n   * The item property used as the display text. The matching column shows the expand control\n   * unless another column sets `expandHandler`.\n   */\n  textField = input('text');\n\n  /**\n   * The item property marking an item as disabled.\n   */\n  disabledField = input('disabled');\n\n  /**\n   * Field used by the data table to fetch children (`AXDataSource` filter on expand).\n   */\n  parentField = input('parentId');\n\n  /**\n   * Field used by the data table to decide whether a row can expand.\n   */\n  hasChildrenField = input('hasChild');\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 (not when expanding/collapsing).\n   */\n  itemClick = output<AXLookupItemClickEvent>();\n\n  /**\n   * Header (~40px) + up to `maxVisibleItems` body rows. Expanded children scroll inside.\n   */\n  protected tableHeight = computed(() => 40 + this.maxVisibleItems() * this.itemHeight());\n\n  protected loadingConfig = computed(() => ({\n    enabled: true,\n    animation: true,\n    loadingTemplate: this.loadingTemplate(),\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  protected isExpandColumn(index: number, column: AXLookupColumn): boolean {\n    if (column.expandHandler === true) {\n      return true;\n    }\n    if (this.columns().some((item) => item.expandHandler === true)) {\n      return false;\n    }\n    const textIndex = this.columns().findIndex((item) => item.field === this.textField());\n    return (textIndex === -1 ? 0 : textIndex) === index;\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 handleItemMouseDown(event: Event, item: AXLookupItem | null | undefined) {\n    event.preventDefault();\n    event.stopPropagation();\n    this.handleItemClick(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  private getValue(item: AXLookupItem): unknown {\n    return item?.[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        (mousedown)=\"handleItemMouseDown($event, 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.#applyLoadedItems(source.cachedItems, source.totalCount);\n      });\n\n      const changedSub = source.onChanged.subscribe((event) => {\n        this.#applyLoadedItems(event.cachedItems, event.totalCount);\n      });\n\n      // Fetch page 0 only when the source has never loaded. Reopen remounts this\n      // view; setPage(0) is a no-op on a warm source and must not force a new API call.\n      queueMicrotask(() => {\n        if (!source.cachedItems.some((item) => item != null)) {\n          source.setPage(0);\n        }\n      });\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  #applyLoadedItems(cachedItems: Array<AXLookupItem | null | undefined>, totalCount: number) {\n    this.#loadedItems = cachedItems.filter((item): item is AXLookupItem => item != null);\n    this.#totalCount.set(totalCount);\n    this.#syncTablePageSize();\n    this.tableDataSource.refresh({ reset: true });\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 handleItemMouseDown(event: Event, item: AXLookupItem | null | undefined) {\n    event.preventDefault();\n    event.stopPropagation();\n    this.handleItemClick(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 { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\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, NgTemplateOutlet, AXTranslatorPipe, AsyncPipe],\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      <div class=\"ax-lookup-tree\">\n        @for (instance of treeInstances(); track instance.id) {\n          <ax-tree-view\n            [datasource]=\"instance.source\"\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            [alternate]=\"alternate()\"\n            (onSelectionChange)=\"handleSelectionChange($event)\"\n          />\n        }\n      </div>\n    }\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   * Custom template rendered when the filtered tree has no nodes.\n   */\n  emptyTemplate = input<TemplateRef<unknown> | undefined>(undefined);\n\n  /**\n   * When `true`, visible tree nodes use alternating background colors.\n   */\n  alternate = input(false);\n\n  /**\n   * Unique id that changes on every search apply so a new tree instance is created.\n   */\n  filterKey = input('0');\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 isEmpty = computed(() => {\n    const source = this.dataSource();\n    return Array.isArray(source) && source.length === 0;\n  });\n\n  protected treeInstances = computed(() => [{ id: this.filterKey(), source: this.dataSource() }]);\n\n  /** Whether the filtered tree currently has no nodes. */\n  hasNoMatches(): boolean {\n    return this.isEmpty();\n  }\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 { AXCheckBoxComponent } from '@acorex/components/check-box';\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, AXCheckBoxComponent],\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 ax-lookup-option-multiple\"\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          (mousedown)=\"handleItemMouseDown($event, item)\"\n          (onKeypress)=\"handleItemKeypress($event, item)\"\n        >\n          @if (item != null) {\n            <ax-check-box\n              class=\"ax-lookup-checkbox\"\n              [tabIndex]=\"-1\"\n              [value]=\"isSelected(item)\"\n              [disabled]=\"isDisabled(item)\"\n            ></ax-check-box>\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  AXHtmlEvent,\n  AXItemClickEvent,\n  AXItemSelectedEvent,\n  AXStyleLookType,\n  AXValuableComponent,\n  AXValueChangedEvent,\n  NXValueComponent,\n  convertArrayToDataSource,\n} from '@acorex/cdk/common';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXChipsComponent } from '@acorex/components/chips';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXSearchBoxComponent } from '@acorex/components/search-box';\nimport {\n  AXTreeViewCallback,\n  AXTreeViewDataSource,\n  AXTreeViewNode,\n  AXTreeViewSelectionBehavior,\n} from '@acorex/components/tree-view';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  ElementRef,\n  TemplateRef,\n  ViewEncapsulation,\n  afterRenderEffect,\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 { createLookupTreeTableDataSource, cloneLookupTreeNodes, filterTreeNodes, flattenTreeNodes } from './lookup-tree-table-data-source';\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 { AXLookupMultiColumnTreeComponent } from './views/lookup-multi-column-tree.component';\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 six 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 tree-like structure for single item selection; when searchable, the trigger\n *   input filters nested nodes as you type (on small screens the search field is inside the actionsheet).\n * - `multi-select-tree` — a tree-like structure for multiple item selection; searchable the same way.\n * - `multi-column` — an `ax-data-table` grid; when searchable, the trigger input filters as you type\n *   (on small screens the search field is inside the actionsheet).\n * - `multi-column-tree` — a multi-column `ax-data-table` with a drop-down tree inside it\n *   (expandable hierarchical rows). Uses `treeDataSource` + `columns`, or a hierarchical `dataSource`.\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    AXButtonComponent,\n    AXChipsComponent,\n    AXDecoratorModule,\n    AXPopoverComponent,\n    AXSearchBoxComponent,\n    AXLookupDropDownListComponent,\n    AXLookupMultiSelectComponent,\n    AXLookupDropDownTreeComponent,\n    AXLookupMultiSelectTreeComponent,\n    AXLookupMultiColumnComponent,\n    AXLookupMultiColumnTreeComponent,\n  ],\n  providers: [\n    { provide: AXComponent, useExisting: AXLookupComponent },\n    { provide: AXClearableComponent, useExisting: AXLookupComponent },\n    { provide: AXClosableComponent, useExisting: AXLookupComponent },\n    { provide: AXValuableComponent, useExisting: AXLookupComponent },\n  ],\n})\nexport class AXLookupComponent extends NXValueComponent implements FormValueControl<unknown | unknown[] | null> {\n  readonly #platform = inject(AXPlatform);\n  readonly #destroyRef = inject(DestroyRef);\n\n  /**\n   * The name of the form field, used by validation rules and `ax-form.validate(names)`.\n   */\n  name = input('');\n\n  /**\n   * The 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   * and for `multi-column-tree` when `treeDataSource` is not set.\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`, `multi-column-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` and `multi-column-tree` modes\n   * (rendered as `ax-text-column` in `ax-data-table`).\n   */\n  columns = input<AXLookupColumn[]>([]);\n\n  /**\n   * Field used by `multi-column-tree` to fetch children when a row is expanded\n   * (`AXDataSource` filter). Defaults to `parentId`. Nested `children` arrays are also supported.\n   */\n  treeParentField = input('parentId');\n\n  /**\n   * Field used by `multi-column-tree` to decide whether a row shows an expand control.\n   * Defaults to `hasChild`. Nodes with `children` / `childrenCount` are mapped automatically\n   * when using `treeDataSource`.\n   */\n  hasChildrenField = input('hasChild');\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 all modes, including `drop-down-tree` and `multi-select-tree`.\n   * On small screens with `adaptivityEnabled`, search is typed in the actionsheet instead of the trigger.\n   */\n  searchable = input(true);\n\n  /**\n   * When `true` (default), the popup list uses the alternate actionsheet presentation on small\n   * screens (`SM`). Searchable list modes then show a search field inside the sheet. When `false`,\n   * the list always opens as an anchored dropdown.\n   */\n  adaptivityEnabled = input(true);\n\n  /**\n   * Title shown in the actionsheet header on small screens. Falls back to `placeholder`.\n   */\n  caption = input('');\n\n  /**\n   * When `true`, list rows use alternating background colors for easier scanning\n   * (all lookup modes, including drop-down-tree and multi-select-tree).\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` / `multi-select-tree`), and for the in-sheet search field on small screens.\n   * Falls back to `placeholder` when the selection is empty on desktop.\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   * Default option chrome (padding, typography, check icon) is not applied; only the\n   * template's styles are used. Selection and hover backgrounds remain on the row.\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(() => {\n    const mode = this.mode();\n    return (\n      mode === 'drop-down-tree' ||\n      mode === 'multi-select-tree' ||\n      (mode === 'multi-column-tree' && this.treeDataSource() != null)\n    );\n  });\n\n  /** Whether the current mode can filter as you type (list, table, or tree). */\n  protected isListSearchMode = computed(() => {\n    const mode = this.mode();\n    return (\n      mode === 'drop-down-list' ||\n      mode === 'multi-select' ||\n      mode === 'drop-down-tree' ||\n      mode === 'multi-select-tree' ||\n      mode === 'multi-column' ||\n      mode === 'multi-column-tree'\n    );\n  });\n\n  /** Whether search filters the tree datasource instead of `AXDataSource`. */\n  #isTreeOnlySearchMode(): boolean {\n    const mode = this.mode();\n    return mode === 'drop-down-tree' || mode === 'multi-select-tree';\n  }\n\n  /** Whether the trigger input is writable and filters as you type (desktop only). */\n  protected isEditableTrigger = computed(\n    () => this.searchable() && !this.readonly() && !this.isActionsheetStyle() && this.isListSearchMode(),\n  );\n\n  /** Whether search is typed in the actionsheet instead of the trigger. */\n  protected isSheetSearchEnabled = computed(\n    () => this.searchable() && !this.readonly() && this.isActionsheetStyle() && this.isListSearchMode(),\n  );\n\n  /** Query typed in the actionsheet search field (independent of the trigger display text). */\n  protected sheetSearchText = signal('');\n\n  /**\n   * Applied tree search query. Set only from `#applyFilterNow` so opening a single-select\n   * with the selected label in the trigger does not filter the tree.\n   */\n  readonly #treeFilterQuery = signal('');\n  readonly #treeFilterEpoch = signal(0);\n\n  /** Increments on every tree filter apply so the tree view remounts with a new instance. */\n  protected treeFilterKey = computed(() => String(this.#treeFilterEpoch()));\n\n  /** Reused so closing/reopening the popup does not create a new AXDataSource (which would miss cache). */\n  #multiColumnTreeTableSource?: AXDataSource<AXLookupItem>;\n  #multiColumnTreeTableKey?: string;\n  #multiColumnTreeInput?: AXTreeViewDataSource;\n\n  /** The datasource for list-based modes; plain arrays are converted. */\n  protected resolvedDataSource = computed<AXDataSource<AXLookupItem>>(() => {\n    const tree = this.treeDataSource();\n    if (this.mode() === 'multi-column-tree' && tree) {\n      const key = `${this.valueField()}|${this.textField()}|${this.treeParentField()}|${this.hasChildrenField()}`;\n      if (\n        this.#multiColumnTreeTableSource &&\n        this.#multiColumnTreeInput === tree &&\n        this.#multiColumnTreeTableKey === key\n      ) {\n        return this.#multiColumnTreeTableSource;\n      }\n\n      const cachedTree: AXTreeViewDataSource = Array.isArray(tree)\n        ? tree\n        : (nodeId?: string) => this.#loadCachedTreeNodes(tree, nodeId);\n      this.#multiColumnTreeInput = tree;\n      this.#multiColumnTreeTableKey = key;\n      this.#multiColumnTreeTableSource = createLookupTreeTableDataSource(cachedTree, {\n        valueField: this.valueField(),\n        textField: this.textField(),\n        parentField: this.treeParentField(),\n        hasChildrenField: this.hasChildrenField(),\n      });\n      return this.#multiColumnTreeTableSource;\n    }\n\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  /**\n   * Tree callback results keyed by parent id. Survives popup remount so\n   * drop-down-tree / multi-select-tree do not refetch on every open.\n   */\n  readonly #treeChildrenCache = new WeakMap<AXTreeViewCallback, Map<string, Promise<AXTreeViewNode[]>>>();\n\n  protected resolvedTreeDataSource = computed<AXTreeViewDataSource>(() => {\n    this.#treeFilterEpoch();\n    const source = this.treeDataSource();\n    const query = this.#treeFilterQuery();\n    const textField = this.textField();\n    if (!source) {\n      return [];\n    }\n    if (Array.isArray(source)) {\n      return query ? filterTreeNodes(source, textField, query) : cloneLookupTreeNodes(source);\n    }\n    if (!query) {\n      return (nodeId?: string) => this.#loadCachedTreeNodes(source, nodeId);\n    }\n    return (nodeId?: string) => this.#loadFilteredCachedTreeNodes(source, nodeId, query);\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.isMultiple() ? '' : 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  /** Placeholder for the editable trigger search input. */\n  protected triggerSearchPlaceholder = computed(() => {\n    if (this.isActionsheetStyle()) {\n      return this.isMultiple() && this.selectedItems().length > 0 ? '' : this.placeholder();\n    }\n    if (this.isMultiple() && this.selectedItems().length > 0) {\n      return this.searchPlaceholder();\n    }\n    return this.placeholder();\n  });\n\n  protected popoverRef = viewChild(AXPopoverComponent);\n  protected originRef = viewChild<ElementRef<HTMLElement>>('origin');\n  protected popupRef = viewChild<ElementRef<HTMLElement>>('popup');\n  protected triggerSearchInput = viewChild<ElementRef<HTMLInputElement>>('triggerSearchInput');\n\n  readonly #document = inject(DOCUMENT);\n  protected listView = viewChild(AXLookupListViewBase);\n  protected dropDownTreeView = viewChild(AXLookupDropDownTreeComponent);\n  protected multiSelectTreeView = viewChild(AXLookupMultiSelectTreeComponent);\n  protected sheetSearchRef = viewChild<AXSearchBoxComponent>('sheetSearch');\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  #searchEnterRevision = 0;\n  #sheetSearchFocused = false;\n\n  constructor() {\n    super();\n\n    effect(() => this.#emitValueChanged(this.value()));\n    effect(() => this.#emitOpenedOrClosed(this.expanded()));\n    effect(() => {\n      this.adaptivityEnabled();\n      untracked(() => this.#syncActionsheetStyle());\n    });\n\n    this.#platform.resize.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => {\n      this.#syncActionsheetStyle();\n      // Match dropdown-box: close anchored dropdowns on resize; keep actionsheet open.\n      if (this.expanded() && !this.isActionsheetStyle()) {\n        this.close();\n      }\n    });\n\n    // Seed the actionsheet flag once.\n    this.#syncActionsheetStyle();\n\n    // 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    afterRenderEffect(() => {\n      if (!this.expanded()) {\n        this.#sheetSearchFocused = false;\n        return;\n      }\n      this.#tryFocusSheetSearch();\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.#focusPopupSearchOrList());\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.#focusPopupSearchOrList());\n      return;\n    }\n\n    if (e.key === 'Enter' && this.isEditableTrigger()) {\n      this.#onSearchEnter(e);\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.#focusPopupSearchOrList());\n      }\n    }\n  }\n\n  /** Filters the datasource from the actionsheet search field and handles Enter with no matches. */\n  protected onSheetSearchKeydown(e: AXHtmlEvent<KeyboardEvent>) {\n    const event = e.nativeEvent;\n    if (!event || event.key !== 'Enter') {\n      return;\n    }\n    this.#onSearchEnter(event);\n  }\n\n  /**\n   * Enter in search never submits the surrounding form.\n   * - No matches: single-select value is cleared (`null`).\n   * - Exactly one match: that item is selected (no list navigation required).\n   * - Multiple matches: nothing is selected.\n   */\n  #onSearchEnter(event: KeyboardEvent) {\n    event.preventDefault();\n    event.stopPropagation();\n    event.stopImmediatePropagation();\n    void this.#commitOrClearFromSearch();\n  }\n\n  async #commitOrClearFromSearch() {\n    const revision = ++this.#searchEnterRevision;\n    this.#flushPendingFilter();\n\n    if (this.#isTreeOnlySearchMode()) {\n      const nodes = await this.#resolvedFilteredTreeNodes();\n      if (revision !== this.#searchEnterRevision) {\n        return;\n      }\n      const items = this.#enabledTreeItems(nodes);\n      if (items.length === 0) {\n        if (this.#currentSearchQuery() && !this.isMultiple()) {\n          this.reset(true);\n          this.close();\n        }\n        return;\n      }\n      if (items.length !== 1) {\n        return;\n      }\n      this.#commitSearchSelection(items);\n      return;\n    }\n\n    const source = this.resolvedDataSource();\n    if (source.isLoading) {\n      await this.#whenSourceIdle(source);\n      if (revision !== this.#searchEnterRevision) {\n        return;\n      }\n    }\n\n    if (this.#hasNoSearchMatches()) {\n      if (this.#currentSearchQuery() && !this.isMultiple()) {\n        this.reset(true);\n        this.close();\n      }\n      return;\n    }\n\n    if (this.#getSearchMatchCount() !== 1) {\n      return;\n    }\n\n    const item = this.#pickFirstMatch();\n    if (!item) {\n      return;\n    }\n    this.#commitSearchSelection([item]);\n  }\n\n  #commitSearchSelection(items: AXLookupItem[]) {\n    if (items.length === 0) {\n      if (this.#currentSearchQuery() && !this.isMultiple()) {\n        this.reset(true);\n        this.close();\n      }\n      return;\n    }\n\n    if (!this.#isTypedFilterQuery()) {\n      return;\n    }\n\n    const item = this.#pickFirstFromItems(items);\n    if (!item) {\n      return;\n    }\n\n    const event: AXLookupItemClickEvent = { item, value: item[this.valueField()] };\n    if (this.isMultiple()) {\n      this.handleMultiToggle(event);\n    } else {\n      this.handleSinglePick(event);\n    }\n  }\n\n  async #resolvedFilteredTreeNodes(): Promise<AXTreeViewNode[]> {\n    const source = this.resolvedTreeDataSource();\n    if (Array.isArray(source)) {\n      return source;\n    }\n    return (await source()) ?? [];\n  }\n\n  #enabledTreeItems(nodes: AXTreeViewNode[]): AXLookupItem[] {\n    const disabledField = this.disabledField();\n    return flattenTreeNodes(nodes).filter((item) => !item[disabledField]);\n  }\n\n  #pickFirstMatch(): AXLookupItem | null {\n    const disabledField = this.disabledField();\n    const source = this.resolvedDataSource();\n    const items = (source.cachedItems.length ? source.cachedItems : source.items).filter(\n      (item): item is AXLookupItem => item != null && !item[disabledField],\n    );\n    return this.#pickFirstFromItems(items);\n  }\n\n  #pickFirstFromItems(items: AXLookupItem[]): AXLookupItem | null {\n    if (items.length === 0) {\n      return null;\n    }\n    const query = this.#currentSearchQuery().toLowerCase();\n    if (!query) {\n      return items[0];\n    }\n\n    const textOf = (item: AXLookupItem) => String(item?.[this.textField()] ?? '').trim().toLowerCase();\n    return items.find((item) => textOf(item) === query) ?? items.find((item) => textOf(item).includes(query)) ?? items[0];\n  }\n\n  #whenSourceIdle(source: AXDataSource<AXLookupItem>): Promise<void> {\n    if (!source.isLoading) {\n      return Promise.resolve();\n    }\n    return new Promise((resolve) => {\n      const sub = source.onLoadingChanged.subscribe((loading) => {\n        if (!loading) {\n          sub.unsubscribe();\n          resolve();\n        }\n      });\n    });\n  }\n\n  #flushPendingFilter() {\n    if (!this.#searchDebounce) {\n      return;\n    }\n    clearTimeout(this.#searchDebounce);\n    this.#searchDebounce = undefined;\n    this.#applyFilterNow(this.#currentSearchQuery());\n  }\n\n  #currentSearchQuery(): string {\n    if (this.isSheetSearchEnabled()) {\n      return (this.sheetSearchText() || this.#sheetSearchInputValue()).trim();\n    }\n    return this.searchText().trim();\n  }\n\n  #isTypedFilterQuery(): boolean {\n    const query = this.#currentSearchQuery();\n    if (!query) {\n      return false;\n    }\n    if (!this.isSheetSearchEnabled() && !this.isMultiple()) {\n      return query.toLowerCase() !== this.displayText().trim().toLowerCase();\n    }\n    return true;\n  }\n\n  #hasNoSearchMatches(): boolean {\n    return this.#getSearchMatchCount() === 0;\n  }\n\n  #getSearchMatchCount(): number {\n    const list = this.listView();\n    if (list) {\n      return list.matchCount();\n    }\n    const source = this.resolvedDataSource();\n    if (source.isLoading) {\n      return -1;\n    }\n    return source.totalCount;\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 search field when list navigation requests it.\n   */\n  protected onListNavigateOut(_reason: 'up' | 'typeahead') {\n    if (this.isSheetSearchEnabled()) {\n      this.sheetSearchRef()?.focus();\n      return;\n    }\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    this.sheetSearchText.set('');\n    this.#treeFilterQuery.set('');\n    this.#treeFilterEpoch.update((value) => value + 1);\n    if (this.#filterApplied) {\n      this.#filterApplied = false;\n      if (!this.#isTreeOnlySearchMode()) {\n        const source = this.resolvedDataSource();\n        source.clearFilter();\n        source.refresh();\n      }\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  /** Filters the datasource from the actionsheet search field (reads the input so delayed ngModel cannot block typing). */\n  protected onSheetSearchInput() {\n    const query = this.#sheetSearchInputValue();\n    this.sheetSearchText.set(query);\n    this.#applyFilterDebounced(query);\n  }\n\n  /**\n   * Commits a single pick (drop-down-list, drop-down-tree, multi-column, multi-column-tree) 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    this.selectedItems.set([e.item]);\n    this.searchText.set(this.getItemText(e.item));\n    this.#isUserInteraction = true;\n    this.value.set(e.value);\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.isSheetSearchEnabled() && this.sheetSearchText()) {\n      this.#clearSheetSearch();\n    } else 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    if (this.isSheetSearchEnabled() && this.sheetSearchText()) {\n      this.#clearSheetSearch();\n    } else if (this.isEditableTrigger() && this.searchText()) {\n      this.searchText.set('');\n      this.#applyFilterDebounced('');\n    }\n  }\n\n  /** Forwards native focus from the trigger input. */\n  protected emitOnFocus(e: FocusEvent) {\n    this.onFocus.emit({\n      component: this,\n      htmlElement: this.nativeElement,\n      nativeEvent: e,\n    });\n  }\n\n  /** Forwards native blur from the trigger input. */\n  protected emitOnBlur(e: FocusEvent) {\n    this.onBlur.emit({\n      component: this,\n      htmlElement: this.nativeElement,\n      nativeEvent: e,\n    });\n    this.#scheduleCloseOnTriggerBlur(e);\n  }\n\n  /**\n   * Closes the popup when the trigger input loses focus, unless focus moved into the\n   * popover panel or another part of the trigger (e.g. sheet search or list navigation).\n   */\n  #scheduleCloseOnTriggerBlur(e: FocusEvent) {\n    if (!this.expanded()) {\n      return;\n    }\n\n    const related = e.relatedTarget;\n    if (related instanceof Node && this.#isFocusWithinPopupOrTrigger(related)) {\n      return;\n    }\n\n    queueMicrotask(() => {\n      if (!this.expanded()) {\n        return;\n      }\n      const active = this.#document.activeElement;\n      if (active instanceof Node && this.#isFocusWithinPopupOrTrigger(active)) {\n        return;\n      }\n      this.close();\n    });\n  }\n\n  #isFocusWithinPopupOrTrigger(node: Node): boolean {\n    const popup = this.popupRef()?.nativeElement;\n    if (popup?.contains(node)) {\n      return true;\n    }\n    const origin = this.originRef()?.nativeElement;\n    return Boolean(origin?.contains(node));\n  }\n\n  #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.isSheetSearchEnabled() && this.sheetSearchText()) {\n      this.#clearSheetSearch();\n    } else if (this.isEditableTrigger() && this.searchText()) {\n      this.searchText.set('');\n      this.#applyFilterDebounced('');\n    }\n  }\n\n  #clearSheetSearch() {\n    this.sheetSearchText.set('');\n    this.sheetSearchRef()?.commitValue('', false);\n    this.#applyFilterDebounced('');\n  }\n\n  #sheetSearchInputValue(): string {\n    return this.sheetSearchRef()?.getHostElement()?.querySelector('input')?.value ?? '';\n  }\n\n  #tryFocusSheetSearch() {\n    if (!this.isSheetSearchEnabled() || this.#sheetSearchFocused) {\n      return;\n    }\n    const search = this.sheetSearchRef();\n    if (!search) {\n      return;\n    }\n    this.#sheetSearchFocused = true;\n    search.focus();\n  }\n\n  #focusPopupSearchOrList() {\n    if (this.isSheetSearchEnabled()) {\n      this.#tryFocusSheetSearch();\n      return;\n    }\n    this.focusListFirst();\n  }\n\n  #loadCachedTreeNodes(source: AXTreeViewCallback, nodeId?: string): Promise<AXTreeViewNode[]> {\n    let byParent = this.#treeChildrenCache.get(source);\n    if (!byParent) {\n      byParent = new Map();\n      this.#treeChildrenCache.set(source, byParent);\n    }\n\n    const key = nodeId ?? '';\n    const cached = byParent.get(key);\n    if (cached) {\n      return cached;\n    }\n\n    const request = Promise.resolve(source(nodeId)).then(\n      (nodes) => nodes ?? [],\n      (error: unknown) => {\n        byParent.delete(key);\n        throw error;\n      },\n    );\n    byParent.set(key, request);\n    return request;\n  }\n\n  #nodeMayHaveChildren(node: AXTreeViewNode): boolean {\n    const raw = node['children'];\n    if (Array.isArray(raw) && raw.length > 0) {\n      return true;\n    }\n    const count = node['childrenCount'];\n    if (typeof count === 'number' && count > 0) {\n      return true;\n    }\n    return node['hasChild'] === true || node['hasChildren'] === true;\n  }\n\n  /**\n   * Builds a nested tree for search by loading lazy children (using the existing cache)\n   * so a query can match sub-items that have not been expanded yet.\n   */\n  async #hydrateTreeChildrenForSearch(\n    source: AXTreeViewCallback,\n    nodes: AXTreeViewNode[],\n    visited = new Set<string>(),\n  ): Promise<AXTreeViewNode[]> {\n    const valueField = this.valueField();\n    return Promise.all(\n      nodes.map(async (node) => {\n        const raw = node['children'];\n        const nested = Array.isArray(raw) && raw.length > 0 ? (raw as AXTreeViewNode[]) : undefined;\n        if (nested) {\n          const children = await this.#hydrateTreeChildrenForSearch(source, nested, visited);\n          return { ...node, children };\n        }\n\n        const id = String(node[valueField] ?? '');\n        if (!id || !this.#nodeMayHaveChildren(node) || visited.has(id)) {\n          return node;\n        }\n\n        visited.add(id);\n        const loaded = await this.#loadCachedTreeNodes(source, id);\n        const children = await this.#hydrateTreeChildrenForSearch(source, loaded, visited);\n        return { ...node, children };\n      }),\n    );\n  }\n\n  async #loadFilteredCachedTreeNodes(\n    source: AXTreeViewCallback,\n    nodeId: string | undefined,\n    query: string,\n  ): Promise<AXTreeViewNode[]> {\n    const nodes = await this.#loadCachedTreeNodes(source, nodeId);\n    const hydrated = await this.#hydrateTreeChildrenForSearch(source, nodes);\n    return filterTreeNodes(hydrated, this.textField(), query);\n  }\n\n  #applyFilterNow(text: string) {\n    const query = text?.trim() ?? '';\n    if (this.#isTreeOnlySearchMode()) {\n      this.#treeFilterQuery.set(query);\n      this.#treeFilterEpoch.update((value) => value + 1);\n      this.#filterApplied = query.length > 0;\n      return;\n    }\n\n    const source = this.resolvedDataSource();\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  }\n\n  #applyFilterDebounced(text: string) {\n    if (this.#searchDebounce) {\n      clearTimeout(this.#searchDebounce);\n      this.#searchDebounce = undefined;\n    }\n    const query = text?.trim() ?? '';\n    // Restore the full tree immediately when the query is cleared.\n    if (!query) {\n      this.#applyFilterNow('');\n      return;\n    }\n    this.#searchDebounce = setTimeout(() => {\n      this.#searchDebounce = undefined;\n      this.#applyFilterNow(text);\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\" look=\"fill\" [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]=\"isActionsheetStyle() ? 'manual' : 'clickOut'\"\n  [closeOnScroll]=\"!isActionsheetStyle()\"\n  [placement]=\"'bottom-start'\"\n  [width]=\"isActionsheetStyle() ? '100%' : origin.offsetWidth + 'px'\"\n  [adaptivityEnabled]=\"isActionsheetStyle()\"\n  [disabled]=\"disabled() || readonly()\"\n  (onClosed)=\"onPopoverClosed()\"\n>\n  <div\n    #popup\n    class=\"ax-lookup-popup\"\n    [class.ax-is-actionsheet]=\"isActionsheetStyle()\"\n    [class.ax-is-alternate]=\"alternate()\"\n    (keydown.escape)=\"close()\"\n  >\n    @if (isActionsheetStyle()) {\n      <ax-header class=\"ax-solid\">\n        <ax-title>{{ caption() || placeholder() || ('@acorex:selectbox.popover.title' | translate | async) }}</ax-title>\n        @if (isMultiple()) {\n          <ax-button\n            class=\"ax-sm\"\n            color=\"primary\"\n            look=\"solid\"\n            text=\"@acorex:common.actions.apply\"\n            (onClick)=\"close()\"\n          ></ax-button>\n        } @else {\n          <ax-close-button></ax-close-button>\n        }\n      </ax-header>\n    }\n    @if (isSheetSearchEnabled()) {\n      <div class=\"ax-lookup-sheet-search\">\n        <ax-search-box\n          #sheetSearch\n          class=\"ax-sm\"\n          look=\"fill\"\n          [autoSearch]=\"false\"\n          [delayTime]=\"0\"\n          [placeholder]=\"searchPlaceholder()\"\n          (onValueChanged)=\"onSheetSearchInput()\"\n          (onKeyUp)=\"onSheetSearchInput()\"\n          (onKeyDown)=\"onSheetSearchKeydown($event)\"\n        >\n          <ax-clear-button></ax-clear-button>\n        </ax-search-box>\n      </div>\n    }\n    <ng-content select=\"ax-header\"></ng-content>\n    @if (expanded()) {\n      @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]=\"resolvedTreeDataSource()\"\n            [valueField]=\"valueField()\"\n            [textField]=\"textField()\"\n            [disabledField]=\"disabledField()\"\n            [selectedValues]=\"selectedValues()\"\n            [nodeTemplate]=\"$any(itemTemplate())\"\n            [emptyTemplate]=\"emptyTemplate()\"\n            [filterKey]=\"treeFilterKey()\"\n            [alternate]=\"alternate()\"\n            (itemClick)=\"handleSinglePick($event)\"\n          />\n        }\n        @case ('multi-select-tree') {\n          <ax-lookup-multi-select-tree\n            [dataSource]=\"resolvedTreeDataSource()\"\n            [valueField]=\"valueField()\"\n            [textField]=\"textField()\"\n            [disabledField]=\"disabledField()\"\n            [selectedValues]=\"selectedValues()\"\n            [selectionBehavior]=\"treeSelectionBehavior()\"\n            [nodeTemplate]=\"$any(itemTemplate())\"\n            [emptyTemplate]=\"emptyTemplate()\"\n            [filterKey]=\"treeFilterKey()\"\n            [alternate]=\"alternate()\"\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        @case ('multi-column-tree') {\n          <ax-lookup-multi-column-tree\n            [dataSource]=\"resolvedDataSource()\"\n            [valueField]=\"valueField()\"\n            [textField]=\"textField()\"\n            [disabledField]=\"disabledField()\"\n            [parentField]=\"treeParentField()\"\n            [hasChildrenField]=\"hasChildrenField()\"\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<ng-content select=\"ax-validation-rule\"></ng-content>\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 { AXLookupMultiColumnTreeComponent } from './views/lookup-multi-column-tree.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    AXLookupMultiColumnTreeComponent,\n  ],\n  exports: [\n    AXLookupComponent,\n    AXLookupDropDownListComponent,\n    AXLookupMultiSelectComponent,\n    AXLookupDropDownTreeComponent,\n    AXLookupMultiSelectTreeComponent,\n    AXLookupMultiColumnComponent,\n    AXLookupMultiColumnTreeComponent,\n  ],\n})\nexport class AXLookupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}