@lucca-front/ng 15.1.3 → 15.2.0

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 (153) hide show
  1. package/esm2020/api/lib/select/input/api-select-input.component.mjs +3 -3
  2. package/esm2020/date/lib/select/date-select-input.component.mjs +3 -3
  3. package/esm2020/department/lib/select/input/department-select-input.component.mjs +3 -3
  4. package/esm2020/establishment/lib/select/input/establishment-select-input.component.mjs +3 -3
  5. package/esm2020/input/lib/clearer/clearer.component.mjs +3 -3
  6. package/esm2020/modal/lib/modal-config.default.mjs +8 -2
  7. package/esm2020/modal/lib/modal-config.model.mjs +5 -2
  8. package/esm2020/modal/lib/modal-panel.component.mjs +26 -26
  9. package/esm2020/modal/lib/modal-ref.factory.mjs +11 -11
  10. package/esm2020/modal/lib/modal-ref.model.mjs +8 -1
  11. package/esm2020/modal/lib/modal.module.mjs +13 -13
  12. package/esm2020/modal/lib/modal.service.mjs +1 -1
  13. package/esm2020/modal/lib/modal.token.mjs +4 -4
  14. package/esm2020/option/lib/item/tree-option-item.component.mjs +3 -3
  15. package/esm2020/popup/lib/popup-config.default.mjs +2 -2
  16. package/esm2020/popup/lib/popup-ref.model.mjs +33 -18
  17. package/esm2020/popup/lib/popup.service.mjs +1 -1
  18. package/esm2020/qualification/lib/select/input/qualification-select-input.component.mjs +3 -3
  19. package/esm2020/select/lib/input/select-input.component.mjs +2 -2
  20. package/esm2020/sidepanel/lib/index.mjs +1 -8
  21. package/esm2020/sidepanel/lib/sidepanel.model.mjs +27 -2
  22. package/esm2020/sidepanel/lib/sidepanel.module.mjs +9 -15
  23. package/esm2020/sidepanel/lib/sidepanel.service.mjs +11 -3
  24. package/esm2020/simple-select/api/lib/api-v3.directive.mjs +57 -0
  25. package/esm2020/simple-select/api/lib/api-v4.directive.mjs +50 -0
  26. package/esm2020/simple-select/api/lib/api.directive.mjs +40 -0
  27. package/esm2020/simple-select/api/lucca-front-ng-simple-select-api.mjs +5 -0
  28. package/esm2020/simple-select/api/public-api.mjs +4 -0
  29. package/esm2020/simple-select/lib/index.mjs +2 -1
  30. package/esm2020/simple-select/lib/input/panel-ref.factory.mjs +90 -0
  31. package/esm2020/simple-select/lib/input/select-input.component.mjs +54 -174
  32. package/esm2020/simple-select/lib/input/select-input.models.mjs +60 -0
  33. package/esm2020/simple-select/lib/option/default-option.component.mjs +21 -0
  34. package/esm2020/simple-select/lib/option/disabled.directive.mjs +26 -0
  35. package/esm2020/simple-select/lib/option/index.mjs +4 -2
  36. package/esm2020/simple-select/lib/option/option-outlet.directive.mjs +70 -0
  37. package/esm2020/simple-select/lib/option/option.component.mjs +36 -17
  38. package/esm2020/simple-select/lib/option/option.token.mjs +22 -0
  39. package/esm2020/simple-select/lib/panel/index.mjs +2 -1
  40. package/esm2020/simple-select/lib/panel/panel.component.mjs +27 -53
  41. package/esm2020/simple-select/lib/panel/panel.models.mjs +23 -0
  42. package/esm2020/simple-select/lib/select.model.mjs +1 -1
  43. package/esm2020/simple-select/lib/select.translate.mjs +37 -0
  44. package/esm2020/user/lib/select/input/user-select-input.component.mjs +3 -3
  45. package/fesm2015/lucca-front-ng-api.mjs +2 -2
  46. package/fesm2015/lucca-front-ng-api.mjs.map +1 -1
  47. package/fesm2015/lucca-front-ng-date.mjs +2 -2
  48. package/fesm2015/lucca-front-ng-date.mjs.map +1 -1
  49. package/fesm2015/lucca-front-ng-department.mjs +2 -2
  50. package/fesm2015/lucca-front-ng-department.mjs.map +1 -1
  51. package/fesm2015/lucca-front-ng-establishment.mjs +2 -2
  52. package/fesm2015/lucca-front-ng-establishment.mjs.map +1 -1
  53. package/fesm2015/lucca-front-ng-input.mjs +2 -2
  54. package/fesm2015/lucca-front-ng-input.mjs.map +1 -1
  55. package/fesm2015/lucca-front-ng-modal.mjs +64 -48
  56. package/fesm2015/lucca-front-ng-modal.mjs.map +1 -1
  57. package/fesm2015/lucca-front-ng-option.mjs +2 -2
  58. package/fesm2015/lucca-front-ng-option.mjs.map +1 -1
  59. package/fesm2015/lucca-front-ng-popup.mjs +33 -18
  60. package/fesm2015/lucca-front-ng-popup.mjs.map +1 -1
  61. package/fesm2015/lucca-front-ng-qualification.mjs +2 -2
  62. package/fesm2015/lucca-front-ng-qualification.mjs.map +1 -1
  63. package/fesm2015/lucca-front-ng-select.mjs +2 -2
  64. package/fesm2015/lucca-front-ng-select.mjs.map +1 -1
  65. package/fesm2015/lucca-front-ng-sidepanel.mjs +40 -141
  66. package/fesm2015/lucca-front-ng-sidepanel.mjs.map +1 -1
  67. package/fesm2015/lucca-front-ng-simple-select-api.mjs +137 -0
  68. package/fesm2015/lucca-front-ng-simple-select-api.mjs.map +1 -0
  69. package/fesm2015/lucca-front-ng-simple-select.mjs +378 -192
  70. package/fesm2015/lucca-front-ng-simple-select.mjs.map +1 -1
  71. package/fesm2015/lucca-front-ng-user.mjs +2 -2
  72. package/fesm2015/lucca-front-ng-user.mjs.map +1 -1
  73. package/fesm2020/lucca-front-ng-api.mjs +2 -2
  74. package/fesm2020/lucca-front-ng-api.mjs.map +1 -1
  75. package/fesm2020/lucca-front-ng-date.mjs +2 -2
  76. package/fesm2020/lucca-front-ng-date.mjs.map +1 -1
  77. package/fesm2020/lucca-front-ng-department.mjs +2 -2
  78. package/fesm2020/lucca-front-ng-department.mjs.map +1 -1
  79. package/fesm2020/lucca-front-ng-establishment.mjs +2 -2
  80. package/fesm2020/lucca-front-ng-establishment.mjs.map +1 -1
  81. package/fesm2020/lucca-front-ng-input.mjs +2 -2
  82. package/fesm2020/lucca-front-ng-input.mjs.map +1 -1
  83. package/fesm2020/lucca-front-ng-modal.mjs +68 -48
  84. package/fesm2020/lucca-front-ng-modal.mjs.map +1 -1
  85. package/fesm2020/lucca-front-ng-option.mjs +2 -2
  86. package/fesm2020/lucca-front-ng-option.mjs.map +1 -1
  87. package/fesm2020/lucca-front-ng-popup.mjs +33 -18
  88. package/fesm2020/lucca-front-ng-popup.mjs.map +1 -1
  89. package/fesm2020/lucca-front-ng-qualification.mjs +2 -2
  90. package/fesm2020/lucca-front-ng-qualification.mjs.map +1 -1
  91. package/fesm2020/lucca-front-ng-select.mjs +2 -2
  92. package/fesm2020/lucca-front-ng-select.mjs.map +1 -1
  93. package/fesm2020/lucca-front-ng-sidepanel.mjs +40 -141
  94. package/fesm2020/lucca-front-ng-sidepanel.mjs.map +1 -1
  95. package/fesm2020/lucca-front-ng-simple-select-api.mjs +145 -0
  96. package/fesm2020/lucca-front-ng-simple-select-api.mjs.map +1 -0
  97. package/fesm2020/lucca-front-ng-simple-select.mjs +373 -182
  98. package/fesm2020/lucca-front-ng-simple-select.mjs.map +1 -1
  99. package/fesm2020/lucca-front-ng-user.mjs +2 -2
  100. package/fesm2020/lucca-front-ng-user.mjs.map +1 -1
  101. package/modal/lib/modal-config.default.d.ts +3 -2
  102. package/modal/lib/modal-config.model.d.ts +23 -3
  103. package/modal/lib/modal-panel.component.d.ts +8 -7
  104. package/modal/lib/modal-ref.factory.d.ts +9 -8
  105. package/modal/lib/modal-ref.model.d.ts +8 -2
  106. package/modal/lib/modal.module.d.ts +8 -6
  107. package/modal/lib/modal.service.d.ts +3 -3
  108. package/modal/lib/modal.token.d.ts +2 -2
  109. package/package.json +11 -3
  110. package/popup/lib/popup-ref.model.d.ts +9 -4
  111. package/popup/lib/popup.service.d.ts +2 -2
  112. package/sidepanel/lib/index.d.ts +0 -7
  113. package/sidepanel/lib/sidepanel.model.d.ts +42 -1
  114. package/sidepanel/lib/sidepanel.module.d.ts +5 -6
  115. package/sidepanel/lib/sidepanel.service.d.ts +12 -4
  116. package/simple-select/api/index.d.ts +5 -0
  117. package/simple-select/api/lib/api-v3.directive.d.ts +25 -0
  118. package/simple-select/api/lib/api-v4.directive.d.ts +22 -0
  119. package/simple-select/api/lib/api.directive.d.ts +32 -0
  120. package/simple-select/api/public-api.d.ts +3 -0
  121. package/simple-select/lib/index.d.ts +1 -0
  122. package/simple-select/lib/input/panel-ref.factory.d.ts +16 -0
  123. package/simple-select/lib/input/select-input.component.d.ts +22 -33
  124. package/simple-select/lib/input/select-input.models.d.ts +3 -0
  125. package/simple-select/lib/option/default-option.component.d.ts +9 -0
  126. package/simple-select/lib/option/disabled.directive.d.ts +7 -0
  127. package/simple-select/lib/option/index.d.ts +3 -1
  128. package/simple-select/lib/option/option-outlet.directive.d.ts +19 -0
  129. package/simple-select/lib/option/option.component.d.ts +16 -6
  130. package/simple-select/lib/option/option.token.d.ts +9 -0
  131. package/simple-select/lib/panel/index.d.ts +1 -0
  132. package/simple-select/lib/panel/panel.component.d.ts +11 -21
  133. package/simple-select/lib/panel/panel.models.d.ts +13 -0
  134. package/simple-select/lib/select.model.d.ts +3 -3
  135. package/simple-select/lib/select.translate.d.ts +10 -0
  136. package/src/components/_dropdown.scss +6 -4
  137. package/src/components/_sidepanel.scss +16 -6
  138. package/src/definitions/select/_select-clearer.scss +24 -9
  139. package/src/definitions/select/_select-input.scss +5 -16
  140. package/esm2020/sidepanel/lib/sidepanel-config.default.mjs +0 -11
  141. package/esm2020/sidepanel/lib/sidepanel-config.model.mjs +0 -2
  142. package/esm2020/sidepanel/lib/sidepanel-panel.component.mjs +0 -44
  143. package/esm2020/sidepanel/lib/sidepanel-ref.factory.mjs +0 -59
  144. package/esm2020/sidepanel/lib/sidepanel-ref.model.mjs +0 -4
  145. package/esm2020/sidepanel/lib/sidepanel.token.mjs +0 -6
  146. package/esm2020/sidepanel/lib/sidepanel.translate.mjs +0 -22
  147. package/sidepanel/lib/sidepanel-config.default.d.ts +0 -2
  148. package/sidepanel/lib/sidepanel-config.model.d.ts +0 -4
  149. package/sidepanel/lib/sidepanel-panel.component.d.ts +0 -19
  150. package/sidepanel/lib/sidepanel-ref.factory.d.ts +0 -29
  151. package/sidepanel/lib/sidepanel-ref.model.d.ts +0 -5
  152. package/sidepanel/lib/sidepanel.token.d.ts +0 -7
  153. package/sidepanel/lib/sidepanel.translate.d.ts +0 -9
@@ -1,17 +1,75 @@
1
- import * as i2$1 from '@angular/cdk/overlay';
2
- import { OverlayContainer, OverlayModule } from '@angular/cdk/overlay';
3
- import { ComponentPortal } from '@angular/cdk/portal';
4
- import * as i1 from '@angular/common';
5
- import { CommonModule, DOCUMENT } from '@angular/common';
1
+ import { Overlay, OverlayPositionBuilder, ScrollStrategyOptions, OverlayContainer, OverlayModule } from '@angular/cdk/overlay';
2
+ import { AsyncPipe, NgIf, NgFor, DOCUMENT } from '@angular/common';
6
3
  import * as i0 from '@angular/core';
7
- import { Directive, Input, InjectionToken, Component, ChangeDetectionStrategy, Inject, HostBinding, EventEmitter, ViewChild, ViewChildren, HostListener, Injectable, Injector, forwardRef, ElementRef, Output } from '@angular/core';
4
+ import { InjectionToken, inject, Component, Directive, Input, ViewContainerRef, Injector, TemplateRef, ChangeDetectorRef, ElementRef, ChangeDetectionStrategy, HostBinding, ViewChild, EventEmitter, ViewChildren, HostListener, Injectable, forwardRef, Output } from '@angular/core';
8
5
  import * as i2 from '@angular/forms';
9
6
  import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
10
- import { BehaviorSubject, asyncScheduler, ReplaySubject, Subject } from 'rxjs';
11
- import { take, observeOn, map, takeUntil } from 'rxjs/operators';
12
- import * as i3 from '@angular/cdk/a11y';
7
+ import { getIntl } from '@lucca-front/ng/core';
8
+ import { BehaviorSubject, observeOn, asyncScheduler, map, filter, take, takeUntil, ReplaySubject } from 'rxjs';
9
+ import { ComponentPortal } from '@angular/cdk/portal';
10
+ import * as i1 from '@angular/cdk/a11y';
13
11
  import { ActiveDescendantKeyManager, A11yModule } from '@angular/cdk/a11y';
