@lucca-front/ng 17.2.0 → 17.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/button/button.component.d.ts +1 -2
  2. package/callout/callout-feedback-list/callout-feedback-list.component.d.ts +1 -2
  3. package/core/public-api.d.ts +1 -1
  4. package/core/tools/class.d.ts +11 -0
  5. package/core-select/api/api-v3.directive.d.ts +25 -0
  6. package/core-select/api/api-v4.directive.d.ts +22 -0
  7. package/core-select/api/api.directive.d.ts +31 -0
  8. package/core-select/api/index.d.ts +5 -0
  9. package/core-select/api/public-api.d.ts +3 -0
  10. package/core-select/input/select-input.component.d.ts +3 -3
  11. package/core-select/option/option.component.d.ts +1 -0
  12. package/esm2022/button/button.component.mjs +7 -8
  13. package/esm2022/callout/callout-feedback-list/callout-feedback-list.component.mjs +6 -7
  14. package/esm2022/core/public-api.mjs +2 -2
  15. package/esm2022/core/tools/class.mjs +75 -0
  16. package/esm2022/core-select/api/api-v3.directive.mjs +62 -0
  17. package/esm2022/core-select/api/api-v4.directive.mjs +56 -0
  18. package/esm2022/core-select/api/api.directive.mjs +46 -0
  19. package/esm2022/core-select/api/lucca-front-ng-core-select-api.mjs +5 -0
  20. package/esm2022/core-select/api/public-api.mjs +4 -0
  21. package/esm2022/core-select/input/select-input.component.mjs +13 -12
  22. package/esm2022/core-select/option/option.component.mjs +5 -4
  23. package/esm2022/empty-state/empty-state-page/empty-state-page.component.mjs +3 -3
  24. package/esm2022/empty-state/empty-state-section/empty-state-section.component.mjs +3 -3
  25. package/esm2022/establishment/select/establishment-select.token.mjs +4 -0
  26. package/esm2022/establishment/select/input/establishment-select-input.component.mjs +13 -16
  27. package/esm2022/establishment/select/legal-unit-selector/legal-unit-selector.directive.mjs +9 -10
  28. package/esm2022/establishment/select/searcher/establishment-searcher.component.mjs +9 -10
  29. package/esm2022/establishment/select/select-all/establishment-select-all.component.mjs +9 -10
  30. package/esm2022/form-field/form-field.component.mjs +11 -10
  31. package/esm2022/icon/icon.component.mjs +3 -3
  32. package/esm2022/inline-message/inline-message.component.mjs +7 -8
  33. package/esm2022/multi-select/displayer/default-displayer.component.mjs +4 -2
  34. package/esm2022/multi-select/input/panel-ref.factory.mjs +6 -6
  35. package/esm2022/multi-select/input/select-input.component.mjs +3 -10
  36. package/esm2022/multi-select/panel/panel.component.mjs +18 -18
  37. package/esm2022/multi-select/select.model.mjs +2 -2
  38. package/esm2022/numeric-badge/numeric-badge.component.mjs +7 -8
  39. package/esm2022/option/item/option-item.component.mjs +3 -3
  40. package/esm2022/option/item/tree-option-item.component.mjs +3 -3
  41. package/esm2022/simple-select/api/api-v3.directive.mjs +6 -62
  42. package/esm2022/simple-select/api/api-v4.directive.mjs +6 -56
  43. package/esm2022/simple-select/api/api.directive.mjs +6 -40
  44. package/esm2022/simple-select/input/panel-ref.factory.mjs +7 -7
  45. package/esm2022/simple-select/input/select-input.component.mjs +2 -9
  46. package/esm2022/simple-select/panel/option-selected.pipe.mjs +17 -0
  47. package/esm2022/simple-select/panel/panel.component.mjs +21 -20
  48. package/esm2022/simple-select/select.model.mjs +2 -2
  49. package/establishment/select/establishment-select.token.d.ts +4 -0
  50. package/establishment/select/input/establishment-select-input.component.d.ts +2 -2
  51. package/establishment/select/legal-unit-selector/legal-unit-selector.directive.d.ts +2 -2
  52. package/establishment/select/searcher/establishment-searcher.component.d.ts +2 -2
  53. package/establishment/select/select-all/establishment-select-all.component.d.ts +2 -2
  54. package/fesm2022/lucca-front-ng-button.mjs +6 -7
  55. package/fesm2022/lucca-front-ng-button.mjs.map +1 -1
  56. package/fesm2022/lucca-front-ng-callout.mjs +5 -6
  57. package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
  58. package/fesm2022/lucca-front-ng-core-select-api.mjs +162 -0
  59. package/fesm2022/lucca-front-ng-core-select-api.mjs.map +1 -0
  60. package/fesm2022/lucca-front-ng-core-select.mjs +16 -14
  61. package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
  62. package/fesm2022/lucca-front-ng-core.mjs +72 -22
  63. package/fesm2022/lucca-front-ng-core.mjs.map +1 -1
  64. package/fesm2022/lucca-front-ng-empty-state.mjs +4 -4
  65. package/fesm2022/lucca-front-ng-empty-state.mjs.map +1 -1
  66. package/fesm2022/lucca-front-ng-establishment.mjs +32 -39
  67. package/fesm2022/lucca-front-ng-establishment.mjs.map +1 -1
  68. package/fesm2022/lucca-front-ng-form-field.mjs +10 -9
  69. package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
  70. package/fesm2022/lucca-front-ng-icon.mjs +2 -2
  71. package/fesm2022/lucca-front-ng-icon.mjs.map +1 -1
  72. package/fesm2022/lucca-front-ng-inline-message.mjs +6 -7
  73. package/fesm2022/lucca-front-ng-inline-message.mjs.map +1 -1
  74. package/fesm2022/lucca-front-ng-multi-select.mjs +26 -31
  75. package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
  76. package/fesm2022/lucca-front-ng-numeric-badge.mjs +6 -7
  77. package/fesm2022/lucca-front-ng-numeric-badge.mjs.map +1 -1
  78. package/fesm2022/lucca-front-ng-option.mjs +4 -4
  79. package/fesm2022/lucca-front-ng-option.mjs.map +1 -1
  80. package/fesm2022/lucca-front-ng-simple-select-api.mjs +13 -146
  81. package/fesm2022/lucca-front-ng-simple-select-api.mjs.map +1 -1
  82. package/fesm2022/lucca-front-ng-simple-select.mjs +40 -32
  83. package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
  84. package/form-field/form-field.component.d.ts +1 -2
  85. package/inline-message/inline-message.component.d.ts +1 -2
  86. package/multi-select/input/panel-ref.factory.d.ts +2 -2
  87. package/multi-select/panel/panel.component.d.ts +5 -5
  88. package/multi-select/select.model.d.ts +3 -12
  89. package/numeric-badge/numeric-badge.component.d.ts +1 -2
  90. package/package.json +26 -20
  91. package/simple-select/api/api-v3.directive.d.ts +5 -25
  92. package/simple-select/api/api-v4.directive.d.ts +5 -22
  93. package/simple-select/api/api.directive.d.ts +5 -32
  94. package/simple-select/input/panel-ref.factory.d.ts +2 -2
  95. package/simple-select/panel/option-selected.pipe.d.ts +7 -0
  96. package/simple-select/panel/panel.component.d.ts +5 -5
  97. package/simple-select/select.model.d.ts +3 -12
  98. package/src/definitions/option/_option-item.scss +1 -0
  99. package/core/tools/ng-clazz.directive.d.ts +0 -9
  100. package/esm2022/core/tools/ng-clazz.directive.mjs +0 -26
@@ -9,7 +9,7 @@ import { getIntl } from '@lucca-front/ng/core';
9
9
  import { LuSelectPanelRef, SELECT_ID, ɵgenerateGroups, ɵLuOptionComponent, ɵLuOptionOutletDirective, ALuSelectInputComponent, provideLuSelectOverlayContainer, provideLuSelectLabelsAndIds, LU_OPTION_CONTEXT } from '@lucca-front/ng/core-select';
10
10
  import { InputDirective } from '@lucca-front/ng/form-field';
11
11
  import { LuTooltipModule } from '@lucca-front/ng/tooltip';
12
- import { skip, map as map$1 } from 'rxjs/operators';
12
+ import { skip, switchMap, map as map$1 } from 'rxjs/operators';
13
13
  import { IconComponent } from '@lucca-front/ng/icon';
14
14
  import { map, EMPTY, asyncScheduler, observeOn, filter, take, takeUntil, Subject } from 'rxjs';
15
15
  import { Overlay, OverlayPositionBuilder, ScrollStrategyOptions } from '@angular/cdk/overlay';
