@lucca-front/ng 16.4.3 → 16.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/button/button.component.d.ts +20 -0
- package/button/index.d.ts +5 -0
- package/button/public-api.d.ts +1 -0
- package/callout/{callout.component.d.ts → callout/callout.component.d.ts} +8 -16
- package/callout/callout-disclosure/callout-disclosure.component.d.ts +13 -0
- package/callout/callout-feedback-item/callout-feedback-item.component.d.ts +5 -0
- package/callout/callout-feedback-list/callout-feedback-list.component.d.ts +12 -0
- package/callout/callout-popover/callout-popover.component.d.ts +50 -0
- package/callout/callout-state.d.ts +7 -0
- package/callout/public-api.d.ts +5 -1
- package/core/portal/index.d.ts +2 -0
- package/core/portal/portal-content.d.ts +2 -0
- package/core/portal/portal.directive.d.ts +13 -0
- package/core/public-api.d.ts +1 -0
- package/dockerRegistry-c4c72252-360b-4df7-8b16-dcbd6f477e82.env +1 -0
- package/esm2022/api/select/input/api-select-input.component.mjs +3 -3
- package/esm2022/button/button.component.mjs +60 -0
- package/esm2022/button/lucca-front-ng-button.mjs +5 -0
- package/esm2022/button/public-api.mjs +2 -0
- package/esm2022/callout/callout/callout.component.mjs +82 -0
- package/esm2022/callout/callout-disclosure/callout-disclosure.component.mjs +41 -0
- package/esm2022/callout/callout-feedback-item/callout-feedback-item.component.mjs +14 -0
- package/esm2022/callout/callout-feedback-list/callout-feedback-list.component.mjs +24 -0
- package/esm2022/callout/callout-popover/callout-popover.component.mjs +164 -0
- package/esm2022/callout/callout-state.mjs +15 -0
- package/esm2022/callout/public-api.mjs +6 -2
- package/esm2022/core/date/native/native-date.adapter.mjs +7 -4
- package/esm2022/core/portal/index.mjs +3 -0
- package/esm2022/core/portal/portal-content.mjs +2 -0
- package/esm2022/core/portal/portal.directive.mjs +43 -0
- package/esm2022/core/public-api.mjs +2 -1
- package/esm2022/core-select/input/select-input.component.mjs +2 -1
- package/esm2022/date/select/date-select-input.component.mjs +3 -3
- package/esm2022/department/select/input/department-select-input.component.mjs +3 -3
- package/esm2022/establishment/select/input/establishment-select-input.component.mjs +3 -3
- package/esm2022/form-field/form-field.component.mjs +4 -4
- package/esm2022/forms/checkboxfield/checkboxfield.component.mjs +3 -4
- package/esm2022/forms/switchfield/switchfield.component.mjs +3 -4
- package/esm2022/forms/textfield/textfield.component.mjs +1 -2
- package/esm2022/icon/icon.component.mjs +4 -6
- package/esm2022/inline-message/inline-message.component.mjs +5 -9
- package/esm2022/input/clearer/clearer.component.mjs +3 -3
- package/esm2022/multi-select/displayer/default-displayer.component.mjs +3 -3
- package/esm2022/multi-select/input/select-input.component.mjs +5 -4
- package/esm2022/new-badge/new-badge.component.mjs +10 -4
- package/esm2022/numeric-badge/numeric-badge.component.mjs +43 -0
- package/esm2022/numeric-badge/public-api.mjs +2 -2
- package/esm2022/qualification/select/input/qualification-select-input.component.mjs +3 -3
- package/esm2022/select/input/select-input.component.mjs +2 -2
- package/esm2022/simple-select/api/api-v3.directive.mjs +8 -3
- package/esm2022/simple-select/api/api-v4.directive.mjs +10 -4
- package/esm2022/simple-select/input/select-input.component.mjs +5 -4
- package/esm2022/user/picture/user-picture.component.mjs +16 -12
- package/esm2022/user/select/input/user-select-input.component.mjs +3 -3
- package/fesm2022/lucca-front-ng-api.mjs +2 -2
- package/fesm2022/lucca-front-ng-api.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-button.mjs +66 -0
- package/fesm2022/lucca-front-ng-button.mjs.map +1 -0
- package/fesm2022/lucca-front-ng-callout.mjs +261 -21
- package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select.mjs +1 -0
- package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core.mjs +48 -5
- package/fesm2022/lucca-front-ng-core.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-date.mjs +2 -2
- package/fesm2022/lucca-front-ng-date.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-department.mjs +2 -2
- package/fesm2022/lucca-front-ng-department.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-establishment.mjs +2 -2
- package/fesm2022/lucca-front-ng-establishment.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-field.mjs +3 -3
- package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms.mjs +4 -7
- package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-icon.mjs +3 -5
- package/fesm2022/lucca-front-ng-icon.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-inline-message.mjs +4 -8
- package/fesm2022/lucca-front-ng-inline-message.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-input.mjs +2 -2
- package/fesm2022/lucca-front-ng-input.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-multi-select.mjs +6 -5
- package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-new-badge.mjs +9 -3
- package/fesm2022/lucca-front-ng-new-badge.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-numeric-badge.mjs +12 -6
- package/fesm2022/lucca-front-ng-numeric-badge.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-qualification.mjs +2 -2
- package/fesm2022/lucca-front-ng-qualification.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-select.mjs +2 -2
- package/fesm2022/lucca-front-ng-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-simple-select-api.mjs +16 -5
- package/fesm2022/lucca-front-ng-simple-select-api.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-simple-select.mjs +4 -3
- package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-user.mjs +15 -11
- package/fesm2022/lucca-front-ng-user.mjs.map +1 -1
- package/icon/icon.component.d.ts +1 -1
- package/new-badge/new-badge.component.d.ts +1 -0
- package/numeric-badge/{numeric-badge/numeric-badge.component.d.ts → numeric-badge.component.d.ts} +6 -2
- package/numeric-badge/public-api.d.ts +1 -1
- package/package.json +32 -26
- package/src/definitions/select/_select-input.scss +11 -9
- package/user/picture/user-picture.component.d.ts +6 -4
- package/esm2022/callout/callout.component.mjs +0 -79
- package/esm2022/numeric-badge/numeric-badge/numeric-badge.component.mjs +0 -37
|
@@ -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/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}\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},\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},\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},\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},\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},\n};\n","import { EventEmitter } from '@angular/core';\nimport { LuSelectPanelRef } from '@lucca-front/ng/core-select';\nimport { Observable } from 'rxjs';\n\nexport abstract class LuMultiSelectPanelRef<T> extends LuSelectPanelRef<T, T[]> {\n\tselectAll = new EventEmitter<void>();\n\n\tareAllOptionsSelected$: Observable<boolean | undefined>;\n\n\toverride close(): void {\n\t\tsuper.close();\n\t\tthis.selectAll.complete();\n\t}\n\n\tabstract updateSelectedOptions(selectedOptions: T[]): void;\n\n\tabstract useExpandedPosition(): void;\n\n\tabstract useDefaultPosition(): void;\n}\n","import { InjectionToken, TemplateRef, Type } from '@angular/core';\nimport { LuOptionContext } 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\tsearchable: boolean;\n\texpanded: boolean;\n\tcanSelectAll: boolean;\n\tareAllOptionsSelected$: Observable<boolean | undefined>;\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, ElementRef, HostListener, inject, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { SELECT_ID, ɵLuOptionComponent, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { asyncScheduler, filter, map, observeOn, take, takeUntil } from 'rxjs';\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\tisExpanded = this.panelData.expanded;\n\n\toptions$ = this.panelData.options$;\n\tloading$ = this.panelData.loading$;\n\tareAllOptionsSelected$ = this.panelData.areAllOptionsSelected$;\n\tcanSelectAll = false; // TODO connect to panel options when we'll be ok on designing select all\n\toptionComparer = this.panelData.optionComparer;\n\tselectedOptions: T[] = this.panelData.initialValue || [];\n\toptionTpl = this.panelData.optionTpl;\n\tsearchable = this.panelData.searchable;\n\n\t@ViewChild('searchInput')\n\tsearchInput: ElementRef<HTMLInputElement> | undefined;\n\n\t@ViewChildren(ɵLuOptionComponent) optionsQL: QueryList<ɵLuOptionComponent<T>>;\n\tprivate leftColumnKeyManager: ActiveDescendantKeyManager<ɵLuOptionComponent<T>>;\n\n\t@ViewChildren(ɵLuMultiSelectSelectedChipDirective) selectedChipsQL: QueryList<ɵLuMultiSelectSelectedChipDirective<T>>;\n\tprivate rightColumnKeyManager: ActiveDescendantKeyManager<ɵLuMultiSelectSelectedChipDirective<T>>;\n\n\tsearch: string | null = null;\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.initLeftColumnKeyManager();\n\t\tthis.initRightColumnKeyManager();\n\n\t\tif (this.searchInput) {\n\t\t\tsetTimeout(() => this.searchInput.nativeElement.focus());\n\t\t}\n\n\t\tif (this.isExpanded) {\n\t\t\tthis.panelRef.useExpandedPosition();\n\t\t} else {\n\t\t\tthis.panelRef.useDefaultPosition();\n\t\t}\n\t}\n\n\t@HostListener('keydown', ['$event'])\n\tonKeyDown($event: KeyboardEvent): void {\n\t\tif ($event.key === 'Escape') {\n\t\t\treturn this.panelRef.close();\n\t\t}\n\t}\n\n\tonLeftColumnKeydown($event: KeyboardEvent): void {\n\t\tif ($event.code === 'Space' || $event.code === 'Enter') {\n\t\t\tthis.toggleOption(this.leftColumnKeyManager?.activeItem?.option);\n\t\t\t$event.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.leftColumnKeyManager?.onKeydown($event);\n\t}\n\n\tonRightColumnKeydown($event: KeyboardEvent): void {\n\t\tconst option = this.rightColumnKeyManager?.activeItem?.option;\n\n\t\tif (option && ($event.code === 'Space' || $event.code === 'Enter')) {\n\t\t\tthis.onChipKillClick(option);\n\t\t\t$event.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.rightColumnKeyManager?.onKeydown($event);\n\t}\n\n\t// toggleAll(shouldSelectAll: boolean): void {\n\t// \tif (shouldSelectAll) {\n\t// \t\tthis.panelRef.selectAll.emit();\n\t// \t} else {\n\t// \t\tthis.clear();\n\t// \t}\n\t// }\n\n\tupdateClue(clue: string | null): void {\n\t\tthis.search = clue;\n\t\tthis.panelRef.clueChanged.emit(clue);\n\n\t\tsetTimeout(() => this.leftColumnKeyManager.setFirstItemActive());\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\tthis.leftColumnKeyManager?.setActiveItem(this.optionsQL.toArray().findIndex((o) => o.option === option));\n\t}\n\n\tonChipKillClick(option: T): void {\n\t\tconst optionToUnselectIndex = this.selectedOptions.findIndex((o) => this.optionComparer(o, option));\n\t\tthis.selectedOptions = this.selectedOptions.filter((_, index) => index !== optionToUnselectIndex);\n\t\tthis.panelRef.emitValue(this.selectedOptions);\n\n\t\tif (this.selectedOptions.length && this.rightColumnKeyManager) {\n\t\t\toptionToUnselectIndex >= this.selectedOptions.length ? this.rightColumnKeyManager.setPreviousItemActive() : this.rightColumnKeyManager.setNextItemActive();\n\t\t}\n\t}\n\n\tclear(): void {\n\t\tthis.selectedOptions = [];\n\t\tthis.panelRef.emitValue(this.selectedOptions);\n\t}\n\n\tprotected initLeftColumnKeyManager(): void {\n\t\tthis.leftColumnKeyManager = 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.leftColumnKeyManager.setActiveItem(selectedIndex));\n\t\t}\n\n\t\tthis.leftColumnKeyManager.change\n\t\t\t.pipe(\n\t\t\t\tmap(() => this.leftColumnKeyManager.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\t}\n\n\tprotected initRightColumnKeyManager(): void {\n\t\tthis.rightColumnKeyManager = new ActiveDescendantKeyManager(this.selectedChipsQL).withHomeAndEnd();\n\t}\n}\n","<!-- TODO : il faudrait remplacer la classe is-expanded par un attribut aria-expanded=\"true\"-->\n<ng-template #searchInputTpl>\n\t<label class=\"panel-search textfield mod-search mod-outlined lu-multiselect-search\">\n\t\t<input\n\t\t\t#searchInput\n\t\t\tclass=\"textfield-input\"\n\t\t\t[(ngModel)]=\"search\"\n\t\t\t(ngModelChange)=\"updateClue($event)\"\n\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t/>\n\t\t<span class=\"u-mask textfield-label\">{{ intl.search }}</span>\n\t</label>\n</ng-template>\n\n<div\n\tclass=\"lu-picker-panel lu-option-picker-panel lu-multiselect-panel mod-multiple\"\n\trole=\"dialog\"\n\tcdkTrapFocus\n\t*ngIf=\"{ options: options$ | async } as ctx\"\n\t[cdkTrapFocusAutoCapture]=\"true\"\n\t[class.is-expanded]=\"isExpanded\"\n\t[attr.aria-expanded]=\"isExpanded ? 'true' : undefined\"\n>\n\t<div class=\"lu-multiselect-panel-form\" *ngIf=\"searchable && !isExpanded\">\n\t\t<ng-container *ngTemplateOutlet=\"searchInputTpl\"></ng-container>\n\t\t<!--\t\t<button class=\"button mod-text mod-icon lu-multiselect-expandbutton\" type=\"button\" (click)=\"toggleExpansion()\">-->\n\t\t<!--\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon\" [class.icon-fullscreen]=\"!isExpanded\" [class.icon-fullscreenExit]=\"isExpanded\"></span>-->\n\t\t<!--\t\t\t{{ isExpanded ? intl.reduce : intl.expand }}-->\n\t\t<!--\t\t</button>-->\n\t</div>\n\t<div class=\"lu-multiselect-panel-columns\">\n\t\t<div class=\"lu-multiselect-panel-columns-col1\" (keydown)=\"onLeftColumnKeydown($event)\">\n\t\t\t<div class=\"lu-multiselect-panel-form\" *ngIf=\"searchable && isExpanded\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"searchInputTpl\"></ng-container>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclass=\"lu-picker-content lu-multiselect-panel-columns-col1-content\"\n\t\t\t\t[class.is-loading]=\"loading$ | async\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\tcdkFocusInitial\n\t\t\t\trole=\"list\"\n\t\t\t\taria-multiselectable=\"true\"\n\t\t\t\t(scroll)=\"onScroll($event)\"\n\t\t\t>\n\t\t\t\t<ng-container *ngIf=\"searchable\">\n\t\t\t\t\t<div class=\"optionPlaceholder\" *ngIf=\"search && !ctx.options?.length\">\n\t\t\t\t\t\t<p class=\"optionPlaceholder-content u-marginBottom0\">{{ intl.emptyResults }}</p>\n\t\t\t\t\t\t<button type=\"button\" class=\"link\" (click)=\"updateClue(null); searchInput.nativeElement.focus()\">{{ intl.clearSearch }}</button>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-container>\n\n\t\t\t\t<!--\t\t\t\t<ng-container *ngIf=\"canSelectAll\">-->\n\t\t\t\t<!--\t\t\t\t\t<label class=\"checkbox lu-multiselect-selectall\" role=\"option\" [for]=\"selectId + '-select-all'\">-->\n\t\t\t\t<!--\t\t\t\t\t\t<input-->\n\t\t\t\t<!--\t\t\t\t\t\t\tclass=\"checkbox-input\"-->\n\t\t\t\t<!--\t\t\t\t\t\t\ttype=\"checkbox\"-->\n\t\t\t\t<!--\t\t\t\t\t\t\t[class.is-incomplete]=\"(areAllOptionsSelected$ | async) !== true && selectedOptions.length\"-->\n\t\t\t\t<!--\t\t\t\t\t\t\t[id]=\"selectId + '-select-all'\"-->\n\t\t\t\t<!--\t\t\t\t\t\t\t[ngModel]=\"(areAllOptionsSelected$ | async) === true || !!selectedOptions.length\"-->\n\t\t\t\t<!--\t\t\t\t\t\t\t(ngModelChange)=\"toggleAll($event)\"-->\n\t\t\t\t<!--\t\t\t\t\t\t/>-->\n\t\t\t\t<!--\t\t\t\t\t\t<span class=\"checkbox-label\">{{ intl.selectAll }}</span>-->\n\t\t\t\t<!--\t\t\t\t\t</label>-->\n\t\t\t\t<!--\t\t\t\t</ng-container>-->\n\n\t\t\t\t<div class=\"lu-picker-content-option\">\n\t\t\t\t\t<lu-select-option\n\t\t\t\t\t\t*ngFor=\"let option of ctx.options; let index = index\"\n\t\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t\t[optionTpl]=\"optionTpl\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected:optionComparer:selectedOptions\"\n\t\t\t\t\t\t(click)=\"toggleOption(option)\"\n\t\t\t\t\t></lu-select-option>\n\t\t\t\t</div>\n\n\t\t\t\t<div *ngIf=\"loading$ | async\" class=\"panel-loading loading lu-picker-loading\"></div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"lu-multiselect-panel-columns-col2\" *ngIf=\"isExpanded\">\n\t\t\t<div class=\"lu-multiselect-emptystate\" *ngIf=\"!selectedOptions.length\">{{ intl.emptySelection }}</div>\n\t\t\t<div class=\"lu-multiselect-chips\" role=\"listbox\" tabindex=\"0\" *ngIf=\"selectedOptions.length\" (keydown)=\"onRightColumnKeydown($event)\">\n\t\t\t\t<div role=\"option\" class=\"chip lu-multiselect-chip\" *ngFor=\"let option of selectedOptions\" [luMultiSelectSelectedChip]=\"option\">\n\t\t\t\t\t<ng-container *luOptionOutlet=\"optionTpl; value: option\"></ng-container>\n\t\t\t\t\t<button type=\"button\" class=\"chip-kill\" tabindex=\"-1\" (click)=\"onChipKillClick(option)\"></button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div *ngIf=\"selectedOptions.length\" class=\"lu-multiselect-panel-columns-col2-footer\">\n\t\t\t\t<button class=\"button mod-text\" type=\"button\" (click)=\"clear()\">{{ intl.clear }}</button>\n\t\t\t</div>\n\t\t</div>\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, inject, Injectable, Injector } from '@angular/core';\nimport { takeUntil } from 'rxjs';\nimport { LuMultiSelectPanelComponent } from '../panel';\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(\n\t\tprivate overlayRef: OverlayRef,\n\t\tparentInjector: Injector,\n\t\tpanelData: ILuMultiSelectPanelData<T>,\n\t\tprotected defaultPositionStrategy: PositionStrategy,\n\t\tprotected expandedPositionStrategy: PositionStrategy,\n\t) {\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\tuseExpandedPosition(): void {\n\t\tthis.overlayRef.updatePositionStrategy(this.expandedPositionStrategy);\n\t}\n\n\tuseDefaultPosition(): void {\n\t\tthis.overlayRef.updatePositionStrategy(this.defaultPositionStrategy);\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\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 = {}, expandedPositionStrategy?: PositionStrategy): LuMultiSelectPanelRef<T> {\n\t\tconst defaultOverlayConfig = this.buildDefaultOverlayConfig(defaultOverlayConfigOverride);\n\t\texpandedPositionStrategy ??= this.buildExpandedPositionStrategy();\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, expandedPositionStrategy);\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\tbuildExpandedPositionStrategy(): PositionStrategy {\n\t\tconst config = { overlapInput: true, offsetX: -4, offsetY: -4 };\n\t\treturn 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('top', 'right', config),\n\t\t\t\tthis.buildPosition('top', 'left', config),\n\t\t\t\tthis.buildPosition('bottom', 'right', config),\n\t\t\t\tthis.buildPosition('bottom', 'left', config),\n\t\t\t]);\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 { PositionStrategy } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, HostBinding, inject, Input, TemplateRef, Type } 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 { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { ReplaySubject } 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],\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})\nexport class LuMultiSelectInputComponent<T> extends ALuSelectInputComponent<T, T[]> implements ControlValueAccessor {\n\tintl = getIntl(LU_MULTI_SELECT_TRANSLATIONS);\n\n\t@HostBinding('class.mod-multiple') modMultipleClass = true;\n\n\t@Input() valuesTpl?: TemplateRef<LuOptionContext<T[]>> | Type<unknown> = LuMultiSelectDefaultDisplayerComponent;\n\n\t// TODO This is for select all\n\t// @Input() set areAllOptionsSelected(selected: boolean | undefined) {\n\t// \tthis.areAllOptionsSelected$.next(selected);\n\t// }\n\n\t@Input()\n\texpandedPositionStrategy?: PositionStrategy;\n\n\t// TODO this is for select all\n\t// @Output() selectAll = new EventEmitter<void>();\n\n\t@Input()\n\texpanded = false;\n\n\t@Input()\n\tpublic override get panelRef(): LuMultiSelectPanelRef<T> | undefined {\n\t\treturn this._panelRef;\n\t}\n\n\tprotected areAllOptionsSelected$ = new ReplaySubject<boolean | undefined>(1);\n\n\tprotected override _panelRef?: LuMultiSelectPanelRef<T>;\n\n\tprotected panelRefFactory = inject(LuMultiSelectPanelRefFactory);\n\n\tpublic override writeValue(value: T[]): void {\n\t\tsuper.writeValue(value);\n\t\tthis.panelRef?.updateSelectedOptions(value);\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\tsearchable: this.searchable,\n\t\t\t\toptionTpl: this.optionTpl,\n\t\t\t\tcanSelectAll: false, // TODO Connect this to this.selectAll.observed when we'll be fixed on how to implement select all\n\t\t\t\tareAllOptionsSelected$: this.areAllOptionsSelected$,\n\t\t\t\texpanded: this.expanded,\n\t\t\t},\n\t\t\tthis.overlayConfig,\n\t\t\tthis.expandedPositionStrategy,\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\t// TODO This is for select all\n\t\t// this.panelRef.selectAll.subscribe(() => this.selectAll.emit());\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}\n}\n","<div class=\"lu-select-placeholder\">{{ placeholder }}</div>\n<div class=\"lu-select-value\">\n\t<div class=\"lu-select-display-wrapper\">\n\t\t<ng-container *luOptionOutlet=\"valuesTpl; value: value\"></ng-container>\n\t</div>\n</div>\n<div class=\"lu-select-suffix\">\n\t<a *ngIf=\"hasValue && clearable\" role=\"button\" class=\"clear\" (click)=\"clearValue($event)\">\n\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-thinCross\"></span>\n\t\t<span class=\"u-mask\">{{ intl.clear }}</span>\n\t</a>\n</div>\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}\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},\n\ten: {\n\t\totherResult: 'other result',\n\t\totherResults: 'other results',\n\t\tshowResultsDetails: 'Show details',\n\t},\n\tde: {\n\t\totherResult: 'anderes Ergebnis',\n\t\totherResults: 'andere Ergebnisse',\n\t\tshowResultsDetails: 'Details anzeigen',\n\t},\n\tes: {\n\t\totherResult: 'otro resultado',\n\t\totherResults: 'otros resultados',\n\t\tshowResultsDetails: 'Mostrar detalles',\n\t},\n\tpt: {\n\t\totherResult: 'outro resultado',\n\t\totherResults: 'outros resultados',\n\t\tshowResultsDetails: 'Mostrar detalhes',\n\t},\n};\n","import { AsyncPipe, NgFor, NgIf, NgPlural, NgPluralCase } from '@angular/common';\nimport {\n\tAfterViewInit,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tDestroyRef,\n\tElementRef,\n\tHostBinding,\n\tNgZone,\n\tOnDestroy,\n\tOnInit,\n\tQueryList,\n\tViewChild,\n\tViewChildren,\n\tinject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { Observable, ReplaySubject, combineLatest, concatMap, debounceTime, distinctUntilChanged, map, startWith } from 'rxjs';\nimport { LuMultiSelectInputComponent } from '../input';\nimport { LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS } from './default-displayer.translate';\n\nfunction fromElementWidth(el: HTMLElement): Observable<number> {\n\treturn new Observable<number>((observer) => {\n\t\t// Emit the initial width\n\t\tobserver.next(el.getBoundingClientRect().width);\n\n\t\t// Emit the new width whenever the element is resized\n\t\tconst resizeObserver = new ResizeObserver((entries) => observer.next(entries[0].contentRect.width));\n\t\tresizeObserver.observe(el);\n\n\t\t// Cleanup observer on cancellation\n\t\treturn () => resizeObserver.disconnect();\n\t}).pipe(distinctUntilChanged());\n}\n\n@Component({\n\tselector: 'lu-multi-select-default-displayer',\n\tstandalone: true,\n\timports: [AsyncPipe, LuTooltipModule, NgIf, NgFor, NgPlural, NgPluralCase, ɵLuOptionOutletDirective],\n\ttemplate: `\n\t\t<div class=\"chips-container\" #chipsContainer>\n\t\t\t<div\n\t\t\t\t#chip\n\t\t\t\t*ngFor=\"let option of context.option$ | async; let index = index\"\n\t\t\t\tclass=\"chip lu-multiselect-chip\"\n\t\t\t\t[class.mod-unkillable]=\"disabled\"\n\t\t\t\t[attr.aria-hidden]=\"index >= ((visibleChipsCount$ | async) || 0) ? 'true' : undefined\"\n\t\t\t>\n\t\t\t\t<span class=\"lu-multiselect-chip-value\"><ng-container *luOptionOutlet=\"select.valueTpl || select.optionTpl; value: option\"></ng-container></span>\n\t\t\t\t<a href *ngIf=\"!disabled\" type=\"button\" class=\"chip-kill\" (click)=\"unselectOption(option, $event)\" [attr.tabindex]=\"index >= ((visibleChipsCount$ | async) || 0) ? -1 : undefined\"></a>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"lu-multiselect-counter\" #overflow>\n\t\t\t<ng-container *ngIf=\"hiddenChipsCount$ | async as count\">\n\t\t\t\t<div class=\"chip mod-unkillable lu-multiselect-counter-chip\" aria-hidden=\"true\">+ {{ count }}</div>\n\t\t\t\t<span class=\"u-mask\" [ngPlural]=\"count\">\n\t\t\t\t\t<ng-template ngPluralCase=\"=1\">{{ intl.otherResult }}</ng-template>\n\t\t\t\t\t<ng-template ngPluralCase=\"other\">{{ intl.otherResults }}</ng-template>\n\t\t\t\t</span>\n\t\t\t</ng-container>\n\t\t</div>\n\t`,\n\tstyleUrls: ['./default-displayer.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuMultiSelectDefaultDisplayerComponent<T> implements AfterViewInit, OnInit, OnDestroy {\n\tselect = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\telementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\tcdr = inject(ChangeDetectorRef);\n\tintl = getIntl(LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS);\n\n\tprotected destroyRef = inject(DestroyRef);\n\tprotected zone = inject(NgZone);\n\n\tget disabled() {\n\t\treturn this.select.disabled;\n\t}\n\n\t@ViewChild('overflow', { static: true })\n\toverflowCountContainer: ElementRef<HTMLElement>;\n\n\t@ViewChild('chipsContainer', { static: true })\n\tchipsContainer: ElementRef<HTMLElement>;\n\n\t@ViewChildren('chip')\n\tchipsQL: QueryList<ElementRef<HTMLElement>>;\n\n\tprotected ngAfterViewInit$ = new ReplaySubject<void>(1);\n\n\tchips$: Observable<HTMLElement[]> = this.ngAfterViewInit$.pipe(\n\t\tconcatMap(() => this.chipsQL.changes.pipe(startWith(undefined))),\n\t\tmap(() => this.chipsQL.toArray().map((chip) => chip.nativeElement)),\n\t);\n\n\tcontext = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\tprotected visibleChips$ = new ReplaySubject<HTMLElement[]>(1);\n\tprotected hiddenChips$ = new ReplaySubject<HTMLElement[]>(1);\n\n\tvisibleChipsCount$ = this.visibleChips$.pipe(\n\t\tmap((chips) => chips.length),\n\t\tdistinctUntilChanged(),\n\t);\n\thiddenChipsCount$ = this.hiddenChips$.pipe(\n\t\tmap((chips) => chips.length),\n\t\tdistinctUntilChanged(),\n\t);\n\n\t@HostBinding('style.--hidden-option-count-width.px')\n\thiddenOptionCountWidthCssVar = 0;\n\n\t@HostBinding('style.--hidden-option-count-offset-left.px')\n\thiddenOptionCountOffsetLeftCssVar = 0;\n\n\tngOnInit(): void {\n\t\tthis.visibleChips$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((visible) => {\n\t\t\tthis.hiddenOptionCountOffsetLeftCssVar = visible.length ? visible[visible.length - 1].offsetLeft + visible[visible.length - 1].offsetWidth : 0;\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\n\t\tthis.hiddenChipsCount$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((hidden) => {\n\t\t\tthis.hiddenOptionCountWidthCssVar = hidden;\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\n\t\tcombineLatest([fromElementWidth(this.chipsContainer.nativeElement), fromElementWidth(this.overflowCountContainer.nativeElement), this.chips$])\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(0),\n\t\t\t\tmap(([containerWidth, counterWidth, chips]) => {\n\t\t\t\t\tconst baseOffsetTop = this.elementRef.nativeElement.offsetTop;\n\n\t\t\t\t\tconst isOutOfContainer = (chip: HTMLElement, allowedWidth: number) => chip.offsetTop > baseOffsetTop || chip.offsetLeft + chip.offsetWidth > allowedWidth;\n\n\t\t\t\t\tconst needsCounterSpace = !!chips.length && isOutOfContainer(chips[chips.length - 1], containerWidth);\n\t\t\t\t\tconst availableWidth = needsCounterSpace ? containerWidth - counterWidth : containerWidth;\n\n\t\t\t\t\t// First on next line or first out of container\n\t\t\t\t\tconst firstHiddenIndex = chips.findIndex((chip) => isOutOfContainer(chip, availableWidth));\n\n\t\t\t\t\treturn firstHiddenIndex !== -1\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tvisible: chips.slice(0, firstHiddenIndex),\n\t\t\t\t\t\t\t\thidden: chips.slice(firstHiddenIndex),\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\tvisible: chips,\n\t\t\t\t\t\t\t\thidden: [],\n\t\t\t\t\t\t };\n\t\t\t\t}),\n\t\t\t\ttakeUntilDestroyed(this.destroyRef),\n\t\t\t)\n\t\t\t.subscribe(({ visible, hidden }) => {\n\t\t\t\tthis.zone.run(() => {\n\t\t\t\t\tthis.visibleChips$.next(visible);\n\t\t\t\t\tthis.hiddenChips$.next(hidden);\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tunselectOption(option: T, $event: Event): void {\n\t\t$event.stopPropagation();\n\t\t$event.preventDefault();\n\t\tthis.select.updateValue(this.select.value.filter((o) => o !== option));\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.ngAfterViewInit$.complete();\n\t}\n\n\tngAfterViewInit() {\n\t\tthis.ngAfterViewInit$.next();\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
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/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}\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},\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},\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},\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},\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},\n};\n","import { EventEmitter } from '@angular/core';\nimport { LuSelectPanelRef } from '@lucca-front/ng/core-select';\nimport { Observable } from 'rxjs';\n\nexport abstract class LuMultiSelectPanelRef<T> extends LuSelectPanelRef<T, T[]> {\n\tselectAll = new EventEmitter<void>();\n\n\tareAllOptionsSelected$: Observable<boolean | undefined>;\n\n\toverride close(): void {\n\t\tsuper.close();\n\t\tthis.selectAll.complete();\n\t}\n\n\tabstract updateSelectedOptions(selectedOptions: T[]): void;\n\n\tabstract useExpandedPosition(): void;\n\n\tabstract useDefaultPosition(): void;\n}\n","import { InjectionToken, TemplateRef, Type } from '@angular/core';\nimport { LuOptionContext } 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\tsearchable: boolean;\n\texpanded: boolean;\n\tcanSelectAll: boolean;\n\tareAllOptionsSelected$: Observable<boolean | undefined>;\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, ElementRef, HostListener, inject, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { SELECT_ID, ɵLuOptionComponent, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { asyncScheduler, filter, map, observeOn, take, takeUntil } from 'rxjs';\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\tisExpanded = this.panelData.expanded;\n\n\toptions$ = this.panelData.options$;\n\tloading$ = this.panelData.loading$;\n\tareAllOptionsSelected$ = this.panelData.areAllOptionsSelected$;\n\tcanSelectAll = false; // TODO connect to panel options when we'll be ok on designing select all\n\toptionComparer = this.panelData.optionComparer;\n\tselectedOptions: T[] = this.panelData.initialValue || [];\n\toptionTpl = this.panelData.optionTpl;\n\tsearchable = this.panelData.searchable;\n\n\t@ViewChild('searchInput')\n\tsearchInput: ElementRef<HTMLInputElement> | undefined;\n\n\t@ViewChildren(ɵLuOptionComponent) optionsQL: QueryList<ɵLuOptionComponent<T>>;\n\tprivate leftColumnKeyManager: ActiveDescendantKeyManager<ɵLuOptionComponent<T>>;\n\n\t@ViewChildren(ɵLuMultiSelectSelectedChipDirective) selectedChipsQL: QueryList<ɵLuMultiSelectSelectedChipDirective<T>>;\n\tprivate rightColumnKeyManager: ActiveDescendantKeyManager<ɵLuMultiSelectSelectedChipDirective<T>>;\n\n\tsearch: string | null = null;\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.initLeftColumnKeyManager();\n\t\tthis.initRightColumnKeyManager();\n\n\t\tif (this.searchInput) {\n\t\t\tsetTimeout(() => this.searchInput.nativeElement.focus());\n\t\t}\n\n\t\tif (this.isExpanded) {\n\t\t\tthis.panelRef.useExpandedPosition();\n\t\t} else {\n\t\t\tthis.panelRef.useDefaultPosition();\n\t\t}\n\t}\n\n\t@HostListener('keydown', ['$event'])\n\tonKeyDown($event: KeyboardEvent): void {\n\t\tif ($event.key === 'Escape') {\n\t\t\treturn this.panelRef.close();\n\t\t}\n\t}\n\n\tonLeftColumnKeydown($event: KeyboardEvent): void {\n\t\tif ($event.code === 'Space' || $event.code === 'Enter') {\n\t\t\tthis.toggleOption(this.leftColumnKeyManager?.activeItem?.option);\n\t\t\t$event.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.leftColumnKeyManager?.onKeydown($event);\n\t}\n\n\tonRightColumnKeydown($event: KeyboardEvent): void {\n\t\tconst option = this.rightColumnKeyManager?.activeItem?.option;\n\n\t\tif (option && ($event.code === 'Space' || $event.code === 'Enter')) {\n\t\t\tthis.onChipKillClick(option);\n\t\t\t$event.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.rightColumnKeyManager?.onKeydown($event);\n\t}\n\n\t// toggleAll(shouldSelectAll: boolean): void {\n\t// \tif (shouldSelectAll) {\n\t// \t\tthis.panelRef.selectAll.emit();\n\t// \t} else {\n\t// \t\tthis.clear();\n\t// \t}\n\t// }\n\n\tupdateClue(clue: string | null): void {\n\t\tthis.search = clue;\n\t\tthis.panelRef.clueChanged.emit(clue);\n\n\t\tsetTimeout(() => this.leftColumnKeyManager.setFirstItemActive());\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\tthis.leftColumnKeyManager?.setActiveItem(this.optionsQL.toArray().findIndex((o) => o.option === option));\n\t}\n\n\tonChipKillClick(option: T): void {\n\t\tconst optionToUnselectIndex = this.selectedOptions.findIndex((o) => this.optionComparer(o, option));\n\t\tthis.selectedOptions = this.selectedOptions.filter((_, index) => index !== optionToUnselectIndex);\n\t\tthis.panelRef.emitValue(this.selectedOptions);\n\n\t\tif (this.selectedOptions.length && this.rightColumnKeyManager) {\n\t\t\toptionToUnselectIndex >= this.selectedOptions.length ? this.rightColumnKeyManager.setPreviousItemActive() : this.rightColumnKeyManager.setNextItemActive();\n\t\t}\n\t}\n\n\tclear(): void {\n\t\tthis.selectedOptions = [];\n\t\tthis.panelRef.emitValue(this.selectedOptions);\n\t}\n\n\tprotected initLeftColumnKeyManager(): void {\n\t\tthis.leftColumnKeyManager = 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.leftColumnKeyManager.setActiveItem(selectedIndex));\n\t\t}\n\n\t\tthis.leftColumnKeyManager.change\n\t\t\t.pipe(\n\t\t\t\tmap(() => this.leftColumnKeyManager.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\t}\n\n\tprotected initRightColumnKeyManager(): void {\n\t\tthis.rightColumnKeyManager = new ActiveDescendantKeyManager(this.selectedChipsQL).withHomeAndEnd();\n\t}\n}\n","<!-- TODO : il faudrait remplacer la classe is-expanded par un attribut aria-expanded=\"true\"-->\n<ng-template #searchInputTpl>\n\t<label class=\"panel-search textfield mod-search mod-outlined lu-multiselect-search\">\n\t\t<input\n\t\t\t#searchInput\n\t\t\tclass=\"textfield-input\"\n\t\t\t[(ngModel)]=\"search\"\n\t\t\t(ngModelChange)=\"updateClue($event)\"\n\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t/>\n\t\t<span class=\"u-mask textfield-label\">{{ intl.search }}</span>\n\t</label>\n</ng-template>\n\n<div\n\tclass=\"lu-picker-panel lu-option-picker-panel lu-multiselect-panel mod-multiple\"\n\trole=\"dialog\"\n\tcdkTrapFocus\n\t*ngIf=\"{ options: options$ | async } as ctx\"\n\t[cdkTrapFocusAutoCapture]=\"true\"\n\t[class.is-expanded]=\"isExpanded\"\n\t[attr.aria-expanded]=\"isExpanded ? 'true' : undefined\"\n>\n\t<div class=\"lu-multiselect-panel-form\" *ngIf=\"searchable && !isExpanded\">\n\t\t<ng-container *ngTemplateOutlet=\"searchInputTpl\"></ng-container>\n\t\t<!--\t\t<button class=\"button mod-text mod-icon lu-multiselect-expandbutton\" type=\"button\" (click)=\"toggleExpansion()\">-->\n\t\t<!--\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon\" [class.icon-fullscreen]=\"!isExpanded\" [class.icon-fullscreenExit]=\"isExpanded\"></span>-->\n\t\t<!--\t\t\t{{ isExpanded ? intl.reduce : intl.expand }}-->\n\t\t<!--\t\t</button>-->\n\t</div>\n\t<div class=\"lu-multiselect-panel-columns\">\n\t\t<div class=\"lu-multiselect-panel-columns-col1\" (keydown)=\"onLeftColumnKeydown($event)\">\n\t\t\t<div class=\"lu-multiselect-panel-form\" *ngIf=\"searchable && isExpanded\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"searchInputTpl\"></ng-container>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclass=\"lu-picker-content lu-multiselect-panel-columns-col1-content\"\n\t\t\t\t[class.is-loading]=\"loading$ | async\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\tcdkFocusInitial\n\t\t\t\trole=\"list\"\n\t\t\t\taria-multiselectable=\"true\"\n\t\t\t\t(scroll)=\"onScroll($event)\"\n\t\t\t>\n\t\t\t\t<ng-container *ngIf=\"searchable\">\n\t\t\t\t\t<div class=\"optionPlaceholder\" *ngIf=\"search && !ctx.options?.length\">\n\t\t\t\t\t\t<p class=\"optionPlaceholder-content u-marginBottom0\">{{ intl.emptyResults }}</p>\n\t\t\t\t\t\t<button type=\"button\" class=\"link\" (click)=\"updateClue(null); searchInput.nativeElement.focus()\">{{ intl.clearSearch }}</button>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-container>\n\n\t\t\t\t<!--\t\t\t\t<ng-container *ngIf=\"canSelectAll\">-->\n\t\t\t\t<!--\t\t\t\t\t<label class=\"checkbox lu-multiselect-selectall\" role=\"option\" [for]=\"selectId + '-select-all'\">-->\n\t\t\t\t<!--\t\t\t\t\t\t<input-->\n\t\t\t\t<!--\t\t\t\t\t\t\tclass=\"checkbox-input\"-->\n\t\t\t\t<!--\t\t\t\t\t\t\ttype=\"checkbox\"-->\n\t\t\t\t<!--\t\t\t\t\t\t\t[class.is-incomplete]=\"(areAllOptionsSelected$ | async) !== true && selectedOptions.length\"-->\n\t\t\t\t<!--\t\t\t\t\t\t\t[id]=\"selectId + '-select-all'\"-->\n\t\t\t\t<!--\t\t\t\t\t\t\t[ngModel]=\"(areAllOptionsSelected$ | async) === true || !!selectedOptions.length\"-->\n\t\t\t\t<!--\t\t\t\t\t\t\t(ngModelChange)=\"toggleAll($event)\"-->\n\t\t\t\t<!--\t\t\t\t\t\t/>-->\n\t\t\t\t<!--\t\t\t\t\t\t<span class=\"checkbox-label\">{{ intl.selectAll }}</span>-->\n\t\t\t\t<!--\t\t\t\t\t</label>-->\n\t\t\t\t<!--\t\t\t\t</ng-container>-->\n\n\t\t\t\t<div class=\"lu-picker-content-option\">\n\t\t\t\t\t<lu-select-option\n\t\t\t\t\t\t*ngFor=\"let option of ctx.options; let index = index\"\n\t\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t\t[optionTpl]=\"optionTpl\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected:optionComparer:selectedOptions\"\n\t\t\t\t\t\t(click)=\"toggleOption(option)\"\n\t\t\t\t\t></lu-select-option>\n\t\t\t\t</div>\n\n\t\t\t\t<div *ngIf=\"loading$ | async\" class=\"panel-loading loading lu-picker-loading\"></div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"lu-multiselect-panel-columns-col2\" *ngIf=\"isExpanded\">\n\t\t\t<div class=\"lu-multiselect-emptystate\" *ngIf=\"!selectedOptions.length\">{{ intl.emptySelection }}</div>\n\t\t\t<div class=\"lu-multiselect-chips\" role=\"listbox\" tabindex=\"0\" *ngIf=\"selectedOptions.length\" (keydown)=\"onRightColumnKeydown($event)\">\n\t\t\t\t<div role=\"option\" class=\"chip lu-multiselect-chip\" *ngFor=\"let option of selectedOptions\" [luMultiSelectSelectedChip]=\"option\">\n\t\t\t\t\t<ng-container *luOptionOutlet=\"optionTpl; value: option\"></ng-container>\n\t\t\t\t\t<button type=\"button\" class=\"chip-kill\" tabindex=\"-1\" (click)=\"onChipKillClick(option)\"></button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div *ngIf=\"selectedOptions.length\" class=\"lu-multiselect-panel-columns-col2-footer\">\n\t\t\t\t<button class=\"button mod-text\" type=\"button\" (click)=\"clear()\">{{ intl.clear }}</button>\n\t\t\t</div>\n\t\t</div>\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, inject, Injectable, Injector } from '@angular/core';\nimport { takeUntil } from 'rxjs';\nimport { LuMultiSelectPanelComponent } from '../panel';\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(\n\t\tprivate overlayRef: OverlayRef,\n\t\tparentInjector: Injector,\n\t\tpanelData: ILuMultiSelectPanelData<T>,\n\t\tprotected defaultPositionStrategy: PositionStrategy,\n\t\tprotected expandedPositionStrategy: PositionStrategy,\n\t) {\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\tuseExpandedPosition(): void {\n\t\tthis.overlayRef.updatePositionStrategy(this.expandedPositionStrategy);\n\t}\n\n\tuseDefaultPosition(): void {\n\t\tthis.overlayRef.updatePositionStrategy(this.defaultPositionStrategy);\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\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 = {}, expandedPositionStrategy?: PositionStrategy): LuMultiSelectPanelRef<T> {\n\t\tconst defaultOverlayConfig = this.buildDefaultOverlayConfig(defaultOverlayConfigOverride);\n\t\texpandedPositionStrategy ??= this.buildExpandedPositionStrategy();\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, expandedPositionStrategy);\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\tbuildExpandedPositionStrategy(): PositionStrategy {\n\t\tconst config = { overlapInput: true, offsetX: -4, offsetY: -4 };\n\t\treturn 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('top', 'right', config),\n\t\t\t\tthis.buildPosition('top', 'left', config),\n\t\t\t\tthis.buildPosition('bottom', 'right', config),\n\t\t\t\tthis.buildPosition('bottom', 'left', config),\n\t\t\t]);\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 { PositionStrategy } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, HostBinding, inject, Input, TemplateRef, Type } 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 { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { ReplaySubject } 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';\nimport { IconComponent } from '@lucca-front/ng/icon';\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})\nexport class LuMultiSelectInputComponent<T> extends ALuSelectInputComponent<T, T[]> implements ControlValueAccessor {\n\tintl = getIntl(LU_MULTI_SELECT_TRANSLATIONS);\n\n\t@HostBinding('class.mod-multiple') modMultipleClass = true;\n\n\t@Input() valuesTpl?: TemplateRef<LuOptionContext<T[]>> | Type<unknown> = LuMultiSelectDefaultDisplayerComponent;\n\n\t// TODO This is for select all\n\t// @Input() set areAllOptionsSelected(selected: boolean | undefined) {\n\t// \tthis.areAllOptionsSelected$.next(selected);\n\t// }\n\n\t@Input()\n\texpandedPositionStrategy?: PositionStrategy;\n\n\t// TODO this is for select all\n\t// @Output() selectAll = new EventEmitter<void>();\n\n\t@Input()\n\texpanded = false;\n\n\t@Input()\n\tpublic override get panelRef(): LuMultiSelectPanelRef<T> | undefined {\n\t\treturn this._panelRef;\n\t}\n\n\tprotected areAllOptionsSelected$ = new ReplaySubject<boolean | undefined>(1);\n\n\tprotected override _panelRef?: LuMultiSelectPanelRef<T>;\n\n\tprotected panelRefFactory = inject(LuMultiSelectPanelRefFactory);\n\n\tpublic override writeValue(value: T[]): void {\n\t\tsuper.writeValue(value);\n\t\tthis.panelRef?.updateSelectedOptions(value);\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\tsearchable: this.searchable,\n\t\t\t\toptionTpl: this.optionTpl,\n\t\t\t\tcanSelectAll: false, // TODO Connect this to this.selectAll.observed when we'll be fixed on how to implement select all\n\t\t\t\tareAllOptionsSelected$: this.areAllOptionsSelected$,\n\t\t\t\texpanded: this.expanded,\n\t\t\t},\n\t\t\tthis.overlayConfig,\n\t\t\tthis.expandedPositionStrategy,\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\t// TODO This is for select all\n\t\t// this.panelRef.selectAll.subscribe(() => this.selectAll.emit());\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}\n}\n","<div class=\"lu-select-placeholder\">{{ placeholder }}</div>\n<div class=\"lu-select-value\">\n\t<div class=\"lu-select-display-wrapper\">\n\t\t<ng-container *luOptionOutlet=\"valuesTpl; value: value\"></ng-container>\n\t</div>\n</div>\n<div class=\"lu-select-suffix\">\n\t<a *ngIf=\"hasValue && clearable\" role=\"button\" class=\"clear\" (click)=\"clearValue($event)\">\n\t\t<span class=\"u-mask\">{{intl.clear}}</span>\n\t</a>\n</div>\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}\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},\n\ten: {\n\t\totherResult: 'other result',\n\t\totherResults: 'other results',\n\t\tshowResultsDetails: 'Show details',\n\t},\n\tde: {\n\t\totherResult: 'anderes Ergebnis',\n\t\totherResults: 'andere Ergebnisse',\n\t\tshowResultsDetails: 'Details anzeigen',\n\t},\n\tes: {\n\t\totherResult: 'otro resultado',\n\t\totherResults: 'otros resultados',\n\t\tshowResultsDetails: 'Mostrar detalles',\n\t},\n\tpt: {\n\t\totherResult: 'outro resultado',\n\t\totherResults: 'outros resultados',\n\t\tshowResultsDetails: 'Mostrar detalhes',\n\t},\n};\n","import { AsyncPipe, NgFor, NgIf, NgPlural, NgPluralCase } from '@angular/common';\nimport {\n\tAfterViewInit,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tDestroyRef,\n\tElementRef,\n\tHostBinding,\n\tNgZone,\n\tOnDestroy,\n\tOnInit,\n\tQueryList,\n\tViewChild,\n\tViewChildren,\n\tinject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { Observable, ReplaySubject, combineLatest, concatMap, debounceTime, distinctUntilChanged, map, startWith } from 'rxjs';\nimport { LuMultiSelectInputComponent } from '../input';\nimport { LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS } from './default-displayer.translate';\n\nfunction fromElementWidth(el: HTMLElement): Observable<number> {\n\treturn new Observable<number>((observer) => {\n\t\t// Emit the initial width\n\t\tobserver.next(el.getBoundingClientRect().width);\n\n\t\t// Emit the new width whenever the element is resized\n\t\tconst resizeObserver = new ResizeObserver((entries) => observer.next(entries[0].contentRect.width));\n\t\tresizeObserver.observe(el);\n\n\t\t// Cleanup observer on cancellation\n\t\treturn () => resizeObserver.disconnect();\n\t}).pipe(distinctUntilChanged());\n}\n\n@Component({\n\tselector: 'lu-multi-select-default-displayer',\n\tstandalone: true,\n\timports: [AsyncPipe, LuTooltipModule, NgIf, NgFor, NgPlural, NgPluralCase, ɵLuOptionOutletDirective],\n\ttemplate: `\n\t\t<div class=\"chips-container\" #chipsContainer>\n\t\t\t<div\n\t\t\t\t#chip\n\t\t\t\t*ngFor=\"let option of context.option$ | async; let index = index\"\n\t\t\t\tclass=\"chip lu-multiselect-chip\"\n\t\t\t\t[class.mod-unkillable]=\"disabled\"\n\t\t\t\t[attr.aria-hidden]=\"index >= ((visibleChipsCount$ | async) || 0) ? 'true' : undefined\"\n\t\t\t>\n\t\t\t\t<span class=\"lu-multiselect-chip-value\"><ng-container *luOptionOutlet=\"select.valueTpl || select.optionTpl; value: option\"></ng-container></span>\n\t\t\t\t<a href *ngIf=\"!disabled\" type=\"button\" class=\"chip-kill\" (click)=\"unselectOption(option, $event)\" [attr.tabindex]=\"index >= ((visibleChipsCount$ | async) || 0) ? -1 : undefined\"></a>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"lu-multiselect-counter\" #overflow>\n\t\t\t<ng-container *ngIf=\"hiddenChipsCount$ | async as count\">\n\t\t\t\t<div class=\"chip mod-unkillable lu-multiselect-counter-chip\" aria-hidden=\"true\">+ {{ count }}</div>\n\t\t\t\t<span class=\"u-mask\" [ngPlural]=\"count\">\n\t\t\t\t\t<ng-template ngPluralCase=\"=1\">{{ intl.otherResult }}</ng-template>\n\t\t\t\t\t<ng-template ngPluralCase=\"other\">{{ intl.otherResults }}</ng-template>\n\t\t\t\t</span>\n\t\t\t</ng-container>\n\t\t</div>\n\t`,\n\tstyleUrls: ['./default-displayer.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuMultiSelectDefaultDisplayerComponent<T> implements AfterViewInit, OnInit, OnDestroy {\n\tselect = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\telementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\tcdr = inject(ChangeDetectorRef);\n\tintl = getIntl(LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS);\n\n\tprotected destroyRef = inject(DestroyRef);\n\tprotected zone = inject(NgZone);\n\n\tget disabled() {\n\t\treturn this.select.disabled;\n\t}\n\n\t@ViewChild('overflow', { static: true })\n\toverflowCountContainer: ElementRef<HTMLElement>;\n\n\t@ViewChild('chipsContainer', { static: true })\n\tchipsContainer: ElementRef<HTMLElement>;\n\n\t@ViewChildren('chip')\n\tchipsQL: QueryList<ElementRef<HTMLElement>>;\n\n\tprotected ngAfterViewInit$ = new ReplaySubject<void>(1);\n\n\tchips$: Observable<HTMLElement[]> = this.ngAfterViewInit$.pipe(\n\t\tconcatMap(() => this.chipsQL.changes.pipe(startWith(undefined))),\n\t\tmap(() => this.chipsQL.toArray().map((chip) => chip.nativeElement)),\n\t);\n\n\tcontext = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\tprotected visibleChips$ = new ReplaySubject<HTMLElement[]>(1);\n\tprotected hiddenChips$ = new ReplaySubject<HTMLElement[]>(1);\n\n\tvisibleChipsCount$ = this.visibleChips$.pipe(\n\t\tmap((chips) => chips.length),\n\t\tdistinctUntilChanged(),\n\t);\n\thiddenChipsCount$ = this.hiddenChips$.pipe(\n\t\tmap((chips) => chips.length),\n\t\tdistinctUntilChanged(),\n\t);\n\n\t@HostBinding('style.--hidden-option-count-width.px')\n\thiddenOptionCountWidthCssVar = 0;\n\n\t@HostBinding('style.--hidden-option-count-offset-left.px')\n\thiddenOptionCountOffsetLeftCssVar = 0;\n\n\tngOnInit(): void {\n\t\tthis.visibleChips$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((visible) => {\n\t\t\tthis.hiddenOptionCountOffsetLeftCssVar = visible.length ? visible[visible.length - 1].offsetLeft + visible[visible.length - 1].offsetWidth : 0;\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\n\t\tthis.hiddenChipsCount$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((hidden) => {\n\t\t\tthis.hiddenOptionCountWidthCssVar = hidden;\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\n\t\tcombineLatest([fromElementWidth(this.chipsContainer.nativeElement), fromElementWidth(this.overflowCountContainer.nativeElement), this.chips$])\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(0),\n\t\t\t\tmap(([containerWidth, counterWidth, chips]) => {\n\t\t\t\t\tconst baseOffsetTop = this.elementRef.nativeElement.offsetTop;\n\n\t\t\t\t\tconst isOutOfContainer = (chip: HTMLElement, allowedWidth: number) => chip.offsetTop > baseOffsetTop || chip.offsetLeft + chip.offsetWidth > allowedWidth;\n\n\t\t\t\t\tconst needsCounterSpace = !!chips.length && isOutOfContainer(chips[chips.length - 1], containerWidth);\n\t\t\t\t\tconst availableWidth = needsCounterSpace ? containerWidth - counterWidth : containerWidth;\n\n\t\t\t\t\t// First on next line or first out of container\n\t\t\t\t\tconst firstHiddenIndex = chips.findIndex((chip) => isOutOfContainer(chip, availableWidth));\n\n\t\t\t\t\treturn firstHiddenIndex !== -1\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tvisible: chips.slice(0, firstHiddenIndex),\n\t\t\t\t\t\t\t\thidden: chips.slice(firstHiddenIndex),\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\tvisible: chips,\n\t\t\t\t\t\t\t\thidden: [],\n\t\t\t\t\t\t };\n\t\t\t\t}),\n\t\t\t\ttakeUntilDestroyed(this.destroyRef),\n\t\t\t)\n\t\t\t.subscribe(({ visible, hidden }) => {\n\t\t\t\tthis.zone.run(() => {\n\t\t\t\t\tthis.visibleChips$.next(visible);\n\t\t\t\t\tthis.hiddenChips$.next(hidden);\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tunselectOption(option: T, $event: Event): void {\n\t\t$event.stopPropagation();\n\t\t$event.preventDefault();\n\t\tthis.select.updateValue(this.select.value.filter((o) => o !== option));\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.ngAfterViewInit$.complete();\n\t}\n\n\tngAfterViewInit() {\n\t\tthis.ngAfterViewInit$.next();\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { Component, ChangeDetectionStrategy, Input, HostBinding } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
class NewBadgeComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.newBadge = true;
|
|
7
|
+
}
|
|
5
8
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: NewBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: NewBadgeComponent, isStandalone: true, selector: "lu-new-badge", inputs: { label: "label" }, ngImport: i0, template: "
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: NewBadgeComponent, isStandalone: true, selector: "lu-new-badge", inputs: { label: "label" }, host: { properties: { "class.newBadge": "this.newBadge" } }, ngImport: i0, template: "{{label}}\n", styles: [".newBadge{display:inline-flex;font-size:var(--sizes-XS-fontSize);line-height:var(--sizes-XS-lineHeight);font-weight:600;background-color:var(--palettes-lucca-700);color:var(--palettes-lucca-text);padding:0 var(--spacings-XXS);border-radius:var(--commons-borderRadius-M)}:host{display:inline-flex}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7
10
|
}
|
|
8
11
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: NewBadgeComponent, decorators: [{
|
|
9
12
|
type: Component,
|
|
10
|
-
args: [{ selector: 'lu-new-badge', standalone: true, template: "
|
|
13
|
+
args: [{ selector: 'lu-new-badge', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "{{label}}\n", styles: [".newBadge{display:inline-flex;font-size:var(--sizes-XS-fontSize);line-height:var(--sizes-XS-lineHeight);font-weight:600;background-color:var(--palettes-lucca-700);color:var(--palettes-lucca-text);padding:0 var(--spacings-XXS);border-radius:var(--commons-borderRadius-M)}:host{display:inline-flex}\n"] }]
|
|
11
14
|
}], propDecorators: { label: [{
|
|
12
15
|
type: Input,
|
|
13
16
|
args: [{ required: true }]
|
|
17
|
+
}], newBadge: [{
|
|
18
|
+
type: HostBinding,
|
|
19
|
+
args: ['class.newBadge']
|
|
14
20
|
}] } });
|
|
15
21
|
|
|
16
22
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucca-front-ng-new-badge.mjs","sources":["../../../packages/ng/new-badge/new-badge.component.ts","../../../packages/ng/new-badge/new-badge.component.html","../../../packages/ng/new-badge/lucca-front-ng-new-badge.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\n\n@Component({\n\tselector: 'lu-new-badge',\n\tstandalone: true,\n\ttemplateUrl: './new-badge.component.html',\n\tstyleUrls: ['./new-badge.component.scss'],\n})\nexport class NewBadgeComponent {\n\t@Input({ required: true })\n\tlabel: string;\n}\n","
|
|
1
|
+
{"version":3,"file":"lucca-front-ng-new-badge.mjs","sources":["../../../packages/ng/new-badge/new-badge.component.ts","../../../packages/ng/new-badge/new-badge.component.html","../../../packages/ng/new-badge/lucca-front-ng-new-badge.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n\tselector: 'lu-new-badge',\n\tstandalone: true,\n\ttemplateUrl: './new-badge.component.html',\n\tstyleUrls: ['./new-badge.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NewBadgeComponent {\n\t@Input({ required: true })\n\tlabel: string;\n\n\t@HostBinding('class.newBadge')\n\tnewBadge = true;\n}\n","{{label}}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAEA,MAOa,iBAAiB,CAAA;AAP9B,IAAA,WAAA,GAAA;QAYC,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;AAChB,KAAA;8GANY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,iKCT9B,aACA,EAAA,MAAA,EAAA,CAAA,4SAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDQa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EACZ,UAAA,EAAA,IAAI,EAGC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,4SAAA,CAAA,EAAA,CAAA;8BAI/C,KAAK,EAAA,CAAA;sBADJ,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAIzB,QAAQ,EAAA,CAAA;sBADP,WAAW;uBAAC,gBAAgB,CAAA;;;AEb9B;;AAEG;;;;"}
|
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { numberAttribute, Component, Input } from '@angular/core';
|
|
3
|
-
import * as i1 from '@
|
|
4
|
-
import {
|
|
2
|
+
import { inject, numberAttribute, Component, ChangeDetectionStrategy, Input } from '@angular/core';
|
|
3
|
+
import * as i1 from '@lucca-front/ng/core';
|
|
4
|
+
import { NgClazz } from '@lucca-front/ng/core';
|
|
5
5
|
|
|
6
6
|
class NumericBadgeComponent {
|
|
7
7
|
constructor() {
|
|
8
|
-
this
|
|
8
|
+
this.#ngClass = inject(NgClazz);
|
|
9
9
|
this.palette = 'none';
|
|
10
10
|
}
|
|
11
|
+
#ngClass;
|
|
12
|
+
ngOnChanges(changes) {
|
|
13
|
+
if (changes['palette']?.currentValue || changes['size']?.currentValue) {
|
|
14
|
+
this.#ngClass.ngClass = ['numericBadge', `palette-${this.palette}`, `mod-${this.size}`];
|
|
15
|
+
}
|
|
16
|
+
}
|
|
11
17
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: NumericBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: NumericBadgeComponent, isStandalone: true, selector: "lu-numeric-badge", inputs: { value: ["value", "value", numberAttribute], size: "size", palette: "palette" },
|
|
18
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: NumericBadgeComponent, isStandalone: true, selector: "lu-numeric-badge", inputs: { value: ["value", "value", numberAttribute], size: "size", palette: "palette" }, 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 }); }
|
|
13
19
|
}
|
|
14
20
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: NumericBadgeComponent, decorators: [{
|
|
15
21
|
type: Component,
|
|
16
|
-
args: [{ selector: 'lu-numeric-badge', standalone: true,
|
|
22
|
+
args: [{ selector: 'lu-numeric-badge', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [NgClazz], 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"] }]
|
|
17
23
|
}], propDecorators: {
|
|
18
24
|
/**
|
|
19
25
|
* The value to display, number only.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucca-front-ng-numeric-badge.mjs","sources":["../../../packages/ng/numeric-badge/numeric-badge
|
|
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 } 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})\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 = ['numericBadge', `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":";;;;;AAGA,MAQa,qBAAqB,CAAA;AARlC,IAAA,WAAA,GAAA;AASC,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;YACtE,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,cAAc,EAAE,CAAW,QAAA,EAAA,IAAI,CAAC,OAAO,CAAA,CAAE,EAAE,CAAO,IAAA,EAAA,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC,CAAC;AACxF,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,aAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,OAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdpD,aACA,EAAA,MAAA,EAAA,CAAA,++CAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDUa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;+BACC,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAGC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,cAAA,EAC/B,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,++CAAA,CAAA,EAAA,CAAA;;AAMzB;;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;;;AE1BP;;AAEG;;;;"}
|
|
@@ -55,7 +55,7 @@ class LuQualificationSelectInputComponent extends ALuSelectInputComponent {
|
|
|
55
55
|
useExisting: forwardRef(() => LuQualificationSelectInputComponent),
|
|
56
56
|
multi: true,
|
|
57
57
|
},
|
|
58
|
-
], usesInheritance: true, ngImport: i0, template: "<div class=\"lu-select-placeholder\">{{ placeholder }}</div>\n<div class=\"lu-select-value\">\n\t<div class=\"lu-select-display-wrapper\">\n\t\t<ng-container #display></ng-container>\n\t</div>\n</div>\n<div class=\"lu-select-suffix\">\n\t<lu-input-clearer></lu-input-clearer>\n</div>\n\n<ng-template luDisplayer [luDisplayerMultiple]=\"true\" let-values>\n\t<span *ngIf=\"multiple && values?.length > 1; else singleView\"\n\t\t><span class=\"numericBadge\">{{ values.length }}</span> {{ intl.qualifications }}</span\n\t>\n\t<ng-template #singleView>{{ (values[0] || values).name }}</ng-template>\n</ng-template>\n\n<lu-option-picker-advanced [option-comparer]=\"byId\">\n\t<lu-api-paged-searcher\n\t\tapi=\"/organization/structure/api/job-qualifications\"\n\t\tstandard=\"v4\"\n\t\t[filters]=\"filters\"\n\t\tsort=\"job.name,level.position\"\n\t></lu-api-paged-searcher>\n\t<ng-template luForGroups let-group [luForGroupsGroupBy]=\"groupByJobName\">\n\t\t<h4 class=\"optionItem-groupKey\">{{ group.key }}</h4>\n\t\t<lu-option *ngFor=\"let qualification of group.items; trackBy: trackById\" [value]=\"qualification\"> {{ qualification.name }} </lu-option>\n\t</ng-template>\n</lu-option-picker-advanced>\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: 2.25rem;--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1.25rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: 6px;--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: 2rem}:host{--components-select-input-padding-horizontal: var(--spacings-XS);--components-select-input-padding-vertical: var(--spacings-XS);--components-select-framed-color: var(--palettes-grey-500);--components-select-framed-color50: var(--palettes-grey-50);--components-select-framed-see-through: var(--palettes-grey-50);--components-select-framed-text: var(--palettes-grey-800);--components-select-framed-placeholder: #cccccc;--components-select-framed-side-padding: var(--spacings-S);--components-select-framed-top-padding: var(--spacings-L);--components-select-framed-bottom-padding: var(--spacings-S);--components-select-framed-label-top-offset: var(--spacings-XS);cursor:pointer;outline:none;padding:0;gap:0}:host:after{display:inline-block;vertical-align:text-bottom;font-style:normal;font-family:Lucca icons;color:var(--palettes-grey-600);bottom:var(--components-select-input-padding-vertical);font-size:var(--sizes-M-lineHeight);line-height:var(--sizes-M-lineHeight);pointer-events:none;position:absolute;right:var(--components-select-input-padding-horizontal)}@supports (content: \"*\"/\"\"){:host:after{content:\"\\e97c\"/\"\"}}@supports not (content: \"*\"/\"\"){:host:after{content:\"\\e97c\"}}:host[disabled],:host.is-disabled{cursor:not-allowed;pointer-events:all}.lu-select-display-wrapper{display:flex;text-overflow:ellipsis;white-space:nowrap;gap:var(--spacings-XXS)}.lu-select-value{line-height:var(--sizes-M-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-M-lineHeight));padding:var(--components-select-input-padding-vertical) 3.5rem var(--components-select-input-padding-vertical) var(--components-select-input-padding-horizontal);transition:all var(--commons-animations-durations-standard);display:none}.lu-select-placeholder{color:var(--palettes-grey-400);line-height:var(--sizes-M-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-M-lineHeight));padding:var(--components-select-input-padding-vertical) 3.5rem var(--components-select-input-padding-vertical) var(--components-select-input-padding-horizontal);transition:all var(--commons-animations-durations-standard);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lu-select-suffix,.lu-select-clearer{position:absolute;bottom:.75rem;right:2.25rem}::ng-deep .lu-select-value lu-simple-select-default-option{max-width:5rem;text-overflow:ellipsis;overflow:hidden}::ng-deep .lu-select-value .label{padding:var(--spacings-XXS) var(--spacings-XS);margin-left:0}::ng-deep .lu-select-value .chip{vertical-align:baseline;max-width:100%;margin:0 var(--spacings-XXS) var(--spacings-XXS) 0;text-overflow:ellipsis;overflow:hidden;vertical-align:top;white-space:nowrap}:host-context(.textfield.mod-S){padding:0}:host-context(.textfield.mod-S) .lu-select-value,:host-context(.textfield.mod-S) .lu-select-placeholder{font-size:var(--sizes-S-fontSize);line-height:var(--sizes-XS-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-XS-lineHeight))}:host-context(.textfield.mod-S) .lu-select-clearer{bottom:var(--spacings-XS)}:host-context(.textfield.mod-S):after{line-height:var(--sizes-XS-lineHeight);font-size:var(--sizes-S-lineHeight)}:host-context(.textfield.mod-S) .lu-select-suffix{bottom:.5rem;right:2rem}:host-context(.textfield.mod-S) ::ng-deep .lu-select-value .label{font-size:var(--sizes-S-fontSize);line-height:var(--sizes-S-lineHeight);font-weight:600;margin:0;padding:0;background-color:transparent}:host-context(.textfield.mod-S) ::ng-deep .lu-select-value .chip{height:var(--sizes-XS-lineHeight);line-height:var(--sizes-XS-lineHeight);font-size:var(--sizes-XS-fontSize);padding-left:var(--spacings-XXS);padding-right:var(--spacings-XXS);gap:var(--spacings-XXS)}:host-context(.textfield.mod-S) ::ng-deep .lu-select-value .numericBadge{--components-numericBadge-size: 1.25rem;--components-numericBadge-borderRadius: 6px;--components-numericBadge-fontSize: var(--sizes-XS-fontSize);--components-numericBadge-lineHeight: var(--sizes-XS-lineHeight)}:host-context(.textfield.mod-framed).textfield-input,:host-context(.form.mod-framed).textfield-input{padding:var(--components-select-framed-top-padding) 0 0}:host-context(.textfield.mod-framed).textfield-input:after,:host-context(.form.mod-framed).textfield-input:after{color:var(--palettes-grey-500);bottom:var(--components-select-framed-bottom-padding);right:var(--spacings-XS)}:host-context(.textfield.mod-framed).textfield-input .lu-select-value,:host-context(.form.mod-framed).textfield-input .lu-select-value{padding:0 calc(var(--components-select-framed-side-padding) * 3) var(--components-select-framed-bottom-padding) var(--components-select-framed-side-padding)}:host-context(.textfield.mod-framed).textfield-input .lu-select-placeholder,:host-context(.form.mod-framed).textfield-input .lu-select-placeholder{color:var(--palettes-grey-400);padding:0 calc(var(--components-select-framed-side-padding) * 3) var(--components-select-framed-bottom-padding) var(--components-select-framed-side-padding)}:host-context(.textfield.mod-framed).textfield-input .lu-select-suffix,:host-context(.form.mod-framed).textfield-input .lu-select-suffix{bottom:var(--components-select-framed-bottom-padding);right:1.7rem}:host-context(.textfield.mod-filter) .lu-select-value,:host-context(.textfield.mod-filter) .lu-select-placeholder{padding:0;height:auto;padding-top:var(--spacings-S);color:var(--palettes-grey-800)}:host-context(.textfield.mod-material):after{color:var(--palettes-grey-500);bottom:.6rem;right:0}:host-context(.textfield.mod-material) .lu-select-value,:host-context(.textfield.mod-material) .lu-select-placeholder{padding-left:0;padding-right:.8rem}:host-context(.textfield.mod-material) .lu-select-suffix{right:calc(2 * var(--components-select-input-padding-horizontal))}:host-context(.textfield.mod-material).is-select .lu-select-placeholder{display:none}:host-context(.textfield.mod-material).mod-search:after{bottom:0}:host-context(.textfield.mod-material).mod-search .lu-select-suffix{right:calc(2.75 * var(--components-select-input-padding-horizontal))}:host-context(.textfield.mod-material .textfield-input.is-focused) .lu-select-placeholder{display:none}:host(.mod-multiple) .lu-select-value{height:auto;align-items:center}:host(.mod-multiple) .lu-select-display-wrapper{overflow:visible;white-space:normal;margin-bottom:calc(var(--spacings-XXS) * -1)}:host-context(.textfield.mod-outlined).textfield-input:after{color:var(--palettes-grey-600)}:host-context(.textfield.mod-outlined).textfield-input .lu-select-placeholder{color:var(--palettes-grey-400)}:host-context(.textfield.mod-outlined) :host-context(.textfield-input.is-error):after{color:var(--palettes-error-600)}:host-context(.textfield.mod-outlined) :host-context(.textfield-input.is-error) .lu-select-placeholder{color:var(--palettes-error-400)}:host-context(.textfield-input.is-filled) .lu-select-placeholder{display:none}:host-context(.textfield-input.is-filled) .lu-select-value{display:flex;align-items:flex-start}:host-context(.textfield-input.is-clearable) .lu-select-value{padding-right:3.5rem}:host-context(.textfield-input.is-error):after{color:var(--palettes-error-700)}:host-context(.textfield-input.is-error) .lu-select-placeholder{color:var(--palettes-error-400)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]):after{color:var(--commons-disabled-color)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]) .lu-select-placeholder{color:var(--commons-disabled-placeholder)}.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}.optionItem-groupKey:first-of-type{border-top-color:transparent;margin-top:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "component", type: LuInputClearerComponent, selector: "lu-input-clearer", outputs: ["onClear"], exportAs: ["luClearer"] }, { kind: "component", type: LuOptionPickerAdvancedComponent, selector: "lu-option-picker-advanced", exportAs: ["LuOptionPickerAdvanced"] }, { kind: "component", type: LuApiPagedSearcherComponent, selector: "lu-api-paged-searcher", inputs: ["standard", "api", "fields", "filters", "orderBy", "sort", "debounceTime"] }, { kind: "component", type: LuOptionItemComponent, selector: "lu-option", inputs: ["selected", "highlighted", "value", "disabled"], outputs: ["onSelect"] }, { kind: "directive", type: LuForGroupsDirective, selector: "[luForGroups]", inputs: ["luForGroupsGroupBy"] }, { kind: "directive", type: LuInputDisplayerDirective, selector: "[luDisplayer]", inputs: ["luDisplayerMultiple", "multiple"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
58
|
+
], usesInheritance: true, ngImport: i0, template: "<div class=\"lu-select-placeholder\">{{ placeholder }}</div>\n<div class=\"lu-select-value\">\n\t<div class=\"lu-select-display-wrapper\">\n\t\t<ng-container #display></ng-container>\n\t</div>\n</div>\n<div class=\"lu-select-suffix\">\n\t<lu-input-clearer></lu-input-clearer>\n</div>\n\n<ng-template luDisplayer [luDisplayerMultiple]=\"true\" let-values>\n\t<span *ngIf=\"multiple && values?.length > 1; else singleView\"\n\t\t><span class=\"numericBadge\">{{ values.length }}</span> {{ intl.qualifications }}</span\n\t>\n\t<ng-template #singleView>{{ (values[0] || values).name }}</ng-template>\n</ng-template>\n\n<lu-option-picker-advanced [option-comparer]=\"byId\">\n\t<lu-api-paged-searcher\n\t\tapi=\"/organization/structure/api/job-qualifications\"\n\t\tstandard=\"v4\"\n\t\t[filters]=\"filters\"\n\t\tsort=\"job.name,level.position\"\n\t></lu-api-paged-searcher>\n\t<ng-template luForGroups let-group [luForGroupsGroupBy]=\"groupByJobName\">\n\t\t<h4 class=\"optionItem-groupKey\">{{ group.key }}</h4>\n\t\t<lu-option *ngFor=\"let qualification of group.items; trackBy: trackById\" [value]=\"qualification\"> {{ qualification.name }} </lu-option>\n\t</ng-template>\n</lu-option-picker-advanced>\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: 2.25rem;--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1.25rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: 6px;--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: 2rem}:host{--components-select-input-padding-horizontal: var(--spacings-XS);--components-select-input-padding-vertical: var(--spacings-XS);--components-select-framed-color: var(--palettes-grey-500);--components-select-framed-color50: var(--palettes-grey-50);--components-select-framed-see-through: var(--palettes-grey-50);--components-select-framed-text: var(--palettes-grey-800);--components-select-framed-placeholder: #cccccc;--components-select-framed-side-padding: var(--spacings-S);--components-select-framed-top-padding: var(--spacings-L);--components-select-framed-bottom-padding: var(--spacings-S);--components-select-framed-label-top-offset: var(--spacings-XS);cursor:pointer;outline:none;padding:0;gap:0}:host:after{display:inline-block;vertical-align:text-bottom;font-style:normal;font-family:Lucca icons;color:var(--palettes-grey-600);bottom:var(--components-select-input-padding-vertical);font-size:var(--sizes-M-lineHeight);line-height:var(--sizes-M-lineHeight);pointer-events:none;position:absolute;right:var(--components-select-input-padding-horizontal);transition:transform var(--commons-animations-durations-standard) ease}@supports (content: \"*\"/\"\"){:host:after{content:\"\\e97c\"/\"\"}}@supports not (content: \"*\"/\"\"){:host:after{content:\"\\e97c\"}}:host[disabled],:host.is-disabled{cursor:not-allowed;pointer-events:all}.lu-select-display-wrapper{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.lu-select-value{line-height:var(--sizes-M-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-M-lineHeight));padding:var(--components-select-input-padding-vertical) 3.5rem var(--components-select-input-padding-vertical) var(--components-select-input-padding-horizontal);transition:all var(--commons-animations-durations-standard);display:none}.lu-select-placeholder{color:var(--palettes-grey-400);line-height:var(--sizes-M-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-M-lineHeight));padding:var(--components-select-input-padding-vertical) 3.5rem var(--components-select-input-padding-vertical) var(--components-select-input-padding-horizontal);transition:all var(--commons-animations-durations-standard);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lu-select-suffix,.lu-select-clearer{position:absolute;bottom:.75rem;right:2.25rem}::ng-deep .lu-select-value .label{padding:var(--spacings-XXS) var(--spacings-XS);margin-left:0}::ng-deep .lu-select-value .chip{vertical-align:baseline;max-width:100%;margin:0 var(--spacings-XXS) var(--spacings-XXS) 0;text-overflow:ellipsis;overflow:hidden;vertical-align:top;white-space:nowrap}:host-context(.textfield.mod-S){padding:0}:host-context(.textfield.mod-S) .lu-select-value,:host-context(.textfield.mod-S) .lu-select-placeholder{font-size:var(--sizes-S-fontSize);line-height:var(--sizes-XS-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-XS-lineHeight))}:host-context(.textfield.mod-S) .lu-select-clearer{bottom:var(--spacings-XS)}:host-context(.textfield.mod-S):after{line-height:var(--sizes-XS-lineHeight);font-size:var(--sizes-S-lineHeight)}:host-context(.textfield.mod-S) .lu-select-suffix{bottom:.5rem;right:2rem}:host-context(.textfield.mod-S) ::ng-deep .lu-select-value .label{font-size:var(--sizes-S-fontSize);line-height:var(--sizes-S-lineHeight);font-weight:600;margin:0;padding:0;background-color:transparent}:host-context(.textfield.mod-S) ::ng-deep .lu-select-value .chip{height:var(--sizes-XS-lineHeight);line-height:var(--sizes-XS-lineHeight);font-size:var(--sizes-XS-fontSize);padding-left:var(--spacings-XXS);padding-right:var(--spacings-XXS);gap:var(--spacings-XXS)}:host-context(.textfield.mod-S) ::ng-deep .lu-select-value .numericBadge{--components-numericBadge-size: 1.25rem;--components-numericBadge-borderRadius: 6px;--components-numericBadge-fontSize: var(--sizes-XS-fontSize);--components-numericBadge-lineHeight: var(--sizes-XS-lineHeight)}:host-context(.textfield.mod-framed).textfield-input,:host-context(.form.mod-framed).textfield-input{padding:var(--components-select-framed-top-padding) 0 0}:host-context(.textfield.mod-framed).textfield-input:after,:host-context(.form.mod-framed).textfield-input:after{color:var(--palettes-grey-500);bottom:var(--components-select-framed-bottom-padding);right:var(--spacings-XS)}:host-context(.textfield.mod-framed).textfield-input .lu-select-value,:host-context(.form.mod-framed).textfield-input .lu-select-value{padding:0 calc(var(--components-select-framed-side-padding) * 3) var(--components-select-framed-bottom-padding) var(--components-select-framed-side-padding)}:host-context(.textfield.mod-framed).textfield-input .lu-select-placeholder,:host-context(.form.mod-framed).textfield-input .lu-select-placeholder{color:var(--palettes-grey-400);padding:0 calc(var(--components-select-framed-side-padding) * 3) var(--components-select-framed-bottom-padding) var(--components-select-framed-side-padding)}:host-context(.textfield.mod-framed).textfield-input .lu-select-suffix,:host-context(.form.mod-framed).textfield-input .lu-select-suffix{bottom:var(--components-select-framed-bottom-padding);right:1.7rem}:host-context(.textfield.mod-filter) .lu-select-value,:host-context(.textfield.mod-filter) .lu-select-placeholder{padding:0;height:auto;padding-top:var(--spacings-S);color:var(--palettes-grey-800)}:host-context(.textfield.mod-material):after{color:var(--palettes-grey-500);bottom:.6rem;right:0}:host-context(.textfield.mod-material) .lu-select-value,:host-context(.textfield.mod-material) .lu-select-placeholder{padding-left:0;padding-right:.8rem}:host-context(.textfield.mod-material) .lu-select-suffix{right:calc(2 * var(--components-select-input-padding-horizontal))}:host-context(.textfield.mod-material).is-select .lu-select-placeholder{display:none}:host-context(.textfield.mod-material).mod-search:after{bottom:0}:host-context(.textfield.mod-material).mod-search .lu-select-suffix{right:calc(2.75 * var(--components-select-input-padding-horizontal))}:host-context(.textfield.mod-material .textfield-input.is-focused) .lu-select-placeholder{display:none}:host(.mod-multiple) .lu-select-value{height:auto;align-items:center}:host(.mod-multiple) .lu-select-display-wrapper{overflow:visible;white-space:normal;margin-bottom:calc(var(--spacings-XXS) * -1)}:host-context(.textfield.mod-outlined).textfield-input:after{color:var(--palettes-grey-600)}:host-context(.textfield.mod-outlined).textfield-input .lu-select-placeholder{color:var(--palettes-grey-400)}:host-context(.textfield.mod-outlined) :host-context(.textfield-input.is-error):after{color:var(--palettes-error-600)}:host-context(.textfield.mod-outlined) :host-context(.textfield-input.is-error) .lu-select-placeholder{color:var(--palettes-error-400)}:host-context(.textfield-input.is-filled) .lu-select-placeholder{display:none}:host-context(.textfield-input.is-filled) .lu-select-value{display:flex;align-items:flex-start}:host-context(.textfield .textfield-input.is-focused):after{transform:rotate(-180deg)}:host-context(.textfield-input.is-clearable) .lu-select-value{padding-right:3.5rem}:host-context(.textfield-input.is-error):after{color:var(--palettes-error-700)}:host-context(.textfield-input.is-error) .lu-select-placeholder{color:var(--palettes-error-400)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]):after{color:var(--commons-disabled-color)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]) .lu-select-placeholder{color:var(--commons-disabled-placeholder)}.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}.optionItem-groupKey:first-of-type{border-top-color:transparent;margin-top:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "component", type: LuInputClearerComponent, selector: "lu-input-clearer", outputs: ["onClear"], exportAs: ["luClearer"] }, { kind: "component", type: LuOptionPickerAdvancedComponent, selector: "lu-option-picker-advanced", exportAs: ["LuOptionPickerAdvanced"] }, { kind: "component", type: LuApiPagedSearcherComponent, selector: "lu-api-paged-searcher", inputs: ["standard", "api", "fields", "filters", "orderBy", "sort", "debounceTime"] }, { kind: "component", type: LuOptionItemComponent, selector: "lu-option", inputs: ["selected", "highlighted", "value", "disabled"], outputs: ["onSelect"] }, { kind: "directive", type: LuForGroupsDirective, selector: "[luForGroups]", inputs: ["luForGroupsGroupBy"] }, { kind: "directive", type: LuInputDisplayerDirective, selector: "[luDisplayer]", inputs: ["luDisplayerMultiple", "multiple"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
59
59
|
}
|
|
60
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: LuQualificationSelectInputComponent, decorators: [{
|
|
61
61
|
type: Component,
|
|
@@ -65,7 +65,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImpor
|
|
|
65
65
|
useExisting: forwardRef(() => LuQualificationSelectInputComponent),
|
|
66
66
|
multi: true,
|
|
67
67
|
},
|
|
68
|
-
], template: "<div class=\"lu-select-placeholder\">{{ placeholder }}</div>\n<div class=\"lu-select-value\">\n\t<div class=\"lu-select-display-wrapper\">\n\t\t<ng-container #display></ng-container>\n\t</div>\n</div>\n<div class=\"lu-select-suffix\">\n\t<lu-input-clearer></lu-input-clearer>\n</div>\n\n<ng-template luDisplayer [luDisplayerMultiple]=\"true\" let-values>\n\t<span *ngIf=\"multiple && values?.length > 1; else singleView\"\n\t\t><span class=\"numericBadge\">{{ values.length }}</span> {{ intl.qualifications }}</span\n\t>\n\t<ng-template #singleView>{{ (values[0] || values).name }}</ng-template>\n</ng-template>\n\n<lu-option-picker-advanced [option-comparer]=\"byId\">\n\t<lu-api-paged-searcher\n\t\tapi=\"/organization/structure/api/job-qualifications\"\n\t\tstandard=\"v4\"\n\t\t[filters]=\"filters\"\n\t\tsort=\"job.name,level.position\"\n\t></lu-api-paged-searcher>\n\t<ng-template luForGroups let-group [luForGroupsGroupBy]=\"groupByJobName\">\n\t\t<h4 class=\"optionItem-groupKey\">{{ group.key }}</h4>\n\t\t<lu-option *ngFor=\"let qualification of group.items; trackBy: trackById\" [value]=\"qualification\"> {{ qualification.name }} </lu-option>\n\t</ng-template>\n</lu-option-picker-advanced>\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: 2.25rem;--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1.25rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: 6px;--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: 2rem}:host{--components-select-input-padding-horizontal: var(--spacings-XS);--components-select-input-padding-vertical: var(--spacings-XS);--components-select-framed-color: var(--palettes-grey-500);--components-select-framed-color50: var(--palettes-grey-50);--components-select-framed-see-through: var(--palettes-grey-50);--components-select-framed-text: var(--palettes-grey-800);--components-select-framed-placeholder: #cccccc;--components-select-framed-side-padding: var(--spacings-S);--components-select-framed-top-padding: var(--spacings-L);--components-select-framed-bottom-padding: var(--spacings-S);--components-select-framed-label-top-offset: var(--spacings-XS);cursor:pointer;outline:none;padding:0;gap:0}:host:after{display:inline-block;vertical-align:text-bottom;font-style:normal;font-family:Lucca icons;color:var(--palettes-grey-600);bottom:var(--components-select-input-padding-vertical);font-size:var(--sizes-M-lineHeight);line-height:var(--sizes-M-lineHeight);pointer-events:none;position:absolute;right:var(--components-select-input-padding-horizontal)}@supports (content: \"*\"/\"\"){:host:after{content:\"\\e97c\"/\"\"}}@supports not (content: \"*\"/\"\"){:host:after{content:\"\\e97c\"}}:host[disabled],:host.is-disabled{cursor:not-allowed;pointer-events:all}.lu-select-display-wrapper{display:
|
|
68
|
+
], template: "<div class=\"lu-select-placeholder\">{{ placeholder }}</div>\n<div class=\"lu-select-value\">\n\t<div class=\"lu-select-display-wrapper\">\n\t\t<ng-container #display></ng-container>\n\t</div>\n</div>\n<div class=\"lu-select-suffix\">\n\t<lu-input-clearer></lu-input-clearer>\n</div>\n\n<ng-template luDisplayer [luDisplayerMultiple]=\"true\" let-values>\n\t<span *ngIf=\"multiple && values?.length > 1; else singleView\"\n\t\t><span class=\"numericBadge\">{{ values.length }}</span> {{ intl.qualifications }}</span\n\t>\n\t<ng-template #singleView>{{ (values[0] || values).name }}</ng-template>\n</ng-template>\n\n<lu-option-picker-advanced [option-comparer]=\"byId\">\n\t<lu-api-paged-searcher\n\t\tapi=\"/organization/structure/api/job-qualifications\"\n\t\tstandard=\"v4\"\n\t\t[filters]=\"filters\"\n\t\tsort=\"job.name,level.position\"\n\t></lu-api-paged-searcher>\n\t<ng-template luForGroups let-group [luForGroupsGroupBy]=\"groupByJobName\">\n\t\t<h4 class=\"optionItem-groupKey\">{{ group.key }}</h4>\n\t\t<lu-option *ngFor=\"let qualification of group.items; trackBy: trackById\" [value]=\"qualification\"> {{ qualification.name }} </lu-option>\n\t</ng-template>\n</lu-option-picker-advanced>\n", styles: [":root{--components-options-item-padding-vertical: var(--spacings-XS);--components-options-item-padding-horizontal: var(--spacings-XS);--components-options-item-multiple-padding: 2.25rem;--components-options-item-icon-color: var(--palettes-grey-800);--components-options-checkbox-left: .5rem;--components-options-checkbox-size: 1.25rem;--components-options-checkbox-color: var(--palettes-primary-700);--components-options-checkbox-border-radius: 6px;--components-options-checkbox-border-color: var(--palettes-grey-700);--components-options-establishment-multiple-padding: 2rem}:host{--components-select-input-padding-horizontal: var(--spacings-XS);--components-select-input-padding-vertical: var(--spacings-XS);--components-select-framed-color: var(--palettes-grey-500);--components-select-framed-color50: var(--palettes-grey-50);--components-select-framed-see-through: var(--palettes-grey-50);--components-select-framed-text: var(--palettes-grey-800);--components-select-framed-placeholder: #cccccc;--components-select-framed-side-padding: var(--spacings-S);--components-select-framed-top-padding: var(--spacings-L);--components-select-framed-bottom-padding: var(--spacings-S);--components-select-framed-label-top-offset: var(--spacings-XS);cursor:pointer;outline:none;padding:0;gap:0}:host:after{display:inline-block;vertical-align:text-bottom;font-style:normal;font-family:Lucca icons;color:var(--palettes-grey-600);bottom:var(--components-select-input-padding-vertical);font-size:var(--sizes-M-lineHeight);line-height:var(--sizes-M-lineHeight);pointer-events:none;position:absolute;right:var(--components-select-input-padding-horizontal);transition:transform var(--commons-animations-durations-standard) ease}@supports (content: \"*\"/\"\"){:host:after{content:\"\\e97c\"/\"\"}}@supports not (content: \"*\"/\"\"){:host:after{content:\"\\e97c\"}}:host[disabled],:host.is-disabled{cursor:not-allowed;pointer-events:all}.lu-select-display-wrapper{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.lu-select-value{line-height:var(--sizes-M-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-M-lineHeight));padding:var(--components-select-input-padding-vertical) 3.5rem var(--components-select-input-padding-vertical) var(--components-select-input-padding-horizontal);transition:all var(--commons-animations-durations-standard);display:none}.lu-select-placeholder{color:var(--palettes-grey-400);line-height:var(--sizes-M-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-M-lineHeight));padding:var(--components-select-input-padding-vertical) 3.5rem var(--components-select-input-padding-vertical) var(--components-select-input-padding-horizontal);transition:all var(--commons-animations-durations-standard);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lu-select-suffix,.lu-select-clearer{position:absolute;bottom:.75rem;right:2.25rem}::ng-deep .lu-select-value .label{padding:var(--spacings-XXS) var(--spacings-XS);margin-left:0}::ng-deep .lu-select-value .chip{vertical-align:baseline;max-width:100%;margin:0 var(--spacings-XXS) var(--spacings-XXS) 0;text-overflow:ellipsis;overflow:hidden;vertical-align:top;white-space:nowrap}:host-context(.textfield.mod-S){padding:0}:host-context(.textfield.mod-S) .lu-select-value,:host-context(.textfield.mod-S) .lu-select-placeholder{font-size:var(--sizes-S-fontSize);line-height:var(--sizes-XS-lineHeight);min-height:calc(var(--components-select-framed-bottom-padding) + var(--sizes-XS-lineHeight))}:host-context(.textfield.mod-S) .lu-select-clearer{bottom:var(--spacings-XS)}:host-context(.textfield.mod-S):after{line-height:var(--sizes-XS-lineHeight);font-size:var(--sizes-S-lineHeight)}:host-context(.textfield.mod-S) .lu-select-suffix{bottom:.5rem;right:2rem}:host-context(.textfield.mod-S) ::ng-deep .lu-select-value .label{font-size:var(--sizes-S-fontSize);line-height:var(--sizes-S-lineHeight);font-weight:600;margin:0;padding:0;background-color:transparent}:host-context(.textfield.mod-S) ::ng-deep .lu-select-value .chip{height:var(--sizes-XS-lineHeight);line-height:var(--sizes-XS-lineHeight);font-size:var(--sizes-XS-fontSize);padding-left:var(--spacings-XXS);padding-right:var(--spacings-XXS);gap:var(--spacings-XXS)}:host-context(.textfield.mod-S) ::ng-deep .lu-select-value .numericBadge{--components-numericBadge-size: 1.25rem;--components-numericBadge-borderRadius: 6px;--components-numericBadge-fontSize: var(--sizes-XS-fontSize);--components-numericBadge-lineHeight: var(--sizes-XS-lineHeight)}:host-context(.textfield.mod-framed).textfield-input,:host-context(.form.mod-framed).textfield-input{padding:var(--components-select-framed-top-padding) 0 0}:host-context(.textfield.mod-framed).textfield-input:after,:host-context(.form.mod-framed).textfield-input:after{color:var(--palettes-grey-500);bottom:var(--components-select-framed-bottom-padding);right:var(--spacings-XS)}:host-context(.textfield.mod-framed).textfield-input .lu-select-value,:host-context(.form.mod-framed).textfield-input .lu-select-value{padding:0 calc(var(--components-select-framed-side-padding) * 3) var(--components-select-framed-bottom-padding) var(--components-select-framed-side-padding)}:host-context(.textfield.mod-framed).textfield-input .lu-select-placeholder,:host-context(.form.mod-framed).textfield-input .lu-select-placeholder{color:var(--palettes-grey-400);padding:0 calc(var(--components-select-framed-side-padding) * 3) var(--components-select-framed-bottom-padding) var(--components-select-framed-side-padding)}:host-context(.textfield.mod-framed).textfield-input .lu-select-suffix,:host-context(.form.mod-framed).textfield-input .lu-select-suffix{bottom:var(--components-select-framed-bottom-padding);right:1.7rem}:host-context(.textfield.mod-filter) .lu-select-value,:host-context(.textfield.mod-filter) .lu-select-placeholder{padding:0;height:auto;padding-top:var(--spacings-S);color:var(--palettes-grey-800)}:host-context(.textfield.mod-material):after{color:var(--palettes-grey-500);bottom:.6rem;right:0}:host-context(.textfield.mod-material) .lu-select-value,:host-context(.textfield.mod-material) .lu-select-placeholder{padding-left:0;padding-right:.8rem}:host-context(.textfield.mod-material) .lu-select-suffix{right:calc(2 * var(--components-select-input-padding-horizontal))}:host-context(.textfield.mod-material).is-select .lu-select-placeholder{display:none}:host-context(.textfield.mod-material).mod-search:after{bottom:0}:host-context(.textfield.mod-material).mod-search .lu-select-suffix{right:calc(2.75 * var(--components-select-input-padding-horizontal))}:host-context(.textfield.mod-material .textfield-input.is-focused) .lu-select-placeholder{display:none}:host(.mod-multiple) .lu-select-value{height:auto;align-items:center}:host(.mod-multiple) .lu-select-display-wrapper{overflow:visible;white-space:normal;margin-bottom:calc(var(--spacings-XXS) * -1)}:host-context(.textfield.mod-outlined).textfield-input:after{color:var(--palettes-grey-600)}:host-context(.textfield.mod-outlined).textfield-input .lu-select-placeholder{color:var(--palettes-grey-400)}:host-context(.textfield.mod-outlined) :host-context(.textfield-input.is-error):after{color:var(--palettes-error-600)}:host-context(.textfield.mod-outlined) :host-context(.textfield-input.is-error) .lu-select-placeholder{color:var(--palettes-error-400)}:host-context(.textfield-input.is-filled) .lu-select-placeholder{display:none}:host-context(.textfield-input.is-filled) .lu-select-value{display:flex;align-items:flex-start}:host-context(.textfield .textfield-input.is-focused):after{transform:rotate(-180deg)}:host-context(.textfield-input.is-clearable) .lu-select-value{padding-right:3.5rem}:host-context(.textfield-input.is-error):after{color:var(--palettes-error-700)}:host-context(.textfield-input.is-error) .lu-select-placeholder{color:var(--palettes-error-400)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]):after{color:var(--commons-disabled-color)}:host-context(.textfield-input.is-disabled,.textfield-input[disabled]) .lu-select-placeholder{color:var(--commons-disabled-placeholder)}.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}.optionItem-groupKey:first-of-type{border-top-color:transparent;margin-top:0}\n"] }]
|
|
69
69
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.Overlay }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }]; }, propDecorators: { filters: [{
|
|
70
70
|
type: Input
|
|
71
71
|
}] } });
|