@lucca-front/ng 18.3.2 → 18.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/core-select/input/select-input.models.d.ts +2 -1
  2. package/core-select/panel/panel.utils.d.ts +1 -1
  3. package/core-select/select.utils.d.ts +1 -1
  4. package/date2/date-input/date-input.component.d.ts +2 -0
  5. package/esm2022/core-select/api/api-v4.directive.mjs +3 -3
  6. package/esm2022/core-select/establishment/establishments.directive.mjs +3 -3
  7. package/esm2022/core-select/input/select-input.models.mjs +7 -30
  8. package/esm2022/core-select/job-qualification/job-qualifications.directive.mjs +3 -3
  9. package/esm2022/core-select/panel/panel.utils.mjs +9 -5
  10. package/esm2022/core-select/select.utils.mjs +2 -5
  11. package/esm2022/core-select/user/users.directive.mjs +17 -6
  12. package/esm2022/date2/date-input/date-input.component.mjs +47 -18
  13. package/esm2022/dialog/dialog-header/dialog-header.component.mjs +2 -3
  14. package/esm2022/empty-state/empty-state-page/empty-state-page.component.mjs +3 -3
  15. package/esm2022/empty-state/empty-state-section/empty-state-section.component.mjs +3 -3
  16. package/esm2022/form-field/form-field.component.mjs +3 -3
  17. package/esm2022/multi-select/input/panel-ref.factory.mjs +5 -1
  18. package/esm2022/multi-select/input/select-input.component.mjs +3 -5
  19. package/esm2022/multi-select/panel/panel.component.mjs +3 -2
  20. package/esm2022/simple-select/input/panel-ref.factory.mjs +5 -2
  21. package/esm2022/simple-select/input/select-input.component.mjs +2 -4
  22. package/esm2022/simple-select/panel/panel.component.mjs +3 -2
  23. package/esm2022/skeleton/skeleton-field/skeleton-field.component.mjs +2 -2
  24. package/esm2022/tooltip/trigger/tooltip-trigger.directive.mjs +6 -3
  25. package/fesm2022/lucca-front-ng-core-select-api.mjs +2 -2
  26. package/fesm2022/lucca-front-ng-core-select-api.mjs.map +1 -1
  27. package/fesm2022/lucca-front-ng-core-select-establishment.mjs +2 -2
  28. package/fesm2022/lucca-front-ng-core-select-establishment.mjs.map +1 -1
  29. package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs +2 -2
  30. package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs.map +1 -1
  31. package/fesm2022/lucca-front-ng-core-select-user.mjs +16 -5
  32. package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
  33. package/fesm2022/lucca-front-ng-core-select.mjs +19 -38
  34. package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
  35. package/fesm2022/lucca-front-ng-date2.mjs +46 -17
  36. package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
  37. package/fesm2022/lucca-front-ng-dialog.mjs +1 -2
  38. package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
  39. package/fesm2022/lucca-front-ng-empty-state.mjs +4 -4
  40. package/fesm2022/lucca-front-ng-empty-state.mjs.map +1 -1
  41. package/fesm2022/lucca-front-ng-form-field.mjs +2 -2
  42. package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
  43. package/fesm2022/lucca-front-ng-multi-select.mjs +7 -5
  44. package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
  45. package/fesm2022/lucca-front-ng-simple-select.mjs +6 -4
  46. package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
  47. package/fesm2022/lucca-front-ng-skeleton.mjs +2 -2
  48. package/fesm2022/lucca-front-ng-skeleton.mjs.map +1 -1
  49. package/fesm2022/lucca-front-ng-tooltip.mjs +5 -2
  50. package/fesm2022/lucca-front-ng-tooltip.mjs.map +1 -1
  51. package/multi-select/input/panel-ref.factory.d.ts +2 -0
  52. package/multi-select/panel/panel.component.d.ts +1 -0
  53. package/package.json +39 -39
  54. package/simple-select/input/panel-ref.factory.d.ts +2 -0
  55. package/simple-select/panel/panel.component.d.ts +1 -0
  56. package/src/components/_popup.scss +1 -1
  57. package/src/components/_sidepanel.scss +4 -0
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-form-field.mjs","sources":["../../../packages/ng/form-field/form-field.token.ts","../../../packages/ng/form-field/translations.ts","../../../packages/ng/form-field/form-field.translate.ts","../../../packages/ng/form-field/form-field.component.ts","../../../packages/ng/form-field/form-field.component.html","../../../packages/ng/form-field/input.directive.ts","../../../packages/ng/form-field/lucca-front-ng-form-field.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { FormFieldComponent } from './form-field.component';\n\nexport const FORM_FIELD_INSTANCE = new InjectionToken<FormFieldComponent>('FORM_FIELD_INSTANCE');\n","export const Translations = {\n\ten: {\n\t\tcounter: 'Your message is {{current}} characters long. A maximum of {{max}} characters is allowed.',\n\t},\n\tde: {\n\t\tcounter: 'Ihr Beitrag ist {{current}} Zeichen lang. Maximal sind {{max}} Zeichen erlaubt.',\n\t},\n\tfr: {\n\t\tcounter: 'Votre publication fait {{current}} caractères de long. {{max}} caractères maximum sont autorisés.',\n\t},\n\tit: {\n\t\tcounter: 'La tua pubblicazione è lunga {{current}} caratteri. È consentito un numero di massimo {{max}} caratteri.',\n\t},\n\tnl: {\n\t\tcounter: 'Uw publicatie is {{current}} tekens lang. {{max}} tekens maximaal toegestaan.',\n\t},\n\t'nl-BE': {\n\t\tcounter: 'Uw publicatie is {{current}} tekens lang. {{max}} tekens maximaal toegestaan.',\n\t},\n\tes: {\n\t\tcounter: 'Su publicación tiene {{current}} caracteres. Se permite un máximo de {{max}} caracteres.',\n\t},\n\tpt: {\n\t\tcounter: '{{current}} {{max}} A sua publicação tem um comprimento de caracteres, sendo permitido um máximo de caracteres.',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_FORM_FIELD_TRANSLATIONS = new InjectionToken('LuFormFieldTranslations', {\n\tfactory: () => luFormFieldTranslations,\n});\n\nexport interface LuFormFieldTranslations {\n\tcounter: string;\n}\n\nexport const luFormFieldTranslations: LuTranslation<LuFormFieldTranslations> = Translations;\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, Component, ContentChildren, DestroyRef, DoCheck, forwardRef, inject, Input, OnChanges, OnDestroy, QueryList, Renderer2, signal, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractControl, NG_VALIDATORS, NgControl, ReactiveFormsModule, RequiredValidator, Validator, Validators } from '@angular/forms';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { getIntl, IntlParamsPipe, LuClass, PortalContent, PortalDirective } from '@lucca-front/ng/core';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { InlineMessageComponent, InlineMessageState } from '@lucca-front/ng/inline-message';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { BehaviorSubject, map, merge, startWith, Subject, switchMap } from 'rxjs';\nimport { FormFieldSize } from './form-field-size';\nimport { FORM_FIELD_INSTANCE } from './form-field.token';\nimport { LU_FORM_FIELD_TRANSLATIONS } from './form-field.translate';\nimport { InputDirective } from './input.directive';\n\nlet nextId = 0;\n\n@Component({\n\tselector: 'lu-form-field',\n\tstandalone: true,\n\timports: [NgIf, NgTemplateOutlet, InlineMessageComponent, LuTooltipModule, ReactiveFormsModule, IconComponent, IntlParamsPipe, PortalDirective],\n\ttemplateUrl: './form-field.component.html',\n\tstyleUrls: ['./form-field.component.scss'],\n\tproviders: [\n\t\tLuClass,\n\t\t{\n\t\t\tprovide: FORM_FIELD_INSTANCE,\n\t\t\tuseExisting: forwardRef(() => FormFieldComponent),\n\t\t},\n\t],\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class FormFieldComponent implements OnChanges, OnDestroy, DoCheck {\n\tintl = getIntl(LU_FORM_FIELD_TRANSLATIONS);\n\n\t#luClass = inject(LuClass);\n\n\t#renderer = inject(Renderer2);\n\n\t#requiredValidator: RequiredValidator | undefined;\n\n\t#destroyRef = inject(DestroyRef);\n\n\t#doCheck$ = new Subject<void>();\n\n\t@ContentChildren(NG_VALIDATORS, { descendants: true })\n\tpublic set validators(validators: QueryList<Validator | undefined>) {\n\t\tthis.#requiredValidator = validators.toArray()?.find((v): v is RequiredValidator => v instanceof RequiredValidator);\n\t}\n\n\t@ContentChildren(NgControl, { descendants: true })\n\tset controls(controls: QueryList<NgControl>) {\n\t\tconst controls$ = controls.changes.pipe(\n\t\t\ttakeUntilDestroyed(this.#destroyRef),\n\t\t\tstartWith(controls),\n\t\t\tmap(() => controls.toArray()),\n\t\t);\n\t\t// If a control is added or removed, we want to update status based on the new ones\n\t\tcontrols$.subscribe((controls) => {\n\t\t\tthis.updateRequiredStatus(controls);\n\t\t});\n\t\t// Upon status change or NgDoCheck trigger, we want to update validity and display\n\t\tcontrols$\n\t\t\t.pipe(\n\t\t\t\tswitchMap((controls) => {\n\t\t\t\t\t// We have to trigger status check on DoCheck too to properly update display when control.touched changes\n\t\t\t\t\t// Because we can't listen to `control.touched` changes, we need to hook on this.\n\t\t\t\t\t// TODO use unified control state change events once we have Angular 18\n\t\t\t\t\treturn merge(this.#doCheck$, ...controls.map((control) => control.statusChanges)).pipe(map(() => controls));\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe((controls) => {\n\t\t\t\tthis.updateRequiredStatus(controls);\n\t\t\t\tthis.updateAria();\n\t\t\t});\n\t}\n\n\t@Input({\n\t\trequired: true,\n\t})\n\tlabel: PortalContent;\n\n\t/**\n\t * Hide field label, while keeping it in DOM for screen readers\n\t */\n\t@Input({\n\t\ttransform: booleanAttribute,\n\t})\n\thiddenLabel = false;\n\n\t@Input({\n\t\ttransform: booleanAttribute,\n\t})\n\trolePresentationLabel = false;\n\n\t@Input({\n\t\ttransform: booleanAttribute,\n\t})\n\tinline = false;\n\n\t@Input()\n\tstatusControl: AbstractControl;\n\n\t@Input()\n\ttooltip: string | SafeHtml;\n\n\t/**\n\t * Override from input\n\t * @private\n\t */\n\t#invalidStatusOverride = false;\n\n\t@Input({ transform: booleanAttribute })\n\tset invalid(invalid: boolean) {\n\t\tthis.#invalidStatusOverride = invalid !== undefined && invalid !== null;\n\t\tthis.invalidStatus = invalid;\n\t\tthis.updateAria();\n\t}\n\n\t/**\n\t * Used to cache previous invalid status and know if we want to update aria stuff or not.\n\t * @private\n\t */\n\tprotected invalidStatus = false;\n\n\t@Input()\n\tinlineMessage: PortalContent;\n\n\t/**\n\t * Inline message for when the control is in error state\n\t */\n\t@Input()\n\terrorInlineMessage: PortalContent;\n\n\t/**\n\t * State of the inline message, will be ignored if form state is invalid\n\t */\n\t@Input()\n\tinlineMessageState: InlineMessageState;\n\n\t@Input()\n\tsize: FormFieldSize;\n\n\t@Input()\n\tlayout: 'default' | 'checkable' | 'fieldset' = 'default';\n\n\thasArrow = false;\n\n\t#inputs: InputDirective[] = [];\n\t/**\n\t * Max amount of characters allowed, defaults to 0, which means hidden, no maximum\n\t */\n\t@Input()\n\tcounter = 0;\n\n\trequired = false;\n\n\tget contentLength(): number {\n\t\treturn (this.#inputs[0]?.host?.nativeElement as HTMLInputElement)?.value.length || 0;\n\t}\n\n\tpublic addInput(input: InputDirective) {\n\t\tthis.#inputs.push(input);\n\t\t/* We have to put this in the next cycle to make sure it'll be applied properly\n\t\t * and that it won't trigger a change detection error\n\t\t */\n\t\tsetTimeout(() => {\n\t\t\tthis.prepareInput();\n\t\t});\n\t}\n\n\tpublic get inputs(): InputDirective[] {\n\t\treturn this.#inputs;\n\t}\n\n\tid = signal<string>('');\n\n\tready$ = new BehaviorSubject<boolean>(false);\n\n\tpublic get ready(): boolean {\n\t\treturn this.ready$.value;\n\t}\n\n\t#ariaLabelledBy: string[] = [];\n\n\taddLabelledBy(id: string, prepend = false): void {\n\t\tif (prepend) {\n\t\t\tthis.#ariaLabelledBy = [id, ...this.#ariaLabelledBy];\n\t\t} else {\n\t\t\tthis.#ariaLabelledBy = [...this.#ariaLabelledBy, id];\n\t\t}\n\t\tthis.#inputs.forEach((input) => {\n\t\t\tif (!input.standalone) {\n\t\t\t\tthis.#renderer.setAttribute(input.host.nativeElement, 'aria-labelledby', this.#ariaLabelledBy.join(' '));\n\t\t\t}\n\t\t});\n\t}\n\n\tremoveLabelledBy(id: string): void {\n\t\tthis.#ariaLabelledBy = this.#ariaLabelledBy.filter((labelledBy) => labelledBy === id);\n\t}\n\n\tngOnChanges(): void {\n\t\tthis.#luClass.setState({\n\t\t\t[`mod-${this.size}`]: !!this.size,\n\t\t\t'mod-checkable': this.layout === 'checkable',\n\t\t\t'form-field': this.layout !== 'fieldset',\n\t\t});\n\t\tthis.updateAria();\n\t}\n\n\tprepareInput(): void {\n\t\tif (this.#inputs.length === 0) {\n\t\t\tthrow new Error('Missing input for form field, make sure to set `luInput` to your input inside lu-form-field');\n\t\t}\n\t\tthis.inputs\n\t\t\t.filter((input) => !input.standalone)\n\t\t\t.forEach((input) => {\n\t\t\t\tconst inputId = `${input.host.nativeElement.tagName.toLowerCase()}-${++nextId}`;\n\t\t\t\tthis.#renderer.setAttribute(input.host.nativeElement, 'id', inputId);\n\t\t\t});\n\t\t// We're using the id from the first input available\n\t\tthis.id.set(this.#inputs[0].host.nativeElement.id);\n\t\tthis.updateAria();\n\t\tthis.ready$.next(true);\n\t}\n\n\tprivate updateAria(): void {\n\t\tthis.#inputs.forEach((input) => {\n\t\t\tthis.#renderer.setAttribute(input.host.nativeElement, 'aria-invalid', this.invalidStatus?.toString());\n\t\t\tthis.#renderer.setAttribute(input.host.nativeElement, 'aria-required', this.required?.toString());\n\t\t\tif (!input.standalone) {\n\t\t\t\tthis.#renderer.setAttribute(input.host.nativeElement, 'aria-describedby', `${input.host.nativeElement.id}-message`);\n\t\t\t}\n\t\t});\n\t\tif (this.id() && !this.#ariaLabelledBy.includes(`${this.id()}-label`)) {\n\t\t\tthis.addLabelledBy(`${this.id()}-label`);\n\t\t}\n\t}\n\n\tprivate updateRequiredStatus(controls: NgControl[]): void {\n\t\t// If invalid status is override, just skip updating from control because we don't care\n\t\tif (this.#invalidStatusOverride) {\n\t\t\treturn;\n\t\t}\n\t\tcontrols.forEach((control) => {\n\t\t\t// invalid management\n\t\t\tconst previousInvalid = this.invalidStatus;\n\t\t\tthis.invalidStatus = (control.invalid || this.statusControl?.invalid) && control.touched;\n\n\t\t\t// required management\n\t\t\tconst previousRequired = this.required;\n\t\t\tthis.required = this.#requiredValidator\n\t\t\t\t? booleanAttribute(this.#requiredValidator.required)\n\t\t\t\t: control.control.hasValidator(Validators.required) || control.control.hasValidator(Validators.requiredTrue);\n\n\t\t\t// If stuff changed, update aria attributes\n\t\t\tif (this.invalidStatus !== previousInvalid || this.required !== previousRequired) {\n\t\t\t\tthis.updateAria();\n\t\t\t}\n\t\t});\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.ready$.complete();\n\t}\n\n\tngDoCheck(): void {\n\t\tthis.#doCheck$.next();\n\t}\n}\n","@if (layout === 'fieldset') {\n<fieldset class=\"form-fieldset\" [class.mod-inline]=\"inline || hasArrow\" [class.mod-S]=\"size === 'S'\">\n\t<legend class=\"formLabel\" [class.u-mask]=\"hiddenLabel\" attr.aria-hidden=\"{{hiddenLabel}}\">\n\t\t<ng-container *luPortal=\"label\"></ng-container\n\t\t><!--\n\t--><sup class=\"formLabel-required\" aria-hidden=\"true\" *ngIf=\"required\">*</sup>\n\t\t<lu-icon\n\t\t\tclass=\"formLabel-info\"\n\t\t\ticon=\"signHelp\"\n\t\t\t[alt]=\"'?'\"\n\t\t\t*ngIf=\"tooltip\"\n\t\t\t[luTooltip]=\"tooltip\"\n\t\t\t[color]=\"invalidStatus ? 'error' : 'inherit'\"\n\t\t></lu-icon>\n\t</legend>\n\t<ng-container *ngTemplateOutlet=\"projectionTpl\"></ng-container>\n\t@if (inlineMessage || (invalidStatus ? errorInlineMessage : false)) {\n\t<lu-inline-message\n\t\tid=\"{{id()}}-message\"\n\t\t[label]=\"(invalidStatus && errorInlineMessage) ? errorInlineMessage : inlineMessage\"\n\t\t[state]=\"invalidStatus ? 'error' : inlineMessageState\"\n\t></lu-inline-message>\n\t}\n</fieldset>\n} @else {\n<label\n\tclass=\"formLabel\"\n\t[class.is-error]=\"invalidStatus\"\n\t[class.mod-counter]=\"counter > 0\"\n\tid=\"{{id()}}-label\"\n\tfor=\"{{id()}}\"\n\t[class.u-mask]=\"hiddenLabel\"\n\tattr.role=\"{{rolePresentationLabel ? 'presentation' : null}}\"\n>\n\t<ng-container *luPortal=\"label\"></ng-container\n\t><!--\n\t--><sup class=\"formLabel-required\" aria-hidden=\"true\" *ngIf=\"required\">*</sup>\n\n\t@if (tooltip) {\n\t<lu-icon class=\"formLabel-info\" icon=\"signHelp\" [alt]=\"'?'\" [luTooltip]=\"tooltip\" [color]=\"invalidStatus ? 'error' : 'inherit'\"></lu-icon>\n\t} @if (counter > 0) {\n\t<span class=\"formLabel-counter\" [class.u-textError]=\"contentLength > counter\" id=\"{{id()}}-counter\" aria-live=\"polite\">\n\t\t<span aria-hidden=\"true\">{{ contentLength }}/{{ counter }}</span>\n\t\t<span class=\"u-mask\">{{ intl.counter | intlParams: { current: contentLength, max: counter } }}</span>\n\t</span>\n\t}\n</label>\n<ng-container *ngTemplateOutlet=\"projectionTpl\"></ng-container>\n@if (inlineMessage || (invalidStatus ? errorInlineMessage : false)) {\n<lu-inline-message\n\tid=\"{{id()}}-message\"\n\t[label]=\"(invalidStatus && errorInlineMessage) ? errorInlineMessage : inlineMessage\"\n\t[state]=\"invalidStatus ? 'error' : inlineMessageState\"\n></lu-inline-message>\n} }\n\n<ng-template #projectionTpl>\n\t<ng-content></ng-content>\n</ng-template>\n","import { booleanAttribute, Directive, ElementRef, inject, Input, OnInit } from '@angular/core';\nimport { FORM_FIELD_INSTANCE } from './form-field.token';\n\n@Directive({\n\tselector: '[luInput]',\n\tstandalone: true,\n\thost: {\n\t\t// Used to autofocus in dialog boxes, do not change except if you know what you're doing\n\t\tclass: 'luNativeInput',\n\t},\n})\nexport class InputDirective implements OnInit {\n\tpublic readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\tpublic readonly formFieldRef = inject(FORM_FIELD_INSTANCE, { optional: true });\n\n\t/**\n\t * Prevents message and label ids from being propagated, useful if the input holds its own message and label (like for radios)\n\t */\n\t@Input({ transform: booleanAttribute, alias: 'luInputStandalone' })\n\tstandalone = false;\n\n\tngOnInit(): void {\n\t\t// If the field is used as standalone, we won't have the ref provided so it'll crash\n\t\tif (this.formFieldRef) {\n\t\t\tthis.formFieldRef.addInput(this);\n\t\t}\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-form-field.mjs","sources":["../../../packages/ng/form-field/form-field.token.ts","../../../packages/ng/form-field/translations.ts","../../../packages/ng/form-field/form-field.translate.ts","../../../packages/ng/form-field/form-field.component.ts","../../../packages/ng/form-field/form-field.component.html","../../../packages/ng/form-field/input.directive.ts","../../../packages/ng/form-field/lucca-front-ng-form-field.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { FormFieldComponent } from './form-field.component';\n\nexport const FORM_FIELD_INSTANCE = new InjectionToken<FormFieldComponent>('FORM_FIELD_INSTANCE');\n","export const Translations = {\n\ten: {\n\t\tcounter: 'Your message is {{current}} characters long. A maximum of {{max}} characters is allowed.',\n\t},\n\tde: {\n\t\tcounter: 'Ihr Beitrag ist {{current}} Zeichen lang. Maximal sind {{max}} Zeichen erlaubt.',\n\t},\n\tfr: {\n\t\tcounter: 'Votre publication fait {{current}} caractères de long. {{max}} caractères maximum sont autorisés.',\n\t},\n\tit: {\n\t\tcounter: 'La tua pubblicazione è lunga {{current}} caratteri. È consentito un numero di massimo {{max}} caratteri.',\n\t},\n\tnl: {\n\t\tcounter: 'Uw publicatie is {{current}} tekens lang. {{max}} tekens maximaal toegestaan.',\n\t},\n\t'nl-BE': {\n\t\tcounter: 'Uw publicatie is {{current}} tekens lang. {{max}} tekens maximaal toegestaan.',\n\t},\n\tes: {\n\t\tcounter: 'Su publicación tiene {{current}} caracteres. Se permite un máximo de {{max}} caracteres.',\n\t},\n\tpt: {\n\t\tcounter: '{{current}} {{max}} A sua publicação tem um comprimento de caracteres, sendo permitido um máximo de caracteres.',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_FORM_FIELD_TRANSLATIONS = new InjectionToken('LuFormFieldTranslations', {\n\tfactory: () => luFormFieldTranslations,\n});\n\nexport interface LuFormFieldTranslations {\n\tcounter: string;\n}\n\nexport const luFormFieldTranslations: LuTranslation<LuFormFieldTranslations> = Translations;\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, Component, ContentChildren, DestroyRef, DoCheck, forwardRef, inject, Input, OnChanges, OnDestroy, QueryList, Renderer2, signal, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractControl, NG_VALIDATORS, NgControl, ReactiveFormsModule, RequiredValidator, Validator, Validators } from '@angular/forms';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { getIntl, IntlParamsPipe, LuClass, PortalContent, PortalDirective } from '@lucca-front/ng/core';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { InlineMessageComponent, InlineMessageState } from '@lucca-front/ng/inline-message';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { BehaviorSubject, map, merge, startWith, Subject, switchMap } from 'rxjs';\nimport { FormFieldSize } from './form-field-size';\nimport { FORM_FIELD_INSTANCE } from './form-field.token';\nimport { LU_FORM_FIELD_TRANSLATIONS } from './form-field.translate';\nimport { InputDirective } from './input.directive';\n\nlet nextId = 0;\n\n@Component({\n\tselector: 'lu-form-field',\n\tstandalone: true,\n\timports: [NgIf, NgTemplateOutlet, InlineMessageComponent, LuTooltipModule, ReactiveFormsModule, IconComponent, IntlParamsPipe, PortalDirective],\n\ttemplateUrl: './form-field.component.html',\n\tstyleUrls: ['./form-field.component.scss'],\n\tproviders: [\n\t\tLuClass,\n\t\t{\n\t\t\tprovide: FORM_FIELD_INSTANCE,\n\t\t\tuseExisting: forwardRef(() => FormFieldComponent),\n\t\t},\n\t],\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class FormFieldComponent implements OnChanges, OnDestroy, DoCheck {\n\tintl = getIntl(LU_FORM_FIELD_TRANSLATIONS);\n\n\t#luClass = inject(LuClass);\n\n\t#renderer = inject(Renderer2);\n\n\t#requiredValidator: RequiredValidator | undefined;\n\n\t#destroyRef = inject(DestroyRef);\n\n\t#doCheck$ = new Subject<void>();\n\n\t@ContentChildren(NG_VALIDATORS, { descendants: true })\n\tpublic set validators(validators: QueryList<Validator | undefined>) {\n\t\tthis.#requiredValidator = validators.toArray()?.find((v): v is RequiredValidator => v instanceof RequiredValidator);\n\t}\n\n\t@ContentChildren(NgControl, { descendants: true })\n\tset controls(controls: QueryList<NgControl>) {\n\t\tconst controls$ = controls.changes.pipe(\n\t\t\ttakeUntilDestroyed(this.#destroyRef),\n\t\t\tstartWith(controls),\n\t\t\tmap(() => controls.toArray()),\n\t\t);\n\t\t// If a control is added or removed, we want to update status based on the new ones\n\t\tcontrols$.subscribe((controls) => {\n\t\t\tthis.updateRequiredStatus(controls);\n\t\t});\n\t\t// Upon status change or NgDoCheck trigger, we want to update validity and display\n\t\tcontrols$\n\t\t\t.pipe(\n\t\t\t\tswitchMap((controls) => {\n\t\t\t\t\t// We have to trigger status check on DoCheck too to properly update display when control.touched changes\n\t\t\t\t\t// Because we can't listen to `control.touched` changes, we need to hook on this.\n\t\t\t\t\t// TODO use unified control state change events once we have Angular 18\n\t\t\t\t\treturn merge(this.#doCheck$, ...controls.map((control) => control.statusChanges)).pipe(map(() => controls));\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe((controls) => {\n\t\t\t\tthis.updateRequiredStatus(controls);\n\t\t\t\tthis.updateAria();\n\t\t\t});\n\t}\n\n\t@Input({\n\t\trequired: true,\n\t})\n\tlabel: PortalContent;\n\n\t/**\n\t * Hide field label, while keeping it in DOM for screen readers\n\t */\n\t@Input({\n\t\ttransform: booleanAttribute,\n\t})\n\thiddenLabel = false;\n\n\t@Input({\n\t\ttransform: booleanAttribute,\n\t})\n\trolePresentationLabel = false;\n\n\t@Input({\n\t\ttransform: booleanAttribute,\n\t})\n\tinline = false;\n\n\t@Input()\n\tstatusControl: AbstractControl;\n\n\t@Input()\n\ttooltip: string | SafeHtml;\n\n\t/**\n\t * Override from input\n\t * @private\n\t */\n\t#invalidStatusOverride = false;\n\n\t@Input({ transform: booleanAttribute })\n\tset invalid(invalid: boolean) {\n\t\tthis.#invalidStatusOverride = invalid !== undefined && invalid !== null;\n\t\tthis.invalidStatus = invalid;\n\t\tthis.updateAria();\n\t}\n\n\t/**\n\t * Used to cache previous invalid status and know if we want to update aria stuff or not.\n\t * @private\n\t */\n\tprotected invalidStatus = false;\n\n\t@Input()\n\tinlineMessage: PortalContent;\n\n\t/**\n\t * Inline message for when the control is in error state\n\t */\n\t@Input()\n\terrorInlineMessage: PortalContent;\n\n\t/**\n\t * State of the inline message, will be ignored if form state is invalid\n\t */\n\t@Input()\n\tinlineMessageState: InlineMessageState;\n\n\t@Input()\n\tsize: FormFieldSize;\n\n\t@Input()\n\tlayout: 'default' | 'checkable' | 'fieldset' = 'default';\n\n\thasArrow = false;\n\n\t#inputs: InputDirective[] = [];\n\t/**\n\t * Max amount of characters allowed, defaults to 0, which means hidden, no maximum\n\t */\n\t@Input()\n\tcounter = 0;\n\n\trequired = false;\n\n\tget contentLength(): number {\n\t\treturn (this.#inputs[0]?.host?.nativeElement as HTMLInputElement)?.value.length || 0;\n\t}\n\n\tpublic addInput(input: InputDirective) {\n\t\tthis.#inputs.push(input);\n\t\t/* We have to put this in the next cycle to make sure it'll be applied properly\n\t\t * and that it won't trigger a change detection error\n\t\t */\n\t\tsetTimeout(() => {\n\t\t\tthis.prepareInput();\n\t\t});\n\t}\n\n\tpublic get inputs(): InputDirective[] {\n\t\treturn this.#inputs;\n\t}\n\n\tid = signal<string>('');\n\n\tready$ = new BehaviorSubject<boolean>(false);\n\n\tpublic get ready(): boolean {\n\t\treturn this.ready$.value;\n\t}\n\n\t#ariaLabelledBy: string[] = [];\n\n\taddLabelledBy(id: string, prepend = false): void {\n\t\tif (prepend) {\n\t\t\tthis.#ariaLabelledBy = [id, ...this.#ariaLabelledBy];\n\t\t} else {\n\t\t\tthis.#ariaLabelledBy = [...this.#ariaLabelledBy, id];\n\t\t}\n\t\tthis.#inputs.forEach((input) => {\n\t\t\tif (!input.standalone) {\n\t\t\t\tthis.#renderer.setAttribute(input.host.nativeElement, 'aria-labelledby', this.#ariaLabelledBy.join(' '));\n\t\t\t}\n\t\t});\n\t}\n\n\tremoveLabelledBy(id: string): void {\n\t\tthis.#ariaLabelledBy = this.#ariaLabelledBy.filter((labelledBy) => labelledBy === id);\n\t}\n\n\tngOnChanges(): void {\n\t\tthis.#luClass.setState({\n\t\t\t[`mod-${this.size}`]: !!this.size,\n\t\t\t'mod-checkable': this.layout === 'checkable',\n\t\t\t'form-field': this.layout !== 'fieldset',\n\t\t});\n\t\tthis.updateAria();\n\t}\n\n\tprepareInput(): void {\n\t\tif (this.#inputs.length === 0) {\n\t\t\tthrow new Error('Missing input for form field, make sure to set `luInput` to your input inside lu-form-field');\n\t\t}\n\t\tthis.inputs\n\t\t\t.filter((input) => !input.standalone)\n\t\t\t.forEach((input) => {\n\t\t\t\tconst inputId = `${input.host.nativeElement.tagName.toLowerCase()}-${++nextId}`;\n\t\t\t\tthis.#renderer.setAttribute(input.host.nativeElement, 'id', inputId);\n\t\t\t});\n\t\t// We're using the id from the first input available\n\t\tthis.id.set(this.#inputs[0].host.nativeElement.id);\n\t\tthis.updateAria();\n\t\tthis.ready$.next(true);\n\t}\n\n\tprivate updateAria(): void {\n\t\tthis.#inputs.forEach((input) => {\n\t\t\tthis.#renderer.setAttribute(input.host.nativeElement, 'aria-invalid', this.invalidStatus?.toString());\n\t\t\tthis.#renderer.setAttribute(input.host.nativeElement, 'aria-required', this.required?.toString());\n\t\t\tif (!input.standalone) {\n\t\t\t\tthis.#renderer.setAttribute(input.host.nativeElement, 'aria-describedby', `${input.host.nativeElement.id}-message`);\n\t\t\t}\n\t\t});\n\t\tif (this.id() && !this.#ariaLabelledBy.includes(`${this.id()}-label`)) {\n\t\t\tthis.addLabelledBy(`${this.id()}-label`);\n\t\t}\n\t}\n\n\tprivate updateRequiredStatus(controls: NgControl[]): void {\n\t\t// If invalid status is override, just skip updating from control because we don't care\n\t\tif (this.#invalidStatusOverride) {\n\t\t\treturn;\n\t\t}\n\t\tcontrols.forEach((control) => {\n\t\t\t// invalid management\n\t\t\tconst previousInvalid = this.invalidStatus;\n\t\t\tthis.invalidStatus = (control.invalid || this.statusControl?.invalid) && control.touched;\n\n\t\t\t// required management\n\t\t\tconst previousRequired = this.required;\n\t\t\tthis.required = this.#requiredValidator\n\t\t\t\t? booleanAttribute(this.#requiredValidator.required)\n\t\t\t\t: control.control.hasValidator(Validators.required) || control.control.hasValidator(Validators.requiredTrue);\n\n\t\t\t// If stuff changed, update aria attributes\n\t\t\tif (this.invalidStatus !== previousInvalid || this.required !== previousRequired) {\n\t\t\t\tthis.updateAria();\n\t\t\t}\n\t\t});\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.ready$.complete();\n\t}\n\n\tngDoCheck(): void {\n\t\tthis.#doCheck$.next();\n\t}\n}\n","@if (layout === 'fieldset') {\n<fieldset class=\"form-fieldset\" [class.mod-inline]=\"inline || hasArrow\" [class.mod-S]=\"size === 'S'\">\n\t<legend class=\"formLabel\" [class.u-mask]=\"hiddenLabel\" attr.aria-hidden=\"{{hiddenLabel}}\">\n\t\t<ng-container *luPortal=\"label\"></ng-container\n\t\t><!--\n\t--><sup class=\"formLabel-required\" aria-hidden=\"true\" *ngIf=\"required\">*</sup>\n\t\t<lu-icon\n\t\t\tclass=\"formLabel-info\"\n\t\t\ticon=\"signHelp\"\n\t\t\t[alt]=\"'?'\"\n\t\t\t*ngIf=\"tooltip\"\n\t\t\t[luTooltip]=\"tooltip\"\n\t\t\t[color]=\"invalidStatus ? 'error' : 'inherit'\"\n\t\t></lu-icon>\n\t</legend>\n\t<ng-container *ngTemplateOutlet=\"projectionTpl\"></ng-container>\n\t@if (inlineMessage || (invalidStatus ? errorInlineMessage : false)) {\n\t<lu-inline-message\n\t\tid=\"{{id()}}-message\"\n\t\t[label]=\"(invalidStatus && errorInlineMessage) ? errorInlineMessage : inlineMessage\"\n\t\t[state]=\"invalidStatus ? 'error' : inlineMessageState\"\n\t></lu-inline-message>\n\t}\n</fieldset>\n} @else {\n<label\n\tclass=\"formLabel\"\n\t[class.is-error]=\"invalidStatus\"\n\t[class.mod-counter]=\"counter > 0\"\n\tid=\"{{id()}}-label\"\n\tfor=\"{{id()}}\"\n\t[class.u-mask]=\"hiddenLabel\"\n\tattr.role=\"{{rolePresentationLabel ? 'presentation' : null}}\"\n>\n\t<ng-container *luPortal=\"label\"></ng-container\n\t><!--\n\t--><sup class=\"formLabel-required\" aria-hidden=\"true\" *ngIf=\"required\">*</sup>\n\n\t@if (tooltip) {\n\t<lu-icon class=\"formLabel-info\" icon=\"signHelp\" [alt]=\"'?'\" [luTooltip]=\"tooltip\" [color]=\"invalidStatus ? 'error' : 'inherit'\"></lu-icon>\n\t} @if (counter > 0) {\n\t<span class=\"formLabel-counter\" [class.u-textError]=\"contentLength > counter\" id=\"{{id()}}-counter\" aria-live=\"polite\">\n\t\t<span aria-hidden=\"true\">{{ contentLength }}/{{ counter }}</span>\n\t\t<span class=\"u-mask\">{{ intl.counter | intlParams: { current: contentLength, max: counter } }}</span>\n\t</span>\n\t}\n</label>\n<ng-container *ngTemplateOutlet=\"projectionTpl\"></ng-container>\n@if (inlineMessage || (invalidStatus ? errorInlineMessage : false)) {\n<lu-inline-message\n\tid=\"{{id()}}-message\"\n\t[label]=\"(invalidStatus && errorInlineMessage) ? errorInlineMessage : inlineMessage\"\n\t[state]=\"invalidStatus ? 'error' : inlineMessageState\"\n></lu-inline-message>\n} }\n\n<ng-template #projectionTpl>\n\t<ng-content></ng-content>\n</ng-template>\n","import { booleanAttribute, Directive, ElementRef, inject, Input, OnInit } from '@angular/core';\nimport { FORM_FIELD_INSTANCE } from './form-field.token';\n\n@Directive({\n\tselector: '[luInput]',\n\tstandalone: true,\n\thost: {\n\t\t// Used to autofocus in dialog boxes, do not change except if you know what you're doing\n\t\tclass: 'luNativeInput',\n\t},\n})\nexport class InputDirective implements OnInit {\n\tpublic readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\tpublic readonly formFieldRef = inject(FORM_FIELD_INSTANCE, { optional: true });\n\n\t/**\n\t * Prevents message and label ids from being propagated, useful if the input holds its own message and label (like for radios)\n\t */\n\t@Input({ transform: booleanAttribute, alias: 'luInputStandalone' })\n\tstandalone = false;\n\n\tngOnInit(): void {\n\t\t// If the field is used as standalone, we won't have the ref provided so it'll crash\n\t\tif (this.formFieldRef) {\n\t\t\tthis.formFieldRef.addInput(this);\n\t\t}\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -5,14 +5,14 @@ import { InjectionToken, Injectable, inject, Pipe, ElementRef, Directive, Input,
5
5
  import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
6
  import * as i1$2 from '@angular/forms';
7
7
  import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
8
- import { LuSelectPanelRef, SELECT_ID, CoreSelectKeyManager, ɵgetGroupTemplateLocation as _getGroupTemplateLocation, ɵLuOptionComponent as _LuOptionComponent, ɵLuOptionGroupPipe as _LuOptionGroupPipe, ɵLuOptionOutletDirective as _LuOptionOutletDirective, ALuSelectInputComponent, provideLuSelectOverlayContainer, provideLuSelectLabelsAndIds, LU_OPTION_CONTEXT, CORE_SELECT_API_TOTAL_COUNT_PROVIDER } from '@lucca-front/ng/core-select';
8
+ import { LuSelectPanelRef, SELECT_ID, CoreSelectKeyManager, ɵgetGroupTemplateLocation as _getGroupTemplateLocation, ɵLuOptionComponent as _LuOptionComponent, ɵLuOptionGroupPipe as _LuOptionGroupPipe, ɵLuOptionOutletDirective as _LuOptionOutletDirective, SELECT_LABEL_ID, addAttributesOnCdkContainer, ALuSelectInputComponent, provideLuSelectLabelsAndIds, LU_OPTION_CONTEXT, CORE_SELECT_API_TOTAL_COUNT_PROVIDER } from '@lucca-front/ng/core-select';
9
9
  import { LuTooltipModule } from '@lucca-front/ng/tooltip';
10
10
  import { EMPTY, takeUntil, Subject, of, BehaviorSubject } from 'rxjs';
11
11
  import { getIntl, PortalDirective } from '@lucca-front/ng/core';
12
- import { IconComponent } from '@lucca-front/ng/icon';
13
12
  import { Overlay, OverlayPositionBuilder, ScrollStrategyOptions } from '@angular/cdk/overlay';
14
13
  import { ComponentPortal } from '@angular/cdk/portal';
15
14
  import { A11yModule } from '@angular/cdk/a11y';
15
+ import { IconComponent } from '@lucca-front/ng/icon';
16
16
  import { startWith, switchMap, map } from 'rxjs/operators';
17
17
  import * as i1$1 from '@lucca-front/ng/form-field';
18
18
  import { InputDirective, FormFieldComponent } from '@lucca-front/ng/form-field';
@@ -225,6 +225,7 @@ class LuMultiSelectPanelComponent {
225
225
  this.options$ = this.selectInput.options$;
226
226
  this.grouping = this.selectInput.grouping;
227
227
  this.loading$ = this.selectInput.loading$;
228
+ this.searchable = this.selectInput.searchable;
228
229
  this.optionComparer = this.selectInput.optionComparer;
229
230
  this.optionKey = this.selectInput.optionKey;
230
231
  this.trackOptionsBy = (_, option) => this.optionKey(option);
@@ -234,7 +235,7 @@ class LuMultiSelectPanelComponent {
234
235
  this.keyManager = inject(CoreSelectKeyManager);
235
236
  this.clueChange$ = this.selectInput.clue$;
236
237
  this.shouldDisplayAddOption$ = this.selectInput.shouldDisplayAddOption$;
237
- this.groupTemplateLocation$ = _getGroupTemplateLocation(!!this.grouping, this.clueChange$, this.options$);
238
+ this.groupTemplateLocation$ = _getGroupTemplateLocation(!!this.grouping, this.clueChange$, this.options$, this.searchable);
238
239
  }
239
240
  onScroll(evt) {
240
241
  if (!(evt.target instanceof HTMLElement)) {
@@ -366,12 +367,15 @@ class LuMultiSelectPanelRefFactory {
366
367
  this.positionBuilder = inject(OverlayPositionBuilder);
367
368
  this.scrollStrategies = inject(ScrollStrategyOptions);
368
369
  this.parentInjector = inject(Injector);
370
+ this.selectLabelId = inject(SELECT_LABEL_ID);
371
+ this.selectId = inject(SELECT_ID);
369
372
  }
370
373
  buildPanelRef(selectInput, defaultOverlayConfigOverride = {}) {
371
374
  const defaultOverlayConfig = this.buildDefaultOverlayConfig(defaultOverlayConfigOverride);
372
375
  const overlayRef = this.overlay.create(defaultOverlayConfig);
373
376
  overlayRef.hostElement.style.transitionProperty = 'height';
374
377
  overlayRef.hostElement.style.transitionDuration = 'var(--commons-animations-durations-standard)';
378
+ addAttributesOnCdkContainer(overlayRef, this.selectLabelId, this.selectId);
375
379
  return new MultiSelectPanelRef(overlayRef, this.parentInjector, selectInput, defaultOverlayConfig.positionStrategy);
376
380
  }
377
381
  buildDefaultOverlayConfig(overlayConfigOverride = {}) {
@@ -486,7 +490,6 @@ class LuMultiSelectInputComponent extends ALuSelectInputComponent {
486
490
  provide: ALuSelectInputComponent,
487
491
  useExisting: forwardRef(() => LuMultiSelectInputComponent),
488
492
  },
489
- provideLuSelectOverlayContainer(),
490
493
  provideLuSelectLabelsAndIds(),
491
494
  LuMultiSelectPanelRefFactory,
492
495
  ], usesInheritance: true, ngImport: i0, template: "<ng-container *luOptionOutlet=\"valuesTpl(); value: value || []\"></ng-container>\n\n<button\n\t*ngIf=\"hasValue() && clearable && (disabled$ | async) === false\"\n\trole=\"button\"\n\ttype=\"button\"\n\tclass=\"multipleSelect-clear clear\"\n\t(click)=\"clearValue($event)\"\n>\n\t<span class=\"u-mask\">{{intl.clear}}</span>\n</button>\n<span aria-hidden=\"true\" class=\"multipleSelect-arrow lucca-icon icon-arrowChevronBottom\"></span>\n", styles: [".multiSelect{--components-multiSelect-fontSize: var(--sizes-M-fontSize);--components-multiSelect-lineHeight: var(--sizes-M-lineHeight);--components-multiSelect-padding: var(--pr-t-spacings-100);--components-multiSelect-gap: var(--pr-t-spacings-100);--components-multiSelect-background: var(--palettes-neutral-0);--components-multiSelect-border-color: var(--palettes-neutral-300);--components-multiSelect-placeholder: var(--palettes-neutral-400);--components-multiSelect-arrow-color: var(--palettes-neutral-600);display:flex;box-shadow:0 0 0 1px var(--components-multiSelect-border-color);background-color:var(--components-multiSelect-background);border-radius:var(--commons-borderRadius-M);padding:var(--components-multiSelect-padding);align-items:flex-end;gap:var(--components-multiSelect-gap);cursor:pointer}.multiSelect:hover{--components-multiSelect-border-color: var(--palettes-neutral-400)}.multipleSelect-displayer{display:flex;gap:var(--pr-t-spacings-50);flex-wrap:wrap;flex:1}.multipleSelect-displayer-chip{min-width:0}.multipleSelect-displayer-chip-value{max-width:8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.multipleSelect-displayer-search{display:block;min-width:2rem;width:auto;flex:1;order:1;border:0;padding:0;outline:none;color:var(--palettes-neutral-800);font-size:var(--components-multiSelect-fontSize);line-height:var(--components-multiSelect-lineHeight);background-color:transparent;cursor:pointer}.multipleSelect-displayer-search::placeholder{color:var(--components-multiSelect-placeholder)}.multipleSelect-displayer-label{font-size:var(--components-multiSelect-fontSize);line-height:var(--components-multiSelect-lineHeight)}.multipleSelect-clear{margin-bottom:var(--pr-t-spacings-50)}.multipleSelect-arrow{--icon-size: 1.5rem;color:var(--components-multiSelect-arrow-color);transition-property:transform;transition-duration:var(--commons-animations-durations-standard)}.multiSelect.mod-S{--components-multiSelect-fontSize: var(--sizes-S-fontSize);--components-multiSelect-lineHeight: var(--sizes-S-lineHeight);--components-multiSelect-padding: var(--pr-t-spacings-75);--components-multiSelect-gap: var(--pr-t-spacings-75)}.multiSelect.mod-S .multipleSelect-arrow{--icon-size: 1.25rem}.multiSelect.mod-S .multipleSelect-clear.clear,.multiSelect.mod-S .multipleSelect-clear:not(.clear){--components-clear-size: .75rem;--icon-size: .75rem}.multiSelect.mod-S .multipleSelect-displayer-chip.chip,.multiSelect.mod-S .multipleSelect-displayer-chip:not(.chip){--components-chip-fontSize: var(--sizes-XS-fontSize);--components-chip-lineHeight: var(--sizes-XS-lineHeight)}.multiSelect.mod-S .multipleSelect-displayer-numericBadge.numericBadge,.multiSelect.mod-S .multipleSelect-displayer-numericBadge:not(.numericBadge){--components-numericBadge-size: 1.25rem;--components-numericBadge-borderRadius: 6px;--components-numericBadge-fontSize: var(--sizes-XS-fontSize);--components-numericBadge-lineHeight: var(--sizes-XS-lineHeight)}.multiSelect:has(.multipleSelect-displayer-search:focus-visible){outline:2px solid var(--palettes-product-700);outline-offset:3px}.multiSelect:has(.multipleSelect-displayer-search[aria-invalid=true]){--components-multiSelect-border-color: var(--palettes-error-400);--components-multiSelect-background: var(--palettes-error-50);--components-multiSelect-placeholder: var(--palettes-error-400)}.multiSelect:has(.multipleSelect-displayer-search:disabled){--components-multiSelect-border-color: var(--palettes-neutral-300);--components-multiSelect-background: var(--commons-disabled-background);--components-multiSelect-placeholder: var(--commons-disabled-placeholder);--components-multiSelect-arrow-color: var(--palettes-neutral-500);pointer-events:none}.multiSelect:has([aria-expanded=true]) .multipleSelect-arrow{transform:rotate(-180deg)}.multipleSelect-displayer.mod-filter{display:grid}.multipleSelect-displayer.mod-filter .multipleSelect-displayer-filter{grid-column-start:1;grid-row-start:1;display:flex;gap:var(--pr-t-spacings-50);min-width:0}.multipleSelect-displayer.mod-filter .multipleSelect-displayer-search{grid-column-start:1;grid-row-start:1}.multipleSelect-displayer.mod-filter.is-filled .multipleSelect-displayer-search{opacity:0}.multipleSelect-displayer.mod-filter:has([aria-expanded=true]):not(:has(:placeholder-shown)) .multipleSelect-displayer-filter{display:none}.multipleSelect-displayer.mod-filter:has([aria-expanded=true]):not(:has(:placeholder-shown)) .multipleSelect-displayer-search{opacity:1}.clear{--components-clear-size: 1rem;--components-clear-background: var(--palettes-neutral-700);--components-clear-cross-color: var(--palettes-neutral-0);--components-clear-background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16' fill='none'%3E%3Cpath d='M5.80473 4.86192C5.54438 4.60157 5.12227 4.60157 4.86192 4.86192C4.60157 5.12227 4.60157 5.54438 4.86192 5.80473L7.05718 7.99999L4.86192 10.1953C4.60157 10.4556 4.60157 10.8777 4.86192 11.1381C5.12227 11.3984 5.54438 11.3984 5.80473 11.1381L7.99999 8.9428L10.1953 11.1381C10.4556 11.3984 10.8777 11.3984 11.1381 11.1381C11.3984 10.8777 11.3984 10.4556 11.1381 10.1953L8.9428 7.99999L11.1381 5.80473C11.3984 5.54438 11.3984 5.12227 11.1381 4.86192C10.8777 4.60157 10.4556 4.60157 10.1953 4.86192L7.99999 7.05718L5.80473 4.86192Z' fill='currentColor'/%3E%3C/svg%3E\");padding:0;border:0;width:100%;background-color:transparent;color:inherit;text-align:left;display:block;font:inherit;cursor:pointer;display:grid;grid-template-columns:1fr;grid-template-rows:1fr;grid-template-areas:\"main\";align-items:normal;flex-shrink:0;width:var(--components-clear-size);height:var(--components-clear-size);border-radius:var(--commons-borderRadius-full)}.clear:before,.clear:after{content:\"\";grid-area:main}.clear:before{border-radius:var(--commons-borderRadius-full);background-color:var(--components-clear-background)}.clear:after{-webkit-mask-image:var(--components-clear-background-image);mask-image:var(--components-clear-background-image);-webkit-mask-size:var(--components-clear-size);mask-size:var(--components-clear-size);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:var(--components-clear-cross-color)}.clear:hover{--components-clear-cross-color: var(--palettes-neutral-0);--components-clear-background: var(--palettes-neutral-600)}.clear:focus-visible{outline:2px solid var(--palettes-product-700);outline-offset:2px;border-radius:50%}.clear:active{--components-clear-background: var(--palettes-neutral-800)}.clear .lucca-icon{display:none}.clear.mod-S{--components-clear-size: .75rem;--icon-size: .75rem}.clear.palette-product:not([disabled]),.clear.palette-primary:not([disabled]){--components-clear-cross-color: var(--palettes-product-700);--components-clear-background: var(--palettes-neutral-0)}.clear.palette-product:not([disabled]):hover,.clear.palette-primary:not([disabled]):hover{--components-clear-background: var(--palettes-product-50)}.clear.palette-product:not([disabled]):active,.clear.palette-primary:not([disabled]):active{--components-clear-background: var(--palettes-product-50)}.clear[disabled]{--components-clear-cross-color: var(--palettes-neutral-500);--components-clear-background: var(--palettes-neutral-300);cursor:default}.chip{--components-chip-fontSize: var(--sizes-S-fontSize);--components-chip-lineHeight: var(--sizes-S-lineHeight);--components-chip-kill-size: .75rem;--components-chip-kill-background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16' fill='none'%3E%3Cpath d='M5.80473 4.86192C5.54438 4.60157 5.12227 4.60157 4.86192 4.86192C4.60157 5.12227 4.60157 5.54438 4.86192 5.80473L7.05718 7.99999L4.86192 10.1953C4.60157 10.4556 4.60157 10.8777 4.86192 11.1381C5.12227 11.3984 5.54438 11.3984 5.80473 11.1381L7.99999 8.9428L10.1953 11.1381C10.4556 11.3984 10.8777 11.3984 11.1381 11.1381C11.3984 10.8777 11.3984 10.4556 11.1381 10.1953L8.9428 7.99999L11.1381 5.80473C11.3984 5.54438 11.3984 5.12227 11.1381 4.86192C10.8777 4.60157 10.4556 4.60157 10.1953 4.86192L7.99999 7.05718L5.80473 4.86192Z' fill='currentColor'/%3E%3C/svg%3E\");background-color:var(--palettes-700, var(--palettes-neutral-200));border-radius:var(--commons-borderRadius-M);color:var(--palettes-0, var(--palettes-text, var(--palettes-neutral-800)));display:inline-flex;align-items:center;gap:var(--pr-t-spacings-100);position:relative;vertical-align:middle;padding:calc(var(--pr-t-spacings-50) / 2) var(--pr-t-spacings-100);font-size:var(--components-chip-fontSize);line-height:var(--components-chip-lineHeight)}.chip-kill{padding:0;border:0;width:100%;background-color:transparent;color:inherit;text-align:left;display:block;font:inherit;display:grid;grid-template-columns:1fr;grid-template-rows:1fr;grid-template-areas:\"main\";place-items:center;width:var(--pr-t-spacings-300);height:var(--pr-t-spacings-300);margin:calc(var(--pr-t-spacings-75) * -1);flex-shrink:0;cursor:pointer}.chip-kill:before,.chip-kill:after{content:\"\";grid-area:main;width:var(--components-chip-kill-size);height:var(--components-chip-kill-size)}.chip-kill:before{border-radius:var(--commons-borderRadius-full);background-color:var(--components-chip-kill-disk-color, var(--palettes-neutral-700))}.chip-kill:after{-webkit-mask-image:var(--components-chip-kill-background-image);mask-image:var(--components-chip-kill-background-image);-webkit-mask-size:var(--components-chip-kill-size);mask-size:var(--components-chip-kill-size);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:var(--components-chip-kill-cross-color, var(--palettes-neutral-0))}.chip-kill:hover{--components-chip-kill-disk-color: var(--palettes-neutral-600);--components-chip-kill-cross-color: var(--palettes-700, var(--palettes-neutral-0))}.chip-kill:focus-visible{outline:2px solid var(--palettes-product-700);outline-offset:-4px;border-radius:var(--commons-borderRadius-full)}.chip-kill:active{--components-chip-kill-disk-color: var(--palettes-50, var(--palettes-neutral-800))}.chip.mod-S{--components-chip-fontSize: var(--sizes-XS-fontSize);--components-chip-lineHeight: var(--sizes-XS-lineHeight)}.chip.palette-product .chip-kill,.chip.palette-primary .chip-kill{--components-chip-kill-cross-color: var(--palettes-product-700);--components-chip-kill-disk-color: var(--palettes-neutral-0)}.chip.palette-product .chip-kill:hover,.chip.palette-primary .chip-kill:hover,.chip.palette-product .chip-kill:active,.chip.palette-primary .chip-kill:active{--components-chip-kill-disk-color: var(--palettes-product-50)}.chip.palette-product .chip-kill:focus-visible,.chip.palette-primary .chip-kill:focus-visible{outline:2px solid var(--palettes-neutral-0);outline-offset:-4px;border-radius:var(--commons-borderRadius-full)}.chip.mod-unkillable .chip-kill{display:none}.chip.mod-clickable{cursor:pointer;text-decoration:none}.chip.mod-clickable:hover{background-color:var(--palettes-600, var(--palettes-neutral-100))}.chip.is-disabled{background-color:var(--commons-disabled-background);color:var(--palettes-neutral-500)}.chip.is-disabled .chip-kill{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: LuTooltipModule }, { kind: "directive", type: _LuOptionOutletDirective, selector: "[luOptionOutlet]", inputs: ["luOptionOutlet", "luOptionOutletValue", "luOptionShowNull"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
@@ -503,7 +506,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
503
506
  provide: ALuSelectInputComponent,
504
507
  useExisting: forwardRef(() => LuMultiSelectInputComponent),
505
508
  },
506
- provideLuSelectOverlayContainer(),
507
509
  provideLuSelectLabelsAndIds(),
508
510
  LuMultiSelectPanelRefFactory,
509
511
  ], host: {