@lucca-front/ng 22.0.0-rc.4 → 22.0.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/README.md +1 -1
- package/fesm2022/lucca-front-ng-a11y.mjs +10 -10
- package/fesm2022/lucca-front-ng-a11y.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-activity-feed.mjs +14 -14
- package/fesm2022/lucca-front-ng-activity-feed.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-api.mjs +40 -40
- package/fesm2022/lucca-front-ng-app-layout.mjs +7 -6
- package/fesm2022/lucca-front-ng-app-layout.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-approbation-inbox.mjs +517 -0
- package/fesm2022/lucca-front-ng-approbation-inbox.mjs.map +1 -0
- package/fesm2022/lucca-front-ng-box.mjs +12 -12
- package/fesm2022/lucca-front-ng-box.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-breadcrumbs.mjs +9 -9
- package/fesm2022/lucca-front-ng-breadcrumbs.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-bubble-icon.mjs +4 -4
- package/fesm2022/lucca-front-ng-bubble-icon.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-bubble-illustration.mjs +7 -6
- package/fesm2022/lucca-front-ng-bubble-illustration.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-callout.mjs +38 -38
- package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-chip.mjs +10 -10
- package/fesm2022/lucca-front-ng-chip.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-clear.mjs +7 -7
- package/fesm2022/lucca-front-ng-clear.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-code.mjs +6 -5
- package/fesm2022/lucca-front-ng-code.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-color.mjs +7 -6
- package/fesm2022/lucca-front-ng-color.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-comment.mjs +18 -17
- package/fesm2022/lucca-front-ng-comment.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-container.mjs +8 -7
- package/fesm2022/lucca-front-ng-container.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-api.mjs +17 -40
- package/fesm2022/lucca-front-ng-core-select-api.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-department.mjs +18 -20
- package/fesm2022/lucca-front-ng-core-select-department.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-establishment.mjs +28 -16
- package/fesm2022/lucca-front-ng-core-select-establishment.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs +19 -9
- package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-legal-units.mjs +34 -21
- package/fesm2022/lucca-front-ng-core-select-legal-units.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs +16 -6
- package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-user.mjs +41 -36
- package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select.mjs +252 -114
- package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core.mjs +113 -38
- package/fesm2022/lucca-front-ng-core.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-data-table.mjs +50 -50
- package/fesm2022/lucca-front-ng-data-table.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-date.mjs +42 -43
- package/fesm2022/lucca-front-ng-date.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-date2.mjs +50 -48
- package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-department.mjs +28 -27
- package/fesm2022/lucca-front-ng-department.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-dialog.mjs +85 -59
- package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-divider.mjs +9 -9
- package/fesm2022/lucca-front-ng-divider.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-dropdown.mjs +46 -46
- package/fesm2022/lucca-front-ng-dropdown.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-empty-state.mjs +56 -31
- package/fesm2022/lucca-front-ng-empty-state.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-error-page.mjs +4 -4
- package/fesm2022/lucca-front-ng-error-page.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-establishment.mjs +38 -37
- package/fesm2022/lucca-front-ng-establishment.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-fancy-box.mjs +4 -4
- package/fesm2022/lucca-front-ng-fancy-box.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-file-upload.mjs +86 -48
- package/fesm2022/lucca-front-ng-file-upload.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-filter-pills.mjs +150 -27
- package/fesm2022/lucca-front-ng-filter-pills.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-footer.mjs +10 -9
- package/fesm2022/lucca-front-ng-footer.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-field.mjs +35 -36
- package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-header.mjs +5 -5
- package/fesm2022/lucca-front-ng-form-header.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-label.mjs +19 -52
- package/fesm2022/lucca-front-ng-form-label.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form.mjs +9 -8
- package/fesm2022/lucca-front-ng-form.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-formly.mjs +64 -64
- package/fesm2022/lucca-front-ng-formly.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs +8 -8
- package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-html.mjs +3 -3
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs +6 -6
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs +3 -3
- package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +68 -55
- package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms.mjs +127 -113
- package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-gauge.mjs +11 -11
- package/fesm2022/lucca-front-ng-gauge.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-grid.mjs +18 -17
- package/fesm2022/lucca-front-ng-grid.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-highlight-data.mjs +11 -18
- package/fesm2022/lucca-front-ng-highlight-data.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-highlight-section.mjs +85 -0
- package/fesm2022/lucca-front-ng-highlight-section.mjs.map +1 -0
- package/fesm2022/lucca-front-ng-highlight-text.mjs +3 -3
- package/fesm2022/lucca-front-ng-horizontal-navigation.mjs +17 -17
- package/fesm2022/lucca-front-ng-horizontal-navigation.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-impersonation.mjs +7 -7
- package/fesm2022/lucca-front-ng-impersonation.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-index-table.mjs +50 -50
- package/fesm2022/lucca-front-ng-index-table.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-inline-message.mjs +6 -6
- package/fesm2022/lucca-front-ng-inline-message.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-input.mjs +22 -22
- package/fesm2022/lucca-front-ng-input.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-link.mjs +24 -16
- package/fesm2022/lucca-front-ng-link.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-listbox.mjs +67 -33
- package/fesm2022/lucca-front-ng-listbox.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-listing.mjs +17 -16
- package/fesm2022/lucca-front-ng-listing.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-loading.mjs +8 -8
- package/fesm2022/lucca-front-ng-loading.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-main-layout.mjs +131 -15
- package/fesm2022/lucca-front-ng-main-layout.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-mobile-push.mjs +3 -3
- package/fesm2022/lucca-front-ng-mobile-push.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-modal.mjs +27 -27
- package/fesm2022/lucca-front-ng-modal.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-multi-select.mjs +216 -135
- package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-new-badge.mjs +3 -3
- package/fesm2022/lucca-front-ng-number-format.mjs +6 -6
- package/fesm2022/lucca-front-ng-number.mjs +7 -7
- package/fesm2022/lucca-front-ng-numeric-badge.mjs +1 -84
- package/fesm2022/lucca-front-ng-numeric-badge.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-option.mjs +145 -139
- package/fesm2022/lucca-front-ng-option.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-page-header.mjs +8 -8
- package/fesm2022/lucca-front-ng-page-header.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-pagination.mjs +13 -16
- package/fesm2022/lucca-front-ng-pagination.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-plg-push.mjs +6 -6
- package/fesm2022/lucca-front-ng-plg-push.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-popover.mjs +17 -17
- package/fesm2022/lucca-front-ng-popover2.mjs +15 -16
- package/fesm2022/lucca-front-ng-popover2.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-popup.mjs +10 -10
- package/fesm2022/lucca-front-ng-progress-bar.mjs +8 -7
- package/fesm2022/lucca-front-ng-progress-bar.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-progress-stepper.mjs +9 -9
- package/fesm2022/lucca-front-ng-progress-stepper.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-read-more.mjs +17 -12
- package/fesm2022/lucca-front-ng-read-more.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-resource-card.mjs +21 -20
- package/fesm2022/lucca-front-ng-resource-card.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-safe-content.mjs +10 -10
- package/fesm2022/lucca-front-ng-scroll-box.mjs +6 -5
- package/fesm2022/lucca-front-ng-scroll-box.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-scroll.mjs +9 -9
- package/fesm2022/lucca-front-ng-scroll.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs +12 -12
- package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-segmented-control.mjs +17 -14
- package/fesm2022/lucca-front-ng-segmented-control.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-select.mjs +22 -22
- package/fesm2022/lucca-front-ng-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-sidepanel.mjs +7 -7
- package/fesm2022/lucca-front-ng-simple-select.mjs +53 -39
- package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-skeleton.mjs +1 -237
- package/fesm2022/lucca-front-ng-skeleton.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs +11 -11
- package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-software-icon.mjs +8 -7
- package/fesm2022/lucca-front-ng-software-icon.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-sortable-list.mjs +13 -13
- package/fesm2022/lucca-front-ng-sortable-list.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-status-badge.mjs +6 -6
- package/fesm2022/lucca-front-ng-status-badge.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-table-of-content.mjs +6 -6
- package/fesm2022/lucca-front-ng-tag.mjs +1 -72
- package/fesm2022/lucca-front-ng-tag.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-text-flow.mjs +4 -4
- package/fesm2022/lucca-front-ng-text-flow.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-time.mjs +46 -47
- package/fesm2022/lucca-front-ng-time.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-title.mjs +24 -14
- package/fesm2022/lucca-front-ng-title.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-toast.mjs +13 -14
- package/fesm2022/lucca-front-ng-toast.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-tooltip.mjs +1 -556
- package/fesm2022/lucca-front-ng-tooltip.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-tree-select.mjs +58 -42
- package/fesm2022/lucca-front-ng-tree-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-user-popover.mjs +22 -19
- package/fesm2022/lucca-front-ng-user-popover.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-user.mjs +75 -73
- package/fesm2022/lucca-front-ng-user.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-vertical-navigation.mjs +21 -22
- package/fesm2022/lucca-front-ng-vertical-navigation.mjs.map +1 -1
- package/package.json +12 -4
- package/schematics/action-icon/migration.spec.js +2 -2
- package/schematics/alignment-utilities/migration.spec.js +2 -2
- package/schematics/cdn-urls/migration.spec.js +2 -2
- package/schematics/class-prefix/migration.spec.js +2 -2
- package/schematics/color-text/migration.spec.js +2 -2
- package/schematics/component-path/migration.spec.js +2 -2
- package/schematics/deprecated-resolver/migration.spec.js +1 -1
- package/schematics/empty-state-title/migration.spec.js +1 -1
- package/schematics/lib/migration-test.js +6 -1
- package/schematics/lu-button/migration.spec.js +1 -1
- package/schematics/lu-container/migration.spec.js +1 -1
- package/schematics/lu-grid/migration.js +24 -16
- package/schematics/lu-grid/migration.spec.js +1 -1
- package/schematics/lu-icon/migration.spec.js +1 -1
- package/schematics/lu-loading/migration.spec.js +1 -1
- package/schematics/lu-select/migration.spec.js +1 -1
- package/schematics/lu-text-input/migration.spec.js +1 -1
- package/schematics/new-icons/migration.spec.js +2 -2
- package/schematics/palettes/index.js +28 -8
- package/schematics/palettes/migration.spec.js +2 -2
- package/schematics/tokens-radius/migration.spec.js +2 -2
- package/schematics/tokens-spacing/migration.spec.js +2 -2
- package/schematics/tokens-typo/migration.spec.js +2 -2
- package/src/_components.scss +1 -0
- package/src/components/_listbox.scss +8 -0
- package/src/components/_picker.scss +0 -34
- package/src/components/_popover.scss +1 -1
- package/src/components/_popup.scss +6 -6
- package/src/components/_sidepanel.scss +1 -1
- package/src/definitions/option/_option-item.scss +1 -8
- package/title/README.md +22 -7
- package/types/lucca-front-ng-app-layout.d.ts +1 -1
- package/types/lucca-front-ng-approbation-inbox.d.ts +142 -0
- package/types/lucca-front-ng-box.d.ts +4 -4
- package/types/lucca-front-ng-breadcrumbs.d.ts +1 -1
- package/types/lucca-front-ng-bubble-icon.d.ts +1 -1
- package/types/lucca-front-ng-bubble-illustration.d.ts +1 -1
- package/types/lucca-front-ng-callout.d.ts +9 -9
- package/types/lucca-front-ng-chip.d.ts +3 -3
- package/types/lucca-front-ng-clear.d.ts +2 -2
- package/types/lucca-front-ng-code.d.ts +1 -1
- package/types/lucca-front-ng-color.d.ts +1 -1
- package/types/lucca-front-ng-comment.d.ts +6 -5
- package/types/lucca-front-ng-container.d.ts +2 -2
- package/types/lucca-front-ng-core-select-api.d.ts +10 -4
- package/types/lucca-front-ng-core-select-department.d.ts +2 -2
- package/types/lucca-front-ng-core-select-establishment.d.ts +3 -1
- package/types/lucca-front-ng-core-select-job-qualification.d.ts +2 -0
- package/types/lucca-front-ng-core-select-legal-units.d.ts +3 -1
- package/types/lucca-front-ng-core-select-occupation-category.d.ts +2 -0
- package/types/lucca-front-ng-core-select-user.d.ts +4 -3
- package/types/lucca-front-ng-core-select.d.ts +82 -16
- package/types/lucca-front-ng-core.d.ts +77 -3
- package/types/lucca-front-ng-data-table.d.ts +14 -14
- package/types/lucca-front-ng-date.d.ts +1 -1
- package/types/lucca-front-ng-date2.d.ts +19 -19
- package/types/lucca-front-ng-department.d.ts +2 -2
- package/types/lucca-front-ng-dialog.d.ts +7 -6
- package/types/lucca-front-ng-divider.d.ts +3 -3
- package/types/lucca-front-ng-dropdown.d.ts +2 -2
- package/types/lucca-front-ng-empty-state.d.ts +15 -6
- package/types/lucca-front-ng-establishment.d.ts +2 -2
- package/types/lucca-front-ng-file-upload.d.ts +22 -11
- package/types/lucca-front-ng-filter-pills.d.ts +43 -3
- package/types/lucca-front-ng-footer.d.ts +4 -4
- package/types/lucca-front-ng-form-field.d.ts +10 -10
- package/types/lucca-front-ng-form-header.d.ts +1 -1
- package/types/lucca-front-ng-form-label.d.ts +5 -9
- package/types/lucca-front-ng-form.d.ts +2 -2
- package/types/lucca-front-ng-forms-phone-number-input.d.ts +5 -5
- package/types/lucca-front-ng-forms-rich-text-input.d.ts +9 -5
- package/types/lucca-front-ng-forms.d.ts +50 -37
- package/types/lucca-front-ng-gauge.d.ts +6 -6
- package/types/lucca-front-ng-grid.d.ts +8 -8
- package/types/lucca-front-ng-highlight-data.d.ts +3 -5
- package/types/lucca-front-ng-highlight-section.d.ts +44 -0
- package/types/lucca-front-ng-horizontal-navigation.d.ts +4 -4
- package/types/lucca-front-ng-impersonation.d.ts +1 -1
- package/types/lucca-front-ng-index-table.d.ts +12 -12
- package/types/lucca-front-ng-inline-message.d.ts +1 -1
- package/types/lucca-front-ng-link.d.ts +4 -4
- package/types/lucca-front-ng-listbox.d.ts +33 -13
- package/types/lucca-front-ng-listing.d.ts +9 -9
- package/types/lucca-front-ng-loading.d.ts +3 -3
- package/types/lucca-front-ng-main-layout.d.ts +40 -9
- package/types/lucca-front-ng-modal.d.ts +1 -1
- package/types/lucca-front-ng-multi-select.d.ts +33 -7
- package/types/lucca-front-ng-numeric-badge.d.ts +1 -46
- package/types/lucca-front-ng-option.d.ts +2 -0
- package/types/lucca-front-ng-page-header.d.ts +2 -2
- package/types/lucca-front-ng-pagination.d.ts +5 -5
- package/types/lucca-front-ng-plg-push.d.ts +1 -1
- package/types/lucca-front-ng-popover2.d.ts +14 -14
- package/types/lucca-front-ng-progress-bar.d.ts +2 -2
- package/types/lucca-front-ng-progress-stepper.d.ts +1 -1
- package/types/lucca-front-ng-read-more.d.ts +9 -4
- package/types/lucca-front-ng-resource-card.d.ts +6 -6
- package/types/lucca-front-ng-scroll-box.d.ts +1 -1
- package/types/lucca-front-ng-scroll.d.ts +1 -1
- package/types/lucca-front-ng-segmented-control-tabs.d.ts +2 -2
- package/types/lucca-front-ng-segmented-control.d.ts +5 -3
- package/types/lucca-front-ng-select.d.ts +2 -1
- package/types/lucca-front-ng-simple-select.d.ts +6 -5
- package/types/lucca-front-ng-skeleton.d.ts +1 -158
- package/types/lucca-front-ng-software-icon-wrapper.d.ts +3 -3
- package/types/lucca-front-ng-software-icon.d.ts +2 -2
- package/types/lucca-front-ng-sortable-list.d.ts +5 -5
- package/types/lucca-front-ng-status-badge.d.ts +1 -1
- package/types/lucca-front-ng-tag.d.ts +1 -53
- package/types/lucca-front-ng-time.d.ts +17 -17
- package/types/lucca-front-ng-title.d.ts +4 -4
- package/types/lucca-front-ng-toast.d.ts +1 -1
- package/types/lucca-front-ng-tooltip.d.ts +1 -80
- package/types/lucca-front-ng-tree-select.d.ts +3 -4
- package/types/lucca-front-ng-user.d.ts +8 -6
- package/types/lucca-front-ng-vertical-navigation.d.ts +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucca-front-ng-multi-select.mjs","sources":["../../../packages/ng/multi-select/translations.ts","../../../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-group-context.pipe.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/translations.ts","../../../packages/ng/multi-select/displayer/default-displayer.translate.ts","../../../packages/ng/multi-select/input/select-all/select-all.models.ts","../../../packages/ng/multi-select/displayer/displayer-input.directive.ts","../../../packages/ng/multi-select/input/select-all/multi-select-all-displayer.component.ts","../../../packages/ng/multi-select/input/select-all/multi-select-all-header.component.ts","../../../packages/ng/multi-select/input/select-all/with-select-all.directive.ts","../../../packages/ng/multi-select/displayer/content-displayer/content-displayer.component.ts","../../../packages/ng/multi-select/displayer/counter-displayer/counter-displayer.component.ts","../../../packages/ng/multi-select/displayer/default-displayer.component.ts","../../../packages/ng/multi-select/displayer/displayer.directive.ts","../../../packages/ng/multi-select/select.utils.ts","../../../packages/ng/multi-select/select.validators.ts","../../../packages/ng/multi-select/lucca-front-ng-multi-select.ts"],"sourcesContent":["export const Translations = {\n\t'nl-BE': {\n\t\tplaceholder: 'Selecteren ...',\n\t\tsearch: 'Zoeken',\n\t\tclear: 'Selectie leegmaken',\n\t\tclearSearch: 'Zoekopdracht leegmaken',\n\t\temptyResults: 'Uw zoekopdracht heeft geen resultaat opgeleverd.',\n\t\temptySelection: 'Selecteer elementen uit de lijst aan de linkerkant om te beginnen',\n\t\texpand: 'Vergroten',\n\t\treduce: 'Verkleinen',\n\t\tselectAll: 'Alles selecteren',\n\t\tunselectAll: 'Alles deselecteren',\n\t\tloading: 'Bezig met laden...',\n\t\temptyOptions: 'Er zijn geen waarden beschikbaar. Neem contact op met uw beheerder voor meer informatie.',\n\t\tselectCountOptions: 'Selecteer alle resultaten ({{optionsCount}})',\n\t},\n\tnl: {\n\t\tplaceholder: 'Selecteren ...',\n\t\tsearch: 'Zoeken',\n\t\tclear: 'Selectie leegmaken',\n\t\tclearSearch: 'Zoekopdracht leegmaken',\n\t\temptyResults: 'Uw zoekopdracht heeft geen resultaat opgeleverd.',\n\t\temptySelection: 'Selecteer elementen uit de lijst aan de linkerkant om te beginnen',\n\t\texpand: 'Vergroten',\n\t\treduce: 'Verkleinen',\n\t\tselectAll: 'Alles selecteren',\n\t\tunselectAll: 'Alles deselecteren',\n\t\tloading: 'Bezig met laden...',\n\t\temptyOptions: 'Er zijn geen waarden beschikbaar. Neem contact op met uw beheerder voor meer informatie.',\n\t\tselectCountOptions: 'Selecteer alle resultaten ({{optionsCount}})',\n\t},\n\tit: {\n\t\tplaceholder: 'Selezionare…',\n\t\tsearch: 'Cercare',\n\t\tclear: 'Cancellare la selezione',\n\t\tclearSearch: 'Cancellare la ricerca',\n\t\temptyResults: 'La ricerca non ha prodotto risultati.',\n\t\temptySelection: 'Per iniziare, seleziona gli elementi dall’elenco a sinistra',\n\t\texpand: 'Estendere',\n\t\treduce: 'Ridurre',\n\t\tselectAll: 'Selezionare tutto',\n\t\tunselectAll: 'Deselezionare tutto',\n\t\tloading: 'Caricamento in corso...',\n\t\temptyOptions: 'Nessun valore è disponibile. Contatta l’amministratore per maggiori informazioni.',\n\t\tselectCountOptions: 'Selezionare tutti i risultati ({{optionsCount}})',\n\t},\n\tfr: {\n\t\tplaceholder: 'Sélectionner…',\n\t\tsearch: 'Rechercher',\n\t\tclear: 'Vider la sélection',\n\t\tclearSearch: 'Vider la recherche',\n\t\temptyResults: \"Votre recherche n'a donné aucun résultat.\",\n\t\temptySelection: 'Sélectionnez les éléments dans la liste de gauche pour commencer',\n\t\texpand: 'Étendre',\n\t\treduce: 'Réduire',\n\t\tselectAll: 'Tout sélectionner',\n\t\tunselectAll: 'Tout désélectionner',\n\t\tloading: 'Chargement en cours...',\n\t\temptyOptions: \"Aucune valeur n'est disponible. Contactez votre administrateur pour plus d'informations.\",\n\t\tselectCountOptions: 'Sélectionner tous les résultats ({{optionsCount}})',\n\t},\n\tpt: {\n\t\tplaceholder: 'Selecionar..',\n\t\tsearch: 'Pesquisar',\n\t\tclear: 'Limpar seleção',\n\t\tclearSearch: 'Limpar pesquisa',\n\t\temptyResults: 'A sua pesquisa não produziu resultados.',\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\tunselectAll: 'Desmarcar tudo',\n\t\tloading: 'Carregando...',\n\t\temptyOptions: 'Não existe nenhum valor disponível. Contacte o seu administrador para obter mais informações.',\n\t\tselectCountOptions: 'Selecionar todos os resultados ({{optionsCount}})',\n\t},\n\tes: {\n\t\tplaceholder: 'Seleccionar...',\n\t\tsearch: 'Buscar',\n\t\tclear: 'Vaciar la selección',\n\t\tclearSearch: 'Vaciar la búsqueda',\n\t\temptyResults: 'La búsqueda no ha dado ningún resultado.',\n\t\temptySelection: 'Seleccione los elementos de la lista de la izquierda para empezar',\n\t\texpand: 'Expandir',\n\t\treduce: 'Reducir',\n\t\tselectAll: 'Seleccionar todo',\n\t\tunselectAll: 'Desmarcar todo',\n\t\tloading: 'Cargando...',\n\t\temptyOptions: 'No hay ningún valor disponible. Ponte en contacto con tu administrador para obtener más información.',\n\t\tselectCountOptions: 'Seleccionar todos los resultados ({{optionsCount}})',\n\t},\n\tde: {\n\t\tplaceholder: 'Auswählen ...',\n\t\tsearch: 'Suchen',\n\t\tclear: 'Auswahl leeren',\n\t\tclearSearch: 'Suche leeren',\n\t\temptyResults: 'Ihre Suche hat keinen Treffer ergeben.',\n\t\temptySelection: 'Wählen Sie zuerst die Items in der Liste links aus.',\n\t\texpand: 'Erweitern',\n\t\treduce: 'Reduzieren',\n\t\tselectAll: 'Alles auswählen',\n\t\tunselectAll: 'Alles abwählen',\n\t\tloading: 'Lädt...',\n\t\temptyOptions: 'Es ist kein Wert verfügbar. Wenden Sie sich für weitere Informationen an Ihre:n Administrator:in.',\n\t\tselectCountOptions: 'Alle Ergebnisse auswählen ({{optionsCount}})',\n\t},\n\ten: {\n\t\tplaceholder: 'Select…',\n\t\tsearch: 'Search',\n\t\tclear: 'Clear selection',\n\t\tclearSearch: 'Clear search',\n\t\temptyResults: 'We couldn’t find any results that match your search.',\n\t\temptySelection: 'Select items from the list on the left to start',\n\t\texpand: 'Expand',\n\t\treduce: 'Collapse',\n\t\tselectAll: 'Select all',\n\t\tunselectAll: 'Deselect all',\n\t\tloading: 'Loading...',\n\t\temptyOptions: 'There are no values available. Contact your administrator for more information.',\n\t\tselectCountOptions: 'Select all results ({{optionsCount}})',\n\t},\n\tpl: {\n\t\tplaceholder: 'Wybierz..',\n\t\tsearch: 'Wyszukaj',\n\t\tclear: 'Wyczyść zaznaczenie',\n\t\tclearSearch: 'Puste wyszukiwanie',\n\t\temptyResults: 'Wyszukiwanie nie przyniosło żadnych rezultatów.',\n\t\temptySelection: 'Wybierz elementy z listy po lewej stronie, aby rozpocząć',\n\t\texpand: 'Rozwiń',\n\t\treduce: 'Zmniejsz',\n\t\tselectAll: 'Zaznacz wszystko',\n\t\tunselectAll: 'Odznacz wszystko',\n\t\tloading: 'Trwa ładowanie...',\n\t\temptyOptions: 'Brak dostępnych wartości. Aby uzyskać więcej informacji, skontaktuj się z administratorem.',\n\t\tselectCountOptions: 'Zaznacz wszystkie wyniki ({{optionsCount}})',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\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\temptyOptions: string;\n\temptySelection: string;\n\texpand: string;\n\treduce: string;\n\tselectAll: string;\n\tunselectAll: string;\n\tloading: string;\n}\n\nexport const luMultiSelectTranslations: LuTranslation<ILuMultiSelectLabel> = Translations;\n","import { ChangeDetectorRef } from '@angular/core';\nimport { LuSelectPanelRef } from '@lucca-front/ng/core-select';\n\nexport abstract class LuMultiSelectPanelRef<T> extends LuSelectPanelRef<T, T[]> {\n\tabstract changeDetectorRef?: ChangeDetectorRef;\n\n\tabstract updateSelectedOptions(selectedOptions: T[]): void;\n\n\tabstract useDefaultPosition(): void;\n}\n","import { InjectionToken } from '@angular/core';\nimport type { LuMultiSelectInputComponent } from './input';\n\nexport const MULTI_SELECT_INPUT = new InjectionToken<LuMultiSelectInputComponent<unknown>>('MultiSelectInput');\n\nexport type LuMultiSelection<T> = { mode: 'include'; values: T[] } | { mode: 'exclude'; values: T[] } | { mode: 'none' } | { mode: 'all' };\n\nexport type LuMultiSelectionMode = LuMultiSelection<unknown>['mode'];\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { ɵIsSelectedStrategy } from '@lucca-front/ng/core-select';\n\n@Pipe({\n\tname: 'luOptionsGroupContext',\n\tpure: true,\n})\nexport class LuOptionsGroupContextPipe<T> implements PipeTransform {\n\t#selectionStrategy = inject<ɵIsSelectedStrategy<T>>(ɵIsSelectedStrategy);\n\n\ttransform(groupOptions: T[], selectedOptions: T[], optionComparer: (option1: T, option2: T) => boolean): { notSelectedOptions: T[]; isGroupSelected: boolean } {\n\t\tconst notSelectedOptions = groupOptions.filter((o) => !selectedOptions.some((so) => optionComparer(so, o)));\n\n\t\treturn {\n\t\t\tnotSelectedOptions,\n\t\t\tisGroupSelected: this.#selectionStrategy.isGroupSelected(groupOptions, notSelectedOptions),\n\t\t};\n\t}\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { afterNextRender, AfterViewInit, ChangeDetectionStrategy, Component, computed, forwardRef, inject, Injector, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { isNotNil, PortalDirective } from '@lucca-front/ng/core';\nimport {\n\tCoreSelectKeyManager,\n\tCoreSelectPanelInstance,\n\tLuIsOptionSelectedPipe,\n\tSELECT_ID,\n\tSELECT_PANEL_INSTANCE,\n\tTreeDisplayPipe,\n\tɵCoreSelectPanelElement,\n\tɵgetGroupTemplateLocation,\n\tɵLuOptionComponent,\n\tɵLuOptionGroupPipe,\n} from '@lucca-front/ng/core-select';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { TreeBranchComponent } from '@lucca-front/ng/tree-select';\nimport { EMPTY, firstValueFrom } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { LuMultiSelectInputComponent } from '../input';\nimport { LuMultiSelectPanelRef } from '../input/panel.model';\nimport { MULTI_SELECT_INPUT } from '../select.model';\nimport { LuOptionsGroupContextPipe } from './option-group-context.pipe';\n\n@Component({\n\tselector: 'lu-select-panel',\n\ttemplateUrl: './panel.component.html',\n\tstyleUrl: './panel.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\t'(document:keydown)': 'onKeydown()',\n\t\t'(document:mousemove)': 'onMousemove()',\n\t},\n\timports: [\n\t\tA11yModule,\n\t\tFormsModule,\n\t\tLuIsOptionSelectedPipe,\n\t\tɵLuOptionComponent,\n\t\tɵLuOptionGroupPipe,\n\t\tNgTemplateOutlet,\n\t\tPortalDirective,\n\t\tLuOptionsGroupContextPipe,\n\t\tɵCoreSelectPanelElement,\n\t\tIconComponent,\n\t\tTreeDisplayPipe,\n\t\tTreeBranchComponent,\n\t],\n\tproviders: [\n\t\tCoreSelectKeyManager,\n\t\t{\n\t\t\tprovide: SELECT_PANEL_INSTANCE,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectPanelComponent),\n\t\t},\n\t],\n})\nexport class LuMultiSelectPanelComponent<T> implements AfterViewInit, CoreSelectPanelInstance {\n\tprotected readonly selectInput = inject<LuMultiSelectInputComponent<T>>(MULTI_SELECT_INPUT);\n\treadonly panelRef = inject<LuMultiSelectPanelRef<T>>(LuMultiSelectPanelRef);\n\treadonly selectId = inject(SELECT_ID);\n\n\treadonly dataSourceOptions = this.selectInput.dataSourceOptions;\n\treadonly grouping = this.selectInput.groupingSignal;\n\ttreeGenerator = this.selectInput.treeGenerator;\n\treadonly loading = this.selectInput.loading;\n\tsearchable = this.selectInput.searchable;\n\treadonly optionComparer = this.selectInput.optionComparer;\n\treadonly optionKey = this.selectInput.optionKey;\n\tintl = this.selectInput.intl;\n\n\tselectedOptions: T[] = this.selectInput.value || [];\n\treadonly optionTpl = this.selectInput.optionTpl;\n\n\treadonly options = signal<ɵCoreSelectPanelElement<T>[]>([]);\n\treadonly pointerNavigation = signal(false);\n\n\treadonly keyManager = inject<CoreSelectKeyManager<T>>(CoreSelectKeyManager);\n\treadonly #injector = inject(Injector);\n\n\tonKeydown(): void {\n\t\tthis.pointerNavigation.set(false);\n\t}\n\n\tonMousemove(): void {\n\t\tthis.pointerNavigation.set(true);\n\t}\n\n\treadonly someGroupOptionEnabled = computed(() => {\n\t\treturn (groupOptions: T[]) => {\n\t\t\tconst disabledOptionIds = this.options()\n\t\t\t\t.filter((o) => o.disabled)\n\t\t\t\t.map((o) => o.option())\n\t\t\t\t.filter(isNotNil)\n\t\t\t\t.map((option) => this.optionKey()(option));\n\t\t\treturn groupOptions.some((option) => !disabledOptionIds.includes(this.optionKey()(option)));\n\t\t};\n\t});\n\n\treadonly groupLoadingKeys = signal<Set<unknown>>(new Set());\n\n\treadonly hasGrouping = computed(() => !!this.grouping());\n\tpublic readonly clue = toSignal(this.selectInput.clue$.pipe(map((clue) => clue ?? '')), { initialValue: '' });\n\tpublic readonly shouldDisplayAddOption = this.selectInput.shouldDisplayAddOption;\n\n\treadonly groupTemplateLocation = ɵgetGroupTemplateLocation(this.hasGrouping, this.clue, this.searchable);\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.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.options()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.initKeyManager();\n\t\tthis.panelRef.useDefaultPosition();\n\t}\n\n\ttoggleOption(option: T): void {\n\t\tconst matchingOption = this.selectedOptions.find((o) => this.optionComparer()(o, option));\n\t\tthis.selectedOptions = matchingOption && option ? this.selectedOptions.filter((o) => o !== matchingOption) : [...this.selectedOptions, option];\n\t\tthis.panelRef.emitValue(this.selectedOptions);\n\t\tafterNextRender(() => this.panelRef.updatePosition(), { injector: this.#injector });\n\t}\n\n\ttoggleOptions(notSelectedOptions: T[], groupOptions: T[], groupKey?: unknown): void {\n\t\tconst dataSource = this.selectInput.dataSource();\n\t\tif (groupKey !== undefined && dataSource.getGroupOptions) {\n\t\t\tthis.groupLoadingKeys.update((keys) => new Set(keys).add(groupKey));\n\t\t\tvoid firstValueFrom(dataSource.getGroupOptions(groupKey))\n\t\t\t\t.then((allGroupOptions) => {\n\t\t\t\t\tthis.groupLoadingKeys.update((keys) => {\n\t\t\t\t\t\tconst s = new Set(keys);\n\t\t\t\t\t\ts.delete(groupKey);\n\t\t\t\t\t\treturn s;\n\t\t\t\t\t});\n\t\t\t\t\tthis.#applyGroupToggle(allGroupOptions, allGroupOptions);\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.groupLoadingKeys.update((keys) => {\n\t\t\t\t\t\tconst s = new Set(keys);\n\t\t\t\t\t\ts.delete(groupKey);\n\t\t\t\t\t\treturn s;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tthis.#applyGroupToggle(notSelectedOptions, groupOptions);\n\t}\n\n\t#applyGroupToggle(notSelectedOptions: T[], groupOptions: T[]): void {\n\t\t// Filter out disabled options\n\t\tconst disabledOptionIds = this.options()\n\t\t\t.filter((o) => o.disabled)\n\t\t\t.map((o) => o.option())\n\t\t\t.filter(isNotNil)\n\t\t\t.map((option) => this.optionKey()(option));\n\t\tconst enabledNotSelectedOptions = notSelectedOptions.filter((o) => !disabledOptionIds.includes(this.optionKey()(o)));\n\t\tconst enabledGroupOptions = groupOptions.filter((o) => !disabledOptionIds.includes(this.optionKey()(o)));\n\n\t\tif (enabledNotSelectedOptions.length) {\n\t\t\t// If some options are not selected, select them all\n\t\t\tthis.selectedOptions = [...this.selectedOptions, ...enabledNotSelectedOptions];\n\t\t} else {\n\t\t\t// If all options are already selected, unselect them all\n\t\t\tthis.selectedOptions = this.selectedOptions.filter((o) => !enabledGroupOptions.some((so) => this.optionComparer()(so, o)));\n\t\t}\n\n\t\tthis.panelRef.emitValue(this.selectedOptions);\n\t\tafterNextRender(() => this.panelRef.updatePosition(), { injector: this.#injector });\n\t}\n\n\tprotected initKeyManager(): void {\n\t\tthis.keyManager.init({\n\t\t\tqueryList: this.options,\n\t\t\toptions: this.dataSourceOptions,\n\t\t\toptionComparer: this.optionComparer(),\n\t\t\tactiveOptionIdChanged$: this.panelRef.activeOptionIdChanged,\n\t\t\tclueChange$: this.selectInput.searchable ? this.selectInput.clueChange$ : EMPTY,\n\t\t});\n\n\t\tif (this.selectedOptions?.length) {\n\t\t\tconst firstSelectedOption = this.selectedOptions[0];\n\t\t\tif (firstSelectedOption !== undefined) {\n\t\t\t\tthis.keyManager.highlightOption(firstSelectedOption);\n\t\t\t}\n\t\t}\n\t}\n}\n","<div class=\"lu-picker-panel lu-option-picker-panel mod-multiple\" data-testid=\"dialog-panel\">\n\t<div\n\t\tclass=\"lu-picker-content\"\n\t\t[class.is-loading]=\"loading()\"\n\t\t[class.is-filled]=\"options().length > 0\"\n\t\ttabindex=\"0\"\n\t\trole=\"listbox\"\n\t\taria-multiselectable=\"true\"\n\t\t(scroll)=\"onScroll($event)\"\n\t>\n\t\t@if (selectInput.panelHeaderTpl(); as tpl) {\n\t\t\t<div>\n\t\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t\t</div>\n\t\t}\n\t\t<div class=\"lu-picker-content-option\">\n\t\t\t@if (grouping() && groupTemplateLocation() === \"group-header\") {\n\t\t\t\t@for (group of dataSourceOptions() | luOptionGroup: grouping().selector; track group.key; let groupIndex = $index) {\n\t\t\t\t\t<div class=\"lu-picker-content-group\" role=\"group\" attr.aria-labelledby=\"lu-select-{{ selectId }}-group-{{ groupIndex }}\">\n\t\t\t\t\t\t@let groupCtx = group.options | luOptionsGroupContext: selectedOptions : optionComparer();\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t\t\t\telementId=\"lu-select-{{ selectId }}-group-{{ groupIndex }}\"\n\t\t\t\t\t\t\tclass=\"lu-picker-content-option-group-title\"\n\t\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\t\t(selected)=\"toggleOptions(groupCtx.notSelectedOptions, group.options, group.key)\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span #groupingTitleRef>\n\t\t\t\t\t\t\t\t<ng-container *luPortal=\"grouping().content; context: { $implicit: group }\" />\n\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t@if (someGroupOptionEnabled()(group.options)) {\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclass=\"link\"\n\t\t\t\t\t\t\t\t\t[disabled]=\"groupLoadingKeys().has(group.key)\"\n\t\t\t\t\t\t\t\t\t(click)=\"toggleOptions(groupCtx.notSelectedOptions, group.options, group.key)\"\n\t\t\t\t\t\t\t\t\t[id]=\"selectId + '-group-' + group.key\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t@if (groupLoadingKeys().has(group.key)) {\n\t\t\t\t\t\t\t\t\t\t<span class=\"loading\"></span>\n\t\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t\t<span class=\"pr-u-mask\">{{ groupingTitleRef.innerText }} – </span\n\t\t\t\t\t\t\t\t\t\t>{{ groupCtx.isGroupSelected ? intl().unselectAll : intl().selectAll }}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"optionsList\"\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: group.options, groupIndex: groupIndex }\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t}\n\t\t\t@if (!grouping() || groupTemplateLocation() !== \"group-header\") {\n\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: dataSourceOptions() }\" />\n\t\t\t}\n\t\t\t<ng-template #optionsList let-options let-groupIndex=\"groupIndex\">\n\t\t\t\t@if (treeGenerator) {\n\t\t\t\t\t@for (branch of options | luTreeDisplay: treeGenerator; let index = $index; track optionKey()(branch.node)) {\n\t\t\t\t\t\t<lu-tree-branch\n\t\t\t\t\t\t\t[branch]=\"branch\"\n\t\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t\t[selectedOptions]=\"selectedOptions\"\n\t\t\t\t\t\t\t[optionComparer]=\"optionComparer()\"\n\t\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t\t(toggleOne)=\"toggleOption($event)\"\n\t\t\t\t\t\t\t(selectMany)=\"toggleOptions($event, [])\"\n\t\t\t\t\t\t\t(unselectMany)=\"toggleOptions([], $event)\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t} @else {\n\t\t\t\t\t@for (option of options; track optionKey()(option); let index = $index) {\n\t\t\t\t\t\t<lu-select-option\n\t\t\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t\t[grouping]=\"groupTemplateLocation() === 'option' ? grouping() : undefined\"\n\t\t\t\t\t\t\t[groupIndex]=\"groupIndex\"\n\t\t\t\t\t\t\t[groupTemplateLocation]=\"groupTemplateLocation()\"\n\t\t\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected: optionComparer() : selectedOptions\"\n\t\t\t\t\t\t\t(selected)=\"toggleOption(option)\"\n\t\t\t\t\t\t\t(click)=\"toggleOption(option)\"\n\t\t\t\t\t\t\t[class.withAddOption]=\"shouldDisplayAddOption()\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</ng-template>\n\t\t\t@if (options().length === 0 && !loading()) {\n\t\t\t\t<div class=\"lu-picker-content-option-emptyState\">\n\t\t\t\t\t{{ clue().length ? intl().emptyResults : intl().emptyOptions }}\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t\t@if (loading()) {\n\t\t\t<div class=\"lu-picker-content-loading\">\n\t\t\t\t<div class=\"loading\">{{ intl().loading }}</div>\n\t\t\t</div>\n\t\t}\n\t\t@if (shouldDisplayAddOption()) {\n\t\t\t<div\n\t\t\t\tclass=\"addOption palette-product\"\n\t\t\t\t[class.is-stuck]=\"true\"\n\t\t\t\t(click)=\"selectInput.emitAddOption()\"\n\t\t\t\t(selected)=\"selectInput.emitAddOption()\"\n\t\t\t\telementId=\"picker-content-add\"\n\t\t\t\tluCoreSelectPanelElement\n\t\t\t>\n\t\t\t\t<div class=\"addOption-content\">\n\t\t\t\t\t<lu-icon icon=\"mathsPlus\" />\n\t\t\t\t\t<ng-container *luPortal=\"selectInput.addOptionLabel\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t}\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, Type, ViewContainerRef } from '@angular/core';\nimport { getPushPanelViewportMargin } from '@lucca-front/ng/core';\nimport { addAttributesOnCdkContainer, SELECT_ID, SELECT_LABEL_ID } from '@lucca-front/ng/core-select';\nimport { takeUntil } from 'rxjs';\nimport { LuMultiSelectPanelComponent } from '../panel';\nimport { MULTI_SELECT_INPUT } from '../select.model';\nimport { LuMultiSelectPanelRef } from './panel.model';\nimport { LuMultiSelectInputComponent } from './select-input.component';\n\nabstract class BaseMultiSelectPanelRef<T> extends LuMultiSelectPanelRef<T> {\n\tprotected readonly portalRef: ComponentPortal<LuMultiSelectPanelComponent<T>>;\n\tinstance: LuMultiSelectPanelComponent<T>;\n\n\tprotected panelRef: ComponentRef<LuMultiSelectPanelComponent<T>>;\n\n\tprotected constructor(parentInjector: Injector, selectInput: LuMultiSelectInputComponent<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_INPUT, useValue: selectInput },\n\t\t\t],\n\t\t\tparent: parentInjector,\n\t\t});\n\t\tthis.portalRef = new ComponentPortal<LuMultiSelectPanelComponent<T>>(LuMultiSelectPanelComponent, undefined, injector);\n\t}\n\n\toverride handleKeyManagerEvent(event: KeyboardEvent) {\n\t\tthis.instance.keyManager.onKeydown(event);\n\t}\n\n\temitValue(value: T[]): void {\n\t\tthis.valueChanged.emit(value);\n\t}\n\n\tselectCurrentlyHighlightedValue(): void {\n\t\tthis.instance.keyManager.activeItem?.selected.emit();\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\nclass MultiSelectPanelRef<T> extends BaseMultiSelectPanelRef<T> {\n\tchangeDetectorRef: ChangeDetectorRef;\n\n\tconstructor(\n\t\tprivate overlayRef: OverlayRef,\n\t\tparentInjector: Injector,\n\t\tselectInput: LuMultiSelectInputComponent<T>,\n\t\tprotected defaultPositionStrategy: PositionStrategy,\n\t) {\n\t\tsuper(parentInjector, selectInput);\n\t\tthis.panelRef = overlayRef.attach(this.portalRef);\n\t\tthis.instance = this.panelRef.instance;\n\t\tthis.changeDetectorRef = this.panelRef.changeDetectorRef;\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\tuseDefaultPosition(): void {\n\t\tthis.overlayRef.updatePositionStrategy(this.defaultPositionStrategy);\n\t}\n\n\tupdatePosition(): void {\n\t\tthis.overlayRef.updatePosition();\n\t}\n\n\toverride close(): void {\n\t\tsuper.close();\n\t\tthis.panelRef.destroy();\n\t\tthis.overlayRef.detach();\n\t}\n}\n\nclass MultiSelectPanelDOMHostRef<T> extends BaseMultiSelectPanelRef<T> {\n\toverride changeDetectorRef?: ChangeDetectorRef;\n\n\tconstructor(host: ViewContainerRef, parentInjector: Injector, selectInput: LuMultiSelectInputComponent<T>) {\n\t\tsuper(parentInjector, selectInput);\n\t\tconst panelComponent = this.portalRef.component as Type<LuMultiSelectPanelComponent<T>>;\n\n\t\tthis.panelRef = host.createComponent(panelComponent, {\n\t\t\tinjector: this.portalRef.injector ?? undefined,\n\t\t});\n\t\tthis.instance = this.panelRef.instance;\n\t}\n\n\toverride updatePosition() {\n\t\t// do nothing, this is not a panel so repositioning is handled by the input.\n\t}\n\n\toverride close(): void {\n\t\tthis.closed.emit();\n\t}\n\n\tuseDefaultPosition(): void {\n\t\t// do nothing, this is not a panel so repositioning is handled by the input.\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\tprivate selectLabelId = inject(SELECT_LABEL_ID);\n\tprivate selectId = inject(SELECT_ID);\n\n\tbuildPanelRef<T>(selectInput: LuMultiSelectInputComponent<T>, defaultOverlayConfigOverride: OverlayConfig = {}): LuMultiSelectPanelRef<T> {\n\t\tconst defaultOverlayConfig = this.buildDefaultOverlayConfig(defaultOverlayConfigOverride);\n\n\t\tconst overlayRef = this.overlay.create(defaultOverlayConfig);\n\n\t\toverlayRef.hostElement.style.transitionProperty = 'height';\n\t\toverlayRef.hostElement.style.transitionDuration = 'var(--commons-animations-durations-standard)';\n\n\t\taddAttributesOnCdkContainer(overlayRef, this.selectLabelId, this.selectId);\n\n\t\treturn new MultiSelectPanelRef(overlayRef, this.parentInjector, selectInput, defaultOverlayConfig.positionStrategy!);\n\t}\n\n\tbuildAndAttachPanelRef<T>(selectInput: LuMultiSelectInputComponent<T>, host: ViewContainerRef): LuMultiSelectPanelRef<T> {\n\t\treturn new MultiSelectPanelDOMHostRef(host, this.parentInjector, selectInput);\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.withGrowAfterOpen(true)\n\t\t\t.withLockedPosition(false)\n\t\t\t.withViewportMargin(getPushPanelViewportMargin(this.elementRef.nativeElement, 8))\n\t\t\t.withPositions([\n\t\t\t\tthis.buildPosition('bottom', 'right', config),\n\t\t\t\tthis.buildPosition('bottom', 'left', config),\n\t\t\t\tthis.buildPosition('top', 'right', config),\n\t\t\t\tthis.buildPosition('top', 'left', config),\n\t\t\t]);\n\t\toverlayConfig.scrollStrategy = this.scrollStrategies.reposition();\n\t\toverlayConfig.minWidth = this.elementRef.nativeElement.clientWidth;\n\t\toverlayConfig.maxWidth = '100vw';\n\n\t\treturn overlayConfig;\n\t}\n\n\tprotected buildPosition(\n\t\tyDirection: 'top' | 'bottom',\n\t\txDirection: 'left' | 'right',\n\t\tconfig: {\n\t\t\toffsetX?: number;\n\t\t\toffsetY?: number;\n\t\t\toverlapInput: boolean;\n\t\t},\n\t): ConnectedPosition {\n\t\tconst originX = xDirection === 'right' ? 'start' : 'end';\n\t\tconst overlayX = originX;\n\n\t\tconst oppositeYDirection = yDirection === 'top' ? 'bottom' : 'top';\n\t\tconst { originY, overlayY } = config.overlapInput\n\t\t\t? ({\n\t\t\t\t\toriginY: oppositeYDirection,\n\t\t\t\t\toverlayY: oppositeYDirection,\n\t\t\t\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 { AsyncPipe, CommonModule } from '@angular/common';\nimport {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tforwardRef,\n\tinject,\n\tinput,\n\tmodel,\n\tnumberAttribute,\n\tOnDestroy,\n\tOnInit,\n\tSignal,\n\tsignal,\n\tTemplateRef,\n\tType,\n\tviewChild,\n\tViewContainerRef,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ClearComponent } from '@lucca-front/ng/clear';\nimport { intlInputOptions } from '@lucca-front/ng/core';\nimport { ALuSelectInputComponent, LU_CORE_SELECT_TRANSLATIONS, LuOptionContext, provideLuSelectLabelsAndIds, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { FILTER_PILL_INPUT_COMPONENT, FilterPillDisplayerDirective, FilterPillLabelDirective } from '@lucca-front/ng/filter-pills';\nimport { PresentationDisplayDirective, ɵPresentationDisplayDefaultDirective } from '@lucca-front/ng/form-field';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { IconComponent } from '@lucca/prisme/icon';\nimport { Subject } from 'rxjs';\nimport { LuMultiSelectDefaultDisplayerComponent } from '../displayer';\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\ttemplateUrl: './select-input.component.html',\n\tstyleUrl: './select-input.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [\n\t\tAsyncPipe,\n\t\tLuTooltipModule,\n\t\tɵLuOptionOutletDirective,\n\t\tFilterPillDisplayerDirective,\n\t\tFilterPillLabelDirective,\n\t\tClearComponent,\n\t\tPresentationDisplayDirective,\n\t\tCommonModule,\n\t\tɵPresentationDisplayDefaultDirective,\n\t\tIconComponent,\n\t],\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\tprovideLuSelectLabelsAndIds(),\n\t\tLuMultiSelectPanelRefFactory,\n\t\t{\n\t\t\tprovide: FILTER_PILL_INPUT_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectInputComponent),\n\t\t},\n\t],\n\thost: {\n\t\tclass: 'multiSelect',\n\t\t'[class.mod-filterPill]': 'filterPillClass',\n\t\t'(keydown.control.enter)': 'selectParentOnly()',\n\t\t'(keydown.shift.enter)': 'selectChildrenOnly()',\n\t},\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class LuMultiSelectInputComponent<T> extends ALuSelectInputComponent<T, T[]> implements ControlValueAccessor, OnDestroy, OnInit {\n\treadonly intl = input(...intlInputOptions(LU_CORE_SELECT_TRANSLATIONS, LU_MULTI_SELECT_TRANSLATIONS));\n\n\tshowColon: false;\n\n\treadonly valuesTpl = model<TemplateRef<LuOptionContext<T[]>> | Type<unknown>>(LuMultiSelectDefaultDisplayerComponent);\n\n\treadonly maxValuesShown = input(500, { transform: numberAttribute });\n\n\treadonly keepSearchAfterSelection = input(false, { transform: booleanAttribute });\n\n\treadonly filterPillLabelPlural = input<string>();\n\n\toverride readonly selectParent$ = new Subject<void>();\n\toverride readonly selectChildren$ = new Subject<void>();\n\n\tpublic get filterPillClass() {\n\t\treturn this.filterPillMode;\n\t}\n\n\treadonly hideCombobox = computed(() => (this.valueSignal()?.length ?? 0) > 1);\n\n\treadonly filterPillPanelAnchorRef = viewChild('filterPillPanelAnchor', { read: ViewContainerRef });\n\n\t// eslint-disable-next-line @angular-eslint/prefer-signals\n\toverride isFilterPillEmpty = computed(() => {\n\t\tconst valueSignal = this.valueSignal();\n\t\treturn !valueSignal || valueSignal.length === 0;\n\t});\n\n\t// eslint-disable-next-line @angular-eslint/prefer-signals\n\tpublic valueLength = computed(() => this.valueSignal()?.length ?? 0);\n\t// eslint-disable-next-line @angular-eslint/prefer-signals\n\tpublic useSingleOptionDisplayer: Signal<boolean> = signal(true);\n\toverride _value: T[] = [];\n\n\tpublic override get panelRef(): LuMultiSelectPanelRef<T> | undefined {\n\t\treturn this._panelRef;\n\t}\n\n\tprotected override _panelRef?: LuMultiSelectPanelRef<T>;\n\n\tprotected panelRefFactory = inject(LuMultiSelectPanelRefFactory);\n\n\t/**\n\t * This is used to tell the displayer to focus on the input element\n\t * keepClue is used to avoid triggering an update which would open the panel,\n\t * mainly for when we want to focus without opening the panel\n\t */\n\tpublic readonly focusInput$ = new Subject<void | { keepClue: boolean }>();\n\n\tpublic readonly emptyClue$ = new Subject<void>();\n\n\tpublic selectParentOnly() {\n\t\tthis.selectParent$.next();\n\t}\n\n\tpublic selectChildrenOnly() {\n\t\tthis.selectChildren$.next();\n\t}\n\n\tpublic override focusInput(): void {\n\t\tthis.focusInput$.next({ keepClue: true });\n\t}\n\n\tpublic override emptyClue(): void {\n\t\tthis.emptyClue$.next();\n\t}\n\n\tpublic override writeValue(value: T[]): void {\n\t\tsuper.writeValue(value);\n\t\tthis.panelRef?.updateSelectedOptions(value);\n\t}\n\n\tpublic override updateValue(value: T[], skipFocus = false): void {\n\t\tsuper.updateValue(value, skipFocus, this.keepSearchAfterSelection());\n\t\tif (!skipFocus) {\n\t\t\tthis.focusInput();\n\t\t}\n\t}\n\n\tupdatePosition() {\n\t\tthis.updatePositionFn?.();\n\t}\n\n\tprotected override buildPanelRef(): LuMultiSelectPanelRef<T> {\n\t\treturn this.panelRefFactory.buildPanelRef(this, this.overlayConfig());\n\t}\n\n\tprotected override bindInputToPanelRefEvents(): void {\n\t\tif (!this.panelRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tsuper.bindInputToPanelRefEvents();\n\t}\n\n\toverride enableFilterPillMode() {\n\t\tconst host = this.filterPillPanelAnchorRef();\n\t\tif (host) {\n\t\t\tthis._panelRef = this.panelRefFactory.buildAndAttachPanelRef(this, host);\n\t\t}\n\t\tsuper.enableFilterPillMode();\n\t}\n\n\thasValue(): boolean {\n\t\treturn !!this.value?.length;\n\t}\n\n\toverride clearValue(event?: Event): void {\n\t\tevent?.stopPropagation();\n\t\tthis.onChange?.([]);\n\t\tthis.value = [];\n\t\tthis.focusInput$.next({ keepClue: true });\n\t\tthis.panelRef?.updateSelectedOptions([]);\n\t}\n\n\toverride ngOnDestroy() {\n\t\tsuper.ngOnDestroy();\n\t\tthis.focusInput$.complete();\n\t}\n}\n","<ng-container *luOptionOutlet=\"valuesTpl(); value: value || []\" />\n\n@if (!filterPillMode) {\n\t@if (hasValue() && clearable() && (disabled$ | async) === false) {\n\t\t<lu-clear class=\"multipleSelect-clear\" (onClear)=\"clearValue($event)\">{{ intl().clear }}</lu-clear>\n\t}\n\n\t<lu-icon icon=\"arrowChevronBottom\" class=\"multipleSelect-arrow\" />\n\t<lu-icon icon=\"searchMagnifyingGlass\" class=\"multipleSelect-searchIcon\" />\n}\n\n<ng-container #filterPillPanelAnchor />\n<ng-container *luFilterPillDisplayer>\n\t<div class=\"multipleSelect-displayer-filter\">\n\t\t@if (useSingleOptionDisplayer() && valueLength() === 1) {\n\t\t\t<div class=\"multipleSelect-pill-displayer-chip\">\n\t\t\t\t<ng-container *luOptionOutlet=\"displayerTpl(); value: value[0]\" />\n\t\t\t</div>\n\t\t}\n\t</div>\n</ng-container>\n<ng-container *luFilterPillLabel=\"let label = label; let colon = colon\">\n\t@let minCount = useSingleOptionDisplayer() ? 1 : 0;\n\t@if (valueLength() > minCount) {\n\t\t<span class=\"multipleSelect-pill-displayer-label\">{{ valueLength() }} {{ filterPillLabelPlural() }}</span>\n\t} @else {\n\t\t{{ label }}\n\t\t@if (valueLength() === 1) {\n\t\t\t{{ colon }}\n\t\t}\n\t}\n</ng-container>\n@if (!ignorePresentation()) {\n\t<ng-container *luPresentationDisplayDefault>\n\t\t@for (v of value; track $index) {\n\t\t\t@if ($last) {\n\t\t\t\t<ng-container *ngTemplateOutlet=\"noComma; context: { $implicit: v }\" />\n\t\t\t} @else {\n\t\t\t\t<ng-container *ngTemplateOutlet=\"comma; context: { $implicit: v }\" />\n\t\t\t}\n\t\t} @empty {\n\t\t\t<span aria-hidden=\"true\" data-content-before=\"–\"></span>\n\t\t}\n\t</ng-container>\n}\n\n<ng-template #comma let-value><ng-container *luOptionOutlet=\"displayerTpl(); value: value\" />, </ng-template>\n\n<ng-template #noComma let-value>\n\t<ng-container *luOptionOutlet=\"displayerTpl(); value: value\" />\n</ng-template>\n","export const Translations = {\n\t'nl-BE': {\n\t\totherResult: 'ander resultaat',\n\t\totherResults: 'andere resultaten',\n\t\tshowResultsDetails: 'Zie details',\n\t\tremoveOption: 'Optie verwijderen',\n\t},\n\tnl: {\n\t\totherResult: 'ander resultaat',\n\t\totherResults: 'andere resultaten',\n\t\tshowResultsDetails: 'Zie details',\n\t\tremoveOption: 'Optie verwijderen',\n\t},\n\tit: {\n\t\totherResult: 'altro risultato',\n\t\totherResults: 'altri risultati',\n\t\tshowResultsDetails: 'Vedere il dettaglio',\n\t\tremoveOption: 'Cancellare l’opzione',\n\t},\n\tfr: {\n\t\totherResult: 'autre résultat',\n\t\totherResults: 'autres résultats',\n\t\tshowResultsDetails: 'Voir le détail',\n\t\tremoveOption: \"Supprimer l'option\",\n\t},\n\tpt: {\n\t\totherResult: 'outro resultado',\n\t\totherResults: 'outros resultados',\n\t\tshowResultsDetails: 'Mostrar detalhes',\n\t\tremoveOption: 'Remove option',\n\t},\n\tes: {\n\t\totherResult: 'otro resultado',\n\t\totherResults: 'otros resultados',\n\t\tshowResultsDetails: 'Ver los detalles',\n\t\tremoveOption: 'Eliminar la opción',\n\t},\n\tde: {\n\t\totherResult: 'anderes Ergebnis',\n\t\totherResults: 'andere Ergebnisse',\n\t\tshowResultsDetails: 'Details anzeigen ',\n\t\tremoveOption: 'Option löschen',\n\t},\n\ten: {\n\t\totherResult: 'other result',\n\t\totherResults: 'other results',\n\t\tshowResultsDetails: 'Show details',\n\t\tremoveOption: 'Remove option',\n\t},\n\tpl: {\n\t\totherResult: 'inny wynik',\n\t\totherResults: 'inne wyniki',\n\t\tshowResultsDetails: 'Zobacz szczegóły',\n\t\tremoveOption: 'Usuń opcję',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS = new InjectionToken('LuMultiSelectDisplayerTranslations', {\n\tfactory: () => luMultiSelectDisplayerTranslations,\n});\n\nexport interface ILuMultiSelectDisplayerLabel {\n\totherResult: string;\n\totherResults: string;\n\tshowResultsDetails: string;\n\tremoveOption: string;\n}\n\nexport const luMultiSelectDisplayerTranslations: LuTranslation<ILuMultiSelectDisplayerLabel> = Translations;\n","import { InjectionToken, Signal } from '@angular/core';\nimport { LuMultiSelectionMode } from '../../select.model';\nimport { ILuMultiSelectLabel } from '../../select.translate';\n\nexport interface LuMultiSelectWithSelectAllContext {\n\tsetSelectAll(value: boolean): void;\n\tmode: Signal<LuMultiSelectionMode>;\n\tvalues: Signal<unknown[]>;\n\tdisplayerLabel: Signal<string>;\n\ttotalCount: Signal<number>;\n\tdisplayerCount: Signal<number | null>;\n\tintl: Signal<ILuMultiSelectLabel>;\n}\n\nexport const MULTI_SELECT_WITH_SELECT_ALL_CONTEXT = new InjectionToken<LuMultiSelectWithSelectAllContext>('LuMultiSelectWithSelectAllContext');\n","import { computed, DestroyRef, Directive, ElementRef, inject, OnInit } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { isNotNil, ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from '@lucca-front/ng/core-select';\nimport { InputDirective } from '@lucca-front/ng/form-field';\nimport { LuMultiSelectInputComponent } from '../input';\nimport { MULTI_SELECT_WITH_SELECT_ALL_CONTEXT } from '../input/select-all/select-all.models';\nimport { LuMultiSelectContentDisplayerComponent } from './content-displayer/content-displayer.component';\n\n@Directive({\n\tselector: '[luMultiSelectDisplayerInput]',\n\thost: {\n\t\t'aria-haspopup': 'listbox',\n\t\trole: 'combobox',\n\t\tclass: 'multipleSelect-displayer-search',\n\t\ttype: 'text',\n\t\t'[attr.aria-expanded]': 'panelOpen',\n\t\t'[attr.aria-activedescendant]': 'activeDescendant',\n\t\t'[attr.aria-controls]': 'controls',\n\t\t'[attr.disabled]': 'disabled',\n\t\t'[attr.placeholder]': 'placeholder',\n\t\t'[attr.readonly]': 'readonly',\n\t\t'(input)': 'onInput()',\n\t},\n\thostDirectives: [InputDirective],\n})\nexport class LuMultiSelectDisplayerInputDirective<T> implements OnInit {\n\treadonly select = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\treadonly selectAllContext = inject(MULTI_SELECT_WITH_SELECT_ALL_CONTEXT, { optional: true });\n\treadonly contentDisplayer = inject(LuMultiSelectContentDisplayerComponent, { optional: true });\n\n\treadonly context = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\treadonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n\treadonly destroyRef = inject(DestroyRef);\n\n\tget panelOpen() {\n\t\treturn this.#panelOpen();\n\t}\n\n\tget activeDescendant() {\n\t\treturn this.#activeDescendant();\n\t}\n\n\tget controls() {\n\t\treturn this.select.ariaControls;\n\t}\n\n\tget disabled() {\n\t\treturn this.#disabled() || null;\n\t}\n\n\tget placeholder() {\n\t\treturn this.#placeholder();\n\t}\n\n\tget readonly() {\n\t\treturn this.select.searchable ? null : true;\n\t}\n\n\tonInput() {\n\t\tthis.select.clueChanged(this.elementRef.nativeElement.value);\n\t}\n\n\treadonly #panelOpen = toSignal(this.select.isPanelOpen$);\n\treadonly #activeDescendant = toSignal(this.select.activeDescendant$);\n\treadonly #disabled = toSignal(this.select.disabled$);\n\treadonly #options = toSignal(this.context.option$, { initialValue: [] as T[] });\n\treadonly #placeholder = computed(() => {\n\t\tconst options = this.#options();\n\t\tif ((options || []).length > 0 || this.selectAllContext?.mode() === 'all') {\n\t\t\treturn '';\n\t\t}\n\t\tconst placeholder = this.select.placeholder();\n\t\treturn (isNotNil(placeholder) && placeholder.length > 0) || this.contentDisplayer ? placeholder : this.select.intl().placeholder;\n\t});\n\n\tconstructor() {\n\t\tif (this.selectAllContext) {\n\t\t\tɵeffectWithDeps([this.selectAllContext.mode], (mode) => {\n\t\t\t\tif (mode === 'all') {\n\t\t\t\t\tthis.#clearText();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tngOnInit(): void {\n\t\tthis.select.focusInput$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data?: { keepClue: boolean }) => {\n\t\t\tif (!data?.keepClue) {\n\t\t\t\tthis.#clearText();\n\t\t\t}\n\t\t\tthis.elementRef.nativeElement.focus();\n\t\t});\n\t\tthis.select.emptyClue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tthis.elementRef.nativeElement.value = '';\n\t\t});\n\t}\n\n\t#clearText() {\n\t\tif (this.elementRef.nativeElement.value) {\n\t\t\tthis.elementRef.nativeElement.value = '';\n\t\t\tthis.select.clueChanged('');\n\t\t}\n\t}\n}\n","import { afterNextRender, ChangeDetectionStrategy, Component, computed, ElementRef, inject, Injector, input, viewChild } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ChipComponent } from '@lucca-front/ng/chip';\nimport { intlInputOptions } from '@lucca-front/ng/core';\nimport { ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS } from '../../displayer/default-displayer.translate';\nimport { LuMultiSelectDisplayerInputDirective } from '../../displayer/displayer-input.directive';\nimport { LuMultiSelectInputComponent } from '../select-input.component';\nimport { MULTI_SELECT_WITH_SELECT_ALL_CONTEXT } from './select-all.models';\n\n@Component({\n\tselector: 'lu-multi-select-all-displayer',\n\timports: [LuMultiSelectDisplayerInputDirective, ɵLuOptionOutletDirective, ChipComponent],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer mod-filter\" [class.is-filled]=\"isFilled()\">\n\t\t\t<input type=\"text\" luMultiSelectDisplayerInput />\n\n\t\t\t@if (displayerCount() !== null) {\n\t\t\t\t<div class=\"multipleSelect-displayer-filter\">\n\t\t\t\t\t@if (displayerCount() === 1 && isIncludeMode()) {\n\t\t\t\t\t\t<lu-chip withEllipsis (kill)=\"unselectOption(select.value[0], $event)\" class=\"multipleSelect-displayer-chip\" [unkillable]=\"disabled()\">\n\t\t\t\t\t\t\t<ng-template *luOptionOutlet=\"select.displayerTpl(); value: select.value[0]\" />\n\t\t\t\t\t\t</lu-chip>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<lu-chip class=\"multipleSelect-displayer-chip\" unkillable>{{ displayerCount() }} {{ displayerLabel() }}</lu-chip>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tinline-size: 100%;\n\t\t}\n\t`,\n})\nexport class LuMultiSelectAllDisplayerComponent<TValue> {\n\treadonly selectAllContext = inject(MULTI_SELECT_WITH_SELECT_ALL_CONTEXT);\n\treadonly select = inject<LuMultiSelectInputComponent<TValue>>(LuMultiSelectInputComponent);\n\n\treadonly isFilled = computed(() => this.selectAllContext.mode() !== 'none');\n\treadonly isIncludeMode = computed(() => this.selectAllContext.mode() === 'include');\n\treadonly displayerLabel = this.selectAllContext.displayerLabel;\n\treadonly displayerCount = this.selectAllContext.displayerCount;\n\n\treadonly intl = input(...intlInputOptions(LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS));\n\treadonly disabled = toSignal(this.select.disabled$);\n\n\treadonly inputElementRef = viewChild.required<LuMultiSelectDisplayerInputDirective<TValue>, ElementRef<HTMLInputElement>>(LuMultiSelectDisplayerInputDirective, { read: ElementRef });\n\treadonly #injector = inject(Injector);\n\n\tunselectOption(option: TValue, $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) ?? [], true);\n\t\tafterNextRender(\n\t\t\t() => {\n\t\t\t\tthis.select.panelRef?.updatePosition();\n\t\t\t\tthis.inputElementRef().nativeElement.focus();\n\t\t\t},\n\t\t\t{ injector: this.#injector },\n\t\t);\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject } from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ɵCoreSelectPanelElement } from '@lucca-front/ng/core-select';\nimport { FormFieldComponent } from '@lucca-front/ng/form-field';\nimport { CheckboxInputComponent } from '@lucca-front/ng/forms';\nimport { MULTI_SELECT_WITH_SELECT_ALL_CONTEXT } from './select-all.models';\n\n@Component({\n\tselector: 'lu-multi-select-all-header',\n\timports: [FormsModule, CheckboxInputComponent, FormFieldComponent],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [ɵCoreSelectPanelElement],\n\tstyleUrl: './multi-select-all-header.component.scss',\n\ttemplate: `\n\t\t<div class=\"multiSelectAllDisplayer\">\n\t\t\t<lu-form-field [label]=\"intl().selectAll\">\n\t\t\t\t<lu-checkbox-input\n\t\t\t\t\tclass=\"multiSelectAllDisplayer-checkbox\"\n\t\t\t\t\t[ngModel]=\"isSelected()\"\n\t\t\t\t\t(ngModelChange)=\"selectAllContext.setSelectAll($event)\"\n\t\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t\t\t[mixed]=\"mixed()\"\n\t\t\t\t/>\n\t\t\t</lu-form-field>\n\t\t</div>\n\t`,\n})\nexport class LuMultiSelectAllHeaderComponent {\n\treadonly selectAllContext = inject(MULTI_SELECT_WITH_SELECT_ALL_CONTEXT);\n\treadonly intl = this.selectAllContext.intl;\n\treadonly mixed = computed(() => this.selectAllContext.mode() === 'exclude' || this.selectAllContext.mode() === 'include');\n\treadonly isSelected = computed(() => this.selectAllContext.mode() === 'all' || this.mixed());\n\treadonly #selectableItem = inject(ɵCoreSelectPanelElement);\n\treadonly #elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\tconstructor() {\n\t\tthis.#selectableItem.id.set(`multi-select-select-all`);\n\t\teffect(() => {\n\t\t\tif (this.#selectableItem.isHighlighted()) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.#elementRef.nativeElement.scrollIntoView();\n\t\t\t\t}, 50);\n\t\t\t}\n\t\t\tif (this.isSelected()) {\n\t\t\t\tthis.#selectableItem.isSelected.set(true);\n\t\t\t}\n\t\t});\n\t\toutputToObservable(this.#selectableItem.selected)\n\t\t\t.pipe(takeUntilDestroyed())\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.selectAllContext.setSelectAll(!this.isSelected());\n\t\t\t});\n\t}\n}\n","import { computed, Directive, effect, forwardRef, inject, input, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { isNil } from '@lucca-front/ng/core';\nimport { CORE_SELECT_API_TOTAL_COUNT_PROVIDER, ɵIsSelectedStrategy } from '@lucca-front/ng/core-select';\nimport { LuOptionComparer } from '@lucca-front/ng/option';\nimport { LuMultiSelection, LuMultiSelectionMode } from '../../select.model';\nimport { LuMultiSelectInputComponent } from '../select-input.component';\nimport { LuMultiSelectAllDisplayerComponent } from './multi-select-all-displayer.component';\nimport { LuMultiSelectAllHeaderComponent } from './multi-select-all-header.component';\nimport { LuMultiSelectWithSelectAllContext, MULTI_SELECT_WITH_SELECT_ALL_CONTEXT } from './select-all.models';\n\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-multi-select[withSelectAll]',\n\tproviders: [\n\t\t{\n\t\t\tprovide: ɵIsSelectedStrategy,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectWithSelectAllDirective),\n\t\t},\n\t\t{\n\t\t\tprovide: MULTI_SELECT_WITH_SELECT_ALL_CONTEXT,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectWithSelectAllDirective),\n\t\t},\n\t],\n})\nexport class LuMultiSelectWithSelectAllDirective<TValue> extends ɵIsSelectedStrategy<TValue> implements LuMultiSelectWithSelectAllContext {\n\treadonly select = inject<LuMultiSelectInputComponent<TValue>>(LuMultiSelectInputComponent);\n\treadonly intl = this.select.intl;\n\n\treadonly displayerLabel = input.required<string>({ alias: 'withSelectAllDisplayerLabel' });\n\n\treadonly #mode = signal<LuMultiSelectionMode>('none');\n\treadonly #values = signal<TValue[]>([]);\n\n\treadonly mode = this.#mode.asReadonly();\n\treadonly values = this.#values.asReadonly();\n\treadonly totalCount = toSignal(inject(CORE_SELECT_API_TOTAL_COUNT_PROVIDER).totalCount$, { initialValue: 0 });\n\treadonly clueChange = toSignal(this.select.clueChange$);\n\n\t// only show panel header when no clue && values not empty\n\treadonly #showPanelHeader = computed(() => isNil(this.clueChange()) || (this.clueChange()?.length === 0 && this.totalCount() !== 0));\n\treadonly #hasValue = computed(() => this.mode() !== 'none');\n\n\treadonly #valuesCount = computed(() => this.values().length);\n\treadonly displayerCount = computed(() => {\n\t\tswitch (this.mode()) {\n\t\t\tcase 'all':\n\t\t\t\treturn this.totalCount();\n\t\t\tcase 'include':\n\t\t\t\treturn this.#valuesCount();\n\t\t\tcase 'exclude':\n\t\t\t\treturn this.totalCount() - this.#valuesCount();\n\t\t\tcase 'none':\n\t\t\t\treturn null;\n\t\t}\n\t});\n\n\treadonly #selectAllValue = computed<LuMultiSelection<TValue>>(() => {\n\t\tconst mode = this.#mode();\n\t\treturn mode === 'all' || mode === 'none' ? { mode } : { mode, values: this.#values() };\n\t});\n\n\t// Keep the original registerOnChange / writeValue / clearValye methods\n\treadonly #selectRegisterOnChange = this.select.registerOnChange.bind(this.select) as LuMultiSelectInputComponent<TValue>['registerOnChange'];\n\treadonly #selectWriteValue = this.select.writeValue.bind(this.select) as LuMultiSelectInputComponent<TValue>['writeValue'];\n\treadonly #selectClearValue = this.select.clearValue.bind(this.select) as LuMultiSelectInputComponent<TValue>['clearValue'];\n\n\t#onChange?: (values: LuMultiSelection<TValue>) => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\teffect(() => {\n\t\t\tif (this.#showPanelHeader()) {\n\t\t\t\tthis.select.panelHeaderTpl.set(LuMultiSelectAllHeaderComponent);\n\t\t\t} else {\n\t\t\t\tthis.select.panelHeaderTpl.set(undefined);\n\t\t\t}\n\t\t});\n\n\t\t(this.select as { registerOnChange: (fn: (value: TValue[] | LuMultiSelection<TValue>) => void) => void }).registerOnChange = (fn) => this.registerOnChange(fn);\n\t\tthis.select.writeValue = (value) => this.writeValue(value);\n\t\tthis.select.clearValue = ($event) => this.clearValue($event);\n\n\t\tthis.select.panelHeaderTpl.set(LuMultiSelectAllHeaderComponent);\n\t\tthis.select.valuesTpl.set(LuMultiSelectAllDisplayerComponent);\n\t\tthis.select.hasValue = () => this.#hasValue();\n\t\tthis.select.isFilterPillEmpty = computed(() => !this.#hasValue());\n\t\tthis.select.useSingleOptionDisplayer = computed(() => this.#mode() === 'include');\n\t\tthis.select.valueLength = computed(() => this.displayerCount() ?? 0);\n\t}\n\n\tsetSelectAll(selectAll: boolean): void {\n\t\tthis.#selectWriteValue([]);\n\n\t\tif (this.#values().length) {\n\t\t\tthis.#values.set([]);\n\t\t}\n\n\t\tif (selectAll) {\n\t\t\tthis.select.focusInput$.next({ keepClue: true });\n\t\t}\n\n\t\tthis.#mode.set(selectAll ? 'all' : 'none');\n\t\tthis.#onChange?.(this.#selectAllValue());\n\t}\n\n\toverride isSelected(option: TValue, selectedOptions: TValue[], optionComparer: LuOptionComparer<TValue>): boolean {\n\t\tswitch (this.#mode()) {\n\t\t\tcase 'all':\n\t\t\t\treturn true;\n\t\t\tcase 'include':\n\t\t\t\treturn selectedOptions.some((o) => optionComparer(o, option));\n\t\t\tcase 'exclude':\n\t\t\t\treturn !selectedOptions.some((o) => optionComparer(o, option));\n\t\t\tcase 'none':\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\toverride isGroupSelected(_options: TValue[], notSelectedOptions: TValue[]): boolean {\n\t\tswitch (this.#mode()) {\n\t\t\tcase 'all':\n\t\t\t\treturn true;\n\t\t\tcase 'include':\n\t\t\t\treturn notSelectedOptions.length === 0;\n\t\t\tcase 'exclude':\n\t\t\t\treturn notSelectedOptions.length > 0;\n\t\t\tcase 'none':\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tregisterOnChange(fn: (value: TValue[] | LuMultiSelection<TValue>) => void): void {\n\t\tthis.#onChange = fn;\n\n\t\tthis.#selectRegisterOnChange((values: TValue[]) => {\n\t\t\tthis.#values.set(values);\n\t\t\tconst oldMode = this.#mode();\n\t\t\tthis.#mode.set(this.#getNextMode(oldMode, values));\n\t\t\tthis.#onChange?.(this.#selectAllValue());\n\n\t\t\t// When all values are selected/unselected one by one, we should reset internal select value to avoid weird behavior when selecting/unselecting after that\n\t\t\tif (values.length && (this.#mode() === 'all' || this.#mode() === 'none')) {\n\t\t\t\tthis.#selectWriteValue([]);\n\t\t\t}\n\t\t});\n\t}\n\n\twriteValue(value: TValue[] | LuMultiSelection<TValue>): void {\n\t\tif (Array.isArray(value)) {\n\t\t\tthrow new Error('MultiSelectWithSelectAllDirective does not support array values. The form value or ngModel must be a LuMultiSelection<TValue>.');\n\t\t}\n\n\t\tlet mode: LuMultiSelectionMode;\n\t\tlet values: TValue[];\n\n\t\tif (!value) {\n\t\t\tvalues = [];\n\t\t\tmode = 'none';\n\t\t} else {\n\t\t\tvalues = value.mode === 'exclude' || value.mode === 'include' ? value.values : [];\n\t\t\tmode = value.mode;\n\t\t}\n\n\t\tthis.#selectWriteValue(values);\n\t\tthis.#mode.set(mode);\n\t\tthis.#values.set(values);\n\t}\n\n\tclearValue($event?: Event): void {\n\t\tthis.#mode.set('none');\n\t\tthis.#selectClearValue($event);\n\t}\n\n\t#getNextMode(fromMode: LuMultiSelectionMode, values: TValue[]): LuMultiSelectionMode {\n\t\t// When none selected, \"include\" -> \"none\" and \"exclude\" -> \"all\"\n\t\tif (values.length === 0) {\n\t\t\treturn fromMode === 'include' || fromMode === 'none' ? 'none' : 'all';\n\t\t}\n\n\t\tconst allSelected = values.length === this.totalCount();\n\n\t\t// When all selected, \"include\" -> \"all\" and \"exclude\" -> \"none\"\n\t\tif (allSelected) {\n\t\t\treturn fromMode === 'include' || fromMode === 'none' ? 'all' : 'none';\n\t\t}\n\n\t\t// The first value selected will transition from \"all\" to \"exclude\"\n\t\tif (fromMode === 'all') {\n\t\t\treturn 'exclude';\n\t\t}\n\n\t\t// The first value selected will transition from \"none\" to \"include\"\n\t\tif (fromMode === 'none') {\n\t\t\treturn 'include';\n\t\t}\n\n\t\t// No match, keep the same mode\n\t\treturn fromMode;\n\t}\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { LuMultiSelectInputComponent } from '../../input';\nimport { LuMultiSelectDisplayerInputDirective } from '../displayer-input.directive';\n\n@Component({\n\tselector: 'lu-multi-select-content-displayer',\n\timports: [LuMultiSelectDisplayerInputDirective],\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer mod-filter\">\n\t\t\t<input type=\"text\" autocomplete=\"off\" #inputElement luMultiSelectDisplayerInput />\n\t\t\t<div class=\"multipleSelect-displayer-filter\">\n\t\t\t\t<ng-content />\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tstyleUrl: './content-displayer.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuMultiSelectContentDisplayerComponent<T> {\n\treadonly select = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, input, OnInit, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ChipComponent } from '@lucca-front/ng/chip';\nimport { isNotNil, syncInputSignal } 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 { BehaviorSubject } from 'rxjs';\nimport { LuMultiSelectInputComponent } from '../../input';\nimport { LuMultiSelectDisplayerInputDirective } from '../displayer-input.directive';\n\n@Component({\n\tselector: 'lu-multi-select-counter-displayer',\n\timports: [AsyncPipe, LuTooltipModule, ChipComponent, ɵLuOptionOutletDirective, FormsModule, LuMultiSelectDisplayerInputDirective],\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer mod-filter\" [class.is-filled]=\"(selectedOptions$ | async)?.length > 0\">\n\t\t\t<input type=\"text\" autocomplete=\"off\" #inputElement luMultiSelectDisplayerInput />\n\t\t\t@if (selectedOptions$ | async; as selectedOptions) {\n\t\t\t\t<div class=\"multipleSelect-displayer-filter\">\n\t\t\t\t\t@if (selectedOptions?.length === 1) {\n\t\t\t\t\t\t<lu-chip class=\"multipleSelect-displayer-chip\" unkillable withEllipsis>\n\t\t\t\t\t\t\t<ng-container *luOptionOutlet=\"select.displayerTpl(); value: selectedOptions[0]\" />\n\t\t\t\t\t\t</lu-chip>\n\t\t\t\t\t}\n\t\t\t\t\t@if (selectedOptions?.length > 1) {\n\t\t\t\t\t\t<lu-chip class=\"multipleSelect-displayer-chip\" unkillable>{{ selectedOptions?.length }} {{ label() }}</lu-chip>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t`,\n\tstyleUrl: './counter-displayer.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuMultiSelectCounterDisplayerComponent<T> implements OnInit {\n\treadonly select = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\treadonly context = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\tprotected destroyRef = inject(DestroyRef);\n\n\treadonly inputElementRef = viewChild<ElementRef<HTMLInputElement>>('inputElement');\n\n\tget value(): T[] {\n\t\treturn this.select.value || [];\n\t}\n\n\treadonly selectedOptions$ = new BehaviorSubject<T[]>([]);\n\n\treadonly selected = input<T[]>([]);\n\n\treadonly label = input.required<string>();\n\n\tconstructor() {\n\t\tsyncInputSignal(this.selected, (options) => {\n\t\t\tthis.selectedOptions$.next(options);\n\t\t\tthis.context.option$.next(options);\n\t\t});\n\t}\n\n\tngOnInit(): void {\n\t\tthis.select.focusInput$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data?: { keepClue: true }) => {\n\t\t\t// Everytime we want to focus, we need to reset the input\n\t\t\t// This is done when a value is selected and when panel is opened.\n\t\t\tconst inputElementRef = this.inputElementRef();\n\t\t\tif (isNotNil(inputElementRef)) {\n\t\t\t\tif (!data?.keepClue) {\n\t\t\t\t\tinputElementRef.nativeElement.value = '';\n\t\t\t\t\tthis.select.clueChanged('');\n\t\t\t\t}\n\t\t\t\tinputElementRef.nativeElement.focus();\n\t\t\t}\n\t\t});\n\t\tthis.select.emptyClue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tconst inputElementRef = this.inputElementRef();\n\t\t\tif (isNotNil(inputElementRef)) {\n\t\t\t\tinputElementRef.nativeElement.value = '';\n\t\t\t}\n\t\t});\n\t}\n}\n","import { AsyncPipe } from '@angular/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Injector, input, OnInit, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ChipComponent } from '@lucca-front/ng/chip';\nimport { intlInputOptions } 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 { IconComponent } from '@lucca/prisme/icon';\nimport { map } from 'rxjs/operators';\nimport { LuMultiSelectInputComponent } from '../input/select-input.component';\nimport { LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS } from './default-displayer.translate';\nimport { LuMultiSelectDisplayerInputDirective } from './displayer-input.directive';\n\nlet nextID = 0;\n\n@Component({\n\tselector: 'lu-multi-select-default-displayer',\n\timports: [AsyncPipe, LuTooltipModule, ɵLuOptionOutletDirective, FormsModule, LuMultiSelectDisplayerInputDirective, ChipComponent, IconComponent],\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer\">\n\t\t\t<div class=\"multipleSelect-displayer-suffix\">\n\t\t\t\t<input [attr.aria-labelledby]=\"valueID\" autocomplete=\"off\" #inputElement (keydown.backspace)=\"inputBackspace()\" (keydown.space)=\"inputSpace($event)\" luMultiSelectDisplayerInput />\n\t\t\t\t@if (select.filterPillMode) {\n\t\t\t\t\t<lu-icon icon=\"searchMagnifyingGlass\" class=\"multiSelect-field-icon mod-search\" />\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div [attr.id]=\"valueID\" class=\"pr-u-mask\">\n\t\t\t\t@for (option of displayedOptions$ | async; track option; let index = $index) {\n\t\t\t\t\t<ng-container *luOptionOutlet=\"select.displayerTpl(); value: option\" />&ngsp;\n\t\t\t\t}\n\t\t\t\t@if (overflowOptions$ | async; as overflow) {\n\t\t\t\t\t+ {{ overflow }}\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t@for (option of displayedOptions$ | async; track option; let index = $index) {\n\t\t\t\t<lu-chip aria-hidden=\"true\" class=\"multipleSelect-displayer-chip\" withEllipsis (kill)=\"unselectOption(option, $event)\" [unkillable]=\"select.disabled$ | async\">\n\t\t\t\t\t<ng-container *luOptionOutlet=\"select.displayerTpl(); value: option\" />\n\t\t\t\t</lu-chip>\n\t\t\t}\n\t\t\t@if (overflowOptions$ | async; as overflow) {\n\t\t\t\t<lu-chip aria-hidden=\"true\" class=\"multipleSelect-displayer-chip\" unkillable>+ {{ overflow }}</lu-chip>\n\t\t\t}\n\t\t</div>\n\t`,\n\tstyleUrl: './default-displayer.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuMultiSelectDefaultDisplayerComponent<T> implements OnInit {\n\treadonly select = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\treadonly intl = input(...intlInputOptions(LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS));\n\n\tvalueID = `value-${++nextID}`;\n\n\tprotected destroyRef = inject(DestroyRef);\n\treadonly #injector = inject(Injector);\n\n\treadonly inputElementRef = viewChild<ElementRef<HTMLInputElement>>('inputElement');\n\n\tget value(): T[] {\n\t\treturn this.select.value || [];\n\t}\n\n\treadonly context = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\treadonly displayedOptions$ = this.context.option$.pipe(\n\t\tmap((options) => {\n\t\t\tconst maxValuesShown = this.select.maxValuesShown();\n\t\t\tif (maxValuesShown) {\n\t\t\t\treturn (options || []).slice(0, maxValuesShown);\n\t\t\t}\n\t\t\treturn options;\n\t\t}),\n\t);\n\n\treadonly overflowOptions$ = this.context.option$.pipe(\n\t\tmap((options) => {\n\t\t\treturn Math.max(0, (options || []).length - this.select.maxValuesShown());\n\t\t}),\n\t);\n\n\tunselectOption(option: T, $event?: Event): void {\n\t\tif ($event) {\n\t\t\t$event.stopPropagation();\n\t\t\t$event.preventDefault();\n\t\t}\n\t\tthis.select.updateValue(\n\t\t\tthis.value.filter((o) => o !== option),\n\t\t\ttrue,\n\t\t);\n\t\tafterNextRender(\n\t\t\t() => {\n\t\t\t\tthis.select.panelRef?.updatePosition();\n\t\t\t\tthis.select.updatePosition();\n\t\t\t\tthis.inputElementRef()?.nativeElement.focus();\n\t\t\t\tthis.select.panelRef?.updateSelectedOptions(this.value);\n\t\t\t},\n\t\t\t{ injector: this.#injector },\n\t\t);\n\t}\n\n\tinputBackspace(): void {\n\t\tif (this.value.length > 0 && this.inputElementRef()?.nativeElement.value.length === 0) {\n\t\t\tthis.unselectOption(this.value[this.value.length - 1]);\n\t\t\tthis.select.panelRef?.updateSelectedOptions(this.value);\n\t\t}\n\t}\n\n\tinputSpace(event: Event): void {\n\t\tif (this.inputElementRef()?.nativeElement.value?.length === 0) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.select.panelRef?.selectCurrentlyHighlightedValue();\n\t\t}\n\t}\n\n\tngOnInit(): void {\n\t\tthis.select.focusInput$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data?: { keepClue: true }) => {\n\t\t\t// Everytime we want to focus, we need to reset the input\n\t\t\t// This is done when a value is selected and when panel is opened.\n\t\t\tif (!data?.keepClue && this.inputElementRef()?.nativeElement) {\n\t\t\t\tthis.inputElementRef()!.nativeElement.value = '';\n\t\t\t\tthis.select.clueChanged('');\n\t\t\t}\n\n\t\t\tthis.inputElementRef()?.nativeElement.focus();\n\t\t});\n\t\tthis.select.emptyClue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tif (this.inputElementRef()?.nativeElement) {\n\t\t\t\tthis.inputElementRef()!.nativeElement.value = '';\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Directive, input, TemplateRef } from '@angular/core';\nimport { syncInputSignal } from '@lucca-front/ng/core';\nimport { LuOptionContext } from '@lucca-front/ng/core-select';\nimport { LuMultiSelectInputComponent } from '../input';\n\n@Directive({\n\tselector: '[luMultiDisplayer]',\n})\nexport class LuMultiDisplayerDirective<T> {\n\treadonly select = input<LuMultiSelectInputComponent<T>>(undefined, { alias: 'luMultiDisplayerSelect' });\n\n\tpublic constructor(private templateRef: TemplateRef<LuOptionContext<T[]>>) {\n\t\tsyncInputSignal(this.select, (select) => {\n\t\t\tselect.valuesTpl.set(this.templateRef);\n\t\t});\n\t}\n\n\tpublic static ngTemplateContextGuard<T>(_dir: LuMultiDisplayerDirective<T>, _ctx: unknown): _ctx is LuOptionContext<T[]> {\n\t\treturn true;\n\t}\n}\n","import { LuMultiSelection } from './select.model';\n\nexport function selectionToQueryParams<T, Key extends string>(key: Key, value: LuMultiSelection<T>, selector: (value: T) => unknown): Partial<Record<Key | `-${Key}`, string>> {\n\tif (value.mode === 'all' || value.mode === 'none') {\n\t\treturn {};\n\t}\n\treturn { [value.mode === 'include' ? key : `-${key}`]: value.values.map(selector).join(',') } as Record<Key | `-${Key}`, string>;\n}\n\n/**\n * Transforms a selection from withSelectAll, the complete list of options and a getKey function to a list of options.\n *\n * @example\n * ```ts\n * const selection = { mode: 'exclude', values: [{ id: 1, name: 'foo' }] };\n * const allOptions = [{ id: 1, name: 'foo' }, { id: 2, name: 'bar' }, { id: 3, name: 'baz' }];\n *\n * const selectedOptions = selectionToOptions(selection, allOptions, (o) => o.id);\n * ```\n */\nexport function selectionToOptions<T>(selection: LuMultiSelection<T>, options: T[], getKeyFn: (value: T) => unknown): T[] {\n\tswitch (selection.mode) {\n\t\tcase 'include':\n\t\t\treturn selection.values;\n\t\tcase 'exclude': {\n\t\t\tconst excludedKeys = new Set(selection.values.map(getKeyFn));\n\t\t\treturn options.filter((o) => !excludedKeys.has(getKeyFn(o)));\n\t\t}\n\t\tcase 'all':\n\t\t\treturn options;\n\t\tcase 'none':\n\t\t\treturn [];\n\t}\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { LuMultiSelection } from './select.model';\n\nconst required = (control: AbstractControl<LuMultiSelection<unknown>>): ValidationErrors | null => {\n\tif (!control.value || control.value.mode === 'none') {\n\t\treturn { required: true };\n\t}\n\treturn null;\n};\n\nexport const LuMultiSelectionValidators = {\n\trequired,\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Translations","ɵIsSelectedStrategy","ɵgetGroupTemplateLocation","ɵLuOptionComponent","ɵCoreSelectPanelElement","ɵLuOptionGroupPipe","ɵLuOptionOutletDirective","ɵPresentationDisplayDefaultDirective","IconComponent","ɵeffectWithDeps","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lucca-front-ng-multi-select.mjs","sources":["../../../packages/ng/multi-select/translations.ts","../../../packages/ng/multi-select/select.translate.ts","../../../packages/ng/multi-select/select.utils.ts","../../../packages/ng/multi-select/input/panel.model.ts","../../../packages/ng/multi-select/select.model.ts","../../../packages/ng/multi-select/panel/option-group-context.pipe.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/translations.ts","../../../packages/ng/multi-select/displayer/default-displayer.translate.ts","../../../packages/ng/multi-select/input/select-all/select-all.models.ts","../../../packages/ng/multi-select/displayer/displayer-input.directive.ts","../../../packages/ng/multi-select/input/select-all/multi-select-all-displayer.component.ts","../../../packages/ng/multi-select/input/select-all/multi-select-all-header.component.ts","../../../packages/ng/multi-select/input/select-all/with-select-all.directive.ts","../../../packages/ng/multi-select/displayer/content-displayer/content-displayer.component.ts","../../../packages/ng/multi-select/displayer/counter-displayer/counter-displayer.component.ts","../../../packages/ng/multi-select/displayer/default-displayer.component.ts","../../../packages/ng/multi-select/displayer/displayer.directive.ts","../../../packages/ng/multi-select/select.validators.ts","../../../packages/ng/multi-select/lucca-front-ng-multi-select.ts"],"sourcesContent":["export const Translations = {\n\t'nl-BE': {\n\t\tplaceholder: 'Selecteren ...',\n\t\tsearch: 'Zoeken',\n\t\tclear: 'Selectie leegmaken',\n\t\tclearSearch: 'Zoekopdracht leegmaken',\n\t\temptyResults: 'Uw zoekopdracht heeft geen resultaat opgeleverd.',\n\t\temptySelection: 'Selecteer elementen uit de lijst aan de linkerkant om te beginnen',\n\t\texpand: 'Vergroten',\n\t\treduce: 'Verkleinen',\n\t\tselectAll: 'Alles selecteren',\n\t\tunselectAll: 'Alles deselecteren',\n\t\tloading: 'Bezig met laden...',\n\t\temptyOptions: 'Er zijn geen waarden beschikbaar. Neem contact op met uw beheerder voor meer informatie.',\n\t\tselectCountOptions: 'Selecteer alle resultaten ({{optionsCount}})',\n\t},\n\tnl: {\n\t\tplaceholder: 'Selecteren ...',\n\t\tsearch: 'Zoeken',\n\t\tclear: 'Selectie leegmaken',\n\t\tclearSearch: 'Zoekopdracht leegmaken',\n\t\temptyResults: 'Uw zoekopdracht heeft geen resultaat opgeleverd.',\n\t\temptySelection: 'Selecteer elementen uit de lijst aan de linkerkant om te beginnen',\n\t\texpand: 'Vergroten',\n\t\treduce: 'Verkleinen',\n\t\tselectAll: 'Alles selecteren',\n\t\tunselectAll: 'Alles deselecteren',\n\t\tloading: 'Bezig met laden...',\n\t\temptyOptions: 'Er zijn geen waarden beschikbaar. Neem contact op met uw beheerder voor meer informatie.',\n\t\tselectCountOptions: 'Selecteer alle resultaten ({{optionsCount}})',\n\t},\n\tit: {\n\t\tplaceholder: 'Selezionare…',\n\t\tsearch: 'Cercare',\n\t\tclear: 'Cancellare la selezione',\n\t\tclearSearch: 'Cancellare la ricerca',\n\t\temptyResults: 'La ricerca non ha prodotto risultati.',\n\t\temptySelection: 'Per iniziare, seleziona gli elementi dall’elenco a sinistra',\n\t\texpand: 'Estendere',\n\t\treduce: 'Ridurre',\n\t\tselectAll: 'Selezionare tutto',\n\t\tunselectAll: 'Deselezionare tutto',\n\t\tloading: 'Caricamento in corso...',\n\t\temptyOptions: 'Nessun valore è disponibile. Contatta l’amministratore per maggiori informazioni.',\n\t\tselectCountOptions: 'Selezionare tutti i risultati ({{optionsCount}})',\n\t},\n\tfr: {\n\t\tplaceholder: 'Sélectionner…',\n\t\tsearch: 'Rechercher',\n\t\tclear: 'Vider la sélection',\n\t\tclearSearch: 'Vider la recherche',\n\t\temptyResults: \"Votre recherche n'a donné aucun résultat.\",\n\t\temptySelection: 'Sélectionnez les éléments dans la liste de gauche pour commencer',\n\t\texpand: 'Étendre',\n\t\treduce: 'Réduire',\n\t\tselectAll: 'Tout sélectionner',\n\t\tunselectAll: 'Tout désélectionner',\n\t\tloading: 'Chargement en cours...',\n\t\temptyOptions: \"Aucune valeur n'est disponible. Contactez votre administrateur pour plus d'informations.\",\n\t\tselectCountOptions: 'Sélectionner tous les résultats ({{optionsCount}})',\n\t},\n\tpt: {\n\t\tplaceholder: 'Selecionar..',\n\t\tsearch: 'Pesquisar',\n\t\tclear: 'Limpar seleção',\n\t\tclearSearch: 'Limpar pesquisa',\n\t\temptyResults: 'A sua pesquisa não produziu resultados.',\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\tunselectAll: 'Desmarcar tudo',\n\t\tloading: 'Carregando...',\n\t\temptyOptions: 'Não existe nenhum valor disponível. Contacte o seu administrador para obter mais informações.',\n\t\tselectCountOptions: 'Selecionar todos os resultados ({{optionsCount}})',\n\t},\n\tes: {\n\t\tplaceholder: 'Seleccionar...',\n\t\tsearch: 'Buscar',\n\t\tclear: 'Vaciar la selección',\n\t\tclearSearch: 'Vaciar la búsqueda',\n\t\temptyResults: 'La búsqueda no ha dado ningún resultado.',\n\t\temptySelection: 'Seleccione los elementos de la lista de la izquierda para empezar',\n\t\texpand: 'Expandir',\n\t\treduce: 'Reducir',\n\t\tselectAll: 'Seleccionar todo',\n\t\tunselectAll: 'Desmarcar todo',\n\t\tloading: 'Cargando...',\n\t\temptyOptions: 'No hay ningún valor disponible. Ponte en contacto con tu administrador para obtener más información.',\n\t\tselectCountOptions: 'Seleccionar todos los resultados ({{optionsCount}})',\n\t},\n\tde: {\n\t\tplaceholder: 'Auswählen ...',\n\t\tsearch: 'Suchen',\n\t\tclear: 'Auswahl leeren',\n\t\tclearSearch: 'Suche leeren',\n\t\temptyResults: 'Ihre Suche hat keinen Treffer ergeben.',\n\t\temptySelection: 'Wählen Sie zuerst die Items in der Liste links aus.',\n\t\texpand: 'Erweitern',\n\t\treduce: 'Reduzieren',\n\t\tselectAll: 'Alles auswählen',\n\t\tunselectAll: 'Alles abwählen',\n\t\tloading: 'Lädt...',\n\t\temptyOptions: 'Es ist kein Wert verfügbar. Wenden Sie sich für weitere Informationen an Ihre:n Administrator:in.',\n\t\tselectCountOptions: 'Alle Ergebnisse auswählen ({{optionsCount}})',\n\t},\n\ten: {\n\t\tplaceholder: 'Select…',\n\t\tsearch: 'Search',\n\t\tclear: 'Clear selection',\n\t\tclearSearch: 'Clear search',\n\t\temptyResults: 'We couldn’t find any results that match your search.',\n\t\temptySelection: 'Select items from the list on the left to start',\n\t\texpand: 'Expand',\n\t\treduce: 'Collapse',\n\t\tselectAll: 'Select all',\n\t\tunselectAll: 'Deselect all',\n\t\tloading: 'Loading...',\n\t\temptyOptions: 'There are no values available. Contact your administrator for more information.',\n\t\tselectCountOptions: 'Select all results ({{optionsCount}})',\n\t},\n\tpl: {\n\t\tplaceholder: 'Wybierz…',\n\t\tsearch: 'Szukaj',\n\t\tclear: 'Wyczyść zaznaczenie',\n\t\tclearSearch: 'Wyczyść wyszukiwanie',\n\t\temptyResults: 'Wyszukiwanie nie przyniosło żadnych rezultatów.',\n\t\temptySelection: 'Wybierz elementy z listy po lewej stronie, aby rozpocząć',\n\t\texpand: 'Rozwiń',\n\t\treduce: 'Zmniejsz',\n\t\tselectAll: 'Zaznacz wszystko',\n\t\tunselectAll: 'Odznacz wszystko',\n\t\tloading: 'Trwa ładowanie…',\n\t\temptyOptions: 'Brak dostępnych wartości. Aby uzyskać więcej informacji, skontaktuj się z administratorem.',\n\t\tselectCountOptions: 'Zaznacz wszystkie wyniki ({{optionsCount}})',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\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\temptyOptions: string;\n\temptySelection: string;\n\texpand: string;\n\treduce: string;\n\tselectAll: string;\n\tunselectAll: string;\n\tloading: string;\n}\n\nexport const luMultiSelectTranslations: LuTranslation<ILuMultiSelectLabel> = Translations;\n","import { LuMultiSelection } from './select.model';\n\n/**\n * Returns the `itemCount - 1` separators `Intl.ListFormat` puts between `itemCount` items, so they can be\n * interleaved with values rendered by a template rather than by `format()`.\n *\n * @example\n * ```ts\n * listSeparators(new Intl.ListFormat('fr-FR'), 3); // [', ', ' et ']\n * ```\n */\nexport function listSeparators(listFormat: Intl.ListFormat, itemCount: number): string[] {\n\treturn listFormat\n\t\t.formatToParts(Array.from({ length: itemCount }, (_, index) => `${index}`))\n\t\t.filter(({ type }) => type === 'literal')\n\t\t.map(({ value }) => value);\n}\n\nexport function selectionToQueryParams<T, Key extends string>(key: Key, value: LuMultiSelection<T>, selector: (value: T) => unknown): Partial<Record<Key | `-${Key}`, string>> {\n\tif (value.mode === 'all' || value.mode === 'none') {\n\t\treturn {};\n\t}\n\treturn { [value.mode === 'include' ? key : `-${key}`]: value.values.map(selector).join(',') } as Record<Key | `-${Key}`, string>;\n}\n\n/**\n * Transforms a selection from withSelectAll, the complete list of options and a getKey function to a list of options.\n *\n * @example\n * ```ts\n * const selection = { mode: 'exclude', values: [{ id: 1, name: 'foo' }] };\n * const allOptions = [{ id: 1, name: 'foo' }, { id: 2, name: 'bar' }, { id: 3, name: 'baz' }];\n *\n * const selectedOptions = selectionToOptions(selection, allOptions, (o) => o.id);\n * ```\n */\nexport function selectionToOptions<T>(selection: LuMultiSelection<T>, options: T[], getKeyFn: (value: T) => unknown): T[] {\n\tswitch (selection.mode) {\n\t\tcase 'include':\n\t\t\treturn selection.values;\n\t\tcase 'exclude': {\n\t\t\tconst excludedKeys = new Set(selection.values.map(getKeyFn));\n\t\t\treturn options.filter((o) => !excludedKeys.has(getKeyFn(o)));\n\t\t}\n\t\tcase 'all':\n\t\t\treturn options;\n\t\tcase 'none':\n\t\t\treturn [];\n\t}\n}\n","import { ChangeDetectorRef } from '@angular/core';\nimport { LuSelectPanelRef } from '@lucca-front/ng/core-select';\n\nexport abstract class LuMultiSelectPanelRef<T> extends LuSelectPanelRef<T, T[]> {\n\tabstract changeDetectorRef?: ChangeDetectorRef;\n\n\tabstract updateSelectedOptions(selectedOptions: T[]): void;\n\n\tabstract useDefaultPosition(): void;\n}\n","import { InjectionToken } from '@angular/core';\nimport type { LuMultiSelectInputComponent } from './input';\n\nexport const MULTI_SELECT_INPUT = new InjectionToken<LuMultiSelectInputComponent<unknown>>('MultiSelectInput');\n\nexport type LuMultiSelection<T> = { mode: 'include'; values: T[] } | { mode: 'exclude'; values: T[] } | { mode: 'none' } | { mode: 'all' };\n\nexport type LuMultiSelectionMode = LuMultiSelection<unknown>['mode'];\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { ɵIsSelectedStrategy } from '@lucca-front/ng/core-select';\n\n@Pipe({\n\tname: 'luOptionsGroupContext',\n\tpure: true,\n})\nexport class LuOptionsGroupContextPipe<T> implements PipeTransform {\n\t#selectionStrategy = inject<ɵIsSelectedStrategy<T>>(ɵIsSelectedStrategy);\n\n\ttransform(groupOptions: T[], selectedOptions: T[], optionComparer: (option1: T, option2: T) => boolean): { notSelectedOptions: T[]; isGroupSelected: boolean } {\n\t\tconst notSelectedOptions = groupOptions.filter((o) => !selectedOptions.some((so) => optionComparer(so, o)));\n\n\t\treturn {\n\t\t\tnotSelectedOptions,\n\t\t\tisGroupSelected: this.#selectionStrategy.isGroupSelected(groupOptions, notSelectedOptions),\n\t\t};\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { afterNextRender, AfterViewInit, ChangeDetectionStrategy, Component, computed, ElementRef, forwardRef, inject, Injector, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { isNotNil, PortalDirective } from '@lucca-front/ng/core';\nimport {\n\tCoreSelectKeyManager,\n\tCoreSelectPanelInstance,\n\tLuIsOptionSelectedPipe,\n\tLuSelectPanelLayoutComponent,\n\tSELECT_ID,\n\tSELECT_PANEL_INSTANCE,\n\tTreeDisplayPipe,\n\tɵCoreSelectPanelElement,\n\tɵgetGroupTemplateLocation,\n\tɵinjectPointerNavigation,\n\tɵLuOptionComponent,\n\tɵLuOptionGroupPipe,\n} from '@lucca-front/ng/core-select';\nimport { ListboxComponent, ListboxState, OptionComponent as ListboxOptionComponent } from '@lucca-front/ng/listbox';\nimport { TreeBranchComponent } from '@lucca-front/ng/tree-select';\nimport { EMPTY, firstValueFrom } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { LuMultiSelectInputComponent } from '../input';\nimport { LuMultiSelectPanelRef } from '../input/panel.model';\nimport { MULTI_SELECT_INPUT } from '../select.model';\nimport { LuOptionsGroupContextPipe } from './option-group-context.pipe';\n\n@Component({\n\tselector: 'lu-select-panel',\n\ttemplateUrl: './panel.component.html',\n\tstyleUrl: './panel.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\tclass: 'selectPanel',\n\t\t'[class.is-pointerNavigation]': 'pointerNavigation()',\n\t},\n\timports: [\n\t\tLuSelectPanelLayoutComponent,\n\t\tFormsModule,\n\t\tLuIsOptionSelectedPipe,\n\t\tɵLuOptionComponent,\n\t\tɵLuOptionGroupPipe,\n\t\tNgTemplateOutlet,\n\t\tPortalDirective,\n\t\tLuOptionsGroupContextPipe,\n\t\tɵCoreSelectPanelElement,\n\t\tListboxComponent,\n\t\tListboxOptionComponent,\n\t\tTreeDisplayPipe,\n\t\tTreeBranchComponent,\n\t],\n\tproviders: [\n\t\tCoreSelectKeyManager,\n\t\t{\n\t\t\tprovide: SELECT_PANEL_INSTANCE,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectPanelComponent),\n\t\t},\n\t],\n})\nexport class LuMultiSelectPanelComponent<T> implements AfterViewInit, CoreSelectPanelInstance {\n\tprotected readonly selectInput = inject<LuMultiSelectInputComponent<T>>(MULTI_SELECT_INPUT);\n\treadonly panelRef = inject<LuMultiSelectPanelRef<T>>(LuMultiSelectPanelRef);\n\treadonly selectId = inject(SELECT_ID);\n\n\treadonly dataSourceOptions = this.selectInput.dataSourceOptions;\n\treadonly grouping = this.selectInput.groupingSignal;\n\ttreeGenerator = this.selectInput.treeGenerator;\n\treadonly loading = this.selectInput.loading;\n\tsearchable = this.selectInput.searchable;\n\treadonly optionComparer = this.selectInput.optionComparer;\n\treadonly optionKey = this.selectInput.optionKey;\n\tintl = this.selectInput.intl;\n\n\tselectedOptions: T[] = this.selectInput.value || [];\n\treadonly optionTpl = this.selectInput.optionTpl;\n\n\treadonly options = signal<ɵCoreSelectPanelElement<T>[]>([]);\n\treadonly pointerNavigation = ɵinjectPointerNavigation(inject<ElementRef<HTMLElement>>(ElementRef).nativeElement);\n\n\treadonly keyManager = inject<CoreSelectKeyManager<T>>(CoreSelectKeyManager);\n\treadonly #injector = inject(Injector);\n\n\treadonly someGroupOptionEnabled = computed(() => {\n\t\treturn (groupOptions: T[]) => {\n\t\t\tconst disabledOptionIds = this.options()\n\t\t\t\t.filter((o) => o.disabled)\n\t\t\t\t.map((o) => o.option())\n\t\t\t\t.filter(isNotNil)\n\t\t\t\t.map((option) => this.optionKey()(option));\n\t\t\treturn groupOptions.some((option) => !disabledOptionIds.includes(this.optionKey()(option)));\n\t\t};\n\t});\n\n\treadonly groupLoadingKeys = signal<Set<unknown>>(new Set());\n\n\treadonly hasGrouping = computed(() => !!this.grouping());\n\tpublic readonly clue = toSignal(this.selectInput.clue$.pipe(map((clue) => clue ?? '')), { initialValue: '' });\n\tpublic readonly shouldDisplayAddOption = this.selectInput.shouldDisplayAddOption;\n\n\treadonly groupTemplateLocation = ɵgetGroupTemplateLocation(this.hasGrouping, this.clue, this.dataSourceOptions, this.searchable);\n\n\t// Loading takes precedence over empty so the \"no result\" message never flashes during a fetch\n\treadonly listboxState = computed<ListboxState | null>(() => (this.loading() ? 'loading' : this.dataSourceOptions().length === 0 ? 'empty' : null));\n\n\treadonly listboxStatusMsg = computed(() => {\n\t\tif (this.loading()) {\n\t\t\treturn this.intl().loading;\n\t\t}\n\t\treturn this.clue().length ? this.intl().emptyResults : this.intl().emptyOptions;\n\t});\n\n\tonScroll(evt: Event): void {\n\t\tif (!(evt.target instanceof HTMLElement)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (evt.target.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.options()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.initKeyManager();\n\t\tthis.panelRef.useDefaultPosition();\n\t}\n\n\ttoggleOption(option: T): void {\n\t\tconst matchingOption = this.selectedOptions.find((o) => this.optionComparer()(o, option));\n\t\tthis.selectedOptions = matchingOption && option ? this.selectedOptions.filter((o) => o !== matchingOption) : [...this.selectedOptions, option];\n\t\tthis.panelRef.emitValue(this.selectedOptions);\n\t\tafterNextRender(() => this.panelRef.updatePosition(), { injector: this.#injector });\n\t}\n\n\ttoggleOptions(notSelectedOptions: T[], groupOptions: T[], groupKey?: unknown): void {\n\t\tconst dataSource = this.selectInput.dataSource();\n\t\tif (groupKey !== undefined && dataSource.getGroupOptions) {\n\t\t\tthis.groupLoadingKeys.update((keys) => new Set(keys).add(groupKey));\n\t\t\tvoid firstValueFrom(dataSource.getGroupOptions(groupKey))\n\t\t\t\t.then((allGroupOptions) => {\n\t\t\t\t\tthis.groupLoadingKeys.update((keys) => {\n\t\t\t\t\t\tconst s = new Set(keys);\n\t\t\t\t\t\ts.delete(groupKey);\n\t\t\t\t\t\treturn s;\n\t\t\t\t\t});\n\t\t\t\t\tconst notSelectedOptions = allGroupOptions.filter((o) => !this.selectedOptions.some((so) => this.optionComparer()(so, o)));\n\t\t\t\t\tthis.#applyGroupToggle(notSelectedOptions, allGroupOptions);\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.groupLoadingKeys.update((keys) => {\n\t\t\t\t\t\tconst s = new Set(keys);\n\t\t\t\t\t\ts.delete(groupKey);\n\t\t\t\t\t\treturn s;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tthis.#applyGroupToggle(notSelectedOptions, groupOptions);\n\t}\n\n\t#applyGroupToggle(notSelectedOptions: T[], groupOptions: T[]): void {\n\t\t// Filter out disabled options\n\t\tconst disabledOptionIds = this.options()\n\t\t\t.filter((o) => o.disabled)\n\t\t\t.map((o) => o.option())\n\t\t\t.filter(isNotNil)\n\t\t\t.map((option) => this.optionKey()(option));\n\t\tconst enabledNotSelectedOptions = notSelectedOptions.filter((o) => !disabledOptionIds.includes(this.optionKey()(o)));\n\t\tconst enabledGroupOptions = groupOptions.filter((o) => !disabledOptionIds.includes(this.optionKey()(o)));\n\n\t\tif (enabledNotSelectedOptions.length) {\n\t\t\t// If some options are not selected, select them all\n\t\t\tthis.selectedOptions = [...this.selectedOptions, ...enabledNotSelectedOptions];\n\t\t} else {\n\t\t\t// If all options are already selected, unselect them all\n\t\t\tthis.selectedOptions = this.selectedOptions.filter((o) => !enabledGroupOptions.some((so) => this.optionComparer()(so, o)));\n\t\t}\n\n\t\tthis.panelRef.emitValue(this.selectedOptions);\n\t\tafterNextRender(() => this.panelRef.updatePosition(), { injector: this.#injector });\n\t}\n\n\tprotected initKeyManager(): void {\n\t\tthis.keyManager.init({\n\t\t\tqueryList: this.options,\n\t\t\toptions: this.dataSourceOptions,\n\t\t\toptionComparer: this.optionComparer(),\n\t\t\tactiveOptionIdChanged$: this.panelRef.activeOptionIdChanged,\n\t\t\tclueChange$: this.selectInput.searchable ? this.selectInput.clueChange$ : EMPTY,\n\t\t});\n\n\t\tif (this.selectedOptions?.length) {\n\t\t\tconst firstSelectedOption = this.selectedOptions[0];\n\t\t\tif (firstSelectedOption !== undefined) {\n\t\t\t\tthis.keyManager.highlightOption(firstSelectedOption);\n\t\t\t}\n\t\t}\n\t}\n}\n","<lu-select-panel-layout\n\tclass=\"lu-option-picker-panel mod-multiple\"\n\tdata-testid=\"dialog-panel\"\n\t[loading]=\"loading()\"\n\t[contentTabIndex]=\"0\"\n\t(scrolled)=\"onScroll($event)\"\n>\n\t<lu-listbox multiple [tree]=\"!!treeGenerator\" [state]=\"listboxState()\" [statusMsg]=\"listboxStatusMsg()\">\n\t\t<!-- The header is projected inside the listbox because it can contain selectable elements\n\t\t(e.g. the select-all checkbox) that are referenced by aria-activedescendant -->\n\t\t<ng-container ngProjectAs=\"[listbox-header]\">\n\t\t\t@if (selectInput.panelHeaderTpl(); as tpl) {\n\t\t\t\t<div>\n\t\t\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t\t\t</div>\n\t\t\t}\n\t\t</ng-container>\n\t\t@if (grouping() && groupTemplateLocation() === \"group-header\") {\n\t\t\t@for (group of dataSourceOptions() | luOptionGroup: grouping().selector; track group.key; let groupIndex = $index) {\n\t\t\t\t<lu-listbox-option group [groupId]=\"selectId + '-group-' + group.key\" [elementId]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t<span #groupingTitleRef>\n\t\t\t\t\t\t<ng-container *luPortal=\"grouping().content; context: { $implicit: group }\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t@if (someGroupOptionEnabled()(group.options)) {\n\t\t\t\t\t\t@let groupCtx = group.options | luOptionsGroupContext: selectedOptions : optionComparer();\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tgroup-action\n\t\t\t\t\t\t\tclass=\"link\"\n\t\t\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t\t\t\t[elementId]=\"selectId + '-group-' + group.key + '-action'\"\n\t\t\t\t\t\t\t(selected)=\"toggleOptions(groupCtx.notSelectedOptions, group.options, group.key)\"\n\t\t\t\t\t\t\t[disabled]=\"groupLoadingKeys().has(group.key)\"\n\t\t\t\t\t\t\t(click)=\"toggleOptions(groupCtx.notSelectedOptions, group.options, group.key)\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t@if (groupLoadingKeys().has(group.key)) {\n\t\t\t\t\t\t\t\t<span class=\"loading\"></span>\n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t<span class=\"pr-u-mask\">{{ groupingTitleRef.innerText }} – </span\n\t\t\t\t\t\t\t\t>{{ groupCtx.isGroupSelected ? intl().unselectAll : intl().selectAll }}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t\t<div optgroup class=\"listboxOptionWrapper\">\n\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"optionsList\"\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: group.options, groupIndex: groupIndex }\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</lu-listbox-option>\n\t\t\t}\n\t\t}\n\t\t@if (!grouping() || groupTemplateLocation() !== \"group-header\") {\n\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: dataSourceOptions() }\" />\n\t\t}\n\t\t<ng-template #optionsList let-options let-groupIndex=\"groupIndex\">\n\t\t\t@if (treeGenerator) {\n\t\t\t\t@for (branch of options | luTreeDisplay: treeGenerator; let index = $index; track optionKey()(branch.node)) {\n\t\t\t\t\t<lu-tree-branch\n\t\t\t\t\t\t[branch]=\"branch\"\n\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t[selectedOptions]=\"selectedOptions\"\n\t\t\t\t\t\t[optionComparer]=\"optionComparer()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t(toggleOne)=\"toggleOption($event)\"\n\t\t\t\t\t\t(selectMany)=\"toggleOptions($event, [])\"\n\t\t\t\t\t\t(unselectMany)=\"toggleOptions([], $event)\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t} @else {\n\t\t\t\t@for (option of options; track optionKey()(option); let index = $index) {\n\t\t\t\t\t<lu-select-option\n\t\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t[grouping]=\"groupTemplateLocation() === 'option' ? grouping() : undefined\"\n\t\t\t\t\t\t[groupIndex]=\"groupIndex\"\n\t\t\t\t\t\t[groupTemplateLocation]=\"groupTemplateLocation()\"\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(selected)=\"toggleOption(option)\"\n\t\t\t\t\t\t(click)=\"toggleOption(option)\"\n\t\t\t\t\t\t[class.withAddOption]=\"shouldDisplayAddOption()\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t}\n\t\t</ng-template>\n\t</lu-listbox>\n\t@if (shouldDisplayAddOption()) {\n\t\t<lu-listbox-option\n\t\t\tadd\n\t\t\tclass=\"palette-product\"\n\t\t\tluCoreSelectPanelElement\n\t\t\t#addOptionElement=\"luCoreSelectPanelElement\"\n\t\t\telementId=\"picker-content-add\"\n\t\t\t[hovered]=\"addOptionElement.isHighlighted()\"\n\t\t\t(click)=\"selectInput.emitAddOption()\"\n\t\t\t(selected)=\"selectInput.emitAddOption()\"\n\t\t>\n\t\t\t<ng-container *luPortal=\"selectInput.addOptionLabel\" />\n\t\t</lu-listbox-option>\n\t}\n</lu-select-panel-layout>\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, Type, ViewContainerRef } from '@angular/core';\nimport { getPushPanelViewportMargin } from '@lucca-front/ng/core';\nimport { addAttributesOnCdkContainer, SELECT_ID, SELECT_LABEL_ID } from '@lucca-front/ng/core-select';\nimport { takeUntil } from 'rxjs';\nimport { LuMultiSelectPanelComponent } from '../panel';\nimport { MULTI_SELECT_INPUT } from '../select.model';\nimport { LuMultiSelectPanelRef } from './panel.model';\nimport { LuMultiSelectInputComponent } from './select-input.component';\n\nabstract class BaseMultiSelectPanelRef<T> extends LuMultiSelectPanelRef<T> {\n\tprotected readonly portalRef: ComponentPortal<LuMultiSelectPanelComponent<T>>;\n\tinstance: LuMultiSelectPanelComponent<T>;\n\n\tprotected panelRef: ComponentRef<LuMultiSelectPanelComponent<T>>;\n\n\tprotected constructor(parentInjector: Injector, selectInput: LuMultiSelectInputComponent<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_INPUT, useValue: selectInput },\n\t\t\t],\n\t\t\tparent: parentInjector,\n\t\t});\n\t\tthis.portalRef = new ComponentPortal<LuMultiSelectPanelComponent<T>>(LuMultiSelectPanelComponent, undefined, injector);\n\t}\n\n\toverride handleKeyManagerEvent(event: KeyboardEvent) {\n\t\tthis.instance.keyManager.onKeydown(event);\n\t}\n\n\temitValue(value: T[]): void {\n\t\tthis.valueChanged.emit(value);\n\t}\n\n\tselectCurrentlyHighlightedValue(): void {\n\t\tthis.instance.keyManager.activeItem?.selected.emit();\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\nclass MultiSelectPanelRef<T> extends BaseMultiSelectPanelRef<T> {\n\tchangeDetectorRef: ChangeDetectorRef;\n\n\tconstructor(\n\t\tprivate overlayRef: OverlayRef,\n\t\tparentInjector: Injector,\n\t\tselectInput: LuMultiSelectInputComponent<T>,\n\t\tprotected defaultPositionStrategy: PositionStrategy,\n\t) {\n\t\tsuper(parentInjector, selectInput);\n\t\tthis.panelRef = overlayRef.attach(this.portalRef);\n\t\tthis.instance = this.panelRef.instance;\n\t\tthis.changeDetectorRef = this.panelRef.changeDetectorRef;\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\tuseDefaultPosition(): void {\n\t\tthis.overlayRef.updatePositionStrategy(this.defaultPositionStrategy);\n\t}\n\n\tupdatePosition(): void {\n\t\tthis.overlayRef.updatePosition();\n\t}\n\n\toverride close(): void {\n\t\tsuper.close();\n\t\tthis.panelRef.destroy();\n\t\tthis.overlayRef.detach();\n\t}\n}\n\nclass MultiSelectPanelDOMHostRef<T> extends BaseMultiSelectPanelRef<T> {\n\toverride changeDetectorRef?: ChangeDetectorRef;\n\n\tconstructor(host: ViewContainerRef, parentInjector: Injector, selectInput: LuMultiSelectInputComponent<T>) {\n\t\tsuper(parentInjector, selectInput);\n\t\tconst panelComponent = this.portalRef.component as Type<LuMultiSelectPanelComponent<T>>;\n\n\t\tthis.panelRef = host.createComponent(panelComponent, {\n\t\t\tinjector: this.portalRef.injector ?? undefined,\n\t\t});\n\t\tthis.instance = this.panelRef.instance;\n\t}\n\n\toverride updatePosition() {\n\t\t// do nothing, this is not a panel so repositioning is handled by the input.\n\t}\n\n\toverride close(): void {\n\t\tthis.closed.emit();\n\t}\n\n\tuseDefaultPosition(): void {\n\t\t// do nothing, this is not a panel so repositioning is handled by the input.\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\tprivate selectLabelId = inject(SELECT_LABEL_ID);\n\tprivate selectId = inject(SELECT_ID);\n\n\tbuildPanelRef<T>(selectInput: LuMultiSelectInputComponent<T>, defaultOverlayConfigOverride: OverlayConfig = {}): LuMultiSelectPanelRef<T> {\n\t\tconst defaultOverlayConfig = this.buildDefaultOverlayConfig(defaultOverlayConfigOverride);\n\n\t\tconst overlayRef = this.overlay.create(defaultOverlayConfig);\n\n\t\toverlayRef.hostElement.style.transitionProperty = 'height';\n\t\toverlayRef.hostElement.style.transitionDuration = 'var(--commons-animations-durations-standard)';\n\n\t\taddAttributesOnCdkContainer(overlayRef, this.selectLabelId, this.selectId);\n\n\t\treturn new MultiSelectPanelRef(overlayRef, this.parentInjector, selectInput, defaultOverlayConfig.positionStrategy!);\n\t}\n\n\tbuildAndAttachPanelRef<T>(selectInput: LuMultiSelectInputComponent<T>, host: ViewContainerRef): LuMultiSelectPanelRef<T> {\n\t\treturn new MultiSelectPanelDOMHostRef(host, this.parentInjector, selectInput);\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.withGrowAfterOpen(true)\n\t\t\t.withLockedPosition(false)\n\t\t\t.withViewportMargin(getPushPanelViewportMargin(this.elementRef.nativeElement, 8))\n\t\t\t.withPositions([\n\t\t\t\tthis.buildPosition('bottom', 'right', config),\n\t\t\t\tthis.buildPosition('bottom', 'left', config),\n\t\t\t\tthis.buildPosition('top', 'right', config),\n\t\t\t\tthis.buildPosition('top', 'left', config),\n\t\t\t]);\n\t\toverlayConfig.scrollStrategy = this.scrollStrategies.reposition();\n\t\toverlayConfig.minWidth = this.elementRef.nativeElement.clientWidth;\n\t\toverlayConfig.maxWidth = '100vw';\n\n\t\treturn overlayConfig;\n\t}\n\n\tprotected buildPosition(\n\t\tyDirection: 'top' | 'bottom',\n\t\txDirection: 'left' | 'right',\n\t\tconfig: {\n\t\t\toffsetX?: number;\n\t\t\toffsetY?: number;\n\t\t\toverlapInput: boolean;\n\t\t},\n\t): ConnectedPosition {\n\t\tconst originX = xDirection === 'right' ? 'start' : 'end';\n\t\tconst overlayX = originX;\n\n\t\tconst oppositeYDirection = yDirection === 'top' ? 'bottom' : 'top';\n\t\tconst { originY, overlayY } = config.overlapInput\n\t\t\t? ({\n\t\t\t\t\toriginY: oppositeYDirection,\n\t\t\t\t\toverlayY: oppositeYDirection,\n\t\t\t\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 { AsyncPipe, CommonModule } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tforwardRef,\n\tinject,\n\tinput,\n\tLOCALE_ID,\n\tmodel,\n\tOnDestroy,\n\tOnInit,\n\tSignal,\n\tsignal,\n\tTemplateRef,\n\tType,\n\tviewChild,\n\tViewContainerRef,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ClearComponent } from '@lucca-front/ng/clear';\nimport { getIntlPluralLabel, intlInputOptions, LOCALE_PLURAL_RULES, luBooleanAttribute, luNumberAttribute, LuPluralForms } from '@lucca-front/ng/core';\nimport { ALuSelectInputComponent, LU_CORE_SELECT_TRANSLATIONS, LuOptionContext, provideLuSelectLabelsAndIds, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { FILTER_PILL_INPUT_COMPONENT, FilterPillDisplayerDirective, FilterPillLabelDirective } from '@lucca-front/ng/filter-pills';\nimport { ɵPresentationDisplayDefaultDirective } from '@lucca-front/ng/form-field';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { IconComponent } from '@lucca/prisme/icon';\nimport { Subject } from 'rxjs';\nimport { LuMultiSelectDefaultDisplayerComponent } from '../displayer';\nimport { LU_MULTI_SELECT_TRANSLATIONS } from '../select.translate';\nimport { listSeparators } from '../select.utils';\nimport { LuMultiSelectPanelRefFactory } from './panel-ref.factory';\nimport { LuMultiSelectPanelRef } from './panel.model';\n\n@Component({\n\tselector: 'lu-multi-select',\n\ttemplateUrl: './select-input.component.html',\n\tstyleUrl: './select-input.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [\n\t\tAsyncPipe,\n\t\tLuTooltipModule,\n\t\tɵLuOptionOutletDirective,\n\t\tFilterPillDisplayerDirective,\n\t\tFilterPillLabelDirective,\n\t\tClearComponent,\n\t\tCommonModule,\n\t\tɵPresentationDisplayDefaultDirective,\n\t\tIconComponent,\n\t],\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\tprovideLuSelectLabelsAndIds(),\n\t\tLuMultiSelectPanelRefFactory,\n\t\t{\n\t\t\tprovide: FILTER_PILL_INPUT_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectInputComponent),\n\t\t},\n\t],\n\thost: {\n\t\tclass: 'multiSelect',\n\t\t'[class.mod-filterPill]': 'filterPillClass',\n\t\t'(keydown.control.enter)': 'selectParentOnly()',\n\t\t'(keydown.shift.enter)': 'selectChildrenOnly()',\n\t},\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class LuMultiSelectInputComponent<T> extends ALuSelectInputComponent<T, T[]> implements ControlValueAccessor, OnDestroy, OnInit {\n\treadonly intl = input(...intlInputOptions(LU_CORE_SELECT_TRANSLATIONS, LU_MULTI_SELECT_TRANSLATIONS));\n\n\tshowColon: false;\n\n\treadonly valuesTpl = model<TemplateRef<LuOptionContext<T[]>> | Type<unknown>>(LuMultiSelectDefaultDisplayerComponent);\n\n\treadonly maxValuesShown = input(500, { transform: luNumberAttribute });\n\n\treadonly keepSearchAfterSelection = input(false, { transform: luBooleanAttribute });\n\n\tprivate readonly pluralRules = inject(LOCALE_PLURAL_RULES);\n\n\t/**\n\t * @deprecated use filterPillLabelPluralFn\n\t */\n\treadonly filterPillLabelPlural = input<string>();\n\treadonly filterPillLabelPluralFn = input<(count: number) => string | LuPluralForms>();\n\n\treadonly filterPillLabelPluralValue = computed(() => {\n\t\tconst label = this.filterPillLabelPluralFn();\n\t\tconst count = this.valueLength();\n\t\tif (label) {\n\t\t\tconst result = label(count);\n\t\t\treturn typeof result === 'string' ? result : getIntlPluralLabel(this.pluralRules, result, count);\n\t\t}\n\t\treturn `${count} ${this.filterPillLabelPlural()}`;\n\t});\n\n\toverride readonly selectParent$ = new Subject<void>();\n\toverride readonly selectChildren$ = new Subject<void>();\n\n\tpublic get filterPillClass() {\n\t\treturn this.filterPillMode;\n\t}\n\n\treadonly hideCombobox = computed(() => (this.valueSignal()?.length ?? 0) > 1);\n\n\treadonly filterPillPanelAnchorRef = viewChild('filterPillPanelAnchor', { read: ViewContainerRef });\n\n\t// eslint-disable-next-line @angular-eslint/prefer-signals\n\toverride isFilterPillEmpty = computed(() => {\n\t\tconst valueSignal = this.valueSignal();\n\t\treturn !valueSignal || valueSignal.length === 0;\n\t});\n\n\t// eslint-disable-next-line @angular-eslint/prefer-signals\n\tpublic valueLength = computed(() => this.valueSignal()?.length ?? 0);\n\t// eslint-disable-next-line @angular-eslint/prefer-signals\n\tpublic useSingleOptionDisplayer: Signal<boolean> = signal(true);\n\tpublic singleOptionForDisplay: Signal<T | undefined> = computed(() => this.valueSignal()?.[0]);\n\toverride _value: T[] = [];\n\n\t#listFormat = new Intl.ListFormat(inject(LOCALE_ID));\n\n\tprotected readonly presentationSeparators = computed(() => listSeparators(this.#listFormat, this.valueSignal()?.length ?? 0));\n\n\tpublic override get panelRef(): LuMultiSelectPanelRef<T> | undefined {\n\t\treturn this._panelRef;\n\t}\n\n\tprotected override _panelRef?: LuMultiSelectPanelRef<T>;\n\n\tprotected panelRefFactory = inject(LuMultiSelectPanelRefFactory);\n\n\t/**\n\t * This is used to tell the displayer to focus on the input element\n\t * keepClue is used to avoid triggering an update which would open the panel,\n\t * mainly for when we want to focus without opening the panel\n\t */\n\tpublic readonly focusInput$ = new Subject<void | { keepClue: boolean }>();\n\n\tpublic readonly emptyClue$ = new Subject<void>();\n\n\tpublic selectParentOnly() {\n\t\tthis.selectParent$.next();\n\t}\n\n\tpublic selectChildrenOnly() {\n\t\tthis.selectChildren$.next();\n\t}\n\n\tpublic override focusInput(): void {\n\t\tthis.focusInput$.next({ keepClue: true });\n\t}\n\n\tpublic override emptyClue(): void {\n\t\tthis.emptyClue$.next();\n\t}\n\n\tpublic override writeValue(value: T[]): void {\n\t\tsuper.writeValue(value);\n\t\tthis.panelRef?.updateSelectedOptions(value);\n\t}\n\n\tpublic override updateValue(value: T[], skipFocus = false): void {\n\t\tsuper.updateValue(value, skipFocus, this.keepSearchAfterSelection());\n\t\tif (!skipFocus) {\n\t\t\tthis.focusInput();\n\t\t}\n\t}\n\n\tupdatePosition() {\n\t\tthis.updatePositionFn?.();\n\t}\n\n\tprotected override buildPanelRef(): LuMultiSelectPanelRef<T> {\n\t\treturn this.panelRefFactory.buildPanelRef(this, this.overlayConfig());\n\t}\n\n\tprotected override bindInputToPanelRefEvents(): void {\n\t\tif (!this.panelRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tsuper.bindInputToPanelRefEvents();\n\t}\n\n\toverride enableFilterPillMode() {\n\t\tconst host = this.filterPillPanelAnchorRef();\n\t\tif (host) {\n\t\t\tthis._panelRef = this.panelRefFactory.buildAndAttachPanelRef(this, host);\n\t\t}\n\t\tsuper.enableFilterPillMode();\n\t}\n\n\thasValue(): boolean {\n\t\treturn !!this.value?.length;\n\t}\n\n\toverride clearValue(event?: Event): void {\n\t\tevent?.stopPropagation();\n\t\tthis.onChange?.([]);\n\t\tthis.value = [];\n\t\tthis.focusInput$.next({ keepClue: true });\n\t\tthis.panelRef?.updateSelectedOptions([]);\n\t}\n\n\toverride ngOnDestroy() {\n\t\tsuper.ngOnDestroy();\n\t\tthis.focusInput$.complete();\n\t}\n}\n","<ng-container *luOptionOutlet=\"valuesTpl(); value: value || []\" />\n\n@if (!filterPillMode) {\n\t@if (hasValue() && clearable() && (disabled$ | async) === false) {\n\t\t<lu-clear class=\"multipleSelect-clear\" (onClear)=\"clearValue($event)\">{{ intl().clear }}</lu-clear>\n\t}\n\n\t<lu-icon icon=\"arrowChevronBottom\" class=\"multipleSelect-arrow\" />\n\t<lu-icon icon=\"searchMagnifyingGlass\" class=\"multipleSelect-searchIcon\" />\n}\n\n<ng-container #filterPillPanelAnchor />\n<ng-container *luFilterPillDisplayer>\n\t<div class=\"multipleSelect-displayer-filter\">\n\t\t@if (useSingleOptionDisplayer() && valueLength() === 1 && singleOptionForDisplay() !== undefined) {\n\t\t\t<div class=\"multipleSelect-pill-displayer-chip\">\n\t\t\t\t<ng-container *luOptionOutlet=\"displayerTpl(); value: singleOptionForDisplay()\" />\n\t\t\t</div>\n\t\t}\n\t</div>\n</ng-container>\n<ng-container *luFilterPillLabel=\"let label = label; let colon = colon\">\n\t@let minCount = useSingleOptionDisplayer() ? 1 : 0;\n\t@if (valueLength() > minCount) {\n\t\t<span class=\"multipleSelect-pill-displayer-label\">{{ filterPillLabelPluralValue() }}</span>\n\t} @else {\n\t\t{{ label }}{{ valueLength() === 1 ? colon : \"\" }}\n\t}\n</ng-container>\n@if (!ignorePresentation()) {\n\t<ng-container *luPresentationDisplayDefault>\n\t\t@for (v of value; track $index) {\n\t\t\t<ng-container *luOptionOutlet=\"displayerTpl(); value: v\" />\n\n\t\t\t@let separator = presentationSeparators()[$index];\n\n\t\t\t@if (separator) {\n\t\t\t\t<ng-container>{{ separator }}</ng-container>\n\t\t\t}\n\t\t} @empty {\n\t\t\t<span aria-hidden=\"true\" data-content-before=\"–\"></span>\n\t\t}\n\t</ng-container>\n}\n","export const Translations = {\n\t'nl-BE': {\n\t\totherResult: 'ander resultaat',\n\t\totherResults: 'andere resultaten',\n\t\tshowResultsDetails: 'Zie details',\n\t\tremoveOption: 'Optie verwijderen',\n\t},\n\tnl: {\n\t\totherResult: 'ander resultaat',\n\t\totherResults: 'andere resultaten',\n\t\tshowResultsDetails: 'Zie details',\n\t\tremoveOption: 'Optie verwijderen',\n\t},\n\tit: {\n\t\totherResult: 'altro risultato',\n\t\totherResults: 'altri risultati',\n\t\tshowResultsDetails: 'Vedere il dettaglio',\n\t\tremoveOption: 'Cancellare l’opzione',\n\t},\n\tfr: {\n\t\totherResult: 'autre résultat',\n\t\totherResults: 'autres résultats',\n\t\tshowResultsDetails: 'Voir le détail',\n\t\tremoveOption: \"Supprimer l'option\",\n\t},\n\tpt: {\n\t\totherResult: 'outro resultado',\n\t\totherResults: 'outros resultados',\n\t\tshowResultsDetails: 'Mostrar detalhes',\n\t\tremoveOption: 'Remove option',\n\t},\n\tes: {\n\t\totherResult: 'otro resultado',\n\t\totherResults: 'otros resultados',\n\t\tshowResultsDetails: 'Ver los detalles',\n\t\tremoveOption: 'Eliminar la opción',\n\t},\n\tde: {\n\t\totherResult: 'anderes Ergebnis',\n\t\totherResults: 'andere Ergebnisse',\n\t\tshowResultsDetails: 'Details anzeigen ',\n\t\tremoveOption: 'Option löschen',\n\t},\n\ten: {\n\t\totherResult: 'other result',\n\t\totherResults: 'other results',\n\t\tshowResultsDetails: 'Show details',\n\t\tremoveOption: 'Remove option',\n\t},\n\tpl: {\n\t\totherResult: 'inny wynik',\n\t\totherResults: 'inne wyniki',\n\t\tshowResultsDetails: 'Zobacz szczegóły',\n\t\tremoveOption: 'Usuń opcję',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS = new InjectionToken('LuMultiSelectDisplayerTranslations', {\n\tfactory: () => luMultiSelectDisplayerTranslations,\n});\n\nexport interface ILuMultiSelectDisplayerLabel {\n\totherResult: string;\n\totherResults: string;\n\tshowResultsDetails: string;\n\tremoveOption: string;\n}\n\nexport const luMultiSelectDisplayerTranslations: LuTranslation<ILuMultiSelectDisplayerLabel> = Translations;\n","import { InjectionToken, Signal } from '@angular/core';\nimport { LuMultiSelectionMode } from '../../select.model';\nimport { ILuMultiSelectLabel } from '../../select.translate';\n\nexport interface LuMultiSelectWithSelectAllContext {\n\tsetSelectAll(value: boolean): void;\n\tmode: Signal<LuMultiSelectionMode>;\n\tvalues: Signal<unknown[]>;\n\tdisplayerLabelValue: Signal<string>;\n\ttotalCount: Signal<number>;\n\tdisplayerCount: Signal<number | null>;\n\tintl: Signal<ILuMultiSelectLabel>;\n}\n\nexport const MULTI_SELECT_WITH_SELECT_ALL_CONTEXT = new InjectionToken<LuMultiSelectWithSelectAllContext>('LuMultiSelectWithSelectAllContext');\n","import { afterNextRender, computed, DestroyRef, Directive, ElementRef, inject, Injector, OnInit } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { isNotNil, ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from '@lucca-front/ng/core-select';\nimport { InputDirective } from '@lucca-front/ng/form-field';\nimport { LuMultiSelectInputComponent } from '../input';\nimport { MULTI_SELECT_WITH_SELECT_ALL_CONTEXT } from '../input/select-all/select-all.models';\nimport { LuMultiSelectContentDisplayerComponent } from './content-displayer/content-displayer.component';\n\n@Directive({\n\tselector: '[luMultiSelectDisplayerInput]',\n\thost: {\n\t\t'aria-haspopup': 'listbox',\n\t\trole: 'combobox',\n\t\tclass: 'multipleSelect-displayer-search',\n\t\ttype: 'text',\n\t\t'[attr.aria-expanded]': 'panelOpen',\n\t\t'[attr.aria-activedescendant]': 'activeDescendant',\n\t\t'[attr.aria-controls]': 'controls',\n\t\t'[attr.disabled]': 'disabled',\n\t\t'[attr.placeholder]': 'placeholder',\n\t\t'[attr.readonly]': 'readonly',\n\t\t'(input)': 'onInput()',\n\t},\n\thostDirectives: [InputDirective],\n})\nexport class LuMultiSelectDisplayerInputDirective<T> implements OnInit {\n\treadonly select = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\treadonly selectAllContext = inject(MULTI_SELECT_WITH_SELECT_ALL_CONTEXT, { optional: true });\n\treadonly contentDisplayer = inject(LuMultiSelectContentDisplayerComponent, { optional: true });\n\n\treadonly context = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\treadonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n\treadonly destroyRef = inject(DestroyRef);\n\n\treadonly #injector = inject(Injector);\n\n\tget panelOpen() {\n\t\treturn this.#panelOpen();\n\t}\n\n\tget activeDescendant() {\n\t\treturn this.#activeDescendant();\n\t}\n\n\tget controls() {\n\t\treturn this.select.ariaControls;\n\t}\n\n\tget disabled() {\n\t\treturn this.#disabled() || null;\n\t}\n\n\tget placeholder() {\n\t\treturn this.#placeholder();\n\t}\n\n\tget readonly() {\n\t\treturn this.select.searchable ? null : true;\n\t}\n\n\tonInput() {\n\t\tthis.select.clueChanged(this.elementRef.nativeElement.value);\n\t}\n\n\treadonly #panelOpen = toSignal(this.select.isPanelOpen$);\n\treadonly #activeDescendant = toSignal(this.select.activeDescendant$);\n\treadonly #disabled = toSignal(this.select.disabled$);\n\treadonly #options = toSignal(this.context.option$, { initialValue: [] as T[] });\n\treadonly #placeholder = computed(() => {\n\t\tconst options = this.#options();\n\t\tif ((options || []).length > 0 || this.selectAllContext?.mode() === 'all') {\n\t\t\treturn '';\n\t\t}\n\t\tconst placeholder = this.select.placeholder();\n\t\treturn (isNotNil(placeholder) && placeholder.length > 0) || this.contentDisplayer ? placeholder : this.select.intl().placeholder;\n\t});\n\n\tconstructor() {\n\t\tif (this.selectAllContext) {\n\t\t\tɵeffectWithDeps([this.selectAllContext.mode], (mode) => {\n\t\t\t\tif (mode === 'all') {\n\t\t\t\t\tthis.#clearText();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tngOnInit(): void {\n\t\t// When the displayer swaps variants while the panel is open (e.g. the content-displayer\n\t\t// gives way to the default displayer on the first selection), the previously focused input\n\t\t// is destroyed. focusInput$ is a plain Subject, so its emission fires before this new input\n\t\t// has subscribed and is lost — focus falls back to <body> and keyboard navigation dies.\n\t\t// A freshly mounted displayer input owns focus whenever the panel is open.\n\t\tif (this.select.isPanelOpen) {\n\t\t\tafterNextRender(() => this.elementRef.nativeElement.focus(), { injector: this.#injector });\n\t\t}\n\n\t\tthis.select.focusInput$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data?: { keepClue: boolean }) => {\n\t\t\tif (!data?.keepClue) {\n\t\t\t\tthis.#clearText();\n\t\t\t}\n\t\t\tthis.elementRef.nativeElement.focus();\n\t\t});\n\t\tthis.select.emptyClue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tthis.elementRef.nativeElement.value = '';\n\t\t});\n\t}\n\n\t#clearText() {\n\t\tif (this.elementRef.nativeElement.value) {\n\t\t\tthis.elementRef.nativeElement.value = '';\n\t\t\tthis.select.clueChanged('');\n\t\t}\n\t}\n}\n","import { afterNextRender, ChangeDetectionStrategy, Component, computed, ElementRef, inject, Injector, input, viewChild } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ChipComponent } from '@lucca-front/ng/chip';\nimport { intlInputOptions } from '@lucca-front/ng/core';\nimport { ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS } from '../../displayer/default-displayer.translate';\nimport { LuMultiSelectDisplayerInputDirective } from '../../displayer/displayer-input.directive';\nimport { LuMultiSelectInputComponent } from '../select-input.component';\nimport { MULTI_SELECT_WITH_SELECT_ALL_CONTEXT } from './select-all.models';\n\n@Component({\n\tselector: 'lu-multi-select-all-displayer',\n\timports: [LuMultiSelectDisplayerInputDirective, ɵLuOptionOutletDirective, ChipComponent],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer mod-filter\" [class.is-filled]=\"isFilled()\">\n\t\t\t<input type=\"text\" luMultiSelectDisplayerInput />\n\n\t\t\t@if (displayerCount() !== null) {\n\t\t\t\t<div class=\"multipleSelect-displayer-filter\">\n\t\t\t\t\t@if (displayedSingleOption(); as singleOption) {\n\t\t\t\t\t\t<lu-chip withEllipsis (kill)=\"unselectOption(singleOption, $event)\" class=\"multipleSelect-displayer-chip\" [unkillable]=\"disabled() ?? false\">\n\t\t\t\t\t\t\t<ng-template *luOptionOutlet=\"select.displayerTpl(); value: singleOption\" />\n\t\t\t\t\t\t</lu-chip>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<lu-chip class=\"multipleSelect-displayer-chip\" unkillable>{{ displayerLabelValue() }}</lu-chip>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tinline-size: 100%;\n\t\t}\n\t`,\n})\nexport class LuMultiSelectAllDisplayerComponent<TValue> {\n\treadonly selectAllContext = inject(MULTI_SELECT_WITH_SELECT_ALL_CONTEXT);\n\treadonly select = inject<LuMultiSelectInputComponent<TValue>>(LuMultiSelectInputComponent);\n\n\treadonly isFilled = computed(() => this.selectAllContext.mode() !== 'none');\n\treadonly isIncludeMode = computed(() => this.selectAllContext.mode() === 'include');\n\treadonly displayerLabelValue = this.selectAllContext.displayerLabelValue;\n\treadonly displayerCount = this.selectAllContext.displayerCount;\n\n\treadonly displayedSingleOption = this.select.singleOptionForDisplay;\n\n\treadonly intl = input(...intlInputOptions(LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS));\n\treadonly disabled = toSignal(this.select.disabled$);\n\n\treadonly inputElementRef = viewChild.required<LuMultiSelectDisplayerInputDirective<TValue>, ElementRef<HTMLInputElement>>(LuMultiSelectDisplayerInputDirective, { read: ElementRef });\n\treadonly #injector = inject(Injector);\n\n\tunselectOption(option: TValue, $event: Event): void {\n\t\t$event.stopPropagation();\n\t\t$event.preventDefault();\n\t\tthis.select.updateValue(this.isIncludeMode() ? (this.select.value?.filter((o) => o !== option) ?? []) : [...(this.select.value ?? []), option], true);\n\t\tafterNextRender(\n\t\t\t() => {\n\t\t\t\tthis.select.panelRef?.updatePosition();\n\t\t\t\tthis.inputElementRef().nativeElement.focus();\n\t\t\t},\n\t\t\t{ injector: this.#injector },\n\t\t);\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, Injector } from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ɵCoreSelectPanelElement, ɵscrollIntoViewOnceReady } from '@lucca-front/ng/core-select';\nimport { FormFieldComponent } from '@lucca-front/ng/form-field';\nimport { CheckboxInputComponent } from '@lucca-front/ng/forms';\nimport { MULTI_SELECT_WITH_SELECT_ALL_CONTEXT } from './select-all.models';\n\n@Component({\n\tselector: 'lu-multi-select-all-header',\n\timports: [FormsModule, CheckboxInputComponent, FormFieldComponent],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [ɵCoreSelectPanelElement],\n\tstyleUrl: './multi-select-all-header.component.scss',\n\ttemplate: `\n\t\t<div class=\"multiSelectAllDisplayer\" role=\"option\">\n\t\t\t<lu-form-field [label]=\"intl().selectAll\">\n\t\t\t\t<lu-checkbox-input\n\t\t\t\t\tclass=\"multiSelectAllDisplayer-checkbox\"\n\t\t\t\t\t[ngModel]=\"isSelected()\"\n\t\t\t\t\t(ngModelChange)=\"selectAllContext.setSelectAll($event)\"\n\t\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t\t\t[mixed]=\"mixed()\"\n\t\t\t\t/>\n\t\t\t</lu-form-field>\n\t\t</div>\n\t`,\n})\nexport class LuMultiSelectAllHeaderComponent {\n\treadonly selectAllContext = inject(MULTI_SELECT_WITH_SELECT_ALL_CONTEXT);\n\treadonly intl = this.selectAllContext.intl;\n\treadonly mixed = computed(() => this.selectAllContext.mode() === 'exclude' || this.selectAllContext.mode() === 'include');\n\treadonly isSelected = computed(() => this.selectAllContext.mode() === 'all' || this.mixed());\n\treadonly #selectableItem = inject(ɵCoreSelectPanelElement);\n\treadonly #elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\treadonly #injector = inject(Injector);\n\n\tconstructor() {\n\t\tthis.#selectableItem.id.set(`multi-select-select-all`);\n\t\teffect((onCleanup) => {\n\t\t\tif (this.#selectableItem.isHighlighted()) {\n\t\t\t\t// Wait for the panel layout to settle (opening animation) before scrolling,\n\t\t\t\t// otherwise the browser computes a bogus scroll position.\n\t\t\t\tonCleanup(ɵscrollIntoViewOnceReady(this.#elementRef.nativeElement, this.#injector));\n\t\t\t}\n\t\t\tif (this.isSelected()) {\n\t\t\t\tthis.#selectableItem.isSelected.set(true);\n\t\t\t}\n\t\t});\n\t\toutputToObservable(this.#selectableItem.selected)\n\t\t\t.pipe(takeUntilDestroyed())\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.selectAllContext.setSelectAll(!this.isSelected());\n\t\t\t});\n\t}\n}\n","import { computed, Directive, effect, forwardRef, inject, input, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { getIntlPluralLabel, isNil, LOCALE_PLURAL_RULES, LuPluralForms } from '@lucca-front/ng/core';\nimport { CORE_SELECT_API_TOTAL_COUNT_PROVIDER, ɵIsSelectedStrategy } from '@lucca-front/ng/core-select';\nimport { LuOptionComparer } from '@lucca-front/ng/option';\nimport { LuMultiSelection, LuMultiSelectionMode } from '../../select.model';\nimport { LuMultiSelectInputComponent } from '../select-input.component';\nimport { LuMultiSelectAllDisplayerComponent } from './multi-select-all-displayer.component';\nimport { LuMultiSelectAllHeaderComponent } from './multi-select-all-header.component';\nimport { LuMultiSelectWithSelectAllContext, MULTI_SELECT_WITH_SELECT_ALL_CONTEXT } from './select-all.models';\n\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-multi-select[withSelectAll]',\n\tproviders: [\n\t\t{\n\t\t\tprovide: ɵIsSelectedStrategy,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectWithSelectAllDirective),\n\t\t},\n\t\t{\n\t\t\tprovide: MULTI_SELECT_WITH_SELECT_ALL_CONTEXT,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectWithSelectAllDirective),\n\t\t},\n\t],\n})\nexport class LuMultiSelectWithSelectAllDirective<TValue> extends ɵIsSelectedStrategy<TValue> implements LuMultiSelectWithSelectAllContext {\n\treadonly select = inject<LuMultiSelectInputComponent<TValue>>(LuMultiSelectInputComponent);\n\treadonly intl = this.select.intl;\n\n\tprivate readonly pluralRules = inject(LOCALE_PLURAL_RULES);\n\n\t/**\n\t * @deprecated use withSelectAllDisplayerLabelFn\n\t */\n\treadonly displayerLabel = input<string>(undefined, { alias: 'withSelectAllDisplayerLabel' });\n\treadonly displayerLabelFn = input<(count: number) => string | LuPluralForms>(undefined, { alias: 'withSelectAllDisplayerLabelFn' });\n\n\treadonly displayerLabelValue = computed(() => {\n\t\tconst label = this.displayerLabelFn();\n\t\tconst count = this.displayerCount();\n\t\tif (label) {\n\t\t\tconst result = label(count);\n\t\t\treturn typeof result === 'string' ? result : getIntlPluralLabel(this.pluralRules, result, count ?? 0);\n\t\t}\n\t\treturn `${count} ${this.displayerLabel()}`;\n\t});\n\n\treadonly #mode = signal<LuMultiSelectionMode>('none');\n\treadonly #values = signal<TValue[]>([]);\n\n\treadonly mode = this.#mode.asReadonly();\n\treadonly values = this.#values.asReadonly();\n\treadonly totalCount = toSignal(inject(CORE_SELECT_API_TOTAL_COUNT_PROVIDER).totalCount$, { initialValue: 0 });\n\treadonly clueChange = toSignal(this.select.clueChange$);\n\treadonly #options = computed<readonly TValue[]>(() => this.select.options() ?? []);\n\n\treadonly singleRemainingOption = computed<TValue | undefined>(() => {\n\t\tconst options = this.#options();\n\n\t\tconst excludedValues = this.#values();\n\n\t\tif (this.#mode() !== 'exclude' || options.length !== this.totalCount() || options.length - excludedValues.length !== 1) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn options.find((option) => !excludedValues.some((excluded) => this.select.optionComparer()(excluded, option)));\n\t});\n\n\t// only show panel header when no clue && values not empty\n\treadonly #showPanelHeader = computed(() => isNil(this.clueChange()) || (this.clueChange()?.length === 0 && this.totalCount() !== 0));\n\treadonly #hasValue = computed(() => this.mode() !== 'none');\n\n\treadonly #valuesCount = computed(() => this.values().length);\n\treadonly displayerCount = computed(() => {\n\t\tswitch (this.mode()) {\n\t\t\tcase 'all':\n\t\t\t\treturn this.totalCount();\n\t\t\tcase 'include':\n\t\t\t\treturn this.#valuesCount();\n\t\t\tcase 'exclude':\n\t\t\t\treturn this.totalCount() - this.#valuesCount();\n\t\t\tcase 'none':\n\t\t\t\treturn null;\n\t\t}\n\t});\n\n\treadonly #selectAllValue = computed<LuMultiSelection<TValue>>(() => {\n\t\tconst mode = this.#mode();\n\t\treturn mode === 'all' || mode === 'none' ? { mode } : { mode, values: this.#values() };\n\t});\n\n\t// Keep the original registerOnChange / writeValue / clearValye methods\n\treadonly #selectRegisterOnChange = this.select.registerOnChange.bind(this.select) as LuMultiSelectInputComponent<TValue>['registerOnChange'];\n\treadonly #selectWriteValue = this.select.writeValue.bind(this.select) as LuMultiSelectInputComponent<TValue>['writeValue'];\n\treadonly #selectClearValue = this.select.clearValue.bind(this.select) as LuMultiSelectInputComponent<TValue>['clearValue'];\n\n\t#onChange?: (values: LuMultiSelection<TValue>) => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\teffect(() => {\n\t\t\tif (this.#showPanelHeader()) {\n\t\t\t\tthis.select.panelHeaderTpl.set(LuMultiSelectAllHeaderComponent);\n\t\t\t} else {\n\t\t\t\tthis.select.panelHeaderTpl.set(undefined);\n\t\t\t}\n\t\t});\n\n\t\t(this.select as { registerOnChange: (fn: (value: TValue[] | LuMultiSelection<TValue>) => void) => void }).registerOnChange = (fn) => this.registerOnChange(fn);\n\t\tthis.select.writeValue = (value) => this.writeValue(value);\n\t\tthis.select.clearValue = ($event) => this.clearValue($event);\n\n\t\tthis.select.panelHeaderTpl.set(LuMultiSelectAllHeaderComponent);\n\t\tthis.select.valuesTpl.set(LuMultiSelectAllDisplayerComponent);\n\t\tthis.select.hasValue = () => this.#hasValue();\n\t\tthis.select.isFilterPillEmpty = computed(() => !this.#hasValue());\n\t\tthis.select.useSingleOptionDisplayer = computed(() => this.#mode() === 'include' || this.singleRemainingOption() !== undefined);\n\t\tthis.select.singleOptionForDisplay = computed(() => (this.#mode() === 'include' && this.#valuesCount() === 1 ? this.select.valueSignal()?.[0] : this.singleRemainingOption()));\n\t\tthis.select.valueLength = computed(() => this.displayerCount() ?? 0);\n\t}\n\n\tsetSelectAll(selectAll: boolean): void {\n\t\tthis.#selectWriteValue([]);\n\n\t\tif (this.#values().length) {\n\t\t\tthis.#values.set([]);\n\t\t}\n\n\t\tif (selectAll) {\n\t\t\tthis.select.focusInput$.next({ keepClue: true });\n\t\t}\n\n\t\tthis.#mode.set(selectAll ? 'all' : 'none');\n\t\tthis.#onChange?.(this.#selectAllValue());\n\t}\n\n\toverride isSelected(option: TValue, selectedOptions: TValue[], optionComparer: LuOptionComparer<TValue>): boolean {\n\t\tswitch (this.#mode()) {\n\t\t\tcase 'all':\n\t\t\t\treturn true;\n\t\t\tcase 'include':\n\t\t\t\treturn selectedOptions.some((o) => optionComparer(o, option));\n\t\t\tcase 'exclude':\n\t\t\t\treturn !selectedOptions.some((o) => optionComparer(o, option));\n\t\t\tcase 'none':\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\toverride isGroupSelected(_options: TValue[], notSelectedOptions: TValue[]): boolean {\n\t\tswitch (this.#mode()) {\n\t\t\tcase 'all':\n\t\t\t\treturn true;\n\t\t\tcase 'include':\n\t\t\t\treturn notSelectedOptions.length === 0;\n\t\t\tcase 'exclude':\n\t\t\t\treturn notSelectedOptions.length > 0;\n\t\t\tcase 'none':\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tregisterOnChange(fn: (value: TValue[] | LuMultiSelection<TValue>) => void): void {\n\t\tthis.#onChange = fn;\n\n\t\tthis.#selectRegisterOnChange((values: TValue[]) => {\n\t\t\tthis.#values.set(values);\n\t\t\tconst oldMode = this.#mode();\n\t\t\tthis.#mode.set(this.#getNextMode(oldMode, values));\n\t\t\tthis.#onChange?.(this.#selectAllValue());\n\n\t\t\t// When all values are selected/unselected one by one, we should reset internal select value to avoid weird behavior when selecting/unselecting after that\n\t\t\tif (values.length && (this.#mode() === 'all' || this.#mode() === 'none')) {\n\t\t\t\tthis.#selectWriteValue([]);\n\t\t\t}\n\t\t});\n\t}\n\n\twriteValue(value: TValue[] | LuMultiSelection<TValue>): void {\n\t\tif (Array.isArray(value)) {\n\t\t\tthrow new Error('MultiSelectWithSelectAllDirective does not support array values. The form value or ngModel must be a LuMultiSelection<TValue>.');\n\t\t}\n\n\t\tlet mode: LuMultiSelectionMode;\n\t\tlet values: TValue[];\n\n\t\tif (!value) {\n\t\t\tvalues = [];\n\t\t\tmode = 'none';\n\t\t} else {\n\t\t\tvalues = value.mode === 'exclude' || value.mode === 'include' ? value.values : [];\n\t\t\tmode = value.mode;\n\t\t}\n\n\t\tthis.#selectWriteValue(values);\n\t\tthis.#mode.set(mode);\n\t\tthis.#values.set(values);\n\t}\n\n\tclearValue($event?: Event): void {\n\t\tthis.#mode.set('none');\n\t\tthis.#selectClearValue($event);\n\t}\n\n\t#getNextMode(fromMode: LuMultiSelectionMode, values: TValue[]): LuMultiSelectionMode {\n\t\t// When none selected, \"include\" -> \"none\" and \"exclude\" -> \"all\"\n\t\tif (values.length === 0) {\n\t\t\treturn fromMode === 'include' || fromMode === 'none' ? 'none' : 'all';\n\t\t}\n\n\t\tconst allSelected = values.length === this.totalCount();\n\n\t\t// When all selected, \"include\" -> \"all\" and \"exclude\" -> \"none\"\n\t\tif (allSelected) {\n\t\t\treturn fromMode === 'include' || fromMode === 'none' ? 'all' : 'none';\n\t\t}\n\n\t\t// The first value selected will transition from \"all\" to \"exclude\"\n\t\tif (fromMode === 'all') {\n\t\t\treturn 'exclude';\n\t\t}\n\n\t\t// The first value selected will transition from \"none\" to \"include\"\n\t\tif (fromMode === 'none') {\n\t\t\treturn 'include';\n\t\t}\n\n\t\t// No match, keep the same mode\n\t\treturn fromMode;\n\t}\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { LuMultiSelectInputComponent } from '../../input';\nimport { LuMultiSelectDisplayerInputDirective } from '../displayer-input.directive';\n\n@Component({\n\tselector: 'lu-multi-select-content-displayer',\n\timports: [LuMultiSelectDisplayerInputDirective],\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer mod-filter\">\n\t\t\t<input type=\"text\" autocomplete=\"off\" #inputElement luMultiSelectDisplayerInput />\n\t\t\t<div class=\"multipleSelect-displayer-filter\">\n\t\t\t\t<ng-content />\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tstyleUrl: './content-displayer.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuMultiSelectContentDisplayerComponent<T> {\n\treadonly select = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, input, OnInit, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ChipComponent } from '@lucca-front/ng/chip';\nimport { isNotNil, syncInputSignal } 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 { BehaviorSubject } from 'rxjs';\nimport { LuMultiSelectInputComponent } from '../../input';\nimport { LuMultiSelectDisplayerInputDirective } from '../displayer-input.directive';\n\n@Component({\n\tselector: 'lu-multi-select-counter-displayer',\n\timports: [AsyncPipe, LuTooltipModule, ChipComponent, ɵLuOptionOutletDirective, FormsModule, LuMultiSelectDisplayerInputDirective],\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer mod-filter\" [class.is-filled]=\"((selectedOptions$ | async)?.length ?? 0) > 0\">\n\t\t\t<input type=\"text\" autocomplete=\"off\" #inputElement luMultiSelectDisplayerInput />\n\t\t\t@if (selectedOptions$ | async; as selectedOptions) {\n\t\t\t\t<div class=\"multipleSelect-displayer-filter\">\n\t\t\t\t\t@if (selectedOptions?.length === 1) {\n\t\t\t\t\t\t<lu-chip class=\"multipleSelect-displayer-chip\" unkillable withEllipsis>\n\t\t\t\t\t\t\t<ng-container *luOptionOutlet=\"select.displayerTpl(); value: selectedOptions[0]\" />\n\t\t\t\t\t\t</lu-chip>\n\t\t\t\t\t}\n\t\t\t\t\t@if ((selectedOptions?.length ?? 0) > 1) {\n\t\t\t\t\t\t<lu-chip class=\"multipleSelect-displayer-chip\" unkillable>{{ selectedOptions?.length }} {{ label() }}</lu-chip>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t`,\n\tstyleUrl: './counter-displayer.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuMultiSelectCounterDisplayerComponent<T> implements OnInit {\n\treadonly select = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\treadonly context = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\tprotected destroyRef = inject(DestroyRef);\n\n\treadonly inputElementRef = viewChild<ElementRef<HTMLInputElement>>('inputElement');\n\n\tget value(): T[] {\n\t\treturn this.select.value || [];\n\t}\n\n\treadonly selectedOptions$ = new BehaviorSubject<T[]>([]);\n\n\treadonly selected = input<T[]>([]);\n\n\treadonly label = input.required<string>();\n\n\tconstructor() {\n\t\tsyncInputSignal(this.selected, (options) => {\n\t\t\tthis.selectedOptions$.next(options);\n\t\t\tthis.context.option$.next(options);\n\t\t});\n\t}\n\n\tngOnInit(): void {\n\t\tthis.select.focusInput$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data?: { keepClue: true }) => {\n\t\t\t// Everytime we want to focus, we need to reset the input\n\t\t\t// This is done when a value is selected and when panel is opened.\n\t\t\tconst inputElementRef = this.inputElementRef();\n\t\t\tif (isNotNil(inputElementRef)) {\n\t\t\t\tif (!data?.keepClue) {\n\t\t\t\t\tinputElementRef.nativeElement.value = '';\n\t\t\t\t\tthis.select.clueChanged('');\n\t\t\t\t}\n\t\t\t\tinputElementRef.nativeElement.focus();\n\t\t\t}\n\t\t});\n\t\tthis.select.emptyClue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tconst inputElementRef = this.inputElementRef();\n\t\t\tif (isNotNil(inputElementRef)) {\n\t\t\t\tinputElementRef.nativeElement.value = '';\n\t\t\t}\n\t\t});\n\t}\n}\n","import { AsyncPipe } from '@angular/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Injector, input, OnInit, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ChipComponent } from '@lucca-front/ng/chip';\nimport { intlInputOptions } 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 { IconComponent } from '@lucca/prisme/icon';\nimport { map } from 'rxjs/operators';\nimport { LuMultiSelectInputComponent } from '../input/select-input.component';\nimport { LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS } from './default-displayer.translate';\nimport { LuMultiSelectDisplayerInputDirective } from './displayer-input.directive';\n\nlet nextID = 0;\n\n@Component({\n\tselector: 'lu-multi-select-default-displayer',\n\timports: [AsyncPipe, LuTooltipModule, ɵLuOptionOutletDirective, FormsModule, LuMultiSelectDisplayerInputDirective, ChipComponent, IconComponent],\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer\">\n\t\t\t<div class=\"multipleSelect-displayer-suffix\">\n\t\t\t\t<input [attr.aria-labelledby]=\"valueID\" autocomplete=\"off\" #inputElement (keydown.backspace)=\"inputBackspace()\" (keydown.space)=\"inputSpace($event)\" luMultiSelectDisplayerInput />\n\t\t\t\t@if (select.filterPillMode) {\n\t\t\t\t\t<lu-icon icon=\"searchMagnifyingGlass\" class=\"multiSelect-field-icon mod-search\" />\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div [attr.id]=\"valueID\" class=\"pr-u-mask\">\n\t\t\t\t@for (option of displayedOptions$ | async; track option; let index = $index) {\n\t\t\t\t\t<ng-container *luOptionOutlet=\"select.displayerTpl(); value: option\" />&ngsp;\n\t\t\t\t}\n\t\t\t\t@if (overflowOptions$ | async; as overflow) {\n\t\t\t\t\t+ {{ overflow }}\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t@for (option of displayedOptions$ | async; track option; let index = $index) {\n\t\t\t\t<lu-chip aria-hidden=\"true\" class=\"multipleSelect-displayer-chip\" withEllipsis (kill)=\"unselectOption(option, $event)\" [unkillable]=\"(select.disabled$ | async) ?? false\">\n\t\t\t\t\t<ng-container *luOptionOutlet=\"select.displayerTpl(); value: option\" />\n\t\t\t\t</lu-chip>\n\t\t\t}\n\t\t\t@if (overflowOptions$ | async; as overflow) {\n\t\t\t\t<lu-chip aria-hidden=\"true\" class=\"multipleSelect-displayer-chip\" unkillable>+ {{ overflow }}</lu-chip>\n\t\t\t}\n\t\t</div>\n\t`,\n\tstyleUrl: './default-displayer.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuMultiSelectDefaultDisplayerComponent<T> implements OnInit {\n\treadonly select = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\treadonly intl = input(...intlInputOptions(LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS));\n\n\tvalueID = `value-${++nextID}`;\n\n\tprotected destroyRef = inject(DestroyRef);\n\treadonly #injector = inject(Injector);\n\n\treadonly inputElementRef = viewChild<ElementRef<HTMLInputElement>>('inputElement');\n\n\tget value(): T[] {\n\t\treturn this.select.value || [];\n\t}\n\n\treadonly context = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\treadonly displayedOptions$ = this.context.option$.pipe(\n\t\tmap((options) => {\n\t\t\tconst maxValuesShown = this.select.maxValuesShown();\n\t\t\tif (maxValuesShown) {\n\t\t\t\treturn (options || []).slice(0, maxValuesShown);\n\t\t\t}\n\t\t\treturn options;\n\t\t}),\n\t);\n\n\treadonly overflowOptions$ = this.context.option$.pipe(\n\t\tmap((options) => {\n\t\t\treturn Math.max(0, (options || []).length - this.select.maxValuesShown());\n\t\t}),\n\t);\n\n\tunselectOption(option: T, $event?: Event): void {\n\t\tif ($event) {\n\t\t\t$event.stopPropagation();\n\t\t\t$event.preventDefault();\n\t\t}\n\t\tthis.select.updateValue(\n\t\t\tthis.value.filter((o) => o !== option),\n\t\t\ttrue,\n\t\t);\n\t\tafterNextRender(\n\t\t\t() => {\n\t\t\t\tthis.select.panelRef?.updatePosition();\n\t\t\t\tthis.select.updatePosition();\n\t\t\t\tthis.inputElementRef()?.nativeElement.focus();\n\t\t\t\tthis.select.panelRef?.updateSelectedOptions(this.value);\n\t\t\t},\n\t\t\t{ injector: this.#injector },\n\t\t);\n\t}\n\n\tinputBackspace(): void {\n\t\tif (this.value.length > 0 && this.inputElementRef()?.nativeElement.value.length === 0) {\n\t\t\tthis.unselectOption(this.value[this.value.length - 1]);\n\t\t\tthis.select.panelRef?.updateSelectedOptions(this.value);\n\t\t}\n\t}\n\n\tinputSpace(event: Event): void {\n\t\tif (this.inputElementRef()?.nativeElement.value?.length === 0) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.select.panelRef?.selectCurrentlyHighlightedValue();\n\t\t}\n\t}\n\n\tngOnInit(): void {\n\t\tthis.select.focusInput$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data?: { keepClue: true }) => {\n\t\t\t// Everytime we want to focus, we need to reset the input\n\t\t\t// This is done when a value is selected and when panel is opened.\n\t\t\tif (!data?.keepClue && this.inputElementRef()?.nativeElement) {\n\t\t\t\tthis.inputElementRef()!.nativeElement.value = '';\n\t\t\t\tthis.select.clueChanged('');\n\t\t\t}\n\n\t\t\tthis.inputElementRef()?.nativeElement.focus();\n\t\t});\n\t\tthis.select.emptyClue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tif (this.inputElementRef()?.nativeElement) {\n\t\t\t\tthis.inputElementRef()!.nativeElement.value = '';\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Directive, input, TemplateRef } from '@angular/core';\nimport { syncInputSignal } from '@lucca-front/ng/core';\nimport { LuOptionContext } from '@lucca-front/ng/core-select';\nimport { LuMultiSelectInputComponent } from '../input';\n\n@Directive({\n\tselector: '[luMultiDisplayer]',\n})\nexport class LuMultiDisplayerDirective<T> {\n\treadonly select = input<LuMultiSelectInputComponent<T>>(undefined, { alias: 'luMultiDisplayerSelect' });\n\n\tpublic constructor(private templateRef: TemplateRef<LuOptionContext<T[]>>) {\n\t\tsyncInputSignal(this.select, (select) => {\n\t\t\tselect.valuesTpl.set(this.templateRef);\n\t\t});\n\t}\n\n\tpublic static ngTemplateContextGuard<T>(_dir: LuMultiDisplayerDirective<T>, _ctx: unknown): _ctx is LuOptionContext<T[]> {\n\t\treturn true;\n\t}\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { LuMultiSelection } from './select.model';\n\nconst required = (control: AbstractControl<LuMultiSelection<unknown>>): ValidationErrors | null => {\n\tif (!control.value || control.value.mode === 'none') {\n\t\treturn { required: true };\n\t}\n\treturn null;\n};\n\nexport const LuMultiSelectionValidators = {\n\trequired,\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Translations","ɵIsSelectedStrategy","ɵinjectPointerNavigation","ɵgetGroupTemplateLocation","ɵLuOptionComponent","ɵCoreSelectPanelElement","ListboxOptionComponent","ɵLuOptionGroupPipe","ɵLuOptionOutletDirective","ɵPresentationDisplayDefaultDirective","ɵeffectWithDeps","ɵscrollIntoViewOnceReady","i1"],"mappings":"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"}
|