@lucca-front/ng 22.0.5 → 22.1.0-rc.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.
Files changed (76) hide show
  1. package/fesm2022/lucca-front-ng-activity-feed.mjs +12 -9
  2. package/fesm2022/lucca-front-ng-activity-feed.mjs.map +1 -1
  3. package/fesm2022/lucca-front-ng-approbation-inbox.mjs +1 -1
  4. package/fesm2022/lucca-front-ng-approbation-inbox.mjs.map +1 -1
  5. package/fesm2022/lucca-front-ng-callout.mjs +1 -1
  6. package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
  7. package/fesm2022/lucca-front-ng-core-select.mjs +236 -8
  8. package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
  9. package/fesm2022/lucca-front-ng-core.mjs +5 -1
  10. package/fesm2022/lucca-front-ng-core.mjs.map +1 -1
  11. package/fesm2022/lucca-front-ng-data-table.mjs +2 -2
  12. package/fesm2022/lucca-front-ng-data-table.mjs.map +1 -1
  13. package/fesm2022/lucca-front-ng-date2.mjs +217 -159
  14. package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
  15. package/fesm2022/lucca-front-ng-dialog.mjs +2 -2
  16. package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
  17. package/fesm2022/lucca-front-ng-fancy-box.mjs +47 -24
  18. package/fesm2022/lucca-front-ng-fancy-box.mjs.map +1 -1
  19. package/fesm2022/lucca-front-ng-file-upload.mjs +1 -1
  20. package/fesm2022/lucca-front-ng-file-upload.mjs.map +1 -1
  21. package/fesm2022/lucca-front-ng-filter-pills-core.mjs +55 -0
  22. package/fesm2022/lucca-front-ng-filter-pills-core.mjs.map +1 -0
  23. package/fesm2022/lucca-front-ng-filter-pills.mjs +74 -69
  24. package/fesm2022/lucca-front-ng-filter-pills.mjs.map +1 -1
  25. package/fesm2022/lucca-front-ng-form-field.mjs +37 -5
  26. package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
  27. package/fesm2022/lucca-front-ng-form-label.mjs +1 -1
  28. package/fesm2022/lucca-front-ng-form-label.mjs.map +1 -1
  29. package/fesm2022/lucca-front-ng-form.mjs +42 -5
  30. package/fesm2022/lucca-front-ng-form.mjs.map +1 -1
  31. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +3 -3
  32. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
  33. package/fesm2022/lucca-front-ng-forms.mjs +12 -6
  34. package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
  35. package/fesm2022/lucca-front-ng-highlight-data.mjs +6 -7
  36. package/fesm2022/lucca-front-ng-highlight-data.mjs.map +1 -1
  37. package/fesm2022/lucca-front-ng-impersonation.mjs +19 -4
  38. package/fesm2022/lucca-front-ng-impersonation.mjs.map +1 -1
  39. package/fesm2022/lucca-front-ng-link.mjs +8 -3
  40. package/fesm2022/lucca-front-ng-link.mjs.map +1 -1
  41. package/fesm2022/lucca-front-ng-markdown.mjs +51 -0
  42. package/fesm2022/lucca-front-ng-markdown.mjs.map +1 -0
  43. package/fesm2022/lucca-front-ng-multi-select.mjs +147 -43
  44. package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
  45. package/fesm2022/lucca-front-ng-popover2.mjs +11 -5
  46. package/fesm2022/lucca-front-ng-popover2.mjs.map +1 -1
  47. package/fesm2022/lucca-front-ng-priority-levels.mjs +128 -0
  48. package/fesm2022/lucca-front-ng-priority-levels.mjs.map +1 -0
  49. package/fesm2022/lucca-front-ng-safe-content.mjs +5 -2
  50. package/fesm2022/lucca-front-ng-safe-content.mjs.map +1 -1
  51. package/fesm2022/lucca-front-ng-simple-select.mjs +63 -12
  52. package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
  53. package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs +1 -1
  54. package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs.map +1 -1
  55. package/fesm2022/lucca-front-ng-user-popover.mjs +3 -2
  56. package/fesm2022/lucca-front-ng-user-popover.mjs.map +1 -1
  57. package/package.json +17 -4
  58. package/src/components/cdk/_overlay.scss +3 -1
  59. package/types/lucca-front-ng-activity-feed.d.ts +3 -1
  60. package/types/lucca-front-ng-core-select.d.ts +90 -7
  61. package/types/lucca-front-ng-core.d.ts +3 -1
  62. package/types/lucca-front-ng-date2.d.ts +31 -5
  63. package/types/lucca-front-ng-fancy-box.d.ts +29 -12
  64. package/types/lucca-front-ng-filter-pills-core.d.ts +69 -0
  65. package/types/lucca-front-ng-filter-pills.d.ts +28 -55
  66. package/types/lucca-front-ng-form-field.d.ts +12 -4
  67. package/types/lucca-front-ng-form.d.ts +7 -1
  68. package/types/lucca-front-ng-forms.d.ts +7 -2
  69. package/types/lucca-front-ng-highlight-data.d.ts +1 -2
  70. package/types/lucca-front-ng-impersonation.d.ts +14 -1
  71. package/types/lucca-front-ng-link.d.ts +5 -1
  72. package/types/lucca-front-ng-markdown.d.ts +24 -0
  73. package/types/lucca-front-ng-multi-select.d.ts +10 -1
  74. package/types/lucca-front-ng-popover2.d.ts +7 -1
  75. package/types/lucca-front-ng-priority-levels.d.ts +44 -0
  76. package/types/lucca-front-ng-simple-select.d.ts +4 -0
@@ -1,13 +1,14 @@
1
1
  import { Overlay, OverlayPositionBuilder, ScrollStrategyOptions, OverlayModule } from '@angular/cdk/overlay';
2
2
  import { NgTemplateOutlet, AsyncPipe } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { InjectionToken, Pipe, inject, signal, ElementRef, computed, forwardRef, ChangeDetectionStrategy, Component, Injector, Injectable, input, viewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';
4
+ import { InjectionToken, Pipe, inject, signal, ElementRef, computed, viewChild, forwardRef, ChangeDetectionStrategy, Component, Injector, Injectable, input, ViewContainerRef, ViewEncapsulation } from '@angular/core';
5
5
  import * as i1 from '@angular/forms';
6
6
  import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
7
7
  import { ClearComponent } from '@lucca-front/ng/clear';
8
8
  import { isNotNil, PortalDirective, getPushPanelViewportMargin, intlInputOptions, luBooleanAttribute } from '@lucca-front/ng/core';
9
- import { LuSelectPanelRef, SELECT_ID, ɵinjectPointerNavigation as _injectPointerNavigation, CoreSelectKeyManager, ɵgetGroupTemplateLocation as _getGroupTemplateLocation, LuSelectPanelLayoutComponent, ɵLuOptionComponent as _LuOptionComponent, ɵCoreSelectPanelElement as _CoreSelectPanelElement, ɵLuOptionGroupPipe as _LuOptionGroupPipe, TreeDisplayPipe, SELECT_PANEL_INSTANCE, SELECT_LABEL_ID, addAttributesOnCdkContainer, ALuSelectInputComponent, LU_CORE_SELECT_TRANSLATIONS, ɵLuOptionOutletDirective as _LuOptionOutletDirective, provideLuSelectLabelsAndIds } from '@lucca-front/ng/core-select';
10
- import { FilterPillDisplayerDirective, FILTER_PILL_INPUT_COMPONENT } from '@lucca-front/ng/filter-pills';
9
+ import { LuSelectPanelRef, SELECT_ID, ɵinjectPointerNavigation as _injectPointerNavigation, CoreSelectKeyManager, ɵgetGroupTemplateLocation as _getGroupTemplateLocation, ɵfillScrollViewport as _fillScrollViewport, LuSelectPanelLayoutComponent, ɵLuOptionComponent as _LuOptionComponent, ɵCoreSelectPanelElement as _CoreSelectPanelElement, ɵLuOptionGroupPipe as _LuOptionGroupPipe, TreeDisplayPipe, SELECT_PANEL_INSTANCE, ɵopenSelectPanelSheet as _openSelectPanelSheet, SELECT_LABEL_ID, addAttributesOnCdkContainer, ALuSelectInputComponent, LU_CORE_SELECT_TRANSLATIONS, ɵLuOptionOutletDirective as _LuOptionOutletDirective, provideLuSelectLabelsAndIds } from '@lucca-front/ng/core-select';
10
+ import { DialogComponent, DialogHeaderComponent, DialogContentComponent, LuDialogService, provideLuDialog } from '@lucca-front/ng/dialog';
11
+ import { FilterPillDisplayerDirective, FILTER_PILL_INPUT_COMPONENT } from '@lucca-front/ng/filter-pills/core';
11
12
  import { InputDirective, ɵPresentationDisplayDefaultDirective as _PresentationDisplayDefaultDirective, PresentationDisplayDirective } from '@lucca-front/ng/form-field';
12
13
  import { IconComponent } from '@lucca-front/ng/icon';
13
14
  import { ComponentPortal } from '@angular/cdk/portal';
@@ -160,6 +161,17 @@ class LuSelectPanelComponent {
160
161
  return this.clue().length ? this.intl().emptyResults : this.intl().emptyOptions;
161
162
  }, /* @ts-ignore */
162
163
  ...(ngDevMode ? [{ debugName: "listboxStatusMsg" }] : /* istanbul ignore next */ []));
164
+ this.sheetViewport = viewChild('sheetViewport', { ...(ngDevMode ? { debugName: "sheetViewport" } : /* istanbul ignore next */ {}), read: ElementRef });
165
+ // Only the sheet needs the viewport filled by hand: it is sized to its own content, so a first
166
+ // page that doesn't reach its maximum height leaves nothing to scroll and `onScroll` — the only
167
+ // thing that asks for the next page — never fires. The popover panel caps its content at 20rem,
168
+ // which a page of options always overflows, so there it already works on its own.
169
+ _fillScrollViewport({
170
+ viewport: computed(() => this.sheetViewport()?.nativeElement),
171
+ optionCount: computed(() => this.dataSourceOptions().length),
172
+ loading: this.loading,
173
+ nextPage: () => this.panelRef.nextPage.emit(),
174
+ });
163
175
  }