@@ -85,7 +85,7 @@ const luMultiSelectTranslations = {
85
85
  class LuMultiSelectPanelRef extends LuSelectPanelRef {
86
86
  }
87
87
 
88
- const MULTI_SELECT_PANEL_DATA = new InjectionToken('MultiSelectPanelData');
88
+ const MULTI_SELECT_INPUT = new InjectionToken('MultiSelectInput');
89
89
 
90
90
  class LuIsOptionSelectedPipe {
91
91
  transform(option, comparer, selectedOptions) {
@@ -128,17 +128,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
128
128
 
129
129
  class LuMultiSelectPanelComponent {
130
130
  constructor() {
131
- this.panelData = inject(MULTI_SELECT_PANEL_DATA);
131
+ this.selectInput = inject(MULTI_SELECT_INPUT);
132
132
  this.panelRef = inject(LuMultiSelectPanelRef);
133
133
  this.selectId = inject(SELECT_ID);
134
134
  this.intl = getIntl(LU_MULTI_SELECT_TRANSLATIONS);
135
- this.options$ = this.panelData.options$;
136
- this.groups$ = this.panelData.grouping ? this.panelData.options$.pipe(map((options) => ɵgenerateGroups(options, this.panelData.grouping.selector))) : EMPTY;
137
- this.grouping = this.panelData.grouping;
138
- this.loading$ = this.panelData.loading$;
139
- this.optionComparer = this.panelData.optionComparer;
140
- this.selectedOptions = this.panelData.initialValue || [];
141
- this.optionTpl = this.panelData.optionTpl;
135
+ this.options$ = this.selectInput.options$;
136
+ this.grouping = this.selectInput.grouping;
137
+ this.groups$ = this.grouping ? this.options$.pipe(map((options) => ɵgenerateGroups(options, this.grouping.selector))) : EMPTY;
138
+ this.loading$ = this.selectInput.loading$;
139
+ this.optionComparer = this.selectInput.optionComparer;
140
+ this.selectedOptions = this.selectInput.value || [];
141
+ this.optionTpl = this.selectInput.optionTpl;
142
142
  }
143
143
  get keyManager() {
144
144
  return this._keyManager;
@@ -181,33 +181,33 @@ class LuMultiSelectPanelComponent {
181
181
  /**
182
182
  * On new options, we want to select the first element with key manager
183
183
  */
184
- this.options$
185
- ?.pipe(observeOn(asyncScheduler),
186
- // Skip first so we don't override "select currently active", we only want new options anyways
187
- skip(1), takeUntil(this.panelRef.closed))
188
- .subscribe(() => this.keyManager.setFirstItemActive());
184
+ if (this.selectInput.searchable) {
185
+ this.selectInput.clueChange
186
+ .pipe(switchMap(() => this.options$.pipe(skip(1), take(1))), takeUntil(this.panelRef.closed))
187
+ .subscribe(() => this.keyManager.setFirstItemActive());
188
+ }
189
189
  this.keyManager.setFirstItemActive();
190
190
  }
191
191
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: LuMultiSelectPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
192
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: LuMultiSelectPanelComponent, isStandalone: true, selector: "lu-select-panel", viewQueries: [{ propertyName: "optionsQL", predicate: ɵLuOptionComponent, descendants: true }], ngImport: i0, template: "<div class=\"lu-picker-panel lu-option-picker-panel mod-multiple\" role=\"dialog\" *ngIf=\"{ options: options$ | async } as ctx\">\n\t<div\n\t\tclass=\"lu-picker-content\"\n\t\t[class.is-loading]=\"loading$ | async\"\n\t\t[class.is-filled]=\"ctx.options.length > 0\"\n\t\ttabindex=\"0\"\n\t\trole=\"listbox\"\n\t\taria-multiselectable=\"true\"\n\t\t(scroll)=\"onScroll($event)\"\n\t>\n\t\t<div class=\"lu-picker-content-option\">\n\t\t\t<ng-container *ngIf=\"grouping\">\n\t\t\t\t<div\n\t\t\t\t\t*ngFor=\"let group of groups$ | async\"\n\t\t\t\t\tclass=\"lu-picker-content-group\"\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\t[attr.aria-labelledby]=\"selectId + '-group-' + group.key\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"lu-picker-content-option-group-title\" role=\"presentation\" [id]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"grouping.templateRef\" [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-template>\n\t\t\t\t\t</span>\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: group.options }\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<ng-container *ngIf=\"!grouping\">\n\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: ctx.options }\"></ng-template>\n\t\t\t</ng-container>\n\n\t\t\t<ng-template #optionsList let-options>\n\t\t\t\t<lu-select-option\n\t\t\t\t\t*ngFor=\"let option of options; let index = index\"\n\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t[optionTpl]=\"optionTpl\"\n\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected:optionComparer:selectedOptions\"\n\t\t\t\t\t(click)=\"toggleOption(option)\"\n\t\t\t\t/>\n\t\t\t</ng-template>\n\t\t\t<div class=\"lu-picker-content-option-emptyState\" *ngIf=\"ctx.options.length === 0\">{{intl.emptyResults}}</div>\n\t\t</div>\n\t\t<div *ngIf=\"loading$ | async\" class=\"lu-picker-content-loading\">\n\t\t\t<div class=\"loading\"></div>\n\t\t\t<span>{{intl.loading}}</span>\n\t\t</div>\n\t</div>\n\t<!--<div class=\"lu-picker-content-add\">\n\t\t<button class=\"button mod-text mod-icon palette-primary\" type=\"button\">\n\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-mathsPlus\"></span>Add a new supplier\n\t\t</button>\n\t</div>-->\n</div>\n", styles: [".optionItem-groupKey{padding:var(--components-options-item-padding-vertical) var(--components-options-item-padding-horizontal) var(--spacings-XXS);font-size:var(--sizes-S-fontSize);line-height:var(--sizes-S-lineHeight);width:100%;text-align:left;color:var(--palettes-grey-600);margin:0}\n"], dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: LuIsOptionSelectedPipe, name: "luIsOptionSelected" }, { 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", "scrollIntoViewOptions"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
192
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: LuMultiSelectPanelComponent, isStandalone: true, selector: "lu-select-panel", viewQueries: [{ propertyName: "optionsQL", predicate: ɵLuOptionComponent, descendants: true }], ngImport: i0, template: "<div class=\"lu-picker-panel lu-option-picker-panel mod-multiple\" role=\"dialog\" *ngIf=\"{ options: options$ | async } as ctx\">\n\t<div\n\t\tclass=\"lu-picker-content\"\n\t\t[class.is-loading]=\"loading$ | async\"\n\t\t[class.is-filled]=\"ctx.options.length > 0\"\n\t\ttabindex=\"0\"\n\t\trole=\"listbox\"\n\t\taria-multiselectable=\"true\"\n\t\t(scroll)=\"onScroll($event)\"\n\t>\n\t\t<div class=\"lu-picker-content-option\">\n\t\t\t<ng-container *ngIf=\"grouping\">\n\t\t\t\t<div\n\t\t\t\t\t*ngFor=\"let group of groups$ | async\"\n\t\t\t\t\tclass=\"lu-picker-content-group\"\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\t[attr.aria-labelledby]=\"selectId + '-group-' + group.key\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"lu-picker-content-option-group-title\" role=\"presentation\" [id]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"grouping.templateRef\" [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-template>\n\t\t\t\t\t</span>\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: group.options }\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<ng-container *ngIf=\"!grouping\">\n\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: ctx.options }\"></ng-template>\n\t\t\t</ng-container>\n\n\t\t\t<ng-template #optionsList let-options>\n\t\t\t\t<lu-select-option\n\t\t\t\t\t*ngFor=\"let option of options; let index = index\"\n\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t[optionTpl]=\"optionTpl\"\n\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected:optionComparer:selectedOptions\"\n\t\t\t\t\t(click)=\"toggleOption(option)\"\n\t\t\t\t/>\n\t\t\t</ng-template>\n\t\t\t<div class=\"lu-picker-content-option-emptyState\" *ngIf=\"ctx.options.length === 0 && (loading$ | async) === false\">\n\t\t\t\t{{intl.emptyResults}}\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"loading$ | async\" class=\"lu-picker-content-loading\">\n\t\t\t<div class=\"loading\"></div>\n\t\t\t<span>{{intl.loading}}</span>\n\t\t</div>\n\t</div>\n\t<!--<div class=\"lu-picker-content-add\">\n\t\t<button class=\"button mod-text mod-icon palette-primary\" type=\"button\">\n\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-mathsPlus\"></span>Add a new supplier\n\t\t</button>\n\t</div>-->\n</div>\n", styles: [".optionItem-groupKey{padding:var(--components-options-item-padding-vertical) var(--components-options-item-padding-horizontal) var(--spacings-XXS);font-size:var(--sizes-S-fontSize);line-height:var(--sizes-S-lineHeight);width:100%;text-align:left;color:var(--palettes-grey-600);margin:0}\n"], dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: LuIsOptionSelectedPipe, name: "luIsOptionSelected" }, { 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", "scrollIntoViewOptions"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
193
193
  }
194
194
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: LuMultiSelectPanelComponent, decorators: [{
195
195
  type: Component,
196
- args: [{ selector: 'lu-select-panel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [A11yModule, AsyncPipe, FormsModule, LuIsOptionSelectedPipe, NgIf, NgFor, ɵLuOptionComponent, ɵLuOptionOutletDirective, ɵLuMultiSelectSelectedChipDirective, NgTemplateOutlet], template: "<div class=\"lu-picker-panel lu-option-picker-panel mod-multiple\" role=\"dialog\" *ngIf=\"{ options: options$ | async } as ctx\">\n\t<div\n\t\tclass=\"lu-picker-content\"\n\t\t[class.is-loading]=\"loading$ | async\"\n\t\t[class.is-filled]=\"ctx.options.length > 0\"\n\t\ttabindex=\"0\"\n\t\trole=\"listbox\"\n\t\taria-multiselectable=\"true\"\n\t\t(scroll)=\"onScroll($event)\"\n\t>\n\t\t<div class=\"lu-picker-content-option\">\n\t\t\t<ng-container *ngIf=\"grouping\">\n\t\t\t\t<div\n\t\t\t\t\t*ngFor=\"let group of groups$ | async\"\n\t\t\t\t\tclass=\"lu-picker-content-group\"\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\t[attr.aria-labelledby]=\"selectId + '-group-' + group.key\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"lu-picker-content-option-group-title\" role=\"presentation\" [id]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"grouping.templateRef\" [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-template>\n\t\t\t\t\t</span>\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: group.options }\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<ng-container *ngIf=\"!grouping\">\n\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: ctx.options }\"></ng-template>\n\t\t\t</ng-container>\n\n\t\t\t<ng-template #optionsList let-options>\n\t\t\t\t<lu-select-option\n\t\t\t\t\t*ngFor=\"let option of options; let index = index\"\n\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t[optionTpl]=\"optionTpl\"\n\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected:optionComparer:selectedOptions\"\n\t\t\t\t\t(click)=\"toggleOption(option)\"\n\t\t\t\t/>\n\t\t\t</ng-template>\n\t\t\t<div class=\"lu-picker-content-option-emptyState\" *ngIf=\"ctx.options.length === 0\">{{intl.emptyResults}}</div>\n\t\t</div>\n\t\t<div *ngIf=\"loading$ | async\" class=\"lu-picker-content-loading\">\n\t\t\t<div class=\"loading\"></div>\n\t\t\t<span>{{intl.loading}}</span>\n\t\t</div>\n\t</div>\n\t<!--<div class=\"lu-picker-content-add\">\n\t\t<button class=\"button mod-text mod-icon palette-primary\" type=\"button\">\n\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-mathsPlus\"></span>Add a new supplier\n\t\t</button>\n\t</div>-->\n</div>\n", styles: [".optionItem-groupKey{padding:var(--components-options-item-padding-vertical) var(--components-options-item-padding-horizontal) var(--spacings-XXS);font-size:var(--sizes-S-fontSize);line-height:var(--sizes-S-lineHeight);width:100%;text-align:left;color:var(--palettes-grey-600);margin:0}\n"] }]
196
+ args: [{ selector: 'lu-select-panel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [A11yModule, AsyncPipe, FormsModule, LuIsOptionSelectedPipe, NgIf, NgFor, ɵLuOptionComponent, ɵLuOptionOutletDirective, ɵLuMultiSelectSelectedChipDirective, NgTemplateOutlet], template: "<div class=\"lu-picker-panel lu-option-picker-panel mod-multiple\" role=\"dialog\" *ngIf=\"{ options: options$ | async } as ctx\">\n\t<div\n\t\tclass=\"lu-picker-content\"\n\t\t[class.is-loading]=\"loading$ | async\"\n\t\t[class.is-filled]=\"ctx.options.length > 0\"\n\t\ttabindex=\"0\"\n\t\trole=\"listbox\"\n\t\taria-multiselectable=\"true\"\n\t\t(scroll)=\"onScroll($event)\"\n\t>\n\t\t<div class=\"lu-picker-content-option\">\n\t\t\t<ng-container *ngIf=\"grouping\">\n\t\t\t\t<div\n\t\t\t\t\t*ngFor=\"let group of groups$ | async\"\n\t\t\t\t\tclass=\"lu-picker-content-group\"\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\t[attr.aria-labelledby]=\"selectId + '-group-' + group.key\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"lu-picker-content-option-group-title\" role=\"presentation\" [id]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"grouping.templateRef\" [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-template>\n\t\t\t\t\t</span>\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: group.options }\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<ng-container *ngIf=\"!grouping\">\n\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: ctx.options }\"></ng-template>\n\t\t\t</ng-container>\n\n\t\t\t<ng-template #optionsList let-options>\n\t\t\t\t<lu-select-option\n\t\t\t\t\t*ngFor=\"let option of options; let index = index\"\n\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t[optionTpl]=\"optionTpl\"\n\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected:optionComparer:selectedOptions\"\n\t\t\t\t\t(click)=\"toggleOption(option)\"\n\t\t\t\t/>\n\t\t\t</ng-template>\n\t\t\t<div class=\"lu-picker-content-option-emptyState\" *ngIf=\"ctx.options.length === 0 && (loading$ | async) === false\">\n\t\t\t\t{{intl.emptyResults}}\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"loading$ | async\" class=\"lu-picker-content-loading\">\n\t\t\t<div class=\"loading\"></div>\n\t\t\t<span>{{intl.loading}}</span>\n\t\t</div>\n\t</div>\n\t<!--<div class=\"lu-picker-content-add\">\n\t\t<button class=\"button mod-text mod-icon palette-primary\" type=\"button\">\n\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-mathsPlus\"></span>Add a new supplier\n\t\t</button>\n\t</div>-->\n</div>\n", styles: [".optionItem-groupKey{padding:var(--components-options-item-padding-vertical) var(--components-options-item-padding-horizontal) var(--spacings-XXS);font-size:var(--sizes-S-fontSize);line-height:var(--sizes-S-lineHeight);width:100%;text-align:left;color:var(--palettes-grey-600);margin:0}\n"] }]
197
197
  }], propDecorators: { optionsQL: [{
198
198
  type: ViewChildren,
199
199
  args: [ɵLuOptionComponent]
200
200
  }] } });
201
201
 
202
202
  class MultiSelectPanelRef extends LuMultiSelectPanelRef {
203
- constructor(overlayRef, parentInjector, panelData, defaultPositionStrategy) {
203
+ constructor(overlayRef, parentInjector, selectInput, defaultPositionStrategy) {
204
204
  super();
205
205
  this.overlayRef = overlayRef;
206
206
  this.defaultPositionStrategy = defaultPositionStrategy;
207
207
  const injector = Injector.create({
208
208
  providers: [
209
209
  { provide: LuMultiSelectPanelRef, useValue: this },
210
- { provide: MULTI_SELECT_PANEL_DATA, useValue: panelData },
210
+ { provide: MULTI_SELECT_INPUT, useValue: selectInput },
211
211
  ],
212
212
  parent: parentInjector,
213
213
  });
@@ -253,12 +253,12 @@ class LuMultiSelectPanelRefFactory {
253
253
  this.scrollStrategies = inject(ScrollStrategyOptions);
254
254
  this.parentInjector = inject(Injector);
255
255
  }
256
- buildPanelRef(panelData, defaultOverlayConfigOverride = {}) {
256
+ buildPanelRef(selectInput, defaultOverlayConfigOverride = {}) {
257
257
  const defaultOverlayConfig = this.buildDefaultOverlayConfig(defaultOverlayConfigOverride);
258
258
  const overlayRef = this.overlay.create(defaultOverlayConfig);
259
259
  overlayRef.hostElement.style.transitionProperty = 'height';
260
260
  overlayRef.hostElement.style.transitionDuration = 'var(--commons-animations-durations-standard)';
261
- return new MultiSelectPanelRef(overlayRef, this.parentInjector, panelData, defaultOverlayConfig.positionStrategy);
261
+ return new MultiSelectPanelRef(overlayRef, this.parentInjector, selectInput, defaultOverlayConfig.positionStrategy);
262
262
  }
263
263
  buildDefaultOverlayConfig(overlayConfigOverride = {}) {
264
264
  const overlayConfig = { ...overlayConfigOverride };
@@ -323,7 +323,7 @@ class LuMultiSelectInputComponent extends ALuSelectInputComponent {
323
323
  return this._panelRef;
324
324
  }
325
325
  focusInput() {
326
- this.focusInput$.next();
326
+ this.focusInput$.next({ keepClue: true });
327
327
  }
328
328
  emptyClue() {
329
329
  this.emptyClue$.next();
@@ -339,14 +339,7 @@ class LuMultiSelectInputComponent extends ALuSelectInputComponent {
339
339
  }
340
340
  }
341
341
  buildPanelRef() {
342
- return this.panelRefFactory.buildPanelRef({
343
- initialValue: this.value,
344
- optionComparer: this.optionComparer,
345
- options$: this.options$,
346
- loading$: this.loading$,
347
- optionTpl: this.optionTpl,
348
- grouping: this.grouping,
349
- }, this.overlayConfig);
342
+ return this.panelRefFactory.buildPanelRef(this, this.overlayConfig);
350
343
  }
351
344
  bindInputToPanelRefEvents() {
352
345
  if (!this.panelRef) {
@@ -489,7 +482,7 @@ class LuMultiSelectDefaultDisplayerComponent {
489
482
  inputBackspace() {
490
483
  if (this.value.length > 0 && this.inputElementRef.nativeElement.value.length === 0) {
491
484
  this.unselectOption(this.value[this.value.length - 1]);
492
- this.select.panelRef.updateSelectedOptions(this.value);
485
+ this.select.panelRef?.updateSelectedOptions(this.value);
493
486
  }
494
487
  }
495
488
  ngOnInit() {
@@ -516,6 +509,7 @@ class LuMultiSelectDefaultDisplayerComponent {
516
509
  [attr.aria-activedescendant]="select.activeDescendant$ | async"
517
510
  [attr.aria-controls]="ariaControls"
518
511
  [disabled]="select.disabled"
512
+ [readonly]="!select.searchable"
519
513
  #inputElement
520
514
  ngModel
521
515
  (ngModelChange)="select.clueChanged($event)"
@@ -546,6 +540,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
546
540
  [attr.aria-activedescendant]="select.activeDescendant$ | async"
547
541
  [attr.aria-controls]="ariaControls"
548
542
  [disabled]="select.disabled"
543
+ [readonly]="!select.searchable"
549
544
  #inputElement
550
545
  ngModel
551
546
  (ngModelChange)="select.clueChanged($event)"
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-multi-select.mjs","sources":["../../../packages/ng/multi-select/select.translate.ts","../../../packages/ng/multi-select/input/panel.model.ts","../../../packages/ng/multi-select/select.model.ts","../../../packages/ng/multi-select/panel/option-selected.pipe.ts","../../../packages/ng/multi-select/panel/selected-chip.directive.ts","../../../packages/ng/multi-select/panel/panel.component.ts","../../../packages/ng/multi-select/panel/panel.component.html","../../../packages/ng/multi-select/input/panel-ref.factory.ts","../../../packages/ng/multi-select/input/select-input.component.ts","../../../packages/ng/multi-select/input/select-input.component.html","../../../packages/ng/multi-select/displayer/default-displayer.translate.ts","../../../packages/ng/multi-select/displayer/default-displayer.component.ts","../../../packages/ng/multi-select/displayer/displayer.directive.ts","../../../packages/ng/multi-select/displayer/displayer-input.directive.ts","../../../packages/ng/multi-select/lucca-front-ng-multi-select.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { ILuTranslation } from '@lucca-front/ng/core';\n\nexport const LU_MULTI_SELECT_TRANSLATIONS = new InjectionToken('LuMultiSelectTranslations', {\n\tfactory: () => luMultiSelectTranslations,\n});\n\nexport interface ILuMultiSelectLabel {\n\tplaceholder: string;\n\tsearch: string;\n\tclear: string;\n\tclearSearch: string;\n\temptyResults: string;\n\temptySelection: string;\n\texpand: string;\n\treduce: string;\n\tselectAll: string;\n\tloading: string;\n}\n\nexport const luMultiSelectTranslations: ILuTranslation<ILuMultiSelectLabel> = {\n\ten: {\n\t\tplaceholder: 'Select an option',\n\t\tsearch: 'Search',\n\t\tclear: 'Clear selection',\n\t\tclearSearch: 'Clear search',\n\t\temptyResults: 'No results',\n\t\temptySelection: 'Select items in the left list to start',\n\t\texpand: 'Expand',\n\t\treduce: 'Reduce',\n\t\tselectAll: 'Select all',\n\t\tloading: 'Loading...',\n\t},\n\tfr: {\n\t\tplaceholder: 'Sélectionnez une option',\n\t\tsearch: 'Rechercher',\n\t\tclear: 'Vider la sélection',\n\t\tclearSearch: 'Vider la recherche',\n\t\temptySelection: 'Sélectionnez les éléments dans la liste de gauche pour commencer',\n\t\temptyResults: 'Aucun résultat pour votre recherche',\n\t\texpand: 'Étendre',\n\t\treduce: 'Réduire',\n\t\tselectAll: 'Tout sélectionner',\n\t\tloading: 'Chargement en cours...',\n\t},\n\tde: {\n\t\tplaceholder: 'Wählen Sie eine Option',\n\t\tsearch: 'Suche',\n\t\tclear: 'Auswahl löschen',\n\t\tclearSearch: 'Suche löschen',\n\t\temptyResults: 'Keine Ergebnisse für Ihre Suche',\n\t\temptySelection: 'Wählen Sie Elemente in der linken Liste aus, um zu beginnen',\n\t\texpand: 'Erweitern',\n\t\treduce: 'Reduzieren',\n\t\tselectAll: 'Alles auswählen',\n\t\tloading: 'Wird geladen...',\n\t},\n\tes: {\n\t\tplaceholder: 'Seleccione una opción',\n\t\tsearch: 'Buscar',\n\t\tclear: 'Borrar selección',\n\t\tclearSearch: 'Borrar búsqueda',\n\t\temptyResults: 'No hay resultados para su búsqueda',\n\t\temptySelection: 'Seleccione elementos en la lista de la izquierda para comenzar',\n\t\texpand: 'Expandir',\n\t\treduce: 'Reducir',\n\t\tselectAll: 'Seleccionar todo',\n\t\tloading: 'Cargando...',\n\t},\n\tpt: {\n\t\tplaceholder: 'Selecione uma opção',\n\t\tsearch: 'Pesquisar',\n\t\tclear: 'Limpar seleção',\n\t\tclearSearch: 'Limpar pesquisa',\n\t\temptyResults: 'Nenhum resultado para sua pesquisa',\n\t\temptySelection: 'Selecione itens na lista à esquerda para começar',\n\t\texpand: 'Expandir',\n\t\treduce: 'Reduzir',\n\t\tselectAll: 'Selecionar tudo',\n\t\tloading: 'Carregando...',\n\t},\n};\n","import { LuSelectPanelRef } from '@lucca-front/ng/core-select';\n\nexport abstract class LuMultiSelectPanelRef<T> extends LuSelectPanelRef<T, T[]> {\n\tabstract updateSelectedOptions(selectedOptions: T[]): void;\n\n\tabstract useDefaultPosition(): void;\n\n\tabstract updatePosition(): void;\n}\n","import { InjectionToken, TemplateRef, Type } from '@angular/core';\nimport { LuOptionContext, LuOptionGroupDirective } from '@lucca-front/ng/core-select';\nimport { Observable } from 'rxjs';\n\nexport interface ILuMultiSelectPanelData<T> {\n\toptions$: Observable<T[]>;\n\tloading$: Observable<boolean>;\n\toptionComparer: (option1: T, option2: T) => boolean;\n\tinitialValue: T[] | undefined;\n\toptionTpl: TemplateRef<LuOptionContext<T>> | Type<unknown>;\n\tgrouping?: LuOptionGroupDirective<T, T[], unknown>;\n}\n\nexport const MULTI_SELECT_PANEL_DATA = new InjectionToken<ILuMultiSelectPanelData<unknown>>('MultiSelectPanelData');\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'luIsOptionSelected',\n\tstandalone: true,\n})\nexport class LuIsOptionSelectedPipe implements PipeTransform {\n\ttransform<T>(option: T, comparer: (option1: T, option2: T) => boolean, selectedOptions: T[]): boolean {\n\t\treturn selectedOptions.some((selectedOption) => comparer(option, selectedOption));\n\t}\n}\n","import { Highlightable } from '@angular/cdk/a11y';\nimport { Directive, ElementRef, Input, inject } from '@angular/core';\n\n@Directive({\n\tstandalone: true,\n\tselector: '[luMultiSelectSelectedChip]',\n})\nexport class ɵLuMultiSelectSelectedChipDirective<T> implements Highlightable {\n\t@Input('luMultiSelectSelectedChip') option?: T;\n\n\telementRef = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n\tsetActiveStyles(): void {\n\t\tthis.elementRef.querySelector('button').focus();\n\t}\n\tsetInactiveStyles(): void {\n\t\t// Nothing to do\n\t}\n}\n","import { A11yModule, ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, QueryList, ViewChildren, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { SELECT_ID, ɵLuOptionComponent, ɵLuOptionOutletDirective, ɵgenerateGroups } from '@lucca-front/ng/core-select';\nimport { EMPTY, asyncScheduler, filter, map, observeOn, take, takeUntil } from 'rxjs';\nimport { skip } from 'rxjs/operators';\nimport { LuMultiSelectPanelRef } from '../input/panel.model';\nimport { ILuMultiSelectPanelData, MULTI_SELECT_PANEL_DATA } from '../select.model';\nimport { LU_MULTI_SELECT_TRANSLATIONS } from '../select.translate';\nimport { LuIsOptionSelectedPipe } from './option-selected.pipe';\nimport { ɵLuMultiSelectSelectedChipDirective } from './selected-chip.directive';\n\n@Component({\n\tselector: 'lu-select-panel',\n\ttemplateUrl: './panel.component.html',\n\tstyleUrls: ['./panel.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [A11yModule, AsyncPipe, FormsModule, LuIsOptionSelectedPipe, NgIf, NgFor, ɵLuOptionComponent, ɵLuOptionOutletDirective, ɵLuMultiSelectSelectedChipDirective, NgTemplateOutlet],\n})\nexport class LuMultiSelectPanelComponent<T> implements AfterViewInit {\n\tprotected panelData = inject<ILuMultiSelectPanelData<T>>(MULTI_SELECT_PANEL_DATA);\n\tpanelRef = inject<LuMultiSelectPanelRef<T>>(LuMultiSelectPanelRef);\n\tselectId = inject(SELECT_ID);\n\tintl = getIntl(LU_MULTI_SELECT_TRANSLATIONS);\n\n\toptions$ = this.panelData.options$;\n\tgroups$ = this.panelData.grouping ? this.panelData.options$.pipe(map((options) => ɵgenerateGroups(options, this.panelData.grouping.selector))) : EMPTY;\n\tgrouping = this.panelData.grouping;\n\tloading$ = this.panelData.loading$;\n\toptionComparer = this.panelData.optionComparer;\n\tselectedOptions: T[] = this.panelData.initialValue || [];\n\toptionTpl = this.panelData.optionTpl;\n\n\t@ViewChildren(ɵLuOptionComponent) optionsQL: QueryList<ɵLuOptionComponent<T>>;\n\tprivate _keyManager: ActiveDescendantKeyManager<ɵLuOptionComponent<T>>;\n\n\tpublic get keyManager(): ActiveDescendantKeyManager<ɵLuOptionComponent<T>> {\n\t\treturn this._keyManager;\n\t}\n\n\tonScroll(evt: Event): void {\n\t\tif (!(evt.target instanceof HTMLElement)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (evt.target.scrollTop === 0) {\n\t\t\tthis.panelRef.previousPage.emit();\n\t\t}\n\n\t\tif (evt.target.scrollHeight - evt.target.scrollTop - evt.target.clientHeight < 1) {\n\t\t\tthis.panelRef.nextPage.emit();\n\t\t}\n\t}\n\n\tngAfterViewInit(): void {\n\t\tif (!this.optionsQL) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.initKeyManager();\n\t\tthis.panelRef.useDefaultPosition();\n\t}\n\n\ttoggleOption(option: T): void {\n\t\tconst selectedOption = this.selectedOptions.find((o) => this.optionComparer(o, option));\n\t\tthis.selectedOptions = selectedOption ? this.selectedOptions.filter((o) => o !== selectedOption) : [...this.selectedOptions, option];\n\t\tthis.panelRef.emitValue(this.selectedOptions);\n\t\tsetTimeout(() => this.panelRef.updatePosition());\n\t\tthis._keyManager?.setActiveItem(this.optionsQL.toArray().findIndex((o) => o.option === option));\n\t}\n\n\tprotected initKeyManager(): void {\n\t\tthis._keyManager = new ActiveDescendantKeyManager(this.optionsQL).withHomeAndEnd();\n\n\t\tif (this.selectedOptions) {\n\t\t\tthis.options$\n\t\t\t\t?.pipe(\n\t\t\t\t\tobserveOn(asyncScheduler),\n\t\t\t\t\tmap((options) => (this.selectedOptions.length ? options.findIndex((o) => this.optionComparer(o, this.selectedOptions[0])) : -1)),\n\t\t\t\t\tfilter((index) => index !== -1),\n\t\t\t\t\ttake(1),\n\t\t\t\t\ttakeUntil(this.panelRef.closed),\n\t\t\t\t)\n\t\t\t\t.subscribe((selectedIndex) => this._keyManager.setActiveItem(selectedIndex));\n\t\t}\n\n\t\tthis._keyManager.change\n\t\t\t.pipe(\n\t\t\t\tmap(() => this._keyManager.activeItem?.id),\n\t\t\t\ttakeUntil(this.panelRef.closed),\n\t\t\t)\n\t\t\t.subscribe((activeDescendant) => this.panelRef.activeOptionIdChanged.emit(activeDescendant));\n\n\t\t/**\n\t\t * On new options, we want to select the first element with key manager\n\t\t */\n\t\tthis.options$\n\t\t\t?.pipe(\n\t\t\t\tobserveOn(asyncScheduler),\n\t\t\t\t// Skip first so we don't override \"select currently active\", we only want new options anyways\n\t\t\t\tskip(1),\n\t\t\t\ttakeUntil(this.panelRef.closed),\n\t\t\t)\n\t\t\t.subscribe(() => this.keyManager.setFirstItemActive());\n\n\t\tthis.keyManager.setFirstItemActive();\n\t}\n}\n","<div class=\"lu-picker-panel lu-option-picker-panel mod-multiple\" role=\"dialog\" *ngIf=\"{ options: options$ | async } as ctx\">\n\t<div\n\t\tclass=\"lu-picker-content\"\n\t\t[class.is-loading]=\"loading$ | async\"\n\t\t[class.is-filled]=\"ctx.options.length > 0\"\n\t\ttabindex=\"0\"\n\t\trole=\"listbox\"\n\t\taria-multiselectable=\"true\"\n\t\t(scroll)=\"onScroll($event)\"\n\t>\n\t\t<div class=\"lu-picker-content-option\">\n\t\t\t<ng-container *ngIf=\"grouping\">\n\t\t\t\t<div\n\t\t\t\t\t*ngFor=\"let group of groups$ | async\"\n\t\t\t\t\tclass=\"lu-picker-content-group\"\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\t[attr.aria-labelledby]=\"selectId + '-group-' + group.key\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"lu-picker-content-option-group-title\" role=\"presentation\" [id]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"grouping.templateRef\" [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-template>\n\t\t\t\t\t</span>\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: group.options }\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<ng-container *ngIf=\"!grouping\">\n\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: ctx.options }\"></ng-template>\n\t\t\t</ng-container>\n\n\t\t\t<ng-template #optionsList let-options>\n\t\t\t\t<lu-select-option\n\t\t\t\t\t*ngFor=\"let option of options; let index = index\"\n\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t[optionTpl]=\"optionTpl\"\n\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected:optionComparer:selectedOptions\"\n\t\t\t\t\t(click)=\"toggleOption(option)\"\n\t\t\t\t/>\n\t\t\t</ng-template>\n\t\t\t<div class=\"lu-picker-content-option-emptyState\" *ngIf=\"ctx.options.length === 0\">{{intl.emptyResults}}</div>\n\t\t</div>\n\t\t<div *ngIf=\"loading$ | async\" class=\"lu-picker-content-loading\">\n\t\t\t<div class=\"loading\"></div>\n\t\t\t<span>{{intl.loading}}</span>\n\t\t</div>\n\t</div>\n\t<!--<div class=\"lu-picker-content-add\">\n\t\t<button class=\"button mod-text mod-icon palette-primary\" type=\"button\">\n\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-mathsPlus\"></span>Add a new supplier\n\t\t</button>\n\t</div>-->\n</div>\n","import { ConnectedPosition, Overlay, OverlayConfig, OverlayPositionBuilder, OverlayRef, PositionStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ChangeDetectorRef, ComponentRef, ElementRef, Injectable, Injector, inject } from '@angular/core';\nimport { takeUntil } from 'rxjs';\nimport { LuMultiSelectPanelComponent } from '../panel/index';\nimport { ILuMultiSelectPanelData, MULTI_SELECT_PANEL_DATA } from '../select.model';\nimport { LuMultiSelectPanelRef } from './panel.model';\n\nclass MultiSelectPanelRef<T> extends LuMultiSelectPanelRef<T> {\n\tinstance: LuMultiSelectPanelComponent<T>;\n\tprivate panelRef: ComponentRef<LuMultiSelectPanelComponent<T>>;\n\tprivate portalRef: ComponentPortal<LuMultiSelectPanelComponent<T>>;\n\n\tconstructor(private overlayRef: OverlayRef, parentInjector: Injector, panelData: ILuMultiSelectPanelData<T>, protected defaultPositionStrategy: PositionStrategy) {\n\t\tsuper();\n\n\t\tconst injector = Injector.create({\n\t\t\tproviders: [\n\t\t\t\t{ provide: LuMultiSelectPanelRef, useValue: this },\n\t\t\t\t{ provide: MULTI_SELECT_PANEL_DATA, useValue: panelData },\n\t\t\t],\n\t\t\tparent: parentInjector,\n\t\t});\n\n\t\tthis.portalRef = new ComponentPortal<LuMultiSelectPanelComponent<T>>(LuMultiSelectPanelComponent, undefined, injector);\n\t\tthis.panelRef = overlayRef.attach(this.portalRef);\n\t\tthis.instance = this.panelRef.instance;\n\n\t\toverlayRef\n\t\t\t.backdropClick()\n\t\t\t.pipe(takeUntil(this.closed))\n\t\t\t.subscribe(() => this.close());\n\t}\n\n\temitValue(value: T[]): void {\n\t\tthis.valueChanged.emit(value);\n\t}\n\n\tupdateSelectedOptions(selectedOptions: T[]): void {\n\t\tthis.instance.selectedOptions = selectedOptions;\n\t\t// Run change detection on the panel component\n\t\tthis.panelRef.injector.get(ChangeDetectorRef).markForCheck();\n\t}\n\n\tuseDefaultPosition(): void {\n\t\tthis.overlayRef.updatePositionStrategy(this.defaultPositionStrategy);\n\t}\n\n\tupdatePosition(): void {\n\t\tthis.overlayRef.updatePosition();\n\t}\n\n\toverride close(): void {\n\t\tsuper.close();\n\t\tthis.panelRef.destroy();\n\t\tthis.overlayRef.detach();\n\t}\n\n\thandleKeyManagerEvent(event: KeyboardEvent) {\n\t\tthis.instance.keyManager.onKeydown(event);\n\t}\n\n\tselectCurrentlyHighlightedValue(): void {\n\t\tthis.instance.toggleOption(this.instance.keyManager?.activeItem?.option);\n\t}\n}\n\n@Injectable()\nexport class LuMultiSelectPanelRefFactory {\n\tprotected overlay = inject(Overlay);\n\tprotected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprotected positionBuilder = inject(OverlayPositionBuilder);\n\tprotected scrollStrategies = inject(ScrollStrategyOptions);\n\tprotected parentInjector = inject(Injector);\n\n\tbuildPanelRef<T>(panelData: ILuMultiSelectPanelData<T>, defaultOverlayConfigOverride: OverlayConfig = {}): LuMultiSelectPanelRef<T> {\n\t\tconst defaultOverlayConfig = this.buildDefaultOverlayConfig(defaultOverlayConfigOverride);\n\n\t\tconst overlayRef = this.overlay.create(defaultOverlayConfig);\n\n\t\toverlayRef.hostElement.style.transitionProperty = 'height';\n\t\toverlayRef.hostElement.style.transitionDuration = 'var(--commons-animations-durations-standard)';\n\n\t\treturn new MultiSelectPanelRef(overlayRef, this.parentInjector, panelData, defaultOverlayConfig.positionStrategy);\n\t}\n\n\tprotected buildDefaultOverlayConfig(overlayConfigOverride: OverlayConfig = {}): OverlayConfig {\n\t\tconst overlayConfig: OverlayConfig = { ...overlayConfigOverride };\n\n\t\tconst config = { overlapInput: false, offsetY: 2 };\n\t\toverlayConfig.positionStrategy = this.positionBuilder\n\t\t\t.flexibleConnectedTo(this.elementRef)\n\t\t\t.withViewportMargin(10)\n\t\t\t.withPositions([\n\t\t\t\tthis.buildPosition('bottom', 'right', config),\n\t\t\t\tthis.buildPosition('bottom', 'left', config),\n\t\t\t\tthis.buildPosition('top', 'right', config),\n\t\t\t\tthis.buildPosition('top', 'left', config),\n\t\t\t]);\n\t\toverlayConfig.scrollStrategy = this.scrollStrategies.reposition();\n\t\toverlayConfig.minWidth = this.elementRef.nativeElement.clientWidth;\n\t\toverlayConfig.maxWidth = '100vw';\n\n\t\treturn overlayConfig;\n\t}\n\n\tprotected buildPosition(\n\t\tyDirection: 'top' | 'bottom',\n\t\txDirection: 'left' | 'right',\n\t\tconfig: {\n\t\t\toffsetX?: number;\n\t\t\toffsetY?: number;\n\t\t\toverlapInput: boolean;\n\t\t},\n\t): ConnectedPosition {\n\t\tconst originX = xDirection === 'right' ? 'start' : 'end';\n\t\tconst overlayX = originX;\n\n\t\tconst oppositeYDirection = yDirection === 'top' ? 'bottom' : 'top';\n\t\tconst { originY, overlayY } = config.overlapInput\n\t\t\t? ({\n\t\t\t\t\toriginY: oppositeYDirection,\n\t\t\t\t\toverlayY: oppositeYDirection,\n\t\t\t } as const)\n\t\t\t: ({ originY: yDirection, overlayY: oppositeYDirection } as const);\n\n\t\treturn {\n\t\t\toriginX,\n\t\t\toriginY,\n\t\t\toverlayX,\n\t\t\toverlayY,\n\t\t\t...(config.offsetX ? { offsetX: xDirection === 'right' ? config.offsetX : -config.offsetX } : {}),\n\t\t\t...(config.offsetY ? { offsetY: yDirection === 'bottom' ? config.offsetY : -config.offsetY } : {}),\n\t\t};\n\t}\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, inject, Input, numberAttribute, OnDestroy, OnInit, TemplateRef, Type, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ALuSelectInputComponent, LuOptionContext, provideLuSelectLabelsAndIds, provideLuSelectOverlayContainer, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { Subject } from 'rxjs';\nimport { LuMultiSelectDefaultDisplayerComponent } from '../displayer/index';\nimport { LU_MULTI_SELECT_TRANSLATIONS } from '../select.translate';\nimport { LuMultiSelectPanelRefFactory } from './panel-ref.factory';\nimport { LuMultiSelectPanelRef } from './panel.model';\n\n@Component({\n\tselector: 'lu-multi-select',\n\tstandalone: true,\n\timports: [CommonModule, LuTooltipModule, ɵLuOptionOutletDirective, IconComponent],\n\ttemplateUrl: './select-input.component.html',\n\tstyleUrls: ['./select-input.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t\t{\n\t\t\tprovide: ALuSelectInputComponent,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectInputComponent),\n\t\t},\n\t\tprovideLuSelectOverlayContainer(),\n\t\tprovideLuSelectLabelsAndIds(),\n\t\tLuMultiSelectPanelRefFactory,\n\t],\n\thost: {\n\t\tclass: 'multiSelect',\n\t},\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class LuMultiSelectInputComponent<T> extends ALuSelectInputComponent<T, T[]> implements ControlValueAccessor, OnDestroy, OnInit {\n\tintl = getIntl(LU_MULTI_SELECT_TRANSLATIONS);\n\n\t@Input()\n\tvaluesTpl?: TemplateRef<LuOptionContext<T[]>> | Type<unknown> = LuMultiSelectDefaultDisplayerComponent;\n\n\t@Input({ transform: numberAttribute })\n\tmaxValuesShown = 500;\n\n\toverride _value: T[] = [];\n\n\tpublic override get panelRef(): LuMultiSelectPanelRef<T> | undefined {\n\t\treturn this._panelRef;\n\t}\n\n\tprotected override _panelRef?: LuMultiSelectPanelRef<T>;\n\n\tprotected panelRefFactory = inject(LuMultiSelectPanelRefFactory);\n\n\t/**\n\t * This is used to tell the displayer to focus on the input element\n\t * keepClue is used to avoid triggering an update which would open the panel,\n\t * mainly for when we want to focus without opening the panel\n\t */\n\tpublic readonly focusInput$ = new Subject<void | { keepClue: boolean }>();\n\n\tpublic readonly emptyClue$ = new Subject<void>();\n\n\tpublic override focusInput(): void {\n\t\tthis.focusInput$.next();\n\t}\n\n\tpublic override emptyClue(): void {\n\t\tthis.emptyClue$.next();\n\t}\n\n\tpublic override writeValue(value: T[]): void {\n\t\tsuper.writeValue(value);\n\t\tthis.panelRef?.updateSelectedOptions(value);\n\t}\n\n\tpublic override updateValue(value: T[], skipFocus = false): void {\n\t\tsuper.updateValue(value);\n\t\tif (!skipFocus) {\n\t\t\tthis.focusInput();\n\t\t}\n\t}\n\n\tprotected override buildPanelRef(): LuMultiSelectPanelRef<T> {\n\t\treturn this.panelRefFactory.buildPanelRef(\n\t\t\t{\n\t\t\t\tinitialValue: this.value,\n\t\t\t\toptionComparer: this.optionComparer,\n\t\t\t\toptions$: this.options$,\n\t\t\t\tloading$: this.loading$,\n\t\t\t\toptionTpl: this.optionTpl,\n\t\t\t\tgrouping: this.grouping,\n\t\t\t},\n\t\t\tthis.overlayConfig,\n\t\t);\n\t}\n\n\tprotected override bindInputToPanelRefEvents(): void {\n\t\tif (!this.panelRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tsuper.bindInputToPanelRefEvents();\n\t}\n\n\tprotected override get hasValue(): boolean {\n\t\treturn this.value && this.value.length > 0;\n\t}\n\n\toverride clearValue(event: MouseEvent): void {\n\t\tevent.stopPropagation();\n\t\tthis.onChange?.([]);\n\t\tthis.value = [];\n\t\tthis.focusInput$.next({ keepClue: true });\n\t}\n\n\toverride ngOnDestroy() {\n\t\tsuper.ngOnDestroy();\n\t\tthis.focusInput$.complete();\n\t}\n}\n","<ng-container *luOptionOutlet=\"valuesTpl; value: value || []\"></ng-container>\n\n<button *ngIf=\"hasValue && clearable\" role=\"button\" class=\"multipleSelect-clear clear\" (click)=\"clearValue($event)\">\n\t<span class=\"u-mask\">{{intl.clear}}</span>\n</button>\n<span aria-hidden=\"true\" class=\"multipleSelect-arrow lucca-icon icon-arrowChevronBottom\"></span>\n","import { InjectionToken } from '@angular/core';\nimport { ILuTranslation } from '@lucca-front/ng/core';\n\nexport const LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS = new InjectionToken('LuMultiSelectDisplayerTranslations', {\n\tfactory: () => luMultiSelectDisplayerTranslations,\n});\n\nexport interface ILuMultiSelectDisplayerLabel {\n\totherResult: string;\n\totherResults: string;\n\tshowResultsDetails: string;\n\tremoveOption: string;\n}\n\nexport const luMultiSelectDisplayerTranslations: ILuTranslation<ILuMultiSelectDisplayerLabel> = {\n\tfr: {\n\t\totherResult: 'autre résultat',\n\t\totherResults: 'autres résultats',\n\t\tshowResultsDetails: 'Voir le détail',\n\t\tremoveOption: \"Supprimer l'option\",\n\t},\n\ten: {\n\t\totherResult: 'other result',\n\t\totherResults: 'other results',\n\t\tshowResultsDetails: 'Show details',\n\t\tremoveOption: 'Remove option',\n\t},\n\tde: {\n\t\totherResult: 'anderes Ergebnis',\n\t\totherResults: 'andere Ergebnisse',\n\t\tshowResultsDetails: 'Details anzeigen',\n\t\tremoveOption: 'Remove option',\n\t},\n\tes: {\n\t\totherResult: 'otro resultado',\n\t\totherResults: 'otros resultados',\n\t\tshowResultsDetails: 'Mostrar detalles',\n\t\tremoveOption: 'Remove option',\n\t},\n\tpt: {\n\t\totherResult: 'outro resultado',\n\t\totherResults: 'outros resultados',\n\t\tshowResultsDetails: 'Mostrar detalhes',\n\t\tremoveOption: 'Remove option',\n\t},\n};\n","import { AsyncPipe, NgFor, NgIf, NgPlural, NgPluralCase } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, OnInit, ViewChild, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { InputDirective } from '@lucca-front/ng/form-field';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { map } from 'rxjs/operators';\nimport { LuMultiSelectInputComponent } from '../input/select-input.component';\nimport { LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS } from './default-displayer.translate';\n\n@Component({\n\tselector: 'lu-multi-select-default-displayer',\n\tstandalone: true,\n\timports: [AsyncPipe, LuTooltipModule, NgIf, NgFor, NgPlural, NgPluralCase, ɵLuOptionOutletDirective, FormsModule, InputDirective],\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer\">\n\t\t\t<input\n\t\t\t\tclass=\"multipleSelect-displayer-search\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t[attr.aria-expanded]=\"select.isPanelOpen\"\n\t\t\t\t[attr.aria-activedescendant]=\"select.activeDescendant$ | async\"\n\t\t\t\t[attr.aria-controls]=\"ariaControls\"\n\t\t\t\t[disabled]=\"select.disabled\"\n\t\t\t\t#inputElement\n\t\t\t\tngModel\n\t\t\t\t(ngModelChange)=\"select.clueChanged($event)\"\n\t\t\t\t[placeholder]=\"placeholder$ | async\"\n\t\t\t\t(keydown.backspace)=\"inputBackspace()\"\n\t\t\t\trole=\"combobox\"\n\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\tluInput\n\t\t\t/>\n\t\t\t<div *ngFor=\"let option of displayedOptions$ | async; let index = index\" class=\"multipleSelect-displayer-chip chip\" [class.mod-unkillable]=\"disabled\">\n\t\t\t\t<span class=\"multipleSelect-displayer-chip-value\"><ng-container *luOptionOutlet=\"select.valueTpl || select.optionTpl; value: option\"></ng-container></span>\n\t\t\t\t<button *ngIf=\"!disabled\" type=\"button\" class=\"chip-kill\" (click)=\"unselectOption(option, $event)\">\n\t\t\t\t\t<span class=\"u-mask\">{{ intl.removeOption }}</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class=\"chip\" *ngIf=\"overflowOptions$ | async as overflow\">+ {{ overflow }}</div>\n\t\t</div>\n\t`,\n\tstyleUrls: ['./default-displayer.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuMultiSelectDefaultDisplayerComponent<T> implements OnInit {\n\tselect = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\tintl = getIntl(LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS);\n\n\tprotected destroyRef = inject(DestroyRef);\n\n\t@ViewChild('inputElement')\n\tinputElementRef: ElementRef<HTMLInputElement>;\n\n\tget disabled() {\n\t\treturn this.select.disabled;\n\t}\n\n\tget value(): T[] {\n\t\treturn this.select.value || [];\n\t}\n\n\tget ariaControls() {\n\t\treturn this.select.ariaControls;\n\t}\n\n\tcontext = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\tplaceholder$ = this.context.option$.pipe(\n\t\tmap((options) => {\n\t\t\tif ((options || []).length > 0) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\treturn this.select.placeholder;\n\t\t}),\n\t);\n\n\tdisplayedOptions$ = this.context.option$.pipe(\n\t\tmap((options) => {\n\t\t\tif (this.select.maxValuesShown) {\n\t\t\t\treturn (options || []).slice(0, this.select.maxValuesShown);\n\t\t\t}\n\t\t\treturn options;\n\t\t}),\n\t);\n\n\toverflowOptions$ = this.context.option$.pipe(\n\t\tmap((options) => {\n\t\t\treturn Math.max(0, (options || []).length - this.select.maxValuesShown);\n\t\t}),\n\t);\n\n\tunselectOption(option: T, $event?: Event): void {\n\t\tif ($event) {\n\t\t\t$event.stopPropagation();\n\t\t\t$event.preventDefault();\n\t\t}\n\t\tthis.select.updateValue(\n\t\t\tthis.value.filter((o) => o !== option),\n\t\t\ttrue,\n\t\t);\n\t\tsetTimeout(() => {\n\t\t\tthis.select.panelRef?.updatePosition();\n\t\t\tthis.inputElementRef.nativeElement.focus();\n\t\t});\n\t}\n\n\tinputBackspace(): void {\n\t\tif (this.value.length > 0 && this.inputElementRef.nativeElement.value.length === 0) {\n\t\t\tthis.unselectOption(this.value[this.value.length - 1]);\n\t\t\tthis.select.panelRef.updateSelectedOptions(this.value);\n\t\t}\n\t}\n\tngOnInit(): void {\n\t\tthis.select.focusInput$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data?: { keepClue: true }) => {\n\t\t\t// Everytime we want to focus, we need to reset the input\n\t\t\t// This is done when a value is selected and when panel is opened.\n\t\t\tif (!data?.keepClue) {\n\t\t\t\tthis.inputElementRef.nativeElement.value = '';\n\t\t\t\tthis.select.clueChanged('');\n\t\t\t}\n\n\t\t\tthis.inputElementRef.nativeElement.focus();\n\t\t});\n\t\tthis.select.emptyClue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tthis.inputElementRef.nativeElement.value = '';\n\t\t});\n\t}\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { LuOptionContext } from '@lucca-front/ng/core-select';\nimport { LuMultiSelectInputComponent } from '../input';\n\n@Directive({\n\tselector: '[luMultiDisplayer]',\n\tstandalone: true,\n})\nexport class LuMultiDisplayerDirective<T> {\n\t@Input('luMultiDisplayerSelect') set select(select: LuMultiSelectInputComponent<T>) {\n\t\tselect.valuesTpl = this.templateRef;\n\t}\n\n\tpublic constructor(private templateRef: TemplateRef<LuOptionContext<T[]>>) {}\n\n\tpublic static ngTemplateContextGuard<T>(_dir: LuMultiDisplayerDirective<T>, ctx: unknown): ctx is LuOptionContext<T[]> {\n\t\treturn true;\n\t}\n}\n","import { DestroyRef, Directive, ElementRef, HostBinding, inject, OnInit } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from '@lucca-front/ng/core-select';\nimport { map } from 'rxjs/operators';\nimport { LuMultiSelectInputComponent } from '../input/select-input.component';\n\n@Directive({\n\tselector: '[luMultiSelectDisplayerInput]',\n\tstandalone: true,\n\thost: {\n\t\t'aria-haspopup': 'listbox',\n\t\trole: 'combobox',\n\t\tclass: 'multipleSelect-displayer-search',\n\t},\n})\nexport class LuMultiSelectDisplayerInputDirective<T> implements OnInit {\n\tselect = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\n\tcontext = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\telementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n\tdestroyRef = inject(DestroyRef);\n\n\t@HostBinding('attr.aria-expanded')\n\tpanelOpen = false;\n\n\t@HostBinding('attr.aria-activedescendant')\n\tactiveDescendant = '';\n\n\t@HostBinding('attr.aria-controls')\n\tcontrols = this.select?.ariaControls;\n\n\t@HostBinding('disabled')\n\tdisabled = false;\n\n\t@HostBinding('placeholder')\n\tplaceholder = '';\n\n\tngOnInit(): void {\n\t\tthis.context.option$\n\t\t\t.pipe(\n\t\t\t\tmap((options) => {\n\t\t\t\t\tif ((options || []).length > 0) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t\treturn this.select.placeholder || '';\n\t\t\t\t}),\n\t\t\t\ttakeUntilDestroyed(this.destroyRef),\n\t\t\t)\n\t\t\t.subscribe((placeholder) => (this.placeholder = placeholder));\n\t\tthis.select.isPanelOpen$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((open) => {\n\t\t\tthis.panelOpen = open;\n\t\t});\n\t\tthis.select.activeDescendant$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((activeDescendant) => {\n\t\t\tthis.activeDescendant = activeDescendant;\n\t\t});\n\t\tthis.context.isDisabled$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((disabled) => {\n\t\t\tthis.disabled = disabled;\n\t\t});\n\t\tthis.select.focusInput$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tthis.elementRef.nativeElement.value = '';\n\t\t\tthis.select.clueChanged('');\n\t\t\tthis.elementRef.nativeElement.focus();\n\t\t});\n\t\tthis.select.emptyClue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tthis.elementRef.nativeElement.value = '';\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","i1"],"mappings":";;;;;;;;;;;;;;;;;;MAGa,4BAA4B,GAAG,IAAI,cAAc,CAAC,2BAA2B,EAAE;AAC3F,IAAA,OAAO,EAAE,MAAM,yBAAyB;AACxC,CAAA,EAAE;AAeU,MAAA,yBAAyB,GAAwC;AAC7E,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,kBAAkB;AAC/B,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,KAAK,EAAE,iBAAiB;AACxB,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,YAAY,EAAE,YAAY;AAC1B,QAAA,cAAc,EAAE,wCAAwC;AACxD,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,OAAO,EAAE,YAAY;AACrB,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,yBAAyB;AACtC,QAAA,MAAM,EAAE,YAAY;AACpB,QAAA,KAAK,EAAE,oBAAoB;AAC3B,QAAA,WAAW,EAAE,oBAAoB;AACjC,QAAA,cAAc,EAAE,kEAAkE;AAClF,QAAA,YAAY,EAAE,qCAAqC;AACnD,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,SAAS,EAAE,mBAAmB;AAC9B,QAAA,OAAO,EAAE,wBAAwB;AACjC,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,wBAAwB;AACrC,QAAA,MAAM,EAAE,OAAO;AACf,QAAA,KAAK,EAAE,iBAAiB;AACxB,QAAA,WAAW,EAAE,eAAe;AAC5B,QAAA,YAAY,EAAE,iCAAiC;AAC/C,QAAA,cAAc,EAAE,6DAA6D;AAC7E,QAAA,MAAM,EAAE,WAAW;AACnB,QAAA,MAAM,EAAE,YAAY;AACpB,QAAA,SAAS,EAAE,iBAAiB;AAC5B,QAAA,OAAO,EAAE,iBAAiB;AAC1B,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,uBAAuB;AACpC,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,KAAK,EAAE,kBAAkB;AACzB,QAAA,WAAW,EAAE,iBAAiB;AAC9B,QAAA,YAAY,EAAE,oCAAoC;AAClD,QAAA,cAAc,EAAE,gEAAgE;AAChF,QAAA,MAAM,EAAE,UAAU;AAClB,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,OAAO,EAAE,aAAa;AACtB,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,qBAAqB;AAClC,QAAA,MAAM,EAAE,WAAW;AACnB,QAAA,KAAK,EAAE,gBAAgB;AACvB,QAAA,WAAW,EAAE,iBAAiB;AAC9B,QAAA,YAAY,EAAE,oCAAoC;AAClD,QAAA,cAAc,EAAE,kDAAkD;AAClE,QAAA,MAAM,EAAE,UAAU;AAClB,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,SAAS,EAAE,iBAAiB;AAC5B,QAAA,OAAO,EAAE,eAAe;AACxB,KAAA;;;AC9EI,MAAgB,qBAAyB,SAAQ,gBAAwB,CAAA;AAM9E;;ACKM,MAAM,uBAAuB,GAAG,IAAI,cAAc,CAAmC,sBAAsB,CAAC;;MCPtG,sBAAsB,CAAA;AAClC,IAAA,SAAS,CAAI,MAAS,EAAE,QAA6C,EAAE,eAAoB,EAAA;AAC1F,QAAA,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,cAAc,KAAK,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;KAClF;8GAHW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,CAAA,CAAA,EAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACL,oBAAA,IAAI,EAAE,oBAAoB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AAChB,iBAAA,CAAA;;;MCEY,mCAAmC,CAAA;AAJhD,IAAA,WAAA,GAAA;AAOC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC,aAAa,CAAC;AAQvE,KAAA;IANA,eAAe,GAAA;QACd,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;KAChD;IACD,iBAAiB,GAAA;;KAEhB;8GAVW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnC,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAJ/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,iBAAA,CAAA;8BAEoC,MAAM,EAAA,CAAA;sBAAzC,KAAK;uBAAC,2BAA2B,CAAA;;;MCctB,2BAA2B,CAAA;AARxC,IAAA,WAAA,GAAA;AASW,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAA6B,uBAAuB,CAAC,CAAC;AAClF,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAA2B,qBAAqB,CAAC,CAAC;AACnE,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,IAAI,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;AAE7C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AACnC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACvJ,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AACnC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AACnC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;QAC/C,IAAe,CAAA,eAAA,GAAQ,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,CAAC;AACzD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AA4ErC,KAAA;AAvEA,IAAA,IAAW,UAAU,GAAA;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC;KACxB;AAED,IAAA,QAAQ,CAAC,GAAU,EAAA;QAClB,IAAI,EAAE,GAAG,CAAC,MAAM,YAAY,WAAW,CAAC,EAAE;YACzC,OAAO;AACP,SAAA;AAED,QAAA,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAClC,SAAA;AAED,QAAA,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE;AACjF,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC9B,SAAA;KACD;IAED,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACpB,OAAO;AACP,SAAA;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;KACnC;AAED,IAAA,YAAY,CAAC,MAAS,EAAA;QACrB,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACxF,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACrI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9C,UAAU,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC;KAChG;IAES,cAAc,GAAA;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC;QAEnF,IAAI,IAAI,CAAC,eAAe,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ;AACZ,kBAAE,IAAI,CACL,SAAS,CAAC,cAAc,CAAC,EACzB,GAAG,CAAC,CAAC,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAChI,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,EAC/B,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC/B;AACA,iBAAA,SAAS,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;AAC9E,SAAA;QAED,IAAI,CAAC,WAAW,CAAC,MAAM;aACrB,IAAI,CACJ,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC,EAC1C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC/B;AACA,aAAA,SAAS,CAAC,CAAC,gBAAgB,KAAK,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAE9F;;AAEG;AACH,QAAA,IAAI,CAAC,QAAQ;AACZ,cAAE,IAAI,CACL,SAAS,CAAC,cAAc,CAAC;;AAEzB,QAAA,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC/B;aACA,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAExD,QAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;KACrC;8GAvFW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,yGAczB,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpCjC,i0EAoDA,EDhCW,MAAA,EAAA,CAAA,kSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAU,0BAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAE,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,sBAAsB,2DAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,KAAK,EAAE,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,oJAAiE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAE1K,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBARvC,SAAS;+BACC,iBAAiB,EAAA,eAAA,EAGV,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,sBAAsB,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,mCAAmC,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,i0EAAA,EAAA,MAAA,EAAA,CAAA,kSAAA,CAAA,EAAA,CAAA;8BAgBrJ,SAAS,EAAA,CAAA;sBAA1C,YAAY;uBAAC,kBAAkB,CAAA;;;AE5BjC,MAAM,mBAAuB,SAAQ,qBAAwB,CAAA;AAK5D,IAAA,WAAA,CAAoB,UAAsB,EAAE,cAAwB,EAAE,SAAqC,EAAY,uBAAyC,EAAA;AAC/J,QAAA,KAAK,EAAE,CAAC;QADW,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAA6E,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAkB;AAG/J,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;AAChC,YAAA,SAAS,EAAE;AACV,gBAAA,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,IAAI,EAAE;AAClD,gBAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,SAAS,EAAE;AACzD,aAAA;AACD,YAAA,MAAM,EAAE,cAAc;AACtB,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAAiC,2BAA2B,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACvH,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAEvC,UAAU;AACR,aAAA,aAAa,EAAE;AACf,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC5B,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KAChC;AAED,IAAA,SAAS,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED,IAAA,qBAAqB,CAAC,eAAoB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,eAAe,CAAC;;AAEhD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,YAAY,EAAE,CAAC;KAC7D;IAED,kBAAkB,GAAA;QACjB,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;KACrE;IAED,cAAc,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;KACjC;IAEQ,KAAK,GAAA;QACb,KAAK,CAAC,KAAK,EAAE,CAAC;AACd,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;KACzB;AAED,IAAA,qBAAqB,CAAC,KAAoB,EAAA;QACzC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KAC1C;IAED,+BAA+B,GAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;KACzE;AACD,CAAA;MAGY,4BAA4B,CAAA;AADzC,IAAA,WAAA,GAAA;AAEW,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAC1B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;AACzD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACjD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AA8D5C,KAAA;AA5DA,IAAA,aAAa,CAAI,SAAqC,EAAE,4BAAA,GAA8C,EAAE,EAAA;QACvG,MAAM,oBAAoB,GAAG,IAAI,CAAC,yBAAyB,CAAC,4BAA4B,CAAC,CAAC;QAE1F,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAE7D,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,kBAAkB,GAAG,QAAQ,CAAC;QAC3D,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,kBAAkB,GAAG,8CAA8C,CAAC;AAEjG,QAAA,OAAO,IAAI,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;KAClH;IAES,yBAAyB,CAAC,wBAAuC,EAAE,EAAA;AAC5E,QAAA,MAAM,aAAa,GAAkB,EAAE,GAAG,qBAAqB,EAAE,CAAC;QAElE,MAAM,MAAM,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACnD,QAAA,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe;AACnD,aAAA,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;aACpC,kBAAkB,CAAC,EAAE,CAAC;AACtB,aAAA,aAAa,CAAC;YACd,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;YAC7C,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC;YAC1C,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;AACzC,SAAA,CAAC,CAAC;QACJ,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;QAClE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC;AACnE,QAAA,aAAa,CAAC,QAAQ,GAAG,OAAO,CAAC;AAEjC,QAAA,OAAO,aAAa,CAAC;KACrB;AAES,IAAA,aAAa,CACtB,UAA4B,EAC5B,UAA4B,EAC5B,MAIC,EAAA;AAED,QAAA,MAAM,OAAO,GAAG,UAAU,KAAK,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;QACzD,MAAM,QAAQ,GAAG,OAAO,CAAC;AAEzB,QAAA,MAAM,kBAAkB,GAAG,UAAU,KAAK,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAC;QACnE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,YAAY;AAChD,cAAG;AACD,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,QAAQ,EAAE,kBAAkB;AACjB,aAAA;cACV,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAY,CAAC;QAEpE,OAAO;YACN,OAAO;YACP,OAAO;YACP,QAAQ;YACR,QAAQ;AACR,YAAA,IAAI,MAAM,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,UAAU,KAAK,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE;AAChG,YAAA,IAAI,MAAM,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,UAAU,KAAK,QAAQ,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE;SACjG,CAAC;KACF;8GAlEW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAA5B,4BAA4B,EAAA,CAAA,CAAA,EAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,UAAU;;;AC5BL,MAAO,2BAA+B,SAAQ,uBAA+B,CAAA;AA1BnF,IAAA,WAAA,GAAA;;AA2BC,QAAA,IAAA,CAAA,IAAI,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAG7C,IAAS,CAAA,SAAA,GAAuD,sCAAsC,CAAC;QAGvG,IAAc,CAAA,cAAA,GAAG,GAAG,CAAC;QAEZ,IAAM,CAAA,MAAA,GAAQ,EAAE,CAAC;AAQhB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAEjE;;;;AAIG;AACa,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAgC,CAAC;AAE1D,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;AA2DjD,KAAA;AA1EA,IAAA,IAAoB,QAAQ,GAAA;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC;KACtB;IAee,UAAU,GAAA;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACxB;IAEe,SAAS,GAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACvB;AAEe,IAAA,UAAU,CAAC,KAAU,EAAA;AACpC,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC5C;AAEe,IAAA,WAAW,CAAC,KAAU,EAAE,SAAS,GAAG,KAAK,EAAA;AACxD,QAAA,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE;YACf,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,SAAA;KACD;IAEkB,aAAa,GAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CACxC;YACC,YAAY,EAAE,IAAI,CAAC,KAAK;YACxB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,SAAA,EACD,IAAI,CAAC,aAAa,CAClB,CAAC;KACF;IAEkB,yBAAyB,GAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACnB,OAAO;AACP,SAAA;QAED,KAAK,CAAC,yBAAyB,EAAE,CAAC;KAClC;AAED,IAAA,IAAuB,QAAQ,GAAA;QAC9B,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;KAC3C;AAEQ,IAAA,UAAU,CAAC,KAAiB,EAAA;QACpC,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1C;IAEQ,WAAW,GAAA;QACnB,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KAC5B;8GApFW,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAMnB,eAAe,CAzBxB,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,2BAA2B,CAAC;AAC1D,gBAAA,KAAK,EAAE,IAAI;AACX,aAAA;AACD,YAAA;AACC,gBAAA,OAAO,EAAE,uBAAuB;AAChC,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,2BAA2B,CAAC;AAC1D,aAAA;AACD,YAAA,+BAA+B,EAAE;AACjC,YAAA,2BAA2B,EAAE;YAC7B,4BAA4B;AAC5B,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjCF,oXAMA,EDUW,MAAA,EAAA,CAAA,2vHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,+BAAE,wBAAwB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,qBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAuBrD,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBA1BvC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cACf,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,EAAE,wBAAwB,EAAE,aAAa,CAAC,EAAA,eAAA,EAGhE,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,iCAAiC,CAAC;AAC1D,4BAAA,KAAK,EAAE,IAAI;AACX,yBAAA;AACD,wBAAA;AACC,4BAAA,OAAO,EAAE,uBAAuB;AAChC,4BAAA,WAAW,EAAE,UAAU,CAAC,iCAAiC,CAAC;AAC1D,yBAAA;AACD,wBAAA,+BAA+B,EAAE;AACjC,wBAAA,2BAA2B,EAAE;wBAC7B,4BAA4B;qBAC5B,EACK,IAAA,EAAA;AACL,wBAAA,KAAK,EAAE,aAAa;qBACpB,EACc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,oXAAA,EAAA,MAAA,EAAA,CAAA,2vHAAA,CAAA,EAAA,CAAA;8BAMrC,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,cAAc,EAAA,CAAA;sBADb,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAA;;;AE1C/B,MAAM,sCAAsC,GAAG,IAAI,cAAc,CAAC,oCAAoC,EAAE;AAC9G,IAAA,OAAO,EAAE,MAAM,kCAAkC;AACjD,CAAA,CAAC,CAAC;AASI,MAAM,kCAAkC,GAAiD;AAC/F,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,gBAAgB;AAC7B,QAAA,YAAY,EAAE,kBAAkB;AAChC,QAAA,kBAAkB,EAAE,gBAAgB;AACpC,QAAA,YAAY,EAAE,oBAAoB;AAClC,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,YAAY,EAAE,eAAe;AAC7B,QAAA,kBAAkB,EAAE,cAAc;AAClC,QAAA,YAAY,EAAE,eAAe;AAC7B,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,kBAAkB;AAC/B,QAAA,YAAY,EAAE,mBAAmB;AACjC,QAAA,kBAAkB,EAAE,kBAAkB;AACtC,QAAA,YAAY,EAAE,eAAe;AAC7B,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,gBAAgB;AAC7B,QAAA,YAAY,EAAE,kBAAkB;AAChC,QAAA,kBAAkB,EAAE,kBAAkB;AACtC,QAAA,YAAY,EAAE,eAAe;AAC7B,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,iBAAiB;AAC9B,QAAA,YAAY,EAAE,mBAAmB;AACjC,QAAA,kBAAkB,EAAE,kBAAkB;AACtC,QAAA,YAAY,EAAE,eAAe;AAC7B,KAAA;CACD;;MCCY,sCAAsC,CAAA;AAlCnD,IAAA,WAAA,GAAA;AAmCC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAiC,2BAA2B,CAAC,CAAC;AAC7E,QAAA,IAAA,CAAA,IAAI,GAAG,OAAO,CAAC,sCAAsC,CAAC,CAAC;AAE7C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAiB1C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAwB,iBAAiB,CAAC,CAAC;AAE3D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CACvCA,KAAG,CAAC,CAAC,OAAO,KAAI;YACf,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE;AAC/B,gBAAA,OAAO,EAAE,CAAC;AACV,aAAA;AACD,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;SAC/B,CAAC,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAC5CA,KAAG,CAAC,CAAC,OAAO,KAAI;AACf,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC/B,gBAAA,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC5D,aAAA;AACD,YAAA,OAAO,OAAO,CAAC;SACf,CAAC,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAC3CA,KAAG,CAAC,CAAC,OAAO,KAAI;YACf,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;SACxE,CAAC,CACF,CAAC;AAsCF,KAAA;AA1EA,IAAA,IAAI,QAAQ,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;KAC5B;AAED,IAAA,IAAI,KAAK,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;KAC/B;AAED,IAAA,IAAI,YAAY,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;KAChC;IA4BD,cAAc,CAAC,MAAS,EAAE,MAAc,EAAA;AACvC,QAAA,IAAI,MAAM,EAAE;YACX,MAAM,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,CAAC,cAAc,EAAE,CAAC;AACxB,SAAA;QACD,IAAI,CAAC,MAAM,CAAC,WAAW,CACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,EACtC,IAAI,CACJ,CAAC;QACF,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC;AACvC,YAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC5C,SAAC,CAAC,CAAC;KACH;IAED,cAAc,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACnF,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,SAAA;KACD;IACD,QAAQ,GAAA;QACP,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAyB,KAAI;;;AAGzG,YAAA,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE;gBACpB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;AAC9C,gBAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAC5B,aAAA;AAED,YAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC5C,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC/E,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;AAC/C,SAAC,CAAC,CAAC;KACH;8GAlFW,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sCAAsC,EA9BxC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EA3BS,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAA0B,wBAAwB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,qBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FA+BpH,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAlClD,SAAS;+BACC,mCAAmC,EAAA,UAAA,EACjC,IAAI,EACP,OAAA,EAAA,CAAC,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,wBAAwB,EAAE,WAAW,EAAE,cAAc,CAAC,EACvH,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BT,EAEgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,mCAAA,CAAA,EAAA,CAAA;8BAS/C,eAAe,EAAA,CAAA;sBADd,SAAS;uBAAC,cAAc,CAAA;;;MC5Cb,yBAAyB,CAAA;IACrC,IAAqC,MAAM,CAAC,MAAsC,EAAA;AACjF,QAAA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;KACpC;AAED,IAAA,WAAA,CAA2B,WAA8C,EAAA;QAA9C,IAAW,CAAA,WAAA,GAAX,WAAW,CAAmC;KAAI;AAEtE,IAAA,OAAO,sBAAsB,CAAI,IAAkC,EAAE,GAAY,EAAA;AACvF,QAAA,OAAO,IAAI,CAAC;KACZ;8GATW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,iBAAA,CAAA;gFAEqC,MAAM,EAAA,CAAA;sBAA1C,KAAK;uBAAC,wBAAwB,CAAA;;;MCMnB,oCAAoC,CAAA;AATjD,IAAA,WAAA,GAAA;AAUC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAiC,2BAA2B,CAAC,CAAC;AAE7E,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAwB,iBAAiB,CAAC,CAAC;AAE3D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA+B,UAAU,CAAC,CAAC;AAE9D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAGhC,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAGlB,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;AAGtB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;QAGrC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAGjB,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AAgCjB,KAAA;IA9BA,QAAQ,GAAA;QACP,IAAI,CAAC,OAAO,CAAC,OAAO;AAClB,aAAA,IAAI,CACJD,KAAG,CAAC,CAAC,OAAO,KAAI;YACf,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE;AAC/B,gBAAA,OAAO,EAAE,CAAC;AACV,aAAA;AACD,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;SACrC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CACnC;AACA,aAAA,SAAS,CAAC,CAAC,WAAW,MAAM,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACrF,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACvB,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,gBAAgB,KAAI;AACtG,YAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AAC1C,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACzF,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC1B,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAChF,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;AACzC,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACvC,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC/E,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;AAC1C,SAAC,CAAC,CAAC;KACH;8GArDW,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,4BAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,EAAA,cAAA,EAAA,iCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAApC,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAThD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACL,wBAAA,eAAe,EAAE,SAAS;AAC1B,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,KAAK,EAAE,iCAAiC;AACxC,qBAAA;AACD,iBAAA,CAAA;8BAWA,SAAS,EAAA,CAAA;sBADR,WAAW;uBAAC,oBAAoB,CAAA;gBAIjC,gBAAgB,EAAA,CAAA;sBADf,WAAW;uBAAC,4BAA4B,CAAA;gBAIzC,QAAQ,EAAA,CAAA;sBADP,WAAW;uBAAC,oBAAoB,CAAA;gBAIjC,QAAQ,EAAA,CAAA;sBADP,WAAW;uBAAC,UAAU,CAAA;gBAIvB,WAAW,EAAA,CAAA;sBADV,WAAW;uBAAC,aAAa,CAAA;;;ACpC3B;;AAEG;;;;"}
1
+ {"version":3,"file":"lucca-front-ng-multi-select.mjs","sources":["../../../packages/ng/multi-select/select.translate.ts","../../../packages/ng/multi-select/input/panel.model.ts","../../../packages/ng/multi-select/select.model.ts","../../../packages/ng/multi-select/panel/option-selected.pipe.ts","../../../packages/ng/multi-select/panel/selected-chip.directive.ts","../../../packages/ng/multi-select/panel/panel.component.ts","../../../packages/ng/multi-select/panel/panel.component.html","../../../packages/ng/multi-select/input/panel-ref.factory.ts","../../../packages/ng/multi-select/input/select-input.component.ts","../../../packages/ng/multi-select/input/select-input.component.html","../../../packages/ng/multi-select/displayer/default-displayer.translate.ts","../../../packages/ng/multi-select/displayer/default-displayer.component.ts","../../../packages/ng/multi-select/displayer/displayer.directive.ts","../../../packages/ng/multi-select/displayer/displayer-input.directive.ts","../../../packages/ng/multi-select/lucca-front-ng-multi-select.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { ILuTranslation } from '@lucca-front/ng/core';\n\nexport const LU_MULTI_SELECT_TRANSLATIONS = new InjectionToken('LuMultiSelectTranslations', {\n\tfactory: () => luMultiSelectTranslations,\n});\n\nexport interface ILuMultiSelectLabel {\n\tplaceholder: string;\n\tsearch: string;\n\tclear: string;\n\tclearSearch: string;\n\temptyResults: string;\n\temptySelection: string;\n\texpand: string;\n\treduce: string;\n\tselectAll: string;\n\tloading: string;\n}\n\nexport const luMultiSelectTranslations: ILuTranslation<ILuMultiSelectLabel> = {\n\ten: {\n\t\tplaceholder: 'Select an option',\n\t\tsearch: 'Search',\n\t\tclear: 'Clear selection',\n\t\tclearSearch: 'Clear search',\n\t\temptyResults: 'No results',\n\t\temptySelection: 'Select items in the left list to start',\n\t\texpand: 'Expand',\n\t\treduce: 'Reduce',\n\t\tselectAll: 'Select all',\n\t\tloading: 'Loading...',\n\t},\n\tfr: {\n\t\tplaceholder: 'Sélectionnez une option',\n\t\tsearch: 'Rechercher',\n\t\tclear: 'Vider la sélection',\n\t\tclearSearch: 'Vider la recherche',\n\t\temptySelection: 'Sélectionnez les éléments dans la liste de gauche pour commencer',\n\t\temptyResults: 'Aucun résultat pour votre recherche',\n\t\texpand: 'Étendre',\n\t\treduce: 'Réduire',\n\t\tselectAll: 'Tout sélectionner',\n\t\tloading: 'Chargement en cours...',\n\t},\n\tde: {\n\t\tplaceholder: 'Wählen Sie eine Option',\n\t\tsearch: 'Suche',\n\t\tclear: 'Auswahl löschen',\n\t\tclearSearch: 'Suche löschen',\n\t\temptyResults: 'Keine Ergebnisse für Ihre Suche',\n\t\temptySelection: 'Wählen Sie Elemente in der linken Liste aus, um zu beginnen',\n\t\texpand: 'Erweitern',\n\t\treduce: 'Reduzieren',\n\t\tselectAll: 'Alles auswählen',\n\t\tloading: 'Wird geladen...',\n\t},\n\tes: {\n\t\tplaceholder: 'Seleccione una opción',\n\t\tsearch: 'Buscar',\n\t\tclear: 'Borrar selección',\n\t\tclearSearch: 'Borrar búsqueda',\n\t\temptyResults: 'No hay resultados para su búsqueda',\n\t\temptySelection: 'Seleccione elementos en la lista de la izquierda para comenzar',\n\t\texpand: 'Expandir',\n\t\treduce: 'Reducir',\n\t\tselectAll: 'Seleccionar todo',\n\t\tloading: 'Cargando...',\n\t},\n\tpt: {\n\t\tplaceholder: 'Selecione uma opção',\n\t\tsearch: 'Pesquisar',\n\t\tclear: 'Limpar seleção',\n\t\tclearSearch: 'Limpar pesquisa',\n\t\temptyResults: 'Nenhum resultado para sua pesquisa',\n\t\temptySelection: 'Selecione itens na lista à esquerda para começar',\n\t\texpand: 'Expandir',\n\t\treduce: 'Reduzir',\n\t\tselectAll: 'Selecionar tudo',\n\t\tloading: 'Carregando...',\n\t},\n};\n","import { LuSelectPanelRef } from '@lucca-front/ng/core-select';\n\nexport abstract class LuMultiSelectPanelRef<T> extends LuSelectPanelRef<T, T[]> {\n\tabstract updateSelectedOptions(selectedOptions: T[]): void;\n\n\tabstract useDefaultPosition(): void;\n\n\tabstract updatePosition(): void;\n}\n","import { InjectionToken } from '@angular/core';\nimport type { LuMultiSelectInputComponent } from './input';\n\nexport const MULTI_SELECT_INPUT = new InjectionToken<LuMultiSelectInputComponent<unknown>>('MultiSelectInput');\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'luIsOptionSelected',\n\tstandalone: true,\n})\nexport class LuIsOptionSelectedPipe implements PipeTransform {\n\ttransform<T>(option: T, comparer: (option1: T, option2: T) => boolean, selectedOptions: T[]): boolean {\n\t\treturn selectedOptions.some((selectedOption) => comparer(option, selectedOption));\n\t}\n}\n","import { Highlightable } from '@angular/cdk/a11y';\nimport { Directive, ElementRef, Input, inject } from '@angular/core';\n\n@Directive({\n\tstandalone: true,\n\tselector: '[luMultiSelectSelectedChip]',\n})\nexport class ɵLuMultiSelectSelectedChipDirective<T> implements Highlightable {\n\t@Input('luMultiSelectSelectedChip') option?: T;\n\n\telementRef = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n\tsetActiveStyles(): void {\n\t\tthis.elementRef.querySelector('button').focus();\n\t}\n\tsetInactiveStyles(): void {\n\t\t// Nothing to do\n\t}\n}\n","import { A11yModule, ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, QueryList, ViewChildren, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { SELECT_ID, ɵLuOptionComponent, ɵLuOptionOutletDirective, ɵgenerateGroups } from '@lucca-front/ng/core-select';\nimport { EMPTY, asyncScheduler, filter, map, observeOn, take, takeUntil } from 'rxjs';\nimport { skip, switchMap } from 'rxjs/operators';\nimport { LuMultiSelectInputComponent } from '../input';\nimport { LuMultiSelectPanelRef } from '../input/panel.model';\nimport { MULTI_SELECT_INPUT } from '../select.model';\nimport { LU_MULTI_SELECT_TRANSLATIONS } from '../select.translate';\nimport { LuIsOptionSelectedPipe } from './option-selected.pipe';\nimport { ɵLuMultiSelectSelectedChipDirective } from './selected-chip.directive';\n\n@Component({\n\tselector: 'lu-select-panel',\n\ttemplateUrl: './panel.component.html',\n\tstyleUrls: ['./panel.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [A11yModule, AsyncPipe, FormsModule, LuIsOptionSelectedPipe, NgIf, NgFor, ɵLuOptionComponent, ɵLuOptionOutletDirective, ɵLuMultiSelectSelectedChipDirective, NgTemplateOutlet],\n})\nexport class LuMultiSelectPanelComponent<T> implements AfterViewInit {\n\tprotected selectInput = inject<LuMultiSelectInputComponent<T>>(MULTI_SELECT_INPUT);\n\tpanelRef = inject<LuMultiSelectPanelRef<T>>(LuMultiSelectPanelRef);\n\tselectId = inject(SELECT_ID);\n\tintl = getIntl(LU_MULTI_SELECT_TRANSLATIONS);\n\n\toptions$ = this.selectInput.options$;\n\tgrouping = this.selectInput.grouping;\n\tgroups$ = this.grouping ? this.options$.pipe(map((options) => ɵgenerateGroups(options, this.grouping.selector))) : EMPTY;\n\tloading$ = this.selectInput.loading$;\n\toptionComparer = this.selectInput.optionComparer;\n\tselectedOptions: T[] = this.selectInput.value || [];\n\toptionTpl = this.selectInput.optionTpl;\n\n\t@ViewChildren(ɵLuOptionComponent) optionsQL: QueryList<ɵLuOptionComponent<T>>;\n\tprivate _keyManager: ActiveDescendantKeyManager<ɵLuOptionComponent<T>>;\n\n\tpublic get keyManager(): ActiveDescendantKeyManager<ɵLuOptionComponent<T>> {\n\t\treturn this._keyManager;\n\t}\n\n\tonScroll(evt: Event): void {\n\t\tif (!(evt.target instanceof HTMLElement)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (evt.target.scrollTop === 0) {\n\t\t\tthis.panelRef.previousPage.emit();\n\t\t}\n\n\t\tif (evt.target.scrollHeight - evt.target.scrollTop - evt.target.clientHeight < 1) {\n\t\t\tthis.panelRef.nextPage.emit();\n\t\t}\n\t}\n\n\tngAfterViewInit(): void {\n\t\tif (!this.optionsQL) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.initKeyManager();\n\t\tthis.panelRef.useDefaultPosition();\n\t}\n\n\ttoggleOption(option: T): void {\n\t\tconst selectedOption = this.selectedOptions.find((o) => this.optionComparer(o, option));\n\t\tthis.selectedOptions = selectedOption ? this.selectedOptions.filter((o) => o !== selectedOption) : [...this.selectedOptions, option];\n\t\tthis.panelRef.emitValue(this.selectedOptions);\n\t\tsetTimeout(() => this.panelRef.updatePosition());\n\t\tthis._keyManager?.setActiveItem(this.optionsQL.toArray().findIndex((o) => o.option === option));\n\t}\n\n\tprotected initKeyManager(): void {\n\t\tthis._keyManager = new ActiveDescendantKeyManager(this.optionsQL).withHomeAndEnd();\n\n\t\tif (this.selectedOptions) {\n\t\t\tthis.options$\n\t\t\t\t?.pipe(\n\t\t\t\t\tobserveOn(asyncScheduler),\n\t\t\t\t\tmap((options) => (this.selectedOptions.length ? options.findIndex((o) => this.optionComparer(o, this.selectedOptions[0])) : -1)),\n\t\t\t\t\tfilter((index) => index !== -1),\n\t\t\t\t\ttake(1),\n\t\t\t\t\ttakeUntil(this.panelRef.closed),\n\t\t\t\t)\n\t\t\t\t.subscribe((selectedIndex) => this._keyManager.setActiveItem(selectedIndex));\n\t\t}\n\n\t\tthis._keyManager.change\n\t\t\t.pipe(\n\t\t\t\tmap(() => this._keyManager.activeItem?.id),\n\t\t\t\ttakeUntil(this.panelRef.closed),\n\t\t\t)\n\t\t\t.subscribe((activeDescendant) => this.panelRef.activeOptionIdChanged.emit(activeDescendant));\n\n\t\t/**\n\t\t * On new options, we want to select the first element with key manager\n\t\t */\n\t\tif (this.selectInput.searchable) {\n\t\t\tthis.selectInput.clueChange\n\t\t\t\t.pipe(\n\t\t\t\t\tswitchMap(() => this.options$.pipe(skip(1), take(1))),\n\t\t\t\t\ttakeUntil(this.panelRef.closed),\n\t\t\t\t)\n\t\t\t\t.subscribe(() => this.keyManager.setFirstItemActive());\n\t\t}\n\n\t\tthis.keyManager.setFirstItemActive();\n\t}\n}\n","<div class=\"lu-picker-panel lu-option-picker-panel mod-multiple\" role=\"dialog\" *ngIf=\"{ options: options$ | async } as ctx\">\n\t<div\n\t\tclass=\"lu-picker-content\"\n\t\t[class.is-loading]=\"loading$ | async\"\n\t\t[class.is-filled]=\"ctx.options.length > 0\"\n\t\ttabindex=\"0\"\n\t\trole=\"listbox\"\n\t\taria-multiselectable=\"true\"\n\t\t(scroll)=\"onScroll($event)\"\n\t>\n\t\t<div class=\"lu-picker-content-option\">\n\t\t\t<ng-container *ngIf=\"grouping\">\n\t\t\t\t<div\n\t\t\t\t\t*ngFor=\"let group of groups$ | async\"\n\t\t\t\t\tclass=\"lu-picker-content-group\"\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\t[attr.aria-labelledby]=\"selectId + '-group-' + group.key\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"lu-picker-content-option-group-title\" role=\"presentation\" [id]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"grouping.templateRef\" [ngTemplateOutletContext]=\"{ $implicit: group }\"></ng-template>\n\t\t\t\t\t</span>\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: group.options }\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t\t<ng-container *ngIf=\"!grouping\">\n\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: ctx.options }\"></ng-template>\n\t\t\t</ng-container>\n\n\t\t\t<ng-template #optionsList let-options>\n\t\t\t\t<lu-select-option\n\t\t\t\t\t*ngFor=\"let option of options; let index = index\"\n\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t[optionTpl]=\"optionTpl\"\n\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected:optionComparer:selectedOptions\"\n\t\t\t\t\t(click)=\"toggleOption(option)\"\n\t\t\t\t/>\n\t\t\t</ng-template>\n\t\t\t<div class=\"lu-picker-content-option-emptyState\" *ngIf=\"ctx.options.length === 0 && (loading$ | async) === false\">\n\t\t\t\t{{intl.emptyResults}}\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"loading$ | async\" class=\"lu-picker-content-loading\">\n\t\t\t<div class=\"loading\"></div>\n\t\t\t<span>{{intl.loading}}</span>\n\t\t</div>\n\t</div>\n\t<!--<div class=\"lu-picker-content-add\">\n\t\t<button class=\"button mod-text mod-icon palette-primary\" type=\"button\">\n\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-mathsPlus\"></span>Add a new supplier\n\t\t</button>\n\t</div>-->\n</div>\n","import { ConnectedPosition, Overlay, OverlayConfig, OverlayPositionBuilder, OverlayRef, PositionStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ChangeDetectorRef, ComponentRef, ElementRef, Injectable, Injector, inject } from '@angular/core';\nimport { takeUntil } from 'rxjs';\nimport { LuMultiSelectPanelComponent } from '../panel/index';\nimport { MULTI_SELECT_INPUT } from '../select.model';\nimport { LuMultiSelectPanelRef } from './panel.model';\nimport { LuMultiSelectInputComponent } from './select-input.component';\n\nclass MultiSelectPanelRef<T> extends LuMultiSelectPanelRef<T> {\n\tinstance: LuMultiSelectPanelComponent<T>;\n\tprivate panelRef: ComponentRef<LuMultiSelectPanelComponent<T>>;\n\tprivate portalRef: ComponentPortal<LuMultiSelectPanelComponent<T>>;\n\n\tconstructor(private overlayRef: OverlayRef, parentInjector: Injector, selectInput: LuMultiSelectInputComponent<T>, protected defaultPositionStrategy: PositionStrategy) {\n\t\tsuper();\n\n\t\tconst injector = Injector.create({\n\t\t\tproviders: [\n\t\t\t\t{ provide: LuMultiSelectPanelRef, useValue: this },\n\t\t\t\t{ provide: MULTI_SELECT_INPUT, useValue: selectInput },\n\t\t\t],\n\t\t\tparent: parentInjector,\n\t\t});\n\n\t\tthis.portalRef = new ComponentPortal<LuMultiSelectPanelComponent<T>>(LuMultiSelectPanelComponent, undefined, injector);\n\t\tthis.panelRef = overlayRef.attach(this.portalRef);\n\t\tthis.instance = this.panelRef.instance;\n\n\t\toverlayRef\n\t\t\t.backdropClick()\n\t\t\t.pipe(takeUntil(this.closed))\n\t\t\t.subscribe(() => this.close());\n\t}\n\n\temitValue(value: T[]): void {\n\t\tthis.valueChanged.emit(value);\n\t}\n\n\tupdateSelectedOptions(selectedOptions: T[]): void {\n\t\tthis.instance.selectedOptions = selectedOptions;\n\t\t// Run change detection on the panel component\n\t\tthis.panelRef.injector.get(ChangeDetectorRef).markForCheck();\n\t}\n\n\tuseDefaultPosition(): void {\n\t\tthis.overlayRef.updatePositionStrategy(this.defaultPositionStrategy);\n\t}\n\n\tupdatePosition(): void {\n\t\tthis.overlayRef.updatePosition();\n\t}\n\n\toverride close(): void {\n\t\tsuper.close();\n\t\tthis.panelRef.destroy();\n\t\tthis.overlayRef.detach();\n\t}\n\n\thandleKeyManagerEvent(event: KeyboardEvent) {\n\t\tthis.instance.keyManager.onKeydown(event);\n\t}\n\n\tselectCurrentlyHighlightedValue(): void {\n\t\tthis.instance.toggleOption(this.instance.keyManager?.activeItem?.option);\n\t}\n}\n\n@Injectable()\nexport class LuMultiSelectPanelRefFactory {\n\tprotected overlay = inject(Overlay);\n\tprotected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprotected positionBuilder = inject(OverlayPositionBuilder);\n\tprotected scrollStrategies = inject(ScrollStrategyOptions);\n\tprotected parentInjector = inject(Injector);\n\n\tbuildPanelRef<T>(selectInput: LuMultiSelectInputComponent<T>, defaultOverlayConfigOverride: OverlayConfig = {}): LuMultiSelectPanelRef<T> {\n\t\tconst defaultOverlayConfig = this.buildDefaultOverlayConfig(defaultOverlayConfigOverride);\n\n\t\tconst overlayRef = this.overlay.create(defaultOverlayConfig);\n\n\t\toverlayRef.hostElement.style.transitionProperty = 'height';\n\t\toverlayRef.hostElement.style.transitionDuration = 'var(--commons-animations-durations-standard)';\n\n\t\treturn new MultiSelectPanelRef(overlayRef, this.parentInjector, selectInput, defaultOverlayConfig.positionStrategy);\n\t}\n\n\tprotected buildDefaultOverlayConfig(overlayConfigOverride: OverlayConfig = {}): OverlayConfig {\n\t\tconst overlayConfig: OverlayConfig = { ...overlayConfigOverride };\n\n\t\tconst config = { overlapInput: false, offsetY: 2 };\n\t\toverlayConfig.positionStrategy = this.positionBuilder\n\t\t\t.flexibleConnectedTo(this.elementRef)\n\t\t\t.withViewportMargin(10)\n\t\t\t.withPositions([\n\t\t\t\tthis.buildPosition('bottom', 'right', config),\n\t\t\t\tthis.buildPosition('bottom', 'left', config),\n\t\t\t\tthis.buildPosition('top', 'right', config),\n\t\t\t\tthis.buildPosition('top', 'left', config),\n\t\t\t]);\n\t\toverlayConfig.scrollStrategy = this.scrollStrategies.reposition();\n\t\toverlayConfig.minWidth = this.elementRef.nativeElement.clientWidth;\n\t\toverlayConfig.maxWidth = '100vw';\n\n\t\treturn overlayConfig;\n\t}\n\n\tprotected buildPosition(\n\t\tyDirection: 'top' | 'bottom',\n\t\txDirection: 'left' | 'right',\n\t\tconfig: {\n\t\t\toffsetX?: number;\n\t\t\toffsetY?: number;\n\t\t\toverlapInput: boolean;\n\t\t},\n\t): ConnectedPosition {\n\t\tconst originX = xDirection === 'right' ? 'start' : 'end';\n\t\tconst overlayX = originX;\n\n\t\tconst oppositeYDirection = yDirection === 'top' ? 'bottom' : 'top';\n\t\tconst { originY, overlayY } = config.overlapInput\n\t\t\t? ({\n\t\t\t\t\toriginY: oppositeYDirection,\n\t\t\t\t\toverlayY: oppositeYDirection,\n\t\t\t } as const)\n\t\t\t: ({ originY: yDirection, overlayY: oppositeYDirection } as const);\n\n\t\treturn {\n\t\t\toriginX,\n\t\t\toriginY,\n\t\t\toverlayX,\n\t\t\toverlayY,\n\t\t\t...(config.offsetX ? { offsetX: xDirection === 'right' ? config.offsetX : -config.offsetX } : {}),\n\t\t\t...(config.offsetY ? { offsetY: yDirection === 'bottom' ? config.offsetY : -config.offsetY } : {}),\n\t\t};\n\t}\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, inject, Input, numberAttribute, OnDestroy, OnInit, TemplateRef, Type, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ALuSelectInputComponent, LuOptionContext, provideLuSelectLabelsAndIds, provideLuSelectOverlayContainer, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { Subject } from 'rxjs';\nimport { LuMultiSelectDefaultDisplayerComponent } from '../displayer/index';\nimport { LU_MULTI_SELECT_TRANSLATIONS } from '../select.translate';\nimport { LuMultiSelectPanelRefFactory } from './panel-ref.factory';\nimport { LuMultiSelectPanelRef } from './panel.model';\n\n@Component({\n\tselector: 'lu-multi-select',\n\tstandalone: true,\n\timports: [CommonModule, LuTooltipModule, ɵLuOptionOutletDirective, IconComponent],\n\ttemplateUrl: './select-input.component.html',\n\tstyleUrls: ['./select-input.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t\t{\n\t\t\tprovide: ALuSelectInputComponent,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectInputComponent),\n\t\t},\n\t\tprovideLuSelectOverlayContainer(),\n\t\tprovideLuSelectLabelsAndIds(),\n\t\tLuMultiSelectPanelRefFactory,\n\t],\n\thost: {\n\t\tclass: 'multiSelect',\n\t},\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class LuMultiSelectInputComponent<T> extends ALuSelectInputComponent<T, T[]> implements ControlValueAccessor, OnDestroy, OnInit {\n\tintl = getIntl(LU_MULTI_SELECT_TRANSLATIONS);\n\n\t@Input()\n\tvaluesTpl?: TemplateRef<LuOptionContext<T[]>> | Type<unknown> = LuMultiSelectDefaultDisplayerComponent;\n\n\t@Input({ transform: numberAttribute })\n\tmaxValuesShown = 500;\n\n\toverride _value: T[] = [];\n\n\tpublic override get panelRef(): LuMultiSelectPanelRef<T> | undefined {\n\t\treturn this._panelRef;\n\t}\n\n\tprotected override _panelRef?: LuMultiSelectPanelRef<T>;\n\n\tprotected panelRefFactory = inject(LuMultiSelectPanelRefFactory);\n\n\t/**\n\t * This is used to tell the displayer to focus on the input element\n\t * keepClue is used to avoid triggering an update which would open the panel,\n\t * mainly for when we want to focus without opening the panel\n\t */\n\tpublic readonly focusInput$ = new Subject<void | { keepClue: boolean }>();\n\n\tpublic readonly emptyClue$ = new Subject<void>();\n\n\tpublic override focusInput(): void {\n\t\tthis.focusInput$.next({ keepClue: true });\n\t}\n\n\tpublic override emptyClue(): void {\n\t\tthis.emptyClue$.next();\n\t}\n\n\tpublic override writeValue(value: T[]): void {\n\t\tsuper.writeValue(value);\n\t\tthis.panelRef?.updateSelectedOptions(value);\n\t}\n\n\tpublic override updateValue(value: T[], skipFocus = false): void {\n\t\tsuper.updateValue(value);\n\t\tif (!skipFocus) {\n\t\t\tthis.focusInput();\n\t\t}\n\t}\n\n\tprotected override buildPanelRef(): LuMultiSelectPanelRef<T> {\n\t\treturn this.panelRefFactory.buildPanelRef(this, this.overlayConfig);\n\t}\n\n\tprotected override bindInputToPanelRefEvents(): void {\n\t\tif (!this.panelRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tsuper.bindInputToPanelRefEvents();\n\t}\n\n\tprotected override get hasValue(): boolean {\n\t\treturn this.value && this.value.length > 0;\n\t}\n\n\toverride clearValue(event: MouseEvent): void {\n\t\tevent.stopPropagation();\n\t\tthis.onChange?.([]);\n\t\tthis.value = [];\n\t\tthis.focusInput$.next({ keepClue: true });\n\t}\n\n\toverride ngOnDestroy() {\n\t\tsuper.ngOnDestroy();\n\t\tthis.focusInput$.complete();\n\t}\n}\n","<ng-container *luOptionOutlet=\"valuesTpl; value: value || []\"></ng-container>\n\n<button *ngIf=\"hasValue && clearable\" role=\"button\" class=\"multipleSelect-clear clear\" (click)=\"clearValue($event)\">\n\t<span class=\"u-mask\">{{intl.clear}}</span>\n</button>\n<span aria-hidden=\"true\" class=\"multipleSelect-arrow lucca-icon icon-arrowChevronBottom\"></span>\n","import { InjectionToken } from '@angular/core';\nimport { ILuTranslation } from '@lucca-front/ng/core';\n\nexport const LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS = new InjectionToken('LuMultiSelectDisplayerTranslations', {\n\tfactory: () => luMultiSelectDisplayerTranslations,\n});\n\nexport interface ILuMultiSelectDisplayerLabel {\n\totherResult: string;\n\totherResults: string;\n\tshowResultsDetails: string;\n\tremoveOption: string;\n}\n\nexport const luMultiSelectDisplayerTranslations: ILuTranslation<ILuMultiSelectDisplayerLabel> = {\n\tfr: {\n\t\totherResult: 'autre résultat',\n\t\totherResults: 'autres résultats',\n\t\tshowResultsDetails: 'Voir le détail',\n\t\tremoveOption: \"Supprimer l'option\",\n\t},\n\ten: {\n\t\totherResult: 'other result',\n\t\totherResults: 'other results',\n\t\tshowResultsDetails: 'Show details',\n\t\tremoveOption: 'Remove option',\n\t},\n\tde: {\n\t\totherResult: 'anderes Ergebnis',\n\t\totherResults: 'andere Ergebnisse',\n\t\tshowResultsDetails: 'Details anzeigen',\n\t\tremoveOption: 'Remove option',\n\t},\n\tes: {\n\t\totherResult: 'otro resultado',\n\t\totherResults: 'otros resultados',\n\t\tshowResultsDetails: 'Mostrar detalles',\n\t\tremoveOption: 'Remove option',\n\t},\n\tpt: {\n\t\totherResult: 'outro resultado',\n\t\totherResults: 'outros resultados',\n\t\tshowResultsDetails: 'Mostrar detalhes',\n\t\tremoveOption: 'Remove option',\n\t},\n};\n","import { AsyncPipe, NgFor, NgIf, NgPlural, NgPluralCase } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, OnInit, ViewChild, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { InputDirective } from '@lucca-front/ng/form-field';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { map } from 'rxjs/operators';\nimport { LuMultiSelectInputComponent } from '../input/select-input.component';\nimport { LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS } from './default-displayer.translate';\n\n@Component({\n\tselector: 'lu-multi-select-default-displayer',\n\tstandalone: true,\n\timports: [AsyncPipe, LuTooltipModule, NgIf, NgFor, NgPlural, NgPluralCase, ɵLuOptionOutletDirective, FormsModule, InputDirective],\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer\">\n\t\t\t<input\n\t\t\t\tclass=\"multipleSelect-displayer-search\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t[attr.aria-expanded]=\"select.isPanelOpen\"\n\t\t\t\t[attr.aria-activedescendant]=\"select.activeDescendant$ | async\"\n\t\t\t\t[attr.aria-controls]=\"ariaControls\"\n\t\t\t\t[disabled]=\"select.disabled\"\n\t\t\t\t[readonly]=\"!select.searchable\"\n\t\t\t\t#inputElement\n\t\t\t\tngModel\n\t\t\t\t(ngModelChange)=\"select.clueChanged($event)\"\n\t\t\t\t[placeholder]=\"placeholder$ | async\"\n\t\t\t\t(keydown.backspace)=\"inputBackspace()\"\n\t\t\t\trole=\"combobox\"\n\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\tluInput\n\t\t\t/>\n\t\t\t<div *ngFor=\"let option of displayedOptions$ | async; let index = index\" class=\"multipleSelect-displayer-chip chip\" [class.mod-unkillable]=\"disabled\">\n\t\t\t\t<span class=\"multipleSelect-displayer-chip-value\"><ng-container *luOptionOutlet=\"select.valueTpl || select.optionTpl; value: option\"></ng-container></span>\n\t\t\t\t<button *ngIf=\"!disabled\" type=\"button\" class=\"chip-kill\" (click)=\"unselectOption(option, $event)\">\n\t\t\t\t\t<span class=\"u-mask\">{{ intl.removeOption }}</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class=\"chip\" *ngIf=\"overflowOptions$ | async as overflow\">+ {{ overflow }}</div>\n\t\t</div>\n\t`,\n\tstyleUrls: ['./default-displayer.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuMultiSelectDefaultDisplayerComponent<T> implements OnInit {\n\tselect = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\tintl = getIntl(LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS);\n\n\tprotected destroyRef = inject(DestroyRef);\n\n\t@ViewChild('inputElement')\n\tinputElementRef: ElementRef<HTMLInputElement>;\n\n\tget disabled() {\n\t\treturn this.select.disabled;\n\t}\n\n\tget value(): T[] {\n\t\treturn this.select.value || [];\n\t}\n\n\tget ariaControls() {\n\t\treturn this.select.ariaControls;\n\t}\n\n\tcontext = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\tplaceholder$ = this.context.option$.pipe(\n\t\tmap((options) => {\n\t\t\tif ((options || []).length > 0) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\treturn this.select.placeholder;\n\t\t}),\n\t);\n\n\tdisplayedOptions$ = this.context.option$.pipe(\n\t\tmap((options) => {\n\t\t\tif (this.select.maxValuesShown) {\n\t\t\t\treturn (options || []).slice(0, this.select.maxValuesShown);\n\t\t\t}\n\t\t\treturn options;\n\t\t}),\n\t);\n\n\toverflowOptions$ = this.context.option$.pipe(\n\t\tmap((options) => {\n\t\t\treturn Math.max(0, (options || []).length - this.select.maxValuesShown);\n\t\t}),\n\t);\n\n\tunselectOption(option: T, $event?: Event): void {\n\t\tif ($event) {\n\t\t\t$event.stopPropagation();\n\t\t\t$event.preventDefault();\n\t\t}\n\t\tthis.select.updateValue(\n\t\t\tthis.value.filter((o) => o !== option),\n\t\t\ttrue,\n\t\t);\n\t\tsetTimeout(() => {\n\t\t\tthis.select.panelRef?.updatePosition();\n\t\t\tthis.inputElementRef.nativeElement.focus();\n\t\t});\n\t}\n\n\tinputBackspace(): void {\n\t\tif (this.value.length > 0 && this.inputElementRef.nativeElement.value.length === 0) {\n\t\t\tthis.unselectOption(this.value[this.value.length - 1]);\n\t\t\tthis.select.panelRef?.updateSelectedOptions(this.value);\n\t\t}\n\t}\n\tngOnInit(): void {\n\t\tthis.select.focusInput$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data?: { keepClue: true }) => {\n\t\t\t// Everytime we want to focus, we need to reset the input\n\t\t\t// This is done when a value is selected and when panel is opened.\n\t\t\tif (!data?.keepClue) {\n\t\t\t\tthis.inputElementRef.nativeElement.value = '';\n\t\t\t\tthis.select.clueChanged('');\n\t\t\t}\n\n\t\t\tthis.inputElementRef.nativeElement.focus();\n\t\t});\n\t\tthis.select.emptyClue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tthis.inputElementRef.nativeElement.value = '';\n\t\t});\n\t}\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { LuOptionContext } from '@lucca-front/ng/core-select';\nimport { LuMultiSelectInputComponent } from '../input';\n\n@Directive({\n\tselector: '[luMultiDisplayer]',\n\tstandalone: true,\n})\nexport class LuMultiDisplayerDirective<T> {\n\t@Input('luMultiDisplayerSelect') set select(select: LuMultiSelectInputComponent<T>) {\n\t\tselect.valuesTpl = this.templateRef;\n\t}\n\n\tpublic constructor(private templateRef: TemplateRef<LuOptionContext<T[]>>) {}\n\n\tpublic static ngTemplateContextGuard<T>(_dir: LuMultiDisplayerDirective<T>, ctx: unknown): ctx is LuOptionContext<T[]> {\n\t\treturn true;\n\t}\n}\n","import { DestroyRef, Directive, ElementRef, HostBinding, inject, OnInit } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from '@lucca-front/ng/core-select';\nimport { map } from 'rxjs/operators';\nimport { LuMultiSelectInputComponent } from '../input/select-input.component';\n\n@Directive({\n\tselector: '[luMultiSelectDisplayerInput]',\n\tstandalone: true,\n\thost: {\n\t\t'aria-haspopup': 'listbox',\n\t\trole: 'combobox',\n\t\tclass: 'multipleSelect-displayer-search',\n\t},\n})\nexport class LuMultiSelectDisplayerInputDirective<T> implements OnInit {\n\tselect = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\n\tcontext = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\telementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n\tdestroyRef = inject(DestroyRef);\n\n\t@HostBinding('attr.aria-expanded')\n\tpanelOpen = false;\n\n\t@HostBinding('attr.aria-activedescendant')\n\tactiveDescendant = '';\n\n\t@HostBinding('attr.aria-controls')\n\tcontrols = this.select?.ariaControls;\n\n\t@HostBinding('disabled')\n\tdisabled = false;\n\n\t@HostBinding('placeholder')\n\tplaceholder = '';\n\n\tngOnInit(): void {\n\t\tthis.context.option$\n\t\t\t.pipe(\n\t\t\t\tmap((options) => {\n\t\t\t\t\tif ((options || []).length > 0) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t\treturn this.select.placeholder || '';\n\t\t\t\t}),\n\t\t\t\ttakeUntilDestroyed(this.destroyRef),\n\t\t\t)\n\t\t\t.subscribe((placeholder) => (this.placeholder = placeholder));\n\t\tthis.select.isPanelOpen$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((open) => {\n\t\t\tthis.panelOpen = open;\n\t\t});\n\t\tthis.select.activeDescendant$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((activeDescendant) => {\n\t\t\tthis.activeDescendant = activeDescendant;\n\t\t});\n\t\tthis.context.isDisabled$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((disabled) => {\n\t\t\tthis.disabled = disabled;\n\t\t});\n\t\tthis.select.focusInput$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tthis.elementRef.nativeElement.value = '';\n\t\t\tthis.select.clueChanged('');\n\t\t\tthis.elementRef.nativeElement.focus();\n\t\t});\n\t\tthis.select.emptyClue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tthis.elementRef.nativeElement.value = '';\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","i1"],"mappings":"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"}
@@ -1,25 +1,24 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, numberAttribute, Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';
3
- import * as i1 from '@lucca-front/ng/core';
4
- import { NgClazz } from '@lucca-front/ng/core';
3
+ import { LuClass } from '@lucca-front/ng/core';
5
4
 
6
5
  class NumericBadgeComponent {
7
6
  constructor() {
8
- this.#ngClass = inject(NgClazz);
7
+ this.#luClass = inject(LuClass);
9
8
  this.palette = 'none';
10
9
  }
11
- #ngClass;
10
+ #luClass;
12
11
  ngOnChanges(changes) {
13
12
  if (changes['palette']?.currentValue || changes['size']?.currentValue) {
14
- this.#ngClass.ngClass = [`palette-${this.palette}`, `mod-${this.size}`];
13
+ this.#luClass.setState([`palette-${this.palette}`, `mod-${this.size}`]);
15
14
  }
16
15
  }
17
16
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: NumericBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.2", type: NumericBadgeComponent, isStandalone: true, selector: "lu-numeric-badge", inputs: { value: ["value", "value", numberAttribute], size: "size", palette: "palette" }, host: { classAttribute: "numericBadge" }, usesOnChanges: true, hostDirectives: [{ directive: i1.NgClazz }], ngImport: i0, template: "{{value}}\n", styles: [".numericBadge{--components-numericBadge-background: var(--palettes-200, var(--palettes-grey-200));--components-numericBadge-color: var(--palettes-800, var(--palettes-grey-700));--components-numericBadge-size: 1.5rem;--components-numericBadge-fontSize: var(--sizes-S-fontSize);--components-numericBadge-lineHeight: var(--sizes-S-lineHeight);--components-numericBadge-borderRadius: var(--commons-borderRadius-L);display:inline-flex;align-items:center;justify-content:center;height:var(--components-numericBadge-size);min-width:var(--components-numericBadge-size);padding:var(--spacings-XXS);font-size:var(--components-numericBadge-fontSize);line-height:var(--components-numericBadge-lineHeight);font-weight:600;background-color:var(--components-numericBadge-background);color:var(--components-numericBadge-color);border-radius:var(--components-numericBadge-borderRadius);transition-property:background-color,color;transition-duration:var(--commons-animations-durations-fast);transition-timing-function:ease}.numericBadge.mod-S{--components-numericBadge-size: 1.25rem;--components-numericBadge-borderRadius: 6px;--components-numericBadge-fontSize: var(--sizes-XS-fontSize);--components-numericBadge-lineHeight: var(--sizes-XS-lineHeight)}.numericBadge.mod-XS{--components-numericBadge-size: 1rem;--components-numericBadge-borderRadius: var(--commons-borderRadius-M);--components-numericBadge-fontSize: var(--sizes-XS-fontSize);--components-numericBadge-lineHeight: var(--sizes-XS-lineHeight)}:host{display:inline-flex}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
17
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.2", type: NumericBadgeComponent, isStandalone: true, selector: "lu-numeric-badge", inputs: { value: ["value", "value", numberAttribute], size: "size", palette: "palette" }, host: { classAttribute: "numericBadge" }, providers: [LuClass], usesOnChanges: true, ngImport: i0, template: "{{value}}\n", styles: [".numericBadge{--components-numericBadge-background: var(--palettes-200, var(--palettes-grey-200));--components-numericBadge-color: var(--palettes-800, var(--palettes-grey-700));--components-numericBadge-size: 1.5rem;--components-numericBadge-fontSize: var(--sizes-S-fontSize);--components-numericBadge-lineHeight: var(--sizes-S-lineHeight);--components-numericBadge-borderRadius: var(--commons-borderRadius-L);display:inline-flex;align-items:center;justify-content:center;height:var(--components-numericBadge-size);min-width:var(--components-numericBadge-size);padding:var(--spacings-XXS);font-size:var(--components-numericBadge-fontSize);line-height:var(--components-numericBadge-lineHeight);font-weight:600;background-color:var(--components-numericBadge-background);color:var(--components-numericBadge-color);border-radius:var(--components-numericBadge-borderRadius);transition-property:background-color,color;transition-duration:var(--commons-animations-durations-fast);transition-timing-function:ease}.numericBadge.mod-S{--components-numericBadge-size: 1.25rem;--components-numericBadge-borderRadius: 6px;--components-numericBadge-fontSize: var(--sizes-XS-fontSize);--components-numericBadge-lineHeight: var(--sizes-XS-lineHeight)}.numericBadge.mod-XS{--components-numericBadge-size: 1rem;--components-numericBadge-borderRadius: var(--commons-borderRadius-M);--components-numericBadge-fontSize: var(--sizes-XS-fontSize);--components-numericBadge-lineHeight: var(--sizes-XS-lineHeight)}:host{display:inline-flex}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
19
18
  }
20
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: NumericBadgeComponent, decorators: [{
21
20
  type: Component,
22
- args: [{ selector: 'lu-numeric-badge', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [NgClazz], host: {
21
+ args: [{ selector: 'lu-numeric-badge', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [LuClass], host: {
23
22
  class: 'numericBadge',
24
23
  }, encapsulation: ViewEncapsulation.None, template: "{{value}}\n", styles: [".numericBadge{--components-numericBadge-background: var(--palettes-200, var(--palettes-grey-200));--components-numericBadge-color: var(--palettes-800, var(--palettes-grey-700));--components-numericBadge-size: 1.5rem;--components-numericBadge-fontSize: var(--sizes-S-fontSize);--components-numericBadge-lineHeight: var(--sizes-S-lineHeight);--components-numericBadge-borderRadius: var(--commons-borderRadius-L);display:inline-flex;align-items:center;justify-content:center;height:var(--components-numericBadge-size);min-width:var(--components-numericBadge-size);padding:var(--spacings-XXS);font-size:var(--components-numericBadge-fontSize);line-height:var(--components-numericBadge-lineHeight);font-weight:600;background-color:var(--components-numericBadge-background);color:var(--components-numericBadge-color);border-radius:var(--components-numericBadge-borderRadius);transition-property:background-color,color;transition-duration:var(--commons-animations-durations-fast);transition-timing-function:ease}.numericBadge.mod-S{--components-numericBadge-size: 1.25rem;--components-numericBadge-borderRadius: 6px;--components-numericBadge-fontSize: var(--sizes-XS-fontSize);--components-numericBadge-lineHeight: var(--sizes-XS-lineHeight)}.numericBadge.mod-XS{--components-numericBadge-size: 1rem;--components-numericBadge-borderRadius: var(--commons-borderRadius-M);--components-numericBadge-fontSize: var(--sizes-XS-fontSize);--components-numericBadge-lineHeight: var(--sizes-XS-lineHeight)}:host{display:inline-flex}\n"] }]
25
24
  }], propDecorators: {
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-numeric-badge.mjs","sources":["../../../packages/ng/numeric-badge/numeric-badge.component.ts","../../../packages/ng/numeric-badge/numeric-badge.component.html","../../../packages/ng/numeric-badge/lucca-front-ng-numeric-badge.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, inject, Input, numberAttribute, OnChanges, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { NgClazz, Palette } from '@lucca-front/ng/core';\n\n@Component({\n\tselector: 'lu-numeric-badge',\n\tstandalone: true,\n\ttemplateUrl: './numeric-badge.component.html',\n\tstyleUrls: ['./numeric-badge.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [NgClazz],\n\thost: {\n\t\tclass: 'numericBadge',\n\t},\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class NumericBadgeComponent implements OnChanges {\n\t#ngClass = inject(NgClazz);\n\n\t@Input({ required: true, transform: numberAttribute })\n\t/**\n\t * The value to display, number only.\n\t */\n\tvalue!: number;\n\n\t@Input()\n\t/**\n\t * The size of the badge\n\t */\n\tsize: 'XS' | 'S' | 'M';\n\n\t@Input()\n\t/**\n\t * The palette to use for this badge. Defaults to 'none' (inherits parent palette)\n\t */\n\tpalette: Palette = 'none';\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes['palette']?.currentValue || changes['size']?.currentValue) {\n\t\t\tthis.#ngClass.ngClass = [`palette-${this.palette}`, `mod-${this.size}`];\n\t\t}\n\t}\n}\n","{{value}}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAea,qBAAqB,CAAA;AAZlC,IAAA,WAAA,GAAA;AAaC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAkB3B,IAAO,CAAA,OAAA,GAAY,MAAM,CAAC;AAO1B,KAAA;AAzBA,IAAA,QAAQ,CAAmB;AAoB3B,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE;AACtE,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,WAAW,IAAI,CAAC,OAAO,CAAA,CAAE,EAAE,CAAO,IAAA,EAAA,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC,CAAC;AACxE,SAAA;KACD;8GAzBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAGG,eAAe,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,OAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBpD,aACA,EAAA,MAAA,EAAA,CAAA,++CAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDca,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAZjC,SAAS;+BACC,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,eAAA,EAGC,uBAAuB,CAAC,MAAM,EAC/B,cAAA,EAAA,CAAC,OAAO,CAAC,EACnB,IAAA,EAAA;AACL,wBAAA,KAAK,EAAE,cAAc;qBACrB,EACc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,++CAAA,CAAA,EAAA,CAAA;;AAMrC;;AAEG;QACH,KAAK,EAAA,CAAA;sBAJJ,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,CAAA;;AAOrD;;AAEG;QACH,IAAI,EAAA,CAAA;sBAJH,KAAK;;AAON;;AAEG;QACH,OAAO,EAAA,CAAA;sBAJN,KAAK;;;AE9BP;;AAEG;;;;"}
1
+ {"version":3,"file":"lucca-front-ng-numeric-badge.mjs","sources":["../../../packages/ng/numeric-badge/numeric-badge.component.ts","../../../packages/ng/numeric-badge/numeric-badge.component.html","../../../packages/ng/numeric-badge/lucca-front-ng-numeric-badge.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, inject, Input, numberAttribute, OnChanges, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { LuClass, Palette } from '@lucca-front/ng/core';\n\n@Component({\n\tselector: 'lu-numeric-badge',\n\tstandalone: true,\n\ttemplateUrl: './numeric-badge.component.html',\n\tstyleUrls: ['./numeric-badge.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tproviders: [LuClass],\n\thost: {\n\t\tclass: 'numericBadge',\n\t},\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class NumericBadgeComponent implements OnChanges {\n\t#luClass = inject(LuClass);\n\n\t@Input({ required: true, transform: numberAttribute })\n\t/**\n\t * The value to display, number only.\n\t */\n\tvalue!: number;\n\n\t@Input()\n\t/**\n\t * The size of the badge\n\t */\n\tsize: 'XS' | 'S' | 'M';\n\n\t@Input()\n\t/**\n\t * The palette to use for this badge. Defaults to 'none' (inherits parent palette)\n\t */\n\tpalette: Palette = 'none';\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes['palette']?.currentValue || changes['size']?.currentValue) {\n\t\t\tthis.#luClass.setState([`palette-${this.palette}`, `mod-${this.size}`]);\n\t\t}\n\t}\n}\n","{{value}}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAea,qBAAqB,CAAA;AAZlC,IAAA,WAAA,GAAA;AAaC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAkB3B,IAAO,CAAA,OAAA,GAAY,MAAM,CAAC;AAO1B,KAAA;AAzBA,IAAA,QAAQ,CAAmB;AAoB3B,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE;AACtE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,IAAI,CAAC,OAAO,CAAE,CAAA,EAAE,OAAO,IAAI,CAAC,IAAI,CAAE,CAAA,CAAC,CAAC,CAAC;AACxE,SAAA;KACD;8GAzBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,wFAGG,eAAe,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EATxC,CAAC,OAAO,CAAC,+CCTrB,aACA,EAAA,MAAA,EAAA,CAAA,++CAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDca,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAZjC,SAAS;+BACC,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,eAAA,EAGC,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA,CAAC,OAAO,CAAC,EACd,IAAA,EAAA;AACL,wBAAA,KAAK,EAAE,cAAc;qBACrB,EACc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,++CAAA,CAAA,EAAA,CAAA;;AAMrC;;AAEG;QACH,KAAK,EAAA,CAAA;sBAJJ,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,CAAA;;AAOrD;;AAEG;QACH,IAAI,EAAA,CAAA;sBAJH,KAAK;;AAON;;AAEG;QACH,OAAO,EAAA,CAAA;sBAJN,KAAK;;;AE9BP;;AAEG;;;;"}