@odx/angular 6.0.0 → 6.1.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/CHANGELOG.md +22 -0
- package/animations/lib/expand.d.ts +44 -0
- package/animations/lib/fade.d.ts +70 -0
- package/animations/lib/slide.d.ts +21 -0
- package/animations/lib/wait-for-child-animations.d.ts +38 -0
- package/breakpoints/lib/breakpoints.config.d.ts +38 -0
- package/breakpoints/lib/breakpoints.service.d.ts +43 -0
- package/breakpoints/lib/directives/match-breakpoints.directive.d.ts +36 -0
- package/breakpoints/lib/helpers/configure-breakpoint.d.ts +19 -0
- package/cdk/a11y/lib/directives/interactive.directive.d.ts +32 -0
- package/cdk/a11y/lib/directives/list-focus-manager-option.directive.d.ts +22 -0
- package/cdk/a11y/lib/directives/list-focus-manager.directive.d.ts +17 -0
- package/cdk/active-indicator/lib/active-indicator.directive.d.ts +63 -0
- package/cdk/autocomplete-control/lib/autocomplete-control.d.ts +53 -0
- package/cdk/checkbox-control/lib/checkbox-control.directive.d.ts +3 -0
- package/cdk/connected-overlay/lib/connected-overlay.service.d.ts +44 -0
- package/cdk/connected-overlay/lib/helpers/compute-overlay-position.d.ts +10 -0
- package/cdk/connected-overlay/lib/models/connected-overlay-ref.d.ts +49 -0
- package/cdk/custom-form-control/lib/custom-form-control.d.ts +108 -0
- package/cdk/custom-form-control/lib/input-control.directive.d.ts +75 -0
- package/cdk/dynamic-view/lib/dynamic-view.directive.d.ts +25 -0
- package/cdk/dynamic-view/lib/dynamic-view.service.d.ts +30 -0
- package/cdk/dynamic-view/lib/helpers/create-projectable-nodes.d.ts +22 -0
- package/cdk/dynamic-view/lib/helpers/is-dynamic-text-content.d.ts +22 -0
- package/cdk/dynamic-view/lib/helpers/is-dynamic-view.d.ts +22 -0
- package/cdk/dynamic-view/lib/models/dynamic-component-ref.d.ts +39 -0
- package/cdk/dynamic-view/lib/models/dynamic-template-ref.d.ts +36 -0
- package/cdk/dynamic-view/lib/tokens/dynamic-view-context.d.ts +4 -0
- package/cdk/dynamic-view/lib/tokens/dynamic-view-default-host.d.ts +10 -0
- package/cdk/event-plugins/lib/event-plugins.config.d.ts +35 -0
- package/cdk/event-plugins/lib/models/event-plugin.d.ts +57 -0
- package/cdk/event-plugins/lib/plugins/debounce-event-plugin.d.ts +32 -0
- package/cdk/event-plugins/lib/plugins/defer-event-plugin.d.ts +24 -0
- package/cdk/expandable/lib/directives/expandable-container.directive.d.ts +41 -0
- package/cdk/expandable/lib/directives/expandable-item.directive.d.ts +47 -0
- package/cdk/option-control/lib/option-control.d.ts +47 -0
- package/cdk/radio-group-control/lib/radio-control.directive.d.ts +8 -0
- package/cdk/radio-group-control/lib/radio-group-control.directive.d.ts +11 -0
- package/components/accordion/lib/accordion.component.d.ts +8 -0
- package/components/accordion/lib/components/accordion-item/accordion-item.component.d.ts +37 -1
- package/components/accordion/lib/directives/accordion-item-title.d.ts +3 -0
- package/components/action-group/action-group.component.d.ts +6 -0
- package/components/area-header/area-header.component.d.ts +8 -0
- package/components/area-header/directives/area-header-content.directive.d.ts +3 -0
- package/components/area-header/directives/area-header-subtitle.directive.d.ts +3 -0
- package/components/autocomplete/lib/autocomplete.component.d.ts +18 -0
- package/components/avatar/lib/avatar.component.d.ts +8 -0
- package/components/badge/lib/badge.component.d.ts +10 -0
- package/components/badge/lib/badge.directive.d.ts +15 -0
- package/components/bar/lib/bar.component.d.ts +7 -0
- package/components/bar/lib/directives/bar-button.directive.d.ts +3 -0
- package/components/bar/lib/directives/bar-label.directive.d.ts +3 -0
- package/components/breadcrumbs/lib/breadcrumbs.component.d.ts +3 -0
- package/components/button/lib/button.component.d.ts +10 -0
- package/components/button-group/lib/button-group.component.d.ts +15 -0
- package/components/calendar/lib/calendar.component.d.ts +48 -0
- package/components/calendar/lib/calendar.config.d.ts +17 -0
- package/components/calendar/lib/calendar.service.d.ts +48 -0
- package/components/calendar/lib/components/calendar-header/calendar-header.component.d.ts +24 -0
- package/components/calendar/lib/components/calendar-month/calendar-month.component.d.ts +6 -0
- package/components/calendar/lib/components/calendar-year/calendar-year.component.d.ts +6 -0
- package/components/calendar/lib/components/calendar-years/calendar-years.component.d.ts +6 -0
- package/components/calendar/lib/daterange.service.d.ts +16 -0
- package/components/calendar/lib/directives/calendar-cell.directive.d.ts +37 -0
- package/components/calendar/lib/directives/calendar-view.directive.d.ts +41 -0
- package/components/calendar/lib/pipes/date-label.pipe.d.ts +5 -0
- package/components/calendar/lib/services/calendar-month.service.d.ts +1 -0
- package/components/calendar/lib/services/calendar-year.service.d.ts +1 -0
- package/components/calendar/lib/services/calendar-years.service.d.ts +1 -0
- package/components/calendar/lib/utils/check-cell-in-range.d.ts +1 -0
- package/components/calendar/lib/utils/check-identical-date.d.ts +1 -0
- package/components/calendar/lib/utils/get-A11y-label.d.ts +1 -0
- package/components/calendar/lib/utils/is-date-disabled.d.ts +1 -0
- package/components/calendar/lib/utils/parse-date.d.ts +1 -0
- package/components/calendar/lib/utils/validate-daterange.d.ts +1 -0
- package/components/calendar/lib/utils/validate-max-date.d.ts +1 -0
- package/components/calendar/lib/utils/validate-min-date.d.ts +1 -0
- package/components/calendar/lib/utils/validate-next-date-set.d.ts +1 -0
- package/components/calendar/lib/utils/validate-previous-date-set.d.ts +1 -0
- package/components/checkbox/lib/checkbox.component.d.ts +32 -0
- package/components/checkbox/lib/checkbox.validator.d.ts +23 -0
- package/components/chip/lib/components/chip/chip.component.d.ts +14 -0
- package/components/chip/lib/components/chip-list/chip-list.component.d.ts +3 -0
- package/components/chip/lib/components/chip-list-row/chip-list-row.component.d.ts +3 -0
- package/components/circular-progress/lib/circular-progress.component.d.ts +20 -0
- package/components/content-box/lib/content-box.component.d.ts +3 -0
- package/components/content-box/lib/directives/content-box-footer.directive.d.ts +3 -0
- package/components/content-box/lib/directives/content-box-header.directive.d.ts +3 -0
- package/components/datepicker/lib/datepicker.component.d.ts +47 -0
- package/components/datepicker/lib/datepicker.config.d.ts +19 -0
- package/components/datepicker/lib/directives/datepicker-input-control.directive.d.ts +30 -0
- package/components/datepicker/lib/utils/get-datepicker-input-pattern.d.ts +2 -0
- package/components/datepicker/lib/utils/get-datepicker-input-value-as-date.d.ts +1 -0
- package/components/daterangepicker/lib/daterangepicker.component.d.ts +89 -0
- package/components/daterangepicker/lib/daterangepicker.config.d.ts +19 -0
- package/components/daterangepicker/lib/directives/daterangepicker-input-control.directive.d.ts +30 -0
- package/components/daterangepicker/lib/range.validator.d.ts +15 -0
- package/components/daterangepicker/lib/required.validator.d.ts +6 -0
- package/components/daterangepicker/lib/utils/get-daterangepicker-input-pattern.d.ts +2 -0
- package/components/daterangepicker/lib/utils/get-daterangepicker-input-value-as-date.d.ts +1 -0
- package/components/dropdown/lib/dropdown.component.d.ts +16 -0
- package/components/dropdown/lib/dropdown.directive.d.ts +67 -0
- package/components/dropdown/lib/helpers/close-current-dropdown.d.ts +5 -0
- package/components/error-page/lib/error-page.component.d.ts +7 -0
- package/components/error-page/lib/error-page.config.d.ts +18 -0
- package/components/footer/lib/footer.component.d.ts +9 -6
- package/components/footer/lib/footer.config.d.ts +2 -0
- package/components/form-field/lib/components/form-field-info/form-field-info.component.d.ts +13 -0
- package/components/form-field/lib/components/form-group/form-group.component.d.ts +16 -0
- package/components/form-field/lib/directives/form-field-control.directive.d.ts +5 -0
- package/components/form-field/lib/directives/form-field-error.directive.d.ts +6 -0
- package/components/form-field/lib/directives/form-field-hint.directive.d.ts +3 -0
- package/components/form-field/lib/directives/form-field-label.directive.d.ts +3 -0
- package/components/form-field/lib/directives/form.directive.d.ts +13 -0
- package/components/form-field/lib/form-field.component.d.ts +20 -0
- package/components/form-field/lib/form-field.service.d.ts +42 -0
- package/components/form-field/lib/services/form-field-error.service.d.ts +24 -0
- package/components/header/lib/directives/header-avatar.directive.d.ts +4 -0
- package/components/header/lib/directives/header-title.directive.d.ts +3 -0
- package/components/header/lib/header.component.d.ts +3 -0
- package/components/header-navigation/lib/directives/header-navigation-link.directive.d.ts +3 -0
- package/components/header-navigation/lib/header-navigation.component.d.ts +6 -0
- package/components/icon/lib/helpers/unpack-icon-identifier.d.ts +14 -0
- package/components/icon/lib/icon.component.d.ts +24 -0
- package/components/icon/lib/icon.config.d.ts +26 -0
- package/components/inline-message/lib/inline-message.component.d.ts +13 -0
- package/components/link/link.directive.d.ts +3 -0
- package/components/list/lib/components/expandable-list-item/expandable-list-item.component.d.ts +6 -0
- package/components/list/lib/components/list-item/list-item.component.d.ts +17 -1
- package/components/list/lib/list.component.d.ts +5 -0
- package/components/loading-spinner/lib/loading-spinner.component.d.ts +8 -0
- package/components/loading-spinner/lib/loading-spinner.directive.d.ts +22 -0
- package/components/logo/logo.directive.d.ts +15 -0
- package/components/main-menu/lib/directives/main-menu-button.directive.d.ts +5 -1
- package/components/main-menu/lib/directives/main-menu-close.directive.d.ts +3 -0
- package/components/main-menu/lib/directives/main-menu-item.directive.d.ts +16 -0
- package/components/main-menu/lib/helpers/create-main-menu-links.d.ts +1 -0
- package/components/main-menu/lib/main-menu.component.d.ts +42 -0
- package/components/main-menu/lib/main-menu.config.d.ts +31 -0
- package/components/main-menu/lib/main-menu.service.d.ts +28 -0
- package/components/mainfilter-group/lib/mainfilter-group.component.d.ts +4 -0
- package/components/menu/lib/directives/menu-item.directive.d.ts +6 -0
- package/components/menu/lib/menu.component.d.ts +13 -1
- package/components/menu/lib/menu.directive.d.ts +31 -0
- package/components/modal/lib/components/basic-modal/basic-modal.component.d.ts +14 -0
- package/components/modal/lib/components/modal-footer/modal-footer.component.d.ts +3 -0
- package/components/modal/lib/components/modal-header/modal-header.component.d.ts +9 -0
- package/components/modal/lib/components/modal-hero/modal-hero.component.d.ts +21 -0
- package/components/modal/lib/directives/modal-close.directive.d.ts +25 -1
- package/components/modal/lib/directives/modal-content.directive.d.ts +3 -0
- package/components/modal/lib/directives/modal-dismiss.directive.d.ts +18 -1
- package/components/modal/lib/helpers/inject-modal-ref.d.ts +21 -0
- package/components/modal/lib/helpers/provide-modal-ref.d.ts +9 -0
- package/components/modal/lib/modal.component.d.ts +25 -0
- package/components/modal/lib/modal.config.d.ts +33 -0
- package/components/modal/lib/modal.directive.d.ts +29 -0
- package/components/modal/lib/modal.service.d.ts +54 -0
- package/components/modal/lib/models/modal-ref.d.ts +34 -0
- package/components/navigation-back/lib/navigation-back.component.d.ts +3 -0
- package/components/notification/lib/components/notification-center/notification-center.component.d.ts +0 -2
- package/components/notification/lib/directives/notification-center.directive.d.ts +18 -4
- package/components/notification/lib/helpers/get-notifications-by-tag.d.ts +1 -0
- package/components/notification/lib/helpers/sort-notifications.d.ts +1 -0
- package/components/notification/lib/helpers/to-notification-collection.d.ts +1 -0
- package/components/notification/lib/models/notification-feature.d.ts +15 -0
- package/components/notification/lib/notification.config.d.ts +54 -0
- package/components/notification/lib/notification.logger.d.ts +1 -0
- package/components/notification/lib/notification.service.d.ts +55 -0
- package/components/notification/lib/notification.tokens.d.ts +3 -0
- package/components/notification/lib/services/notification-center.service.d.ts +9 -0
- package/components/paginator/lib/paginator.component.d.ts +89 -0
- package/components/paginator/lib/paginator.config.d.ts +24 -2
- package/components/progress/lib/progress.component.d.ts +15 -0
- package/components/radio-group/lib/components/radio-button/radio-button.component.d.ts +18 -1
- package/components/radio-group/lib/radio-group.component.d.ts +11 -0
- package/components/rail-navigation/lib/components/rail-navigation-item/rail-navigation-item.component.d.ts +19 -0
- package/components/rail-navigation/lib/rail-navigation.component.d.ts +26 -0
- package/components/rich-list/lib/components/rich-list-content/rich-list-content.component.d.ts +4 -0
- package/components/rich-list/lib/components/rich-list-header/rich-list-header.component.d.ts +4 -0
- package/components/rich-list/lib/components/rich-list-item/rich-list-item.component.d.ts +9 -1
- package/components/rich-list/lib/rich-list.component.d.ts +9 -2
- package/components/select/lib/components/select-option/select-option.component.d.ts +39 -2
- package/components/select/lib/directives/select-input-control.directive.d.ts +11 -0
- package/components/select/lib/pipes/select-search-filter.pipe.d.ts +10 -0
- package/components/select/lib/select.component.d.ts +59 -0
- package/components/slider/lib/slider.directive.d.ts +19 -0
- package/components/spinbox/lib/spinbox.component.d.ts +16 -0
- package/components/switch/lib/switch.component.d.ts +10 -0
- package/components/switch/lib/switch.validator.d.ts +12 -0
- package/components/tab-bar/lib/components/tab-bar-item/tab-bar-item.component.d.ts +28 -0
- package/components/tab-bar/lib/tab-bar.component.d.ts +69 -0
- package/components/table/lib/components/check-cell/check-cell.component.d.ts +18 -0
- package/components/table/lib/components/header-title/header-title.component.d.ts +33 -1
- package/components/table/lib/directives/table-cell.directive.d.ts +4 -0
- package/components/table/lib/directives/table-row.directive.d.ts +4 -0
- package/components/table/lib/table.component.d.ts +36 -0
- package/components/timepicker/lib/timepicker.component.d.ts +11 -2
- package/components/timepicker/lib/utils/generate-time-stamps.d.ts +2 -1
- package/components/timepicker/lib/utils/ngx-mask-helper.d.ts +2 -2
- package/components/toast/lib/components/toast-item/toast-item.component.d.ts +5 -4
- package/components/toast/lib/models/toast.d.ts +4 -2
- package/components/toast/lib/toast.config.d.ts +26 -0
- package/components/toast/lib/toast.service.d.ts +35 -0
- package/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.d.ts +11 -0
- package/components/toggle-button-group/lib/toggle-button-group.component.d.ts +12 -0
- package/components/tooltip/lib/helpers/resolve-tooltip-trigger-events.d.ts +7 -0
- package/components/tooltip/lib/tooltip.component.d.ts +20 -0
- package/components/tooltip/lib/tooltip.directive.d.ts +35 -0
- package/components/wizard/lib/components/wizard-step/wizard-step.component.d.ts +34 -0
- package/components/wizard/lib/wizard.component.d.ts +20 -0
- package/esm2022/animations/lib/expand.mjs +45 -1
- package/esm2022/animations/lib/fade.mjs +71 -1
- package/esm2022/animations/lib/slide.mjs +22 -1
- package/esm2022/animations/lib/wait-for-child-animations.mjs +39 -1
- package/esm2022/breakpoints/lib/breakpoints.config.mjs +39 -1
- package/esm2022/breakpoints/lib/breakpoints.service.mjs +44 -1
- package/esm2022/breakpoints/lib/directives/match-breakpoints.directive.mjs +37 -1
- package/esm2022/breakpoints/lib/helpers/configure-breakpoint.mjs +20 -1
- package/esm2022/cdk/a11y/lib/directives/interactive.directive.mjs +33 -1
- package/esm2022/cdk/a11y/lib/directives/list-focus-manager-option.directive.mjs +23 -1
- package/esm2022/cdk/a11y/lib/directives/list-focus-manager.directive.mjs +18 -1
- package/esm2022/cdk/active-indicator/lib/active-indicator.directive.mjs +64 -1
- package/esm2022/cdk/autocomplete-control/lib/autocomplete-control.mjs +40 -2
- package/esm2022/cdk/checkbox-control/lib/checkbox-control.directive.mjs +4 -1
- package/esm2022/cdk/connected-overlay/lib/connected-overlay.service.mjs +45 -1
- package/esm2022/cdk/connected-overlay/lib/helpers/compute-overlay-position.mjs +11 -1
- package/esm2022/cdk/connected-overlay/lib/models/connected-overlay-ref.mjs +50 -1
- package/esm2022/cdk/custom-form-control/lib/custom-form-control.mjs +109 -3
- package/esm2022/cdk/custom-form-control/lib/input-control.directive.mjs +76 -1
- package/esm2022/cdk/dynamic-view/lib/dynamic-view.directive.mjs +18 -1
- package/esm2022/cdk/dynamic-view/lib/dynamic-view.service.mjs +31 -1
- package/esm2022/cdk/dynamic-view/lib/helpers/create-projectable-nodes.mjs +23 -1
- package/esm2022/cdk/dynamic-view/lib/helpers/is-dynamic-text-content.mjs +23 -1
- package/esm2022/cdk/dynamic-view/lib/helpers/is-dynamic-view.mjs +23 -1
- package/esm2022/cdk/dynamic-view/lib/models/dynamic-component-ref.mjs +40 -1
- package/esm2022/cdk/dynamic-view/lib/models/dynamic-template-ref.mjs +37 -1
- package/esm2022/cdk/dynamic-view/lib/tokens/dynamic-view-context.mjs +5 -1
- package/esm2022/cdk/dynamic-view/lib/tokens/dynamic-view-default-host.mjs +11 -1
- package/esm2022/cdk/event-plugins/lib/event-plugins.config.mjs +36 -1
- package/esm2022/cdk/event-plugins/lib/models/event-plugin.mjs +45 -1
- package/esm2022/cdk/event-plugins/lib/plugins/debounce-event-plugin.mjs +33 -1
- package/esm2022/cdk/event-plugins/lib/plugins/defer-event-plugin.mjs +25 -1
- package/esm2022/cdk/expandable/lib/directives/expandable-container.directive.mjs +42 -1
- package/esm2022/cdk/expandable/lib/directives/expandable-item.directive.mjs +48 -1
- package/esm2022/cdk/option-control/lib/option-control.mjs +48 -1
- package/esm2022/cdk/radio-group-control/lib/radio-control.directive.mjs +9 -1
- package/esm2022/cdk/radio-group-control/lib/radio-group-control.directive.mjs +12 -1
- package/esm2022/components/accordion/lib/accordion.component.mjs +9 -1
- package/esm2022/components/accordion/lib/components/accordion-item/accordion-item.component.mjs +31 -1
- package/esm2022/components/accordion/lib/directives/accordion-item-title.mjs +4 -1
- package/esm2022/components/action-group/action-group.component.mjs +7 -1
- package/esm2022/components/area-header/area-header.component.mjs +9 -1
- package/esm2022/components/area-header/directives/area-header-content.directive.mjs +4 -1
- package/esm2022/components/area-header/directives/area-header-subtitle.directive.mjs +4 -1
- package/esm2022/components/autocomplete/lib/autocomplete.component.mjs +29 -5
- package/esm2022/components/avatar/lib/avatar.component.mjs +9 -1
- package/esm2022/components/badge/lib/badge.component.mjs +11 -1
- package/esm2022/components/badge/lib/badge.directive.mjs +16 -1
- package/esm2022/components/bar/lib/bar.component.mjs +8 -1
- package/esm2022/components/bar/lib/directives/bar-button.directive.mjs +4 -1
- package/esm2022/components/bar/lib/directives/bar-label.directive.mjs +4 -1
- package/esm2022/components/breadcrumbs/lib/breadcrumbs.component.mjs +4 -1
- package/esm2022/components/button/lib/button.component.mjs +11 -1
- package/esm2022/components/button-group/lib/button-group.component.mjs +16 -1
- package/esm2022/components/calendar/lib/calendar.component.mjs +35 -1
- package/esm2022/components/calendar/lib/calendar.config.mjs +18 -1
- package/esm2022/components/calendar/lib/calendar.service.mjs +49 -1
- package/esm2022/components/calendar/lib/components/calendar-header/calendar-header.component.mjs +19 -1
- package/esm2022/components/calendar/lib/components/calendar-month/calendar-month.component.mjs +7 -1
- package/esm2022/components/calendar/lib/components/calendar-year/calendar-year.component.mjs +7 -1
- package/esm2022/components/calendar/lib/components/calendar-years/calendar-years.component.mjs +7 -1
- package/esm2022/components/calendar/lib/daterange.service.mjs +17 -1
- package/esm2022/components/calendar/lib/directives/calendar-cell.directive.mjs +26 -1
- package/esm2022/components/calendar/lib/directives/calendar-view.directive.mjs +39 -1
- package/esm2022/components/calendar/lib/pipes/date-label.pipe.mjs +6 -1
- package/esm2022/components/calendar/lib/services/calendar-month.service.mjs +2 -1
- package/esm2022/components/calendar/lib/services/calendar-year.service.mjs +2 -1
- package/esm2022/components/calendar/lib/services/calendar-years.service.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/check-cell-in-range.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/check-identical-date.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/get-A11y-label.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/is-date-disabled.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/parse-date.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/validate-daterange.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/validate-max-date.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/validate-min-date.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/validate-next-date-set.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/validate-previous-date-set.mjs +2 -1
- package/esm2022/components/checkbox/lib/checkbox.component.mjs +33 -1
- package/esm2022/components/checkbox/lib/checkbox.validator.mjs +24 -1
- package/esm2022/components/chip/lib/components/chip/chip.component.mjs +15 -1
- package/esm2022/components/chip/lib/components/chip-list/chip-list.component.mjs +4 -1
- package/esm2022/components/chip/lib/components/chip-list-row/chip-list-row.component.mjs +4 -1
- package/esm2022/components/circular-progress/lib/circular-progress.component.mjs +21 -1
- package/esm2022/components/content-box/lib/content-box.component.mjs +4 -1
- package/esm2022/components/content-box/lib/directives/content-box-footer.directive.mjs +4 -1
- package/esm2022/components/content-box/lib/directives/content-box-header.directive.mjs +4 -1
- package/esm2022/components/datepicker/lib/datepicker.component.mjs +33 -1
- package/esm2022/components/datepicker/lib/datepicker.config.mjs +20 -1
- package/esm2022/components/datepicker/lib/directives/datepicker-input-control.directive.mjs +31 -1
- package/esm2022/components/datepicker/lib/utils/get-datepicker-input-pattern.mjs +3 -1
- package/esm2022/components/datepicker/lib/utils/get-datepicker-input-value-as-date.mjs +2 -1
- package/esm2022/components/daterangepicker/lib/daterangepicker.component.mjs +65 -1
- package/esm2022/components/daterangepicker/lib/daterangepicker.config.mjs +20 -1
- package/esm2022/components/daterangepicker/lib/directives/daterangepicker-input-control.directive.mjs +31 -1
- package/esm2022/components/daterangepicker/lib/range.validator.mjs +16 -1
- package/esm2022/components/daterangepicker/lib/required.validator.mjs +15 -1
- package/esm2022/components/daterangepicker/lib/utils/get-daterangepicker-input-pattern.mjs +3 -1
- package/esm2022/components/daterangepicker/lib/utils/get-daterangepicker-input-value-as-date.mjs +2 -1
- package/esm2022/components/dropdown/lib/dropdown.component.mjs +8 -1
- package/esm2022/components/dropdown/lib/dropdown.directive.mjs +55 -1
- package/esm2022/components/dropdown/lib/helpers/close-current-dropdown.mjs +6 -1
- package/esm2022/components/error-page/lib/error-page.component.mjs +8 -1
- package/esm2022/components/error-page/lib/error-page.config.mjs +9 -1
- package/esm2022/components/footer/lib/footer.component.mjs +10 -7
- package/esm2022/components/footer/lib/footer.config.mjs +3 -1
- package/esm2022/components/form-field/lib/components/form-field-info/form-field-info.component.mjs +14 -1
- package/esm2022/components/form-field/lib/components/form-group/form-group.component.mjs +13 -1
- package/esm2022/components/form-field/lib/directives/form-field-control.directive.mjs +6 -1
- package/esm2022/components/form-field/lib/directives/form-field-error.directive.mjs +4 -1
- package/esm2022/components/form-field/lib/directives/form-field-hint.directive.mjs +4 -1
- package/esm2022/components/form-field/lib/directives/form-field-label.directive.mjs +4 -1
- package/esm2022/components/form-field/lib/directives/form.directive.mjs +14 -1
- package/esm2022/components/form-field/lib/form-field.component.mjs +14 -1
- package/esm2022/components/form-field/lib/form-field.service.mjs +43 -1
- package/esm2022/components/form-field/lib/services/form-field-error.service.mjs +25 -1
- package/esm2022/components/header/lib/directives/header-avatar.directive.mjs +5 -1
- package/esm2022/components/header/lib/directives/header-title.directive.mjs +4 -1
- package/esm2022/components/header/lib/header.component.mjs +4 -1
- package/esm2022/components/header-navigation/lib/directives/header-navigation-link.directive.mjs +4 -1
- package/esm2022/components/header-navigation/lib/header-navigation.component.mjs +4 -1
- package/esm2022/components/icon/lib/helpers/unpack-icon-identifier.mjs +15 -1
- package/esm2022/components/icon/lib/icon.component.mjs +25 -1
- package/esm2022/components/icon/lib/icon.config.mjs +20 -1
- package/esm2022/components/inline-message/lib/inline-message.component.mjs +14 -1
- package/esm2022/components/link/link.directive.mjs +4 -1
- package/esm2022/components/list/lib/components/expandable-list-item/expandable-list-item.component.mjs +7 -1
- package/esm2022/components/list/lib/components/list-item/list-item.component.mjs +18 -2
- package/esm2022/components/list/lib/list.component.mjs +6 -1
- package/esm2022/components/loading-spinner/lib/loading-spinner.component.mjs +10 -2
- package/esm2022/components/loading-spinner/lib/loading-spinner.directive.mjs +23 -1
- package/esm2022/components/logo/logo.directive.mjs +16 -1
- package/esm2022/components/main-menu/lib/directives/main-menu-button.directive.mjs +5 -1
- package/esm2022/components/main-menu/lib/directives/main-menu-close.directive.mjs +4 -1
- package/esm2022/components/main-menu/lib/directives/main-menu-item.directive.mjs +17 -1
- package/esm2022/components/main-menu/lib/helpers/create-main-menu-links.mjs +2 -1
- package/esm2022/components/main-menu/lib/main-menu.component.mjs +37 -1
- package/esm2022/components/main-menu/lib/main-menu.config.mjs +32 -1
- package/esm2022/components/main-menu/lib/main-menu.service.mjs +29 -1
- package/esm2022/components/mainfilter-group/lib/mainfilter-group.component.mjs +5 -1
- package/esm2022/components/menu/lib/directives/menu-item.directive.mjs +7 -1
- package/esm2022/components/menu/lib/menu.component.mjs +13 -1
- package/esm2022/components/menu/lib/menu.directive.mjs +19 -1
- package/esm2022/components/modal/lib/components/basic-modal/basic-modal.component.mjs +15 -1
- package/esm2022/components/modal/lib/components/modal-footer/modal-footer.component.mjs +4 -1
- package/esm2022/components/modal/lib/components/modal-header/modal-header.component.mjs +4 -1
- package/esm2022/components/modal/lib/components/modal-hero/modal-hero.component.mjs +12 -1
- package/esm2022/components/modal/lib/directives/modal-close.directive.mjs +25 -1
- package/esm2022/components/modal/lib/directives/modal-content.directive.mjs +4 -1
- package/esm2022/components/modal/lib/directives/modal-dismiss.directive.mjs +18 -1
- package/esm2022/components/modal/lib/helpers/inject-modal-ref.mjs +22 -1
- package/esm2022/components/modal/lib/helpers/provide-modal-ref.mjs +10 -1
- package/esm2022/components/modal/lib/modal.component.mjs +21 -2
- package/esm2022/components/modal/lib/modal.config.mjs +34 -1
- package/esm2022/components/modal/lib/modal.directive.mjs +25 -1
- package/esm2022/components/modal/lib/modal.service.mjs +39 -1
- package/esm2022/components/modal/lib/models/modal-ref.mjs +34 -1
- package/esm2022/components/navigation-back/lib/navigation-back.component.mjs +4 -1
- package/esm2022/components/notification/lib/components/notification-center/notification-center.component.mjs +1 -3
- package/esm2022/components/notification/lib/directives/notification-center.directive.mjs +19 -5
- package/esm2022/components/notification/lib/helpers/get-notifications-by-tag.mjs +2 -1
- package/esm2022/components/notification/lib/helpers/sort-notifications.mjs +2 -1
- package/esm2022/components/notification/lib/helpers/to-notification-collection.mjs +2 -1
- package/esm2022/components/notification/lib/models/notification-feature.mjs +16 -1
- package/esm2022/components/notification/lib/notification.config.mjs +45 -1
- package/esm2022/components/notification/lib/notification.logger.mjs +2 -1
- package/esm2022/components/notification/lib/notification.service.mjs +56 -1
- package/esm2022/components/notification/lib/notification.tokens.mjs +4 -1
- package/esm2022/components/notification/lib/services/notification-center.service.mjs +10 -1
- package/esm2022/components/paginator/lib/paginator.component.mjs +90 -1
- package/esm2022/components/paginator/lib/paginator.config.mjs +29 -1
- package/esm2022/components/progress/lib/progress.component.mjs +16 -1
- package/esm2022/components/radio-group/lib/components/radio-button/radio-button.component.mjs +20 -3
- package/esm2022/components/radio-group/lib/radio-group.component.mjs +13 -2
- package/esm2022/components/rail-navigation/lib/components/rail-navigation-item/rail-navigation-item.component.mjs +17 -1
- package/esm2022/components/rail-navigation/lib/rail-navigation.component.mjs +27 -1
- package/esm2022/components/rich-list/lib/components/rich-list-content/rich-list-content.component.mjs +5 -1
- package/esm2022/components/rich-list/lib/components/rich-list-header/rich-list-header.component.mjs +5 -1
- package/esm2022/components/rich-list/lib/components/rich-list-item/rich-list-item.component.mjs +10 -2
- package/esm2022/components/rich-list/lib/rich-list.component.mjs +10 -3
- package/esm2022/components/select/lib/components/select-option/select-option.component.mjs +49 -7
- package/esm2022/components/select/lib/directives/select-input-control.directive.mjs +12 -2
- package/esm2022/components/select/lib/pipes/select-search-filter.pipe.mjs +11 -1
- package/esm2022/components/select/lib/select.component.mjs +59 -5
- package/esm2022/components/slider/lib/slider.directive.mjs +20 -1
- package/esm2022/components/spinbox/lib/spinbox.component.mjs +17 -1
- package/esm2022/components/switch/lib/switch.component.mjs +11 -1
- package/esm2022/components/switch/lib/switch.validator.mjs +13 -1
- package/esm2022/components/tab-bar/lib/components/tab-bar-item/tab-bar-item.component.mjs +29 -1
- package/esm2022/components/tab-bar/lib/tab-bar.component.mjs +71 -1
- package/esm2022/components/table/lib/components/check-cell/check-cell.component.mjs +19 -1
- package/esm2022/components/table/lib/components/header-title/header-title.component.mjs +30 -2
- package/esm2022/components/table/lib/directives/table-cell.directive.mjs +5 -1
- package/esm2022/components/table/lib/directives/table-row.directive.mjs +5 -1
- package/esm2022/components/table/lib/table.component.mjs +30 -1
- package/esm2022/components/timepicker/lib/timepicker.component.mjs +15 -6
- package/esm2022/components/timepicker/lib/utils/generate-time-stamps.mjs +5 -3
- package/esm2022/components/timepicker/lib/utils/ngx-mask-helper.mjs +3 -3
- package/esm2022/components/toast/lib/components/toast-container/toast-container.component.mjs +3 -3
- package/esm2022/components/toast/lib/components/toast-item/toast-item.component.mjs +5 -3
- package/esm2022/components/toast/lib/models/toast.mjs +1 -1
- package/esm2022/components/toast/lib/toast.config.mjs +27 -1
- package/esm2022/components/toast/lib/toast.service.mjs +36 -1
- package/esm2022/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.mjs +12 -1
- package/esm2022/components/toggle-button-group/lib/toggle-button-group.component.mjs +14 -2
- package/esm2022/components/tooltip/lib/helpers/resolve-tooltip-trigger-events.mjs +8 -1
- package/esm2022/components/tooltip/lib/tooltip.component.mjs +18 -1
- package/esm2022/components/tooltip/lib/tooltip.directive.mjs +36 -1
- package/esm2022/components/wizard/lib/components/wizard-step/wizard-step.component.mjs +35 -1
- package/esm2022/components/wizard/lib/wizard.component.mjs +21 -1
- package/esm2022/internal/lib/helpers/decorator-property-name.mjs +9 -1
- package/esm2022/internal/translate/lib/translate.config.mjs +32 -1
- package/esm2022/internal/translate/lib/translate.service.mjs +30 -1
- package/esm2022/lib/controllers/controller.mjs +26 -1
- package/esm2022/lib/controllers/disabled.controller.mjs +60 -1
- package/esm2022/lib/controllers/readonly.controller.mjs +57 -1
- package/esm2022/lib/directives/click-outside.directive.mjs +30 -1
- package/esm2022/lib/directives/delegate-focus.directive.mjs +15 -1
- package/esm2022/lib/services/window-ref.mjs +67 -1
- package/esm2022/lib/tokens/identity-matcher.mjs +25 -1
- package/esm2022/lib/tokens/string-search-handler.mjs +25 -1
- package/esm2022/lib/tokens/stringify.mjs +26 -1
- package/esm2022/localization/lib/features/with-http-language-header.mjs +54 -1
- package/esm2022/localization/lib/features/with-http-language-query-param.mjs +52 -1
- package/esm2022/localization/lib/loaders/browser-language-loader.mjs +33 -1
- package/esm2022/localization/lib/localization.config.mjs +71 -1
- package/esm2022/localization/lib/localization.service.mjs +42 -3
- package/esm2022/localization/lib/models/localization-feature.mjs +8 -1
- package/esm2022/rxjs/index.mjs +2 -2
- package/esm2022/rxjs/lib/delay-until.mjs +23 -1
- package/esm2022/rxjs/lib/from-element-mutation.mjs +22 -1
- package/esm2022/rxjs/lib/from-element-resize.mjs +25 -1
- package/esm2022/rxjs/lib/from-events.mjs +25 -1
- package/esm2022/rxjs/lib/from-query-list.mjs +24 -0
- package/esm2022/sdk/lib/application-environment.mjs +51 -1
- package/esm2022/theming/lib/helpers/prefers-dark-theme.mjs +19 -1
- package/esm2022/theming/lib/helpers/resolve-theme.mjs +26 -1
- package/esm2022/theming/lib/helpers/theme-storage.mjs +43 -1
- package/esm2022/theming/lib/theming.config.mjs +34 -1
- package/esm2022/theming/lib/theming.service.mjs +32 -1
- package/esm2022/utils/lib/decorators/pure.mjs +52 -1
- package/esm2022/utils/lib/helpers/angular.mjs +37 -1
- package/esm2022/utils/lib/helpers/array.mjs +5 -1
- package/esm2022/utils/lib/helpers/build-url.mjs +21 -1
- package/esm2022/utils/lib/helpers/build-website-url.mjs +3 -2
- package/esm2022/utils/lib/helpers/cache-storage-client.mjs +52 -1
- package/esm2022/utils/lib/helpers/coercion.mjs +18 -1
- package/esm2022/utils/lib/helpers/debounce.mjs +28 -1
- package/esm2022/utils/lib/helpers/defer-fn.mjs +21 -1
- package/esm2022/utils/lib/helpers/dom.mjs +71 -1
- package/esm2022/utils/lib/helpers/get-axis.mjs +21 -1
- package/esm2022/utils/lib/helpers/get-language-code.mjs +18 -1
- package/esm2022/utils/lib/helpers/get-opposite-side.mjs +22 -1
- package/esm2022/utils/lib/helpers/get-side.mjs +18 -1
- package/esm2022/utils/lib/helpers/get-unique-id.mjs +34 -1
- package/esm2022/utils/lib/helpers/match-url.mjs +41 -1
- package/esm2022/utils/lib/helpers/ng-changes.mjs +30 -1
- package/esm2022/utils/lib/helpers/provide-config.mjs +57 -1
- package/esm2022/utils/lib/helpers/queue.mjs +84 -1
- package/esm2022/utils/lib/helpers/type-guards.mjs +58 -1
- package/esm2022/utils/lib/helpers/until-destroyed.mjs +39 -1
- package/fesm2022/odx-angular-animations.mjs +173 -0
- package/fesm2022/odx-angular-animations.mjs.map +1 -1
- package/fesm2022/odx-angular-breakpoints.mjs +136 -0
- package/fesm2022/odx-angular-breakpoints.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-a11y.mjs +71 -0
- package/fesm2022/odx-angular-cdk-a11y.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-active-indicator.mjs +63 -0
- package/fesm2022/odx-angular-cdk-active-indicator.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-autocomplete-control.mjs +39 -1
- package/fesm2022/odx-angular-cdk-autocomplete-control.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-checkbox-control.mjs +3 -0
- package/fesm2022/odx-angular-cdk-checkbox-control.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-connected-overlay.mjs +103 -0
- package/fesm2022/odx-angular-cdk-connected-overlay.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-custom-form-control.mjs +183 -2
- package/fesm2022/odx-angular-cdk-custom-form-control.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-dynamic-view.mjs +202 -0
- package/fesm2022/odx-angular-cdk-dynamic-view.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-event-plugins.mjs +135 -0
- package/fesm2022/odx-angular-cdk-event-plugins.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-expandable.mjs +88 -0
- package/fesm2022/odx-angular-cdk-expandable.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-option-control.mjs +47 -0
- package/fesm2022/odx-angular-cdk-option-control.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-radio-group-control.mjs +19 -0
- package/fesm2022/odx-angular-cdk-radio-group-control.mjs.map +1 -1
- package/fesm2022/odx-angular-components-accordion.mjs +41 -0
- package/fesm2022/odx-angular-components-accordion.mjs.map +1 -1
- package/fesm2022/odx-angular-components-action-group.mjs +6 -0
- package/fesm2022/odx-angular-components-action-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-area-header.mjs +14 -0
- package/fesm2022/odx-angular-components-area-header.mjs.map +1 -1
- package/fesm2022/odx-angular-components-autocomplete.mjs +28 -4
- package/fesm2022/odx-angular-components-autocomplete.mjs.map +1 -1
- package/fesm2022/odx-angular-components-avatar.mjs +8 -0
- package/fesm2022/odx-angular-components-avatar.mjs.map +1 -1
- package/fesm2022/odx-angular-components-badge.mjs +25 -0
- package/fesm2022/odx-angular-components-badge.mjs.map +1 -1
- package/fesm2022/odx-angular-components-bar.mjs +13 -0
- package/fesm2022/odx-angular-components-bar.mjs.map +1 -1
- package/fesm2022/odx-angular-components-breadcrumbs.mjs +3 -0
- package/fesm2022/odx-angular-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/odx-angular-components-button-group.mjs +15 -0
- package/fesm2022/odx-angular-components-button-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-button.mjs +10 -0
- package/fesm2022/odx-angular-components-button.mjs.map +1 -1
- package/fesm2022/odx-angular-components-calendar.mjs +232 -0
- package/fesm2022/odx-angular-components-calendar.mjs.map +1 -1
- package/fesm2022/odx-angular-components-checkbox.mjs +55 -0
- package/fesm2022/odx-angular-components-checkbox.mjs.map +1 -1
- package/fesm2022/odx-angular-components-chip.mjs +20 -0
- package/fesm2022/odx-angular-components-chip.mjs.map +1 -1
- package/fesm2022/odx-angular-components-circular-progress.mjs +20 -0
- package/fesm2022/odx-angular-components-circular-progress.mjs.map +1 -1
- package/fesm2022/odx-angular-components-content-box.mjs +9 -0
- package/fesm2022/odx-angular-components-content-box.mjs.map +1 -1
- package/fesm2022/odx-angular-components-datepicker.mjs +84 -0
- package/fesm2022/odx-angular-components-datepicker.mjs.map +1 -1
- package/fesm2022/odx-angular-components-daterangepicker.mjs +145 -0
- package/fesm2022/odx-angular-components-daterangepicker.mjs.map +1 -1
- package/fesm2022/odx-angular-components-dropdown.mjs +66 -0
- package/fesm2022/odx-angular-components-dropdown.mjs.map +1 -1
- package/fesm2022/odx-angular-components-error-page.mjs +15 -0
- package/fesm2022/odx-angular-components-error-page.mjs.map +1 -1
- package/fesm2022/odx-angular-components-footer.mjs +11 -6
- package/fesm2022/odx-angular-components-footer.mjs.map +1 -1
- package/fesm2022/odx-angular-components-form-field.mjs +131 -0
- package/fesm2022/odx-angular-components-form-field.mjs.map +1 -1
- package/fesm2022/odx-angular-components-header-navigation.mjs +6 -0
- package/fesm2022/odx-angular-components-header-navigation.mjs.map +1 -1
- package/fesm2022/odx-angular-components-header.mjs +10 -0
- package/fesm2022/odx-angular-components-header.mjs.map +1 -1
- package/fesm2022/odx-angular-components-icon.mjs +57 -0
- package/fesm2022/odx-angular-components-icon.mjs.map +1 -1
- package/fesm2022/odx-angular-components-inline-message.mjs +13 -0
- package/fesm2022/odx-angular-components-inline-message.mjs.map +1 -1
- package/fesm2022/odx-angular-components-link.mjs +3 -0
- package/fesm2022/odx-angular-components-link.mjs.map +1 -1
- package/fesm2022/odx-angular-components-list.mjs +28 -1
- package/fesm2022/odx-angular-components-list.mjs.map +1 -1
- package/fesm2022/odx-angular-components-loading-spinner.mjs +30 -0
- package/fesm2022/odx-angular-components-loading-spinner.mjs.map +1 -1
- package/fesm2022/odx-angular-components-logo.mjs +15 -0
- package/fesm2022/odx-angular-components-logo.mjs.map +1 -1
- package/fesm2022/odx-angular-components-main-menu.mjs +119 -0
- package/fesm2022/odx-angular-components-main-menu.mjs.map +1 -1
- package/fesm2022/odx-angular-components-mainfilter-group.mjs +4 -0
- package/fesm2022/odx-angular-components-mainfilter-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-menu.mjs +36 -0
- package/fesm2022/odx-angular-components-menu.mjs.map +1 -1
- package/fesm2022/odx-angular-components-modal.mjs +252 -0
- package/fesm2022/odx-angular-components-modal.mjs.map +1 -1
- package/fesm2022/odx-angular-components-navigation-back.mjs +3 -0
- package/fesm2022/odx-angular-components-navigation-back.mjs.map +1 -1
- package/fesm2022/odx-angular-components-notification.mjs +148 -6
- package/fesm2022/odx-angular-components-notification.mjs.map +1 -1
- package/fesm2022/odx-angular-components-paginator.mjs +117 -0
- package/fesm2022/odx-angular-components-paginator.mjs.map +1 -1
- package/fesm2022/odx-angular-components-progress.mjs +15 -0
- package/fesm2022/odx-angular-components-progress.mjs.map +1 -1
- package/fesm2022/odx-angular-components-radio-group.mjs +30 -2
- package/fesm2022/odx-angular-components-radio-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-rail-navigation.mjs +42 -0
- package/fesm2022/odx-angular-components-rail-navigation.mjs.map +1 -1
- package/fesm2022/odx-angular-components-rich-list.mjs +26 -3
- package/fesm2022/odx-angular-components-rich-list.mjs.map +1 -1
- package/fesm2022/odx-angular-components-select.mjs +126 -11
- package/fesm2022/odx-angular-components-select.mjs.map +1 -1
- package/fesm2022/odx-angular-components-slider.mjs +19 -0
- package/fesm2022/odx-angular-components-slider.mjs.map +1 -1
- package/fesm2022/odx-angular-components-spinbox.mjs +16 -0
- package/fesm2022/odx-angular-components-spinbox.mjs.map +1 -1
- package/fesm2022/odx-angular-components-switch.mjs +22 -0
- package/fesm2022/odx-angular-components-switch.mjs.map +1 -1
- package/fesm2022/odx-angular-components-tab-bar.mjs +98 -0
- package/fesm2022/odx-angular-components-tab-bar.mjs.map +1 -1
- package/fesm2022/odx-angular-components-table.mjs +84 -1
- package/fesm2022/odx-angular-components-table.mjs.map +1 -1
- package/fesm2022/odx-angular-components-timepicker.mjs +20 -9
- package/fesm2022/odx-angular-components-timepicker.mjs.map +1 -1
- package/fesm2022/odx-angular-components-toast.mjs +67 -4
- package/fesm2022/odx-angular-components-toast.mjs.map +1 -1
- package/fesm2022/odx-angular-components-toggle-button-group.mjs +23 -0
- package/fesm2022/odx-angular-components-toggle-button-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-tooltip.mjs +59 -0
- package/fesm2022/odx-angular-components-tooltip.mjs.map +1 -1
- package/fesm2022/odx-angular-components-wizard.mjs +54 -0
- package/fesm2022/odx-angular-components-wizard.mjs.map +1 -1
- package/fesm2022/odx-angular-internal-translate.mjs +60 -0
- package/fesm2022/odx-angular-internal-translate.mjs.map +1 -1
- package/fesm2022/odx-angular-internal.mjs +8 -0
- package/fesm2022/odx-angular-internal.mjs.map +1 -1
- package/fesm2022/odx-angular-localization.mjs +254 -2
- package/fesm2022/odx-angular-localization.mjs.map +1 -1
- package/fesm2022/odx-angular-rxjs.mjs +115 -5
- package/fesm2022/odx-angular-rxjs.mjs.map +1 -1
- package/fesm2022/odx-angular-sdk.mjs +50 -0
- package/fesm2022/odx-angular-sdk.mjs.map +1 -1
- package/fesm2022/odx-angular-theming.mjs +149 -0
- package/fesm2022/odx-angular-theming.mjs.map +1 -1
- package/fesm2022/odx-angular-utils.mjs +709 -1
- package/fesm2022/odx-angular-utils.mjs.map +1 -1
- package/fesm2022/odx-angular.mjs +322 -0
- package/fesm2022/odx-angular.mjs.map +1 -1
- package/internal/lib/helpers/decorator-property-name.d.ts +8 -0
- package/internal/translate/lib/translate.config.d.ts +31 -0
- package/internal/translate/lib/translate.service.d.ts +29 -0
- package/lib/controllers/controller.d.ts +25 -0
- package/lib/controllers/disabled.controller.d.ts +59 -0
- package/lib/controllers/readonly.controller.d.ts +56 -0
- package/lib/directives/click-outside.directive.d.ts +29 -0
- package/lib/directives/delegate-focus.directive.d.ts +14 -0
- package/lib/services/window-ref.d.ts +66 -0
- package/lib/tokens/identity-matcher.d.ts +41 -0
- package/lib/tokens/string-search-handler.d.ts +39 -0
- package/lib/tokens/stringify.d.ts +42 -0
- package/localization/lib/features/with-http-language-header.d.ts +63 -0
- package/localization/lib/features/with-http-language-query-param.d.ts +61 -0
- package/localization/lib/loaders/browser-language-loader.d.ts +32 -0
- package/localization/lib/localization.config.d.ts +81 -0
- package/localization/lib/localization.service.d.ts +39 -0
- package/localization/lib/models/localization-feature.d.ts +7 -0
- package/package.json +1 -1
- package/rxjs/index.d.ts +1 -1
- package/rxjs/lib/delay-until.d.ts +22 -0
- package/rxjs/lib/from-element-mutation.d.ts +21 -0
- package/rxjs/lib/from-element-resize.d.ts +24 -0
- package/rxjs/lib/from-events.d.ts +24 -0
- package/rxjs/lib/from-query-list.d.ts +22 -0
- package/sdk/lib/application-environment.d.ts +59 -0
- package/theming/lib/helpers/prefers-dark-theme.d.ts +18 -0
- package/theming/lib/helpers/resolve-theme.d.ts +25 -0
- package/theming/lib/helpers/theme-storage.d.ts +42 -0
- package/theming/lib/theming.config.d.ts +46 -0
- package/theming/lib/theming.service.d.ts +31 -0
- package/utils/lib/decorators/pure.d.ts +51 -0
- package/utils/lib/helpers/angular.d.ts +36 -0
- package/utils/lib/helpers/array.d.ts +4 -0
- package/utils/lib/helpers/build-url.d.ts +20 -0
- package/utils/lib/helpers/build-website-url.d.ts +2 -1
- package/utils/lib/helpers/cache-storage-client.d.ts +51 -0
- package/utils/lib/helpers/coercion.d.ts +17 -0
- package/utils/lib/helpers/debounce.d.ts +27 -0
- package/utils/lib/helpers/defer-fn.d.ts +20 -0
- package/utils/lib/helpers/dom.d.ts +70 -0
- package/utils/lib/helpers/get-axis.d.ts +20 -0
- package/utils/lib/helpers/get-language-code.d.ts +17 -0
- package/utils/lib/helpers/get-opposite-side.d.ts +21 -0
- package/utils/lib/helpers/get-side.d.ts +17 -0
- package/utils/lib/helpers/get-unique-id.d.ts +33 -0
- package/utils/lib/helpers/match-url.d.ts +40 -0
- package/utils/lib/helpers/ng-changes.d.ts +52 -0
- package/utils/lib/helpers/provide-config.d.ts +56 -0
- package/utils/lib/helpers/queue.d.ts +83 -0
- package/utils/lib/helpers/type-guards.d.ts +57 -0
- package/utils/lib/helpers/until-destroyed.d.ts +38 -0
- package/esm2022/rxjs/lib/form-query-list.mjs +0 -5
- package/rxjs/lib/form-query-list.d.ts +0 -3
|
@@ -2,10 +2,33 @@ import { inject } from '@angular/core';
|
|
|
2
2
|
import { LocalizationService } from '@odx/angular/localization';
|
|
3
3
|
import { getLanguageCode } from '@odx/angular/utils';
|
|
4
4
|
import { distinctUntilChanged, map, shareReplay, startWith } from 'rxjs';
|
|
5
|
+
/**
|
|
6
|
+
* Service for translating keys into localized text. It listens to changes in the active language
|
|
7
|
+
* and provides translated strings based on the current language preference. The service uses
|
|
8
|
+
* provided `TranslationObject` containing the translations for each supported language.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* // Using TranslateService in a component
|
|
13
|
+
* class MyComponent {
|
|
14
|
+
* constructor(private translateService: TranslateService) {
|
|
15
|
+
* translateService.translate('greeting').subscribe(translatedText => {
|
|
16
|
+
* console.log(translatedText); // Outputs "Hello" or "Bonjour" based on the active language
|
|
17
|
+
* });
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
5
22
|
export class TranslateService {
|
|
6
23
|
constructor(translations) {
|
|
7
24
|
this.translations = translations;
|
|
8
25
|
this.localizationService = inject(LocalizationService);
|
|
26
|
+
/**
|
|
27
|
+
* An observable that emits the current translation object based on the active language.
|
|
28
|
+
* It ensures that translations are updated dynamically whenever the user's language preference changes.
|
|
29
|
+
*
|
|
30
|
+
* @emits {TranslationObject} activeTranslation$ - The translation object for the active language.
|
|
31
|
+
*/
|
|
9
32
|
this.activeTranslation$ = this.localizationService.activeLanguage$.pipe(startWith(this.localizationService.defaultLanguage), distinctUntilChanged(), map((language) => {
|
|
10
33
|
const languageCode = getLanguageCode(language);
|
|
11
34
|
if (this.translations[language]) {
|
|
@@ -17,6 +40,12 @@ export class TranslateService {
|
|
|
17
40
|
return this.translations[this.localizationService.defaultLanguage];
|
|
18
41
|
}), shareReplay({ bufferSize: 1, refCount: true }));
|
|
19
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Translates a key into its localized text, optionally replacing placeholders with dynamic values.
|
|
45
|
+
* @param {string} key - The translation key to translate.
|
|
46
|
+
* @param {Record<string, unknown>} [data={}] - An object mapping placeholder names to replacement values.
|
|
47
|
+
* @returns {Observable<string>} An observable emitting the translated text, with placeholders replaced by provided values.
|
|
48
|
+
*/
|
|
20
49
|
translate(key, data = {}) {
|
|
21
50
|
return this.activeTranslation$.pipe(map((translation) => Object.entries(data).reduce((acc, [variableName, variable]) => {
|
|
22
51
|
const variableRegex = RegExp(`{{\\s*${variableName}\\s*}}`, 'g');
|
|
@@ -24,4 +53,4 @@ export class TranslateService {
|
|
|
24
53
|
}, translation[key] ?? '')));
|
|
25
54
|
}
|
|
26
55
|
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvaW50ZXJuYWwvdHJhbnNsYXRlL3NyYy9saWIvdHJhbnNsYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3JGOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQXlCM0IsWUFBNkIsWUFBK0I7UUFBL0IsaUJBQVksR0FBWixZQUFZLENBQW1CO1FBeEIzQyx3QkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUVuRTs7Ozs7V0FLRztRQUNhLHVCQUFrQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUNoRixTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxFQUNuRCxvQkFBb0IsRUFBRSxFQUN0QixHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNmLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNwQztZQUNELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3hDO1lBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUMvQyxDQUFDO0lBRTZELENBQUM7SUFFaEU7Ozs7O09BS0c7SUFDSSxTQUFTLENBQUMsR0FBVyxFQUFFLE9BQWdDLEVBQUU7UUFDOUQsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUNqQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUNsQixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQzVELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTLFlBQVksUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2pFLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsUUFBaUIsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQzNCLENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHsgZ2V0TGFuZ3VhZ2VDb2RlIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uT2JqZWN0IH0gZnJvbSAnLi9tb2RlbHMnO1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIHRyYW5zbGF0aW5nIGtleXMgaW50byBsb2NhbGl6ZWQgdGV4dC4gSXQgbGlzdGVucyB0byBjaGFuZ2VzIGluIHRoZSBhY3RpdmUgbGFuZ3VhZ2VcbiAqIGFuZCBwcm92aWRlcyB0cmFuc2xhdGVkIHN0cmluZ3MgYmFzZWQgb24gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgcHJlZmVyZW5jZS4gVGhlIHNlcnZpY2UgdXNlc1xuICogcHJvdmlkZWQgYFRyYW5zbGF0aW9uT2JqZWN0YCBjb250YWluaW5nIHRoZSB0cmFuc2xhdGlvbnMgZm9yIGVhY2ggc3VwcG9ydGVkIGxhbmd1YWdlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gVXNpbmcgVHJhbnNsYXRlU2VydmljZSBpbiBhIGNvbXBvbmVudFxuICogY2xhc3MgTXlDb21wb25lbnQge1xuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAqICAgICB0cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnZ3JlZXRpbmcnKS5zdWJzY3JpYmUodHJhbnNsYXRlZFRleHQgPT4ge1xuICogICAgICAgY29uc29sZS5sb2codHJhbnNsYXRlZFRleHQpOyAvLyBPdXRwdXRzIFwiSGVsbG9cIiBvciBcIkJvbmpvdXJcIiBiYXNlZCBvbiB0aGUgYWN0aXZlIGxhbmd1YWdlXG4gKiAgICAgfSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxpemF0aW9uU2VydmljZSA9IGluamVjdChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcblxuICAvKipcbiAgICogQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBjdXJyZW50IHRyYW5zbGF0aW9uIG9iamVjdCBiYXNlZCBvbiB0aGUgYWN0aXZlIGxhbmd1YWdlLlxuICAgKiBJdCBlbnN1cmVzIHRoYXQgdHJhbnNsYXRpb25zIGFyZSB1cGRhdGVkIGR5bmFtaWNhbGx5IHdoZW5ldmVyIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgcHJlZmVyZW5jZSBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZW1pdHMge1RyYW5zbGF0aW9uT2JqZWN0fSBhY3RpdmVUcmFuc2xhdGlvbiQgLSBUaGUgdHJhbnNsYXRpb24gb2JqZWN0IGZvciB0aGUgYWN0aXZlIGxhbmd1YWdlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZVRyYW5zbGF0aW9uJCA9IHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5hY3RpdmVMYW5ndWFnZSQucGlwZShcbiAgICBzdGFydFdpdGgodGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmRlZmF1bHRMYW5ndWFnZSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBtYXAoKGxhbmd1YWdlKSA9PiB7XG4gICAgICBjb25zdCBsYW5ndWFnZUNvZGUgPSBnZXRMYW5ndWFnZUNvZGUobGFuZ3VhZ2UpO1xuICAgICAgaWYgKHRoaXMudHJhbnNsYXRpb25zW2xhbmd1YWdlXSkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbnNbbGFuZ3VhZ2VdO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudHJhbnNsYXRpb25zW2xhbmd1YWdlQ29kZV0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25zW2xhbmd1YWdlQ29kZV07XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbnNbdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmRlZmF1bHRMYW5ndWFnZV07XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3QpIHt9XG5cbiAgLyoqXG4gICAqIFRyYW5zbGF0ZXMgYSBrZXkgaW50byBpdHMgbG9jYWxpemVkIHRleHQsIG9wdGlvbmFsbHkgcmVwbGFjaW5nIHBsYWNlaG9sZGVycyB3aXRoIGR5bmFtaWMgdmFsdWVzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIHRyYW5zbGF0aW9uIGtleSB0byB0cmFuc2xhdGUuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59IFtkYXRhPXt9XSAtIEFuIG9iamVjdCBtYXBwaW5nIHBsYWNlaG9sZGVyIG5hbWVzIHRvIHJlcGxhY2VtZW50IHZhbHVlcy5cbiAgICogQHJldHVybnMge09ic2VydmFibGU8c3RyaW5nPn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgdHJhbnNsYXRlZCB0ZXh0LCB3aXRoIHBsYWNlaG9sZGVycyByZXBsYWNlZCBieSBwcm92aWRlZCB2YWx1ZXMuXG4gICAqL1xuICBwdWJsaWMgdHJhbnNsYXRlKGtleTogc3RyaW5nLCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVUcmFuc2xhdGlvbiQucGlwZShcbiAgICAgIG1hcCgodHJhbnNsYXRpb24pID0+XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGRhdGEpLnJlZHVjZSgoYWNjLCBbdmFyaWFibGVOYW1lLCB2YXJpYWJsZV0pID0+IHtcbiAgICAgICAgICBjb25zdCB2YXJpYWJsZVJlZ2V4ID0gUmVnRXhwKGB7e1xcXFxzKiR7dmFyaWFibGVOYW1lfVxcXFxzKn19YCwgJ2cnKTtcbiAgICAgICAgICByZXR1cm4gYWNjLnJlcGxhY2UodmFyaWFibGVSZWdleCwgdmFyaWFibGUgYXMgbmV2ZXIpO1xuICAgICAgICB9LCB0cmFuc2xhdGlvbltrZXldID8/ICcnKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -6,15 +6,40 @@ function controllerChanges(controllers) {
|
|
|
6
6
|
const changes$ = pluckFromArray(controllers.filter(isPresent), 'change$');
|
|
7
7
|
return changes$.length > 0 ? merge(...changes$) : EMPTY;
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Sets up change detection for the provided controllers within the context of an Angular component or directive.
|
|
11
|
+
* It listens for changes from the specified controllers and triggers Angular's change detection mechanism in response.
|
|
12
|
+
*
|
|
13
|
+
* @param {...Array<Controller | undefined | null>} controllers - The controllers to monitor for changes.
|
|
14
|
+
* @returns {Observable<void>} An observable that emits whenever a change occurs in any of the provided controllers.
|
|
15
|
+
*/
|
|
9
16
|
export function detectControllerChanges(...controllers) {
|
|
10
17
|
const changeDetector = inject(ChangeDetectorRef);
|
|
11
18
|
return controllerChanges(controllers).pipe(tap(() => changeDetector.markForCheck()));
|
|
12
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* An abstract base class representing a controller that can notify observers of changes in its state.
|
|
22
|
+
* It provides lifecycle hooks for ngOnChanges and ngOnDestroy to manage its internal change observable.
|
|
23
|
+
*/
|
|
13
24
|
export class Controller {
|
|
14
25
|
constructor() {
|
|
15
26
|
this.change$$ = new Subject();
|
|
27
|
+
/**
|
|
28
|
+
* Represents an observable stream of changes.
|
|
29
|
+
* @readonly
|
|
30
|
+
*/
|
|
16
31
|
this.change$ = this.change$$.pipe(shareReplay({ bufferSize: 1, refCount: true }));
|
|
17
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Sets up a controller instance to emit change events and trigger Angular change detection whenever
|
|
35
|
+
* the controller's state changes. It is a utility method that can be used to initialize controllers
|
|
36
|
+
* that are managed outside of Angular's DI system.
|
|
37
|
+
*
|
|
38
|
+
* @static
|
|
39
|
+
* @param {Controller | null} controller - The controller instance to set up.
|
|
40
|
+
* @param {ChangeDetectorRef} changeDetector - The Angular change detector reference to trigger change detection.
|
|
41
|
+
* @returns {Controller | null} The same controller instance for chaining or null if the controller is not provided.
|
|
42
|
+
*/
|
|
18
43
|
static setup(controller, changeDetector) {
|
|
19
44
|
controllerChanges([controller])
|
|
20
45
|
.pipe(tap(() => changeDetector.markForCheck()))
|
|
@@ -36,4 +61,4 @@ export class Controller {
|
|
|
36
61
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Controller, decorators: [{
|
|
37
62
|
type: Directive
|
|
38
63
|
}] });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbnRyb2xsZXJzL2NvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWMsV0FBVyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRTNFLFNBQVMsaUJBQWlCLENBQUMsV0FBaUQ7SUFDMUUsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFMUUsT0FBTyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUMxRCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEdBQUcsV0FBaUQ7SUFDMUYsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFakQsT0FBTyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkYsQ0FBQztBQUVEOzs7R0FHRztBQUVILE1BQU0sT0FBZ0IsVUFBVTtJQURoQztRQUVtQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVoRDs7O1dBR0c7UUFDYSxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBK0I5RjtJQTdCQzs7Ozs7Ozs7O09BU0c7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQTZCLEVBQUUsY0FBaUM7UUFDbEYsaUJBQWlCLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO2FBQzlDLFNBQVMsRUFBRSxDQUFDO1FBRWYsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRVMsdUJBQXVCO1FBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQzsrR0FyQ21CLFVBQVU7bUdBQVYsVUFBVTs7NEZBQVYsVUFBVTtrQkFEL0IsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIGluamVjdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUHJlc2VudCwgcGx1Y2tGcm9tQXJyYXkgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgRU1QVFksIG1lcmdlLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgU3ViamVjdCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmZ1bmN0aW9uIGNvbnRyb2xsZXJDaGFuZ2VzKGNvbnRyb2xsZXJzOiBBcnJheTxDb250cm9sbGVyIHwgdW5kZWZpbmVkIHwgbnVsbD4pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgY29uc3QgY2hhbmdlcyQgPSBwbHVja0Zyb21BcnJheShjb250cm9sbGVycy5maWx0ZXIoaXNQcmVzZW50KSwgJ2NoYW5nZSQnKTtcblxuICByZXR1cm4gY2hhbmdlcyQubGVuZ3RoID4gMCA/IG1lcmdlKC4uLmNoYW5nZXMkKSA6IEVNUFRZO1xufVxuXG4vKipcbiAqIFNldHMgdXAgY2hhbmdlIGRldGVjdGlvbiBmb3IgdGhlIHByb3ZpZGVkIGNvbnRyb2xsZXJzIHdpdGhpbiB0aGUgY29udGV4dCBvZiBhbiBBbmd1bGFyIGNvbXBvbmVudCBvciBkaXJlY3RpdmUuXG4gKiBJdCBsaXN0ZW5zIGZvciBjaGFuZ2VzIGZyb20gdGhlIHNwZWNpZmllZCBjb250cm9sbGVycyBhbmQgdHJpZ2dlcnMgQW5ndWxhcidzIGNoYW5nZSBkZXRlY3Rpb24gbWVjaGFuaXNtIGluIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7Li4uQXJyYXk8Q29udHJvbGxlciB8IHVuZGVmaW5lZCB8IG51bGw+fSBjb250cm9sbGVycyAtIFRoZSBjb250cm9sbGVycyB0byBtb25pdG9yIGZvciBjaGFuZ2VzLlxuICogQHJldHVybnMge09ic2VydmFibGU8dm9pZD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuZXZlciBhIGNoYW5nZSBvY2N1cnMgaW4gYW55IG9mIHRoZSBwcm92aWRlZCBjb250cm9sbGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVjdENvbnRyb2xsZXJDaGFuZ2VzKC4uLmNvbnRyb2xsZXJzOiBBcnJheTxDb250cm9sbGVyIHwgdW5kZWZpbmVkIHwgbnVsbD4pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgY29uc3QgY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIHJldHVybiBjb250cm9sbGVyQ2hhbmdlcyhjb250cm9sbGVycykucGlwZSh0YXAoKCkgPT4gY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCkpKTtcbn1cblxuLyoqXG4gKiBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBhIGNvbnRyb2xsZXIgdGhhdCBjYW4gbm90aWZ5IG9ic2VydmVycyBvZiBjaGFuZ2VzIGluIGl0cyBzdGF0ZS5cbiAqIEl0IHByb3ZpZGVzIGxpZmVjeWNsZSBob29rcyBmb3IgbmdPbkNoYW5nZXMgYW5kIG5nT25EZXN0cm95IHRvIG1hbmFnZSBpdHMgaW50ZXJuYWwgY2hhbmdlIG9ic2VydmFibGUuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbnRyb2xsZXIgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlJCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGFuIG9ic2VydmFibGUgc3RyZWFtIG9mIGNoYW5nZXMuXG4gICAqIEByZWFkb25seVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNoYW5nZSQgPSB0aGlzLmNoYW5nZSQkLnBpcGUoc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSk7XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgYSBjb250cm9sbGVyIGluc3RhbmNlIHRvIGVtaXQgY2hhbmdlIGV2ZW50cyBhbmQgdHJpZ2dlciBBbmd1bGFyIGNoYW5nZSBkZXRlY3Rpb24gd2hlbmV2ZXJcbiAgICogdGhlIGNvbnRyb2xsZXIncyBzdGF0ZSBjaGFuZ2VzLiBJdCBpcyBhIHV0aWxpdHkgbWV0aG9kIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW5pdGlhbGl6ZSBjb250cm9sbGVyc1xuICAgKiB0aGF0IGFyZSBtYW5hZ2VkIG91dHNpZGUgb2YgQW5ndWxhcidzIERJIHN5c3RlbS5cbiAgICpcbiAgICogQHN0YXRpY1xuICAgKiBAcGFyYW0ge0NvbnRyb2xsZXIgfCBudWxsfSBjb250cm9sbGVyIC0gVGhlIGNvbnRyb2xsZXIgaW5zdGFuY2UgdG8gc2V0IHVwLlxuICAgKiBAcGFyYW0ge0NoYW5nZURldGVjdG9yUmVmfSBjaGFuZ2VEZXRlY3RvciAtIFRoZSBBbmd1bGFyIGNoYW5nZSBkZXRlY3RvciByZWZlcmVuY2UgdG8gdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uLlxuICAgKiBAcmV0dXJucyB7Q29udHJvbGxlciB8IG51bGx9IFRoZSBzYW1lIGNvbnRyb2xsZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nIG9yIG51bGwgaWYgdGhlIGNvbnRyb2xsZXIgaXMgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzZXR1cChjb250cm9sbGVyOiBDb250cm9sbGVyIHwgbnVsbCwgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKTogQ29udHJvbGxlciB8IG51bGwge1xuICAgIGNvbnRyb2xsZXJDaGFuZ2VzKFtjb250cm9sbGVyXSlcbiAgICAgIC5waXBlKHRhcCgoKSA9PiBjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSkpXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICByZXR1cm4gY29udHJvbGxlcjtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnRyaWdnZXJDb250cm9sbGVyQ2hhbmdlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2UkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRyaWdnZXJDb250cm9sbGVyQ2hhbmdlKCkge1xuICAgIHRoaXMuY2hhbmdlJCQubmV4dCgpO1xuICB9XG59XG4iXX0=
|
|
@@ -4,22 +4,76 @@ import { Controller } from './controller';
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export const DISABLED_CONTROLLER = new InjectionToken('@odx/angular::DisabledWatchedController');
|
|
6
6
|
export const DISABLED_INTERNAL_CONTROLLER = new InjectionToken('@odx/angular::DisabledController');
|
|
7
|
+
/**
|
|
8
|
+
* Directive that provides hierarchical disabled state management for Angular components or directives.
|
|
9
|
+
* It allows for a disabled state to be inherited from parent components, facilitating the propagation
|
|
10
|
+
* of disabled states down component trees. This is particularly useful in forms or complex component
|
|
11
|
+
* structures where nested components need to respond to disabled states dynamically.
|
|
12
|
+
*
|
|
13
|
+
* The `DisabledController` works by injecting itself or a parent `DisabledController` instance to determine
|
|
14
|
+
* the effective disabled state, taking into account both its own state and that of its parents.
|
|
15
|
+
*
|
|
16
|
+
* Usage:
|
|
17
|
+
* Apply the `disabled` attribute, potentially bound to a component property, to use this directive.
|
|
18
|
+
* The directive can be automatically provided to the component's children by calling the `connect`
|
|
19
|
+
* static method in the component's providers array.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* @Component({
|
|
24
|
+
* selector: 'app-custom-input',
|
|
25
|
+
* templateUrl: './custom-input.component.html',
|
|
26
|
+
* providers: [DisabledController.connect()],
|
|
27
|
+
* standalone: true,
|
|
28
|
+
* })
|
|
29
|
+
* export class CustomInputComponent {
|
|
30
|
+
* constructor(private disabledCtrl: DisabledController) {}
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
* ```html
|
|
34
|
+
* <input [disabled]="disabledCtrl.disabled" />
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
7
37
|
export class DisabledController extends Controller {
|
|
8
38
|
constructor() {
|
|
9
39
|
super(...arguments);
|
|
10
40
|
this.parentController = inject(DISABLED_CONTROLLER, { optional: true, skipSelf: true });
|
|
11
41
|
this.isDisabled = false;
|
|
42
|
+
/**
|
|
43
|
+
* A reactive representation of the current effective disabled state, considering both
|
|
44
|
+
* the controller's own state and that of its parent controllers.
|
|
45
|
+
*
|
|
46
|
+
* @emits {boolean} - The current disabled state.
|
|
47
|
+
*/
|
|
12
48
|
this.isDisabled$ = this.change$.pipe(map(() => this.disabled), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
13
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Sets the disabled state of the current controller. If the state changes, updates the internal
|
|
52
|
+
* flag.
|
|
53
|
+
* @param {boolean} value - The new disabled state to be applied.
|
|
54
|
+
*/
|
|
14
55
|
set disabled(value) {
|
|
15
56
|
this.isDisabled = value;
|
|
16
57
|
}
|
|
17
58
|
get disabled() {
|
|
18
59
|
return this.isDisabled || !!this.parentController?.disabled;
|
|
19
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Retrieves an instance of the `DisabledController` class from the dependency injection container.
|
|
63
|
+
* If the `DisabledController` is not registered in the container, it returns `null`.
|
|
64
|
+
*
|
|
65
|
+
* @returns {DisabledController | null} An instance of the `DisabledController` class or `null` if not found.
|
|
66
|
+
*/
|
|
20
67
|
static inject() {
|
|
21
68
|
return inject(DISABLED_CONTROLLER, { optional: true });
|
|
22
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Static method to facilitate the injection of the `DisabledController` within Angular's DI system.
|
|
72
|
+
* This method provides a way to connect a component with its closest `DisabledController` parent,
|
|
73
|
+
* allowing for disabled state inheritance.
|
|
74
|
+
*
|
|
75
|
+
* @returns {Provider[]} An array of providers to enable disabled state management within a component.
|
|
76
|
+
*/
|
|
23
77
|
static connect() {
|
|
24
78
|
return [
|
|
25
79
|
{
|
|
@@ -34,6 +88,11 @@ export class DisabledController extends Controller {
|
|
|
34
88
|
},
|
|
35
89
|
];
|
|
36
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Sets the disabled state of the current controller and triggers change detection if the state changes.
|
|
93
|
+
*
|
|
94
|
+
* @param {boolean} state - The new disabled state to be applied.
|
|
95
|
+
*/
|
|
37
96
|
setDisabledState(state) {
|
|
38
97
|
if (this.disabled !== state) {
|
|
39
98
|
this.disabled = state;
|
|
@@ -64,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
64
123
|
type: Input,
|
|
65
124
|
args: [{ transform: booleanAttribute }]
|
|
66
125
|
}] } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZWQuY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbnRyb2xsZXJzL2Rpc2FibGVkLmNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwSixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUUxQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBcUIseUNBQXlDLENBQUMsQ0FBQztBQUNySCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBNEIsa0NBQWtDLENBQUMsQ0FBQztBQUU5SDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFXSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsVUFBVTtJQVZsRDs7UUFXbUIscUJBQWdCLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1RixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRTNCOzs7OztXQUtHO1FBQ2EsZ0JBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDN0MsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDeEIsb0JBQW9CLEVBQUUsRUFDdEIsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDL0MsQ0FBQztLQTJESDtJQXpEQzs7OztPQUlHO0lBQ0gsSUFDVyxRQUFRLENBQUMsS0FBYztRQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsTUFBTTtRQUNsQixPQUFPLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsT0FBTztRQUNuQixPQUFPO1lBQ0w7Z0JBQ0UsT0FBTyxFQUFFLDRCQUE0QjtnQkFDckMsVUFBVSxFQUFFLENBQUMsY0FBeUMsRUFBRSxFQUFFLENBQUMsY0FBYyxJQUFJLElBQUksa0JBQWtCLEVBQUU7Z0JBQ3JHLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLGtCQUFrQixDQUFDLENBQUM7YUFDekQ7WUFDRDtnQkFDRSxPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixVQUFVLEVBQUUsVUFBVSxDQUFDLEtBQUs7Z0JBQzVCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLDRCQUE0QixDQUFDLEVBQUUsaUJBQWlCLENBQUM7YUFDdEY7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxnQkFBZ0IsQ0FBQyxLQUFjO1FBQ3BDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxLQUFLLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQzsrR0F4RVUsa0JBQWtCO21HQUFsQixrQkFBa0IsMkZBcUJULGdCQUFnQixnQkE1QnpCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLDRCQUE0QjtnQkFDckMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzthQUNsRDtTQUNGOzs0RkFFVSxrQkFBa0I7a0JBVjlCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxZQUFZO29CQUN0QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLDRCQUE0Qjs0QkFDckMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7eUJBQ2xEO3FCQUNGO2lCQUNGOzhCQXVCWSxRQUFRO3NCQURsQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgZm9yd2FyZFJlZiwgSG9zdCwgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgSW5wdXQsIE9wdGlvbmFsLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbnRyb2xsZXIgfSBmcm9tICcuL2NvbnRyb2xsZXInO1xuXG5leHBvcnQgY29uc3QgRElTQUJMRURfQ09OVFJPTExFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEaXNhYmxlZENvbnRyb2xsZXI+KCdAb2R4L2FuZ3VsYXI6OkRpc2FibGVkV2F0Y2hlZENvbnRyb2xsZXInKTtcbmV4cG9ydCBjb25zdCBESVNBQkxFRF9JTlRFUk5BTF9DT05UUk9MTEVSID0gbmV3IEluamVjdGlvblRva2VuPERpc2FibGVkQ29udHJvbGxlciB8IG51bGw+KCdAb2R4L2FuZ3VsYXI6OkRpc2FibGVkQ29udHJvbGxlcicpO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0aGF0IHByb3ZpZGVzIGhpZXJhcmNoaWNhbCBkaXNhYmxlZCBzdGF0ZSBtYW5hZ2VtZW50IGZvciBBbmd1bGFyIGNvbXBvbmVudHMgb3IgZGlyZWN0aXZlcy5cbiAqIEl0IGFsbG93cyBmb3IgYSBkaXNhYmxlZCBzdGF0ZSB0byBiZSBpbmhlcml0ZWQgZnJvbSBwYXJlbnQgY29tcG9uZW50cywgZmFjaWxpdGF0aW5nIHRoZSBwcm9wYWdhdGlvblxuICogb2YgZGlzYWJsZWQgc3RhdGVzIGRvd24gY29tcG9uZW50IHRyZWVzLiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgaW4gZm9ybXMgb3IgY29tcGxleCBjb21wb25lbnRcbiAqIHN0cnVjdHVyZXMgd2hlcmUgbmVzdGVkIGNvbXBvbmVudHMgbmVlZCB0byByZXNwb25kIHRvIGRpc2FibGVkIHN0YXRlcyBkeW5hbWljYWxseS5cbiAqXG4gKiBUaGUgYERpc2FibGVkQ29udHJvbGxlcmAgd29ya3MgYnkgaW5qZWN0aW5nIGl0c2VsZiBvciBhIHBhcmVudCBgRGlzYWJsZWRDb250cm9sbGVyYCBpbnN0YW5jZSB0byBkZXRlcm1pbmVcbiAqIHRoZSBlZmZlY3RpdmUgZGlzYWJsZWQgc3RhdGUsIHRha2luZyBpbnRvIGFjY291bnQgYm90aCBpdHMgb3duIHN0YXRlIGFuZCB0aGF0IG9mIGl0cyBwYXJlbnRzLlxuICpcbiAqIFVzYWdlOlxuICogQXBwbHkgdGhlIGBkaXNhYmxlZGAgYXR0cmlidXRlLCBwb3RlbnRpYWxseSBib3VuZCB0byBhIGNvbXBvbmVudCBwcm9wZXJ0eSwgdG8gdXNlIHRoaXMgZGlyZWN0aXZlLlxuICogVGhlIGRpcmVjdGl2ZSBjYW4gYmUgYXV0b21hdGljYWxseSBwcm92aWRlZCB0byB0aGUgY29tcG9uZW50J3MgY2hpbGRyZW4gYnkgY2FsbGluZyB0aGUgYGNvbm5lY3RgXG4gKiBzdGF0aWMgbWV0aG9kIGluIHRoZSBjb21wb25lbnQncyBwcm92aWRlcnMgYXJyYXkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAtY3VzdG9tLWlucHV0JyxcbiAqICAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gKiAgIHByb3ZpZGVyczogW0Rpc2FibGVkQ29udHJvbGxlci5jb25uZWN0KCldLFxuICogICBzdGFuZGFsb25lOiB0cnVlLFxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBDdXN0b21JbnB1dENvbXBvbmVudCB7XG4gKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlzYWJsZWRDdHJsOiBEaXNhYmxlZENvbnRyb2xsZXIpIHt9XG4gKiB9XG4gKiBgYGBcbiAqIGBgYGh0bWxcbiAqIDxpbnB1dCBbZGlzYWJsZWRdPVwiZGlzYWJsZWRDdHJsLmRpc2FibGVkXCIgLz5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbZGlzYWJsZWRdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogRElTQUJMRURfSU5URVJOQUxfQ09OVFJPTExFUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERpc2FibGVkQ29udHJvbGxlciksXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRGlzYWJsZWRDb250cm9sbGVyIGV4dGVuZHMgQ29udHJvbGxlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50Q29udHJvbGxlciA9IGluamVjdChESVNBQkxFRF9DT05UUk9MTEVSLCB7IG9wdGlvbmFsOiB0cnVlLCBza2lwU2VsZjogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgcmVhY3RpdmUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgZWZmZWN0aXZlIGRpc2FibGVkIHN0YXRlLCBjb25zaWRlcmluZyBib3RoXG4gICAqIHRoZSBjb250cm9sbGVyJ3Mgb3duIHN0YXRlIGFuZCB0aGF0IG9mIGl0cyBwYXJlbnQgY29udHJvbGxlcnMuXG4gICAqXG4gICAqIEBlbWl0cyB7Ym9vbGVhbn0gLSBUaGUgY3VycmVudCBkaXNhYmxlZCBzdGF0ZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc0Rpc2FibGVkJCA9IHRoaXMuY2hhbmdlJC5waXBlKFxuICAgIG1hcCgoKSA9PiB0aGlzLmRpc2FibGVkKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICk7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBjdXJyZW50IGNvbnRyb2xsZXIuIElmIHRoZSBzdGF0ZSBjaGFuZ2VzLCB1cGRhdGVzIHRoZSBpbnRlcm5hbFxuICAgKiBmbGFnLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHZhbHVlIC0gVGhlIG5ldyBkaXNhYmxlZCBzdGF0ZSB0byBiZSBhcHBsaWVkLlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNEaXNhYmxlZCB8fCAhIXRoaXMucGFyZW50Q29udHJvbGxlcj8uZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGFuIGluc3RhbmNlIG9mIHRoZSBgRGlzYWJsZWRDb250cm9sbGVyYCBjbGFzcyBmcm9tIHRoZSBkZXBlbmRlbmN5IGluamVjdGlvbiBjb250YWluZXIuXG4gICAqIElmIHRoZSBgRGlzYWJsZWRDb250cm9sbGVyYCBpcyBub3QgcmVnaXN0ZXJlZCBpbiB0aGUgY29udGFpbmVyLCBpdCByZXR1cm5zIGBudWxsYC5cbiAgICpcbiAgICogQHJldHVybnMge0Rpc2FibGVkQ29udHJvbGxlciB8IG51bGx9IEFuIGluc3RhbmNlIG9mIHRoZSBgRGlzYWJsZWRDb250cm9sbGVyYCBjbGFzcyBvciBgbnVsbGAgaWYgbm90IGZvdW5kLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpbmplY3QoKTogRGlzYWJsZWRDb250cm9sbGVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIGluamVjdChESVNBQkxFRF9DT05UUk9MTEVSLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBtZXRob2QgdG8gZmFjaWxpdGF0ZSB0aGUgaW5qZWN0aW9uIG9mIHRoZSBgRGlzYWJsZWRDb250cm9sbGVyYCB3aXRoaW4gQW5ndWxhcidzIERJIHN5c3RlbS5cbiAgICogVGhpcyBtZXRob2QgcHJvdmlkZXMgYSB3YXkgdG8gY29ubmVjdCBhIGNvbXBvbmVudCB3aXRoIGl0cyBjbG9zZXN0IGBEaXNhYmxlZENvbnRyb2xsZXJgIHBhcmVudCxcbiAgICogYWxsb3dpbmcgZm9yIGRpc2FibGVkIHN0YXRlIGluaGVyaXRhbmNlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvdmlkZXJbXX0gQW4gYXJyYXkgb2YgcHJvdmlkZXJzIHRvIGVuYWJsZSBkaXNhYmxlZCBzdGF0ZSBtYW5hZ2VtZW50IHdpdGhpbiBhIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29ubmVjdCgpOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwcm92aWRlOiBESVNBQkxFRF9JTlRFUk5BTF9DT05UUk9MTEVSLFxuICAgICAgICB1c2VGYWN0b3J5OiAoaG9zdENvbnRyb2xsZXI6IERpc2FibGVkQ29udHJvbGxlciB8IG51bGwpID0+IGhvc3RDb250cm9sbGVyID8/IG5ldyBEaXNhYmxlZENvbnRyb2xsZXIoKSxcbiAgICAgICAgZGVwczogW1tuZXcgT3B0aW9uYWwoKSwgbmV3IEhvc3QoKSwgRGlzYWJsZWRDb250cm9sbGVyXV0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBESVNBQkxFRF9DT05UUk9MTEVSLFxuICAgICAgICB1c2VGYWN0b3J5OiBDb250cm9sbGVyLnNldHVwLFxuICAgICAgICBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBuZXcgSG9zdCgpLCBESVNBQkxFRF9JTlRFUk5BTF9DT05UUk9MTEVSXSwgQ2hhbmdlRGV0ZWN0b3JSZWZdLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBjdXJyZW50IGNvbnRyb2xsZXIgYW5kIHRyaWdnZXJzIGNoYW5nZSBkZXRlY3Rpb24gaWYgdGhlIHN0YXRlIGNoYW5nZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhdGUgLSBUaGUgbmV3IGRpc2FibGVkIHN0YXRlIHRvIGJlIGFwcGxpZWQuXG4gICAqL1xuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkICE9PSBzdGF0ZSkge1xuICAgICAgdGhpcy5kaXNhYmxlZCA9IHN0YXRlO1xuICAgICAgdGhpcy5uZ09uQ2hhbmdlcygpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -9,7 +9,45 @@ const ELEMENTS_WITH_READONLY_ATTRIBUTE = {
|
|
|
9
9
|
};
|
|
10
10
|
export const READONLY_CONTROLLER = new InjectionToken('@odx/angular::ReadonlyWatchedController');
|
|
11
11
|
export const READONLY_INTERNAL_CONTROLLER = new InjectionToken('@odx/angular::ReadonlyController');
|
|
12
|
+
/**
|
|
13
|
+
* Directive to manage and propagate the readonly state within Angular components or directives,
|
|
14
|
+
* particularly useful for form elements like input, textarea, and select. It supports hierarchical
|
|
15
|
+
* readonly state management, allowing a parent component's readonly state to be inherited by its children.
|
|
16
|
+
*
|
|
17
|
+
* The directive leverages Angular's dependency injection system to access parent readonly controllers,
|
|
18
|
+
* enabling a cascading readonly state. This is beneficial in scenarios where a form or a part of it
|
|
19
|
+
* should become readonly based on certain conditions.
|
|
20
|
+
*
|
|
21
|
+
* Usage:
|
|
22
|
+
* Apply the `readonly` attribute, potentially bound to a component property, to use this directive.
|
|
23
|
+
* The directive can automatically provide itself to the component's children by calling the `connect`
|
|
24
|
+
* static method in the component's providers array.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* @Component({
|
|
29
|
+
* selector: 'app-custom-input',
|
|
30
|
+
* templateUrl: './custom-input.component.html',
|
|
31
|
+
* providers: [ReadonlyController.connect()],
|
|
32
|
+
* standalone: true,
|
|
33
|
+
* })
|
|
34
|
+
* export class CustomInputComponent {
|
|
35
|
+
* constructor(private readonlyCtrl: ReadonlyController) {}
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* Template for CustomInputComponent with conditional readonly state:
|
|
40
|
+
* ```html
|
|
41
|
+
* <input [readonly]="readonlyCtrl.readonly" />
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
12
44
|
export class ReadonlyController extends Controller {
|
|
45
|
+
/**
|
|
46
|
+
* Sets the readonly state of the current controller. If the state changes, updates the internal
|
|
47
|
+
* flag that controls the rendering of the `readonly` attribute in the host element.
|
|
48
|
+
*
|
|
49
|
+
* @param {boolean} value - The new readonly state to be applied.
|
|
50
|
+
*/
|
|
13
51
|
set readonly(value) {
|
|
14
52
|
if (this.isReadonly === value)
|
|
15
53
|
return;
|
|
@@ -24,12 +62,30 @@ export class ReadonlyController extends Controller {
|
|
|
24
62
|
this.parentController = inject(READONLY_CONTROLLER, { optional: true, skipSelf: true });
|
|
25
63
|
this.isReadonly = false;
|
|
26
64
|
this.hasReadonlyAttribute = false;
|
|
65
|
+
/**
|
|
66
|
+
* An observable that emits the current value of the `isReadonly` property whenever it changes.
|
|
67
|
+
* The emitted values are distinct and replayed to new subscribers.
|
|
68
|
+
*
|
|
69
|
+
* @emits {boolean} The current readonly state of the controller.
|
|
70
|
+
*/
|
|
27
71
|
this.isReadonly$ = this.change$.pipe(map(() => this.isReadonly), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
28
72
|
this.nodeName = element?.nativeElement.nodeName.toLowerCase() ?? '';
|
|
29
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Returns an instance of the ReadonlyController or null if it cannot be found.
|
|
76
|
+
*
|
|
77
|
+
* @returns {ReadonlyController | null} An instance of the ReadonlyController or null.
|
|
78
|
+
*/
|
|
30
79
|
static inject() {
|
|
31
80
|
return inject(READONLY_CONTROLLER, { optional: true });
|
|
32
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Static method to facilitate the injection of the `ReadonlyController` within Angular's DI system.
|
|
84
|
+
* This method provides a way to connect a component with its closest `ReadonlyController` parent,
|
|
85
|
+
* allowing for readonly state inheritance.
|
|
86
|
+
*
|
|
87
|
+
* @returns {Provider} An array of providers to enable readonly state management within a component.
|
|
88
|
+
*/
|
|
33
89
|
static connect() {
|
|
34
90
|
return [
|
|
35
91
|
{
|
|
@@ -74,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
74
130
|
type: Input,
|
|
75
131
|
args: [{ transform: booleanAttribute }]
|
|
76
132
|
}] } });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG9ubHkuY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbnRyb2xsZXJzL3JlYWRvbmx5LmNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDaEssT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFMUMsTUFBTSxnQ0FBZ0MsR0FBRztJQUN2QyxLQUFLLEVBQUUsSUFBSTtJQUNYLFFBQVEsRUFBRSxJQUFJO0lBQ2QsTUFBTSxFQUFFLElBQUk7Q0FDYyxDQUFDO0FBRTdCLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFxQix5Q0FBeUMsQ0FBQyxDQUFDO0FBQ3JILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUE0QixrQ0FBa0MsQ0FBQyxDQUFDO0FBZTlILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxVQUFVO0lBYWhELElBQ1csUUFBUSxDQUFDLEtBQWM7UUFDaEMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEtBQUs7WUFBRSxPQUFPO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBQ0QsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQztJQUM5RCxDQUFDO0lBRUQsWUFBWSxPQUF1QztRQUNqRCxLQUFLLEVBQUUsQ0FBQztRQXZCTyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTVGLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFakIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBRXZCLGdCQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQzdDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQzFCLG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQy9DLENBQUM7UUFjQSxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU07UUFDbEIsT0FBTyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQU87UUFDbkIsT0FBTztZQUNMO2dCQUNFLE9BQU8sRUFBRSw0QkFBNEI7Z0JBQ3JDLFVBQVUsRUFBRSxDQUFDLGNBQXlDLEVBQUUsVUFBNkIsRUFBRSxFQUFFLENBQUMsY0FBYyxJQUFJLElBQUksa0JBQWtCLENBQUMsVUFBVSxDQUFDO2dCQUM5SSxJQUFJLEVBQUU7b0JBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsa0JBQWtCLENBQUM7b0JBQ2hELENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxVQUFVLENBQUM7aUJBQzdCO2FBQ0Y7WUFDRDtnQkFDRSxPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixVQUFVLEVBQUUsVUFBVSxDQUFDLEtBQUs7Z0JBQzVCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLDRCQUE0QixDQUFDLEVBQUUsaUJBQWlCLENBQUM7YUFDdEY7U0FDRixDQUFDO0lBQ0osQ0FBQzsrR0FoRFUsa0JBQWtCO21HQUFsQixrQkFBa0IsMkZBYVQsZ0JBQWdCLDJGQXZCekI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsNEJBQTRCO2dCQUNyQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO2FBQ2xEO1NBQ0Y7OzRGQUtVLGtCQUFrQjtrQkFiOUIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsNEJBQTRCOzRCQUNyQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQzt5QkFDbEQ7cUJBQ0Y7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLGlCQUFpQixFQUFFLDhCQUE4QjtxQkFDbEQ7aUJBQ0Y7aUdBZVksUUFBUTtzQkFEbEIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJvb2xlYW5BdHRyaWJ1dGUsIENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEhvc3QsIGluamVjdCwgSW5qZWN0aW9uVG9rZW4sIElucHV0LCBPcHRpb25hbCwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVyJztcblxuY29uc3QgRUxFTUVOVFNfV0lUSF9SRUFET05MWV9BVFRSSUJVVEUgPSB7XG4gIGlucHV0OiB0cnVlLFxuICB0ZXh0YXJlYTogdHJ1ZSxcbiAgc2VsZWN0OiB0cnVlLFxufSBhcyBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcblxuZXhwb3J0IGNvbnN0IFJFQURPTkxZX0NPTlRST0xMRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48UmVhZG9ubHlDb250cm9sbGVyPignQG9keC9hbmd1bGFyOjpSZWFkb25seVdhdGNoZWRDb250cm9sbGVyJyk7XG5leHBvcnQgY29uc3QgUkVBRE9OTFlfSU5URVJOQUxfQ09OVFJPTExFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZWFkb25seUNvbnRyb2xsZXIgfCBudWxsPignQG9keC9hbmd1bGFyOjpSZWFkb25seUNvbnRyb2xsZXInKTtcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW3JlYWRvbmx5XScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFJFQURPTkxZX0lOVEVSTkFMX0NPTlRST0xMRVIsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSZWFkb25seUNvbnRyb2xsZXIpLFxuICAgIH0sXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIucmVhZG9ubHldJzogJ2hhc1JlYWRvbmx5QXR0cmlidXRlIHx8IG51bGwnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBSZWFkb25seUNvbnRyb2xsZXIgZXh0ZW5kcyBDb250cm9sbGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXJlbnRDb250cm9sbGVyID0gaW5qZWN0KFJFQURPTkxZX0NPTlRST0xMRVIsIHsgb3B0aW9uYWw6IHRydWUsIHNraXBTZWxmOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IG5vZGVOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgaXNSZWFkb25seSA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBoYXNSZWFkb25seUF0dHJpYnV0ZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyByZWFkb25seSBpc1JlYWRvbmx5JCA9IHRoaXMuY2hhbmdlJC5waXBlKFxuICAgIG1hcCgoKSA9PiB0aGlzLmlzUmVhZG9ubHkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHNldCByZWFkb25seSh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmlzUmVhZG9ubHkgPT09IHZhbHVlKSByZXR1cm47XG4gICAgdGhpcy5pc1JlYWRvbmx5ID0gdmFsdWU7XG4gICAgdGhpcy5oYXNSZWFkb25seUF0dHJpYnV0ZSA9IHRoaXMuaXNSZWFkb25seSAmJiBFTEVNRU5UU19XSVRIX1JFQURPTkxZX0FUVFJJQlVURVt0aGlzLm5vZGVOYW1lXTtcbiAgfVxuICBwdWJsaWMgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzUmVhZG9ubHkgfHwgISF0aGlzLnBhcmVudENvbnRyb2xsZXI/LnJlYWRvbmx5O1xuICB9XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBudWxsKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5vZGVOYW1lID0gZWxlbWVudD8ubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID8/ICcnO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpbmplY3QoKTogUmVhZG9ubHlDb250cm9sbGVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIGluamVjdChSRUFET05MWV9DT05UUk9MTEVSLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb25uZWN0KCk6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwcm92aWRlOiBSRUFET05MWV9JTlRFUk5BTF9DT05UUk9MTEVSLFxuICAgICAgICB1c2VGYWN0b3J5OiAoaG9zdENvbnRyb2xsZXI6IFJlYWRvbmx5Q29udHJvbGxlciB8IG51bGwsIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYgfCBudWxsKSA9PiBob3N0Q29udHJvbGxlciA/PyBuZXcgUmVhZG9ubHlDb250cm9sbGVyKGVsZW1lbnRSZWYpLFxuICAgICAgICBkZXBzOiBbXG4gICAgICAgICAgW25ldyBPcHRpb25hbCgpLCBuZXcgSG9zdCgpLCBSZWFkb25seUNvbnRyb2xsZXJdLFxuICAgICAgICAgIFtuZXcgT3B0aW9uYWwoKSwgRWxlbWVudFJlZl0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBSRUFET05MWV9DT05UUk9MTEVSLFxuICAgICAgICB1c2VGYWN0b3J5OiBDb250cm9sbGVyLnNldHVwLFxuICAgICAgICBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBuZXcgSG9zdCgpLCBSRUFET05MWV9JTlRFUk5BTF9DT05UUk9MTEVSXSwgQ2hhbmdlRGV0ZWN0b3JSZWZdLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG59XG4iXX0=
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG9ubHkuY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbnRyb2xsZXJzL3JlYWRvbmx5LmNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDaEssT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFMUMsTUFBTSxnQ0FBZ0MsR0FBRztJQUN2QyxLQUFLLEVBQUUsSUFBSTtJQUNYLFFBQVEsRUFBRSxJQUFJO0lBQ2QsTUFBTSxFQUFFLElBQUk7Q0FDYyxDQUFDO0FBRTdCLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFxQix5Q0FBeUMsQ0FBQyxDQUFDO0FBQ3JILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUE0QixrQ0FBa0MsQ0FBQyxDQUFDO0FBRTlIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHO0FBY0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFVBQVU7SUFtQmhEOzs7OztPQUtHO0lBQ0gsSUFDVyxRQUFRLENBQUMsS0FBYztRQUNoQyxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssS0FBSztZQUFFLE9BQU87UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksZ0NBQWdDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFDRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDO0lBQzlELENBQUM7SUFFRCxZQUFZLE9BQXVDO1FBQ2pELEtBQUssRUFBRSxDQUFDO1FBbkNPLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFNUYsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVqQix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFFdkM7Ozs7O1dBS0c7UUFDYSxnQkFBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUM3QyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUMxQixvQkFBb0IsRUFBRSxFQUN0QixXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUMvQyxDQUFDO1FBb0JBLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE1BQU07UUFDbEIsT0FBTyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLE9BQU87UUFDbkIsT0FBTztZQUNMO2dCQUNFLE9BQU8sRUFBRSw0QkFBNEI7Z0JBQ3JDLFVBQVUsRUFBRSxDQUFDLGNBQXlDLEVBQUUsVUFBNkIsRUFBRSxFQUFFLENBQUMsY0FBYyxJQUFJLElBQUksa0JBQWtCLENBQUMsVUFBVSxDQUFDO2dCQUM5SSxJQUFJLEVBQUU7b0JBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsa0JBQWtCLENBQUM7b0JBQ2hELENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxVQUFVLENBQUM7aUJBQzdCO2FBQ0Y7WUFDRDtnQkFDRSxPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixVQUFVLEVBQUUsVUFBVSxDQUFDLEtBQUs7Z0JBQzVCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLDRCQUE0QixDQUFDLEVBQUUsaUJBQWlCLENBQUM7YUFDdEY7U0FDRixDQUFDO0lBQ0osQ0FBQzsrR0F4RVUsa0JBQWtCO21HQUFsQixrQkFBa0IsMkZBeUJULGdCQUFnQiwyRkFuQ3pCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLDRCQUE0QjtnQkFDckMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzthQUNsRDtTQUNGOzs0RkFLVSxrQkFBa0I7a0JBYjlCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxZQUFZO29CQUN0QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLDRCQUE0Qjs0QkFDckMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7eUJBQ2xEO3FCQUNGO29CQUNELElBQUksRUFBRTt3QkFDSixpQkFBaUIsRUFBRSw4QkFBOEI7cUJBQ2xEO2lCQUNGO2lHQTJCWSxRQUFRO3NCQURsQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgSG9zdCwgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgSW5wdXQsIE9wdGlvbmFsLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbnRyb2xsZXIgfSBmcm9tICcuL2NvbnRyb2xsZXInO1xuXG5jb25zdCBFTEVNRU5UU19XSVRIX1JFQURPTkxZX0FUVFJJQlVURSA9IHtcbiAgaW5wdXQ6IHRydWUsXG4gIHRleHRhcmVhOiB0cnVlLFxuICBzZWxlY3Q6IHRydWUsXG59IGFzIFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuXG5leHBvcnQgY29uc3QgUkVBRE9OTFlfQ09OVFJPTExFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZWFkb25seUNvbnRyb2xsZXI+KCdAb2R4L2FuZ3VsYXI6OlJlYWRvbmx5V2F0Y2hlZENvbnRyb2xsZXInKTtcbmV4cG9ydCBjb25zdCBSRUFET05MWV9JTlRFUk5BTF9DT05UUk9MTEVSID0gbmV3IEluamVjdGlvblRva2VuPFJlYWRvbmx5Q29udHJvbGxlciB8IG51bGw+KCdAb2R4L2FuZ3VsYXI6OlJlYWRvbmx5Q29udHJvbGxlcicpO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0byBtYW5hZ2UgYW5kIHByb3BhZ2F0ZSB0aGUgcmVhZG9ubHkgc3RhdGUgd2l0aGluIEFuZ3VsYXIgY29tcG9uZW50cyBvciBkaXJlY3RpdmVzLFxuICogcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgZm9ybSBlbGVtZW50cyBsaWtlIGlucHV0LCB0ZXh0YXJlYSwgYW5kIHNlbGVjdC4gSXQgc3VwcG9ydHMgaGllcmFyY2hpY2FsXG4gKiByZWFkb25seSBzdGF0ZSBtYW5hZ2VtZW50LCBhbGxvd2luZyBhIHBhcmVudCBjb21wb25lbnQncyByZWFkb25seSBzdGF0ZSB0byBiZSBpbmhlcml0ZWQgYnkgaXRzIGNoaWxkcmVuLlxuICpcbiAqIFRoZSBkaXJlY3RpdmUgbGV2ZXJhZ2VzIEFuZ3VsYXIncyBkZXBlbmRlbmN5IGluamVjdGlvbiBzeXN0ZW0gdG8gYWNjZXNzIHBhcmVudCByZWFkb25seSBjb250cm9sbGVycyxcbiAqIGVuYWJsaW5nIGEgY2FzY2FkaW5nIHJlYWRvbmx5IHN0YXRlLiBUaGlzIGlzIGJlbmVmaWNpYWwgaW4gc2NlbmFyaW9zIHdoZXJlIGEgZm9ybSBvciBhIHBhcnQgb2YgaXRcbiAqIHNob3VsZCBiZWNvbWUgcmVhZG9ubHkgYmFzZWQgb24gY2VydGFpbiBjb25kaXRpb25zLlxuICpcbiAqIFVzYWdlOlxuICogQXBwbHkgdGhlIGByZWFkb25seWAgYXR0cmlidXRlLCBwb3RlbnRpYWxseSBib3VuZCB0byBhIGNvbXBvbmVudCBwcm9wZXJ0eSwgdG8gdXNlIHRoaXMgZGlyZWN0aXZlLlxuICogVGhlIGRpcmVjdGl2ZSBjYW4gYXV0b21hdGljYWxseSBwcm92aWRlIGl0c2VsZiB0byB0aGUgY29tcG9uZW50J3MgY2hpbGRyZW4gYnkgY2FsbGluZyB0aGUgYGNvbm5lY3RgXG4gKiBzdGF0aWMgbWV0aG9kIGluIHRoZSBjb21wb25lbnQncyBwcm92aWRlcnMgYXJyYXkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAtY3VzdG9tLWlucHV0JyxcbiAqICAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gKiAgIHByb3ZpZGVyczogW1JlYWRvbmx5Q29udHJvbGxlci5jb25uZWN0KCldLFxuICogICBzdGFuZGFsb25lOiB0cnVlLFxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBDdXN0b21JbnB1dENvbXBvbmVudCB7XG4gKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHlDdHJsOiBSZWFkb25seUNvbnRyb2xsZXIpIHt9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBUZW1wbGF0ZSBmb3IgQ3VzdG9tSW5wdXRDb21wb25lbnQgd2l0aCBjb25kaXRpb25hbCByZWFkb25seSBzdGF0ZTpcbiAqIGBgYGh0bWxcbiAqIDxpbnB1dCBbcmVhZG9ubHldPVwicmVhZG9ubHlDdHJsLnJlYWRvbmx5XCIgLz5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbcmVhZG9ubHldJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogUkVBRE9OTFlfSU5URVJOQUxfQ09OVFJPTExFUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJlYWRvbmx5Q29udHJvbGxlciksXG4gICAgfSxcbiAgXSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5yZWFkb25seV0nOiAnaGFzUmVhZG9ubHlBdHRyaWJ1dGUgfHwgbnVsbCcsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIFJlYWRvbmx5Q29udHJvbGxlciBleHRlbmRzIENvbnRyb2xsZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHBhcmVudENvbnRyb2xsZXIgPSBpbmplY3QoUkVBRE9OTFlfQ09OVFJPTExFUiwgeyBvcHRpb25hbDogdHJ1ZSwgc2tpcFNlbGY6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbm9kZU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBpc1JlYWRvbmx5ID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGhhc1JlYWRvbmx5QXR0cmlidXRlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgYGlzUmVhZG9ubHlgIHByb3BlcnR5IHdoZW5ldmVyIGl0IGNoYW5nZXMuXG4gICAqIFRoZSBlbWl0dGVkIHZhbHVlcyBhcmUgZGlzdGluY3QgYW5kIHJlcGxheWVkIHRvIG5ldyBzdWJzY3JpYmVycy5cbiAgICpcbiAgICogQGVtaXRzIHtib29sZWFufSBUaGUgY3VycmVudCByZWFkb25seSBzdGF0ZSBvZiB0aGUgY29udHJvbGxlci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc1JlYWRvbmx5JCA9IHRoaXMuY2hhbmdlJC5waXBlKFxuICAgIG1hcCgoKSA9PiB0aGlzLmlzUmVhZG9ubHkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgcmVhZG9ubHkgc3RhdGUgb2YgdGhlIGN1cnJlbnQgY29udHJvbGxlci4gSWYgdGhlIHN0YXRlIGNoYW5nZXMsIHVwZGF0ZXMgdGhlIGludGVybmFsXG4gICAqIGZsYWcgdGhhdCBjb250cm9scyB0aGUgcmVuZGVyaW5nIG9mIHRoZSBgcmVhZG9ubHlgIGF0dHJpYnV0ZSBpbiB0aGUgaG9zdCBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHZhbHVlIC0gVGhlIG5ldyByZWFkb25seSBzdGF0ZSB0byBiZSBhcHBsaWVkLlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5pc1JlYWRvbmx5ID09PSB2YWx1ZSkgcmV0dXJuO1xuICAgIHRoaXMuaXNSZWFkb25seSA9IHZhbHVlO1xuICAgIHRoaXMuaGFzUmVhZG9ubHlBdHRyaWJ1dGUgPSB0aGlzLmlzUmVhZG9ubHkgJiYgRUxFTUVOVFNfV0lUSF9SRUFET05MWV9BVFRSSUJVVEVbdGhpcy5ub2RlTmFtZV07XG4gIH1cbiAgcHVibGljIGdldCByZWFkb25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1JlYWRvbmx5IHx8ICEhdGhpcy5wYXJlbnRDb250cm9sbGVyPy5yZWFkb25seTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgbnVsbCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5ub2RlTmFtZSA9IGVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA/PyAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSBSZWFkb25seUNvbnRyb2xsZXIgb3IgbnVsbCBpZiBpdCBjYW5ub3QgYmUgZm91bmQuXG4gICAqXG4gICAqIEByZXR1cm5zIHtSZWFkb25seUNvbnRyb2xsZXIgfCBudWxsfSBBbiBpbnN0YW5jZSBvZiB0aGUgUmVhZG9ubHlDb250cm9sbGVyIG9yIG51bGwuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGluamVjdCgpOiBSZWFkb25seUNvbnRyb2xsZXIgfCBudWxsIHtcbiAgICByZXR1cm4gaW5qZWN0KFJFQURPTkxZX0NPTlRST0xMRVIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3RhdGljIG1ldGhvZCB0byBmYWNpbGl0YXRlIHRoZSBpbmplY3Rpb24gb2YgdGhlIGBSZWFkb25seUNvbnRyb2xsZXJgIHdpdGhpbiBBbmd1bGFyJ3MgREkgc3lzdGVtLlxuICAgKiBUaGlzIG1ldGhvZCBwcm92aWRlcyBhIHdheSB0byBjb25uZWN0IGEgY29tcG9uZW50IHdpdGggaXRzIGNsb3Nlc3QgYFJlYWRvbmx5Q29udHJvbGxlcmAgcGFyZW50LFxuICAgKiBhbGxvd2luZyBmb3IgcmVhZG9ubHkgc3RhdGUgaW5oZXJpdGFuY2UuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm92aWRlcn0gQW4gYXJyYXkgb2YgcHJvdmlkZXJzIHRvIGVuYWJsZSByZWFkb25seSBzdGF0ZSBtYW5hZ2VtZW50IHdpdGhpbiBhIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29ubmVjdCgpOiBQcm92aWRlciB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogUkVBRE9OTFlfSU5URVJOQUxfQ09OVFJPTExFUixcbiAgICAgICAgdXNlRmFjdG9yeTogKGhvc3RDb250cm9sbGVyOiBSZWFkb25seUNvbnRyb2xsZXIgfCBudWxsLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmIHwgbnVsbCkgPT4gaG9zdENvbnRyb2xsZXIgPz8gbmV3IFJlYWRvbmx5Q29udHJvbGxlcihlbGVtZW50UmVmKSxcbiAgICAgICAgZGVwczogW1xuICAgICAgICAgIFtuZXcgT3B0aW9uYWwoKSwgbmV3IEhvc3QoKSwgUmVhZG9ubHlDb250cm9sbGVyXSxcbiAgICAgICAgICBbbmV3IE9wdGlvbmFsKCksIEVsZW1lbnRSZWZdLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogUkVBRE9OTFlfQ09OVFJPTExFUixcbiAgICAgICAgdXNlRmFjdG9yeTogQ29udHJvbGxlci5zZXR1cCxcbiAgICAgICAgZGVwczogW1tuZXcgT3B0aW9uYWwoKSwgbmV3IEhvc3QoKSwgUkVBRE9OTFlfSU5URVJOQUxfQ09OVFJPTExFUl0sIENoYW5nZURldGVjdG9yUmVmXSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxufVxuIl19
|
|
@@ -2,6 +2,25 @@ import { booleanAttribute, Directive, EventEmitter, inject, Input, Output, Rende
|
|
|
2
2
|
import { deferFn, hasChanged, injectElement } from '@odx/angular/utils';
|
|
3
3
|
import { debounceTime, NEVER, Observable, switchMap, tap } from 'rxjs';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Directive to detect clicks outside of an element. When active, it listens for clicks outside
|
|
7
|
+
* the host element and emits an event through the `odxClickOutside` EventEmitter. This is useful
|
|
8
|
+
* for handling UI logic that depends on outside clicks, such as closing a dropdown or modal
|
|
9
|
+
* when the user clicks elsewhere on the page.
|
|
10
|
+
*
|
|
11
|
+
* Apply `odxClickOutside` to an element and bind an event handler to react to outside clicks.
|
|
12
|
+
* Optionally, use `[odxClickOutsideActive]="condition"` to enable or disable the detection dynamically.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```html
|
|
16
|
+
* <div
|
|
17
|
+
* odxClickOutside
|
|
18
|
+
* (odxClickOutside)="handleClickOutside()"
|
|
19
|
+
* [odxClickOutsideActive]="isDropdownOpen">
|
|
20
|
+
* <!-- Dropdown content -->
|
|
21
|
+
* </div>
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
5
24
|
export class ClickOutsideDirective {
|
|
6
25
|
constructor() {
|
|
7
26
|
this.element = injectElement();
|
|
@@ -14,7 +33,17 @@ export class ClickOutsideDirective {
|
|
|
14
33
|
const clickedOutside = hostElement.isConnected && targetElement.isConnected && !hostElement.contains(targetElement);
|
|
15
34
|
return this.registerEventHandler('mouseup').pipe(debounceTime(0), tap(() => clickedOutside && this.odxClickOutside.emit(event)));
|
|
16
35
|
}));
|
|
36
|
+
/**
|
|
37
|
+
* Controls whether the outside click detection is active. When `true`, the directive listens for outside clicks.
|
|
38
|
+
*
|
|
39
|
+
* @type {boolean}
|
|
40
|
+
*/
|
|
17
41
|
this.odxClickOutsideActive = true;
|
|
42
|
+
/**
|
|
43
|
+
* EventEmitter that emits the native Event object when an outside click is detected.
|
|
44
|
+
*
|
|
45
|
+
* @emits {Event}
|
|
46
|
+
*/
|
|
18
47
|
this.odxClickOutside = new EventEmitter();
|
|
19
48
|
}
|
|
20
49
|
ngOnInit() {
|
|
@@ -69,4 +98,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
69
98
|
}], odxClickOutside: [{
|
|
70
99
|
type: Output
|
|
71
100
|
}] } });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFhLE1BQU0sb0JBQW9CLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFnQixTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUVyRjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBS0gsTUFBTSxPQUFPLHFCQUFxQjtJQUpsQztRQU1tQixZQUFPLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFDMUIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixvQkFBZSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQzVFLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQzlDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQy9DLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFpQixDQUFDO1lBQzlDLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxXQUFXLElBQUksYUFBYSxDQUFDLFdBQVcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDcEgsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUM5QyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQ2YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUM5RCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGOzs7O1dBSUc7UUFFSSwwQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFFcEM7Ozs7V0FJRztRQUVhLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztLQTJDN0Q7SUF6Q1EsUUFBUTtRQUNiLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzlCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFTSxXQUFXLENBQUMsT0FBeUM7UUFDMUQsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ3RELElBQUksT0FBTyxDQUFDLHFCQUFxQixFQUFFLFlBQVksRUFBRTtnQkFDL0MsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ3hCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNoQjtTQUNGO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTyxPQUFPO1FBQ2IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRU8sZUFBZTtRQUNyQixPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQixDQUFrQixTQUFpQjtRQUM3RCxPQUFPLElBQUksVUFBVSxDQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDdEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLEtBQVEsRUFBRSxFQUFFO2dCQUN4RSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBekVVLHFCQUFxQjttR0FBckIscUJBQXFCLHlJQXNCWixnQkFBZ0I7OzRGQXRCekIscUJBQXFCO2tCQUpqQyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsbUJBQW1CO2lCQUM5Qjs4QkF3QlEscUJBQXFCO3NCQUQzQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQVN0QixlQUFlO3NCQUQ5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWZlckZuLCBoYXNDaGFuZ2VkLCBpbmplY3RFbGVtZW50LCBOZ0NoYW5nZXMgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBORVZFUiwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0byBkZXRlY3QgY2xpY2tzIG91dHNpZGUgb2YgYW4gZWxlbWVudC4gV2hlbiBhY3RpdmUsIGl0IGxpc3RlbnMgZm9yIGNsaWNrcyBvdXRzaWRlXG4gKiB0aGUgaG9zdCBlbGVtZW50IGFuZCBlbWl0cyBhbiBldmVudCB0aHJvdWdoIHRoZSBgb2R4Q2xpY2tPdXRzaWRlYCBFdmVudEVtaXR0ZXIuIFRoaXMgaXMgdXNlZnVsXG4gKiBmb3IgaGFuZGxpbmcgVUkgbG9naWMgdGhhdCBkZXBlbmRzIG9uIG91dHNpZGUgY2xpY2tzLCBzdWNoIGFzIGNsb3NpbmcgYSBkcm9wZG93biBvciBtb2RhbFxuICogd2hlbiB0aGUgdXNlciBjbGlja3MgZWxzZXdoZXJlIG9uIHRoZSBwYWdlLlxuICpcbiAqIEFwcGx5IGBvZHhDbGlja091dHNpZGVgIHRvIGFuIGVsZW1lbnQgYW5kIGJpbmQgYW4gZXZlbnQgaGFuZGxlciB0byByZWFjdCB0byBvdXRzaWRlIGNsaWNrcy5cbiAqIE9wdGlvbmFsbHksIHVzZSBgW29keENsaWNrT3V0c2lkZUFjdGl2ZV09XCJjb25kaXRpb25cImAgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIGRldGVjdGlvbiBkeW5hbWljYWxseS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGRpdlxuICogICBvZHhDbGlja091dHNpZGVcbiAqICAgKG9keENsaWNrT3V0c2lkZSk9XCJoYW5kbGVDbGlja091dHNpZGUoKVwiXG4gKiAgIFtvZHhDbGlja091dHNpZGVBY3RpdmVdPVwiaXNEcm9wZG93bk9wZW5cIj5cbiAqICAgPCEtLSBEcm9wZG93biBjb250ZW50IC0tPlxuICogPC9kaXY+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW29keENsaWNrT3V0c2lkZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBDbGlja091dHNpZGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBsaXN0ZW5lcj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0RWxlbWVudCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25PdXRzaWRlQ2xpY2skID0gdGhpcy5yZWdpc3RlckV2ZW50SGFuZGxlcignbW91c2Vkb3duJykucGlwZShcbiAgICBzd2l0Y2hNYXAoKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoIXRoaXMub2R4Q2xpY2tPdXRzaWRlQWN0aXZlKSByZXR1cm4gTkVWRVI7XG4gICAgICBjb25zdCBob3N0RWxlbWVudCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBFbGVtZW50O1xuICAgICAgY29uc3QgY2xpY2tlZE91dHNpZGUgPSBob3N0RWxlbWVudC5pc0Nvbm5lY3RlZCAmJiB0YXJnZXRFbGVtZW50LmlzQ29ubmVjdGVkICYmICFob3N0RWxlbWVudC5jb250YWlucyh0YXJnZXRFbGVtZW50KTtcbiAgICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyRXZlbnRIYW5kbGVyKCdtb3VzZXVwJykucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDApLFxuICAgICAgICB0YXAoKCkgPT4gY2xpY2tlZE91dHNpZGUgJiYgdGhpcy5vZHhDbGlja091dHNpZGUuZW1pdChldmVudCkpLFxuICAgICAgKTtcbiAgICB9KSxcbiAgKTtcblxuICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciB0aGUgb3V0c2lkZSBjbGljayBkZXRlY3Rpb24gaXMgYWN0aXZlLiBXaGVuIGB0cnVlYCwgdGhlIGRpcmVjdGl2ZSBsaXN0ZW5zIGZvciBvdXRzaWRlIGNsaWNrcy5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIG9keENsaWNrT3V0c2lkZUFjdGl2ZSA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEV2ZW50RW1pdHRlciB0aGF0IGVtaXRzIHRoZSBuYXRpdmUgRXZlbnQgb2JqZWN0IHdoZW4gYW4gb3V0c2lkZSBjbGljayBpcyBkZXRlY3RlZC5cbiAgICpcbiAgICogQGVtaXRzIHtFdmVudH1cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgb2R4Q2xpY2tPdXRzaWRlID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub2R4Q2xpY2tPdXRzaWRlQWN0aXZlKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVySGFuZGxlcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBOZ0NoYW5nZXM8Q2xpY2tPdXRzaWRlRGlyZWN0aXZlPik6IHZvaWQge1xuICAgIGlmIChoYXNDaGFuZ2VkKGNoYW5nZXMsICdvZHhDbGlja091dHNpZGVBY3RpdmUnLCB0cnVlKSkge1xuICAgICAgaWYgKGNoYW5nZXMub2R4Q2xpY2tPdXRzaWRlQWN0aXZlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgdGhpcy5yZWdpc3RlckhhbmRsZXIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5saXN0ZW5lcikge1xuICAgICAgdGhpcy5saXN0ZW5lci51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5saXN0ZW5lciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVySGFuZGxlcigpIHtcbiAgICBkZWZlckZuKCgpID0+IHtcbiAgICAgIHRoaXMubGlzdGVuZXIgPSB0aGlzLm9uT3V0c2lkZUNsaWNrJC5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJFdmVudEhhbmRsZXI8VCBleHRlbmRzIEV2ZW50PihldmVudE5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPigoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgY29uc3QgbGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCBldmVudE5hbWUsIChldmVudDogVCkgPT4ge1xuICAgICAgICBzdWJzY3JpYmVyLm5leHQoZXZlbnQpO1xuICAgICAgfSk7XG4gICAgICBzdWJzY3JpYmVyLmFkZChsaXN0ZW5lcik7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* A directive to manage focus within components. It emits events when the host component is focused,
|
|
5
|
+
* and dynamically updates the `tabindex` attribute to control focusability. This directive is particularly
|
|
6
|
+
* useful for custom components that require explicit focus management, such as custom input components
|
|
7
|
+
* or complex interactive components.
|
|
8
|
+
*
|
|
9
|
+
* The directive ensures that the component can be focused by setting `tabindex="0"`, making it reachable
|
|
10
|
+
* via keyboard navigation. When the component gains focus (`focusin`), it becomes non-focusable (`tabindex="-1"`)
|
|
11
|
+
* to manage focus delegation internally. It restores its focusability (`tabindex="0"`) when losing focus (`focusout`),
|
|
12
|
+
* allowing it to be focused again in the future.
|
|
13
|
+
*/
|
|
3
14
|
export class DelegateFocusDirective {
|
|
4
15
|
constructor() {
|
|
5
16
|
this.tabindex = 0;
|
|
17
|
+
/**
|
|
18
|
+
* Emits an event when the element is focused.
|
|
19
|
+
*/
|
|
6
20
|
this.focused = new EventEmitter();
|
|
7
21
|
}
|
|
8
22
|
handleFocus() {
|
|
@@ -37,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
37
51
|
type: HostListener,
|
|
38
52
|
args: ['focusout']
|
|
39
53
|
}] } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdGUtZm9jdXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvZGlyZWN0aXZlcy9kZWxlZ2F0ZS1mb2N1cy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFOUU7Ozs7Ozs7Ozs7R0FVRztBQU9ILE1BQU0sT0FBTyxzQkFBc0I7SUFObkM7UUFPWSxhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBRXZCOztXQUVHO1FBRUksWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0FnQjNDO0lBYlcsV0FBVztRQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFHUyxhQUFhO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUdTLGNBQWM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDcEIsQ0FBQzsrR0F0QlUsc0JBQXNCO21HQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBTmxDLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDSixpQkFBaUIsRUFBRSxVQUFVO3FCQUM5QjtpQkFDRjs4QkFRUSxPQUFPO3NCQURiLE1BQU07Z0JBSUcsV0FBVztzQkFEcEIsWUFBWTt1QkFBQyxPQUFPO2dCQU1YLGFBQWE7c0JBRHRCLFlBQVk7dUJBQUMsU0FBUztnQkFNYixjQUFjO3NCQUR2QixZQUFZO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0byBtYW5hZ2UgZm9jdXMgd2l0aGluIGNvbXBvbmVudHMuIEl0IGVtaXRzIGV2ZW50cyB3aGVuIHRoZSBob3N0IGNvbXBvbmVudCBpcyBmb2N1c2VkLFxuICogYW5kIGR5bmFtaWNhbGx5IHVwZGF0ZXMgdGhlIGB0YWJpbmRleGAgYXR0cmlidXRlIHRvIGNvbnRyb2wgZm9jdXNhYmlsaXR5LiBUaGlzIGRpcmVjdGl2ZSBpcyBwYXJ0aWN1bGFybHlcbiAqIHVzZWZ1bCBmb3IgY3VzdG9tIGNvbXBvbmVudHMgdGhhdCByZXF1aXJlIGV4cGxpY2l0IGZvY3VzIG1hbmFnZW1lbnQsIHN1Y2ggYXMgY3VzdG9tIGlucHV0IGNvbXBvbmVudHNcbiAqIG9yIGNvbXBsZXggaW50ZXJhY3RpdmUgY29tcG9uZW50cy5cbiAqXG4gKiBUaGUgZGlyZWN0aXZlIGVuc3VyZXMgdGhhdCB0aGUgY29tcG9uZW50IGNhbiBiZSBmb2N1c2VkIGJ5IHNldHRpbmcgYHRhYmluZGV4PVwiMFwiYCwgbWFraW5nIGl0IHJlYWNoYWJsZVxuICogdmlhIGtleWJvYXJkIG5hdmlnYXRpb24uIFdoZW4gdGhlIGNvbXBvbmVudCBnYWlucyBmb2N1cyAoYGZvY3VzaW5gKSwgaXQgYmVjb21lcyBub24tZm9jdXNhYmxlIChgdGFiaW5kZXg9XCItMVwiYClcbiAqIHRvIG1hbmFnZSBmb2N1cyBkZWxlZ2F0aW9uIGludGVybmFsbHkuIEl0IHJlc3RvcmVzIGl0cyBmb2N1c2FiaWxpdHkgKGB0YWJpbmRleD1cIjBcImApIHdoZW4gbG9zaW5nIGZvY3VzIChgZm9jdXNvdXRgKSxcbiAqIGFsbG93aW5nIGl0IHRvIGJlIGZvY3VzZWQgYWdhaW4gaW4gdGhlIGZ1dHVyZS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIudGFiaW5kZXhdJzogJ3RhYmluZGV4JyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgRGVsZWdhdGVGb2N1c0RpcmVjdGl2ZSB7XG4gIHByb3RlY3RlZCB0YWJpbmRleCA9IDA7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIGVsZW1lbnQgaXMgZm9jdXNlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZm9jdXNlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gIHByb3RlY3RlZCBoYW5kbGVGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzZWQubmV4dCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXNpbicpXG4gIHByb3RlY3RlZCBoYW5kbGVGb2N1c0luKCk6IHZvaWQge1xuICAgIHRoaXMudGFiaW5kZXggPSAtMTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JylcbiAgcHJvdGVjdGVkIGhhbmRsZUZvY3VzT3V0KCk6IHZvaWQge1xuICAgIHRoaXMudGFiaW5kZXggPSAwO1xuICB9XG59XG4iXX0=
|