164
176
  onScroll(evt) {
165
177
  if (!(evt.target instanceof HTMLElement)) {
@@ -188,7 +200,7 @@ class LuSelectPanelComponent {
188
200
  provide: SELECT_PANEL_INSTANCE,
189
201
  useExisting: forwardRef(() => LuSelectPanelComponent),
190
202
  },
191
- ], ngImport: i0, template: "<lu-select-panel-layout [loading]=\"loading()\" [trapFocus]=\"true\" (scrolled)=\"onScroll($event)\">\n\t<lu-listbox [tree]=\"!!treeGenerator\" [state]=\"listboxState()\" [statusMsg]=\"listboxStatusMsg()\">\n\t\t<!-- The header is projected inside the listbox because it can contain selectable elements\n\t\tthat are referenced by aria-activedescendant -->\n\t\t<ng-container ngProjectAs=\"[listbox-header]\">\n\t\t\t@if (selectInput.panelHeaderTpl(); as tpl) {\n\t\t\t\t<div>\n\t\t\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t\t\t</div>\n\t\t\t}\n\t\t</ng-container>\n\t\t@if (grouping() && groupTemplateLocation() === \"group-header\") {\n\t\t\t@for (group of dataSourceOptions() | luOptionGroup: grouping().selector; track group.key; let groupIndex = $index) {\n\t\t\t\t<lu-listbox-option group [groupId]=\"selectId + '-group-' + group.key\" [elementId]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t<ng-container *luPortal=\"grouping().content; context: { $implicit: group }\" />\n\t\t\t\t\t<div optgroup class=\"listboxOptionWrapper\">\n\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"optionsList\"\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: group.options, groupIndex: groupIndex }\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</lu-listbox-option>\n\t\t\t}\n\t\t}\n\t\t@if (!grouping() || groupTemplateLocation() !== \"group-header\") {\n\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: dataSourceOptions() }\" />\n\t\t}\n\t\t<ng-template #optionsList let-options let-groupIndex=\"groupIndex\">\n\t\t\t@if (treeGenerator) {\n\t\t\t\t@for (branch of options | luTreeDisplay: treeGenerator; let index = $index; track optionKey()(branch.node)) {\n\t\t\t\t\t<lu-tree-branch\n\t\t\t\t\t\t[branch]=\"branch\"\n\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t[optionComparer]=\"optionComparer()\"\n\t\t\t\t\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t(toggleOne)=\"panelRef.emitValue($event)\"\n\t\t\t\t\t\tsimpleMode\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t} @else {\n\t\t\t\t@for (option of options; track optionKey()(option); let index = $index) {\n\t\t\t\t\t<lu-select-option\n\t\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t[groupTemplateLocation]=\"groupTemplateLocation()\"\n\t\t\t\t\t\t[groupIndex]=\"groupIndex\"\n\t\t\t\t\t\t[grouping]=\"grouping()\"\n\t\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected: optionComparer() : selected()\"\n\t\t\t\t\t\t[class.withAddOption]=\"shouldDisplayAddOption()\"\n\t\t\t\t\t\t(selected)=\"panelRef.emitValue(option)\"\n\t\t\t\t\t\t(click)=\"panelRef.emitValue(option)\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t}\n\t\t</ng-template>\n\t</lu-listbox>\n\t@if (shouldDisplayAddOption()) {\n\t\t<lu-listbox-option\n\t\t\tadd\n\t\t\tclass=\"palette-product\"\n\t\t\tluCoreSelectPanelElement\n\t\t\t#addOptionElement=\"luCoreSelectPanelElement\"\n\t\t\telementId=\"picker-content-add\"\n\t\t\t[hovered]=\"addOptionElement.isHighlighted()\"\n\t\t\t(click)=\"selectInput.emitAddOption()\"\n\t\t\t(selected)=\"selectInput.emitAddOption()\"\n\t\t>\n\t\t\t<ng-container *luPortal=\"selectInput.addOptionLabel\" />\n\t\t</lu-listbox-option>\n\t}\n\t@if (selectInput.panelFooterTpl(); as tpl) {\n\t\t<div>\n\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t</div>\n\t}\n</lu-select-panel-layout>\n", styles: ["@layer base{:root{--components-options-item-padding-vertical: var(--pr-t-spacings-50);--components-options-item-padding-horizontal: var(--pr-t-spacings-100);--components-options-item-multiple-padding: 2.25rem;--components-options-item-icon-color: var(--palettes-neutral-800);--components-options-checkbox-size: 1.25rem;--components-options-checkbox-color: var(--palettes-700, var(--palettes-product-700));--components-options-checkbox-border-radius: var(--pr-t-border-radius-small);--components-options-checkbox-border-color: var(--palettes-neutral-700);--components-options-establishment-multiple-padding: 2rem}}@layer reset,base,components,mods,product,utils;@layer mods{.textfield.mod-search{inline-size:100%}.textfield-input{outline:none}.checkbox.mod-formerEmployee{padding-block:var(--pr-t-spacings-50);padding-inline:var(--components-options-item-padding-horizontal);border-block-end:var(--commons-divider-width) solid var(--commons-divider-color);background-color:var(--palettes-neutral-50);font-style:italic}}@layer components{.optionPlaceholder{display:block;padding-block:var(--components-options-item-padding-vertical);padding-inline:var(--components-options-item-padding-horizontal);font-style:italic;color:var(--palettes-neutral-600)}}\n"], dependencies: [{ kind: "component", type: LuSelectPanelLayoutComponent, selector: "lu-select-panel-layout", inputs: ["loading", "trapFocus", "contentTabIndex"], outputs: ["scrolled"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: _LuOptionComponent, selector: "lu-select-option", inputs: ["intl", "optionTpl", "option", "grouping", "hasChildren", "groupIndex", "optionIndex", "scrollIntoViewOptions", "groupTemplateLocation"], outputs: ["onlyParent", "onlyChildren"] }, { kind: "directive", type: PortalDirective, selector: "[luPortal]", inputs: ["luPortal", "luPortalContext"] }, { kind: "directive", type: _CoreSelectPanelElement, selector: "[luCoreSelectPanelElement]", inputs: ["elementId", "isSelected", "option", "disabled"], outputs: ["isSelectedChange", "selected"], exportAs: ["luCoreSelectPanelElement"] }, { kind: "component", type: ListboxComponent, selector: "lu-listbox", inputs: ["multiple", "tree", "state", "statusMsg"] }, { kind: "component", type: OptionComponent, selector: "lu-listbox-option", inputs: ["elementId", "checked", "mixed", "disabled", "hovered", "add", "group", "groupId", "select", "selectAll", "treeitemLevel"] }, { kind: "component", type: TreeBranchComponent, selector: "lu-tree-branch", inputs: ["branch", "optionTpl", "optionIndex", "optionComparer", "selectedOptions", "simpleMode"], outputs: ["toggleOne", "selectMany", "unselectMany"] }, { kind: "pipe", type: _LuOptionGroupPipe, name: "luOptionGroup" }, { kind: "pipe", type: LuIsOptionSelectedPipe, name: "luIsOptionSelected" }, { kind: "pipe", type: TreeDisplayPipe, name: "luTreeDisplay" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
203
+ ], viewQueries: [{ propertyName: "sheetViewport", first: true, predicate: ["sheetViewport"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (selectInput.panelBottomSheetMode()) {\n\t<!-- Below the S breakpoint the panel is a dialog in `sheet` mode: the surface, the backdrop, the focus\n\ttrap, the close button and the focus restoration all come from the dialog, so the panel only fills in\n\tits title, its own search input \u2014 the field it covers is no longer reachable \u2014 and its content. -->\n\t<lu-dialog>\n\t\t<lu-dialog-header>\n\t\t\t@if (selectInput.panelTitle(); as title) {\n\t\t\t\t<!-- The interpolation and the marker must stay adjacent in the source: any whitespace between\n\t\t\t\tthem (even just a line break) renders as a literal space, pushing the asterisk away from the\n\t\t\t\ttitle instead of hugging it the way `.formLabel-required`'s own margin expects. -->\n\t\t\t\t@if (selectInput.panelTitleRequired()) {\n\t\t\t\t\t<h1>{{ title }}<sup class=\"formLabel-required\" aria-hidden=\"true\">*</sup></h1>\n\t\t\t\t} @else {\n\t\t\t\t\t<h1>{{ title }}</h1>\n\t\t\t\t}\n\t\t\t}\n\t\t\t<div dialogHeaderContent>\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"sheetSearch\" />\n\t\t\t</div>\n\t\t</lu-dialog-header>\n\t\t<lu-dialog-content #sheetViewport (scroll)=\"onScroll($event)\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"panelContent\" />\n\t\t</lu-dialog-content>\n\t</lu-dialog>\n} @else {\n\t<lu-select-panel-layout [loading]=\"loading()\" trapFocus (scrolled)=\"onScroll($event)\">\n\t\t<ng-container [ngTemplateOutlet]=\"panelContent\" />\n\t</lu-select-panel-layout>\n}\n\n<ng-template #sheetSearch>\n\t<div class=\"textField\">\n\t\t<div class=\"textField-input\">\n\t\t\t<input\n\t\t\t\tclass=\"textField-input-value\"\n\t\t\t\ttype=\"text\"\n\t\t\t\trole=\"combobox\"\n\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t[attr.aria-expanded]=\"true\"\n\t\t\t\t[attr.aria-controls]=\"selectId\"\n\t\t\t\t[attr.placeholder]=\"intl().placeholder\"\n\t\t\t\t[ngModel]=\"clue()\"\n\t\t\t\t(ngModelChange)=\"selectInput.clueChanged($event)\"\n\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t\t[readonly]=\"!searchable\"\n\t\t\t\t(keydown)=\"selectInput.onKeyDownNavigation($event)\"\n\t\t\t/>\n\t\t\t<div class=\"textField-input-affix\">\n\t\t\t\t<lu-icon class=\"textField-input-affix-icon\" icon=\"searchMagnifyingGlass\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</ng-template>\n\n<ng-template #panelContent>\n\t<lu-listbox [tree]=\"!!treeGenerator\" [state]=\"listboxState()\" [statusMsg]=\"listboxStatusMsg()\">\n\t\t<!-- The header is projected inside the listbox because it can contain selectable elements\n\t\tthat are referenced by aria-activedescendant -->\n\t\t<ng-container ngProjectAs=\"[listbox-header]\">\n\t\t\t@if (selectInput.panelHeaderTpl(); as tpl) {\n\t\t\t\t<div>\n\t\t\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t\t\t</div>\n\t\t\t}\n\t\t</ng-container>\n\t\t@if (grouping() && groupTemplateLocation() === \"group-header\") {\n\t\t\t@for (group of dataSourceOptions() | luOptionGroup: grouping().selector; track group.key; let groupIndex = $index) {\n\t\t\t\t<lu-listbox-option group [groupId]=\"selectId + '-group-' + group.key\" [elementId]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t<ng-container *luPortal=\"grouping().content; context: { $implicit: group }\" />\n\t\t\t\t\t<div optgroup class=\"listboxOptionWrapper\">\n\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"optionsList\"\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: group.options, groupIndex: groupIndex }\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</lu-listbox-option>\n\t\t\t}\n\t\t}\n\t\t@if (!grouping() || groupTemplateLocation() !== \"group-header\") {\n\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: dataSourceOptions() }\" />\n\t\t}\n\t\t<ng-template #optionsList let-options let-groupIndex=\"groupIndex\">\n\t\t\t@if (treeGenerator) {\n\t\t\t\t@for (branch of options | luTreeDisplay: treeGenerator; let index = $index; track optionKey()(branch.node)) {\n\t\t\t\t\t<lu-tree-branch\n\t\t\t\t\t\t[branch]=\"branch\"\n\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t[optionComparer]=\"optionComparer()\"\n\t\t\t\t\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t(toggleOne)=\"panelRef.emitValue($event)\"\n\t\t\t\t\t\tsimpleMode\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t} @else {\n\t\t\t\t@for (option of options; track optionKey()(option); let index = $index) {\n\t\t\t\t\t<lu-select-option\n\t\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t[groupTemplateLocation]=\"groupTemplateLocation()\"\n\t\t\t\t\t\t[groupIndex]=\"groupIndex\"\n\t\t\t\t\t\t[grouping]=\"grouping()\"\n\t\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected: optionComparer() : selected()\"\n\t\t\t\t\t\t[class.withAddOption]=\"shouldDisplayAddOption()\"\n\t\t\t\t\t\t(selected)=\"panelRef.emitValue(option)\"\n\t\t\t\t\t\t(click)=\"panelRef.emitValue(option)\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t}\n\t\t</ng-template>\n\t</lu-listbox>\n\t@if (shouldDisplayAddOption()) {\n\t\t<lu-listbox-option\n\t\t\tadd\n\t\t\tclass=\"palette-product\"\n\t\t\tluCoreSelectPanelElement\n\t\t\t#addOptionElement=\"luCoreSelectPanelElement\"\n\t\t\telementId=\"picker-content-add\"\n\t\t\t[hovered]=\"addOptionElement.isHighlighted()\"\n\t\t\t(click)=\"selectInput.emitAddOption()\"\n\t\t\t(selected)=\"selectInput.emitAddOption()\"\n\t\t>\n\t\t\t<ng-container *luPortal=\"selectInput.addOptionLabel\" />\n\t\t</lu-listbox-option>\n\t}\n\t@if (selectInput.panelFooterTpl(); as tpl) {\n\t\t<div>\n\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t</div>\n\t}\n</ng-template>\n", styles: ["@layer base{:root{--components-options-item-padding-vertical: var(--pr-t-spacings-50);--components-options-item-padding-horizontal: var(--pr-t-spacings-100);--components-options-item-multiple-padding: 2.25rem;--components-options-item-icon-color: var(--palettes-neutral-800);--components-options-checkbox-size: 1.25rem;--components-options-checkbox-color: var(--palettes-700, var(--palettes-product-700));--components-options-checkbox-border-radius: var(--pr-t-border-radius-small);--components-options-checkbox-border-color: var(--palettes-neutral-700);--components-options-establishment-multiple-padding: 2rem}}@layer reset,base,components,mods,product,utils;@layer mods{.textfield.mod-search{inline-size:100%}.textfield-input{outline:none}.checkbox.mod-formerEmployee{padding-block:var(--pr-t-spacings-50);padding-inline:var(--components-options-item-padding-horizontal);border-block-end:var(--commons-divider-width) solid var(--commons-divider-color);background-color:var(--palettes-neutral-50);font-style:italic}}@layer components{.optionPlaceholder{display:block;padding-block:var(--components-options-item-padding-vertical);padding-inline:var(--components-options-item-padding-horizontal);font-style:italic;color:var(--palettes-neutral-600)}}\n"], dependencies: [{ kind: "component", type: LuSelectPanelLayoutComponent, selector: "lu-select-panel-layout", inputs: ["loading", "trapFocus", "contentTabIndex"], outputs: ["scrolled"] }, { kind: "component", type: DialogComponent, selector: "lu-dialog", inputs: ["stacked", "fancyIllustration", "fancyIllustrationUrl"] }, { kind: "component", type: DialogHeaderComponent, selector: "lu-dialog-header", inputs: ["intl"] }, { kind: "component", type: DialogContentComponent, selector: "lu-dialog-content" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: _LuOptionComponent, selector: "lu-select-option", inputs: ["intl", "optionTpl", "option", "grouping", "hasChildren", "groupIndex", "optionIndex", "scrollIntoViewOptions", "groupTemplateLocation"], outputs: ["onlyParent", "onlyChildren"] }, { kind: "directive", type: PortalDirective, selector: "[luPortal]", inputs: ["luPortal", "luPortalContext"] }, { kind: "directive", type: _CoreSelectPanelElement, selector: "[luCoreSelectPanelElement]", inputs: ["elementId", "isSelected", "option", "disabled"], outputs: ["isSelectedChange", "selected"], exportAs: ["luCoreSelectPanelElement"] }, { kind: "component", type: ListboxComponent, selector: "lu-listbox", inputs: ["multiple", "tree", "state", "statusMsg"] }, { kind: "component", type: OptionComponent, selector: "lu-listbox-option", inputs: ["elementId", "checked", "mixed", "disabled", "hovered", "add", "group", "groupId", "select", "selectAll", "treeitemLevel"] }, { kind: "component", type: IconComponent, selector: "lu-icon, pr-icon", inputs: ["icon", "alt", "size", "color", "AI"] }, { kind: "component", type: TreeBranchComponent, selector: "lu-tree-branch", inputs: ["branch", "optionTpl", "optionIndex", "optionComparer", "selectedOptions", "simpleMode"], outputs: ["toggleOne", "selectMany", "unselectMany"] }, { kind: "pipe", type: _LuOptionGroupPipe, name: "luOptionGroup" }, { kind: "pipe", type: LuIsOptionSelectedPipe, name: "luIsOptionSelected" }, { kind: "pipe", type: TreeDisplayPipe, name: "luTreeDisplay" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
192
204
  }
193
205
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LuSelectPanelComponent, decorators: [{
194
206
  type: Component,
@@ -198,6 +210,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
198
210
  '[class.is-pointerNavigation]': 'pointerNavigation()',
199
211
  }, imports: [
200
212
  LuSelectPanelLayoutComponent,
213
+ DialogComponent,
214
+ DialogHeaderComponent,
215
+ DialogContentComponent,
201
216
  FormsModule,
202
217
  NgTemplateOutlet,
203
218
  _LuOptionGroupPipe,
@@ -207,6 +222,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
207
222
  _CoreSelectPanelElement,
208
223
  ListboxComponent,
209
224
  OptionComponent,
225
+ IconComponent,
210
226
  TreeBranchComponent,
211
227
  TreeDisplayPipe,
212
228
  ], providers: [
@@ -215,14 +231,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
215
231
  provide: SELECT_PANEL_INSTANCE,
216
232
  useExisting: forwardRef(() => LuSelectPanelComponent),
217
233
  },
218
- ], template: "<lu-select-panel-layout [loading]=\"loading()\" [trapFocus]=\"true\" (scrolled)=\"onScroll($event)\">\n\t<lu-listbox [tree]=\"!!treeGenerator\" [state]=\"listboxState()\" [statusMsg]=\"listboxStatusMsg()\">\n\t\t<!-- The header is projected inside the listbox because it can contain selectable elements\n\t\tthat are referenced by aria-activedescendant -->\n\t\t<ng-container ngProjectAs=\"[listbox-header]\">\n\t\t\t@if (selectInput.panelHeaderTpl(); as tpl) {\n\t\t\t\t<div>\n\t\t\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t\t\t</div>\n\t\t\t}\n\t\t</ng-container>\n\t\t@if (grouping() && groupTemplateLocation() === \"group-header\") {\n\t\t\t@for (group of dataSourceOptions() | luOptionGroup: grouping().selector; track group.key; let groupIndex = $index) {\n\t\t\t\t<lu-listbox-option group [groupId]=\"selectId + '-group-' + group.key\" [elementId]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t<ng-container *luPortal=\"grouping().content; context: { $implicit: group }\" />\n\t\t\t\t\t<div optgroup class=\"listboxOptionWrapper\">\n\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"optionsList\"\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: group.options, groupIndex: groupIndex }\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</lu-listbox-option>\n\t\t\t}\n\t\t}\n\t\t@if (!grouping() || groupTemplateLocation() !== \"group-header\") {\n\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: dataSourceOptions() }\" />\n\t\t}\n\t\t<ng-template #optionsList let-options let-groupIndex=\"groupIndex\">\n\t\t\t@if (treeGenerator) {\n\t\t\t\t@for (branch of options | luTreeDisplay: treeGenerator; let index = $index; track optionKey()(branch.node)) {\n\t\t\t\t\t<lu-tree-branch\n\t\t\t\t\t\t[branch]=\"branch\"\n\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t[optionComparer]=\"optionComparer()\"\n\t\t\t\t\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t(toggleOne)=\"panelRef.emitValue($event)\"\n\t\t\t\t\t\tsimpleMode\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t} @else {\n\t\t\t\t@for (option of options; track optionKey()(option); let index = $index) {\n\t\t\t\t\t<lu-select-option\n\t\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t[groupTemplateLocation]=\"groupTemplateLocation()\"\n\t\t\t\t\t\t[groupIndex]=\"groupIndex\"\n\t\t\t\t\t\t[grouping]=\"grouping()\"\n\t\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected: optionComparer() : selected()\"\n\t\t\t\t\t\t[class.withAddOption]=\"shouldDisplayAddOption()\"\n\t\t\t\t\t\t(selected)=\"panelRef.emitValue(option)\"\n\t\t\t\t\t\t(click)=\"panelRef.emitValue(option)\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t}\n\t\t</ng-template>\n\t</lu-listbox>\n\t@if (shouldDisplayAddOption()) {\n\t\t<lu-listbox-option\n\t\t\tadd\n\t\t\tclass=\"palette-product\"\n\t\t\tluCoreSelectPanelElement\n\t\t\t#addOptionElement=\"luCoreSelectPanelElement\"\n\t\t\telementId=\"picker-content-add\"\n\t\t\t[hovered]=\"addOptionElement.isHighlighted()\"\n\t\t\t(click)=\"selectInput.emitAddOption()\"\n\t\t\t(selected)=\"selectInput.emitAddOption()\"\n\t\t>\n\t\t\t<ng-container *luPortal=\"selectInput.addOptionLabel\" />\n\t\t</lu-listbox-option>\n\t}\n\t@if (selectInput.panelFooterTpl(); as tpl) {\n\t\t<div>\n\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t</div>\n\t}\n</lu-select-panel-layout>\n", styles: ["@layer base{:root{--components-options-item-padding-vertical: var(--pr-t-spacings-50);--components-options-item-padding-horizontal: var(--pr-t-spacings-100);--components-options-item-multiple-padding: 2.25rem;--components-options-item-icon-color: var(--palettes-neutral-800);--components-options-checkbox-size: 1.25rem;--components-options-checkbox-color: var(--palettes-700, var(--palettes-product-700));--components-options-checkbox-border-radius: var(--pr-t-border-radius-small);--components-options-checkbox-border-color: var(--palettes-neutral-700);--components-options-establishment-multiple-padding: 2rem}}@layer reset,base,components,mods,product,utils;@layer mods{.textfield.mod-search{inline-size:100%}.textfield-input{outline:none}.checkbox.mod-formerEmployee{padding-block:var(--pr-t-spacings-50);padding-inline:var(--components-options-item-padding-horizontal);border-block-end:var(--commons-divider-width) solid var(--commons-divider-color);background-color:var(--palettes-neutral-50);font-style:italic}}@layer components{.optionPlaceholder{display:block;padding-block:var(--components-options-item-padding-vertical);padding-inline:var(--components-options-item-padding-horizontal);font-style:italic;color:var(--palettes-neutral-600)}}\n"] }]
219
- }] });
234
+ ], template: "@if (selectInput.panelBottomSheetMode()) {\n\t<!-- Below the S breakpoint the panel is a dialog in `sheet` mode: the surface, the backdrop, the focus\n\ttrap, the close button and the focus restoration all come from the dialog, so the panel only fills in\n\tits title, its own search input \u2014 the field it covers is no longer reachable \u2014 and its content. -->\n\t<lu-dialog>\n\t\t<lu-dialog-header>\n\t\t\t@if (selectInput.panelTitle(); as title) {\n\t\t\t\t<!-- The interpolation and the marker must stay adjacent in the source: any whitespace between\n\t\t\t\tthem (even just a line break) renders as a literal space, pushing the asterisk away from the\n\t\t\t\ttitle instead of hugging it the way `.formLabel-required`'s own margin expects. -->\n\t\t\t\t@if (selectInput.panelTitleRequired()) {\n\t\t\t\t\t<h1>{{ title }}<sup class=\"formLabel-required\" aria-hidden=\"true\">*</sup></h1>\n\t\t\t\t} @else {\n\t\t\t\t\t<h1>{{ title }}</h1>\n\t\t\t\t}\n\t\t\t}\n\t\t\t<div dialogHeaderContent>\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"sheetSearch\" />\n\t\t\t</div>\n\t\t</lu-dialog-header>\n\t\t<lu-dialog-content #sheetViewport (scroll)=\"onScroll($event)\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"panelContent\" />\n\t\t</lu-dialog-content>\n\t</lu-dialog>\n} @else {\n\t<lu-select-panel-layout [loading]=\"loading()\" trapFocus (scrolled)=\"onScroll($event)\">\n\t\t<ng-container [ngTemplateOutlet]=\"panelContent\" />\n\t</lu-select-panel-layout>\n}\n\n<ng-template #sheetSearch>\n\t<div class=\"textField\">\n\t\t<div class=\"textField-input\">\n\t\t\t<input\n\t\t\t\tclass=\"textField-input-value\"\n\t\t\t\ttype=\"text\"\n\t\t\t\trole=\"combobox\"\n\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t[attr.aria-expanded]=\"true\"\n\t\t\t\t[attr.aria-controls]=\"selectId\"\n\t\t\t\t[attr.placeholder]=\"intl().placeholder\"\n\t\t\t\t[ngModel]=\"clue()\"\n\t\t\t\t(ngModelChange)=\"selectInput.clueChanged($event)\"\n\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t\t[readonly]=\"!searchable\"\n\t\t\t\t(keydown)=\"selectInput.onKeyDownNavigation($event)\"\n\t\t\t/>\n\t\t\t<div class=\"textField-input-affix\">\n\t\t\t\t<lu-icon class=\"textField-input-affix-icon\" icon=\"searchMagnifyingGlass\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</ng-template>\n\n<ng-template #panelContent>\n\t<lu-listbox [tree]=\"!!treeGenerator\" [state]=\"listboxState()\" [statusMsg]=\"listboxStatusMsg()\">\n\t\t<!-- The header is projected inside the listbox because it can contain selectable elements\n\t\tthat are referenced by aria-activedescendant -->\n\t\t<ng-container ngProjectAs=\"[listbox-header]\">\n\t\t\t@if (selectInput.panelHeaderTpl(); as tpl) {\n\t\t\t\t<div>\n\t\t\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t\t\t</div>\n\t\t\t}\n\t\t</ng-container>\n\t\t@if (grouping() && groupTemplateLocation() === \"group-header\") {\n\t\t\t@for (group of dataSourceOptions() | luOptionGroup: grouping().selector; track group.key; let groupIndex = $index) {\n\t\t\t\t<lu-listbox-option group [groupId]=\"selectId + '-group-' + group.key\" [elementId]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t<ng-container *luPortal=\"grouping().content; context: { $implicit: group }\" />\n\t\t\t\t\t<div optgroup class=\"listboxOptionWrapper\">\n\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"optionsList\"\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: group.options, groupIndex: groupIndex }\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</lu-listbox-option>\n\t\t\t}\n\t\t}\n\t\t@if (!grouping() || groupTemplateLocation() !== \"group-header\") {\n\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: dataSourceOptions() }\" />\n\t\t}\n\t\t<ng-template #optionsList let-options let-groupIndex=\"groupIndex\">\n\t\t\t@if (treeGenerator) {\n\t\t\t\t@for (branch of options | luTreeDisplay: treeGenerator; let index = $index; track optionKey()(branch.node)) {\n\t\t\t\t\t<lu-tree-branch\n\t\t\t\t\t\t[branch]=\"branch\"\n\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t[optionComparer]=\"optionComparer()\"\n\t\t\t\t\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t(toggleOne)=\"panelRef.emitValue($event)\"\n\t\t\t\t\t\tsimpleMode\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t} @else {\n\t\t\t\t@for (option of options; track optionKey()(option); let index = $index) {\n\t\t\t\t\t<lu-select-option\n\t\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t[groupTemplateLocation]=\"groupTemplateLocation()\"\n\t\t\t\t\t\t[groupIndex]=\"groupIndex\"\n\t\t\t\t\t\t[grouping]=\"grouping()\"\n\t\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected: optionComparer() : selected()\"\n\t\t\t\t\t\t[class.withAddOption]=\"shouldDisplayAddOption()\"\n\t\t\t\t\t\t(selected)=\"panelRef.emitValue(option)\"\n\t\t\t\t\t\t(click)=\"panelRef.emitValue(option)\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t}\n\t\t</ng-template>\n\t</lu-listbox>\n\t@if (shouldDisplayAddOption()) {\n\t\t<lu-listbox-option\n\t\t\tadd\n\t\t\tclass=\"palette-product\"\n\t\t\tluCoreSelectPanelElement\n\t\t\t#addOptionElement=\"luCoreSelectPanelElement\"\n\t\t\telementId=\"picker-content-add\"\n\t\t\t[hovered]=\"addOptionElement.isHighlighted()\"\n\t\t\t(click)=\"selectInput.emitAddOption()\"\n\t\t\t(selected)=\"selectInput.emitAddOption()\"\n\t\t>\n\t\t\t<ng-container *luPortal=\"selectInput.addOptionLabel\" />\n\t\t</lu-listbox-option>\n\t}\n\t@if (selectInput.panelFooterTpl(); as tpl) {\n\t\t<div>\n\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t</div>\n\t}\n</ng-template>\n", styles: ["@layer base{:root{--components-options-item-padding-vertical: var(--pr-t-spacings-50);--components-options-item-padding-horizontal: var(--pr-t-spacings-100);--components-options-item-multiple-padding: 2.25rem;--components-options-item-icon-color: var(--palettes-neutral-800);--components-options-checkbox-size: 1.25rem;--components-options-checkbox-color: var(--palettes-700, var(--palettes-product-700));--components-options-checkbox-border-radius: var(--pr-t-border-radius-small);--components-options-checkbox-border-color: var(--palettes-neutral-700);--components-options-establishment-multiple-padding: 2rem}}@layer reset,base,components,mods,product,utils;@layer mods{.textfield.mod-search{inline-size:100%}.textfield-input{outline:none}.checkbox.mod-formerEmployee{padding-block:var(--pr-t-spacings-50);padding-inline:var(--components-options-item-padding-horizontal);border-block-end:var(--commons-divider-width) solid var(--commons-divider-color);background-color:var(--palettes-neutral-50);font-style:italic}}@layer components{.optionPlaceholder{display:block;padding-block:var(--components-options-item-padding-vertical);padding-inline:var(--components-options-item-padding-horizontal);font-style:italic;color:var(--palettes-neutral-600)}}\n"] }]
235
+ }], ctorParameters: () => [], propDecorators: { sheetViewport: [{ type: i0.ViewChild, args: ['sheetViewport', { ...{ read: ElementRef }, isSignal: true }] }] } });
220
236
 