14
- import * as i1$1 from '@angular/cdk/platform';
12
+ import { Platform } from '@angular/cdk/platform';
13
+
14
+ const LU_OPTION_CONTEXT = new InjectionToken('LuOptionContext');
15
+ function optionContextFactory() {
16
+ const isDisabled$ = new BehaviorSubject(false);
17
+ const option$ = new BehaviorSubject(undefined);
18
+ return {
19
+ isDisabled$,
20
+ option$,
21
+ destroy() {
22
+ isDisabled$.complete();
23
+ option$.complete();
24
+ },
25
+ };
26
+ }
27
+ function provideOptionContext() {
28
+ return {
29
+ provide: LU_OPTION_CONTEXT,
30
+ useFactory: optionContextFactory,
31
+ };
32
+ }
33
+
34
+ class LuSimpleSelectDefaultOptionComponent {
35
+ constructor() {
36
+ this.context = inject(LU_OPTION_CONTEXT);
37
+ }
38
+ }
39
+ LuSimpleSelectDefaultOptionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuSimpleSelectDefaultOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
40
+ LuSimpleSelectDefaultOptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: LuSimpleSelectDefaultOptionComponent, isStandalone: true, selector: "lu-simple-select-default-option", ngImport: i0, template: `<ng-container *ngIf="context.option$ | async as option">{{ option?.name ?? option }}</ng-container>`, isInline: true, dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuSimpleSelectDefaultOptionComponent, decorators: [{
42
+ type: Component,
43
+ args: [{
44
+ selector: 'lu-simple-select-default-option',
45
+ standalone: true,
46
+ imports: [AsyncPipe, NgIf],
47
+ template: `<ng-container *ngIf="context.option$ | async as option">{{ option?.name ?? option }}</ng-container>`,
48
+ }]
49
+ }] });
50
+
51
+ class LuDisabledOptionDirective {
52
+ constructor() {
53
+ this.context = inject(LU_OPTION_CONTEXT);
54
+ }
55
+ set isDisabled(disabled) {
56
+ if (disabled !== null) {
57
+ this.context.isDisabled$.next(disabled);
58
+ }
59
+ }
60
+ }
61
+ LuDisabledOptionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuDisabledOptionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
62
+ LuDisabledOptionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: LuDisabledOptionDirective, isStandalone: true, selector: "[luDisabledOption]", inputs: { isDisabled: ["luDisabledOption", "isDisabled"] }, ngImport: i0 });
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuDisabledOptionDirective, decorators: [{
64
+ type: Directive,
65
+ args: [{
66
+ selector: '[luDisabledOption]',
67
+ standalone: true,
68
+ }]
69
+ }], propDecorators: { isDisabled: [{
70
+ type: Input,
71
+ args: ['luDisabledOption']
72
+ }] } });
15
73
 
16
74
  class LuDisplayerDirective {
17
75
  constructor(templateRef) {
@@ -42,20 +100,100 @@ const SELECT_PANEL_DATA = new InjectionToken('LuSelectId');
42
100
  const SELECT_LABEL = new InjectionToken('LuSelectLabel');
43
101
  const SELECT_LABEL_ID = new InjectionToken('LuSelectLabelId');
44
102
 
103
+ class LuOptionOutletDirective {
104
+ constructor() {
105
+ this.viewContainerRef = inject(ViewContainerRef);
106
+ this.injector = inject(Injector);
107
+ this.optionContext = inject(LU_OPTION_CONTEXT);
108
+ }
109
+ ngOnChanges(changes) {
110
+ if (changes['luOptionOutlet'] || !this.luOptionOutletValue) {
111
+ this.clearContainer();
112
+ }
113
+ const hasRef = this.embeddedViewRef || this.componentRef;
114
+ if (changes['luOptionOutlet'] || (changes['luOptionOutletValue'] && !hasRef)) {
115
+ this.createComponent();
116
+ }
117
+ else if (changes['luOptionOutletValue']) {
118
+ this.updateRefValue();
119
+ }
120
+ }
121
+ ngOnDestroy() {
122
+ this.optionContext.destroy();
123
+ }
124
+ clearContainer() {
125
+ this.viewContainerRef.clear();
126
+ this.embeddedViewRef?.destroy();
127
+ this.componentRef?.destroy();
128
+ this.embeddedViewRef = undefined;
129
+ this.componentRef = undefined;
130
+ }
131
+ createComponent() {
132
+ if (!this.luOptionOutlet || !this.luOptionOutletValue) {
133
+ return;
134
+ }
135
+ if (this.luOptionOutlet instanceof TemplateRef) {
136
+ this.embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.luOptionOutlet, { $implicit: this.luOptionOutletValue }, { injector: this.injector });
137
+ }
138
+ else {
139
+ this.optionContext.option$.next(this.luOptionOutletValue);
140
+ this.componentRef = this.viewContainerRef.createComponent(this.luOptionOutlet, { injector: this.injector });
141
+ }
142
+ }
143
+ updateRefValue() {
144
+ if (!this.luOptionOutletValue) {
145
+ return;
146
+ }
147
+ if (this.embeddedViewRef) {
148
+ this.embeddedViewRef.context = { $implicit: this.luOptionOutletValue };
149
+ }
150
+ else if (this.componentRef) {
151
+ this.optionContext.option$.next(this.luOptionOutletValue);
152
+ }
153
+ }
154
+ }
155
+ LuOptionOutletDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuOptionOutletDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
156
+ LuOptionOutletDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: LuOptionOutletDirective, isStandalone: true, selector: "[luOptionOutlet]", inputs: { luOptionOutlet: "luOptionOutlet", luOptionOutletValue: "luOptionOutletValue" }, providers: [provideOptionContext()], usesOnChanges: true, ngImport: i0 });
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuOptionOutletDirective, decorators: [{
158
+ type: Directive,
159
+ args: [{
160
+ selector: '[luOptionOutlet]',
161
+ standalone: true,
162
+ providers: [provideOptionContext()],
163
+ }]
164
+ }], propDecorators: { luOptionOutlet: [{
165
+ type: Input
166
+ }], luOptionOutletValue: [{
167
+ type: Input
168
+ }] } });
169
+
45
170
  class LuOptionComponent {
46
- constructor(elementRef, selectId) {
47
- this.elementRef = elementRef;
48
- this.selectId = selectId;
171
+ constructor() {
49
172
  this.hasOptionItemClass = true;
50
173
  this.isSelected = false;
51
174
  this.optionIndex = 0;
52
175
  this.isHighlighted$ = new BehaviorSubject(false);
176
+ /**
177
+ * Whether option is disabled. Used by ListKeyManager.
178
+ */
53
179
  this.disabled = false;
180
+ this.cdr = inject(ChangeDetectorRef);
54
181
  this.role = 'option';
182
+ this.elementRef = inject(ElementRef);
183
+ this.selectId = inject(SELECT_ID);
55
184
  }
56
185
  get id() {
57
186
  return `lu-select-${this.selectId}-option-${this.optionIndex}`;
58
187
  }
188
+ ngOnDestroy() {
189
+ this.subscription?.unsubscribe();
190
+ }
191
+ ngAfterViewInit() {
192
+ this.subscription = this.optionContext.isDisabled$.pipe(observeOn(asyncScheduler)).subscribe((isDisabled) => {
193
+ this.disabled = isDisabled;
194
+ this.cdr.markForCheck();
195
+ });
196
+ }
59
197
  setActiveStyles() {
60
198
  this.isHighlighted$.next(true);
61
199
  this.elementRef.nativeElement.scrollIntoView({ block: 'center' });
@@ -63,18 +201,22 @@ class LuOptionComponent {
63
201
  setInactiveStyles() {
64
202
  this.isHighlighted$.next(false);
65
203
  }
204
+ selectOption($event) {
205
+ if (this.disabled) {
206
+ $event.stopPropagation();
207
+ }
208
+ }
66
209
  }
67
- LuOptionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuOptionComponent, deps: [{ token: i0.ElementRef }, { token: SELECT_ID }], target: i0.ɵɵFactoryTarget.Component });
68
- LuOptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: LuOptionComponent, isStandalone: true, selector: "lu-select-option", inputs: { isSelected: "isSelected", option: "option", optionIndex: "optionIndex", disabled: "disabled" }, host: { properties: { "class.optionItem": "this.hasOptionItemClass", "attr.aria-selected": "this.isSelected", "attr.role": "this.role", "attr.id": "this.id" } }, ngImport: i0, template: "<div\r\n\tclass=\"optionItem-value\"\r\n\t[class.is-selected]=\"isSelected\"\r\n\t[class.is-highlighted]=\"isHighlighted$ | async\"\r\n\t[class.is-disabled]=\"disabled\"\r\n>\r\n\t<ng-content></ng-content>\r\n</div>\r\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: var(--spacings-L);--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: var(--commons-borderRadius-M);--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: var(--spacings-M)}:host{display:block}.optionItem{position:relative}.optionItem-value{display:block;padding:var(--components-options-item-padding-vertical) var(--components-options-item-padding-horizontal);transition:background-color 50ms;cursor:pointer}.optionItem-value.is-selected{background-color:var(--palettes-primary-50)}.optionItem-value:hover,.optionItem-value.is-highlighted,.optionItem-value.is-focus{background-color:var(--palettes-grey-50)}:host-context(.lu-select-value) .optionItem-value{padding:0;overflow:hidden;text-overflow:ellipsis}:host-context(.lu-select-value) .optionItem-value:hover,:host-context(.lu-select-value) .optionItem-value.is-focus,:host-context(.lu-select-value) .optionItem-value.is-highlighted{background-color:inherit}:host-context(.mod-multiple) .optionItem-value{position:relative;padding-left:var(--components-options-item-multiple-padding)}:host-context(.mod-multiple) .optionItem-value:after,:host-context(.mod-multiple) .optionItem-value:before{display:block;position:absolute;left:var(--components-options-checkbox-left);top:50%;transform:translateY(-50%)}:host-context(.mod-multiple) .optionItem-value:before{content:\"\";border-radius:var(--components-options-checkbox-border-radius);box-shadow:inset 0 0 0 2px var(--components-options-checkbox-border-color);display:block;height:var(--components-options-checkbox-size);transition:all .1s;width:var(--components-options-checkbox-size)}:host-context(.mod-multiple) .optionItem-value:after{display:inline-block;vertical-align:text-bottom;font-style:normal;font-family:Lucca icons;color:transparent;font-size:1rem;line-height:var(--components-options-checkbox-size);padding-top:.05rem;position:absolute;text-align:center;transform:translateY(-50%) scale(0);transition:all .1s;width:var(--components-options-checkbox-size)}@supports (content: \"*\"/\"\"){:host-context(.mod-multiple) .optionItem-value:after{content:\"\\e91a\"/\"\"}}@supports not (content: \"*\"/\"\"){:host-context(.mod-multiple) .optionItem-value:after{content:\"\\e91a\"}}:host-context(.mod-multiple) .optionItem-value.is-selected:before{background-color:var(--components-options-checkbox-color);box-shadow:inset 0 0 0 2px var(--components-options-checkbox-color)}:host-context(.mod-multiple) .optionItem-value.is-selected:after{color:var(--colors-white-color);transform:translateY(-50%) scale(1)}:host-context(.mod-multiple) .optionItem-value:hover:before{box-shadow:inset 0 0 0 2px var(--components-options-checkbox-color)}:host-context(.mod-multiple).establishmentOption .optionItem-value{position:relative;padding-left:calc(2 * var(--components-options-item-padding-horizontal) + var(--components-options-checkbox-size) + var(--spacings-XS))}:host-context(.mod-multiple).establishmentOption .optionItem-value:before,:host-context(.mod-multiple).establishmentOption .optionItem-value:after{left:calc(2 * var(--components-options-item-padding-horizontal))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
210
+ LuOptionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
211
+ LuOptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: LuOptionComponent, isStandalone: true, selector: "lu-select-option", inputs: { optionTpl: "optionTpl", isSelected: "isSelected", option: "option", optionIndex: "optionIndex" }, host: { properties: { "class.optionItem": "this.hasOptionItemClass", "attr.aria-selected": "this.isSelected", "attr.role": "this.role", "attr.id": "this.id" } }, viewQueries: [{ propertyName: "optionContext", first: true, predicate: LuOptionOutletDirective, descendants: true, read: LU_OPTION_CONTEXT, static: true }], ngImport: i0, template: "<div\r\n\tclass=\"optionItem-value\"\r\n\t[class.is-selected]=\"isSelected\"\r\n\t[class.is-highlighted]=\"isHighlighted$ | async\"\r\n\t[class.is-disabled]=\"disabled\"\r\n\t(click)=\"selectOption($event)\"\r\n>\r\n\t<ng-container *luOptionOutlet=\"optionTpl; value: option\"></ng-container>\r\n</div>\r\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: var(--spacings-L);--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: var(--commons-borderRadius-M);--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: var(--spacings-M)}:host{display:block}.optionItem{position:relative}.optionItem-value{display:block;padding:var(--components-options-item-padding-vertical) var(--components-options-item-padding-horizontal);transition:background-color 50ms;cursor:pointer}.optionItem-value.is-selected{background-color:var(--palettes-primary-50)}.optionItem-value:hover,.optionItem-value.is-highlighted,.optionItem-value.is-focus{background-color:var(--palettes-grey-50)}:host-context(.lu-select-value) .optionItem-value{padding:0;overflow:hidden;text-overflow:ellipsis}:host-context(.lu-select-value) .optionItem-value:hover,:host-context(.lu-select-value) .optionItem-value.is-focus,:host-context(.lu-select-value) .optionItem-value.is-highlighted{background-color:inherit}:host-context(.mod-multiple) .optionItem-value{position:relative;padding-left:var(--components-options-item-multiple-padding)}:host-context(.mod-multiple) .optionItem-value:after,:host-context(.mod-multiple) .optionItem-value:before{display:block;position:absolute;left:var(--components-options-checkbox-left);top:50%;transform:translateY(-50%)}:host-context(.mod-multiple) .optionItem-value:before{content:\"\";border-radius:var(--components-options-checkbox-border-radius);box-shadow:inset 0 0 0 2px var(--components-options-checkbox-border-color);display:block;height:var(--components-options-checkbox-size);transition:all .1s;width:var(--components-options-checkbox-size)}:host-context(.mod-multiple) .optionItem-value:after{display:inline-block;vertical-align:text-bottom;font-style:normal;font-family:Lucca icons;color:transparent;font-size:1rem;line-height:var(--components-options-checkbox-size);padding-top:.05rem;position:absolute;text-align:center;transform:translateY(-50%) scale(0);transition:all .1s;width:var(--components-options-checkbox-size)}@supports (content: \"*\"/\"\"){:host-context(.mod-multiple) .optionItem-value:after{content:\"\\e91a\"/\"\"}}@supports not (content: \"*\"/\"\"){:host-context(.mod-multiple) .optionItem-value:after{content:\"\\e91a\"}}:host-context(.mod-multiple) .optionItem-value.is-selected:before{background-color:var(--components-options-checkbox-color);box-shadow:inset 0 0 0 2px var(--components-options-checkbox-color)}:host-context(.mod-multiple) .optionItem-value.is-selected:after{color:var(--colors-white-color);transform:translateY(-50%) scale(1)}:host-context(.mod-multiple) .optionItem-value:hover:before{box-shadow:inset 0 0 0 2px var(--components-options-checkbox-color)}:host-context(.mod-multiple).establishmentOption .optionItem-value{position:relative;padding-left:calc(2 * var(--components-options-item-padding-horizontal) + var(--components-options-checkbox-size) + var(--spacings-XS))}:host-context(.mod-multiple).establishmentOption .optionItem-value:before,:host-context(.mod-multiple).establishmentOption .optionItem-value:after{left:calc(2 * var(--components-options-item-padding-horizontal))}.is-disabled{color:var(--palettes-grey-500);-webkit-user-select:none;user-select:none;cursor:default}.is-disabled.is-selected{background-color:var(--palettes-grey-100)}.is-disabled:hover{background-color:inherit}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: LuOptionOutletDirective, selector: "[luOptionOutlet]", inputs: ["luOptionOutlet", "luOptionOutletValue"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
69
212
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuOptionComponent, decorators: [{
70
213
  type: Component,
71
- args: [{ selector: 'lu-select-option', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div\r\n\tclass=\"optionItem-value\"\r\n\t[class.is-selected]=\"isSelected\"\r\n\t[class.is-highlighted]=\"isHighlighted$ | async\"\r\n\t[class.is-disabled]=\"disabled\"\r\n>\r\n\t<ng-content></ng-content>\r\n</div>\r\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: var(--spacings-L);--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: var(--commons-borderRadius-M);--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: var(--spacings-M)}:host{display:block}.optionItem{position:relative}.optionItem-value{display:block;padding:var(--components-options-item-padding-vertical) var(--components-options-item-padding-horizontal);transition:background-color 50ms;cursor:pointer}.optionItem-value.is-selected{background-color:var(--palettes-primary-50)}.optionItem-value:hover,.optionItem-value.is-highlighted,.optionItem-value.is-focus{background-color:var(--palettes-grey-50)}:host-context(.lu-select-value) .optionItem-value{padding:0;overflow:hidden;text-overflow:ellipsis}:host-context(.lu-select-value) .optionItem-value:hover,:host-context(.lu-select-value) .optionItem-value.is-focus,:host-context(.lu-select-value) .optionItem-value.is-highlighted{background-color:inherit}:host-context(.mod-multiple) .optionItem-value{position:relative;padding-left:var(--components-options-item-multiple-padding)}:host-context(.mod-multiple) .optionItem-value:after,:host-context(.mod-multiple) .optionItem-value:before{display:block;position:absolute;left:var(--components-options-checkbox-left);top:50%;transform:translateY(-50%)}:host-context(.mod-multiple) .optionItem-value:before{content:\"\";border-radius:var(--components-options-checkbox-border-radius);box-shadow:inset 0 0 0 2px var(--components-options-checkbox-border-color);display:block;height:var(--components-options-checkbox-size);transition:all .1s;width:var(--components-options-checkbox-size)}:host-context(.mod-multiple) .optionItem-value:after{display:inline-block;vertical-align:text-bottom;font-style:normal;font-family:Lucca icons;color:transparent;font-size:1rem;line-height:var(--components-options-checkbox-size);padding-top:.05rem;position:absolute;text-align:center;transform:translateY(-50%) scale(0);transition:all .1s;width:var(--components-options-checkbox-size)}@supports (content: \"*\"/\"\"){:host-context(.mod-multiple) .optionItem-value:after{content:\"\\e91a\"/\"\"}}@supports not (content: \"*\"/\"\"){:host-context(.mod-multiple) .optionItem-value:after{content:\"\\e91a\"}}:host-context(.mod-multiple) .optionItem-value.is-selected:before{background-color:var(--components-options-checkbox-color);box-shadow:inset 0 0 0 2px var(--components-options-checkbox-color)}:host-context(.mod-multiple) .optionItem-value.is-selected:after{color:var(--colors-white-color);transform:translateY(-50%) scale(1)}:host-context(.mod-multiple) .optionItem-value:hover:before{box-shadow:inset 0 0 0 2px var(--components-options-checkbox-color)}:host-context(.mod-multiple).establishmentOption .optionItem-value{position:relative;padding-left:calc(2 * var(--components-options-item-padding-horizontal) + var(--components-options-checkbox-size) + var(--spacings-XS))}:host-context(.mod-multiple).establishmentOption .optionItem-value:before,:host-context(.mod-multiple).establishmentOption .optionItem-value:after{left:calc(2 * var(--components-options-item-padding-horizontal))}\n"] }]
72
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
73
- type: Inject,
74
- args: [SELECT_ID]
75
- }] }]; }, propDecorators: { hasOptionItemClass: [{
214
+ args: [{ selector: 'lu-select-option', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [AsyncPipe, LuOptionOutletDirective], template: "<div\r\n\tclass=\"optionItem-value\"\r\n\t[class.is-selected]=\"isSelected\"\r\n\t[class.is-highlighted]=\"isHighlighted$ | async\"\r\n\t[class.is-disabled]=\"disabled\"\r\n\t(click)=\"selectOption($event)\"\r\n>\r\n\t<ng-container *luOptionOutlet=\"optionTpl; value: option\"></ng-container>\r\n</div>\r\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: var(--spacings-L);--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: var(--commons-borderRadius-M);--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: var(--spacings-M)}:host{display:block}.optionItem{position:relative}.optionItem-value{display:block;padding:var(--components-options-item-padding-vertical) var(--components-options-item-padding-horizontal);transition:background-color 50ms;cursor:pointer}.optionItem-value.is-selected{background-color:var(--palettes-primary-50)}.optionItem-value:hover,.optionItem-value.is-highlighted,.optionItem-value.is-focus{background-color:var(--palettes-grey-50)}:host-context(.lu-select-value) .optionItem-value{padding:0;overflow:hidden;text-overflow:ellipsis}:host-context(.lu-select-value) .optionItem-value:hover,:host-context(.lu-select-value) .optionItem-value.is-focus,:host-context(.lu-select-value) .optionItem-value.is-highlighted{background-color:inherit}:host-context(.mod-multiple) .optionItem-value{position:relative;padding-left:var(--components-options-item-multiple-padding)}:host-context(.mod-multiple) .optionItem-value:after,:host-context(.mod-multiple) .optionItem-value:before{display:block;position:absolute;left:var(--components-options-checkbox-left);top:50%;transform:translateY(-50%)}:host-context(.mod-multiple) .optionItem-value:before{content:\"\";border-radius:var(--components-options-checkbox-border-radius);box-shadow:inset 0 0 0 2px var(--components-options-checkbox-border-color);display:block;height:var(--components-options-checkbox-size);transition:all .1s;width:var(--components-options-checkbox-size)}:host-context(.mod-multiple) .optionItem-value:after{display:inline-block;vertical-align:text-bottom;font-style:normal;font-family:Lucca icons;color:transparent;font-size:1rem;line-height:var(--components-options-checkbox-size);padding-top:.05rem;position:absolute;text-align:center;transform:translateY(-50%) scale(0);transition:all .1s;width:var(--components-options-checkbox-size)}@supports (content: \"*\"/\"\"){:host-context(.mod-multiple) .optionItem-value:after{content:\"\\e91a\"/\"\"}}@supports not (content: \"*\"/\"\"){:host-context(.mod-multiple) .optionItem-value:after{content:\"\\e91a\"}}:host-context(.mod-multiple) .optionItem-value.is-selected:before{background-color:var(--components-options-checkbox-color);box-shadow:inset 0 0 0 2px var(--components-options-checkbox-color)}:host-context(.mod-multiple) .optionItem-value.is-selected:after{color:var(--colors-white-color);transform:translateY(-50%) scale(1)}:host-context(.mod-multiple) .optionItem-value:hover:before{box-shadow:inset 0 0 0 2px var(--components-options-checkbox-color)}:host-context(.mod-multiple).establishmentOption .optionItem-value{position:relative;padding-left:calc(2 * var(--components-options-item-padding-horizontal) + var(--components-options-checkbox-size) + var(--spacings-XS))}:host-context(.mod-multiple).establishmentOption .optionItem-value:before,:host-context(.mod-multiple).establishmentOption .optionItem-value:after{left:calc(2 * var(--components-options-item-padding-horizontal))}.is-disabled{color:var(--palettes-grey-500);-webkit-user-select:none;user-select:none;cursor:default}.is-disabled.is-selected{background-color:var(--palettes-grey-100)}.is-disabled:hover{background-color:inherit}\n"] }]
215
+ }], propDecorators: { hasOptionItemClass: [{
76
216
  type: HostBinding,
77
217
  args: ['class.optionItem']
218
+ }], optionTpl: [{
219
+ type: Input
78
220
  }], isSelected: [{
79
221
  type: Input
80
222
  }, {
@@ -84,8 +226,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImpor
84
226
  type: Input
85
227
  }], optionIndex: [{
86
228
  type: Input
87
- }], disabled: [{
88
- type: Input
229
+ }], optionContext: [{
230
+ type: ViewChild,
231
+ args: [LuOptionOutletDirective, { read: LU_OPTION_CONTEXT, static: true }]
89
232
  }], role: [{
90
233
  type: HostBinding,
91
234
  args: ['attr.role']
@@ -118,6 +261,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImpor
118
261
  args: ['luOptionSelect']
119
262
  }] } });
