@nexterajs/ui 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/NOTICE +16 -0
- package/README.md +64 -0
- package/fesm2022/nexterajs-ui-animations.mjs +184 -0
- package/fesm2022/nexterajs-ui-animations.mjs.map +1 -0
- package/fesm2022/nexterajs-ui-core.mjs +326 -0
- package/fesm2022/nexterajs-ui-core.mjs.map +1 -0
- package/fesm2022/nexterajs-ui-dropdowns.mjs +953 -0
- package/fesm2022/nexterajs-ui-dropdowns.mjs.map +1 -0
- package/fesm2022/nexterajs-ui-excel.mjs +779 -0
- package/fesm2022/nexterajs-ui-excel.mjs.map +1 -0
- package/fesm2022/nexterajs-ui-file-uploader.mjs +125 -0
- package/fesm2022/nexterajs-ui-file-uploader.mjs.map +1 -0
- package/fesm2022/nexterajs-ui-forms.mjs +1113 -0
- package/fesm2022/nexterajs-ui-forms.mjs.map +1 -0
- package/fesm2022/nexterajs-ui-grid.mjs +4145 -0
- package/fesm2022/nexterajs-ui-grid.mjs.map +1 -0
- package/fesm2022/nexterajs-ui-intl.mjs +377 -0
- package/fesm2022/nexterajs-ui-intl.mjs.map +1 -0
- package/fesm2022/nexterajs-ui-pivot.mjs +4739 -0
- package/fesm2022/nexterajs-ui-pivot.mjs.map +1 -0
- package/fesm2022/nexterajs-ui-styling.mjs +59 -0
- package/fesm2022/nexterajs-ui-styling.mjs.map +1 -0
- package/fesm2022/nexterajs-ui-tree-view.mjs +202 -0
- package/fesm2022/nexterajs-ui-tree-view.mjs.map +1 -0
- package/fesm2022/nexterajs-ui-validation.mjs +269 -0
- package/fesm2022/nexterajs-ui-validation.mjs.map +1 -0
- package/fesm2022/nexterajs-ui.mjs +23 -0
- package/fesm2022/nexterajs-ui.mjs.map +1 -0
- package/package.json +100 -0
- package/styles/_button-directives.scss +39 -0
- package/styles/_dropdown.scss +113 -0
- package/styles/_editor.scss +146 -0
- package/styles/_mixins.scss +2 -0
- package/styles/_tokens.scss +77 -0
- package/styles/_widget.scss +58 -0
- package/styles/index.scss +83 -0
- package/types/nexterajs-ui-animations.d.ts +22 -0
- package/types/nexterajs-ui-core.d.ts +328 -0
- package/types/nexterajs-ui-dropdowns.d.ts +334 -0
- package/types/nexterajs-ui-excel.d.ts +159 -0
- package/types/nexterajs-ui-file-uploader.d.ts +47 -0
- package/types/nexterajs-ui-forms.d.ts +296 -0
- package/types/nexterajs-ui-grid.d.ts +1485 -0
- package/types/nexterajs-ui-intl.d.ts +125 -0
- package/types/nexterajs-ui-pivot.d.ts +1470 -0
- package/types/nexterajs-ui-styling.d.ts +40 -0
- package/types/nexterajs-ui-tree-view.d.ts +69 -0
- package/types/nexterajs-ui-validation.d.ts +102 -0
- package/types/nexterajs-ui.d.ts +12 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nexterajs-ui-dropdowns.mjs","sources":["../../../projects/nextera-ui/dropdowns/src/lib/select-box/nxe-select-box.component.ts","../../../projects/nextera-ui/dropdowns/src/lib/select-box/nxe-select-box.component.html","../../../projects/nextera-ui/dropdowns/src/lib/tag-box/nxe-tag-box.component.ts","../../../projects/nextera-ui/dropdowns/src/lib/tag-box/nxe-tag-box.component.html","../../../projects/nextera-ui/dropdowns/src/lib/drop-down-box/nxe-drop-down-options.component.ts","../../../projects/nextera-ui/dropdowns/src/lib/drop-down-box/nxe-drop-down-box.component.ts","../../../projects/nextera-ui/dropdowns/src/lib/drop-down-box/nxe-drop-down-box.component.html","../../../projects/nextera-ui/dropdowns/src/lib/menu/nxe-menu.types.ts","../../../projects/nextera-ui/dropdowns/src/lib/list/nxe-list.component.ts","../../../projects/nextera-ui/dropdowns/src/lib/autocomplete/nxe-autocomplete.component.ts","../../../projects/nextera-ui/dropdowns/src/lib/autocomplete/nxe-autocomplete-trigger.directive.ts","../../../projects/nextera-ui/dropdowns/src/lib/autocomplete/nxe-option.component.ts","../../../projects/nextera-ui/dropdowns/src/public-api.ts","../../../projects/nextera-ui/dropdowns/src/nexterajs-ui-dropdowns.ts"],"sourcesContent":["import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChildren,\r\n ElementRef,\r\n forwardRef,\r\n inject,\r\n input,\r\n OnDestroy,\r\n output,\r\n signal,\r\n TemplateRef,\r\n viewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { filter, merge, Subscription } from 'rxjs';\r\nimport { NxeFormControlBase, nxeOptionalBoolean } from '@nexterajs/ui/core';\r\nimport { NxeTemplateDirective } from '@nexterajs/ui/core';\r\nimport { NXE_VALIDATION_TARGET } from '@nexterajs/ui/core';\r\nimport { nxePane, trackPaneFlip } from '@nexterajs/ui/styling';\r\n\r\n/** DevExtreme-shaped selection-changed payload (handlers read `selectedItem`). */\r\nexport interface NxeSelectionChangedEvent {\r\n selectedItem: unknown;\r\n previousValue: unknown;\r\n value: unknown;\r\n}\r\n\r\n/**\r\n * `nxe-select-box` — drop-in replacement for DevExtreme `dx-select-box`.\r\n *\r\n * A signal-CVA single-select dropdown over a plain array (`[dataSource]`). It bakes in the app's\r\n * global `dxSelectBox.defaultOptions` (`displayExpr='lovName'`, `valueExpr='lovCode'`,\r\n * `searchEnabled`, `showClearButton`), so the bound control value is the `valueExpr` field\r\n * (a string code) and the field shows the `displayExpr` field. Dropdown is a CDK overlay with\r\n * an in-field search filter. Emits `(valueChange)` (the code) and `(onSelectionChanged)`\r\n * (`{selectedItem}`). Hosts a projected `nxe-validator` via {@link NXE_VALIDATION_TARGET}.\r\n */\r\n@Component({\r\n selector: 'nxe-select-box',\r\n standalone: true,\r\n imports: [NgTemplateOutlet],\r\n templateUrl: './nxe-select-box.component.html',\r\n styleUrl: './nxe-select-box.component.scss',\r\n host: {\r\n class: 'nxe-widget nxe-editor nxe-selectbox',\r\n '[class.nxe-focused]': 'focused()',\r\n '[class.nxe-invalid]': '!!validationError()',\r\n '[class.nxe-open]': 'open()',\r\n '(keydown)': 'onKeydown($event)',\r\n },\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NxeSelectBoxComponent), multi: true },\r\n { provide: NXE_VALIDATION_TARGET, useExisting: forwardRef(() => NxeSelectBoxComponent) },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NxeSelectBoxComponent extends NxeFormControlBase<unknown> implements OnDestroy {\r\n private readonly overlay = inject(Overlay);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly dropdownTemplate = viewChild.required<TemplateRef<unknown>>('dropdown');\r\n private readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('input');\r\n private readonly templates = contentChildren(NxeTemplateDirective);\r\n\r\n /** The source array (plain JS array of `Lov`-shaped objects, or primitives). */\r\n readonly dataSource = input<readonly unknown[] | null | undefined>([]);\r\n /** Field shown in the box/list (DevExtreme default `lovName`). Empty => the item itself. */\r\n readonly displayExprInput = input<string | undefined>(undefined, { alias: 'displayExpr' });\r\n readonly displayExpr = computed(\r\n () => this.displayExprInput() ?? this.nxeDefaults.selectBox?.displayExpr ?? 'lovName',\r\n );\r\n /** Field bound as the control value (DevExtreme default `lovCode`). Empty => the whole item. */\r\n readonly valueExprInput = input<string | undefined>(undefined, { alias: 'valueExpr' });\r\n readonly valueExpr = computed(\r\n () => this.valueExprInput() ?? this.nxeDefaults.selectBox?.valueExpr ?? 'lovCode',\r\n );\r\n /** Field matched while searching (DevExtreme default `lovName`). */\r\n readonly searchExprInput = input<string | undefined>(undefined, { alias: 'searchExpr' });\r\n readonly searchExpr = computed(\r\n () => this.searchExprInput() ?? this.nxeDefaults.selectBox?.searchExpr ?? 'lovName',\r\n );\r\n readonly searchEnabledInput = input<boolean | undefined>(undefined, { alias: 'searchEnabled', transform: nxeOptionalBoolean });\r\n readonly searchEnabled = computed(\r\n () => this.searchEnabledInput() ?? this.nxeDefaults.selectBox?.searchEnabled ?? true,\r\n );\r\n readonly showClearButtonInput = input<boolean | undefined>(undefined, { alias: 'showClearButton', transform: nxeOptionalBoolean });\r\n readonly showClearButton = computed(\r\n () => this.showClearButtonInput() ?? this.nxeDefaults.selectBox?.showClearButton ?? true,\r\n );\r\n /** dx parity: dx-select-box shows its drop-down arrow unless showDropDownButton=false. */\r\n readonly showDropDownButtonInput = input<boolean | undefined>(undefined, { alias: 'showDropDownButton', transform: nxeOptionalBoolean });\r\n readonly showDropDownButton = computed(\r\n () => this.showDropDownButtonInput() ?? this.nxeDefaults.selectBox?.showDropDownButton ?? true,\r\n );\r\n readonly placeholderInput = input<string | undefined>(undefined, { alias: 'placeholder' });\r\n readonly placeholder = computed(\r\n () => this.placeholderInput() ?? this.nxeDefaults.selectBox?.placeholder ?? '',\r\n );\r\n /** Named template ('displayItem') for dropdown rows; `$implicit` = the item. */\r\n readonly itemTemplate = input<string>();\r\n /** Named template ('inputField') for the closed field; `$implicit` = the selected item. */\r\n readonly fieldTemplate = input<string>();\r\n /** DevExtreme parity, cosmetic. */\r\n readonly hoverStateEnabled = input(true, { transform: booleanAttribute });\r\n\r\n readonly onSelectionChanged = output<NxeSelectionChangedEvent>();\r\n\r\n readonly focused = signal(false);\r\n readonly open = signal(false);\r\n /** What the user has typed to filter (null = not actively searching → show display text). */\r\n readonly searchText = signal<string | null>(null);\r\n readonly activeIndex = signal(-1);\r\n readonly panelWidth = signal(0);\r\n\r\n /** DevExtreme `.instance` facade — only `focus()` is used (via the customAutofocus directive). */\r\n get instance(): this {\r\n return this;\r\n }\r\n\r\n private overlayRef?: OverlayRef;\r\n private closeSub?: Subscription;\r\n private flipSub?: Subscription;\r\n\r\n private readonly items = computed(() => this.dataSource() ?? []);\r\n\r\n protected display(item: unknown): string {\r\n const expr = this.displayExpr();\r\n if (!expr) {\r\n return item == null ? '' : String(item);\r\n }\r\n return (item as Record<string, unknown>)?.[expr] as string ?? '';\r\n }\r\n\r\n private extractValue(item: unknown): unknown {\r\n const expr = this.valueExpr();\r\n return expr ? (item as Record<string, unknown>)?.[expr] : item;\r\n }\r\n\r\n readonly selectedItem = computed(() => {\r\n const v = this.value();\r\n if (v == null) {\r\n return null;\r\n }\r\n return this.items().find((it) => this.extractValue(it) === v) ?? null;\r\n });\r\n\r\n readonly hasValue = computed(() => this.value() != null && this.value() !== '');\r\n\r\n /** Display text when the field is not being searched. */\r\n protected readonly displayText = computed(() => {\r\n const sel = this.selectedItem();\r\n return sel ? this.display(sel) : '';\r\n });\r\n\r\n /** Value bound to the input element. */\r\n protected readonly inputDisplay = computed(() => {\r\n const search = this.searchText();\r\n return this.open() && search !== null ? search : this.displayText();\r\n });\r\n\r\n protected readonly filteredItems = computed(() => {\r\n const items = this.items();\r\n const search = this.searchText();\r\n if (!this.searchEnabled() || !search) {\r\n return items;\r\n }\r\n const expr = this.searchExpr() || this.displayExpr();\r\n const needle = search.toLowerCase();\r\n return items.filter((it) => {\r\n const hay = (expr ? (it as Record<string, unknown>)?.[expr] : it) ?? '';\r\n return String(hay).toLowerCase().includes(needle);\r\n });\r\n });\r\n\r\n protected readonly itemTemplateRef = computed(() =>\r\n this.templates().find((t) => t.name() === this.itemTemplate())?.templateRef ?? null,\r\n );\r\n protected readonly fieldTemplateRef = computed(() =>\r\n this.templates().find((t) => t.name() === this.fieldTemplate())?.templateRef ?? null,\r\n );\r\n\r\n protected isSelected(item: unknown): boolean {\r\n return this.value() != null && this.extractValue(item) === this.value();\r\n }\r\n\r\n /** Imperative focus (DevExtreme `.instance.focus()` via customAutofocus). */\r\n focus(): void {\r\n this.inputEl()?.nativeElement?.focus();\r\n }\r\n\r\n protected onFieldMousedown(event: MouseEvent): void {\r\n if (this.readOnly() || this.disabled()) {\r\n return;\r\n }\r\n // Let the clear/arrow handlers run; otherwise toggle.\r\n const target = event.target as HTMLElement;\r\n if (target.closest('.nxe-select-clear')) {\r\n return;\r\n }\r\n if (this.open()) {\r\n // clicking the field while open keeps it open for typing\r\n return;\r\n }\r\n this.openPanel();\r\n }\r\n\r\n protected onSearchInput(event: Event): void {\r\n this.searchText.set((event.target as HTMLInputElement).value);\r\n this.activeIndex.set(0);\r\n if (!this.open()) {\r\n this.openPanel();\r\n }\r\n }\r\n\r\n protected onBlur(): void {\r\n this.focused.set(false);\r\n this.markAsTouched();\r\n // committing happens on selection; on blur just reset the search text\r\n this.searchText.set(null);\r\n }\r\n\r\n protected selectItem(item: unknown, event: Event): void {\r\n event.preventDefault();\r\n const previousValue = this.value();\r\n const next = this.extractValue(item);\r\n this.commitValue(next, event);\r\n this.onSelectionChanged.emit({ selectedItem: item, previousValue, value: next });\r\n this.searchText.set(null);\r\n this.close();\r\n }\r\n\r\n protected onClear(event: Event): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const previousValue = this.value();\r\n this.commitValue(null, event);\r\n this.onSelectionChanged.emit({ selectedItem: null, previousValue, value: null });\r\n this.searchText.set(null);\r\n }\r\n\r\n protected onKeydown(event: KeyboardEvent): void {\r\n if (this.readOnly() || this.disabled()) {\r\n return;\r\n }\r\n const items = this.filteredItems();\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n if (!this.open()) {\r\n this.openPanel();\r\n }\r\n this.activeIndex.update((i) => Math.min(i + 1, items.length - 1));\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this.activeIndex.update((i) => Math.max(i - 1, 0));\r\n break;\r\n case 'Enter': {\r\n const item = items[this.activeIndex()];\r\n if (this.open() && item !== undefined) {\r\n event.preventDefault();\r\n this.selectItem(item, event);\r\n }\r\n break;\r\n }\r\n case 'Escape':\r\n if (this.open()) {\r\n event.preventDefault();\r\n this.searchText.set(null);\r\n this.close();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private openPanel(): void {\r\n this.panelWidth.set(this.elementRef.nativeElement.offsetWidth);\r\n const idx = this.items().findIndex((it) => this.extractValue(it) === this.value());\r\n this.activeIndex.set(idx >= 0 ? idx : 0);\r\n if (!this.overlayRef) {\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy: this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.elementRef)\r\n .withPositions([\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ]),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n panelClass: nxePane('nxe-select-pane'),\r\n });\r\n this.flipSub = trackPaneFlip(this.overlayRef);\r\n }\r\n if (this.overlayRef.hasAttached()) {\r\n return;\r\n }\r\n this.overlayRef.attach(new TemplatePortal(this.dropdownTemplate(), this.viewContainerRef));\r\n this.closeSub = merge(\r\n this.overlayRef.backdropClick(),\r\n this.overlayRef.keydownEvents().pipe(filter((e) => e.key === 'Escape')),\r\n ).subscribe(() => this.close());\r\n this.open.set(true);\r\n }\r\n\r\n private close(): void {\r\n if (!this.overlayRef?.hasAttached()) {\r\n return;\r\n }\r\n this.overlayRef.detach();\r\n this.closeSub?.unsubscribe();\r\n this.flipSub?.unsubscribe();\r\n this.open.set(false);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.closeSub?.unsubscribe();\r\n this.flipSub?.unsubscribe();\r\n this.overlayRef?.dispose();\r\n }\r\n}\r\n","<div class=\"nxe-editor-container\" (mousedown)=\"onFieldMousedown($event)\">\r\n @if (fieldTemplateRef(); as tpl) {\r\n <div class=\"nxe-select-field\">\r\n <ng-container *ngTemplateOutlet=\"tpl; context: { $implicit: selectedItem() }\" />\r\n </div>\r\n } @else {\r\n <input\r\n #input\r\n class=\"nxe-editor-input nxe-select-input\"\r\n type=\"text\"\r\n [value]=\"inputDisplay()\"\r\n [readOnly]=\"readOnly() || !searchEnabled()\"\r\n [disabled]=\"disabled()\"\r\n [attr.placeholder]=\"placeholder() || null\"\r\n autocomplete=\"off\"\r\n (input)=\"onSearchInput($event)\"\r\n (focus)=\"focused.set(true)\"\r\n (blur)=\"onBlur()\" />\r\n }\r\n\r\n @if (showClearButton() && hasValue() && !readOnly() && !disabled()) {\r\n <span class=\"nxe-select-clear\" (mousedown)=\"onClear($event)\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\"><path d=\"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" /></svg>\r\n </span>\r\n }\r\n\r\n @if (showDropDownButton() && !readOnly()) {\r\n <span class=\"nxe-select-arrow\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\"><path d=\"M7 10l5 5 5-5z\" /></svg>\r\n </span>\r\n }\r\n</div>\r\n\r\n<ng-content />\r\n\r\n@if (validationError(); as error) {\r\n @if (focused()) {\r\n <div class=\"nxe-invalid-message\">{{ error }}</div>\r\n }\r\n}\r\n\r\n<ng-template #dropdown>\r\n <div class=\"nxe-select-panel\" [style.width.px]=\"panelWidth()\">\r\n @for (item of filteredItems(); track $index; let i = $index) {\r\n <div\r\n class=\"nxe-list-item\"\r\n [class.nxe-list-item-selected]=\"isSelected(item)\"\r\n [class.nxe-list-item-active]=\"i === activeIndex()\"\r\n (mousedown)=\"selectItem(item, $event)\">\r\n @if (itemTemplateRef(); as tpl) {\r\n <ng-container *ngTemplateOutlet=\"tpl; context: { $implicit: item }\" />\r\n } @else {\r\n {{ display(item) }}\r\n }\r\n </div>\r\n } @empty {\r\n <div class=\"nxe-list-empty\">No data to display</div>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n ElementRef,\r\n forwardRef,\r\n inject,\r\n input,\r\n OnDestroy,\r\n signal,\r\n TemplateRef,\r\n viewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { filter, merge, Subscription } from 'rxjs';\r\nimport { NxeFormControlBase, nxeOptionalBoolean } from '@nexterajs/ui/core';\r\nimport { NXE_VALIDATION_TARGET } from '@nexterajs/ui/core';\r\nimport { nxePane, trackPaneFlip } from '@nexterajs/ui/styling';\r\n\r\n/**\r\n * `nxe-tag-box` — drop-in replacement for DevExtreme `dx-tag-box` (multi-select sibling of\r\n * `nxe-select-box`). The bound value is an **array of `valueExpr` keys** (`lovCode` strings).\r\n * Bakes in the app's global `dxTagBox.defaultOptions` (display/search `lovName`, value `lovCode`,\r\n * search + clear + selection-controls on). Selected items render as removable chips; the dropdown\r\n * shows a checkbox per row. Provides {@link NXE_VALIDATION_TARGET} for a projected `nxe-validator`.\r\n */\r\n@Component({\r\n selector: 'nxe-tag-box',\r\n standalone: true,\r\n templateUrl: './nxe-tag-box.component.html',\r\n styleUrl: './nxe-tag-box.component.scss',\r\n host: {\r\n class: 'nxe-widget nxe-editor nxe-tagbox',\r\n '[class.nxe-focused]': 'focused()',\r\n '[class.nxe-invalid]': '!!validationError()',\r\n '[class.nxe-open]': 'open()',\r\n '(keydown)': 'onKeydown($event)',\r\n },\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NxeTagBoxComponent), multi: true },\r\n { provide: NXE_VALIDATION_TARGET, useExisting: forwardRef(() => NxeTagBoxComponent) },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NxeTagBoxComponent extends NxeFormControlBase<unknown[]> implements OnDestroy {\r\n private readonly overlay = inject(Overlay);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly dropdownTemplate = viewChild.required<TemplateRef<unknown>>('dropdown');\r\n private readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('input');\r\n\r\n readonly dataSource = input<readonly unknown[] | null | undefined>([]);\r\n readonly displayExprInput = input<string | undefined>(undefined, { alias: 'displayExpr' });\r\n readonly displayExpr = computed(\r\n () => this.displayExprInput() ?? this.nxeDefaults.tagBox?.displayExpr ?? 'lovName',\r\n );\r\n readonly valueExprInput = input<string | undefined>(undefined, { alias: 'valueExpr' });\r\n readonly valueExpr = computed(\r\n () => this.valueExprInput() ?? this.nxeDefaults.tagBox?.valueExpr ?? 'lovCode',\r\n );\r\n readonly searchExprInput = input<string | undefined>(undefined, { alias: 'searchExpr' });\r\n readonly searchExpr = computed(\r\n () => this.searchExprInput() ?? this.nxeDefaults.tagBox?.searchExpr ?? 'lovName',\r\n );\r\n readonly searchEnabledInput = input<boolean | undefined>(undefined, { alias: 'searchEnabled', transform: nxeOptionalBoolean });\r\n readonly searchEnabled = computed(\r\n () => this.searchEnabledInput() ?? this.nxeDefaults.tagBox?.searchEnabled ?? true,\r\n );\r\n readonly showClearButtonInput = input<boolean | undefined>(undefined, { alias: 'showClearButton', transform: nxeOptionalBoolean });\r\n readonly showClearButton = computed(\r\n () => this.showClearButtonInput() ?? this.nxeDefaults.tagBox?.showClearButton ?? true,\r\n );\r\n /** dx parity: dx-tag-box does NOT show a drop-down arrow unless showDropDownButton is set. */\r\n readonly showDropDownButtonInput = input<boolean | undefined>(undefined, { alias: 'showDropDownButton', transform: nxeOptionalBoolean });\r\n readonly showDropDownButton = computed(\r\n () => this.showDropDownButtonInput() ?? this.nxeDefaults.tagBox?.showDropDownButton ?? false,\r\n );\r\n readonly placeholderInput = input<string | undefined>(undefined, { alias: 'placeholder' });\r\n readonly placeholder = computed(\r\n () => this.placeholderInput() ?? this.nxeDefaults.tagBox?.placeholder ?? '',\r\n );\r\n\r\n readonly focused = signal(false);\r\n readonly open = signal(false);\r\n readonly searchText = signal('');\r\n readonly panelWidth = signal(0);\r\n\r\n private overlayRef?: OverlayRef;\r\n private closeSub?: Subscription;\r\n private flipSub?: Subscription;\r\n\r\n private readonly items = computed(() => this.dataSource() ?? []);\r\n /** The selected keys (always an array). */\r\n private readonly selectedKeys = computed(() => {\r\n const v = this.value();\r\n return Array.isArray(v) ? v : [];\r\n });\r\n\r\n protected display(item: unknown): string {\r\n const expr = this.displayExpr();\r\n if (!expr) {\r\n return item == null ? '' : String(item);\r\n }\r\n return ((item as Record<string, unknown>)?.[expr] as string) ?? '';\r\n }\r\n\r\n private extractValue(item: unknown): unknown {\r\n const expr = this.valueExpr();\r\n return expr ? (item as Record<string, unknown>)?.[expr] : item;\r\n }\r\n\r\n /** Selected items resolved from the value keys (for chip rendering). */\r\n protected readonly selectedItems = computed(() => {\r\n const keys = this.selectedKeys();\r\n return keys.map((k) => this.items().find((it) => this.extractValue(it) === k) ?? k);\r\n });\r\n\r\n protected readonly hasValue = computed(() => this.selectedKeys().length > 0);\r\n\r\n protected readonly filteredItems = computed(() => {\r\n const items = this.items();\r\n const search = this.searchText();\r\n if (!this.searchEnabled() || !search) {\r\n return items;\r\n }\r\n const expr = this.searchExpr() || this.displayExpr();\r\n const needle = search.toLowerCase();\r\n return items.filter((it) => {\r\n const hay = (expr ? (it as Record<string, unknown>)?.[expr] : it) ?? '';\r\n return String(hay).toLowerCase().includes(needle);\r\n });\r\n });\r\n\r\n protected isSelected(item: unknown): boolean {\r\n return this.selectedKeys().includes(this.extractValue(item));\r\n }\r\n\r\n protected onFieldMousedown(event: MouseEvent): void {\r\n if (this.readOnly() || this.disabled()) {\r\n return;\r\n }\r\n const target = event.target as HTMLElement;\r\n if (target.closest('.nxe-tag-remove') || target.closest('.nxe-select-clear')) {\r\n return;\r\n }\r\n if (!this.open()) {\r\n this.openPanel();\r\n }\r\n this.inputEl()?.nativeElement?.focus();\r\n }\r\n\r\n protected onSearchInput(event: Event): void {\r\n this.searchText.set((event.target as HTMLInputElement).value);\r\n if (!this.open()) {\r\n this.openPanel();\r\n }\r\n }\r\n\r\n protected onBlur(): void {\r\n this.focused.set(false);\r\n this.markAsTouched();\r\n }\r\n\r\n protected toggle(item: unknown, event: Event): void {\r\n event.preventDefault();\r\n const key = this.extractValue(item);\r\n const keys = this.selectedKeys();\r\n const next = keys.includes(key) ? keys.filter((k) => k !== key) : [...keys, key];\r\n this.commitValue(next, event);\r\n this.searchText.set('');\r\n const input = this.inputEl()?.nativeElement;\r\n if (input) {\r\n input.value = '';\r\n }\r\n }\r\n\r\n protected removeTag(item: unknown, event: Event): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const key = this.extractValue(item);\r\n this.commitValue(this.selectedKeys().filter((k) => k !== key), event);\r\n }\r\n\r\n protected onClear(event: Event): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.commitValue([], event);\r\n }\r\n\r\n protected onKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Escape' && this.open()) {\r\n event.preventDefault();\r\n this.close();\r\n }\r\n }\r\n\r\n private openPanel(): void {\r\n this.panelWidth.set(this.elementRef.nativeElement.offsetWidth);\r\n if (!this.overlayRef) {\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy: this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.elementRef)\r\n .withPositions([\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ]),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n panelClass: nxePane('nxe-select-pane'),\r\n });\r\n this.flipSub = trackPaneFlip(this.overlayRef);\r\n }\r\n if (this.overlayRef.hasAttached()) {\r\n return;\r\n }\r\n this.overlayRef.attach(new TemplatePortal(this.dropdownTemplate(), this.viewContainerRef));\r\n this.closeSub = merge(\r\n this.overlayRef.backdropClick(),\r\n this.overlayRef.keydownEvents().pipe(filter((e) => e.key === 'Escape')),\r\n ).subscribe(() => this.close());\r\n this.open.set(true);\r\n }\r\n\r\n private close(): void {\r\n if (!this.overlayRef?.hasAttached()) {\r\n return;\r\n }\r\n this.overlayRef.detach();\r\n this.closeSub?.unsubscribe();\r\n this.flipSub?.unsubscribe();\r\n this.open.set(false);\r\n this.searchText.set('');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.closeSub?.unsubscribe();\r\n this.flipSub?.unsubscribe();\r\n this.overlayRef?.dispose();\r\n }\r\n}\r\n","<div class=\"nxe-editor-container nxe-tag-container\" (mousedown)=\"onFieldMousedown($event)\">\r\n @for (item of selectedItems(); track $index) {\r\n <span class=\"nxe-tag\">\r\n <span class=\"nxe-tag-text\">{{ display(item) }}</span>\r\n @if (!readOnly() && !disabled()) {\r\n <span class=\"nxe-tag-remove\" (mousedown)=\"removeTag(item, $event)\" aria-hidden=\"true\"></span>\r\n }\r\n </span>\r\n }\r\n\r\n <input\r\n #input\r\n class=\"nxe-editor-input nxe-tag-input\"\r\n type=\"text\"\r\n [readOnly]=\"readOnly() || !searchEnabled()\"\r\n [disabled]=\"disabled()\"\r\n [attr.placeholder]=\"selectedItems().length ? null : (placeholder() || null)\"\r\n autocomplete=\"off\"\r\n (input)=\"onSearchInput($event)\"\r\n (focus)=\"focused.set(true)\"\r\n (blur)=\"onBlur()\" />\r\n\r\n @if (showClearButton() && hasValue() && !readOnly() && !disabled()) {\r\n <span class=\"nxe-select-clear\" (mousedown)=\"onClear($event)\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\"><path d=\"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" /></svg>\r\n </span>\r\n }\r\n @if (showDropDownButton() && !readOnly()) {\r\n <span class=\"nxe-select-arrow\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\"><path d=\"M7 10l5 5 5-5z\" /></svg>\r\n </span>\r\n }\r\n</div>\r\n\r\n<ng-content />\r\n\r\n@if (validationError(); as error) {\r\n @if (focused()) {\r\n <div class=\"nxe-invalid-message\">{{ error }}</div>\r\n }\r\n}\r\n\r\n<ng-template #dropdown>\r\n <div class=\"nxe-select-panel\" [style.width.px]=\"panelWidth()\">\r\n @for (item of filteredItems(); track $index) {\r\n <div\r\n class=\"nxe-list-item nxe-tag-item\"\r\n [class.nxe-list-item-selected]=\"isSelected(item)\"\r\n (mousedown)=\"toggle(item, $event)\">\r\n <span class=\"nxe-tag-check\" [class.nxe-tag-checked]=\"isSelected(item)\" aria-hidden=\"true\"></span>\r\n <span class=\"nxe-tag-item-text\">{{ display(item) }}</span>\r\n </div>\r\n } @empty {\r\n <div class=\"nxe-list-empty\">No data to display</div>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\r\n\r\n/**\r\n * `nxe-drop-down-options` — drop-in for DevExtreme `dxo-drop-down-options`, a no-template config\r\n * child of `nxe-drop-down-box`. Only `wrapperAttr` (a `{class}` applied to the overlay panel) and\r\n * `width` are used in this codebase.\r\n */\r\n@Component({\r\n selector: 'nxe-drop-down-options',\r\n standalone: true,\r\n template: '',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NxeDropDownOptionsComponent {\r\n readonly wrapperAttr = input<{ class?: string; id?: string }>();\r\n readonly width = input<string | number>();\r\n}\r\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n contentChildren,\r\n forwardRef,\r\n inject,\r\n Injector,\r\n input,\r\n model,\r\n OnDestroy,\r\n output,\r\n signal,\r\n TemplateRef,\r\n viewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Subscription, distinctUntilChanged } from 'rxjs';\r\nimport { NxeFormControlBase, nxeOptionalBoolean } from '@nexterajs/ui/core';\r\nimport { NxeTemplateDirective } from '@nexterajs/ui/core';\r\nimport { NXE_VALIDATION_TARGET } from '@nexterajs/ui/core';\r\nimport { nxePane, trackPaneFlip } from '@nexterajs/ui/styling';\r\nimport { NxeDropDownOptionsComponent } from './nxe-drop-down-options.component';\r\n\r\n/**\r\n * `nxe-drop-down-box` — drop-in replacement for DevExtreme `dx-drop-down-box`.\r\n *\r\n * A signal-CVA editor whose dropdown hosts ARBITRARY projected content (a `nxeTemplate=\"content\"`\r\n * block — usually a data-grid picker) in a CDK overlay. The closed field shows the value's\r\n * `displayExpr` (looked up in `[dataSource]`), or the raw value when no `displayExpr`. The inner\r\n * grid sets the bound form value and closes the popup via `#ref.instance.close()` (16 call sites),\r\n * so this exposes an `.instance` facade + `close()`, and an `(onClosed)` output. Projects\r\n * `nxe-validator` via {@link NXE_VALIDATION_TARGET}.\r\n */\r\n@Component({\r\n selector: 'nxe-drop-down-box',\r\n standalone: true,\r\n imports: [NgTemplateOutlet],\r\n templateUrl: './nxe-drop-down-box.component.html',\r\n styleUrl: './nxe-drop-down-box.component.scss',\r\n host: {\r\n class: 'nxe-widget nxe-editor nxe-dropdownbox',\r\n '[class.nxe-focused]': 'focused()',\r\n '[class.nxe-invalid]': '!!validationError()',\r\n '[class.nxe-open]': 'open()',\r\n },\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NxeDropDownBoxComponent), multi: true },\r\n { provide: NXE_VALIDATION_TARGET, useExisting: forwardRef(() => NxeDropDownBoxComponent) },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NxeDropDownBoxComponent extends NxeFormControlBase<unknown> implements OnDestroy {\r\n private readonly overlay = inject(Overlay);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly panelTemplate = viewChild.required<TemplateRef<unknown>>('panel');\r\n private readonly templates = contentChildren(NxeTemplateDirective);\r\n private readonly options = contentChild(NxeDropDownOptionsComponent);\r\n\r\n readonly dataSource = input<readonly unknown[] | null | undefined>([]);\r\n /** Field name shown in the closed box; empty => the raw value string. */\r\n readonly displayExprInput = input<string | undefined>(undefined, { alias: 'displayExpr' });\r\n readonly displayExpr = computed(\r\n () => this.displayExprInput() ?? this.nxeDefaults.dropDownBox?.displayExpr ?? '',\r\n );\r\n readonly valueExprInput = input<string | undefined>(undefined, { alias: 'valueExpr' });\r\n readonly valueExpr = computed(\r\n () => this.valueExprInput() ?? this.nxeDefaults.dropDownBox?.valueExpr ?? '',\r\n );\r\n readonly placeholderInput = input<string | undefined>(undefined, { alias: 'placeholder' });\r\n readonly placeholder = computed(\r\n () => this.placeholderInput() ?? this.nxeDefaults.dropDownBox?.placeholder ?? '',\r\n );\r\n /** DevExtreme `[dropDownOptions]` — accepted for parity (popup-class hook). */\r\n readonly dropDownOptions = input<unknown>();\r\n /**\r\n * DevExtreme `showClearButton` — a × left of the arrow that sets the value to null, matching\r\n * {@link NxeSelectBoxComponent}/`nxe-tag-box`.\r\n *\r\n * Defaults to **false**, unlike those two: this component's dropdown hosts arbitrary content, and\r\n * every existing call site picks from a grid where clearing was never offered. Opt in where null\r\n * is a value the field can legitimately hold.\r\n */\r\n readonly showClearButtonInput = input<boolean | undefined>(undefined, { alias: 'showClearButton', transform: nxeOptionalBoolean });\r\n readonly showClearButton = computed(\r\n () => this.showClearButtonInput() ?? this.nxeDefaults.dropDownBox?.showClearButton ?? false,\r\n );\r\n /**\r\n * DevExtreme `[opened]` (orbit addition): programmatic open/close. Reflects the panel state\r\n * outward and opens/closes the panel when the binding changes.\r\n */\r\n readonly opened = model(false);\r\n\r\n readonly onClosed = output<void>();\r\n\r\n readonly focused = signal(false);\r\n readonly open = signal(false);\r\n readonly panelWidth = signal(0);\r\n\r\n /** DevExtreme `.instance` facade — only `close()` is used (from inner-grid selection handlers). */\r\n get instance(): this {\r\n return this;\r\n }\r\n\r\n constructor() {\r\n super();\r\n // `[opened]` binding drives the panel; internal open/close writes back through the model.\r\n /* ⚠ NOT an effect - UI-48. It takes the ONE input that asks for the panel; an effect\r\n would also have depended on `open()`, which openPanel() and close() both WRITE — a\r\n reaction that feeds itself, fenced only by the equality test above it. */\r\n toObservable(this.opened, { injector: inject(Injector) })\r\n .pipe(distinctUntilChanged(), takeUntilDestroyed())\r\n .subscribe(wanted => {\r\n if (wanted !== this.open()) {\r\n wanted ? this.openPanel() : this.close();\r\n }\r\n });\r\n }\r\n\r\n private overlayRef?: OverlayRef;\r\n private closeSub?: Subscription;\r\n private flipSub?: Subscription;\r\n\r\n protected readonly contentTemplateRef = computed(\r\n () => this.templates().find((t) => t.name() === 'content')?.templateRef ?? null,\r\n );\r\n\r\n /**\r\n * DevExtreme sizes the popup to the editor, and every call site that says anything says\r\n * `width=\"100%\"` — which means that same thing. So the panel is fixed at the field's width and\r\n * the content fits inside it (a grid picker lays its columns out to the panel) rather than the\r\n * panel growing to whatever the content wants. Only an explicit px/em/rem width overrides.\r\n */\r\n protected readonly panelStyleWidth = computed(() => {\r\n const width = this.options()?.width();\r\n if (typeof width === 'number') {\r\n return `${width}px`;\r\n }\r\n if (width && width !== '100%') {\r\n return width;\r\n }\r\n return `${this.panelWidth()}px`;\r\n });\r\n\r\n readonly displayText = computed(() => {\r\n const v = this.value();\r\n if (v == null || v === '') {\r\n return '';\r\n }\r\n const de = this.displayExpr();\r\n if (!de) {\r\n return String(v);\r\n }\r\n // The bound value is the code; match it against valueExpr (default the implicit `lovCode`).\r\n const ve = this.valueExpr() || 'lovCode';\r\n const item = (this.dataSource() ?? []).find(\r\n (it) => (it as Record<string, unknown>)?.[ve] === v,\r\n );\r\n return item ? String((item as Record<string, unknown>)[de] ?? '') : String(v);\r\n });\r\n\r\n protected readonly hasValue = computed(() => {\r\n const v = this.value();\r\n return v != null && v !== '';\r\n });\r\n\r\n protected onFieldMousedown(event: MouseEvent): void {\r\n if (this.readOnly() || this.disabled()) {\r\n return;\r\n }\r\n event.preventDefault();\r\n this.open() ? this.close() : this.openPanel();\r\n }\r\n\r\n /** Stops the mousedown reaching the field, which would otherwise toggle the panel open. */\r\n protected onClear(event: Event): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.commitValue(null, event);\r\n }\r\n\r\n protected onBlur(): void {\r\n this.focused.set(false);\r\n this.markAsTouched();\r\n }\r\n\r\n /** Imperative close (DevExtreme `.instance.close()`). */\r\n close(): void {\r\n if (!this.overlayRef?.hasAttached()) {\r\n return;\r\n }\r\n this.overlayRef.detach();\r\n this.closeSub?.unsubscribe();\r\n this.flipSub?.unsubscribe();\r\n this.open.set(false);\r\n this.opened.set(false);\r\n this.onClosed.emit();\r\n }\r\n\r\n private openPanel(): void {\r\n this.panelWidth.set(this.elementRef.nativeElement.offsetWidth);\r\n const wrapperClass = this.options()?.wrapperAttr()?.class ?? '';\r\n if (this.overlayRef) {\r\n this.flipSub?.unsubscribe();\r\n this.overlayRef.dispose();\r\n }\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy: this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.elementRef)\r\n .withPositions([\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ]),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n panelClass: nxePane('nxe-dropdownbox-pane', ...wrapperClass.split(/\\s+/)),\r\n });\r\n this.flipSub = trackPaneFlip(this.overlayRef);\r\n this.overlayRef.attach(new TemplatePortal(this.panelTemplate(), this.viewContainerRef));\r\n this.closeSub = this.overlayRef.backdropClick().subscribe(() => this.close());\r\n this.open.set(true);\r\n this.opened.set(true);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.closeSub?.unsubscribe();\r\n this.flipSub?.unsubscribe();\r\n this.overlayRef?.dispose();\r\n }\r\n}\r\n","<div class=\"nxe-editor-container\" (mousedown)=\"onFieldMousedown($event)\">\r\n <input\r\n class=\"nxe-editor-input nxe-dropdownbox-input\"\r\n type=\"text\"\r\n readonly\r\n [value]=\"displayText()\"\r\n [disabled]=\"disabled()\"\r\n [attr.placeholder]=\"placeholder() || null\"\r\n (focus)=\"focused.set(true)\"\r\n (blur)=\"onBlur()\" />\r\n @if (showClearButton() && hasValue() && !readOnly() && !disabled()) {\r\n <span class=\"nxe-select-clear\" (mousedown)=\"onClear($event)\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\"><path d=\"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" /></svg>\r\n </span>\r\n }\r\n\r\n @if (!readOnly()) {\r\n <span class=\"nxe-select-arrow\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\"><path d=\"M7 10l5 5 5-5z\" /></svg>\r\n </span>\r\n }\r\n</div>\r\n\r\n<ng-content />\r\n\r\n@if (validationError(); as error) {\r\n @if (focused()) {\r\n <div class=\"nxe-invalid-message\">{{ error }}</div>\r\n }\r\n}\r\n\r\n<ng-template #panel>\r\n <div class=\"nxe-dropdownbox-panel\" [style.width]=\"panelStyleWidth()\">\r\n @if (contentTemplateRef(); as tpl) {\r\n <ng-container *ngTemplateOutlet=\"tpl; context: { $implicit: value() }\" />\r\n }\r\n </div>\r\n</ng-template>\r\n","import { InjectionToken } from '@angular/core';\r\n\r\n/** What an `nxe-menu-item` needs from its parent menu: a way to request close. */\r\nexport interface NxeMenuCloseTarget {\r\n closeMenu(): void;\r\n}\r\n\r\n/** DI token the menu provides so projected `nxe-menu-item`s can close it on click. */\r\nexport const NXE_MENU = new InjectionToken<NxeMenuCloseTarget>('NXE_MENU');\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChildren,\r\n inject,\r\n input,\r\n output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { NxeTemplateDirective } from '@nexterajs/ui/core';\r\nimport { NXE_MENU } from '../menu/nxe-menu.types';\r\n\r\n/** DevExtreme-shaped `onItemClick` payload (handlers read `itemData`). */\r\nexport interface NxeListItemClickEvent {\r\n itemData: unknown;\r\n}\r\n\r\n/**\r\n * `nxe-list` — drop-in replacement for DevExtreme `dx-list` as used in this codebase: an action\r\n * menu rendered inside `nxe-menu` (100% of usages). Renders each `[dataSource]` item with the\r\n * named `itemTemplate` (`*nxeTemplate`), emits `(onItemClick)` (`{itemData}`), and closes the\r\n * parent `nxe-menu` on click. Emits `.nxe-list`/`.nxe-list-item-row`/`.nxe-list-item-content` classes so\r\n * the app's existing menu/list CSS applies unchanged.\r\n */\r\n@Component({\r\n selector: 'nxe-list',\r\n standalone: true,\r\n imports: [NgTemplateOutlet],\r\n template: `\r\n @for (item of items(); track $index; let last = $last) {\r\n <div\r\n class=\"nxe-list-item-row\"\r\n [class.nxe-state-disabled]=\"isDisabled(item)\"\r\n (click)=\"select(item)\">\r\n <div class=\"nxe-list-item-content\">\r\n @if (itemTemplateRef(); as tpl) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tpl; context: { $implicit: item, last: last }\" />\r\n } @else {\r\n {{ text(item) }}\r\n }\r\n </div>\r\n </div>\r\n }\r\n `,\r\n styleUrl: './nxe-list.component.scss',\r\n host: {\r\n '[class]': \"'nxe-widget nxe-list ' + (elementAttr()?.class ?? '')\",\r\n '[attr.id]': 'elementAttr()?.id ?? null',\r\n },\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NxeListComponent {\r\n private readonly menu = inject(NXE_MENU, { optional: true });\r\n private readonly templates = contentChildren(NxeTemplateDirective);\r\n\r\n readonly dataSource = input<readonly unknown[] | null | undefined>([]);\r\n /** Named template ('listItem'/'actionButton') for each row; `$implicit` = the item. */\r\n readonly itemTemplate = input<string>();\r\n /** DevExtreme `[elementAttr]` — `{ id, class }` applied to the host. */\r\n readonly elementAttr = input<{ id?: string; class?: string }>();\r\n\r\n readonly onItemClick = output<NxeListItemClickEvent>();\r\n\r\n protected readonly items = computed(() => this.dataSource() ?? []);\r\n protected readonly itemTemplateRef = computed(\r\n () => this.templates().find((t) => t.name() === this.itemTemplate())?.templateRef ?? null,\r\n );\r\n\r\n protected text(item: unknown): string {\r\n return ((item as Record<string, unknown>)?.['text'] as string) ?? '';\r\n }\r\n\r\n /** dx parity: dx-list honors `item.disabled` (grayed, non-interactive). */\r\n protected isDisabled(item: unknown): boolean {\r\n return (item as Record<string, unknown>)?.['disabled'] === true;\r\n }\r\n\r\n protected select(item: unknown): void {\r\n if (this.isDisabled(item)) {\r\n return;\r\n }\r\n this.onItemClick.emit({ itemData: item });\r\n this.menu?.closeMenu();\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n forwardRef,\r\n inject,\r\n InjectionToken,\r\n OnInit,\r\n signal,\r\n TemplateRef,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n/** What an `nxe-option` needs from its parent autocomplete: a way to request close on select. */\r\nexport interface NxeAutocompletePanel {\r\n closeFromOption(): void;\r\n}\r\n\r\n/** DI token the autocomplete provides so projected `nxe-option`s can close it on click. */\r\nexport const NXE_AUTOCOMPLETE = new InjectionToken<NxeAutocompletePanel>('NXE_AUTOCOMPLETE');\r\n\r\n/**\r\n * `nxe-autocomplete` — drop-in replacement for Material's `mat-autocomplete` (as used by the global\r\n * search). Holds the dropdown panel as a `TemplateRef` that the `[nxeAutocomplete]` trigger renders\r\n * in a CDK overlay; projects `nxe-option`s. Emits the Material panel/option classes so Material's\r\n * loaded autocomplete CSS + the consumer's classes apply. Exposes `isOpen` (read by the search).\r\n */\r\n@Component({\r\n selector: 'nxe-autocomplete',\r\n exportAs: 'nxeAutocomplete',\r\n standalone: true,\r\n template: `\r\n <ng-template>\r\n <div [class]=\"panelClass()\" role=\"listbox\" (mousedown)=\"$event.preventDefault()\">\r\n <ng-content />\r\n </div>\r\n </ng-template>\r\n `,\r\n styles: ['nxe-autocomplete{display:none}'],\r\n providers: [{ provide: NXE_AUTOCOMPLETE, useExisting: forwardRef(() => NxeAutocompleteComponent) }],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NxeAutocompleteComponent implements NxeAutocompletePanel, OnInit {\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n readonly templateRef = viewChild.required(TemplateRef);\r\n\r\n /** Open state (the `[nxeAutocomplete]` trigger drives this; the search reads `isOpen`). */\r\n readonly opened = signal(false);\r\n /** Fires when a projected `nxe-option` is selected, so the trigger closes the panel. */\r\n readonly optionSelected = new Subject<void>();\r\n\r\n /** Panel classes: Material's + the consumer's class on `<nxe-autocomplete>`. */\r\n readonly panelClass = signal('nxe-autocomplete-panel mat-mdc-autocomplete-panel');\r\n\r\n get isOpen(): boolean {\r\n return this.opened();\r\n }\r\n\r\n ngOnInit(): void {\r\n const consumer = this.elementRef.nativeElement.getAttribute('class') ?? '';\r\n this.panelClass.set(`nxe-autocomplete-panel mat-mdc-autocomplete-panel ${consumer}`.trim());\r\n }\r\n\r\n closeFromOption(): void {\r\n this.optionSelected.next();\r\n }\r\n}\r\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { Directive, ElementRef, inject, input, OnDestroy, ViewContainerRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { NxeAutocompleteComponent } from './nxe-autocomplete.component';\r\nimport { nxePane } from '@nexterajs/ui/styling';\r\n\r\n/**\r\n * `[nxeAutocomplete]` — drop-in for Material's `matAutocomplete` trigger. Applied to a text input;\r\n * opens the referenced {@link NxeAutocompleteComponent}'s panel in a CDK overlay (width-matched to\r\n * the input) on focus/input, closes on blur/Escape/option-select.\r\n */\r\n@Directive({\r\n selector: 'input[nxeAutocomplete], textarea[nxeAutocomplete]',\r\n exportAs: 'nxeAutocompleteTrigger',\r\n standalone: true,\r\n host: {\r\n '(focusin)': 'openPanel()',\r\n '(input)': 'openPanel()',\r\n '(blur)': 'closePanel()',\r\n '(keydown.escape)': 'closePanel()',\r\n autocomplete: 'off',\r\n },\r\n})\r\nexport class NxeAutocompleteTriggerDirective implements OnDestroy {\r\n readonly autocomplete = input.required<NxeAutocompleteComponent>({ alias: 'nxeAutocomplete' });\r\n\r\n private readonly overlay = inject(Overlay);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n\r\n private overlayRef?: OverlayRef;\r\n private sub?: Subscription;\r\n\r\n protected openPanel(): void {\r\n const ac = this.autocomplete();\r\n const width = this.elementRef.nativeElement.offsetWidth;\r\n if (!this.overlayRef) {\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy: this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.elementRef)\r\n .withPositions([\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ]),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n width,\r\n panelClass: nxePane('nxe-autocomplete-pane'),\r\n });\r\n } else {\r\n this.overlayRef.updateSize({ width });\r\n }\r\n if (this.overlayRef.hasAttached()) {\r\n return;\r\n }\r\n this.overlayRef.attach(new TemplatePortal(ac.templateRef(), this.viewContainerRef));\r\n ac.opened.set(true);\r\n this.sub = ac.optionSelected.subscribe(() => this.closePanel());\r\n }\r\n\r\n protected closePanel(): void {\r\n if (!this.overlayRef?.hasAttached()) {\r\n return;\r\n }\r\n this.overlayRef.detach();\r\n this.sub?.unsubscribe();\r\n this.autocomplete().opened.set(false);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.sub?.unsubscribe();\r\n this.overlayRef?.dispose();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\r\nimport { NXE_AUTOCOMPLETE } from './nxe-autocomplete.component';\r\n\r\n/**\r\n * `nxe-option` — drop-in for Material's `mat-option` inside an `nxe-autocomplete`. Emits the MDC\r\n * option classes (so Material's option CSS applies) and closes the parent autocomplete on click;\r\n * the consumer's own `(click)` (e.g. navigate) still fires.\r\n */\r\n@Component({\r\n selector: 'nxe-option',\r\n exportAs: 'nxeOption',\r\n standalone: true,\r\n template: '<ng-content />',\r\n host: {\r\n class: 'nxe-option mat-mdc-option mdc-list-item',\r\n role: 'option',\r\n '(click)': 'select()',\r\n },\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NxeOptionComponent {\r\n private readonly autocomplete = inject(NXE_AUTOCOMPLETE, { optional: true });\r\n\r\n protected select(): void {\r\n this.autocomplete?.closeFromOption();\r\n }\r\n}\r\n","// @nexterajs/ui/dropdowns — public API.\r\nexport * from './lib/select-box/nxe-select-box.component';\r\nexport * from './lib/tag-box/nxe-tag-box.component';\r\nexport * from './lib/drop-down-box/nxe-drop-down-options.component';\r\nexport * from './lib/drop-down-box/nxe-drop-down-box.component';\r\nexport * from './lib/list/nxe-list.component';\r\nexport * from './lib/autocomplete/nxe-autocomplete.component';\r\nexport * from './lib/autocomplete/nxe-autocomplete-trigger.directive';\r\nexport * from './lib/autocomplete/nxe-option.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|