221
237
  class BaseSelectPanelRef extends LuSelectPanelRef {
222
238
  constructor(parentInjector, selectInput) {
223
239
  super();
224
240
  this.selectInput = selectInput;
225
- this.portalRef = new ComponentPortal(LuSelectPanelComponent, undefined, this.createInjector(selectInput, parentInjector));
241
+ this.panelInjector = this.createInjector(selectInput, parentInjector);
226
242
  }
227
243
  createInjector(selectInput, parentInjector) {
228
244
  return Injector.create({
@@ -248,7 +264,7 @@ class SelectPanelRef extends BaseSelectPanelRef {
248
264
  constructor(overlayRef, parentInjector, selectInput) {
249
265
  super(parentInjector, selectInput);
250
266
  this.overlayRef = overlayRef;
251
- this.panelRef = overlayRef.attach(this.portalRef);
267
+ this.panelRef = overlayRef.attach(new ComponentPortal(LuSelectPanelComponent, undefined, this.panelInjector));
252
268
  this.instance = this.panelRef.instance;
253
269
  overlayRef
254
270
  .backdropClick()
@@ -265,12 +281,39 @@ class SelectPanelRef extends BaseSelectPanelRef {
265
281
  this.overlayRef.updatePosition();
266
282
  }
267
283
  }
284
+ class SelectPanelSheetRef extends BaseSelectPanelRef {
285
+ constructor(dialogService, parentInjector, selectInput) {
286
+ super(parentInjector, selectInput);
287
+ // The sheet can be closed from either side (a selection here, the backdrop/Escape/close button there);
288
+ // this keeps the two from bouncing the close back at each other.
289
+ this.dialogClosed = false;
290
+ const panelComponent = LuSelectPanelComponent;
291
+ this.dialogRef = _openSelectPanelSheet(dialogService, panelComponent, this.panelInjector, selectInput.panelTitle());
292
+ this.panelRef = this.dialogRef.cdkRef.componentRef;
293
+ this.instance = this.panelRef.instance;
294
+ this.dialogRef.closed$.pipe(takeUntil(this.closed)).subscribe(() => {
295
+ this.dialogClosed = true;
296
+ this.close();
297
+ });
298
+ }
299
+ updatePosition() {
300
+ // The sheet is pinned to the viewport, it never follows the field.
301
+ }
302
+ close() {
303
+ super.close();
304
+ if (!this.dialogClosed) {
305
+ this.dialogClosed = true;
306
+ this.dialogRef.dismiss();
307
+ }
308
+ // Focus goes back to the field through the dialog's own `restoreFocus`.
309
+ }
310
+ }
268
311
  class SelectPanelDOMHostRef extends BaseSelectPanelRef {
269
312
  constructor(host, parentInjector, selectInput) {
270
313
  super(parentInjector, selectInput);
271
- const panelComponent = this.portalRef.component;
314
+ const panelComponent = LuSelectPanelComponent;
272
315
  this.panelRef = host.createComponent(panelComponent, {
273
- injector: this.portalRef.injector ?? undefined,
316
+ injector: this.panelInjector,
274
317
  });
275
318
  this.instance = this.panelRef.instance;
276
319
  }
@@ -288,10 +331,14 @@ class LuSimpleSelectPanelRefFactory {
288
331
  this.positionBuilder = inject(OverlayPositionBuilder);
289
332
  this.scrollStrategies = inject(ScrollStrategyOptions);
290
333
  this.parentInjector = inject(Injector);
334
+ this.dialogService = inject(LuDialogService);
291
335
  this.selectLabelId = inject(SELECT_LABEL_ID);
292
336
  this.selectId = inject(SELECT_ID);
293
337
  }
294
338
  buildPanelRef(selectInput, overlayConfigOverride = {}) {
339
+ if (selectInput.bottomSheetMode()) {
340
+ return new SelectPanelSheetRef(this.dialogService, this.parentInjector, selectInput);
341
+ }
295
342
  const overlayConfig = this.buildOverlayConfig(overlayConfigOverride);
296
343
  const overlayRef = this.overlay.create(overlayConfig);
297
344
  addAttributesOnCdkContainer(overlayRef, this.selectLabelId, this.selectId);
@@ -394,12 +441,14 @@ class LuSimpleSelectInputComponent extends ALuSelectInputComponent {
394
441
  useExisting: forwardRef(() => LuSimpleSelectInputComponent),
395
442
  },
396
443
  LuSimpleSelectPanelRefFactory,
444
+ // Below the `S` breakpoint the panel opens as a dialog in `sheet` mode.
445
+ provideLuDialog(),
397
446
  provideLuSelectLabelsAndIds(),
398
447
  {
399
448
  provide: FILTER_PILL_INPUT_COMPONENT,
400
449
  useExisting: forwardRef(() => LuSimpleSelectInputComponent),
401
450
  },
402
- ], viewQueries: [{ propertyName: "filterPillPanelAnchorRef", first: true, predicate: ["filterPillPanelAnchor"], descendants: true, read: ViewContainerRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"simpleSelect-field\">\n\t<span class=\"simpleSelect-field-prefix\">\n\t\t@if (prefix(); as prefix) {\n\t\t\t<ng-container *luPortal=\"prefix\" />\n\t\t}\n\t</span>\n\t<input\n\t\tclass=\"simpleSelect-field-input\"\n\t\ttype=\"text\"\n\t\trole=\"combobox\"\n\t\taria-haspopup=\"listbox\"\n\t\t[attr.aria-activedescendant]=\"activeDescendant$ | async\"\n\t\t[attr.aria-expanded]=\"panelOpenSignal()\"\n\t\t[attr.aria-controls]=\"ariaControls\"\n\t\t[attr.placeholder]=\"inputPlaceholder ? inputPlaceholder : intl().placeholder\"\n\t\t[ngModel]=\"clue\"\n\t\t(ngModelChange)=\"clueChanged($event)\"\n\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t[readonly]=\"!searchable\"\n\t\t[disabled]=\"(disabled$ | async) ?? false\"\n\t\t(keyup.space)=\"inputSpace($event)\"\n\t\tluInput\n\t\t#inputElement\n\t\t[attr.autocomplete]=\"autocomplete()\"\n\t\t[attr.tabindex]=\"inputTabindex()\"\n\t\t[luInputLabelledBy]=\"valueID\"\n\t/>\n\t<div class=\"simpleSelect-field-value\" [attr.id]=\"valueID\">\n\t\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n\t</div>\n\t@if (!filterPillMode && !impersonation()) {\n\t\t@if (clearable() && hasValue() && (disabled$ | async) === false) {\n\t\t\t<lu-clear class=\"simpleSelect-field-clear\" (onClear)=\"clearValue($event); inputElement.focus()\">{{ intl().clear }}</lu-clear>\n\t\t}\n\t\t<lu-icon icon=\"arrowChevronBottom\" class=\"simpleSelect-field-icon\" />\n\t}\n\t<lu-icon icon=\"searchMagnifyingGlass\" class=\"simpleSelect-field-icon mod-search\" />\n</div>\n<ng-container #filterPillPanelAnchor />\n<ng-container *luFilterPillDisplayer>\n\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n</ng-container>\n\n<ng-template #currentValueDisplayerTpl>\n\t<ng-container *luOptionOutlet=\"displayerTpl(); value: value\" />\n</ng-template>\n\n@if (!ignorePresentation()) {\n\t<ng-container *luPresentationDisplayDefault>\n\t\t@if (value) {\n\t\t\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n\t\t} @else {\n\t\t\t<span aria-hidden=\"true\" data-content-before=\"\u2013\"></span>\n\t\t}\n\t</ng-container>\n}\n", styles: ["@layer components{.simpleSelect{--components-simpleSelect-font: var(--pr-t-font-body-M);--components-simpleSelect-padding: var(--pr-t-spacings-100);--components-simpleSelect-gap: var(--pr-t-spacings-100);--components-simpleSelect-background: var(--pr-t-color-input-background);--components-simpleSelect-value-color: var(--pr-t-color-input-text);--components-simpleSelect-border-color: var(--pr-t-color-input-border);--components-simpleSelect-placeholder: var(--pr-t-color-input-text-placeholder);--components-simpleSelect-arrow-color: var(--pr-t-color-input-icon);display:block}.simpleSelect-field{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;box-shadow:0 0 0 1px var(--components-simpleSelect-border-color);background-color:var(--components-simpleSelect-background);border-radius:var(--pr-t-border-radius-input);padding:var(--components-simpleSelect-padding);overflow:hidden;outline:none;cursor:pointer}.simpleSelect-field:hover{--components-simpleSelect-border-color: var(--pr-t-color-input-border-hover)}.simpleSelect-field-prefix{display:none}.simpleSelect-field-prefix:not(:empty){display:flex;margin-inline-end:var(--pr-t-spacings-50)}.simpleSelect-field-input{grid-column-start:2;grid-row-start:1;font:var(--components-simpleSelect-font);padding:0;background-color:transparent;color:var(--components-simpleSelect-value-color);border:0;outline:none;position:relative;z-index:1;min-inline-size:0;cursor:pointer}.simpleSelect-field-input::placeholder{color:var(--components-simpleSelect-placeholder)}.simpleSelect-field-value{grid-column-start:2;grid-row-start:1;inline-size:100%;font:var(--components-simpleSelect-font);color:var(--components-simpleSelect-value-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color var(--commons-animations-durations-fast) ease}.simpleSelect-field-clear{grid-column-start:-2;margin-inline-start:var(--components-simpleSelect-gap)}.simpleSelect-field-icon{grid-column-start:-1;margin-inline-start:var(--components-simpleSelect-gap);color:var(--components-simpleSelect-arrow-color);transition:transform var(--commons-animations-durations-standard) ease}.simpleSelect-field-icon .lucca-icon{--icon-size: 1.5rem}.simpleSelect-field-icon.mod-search{display:none}}@layer mods{.simpleSelect:has(.simpleSelect-field-input:focus-visible) .simpleSelect-field{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:3px}.simpleSelect:has(.simpleSelect-field-input:focus-visible) .simpleSelect-field-value{color:var(--components-simpleSelect-value-color)}.simpleSelect:has(.simpleSelect-field-input:focus-visible):has(.simpleSelect-field-input[aria-expanded=true]) .simpleSelect-field-value{color:var(--components-simpleSelect-placeholder)}.simpleSelect:has(.simpleSelect-field-input:focus-visible):has(.simpleSelect-field-input[aria-expanded=true]) .simpleSelect-field-icon{transform:rotate(180deg)}.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input:focus-visible):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon,.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input[aria-expanded=true]):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon{display:none}.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input:focus-visible):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon.mod-search,.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input[aria-expanded=true]):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon.mod-search{display:inline-flex;transform:none}.simpleSelect:has(.simpleSelect-field-input[aria-invalid=true]){--components-simpleSelect-border-color: var(--pr-t-color-input-border-critical);--components-simpleSelect-background: var(--pr-t-color-input-background-critical);--components-simpleSelect-placeholder: var(--pr-t-color-input-text-placeholder-critical)}.simpleSelect:has(.simpleSelect-field-input:disabled){--components-simpleSelect-background: var(--pr-t-color-input-background-disabled);--components-simpleSelect-placeholder: var(--commons-disabled-placeholder);--components-simpleSelect-value-color: var(--pr-t-color-input-text-disabled);--components-simpleSelect-arrow-color: var(--pr-t-color-input-icon-disabled)}.simpleSelect:has(.simpleSelect-field-input:disabled) .simpleSelect-field{pointer-events:none}.simpleSelect.mod-S{--components-simpleSelect-font: var(--pr-t-font-body-S);--components-simpleSelect-padding: var(--pr-t-spacings-75);--components-simpleSelect-gap: var(--pr-t-spacings-75)}.simpleSelect.mod-S .simpleSelect-field-icon .lucca-icon{--icon-size: 1.25rem}.simpleSelect.mod-S .simpleSelect-field-clear.clear,.simpleSelect.mod-S .simpleSelect-field-clear:not(.clear){--components-clear-size: .75rem;--icon-size: .75rem}.simpleSelect.mod-XS{--components-simpleSelect-font: var(--pr-t-font-body-XS);--components-simpleSelect-padding: var(--pr-t-spacings-50);--components-simpleSelect-gap: var(--pr-t-spacings-50)}.simpleSelect.mod-XS .simpleSelect-field-icon .lucca-icon{--icon-size: 1rem}.simpleSelect.mod-XS .simpleSelect-field-clear.clear,.simpleSelect.mod-XS .simpleSelect-field-clear:not(.clear){--components-clear-size: .75rem;--icon-size: .75rem}.simpleSelect.mod-impersonation,.simpleSelect.mod-filterPill{inline-size:26.5rem;max-inline-size:calc(100vi - 2.5rem)}.simpleSelect.mod-impersonation .simpleSelect-field,.simpleSelect.mod-filterPill .simpleSelect-field{position:relative;z-index:1}.simpleSelect.mod-impersonation lu-simple-select-default-option.pr-u-ellipsis,.simpleSelect.mod-filterPill lu-simple-select-default-option.pr-u-ellipsis{white-space:normal!important}.simpleSelect.mod-impersonation .lu-picker-content,.simpleSelect.mod-filterPill .lu-picker-content{animation:none;box-shadow:none;border-radius:0;background-color:transparent;padding:var(--pr-t-spacings-50);margin:var(--pr-t-spacings-75) calc(var(--pr-t-spacings-100) * -1) calc(var(--pr-t-spacings-100) * -1)}.simpleSelect.is-searchFilled .simpleSelect-field-value{display:none}.simpleSelect.is-selected .simpleSelect-field-input::placeholder{opacity:0}.simpleSelect.is-selected.is-searchFilled .simpleSelect-field-input::placeholder{opacity:0}.simpleSelect.is-selected.is-searchFilled .simpleSelect-field-value{display:none}}@layer components{.clear{--components-clear-display: grid;--components-clear-size: 1rem;--components-clear-background: var(--palettes-800, var(--palettes-neutral-800));--components-clear-cross-color: var(--palettes-0, var(--palettes-neutral-0));--components-clear-background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16' fill='none'%3E%3Cpath d='M5.80473 4.86192C5.54438 4.60157 5.12227 4.60157 4.86192 4.86192C4.60157 5.12227 4.60157 5.54438 4.86192 5.80473L7.05718 7.99999L4.86192 10.1953C4.60157 10.4556 4.60157 10.8777 4.86192 11.1381C5.12227 11.3984 5.54438 11.3984 5.80473 11.1381L7.99999 8.9428L10.1953 11.1381C10.4556 11.3984 10.8777 11.3984 11.1381 11.1381C11.3984 10.8777 11.3984 10.4556 11.1381 10.1953L8.9428 7.99999L11.1381 5.80473C11.3984 5.54438 11.3984 5.12227 11.1381 4.86192C10.8777 4.60157 10.4556 4.60157 10.1953 4.86192L7.99999 7.05718L5.80473 4.86192Z' fill='currentColor'/%3E%3C/svg%3E\");padding:0;border:0;inline-size:100%;background-color:transparent;color:inherit;text-align:start;display:block;font:inherit;cursor:pointer;display:var(--components-clear-display);grid-template-columns:1fr;grid-template-rows:1fr;grid-template-areas:\"main\";align-items:normal;flex-shrink:0;inline-size:var(--components-clear-size);block-size:var(--components-clear-size);border-radius:var(--pr-t-border-radius-full)}.clear:before,.clear:after{content:\"\";grid-area:main}.clear:before{border-radius:var(--pr-t-border-radius-full);background-color:var(--components-clear-background)}.clear:after{-webkit-mask-image:var(--components-clear-background-image);mask-image:var(--components-clear-background-image);-webkit-mask-size:var(--components-clear-size);mask-size:var(--components-clear-size);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:var(--components-clear-cross-color)}.clear:hover{--components-clear-cross-color: var(--palettes-0, var(--palettes-neutral-0));--components-clear-background: var(--palettes-700, var(--palettes-neutral-700))}.clear:focus-visible{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:2px;border-radius:50%}.clear:active{--components-clear-background: var(--palettes-900, var(--palettes-neutral-900))}.clear .lucca-icon{display:none}}@layer mods{.clear.mod-S{--components-clear-size: .75rem;--icon-size: .75rem}.clear.mod-inverted{--components-clear-cross-color: var(--palettes-800, var(--palettes-neutral-800));--components-clear-background: var(--palettes-0, var(--palettes-neutral-0))}.clear.mod-inverted:hover{--components-clear-background: var(--palettes-50, var(--palettes-neutral-50))}.clear.mod-inverted:active{--components-clear-background: var(--palettes-100, var(--palettes-neutral-100))}.clear[disabled]{cursor:default;--components-clear-cross-color: var(--palettes-neutral-500)}.clear[disabled],.clear[disabled]:hover,.clear[disabled]:active{--components-clear-background: var(--palettes-neutral-300)}.clear[hidden],.filterPill[disabled] .clear,.filterPill:not(.is-filled) .clear,.textfield-input[disabled] .clear,.textfield-input:not(.is-filled) .clear{--components-clear-display: none}.multiSelect.is-selected:has(.multipleSelect-clear) .clear{--components-clear-display: grid}}\n"], dependencies: [{ kind: "directive", type: _LuOptionOutletDirective, selector: "[luOptionOutlet]", inputs: ["luOptionOutlet", "luOptionOutletValue", "luOptionShowNull"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: InputDirective, selector: "[luInput]", inputs: ["luInputStandalone", "luInputLabelledBy", "luInputDescribedBy"] }, { kind: "directive", type: FilterPillDisplayerDirective, selector: "[luFilterPillDisplayer]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconComponent, selector: "lu-icon, pr-icon", inputs: ["icon", "alt", "size", "color", "AI"] }, { kind: "component", type: ClearComponent, selector: "lu-clear", inputs: ["intl", "size", "disabled", "palette", "inverted"], outputs: ["onClear"], exportAs: ["luClearer"] }, { kind: "directive", type: PortalDirective, selector: "[luPortal]", inputs: ["luPortal", "luPortalContext"] }, { kind: "directive", type: _PresentationDisplayDefaultDirective, selector: "[luPresentationDisplayDefault]" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
451
+ ], viewQueries: [{ propertyName: "filterPillPanelAnchorRef", first: true, predicate: ["filterPillPanelAnchor"], descendants: true, read: ViewContainerRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"simpleSelect-field\">\n\t<span class=\"simpleSelect-field-prefix\">\n\t\t@if (prefix(); as prefix) {\n\t\t\t<ng-container *luPortal=\"prefix\" />\n\t\t}\n\t</span>\n\t@if (bottomSheetMode()) {\n\t\t<!--\n\t\t\tThe panel opens as a modal sheet that embeds its own search input, so the field itself is only ever\n\t\t\ta trigger. Keeping a text input here makes iOS focus it and raise the software keyboard on a field\n\t\t\tthat is about to be covered by the sheet; a button is both what this control actually is and what\n\t\t\tmobile browsers treat as a tap target rather than a text entry.\n\t\t-->\n\t\t<button\n\t\t\tclass=\"simpleSelect-field-input mod-button\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\t[attr.aria-expanded]=\"panelOpenSignal()\"\n\t\t\t[attr.aria-controls]=\"ariaControls\"\n\t\t\t[disabled]=\"(disabled$ | async) ?? false\"\n\t\t\tluInput\n\t\t\t#inputElement\n\t\t\t[attr.tabindex]=\"inputTabindex()\"\n\t\t\t[luInputLabelledBy]=\"valueID\"\n\t\t>\n\t\t\t@if (!hasValue()) {\n\t\t\t\t<span class=\"simpleSelect-field-placeholder\">{{ inputPlaceholder ? inputPlaceholder : intl().placeholder }}</span>\n\t\t\t}\n\t\t</button>\n\t} @else {\n\t\t<input\n\t\t\tclass=\"simpleSelect-field-input\"\n\t\t\ttype=\"text\"\n\t\t\trole=\"combobox\"\n\t\t\taria-haspopup=\"listbox\"\n\t\t\t[attr.aria-activedescendant]=\"activeDescendant$ | async\"\n\t\t\t[attr.aria-expanded]=\"panelOpenSignal()\"\n\t\t\t[attr.aria-controls]=\"ariaControls\"\n\t\t\t[attr.placeholder]=\"inputPlaceholder ? inputPlaceholder : intl().placeholder\"\n\t\t\t[ngModel]=\"clue\"\n\t\t\t(ngModelChange)=\"clueChanged($event)\"\n\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t[readonly]=\"!searchable\"\n\t\t\t[disabled]=\"(disabled$ | async) ?? false\"\n\t\t\t(keyup.space)=\"inputSpace($event)\"\n\t\t\tluInput\n\t\t\t#inputElement\n\t\t\t[attr.autocomplete]=\"autocomplete()\"\n\t\t\t[attr.tabindex]=\"inputTabindex()\"\n\t\t\t[luInputLabelledBy]=\"valueID\"\n\t\t/>\n\t}\n\t<div class=\"simpleSelect-field-value\" [attr.id]=\"valueID\">\n\t\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n\t</div>\n\t@if (!filterPillMode && !impersonation()) {\n\t\t@if (clearable() && hasValue() && (disabled$ | async) === false) {\n\t\t\t<lu-clear class=\"simpleSelect-field-clear\" (onClear)=\"clearValue($event)\">{{ intl().clear }}</lu-clear>\n\t\t}\n\t\t<lu-icon icon=\"arrowChevronBottom\" class=\"simpleSelect-field-icon\" />\n\t}\n\t<lu-icon icon=\"searchMagnifyingGlass\" class=\"simpleSelect-field-icon mod-search\" />\n</div>\n<ng-container #filterPillPanelAnchor />\n<ng-container *luFilterPillDisplayer>\n\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n</ng-container>\n\n<ng-template #currentValueDisplayerTpl>\n\t<ng-container *luOptionOutlet=\"displayerTpl(); value: value\" />\n</ng-template>\n\n@if (!ignorePresentation()) {\n\t<ng-container *luPresentationDisplayDefault>\n\t\t@if (value) {\n\t\t\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n\t\t} @else {\n\t\t\t<span aria-hidden=\"true\" data-content-before=\"\u2013\"></span>\n\t\t}\n\t</ng-container>\n}\n", styles: ["@layer components{.simpleSelect{--components-simpleSelect-width: auto;--components-simpleSelect-font: var(--pr-t-font-body-M);--components-simpleSelect-padding: var(--pr-t-spacings-100);--components-simpleSelect-gap: var(--pr-t-spacings-100);--components-simpleSelect-background: var(--pr-t-color-input-background);--components-simpleSelect-value-color: var(--pr-t-color-input-text);--components-simpleSelect-border-color: var(--pr-t-color-input-border);--components-simpleSelect-placeholder: var(--pr-t-color-input-text-placeholder);--components-simpleSelect-arrow-color: var(--pr-t-color-input-icon);display:block;inline-size:var(--components-simpleSelect-width)}.simpleSelect-field{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;box-shadow:0 0 0 1px var(--components-simpleSelect-border-color);background-color:var(--components-simpleSelect-background);border-radius:var(--pr-t-border-radius-input);padding:var(--components-simpleSelect-padding);overflow:hidden;outline:none;cursor:pointer}.simpleSelect-field:hover{--components-simpleSelect-border-color: var(--pr-t-color-input-border-hover)}.simpleSelect-field-prefix{display:none}.simpleSelect-field-prefix:not(:empty){display:flex;margin-inline-end:var(--pr-t-spacings-50)}.simpleSelect-field-input{grid-column-start:2;grid-row-start:1;font:var(--components-simpleSelect-font);padding:0;background-color:transparent;color:var(--components-simpleSelect-value-color);border:0;outline:none;position:relative;z-index:1;min-inline-size:0;cursor:pointer}.simpleSelect-field-input::placeholder{color:var(--components-simpleSelect-placeholder)}.simpleSelect-field-input.mod-button{appearance:none;text-align:start;align-self:stretch;display:flex;align-items:center}.simpleSelect-field-placeholder{color:var(--components-simpleSelect-placeholder);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.simpleSelect-field-value{grid-column-start:2;grid-row-start:1;inline-size:100%;font:var(--components-simpleSelect-font);color:var(--components-simpleSelect-value-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color var(--commons-animations-durations-fast) ease}.simpleSelect-field-clear{grid-column-start:-2;margin-inline-start:var(--components-simpleSelect-gap)}.simpleSelect-field-icon{grid-column-start:-1;margin-inline-start:var(--components-simpleSelect-gap);color:var(--components-simpleSelect-arrow-color);transition:transform var(--commons-animations-durations-standard) ease}.simpleSelect-field-icon .lucca-icon{--icon-size: 1.5rem}.simpleSelect-field-icon.mod-search{display:none}}@layer mods{.simpleSelect:has(.simpleSelect-field-input:focus-visible) .simpleSelect-field{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:3px}.simpleSelect:has(.simpleSelect-field-input:focus-visible) .simpleSelect-field-value{color:var(--components-simpleSelect-value-color)}.simpleSelect:has(.simpleSelect-field-input:focus-visible):has(.simpleSelect-field-input[aria-expanded=true]) .simpleSelect-field-value{color:var(--components-simpleSelect-placeholder)}.simpleSelect:has(.simpleSelect-field-input:focus-visible):has(.simpleSelect-field-input[aria-expanded=true]) .simpleSelect-field-icon{transform:rotate(180deg)}.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input:focus-visible):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon,.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input[aria-expanded=true]):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon{display:none}.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input:focus-visible):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon.mod-search,.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input[aria-expanded=true]):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon.mod-search{display:inline-flex;transform:none}.simpleSelect:has(.simpleSelect-field-input[aria-invalid=true]){--components-simpleSelect-border-color: var(--pr-t-color-input-border-critical);--components-simpleSelect-background: var(--pr-t-color-input-background-critical);--components-simpleSelect-placeholder: var(--pr-t-color-input-text-placeholder-critical)}.simpleSelect:has(.simpleSelect-field-input[aria-invalid=true]) .simpleSelect-field:hover{--components-simpleSelect-border-color: var(--pr-t-color-input-border-critical-hover)}.simpleSelect:has(.simpleSelect-field-input:disabled){--components-simpleSelect-background: var(--pr-t-color-input-background-disabled);--components-simpleSelect-placeholder: var(--commons-disabled-placeholder);--components-simpleSelect-value-color: var(--pr-t-color-input-text-disabled);--components-simpleSelect-arrow-color: var(--pr-t-color-input-icon-disabled)}.simpleSelect:has(.simpleSelect-field-input:disabled) .simpleSelect-field{pointer-events:none}.simpleSelect.mod-width10{--components-simpleSelect-width: 5rem}.simpleSelect.mod-width20{--components-simpleSelect-width: 10rem}.simpleSelect.mod-width30{--components-simpleSelect-width: 15rem}.simpleSelect.mod-width40{--components-simpleSelect-width: 20rem}.simpleSelect.mod-width50{--components-simpleSelect-width: 25rem}.simpleSelect.mod-width60{--components-simpleSelect-width: 30rem}.simpleSelect.mod-S{--components-simpleSelect-font: var(--pr-t-font-body-S);--components-simpleSelect-padding: var(--pr-t-spacings-75);--components-simpleSelect-gap: var(--pr-t-spacings-75)}.simpleSelect.mod-S .simpleSelect-field-icon .lucca-icon{--icon-size: 1.25rem}.simpleSelect.mod-S .simpleSelect-field-clear.clear,.simpleSelect.mod-S .simpleSelect-field-clear:not(.clear){--components-clear-size: .75rem;--icon-size: .75rem}.simpleSelect.mod-XS{--components-simpleSelect-font: var(--pr-t-font-body-XS);--components-simpleSelect-padding: var(--pr-t-spacings-50);--components-simpleSelect-gap: var(--pr-t-spacings-50)}.simpleSelect.mod-XS .simpleSelect-field-icon .lucca-icon{--icon-size: 1rem}.simpleSelect.mod-XS .simpleSelect-field-clear.clear,.simpleSelect.mod-XS .simpleSelect-field-clear:not(.clear){--components-clear-size: .75rem;--icon-size: .75rem}.simpleSelect.mod-impersonation,.simpleSelect.mod-filterPill{inline-size:26.5rem;max-inline-size:calc(100vi - 2.5rem)}.simpleSelect.mod-impersonation .simpleSelect-field,.simpleSelect.mod-filterPill .simpleSelect-field{position:relative;z-index:1}.simpleSelect.mod-impersonation lu-simple-select-default-option.pr-u-ellipsis,.simpleSelect.mod-filterPill lu-simple-select-default-option.pr-u-ellipsis{white-space:normal!important}.simpleSelect.mod-impersonation .lu-picker-content,.simpleSelect.mod-filterPill .lu-picker-content{animation:none;box-shadow:none;border-radius:0;background-color:transparent;padding:var(--pr-t-spacings-50);margin:var(--pr-t-spacings-75) calc(var(--pr-t-spacings-100) * -1) calc(var(--pr-t-spacings-100) * -1)}.simpleSelect.is-searchFilled .simpleSelect-field-value{display:none}.simpleSelect.is-selected .simpleSelect-field-input::placeholder{opacity:0}.simpleSelect.is-selected.is-searchFilled .simpleSelect-field-input::placeholder{opacity:0}.simpleSelect.is-selected.is-searchFilled .simpleSelect-field-value{display:none}}@layer mods{.dialog.mod-select{--components-dialog-animationDuration: 0s;--components-dialog-insideHeaderTitleAlign: center;--components-dialog-insideHeaderTitleFont: var(--pr-t-font-heading-4);--components-dialog-insideHeaderColumns: 1fr auto 1fr;--components-dialog-inside-header-button-justifySelf: end;--components-dialog-insideHeaderAreas: \"spacer container close \" \"content content content\";--components-dialog-inside-header-paddingInline: var(--pr-t-spacings-200);--components-dialog-inside-header-content-paddingBlockStart: var(--pr-t-spacings-100);--components-dialog-insideContent-paddingInline: var(--pr-t-spacings-50);--components-dialog-insideContent-paddingBlock: var(--pr-t-spacings-50)}}@layer components{.clear{--components-clear-display: grid;--components-clear-size: 1rem;--components-clear-background: var(--palettes-800, var(--palettes-neutral-800));--components-clear-cross-color: var(--palettes-0, var(--palettes-neutral-0));--components-clear-background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16' fill='none'%3E%3Cpath d='M5.80473 4.86192C5.54438 4.60157 5.12227 4.60157 4.86192 4.86192C4.60157 5.12227 4.60157 5.54438 4.86192 5.80473L7.05718 7.99999L4.86192 10.1953C4.60157 10.4556 4.60157 10.8777 4.86192 11.1381C5.12227 11.3984 5.54438 11.3984 5.80473 11.1381L7.99999 8.9428L10.1953 11.1381C10.4556 11.3984 10.8777 11.3984 11.1381 11.1381C11.3984 10.8777 11.3984 10.4556 11.1381 10.1953L8.9428 7.99999L11.1381 5.80473C11.3984 5.54438 11.3984 5.12227 11.1381 4.86192C10.8777 4.60157 10.4556 4.60157 10.1953 4.86192L7.99999 7.05718L5.80473 4.86192Z' fill='currentColor'/%3E%3C/svg%3E\");padding:0;border:0;inline-size:100%;background-color:transparent;color:inherit;text-align:start;display:block;font:inherit;cursor:pointer;display:var(--components-clear-display);grid-template-columns:1fr;grid-template-rows:1fr;grid-template-areas:\"main\";align-items:normal;flex-shrink:0;inline-size:var(--components-clear-size);block-size:var(--components-clear-size);border-radius:var(--pr-t-border-radius-full)}.clear:before,.clear:after{content:\"\";grid-area:main}.clear:before{border-radius:var(--pr-t-border-radius-full);background-color:var(--components-clear-background)}.clear:after{-webkit-mask-image:var(--components-clear-background-image);mask-image:var(--components-clear-background-image);-webkit-mask-size:var(--components-clear-size);mask-size:var(--components-clear-size);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:var(--components-clear-cross-color)}.clear:hover{--components-clear-cross-color: var(--palettes-0, var(--palettes-neutral-0));--components-clear-background: var(--palettes-700, var(--palettes-neutral-700))}.clear:focus-visible{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:2px;border-radius:50%}.clear:active{--components-clear-background: var(--palettes-900, var(--palettes-neutral-900))}.clear .lucca-icon{display:none}}@layer mods{.clear.mod-S{--components-clear-size: .75rem;--icon-size: .75rem}.clear.mod-inverted{--components-clear-cross-color: var(--palettes-800, var(--palettes-neutral-800));--components-clear-background: var(--palettes-0, var(--palettes-neutral-0))}.clear.mod-inverted:hover{--components-clear-background: var(--palettes-50, var(--palettes-neutral-50))}.clear.mod-inverted:active{--components-clear-background: var(--palettes-100, var(--palettes-neutral-100))}.clear[disabled]{cursor:default;--components-clear-cross-color: var(--palettes-neutral-500)}.clear[disabled],.clear[disabled]:hover,.clear[disabled]:active{--components-clear-background: var(--palettes-neutral-300)}.clear[hidden],.filterPill[disabled] .clear,.filterPill:not(.is-filled) .clear,.textfield-input[disabled] .clear,.textfield-input:not(.is-filled) .clear{--components-clear-display: none}.multiSelect.is-selected:has(.multipleSelect-clear) .clear{--components-clear-display: grid}}\n"], dependencies: [{ kind: "directive", type: _LuOptionOutletDirective, selector: "[luOptionOutlet]", inputs: ["luOptionOutlet", "luOptionOutletValue", "luOptionShowNull"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: InputDirective, selector: "[luInput]", inputs: ["luInputStandalone", "luInputLabelledBy", "luInputDescribedBy"] }, { kind: "directive", type: FilterPillDisplayerDirective, selector: "[luFilterPillDisplayer]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconComponent, selector: "lu-icon, pr-icon", inputs: ["icon", "alt", "size", "color", "AI"] }, { kind: "component", type: ClearComponent, selector: "lu-clear", inputs: ["intl", "size", "disabled", "palette", "inverted"], outputs: ["onClear"], exportAs: ["luClearer"] }, { kind: "directive", type: PortalDirective, selector: "[luPortal]", inputs: ["luPortal", "luPortalContext"] }, { kind: "directive", type: _PresentationDisplayDefaultDirective, selector: "[luPresentationDisplayDefault]" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
403
452
  }
404
453
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LuSimpleSelectInputComponent, decorators: [{
405
454
  type: Component,
@@ -431,12 +480,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
431
480
  useExisting: forwardRef(() => LuSimpleSelectInputComponent),
432
481
  },
433
482
  LuSimpleSelectPanelRefFactory,
483
+ // Below the `S` breakpoint the panel opens as a dialog in `sheet` mode.
484
+ provideLuDialog(),
434
485
  provideLuSelectLabelsAndIds(),
435
486
  {
436
487
  provide: FILTER_PILL_INPUT_COMPONENT,
437
488
  useExisting: forwardRef(() => LuSimpleSelectInputComponent),
438
489
  },
439
- ], encapsulation: ViewEncapsulation.None, template: "<div class=\"simpleSelect-field\">\n\t<span class=\"simpleSelect-field-prefix\">\n\t\t@if (prefix(); as prefix) {\n\t\t\t<ng-container *luPortal=\"prefix\" />\n\t\t}\n\t</span>\n\t<input\n\t\tclass=\"simpleSelect-field-input\"\n\t\ttype=\"text\"\n\t\trole=\"combobox\"\n\t\taria-haspopup=\"listbox\"\n\t\t[attr.aria-activedescendant]=\"activeDescendant$ | async\"\n\t\t[attr.aria-expanded]=\"panelOpenSignal()\"\n\t\t[attr.aria-controls]=\"ariaControls\"\n\t\t[attr.placeholder]=\"inputPlaceholder ? inputPlaceholder : intl().placeholder\"\n\t\t[ngModel]=\"clue\"\n\t\t(ngModelChange)=\"clueChanged($event)\"\n\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t[readonly]=\"!searchable\"\n\t\t[disabled]=\"(disabled$ | async) ?? false\"\n\t\t(keyup.space)=\"inputSpace($event)\"\n\t\tluInput\n\t\t#inputElement\n\t\t[attr.autocomplete]=\"autocomplete()\"\n\t\t[attr.tabindex]=\"inputTabindex()\"\n\t\t[luInputLabelledBy]=\"valueID\"\n\t/>\n\t<div class=\"simpleSelect-field-value\" [attr.id]=\"valueID\">\n\t\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n\t</div>\n\t@if (!filterPillMode && !impersonation()) {\n\t\t@if (clearable() && hasValue() && (disabled$ | async) === false) {\n\t\t\t<lu-clear class=\"simpleSelect-field-clear\" (onClear)=\"clearValue($event); inputElement.focus()\">{{ intl().clear }}</lu-clear>\n\t\t}\n\t\t<lu-icon icon=\"arrowChevronBottom\" class=\"simpleSelect-field-icon\" />\n\t}\n\t<lu-icon icon=\"searchMagnifyingGlass\" class=\"simpleSelect-field-icon mod-search\" />\n</div>\n<ng-container #filterPillPanelAnchor />\n<ng-container *luFilterPillDisplayer>\n\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n</ng-container>\n\n<ng-template #currentValueDisplayerTpl>\n\t<ng-container *luOptionOutlet=\"displayerTpl(); value: value\" />\n</ng-template>\n\n@if (!ignorePresentation()) {\n\t<ng-container *luPresentationDisplayDefault>\n\t\t@if (value) {\n\t\t\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n\t\t} @else {\n\t\t\t<span aria-hidden=\"true\" data-content-before=\"\u2013\"></span>\n\t\t}\n\t</ng-container>\n}\n", styles: ["@layer components{.simpleSelect{--components-simpleSelect-font: var(--pr-t-font-body-M);--components-simpleSelect-padding: var(--pr-t-spacings-100);--components-simpleSelect-gap: var(--pr-t-spacings-100);--components-simpleSelect-background: var(--pr-t-color-input-background);--components-simpleSelect-value-color: var(--pr-t-color-input-text);--components-simpleSelect-border-color: var(--pr-t-color-input-border);--components-simpleSelect-placeholder: var(--pr-t-color-input-text-placeholder);--components-simpleSelect-arrow-color: var(--pr-t-color-input-icon);display:block}.simpleSelect-field{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;box-shadow:0 0 0 1px var(--components-simpleSelect-border-color);background-color:var(--components-simpleSelect-background);border-radius:var(--pr-t-border-radius-input);padding:var(--components-simpleSelect-padding);overflow:hidden;outline:none;cursor:pointer}.simpleSelect-field:hover{--components-simpleSelect-border-color: var(--pr-t-color-input-border-hover)}.simpleSelect-field-prefix{display:none}.simpleSelect-field-prefix:not(:empty){display:flex;margin-inline-end:var(--pr-t-spacings-50)}.simpleSelect-field-input{grid-column-start:2;grid-row-start:1;font:var(--components-simpleSelect-font);padding:0;background-color:transparent;color:var(--components-simpleSelect-value-color);border:0;outline:none;position:relative;z-index:1;min-inline-size:0;cursor:pointer}.simpleSelect-field-input::placeholder{color:var(--components-simpleSelect-placeholder)}.simpleSelect-field-value{grid-column-start:2;grid-row-start:1;inline-size:100%;font:var(--components-simpleSelect-font);color:var(--components-simpleSelect-value-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color var(--commons-animations-durations-fast) ease}.simpleSelect-field-clear{grid-column-start:-2;margin-inline-start:var(--components-simpleSelect-gap)}.simpleSelect-field-icon{grid-column-start:-1;margin-inline-start:var(--components-simpleSelect-gap);color:var(--components-simpleSelect-arrow-color);transition:transform var(--commons-animations-durations-standard) ease}.simpleSelect-field-icon .lucca-icon{--icon-size: 1.5rem}.simpleSelect-field-icon.mod-search{display:none}}@layer mods{.simpleSelect:has(.simpleSelect-field-input:focus-visible) .simpleSelect-field{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:3px}.simpleSelect:has(.simpleSelect-field-input:focus-visible) .simpleSelect-field-value{color:var(--components-simpleSelect-value-color)}.simpleSelect:has(.simpleSelect-field-input:focus-visible):has(.simpleSelect-field-input[aria-expanded=true]) .simpleSelect-field-value{color:var(--components-simpleSelect-placeholder)}.simpleSelect:has(.simpleSelect-field-input:focus-visible):has(.simpleSelect-field-input[aria-expanded=true]) .simpleSelect-field-icon{transform:rotate(180deg)}.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input:focus-visible):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon,.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input[aria-expanded=true]):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon{display:none}.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input:focus-visible):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon.mod-search,.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input[aria-expanded=true]):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon.mod-search{display:inline-flex;transform:none}.simpleSelect:has(.simpleSelect-field-input[aria-invalid=true]){--components-simpleSelect-border-color: var(--pr-t-color-input-border-critical);--components-simpleSelect-background: var(--pr-t-color-input-background-critical);--components-simpleSelect-placeholder: var(--pr-t-color-input-text-placeholder-critical)}.simpleSelect:has(.simpleSelect-field-input:disabled){--components-simpleSelect-background: var(--pr-t-color-input-background-disabled);--components-simpleSelect-placeholder: var(--commons-disabled-placeholder);--components-simpleSelect-value-color: var(--pr-t-color-input-text-disabled);--components-simpleSelect-arrow-color: var(--pr-t-color-input-icon-disabled)}.simpleSelect:has(.simpleSelect-field-input:disabled) .simpleSelect-field{pointer-events:none}.simpleSelect.mod-S{--components-simpleSelect-font: var(--pr-t-font-body-S);--components-simpleSelect-padding: var(--pr-t-spacings-75);--components-simpleSelect-gap: var(--pr-t-spacings-75)}.simpleSelect.mod-S .simpleSelect-field-icon .lucca-icon{--icon-size: 1.25rem}.simpleSelect.mod-S .simpleSelect-field-clear.clear,.simpleSelect.mod-S .simpleSelect-field-clear:not(.clear){--components-clear-size: .75rem;--icon-size: .75rem}.simpleSelect.mod-XS{--components-simpleSelect-font: var(--pr-t-font-body-XS);--components-simpleSelect-padding: var(--pr-t-spacings-50);--components-simpleSelect-gap: var(--pr-t-spacings-50)}.simpleSelect.mod-XS .simpleSelect-field-icon .lucca-icon{--icon-size: 1rem}.simpleSelect.mod-XS .simpleSelect-field-clear.clear,.simpleSelect.mod-XS .simpleSelect-field-clear:not(.clear){--components-clear-size: .75rem;--icon-size: .75rem}.simpleSelect.mod-impersonation,.simpleSelect.mod-filterPill{inline-size:26.5rem;max-inline-size:calc(100vi - 2.5rem)}.simpleSelect.mod-impersonation .simpleSelect-field,.simpleSelect.mod-filterPill .simpleSelect-field{position:relative;z-index:1}.simpleSelect.mod-impersonation lu-simple-select-default-option.pr-u-ellipsis,.simpleSelect.mod-filterPill lu-simple-select-default-option.pr-u-ellipsis{white-space:normal!important}.simpleSelect.mod-impersonation .lu-picker-content,.simpleSelect.mod-filterPill .lu-picker-content{animation:none;box-shadow:none;border-radius:0;background-color:transparent;padding:var(--pr-t-spacings-50);margin:var(--pr-t-spacings-75) calc(var(--pr-t-spacings-100) * -1) calc(var(--pr-t-spacings-100) * -1)}.simpleSelect.is-searchFilled .simpleSelect-field-value{display:none}.simpleSelect.is-selected .simpleSelect-field-input::placeholder{opacity:0}.simpleSelect.is-selected.is-searchFilled .simpleSelect-field-input::placeholder{opacity:0}.simpleSelect.is-selected.is-searchFilled .simpleSelect-field-value{display:none}}@layer components{.clear{--components-clear-display: grid;--components-clear-size: 1rem;--components-clear-background: var(--palettes-800, var(--palettes-neutral-800));--components-clear-cross-color: var(--palettes-0, var(--palettes-neutral-0));--components-clear-background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16' fill='none'%3E%3Cpath d='M5.80473 4.86192C5.54438 4.60157 5.12227 4.60157 4.86192 4.86192C4.60157 5.12227 4.60157 5.54438 4.86192 5.80473L7.05718 7.99999L4.86192 10.1953C4.60157 10.4556 4.60157 10.8777 4.86192 11.1381C5.12227 11.3984 5.54438 11.3984 5.80473 11.1381L7.99999 8.9428L10.1953 11.1381C10.4556 11.3984 10.8777 11.3984 11.1381 11.1381C11.3984 10.8777 11.3984 10.4556 11.1381 10.1953L8.9428 7.99999L11.1381 5.80473C11.3984 5.54438 11.3984 5.12227 11.1381 4.86192C10.8777 4.60157 10.4556 4.60157 10.1953 4.86192L7.99999 7.05718L5.80473 4.86192Z' fill='currentColor'/%3E%3C/svg%3E\");padding:0;border:0;inline-size:100%;background-color:transparent;color:inherit;text-align:start;display:block;font:inherit;cursor:pointer;display:var(--components-clear-display);grid-template-columns:1fr;grid-template-rows:1fr;grid-template-areas:\"main\";align-items:normal;flex-shrink:0;inline-size:var(--components-clear-size);block-size:var(--components-clear-size);border-radius:var(--pr-t-border-radius-full)}.clear:before,.clear:after{content:\"\";grid-area:main}.clear:before{border-radius:var(--pr-t-border-radius-full);background-color:var(--components-clear-background)}.clear:after{-webkit-mask-image:var(--components-clear-background-image);mask-image:var(--components-clear-background-image);-webkit-mask-size:var(--components-clear-size);mask-size:var(--components-clear-size);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:var(--components-clear-cross-color)}.clear:hover{--components-clear-cross-color: var(--palettes-0, var(--palettes-neutral-0));--components-clear-background: var(--palettes-700, var(--palettes-neutral-700))}.clear:focus-visible{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:2px;border-radius:50%}.clear:active{--components-clear-background: var(--palettes-900, var(--palettes-neutral-900))}.clear .lucca-icon{display:none}}@layer mods{.clear.mod-S{--components-clear-size: .75rem;--icon-size: .75rem}.clear.mod-inverted{--components-clear-cross-color: var(--palettes-800, var(--palettes-neutral-800));--components-clear-background: var(--palettes-0, var(--palettes-neutral-0))}.clear.mod-inverted:hover{--components-clear-background: var(--palettes-50, var(--palettes-neutral-50))}.clear.mod-inverted:active{--components-clear-background: var(--palettes-100, var(--palettes-neutral-100))}.clear[disabled]{cursor:default;--components-clear-cross-color: var(--palettes-neutral-500)}.clear[disabled],.clear[disabled]:hover,.clear[disabled]:active{--components-clear-background: var(--palettes-neutral-300)}.clear[hidden],.filterPill[disabled] .clear,.filterPill:not(.is-filled) .clear,.textfield-input[disabled] .clear,.textfield-input:not(.is-filled) .clear{--components-clear-display: none}.multiSelect.is-selected:has(.multipleSelect-clear) .clear{--components-clear-display: grid}}\n"] }]
490
+ ], encapsulation: ViewEncapsulation.None, template: "<div class=\"simpleSelect-field\">\n\t<span class=\"simpleSelect-field-prefix\">\n\t\t@if (prefix(); as prefix) {\n\t\t\t<ng-container *luPortal=\"prefix\" />\n\t\t}\n\t</span>\n\t@if (bottomSheetMode()) {\n\t\t<!--\n\t\t\tThe panel opens as a modal sheet that embeds its own search input, so the field itself is only ever\n\t\t\ta trigger. Keeping a text input here makes iOS focus it and raise the software keyboard on a field\n\t\t\tthat is about to be covered by the sheet; a button is both what this control actually is and what\n\t\t\tmobile browsers treat as a tap target rather than a text entry.\n\t\t-->\n\t\t<button\n\t\t\tclass=\"simpleSelect-field-input mod-button\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\t[attr.aria-expanded]=\"panelOpenSignal()\"\n\t\t\t[attr.aria-controls]=\"ariaControls\"\n\t\t\t[disabled]=\"(disabled$ | async) ?? false\"\n\t\t\tluInput\n\t\t\t#inputElement\n\t\t\t[attr.tabindex]=\"inputTabindex()\"\n\t\t\t[luInputLabelledBy]=\"valueID\"\n\t\t>\n\t\t\t@if (!hasValue()) {\n\t\t\t\t<span class=\"simpleSelect-field-placeholder\">{{ inputPlaceholder ? inputPlaceholder : intl().placeholder }}</span>\n\t\t\t}\n\t\t</button>\n\t} @else {\n\t\t<input\n\t\t\tclass=\"simpleSelect-field-input\"\n\t\t\ttype=\"text\"\n\t\t\trole=\"combobox\"\n\t\t\taria-haspopup=\"listbox\"\n\t\t\t[attr.aria-activedescendant]=\"activeDescendant$ | async\"\n\t\t\t[attr.aria-expanded]=\"panelOpenSignal()\"\n\t\t\t[attr.aria-controls]=\"ariaControls\"\n\t\t\t[attr.placeholder]=\"inputPlaceholder ? inputPlaceholder : intl().placeholder\"\n\t\t\t[ngModel]=\"clue\"\n\t\t\t(ngModelChange)=\"clueChanged($event)\"\n\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t[readonly]=\"!searchable\"\n\t\t\t[disabled]=\"(disabled$ | async) ?? false\"\n\t\t\t(keyup.space)=\"inputSpace($event)\"\n\t\t\tluInput\n\t\t\t#inputElement\n\t\t\t[attr.autocomplete]=\"autocomplete()\"\n\t\t\t[attr.tabindex]=\"inputTabindex()\"\n\t\t\t[luInputLabelledBy]=\"valueID\"\n\t\t/>\n\t}\n\t<div class=\"simpleSelect-field-value\" [attr.id]=\"valueID\">\n\t\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n\t</div>\n\t@if (!filterPillMode && !impersonation()) {\n\t\t@if (clearable() && hasValue() && (disabled$ | async) === false) {\n\t\t\t<lu-clear class=\"simpleSelect-field-clear\" (onClear)=\"clearValue($event)\">{{ intl().clear }}</lu-clear>\n\t\t}\n\t\t<lu-icon icon=\"arrowChevronBottom\" class=\"simpleSelect-field-icon\" />\n\t}\n\t<lu-icon icon=\"searchMagnifyingGlass\" class=\"simpleSelect-field-icon mod-search\" />\n</div>\n<ng-container #filterPillPanelAnchor />\n<ng-container *luFilterPillDisplayer>\n\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n</ng-container>\n\n<ng-template #currentValueDisplayerTpl>\n\t<ng-container *luOptionOutlet=\"displayerTpl(); value: value\" />\n</ng-template>\n\n@if (!ignorePresentation()) {\n\t<ng-container *luPresentationDisplayDefault>\n\t\t@if (value) {\n\t\t\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n\t\t} @else {\n\t\t\t<span aria-hidden=\"true\" data-content-before=\"\u2013\"></span>\n\t\t}\n\t</ng-container>\n}\n", styles: ["@layer components{.simpleSelect{--components-simpleSelect-width: auto;--components-simpleSelect-font: var(--pr-t-font-body-M);--components-simpleSelect-padding: var(--pr-t-spacings-100);--components-simpleSelect-gap: var(--pr-t-spacings-100);--components-simpleSelect-background: var(--pr-t-color-input-background);--components-simpleSelect-value-color: var(--pr-t-color-input-text);--components-simpleSelect-border-color: var(--pr-t-color-input-border);--components-simpleSelect-placeholder: var(--pr-t-color-input-text-placeholder);--components-simpleSelect-arrow-color: var(--pr-t-color-input-icon);display:block;inline-size:var(--components-simpleSelect-width)}.simpleSelect-field{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;box-shadow:0 0 0 1px var(--components-simpleSelect-border-color);background-color:var(--components-simpleSelect-background);border-radius:var(--pr-t-border-radius-input);padding:var(--components-simpleSelect-padding);overflow:hidden;outline:none;cursor:pointer}.simpleSelect-field:hover{--components-simpleSelect-border-color: var(--pr-t-color-input-border-hover)}.simpleSelect-field-prefix{display:none}.simpleSelect-field-prefix:not(:empty){display:flex;margin-inline-end:var(--pr-t-spacings-50)}.simpleSelect-field-input{grid-column-start:2;grid-row-start:1;font:var(--components-simpleSelect-font);padding:0;background-color:transparent;color:var(--components-simpleSelect-value-color);border:0;outline:none;position:relative;z-index:1;min-inline-size:0;cursor:pointer}.simpleSelect-field-input::placeholder{color:var(--components-simpleSelect-placeholder)}.simpleSelect-field-input.mod-button{appearance:none;text-align:start;align-self:stretch;display:flex;align-items:center}.simpleSelect-field-placeholder{color:var(--components-simpleSelect-placeholder);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.simpleSelect-field-value{grid-column-start:2;grid-row-start:1;inline-size:100%;font:var(--components-simpleSelect-font);color:var(--components-simpleSelect-value-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color var(--commons-animations-durations-fast) ease}.simpleSelect-field-clear{grid-column-start:-2;margin-inline-start:var(--components-simpleSelect-gap)}.simpleSelect-field-icon{grid-column-start:-1;margin-inline-start:var(--components-simpleSelect-gap);color:var(--components-simpleSelect-arrow-color);transition:transform var(--commons-animations-durations-standard) ease}.simpleSelect-field-icon .lucca-icon{--icon-size: 1.5rem}.simpleSelect-field-icon.mod-search{display:none}}@layer mods{.simpleSelect:has(.simpleSelect-field-input:focus-visible) .simpleSelect-field{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:3px}.simpleSelect:has(.simpleSelect-field-input:focus-visible) .simpleSelect-field-value{color:var(--components-simpleSelect-value-color)}.simpleSelect:has(.simpleSelect-field-input:focus-visible):has(.simpleSelect-field-input[aria-expanded=true]) .simpleSelect-field-value{color:var(--components-simpleSelect-placeholder)}.simpleSelect:has(.simpleSelect-field-input:focus-visible):has(.simpleSelect-field-input[aria-expanded=true]) .simpleSelect-field-icon{transform:rotate(180deg)}.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input:focus-visible):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon,.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input[aria-expanded=true]):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon{display:none}.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input:focus-visible):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon.mod-search,.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input[aria-expanded=true]):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon.mod-search{display:inline-flex;transform:none}.simpleSelect:has(.simpleSelect-field-input[aria-invalid=true]){--components-simpleSelect-border-color: var(--pr-t-color-input-border-critical);--components-simpleSelect-background: var(--pr-t-color-input-background-critical);--components-simpleSelect-placeholder: var(--pr-t-color-input-text-placeholder-critical)}.simpleSelect:has(.simpleSelect-field-input[aria-invalid=true]) .simpleSelect-field:hover{--components-simpleSelect-border-color: var(--pr-t-color-input-border-critical-hover)}.simpleSelect:has(.simpleSelect-field-input:disabled){--components-simpleSelect-background: var(--pr-t-color-input-background-disabled);--components-simpleSelect-placeholder: var(--commons-disabled-placeholder);--components-simpleSelect-value-color: var(--pr-t-color-input-text-disabled);--components-simpleSelect-arrow-color: var(--pr-t-color-input-icon-disabled)}.simpleSelect:has(.simpleSelect-field-input:disabled) .simpleSelect-field{pointer-events:none}.simpleSelect.mod-width10{--components-simpleSelect-width: 5rem}.simpleSelect.mod-width20{--components-simpleSelect-width: 10rem}.simpleSelect.mod-width30{--components-simpleSelect-width: 15rem}.simpleSelect.mod-width40{--components-simpleSelect-width: 20rem}.simpleSelect.mod-width50{--components-simpleSelect-width: 25rem}.simpleSelect.mod-width60{--components-simpleSelect-width: 30rem}.simpleSelect.mod-S{--components-simpleSelect-font: var(--pr-t-font-body-S);--components-simpleSelect-padding: var(--pr-t-spacings-75);--components-simpleSelect-gap: var(--pr-t-spacings-75)}.simpleSelect.mod-S .simpleSelect-field-icon .lucca-icon{--icon-size: 1.25rem}.simpleSelect.mod-S .simpleSelect-field-clear.clear,.simpleSelect.mod-S .simpleSelect-field-clear:not(.clear){--components-clear-size: .75rem;--icon-size: .75rem}.simpleSelect.mod-XS{--components-simpleSelect-font: var(--pr-t-font-body-XS);--components-simpleSelect-padding: var(--pr-t-spacings-50);--components-simpleSelect-gap: var(--pr-t-spacings-50)}.simpleSelect.mod-XS .simpleSelect-field-icon .lucca-icon{--icon-size: 1rem}.simpleSelect.mod-XS .simpleSelect-field-clear.clear,.simpleSelect.mod-XS .simpleSelect-field-clear:not(.clear){--components-clear-size: .75rem;--icon-size: .75rem}.simpleSelect.mod-impersonation,.simpleSelect.mod-filterPill{inline-size:26.5rem;max-inline-size:calc(100vi - 2.5rem)}.simpleSelect.mod-impersonation .simpleSelect-field,.simpleSelect.mod-filterPill .simpleSelect-field{position:relative;z-index:1}.simpleSelect.mod-impersonation lu-simple-select-default-option.pr-u-ellipsis,.simpleSelect.mod-filterPill lu-simple-select-default-option.pr-u-ellipsis{white-space:normal!important}.simpleSelect.mod-impersonation .lu-picker-content,.simpleSelect.mod-filterPill .lu-picker-content{animation:none;box-shadow:none;border-radius:0;background-color:transparent;padding:var(--pr-t-spacings-50);margin:var(--pr-t-spacings-75) calc(var(--pr-t-spacings-100) * -1) calc(var(--pr-t-spacings-100) * -1)}.simpleSelect.is-searchFilled .simpleSelect-field-value{display:none}.simpleSelect.is-selected .simpleSelect-field-input::placeholder{opacity:0}.simpleSelect.is-selected.is-searchFilled .simpleSelect-field-input::placeholder{opacity:0}.simpleSelect.is-selected.is-searchFilled .simpleSelect-field-value{display:none}}@layer mods{.dialog.mod-select{--components-dialog-animationDuration: 0s;--components-dialog-insideHeaderTitleAlign: center;--components-dialog-insideHeaderTitleFont: var(--pr-t-font-heading-4);--components-dialog-insideHeaderColumns: 1fr auto 1fr;--components-dialog-inside-header-button-justifySelf: end;--components-dialog-insideHeaderAreas: \"spacer container close \" \"content content content\";--components-dialog-inside-header-paddingInline: var(--pr-t-spacings-200);--components-dialog-inside-header-content-paddingBlockStart: var(--pr-t-spacings-100);--components-dialog-insideContent-paddingInline: var(--pr-t-spacings-50);--components-dialog-insideContent-paddingBlock: var(--pr-t-spacings-50)}}@layer components{.clear{--components-clear-display: grid;--components-clear-size: 1rem;--components-clear-background: var(--palettes-800, var(--palettes-neutral-800));--components-clear-cross-color: var(--palettes-0, var(--palettes-neutral-0));--components-clear-background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16' fill='none'%3E%3Cpath d='M5.80473 4.86192C5.54438 4.60157 5.12227 4.60157 4.86192 4.86192C4.60157 5.12227 4.60157 5.54438 4.86192 5.80473L7.05718 7.99999L4.86192 10.1953C4.60157 10.4556 4.60157 10.8777 4.86192 11.1381C5.12227 11.3984 5.54438 11.3984 5.80473 11.1381L7.99999 8.9428L10.1953 11.1381C10.4556 11.3984 10.8777 11.3984 11.1381 11.1381C11.3984 10.8777 11.3984 10.4556 11.1381 10.1953L8.9428 7.99999L11.1381 5.80473C11.3984 5.54438 11.3984 5.12227 11.1381 4.86192C10.8777 4.60157 10.4556 4.60157 10.1953 4.86192L7.99999 7.05718L5.80473 4.86192Z' fill='currentColor'/%3E%3C/svg%3E\");padding:0;border:0;inline-size:100%;background-color:transparent;color:inherit;text-align:start;display:block;font:inherit;cursor:pointer;display:var(--components-clear-display);grid-template-columns:1fr;grid-template-rows:1fr;grid-template-areas:\"main\";align-items:normal;flex-shrink:0;inline-size:var(--components-clear-size);block-size:var(--components-clear-size);border-radius:var(--pr-t-border-radius-full)}.clear:before,.clear:after{content:\"\";grid-area:main}.clear:before{border-radius:var(--pr-t-border-radius-full);background-color:var(--components-clear-background)}.clear:after{-webkit-mask-image:var(--components-clear-background-image);mask-image:var(--components-clear-background-image);-webkit-mask-size:var(--components-clear-size);mask-size:var(--components-clear-size);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:var(--components-clear-cross-color)}.clear:hover{--components-clear-cross-color: var(--palettes-0, var(--palettes-neutral-0));--components-clear-background: var(--palettes-700, var(--palettes-neutral-700))}.clear:focus-visible{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:2px;border-radius:50%}.clear:active{--components-clear-background: var(--palettes-900, var(--palettes-neutral-900))}.clear .lucca-icon{display:none}}@layer mods{.clear.mod-S{--components-clear-size: .75rem;--icon-size: .75rem}.clear.mod-inverted{--components-clear-cross-color: var(--palettes-800, var(--palettes-neutral-800));--components-clear-background: var(--palettes-0, var(--palettes-neutral-0))}.clear.mod-inverted:hover{--components-clear-background: var(--palettes-50, var(--palettes-neutral-50))}.clear.mod-inverted:active{--components-clear-background: var(--palettes-100, var(--palettes-neutral-100))}.clear[disabled]{cursor:default;--components-clear-cross-color: var(--palettes-neutral-500)}.clear[disabled],.clear[disabled]:hover,.clear[disabled]:active{--components-clear-background: var(--palettes-neutral-300)}.clear[hidden],.filterPill[disabled] .clear,.filterPill:not(.is-filled) .clear,.textfield-input[disabled] .clear,.textfield-input:not(.is-filled) .clear{--components-clear-display: none}.multiSelect.is-selected:has(.multipleSelect-clear) .clear{--components-clear-display: grid}}\n"] }]
440
491
  }], propDecorators: { intl: [{ type: i0.Input, args: [{ isSignal: true, alias: "intl", required: false }] }], autocomplete: [{ type: i0.Input, args: [{ isSignal: true, alias: "autocomplete", required: false }] }], impersonation: [{ type: i0.Input, args: [{ isSignal: true, alias: "impersonation", required: false }] }], filterPillPanelAnchorRef: [{ type: i0.ViewChild, args: ['filterPillPanelAnchor', { ...{ read: ViewContainerRef }, isSignal: true }] }] } });
441
492
 
442
493
  /**