@spartan-ng/brain 0.0.1-alpha.373 → 0.0.1-alpha.379
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/accordion/README.md +3 -0
- package/accordion/index.d.ts +13 -0
- package/accordion/lib/brn-accordion-content.component.d.ts +15 -0
- package/accordion/lib/brn-accordion.directive.d.ts +47 -0
- package/alert-dialog/README.md +3 -0
- package/alert-dialog/index.d.ts +25 -0
- package/alert-dialog/lib/brn-alert-dialog-content.directive.d.ts +6 -0
- package/alert-dialog/lib/brn-alert-dialog-description.directive.d.ts +6 -0
- package/alert-dialog/lib/brn-alert-dialog-overlay.component.d.ts +6 -0
- package/alert-dialog/lib/brn-alert-dialog-title.directive.d.ts +6 -0
- package/alert-dialog/lib/brn-alert-dialog-trigger.directive.d.ts +8 -0
- package/alert-dialog/lib/brn-alert-dialog.component.d.ts +7 -0
- package/avatar/README.md +3 -0
- package/avatar/index.d.ts +17 -0
- package/avatar/lib/brn-avatar.component.d.ts +7 -0
- package/avatar/lib/fallback/brn-avatar-fallback.directive.d.ts +11 -0
- package/avatar/lib/fallback/index.d.ts +1 -0
- package/avatar/lib/image/brn-avatar-image.directive.d.ts +9 -0
- package/avatar/lib/image/index.d.ts +1 -0
- package/avatar/lib/util/hex-color-for.d.ts +1 -0
- package/avatar/lib/util/index.d.ts +3 -0
- package/avatar/lib/util/initials.pipe.d.ts +7 -0
- package/avatar/lib/util/is-bright.d.ts +1 -0
- package/calendar/README.md +3 -0
- package/calendar/index.d.ts +36 -0
- package/calendar/lib/brn-calendar-cell-button.directive.d.ts +59 -0
- package/calendar/lib/brn-calendar-cell.directive.d.ts +5 -0
- package/calendar/lib/brn-calendar-grid.directive.d.ts +7 -0
- package/calendar/lib/brn-calendar-header.directive.d.ts +7 -0
- package/calendar/lib/brn-calendar-next-button.directive.d.ts +13 -0
- package/calendar/lib/brn-calendar-previous-button.directive.d.ts +13 -0
- package/calendar/lib/brn-calendar-week.directive.d.ts +25 -0
- package/calendar/lib/brn-calendar-weekday.directive.d.ts +25 -0
- package/calendar/lib/brn-calendar.directive.d.ts +55 -0
- package/calendar/lib/brn-calendar.token.d.ts +8 -0
- package/calendar/lib/i18n/calendar-i18n.d.ts +17 -0
- package/checkbox/lib/brn-checkbox.component.d.ts +1 -1
- package/collapsible/README.md +3 -0
- package/collapsible/index.d.ts +16 -0
- package/collapsible/lib/brn-collapsible-content.component.d.ts +19 -0
- package/collapsible/lib/brn-collapsible-trigger.directive.d.ts +12 -0
- package/collapsible/lib/brn-collapsible.component.d.ts +11 -0
- package/command/README.md +3 -0
- package/command/index.d.ts +33 -0
- package/command/lib/brn-command-empty.directive.d.ts +6 -0
- package/command/lib/brn-command-group.component.d.ts +6 -0
- package/command/lib/brn-command-input.directive.d.ts +6 -0
- package/command/lib/brn-command-item.directive.d.ts +6 -0
- package/command/lib/brn-command-list.component.d.ts +6 -0
- package/command/lib/brn-command-loader.directive.d.ts +6 -0
- package/command/lib/brn-command-separator.component.d.ts +6 -0
- package/command/lib/brn-command.component.d.ts +6 -0
- package/date-time/README.md +3 -0
- package/date-time/index.d.ts +2 -0
- package/date-time/lib/date-adapter.d.ts +176 -0
- package/date-time/lib/native-date-adapter.d.ts +103 -0
- package/date-time-luxon/README.md +3 -0
- package/date-time-luxon/index.d.ts +1 -0
- package/date-time-luxon/lib/date-adapter.d.ts +29 -0
- package/dialog/README.md +3 -0
- package/dialog/index.d.ts +33 -0
- package/dialog/lib/brn-dialog-close.directive.d.ts +10 -0
- package/dialog/lib/brn-dialog-content.directive.d.ts +12 -0
- package/dialog/lib/brn-dialog-description.directive.d.ts +8 -0
- package/dialog/lib/brn-dialog-options.d.ts +26 -0
- package/dialog/lib/brn-dialog-overlay.component.d.ts +8 -0
- package/dialog/lib/brn-dialog-ref.d.ts +24 -0
- package/dialog/lib/brn-dialog-state.d.ts +1 -0
- package/dialog/lib/brn-dialog-title.directive.d.ts +8 -0
- package/dialog/lib/brn-dialog-trigger.directive.d.ts +16 -0
- package/dialog/lib/brn-dialog-utils.d.ts +1 -0
- package/dialog/lib/brn-dialog.component.d.ts +56 -0
- package/dialog/lib/brn-dialog.service.d.ts +22 -0
- package/esm2022/accordion/index.mjs +31 -0
- package/esm2022/accordion/lib/brn-accordion-content.component.mjs +50 -0
- package/esm2022/accordion/lib/brn-accordion.directive.mjs +180 -0
- package/esm2022/accordion/spartan-ng-brain-accordion.mjs +5 -0
- package/esm2022/alert-dialog/index.mjs +45 -0
- package/esm2022/alert-dialog/lib/brn-alert-dialog-content.directive.mjs +17 -0
- package/esm2022/alert-dialog/lib/brn-alert-dialog-description.directive.mjs +18 -0
- package/esm2022/alert-dialog/lib/brn-alert-dialog-overlay.component.mjs +20 -0
- package/esm2022/alert-dialog/lib/brn-alert-dialog-title.directive.mjs +18 -0
- package/esm2022/alert-dialog/lib/brn-alert-dialog-trigger.directive.mjs +27 -0
- package/esm2022/alert-dialog/lib/brn-alert-dialog.component.mjs +40 -0
- package/esm2022/alert-dialog/spartan-ng-brain-alert-dialog.mjs +5 -0
- package/esm2022/avatar/index.mjs +23 -0
- package/esm2022/avatar/lib/brn-avatar.component.mjs +31 -0
- package/esm2022/avatar/lib/fallback/brn-avatar-fallback.directive.mjs +21 -0
- package/esm2022/avatar/lib/fallback/index.mjs +2 -0
- package/esm2022/avatar/lib/image/brn-avatar-image.directive.mjs +29 -0
- package/esm2022/avatar/lib/image/index.mjs +2 -0
- package/esm2022/avatar/lib/util/hex-color-for.mjs +22 -0
- package/esm2022/avatar/lib/util/index.mjs +4 -0
- package/esm2022/avatar/lib/util/initials.pipe.mjs +27 -0
- package/esm2022/avatar/lib/util/is-bright.mjs +12 -0
- package/esm2022/avatar/spartan-ng-brain-avatar.mjs +5 -0
- package/esm2022/calendar/index.mjs +62 -0
- package/esm2022/calendar/lib/brn-calendar-cell-button.directive.mjs +160 -0
- package/esm2022/calendar/lib/brn-calendar-cell.directive.mjs +17 -0
- package/esm2022/calendar/lib/brn-calendar-grid.directive.mjs +21 -0
- package/esm2022/calendar/lib/brn-calendar-header.directive.mjs +22 -0
- package/esm2022/calendar/lib/brn-calendar-next-button.directive.mjs +42 -0
- package/esm2022/calendar/lib/brn-calendar-previous-button.directive.mjs +42 -0
- package/esm2022/calendar/lib/brn-calendar-week.directive.mjs +64 -0
- package/esm2022/calendar/lib/brn-calendar-weekday.directive.mjs +48 -0
- package/esm2022/calendar/lib/brn-calendar.directive.mjs +154 -0
- package/esm2022/calendar/lib/brn-calendar.token.mjs +12 -0
- package/esm2022/calendar/lib/i18n/calendar-i18n.mjs +33 -0
- package/esm2022/calendar/spartan-ng-brain-calendar.mjs +5 -0
- package/esm2022/checkbox/lib/brn-checkbox.component.mjs +1 -1
- package/esm2022/collapsible/index.mjs +30 -0
- package/esm2022/collapsible/lib/brn-collapsible-content.component.mjs +61 -0
- package/esm2022/collapsible/lib/brn-collapsible-trigger.directive.mjs +35 -0
- package/esm2022/collapsible/lib/brn-collapsible.component.mjs +33 -0
- package/esm2022/collapsible/spartan-ng-brain-collapsible.mjs +5 -0
- package/esm2022/command/index.mjs +64 -0
- package/esm2022/command/lib/brn-command-empty.directive.mjs +29 -0
- package/esm2022/command/lib/brn-command-group.component.mjs +45 -0
- package/esm2022/command/lib/brn-command-input.directive.mjs +29 -0
- package/esm2022/command/lib/brn-command-item.directive.mjs +36 -0
- package/esm2022/command/lib/brn-command-list.component.mjs +35 -0
- package/esm2022/command/lib/brn-command-loader.directive.mjs +29 -0
- package/esm2022/command/lib/brn-command-separator.component.mjs +30 -0
- package/esm2022/command/lib/brn-command.component.mjs +21 -0
- package/esm2022/command/spartan-ng-brain-command.mjs +5 -0
- package/esm2022/date-time/index.mjs +3 -0
- package/esm2022/date-time/lib/date-adapter.mjs +16 -0
- package/esm2022/date-time/lib/native-date-adapter.mjs +155 -0
- package/esm2022/date-time/spartan-ng-brain-date-time.mjs +5 -0
- package/esm2022/date-time-luxon/index.mjs +2 -0
- package/esm2022/date-time-luxon/lib/date-adapter.mjs +85 -0
- package/esm2022/date-time-luxon/spartan-ng-brain-date-time-luxon.mjs +5 -0
- package/esm2022/dialog/index.mjs +55 -0
- package/esm2022/dialog/lib/brn-dialog-close.directive.mjs +29 -0
- package/esm2022/dialog/lib/brn-dialog-content.directive.mjs +41 -0
- package/esm2022/dialog/lib/brn-dialog-description.directive.mjs +25 -0
- package/esm2022/dialog/lib/brn-dialog-options.mjs +19 -0
- package/esm2022/dialog/lib/brn-dialog-overlay.component.mjs +29 -0
- package/esm2022/dialog/lib/brn-dialog-ref.mjs +53 -0
- package/esm2022/dialog/lib/brn-dialog-state.mjs +2 -0
- package/esm2022/dialog/lib/brn-dialog-title.directive.mjs +25 -0
- package/esm2022/dialog/lib/brn-dialog-trigger.directive.mjs +39 -0
- package/esm2022/dialog/lib/brn-dialog-utils.mjs +12 -0
- package/esm2022/dialog/lib/brn-dialog.component.mjs +208 -0
- package/esm2022/dialog/lib/brn-dialog.service.mjs +127 -0
- package/esm2022/dialog/spartan-ng-brain-dialog.mjs +5 -0
- package/esm2022/form-field/index.mjs +2 -0
- package/esm2022/form-field/lib/brn-form-field-control.mjs +14 -0
- package/esm2022/form-field/spartan-ng-brain-form-field.mjs +5 -0
- package/esm2022/forms/index.mjs +4 -0
- package/esm2022/forms/lib/control-value-accessor.mjs +2 -0
- package/esm2022/forms/lib/error-options.mjs +26 -0
- package/esm2022/forms/lib/error-state-tracker.mjs +29 -0
- package/esm2022/forms/spartan-ng-brain-forms.mjs +5 -0
- package/esm2022/hover-card/index.mjs +29 -0
- package/esm2022/hover-card/lib/brn-hover-card-content.service.mjs +205 -0
- package/esm2022/hover-card/lib/brn-hover-card.component.mjs +34 -0
- package/esm2022/hover-card/lib/createHoverObservable.mjs +19 -0
- package/esm2022/hover-card/spartan-ng-brain-hover-card.mjs +5 -0
- package/esm2022/label/index.mjs +17 -0
- package/esm2022/label/lib/brn-label.directive.mjs +49 -0
- package/esm2022/label/spartan-ng-brain-label.mjs +5 -0
- package/esm2022/menu/index.mjs +100 -0
- package/esm2022/menu/lib/brn-context-menu-trigger.directive.mjs +40 -0
- package/esm2022/menu/lib/brn-menu-align.mjs +15 -0
- package/esm2022/menu/lib/brn-menu-bar.directive.mjs +17 -0
- package/esm2022/menu/lib/brn-menu-group.directive.mjs +17 -0
- package/esm2022/menu/lib/brn-menu-item-checkbox.directive.mjs +30 -0
- package/esm2022/menu/lib/brn-menu-item-radio.directive.mjs +30 -0
- package/esm2022/menu/lib/brn-menu-item.directive.mjs +27 -0
- package/esm2022/menu/lib/brn-menu-trigger.directive.mjs +36 -0
- package/esm2022/menu/lib/brn-menu.directive.mjs +50 -0
- package/esm2022/menu/spartan-ng-brain-menu.mjs +5 -0
- package/esm2022/popover/index.mjs +35 -0
- package/esm2022/popover/lib/brn-popover-close.directive.mjs +15 -0
- package/esm2022/popover/lib/brn-popover-content.directive.mjs +17 -0
- package/esm2022/popover/lib/brn-popover-trigger.directive.mjs +37 -0
- package/esm2022/popover/lib/brn-popover.component.mjs +81 -0
- package/esm2022/popover/spartan-ng-brain-popover.mjs +5 -0
- package/esm2022/progress/index.mjs +21 -0
- package/esm2022/progress/lib/brn-progress-indicator.component.mjs +22 -0
- package/esm2022/progress/lib/brn-progress.component.mjs +61 -0
- package/esm2022/progress/lib/brn-progress.token.mjs +9 -0
- package/esm2022/progress/spartan-ng-brain-progress.mjs +5 -0
- package/esm2022/radio-group/index.mjs +20 -0
- package/esm2022/radio-group/lib/brn-radio-group.component.mjs +90 -0
- package/esm2022/radio-group/lib/brn-radio-group.token.mjs +9 -0
- package/esm2022/radio-group/lib/brn-radio.component.mjs +185 -0
- package/esm2022/radio-group/spartan-ng-brain-radio-group.mjs +5 -0
- package/esm2022/select/index.mjs +56 -0
- package/esm2022/select/lib/brn-select-content.component.mjs +204 -0
- package/esm2022/select/lib/brn-select-group.directive.mjs +19 -0
- package/esm2022/select/lib/brn-select-label.directive.mjs +23 -0
- package/esm2022/select/lib/brn-select-option.directive.mjs +65 -0
- package/esm2022/select/lib/brn-select-value.component.mjs +46 -0
- package/esm2022/select/lib/brn-select.component.mjs +358 -0
- package/esm2022/select/lib/brn-select.service.mjs +197 -0
- package/esm2022/select/spartan-ng-brain-select.mjs +5 -0
- package/esm2022/separator/index.mjs +17 -0
- package/esm2022/separator/lib/brn-separator.component.mjs +24 -0
- package/esm2022/separator/spartan-ng-brain-separator.mjs +5 -0
- package/esm2022/sheet/index.mjs +50 -0
- package/esm2022/sheet/lib/brn-sheet-close.directive.mjs +15 -0
- package/esm2022/sheet/lib/brn-sheet-content.directive.mjs +25 -0
- package/esm2022/sheet/lib/brn-sheet-description.directive.mjs +18 -0
- package/esm2022/sheet/lib/brn-sheet-overlay.component.mjs +20 -0
- package/esm2022/sheet/lib/brn-sheet-title.directive.mjs +18 -0
- package/esm2022/sheet/lib/brn-sheet-trigger.directive.mjs +26 -0
- package/esm2022/sheet/lib/brn-sheet.component.mjs +55 -0
- package/esm2022/sheet/spartan-ng-brain-sheet.mjs +5 -0
- package/esm2022/slider/index.mjs +13 -0
- package/esm2022/slider/lib/brn-slider-thumb.directive.mjs +41 -0
- package/esm2022/slider/lib/brn-slider-tick-mark.directive.mjs +37 -0
- package/esm2022/slider/lib/brn-slider-track-active-fill.directive.mjs +29 -0
- package/esm2022/slider/lib/brn-slider-track.directive.mjs +290 -0
- package/esm2022/slider/spartan-ng-brain-slider.mjs +5 -0
- package/esm2022/switch/index.mjs +20 -0
- package/esm2022/switch/lib/brn-switch-thumb.component.mjs +16 -0
- package/esm2022/switch/lib/brn-switch.component.mjs +236 -0
- package/esm2022/switch/spartan-ng-brain-switch.mjs +5 -0
- package/esm2022/table/index.mjs +47 -0
- package/esm2022/table/lib/brn-cell-def.directive.mjs +22 -0
- package/esm2022/table/lib/brn-column-def.component.mjs +82 -0
- package/esm2022/table/lib/brn-column-manager.mjs +61 -0
- package/esm2022/table/lib/brn-footer-def.directive.mjs +22 -0
- package/esm2022/table/lib/brn-header-def.directive.mjs +22 -0
- package/esm2022/table/lib/brn-paginator.directive.mjs +109 -0
- package/esm2022/table/lib/brn-table.component.mjs +169 -0
- package/esm2022/table/spartan-ng-brain-table.mjs +5 -0
- package/esm2022/tabs/index.mjs +32 -0
- package/esm2022/tabs/lib/brn-tabs-list.directive.mjs +65 -0
- package/esm2022/tabs/lib/brn-tabs-paginated-list.directive.mjs +525 -0
- package/esm2022/tabs/lib/brn-tabs-trigger.directive.mjs +134 -0
- package/esm2022/tabs/spartan-ng-brain-tabs.mjs +5 -0
- package/esm2022/toggle/index.mjs +31 -0
- package/esm2022/toggle/lib/brn-toggle-group.component.mjs +159 -0
- package/esm2022/toggle/lib/brn-toggle-group.token.mjs +9 -0
- package/esm2022/toggle/lib/brn-toggle.directive.mjs +65 -0
- package/esm2022/toggle/spartan-ng-brain-toggle.mjs +5 -0
- package/esm2022/tooltip/index.mjs +35 -0
- package/esm2022/tooltip/lib/brn-tooltip-content.component.mjs +228 -0
- package/esm2022/tooltip/lib/brn-tooltip-content.directive.mjs +22 -0
- package/esm2022/tooltip/lib/brn-tooltip-trigger.directive.mjs +689 -0
- package/esm2022/tooltip/lib/brn-tooltip.directive.mjs +15 -0
- package/esm2022/tooltip/spartan-ng-brain-tooltip.mjs +5 -0
- package/fesm2022/spartan-ng-brain-accordion.mjs +259 -0
- package/fesm2022/spartan-ng-brain-accordion.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-alert-dialog.mjs +162 -0
- package/fesm2022/spartan-ng-brain-alert-dialog.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-avatar.mjs +156 -0
- package/fesm2022/spartan-ng-brain-avatar.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-calendar.mjs +629 -0
- package/fesm2022/spartan-ng-brain-calendar.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-checkbox.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-collapsible.mjs +152 -0
- package/fesm2022/spartan-ng-brain-collapsible.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-command.mjs +284 -0
- package/fesm2022/spartan-ng-brain-command.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-date-time-luxon.mjs +92 -0
- package/fesm2022/spartan-ng-brain-date-time-luxon.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-date-time.mjs +177 -0
- package/fesm2022/spartan-ng-brain-date-time.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-dialog.mjs +617 -0
- package/fesm2022/spartan-ng-brain-dialog.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-form-field.mjs +21 -0
- package/fesm2022/spartan-ng-brain-form-field.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-forms.mjs +61 -0
- package/fesm2022/spartan-ng-brain-forms.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-hover-card.mjs +274 -0
- package/fesm2022/spartan-ng-brain-hover-card.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-label.mjs +69 -0
- package/fesm2022/spartan-ng-brain-label.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-menu.mjs +316 -0
- package/fesm2022/spartan-ng-brain-menu.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-popover.mjs +173 -0
- package/fesm2022/spartan-ng-brain-popover.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-progress.mjs +108 -0
- package/fesm2022/spartan-ng-brain-progress.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-radio-group.mjs +299 -0
- package/fesm2022/spartan-ng-brain-radio-group.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-select.mjs +928 -0
- package/fesm2022/spartan-ng-brain-select.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-separator.mjs +44 -0
- package/fesm2022/spartan-ng-brain-separator.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-sheet.mjs +197 -0
- package/fesm2022/spartan-ng-brain-sheet.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-slider.mjs +399 -0
- package/fesm2022/spartan-ng-brain-slider.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-switch.mjs +271 -0
- package/fesm2022/spartan-ng-brain-switch.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-table.mjs +506 -0
- package/fesm2022/spartan-ng-brain-table.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-tabs.mjs +748 -0
- package/fesm2022/spartan-ng-brain-tabs.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-toggle.mjs +260 -0
- package/fesm2022/spartan-ng-brain-toggle.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain-tooltip.mjs +975 -0
- package/fesm2022/spartan-ng-brain-tooltip.mjs.map +1 -0
- package/form-field/README.md +3 -0
- package/form-field/index.d.ts +1 -0
- package/form-field/lib/brn-form-field-control.d.ts +11 -0
- package/forms/README.md +3 -0
- package/forms/index.d.ts +3 -0
- package/forms/lib/control-value-accessor.d.ts +2 -0
- package/forms/lib/error-options.d.ts +14 -0
- package/forms/lib/error-state-tracker.d.ts +15 -0
- package/hover-card/README.md +3 -0
- package/hover-card/index.d.ts +14 -0
- package/hover-card/lib/brn-hover-card-content.service.d.ts +65 -0
- package/hover-card/lib/brn-hover-card.component.d.ts +9 -0
- package/hover-card/lib/createHoverObservable.d.ts +4 -0
- package/label/README.md +3 -0
- package/label/index.d.ts +8 -0
- package/label/lib/brn-label.directive.d.ts +15 -0
- package/menu/README.md +3 -0
- package/menu/index.d.ts +49 -0
- package/menu/lib/brn-context-menu-trigger.directive.d.ts +13 -0
- package/menu/lib/brn-menu-align.d.ts +3 -0
- package/menu/lib/brn-menu-bar.directive.d.ts +6 -0
- package/menu/lib/brn-menu-group.directive.d.ts +6 -0
- package/menu/lib/brn-menu-item-checkbox.directive.d.ts +11 -0
- package/menu/lib/brn-menu-item-radio.directive.d.ts +11 -0
- package/menu/lib/brn-menu-item.directive.d.ts +10 -0
- package/menu/lib/brn-menu-trigger.directive.d.ts +10 -0
- package/menu/lib/brn-menu.directive.d.ts +11 -0
- package/package.json +182 -9
- package/popover/README.md +3 -0
- package/popover/index.d.ts +19 -0
- package/popover/lib/brn-popover-close.directive.d.ts +6 -0
- package/popover/lib/brn-popover-content.directive.d.ts +6 -0
- package/popover/lib/brn-popover-trigger.directive.d.ts +10 -0
- package/popover/lib/brn-popover.component.d.ts +14 -0
- package/progress/README.md +3 -0
- package/progress/index.d.ts +14 -0
- package/progress/lib/brn-progress-indicator.component.d.ts +6 -0
- package/progress/lib/brn-progress.component.d.ts +15 -0
- package/progress/lib/brn-progress.token.d.ts +4 -0
- package/radio-group/README.md +3 -0
- package/radio-group/index.d.ts +13 -0
- package/radio-group/lib/brn-radio-group.component.d.ts +57 -0
- package/radio-group/lib/brn-radio-group.token.d.ts +4 -0
- package/radio-group/lib/brn-radio.component.d.ts +58 -0
- package/select/README.md +3 -0
- package/select/index.d.ts +28 -0
- package/select/lib/brn-select-content.component.d.ts +50 -0
- package/select/lib/brn-select-group.directive.d.ts +6 -0
- package/select/lib/brn-select-label.directive.d.ts +9 -0
- package/select/lib/brn-select-option.directive.d.ts +25 -0
- package/select/lib/brn-select-value.component.d.ts +11 -0
- package/select/lib/brn-select.component.d.ts +82 -0
- package/select/lib/brn-select.service.d.ts +67 -0
- package/separator/README.md +3 -0
- package/separator/index.d.ts +8 -0
- package/separator/lib/brn-separator.component.d.ts +11 -0
- package/sheet/README.md +3 -0
- package/sheet/index.d.ts +28 -0
- package/sheet/lib/brn-sheet-close.directive.d.ts +6 -0
- package/sheet/lib/brn-sheet-content.directive.d.ts +8 -0
- package/sheet/lib/brn-sheet-description.directive.d.ts +6 -0
- package/sheet/lib/brn-sheet-overlay.component.d.ts +6 -0
- package/sheet/lib/brn-sheet-title.directive.d.ts +6 -0
- package/sheet/lib/brn-sheet-trigger.directive.d.ts +9 -0
- package/sheet/lib/brn-sheet.component.d.ts +9 -0
- package/slider/README.md +3 -0
- package/slider/index.d.ts +7 -0
- package/slider/lib/brn-slider-thumb.directive.d.ts +17 -0
- package/slider/lib/brn-slider-tick-mark.directive.d.ts +15 -0
- package/slider/lib/brn-slider-track-active-fill.directive.d.ts +10 -0
- package/slider/lib/brn-slider-track.directive.d.ts +139 -0
- package/switch/README.md +3 -0
- package/switch/index.d.ts +13 -0
- package/switch/lib/brn-switch-thumb.component.d.ts +5 -0
- package/switch/lib/brn-switch.component.d.ts +58 -0
- package/table/README.md +3 -0
- package/table/index.d.ts +26 -0
- package/table/lib/brn-cell-def.directive.d.ts +9 -0
- package/table/lib/brn-column-def.component.d.ts +18 -0
- package/table/lib/brn-column-manager.d.ts +26 -0
- package/table/lib/brn-footer-def.directive.d.ts +9 -0
- package/table/lib/brn-header-def.directive.d.ts +9 -0
- package/table/lib/brn-paginator.directive.d.ts +41 -0
- package/table/lib/brn-table.component.d.ts +37 -0
- package/tabs/README.md +3 -0
- package/tabs/index.d.ts +14 -0
- package/tabs/lib/brn-tabs-list.directive.d.ts +17 -0
- package/tabs/lib/brn-tabs-paginated-list.directive.d.ts +196 -0
- package/tabs/lib/brn-tabs-trigger.directive.d.ts +61 -0
- package/toggle/README.md +3 -0
- package/toggle/index.d.ts +15 -0
- package/toggle/lib/brn-toggle-group.component.d.ts +68 -0
- package/toggle/lib/brn-toggle-group.token.d.ts +4 -0
- package/toggle/lib/brn-toggle.directive.d.ts +25 -0
- package/tooltip/README.md +3 -0
- package/tooltip/index.d.ts +19 -0
- package/tooltip/lib/brn-tooltip-content.component.d.ts +73 -0
- package/tooltip/lib/brn-tooltip-content.directive.d.ts +8 -0
- package/tooltip/lib/brn-tooltip-trigger.directive.d.ts +177 -0
- package/tooltip/lib/brn-tooltip.directive.d.ts +7 -0
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { CdkListbox } from '@angular/cdk/listbox';
|
|
2
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
3
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, contentChild, contentChildren, effect, inject, signal, viewChild, } from '@angular/core';
|
|
4
|
+
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
5
|
+
import { BrnSelectOptionDirective } from './brn-select-option.directive';
|
|
6
|
+
import { BrnSelectService } from './brn-select.service';
|
|
7
|
+
import { Directive } from '@angular/core';
|
|
8
|
+
import { Subject, fromEvent, interval, takeUntil } from 'rxjs';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/cdk/listbox";
|
|
11
|
+
const SCROLLBY_PIXELS = 100;
|
|
12
|
+
export class BrnSelectScrollUpDirective {
|
|
13
|
+
_el = inject(ElementRef);
|
|
14
|
+
_selectContent = inject(BrnSelectContentComponent);
|
|
15
|
+
_endReached = new Subject();
|
|
16
|
+
_destroyRef = inject(DestroyRef);
|
|
17
|
+
startEmittingEvents() {
|
|
18
|
+
const mouseLeave$ = fromEvent(this._el.nativeElement, 'mouseleave');
|
|
19
|
+
interval(100)
|
|
20
|
+
.pipe(takeUntil(mouseLeave$), takeUntil(this._endReached), takeUntilDestroyed(this._destroyRef))
|
|
21
|
+
.subscribe(() => this._selectContent.moveFocusUp());
|
|
22
|
+
}
|
|
23
|
+
stopEmittingEvents() {
|
|
24
|
+
this._endReached.next(true);
|
|
25
|
+
}
|
|
26
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectScrollUpDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
27
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.5", type: BrnSelectScrollUpDirective, isStandalone: true, selector: "[brnSelectScrollUp], brn-select-scroll-up, hlm-select-scroll-up:not(noHlm)", host: { attributes: { "aria-hidden": "true" }, listeners: { "mouseenter": "startEmittingEvents()" } }, ngImport: i0 });
|
|
28
|
+
}
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectScrollUpDirective, decorators: [{
|
|
30
|
+
type: Directive,
|
|
31
|
+
args: [{
|
|
32
|
+
selector: '[brnSelectScrollUp], brn-select-scroll-up, hlm-select-scroll-up:not(noHlm)',
|
|
33
|
+
standalone: true,
|
|
34
|
+
host: {
|
|
35
|
+
'aria-hidden': 'true',
|
|
36
|
+
'(mouseenter)': 'startEmittingEvents()',
|
|
37
|
+
},
|
|
38
|
+
}]
|
|
39
|
+
}] });
|
|
40
|
+
export class BrnSelectScrollDownDirective {
|
|
41
|
+
_el = inject(ElementRef);
|
|
42
|
+
_selectContent = inject(BrnSelectContentComponent);
|
|
43
|
+
_endReached = new Subject();
|
|
44
|
+
_destroyRef = inject(DestroyRef);
|
|
45
|
+
startEmittingEvents() {
|
|
46
|
+
const mouseLeave$ = fromEvent(this._el.nativeElement, 'mouseleave');
|
|
47
|
+
interval(100)
|
|
48
|
+
.pipe(takeUntil(mouseLeave$), takeUntil(this._endReached), takeUntilDestroyed(this._destroyRef))
|
|
49
|
+
.subscribe(() => this._selectContent.moveFocusDown());
|
|
50
|
+
}
|
|
51
|
+
stopEmittingEvents() {
|
|
52
|
+
this._endReached.next(true);
|
|
53
|
+
}
|
|
54
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectScrollDownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
55
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.5", type: BrnSelectScrollDownDirective, isStandalone: true, selector: "[brnSelectScrollDown], brn-select-scroll-down, hlm-select-scroll-down:not(noHlm)", host: { attributes: { "aria-hidden": "true" }, listeners: { "mouseenter": "startEmittingEvents()" } }, ngImport: i0 });
|
|
56
|
+
}
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectScrollDownDirective, decorators: [{
|
|
58
|
+
type: Directive,
|
|
59
|
+
args: [{
|
|
60
|
+
selector: '[brnSelectScrollDown], brn-select-scroll-down, hlm-select-scroll-down:not(noHlm)',
|
|
61
|
+
standalone: true,
|
|
62
|
+
host: {
|
|
63
|
+
'aria-hidden': 'true',
|
|
64
|
+
'(mouseenter)': 'startEmittingEvents()',
|
|
65
|
+
},
|
|
66
|
+
}]
|
|
67
|
+
}] });
|
|
68
|
+
export class BrnSelectContentComponent {
|
|
69
|
+
_el = inject(ElementRef);
|
|
70
|
+
_cdkListbox = inject(CdkListbox, { host: true });
|
|
71
|
+
_destroyRef = inject(DestroyRef);
|
|
72
|
+
_selectService = inject(BrnSelectService);
|
|
73
|
+
labelledBy = this._selectService.labelId;
|
|
74
|
+
id = this._selectService.id;
|
|
75
|
+
canScrollUp = signal(false);
|
|
76
|
+
canScrollDown = signal(false);
|
|
77
|
+
initialSelectedOptions$ = toObservable(this._selectService.selectedOptions);
|
|
78
|
+
viewport = viewChild.required('viewport');
|
|
79
|
+
scrollUpBtn = contentChild.required(BrnSelectScrollUpDirective);
|
|
80
|
+
scrollDownBtn = contentChild.required(BrnSelectScrollDownDirective);
|
|
81
|
+
_options = contentChildren(BrnSelectOptionDirective, { descendants: true });
|
|
82
|
+
constructor() {
|
|
83
|
+
this._cdkListbox.valueChange
|
|
84
|
+
.asObservable()
|
|
85
|
+
.pipe(takeUntilDestroyed())
|
|
86
|
+
.subscribe((val) => this._selectService.listBoxValueChangeEvent$.next(val));
|
|
87
|
+
effect(() => {
|
|
88
|
+
this._cdkListbox.multiple = this._selectService.multiple();
|
|
89
|
+
this._selectService.isExpanded() && setTimeout(() => this.updateArrowDisplay());
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
ngAfterViewInit() {
|
|
93
|
+
this.setInitiallySelectedOptions();
|
|
94
|
+
}
|
|
95
|
+
setInitiallySelectedOptions() {
|
|
96
|
+
this.initialSelectedOptions$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((selectedOptions) => {
|
|
97
|
+
// Reapplying cdkLibstbox multiple because seems this is running before effect that
|
|
98
|
+
// updates cdklistbox, reapplying multiple true so we can set the multiple initial options
|
|
99
|
+
if (this._selectService.multiple()) {
|
|
100
|
+
this._cdkListbox.multiple = true;
|
|
101
|
+
}
|
|
102
|
+
for (const cdkOption of this._selectService.possibleOptions()) {
|
|
103
|
+
if (selectedOptions.includes(cdkOption)) {
|
|
104
|
+
cdkOption?.select();
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
cdkOption?.deselect();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
for (const cdkOption of selectedOptions) {
|
|
111
|
+
cdkOption?.select();
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
updateArrowDisplay() {
|
|
116
|
+
const { scrollTop, scrollHeight, clientHeight } = this.viewport().nativeElement;
|
|
117
|
+
this.canScrollUp.set(scrollTop > 0);
|
|
118
|
+
const maxScroll = scrollHeight - clientHeight;
|
|
119
|
+
this.canScrollDown.set(Math.ceil(scrollTop) < maxScroll);
|
|
120
|
+
}
|
|
121
|
+
handleScroll() {
|
|
122
|
+
this.updateArrowDisplay();
|
|
123
|
+
}
|
|
124
|
+
focusList() {
|
|
125
|
+
this._cdkListbox.focus();
|
|
126
|
+
}
|
|
127
|
+
moveFocusUp() {
|
|
128
|
+
this.viewport().nativeElement.scrollBy({ top: -SCROLLBY_PIXELS, behavior: 'smooth' });
|
|
129
|
+
if (this.viewport().nativeElement.scrollTop === 0) {
|
|
130
|
+
this.scrollUpBtn().stopEmittingEvents();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
moveFocusDown() {
|
|
134
|
+
this.viewport().nativeElement.scrollBy({ top: SCROLLBY_PIXELS, behavior: 'smooth' });
|
|
135
|
+
const viewportSize = this._el.nativeElement.scrollHeight;
|
|
136
|
+
const viewportScrollPosition = this.viewport().nativeElement.scrollTop;
|
|
137
|
+
if (viewportSize + viewportScrollPosition + SCROLLBY_PIXELS >
|
|
138
|
+
this.viewport().nativeElement.scrollHeight + SCROLLBY_PIXELS / 2) {
|
|
139
|
+
this.scrollDownBtn().stopEmittingEvents();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
143
|
+
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.5", type: BrnSelectContentComponent, isStandalone: true, selector: "brn-select-content, hlm-select-content:not(noHlm)", host: { properties: { "attr.aria-labelledBy": "labelledBy()", "attr.aria-controlledBy": "id() +'--trigger'", "id": "id() + '--content'", "attr.dir": "_selectService.dir()" } }, queries: [{ propertyName: "scrollUpBtn", first: true, predicate: BrnSelectScrollUpDirective, descendants: true, isSignal: true }, { propertyName: "scrollDownBtn", first: true, predicate: BrnSelectScrollDownDirective, descendants: true, isSignal: true }, { propertyName: "_options", predicate: BrnSelectOptionDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "viewport", first: true, predicate: ["viewport"], descendants: true, isSignal: true }], hostDirectives: [{ directive: i1.CdkListbox }], ngImport: i0, template: `
|
|
144
|
+
<ng-template #scrollUp>
|
|
145
|
+
<ng-content select="hlm-select-scroll-up" />
|
|
146
|
+
<ng-content select="brnSelectScrollUp" />
|
|
147
|
+
</ng-template>
|
|
148
|
+
<ng-container *ngTemplateOutlet="canScrollUp() && scrollUpBtn() ? scrollUp : null" />
|
|
149
|
+
<div
|
|
150
|
+
data-brn-select-viewport
|
|
151
|
+
#viewport
|
|
152
|
+
(scroll)="handleScroll()"
|
|
153
|
+
style="flex: 1 1 0%;
|
|
154
|
+
position: relative;
|
|
155
|
+
width:100%;
|
|
156
|
+
overflow:auto;
|
|
157
|
+
min-height: 36px;
|
|
158
|
+
padding-bottom: 2px;
|
|
159
|
+
margin-bottom: -2px;"
|
|
160
|
+
>
|
|
161
|
+
<ng-content />
|
|
162
|
+
</div>
|
|
163
|
+
<ng-template #scrollDown>
|
|
164
|
+
<ng-content select="brnSelectScrollDown" />
|
|
165
|
+
<ng-content select="hlm-select-scroll-down" />
|
|
166
|
+
</ng-template>
|
|
167
|
+
<ng-container *ngTemplateOutlet="canScrollDown() && scrollDownBtn() ? scrollDown : null" />
|
|
168
|
+
`, isInline: true, styles: [":host{display:flex;box-sizing:border-box;flex-direction:column;outline:none;pointer-events:auto}[data-brn-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}[data-brn-select-viewport]::-webkit-scrollbar{display:none}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
169
|
+
}
|
|
170
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectContentComponent, decorators: [{
|
|
171
|
+
type: Component,
|
|
172
|
+
args: [{ selector: 'brn-select-content, hlm-select-content:not(noHlm)', standalone: true, imports: [BrnSelectScrollUpDirective, BrnSelectScrollDownDirective, NgTemplateOutlet], hostDirectives: [CdkListbox], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
173
|
+
'[attr.aria-labelledBy]': 'labelledBy()',
|
|
174
|
+
'[attr.aria-controlledBy]': "id() +'--trigger'",
|
|
175
|
+
'[id]': "id() + '--content'",
|
|
176
|
+
'[attr.dir]': '_selectService.dir()',
|
|
177
|
+
}, template: `
|
|
178
|
+
<ng-template #scrollUp>
|
|
179
|
+
<ng-content select="hlm-select-scroll-up" />
|
|
180
|
+
<ng-content select="brnSelectScrollUp" />
|
|
181
|
+
</ng-template>
|
|
182
|
+
<ng-container *ngTemplateOutlet="canScrollUp() && scrollUpBtn() ? scrollUp : null" />
|
|
183
|
+
<div
|
|
184
|
+
data-brn-select-viewport
|
|
185
|
+
#viewport
|
|
186
|
+
(scroll)="handleScroll()"
|
|
187
|
+
style="flex: 1 1 0%;
|
|
188
|
+
position: relative;
|
|
189
|
+
width:100%;
|
|
190
|
+
overflow:auto;
|
|
191
|
+
min-height: 36px;
|
|
192
|
+
padding-bottom: 2px;
|
|
193
|
+
margin-bottom: -2px;"
|
|
194
|
+
>
|
|
195
|
+
<ng-content />
|
|
196
|
+
</div>
|
|
197
|
+
<ng-template #scrollDown>
|
|
198
|
+
<ng-content select="brnSelectScrollDown" />
|
|
199
|
+
<ng-content select="hlm-select-scroll-down" />
|
|
200
|
+
</ng-template>
|
|
201
|
+
<ng-container *ngTemplateOutlet="canScrollDown() && scrollDownBtn() ? scrollDown : null" />
|
|
202
|
+
`, styles: [":host{display:flex;box-sizing:border-box;flex-direction:column;outline:none;pointer-events:auto}[data-brn-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}[data-brn-select-viewport]::-webkit-scrollbar{display:none}\n"] }]
|
|
203
|
+
}], ctorParameters: () => [] });
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLXNlbGVjdC1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vc2VsZWN0L3NyYy9saWIvYnJuLXNlbGVjdC1jb250ZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFnQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFFTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLGVBQWUsRUFDZixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBRS9ELE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQztBQVU1QixNQUFNLE9BQU8sMEJBQTBCO0lBQ3JCLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekIsY0FBYyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBRW5ELFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO0lBQ3JDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFM0MsbUJBQW1CO1FBQ3pCLE1B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RUFBRSxzQkFBc0I7cUJBQ3BDLFlBc0JTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBeUJUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrTGlzdGJveCwgdHlwZSBMaXN0Ym94VmFsdWVDaGFuZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9saXN0Ym94JztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcblx0dHlwZSBBZnRlclZpZXdJbml0LFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHREZXN0cm95UmVmLFxuXHRFbGVtZW50UmVmLFxuXHRjb250ZW50Q2hpbGQsXG5cdGNvbnRlbnRDaGlsZHJlbixcblx0ZWZmZWN0LFxuXHRpbmplY3QsXG5cdHNpZ25hbCxcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQnJuU2VsZWN0T3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9icm4tc2VsZWN0LW9wdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQnJuU2VsZWN0U2VydmljZSB9IGZyb20gJy4vYnJuLXNlbGVjdC5zZXJ2aWNlJztcblxuaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQsIGludGVydmFsLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuY29uc3QgU0NST0xMQllfUElYRUxTID0gMTAwO1xuXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6ICdbYnJuU2VsZWN0U2Nyb2xsVXBdLCBicm4tc2VsZWN0LXNjcm9sbC11cCwgaGxtLXNlbGVjdC1zY3JvbGwtdXA6bm90KG5vSGxtKScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGhvc3Q6IHtcblx0XHQnYXJpYS1oaWRkZW4nOiAndHJ1ZScsXG5cdFx0Jyhtb3VzZWVudGVyKSc6ICdzdGFydEVtaXR0aW5nRXZlbnRzKCknLFxuXHR9LFxufSlcbmV4cG9ydCBjbGFzcyBCcm5TZWxlY3RTY3JvbGxVcERpcmVjdGl2ZSB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2VsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3RDb250ZW50ID0gaW5qZWN0KEJyblNlbGVjdENvbnRlbnRDb21wb25lbnQpO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgX2VuZFJlYWNoZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG5cdHB1YmxpYyBzdGFydEVtaXR0aW5nRXZlbnRzKCk6IHZvaWQge1xuXHRcdGNvbnN0IG1vdXNlTGVhdmUkID0gZnJvbUV2ZW50KHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWxlYXZlJyk7XG5cblx0XHRpbnRlcnZhbCgxMDApXG5cdFx0XHQucGlwZSh0YWtlVW50aWwobW91c2VMZWF2ZSQpLCB0YWtlVW50aWwodGhpcy5fZW5kUmVhY2hlZCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcblx0XHRcdC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fc2VsZWN0Q29udGVudC5tb3ZlRm9jdXNVcCgpKTtcblx0fVxuXG5cdHB1YmxpYyBzdG9wRW1pdHRpbmdFdmVudHMoKTogdm9pZCB7XG5cdFx0dGhpcy5fZW5kUmVhY2hlZC5uZXh0KHRydWUpO1xuXHR9XG59XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1ticm5TZWxlY3RTY3JvbGxEb3duXSwgYnJuLXNlbGVjdC1zY3JvbGwtZG93biwgaGxtLXNlbGVjdC1zY3JvbGwtZG93bjpub3Qobm9IbG0pJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aG9zdDoge1xuXHRcdCdhcmlhLWhpZGRlbic6ICd0cnVlJyxcblx0XHQnKG1vdXNlZW50ZXIpJzogJ3N0YXJ0RW1pdHRpbmdFdmVudHMoKScsXG5cdH0sXG59KVxuZXhwb3J0IGNsYXNzIEJyblNlbGVjdFNjcm9sbERvd25EaXJlY3RpdmUge1xuXHRwcml2YXRlIHJlYWRvbmx5IF9lbCA9IGluamVjdChFbGVtZW50UmVmKTtcblx0cHJpdmF0ZSByZWFkb25seSBfc2VsZWN0Q29udGVudCA9IGluamVjdChCcm5TZWxlY3RDb250ZW50Q29tcG9uZW50KTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9lbmRSZWFjaGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblx0cHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuXHRwdWJsaWMgc3RhcnRFbWl0dGluZ0V2ZW50cygpOiB2b2lkIHtcblx0XHRjb25zdCBtb3VzZUxlYXZlJCA9IGZyb21FdmVudCh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LCAnbW91c2VsZWF2ZScpO1xuXG5cdFx0aW50ZXJ2YWwoMTAwKVxuXHRcdFx0LnBpcGUodGFrZVVudGlsKG1vdXNlTGVhdmUkKSwgdGFrZVVudGlsKHRoaXMuX2VuZFJlYWNoZWQpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG5cdFx0XHQuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3NlbGVjdENvbnRlbnQubW92ZUZvY3VzRG93bigpKTtcblx0fVxuXG5cdHB1YmxpYyBzdG9wRW1pdHRpbmdFdmVudHMoKTogdm9pZCB7XG5cdFx0dGhpcy5fZW5kUmVhY2hlZC5uZXh0KHRydWUpO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2Jybi1zZWxlY3QtY29udGVudCwgaGxtLXNlbGVjdC1jb250ZW50Om5vdChub0hsbSknLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbQnJuU2VsZWN0U2Nyb2xsVXBEaXJlY3RpdmUsIEJyblNlbGVjdFNjcm9sbERvd25EaXJlY3RpdmUsIE5nVGVtcGxhdGVPdXRsZXRdLFxuXHRob3N0RGlyZWN0aXZlczogW0Nka0xpc3Rib3hdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aG9zdDoge1xuXHRcdCdbYXR0ci5hcmlhLWxhYmVsbGVkQnldJzogJ2xhYmVsbGVkQnkoKScsXG5cdFx0J1thdHRyLmFyaWEtY29udHJvbGxlZEJ5XSc6IFwiaWQoKSArJy0tdHJpZ2dlcidcIixcblx0XHQnW2lkXSc6IFwiaWQoKSArICctLWNvbnRlbnQnXCIsXG5cdFx0J1thdHRyLmRpcl0nOiAnX3NlbGVjdFNlcnZpY2UuZGlyKCknLFxuXHR9LFxuXHRzdHlsZXM6IFtcblx0XHRgXG5cdFx0XHQ6aG9zdCB7XG5cdFx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRcdHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuXHRcdFx0fVxuXG5cdFx0XHRbZGF0YS1icm4tc2VsZWN0LXZpZXdwb3J0XSB7XG5cdFx0XHRcdHNjcm9sbGJhci13aWR0aDogbm9uZTtcblx0XHRcdFx0LW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xuXHRcdFx0XHQtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG5cdFx0XHR9XG5cblx0XHRcdFtkYXRhLWJybi1zZWxlY3Qtdmlld3BvcnRdOjotd2Via2l0LXNjcm9sbGJhciB7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHR9XG5cdFx0YCxcblx0XSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmctdGVtcGxhdGUgI3Njcm9sbFVwPlxuXHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiaGxtLXNlbGVjdC1zY3JvbGwtdXBcIiAvPlxuXHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiYnJuU2VsZWN0U2Nyb2xsVXBcIiAvPlxuXHRcdDwvbmctdGVtcGxhdGU+XG5cdFx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhblNjcm9sbFVwKCkgJiYgc2Nyb2xsVXBCdG4oKSA/IHNjcm9sbFVwIDogbnVsbFwiIC8+XG5cdFx0PGRpdlxuXHRcdFx0ZGF0YS1icm4tc2VsZWN0LXZpZXdwb3J0XG5cdFx0XHQjdmlld3BvcnRcblx0XHRcdChzY3JvbGwpPVwiaGFuZGxlU2Nyb2xsKClcIlxuXHRcdFx0c3R5bGU9XCJmbGV4OiAxIDEgMCU7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHR3aWR0aDoxMDAlO1xuXHRcdFx0b3ZlcmZsb3c6YXV0bztcblx0XHRcdG1pbi1oZWlnaHQ6IDM2cHg7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMnB4O1xuICAgICAgbWFyZ2luLWJvdHRvbTogLTJweDtcIlxuXHRcdD5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9kaXY+XG5cdFx0PG5nLXRlbXBsYXRlICNzY3JvbGxEb3duPlxuXHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiYnJuU2VsZWN0U2Nyb2xsRG93blwiIC8+XG5cdFx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJobG0tc2VsZWN0LXNjcm9sbC1kb3duXCIgLz5cblx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYW5TY3JvbGxEb3duKCkgJiYgc2Nyb2xsRG93bkJ0bigpID8gc2Nyb2xsRG93biA6IG51bGxcIiAvPlxuXHRgLFxufSlcbmV4cG9ydCBjbGFzcyBCcm5TZWxlY3RDb250ZW50Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2VsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiA9IGluamVjdChFbGVtZW50UmVmKTtcblx0cHJpdmF0ZSByZWFkb25seSBfY2RrTGlzdGJveCA9IGluamVjdChDZGtMaXN0Ym94LCB7IGhvc3Q6IHRydWUgfSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cdHByb3RlY3RlZCByZWFkb25seSBfc2VsZWN0U2VydmljZSA9IGluamVjdChCcm5TZWxlY3RTZXJ2aWNlKTtcblxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgbGFiZWxsZWRCeSA9IHRoaXMuX3NlbGVjdFNlcnZpY2UubGFiZWxJZDtcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGlkID0gdGhpcy5fc2VsZWN0U2VydmljZS5pZDtcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGNhblNjcm9sbFVwID0gc2lnbmFsKGZhbHNlKTtcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGNhblNjcm9sbERvd24gPSBzaWduYWwoZmFsc2UpO1xuXG5cdHByb3RlY3RlZCBpbml0aWFsU2VsZWN0ZWRPcHRpb25zJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLl9zZWxlY3RTZXJ2aWNlLnNlbGVjdGVkT3B0aW9ucyk7XG5cblx0cHJvdGVjdGVkIHZpZXdwb3J0ID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+Pigndmlld3BvcnQnKTtcblxuXHRwcm90ZWN0ZWQgc2Nyb2xsVXBCdG4gPSBjb250ZW50Q2hpbGQucmVxdWlyZWQoQnJuU2VsZWN0U2Nyb2xsVXBEaXJlY3RpdmUpO1xuXG5cdHByb3RlY3RlZCBzY3JvbGxEb3duQnRuID0gY29udGVudENoaWxkLnJlcXVpcmVkKEJyblNlbGVjdFNjcm9sbERvd25EaXJlY3RpdmUpO1xuXG5cdHByb3RlY3RlZCBfb3B0aW9ucyA9IGNvbnRlbnRDaGlsZHJlbihCcm5TZWxlY3RPcHRpb25EaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5fY2RrTGlzdGJveC52YWx1ZUNoYW5nZVxuXHRcdFx0LmFzT2JzZXJ2YWJsZSgpXG5cdFx0XHQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcblx0XHRcdC5zdWJzY3JpYmUoKHZhbDogTGlzdGJveFZhbHVlQ2hhbmdlRXZlbnQ8dW5rbm93bj4pID0+IHRoaXMuX3NlbGVjdFNlcnZpY2UubGlzdEJveFZhbHVlQ2hhbmdlRXZlbnQkLm5leHQodmFsKSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0dGhpcy5fY2RrTGlzdGJveC5tdWx0aXBsZSA9IHRoaXMuX3NlbGVjdFNlcnZpY2UubXVsdGlwbGUoKTtcblx0XHRcdHRoaXMuX3NlbGVjdFNlcnZpY2UuaXNFeHBhbmRlZCgpICYmIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVBcnJvd0Rpc3BsYXkoKSk7XG5cdFx0fSk7XG5cdH1cblxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRJbml0aWFsbHlTZWxlY3RlZE9wdGlvbnMoKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0SW5pdGlhbGx5U2VsZWN0ZWRPcHRpb25zKCkge1xuXHRcdHRoaXMuaW5pdGlhbFNlbGVjdGVkT3B0aW9ucyQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpLnN1YnNjcmliZSgoc2VsZWN0ZWRPcHRpb25zKSA9PiB7XG5cdFx0XHQvLyBSZWFwcGx5aW5nIGNka0xpYnN0Ym94IG11bHRpcGxlIGJlY2F1c2Ugc2VlbXMgdGhpcyBpcyBydW5uaW5nIGJlZm9yZSBlZmZlY3QgdGhhdFxuXHRcdFx0Ly8gdXBkYXRlcyBjZGtsaXN0Ym94LCByZWFwcGx5aW5nIG11bHRpcGxlIHRydWUgc28gd2UgY2FuIHNldCB0aGUgbXVsdGlwbGUgaW5pdGlhbCBvcHRpb25zXG5cdFx0XHRpZiAodGhpcy5fc2VsZWN0U2VydmljZS5tdWx0aXBsZSgpKSB7XG5cdFx0XHRcdHRoaXMuX2Nka0xpc3Rib3gubXVsdGlwbGUgPSB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGNvbnN0IGNka09wdGlvbiBvZiB0aGlzLl9zZWxlY3RTZXJ2aWNlLnBvc3NpYmxlT3B0aW9ucygpKSB7XG5cdFx0XHRcdGlmIChzZWxlY3RlZE9wdGlvbnMuaW5jbHVkZXMoY2RrT3B0aW9uKSkge1xuXHRcdFx0XHRcdGNka09wdGlvbj8uc2VsZWN0KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y2RrT3B0aW9uPy5kZXNlbGVjdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGZvciAoY29uc3QgY2RrT3B0aW9uIG9mIHNlbGVjdGVkT3B0aW9ucykge1xuXHRcdFx0XHRjZGtPcHRpb24/LnNlbGVjdCgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIHVwZGF0ZUFycm93RGlzcGxheSgpOiB2b2lkIHtcblx0XHRjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IHRoaXMudmlld3BvcnQoKS5uYXRpdmVFbGVtZW50O1xuXHRcdHRoaXMuY2FuU2Nyb2xsVXAuc2V0KHNjcm9sbFRvcCA+IDApO1xuXHRcdGNvbnN0IG1heFNjcm9sbCA9IHNjcm9sbEhlaWdodCAtIGNsaWVudEhlaWdodDtcblx0XHR0aGlzLmNhblNjcm9sbERvd24uc2V0KE1hdGguY2VpbChzY3JvbGxUb3ApIDwgbWF4U2Nyb2xsKTtcblx0fVxuXG5cdHB1YmxpYyBoYW5kbGVTY3JvbGwoKSB7XG5cdFx0dGhpcy51cGRhdGVBcnJvd0Rpc3BsYXkoKTtcblx0fVxuXG5cdHB1YmxpYyBmb2N1c0xpc3QoKTogdm9pZCB7XG5cdFx0dGhpcy5fY2RrTGlzdGJveC5mb2N1cygpO1xuXHR9XG5cblx0cHVibGljIG1vdmVGb2N1c1VwKCkge1xuXHRcdHRoaXMudmlld3BvcnQoKS5uYXRpdmVFbGVtZW50LnNjcm9sbEJ5KHsgdG9wOiAtU0NST0xMQllfUElYRUxTLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG5cdFx0aWYgKHRoaXMudmlld3BvcnQoKS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9PT0gMCkge1xuXHRcdFx0dGhpcy5zY3JvbGxVcEJ0bigpLnN0b3BFbWl0dGluZ0V2ZW50cygpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBtb3ZlRm9jdXNEb3duKCkge1xuXHRcdHRoaXMudmlld3BvcnQoKS5uYXRpdmVFbGVtZW50LnNjcm9sbEJ5KHsgdG9wOiBTQ1JPTExCWV9QSVhFTFMsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcblx0XHRjb25zdCB2aWV3cG9ydFNpemUgPSB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcblx0XHRjb25zdCB2aWV3cG9ydFNjcm9sbFBvc2l0aW9uID0gdGhpcy52aWV3cG9ydCgpLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xuXHRcdGlmIChcblx0XHRcdHZpZXdwb3J0U2l6ZSArIHZpZXdwb3J0U2Nyb2xsUG9zaXRpb24gKyBTQ1JPTExCWV9QSVhFTFMgPlxuXHRcdFx0dGhpcy52aWV3cG9ydCgpLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ICsgU0NST0xMQllfUElYRUxTIC8gMlxuXHRcdCkge1xuXHRcdFx0dGhpcy5zY3JvbGxEb3duQnRuKCkuc3RvcEVtaXR0aW5nRXZlbnRzKCk7XG5cdFx0fVxuXHR9XG59XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Directive, signal } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class BrnSelectGroupDirective {
|
|
4
|
+
labelledBy = signal('');
|
|
5
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.5", type: BrnSelectGroupDirective, isStandalone: true, selector: "[brnSelectGroup]", host: { attributes: { "role": "group" }, properties: { "attr.aria-labelledby": "labelledBy()" } }, ngImport: i0 });
|
|
7
|
+
}
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectGroupDirective, decorators: [{
|
|
9
|
+
type: Directive,
|
|
10
|
+
args: [{
|
|
11
|
+
selector: '[brnSelectGroup]',
|
|
12
|
+
standalone: true,
|
|
13
|
+
host: {
|
|
14
|
+
role: 'group',
|
|
15
|
+
'[attr.aria-labelledby]': 'labelledBy()',
|
|
16
|
+
},
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLXNlbGVjdC1ncm91cC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL3NlbGVjdC9zcmMvbGliL2Jybi1zZWxlY3QtZ3JvdXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVVsRCxNQUFNLE9BQU8sdUJBQXVCO0lBQ25CLFVBQVUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7MEhBRDVCLHVCQUF1Qjs4R0FBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQVJuQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUU7d0JBQ0wsSUFBSSxFQUFFLE9BQU87d0JBQ2Isd0JBQXdCLEVBQUUsY0FBYztxQkFDeEM7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6ICdbYnJuU2VsZWN0R3JvdXBdJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aG9zdDoge1xuXHRcdHJvbGU6ICdncm91cCcsXG5cdFx0J1thdHRyLmFyaWEtbGFiZWxsZWRieV0nOiAnbGFiZWxsZWRCeSgpJyxcblx0fSxcbn0pXG5leHBvcnQgY2xhc3MgQnJuU2VsZWN0R3JvdXBEaXJlY3RpdmUge1xuXHRwdWJsaWMgcmVhZG9ubHkgbGFiZWxsZWRCeSA9IHNpZ25hbCgnJyk7XG59XG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Directive, inject } from '@angular/core';
|
|
2
|
+
import { BrnLabelDirective } from '@spartan-ng/brain/label';
|
|
3
|
+
import { BrnSelectGroupDirective } from './brn-select-group.directive';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@spartan-ng/brain/label";
|
|
6
|
+
export class BrnSelectLabelDirective {
|
|
7
|
+
_group = inject(BrnSelectGroupDirective, { optional: true });
|
|
8
|
+
_label = inject(BrnLabelDirective, { host: true });
|
|
9
|
+
constructor() {
|
|
10
|
+
this._group?.labelledBy.set(this._label.id());
|
|
11
|
+
}
|
|
12
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
13
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.5", type: BrnSelectLabelDirective, isStandalone: true, selector: "[brnSelectLabel]", hostDirectives: [{ directive: i1.BrnLabelDirective }], ngImport: i0 });
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectLabelDirective, decorators: [{
|
|
16
|
+
type: Directive,
|
|
17
|
+
args: [{
|
|
18
|
+
selector: '[brnSelectLabel]',
|
|
19
|
+
hostDirectives: [BrnLabelDirective],
|
|
20
|
+
standalone: true,
|
|
21
|
+
}]
|
|
22
|
+
}], ctorParameters: () => [] });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLXNlbGVjdC1sYWJlbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL3NlbGVjdC9zcmMvbGliL2Jybi1zZWxlY3QtbGFiZWwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFPdkUsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQixNQUFNLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0QsTUFBTSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXBFO1FBQ0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDOzBIQU5XLHVCQUF1Qjs4R0FBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQUxuQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLGNBQWMsRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUNuQyxVQUFVLEVBQUUsSUFBSTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnJuTGFiZWxEaXJlY3RpdmUgfSBmcm9tICdAc3BhcnRhbi1uZy9icmFpbi9sYWJlbCc7XG5pbXBvcnQgeyBCcm5TZWxlY3RHcm91cERpcmVjdGl2ZSB9IGZyb20gJy4vYnJuLXNlbGVjdC1ncm91cC5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6ICdbYnJuU2VsZWN0TGFiZWxdJyxcblx0aG9zdERpcmVjdGl2ZXM6IFtCcm5MYWJlbERpcmVjdGl2ZV0sXG5cdHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEJyblNlbGVjdExhYmVsRGlyZWN0aXZlIHtcblx0cHJpdmF0ZSByZWFkb25seSBfZ3JvdXAgPSBpbmplY3QoQnJuU2VsZWN0R3JvdXBEaXJlY3RpdmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2xhYmVsID0gaW5qZWN0KEJybkxhYmVsRGlyZWN0aXZlLCB7IGhvc3Q6IHRydWUgfSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5fZ3JvdXA/LmxhYmVsbGVkQnkuc2V0KHRoaXMuX2xhYmVsLmlkKCkpO1xuXHR9XG59XG4iXX0=
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { CdkOption } from '@angular/cdk/listbox';
|
|
2
|
+
import { Directive, ElementRef, booleanAttribute, computed, effect, inject, input, signal, } from '@angular/core';
|
|
3
|
+
import { BrnSelectService } from './brn-select.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/cdk/listbox";
|
|
6
|
+
export class BrnSelectOptionDirective {
|
|
7
|
+
_cdkSelectOption = inject(CdkOption, { host: true });
|
|
8
|
+
_selectService = inject(BrnSelectService);
|
|
9
|
+
_focused = signal(false);
|
|
10
|
+
elementRef = inject(ElementRef);
|
|
11
|
+
selected = computed(() => {
|
|
12
|
+
if (Array.isArray(this._selectService.value())) {
|
|
13
|
+
const itemFound = this._selectService.value().find((val) => val === this._cdkSelectOption.value);
|
|
14
|
+
return !!itemFound;
|
|
15
|
+
}
|
|
16
|
+
return this._cdkSelectOption.value === this._selectService.value();
|
|
17
|
+
});
|
|
18
|
+
focused = computed(() => this._focused());
|
|
19
|
+
checkedState = computed(() => (this.selected() ? 'checked' : 'unchecked'));
|
|
20
|
+
dir = computed(() => this._selectService.dir());
|
|
21
|
+
constructor() {
|
|
22
|
+
effect(() => {
|
|
23
|
+
this._cdkSelectOption.value = this.value();
|
|
24
|
+
});
|
|
25
|
+
effect(() => {
|
|
26
|
+
this._cdkSelectOption.disabled = this.disabledSignal();
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
ngAfterContentChecked() {
|
|
30
|
+
this._cdkSelectOption.value = this.value();
|
|
31
|
+
}
|
|
32
|
+
value = input(null);
|
|
33
|
+
// we use "disabledSignal" here because disabled is already defined in the FocusableOption interface
|
|
34
|
+
disabledSignal = input(false, {
|
|
35
|
+
alias: 'disabled',
|
|
36
|
+
transform: booleanAttribute,
|
|
37
|
+
});
|
|
38
|
+
hover() {
|
|
39
|
+
this.focus();
|
|
40
|
+
}
|
|
41
|
+
focus() {
|
|
42
|
+
this._cdkSelectOption.focus();
|
|
43
|
+
this._focused.set(true);
|
|
44
|
+
}
|
|
45
|
+
blur() {
|
|
46
|
+
this._focused.set(false);
|
|
47
|
+
}
|
|
48
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectOptionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
49
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.5", type: BrnSelectOptionDirective, isStandalone: true, selector: "[brnOption]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabledSignal: { classPropertyName: "disabledSignal", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "hover()", "blur": "blur()" }, properties: { "attr.dir": "_selectService.dir()", "attr.data-disabled": "disabledSignal() ? '' : undefined" } }, hostDirectives: [{ directive: i1.CdkOption }], ngImport: i0 });
|
|
50
|
+
}
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectOptionDirective, decorators: [{
|
|
52
|
+
type: Directive,
|
|
53
|
+
args: [{
|
|
54
|
+
selector: '[brnOption]',
|
|
55
|
+
standalone: true,
|
|
56
|
+
hostDirectives: [CdkOption],
|
|
57
|
+
host: {
|
|
58
|
+
'(mouseenter)': 'hover()',
|
|
59
|
+
'(blur)': 'blur()',
|
|
60
|
+
'[attr.dir]': '_selectService.dir()',
|
|
61
|
+
'[attr.data-disabled]': "disabledSignal() ? '' : undefined",
|
|
62
|
+
},
|
|
63
|
+
}]
|
|
64
|
+
}], ctorParameters: () => [] });
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLXNlbGVjdC1vcHRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9zZWxlY3Qvc3JjL2xpYi9icm4tc2VsZWN0LW9wdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFFTixTQUFTLEVBQ1QsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFheEQsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQixnQkFBZ0IsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkQsY0FBYyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRTVDLFFBQVEsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDbkMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVoQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUN4QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDaEQsTUFBTSxTQUFTLEdBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQXFCLENBQUMsSUFBSSxDQUNyRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQzVDLENBQUM7WUFDRixPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDcEIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BFLENBQUMsQ0FBQyxDQUFDO0lBQ2EsT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxQyxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDM0UsR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFFaEU7UUFDQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBQ0QscUJBQXFCO1FBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFTSxLQUFLLEdBQUcsS0FBSyxDQUFpQixJQUFJLENBQUMsQ0FBQztJQUUzQyxvR0FBb0c7SUFDcEYsY0FBYyxHQUFHLEtBQUssQ0FBd0IsS0FBSyxFQUFFO1FBQ3BFLEtBQUssRUFBRSxVQUFVO1FBQ2pCLFNBQVMsRUFBRSxnQkFBZ0I7S0FDM0IsQ0FBQyxDQUFDO0lBRU8sS0FBSztRQUNkLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTSxLQUFLO1FBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxJQUFJO1FBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQzswSEFuRFcsd0JBQXdCOzhHQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBWHBDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQzNCLElBQUksRUFBRTt3QkFDTCxjQUFjLEVBQUUsU0FBUzt3QkFDekIsUUFBUSxFQUFFLFFBQVE7d0JBQ2xCLFlBQVksRUFBRSxzQkFBc0I7d0JBQ3BDLHNCQUFzQixFQUFFLG1DQUFtQztxQkFDM0Q7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZvY3VzYWJsZU9wdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBDZGtPcHRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvbGlzdGJveCc7XG5pbXBvcnQge1xuXHRBZnRlckNvbnRlbnRDaGVja2VkLFxuXHREaXJlY3RpdmUsXG5cdEVsZW1lbnRSZWYsXG5cdGJvb2xlYW5BdHRyaWJ1dGUsXG5cdGNvbXB1dGVkLFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCcm5TZWxlY3RTZXJ2aWNlIH0gZnJvbSAnLi9icm4tc2VsZWN0LnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6ICdbYnJuT3B0aW9uXScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGhvc3REaXJlY3RpdmVzOiBbQ2RrT3B0aW9uXSxcblx0aG9zdDoge1xuXHRcdCcobW91c2VlbnRlciknOiAnaG92ZXIoKScsXG5cdFx0JyhibHVyKSc6ICdibHVyKCknLFxuXHRcdCdbYXR0ci5kaXJdJzogJ19zZWxlY3RTZXJ2aWNlLmRpcigpJyxcblx0XHQnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiBcImRpc2FibGVkU2lnbmFsKCkgPyAnJyA6IHVuZGVmaW5lZFwiLFxuXHR9LFxufSlcbmV4cG9ydCBjbGFzcyBCcm5TZWxlY3RPcHRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBGb2N1c2FibGVPcHRpb24sIEFmdGVyQ29udGVudENoZWNrZWQge1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jZGtTZWxlY3RPcHRpb24gPSBpbmplY3QoQ2RrT3B0aW9uLCB7IGhvc3Q6IHRydWUgfSk7XG5cdHByb3RlY3RlZCByZWFkb25seSBfc2VsZWN0U2VydmljZSA9IGluamVjdChCcm5TZWxlY3RTZXJ2aWNlKTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9mb2N1c2VkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblx0cHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cblx0cHVibGljIHJlYWRvbmx5IHNlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXMuX3NlbGVjdFNlcnZpY2UudmFsdWUoKSkpIHtcblx0XHRcdGNvbnN0IGl0ZW1Gb3VuZCA9ICh0aGlzLl9zZWxlY3RTZXJ2aWNlLnZhbHVlKCkgYXMgQXJyYXk8dW5rbm93bj4pLmZpbmQoXG5cdFx0XHRcdCh2YWwpID0+IHZhbCA9PT0gdGhpcy5fY2RrU2VsZWN0T3B0aW9uLnZhbHVlLFxuXHRcdFx0KTtcblx0XHRcdHJldHVybiAhIWl0ZW1Gb3VuZDtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuX2Nka1NlbGVjdE9wdGlvbi52YWx1ZSA9PT0gdGhpcy5fc2VsZWN0U2VydmljZS52YWx1ZSgpO1xuXHR9KTtcblx0cHVibGljIHJlYWRvbmx5IGZvY3VzZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9mb2N1c2VkKCkpO1xuXHRwdWJsaWMgcmVhZG9ubHkgY2hlY2tlZFN0YXRlID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuc2VsZWN0ZWQoKSA/ICdjaGVja2VkJyA6ICd1bmNoZWNrZWQnKSk7XG5cdHB1YmxpYyByZWFkb25seSBkaXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9zZWxlY3RTZXJ2aWNlLmRpcigpKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0dGhpcy5fY2RrU2VsZWN0T3B0aW9uLnZhbHVlID0gdGhpcy52YWx1ZSgpO1xuXHRcdH0pO1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHR0aGlzLl9jZGtTZWxlY3RPcHRpb24uZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkU2lnbmFsKCk7XG5cdFx0fSk7XG5cdH1cblx0bmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuXHRcdHRoaXMuX2Nka1NlbGVjdE9wdGlvbi52YWx1ZSA9IHRoaXMudmFsdWUoKTtcblx0fVxuXG5cdHB1YmxpYyB2YWx1ZSA9IGlucHV0PHVua25vd24gfCBudWxsPihudWxsKTtcblxuXHQvLyB3ZSB1c2UgXCJkaXNhYmxlZFNpZ25hbFwiIGhlcmUgYmVjYXVzZSBkaXNhYmxlZCBpcyBhbHJlYWR5IGRlZmluZWQgaW4gdGhlIEZvY3VzYWJsZU9wdGlvbiBpbnRlcmZhY2Vcblx0cHVibGljIHJlYWRvbmx5IGRpc2FibGVkU2lnbmFsID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwge1xuXHRcdGFsaWFzOiAnZGlzYWJsZWQnLFxuXHRcdHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcblx0fSk7XG5cblx0cHJvdGVjdGVkIGhvdmVyKCk6IHZvaWQge1xuXHRcdHRoaXMuZm9jdXMoKTtcblx0fVxuXG5cdHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcblx0XHR0aGlzLl9jZGtTZWxlY3RPcHRpb24uZm9jdXMoKTtcblx0XHR0aGlzLl9mb2N1c2VkLnNldCh0cnVlKTtcblx0fVxuXG5cdHB1YmxpYyBibHVyKCk6IHZvaWQge1xuXHRcdHRoaXMuX2ZvY3VzZWQuc2V0KGZhbHNlKTtcblx0fVxufVxuIl19
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, input } from '@angular/core';
|
|
2
|
+
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
3
|
+
import { BrnSelectService } from './brn-select.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class BrnSelectValueComponent {
|
|
6
|
+
_selectService = inject(BrnSelectService);
|
|
7
|
+
id = computed(() => `${this._selectService.id()}--value`);
|
|
8
|
+
placeholder = computed(() => this._selectService.placeholder());
|
|
9
|
+
value = null;
|
|
10
|
+
transformFn = input((values) => (values ?? []).join(', '));
|
|
11
|
+
constructor() {
|
|
12
|
+
const cdr = inject(ChangeDetectorRef);
|
|
13
|
+
// In certain cases (when using a computed signal for value) where the value of the select and the options are
|
|
14
|
+
// changed dynamically, the template does not update until the next frame. To work around this we can use a simple
|
|
15
|
+
// string variable in the template and manually trigger change detection when we update it.
|
|
16
|
+
toObservable(this._selectService.selectedOptions)
|
|
17
|
+
.pipe(takeUntilDestroyed())
|
|
18
|
+
.subscribe((value) => {
|
|
19
|
+
if (value.length === 0) {
|
|
20
|
+
this.value = null;
|
|
21
|
+
cdr.detectChanges();
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const selectedLabels = value.map((selectedOption) => selectedOption?.getLabel());
|
|
25
|
+
if (this._selectService.dir() === 'rtl') {
|
|
26
|
+
selectedLabels.reverse();
|
|
27
|
+
}
|
|
28
|
+
const result = this.transformFn()(selectedLabels);
|
|
29
|
+
this.value = result;
|
|
30
|
+
cdr.detectChanges();
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
34
|
+
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.5", type: BrnSelectValueComponent, isStandalone: true, selector: "brn-select-value, hlm-select-value", inputs: { transformFn: { classPropertyName: "transformFn", publicName: "transformFn", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "id()" } }, ngImport: i0, template: `
|
|
35
|
+
{{ value || placeholder() }}
|
|
36
|
+
`, isInline: true, styles: [":host{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;white-space:nowrap;pointer-events:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
37
|
+
}
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectValueComponent, decorators: [{
|
|
39
|
+
type: Component,
|
|
40
|
+
args: [{ selector: 'brn-select-value, hlm-select-value', template: `
|
|
41
|
+
{{ value || placeholder() }}
|
|
42
|
+
`, host: {
|
|
43
|
+
'[id]': 'id()',
|
|
44
|
+
}, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;white-space:nowrap;pointer-events:none}\n"] }]
|
|
45
|
+
}], ctorParameters: () => [] });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLXNlbGVjdC12YWx1ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL3NlbGVjdC9zcmMvbGliL2Jybi1zZWxlY3QtdmFsdWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQXdCeEQsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQixjQUFjLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFM0MsRUFBRSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzFELFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLEtBQUssR0FBa0IsSUFBSSxDQUFDO0lBRW5CLFdBQVcsR0FBRyxLQUFLLENBQTBDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUVwSDtRQUNDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXRDLDhHQUE4RztRQUM5RyxrSEFBa0g7UUFDbEgsMkZBQTJGO1FBQzNGLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQzthQUMvQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUMxQixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNwQixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNsQixHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3BCLE9BQU87WUFDUixDQUFDO1lBQ0QsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFFakYsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUN6QyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsQ0FBQztZQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztZQUNwQixHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzBIQWhDVyx1QkFBdUI7OEdBQXZCLHVCQUF1Qiw0UkFwQnpCOztFQUVUOzsyRkFrQlcsdUJBQXVCO2tCQXRCbkMsU0FBUzsrQkFDQyxvQ0FBb0MsWUFDcEM7O0VBRVQsUUFDSzt3QkFDTCxNQUFNLEVBQUUsTUFBTTtxQkFDZCxjQVlXLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkLCB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBCcm5TZWxlY3RTZXJ2aWNlIH0gZnJvbSAnLi9icm4tc2VsZWN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdicm4tc2VsZWN0LXZhbHVlLCBobG0tc2VsZWN0LXZhbHVlJyxcblx0dGVtcGxhdGU6IGBcblx0XHR7eyB2YWx1ZSB8fCBwbGFjZWhvbGRlcigpIH19XG5cdGAsXG5cdGhvc3Q6IHtcblx0XHQnW2lkXSc6ICdpZCgpJyxcblx0fSxcblx0c3R5bGVzOiBbXG5cdFx0YFxuXHRcdFx0Omhvc3Qge1xuXHRcdFx0XHRkaXNwbGF5OiAtd2Via2l0LWJveDtcblx0XHRcdFx0LXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcblx0XHRcdFx0LXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuXHRcdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHRcdH1cblx0XHRgLFxuXHRdLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQnJuU2VsZWN0VmFsdWVDb21wb25lbnQge1xuXHRwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3RTZXJ2aWNlID0gaW5qZWN0KEJyblNlbGVjdFNlcnZpY2UpO1xuXG5cdHB1YmxpYyByZWFkb25seSBpZCA9IGNvbXB1dGVkKCgpID0+IGAke3RoaXMuX3NlbGVjdFNlcnZpY2UuaWQoKX0tLXZhbHVlYCk7XG5cdHB1YmxpYyByZWFkb25seSBwbGFjZWhvbGRlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3NlbGVjdFNlcnZpY2UucGxhY2Vob2xkZXIoKSk7XG5cdHB1YmxpYyB2YWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cblx0cHVibGljIHJlYWRvbmx5IHRyYW5zZm9ybUZuID0gaW5wdXQ8KHZhbHVlczogKHN0cmluZyB8IHVuZGVmaW5lZClbXSkgPT4gYW55PigodmFsdWVzKSA9PiAodmFsdWVzID8/IFtdKS5qb2luKCcsICcpKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG5cdFx0Ly8gSW4gY2VydGFpbiBjYXNlcyAod2hlbiB1c2luZyBhIGNvbXB1dGVkIHNpZ25hbCBmb3IgdmFsdWUpIHdoZXJlIHRoZSB2YWx1ZSBvZiB0aGUgc2VsZWN0IGFuZCB0aGUgb3B0aW9ucyBhcmVcblx0XHQvLyBjaGFuZ2VkIGR5bmFtaWNhbGx5LCB0aGUgdGVtcGxhdGUgZG9lcyBub3QgdXBkYXRlIHVudGlsIHRoZSBuZXh0IGZyYW1lLiBUbyB3b3JrIGFyb3VuZCB0aGlzIHdlIGNhbiB1c2UgYSBzaW1wbGVcblx0XHQvLyBzdHJpbmcgdmFyaWFibGUgaW4gdGhlIHRlbXBsYXRlIGFuZCBtYW51YWxseSB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gd2hlbiB3ZSB1cGRhdGUgaXQuXG5cdFx0dG9PYnNlcnZhYmxlKHRoaXMuX3NlbGVjdFNlcnZpY2Uuc2VsZWN0ZWRPcHRpb25zKVxuXHRcdFx0LnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG5cdFx0XHQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRpZiAodmFsdWUubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdFx0dGhpcy52YWx1ZSA9IG51bGw7XG5cdFx0XHRcdFx0Y2RyLmRldGVjdENoYW5nZXMoKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3Qgc2VsZWN0ZWRMYWJlbHMgPSB2YWx1ZS5tYXAoKHNlbGVjdGVkT3B0aW9uKSA9PiBzZWxlY3RlZE9wdGlvbj8uZ2V0TGFiZWwoKSk7XG5cblx0XHRcdFx0aWYgKHRoaXMuX3NlbGVjdFNlcnZpY2UuZGlyKCkgPT09ICdydGwnKSB7XG5cdFx0XHRcdFx0c2VsZWN0ZWRMYWJlbHMucmV2ZXJzZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IHRoaXMudHJhbnNmb3JtRm4oKShzZWxlY3RlZExhYmVscyk7XG5cdFx0XHRcdHRoaXMudmFsdWUgPSByZXN1bHQ7XG5cdFx0XHRcdGNkci5kZXRlY3RDaGFuZ2VzKCk7XG5cdFx0XHR9KTtcblx0fVxufVxuIl19
|