120
263
 
264
+ const LU_SIMPLE_SELECT_TRANSLATIONS = new InjectionToken('LuSimpleSelectTranslations', {
265
+ factory: () => luSimpleSelectTranslations,
266
+ });
267
+ const luSimpleSelectTranslations = {
268
+ en: {
269
+ placeholder: 'Select an option',
270
+ clear: 'Clear',
271
+ clearSearch: 'Clear search',
272
+ emptyResults: 'No results',
273
+ },
274
+ fr: {
275
+ placeholder: 'Sélectionnez une option',
276
+ clear: 'Effacer',
277
+ clearSearch: 'Vider la recherche',
278
+ emptyResults: 'Aucun résultat pour votre recherche',
279
+ },
280
+ de: {
281
+ placeholder: 'Wählen Sie eine Option',
282
+ clear: 'Löschen',
283
+ clearSearch: 'Suche löschen',
284
+ emptyResults: 'Keine Ergebnisse für Ihre Suche',
285
+ },
286
+ es: {
287
+ placeholder: 'Seleccione una opción',
288
+ clear: 'Borrar',
289
+ clearSearch: 'Borrar búsqueda',
290
+ emptyResults: 'No hay resultados para su búsqueda',
291
+ },
292
+ pt: {
293
+ placeholder: 'Selecione uma opção',
294
+ clear: 'Limpar',
295
+ clearSearch: 'Limpar pesquisa',
296
+ emptyResults: 'Nenhum resultado para sua pesquisa',
297
+ },
298
+ };
299
+
121
300
  class LuSelectPanelRef {
122
301
  constructor() {
123
302
  this.closed = new EventEmitter();
@@ -130,9 +309,7 @@ class LuSelectPanelRef {
130
309
  close() {
131
310
  this.closed.next();
132
311
  this.closed.complete();
133
- this.nextPage.next();
134
312
  this.nextPage.complete();
135
- this.previousPage.next();
136
313
  this.previousPage.complete();
137
314
  this.valueChanged.complete();
138
315
  this.clueChanged.emit(null);
@@ -140,18 +317,21 @@ class LuSelectPanelRef {
140
317
  this.activeOptionIdChanged.emit(undefined);
141
318
  this.activeOptionIdChanged.complete();
142
319
  }
143
- }
320
+ }
321
+
144
322
  class LuSelectPanelComponent {
145
- constructor(panelRef, selectId, data) {
146
- this.panelRef = panelRef;
147
- this.selectId = selectId;
323
+ constructor() {
324
+ this.panelData = inject(SELECT_PANEL_DATA);
325
+ this.panelRef = inject(LuSelectPanelRef);
326
+ this.selectId = inject(SELECT_ID);
327
+ this.intl = getIntl(LU_SIMPLE_SELECT_TRANSLATIONS);
328
+ this.options$ = this.panelData.options$;
329
+ this.loading$ = this.panelData.loading$;
330
+ this.optionComparer = this.panelData.optionComparer;
331
+ this.initialValue = this.panelData.initialValue;
332
+ this.optionTpl = this.panelData.optionTpl;
333
+ this.searchable = this.panelData.searchable;
148
334
  this.search = null;
149
- this.options$ = data.options$;
150
- this.loading$ = data.loading$;
151
- this.optionComparer = data.optionComparer;
152
- this.initialValue = data.initialValue;
153
- this.optionTpl = data.optionTpl;
154
- this.searchable = data.searchable;
155
335
  }
156
336
  set searchInput(input) {
157
337
  if (!input) {
@@ -169,7 +349,7 @@ class LuSelectPanelComponent {
169
349
  if (evt.target.scrollTop === 0) {
170
350
  this.panelRef.previousPage.emit();
171
351
  }
172
- if (evt.target.scrollHeight === evt.target.scrollTop + evt.target.clientHeight) {
352
+ if (evt.target.scrollHeight - evt.target.scrollTop - evt.target.clientHeight < 1) {
173
353
  this.panelRef.nextPage.emit();
174
354
  }
175
355
  }
@@ -180,7 +360,7 @@ class LuSelectPanelComponent {
180
360
  this.keyManager = new ActiveDescendantKeyManager(this.optionsQL).withHomeAndEnd();
181
361
  if (this.initialValue) {
182
362
  this.options$
183
- ?.pipe(take(1), observeOn(asyncScheduler), map((options) => options.findIndex((o) => this.optionComparer(o, this.initialValue))), takeUntil(this.panelRef.closed))
363
+ ?.pipe(observeOn(asyncScheduler), map((options) => options.findIndex((o) => this.optionComparer(o, this.initialValue))), filter((index) => index !== -1), take(1), takeUntil(this.panelRef.closed))
184
364
  .subscribe((selectedIndex) => this.keyManager.setActiveItem(selectedIndex));
185
365
  }
186
366
  this.keyManager.change
@@ -204,18 +384,12 @@ class LuSelectPanelComponent {
204
384
  setTimeout(() => this.keyManager.setFirstItemActive());
205
385
  }
206
386
  }
207
- LuSelectPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuSelectPanelComponent, deps: [{ token: LuSelectPanelRef }, { token: SELECT_ID }, { token: SELECT_PANEL_DATA }], target: i0.ɵɵFactoryTarget.Component });
208
- LuSelectPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: LuSelectPanelComponent, isStandalone: true, selector: "lu-select-panel", host: { listeners: { "keydown": "onKeyDown($event)" } }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "optionsQL", predicate: LuOptionComponent, descendants: true }], ngImport: i0, template: "<div\r\n\tclass=\"lu-picker-panel lu-option-picker-panel\"\r\n\trole=\"dialog\"\r\n\tcdkTrapFocus\r\n\t*ngIf=\"{ options: options$ | async } as ctx\"\r\n\t[cdkTrapFocusAutoCapture]=\"true\"\r\n>\r\n\t<div class=\"lu-picker-content\" [class.is-loading]=\"loading$ | async\" tabindex=\"0\" (scroll)=\"onScroll($event)\">\r\n\t\t<ng-container *ngIf=\"searchable\">\r\n\t\t\t<div class=\"textfield mod-search\">\r\n\t\t\t\t<input #searchInput class=\"textfield-input\" [(ngModel)]=\"search\" (ngModelChange)=\"updateClue($event)\" />\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"optionPlaceholder\" *ngIf=\"search && !ctx.options?.length\">\r\n\t\t\t\t<p class=\"optionPlaceholder-content u-marginBottom0\">Aucun r\u00E9sultat pour votre recherche</p>\r\n\t\t\t\t<button type=\"button\" class=\"link\" (click)=\"updateClue(null); searchInput.focus()\">Vider la recherche</button>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\r\n\t\t<lu-select-option\r\n\t\t\t*ngFor=\"let option of ctx.options; let index = index\"\r\n\t\t\t[option]=\"option\"\r\n\t\t\t[optionIndex]=\"index\"\r\n\t\t\t[isSelected]=\"option === selected\"\r\n\t\t\t[disabled]=\"false\"\r\n\t\t\t(click)=\"panelRef.emitValue(option)\"\r\n\t\t>\r\n\t\t\t<ng-container *ngTemplateOutlet=\"optionTpl; context: { $implicit: option }\"></ng-container>\r\n\t\t</lu-select-option>\r\n\t\t<div *ngIf=\"loading$ | async\" class=\"loading lu-picker-loading\"></div>\r\n\t</div>\r\n</div>\r\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: var(--spacings-L);--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: var(--commons-borderRadius-M);--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: var(--spacings-M)}.textfield.mod-search{width:100%}.textfield-input{border-radius:0;box-shadow:none;background-color:var(--colors-white-color);border-bottom:var(--commons-divider-width) solid var(--commons-divider-color)}.textfield-input:hover{background-color:var(--palettes-grey-50)}.textfield-input:focus{background-color:var(--colors-white-color);border-bottom-color:var(--palettes-primary-600)}.checkbox.mod-formerEmployee{padding:var(--spacings-XXS) var(--components-options-item-padding-horizontal);border-bottom:var(--commons-divider-width) solid var(--commons-divider-color);background-color:var(--palettes-grey-50);font-style:italic}.optionPlaceholder{display:block;padding:var(--components-options-item-padding-vertical) var(--components-options-item-padding-horizontal);font-style:italic;color:var(--palettes-grey-600)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: LuOptionComponent, selector: "lu-select-option", inputs: ["isSelected", "option", "optionIndex", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
387
+ LuSelectPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuSelectPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
388
+ LuSelectPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: LuSelectPanelComponent, isStandalone: true, selector: "lu-select-panel", host: { listeners: { "keydown": "onKeyDown($event)" } }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "optionsQL", predicate: LuOptionComponent, descendants: true }], ngImport: i0, template: "<div\r\n\tclass=\"lu-picker-panel lu-option-picker-panel\"\r\n\trole=\"dialog\"\r\n\tcdkTrapFocus\r\n\t*ngIf=\"{ options: options$ | async } as ctx\"\r\n\t[cdkTrapFocusAutoCapture]=\"true\"\r\n>\r\n\t<div class=\"lu-picker-content\" [class.is-loading]=\"loading$ | async\" tabindex=\"0\" (scroll)=\"onScroll($event)\">\r\n\t\t<ng-container *ngIf=\"searchable\">\r\n\t\t\t<div class=\"panel-search textfield mod-search\">\r\n\t\t\t\t<input #searchInput class=\"textfield-input\" [ngModel]=\"search\" (ngModelChange)=\"updateClue($event)\" />\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"optionPlaceholder\" *ngIf=\"search && !ctx.options?.length\">\r\n\t\t\t\t<p class=\"optionPlaceholder-content u-marginBottom0\">{{ intl.emptyResults }}</p>\r\n\t\t\t\t<button type=\"button\" class=\"link\" (click)=\"updateClue(null); searchInput.focus()\">{{ intl.clearSearch }}</button>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\r\n\t\t<lu-select-option\r\n\t\t\t*ngFor=\"let option of ctx.options; let index = index\"\r\n\t\t\t[option]=\"option\"\r\n\t\t\t[optionTpl]=\"optionTpl\"\r\n\t\t\t[optionIndex]=\"index\"\r\n\t\t\t[isSelected]=\"option === selected\"\r\n\t\t\t(click)=\"panelRef.emitValue(option)\"\r\n\t\t></lu-select-option>\r\n\r\n\t\t<div *ngIf=\"loading$ | async\" class=\"panel-loading loading lu-picker-loading\"></div>\r\n\t</div>\r\n</div>\r\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: var(--spacings-L);--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: var(--commons-borderRadius-M);--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: var(--spacings-M)}.textfield.mod-search{width:100%}.textfield-input{border-radius:0;box-shadow:none;background-color:var(--colors-white-color);border-bottom:var(--commons-divider-width) solid var(--commons-divider-color)}.textfield-input:hover{background-color:var(--palettes-grey-50)}.textfield-input:focus{background-color:var(--colors-white-color);border-bottom-color:var(--palettes-primary-600)}.checkbox.mod-formerEmployee{padding:var(--spacings-XXS) var(--components-options-item-padding-horizontal);border-bottom:var(--commons-divider-width) solid var(--commons-divider-color);background-color:var(--palettes-grey-50);font-style:italic}.optionPlaceholder{display:block;padding:var(--components-options-item-padding-vertical) var(--components-options-item-padding-horizontal);font-style:italic;color:var(--palettes-grey-600)}.panel-search{position:sticky;top:0}.panel-loading:after{box-shadow:0 0 0 .25rem var(--colors-white-color),inset 0 0 0 .5rem var(--colors-white-color)}\n"], dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: LuOptionComponent, selector: "lu-select-option", inputs: ["optionTpl", "isSelected", "option", "optionIndex"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
209
389
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuSelectPanelComponent, decorators: [{
210
390
  type: Component,
211
- args: [{ selector: 'lu-select-panel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormsModule, A11yModule, LuOptionComponent], template: "<div\r\n\tclass=\"lu-picker-panel lu-option-picker-panel\"\r\n\trole=\"dialog\"\r\n\tcdkTrapFocus\r\n\t*ngIf=\"{ options: options$ | async } as ctx\"\r\n\t[cdkTrapFocusAutoCapture]=\"true\"\r\n>\r\n\t<div class=\"lu-picker-content\" [class.is-loading]=\"loading$ | async\" tabindex=\"0\" (scroll)=\"onScroll($event)\">\r\n\t\t<ng-container *ngIf=\"searchable\">\r\n\t\t\t<div class=\"textfield mod-search\">\r\n\t\t\t\t<input #searchInput class=\"textfield-input\" [(ngModel)]=\"search\" (ngModelChange)=\"updateClue($event)\" />\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"optionPlaceholder\" *ngIf=\"search && !ctx.options?.length\">\r\n\t\t\t\t<p class=\"optionPlaceholder-content u-marginBottom0\">Aucun r\u00E9sultat pour votre recherche</p>\r\n\t\t\t\t<button type=\"button\" class=\"link\" (click)=\"updateClue(null); searchInput.focus()\">Vider la recherche</button>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\r\n\t\t<lu-select-option\r\n\t\t\t*ngFor=\"let option of ctx.options; let index = index\"\r\n\t\t\t[option]=\"option\"\r\n\t\t\t[optionIndex]=\"index\"\r\n\t\t\t[isSelected]=\"option === selected\"\r\n\t\t\t[disabled]=\"false\"\r\n\t\t\t(click)=\"panelRef.emitValue(option)\"\r\n\t\t>\r\n\t\t\t<ng-container *ngTemplateOutlet=\"optionTpl; context: { $implicit: option }\"></ng-container>\r\n\t\t</lu-select-option>\r\n\t\t<div *ngIf=\"loading$ | async\" class=\"loading lu-picker-loading\"></div>\r\n\t</div>\r\n</div>\r\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: var(--spacings-L);--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: var(--commons-borderRadius-M);--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: var(--spacings-M)}.textfield.mod-search{width:100%}.textfield-input{border-radius:0;box-shadow:none;background-color:var(--colors-white-color);border-bottom:var(--commons-divider-width) solid var(--commons-divider-color)}.textfield-input:hover{background-color:var(--palettes-grey-50)}.textfield-input:focus{background-color:var(--colors-white-color);border-bottom-color:var(--palettes-primary-600)}.checkbox.mod-formerEmployee{padding:var(--spacings-XXS) var(--components-options-item-padding-horizontal);border-bottom:var(--commons-divider-width) solid var(--commons-divider-color);background-color:var(--palettes-grey-50);font-style:italic}.optionPlaceholder{display:block;padding:var(--components-options-item-padding-vertical) var(--components-options-item-padding-horizontal);font-style:italic;color:var(--palettes-grey-600)}\n"] }]
212
- }], ctorParameters: function () { return [{ type: LuSelectPanelRef }, { type: undefined, decorators: [{
213
- type: Inject,
214
- args: [SELECT_ID]
215
- }] }, { type: undefined, decorators: [{
216
- type: Inject,
217
- args: [SELECT_PANEL_DATA]
218
- }] }]; }, propDecorators: { searchInput: [{
391
+ args: [{ selector: 'lu-select-panel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [A11yModule, AsyncPipe, FormsModule, NgIf, NgFor, LuOptionComponent], template: "<div\r\n\tclass=\"lu-picker-panel lu-option-picker-panel\"\r\n\trole=\"dialog\"\r\n\tcdkTrapFocus\r\n\t*ngIf=\"{ options: options$ | async } as ctx\"\r\n\t[cdkTrapFocusAutoCapture]=\"true\"\r\n>\r\n\t<div class=\"lu-picker-content\" [class.is-loading]=\"loading$ | async\" tabindex=\"0\" (scroll)=\"onScroll($event)\">\r\n\t\t<ng-container *ngIf=\"searchable\">\r\n\t\t\t<div class=\"panel-search textfield mod-search\">\r\n\t\t\t\t<input #searchInput class=\"textfield-input\" [ngModel]=\"search\" (ngModelChange)=\"updateClue($event)\" />\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"optionPlaceholder\" *ngIf=\"search && !ctx.options?.length\">\r\n\t\t\t\t<p class=\"optionPlaceholder-content u-marginBottom0\">{{ intl.emptyResults }}</p>\r\n\t\t\t\t<button type=\"button\" class=\"link\" (click)=\"updateClue(null); searchInput.focus()\">{{ intl.clearSearch }}</button>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\r\n\t\t<lu-select-option\r\n\t\t\t*ngFor=\"let option of ctx.options; let index = index\"\r\n\t\t\t[option]=\"option\"\r\n\t\t\t[optionTpl]=\"optionTpl\"\r\n\t\t\t[optionIndex]=\"index\"\r\n\t\t\t[isSelected]=\"option === selected\"\r\n\t\t\t(click)=\"panelRef.emitValue(option)\"\r\n\t\t></lu-select-option>\r\n\r\n\t\t<div *ngIf=\"loading$ | async\" class=\"panel-loading loading lu-picker-loading\"></div>\r\n\t</div>\r\n</div>\r\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: var(--spacings-L);--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: var(--commons-borderRadius-M);--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: var(--spacings-M)}.textfield.mod-search{width:100%}.textfield-input{border-radius:0;box-shadow:none;background-color:var(--colors-white-color);border-bottom:var(--commons-divider-width) solid var(--commons-divider-color)}.textfield-input:hover{background-color:var(--palettes-grey-50)}.textfield-input:focus{background-color:var(--colors-white-color);border-bottom-color:var(--palettes-primary-600)}.checkbox.mod-formerEmployee{padding:var(--spacings-XXS) var(--components-options-item-padding-horizontal);border-bottom:var(--commons-divider-width) solid var(--commons-divider-color);background-color:var(--palettes-grey-50);font-style:italic}.optionPlaceholder{display:block;padding:var(--components-options-item-padding-vertical) var(--components-options-item-padding-horizontal);font-style:italic;color:var(--palettes-grey-600)}.panel-search{position:sticky;top:0}.panel-loading:after{box-shadow:0 0 0 .25rem var(--colors-white-color),inset 0 0 0 .5rem var(--colors-white-color)}\n"] }]
392
+ }], propDecorators: { searchInput: [{
219
393
  type: ViewChild,
220
394
  args: ['searchInput']
221
395
  }], optionsQL: [{
@@ -226,53 +400,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImpor
226
400
  args: ['keydown', ['$event']]
227
401
  }] } });
228
402
 
229
- /* eslint-disable @angular-eslint/no-output-on-prefix */
230
- let selectId = 0;
231
- function selectIdFactory() {
232
- return selectId++;
233
- }
234
- function selectLabelFactory(elementRef) {
235
- function getLabel(node) {
236
- if (node instanceof HTMLLabelElement) {
237
- return node;
238
- }
239
- if (!node.parentElement) {
240
- return undefined;
241
- }
242
- return getLabel(node.parentElement);
243
- }
244
- return getLabel(elementRef.nativeElement);
245
- }
246
- function selectLabelIdFactory(label, selectId) {
247
- return label?.id || `lu-select-label-${selectId}`;
248
- }
249
- class LuSelectOverlayContainer extends OverlayContainer {
250
- constructor(document, platform, selectLabelId, selectId) {
251
- super(document, platform);
252
- this.selectLabelId = selectLabelId;
253
- this.selectId = selectId;
254
- }
255
- _createContainer() {
256
- super._createContainer();
257
- this._containerElement.setAttribute('aria-labelledby', this.selectLabelId);
258
- this._containerElement.setAttribute('role', 'listbox');
259
- this._containerElement.id = `lu-select-overlay-container-${this.selectId}`;
260
- }
261
- }
262
- LuSelectOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuSelectOverlayContainer, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }, { token: SELECT_LABEL_ID }, { token: SELECT_ID }], target: i0.ɵɵFactoryTarget.Injectable });
263
- LuSelectOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuSelectOverlayContainer });
264
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuSelectOverlayContainer, decorators: [{
265
- type: Injectable
266
- }], ctorParameters: function () { return [{ type: Document, decorators: [{
267
- type: Inject,
268
- args: [DOCUMENT]
269
- }] }, { type: i1$1.Platform }, { type: undefined, decorators: [{
270
- type: Inject,
271
- args: [SELECT_LABEL_ID]
272
- }] }, { type: undefined, decorators: [{
273
- type: Inject,
274
- args: [SELECT_ID]
275
- }] }]; } });
276
403
  class SelectPanelRef extends LuSelectPanelRef {
277
404
  constructor(overlayRef, parentInjector, panelData) {
278
405
  super();
@@ -302,36 +429,141 @@ class SelectPanelRef extends LuSelectPanelRef {
302
429
  this.overlayRef.detach();
303
430
  }
304
431
  }
432
+ class LuSimpleSelectPanelRefFactory {
433
+ constructor() {
434
+ this.overlay = inject(Overlay);
435
+ this.elementRef = inject(ElementRef);
436
+ this.positionBuilder = inject(OverlayPositionBuilder);
437
+ this.scrollStrategies = inject(ScrollStrategyOptions);
438
+ this.parentInjector = inject(Injector);
439
+ }
440
+ buildPanelRef(panelData, overlayConfigOverride = {}) {
441
+ const overlayConfig = this.buildOverlayConfig(overlayConfigOverride);
442
+ const overlayRef = this.overlay.create(overlayConfig);
443
+ return new SelectPanelRef(overlayRef, this.parentInjector, panelData);
444
+ }
445
+ buildOverlayConfig(overlayConfigOverride = {}) {
446
+ const overlayConfig = overlayConfigOverride || {};
447
+ overlayConfig.positionStrategy = this.positionBuilder.flexibleConnectedTo(this.elementRef).withPositions([
448
+ {
449
+ originX: 'start',
450
+ originY: 'bottom',
451
+ overlayX: 'start',
452
+ overlayY: 'top',
453
+ },
454
+ {
455
+ originX: 'end',
456
+ originY: 'bottom',
457
+ overlayX: 'end',
458
+ overlayY: 'top',
459
+ },
460
+ {
461
+ originX: 'start',
462
+ originY: 'top',
463
+ overlayX: 'start',
464
+ overlayY: 'bottom',
465
+ },
466
+ {
467
+ originX: 'end',
468
+ originY: 'top',
469
+ overlayX: 'end',
470
+ overlayY: 'bottom',
471
+ },
472
+ ]);
473
+ overlayConfig.scrollStrategy = this.scrollStrategies.reposition();
474
+ overlayConfig.minWidth = this.elementRef.nativeElement.clientWidth;
475
+ overlayConfig.maxHeight = '100vh';
476
+ overlayConfig.maxWidth = '100vw';
477
+ return overlayConfig;
478
+ }
479
+ }
480
+ LuSimpleSelectPanelRefFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuSimpleSelectPanelRefFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
481
+ LuSimpleSelectPanelRefFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuSimpleSelectPanelRefFactory });
482
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuSimpleSelectPanelRefFactory, decorators: [{
483
+ type: Injectable
484
+ }] });
485
+
486
+ let selectId = 0;
487
+ function selectIdFactory() {
488
+ return selectId++;
489
+ }
490
+ function selectLabelFactory() {
491
+ const elementRef = inject(ElementRef);
492
+ function getLabel(node) {
493
+ if (node instanceof HTMLLabelElement) {
494
+ return node;
495
+ }
496
+ if (!node.parentElement) {
497
+ return undefined;
498
+ }
499
+ return getLabel(node.parentElement);
500
+ }
501
+ return getLabel(elementRef.nativeElement);
502
+ }
503
+ function selectLabelIdFactory() {
504
+ return inject(SELECT_LABEL)?.id || `lu-select-label-${inject(SELECT_ID)}`;
505
+ }
506
+ function provideLuSelectLabelsAndIds() {
507
+ return [
508
+ { provide: SELECT_ID, useFactory: selectIdFactory },
509
+ { provide: SELECT_LABEL, useFactory: selectLabelFactory },
510
+ { provide: SELECT_LABEL_ID, useFactory: selectLabelIdFactory },
511
+ ];
512
+ }
513
+ class LuSelectOverlayContainer extends OverlayContainer {
514
+ constructor() {
515
+ super(inject(DOCUMENT), inject(Platform));
516
+ this.selectLabelId = inject(SELECT_LABEL_ID);
517
+ this.selectId = inject(SELECT_ID);
518
+ }
519
+ _createContainer() {
520
+ super._createContainer();
521
+ this._containerElement.setAttribute('aria-labelledby', this.selectLabelId);
522
+ this._containerElement.setAttribute('role', 'listbox');
523
+ this._containerElement.id = `lu-select-overlay-container-${this.selectId}`;
524
+ }
525
+ }
526
+ LuSelectOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuSelectOverlayContainer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
527
+ LuSelectOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuSelectOverlayContainer });
528
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuSelectOverlayContainer, decorators: [{
529
+ type: Injectable
530
+ }], ctorParameters: function () { return []; } });
531
+ function provideLuSelectOverlayContainer() {
532
+ return [
533
+ {
534
+ provide: OverlayContainer,
535
+ useClass: LuSelectOverlayContainer,
536
+ },
537
+ ];
538
+ }
539
+
540
+ /* eslint-disable @angular-eslint/no-output-on-prefix */
305
541
  class LuSimpleSelectInputComponent {
306
- constructor(positionBuilder, scrollStrategies, elementRef, injector, overlay, changeDetectorRef, overlayContainer, label, labelId) {
307
- this.positionBuilder = positionBuilder;
308
- this.scrollStrategies = scrollStrategies;
309
- this.elementRef = elementRef;
310
- this.injector = injector;
311
- this.overlay = overlay;
312
- this.changeDetectorRef = changeDetectorRef;
313
- this.label = label;
314
- this.labelId = labelId;
542
+ constructor() {
315
543
  this.tabindex = 0;
316
544
  this.placeholder = '';
317
- this.multiple = false;
318
545
  this.clearable = false;
319
546
  this.disabled = false;
320
- this.isPanelOpen = false;
547
+ this.isPanelOpen$ = new BehaviorSubject(false);
321
548
  this.role = 'combobox';
322
549
  this.overlayConfig = {
323
550
  hasBackdrop: true,
324
551
  backdropClass: 'cdk-overlay-transparent-backdrop',
325
552
  };
326
553
  this.optionComparer = (option1, option2) => JSON.stringify(option1) === JSON.stringify(option2);
554
+ this.optionTpl = LuSimpleSelectDefaultOptionComponent;
327
555
  this.clueChange = new EventEmitter();
328
556
  this.nextPage = new EventEmitter();
329
557
  this.previousPage = new EventEmitter();
330
558
  this.options$ = new ReplaySubject(1);
331
559
  this.loading$ = new ReplaySubject(1);
332
560
  this.clue = null;
333
- this.destroyed$ = new Subject();
334
- this.overlayContainerRef = overlayContainer.getContainerElement();
561
+ this.intl = getIntl(LU_SIMPLE_SELECT_TRANSLATIONS);
562
+ this.changeDetectorRef = inject(ChangeDetectorRef);
563
+ this.overlayContainerRef = inject(OverlayContainer).getContainerElement();
564
+ this.panelRefFactory = inject(LuSimpleSelectPanelRefFactory);
565
+ this.label = inject(SELECT_LABEL);
566
+ this.labelId = inject(SELECT_LABEL_ID);
335
567
  }
336
568
  get searchable() {
337
569
  return this.clueChange.observed;
@@ -339,6 +571,9 @@ class LuSimpleSelectInputComponent {
339
571
  get isFilled() {
340
572
  return this.value !== null && this.value !== undefined;
341
573
  }
574
+ get isPanelOpen() {
575
+ return this.isPanelOpen$.value;
576
+ }
342
577
  get ariaControls() {
343
578
  return this.overlayContainerRef.id;
344
579
  }
@@ -348,6 +583,13 @@ class LuSimpleSelectInputComponent {
348
583
  set options(options) {
349
584
  this.options$.next(options);
350
585
  }
586
+ get value() {
587
+ return this._value;
588
+ }
589
+ set value(value) {
590
+ this._value = value;
591
+ this.changeDetectorRef.markForCheck();
592
+ }
351
593
  onKeydown($event) {
352
594
  if (!this.isPanelOpen) {
353
595
  this.openPanel();
@@ -365,8 +607,7 @@ class LuSimpleSelectInputComponent {
365
607
  this.disabled = isDisabled;
366
608
  }
367
609
  ngOnDestroy() {
368
- this.destroyed$.next();
369
- this.destroyed$.complete();
610
+ this.panelRef?.close();
370
611
  }
371
612
  ngOnInit() {
372
613
  if (this.label) {
@@ -375,58 +616,22 @@ class LuSimpleSelectInputComponent {
375
616
  }
376
617
  clearValue(event) {
377
618
  event.stopPropagation();
378
- this.onChange?.(null);
379
- this.value = null;
619
+ this.updateValue(null);
380
620
  }
381
621
  openPanel() {
382
622
  if (this.isPanelOpen || this.disabled) {
383
623
  return;
384
624
  }
385
- const overlayConfig = this.overlayConfig || {};
386
- overlayConfig.positionStrategy = this.positionBuilder.flexibleConnectedTo(this.elementRef).withPositions([
387
- {
388
- originX: 'start',
389
- originY: 'bottom',
390
- overlayX: 'start',
391
- overlayY: 'top',
392
- },
393
- {
394
- originX: 'end',
395
- originY: 'bottom',
396
- overlayX: 'end',
397
- overlayY: 'top',
398
- },
399
- {
400
- originX: 'start',
401
- originY: 'top',
402
- overlayX: 'start',
403
- overlayY: 'bottom',
404
- },
405
- {
406
- originX: 'end',
407
- originY: 'top',
408
- overlayX: 'end',
409
- overlayY: 'bottom',
410
- },
411
- ]);
412
- overlayConfig.scrollStrategy = this.scrollStrategies.reposition();
413
- overlayConfig.minWidth = this.elementRef.nativeElement.clientWidth;
414
- overlayConfig.maxHeight = '100vh';
415
- overlayConfig.maxWidth = '100vw';
416
- const overlayRef = this.overlay.create(overlayConfig);
417
- this.isPanelOpen = true;
418
- this.panelRef = new SelectPanelRef(overlayRef, this.injector, {
625
+ this.isPanelOpen$.next(true);
626
+ this.panelRef = this.panelRefFactory.buildPanelRef({
419
627
  initialValue: this.value,
420
628
  optionComparer: this.optionComparer,
421
629
  options$: this.options$,
422
630
  loading$: this.loading$,
423
631
  searchable: this.searchable,
424
632
  optionTpl: this.optionTpl,
425
- });
426
- this.panelRef.valueChanged.subscribe((value) => {
427
- this.onChange?.(value);
428
- this.value = value;
429
- });
633
+ }, this.overlayConfig);
634
+ this.panelRef.valueChanged.subscribe((value) => this.updateValue(value));
430
635
  this.panelRef.nextPage.subscribe(() => this.nextPage.emit());
431
636
  this.panelRef.previousPage.subscribe(() => this.previousPage.emit());
432
637
  this.panelRef.clueChanged.subscribe((clue) => {
@@ -443,61 +648,47 @@ class LuSimpleSelectInputComponent {
443
648
  if (!this.isPanelOpen) {
444
649
  return;
445
650
  }
446
- this.isPanelOpen = false;
651
+ this.isPanelOpen$.next(false);
447
652
  this.panelRef.close();
448
653
  this.panelRef = undefined;
449
654
  }
450
655
  writeValue(value) {
451
656
  this.value = value;
452
657
  }
658
+ updateValue(value) {
659
+ this.value = value;
660
+ this.onChange?.(value);
661
+ this.onTouched?.();
662
+ }
453
663
  }
454
- LuSimpleSelectInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuSimpleSelectInputComponent, deps: [{ token: i2$1.OverlayPositionBuilder }, { token: i2$1.ScrollStrategyOptions }, { token: i0.ElementRef }, { token: i0.Injector }, { token: i2$1.Overlay }, { token: i0.ChangeDetectorRef }, { token: i2$1.OverlayContainer }, { token: SELECT_LABEL }, { token: SELECT_LABEL_ID }], target: i0.ɵɵFactoryTarget.Component });
455
- LuSimpleSelectInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: LuSimpleSelectInputComponent, isStandalone: true, selector: "lu-simple-select", inputs: { placeholder: "placeholder", multiple: "multiple", clearable: "clearable", disabled: "disabled", overlayConfig: "overlayConfig", loading: "loading", options: "options", optionComparer: "optionComparer", optionTpl: "optionTpl", valueTpl: "valueTpl" }, outputs: { clueChange: "clueChange", nextPage: "nextPage", previousPage: "previousPage" }, host: { listeners: { "keydown.space": "onKeydown($event)", "keydown.enter": "onKeydown($event)", "keydown.arrowDown": "onKeydown($event)", "click": "onKeydown($event)" }, properties: { "tabindex": "this.tabindex", "class.mod-multiple": "this.multiple", "class.is-clearable": "this.clearable", "class.is-disabled": "this.disabled", "class.is-filled": "this.isFilled", "class.is-focused": "this.isPanelOpen", "attr.aria-expanded": "this.isPanelOpen", "attr.role": "this.role", "attr.aria-activedescendant": "this.activeDescendant", "attr.aria-controls": "this.ariaControls" } }, providers: [
664
+ LuSimpleSelectInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuSimpleSelectInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
665
+ LuSimpleSelectInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: LuSimpleSelectInputComponent, isStandalone: true, selector: "lu-simple-select", inputs: { placeholder: "placeholder", clearable: "clearable", disabled: "disabled", overlayConfig: "overlayConfig", loading: "loading", options: "options", optionComparer: "optionComparer", optionTpl: "optionTpl", valueTpl: "valueTpl" }, outputs: { clueChange: "clueChange", nextPage: "nextPage", previousPage: "previousPage" }, host: { listeners: { "keydown.space": "onKeydown($event)", "keydown.enter": "onKeydown($event)", "keydown.arrowDown": "onKeydown($event)", "click": "onKeydown($event)" }, properties: { "tabindex": "this.tabindex", "class.is-clearable": "this.clearable", "class.is-disabled": "this.disabled", "class.is-filled": "this.isFilled", "class.is-focused": "this.isPanelOpen", "attr.aria-expanded": "this.isPanelOpen", "attr.role": "this.role", "attr.aria-activedescendant": "this.activeDescendant", "attr.aria-controls": "this.ariaControls" } }, providers: [
456
666
  {
457
667
  provide: NG_VALUE_ACCESSOR,
458
668
  useExisting: forwardRef(() => LuSimpleSelectInputComponent),
459
669
  multi: true,
460
670
  },
461
- {
462
- provide: OverlayContainer,
463
- useClass: LuSelectOverlayContainer,
464
- },
465
- { provide: SELECT_ID, useFactory: selectIdFactory },
466
- { provide: SELECT_LABEL, useFactory: selectLabelFactory, deps: [ElementRef] },
467
- { provide: SELECT_LABEL_ID, useFactory: selectLabelIdFactory, deps: [SELECT_LABEL, SELECT_ID] },
468
- ], ngImport: i0, template: "<div class=\"lu-select-placeholder\">{{ placeholder }}</div>\r\n<div class=\"lu-select-value\">\r\n\t<div class=\"lu-select-display-wrapper\">\r\n\t\t<ng-container *ngIf=\"isFilled\">\r\n\t\t\t<ng-container *ngTemplateOutlet=\"valueTpl || optionTpl; context: { $implicit: value }\"></ng-container>\r\n\t\t</ng-container>\r\n\t</div>\r\n</div>\r\n<div class=\"lu-select-suffix\">\r\n\t<a *ngIf=\"clearable && isFilled\" role=\"button\" class=\"actionIcon\" (click)=\"clearValue($event)\">\r\n\t\t<span aria-hidden=\"true\" class=\"lucca-icon\">thin_cross</span>\r\n\t\t<span class=\"u-mask\">Clear</span>\r\n\t</a>\r\n</div>\r\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: var(--spacings-L);--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: var(--commons-borderRadius-M);--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: var(--spacings-M)}:host{--components-select-default-palette-50: var(--palettes-primary-50);--components-select-default-palette-100: var(--palettes-primary-100);--components-select-default-palette-200: var(--palettes-primary-200);--components-select-default-palette-300: var(--palettes-primary-300);--components-select-default-palette-400: var(--palettes-primary-400);--components-select-default-palette-500: var(--palettes-primary-500);--components-select-default-palette-600: var(--palettes-primary-600);--components-select-default-palette-700: var(--palettes-primary-700);--components-select-default-palette-800: var(--palettes-primary-800);--components-select-default-palette-900: var(--palettes-primary-900);--components-select-chip-background: var(--palettes-primary-700);--components-select-chip-text: var(--colors-white-color);--components-select-input-padding-horizontal: var(--spacings-XS);--components-select-input-padding-vertical: var(--spacings-XS);--components-select-framed-color: var(--palettes-grey-500);--components-select-framed-color50: var(--palettes-grey-50);--components-select-framed-see-through: var(--palettes-grey-50);--components-select-framed-text: var(--palettes-grey-800);--components-select-framed-placeholder: #cccccc;--components-select-framed-side-padding: var(--spacings-S);--components-select-framed-top-padding: var(--spacings-L);--components-select-framed-bottom-padding: var(--spacings-S);--components-select-framed-label-top-offset: var(--spacings-XS);cursor:pointer;outline:none;padding:0}:host:after{display:inline-block;vertical-align:text-bottom;font-style:normal;font-family:Lucca icons;color:var(--palettes-700, var(--components-select-default-palette-700));bottom:var(--components-select-input-padding-vertical);font-size:1.2rem;line-height:1.4rem;pointer-events:none;position:absolute;right:var(--components-select-input-padding-horizontal)}@supports (content: \"*\"/\"\"){:host:after{content:\"\\e97c\"/\"\"}}@supports not (content: \"*\"/\"\"){:host:after{content:\"\\e97c\"}}:host[disabled]{cursor:not-allowed;pointer-events:all}:host.is-disabled{cursor:not-allowed;pointer-events:all}.lu-select-display-wrapper{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lu-select-value{line-height:var(--sizes-M-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-M-lineHeight));padding:var(--components-select-input-padding-vertical) 2.5rem var(--components-select-input-padding-vertical) var(--components-select-input-padding-horizontal);transition:all var(--commons-animations-durations-standard);display:none}.lu-select-placeholder{color:var(--palettes-400, var(--components-select-default-palette-400));line-height:var(--sizes-M-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-M-lineHeight));padding:var(--components-select-input-padding-vertical) 2.5rem var(--components-select-input-padding-vertical) var(--components-select-input-padding-horizontal);transition:all var(--commons-animations-durations-standard);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lu-select-suffix{position:absolute;bottom:var(--spacings-XS);right:1.6rem}::ng-deep .lu-select-value .label{padding:var(--spacings-XXS) var(--spacings-XS);margin-left:0}::ng-deep .lu-select-value .chip{background-color:var(--components-select-chip-background);color:var(--components-select-chip-text);vertical-align:baseline;max-width:100%;height:var(--sizes-M-lineHeight);line-height:var(--sizes-M-lineHeight);padding:0 var(--spacings-XS);margin:0 var(--spacings-XXS) var(--spacings-XXS) 0;text-overflow:ellipsis;overflow:hidden;vertical-align:top;white-space:nowrap}:host-context(.textfield.mod-S) .lu-select-value,:host-context(.textfield.mod-S) .lu-select-placeholder{font-size:var(--sizes-S-fontSize);line-height:var(--sizes-XS-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-XS-lineHeight))}:host-context(.textfield.mod-S):after{line-height:var(--sizes-XS-lineHeight)}:host-context(.textfield.mod-S) ::ng-deep .lu-select-value .label{font-size:var(--sizes-S-fontSize);line-height:var(--sizes-S-lineHeight);font-weight:600;margin:0;padding:0;background-color:transparent}:host-context(.textfield.mod-S) ::ng-deep .lu-select-value .chip{height:var(--sizes-XS-lineHeight);line-height:var(--sizes-XS-lineHeight);font-size:var(--sizes-XS-fontSize)}:host-context(.textfield.mod-framed).textfield-input,:host-context(.form.mod-framed).textfield-input{padding:var(--components-select-framed-top-padding) 0 0}:host-context(.textfield.mod-framed).textfield-input:after,:host-context(.form.mod-framed).textfield-input:after{color:var(--palettes-grey-500);bottom:var(--components-select-framed-bottom-padding);right:var(--spacings-XS)}:host-context(.textfield.mod-framed).textfield-input .lu-select-value,:host-context(.form.mod-framed).textfield-input .lu-select-value{padding:0 calc(var(--components-select-framed-side-padding) * 3) var(--components-select-framed-bottom-padding) var(--components-select-framed-side-padding)}:host-context(.textfield.mod-framed).textfield-input .lu-select-placeholder,:host-context(.form.mod-framed).textfield-input .lu-select-placeholder{color:var(--palettes-grey-400);padding:0 calc(var(--components-select-framed-side-padding) * 3) var(--components-select-framed-bottom-padding) var(--components-select-framed-side-padding)}:host-context(.textfield.mod-framed).textfield-input .lu-select-suffix,:host-context(.form.mod-framed).textfield-input .lu-select-suffix{bottom:var(--components-select-framed-bottom-padding);right:1.7rem}:host-context(.textfield.mod-filter) .lu-select-value,:host-context(.textfield.mod-filter) .lu-select-placeholder{padding:0;height:auto;padding-top:var(--spacings-S);color:var(--palettes-grey-800)}:host-context(.textfield.mod-filter) .lu-select-suffix{bottom:.4rem}:host-context(.textfield.mod-material):after{color:var(--palettes-grey-500);bottom:.6rem;right:0}:host-context(.textfield.mod-material) .lu-select-value,:host-context(.textfield.mod-material) .lu-select-placeholder{padding-left:0;padding-right:.8rem}:host-context(.textfield.mod-material) .lu-select-suffix{right:calc(2 * var(--components-select-input-padding-horizontal))}:host-context(.textfield.mod-material).is-select .lu-select-placeholder{display:none}:host-context(.textfield.mod-material).mod-search:after{bottom:0}:host-context(.textfield.mod-material).mod-search .lu-select-suffix{right:calc(2.75 * var(--components-select-input-padding-horizontal))}:host-context(.textfield.mod-material .textfield-input.is-focused) .lu-select-placeholder{display:none}:host(.mod-multiple) .lu-select-value{height:auto;align-items:center}:host(.mod-multiple) .lu-select-display-wrapper{overflow:hidden;white-space:normal;margin-bottom:calc(var(--spacings-XXS) * -1)}:host-context(.textfield.mod-outlined).textfield-input:after{color:var(--palettes-grey-600)}:host-context(.textfield.mod-outlined).textfield-input .lu-select-placeholder{color:var(--palettes-grey-400)}:host-context(.textfield.mod-outlined) :host-context(.textfield-input.is-error):after{color:var(--palettes-error-600)}:host-context(.textfield.mod-outlined) :host-context(.textfield-input.is-error) .lu-select-placeholder{color:var(--palettes-error-400)}:host-context(.textfield-input.is-filled) .lu-select-placeholder{display:none}:host-context(.textfield-input.is-filled) .lu-select-value{display:flex;align-items:start}:host-context(.textfield-input.is-clearable) .lu-select-value{padding-right:2.5rem}:host-context(.textfield-input.is-error):after{color:var(--palettes-error-700)}:host-context(.textfield-input.is-error) .lu-select-placeholder{color:var(--palettes-error-400)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]):after{color:var(--commons-disabled-color)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]) .lu-select-placeholder{color:var(--commons-disabled-placeholder)}:host{display:none;vertical-align:text-bottom}:host-context(.textfield-input.is-filled){display:inline-block}.actionIcon{height:1rem;width:1rem;padding:0;color:var(--palettes-700, var(--components-select-default-palette-700))}.actionIcon:hover{background-color:var(--palettes-50, var(--components-select-default-palette-50));color:var(--palettes-800, var(--components-select-default-palette-800))}.actionIcon:focus{background-color:var(--palettes-50, var(--components-select-default-palette-50));box-shadow:0 2px 8px rgba(var(--colors-grey-900-rgb),.04),0 1px 2px rgba(var(--colors-grey-900-rgb),.06),0 0 0 4px var(--palettes-200, var(--components-select-default-palette-200))}.lucca-icon{display:block;font-size:var(--sizes-M-fontSize)}:host-context(.textfield.mod-material) .actionIcon{color:var(--palettes-grey-500)}:host-context(.textfield.mod-framed) .actionIcon{color:var(--palettes-grey-500)}:host-context(.textfield-input.is-error) .actionIcon{color:var(--palettes-error-700)}:host-context(.textfield-input.is-error) .actionIcon:hover{background-color:var(--palettes-error-50);color:var(--palettes-error-800)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]){display:none}:host.is-disabled{display:inline-block!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: OverlayModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
671
+ provideLuSelectOverlayContainer(),
672
+ provideLuSelectLabelsAndIds(),
673
+ LuSimpleSelectPanelRefFactory,
674
+ ], ngImport: i0, template: "<div class=\"lu-select-placeholder\">{{ placeholder }}</div>\r\n<div class=\"lu-select-value\">\r\n\t<div class=\"lu-select-display-wrapper\">\r\n\t\t<ng-container *luOptionOutlet=\"valueTpl || optionTpl; value: value\"></ng-container>\r\n\t</div>\r\n</div>\r\n<div class=\"lu-select-suffix\">\r\n\t<a *ngIf=\"clearable && isFilled\" role=\"button\" class=\"actionIcon\" (click)=\"clearValue($event)\">\r\n\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-thinCross\"></span>\r\n\t\t<span class=\"u-mask\">{{ intl.clear }}</span>\r\n\t</a>\r\n</div>\r\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: var(--spacings-L);--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: var(--commons-borderRadius-M);--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: var(--spacings-M)}:host{--components-select-chip-background: var(--palettes-primary-700);--components-select-chip-text: var(--colors-white-color);--components-select-input-padding-horizontal: var(--spacings-XS);--components-select-input-padding-vertical: var(--spacings-XS);--components-select-framed-color: var(--palettes-grey-500);--components-select-framed-color50: var(--palettes-grey-50);--components-select-framed-see-through: var(--palettes-grey-50);--components-select-framed-text: var(--palettes-grey-800);--components-select-framed-placeholder: #cccccc;--components-select-framed-side-padding: var(--spacings-S);--components-select-framed-top-padding: var(--spacings-L);--components-select-framed-bottom-padding: var(--spacings-S);--components-select-framed-label-top-offset: var(--spacings-XS);cursor:pointer;outline:none;padding:0}:host:after{display:inline-block;vertical-align:text-bottom;font-style:normal;font-family:Lucca icons;color:var(--palettes-700, var(--palettes-primary-700));bottom:var(--components-select-input-padding-vertical);font-size:1.2rem;line-height:1.4rem;pointer-events:none;position:absolute;right:var(--components-select-input-padding-horizontal)}@supports (content: \"*\"/\"\"){:host:after{content:\"\\e97c\"/\"\"}}@supports not (content: \"*\"/\"\"){:host:after{content:\"\\e97c\"}}:host[disabled]{cursor:not-allowed;pointer-events:all}:host.is-disabled{cursor:not-allowed;pointer-events:all}.lu-select-display-wrapper{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lu-select-value{line-height:var(--sizes-M-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-M-lineHeight));padding:var(--components-select-input-padding-vertical) 3rem var(--components-select-input-padding-vertical) var(--components-select-input-padding-horizontal);transition:all var(--commons-animations-durations-standard);display:none}.lu-select-placeholder{color:var(--palettes-400, var(--palettes-primary-400));line-height:var(--sizes-M-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-M-lineHeight));padding:var(--components-select-input-padding-vertical) 3rem var(--components-select-input-padding-vertical) var(--components-select-input-padding-horizontal);transition:all var(--commons-animations-durations-standard);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lu-select-suffix{position:absolute;bottom:var(--spacings-XS);right:1.6rem}::ng-deep .lu-select-value .label{padding:var(--spacings-XXS) var(--spacings-XS);margin-left:0}::ng-deep .lu-select-value .chip{background-color:var(--components-select-chip-background);color:var(--components-select-chip-text);vertical-align:baseline;max-width:100%;height:var(--sizes-M-lineHeight);line-height:var(--sizes-M-lineHeight);padding:0 var(--spacings-XS);margin:0 var(--spacings-XXS) var(--spacings-XXS) 0;text-overflow:ellipsis;overflow:hidden;vertical-align:top;white-space:nowrap}:host-context(.textfield.mod-S) .lu-select-value,:host-context(.textfield.mod-S) .lu-select-placeholder{font-size:var(--sizes-S-fontSize);line-height:var(--sizes-XS-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-XS-lineHeight))}:host-context(.textfield.mod-S):after{line-height:var(--sizes-XS-lineHeight)}:host-context(.textfield.mod-S) ::ng-deep .lu-select-value .label{font-size:var(--sizes-S-fontSize);line-height:var(--sizes-S-lineHeight);font-weight:600;margin:0;padding:0;background-color:transparent}:host-context(.textfield.mod-S) ::ng-deep .lu-select-value .chip{height:var(--sizes-XS-lineHeight);line-height:var(--sizes-XS-lineHeight);font-size:var(--sizes-XS-fontSize)}:host-context(.textfield.mod-framed).textfield-input,:host-context(.form.mod-framed).textfield-input{padding:var(--components-select-framed-top-padding) 0 0}:host-context(.textfield.mod-framed).textfield-input:after,:host-context(.form.mod-framed).textfield-input:after{color:var(--palettes-grey-500);bottom:var(--components-select-framed-bottom-padding);right:var(--spacings-XS)}:host-context(.textfield.mod-framed).textfield-input .lu-select-value,:host-context(.form.mod-framed).textfield-input .lu-select-value{padding:0 calc(var(--components-select-framed-side-padding) * 3) var(--components-select-framed-bottom-padding) var(--components-select-framed-side-padding)}:host-context(.textfield.mod-framed).textfield-input .lu-select-placeholder,:host-context(.form.mod-framed).textfield-input .lu-select-placeholder{color:var(--palettes-grey-400);padding:0 calc(var(--components-select-framed-side-padding) * 3) var(--components-select-framed-bottom-padding) var(--components-select-framed-side-padding)}:host-context(.textfield.mod-framed).textfield-input .lu-select-suffix,:host-context(.form.mod-framed).textfield-input .lu-select-suffix{bottom:var(--components-select-framed-bottom-padding);right:1.7rem}:host-context(.textfield.mod-filter) .lu-select-value,:host-context(.textfield.mod-filter) .lu-select-placeholder{padding:0;height:auto;padding-top:var(--spacings-S);color:var(--palettes-grey-800)}:host-context(.textfield.mod-filter) .lu-select-suffix{bottom:.4rem}:host-context(.textfield.mod-material):after{color:var(--palettes-grey-500);bottom:.6rem;right:0}:host-context(.textfield.mod-material) .lu-select-value,:host-context(.textfield.mod-material) .lu-select-placeholder{padding-left:0;padding-right:.8rem}:host-context(.textfield.mod-material) .lu-select-suffix{right:calc(2 * var(--components-select-input-padding-horizontal))}:host-context(.textfield.mod-material).is-select .lu-select-placeholder{display:none}:host-context(.textfield.mod-material).mod-search:after{bottom:0}:host-context(.textfield.mod-material).mod-search .lu-select-suffix{right:calc(2.75 * var(--components-select-input-padding-horizontal))}:host-context(.textfield.mod-material .textfield-input.is-focused) .lu-select-placeholder{display:none}:host(.mod-multiple) .lu-select-value{height:auto;align-items:center}:host(.mod-multiple) .lu-select-display-wrapper{overflow:hidden;white-space:normal;margin-bottom:calc(var(--spacings-XXS) * -1)}:host-context(.textfield.mod-outlined).textfield-input:after{color:var(--palettes-grey-600)}:host-context(.textfield.mod-outlined).textfield-input .lu-select-placeholder{color:var(--palettes-grey-400)}:host-context(.textfield.mod-outlined) :host-context(.textfield-input.is-error):after{color:var(--palettes-error-600)}:host-context(.textfield.mod-outlined) :host-context(.textfield-input.is-error) .lu-select-placeholder{color:var(--palettes-error-400)}:host-context(.textfield-input.is-filled) .lu-select-placeholder{display:none}:host-context(.textfield-input.is-filled) .lu-select-value{display:flex;align-items:start}:host-context(.textfield-input.is-clearable) .lu-select-value{padding-right:3rem}:host-context(.textfield-input.is-error):after{color:var(--palettes-error-700)}:host-context(.textfield-input.is-error) .lu-select-placeholder{color:var(--palettes-error-400)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]):after{color:var(--commons-disabled-color)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]) .lu-select-placeholder{color:var(--commons-disabled-placeholder)}:host{display:none}:host-context(.textfield-input.is-filled){display:inline-block}.actionIcon{height:1.5rem;width:1.5rem;padding:0;color:var(--palettes-700, var(--palettes-primary-700))}.actionIcon:hover{background-color:var(--palettes-50, var(--palettes-primary-50));color:var(--palettes-800, var(--palettes-primary-800))}.actionIcon:focus{background-color:var(--palettes-50, var(--palettes-primary-50));box-shadow:0 2px 8px rgba(var(--colors-grey-900-rgb),.04),0 1px 2px rgba(var(--colors-grey-900-rgb),.06),0 0 0 4px var(--palettes-200, var(--palettes-primary-200))}:host-context(.textfield.mod-outlined) .actionIcon{color:var(--palettes-grey-700)}:host-context(.textfield.mod-outlined) .actionIcon:hover{background-color:var(--palettes-grey-50);color:var(--palettes-grey-800)}:host-context(.textfield.mod-outlined) .actionIcon:focus{background-color:var(--palettes-grey-50);box-shadow:0 2px 8px rgba(var(--colors-grey-900-rgb),.04),0 1px 2px rgba(var(--colors-grey-900-rgb),.06),0 0 0 4px var(--palettes-grey-200)}.lucca-icon{display:block}:host-context(.textfield.mod-material) .actionIcon{color:var(--palettes-grey-500)}:host-context(.textfield.mod-framed) .actionIcon{color:var(--palettes-grey-500)}:host-context(.textfield-input.is-error) .actionIcon{color:var(--palettes-error-700)}:host-context(.textfield-input.is-error) .actionIcon:hover{background-color:var(--palettes-error-50);color:var(--palettes-error-800)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]){display:none}:host.is-disabled{display:inline-block!important}\n"], dependencies: [{ kind: "directive", type: LuOptionOutletDirective, selector: "[luOptionOutlet]", inputs: ["luOptionOutlet", "luOptionOutletValue"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: OverlayModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
469
675
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: LuSimpleSelectInputComponent, decorators: [{
470
676
  type: Component,
471
- args: [{ selector: 'lu-simple-select', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, OverlayModule], providers: [
677
+ args: [{ selector: 'lu-simple-select', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [AsyncPipe, LuOptionOutletDirective, NgIf, OverlayModule], providers: [
472
678
  {
473
679
  provide: NG_VALUE_ACCESSOR,
474
680
  useExisting: forwardRef(() => LuSimpleSelectInputComponent),
475
681
  multi: true,
476
682
  },
477
- {
478
- provide: OverlayContainer,
479
- useClass: LuSelectOverlayContainer,
480
- },
481
- { provide: SELECT_ID, useFactory: selectIdFactory },
482
- { provide: SELECT_LABEL, useFactory: selectLabelFactory, deps: [ElementRef] },
483
- { provide: SELECT_LABEL_ID, useFactory: selectLabelIdFactory, deps: [SELECT_LABEL, SELECT_ID] },
484
- ], template: "<div class=\"lu-select-placeholder\">{{ placeholder }}</div>\r\n<div class=\"lu-select-value\">\r\n\t<div class=\"lu-select-display-wrapper\">\r\n\t\t<ng-container *ngIf=\"isFilled\">\r\n\t\t\t<ng-container *ngTemplateOutlet=\"valueTpl || optionTpl; context: { $implicit: value }\"></ng-container>\r\n\t\t</ng-container>\r\n\t</div>\r\n</div>\r\n<div class=\"lu-select-suffix\">\r\n\t<a *ngIf=\"clearable && isFilled\" role=\"button\" class=\"actionIcon\" (click)=\"clearValue($event)\">\r\n\t\t<span aria-hidden=\"true\" class=\"lucca-icon\">thin_cross</span>\r\n\t\t<span class=\"u-mask\">Clear</span>\r\n\t</a>\r\n</div>\r\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: var(--spacings-L);--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: var(--commons-borderRadius-M);--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: var(--spacings-M)}:host{--components-select-default-palette-50: var(--palettes-primary-50);--components-select-default-palette-100: var(--palettes-primary-100);--components-select-default-palette-200: var(--palettes-primary-200);--components-select-default-palette-300: var(--palettes-primary-300);--components-select-default-palette-400: var(--palettes-primary-400);--components-select-default-palette-500: var(--palettes-primary-500);--components-select-default-palette-600: var(--palettes-primary-600);--components-select-default-palette-700: var(--palettes-primary-700);--components-select-default-palette-800: var(--palettes-primary-800);--components-select-default-palette-900: var(--palettes-primary-900);--components-select-chip-background: var(--palettes-primary-700);--components-select-chip-text: var(--colors-white-color);--components-select-input-padding-horizontal: var(--spacings-XS);--components-select-input-padding-vertical: var(--spacings-XS);--components-select-framed-color: var(--palettes-grey-500);--components-select-framed-color50: var(--palettes-grey-50);--components-select-framed-see-through: var(--palettes-grey-50);--components-select-framed-text: var(--palettes-grey-800);--components-select-framed-placeholder: #cccccc;--components-select-framed-side-padding: var(--spacings-S);--components-select-framed-top-padding: var(--spacings-L);--components-select-framed-bottom-padding: var(--spacings-S);--components-select-framed-label-top-offset: var(--spacings-XS);cursor:pointer;outline:none;padding:0}:host:after{display:inline-block;vertical-align:text-bottom;font-style:normal;font-family:Lucca icons;color:var(--palettes-700, var(--components-select-default-palette-700));bottom:var(--components-select-input-padding-vertical);font-size:1.2rem;line-height:1.4rem;pointer-events:none;position:absolute;right:var(--components-select-input-padding-horizontal)}@supports (content: \"*\"/\"\"){:host:after{content:\"\\e97c\"/\"\"}}@supports not (content: \"*\"/\"\"){:host:after{content:\"\\e97c\"}}:host[disabled]{cursor:not-allowed;pointer-events:all}:host.is-disabled{cursor:not-allowed;pointer-events:all}.lu-select-display-wrapper{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lu-select-value{line-height:var(--sizes-M-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-M-lineHeight));padding:var(--components-select-input-padding-vertical) 2.5rem var(--components-select-input-padding-vertical) var(--components-select-input-padding-horizontal);transition:all var(--commons-animations-durations-standard);display:none}.lu-select-placeholder{color:var(--palettes-400, var(--components-select-default-palette-400));line-height:var(--sizes-M-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-M-lineHeight));padding:var(--components-select-input-padding-vertical) 2.5rem var(--components-select-input-padding-vertical) var(--components-select-input-padding-horizontal);transition:all var(--commons-animations-durations-standard);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lu-select-suffix{position:absolute;bottom:var(--spacings-XS);right:1.6rem}::ng-deep .lu-select-value .label{padding:var(--spacings-XXS) var(--spacings-XS);margin-left:0}::ng-deep .lu-select-value .chip{background-color:var(--components-select-chip-background);color:var(--components-select-chip-text);vertical-align:baseline;max-width:100%;height:var(--sizes-M-lineHeight);line-height:var(--sizes-M-lineHeight);padding:0 var(--spacings-XS);margin:0 var(--spacings-XXS) var(--spacings-XXS) 0;text-overflow:ellipsis;overflow:hidden;vertical-align:top;white-space:nowrap}:host-context(.textfield.mod-S) .lu-select-value,:host-context(.textfield.mod-S) .lu-select-placeholder{font-size:var(--sizes-S-fontSize);line-height:var(--sizes-XS-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-XS-lineHeight))}:host-context(.textfield.mod-S):after{line-height:var(--sizes-XS-lineHeight)}:host-context(.textfield.mod-S) ::ng-deep .lu-select-value .label{font-size:var(--sizes-S-fontSize);line-height:var(--sizes-S-lineHeight);font-weight:600;margin:0;padding:0;background-color:transparent}:host-context(.textfield.mod-S) ::ng-deep .lu-select-value .chip{height:var(--sizes-XS-lineHeight);line-height:var(--sizes-XS-lineHeight);font-size:var(--sizes-XS-fontSize)}:host-context(.textfield.mod-framed).textfield-input,:host-context(.form.mod-framed).textfield-input{padding:var(--components-select-framed-top-padding) 0 0}:host-context(.textfield.mod-framed).textfield-input:after,:host-context(.form.mod-framed).textfield-input:after{color:var(--palettes-grey-500);bottom:var(--components-select-framed-bottom-padding);right:var(--spacings-XS)}:host-context(.textfield.mod-framed).textfield-input .lu-select-value,:host-context(.form.mod-framed).textfield-input .lu-select-value{padding:0 calc(var(--components-select-framed-side-padding) * 3) var(--components-select-framed-bottom-padding) var(--components-select-framed-side-padding)}:host-context(.textfield.mod-framed).textfield-input .lu-select-placeholder,:host-context(.form.mod-framed).textfield-input .lu-select-placeholder{color:var(--palettes-grey-400);padding:0 calc(var(--components-select-framed-side-padding) * 3) var(--components-select-framed-bottom-padding) var(--components-select-framed-side-padding)}:host-context(.textfield.mod-framed).textfield-input .lu-select-suffix,:host-context(.form.mod-framed).textfield-input .lu-select-suffix{bottom:var(--components-select-framed-bottom-padding);right:1.7rem}:host-context(.textfield.mod-filter) .lu-select-value,:host-context(.textfield.mod-filter) .lu-select-placeholder{padding:0;height:auto;padding-top:var(--spacings-S);color:var(--palettes-grey-800)}:host-context(.textfield.mod-filter) .lu-select-suffix{bottom:.4rem}:host-context(.textfield.mod-material):after{color:var(--palettes-grey-500);bottom:.6rem;right:0}:host-context(.textfield.mod-material) .lu-select-value,:host-context(.textfield.mod-material) .lu-select-placeholder{padding-left:0;padding-right:.8rem}:host-context(.textfield.mod-material) .lu-select-suffix{right:calc(2 * var(--components-select-input-padding-horizontal))}:host-context(.textfield.mod-material).is-select .lu-select-placeholder{display:none}:host-context(.textfield.mod-material).mod-search:after{bottom:0}:host-context(.textfield.mod-material).mod-search .lu-select-suffix{right:calc(2.75 * var(--components-select-input-padding-horizontal))}:host-context(.textfield.mod-material .textfield-input.is-focused) .lu-select-placeholder{display:none}:host(.mod-multiple) .lu-select-value{height:auto;align-items:center}:host(.mod-multiple) .lu-select-display-wrapper{overflow:hidden;white-space:normal;margin-bottom:calc(var(--spacings-XXS) * -1)}:host-context(.textfield.mod-outlined).textfield-input:after{color:var(--palettes-grey-600)}:host-context(.textfield.mod-outlined).textfield-input .lu-select-placeholder{color:var(--palettes-grey-400)}:host-context(.textfield.mod-outlined) :host-context(.textfield-input.is-error):after{color:var(--palettes-error-600)}:host-context(.textfield.mod-outlined) :host-context(.textfield-input.is-error) .lu-select-placeholder{color:var(--palettes-error-400)}:host-context(.textfield-input.is-filled) .lu-select-placeholder{display:none}:host-context(.textfield-input.is-filled) .lu-select-value{display:flex;align-items:start}:host-context(.textfield-input.is-clearable) .lu-select-value{padding-right:2.5rem}:host-context(.textfield-input.is-error):after{color:var(--palettes-error-700)}:host-context(.textfield-input.is-error) .lu-select-placeholder{color:var(--palettes-error-400)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]):after{color:var(--commons-disabled-color)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]) .lu-select-placeholder{color:var(--commons-disabled-placeholder)}:host{display:none;vertical-align:text-bottom}:host-context(.textfield-input.is-filled){display:inline-block}.actionIcon{height:1rem;width:1rem;padding:0;color:var(--palettes-700, var(--components-select-default-palette-700))}.actionIcon:hover{background-color:var(--palettes-50, var(--components-select-default-palette-50));color:var(--palettes-800, var(--components-select-default-palette-800))}.actionIcon:focus{background-color:var(--palettes-50, var(--components-select-default-palette-50));box-shadow:0 2px 8px rgba(var(--colors-grey-900-rgb),.04),0 1px 2px rgba(var(--colors-grey-900-rgb),.06),0 0 0 4px var(--palettes-200, var(--components-select-default-palette-200))}.lucca-icon{display:block;font-size:var(--sizes-M-fontSize)}:host-context(.textfield.mod-material) .actionIcon{color:var(--palettes-grey-500)}:host-context(.textfield.mod-framed) .actionIcon{color:var(--palettes-grey-500)}:host-context(.textfield-input.is-error) .actionIcon{color:var(--palettes-error-700)}:host-context(.textfield-input.is-error) .actionIcon:hover{background-color:var(--palettes-error-50);color:var(--palettes-error-800)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]){display:none}:host.is-disabled{display:inline-block!important}\n"] }]
485
- }], ctorParameters: function () { return [{ type: i2$1.OverlayPositionBuilder }, { type: i2$1.ScrollStrategyOptions }, { type: i0.ElementRef }, { type: i0.Injector }, { type: i2$1.Overlay }, { type: i0.ChangeDetectorRef }, { type: i2$1.OverlayContainer }, { type: undefined, decorators: [{
486
- type: Inject,
487
- args: [SELECT_LABEL]
488
- }] }, { type: undefined, decorators: [{
489
- type: Inject,
490
- args: [SELECT_LABEL_ID]
491
- }] }]; }, propDecorators: { tabindex: [{
683
+ provideLuSelectOverlayContainer(),
684
+ provideLuSelectLabelsAndIds(),
685
+ LuSimpleSelectPanelRefFactory,
686
+ ], template: "<div class=\"lu-select-placeholder\">{{ placeholder }}</div>\r\n<div class=\"lu-select-value\">\r\n\t<div class=\"lu-select-display-wrapper\">\r\n\t\t<ng-container *luOptionOutlet=\"valueTpl || optionTpl; value: value\"></ng-container>\r\n\t</div>\r\n</div>\r\n<div class=\"lu-select-suffix\">\r\n\t<a *ngIf=\"clearable && isFilled\" role=\"button\" class=\"actionIcon\" (click)=\"clearValue($event)\">\r\n\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-thinCross\"></span>\r\n\t\t<span class=\"u-mask\">{{ intl.clear }}</span>\r\n\t</a>\r\n</div>\r\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: var(--spacings-L);--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: var(--commons-borderRadius-M);--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: var(--spacings-M)}:host{--components-select-chip-background: var(--palettes-primary-700);--components-select-chip-text: var(--colors-white-color);--components-select-input-padding-horizontal: var(--spacings-XS);--components-select-input-padding-vertical: var(--spacings-XS);--components-select-framed-color: var(--palettes-grey-500);--components-select-framed-color50: var(--palettes-grey-50);--components-select-framed-see-through: var(--palettes-grey-50);--components-select-framed-text: var(--palettes-grey-800);--components-select-framed-placeholder: #cccccc;--components-select-framed-side-padding: var(--spacings-S);--components-select-framed-top-padding: var(--spacings-L);--components-select-framed-bottom-padding: var(--spacings-S);--components-select-framed-label-top-offset: var(--spacings-XS);cursor:pointer;outline:none;padding:0}:host:after{display:inline-block;vertical-align:text-bottom;font-style:normal;font-family:Lucca icons;color:var(--palettes-700, var(--palettes-primary-700));bottom:var(--components-select-input-padding-vertical);font-size:1.2rem;line-height:1.4rem;pointer-events:none;position:absolute;right:var(--components-select-input-padding-horizontal)}@supports (content: \"*\"/\"\"){:host:after{content:\"\\e97c\"/\"\"}}@supports not (content: \"*\"/\"\"){:host:after{content:\"\\e97c\"}}:host[disabled]{cursor:not-allowed;pointer-events:all}:host.is-disabled{cursor:not-allowed;pointer-events:all}.lu-select-display-wrapper{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lu-select-value{line-height:var(--sizes-M-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-M-lineHeight));padding:var(--components-select-input-padding-vertical) 3rem var(--components-select-input-padding-vertical) var(--components-select-input-padding-horizontal);transition:all var(--commons-animations-durations-standard);display:none}.lu-select-placeholder{color:var(--palettes-400, var(--palettes-primary-400));line-height:var(--sizes-M-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-M-lineHeight));padding:var(--components-select-input-padding-vertical) 3rem var(--components-select-input-padding-vertical) var(--components-select-input-padding-horizontal);transition:all var(--commons-animations-durations-standard);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lu-select-suffix{position:absolute;bottom:var(--spacings-XS);right:1.6rem}::ng-deep .lu-select-value .label{padding:var(--spacings-XXS) var(--spacings-XS);margin-left:0}::ng-deep .lu-select-value .chip{background-color:var(--components-select-chip-background);color:var(--components-select-chip-text);vertical-align:baseline;max-width:100%;height:var(--sizes-M-lineHeight);line-height:var(--sizes-M-lineHeight);padding:0 var(--spacings-XS);margin:0 var(--spacings-XXS) var(--spacings-XXS) 0;text-overflow:ellipsis;overflow:hidden;vertical-align:top;white-space:nowrap}:host-context(.textfield.mod-S) .lu-select-value,:host-context(.textfield.mod-S) .lu-select-placeholder{font-size:var(--sizes-S-fontSize);line-height:var(--sizes-XS-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-XS-lineHeight))}:host-context(.textfield.mod-S):after{line-height:var(--sizes-XS-lineHeight)}:host-context(.textfield.mod-S) ::ng-deep .lu-select-value .label{font-size:var(--sizes-S-fontSize);line-height:var(--sizes-S-lineHeight);font-weight:600;margin:0;padding:0;background-color:transparent}:host-context(.textfield.mod-S) ::ng-deep .lu-select-value .chip{height:var(--sizes-XS-lineHeight);line-height:var(--sizes-XS-lineHeight);font-size:var(--sizes-XS-fontSize)}:host-context(.textfield.mod-framed).textfield-input,:host-context(.form.mod-framed).textfield-input{padding:var(--components-select-framed-top-padding) 0 0}:host-context(.textfield.mod-framed).textfield-input:after,:host-context(.form.mod-framed).textfield-input:after{color:var(--palettes-grey-500);bottom:var(--components-select-framed-bottom-padding);right:var(--spacings-XS)}:host-context(.textfield.mod-framed).textfield-input .lu-select-value,:host-context(.form.mod-framed).textfield-input .lu-select-value{padding:0 calc(var(--components-select-framed-side-padding) * 3) var(--components-select-framed-bottom-padding) var(--components-select-framed-side-padding)}:host-context(.textfield.mod-framed).textfield-input .lu-select-placeholder,:host-context(.form.mod-framed).textfield-input .lu-select-placeholder{color:var(--palettes-grey-400);padding:0 calc(var(--components-select-framed-side-padding) * 3) var(--components-select-framed-bottom-padding) var(--components-select-framed-side-padding)}:host-context(.textfield.mod-framed).textfield-input .lu-select-suffix,:host-context(.form.mod-framed).textfield-input .lu-select-suffix{bottom:var(--components-select-framed-bottom-padding);right:1.7rem}:host-context(.textfield.mod-filter) .lu-select-value,:host-context(.textfield.mod-filter) .lu-select-placeholder{padding:0;height:auto;padding-top:var(--spacings-S);color:var(--palettes-grey-800)}:host-context(.textfield.mod-filter) .lu-select-suffix{bottom:.4rem}:host-context(.textfield.mod-material):after{color:var(--palettes-grey-500);bottom:.6rem;right:0}:host-context(.textfield.mod-material) .lu-select-value,:host-context(.textfield.mod-material) .lu-select-placeholder{padding-left:0;padding-right:.8rem}:host-context(.textfield.mod-material) .lu-select-suffix{right:calc(2 * var(--components-select-input-padding-horizontal))}:host-context(.textfield.mod-material).is-select .lu-select-placeholder{display:none}:host-context(.textfield.mod-material).mod-search:after{bottom:0}:host-context(.textfield.mod-material).mod-search .lu-select-suffix{right:calc(2.75 * var(--components-select-input-padding-horizontal))}:host-context(.textfield.mod-material .textfield-input.is-focused) .lu-select-placeholder{display:none}:host(.mod-multiple) .lu-select-value{height:auto;align-items:center}:host(.mod-multiple) .lu-select-display-wrapper{overflow:hidden;white-space:normal;margin-bottom:calc(var(--spacings-XXS) * -1)}:host-context(.textfield.mod-outlined).textfield-input:after{color:var(--palettes-grey-600)}:host-context(.textfield.mod-outlined).textfield-input .lu-select-placeholder{color:var(--palettes-grey-400)}:host-context(.textfield.mod-outlined) :host-context(.textfield-input.is-error):after{color:var(--palettes-error-600)}:host-context(.textfield.mod-outlined) :host-context(.textfield-input.is-error) .lu-select-placeholder{color:var(--palettes-error-400)}:host-context(.textfield-input.is-filled) .lu-select-placeholder{display:none}:host-context(.textfield-input.is-filled) .lu-select-value{display:flex;align-items:start}:host-context(.textfield-input.is-clearable) .lu-select-value{padding-right:3rem}:host-context(.textfield-input.is-error):after{color:var(--palettes-error-700)}:host-context(.textfield-input.is-error) .lu-select-placeholder{color:var(--palettes-error-400)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]):after{color:var(--commons-disabled-color)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]) .lu-select-placeholder{color:var(--commons-disabled-placeholder)}:host{display:none}:host-context(.textfield-input.is-filled){display:inline-block}.actionIcon{height:1.5rem;width:1.5rem;padding:0;color:var(--palettes-700, var(--palettes-primary-700))}.actionIcon:hover{background-color:var(--palettes-50, var(--palettes-primary-50));color:var(--palettes-800, var(--palettes-primary-800))}.actionIcon:focus{background-color:var(--palettes-50, var(--palettes-primary-50));box-shadow:0 2px 8px rgba(var(--colors-grey-900-rgb),.04),0 1px 2px rgba(var(--colors-grey-900-rgb),.06),0 0 0 4px var(--palettes-200, var(--palettes-primary-200))}:host-context(.textfield.mod-outlined) .actionIcon{color:var(--palettes-grey-700)}:host-context(.textfield.mod-outlined) .actionIcon:hover{background-color:var(--palettes-grey-50);color:var(--palettes-grey-800)}:host-context(.textfield.mod-outlined) .actionIcon:focus{background-color:var(--palettes-grey-50);box-shadow:0 2px 8px rgba(var(--colors-grey-900-rgb),.04),0 1px 2px rgba(var(--colors-grey-900-rgb),.06),0 0 0 4px var(--palettes-grey-200)}.lucca-icon{display:block}:host-context(.textfield.mod-material) .actionIcon{color:var(--palettes-grey-500)}:host-context(.textfield.mod-framed) .actionIcon{color:var(--palettes-grey-500)}:host-context(.textfield-input.is-error) .actionIcon{color:var(--palettes-error-700)}:host-context(.textfield-input.is-error) .actionIcon:hover{background-color:var(--palettes-error-50);color:var(--palettes-error-800)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]){display:none}:host.is-disabled{display:inline-block!important}\n"] }]
687
+ }], propDecorators: { tabindex: [{
492
688
  type: HostBinding,
493
689
  args: ['tabindex']
494
690
  }], placeholder: [{
495
691
  type: Input
496
- }], multiple: [{
497
- type: Input
498
- }, {
499
- type: HostBinding,
500
- args: ['class.mod-multiple']
501
692
  }], clearable: [{
502
693
  type: Input
503
694
  }, {
@@ -566,5 +757,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImpor
566
757
  * Generated bundle index. Do not edit.
567
758
  */
568
759
 
569
- export { LuDisplayerDirective, LuOptionComponent, LuOptionDirective, LuSelectPanelComponent, LuSelectPanelRef, LuSimpleSelectInputComponent };
760
+ export { LU_SIMPLE_SELECT_TRANSLATIONS, LuDisabledOptionDirective, LuDisplayerDirective, LuOptionDirective, LuSelectPanelComponent, LuSelectPanelRef, LuSimpleSelectDefaultOptionComponent, LuSimpleSelectInputComponent, luSimpleSelectTranslations, LuOptionComponent as ɵLuOptionComponent };
570
761
  //# sourceMappingURL=lucca-front-ng-simple-select.mjs.map