pdm-ui-kit 1.6.1 → 1.6.2

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.
@@ -82,6 +82,9 @@ class PdmSelectComponent {
82
82
  this.inputOptions = [];
83
83
  this.projectedOptionCache = new WeakMap();
84
84
  this.cachedProjectedOptions = [];
85
+ this.trackByOptionValue = (index, option) => {
86
+ return this.optionKey(option, index);
87
+ };
85
88
  }
86
89
  set options(value) {
87
90
  this.inputOptions = value ?? [];
@@ -144,9 +147,6 @@ class PdmSelectComponent {
144
147
  this.valueChange.emit(option.value);
145
148
  this.closePanel();
146
149
  }
147
- trackByOptionValue(index, option) {
148
- return this.optionKey(option, index);
149
- }
150
150
  onEscape() {
151
151
  if (this.open) {
152
152
  this.closePanel();
@@ -1 +1 @@
1
- {"version":3,"file":"pdm-ui-kit-src-select.mjs","sources":["../../../src/select/select-option.directive.ts","../../../src/select/select.component.ts","../../../src/select/select.component.html","../../../src/select/select.module.ts","../../../src/select/pdm-ui-kit-src-select.ts"],"sourcesContent":["import {\n AfterContentInit,\n Directive,\n ElementRef,\n Input\n} from '@angular/core';\n\n/**\n * Directive used to declare an option inside `<pdm-select>` via content projection.\n *\n * Usage:\n * ```html\n * <pdm-select [(value)]=\"val\">\n * <pdm-select-option value=\"a\">Option A</pdm-select-option>\n * <pdm-select-option value=\"b\" [disabled]=\"true\">Option B</pdm-select-option>\n * <pdm-select-option value=\"c\" label=\"Option C\"></pdm-select-option>\n * </pdm-select>\n * ```\n *\n * When `label` is not provided, the text content of the projected node is used.\n */\n@Directive({\n selector: 'pdm-select-option'\n})\nexport class PdmSelectOptionDirective implements AfterContentInit {\n /** The option value that will be emitted on selection. */\n @Input() value = '';\n\n /** When true, the option is rendered but cannot be selected. */\n @Input() disabled = false;\n\n /**\n * Explicit label for the option.\n * When omitted, the directive reads the element's `textContent` after content init.\n */\n @Input() label = '';\n\n constructor(private readonly el: ElementRef<HTMLElement>) {}\n\n ngAfterContentInit(): void {\n // If no explicit label, harvest text from the projected node.\n if (!this.label) {\n this.label = (this.el.nativeElement.textContent ?? '').trim();\n }\n }\n\n /** Resolved label string — always non-empty after ngAfterContentInit. */\n get resolvedLabel(): string {\n return this.label || this.value;\n }\n}\n","import {\n\tAfterContentInit,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tContentChildren,\n\tDoCheck,\n\tElementRef,\n\tEventEmitter,\n\tHostListener,\n\tInput,\n\tOnDestroy,\n\tOutput,\n\tQueryList,\n\tViewChild,\n\tViewContainerRef,\n} from \"@angular/core\";\nimport { Overlay, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\nimport { Subscription } from \"rxjs\";\nimport { PdmSelectOptionDirective } from \"./select-option.directive\";\nimport { PdmOverlayOptions } from \"pdm-ui-kit/src/overlay\";\nimport { createFlexiblePositionStrategy } from \"pdm-ui-kit/src/overlay\";\nimport { Z_INDEX } from \"pdm-ui-kit/src/utils\";\n\nexport interface PdmSelectOption {\n\tlabel: string;\n\tvalue: string;\n\tdisabled?: boolean;\n}\n\n@Component({\n\tselector: \"pdm-select\",\n\ttemplateUrl: \"./select.component.html\",\n\tstyles: [\":host { display: block; }\"],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PdmSelectComponent implements AfterContentInit, DoCheck, OnDestroy {\n\t@Input() id = \"\";\n\t@Input() value = \"\";\n\t@Input()\n\tset options(value: PdmSelectOption[] | null | undefined) {\n\t\tthis.inputOptions = value ?? [];\n\t\tthis.cdr.markForCheck();\n\t}\n\tget options(): PdmSelectOption[] {\n\t\treturn this.inputOptions;\n\t}\n\t@Input() disabled = false;\n\t@Input() invalid = false;\n\t@Input() className = \"\";\n\t@Input() placeholder = \"Select an option\";\n\t/**\n\t * Optional CDK OverlayConfig overrides.\n\t * Shallow-merged on top of component defaults — consumer always wins.\n\t * Providing `positionStrategy` or `scrollStrategy` replaces the component default entirely.\n\t */\n\t@Input() overlayOptions?: PdmOverlayOptions;\n\n\topen = false;\n\n\t@Output() valueChange = new EventEmitter<string>();\n\n\t@ViewChild(\"triggerEl\") private triggerRef?: ElementRef<HTMLElement>;\n\t@ViewChild(\"panelTemplate\") private panelTemplateRef!: any;\n\n\t/** Collects any `<pdm-select-option>` children projected into this component. */\n\t@ContentChildren(PdmSelectOptionDirective)\n\tprivate projectedOptions!: QueryList<PdmSelectOptionDirective>;\n\n\tprivate overlayRef: OverlayRef | null = null;\n\tprivate backdropSub: Subscription | null = null;\n\tprivate projectedOptionsSub: Subscription | null = null;\n\tprivate inputOptions: PdmSelectOption[] = [];\n\tprivate readonly projectedOptionCache = new WeakMap<\n\t\tPdmSelectOptionDirective,\n\t\tPdmSelectOption\n\t>();\n\tprivate readonly cachedProjectedOptions: PdmSelectOption[] = [];\n\n\tconstructor(\n\t\tprivate readonly cdr: ChangeDetectorRef,\n\t\tprivate readonly overlay: Overlay,\n\t\tprivate readonly viewContainerRef: ViewContainerRef,\n\t) {}\n\n\tngAfterContentInit(): void {\n\t\tthis.syncProjectedOptions();\n\t\t// Re-render when projected options change (e.g. *ngFor on pdm-select-option).\n\t\tthis.projectedOptionsSub = this.projectedOptions.changes.subscribe(() => {\n\t\t\tthis.syncProjectedOptions();\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\t}\n\n\tngDoCheck(): void {\n\t\tthis.syncProjectedOptions();\n\t}\n\n\tngOnDestroy(): void {\n\t\tif (this.projectedOptionsSub) {\n\t\t\tthis.projectedOptionsSub.unsubscribe();\n\t\t\tthis.projectedOptionsSub = null;\n\t\t}\n\t\tthis.destroyOverlay();\n\t}\n\n\t/**\n\t * Returns the effective list of options.\n\t * Projected `<pdm-select-option>` children take priority over the `[options]` input.\n\t * Falls back to `[options]` when no children are projected.\n\t */\n\tget resolvedOptions(): PdmSelectOption[] {\n\t\tif (this.projectedOptions && this.projectedOptions.length > 0) {\n\t\t\treturn this.cachedProjectedOptions;\n\t\t}\n\t\treturn this.inputOptions;\n\t}\n\n\tget selectedOption(): PdmSelectOption | undefined {\n\t\treturn this.resolvedOptions.find((option) => option.value === this.value);\n\t}\n\n\tget selectedLabel(): string {\n\t\treturn this.selectedOption?.label || this.placeholder;\n\t}\n\n\ttoggle(): void {\n\t\tif (this.disabled) return;\n\t\tif (this.open) {\n\t\t\tthis.closePanel();\n\t\t} else {\n\t\t\tthis.openPanel();\n\t\t}\n\t}\n\n\tonChange(event: Event): void {\n\t\tthis.valueChange.emit((event.target as HTMLSelectElement).value);\n\t}\n\n\tselectOption(option: PdmSelectOption): void {\n\t\tif (option.disabled) return;\n\t\tthis.valueChange.emit(option.value);\n\t\tthis.closePanel();\n\t}\n\n\ttrackByOptionValue(index: number, option: PdmSelectOption): string {\n\t\treturn this.optionKey(option, index);\n\t}\n\n\t@HostListener(\"document:keydown.escape\")\n\tonEscape(): void {\n\t\tif (this.open) {\n\t\t\tthis.closePanel();\n\t\t}\n\t}\n\n\tprivate syncProjectedOptions(): void {\n\t\tif (!this.projectedOptions || this.projectedOptions.length === 0) {\n\t\t\tif (this.cachedProjectedOptions.length > 0) {\n\t\t\t\tthis.cachedProjectedOptions.length = 0;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tlet index = 0;\n\t\tthis.projectedOptions.forEach((directive) => {\n\t\t\tlet option = this.projectedOptionCache.get(directive);\n\t\t\tif (!option) {\n\t\t\t\toption = {\n\t\t\t\t\tlabel: directive.resolvedLabel,\n\t\t\t\t\tvalue: directive.value,\n\t\t\t\t\tdisabled: directive.disabled,\n\t\t\t\t};\n\t\t\t\tthis.projectedOptionCache.set(directive, option);\n\t\t\t}\n\n\t\t\toption.label = directive.resolvedLabel;\n\t\t\toption.value = directive.value;\n\t\t\toption.disabled = directive.disabled;\n\t\t\tthis.cachedProjectedOptions[index] = option;\n\t\t\tindex += 1;\n\t\t});\n\n\t\tif (this.cachedProjectedOptions.length !== index) {\n\t\t\tthis.cachedProjectedOptions.length = index;\n\t\t}\n\t}\n\n\tprivate optionKey(option: PdmSelectOption | null | undefined, index: number): string {\n\t\tconst value = option?.value;\n\t\treturn value == null ? `index:${index}` : `value:${String(value)}`;\n\t}\n\n\tprivate openPanel(): void {\n\t\tif (this.overlayRef) return;\n\n\t\tconst triggerEl = this.triggerRef?.nativeElement;\n\t\tif (!triggerEl) return;\n\n\t\tthis.open = true;\n\t\tthis.cdr.markForCheck();\n\n\t\tconst positionStrategy = createFlexiblePositionStrategy(\n\t\t\tthis.overlay,\n\t\t\ttriggerEl,\n\t\t\t4,\n\t\t);\n\n\t\tthis.overlayRef = this.overlay.create({\n\t\t\t// CRÍTICO: z-[70] para aparecer SOBRE modals (z-[60])\n\t\t\t// panelClass se aplica al cdk-overlay-pane wrapper\n\t\t\tpanelClass: [Z_INDEX.popover],\n\t\t\tpositionStrategy,\n\t\t\tscrollStrategy: this.overlay.scrollStrategies.reposition(),\n\t\t\twidth: triggerEl.offsetWidth,\n\t\t\t// Consumer overrides are spread last — they win over every default above.\n\t\t\t...this.overlayOptions,\n\t\t});\n\n\t\tconst portal = new TemplatePortal(\n\t\t\tthis.panelTemplateRef,\n\t\t\tthis.viewContainerRef,\n\t\t);\n\t\tthis.overlayRef.attach(portal);\n\n\t\tthis.backdropSub = this.overlayRef\n\t\t\t.outsidePointerEvents()\n\t\t\t.subscribe((event) => {\n\t\t\t\tconst target = event.target as Node;\n\t\t\t\tif (!triggerEl.contains(target)) {\n\t\t\t\t\tthis.closePanel();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.cdr.markForCheck();\n\t}\n\n\tprivate closePanel(): void {\n\t\tif (!this.overlayRef) return;\n\n\t\tthis.open = false;\n\t\tthis.destroyOverlay();\n\t\tthis.cdr.markForCheck();\n\t}\n\n\tprivate destroyOverlay(): void {\n\t\tif (this.backdropSub) {\n\t\t\tthis.backdropSub.unsubscribe();\n\t\t\tthis.backdropSub = null;\n\t\t}\n\t\tif (this.overlayRef) {\n\t\t\tthis.overlayRef.dispose();\n\t\t\tthis.overlayRef = null;\n\t\t}\n\t}\n}\n","<div [ngClass]=\"['relative', className || 'w-full']\">\n <button\n #triggerEl\n type=\"button\"\n [id]=\"id\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-expanded]=\"open\"\n [attr.data-state]=\"open ? 'open' : 'closed'\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive flex h-9 w-full appearance-none box-border items-center justify-between rounded-md border border-solid bg-background px-3 py-2 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50',\n ]\"\n >\n <span\n [ngClass]=\"[\n 'min-w-0 flex-1 truncate text-left leading-5',\n selectedOption\n ? 'font-medium text-foreground'\n : 'font-normal text-muted-foreground',\n ]\"\n >\n {{ selectedLabel }}\n </span>\n <pdm-icon\n name=\"chevron-down\"\n [size]=\"16\"\n className=\"shrink-0 text-muted-foreground\"\n ></pdm-icon>\n </button>\n\n <!-- Hidden native select kept for screen-reader / form fallback -->\n <select\n class=\"sr-only\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [value]=\"value\"\n (change)=\"onChange($event)\"\n >\n <option\n *ngFor=\"let option of resolvedOptions; trackBy: trackByOptionValue\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n\n <!-- Slot for content-projected pdm-select-option elements (hidden from layout) -->\n <span class=\"hidden\">\n <ng-content select=\"pdm-select-option\"></ng-content>\n </span>\n</div>\n\n<ng-template #panelTemplate>\n <div\n role=\"listbox\"\n [attr.aria-labelledby]=\"id || null\"\n class=\"w-full overflow-y-auto rounded-md border border-solid border-border bg-popover p-1 text-popover-foreground shadow-md max-h-96\"\n >\n <button\n *ngFor=\"let option of resolvedOptions; trackBy: trackByOptionValue\"\n type=\"button\"\n role=\"option\"\n [attr.aria-selected]=\"option.value === value\"\n [disabled]=\"option.disabled\"\n (click)=\"selectOption(option)\"\n [ngClass]=\"[\n 'flex w-full appearance-none box-border items-center justify-between rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors',\n option.disabled\n ? 'cursor-not-allowed opacity-50'\n : 'hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground',\n option.value === value ? 'text-foreground' : '',\n ]\"\n >\n <span class=\"min-w-0 flex-1 truncate leading-5\">{{ option.label }}</span>\n <span\n *ngIf=\"option.value === value\"\n class=\"ml-2 flex shrink-0 items-center justify-end\"\n >\n <pdm-icon\n name=\"check\"\n [size]=\"16\"\n className=\"shrink-0 text-current\"\n ></pdm-icon>\n </span>\n </button>\n </div>\n</ng-template>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { PdmIconModule } from \"pdm-ui-kit/src/icon\";\nimport { PdmSelectComponent } from \"./select.component\";\nimport { PdmSelectOptionDirective } from \"./select-option.directive\";\n\nconst COMPONENTS = [PdmSelectComponent, PdmSelectOptionDirective];\n\n@NgModule({\n\timports: [CommonModule, OverlayModule, PdmIconModule],\n\tdeclarations: COMPONENTS,\n\texports: COMPONENTS,\n})\nexport class PdmSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pdm-ui-kit-src-select.mjs","sources":["../../../src/select/select-option.directive.ts","../../../src/select/select.component.ts","../../../src/select/select.component.html","../../../src/select/select.module.ts","../../../src/select/pdm-ui-kit-src-select.ts"],"sourcesContent":["import {\n AfterContentInit,\n Directive,\n ElementRef,\n Input\n} from '@angular/core';\n\n/**\n * Directive used to declare an option inside `<pdm-select>` via content projection.\n *\n * Usage:\n * ```html\n * <pdm-select [(value)]=\"val\">\n * <pdm-select-option value=\"a\">Option A</pdm-select-option>\n * <pdm-select-option value=\"b\" [disabled]=\"true\">Option B</pdm-select-option>\n * <pdm-select-option value=\"c\" label=\"Option C\"></pdm-select-option>\n * </pdm-select>\n * ```\n *\n * When `label` is not provided, the text content of the projected node is used.\n */\n@Directive({\n selector: 'pdm-select-option'\n})\nexport class PdmSelectOptionDirective implements AfterContentInit {\n /** The option value that will be emitted on selection. */\n @Input() value = '';\n\n /** When true, the option is rendered but cannot be selected. */\n @Input() disabled = false;\n\n /**\n * Explicit label for the option.\n * When omitted, the directive reads the element's `textContent` after content init.\n */\n @Input() label = '';\n\n constructor(private readonly el: ElementRef<HTMLElement>) {}\n\n ngAfterContentInit(): void {\n // If no explicit label, harvest text from the projected node.\n if (!this.label) {\n this.label = (this.el.nativeElement.textContent ?? '').trim();\n }\n }\n\n /** Resolved label string — always non-empty after ngAfterContentInit. */\n get resolvedLabel(): string {\n return this.label || this.value;\n }\n}\n","import {\n\tAfterContentInit,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tContentChildren,\n\tDoCheck,\n\tElementRef,\n\tEventEmitter,\n\tHostListener,\n\tInput,\n\tOnDestroy,\n\tOutput,\n\tQueryList,\n\tViewChild,\n\tViewContainerRef,\n} from \"@angular/core\";\nimport { Overlay, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\nimport { Subscription } from \"rxjs\";\nimport { PdmSelectOptionDirective } from \"./select-option.directive\";\nimport { PdmOverlayOptions } from \"pdm-ui-kit/src/overlay\";\nimport { createFlexiblePositionStrategy } from \"pdm-ui-kit/src/overlay\";\nimport { Z_INDEX } from \"pdm-ui-kit/src/utils\";\n\nexport interface PdmSelectOption {\n\tlabel: string;\n\tvalue: string;\n\tdisabled?: boolean;\n}\n\n@Component({\n\tselector: \"pdm-select\",\n\ttemplateUrl: \"./select.component.html\",\n\tstyles: [\":host { display: block; }\"],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PdmSelectComponent implements AfterContentInit, DoCheck, OnDestroy {\n\t@Input() id = \"\";\n\t@Input() value = \"\";\n\t@Input()\n\tset options(value: PdmSelectOption[] | null | undefined) {\n\t\tthis.inputOptions = value ?? [];\n\t\tthis.cdr.markForCheck();\n\t}\n\tget options(): PdmSelectOption[] {\n\t\treturn this.inputOptions;\n\t}\n\t@Input() disabled = false;\n\t@Input() invalid = false;\n\t@Input() className = \"\";\n\t@Input() placeholder = \"Select an option\";\n\t/**\n\t * Optional CDK OverlayConfig overrides.\n\t * Shallow-merged on top of component defaults — consumer always wins.\n\t * Providing `positionStrategy` or `scrollStrategy` replaces the component default entirely.\n\t */\n\t@Input() overlayOptions?: PdmOverlayOptions;\n\n\topen = false;\n\n\t@Output() valueChange = new EventEmitter<string>();\n\n\t@ViewChild(\"triggerEl\") private triggerRef?: ElementRef<HTMLElement>;\n\t@ViewChild(\"panelTemplate\") private panelTemplateRef!: any;\n\n\t/** Collects any `<pdm-select-option>` children projected into this component. */\n\t@ContentChildren(PdmSelectOptionDirective)\n\tprivate projectedOptions!: QueryList<PdmSelectOptionDirective>;\n\n\tprivate overlayRef: OverlayRef | null = null;\n\tprivate backdropSub: Subscription | null = null;\n\tprivate projectedOptionsSub: Subscription | null = null;\n\tprivate inputOptions: PdmSelectOption[] = [];\n\tprivate readonly projectedOptionCache = new WeakMap<\n\t\tPdmSelectOptionDirective,\n\t\tPdmSelectOption\n\t>();\n\tprivate readonly cachedProjectedOptions: PdmSelectOption[] = [];\n\n\tconstructor(\n\t\tprivate readonly cdr: ChangeDetectorRef,\n\t\tprivate readonly overlay: Overlay,\n\t\tprivate readonly viewContainerRef: ViewContainerRef,\n\t) {}\n\n\tngAfterContentInit(): void {\n\t\tthis.syncProjectedOptions();\n\t\t// Re-render when projected options change (e.g. *ngFor on pdm-select-option).\n\t\tthis.projectedOptionsSub = this.projectedOptions.changes.subscribe(() => {\n\t\t\tthis.syncProjectedOptions();\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\t}\n\n\tngDoCheck(): void {\n\t\tthis.syncProjectedOptions();\n\t}\n\n\tngOnDestroy(): void {\n\t\tif (this.projectedOptionsSub) {\n\t\t\tthis.projectedOptionsSub.unsubscribe();\n\t\t\tthis.projectedOptionsSub = null;\n\t\t}\n\t\tthis.destroyOverlay();\n\t}\n\n\t/**\n\t * Returns the effective list of options.\n\t * Projected `<pdm-select-option>` children take priority over the `[options]` input.\n\t * Falls back to `[options]` when no children are projected.\n\t */\n\tget resolvedOptions(): PdmSelectOption[] {\n\t\tif (this.projectedOptions && this.projectedOptions.length > 0) {\n\t\t\treturn this.cachedProjectedOptions;\n\t\t}\n\t\treturn this.inputOptions;\n\t}\n\n\tget selectedOption(): PdmSelectOption | undefined {\n\t\treturn this.resolvedOptions.find((option) => option.value === this.value);\n\t}\n\n\tget selectedLabel(): string {\n\t\treturn this.selectedOption?.label || this.placeholder;\n\t}\n\n\ttoggle(): void {\n\t\tif (this.disabled) return;\n\t\tif (this.open) {\n\t\t\tthis.closePanel();\n\t\t} else {\n\t\t\tthis.openPanel();\n\t\t}\n\t}\n\n\tonChange(event: Event): void {\n\t\tthis.valueChange.emit((event.target as HTMLSelectElement).value);\n\t}\n\n\tselectOption(option: PdmSelectOption): void {\n\t\tif (option.disabled) return;\n\t\tthis.valueChange.emit(option.value);\n\t\tthis.closePanel();\n\t}\n\n\ttrackByOptionValue = (index: number, option: PdmSelectOption): string => {\n\t\treturn this.optionKey(option, index);\n\t};\n\n\t@HostListener(\"document:keydown.escape\")\n\tonEscape(): void {\n\t\tif (this.open) {\n\t\t\tthis.closePanel();\n\t\t}\n\t}\n\n\tprivate syncProjectedOptions(): void {\n\t\tif (!this.projectedOptions || this.projectedOptions.length === 0) {\n\t\t\tif (this.cachedProjectedOptions.length > 0) {\n\t\t\t\tthis.cachedProjectedOptions.length = 0;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tlet index = 0;\n\t\tthis.projectedOptions.forEach((directive) => {\n\t\t\tlet option = this.projectedOptionCache.get(directive);\n\t\t\tif (!option) {\n\t\t\t\toption = {\n\t\t\t\t\tlabel: directive.resolvedLabel,\n\t\t\t\t\tvalue: directive.value,\n\t\t\t\t\tdisabled: directive.disabled,\n\t\t\t\t};\n\t\t\t\tthis.projectedOptionCache.set(directive, option);\n\t\t\t}\n\n\t\t\toption.label = directive.resolvedLabel;\n\t\t\toption.value = directive.value;\n\t\t\toption.disabled = directive.disabled;\n\t\t\tthis.cachedProjectedOptions[index] = option;\n\t\t\tindex += 1;\n\t\t});\n\n\t\tif (this.cachedProjectedOptions.length !== index) {\n\t\t\tthis.cachedProjectedOptions.length = index;\n\t\t}\n\t}\n\n\tprivate optionKey(option: PdmSelectOption | null | undefined, index: number): string {\n\t\tconst value = option?.value;\n\t\treturn value == null ? `index:${index}` : `value:${String(value)}`;\n\t}\n\n\tprivate openPanel(): void {\n\t\tif (this.overlayRef) return;\n\n\t\tconst triggerEl = this.triggerRef?.nativeElement;\n\t\tif (!triggerEl) return;\n\n\t\tthis.open = true;\n\t\tthis.cdr.markForCheck();\n\n\t\tconst positionStrategy = createFlexiblePositionStrategy(\n\t\t\tthis.overlay,\n\t\t\ttriggerEl,\n\t\t\t4,\n\t\t);\n\n\t\tthis.overlayRef = this.overlay.create({\n\t\t\t// CRÍTICO: z-[70] para aparecer SOBRE modals (z-[60])\n\t\t\t// panelClass se aplica al cdk-overlay-pane wrapper\n\t\t\tpanelClass: [Z_INDEX.popover],\n\t\t\tpositionStrategy,\n\t\t\tscrollStrategy: this.overlay.scrollStrategies.reposition(),\n\t\t\twidth: triggerEl.offsetWidth,\n\t\t\t// Consumer overrides are spread last — they win over every default above.\n\t\t\t...this.overlayOptions,\n\t\t});\n\n\t\tconst portal = new TemplatePortal(\n\t\t\tthis.panelTemplateRef,\n\t\t\tthis.viewContainerRef,\n\t\t);\n\t\tthis.overlayRef.attach(portal);\n\n\t\tthis.backdropSub = this.overlayRef\n\t\t\t.outsidePointerEvents()\n\t\t\t.subscribe((event) => {\n\t\t\t\tconst target = event.target as Node;\n\t\t\t\tif (!triggerEl.contains(target)) {\n\t\t\t\t\tthis.closePanel();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.cdr.markForCheck();\n\t}\n\n\tprivate closePanel(): void {\n\t\tif (!this.overlayRef) return;\n\n\t\tthis.open = false;\n\t\tthis.destroyOverlay();\n\t\tthis.cdr.markForCheck();\n\t}\n\n\tprivate destroyOverlay(): void {\n\t\tif (this.backdropSub) {\n\t\t\tthis.backdropSub.unsubscribe();\n\t\t\tthis.backdropSub = null;\n\t\t}\n\t\tif (this.overlayRef) {\n\t\t\tthis.overlayRef.dispose();\n\t\t\tthis.overlayRef = null;\n\t\t}\n\t}\n}\n","<div [ngClass]=\"['relative', className || 'w-full']\">\n <button\n #triggerEl\n type=\"button\"\n [id]=\"id\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-expanded]=\"open\"\n [attr.data-state]=\"open ? 'open' : 'closed'\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive flex h-9 w-full appearance-none box-border items-center justify-between rounded-md border border-solid bg-background px-3 py-2 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50',\n ]\"\n >\n <span\n [ngClass]=\"[\n 'min-w-0 flex-1 truncate text-left leading-5',\n selectedOption\n ? 'font-medium text-foreground'\n : 'font-normal text-muted-foreground',\n ]\"\n >\n {{ selectedLabel }}\n </span>\n <pdm-icon\n name=\"chevron-down\"\n [size]=\"16\"\n className=\"shrink-0 text-muted-foreground\"\n ></pdm-icon>\n </button>\n\n <!-- Hidden native select kept for screen-reader / form fallback -->\n <select\n class=\"sr-only\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [value]=\"value\"\n (change)=\"onChange($event)\"\n >\n <option\n *ngFor=\"let option of resolvedOptions; trackBy: trackByOptionValue\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n\n <!-- Slot for content-projected pdm-select-option elements (hidden from layout) -->\n <span class=\"hidden\">\n <ng-content select=\"pdm-select-option\"></ng-content>\n </span>\n</div>\n\n<ng-template #panelTemplate>\n <div\n role=\"listbox\"\n [attr.aria-labelledby]=\"id || null\"\n class=\"w-full overflow-y-auto rounded-md border border-solid border-border bg-popover p-1 text-popover-foreground shadow-md max-h-96\"\n >\n <button\n *ngFor=\"let option of resolvedOptions; trackBy: trackByOptionValue\"\n type=\"button\"\n role=\"option\"\n [attr.aria-selected]=\"option.value === value\"\n [disabled]=\"option.disabled\"\n (click)=\"selectOption(option)\"\n [ngClass]=\"[\n 'flex w-full appearance-none box-border items-center justify-between rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors',\n option.disabled\n ? 'cursor-not-allowed opacity-50'\n : 'hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground',\n option.value === value ? 'text-foreground' : '',\n ]\"\n >\n <span class=\"min-w-0 flex-1 truncate leading-5\">{{ option.label }}</span>\n <span\n *ngIf=\"option.value === value\"\n class=\"ml-2 flex shrink-0 items-center justify-end\"\n >\n <pdm-icon\n name=\"check\"\n [size]=\"16\"\n className=\"shrink-0 text-current\"\n ></pdm-icon>\n </span>\n </button>\n </div>\n</ng-template>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { PdmIconModule } from \"pdm-ui-kit/src/icon\";\nimport { PdmSelectComponent } from \"./select.component\";\nimport { PdmSelectOptionDirective } from \"./select-option.directive\";\n\nconst COMPONENTS = [PdmSelectComponent, PdmSelectOptionDirective];\n\n@NgModule({\n\timports: [CommonModule, OverlayModule, PdmIconModule],\n\tdeclarations: COMPONENTS,\n\texports: COMPONENTS,\n})\nexport class PdmSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -6161,6 +6161,9 @@ class PdmSelectComponent {
6161
6161
  this.inputOptions = [];
6162
6162
  this.projectedOptionCache = new WeakMap();
6163
6163
  this.cachedProjectedOptions = [];
6164
+ this.trackByOptionValue = (index, option) => {
6165
+ return this.optionKey(option, index);
6166
+ };
6164
6167
  }
6165
6168
  set options(value) {
6166
6169
  this.inputOptions = value ?? [];
@@ -6223,9 +6226,6 @@ class PdmSelectComponent {
6223
6226
  this.valueChange.emit(option.value);
6224
6227
  this.closePanel();
6225
6228
  }
6226
- trackByOptionValue(index, option) {
6227
- return this.optionKey(option, index);
6228
- }
6229
6229
  onEscape() {
6230
6230
  if (this.open) {
6231
6231
  this.closePanel();