@odx/angular 6.1.0 → 6.2.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 +15 -0
- package/cdk/checkbox-control/lib/checkbox-control.directive.d.ts +19 -1
- package/cdk/connected-overlay/lib/models/connected-overlay-ref.d.ts +1 -1
- package/cdk/dynamic-view/lib/dynamic-view.directive.d.ts +9 -1
- package/cdk/expandable/lib/directives/expandable-container.directive.d.ts +9 -5
- package/cdk/expandable/lib/directives/expandable-item.directive.d.ts +4 -1
- package/cdk/option-control/lib/option-control.d.ts +2 -0
- package/cdk/radio-group-control/lib/radio-control.directive.d.ts +18 -0
- package/cdk/radio-group-control/lib/radio-group-control.directive.d.ts +3 -1
- package/components/accordion/lib/components/accordion-item/accordion-item.component.d.ts +9 -5
- package/components/action-group/action-group.component.d.ts +3 -0
- package/components/area-header/area-header.component.d.ts +2 -1
- package/components/autocomplete/lib/autocomplete.component.d.ts +17 -4
- package/components/autocomplete/lib/components/option/autocomplete-option.component.d.ts +8 -0
- package/components/autocomplete/lib/directives/autocomplete-input-control.directive.d.ts +4 -0
- package/components/avatar/lib/avatar.component.d.ts +6 -2
- package/components/badge/lib/badge.component.d.ts +12 -1
- package/components/badge/lib/badge.directive.d.ts +18 -3
- package/components/bar/lib/directives/bar-button.directive.d.ts +6 -0
- package/components/button/lib/button.component.d.ts +9 -1
- package/components/button-group/lib/button-group.component.d.ts +12 -0
- package/components/calendar/lib/calendar.component.d.ts +11 -0
- package/components/calendar/lib/calendar.config.d.ts +6 -0
- package/components/calendar/lib/calendar.service.d.ts +13 -1
- package/components/calendar/lib/components/calendar-header/calendar-header.component.d.ts +16 -0
- package/components/calendar/lib/daterange.service.d.ts +3 -0
- package/components/calendar/lib/directives/calendar-cell.directive.d.ts +4 -0
- package/components/calendar/lib/directives/calendar-view.directive.d.ts +18 -0
- package/components/calendar/lib/pipes/date-label.pipe.d.ts +4 -0
- package/components/card/lib/card.component.d.ts +26 -2
- package/components/card/lib/components/card-footer/card-footer.component.d.ts +3 -0
- package/components/card/lib/components/launch-card-subtitle/launch-card-subtitle.component.d.ts +3 -0
- package/components/card/lib/directives/card-content.directive.d.ts +3 -0
- package/components/card/lib/directives/card-title.directive.d.ts +3 -0
- package/components/checkbox/lib/checkbox.component.d.ts +9 -2
- package/components/chip/lib/components/chip/chip.component.d.ts +15 -3
- package/components/circular-progress/lib/circular-progress.component.d.ts +15 -2
- package/components/datepicker/lib/datepicker.component.d.ts +28 -1
- package/components/datepicker/lib/directives/datepicker-input-control.directive.d.ts +7 -1
- package/components/daterangepicker/lib/daterangepicker.component.d.ts +4 -0
- package/components/daterangepicker/lib/directives/daterangepicker-input-control.directive.d.ts +3 -1
- package/components/daterangepicker/lib/required.validator.d.ts +8 -0
- package/components/dropdown/lib/dropdown.component.d.ts +6 -4
- package/components/dropdown/lib/dropdown.directive.d.ts +38 -3
- package/components/dropdown/lib/helpers/close-current-dropdown.d.ts +2 -1
- package/components/error-page/lib/error-page.component.d.ts +2 -0
- package/components/footer/lib/footer.component.d.ts +6 -2
- package/components/footer/lib/helpers/create-footer-links.d.ts +1 -2
- package/components/form-field/lib/components/form-field-info/form-field-info.component.d.ts +2 -1
- package/components/form-field/lib/components/form-group/form-group.component.d.ts +7 -2
- package/components/form-field/lib/directives/form-field-error.directive.d.ts +2 -0
- package/components/form-field/lib/directives/form.directive.d.ts +4 -0
- package/components/form-field/lib/form-field.component.d.ts +17 -2
- package/components/form-field/lib/form-field.service.d.ts +27 -6
- package/components/form-field/lib/services/form-field-error.service.d.ts +11 -3
- package/components/header-navigation/lib/header-navigation.component.d.ts +3 -0
- package/components/icon/lib/helpers/unpack-icon-identifier.d.ts +2 -2
- package/components/icon/lib/icon.component.d.ts +13 -1
- package/components/inline-message/lib/inline-message.component.d.ts +5 -1
- package/components/list/lib/components/expandable-list-item/expandable-list-item.component.d.ts +1 -0
- package/components/list/lib/components/list-item/list-item.component.d.ts +10 -1
- package/components/list/lib/list.component.d.ts +1 -0
- package/components/loading-spinner/lib/loading-spinner.component.d.ts +3 -0
- package/components/loading-spinner/lib/loading-spinner.directive.d.ts +7 -0
- package/components/modal/lib/components/modal-header/modal-header.component.d.ts +0 -1
- package/components/modal/lib/components/modal-hero/modal-hero.component.d.ts +3 -0
- package/components/modal/lib/directives/index.d.ts +2 -0
- package/components/modal/lib/directives/prevent-form-method-dialog.directive.d.ts +9 -0
- package/components/modal/lib/directives/prevent-method-dialog.directive.d.ts +9 -0
- package/components/modal/lib/modal.component.d.ts +11 -3
- package/components/modal/lib/modal.module.d.ts +5 -3
- package/components/modal/lib/modal.service.d.ts +7 -5
- package/components/modal/lib/models/modal-ref.d.ts +18 -4
- package/components/notification/lib/components/notification-item/notification-item.component.d.ts +4 -4
- package/components/notification/lib/directives/notification-center.directive.d.ts +6 -3
- package/components/notification/lib/features/with-browser-notifications.d.ts +1 -1
- package/components/notification/lib/features/with-load-notifications.d.ts +2 -1
- package/components/notification/lib/features/with-notification-transformer.d.ts +2 -2
- package/components/notification/lib/features/with-peristent-notifications.d.ts +6 -8
- package/components/notification/lib/features/with-save-notifications.d.ts +1 -1
- package/components/paginator/lib/paginator.component.d.ts +50 -0
- package/components/progress/lib/progress.component.d.ts +6 -1
- package/components/radio-group/lib/components/radio-button/radio-button.component.d.ts +7 -0
- package/components/radio-group/lib/radio-group.component.d.ts +6 -0
- package/components/rail-navigation/lib/components/rail-navigation-item/rail-navigation-item.component.d.ts +9 -0
- package/components/rail-navigation/lib/rail-navigation.component.d.ts +10 -2
- package/components/rich-list/lib/components/rich-list-item/rich-list-item.component.d.ts +8 -10
- package/components/rich-list/lib/rich-list.component.d.ts +3 -0
- package/components/select/lib/components/select-option/select-option.component.d.ts +1 -0
- package/components/select/lib/directives/select-input-control.directive.d.ts +4 -1
- package/components/select/lib/select.component.d.ts +7 -1
- package/components/slider/lib/slider.directive.d.ts +7 -4
- package/components/spinbox/lib/spinbox.component.d.ts +9 -0
- package/components/tab-bar/lib/components/tab-bar-item/tab-bar-item.component.d.ts +4 -1
- package/components/table/lib/components/check-cell/check-cell.component.d.ts +4 -1
- package/components/table/lib/components/header-title/header-title.component.d.ts +12 -1
- package/components/table/lib/table.component.d.ts +18 -1
- package/components/timepicker/lib/components/timepicker-option.component.d.ts +9 -1
- package/components/timepicker/lib/directives/timepicker-input-control.directive.d.ts +2 -0
- package/components/timepicker/lib/timepicker.component.d.ts +18 -3
- package/components/timepicker/lib/timepicker.service.d.ts +0 -7
- package/components/toast/lib/components/toast-container/toast-container.component.d.ts +19 -0
- package/components/toast/lib/components/toast-item/toast-item.component.d.ts +57 -1
- package/components/toast/lib/toast.service.d.ts +12 -0
- package/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.d.ts +3 -0
- package/components/toggle-button-group/lib/toggle-button-group.component.d.ts +2 -0
- package/components/tooltip/lib/tooltip.component.d.ts +7 -1
- package/components/tooltip/lib/tooltip.directive.d.ts +15 -2
- package/components/wizard/lib/components/wizard-step/wizard-step.component.d.ts +17 -0
- package/components/wizard/lib/wizard.component.d.ts +13 -1
- package/esm2022/cdk/checkbox-control/lib/checkbox-control.directive.mjs +20 -2
- package/esm2022/cdk/connected-overlay/lib/models/connected-overlay-ref.mjs +2 -2
- package/esm2022/cdk/dynamic-view/lib/dynamic-view.directive.mjs +4 -1
- package/esm2022/cdk/expandable/lib/directives/expandable-container.directive.mjs +10 -6
- package/esm2022/cdk/expandable/lib/directives/expandable-item.directive.mjs +5 -2
- package/esm2022/cdk/option-control/lib/option-control.mjs +3 -1
- package/esm2022/cdk/radio-group-control/lib/radio-control.directive.mjs +19 -1
- package/esm2022/cdk/radio-group-control/lib/radio-group-control.directive.mjs +3 -1
- package/esm2022/components/accordion/lib/components/accordion-item/accordion-item.component.mjs +9 -4
- package/esm2022/components/action-group/action-group.component.mjs +4 -1
- package/esm2022/components/area-header/area-header.component.mjs +3 -2
- package/esm2022/components/autocomplete/lib/autocomplete.component.mjs +8 -5
- package/esm2022/components/autocomplete/lib/components/option/autocomplete-option.component.mjs +9 -1
- package/esm2022/components/autocomplete/lib/directives/autocomplete-input-control.directive.mjs +5 -1
- package/esm2022/components/avatar/lib/avatar.component.mjs +7 -3
- package/esm2022/components/badge/lib/badge.component.mjs +7 -2
- package/esm2022/components/badge/lib/badge.directive.mjs +19 -4
- package/esm2022/components/bar/lib/directives/bar-button.directive.mjs +7 -1
- package/esm2022/components/button/lib/button.component.mjs +10 -2
- package/esm2022/components/button-group/lib/button-group.component.mjs +13 -1
- package/esm2022/components/calendar/lib/calendar.component.mjs +12 -1
- package/esm2022/components/calendar/lib/calendar.config.mjs +1 -1
- package/esm2022/components/calendar/lib/calendar.service.mjs +14 -2
- package/esm2022/components/calendar/lib/components/calendar-header/calendar-header.component.mjs +13 -1
- package/esm2022/components/calendar/lib/daterange.service.mjs +4 -1
- package/esm2022/components/calendar/lib/directives/calendar-cell.directive.mjs +5 -1
- package/esm2022/components/calendar/lib/directives/calendar-view.directive.mjs +17 -1
- package/esm2022/components/calendar/lib/pipes/date-label.pipe.mjs +5 -1
- package/esm2022/components/card/lib/card.component.mjs +25 -1
- package/esm2022/components/card/lib/components/card-footer/card-footer.component.mjs +4 -1
- package/esm2022/components/card/lib/components/launch-card-subtitle/launch-card-subtitle.component.mjs +4 -1
- package/esm2022/components/card/lib/directives/card-content.directive.mjs +4 -1
- package/esm2022/components/card/lib/directives/card-title.directive.mjs +4 -1
- package/esm2022/components/checkbox/lib/checkbox.component.mjs +10 -3
- package/esm2022/components/chip/lib/components/chip/chip.component.mjs +15 -3
- package/esm2022/components/circular-progress/lib/circular-progress.component.mjs +16 -3
- package/esm2022/components/datepicker/lib/datepicker.component.mjs +29 -2
- package/esm2022/components/datepicker/lib/directives/datepicker-input-control.directive.mjs +8 -2
- package/esm2022/components/daterangepicker/lib/daterangepicker.component.mjs +5 -1
- package/esm2022/components/daterangepicker/lib/directives/daterangepicker-input-control.directive.mjs +4 -2
- package/esm2022/components/daterangepicker/lib/required.validator.mjs +9 -9
- package/esm2022/components/dropdown/lib/dropdown.component.mjs +1 -5
- package/esm2022/components/dropdown/lib/dropdown.directive.mjs +31 -4
- package/esm2022/components/dropdown/lib/helpers/close-current-dropdown.mjs +3 -2
- package/esm2022/components/error-page/lib/error-page.component.mjs +3 -1
- package/esm2022/components/footer/lib/footer.component.mjs +7 -3
- package/esm2022/components/footer/lib/helpers/create-footer-links.mjs +2 -3
- package/esm2022/components/form-field/lib/components/form-field-info/form-field-info.component.mjs +3 -2
- package/esm2022/components/form-field/lib/components/form-group/form-group.component.mjs +6 -3
- package/esm2022/components/form-field/lib/directives/form-field-error.directive.mjs +1 -1
- package/esm2022/components/form-field/lib/directives/form.directive.mjs +5 -1
- package/esm2022/components/form-field/lib/form-field.component.mjs +14 -2
- package/esm2022/components/form-field/lib/form-field.service.mjs +28 -7
- package/esm2022/components/form-field/lib/services/form-field-error.service.mjs +12 -4
- package/esm2022/components/header-navigation/lib/header-navigation.component.mjs +1 -1
- package/esm2022/components/icon/lib/helpers/unpack-icon-identifier.mjs +3 -3
- package/esm2022/components/icon/lib/icon.component.mjs +14 -2
- package/esm2022/components/inline-message/lib/inline-message.component.mjs +6 -2
- package/esm2022/components/list/lib/components/expandable-list-item/expandable-list-item.component.mjs +2 -1
- package/esm2022/components/list/lib/components/list-item/list-item.component.mjs +11 -2
- package/esm2022/components/list/lib/list.component.mjs +2 -1
- package/esm2022/components/loading-spinner/lib/loading-spinner.component.mjs +4 -1
- package/esm2022/components/loading-spinner/lib/loading-spinner.directive.mjs +8 -1
- package/esm2022/components/modal/lib/components/modal-header/modal-header.component.mjs +1 -1
- package/esm2022/components/modal/lib/components/modal-hero/modal-hero.component.mjs +4 -1
- package/esm2022/components/modal/lib/directives/index.mjs +3 -1
- package/esm2022/components/modal/lib/directives/prevent-form-method-dialog.directive.mjs +23 -0
- package/esm2022/components/modal/lib/directives/prevent-method-dialog.directive.mjs +23 -0
- package/esm2022/components/modal/lib/modal.component.mjs +36 -17
- package/esm2022/components/modal/lib/modal.module.mjs +10 -4
- package/esm2022/components/modal/lib/modal.service.mjs +4 -3
- package/esm2022/components/modal/lib/models/modal-ref.mjs +19 -5
- package/esm2022/components/notification/lib/components/notification-item/notification-item.component.mjs +5 -5
- package/esm2022/components/notification/lib/directives/notification-center.directive.mjs +7 -4
- package/esm2022/components/notification/lib/features/with-browser-notifications.mjs +4 -5
- package/esm2022/components/notification/lib/features/with-load-notifications.mjs +3 -3
- package/esm2022/components/notification/lib/features/with-notification-transformer.mjs +3 -3
- package/esm2022/components/notification/lib/features/with-peristent-notifications.mjs +7 -9
- package/esm2022/components/notification/lib/features/with-save-notifications.mjs +3 -4
- package/esm2022/components/paginator/lib/paginator.component.mjs +51 -1
- package/esm2022/components/progress/lib/progress.component.mjs +7 -2
- package/esm2022/components/radio-group/lib/components/radio-button/radio-button.component.mjs +3 -1
- package/esm2022/components/radio-group/lib/radio-group.component.mjs +7 -1
- package/esm2022/components/rail-navigation/lib/components/rail-navigation-item/rail-navigation-item.component.mjs +7 -1
- package/esm2022/components/rail-navigation/lib/rail-navigation.component.mjs +11 -3
- package/esm2022/components/rich-list/lib/components/rich-list-item/rich-list-item.component.mjs +4 -6
- package/esm2022/components/rich-list/lib/rich-list.component.mjs +4 -1
- package/esm2022/components/select/lib/components/select-option/select-option.component.mjs +2 -1
- package/esm2022/components/select/lib/directives/select-input-control.directive.mjs +4 -1
- package/esm2022/components/select/lib/select.component.mjs +8 -2
- package/esm2022/components/slider/lib/slider.directive.mjs +7 -4
- package/esm2022/components/spinbox/lib/spinbox.component.mjs +10 -1
- package/esm2022/components/tab-bar/lib/components/tab-bar-item/tab-bar-item.component.mjs +5 -2
- package/esm2022/components/table/lib/components/check-cell/check-cell.component.mjs +5 -2
- package/esm2022/components/table/lib/components/header-title/header-title.component.mjs +11 -1
- package/esm2022/components/table/lib/table.component.mjs +15 -1
- package/esm2022/components/timepicker/lib/components/timepicker-option.component.mjs +10 -2
- package/esm2022/components/timepicker/lib/directives/timepicker-input-control.directive.mjs +3 -1
- package/esm2022/components/timepicker/lib/timepicker.component.mjs +14 -4
- package/esm2022/components/timepicker/lib/timepicker.service.mjs +1 -8
- package/esm2022/components/toast/lib/components/toast-container/toast-container.component.mjs +20 -1
- package/esm2022/components/toast/lib/components/toast-item/toast-item.component.mjs +24 -1
- package/esm2022/components/toast/lib/toast.service.mjs +13 -1
- package/esm2022/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.mjs +4 -1
- package/esm2022/components/toggle-button-group/lib/toggle-button-group.component.mjs +3 -1
- package/esm2022/components/tooltip/lib/tooltip.component.mjs +6 -2
- package/esm2022/components/tooltip/lib/tooltip.directive.mjs +16 -3
- package/esm2022/components/wizard/lib/components/wizard-step/wizard-step.component.mjs +18 -1
- package/esm2022/components/wizard/lib/wizard.component.mjs +22 -4
- package/esm2022/lib/controllers/disabled.controller.mjs +9 -1
- package/esm2022/lib/controllers/readonly.controller.mjs +3 -1
- package/esm2022/lib/directives/click-outside.directive.mjs +2 -1
- package/esm2022/lib/services/window-ref.mjs +22 -4
- package/esm2022/theming/lib/helpers/prefers-dark-theme.mjs +1 -1
- package/esm2022/theming/lib/theming.service.mjs +3 -1
- package/esm2022/utils/lib/helpers/queue.mjs +24 -14
- package/fesm2022/odx-angular-cdk-checkbox-control.mjs +19 -1
- package/fesm2022/odx-angular-cdk-checkbox-control.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-connected-overlay.mjs +1 -1
- package/fesm2022/odx-angular-cdk-connected-overlay.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-dynamic-view.mjs +3 -0
- package/fesm2022/odx-angular-cdk-dynamic-view.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-expandable.mjs +13 -6
- package/fesm2022/odx-angular-cdk-expandable.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-option-control.mjs +2 -0
- package/fesm2022/odx-angular-cdk-option-control.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-radio-group-control.mjs +20 -0
- package/fesm2022/odx-angular-cdk-radio-group-control.mjs.map +1 -1
- package/fesm2022/odx-angular-components-accordion.mjs +8 -3
- package/fesm2022/odx-angular-components-accordion.mjs.map +1 -1
- package/fesm2022/odx-angular-components-action-group.mjs +3 -0
- package/fesm2022/odx-angular-components-action-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-area-header.mjs +2 -1
- package/fesm2022/odx-angular-components-area-header.mjs.map +1 -1
- package/fesm2022/odx-angular-components-autocomplete.mjs +19 -4
- package/fesm2022/odx-angular-components-autocomplete.mjs.map +1 -1
- package/fesm2022/odx-angular-components-avatar.mjs +6 -2
- package/fesm2022/odx-angular-components-avatar.mjs.map +1 -1
- package/fesm2022/odx-angular-components-badge.mjs +24 -4
- package/fesm2022/odx-angular-components-badge.mjs.map +1 -1
- package/fesm2022/odx-angular-components-bar.mjs +6 -0
- package/fesm2022/odx-angular-components-bar.mjs.map +1 -1
- package/fesm2022/odx-angular-components-button-group.mjs +12 -0
- package/fesm2022/odx-angular-components-button-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-button.mjs +9 -1
- package/fesm2022/odx-angular-components-button.mjs.map +1 -1
- package/fesm2022/odx-angular-components-calendar.mjs +63 -1
- package/fesm2022/odx-angular-components-calendar.mjs.map +1 -1
- package/fesm2022/odx-angular-components-card.mjs +36 -0
- package/fesm2022/odx-angular-components-card.mjs.map +1 -1
- package/fesm2022/odx-angular-components-checkbox.mjs +9 -2
- package/fesm2022/odx-angular-components-checkbox.mjs.map +1 -1
- package/fesm2022/odx-angular-components-chip.mjs +14 -2
- package/fesm2022/odx-angular-components-chip.mjs.map +1 -1
- package/fesm2022/odx-angular-components-circular-progress.mjs +15 -2
- package/fesm2022/odx-angular-components-circular-progress.mjs.map +1 -1
- package/fesm2022/odx-angular-components-datepicker.mjs +35 -2
- package/fesm2022/odx-angular-components-datepicker.mjs.map +1 -1
- package/fesm2022/odx-angular-components-daterangepicker.mjs +15 -9
- package/fesm2022/odx-angular-components-daterangepicker.mjs.map +1 -1
- package/fesm2022/odx-angular-components-dropdown.mjs +32 -8
- package/fesm2022/odx-angular-components-dropdown.mjs.map +1 -1
- package/fesm2022/odx-angular-components-error-page.mjs +2 -0
- package/fesm2022/odx-angular-components-error-page.mjs.map +1 -1
- package/fesm2022/odx-angular-components-footer.mjs +7 -4
- package/fesm2022/odx-angular-components-footer.mjs.map +1 -1
- package/fesm2022/odx-angular-components-form-field.mjs +62 -13
- package/fesm2022/odx-angular-components-form-field.mjs.map +1 -1
- package/fesm2022/odx-angular-components-header-navigation.mjs.map +1 -1
- package/fesm2022/odx-angular-components-icon.mjs +15 -3
- package/fesm2022/odx-angular-components-icon.mjs.map +1 -1
- package/fesm2022/odx-angular-components-inline-message.mjs +5 -1
- package/fesm2022/odx-angular-components-inline-message.mjs.map +1 -1
- package/fesm2022/odx-angular-components-list.mjs +12 -1
- package/fesm2022/odx-angular-components-list.mjs.map +1 -1
- package/fesm2022/odx-angular-components-loading-spinner.mjs +10 -0
- package/fesm2022/odx-angular-components-loading-spinner.mjs.map +1 -1
- package/fesm2022/odx-angular-components-modal.mjs +110 -25
- package/fesm2022/odx-angular-components-modal.mjs.map +1 -1
- package/fesm2022/odx-angular-components-notification.mjs +25 -26
- package/fesm2022/odx-angular-components-notification.mjs.map +1 -1
- package/fesm2022/odx-angular-components-paginator.mjs +50 -0
- package/fesm2022/odx-angular-components-paginator.mjs.map +1 -1
- package/fesm2022/odx-angular-components-progress.mjs +6 -1
- package/fesm2022/odx-angular-components-progress.mjs.map +1 -1
- package/fesm2022/odx-angular-components-radio-group.mjs +8 -0
- package/fesm2022/odx-angular-components-radio-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-rail-navigation.mjs +16 -2
- package/fesm2022/odx-angular-components-rail-navigation.mjs.map +1 -1
- package/fesm2022/odx-angular-components-rich-list.mjs +6 -5
- package/fesm2022/odx-angular-components-rich-list.mjs.map +1 -1
- package/fesm2022/odx-angular-components-select.mjs +11 -1
- package/fesm2022/odx-angular-components-select.mjs.map +1 -1
- package/fesm2022/odx-angular-components-slider.mjs +6 -3
- package/fesm2022/odx-angular-components-slider.mjs.map +1 -1
- package/fesm2022/odx-angular-components-spinbox.mjs +9 -0
- package/fesm2022/odx-angular-components-spinbox.mjs.map +1 -1
- package/fesm2022/odx-angular-components-tab-bar.mjs +4 -1
- package/fesm2022/odx-angular-components-tab-bar.mjs.map +1 -1
- package/fesm2022/odx-angular-components-table.mjs +28 -1
- package/fesm2022/odx-angular-components-table.mjs.map +1 -1
- package/fesm2022/odx-angular-components-timepicker.mjs +24 -11
- package/fesm2022/odx-angular-components-timepicker.mjs.map +1 -1
- package/fesm2022/odx-angular-components-toast.mjs +54 -0
- package/fesm2022/odx-angular-components-toast.mjs.map +1 -1
- package/fesm2022/odx-angular-components-toggle-button-group.mjs +5 -0
- package/fesm2022/odx-angular-components-toggle-button-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-tooltip.mjs +20 -3
- package/fesm2022/odx-angular-components-tooltip.mjs.map +1 -1
- package/fesm2022/odx-angular-components-wizard.mjs +38 -3
- package/fesm2022/odx-angular-components-wizard.mjs.map +1 -1
- package/fesm2022/odx-angular-theming.mjs +2 -0
- package/fesm2022/odx-angular-theming.mjs.map +1 -1
- package/fesm2022/odx-angular-utils.mjs +23 -13
- package/fesm2022/odx-angular-utils.mjs.map +1 -1
- package/fesm2022/odx-angular.mjs +32 -3
- package/fesm2022/odx-angular.mjs.map +1 -1
- package/lib/controllers/disabled.controller.d.ts +8 -0
- package/lib/controllers/readonly.controller.d.ts +2 -0
- package/lib/directives/click-outside.directive.d.ts +1 -0
- package/lib/services/window-ref.d.ts +21 -3
- package/package.json +1 -1
- package/theming/lib/theming.service.d.ts +2 -0
- package/utils/lib/helpers/queue.d.ts +23 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"odx-angular-components-table.mjs","sources":["../../../../libs/angular/components/table/src/lib/table.config.ts","../../../../libs/angular/components/table/src/lib/components/check-cell/check-cell.component.ts","../../../../libs/angular/components/table/src/lib/components/check-cell/check-cell.component.html","../../../../libs/angular/components/table/src/lib/models/sort-variant.ts","../../../../libs/angular/components/table/src/lib/components/header-title/header-title.component.ts","../../../../libs/angular/components/table/src/lib/components/header-title/header-title.component.html","../../../../libs/angular/components/table/src/lib/directives/table-cell.directive.ts","../../../../libs/angular/components/table/src/lib/directives/table-row.directive.ts","../../../../libs/angular/components/table/src/lib/models/table-variant.ts","../../../../libs/angular/components/table/src/lib/table.component.ts","../../../../libs/angular/components/table/src/lib/table.component.html","../../../../libs/angular/components/table/src/lib/table.module.ts","../../../../libs/angular/components/table/src/odx-angular-components-table.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { TableBodyCell } from './models';\nimport { TableComponent } from './table.component';\n\nexport const TABLE = new InjectionToken<TableComponent<TableBodyCell>>('odx-table');\n","import { booleanAttribute, Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '@odx/angular/components/checkbox';\nimport { injectElement } from '@odx/angular/utils';\nimport { TABLE } from '../../table.config';\n\n/**\n * CheckCellComponent provides a checkbox input within a table cell, allowing rows to be selected.\n * It is designed to be used in conjunction with a table component that manages state and header interactions,\n * particularly for functionalities like bulk actions.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'td[odx-table-cell][checked]',\n standalone: true,\n templateUrl: './check-cell.component.html',\n imports: [CheckboxComponent, FormsModule],\n})\nexport class CheckCellComponent {\n private readonly table = inject(TABLE);\n public readonly element = injectElement();\n\n /**\n * Indicates whether the checkbox within the table cell is checked.\n * @type {boolean}\n */\n @Input({ transform: booleanAttribute })\n public checked = false;\n\n /**\n * Event emitter that triggers when the checked state changes. It emits the new state of the checkbox.\n * @type {EventEmitter<boolean>}\n */\n @Output() public checkedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /**\n * Updates the checked state of the checkbox and notifies the parent table component, typically to update\n * the state of a header checkbox or other related components.\n * @param {boolean} e - The new checked state.\n */\n public update(e: boolean): void {\n this.checkedChange.emit(e);\n this.table.headers.forEach((header) => header.check && header.check());\n }\n}\n","<odx-checkbox [(ngModel)]=\"checked\" (ngModelChange)=\"update($event)\"></odx-checkbox>\n","export type TableSortVariant = typeof TableSortVariant[keyof typeof TableSortVariant];\n\nexport const TableSortVariant = {\n UNSORTED: 'unsorted',\n ASC: 'asc',\n DESC: 'desc',\n} as const;\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '@odx/angular/components/checkbox';\nimport { untilDestroyed } from '@odx/angular/utils';\nimport { tap } from 'rxjs';\nimport { SortStatus, TableBodyCell, TableHeaderCell } from '../../models';\nimport { TableSortVariant } from '../../models/sort-variant';\nimport { TABLE } from '../../table.config';\n\n/**\n * HeaderTitleComponent provides the functionality for a table header cell, including sorting and checkbox\n * operations if applicable. It handles changes in sort state and emits relevant events to the table component\n * to manage sorting and selection state across the table.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'th[odxHeaderTitle]',\n templateUrl: './header-title.component.html',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, CheckboxComponent, ReactiveFormsModule],\n})\nexport class HeaderTitleComponent implements OnInit {\n private readonly table = inject(TABLE);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly takeUntilDestroyed = untilDestroyed();\n private sortStatus: SortStatus = this.getSortStatus;\n\n /**\n * The header cell item containing metadata like column name, sortability, and whether it should include a checkbox.\n * @see {TableHeaderCell}\n */\n @Input()\n public item!: TableHeaderCell;\n\n /**\n * FormGroup to manage the checkbox state within the header.\n */\n public checkForm = new FormGroup({ check: new FormControl(false) });\n\n /**\n * Computes and returns the current sort status of the column associated with this header.\n */\n public get getSortStatus(): SortStatus {\n return { column: this.item?.name, sortVariant: TableSortVariant.UNSORTED };\n }\n\n /**\n * Returns the icon or indicator for the current sorting status (ascending, descending, unsorted).\n */\n public get sortIcon(): TableSortVariant {\n return this.sortStatus.sortVariant;\n }\n\n /**\n * Toggles the sorting status of the column and informs the table component of the change.\n */\n public sortColumn(): void {\n if (!this.item?.sortable) return;\n switch (this.sortStatus.sortVariant) {\n case TableSortVariant.DESC:\n case TableSortVariant.UNSORTED:\n this.table.clearSort();\n this.sortStatus = { ...this.sortStatus, sortVariant: TableSortVariant.ASC };\n break;\n case TableSortVariant.ASC:\n this.table.clearSort();\n\n this.sortStatus = { ...this.sortStatus, sortVariant: TableSortVariant.DESC };\n break;\n }\n\n this.table.sorted.emit(this.sortStatus);\n }\n\n /**\n * Resets the sort status to unsorted.\n */\n public clearSortStatus(): void {\n this.sortStatus = { column: this.item?.name, sortVariant: TableSortVariant.UNSORTED };\n this.check();\n }\n\n /**\n * Returns the number of selected items in the column, used to determine checkbox state.\n */\n public get selected() {\n return this.table.data.filter((d: TableBodyCell) => d[this.item.name]).length;\n }\n\n /**\n * Updates the component view, usually after a state change.\n */\n public check(): void {\n this.cdr.markForCheck();\n }\n\n /**\n * Determines whether the checkbox should be marked as checked.\n */\n public get checked(): boolean {\n const column = this.table.headerData.find((h: TableHeaderCell) => h.check)?.name;\n return this.table.data.every((item: TableBodyCell) => column && item[column]);\n }\n\n public ngOnInit(): void {\n this.checkBoxListener();\n }\n\n private checkBoxListener(): void {\n if (!this.item.check) return;\n this.checkForm\n .get('check')\n ?.valueChanges.pipe(\n this.takeUntilDestroyed(),\n tap((check) => this.table.checked.emit({ column: this.item.name, check: !!check })),\n )\n .subscribe();\n }\n\n public get indeterminate(): boolean {\n const column = this.table.headerData.find((h: TableHeaderCell) => h.check)?.name;\n const { length } = this.table.data;\n const unchecked = length - this.table.data.filter((item: TableBodyCell) => column && item[column]).length;\n return unchecked > 0 && unchecked < length;\n }\n}\n","<div *ngIf=\"item?.check; else title\" class=\"odx-table__check\">\n <div [formGroup]=\"checkForm\">\n <odx-checkbox [checked]=\"checked\" [indeterminate]=\"indeterminate\" formControlName=\"check\"></odx-checkbox>\n </div>\n</div>\n<ng-template #title>\n <div class=\"odx-table__header-cell-title\" (click)=\"sortColumn()\" [class.sortable]=\"item.sortable\">\n {{ item.title }}\n <ng-container *ngIf=\"item?.sortable\" [ngSwitch]=\"sortIcon\">\n <svg *ngSwitchCase=\"'unsorted'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\">\n <path d=\"m14,5H2v-2h12v2Zm-4,2H2v2h8v-2Zm-4,4H2v2h4v-2Z\" style=\"fill: var(--blue-700)\" />\n </svg>\n <svg *ngSwitchCase=\"'desc'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\">\n <polygon points=\"11 6 8 3 5 6 7 6 7 13 9 13 9 6 11 6\" style=\"fill: var(--blue-700)\" />\n </svg>\n <svg *ngSwitchCase=\"'asc'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\">\n <polygon points=\"5 10 8 13 11 10 9 10 9 3 7 3 7 10 5 10\" style=\"fill: var(--blue-700)\" />\n </svg>\n </ng-container>\n </div>\n <ng-content select=\"odx-form-field\"></ng-content>\n</ng-template>\n","import { Directive } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n/**\n * TableCellDirective enhances an HTML td element by providing a role attribute with a value of \"cell\".\n * This directive is used to define a cell within a table.\n */\n@CSSComponent('table__cell')\n@Directive({\n selector: 'td[odx-table-cell]',\n standalone: true,\n host: {\n '[attr.role]': '\"cell\"',\n },\n})\nexport class TableCellDirective {\n public readonly element = injectElement();\n}\n","import { Directive } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n/**\n * TableRowDirective enhances an HTML tr element by providing a role attribute with a value of \"row\".\n * This directive is used to define a row within a table.\n */\n@CSSComponent('table__row')\n@Directive({\n selector: 'tr[odx-table-row]',\n standalone: true,\n host: {\n '[attr.role]': '\"row\"',\n '[attr.tabindex]': '0',\n },\n})\nexport class TableRowDirective {\n public readonly element = injectElement();\n}\n","export type TableVariant = typeof TableVariant[keyof typeof TableVariant];\n\nexport const TableVariant = {\n DEFAULT: 'default',\n STRIPED: 'striped',\n} as const;\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { FormFieldModule } from '@odx/angular/components/form-field';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { debounceTime, tap } from 'rxjs';\nimport { HeaderTitleComponent } from './components/header-title/header-title.component';\nimport { SortStatus, TableBodyCell, TableHeaderCell, TableVariant } from './models';\nimport { TABLE } from './table.config';\n\n/**\n * TableComponent is a dynamic table structure built for displaying complex data sets with sorting, filtering,\n * and checkable functionality. It provides configuration options through various inputs that allow the\n * customization of table behavior and presentation.\n *\n * This component is highly modular, integrating with other components such as `HeaderTitleComponent` for header\n * management, and using Angular forms for dynamic data filtering.\n */\n@CSSComponent('table')\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'table[odxTable]',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.role]': '\"table\"',\n },\n templateUrl: './table.component.html',\n imports: [CommonModule, IconComponent, ReactiveFormsModule, FormFieldModule, HeaderTitleComponent],\n providers: [{ provide: TABLE, useExisting: TableComponent }],\n})\nexport class TableComponent<T> implements OnInit {\n private readonly takeUntilDestroyed = untilDestroyed();\n public readonly element = injectElement();\n\n /**\n * Specifies the table variant for CSS styling.\n * @see {TableVariant}\n */\n @CSSModifier()\n @Input()\n public variant?: TableVariant | null;\n\n /**\n * Data array of type T that the table displays.\n */\n @Input()\n public data: T[] = [];\n\n /**\n * Configuration for table header data which controls sorting, filtering, and additional metadata.\n */\n @Input()\n public headerData: TableHeaderCell[] = [];\n\n /**\n * FormGroup to handle the dynamic filtering controls, each tied to a header cell that has filtering enabled.\n */\n public form: FormGroup = new FormGroup({});\n\n /**\n * Event emitter for when a column's sorting status changes.\n */\n @Output()\n public readonly sorted: EventEmitter<SortStatus> = new EventEmitter();\n\n /**\n * Event emitter for when the table's filtering conditions change.\n */\n @Output()\n public readonly filtered: EventEmitter<{ [key: string]: string }> = new EventEmitter();\n\n /**\n * Event emitter for when a checkbox column's checked state changes.\n */\n @Output()\n public readonly checked: EventEmitter<{ column: string; check: boolean }> = new EventEmitter();\n\n /**\n * A QueryList of HeaderTitleComponent instances, each corresponding to a header cell in the table.\n */\n @ViewChildren(HeaderTitleComponent)\n public headers!: QueryList<HeaderTitleComponent>;\n\n public ngOnInit(): void {\n this.setHeaderData();\n this.headerData.forEach((item) => item.filter && this.form.addControl(item.name, new FormControl('')));\n this.formListener();\n }\n\n /**\n * Clears the sorting status of all headers.\n */\n public clearSort(): void {\n this.headers.forEach((header) => header.clearSortStatus());\n }\n\n private formListener(): void {\n if (Object.keys(this.form.controls).length === 0) return;\n this.form.valueChanges\n .pipe(\n debounceTime(600),\n this.takeUntilDestroyed(),\n tap(() => {\n this.filtered.emit(this.form.value);\n this.headers?.filter((header) => !!header.item.check).forEach((header) => header.check());\n }),\n )\n .subscribe();\n }\n\n private setHeaderData(): void {\n this.headerData = Object.keys(this.data[0] as TableBodyCell).map(\n (key) =>\n this.headerData.find((item) => item.name === key) || {\n name: key,\n title: `${key[0].toUpperCase()}${key.slice(1)}`,\n sortable: false,\n filter: false,\n },\n );\n }\n}\n","<thead class=\"odx-table__head\" role=\"rowgroup\" [formGroup]=\"form\">\n <tr class=\"odx-table__header-row\" role=\"row\">\n <th *ngFor=\"let item of headerData\" class=\"odx-table__header-cell\" role=\"columnheader\" odxHeaderTitle [item]=\"item\">\n <odx-form-field *ngIf=\"item.filter\">\n <input placeholder=\"Filter\" [formControlName]=\"item.name\" type=\"text\" odxFormFieldControl />\n </odx-form-field>\n </th>\n </tr>\n</thead>\n<tbody class=\"odx-table__body\" role=\"rowgroup\">\n <ng-content select=\"tr\"></ng-content>\n</tbody>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CheckCellComponent } from './components/check-cell/check-cell.component';\nimport { TableCellDirective } from './directives/table-cell.directive';\nimport { TableRowDirective } from './directives/table-row.directive';\nimport { TableComponent } from './table.component';\n\nconst modules = [TableComponent, TableRowDirective, TableCellDirective, CheckCellComponent];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class TableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"odx-angular-components-table.mjs","sources":["../../../../libs/angular/components/table/src/lib/table.config.ts","../../../../libs/angular/components/table/src/lib/components/check-cell/check-cell.component.ts","../../../../libs/angular/components/table/src/lib/components/check-cell/check-cell.component.html","../../../../libs/angular/components/table/src/lib/models/sort-variant.ts","../../../../libs/angular/components/table/src/lib/components/header-title/header-title.component.ts","../../../../libs/angular/components/table/src/lib/components/header-title/header-title.component.html","../../../../libs/angular/components/table/src/lib/directives/table-cell.directive.ts","../../../../libs/angular/components/table/src/lib/directives/table-row.directive.ts","../../../../libs/angular/components/table/src/lib/models/table-variant.ts","../../../../libs/angular/components/table/src/lib/table.component.ts","../../../../libs/angular/components/table/src/lib/table.component.html","../../../../libs/angular/components/table/src/lib/table.module.ts","../../../../libs/angular/components/table/src/odx-angular-components-table.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { TableBodyCell } from './models';\nimport { TableComponent } from './table.component';\n\nexport const TABLE = new InjectionToken<TableComponent<TableBodyCell>>('odx-table');\n","import { booleanAttribute, Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '@odx/angular/components/checkbox';\nimport { injectElement } from '@odx/angular/utils';\nimport { TABLE } from '../../table.config';\n\n/**\n * CheckCellComponent provides a checkbox input within a table cell, allowing rows to be selected.\n * It is designed to be used in conjunction with a table component that manages state and header interactions,\n * particularly for functionalities like bulk actions.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'td[odx-table-cell][checked]',\n standalone: true,\n templateUrl: './check-cell.component.html',\n imports: [CheckboxComponent, FormsModule],\n})\nexport class CheckCellComponent {\n private readonly table = inject(TABLE);\n public readonly element = injectElement();\n\n /**\n * Indicates whether the checkbox within the table cell is checked.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public checked = false;\n\n /**\n * Event emitter that triggers when the checked state changes. It emits the new state of the checkbox.\n *\n * @emits {boolean}\n */\n @Output() public checkedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /**\n * Updates the checked state of the checkbox and notifies the parent table component, typically to update\n * the state of a header checkbox or other related components.\n * @param {boolean} e - The new checked state.\n */\n public update(e: boolean): void {\n this.checkedChange.emit(e);\n this.table.headers.forEach((header) => header.check && header.check());\n }\n}\n","<odx-checkbox [(ngModel)]=\"checked\" (ngModelChange)=\"update($event)\"></odx-checkbox>\n","export type TableSortVariant = typeof TableSortVariant[keyof typeof TableSortVariant];\n\nexport const TableSortVariant = {\n UNSORTED: 'unsorted',\n ASC: 'asc',\n DESC: 'desc',\n} as const;\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '@odx/angular/components/checkbox';\nimport { untilDestroyed } from '@odx/angular/utils';\nimport { tap } from 'rxjs';\nimport { SortStatus, TableBodyCell, TableHeaderCell } from '../../models';\nimport { TableSortVariant } from '../../models/sort-variant';\nimport { TABLE } from '../../table.config';\n\n/**\n * HeaderTitleComponent provides the functionality for a table header cell, including sorting and checkbox\n * operations if applicable. It handles changes in sort state and emits relevant events to the table component\n * to manage sorting and selection state across the table.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'th[odxHeaderTitle]',\n templateUrl: './header-title.component.html',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, CheckboxComponent, ReactiveFormsModule],\n})\nexport class HeaderTitleComponent implements OnInit {\n private readonly table = inject(TABLE);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly takeUntilDestroyed = untilDestroyed();\n private sortStatus: SortStatus = this.getSortStatus;\n\n /**\n * The header cell item containing metadata like column name, sortability, and whether it should include a checkbox.\n *\n * @type {TableHeaderCell}\n */\n @Input()\n public item!: TableHeaderCell;\n\n /**\n * FormGroup to manage the checkbox state within the header.\n *\n * @type {FormGroup}\n */\n public checkForm = new FormGroup({ check: new FormControl(false) });\n\n /**\n * Computes and returns the current sort status of the column associated with this header.\n *\n * @returns {SortStatus}\n */\n public get getSortStatus(): SortStatus {\n return { column: this.item?.name, sortVariant: TableSortVariant.UNSORTED };\n }\n\n /**\n * Returns the icon or indicator for the current sorting status (ascending, descending, unsorted).\n *\n * @returns {TableSortVariant}\n */\n public get sortIcon(): TableSortVariant {\n return this.sortStatus.sortVariant;\n }\n\n /**\n * Toggles the sorting status of the column and informs the table component of the change.\n */\n public sortColumn(): void {\n if (!this.item?.sortable) return;\n switch (this.sortStatus.sortVariant) {\n case TableSortVariant.DESC:\n case TableSortVariant.UNSORTED:\n this.table.clearSort();\n this.sortStatus = { ...this.sortStatus, sortVariant: TableSortVariant.ASC };\n break;\n case TableSortVariant.ASC:\n this.table.clearSort();\n\n this.sortStatus = { ...this.sortStatus, sortVariant: TableSortVariant.DESC };\n break;\n }\n\n this.table.sorted.emit(this.sortStatus);\n }\n\n /**\n * Resets the sort status to unsorted.\n */\n public clearSortStatus(): void {\n this.sortStatus = { column: this.item?.name, sortVariant: TableSortVariant.UNSORTED };\n this.check();\n }\n\n /**\n * Returns the number of selected items in the column, used to determine checkbox state.\n *\n * @returns {number}\n */\n public get selected(): number {\n return this.table.data.filter((d: TableBodyCell) => d[this.item.name]).length;\n }\n\n /**\n * Updates the component view, usually after a state change.\n */\n public check(): void {\n this.cdr.markForCheck();\n }\n\n /**\n * Determines whether the checkbox should be marked as checked.\n *\n * @returns {boolean}\n */\n public get checked(): boolean {\n const column = this.table.headerData.find((h: TableHeaderCell) => h.check)?.name;\n return this.table.data.every((item: TableBodyCell) => column && item[column]);\n }\n\n public ngOnInit(): void {\n this.checkBoxListener();\n }\n\n private checkBoxListener(): void {\n if (!this.item.check) return;\n this.checkForm\n .get('check')\n ?.valueChanges.pipe(\n this.takeUntilDestroyed(),\n tap((check) => this.table.checked.emit({ column: this.item.name, check: !!check })),\n )\n .subscribe();\n }\n\n public get indeterminate(): boolean {\n const column = this.table.headerData.find((h: TableHeaderCell) => h.check)?.name;\n const { length } = this.table.data;\n const unchecked = length - this.table.data.filter((item: TableBodyCell) => column && item[column]).length;\n return unchecked > 0 && unchecked < length;\n }\n}\n","<div *ngIf=\"item?.check; else title\" class=\"odx-table__check\">\n <div [formGroup]=\"checkForm\">\n <odx-checkbox [checked]=\"checked\" [indeterminate]=\"indeterminate\" formControlName=\"check\"></odx-checkbox>\n </div>\n</div>\n<ng-template #title>\n <div class=\"odx-table__header-cell-title\" (click)=\"sortColumn()\" [class.sortable]=\"item.sortable\">\n {{ item.title }}\n <ng-container *ngIf=\"item?.sortable\" [ngSwitch]=\"sortIcon\">\n <svg *ngSwitchCase=\"'unsorted'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\">\n <path d=\"m14,5H2v-2h12v2Zm-4,2H2v2h8v-2Zm-4,4H2v2h4v-2Z\" style=\"fill: var(--blue-700)\" />\n </svg>\n <svg *ngSwitchCase=\"'desc'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\">\n <polygon points=\"11 6 8 3 5 6 7 6 7 13 9 13 9 6 11 6\" style=\"fill: var(--blue-700)\" />\n </svg>\n <svg *ngSwitchCase=\"'asc'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\">\n <polygon points=\"5 10 8 13 11 10 9 10 9 3 7 3 7 10 5 10\" style=\"fill: var(--blue-700)\" />\n </svg>\n </ng-container>\n </div>\n <ng-content select=\"odx-form-field\"></ng-content>\n</ng-template>\n","import { Directive } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n/**\n * TableCellDirective enhances an HTML td element by providing a role attribute with a value of \"cell\".\n * This directive is used to define a cell within a table.\n */\n@CSSComponent('table__cell')\n@Directive({\n selector: 'td[odx-table-cell]',\n standalone: true,\n host: {\n '[attr.role]': '\"cell\"',\n },\n})\nexport class TableCellDirective {\n public readonly element = injectElement();\n}\n","import { Directive } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n/**\n * TableRowDirective enhances an HTML tr element by providing a role attribute with a value of \"row\".\n * This directive is used to define a row within a table.\n */\n@CSSComponent('table__row')\n@Directive({\n selector: 'tr[odx-table-row]',\n standalone: true,\n host: {\n '[attr.role]': '\"row\"',\n '[attr.tabindex]': '0',\n },\n})\nexport class TableRowDirective {\n public readonly element = injectElement();\n}\n","export type TableVariant = typeof TableVariant[keyof typeof TableVariant];\n\nexport const TableVariant = {\n DEFAULT: 'default',\n STRIPED: 'striped',\n} as const;\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { FormFieldModule } from '@odx/angular/components/form-field';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { debounceTime, tap } from 'rxjs';\nimport { HeaderTitleComponent } from './components/header-title/header-title.component';\nimport { SortStatus, TableBodyCell, TableHeaderCell, TableVariant } from './models';\nimport { TABLE } from './table.config';\n\n/**\n * TableComponent is a dynamic table structure built for displaying complex data sets with sorting, filtering,\n * and checkable functionality. It provides configuration options through various inputs that allow the\n * customization of table behavior and presentation.\n *\n * This component is highly modular, integrating with other components such as `HeaderTitleComponent` for header\n * management, and using Angular forms for dynamic data filtering.\n *\n * @template T - The type of data that the table displays.\n */\n@CSSComponent('table')\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'table[odxTable]',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.role]': '\"table\"',\n },\n templateUrl: './table.component.html',\n imports: [CommonModule, IconComponent, ReactiveFormsModule, FormFieldModule, HeaderTitleComponent],\n providers: [{ provide: TABLE, useExisting: TableComponent }],\n})\nexport class TableComponent<T> implements OnInit {\n private readonly takeUntilDestroyed = untilDestroyed();\n public readonly element = injectElement();\n\n /**\n * Specifies the table variant for CSS styling.\n *\n * @type {TableVariant | null}\n */\n @CSSModifier()\n @Input()\n public variant?: TableVariant | null;\n\n /**\n * Data array of type T that the table displays.\n *\n * @type {T[]}\n * @default []\n */\n @Input()\n public data: T[] = [];\n\n /**\n * Configuration for table header data which controls sorting, filtering, and additional metadata.\n *\n * @type {TableHeaderCell[]}\n * @default []\n */\n @Input()\n public headerData: TableHeaderCell[] = [];\n\n /**\n * FormGroup to handle the dynamic filtering controls, each tied to a header cell that has filtering enabled.\n */\n public form: FormGroup = new FormGroup({});\n\n /**\n * Event emitter for when a column's sorting status changes.\n *\n * @emits {SortStatus}\n */\n @Output()\n public readonly sorted: EventEmitter<SortStatus> = new EventEmitter();\n\n /**\n * Event emitter for when the table's filtering conditions change.\n *\n * @emits {{ [key: string]: string }}\n */\n @Output()\n public readonly filtered: EventEmitter<{ [key: string]: string }> = new EventEmitter();\n\n /**\n * Event emitter for when a checkbox column's checked state changes.\n *\n * @emits {{ column: string; check: boolean }}\n */\n @Output()\n public readonly checked: EventEmitter<{ column: string; check: boolean }> = new EventEmitter();\n\n /**\n * A QueryList of HeaderTitleComponent instances, each corresponding to a header cell in the table.\n *\n * @type {QueryList<HeaderTitleComponent>}\n */\n @ViewChildren(HeaderTitleComponent)\n public headers!: QueryList<HeaderTitleComponent>;\n\n public ngOnInit(): void {\n this.setHeaderData();\n this.headerData.forEach((item) => item.filter && this.form.addControl(item.name, new FormControl('')));\n this.formListener();\n }\n\n /**\n * Clears the sorting status of all headers.\n */\n public clearSort(): void {\n this.headers.forEach((header) => header.clearSortStatus());\n }\n\n private formListener(): void {\n if (Object.keys(this.form.controls).length === 0) return;\n this.form.valueChanges\n .pipe(\n debounceTime(600),\n this.takeUntilDestroyed(),\n tap(() => {\n this.filtered.emit(this.form.value);\n this.headers?.filter((header) => !!header.item.check).forEach((header) => header.check());\n }),\n )\n .subscribe();\n }\n\n private setHeaderData(): void {\n this.headerData = Object.keys(this.data[0] as TableBodyCell).map(\n (key) =>\n this.headerData.find((item) => item.name === key) || {\n name: key,\n title: `${key[0].toUpperCase()}${key.slice(1)}`,\n sortable: false,\n filter: false,\n },\n );\n }\n}\n","<thead class=\"odx-table__head\" role=\"rowgroup\" [formGroup]=\"form\">\n <tr class=\"odx-table__header-row\" role=\"row\">\n <th *ngFor=\"let item of headerData\" class=\"odx-table__header-cell\" role=\"columnheader\" odxHeaderTitle [item]=\"item\">\n <odx-form-field *ngIf=\"item.filter\">\n <input placeholder=\"Filter\" [formControlName]=\"item.name\" type=\"text\" odxFormFieldControl />\n </odx-form-field>\n </th>\n </tr>\n</thead>\n<tbody class=\"odx-table__body\" role=\"rowgroup\">\n <ng-content select=\"tr\"></ng-content>\n</tbody>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CheckCellComponent } from './components/check-cell/check-cell.component';\nimport { TableCellDirective } from './directives/table-cell.directive';\nimport { TableRowDirective } from './directives/table-row.directive';\nimport { TableComponent } from './table.component';\n\nconst modules = [TableComponent, TableRowDirective, TableCellDirective, CheckCellComponent];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class TableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -34,6 +34,11 @@ const TIMEPICKER_CONTROL = new InjectionToken('@odx/angular/components/timepicke
|
|
|
34
34
|
* @extends {OptionControl<string>}
|
|
35
35
|
*/
|
|
36
36
|
let TimepickerOptionComponent = class TimepickerOptionComponent extends OptionControl {
|
|
37
|
+
/**
|
|
38
|
+
* Whether the option is disabled. This is used to determine whether the option should be selectable.
|
|
39
|
+
*
|
|
40
|
+
* @type {boolean}
|
|
41
|
+
*/
|
|
37
42
|
get disabled() {
|
|
38
43
|
return !!this.disabledController?.disabled;
|
|
39
44
|
}
|
|
@@ -44,7 +49,10 @@ let TimepickerOptionComponent = class TimepickerOptionComponent extends OptionCo
|
|
|
44
49
|
this.isSelected = false;
|
|
45
50
|
this.isActive = false;
|
|
46
51
|
/**
|
|
47
|
-
* Emits an event when the option is selected, allowing the timepicker component to update its value
|
|
52
|
+
* Emits an event when the option is selected, allowing the timepicker component to update its value
|
|
53
|
+
* and close the dropdown.
|
|
54
|
+
*
|
|
55
|
+
* @emits {TimepickerOptionComponent}
|
|
48
56
|
*/
|
|
49
57
|
this.selected = new EventEmitter();
|
|
50
58
|
detectControllerChanges(this.timepicker).pipe(this.takeUntilDestroyed()).subscribe();
|
|
@@ -147,13 +155,6 @@ class TimepickerService {
|
|
|
147
155
|
hour12,
|
|
148
156
|
}).format(date);
|
|
149
157
|
}
|
|
150
|
-
/**
|
|
151
|
-
* Converts an array of time strings to an array of Date objects.
|
|
152
|
-
*
|
|
153
|
-
* @param {string[]} times - The time strings to convert.
|
|
154
|
-
* @returns {Date[]} An array of Date objects corresponding to the input times.
|
|
155
|
-
* @private
|
|
156
|
-
*/
|
|
157
158
|
convertToDates(times) {
|
|
158
159
|
return times.map((time) => new Date(`${time} 2022-12-19`));
|
|
159
160
|
}
|
|
@@ -218,6 +219,8 @@ let TimepickerInputControlDirective = class TimepickerInputControlDirective exte
|
|
|
218
219
|
}
|
|
219
220
|
/**
|
|
220
221
|
* Configuration for the mask applied to the timepicker input. Adjusts based on locale settings.
|
|
222
|
+
*
|
|
223
|
+
* @returns {Partial<IConfig>} The mask configuration for the timepicker input.
|
|
221
224
|
*/
|
|
222
225
|
get maskConfig() {
|
|
223
226
|
return {
|
|
@@ -346,6 +349,8 @@ let TimepickerComponent = class TimepickerComponent extends CustomFormControl {
|
|
|
346
349
|
static { TimepickerComponent_1 = this; }
|
|
347
350
|
/**
|
|
348
351
|
* Controls whether the timepicker should use locale-specific time formats AM/PM.
|
|
352
|
+
*
|
|
353
|
+
* @type {boolean}
|
|
349
354
|
* @default false
|
|
350
355
|
*/
|
|
351
356
|
set useLocale(val) {
|
|
@@ -358,6 +363,7 @@ let TimepickerComponent = class TimepickerComponent extends CustomFormControl {
|
|
|
358
363
|
}
|
|
359
364
|
/**
|
|
360
365
|
* Gets a boolean value indicating whether the locale is being used.
|
|
366
|
+
*
|
|
361
367
|
* @returns {boolean} A boolean value indicating whether the locale is being used.
|
|
362
368
|
*/
|
|
363
369
|
get useLocale() {
|
|
@@ -372,16 +378,22 @@ let TimepickerComponent = class TimepickerComponent extends CustomFormControl {
|
|
|
372
378
|
this.element = injectElement();
|
|
373
379
|
/**
|
|
374
380
|
* Controls the step interval between time options in minutes.
|
|
381
|
+
*
|
|
382
|
+
* @type {number}
|
|
375
383
|
* @default 30
|
|
376
384
|
*/
|
|
377
385
|
this.step = 30;
|
|
378
386
|
/**
|
|
379
387
|
* Specifies the minimum time value that can be selected ('05:00' or '05:00 AM').
|
|
388
|
+
*
|
|
389
|
+
* @type {string}
|
|
380
390
|
* @default '00:00'
|
|
381
391
|
*/
|
|
382
392
|
this.min = '00:00';
|
|
383
393
|
/**
|
|
384
394
|
* Specifies the maximum time value that can be selected ('22:00' or '10:00 PM').
|
|
395
|
+
*
|
|
396
|
+
* @type {string}
|
|
385
397
|
* @default '23:59'
|
|
386
398
|
*/
|
|
387
399
|
this.max = '23:59';
|
|
@@ -392,8 +404,9 @@ let TimepickerComponent = class TimepickerComponent extends CustomFormControl {
|
|
|
392
404
|
}
|
|
393
405
|
/**
|
|
394
406
|
* Checks if the given time option is selected.
|
|
395
|
-
*
|
|
396
|
-
* @
|
|
407
|
+
*
|
|
408
|
+
* @param {TimepickerOptionComponent} option - The time option to check.
|
|
409
|
+
* @returns {boolean} True if the option is selected, false otherwise.
|
|
397
410
|
*/
|
|
398
411
|
isTimeOptionSelected(option) {
|
|
399
412
|
return this.value === option.value;
|
|
@@ -401,7 +414,7 @@ let TimepickerComponent = class TimepickerComponent extends CustomFormControl {
|
|
|
401
414
|
/**
|
|
402
415
|
* Handles the selection of a time option from the dropdown, updating the input field and closing the dropdown.
|
|
403
416
|
*
|
|
404
|
-
* @param {TimepickerOptionComponent} option - The selected time option component.
|
|
417
|
+
* @param {TimepickerOptionComponent | undefined} option - The selected time option component.
|
|
405
418
|
*/
|
|
406
419
|
timeSelected(option) {
|
|
407
420
|
if (!option || option.disabled)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"odx-angular-components-timepicker.mjs","sources":["../../../../libs/angular/components/timepicker/src/lib/timepicker.token.ts","../../../../libs/angular/components/timepicker/src/lib/components/timepicker-option.component.ts","../../../../libs/angular/components/timepicker/src/lib/timepicker.service.ts","../../../../libs/angular/components/timepicker/src/lib/utils/ngx-mask-helper.ts","../../../../libs/angular/components/timepicker/src/lib/directives/timepicker-input-control.directive.ts","../../../../libs/angular/components/timepicker/src/lib/utils/generate-time-stamps.ts","../../../../libs/angular/components/timepicker/src/lib/timepicker.component.ts","../../../../libs/angular/components/timepicker/src/lib/timepicker.component.html","../../../../libs/angular/components/timepicker/src/lib/timepicker.module.ts","../../../../libs/angular/components/timepicker/src/odx-angular-components-timepicker.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { TimepickerComponent } from './timepicker.component';\n\n/**\n * An InjectionToken used for injecting an instance of TimepickerComponent.\n * This token facilitates the decoupling of the TimepickerComponent's implementation from its consumption,\n * allowing for more flexible and maintainable code, especially in scenarios requiring custom time picker\n * behavior or appearance.\n */\nexport const TIMEPICKER_CONTROL = new InjectionToken<TimepickerComponent>('@odx/angular/components/timepicker::TimepickerComponent');\n","import { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output, ViewEncapsulation, inject } from '@angular/core';\nimport { DisabledController, WithDisabledState, detectControllerChanges } from '@odx/angular';\nimport { OptionControl } from '@odx/angular/cdk/option-control';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { TIMEPICKER_CONTROL } from '../timepicker.token';\n\n/**\n * Represents a selectable option within a timepicker component. This component allows for\n * individual time values to be selected from a dropdown menu as part of the timepicker interface.\n * It integrates with the timepicker's control to manage selection state and accessibility.\n *\n * @extends {OptionControl<string>}\n */\n@CSSComponent('timepicker-option')\n@Component({\n selector: 'odx-timepicker-option',\n template: `<ng-content></ng-content>`,\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DisabledController.connect()],\n hostDirectives: [WithDisabledState],\n})\nexport class TimepickerOptionComponent extends OptionControl<string> implements OnInit {\n private readonly timepicker = inject(TIMEPICKER_CONTROL);\n protected readonly disabledController = DisabledController.inject();\n\n public isSelected = false;\n public override isActive = false;\n\n public get disabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n /**\n * Emits an event when the option is selected, allowing the timepicker component to update its value and close the dropdown.\n */\n @Output()\n public selected = new EventEmitter<TimepickerOptionComponent>();\n\n constructor() {\n super();\n detectControllerChanges(this.timepicker).pipe(this.takeUntilDestroyed()).subscribe();\n }\n\n public ngOnInit(): void {\n this.isSelected = this.timepicker.isTimeOptionSelected(this);\n }\n\n protected selectOption(): void {\n this.selected.emit(this);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { isAfter, isBefore, isEqual } from 'date-fns';\n\n/**\n * Service to provide utility functions for timepicker components, including validation, placeholder generation, and finding the closest time.\n * It also handles locale-based time formatting.\n */\n@Injectable({ providedIn: 'root' })\nexport class TimepickerService {\n private readonly windowRef = inject(WindowRef);\n\n /**\n * Generates a placeholder string for time input fields.\n *\n * @param {boolean} apm - Specifies if the placeholder should include AM/PM notation.\n * @returns {string} The placeholder string.\n */\n public getPlaceholder(apm = false): string {\n return apm ? '--:-- --' : '--:--';\n }\n\n /**\n * Validates if the given time is less than or equal to a maximum time constraint.\n *\n * @param {string} time - The time to validate.\n * @param {string} max - The maximum allowable time.\n * @returns {boolean} True if the time is valid, false otherwise.\n */\n public maxValidation(time: string, max: string): boolean {\n const [targetValue, maxValue] = this.convertToDates([time, max]);\n return isBefore(targetValue, maxValue) || isEqual(targetValue, maxValue);\n }\n\n /**\n * Validates if the given time is greater than or equal to a minimum time constraint.\n *\n * @param {string} time - The time to validate.\n * @param {string} min - The minimum allowable time.\n * @returns {boolean} True if the time is valid, false otherwise.\n */\n public minValidation(time: string, min: string): boolean {\n const [targetValue, minValue] = this.convertToDates([time, min]);\n return isAfter(targetValue, minValue) || isEqual(targetValue, minValue);\n }\n\n /**\n * Finds the closest time to a target time from a list of times.\n *\n * @param {string[]} timeStamps - The list of times to search through.\n * @param {string} targetTime - The target time to find the closest match for.\n * @returns {string} The closest time to the target.\n */\n public findClosestDate(timeStamps: string[], targetTime: string): string {\n const [target] = this.convertToDates([targetTime]);\n const datesArray = this.convertToDates(timeStamps);\n\n const closestDate = datesArray.reduce((prev, curr) => {\n return Math.abs(curr.getTime() - target.getTime()) < Math.abs(prev.getTime() - target.getTime()) ? curr : prev;\n });\n\n return this.getLocalizedTimeFormat(`${closestDate.getHours()}:${closestDate.getMinutes()}`);\n }\n\n /**\n * Formats a time string to a localized time format.\n *\n * @param {string} time - The time string to format.\n * @param {boolean} hour12 - Specifies if the output should use 12-hour format with AM/PM notation.\n * @returns {string} The formatted time string.\n */\n public getLocalizedTimeFormat(time: string, hour12 = false): string {\n const locale = hour12 ? 'en-US' : 'en-GB';\n const [date] = this.convertToDates([time]);\n return new this.windowRef.nativeWindow.Intl.DateTimeFormat(locale, {\n hour: '2-digit',\n minute: '2-digit',\n hour12,\n }).format(date);\n }\n\n /**\n * Converts an array of time strings to an array of Date objects.\n *\n * @param {string[]} times - The time strings to convert.\n * @returns {Date[]} An array of Date objects corresponding to the input times.\n * @private\n */\n private convertToDates(times: string[]): Date[] {\n return times.map((time) => new Date(`${time} 2022-12-19`));\n }\n}\n","/**\n * Processes and formats a time input value based on specific rules. It adjusts the input for valid time format,\n * especially focusing on single-digit hour inputs, ensuring minute values start with 0 if the last digit is greater\n * than 5, and appending 'M' to AM/PM indicators.\n *\n * @param {string} value - The current input value of the time field.\n * @param {InputEvent} event - The input event triggered by the user's interaction with the field.\n * @returns {string} The processed and potentially reformatted value.\n *\n * @example\n * ```ts\n * // Prepend 0 to single-digit hours greater than 1\n * processInputValue(\"2\", { inputType: \"insertText\" }); // Returns \"02\"\n *\n * // Ensure minute values are within valid ranges\n * processInputValue(\"11:8\", { inputType: \"insertText\" }); // Returns \"11:08\"\n *\n * // Append 'M' to AM/PM indicators\n * processInputValue(\"2 p\", { inputType: \"insertText\" }); // Returns \"2 PM\"\n * ```\n */\nexport function processInputValue(value: string, event: InputEvent): string {\n if (value.length === 1 && Number(value) > 1) {\n value = `0${value}`;\n } else if (value.length === 4 && Number(value.at(-1)) > 5) {\n value = `${value.slice(0, -1)}0${value.slice(-1)}`;\n }\n\n if (/[AaPp]/.test(value) && event.inputType === 'insertText') {\n value = `${value.toUpperCase()}M`;\n }\n\n return value;\n}\n","import { Directive, inject } from '@angular/core';\nimport { WithDisabledState, WithTabIndex } from '@odx/angular';\nimport { InputControlDirective } from '@odx/angular/cdk/custom-form-control';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { IConfig, NgxMaskPipe, provideNgxMask } from 'ngx-mask';\nimport { distinctUntilChanged, fromEvent, map } from 'rxjs';\nimport { TimepickerService } from '../timepicker.service';\nimport { TIMEPICKER_CONTROL } from '../timepicker.token';\nimport { processInputValue } from '../utils/ngx-mask-helper';\n\n/**\n * Directive to enhance a standard input element for time picking, integrating mask functionality for time format.\n * It automatically adapts to locale settings provided by the enclosing `TimepickerComponent` to display time in the appropriate format.\n *\n * @extends {InputControlDirective}\n */\n@CSSComponent('timepicker__control')\n@Directive({\n standalone: true,\n selector: 'input[odxTimepickerControl]',\n host: {\n '[attr.readonly]': 'isReadonly || null',\n '[attr.placeholder]': 'placeholder',\n },\n providers: [provideNgxMask(), NgxMaskPipe],\n hostDirectives: [WithTabIndex, WithDisabledState],\n})\nexport class TimepickerInputControlDirective extends InputControlDirective {\n private readonly timepicker = inject(TIMEPICKER_CONTROL);\n private readonly timepickerService = inject(TimepickerService);\n protected readonly ngxMaskPipe = inject(NgxMaskPipe);\n\n /**\n * Configuration for the mask applied to the timepicker input. Adjusts based on locale settings.\n */\n protected get maskConfig(): Partial<IConfig> {\n return {\n validation: false,\n apm: this.timepicker.useLocale,\n leadZeroDateTime: !this.timepicker.useLocale,\n\n patterns: {\n A: { pattern: new RegExp('[AaPp]') },\n M: { pattern: new RegExp('M') },\n },\n };\n }\n\n /**\n * Stream of value changes for the input element, applying the mask and processing the input based on locale.\n */\n public override valueChange$ = fromEvent(this.element.nativeElement, 'input').pipe(\n distinctUntilChanged(),\n map((event) => this.applyMask(event)),\n );\n\n /**\n * Computes and returns the placeholder text for the input based on locale settings.\n *\n * @returns {string} The placeholder text for the input.\n */\n public get placeholder(): string {\n return this.timepickerService.getPlaceholder(this.timepicker.useLocale);\n }\n\n /**\n * Determines whether the timepicker input is readonly, based on the state of the parent timepicker component.\n *\n * @returns {boolean} `true` if the input should be readonly; otherwise, `false`.\n */\n protected get isReadonly(): boolean {\n return this.timepicker.isReadonly;\n }\n\n /**\n * Applies the time format mask to the input value, transforming and returning the masked value.\n *\n * @param {Event} event - The input event triggering the mask application.\n * @returns {string} The masked input value.\n */\n private applyMask(event: Event): string {\n const mask = this.timepicker.useLocale ? 'Hh:m0 AM' : 'Hh:m0';\n let value = this.ngxMaskPipe.transform(this.nativeElementValue, mask, this.maskConfig);\n if (this.timepicker.useLocale) {\n value = processInputValue(value, event as InputEvent);\n }\n this.nativeElementValue = value;\n return value;\n }\n}\n","/**\n * Generates an array of time stamps within a 24-hour period based on the specified step interval.\n * The time stamps can be formatted in 24-hour format or 12-hour format with AM/PM based on locale preference.\n *\n * @param {number} step - The interval, in minutes, between each time stamp.\n * @param {boolean} useLocale - Determines if the time stamps should use the 12-hour format with AM/PM (`true`) or the 24-hour format (`false`).\n * @returns {string[]} An array of formatted time stamps as strings.\n * @example\n * ```ts\n * // Generate time stamps every 30 minutes using 24-hour format\n * generateTimeStamps(30, false);\n * // Returns [\"00:00\", \"00:30\", \"01:00\", ..., \"23:30\"]\n *\n * // Generate time stamps every 60 minutes using 12-hour format with AM/PM\n * generateTimeStamps(60, true);\n * // Returns [\"12:00 AM\", \"01:00 AM\", ..., \"11:00 PM\"]\n * ```\n */\nexport function generateTimeStamps(step: number, useLocale: boolean): string[] {\n const roundedStep = Math.round(step);\n\n return Array.from({ length: Math.ceil(24 * (60 / roundedStep)) }, (_, i) => {\n const hours = Math.floor((i * roundedStep) / 60);\n const minutes = (i * roundedStep) % 60;\n return formatTime(hours, minutes, useLocale);\n });\n}\n\n/**\n * Formats a given time as a string based on the specified hour, minute, and locale preference.\n * Can format time in either 24-hour format or 12-hour format with AM/PM.\n *\n * @param {number} hours - The hour component of the time.\n * @param {number} minutes - The minute component of the time.\n * @param {boolean} useLocale - Determines if the time should be formatted using the 12-hour format with AM/PM (`true`) or the 24-hour format (`false`).\n * @returns {string} The formatted time as a string.\n * @example\n * ```ts\n * // Format time using 24-hour format\n * formatTime(14, 30, false); // \"14:30\"\n *\n * // Format time using 12-hour format with AM/PM\n * formatTime(14, 30, true); // \"2:30 PM\"\n * ```\n */\nfunction formatTime(hours: number, minutes: number, useLocale: boolean): string {\n if (useLocale) {\n const period = hours >= 12 ? 'PM' : 'AM';\n const displayHours = hours % 12 === 0 ? 12 : hours % 12;\n return `${displayHours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')} ${period}`;\n } else {\n return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;\n }\n}\n","import { A11yModule, ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n HostListener,\n Input,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n booleanAttribute,\n forwardRef,\n inject,\n numberAttribute,\n} from '@angular/core';\nimport { DisabledController, ReadonlyController } from '@odx/angular';\nimport { CustomFormControl } from '@odx/angular/cdk/custom-form-control';\nimport { OptionControl } from '@odx/angular/cdk/option-control';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { DropdownDirective, DropdownModule } from '@odx/angular/components/dropdown';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement, isFunction, trackByIndex, untilDestroyed } from '@odx/angular/utils';\nimport { TimepickerOptionComponent } from './components/timepicker-option.component';\nimport { TimepickerInputControlDirective } from './directives/timepicker-input-control.directive';\nimport { TimepickerService } from './timepicker.service';\nimport { TIMEPICKER_CONTROL } from './timepicker.token';\nimport { generateTimeStamps } from './utils/generate-time-stamps';\n\n/**\n * Represents a time picker component allowing users to select a time from a dropdown list.\n * This component integrates with Angular forms and supports customization for locale, time range, and step intervals.\n *\n * @see {CustomFormControl}\n */\n@CSSComponent('timepicker')\n@Component({\n standalone: true,\n selector: 'odx-timepicker',\n templateUrl: 'timepicker.component.html',\n providers: [\n DisabledController.connect(),\n ReadonlyController.connect(),\n {\n provide: TIMEPICKER_CONTROL,\n useExisting: forwardRef(() => TimepickerComponent),\n },\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [A11yModule, ActionGroupComponent, ButtonComponent, DropdownModule, TimepickerOptionComponent, IconComponent, TimepickerInputControlDirective],\n host: {\n '[attr.readonly]': 'readonlyController?.readonly || null',\n },\n})\nexport class TimepickerComponent extends CustomFormControl<string | null> implements AfterViewInit {\n private readonly timepickerService = inject(TimepickerService);\n private _useLocale = false;\n protected keyManager?: ActiveDescendantKeyManager<OptionControl<string>>;\n\n protected readonly takeUntilDestroyed = untilDestroyed();\n protected readonly trackByIndex = trackByIndex;\n\n @ViewChild(DropdownDirective)\n protected readonly dropdown?: DropdownDirective;\n\n @ViewChildren(TimepickerOptionComponent, { emitDistinctChangesOnly: true })\n protected options!: QueryList<TimepickerOptionComponent>;\n\n public readonly element = injectElement();\n\n /**\n * Controls whether the timepicker should use locale-specific time formats AM/PM.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public set useLocale(val: boolean) {\n if (this.value && this.dateField) {\n const time = this.timepickerService.getLocalizedTimeFormat(this.value, val);\n this.updateValue(time);\n this.dateField.nativeElementValue = time;\n }\n this._useLocale = val;\n }\n\n /**\n * Gets a boolean value indicating whether the locale is being used.\n * @returns {boolean} A boolean value indicating whether the locale is being used.\n */\n public get useLocale(): boolean {\n return this._useLocale;\n }\n\n /**\n * Controls the step interval between time options in minutes.\n * @default 30\n */\n @Input({ transform: numberAttribute })\n public step = 30;\n\n /**\n * Specifies the minimum time value that can be selected ('05:00' or '05:00 AM').\n * @default '00:00'\n */\n @Input()\n public min = '00:00';\n\n /**\n * Specifies the maximum time value that can be selected ('22:00' or '10:00 PM').\n * @default '23:59'\n */\n @Input()\n public max = '23:59';\n\n @ViewChild(TimepickerInputControlDirective)\n public dateField?: TimepickerInputControlDirective;\n\n constructor() {\n super(null);\n }\n\n public ngAfterViewInit(): void {\n this.handleDateFieldChanges();\n this.updateInputValue();\n }\n\n /**\n * Checks if the given time option is selected.\n * @param option - The time option to check.\n * @returns True if the option is selected, false otherwise.\n */\n public isTimeOptionSelected(option: TimepickerOptionComponent): boolean {\n return this.value === option.value;\n }\n\n /**\n * Handles the selection of a time option from the dropdown, updating the input field and closing the dropdown.\n *\n * @param {TimepickerOptionComponent} option - The selected time option component.\n */\n public timeSelected(option?: TimepickerOptionComponent): void {\n if (!option || option.disabled) return;\n const time = this.timepickerService.getLocalizedTimeFormat(option.getLabel(), this.useLocale);\n this.dateField && (this.dateField.nativeElementValue = time);\n this.updateValue(time);\n this.dropdown?.close();\n }\n\n /**\n * Determines whether the specified time is within the allowed time range.\n *\n * @param {string} time - The time to check, in 'HH:mm' or 'HH:mm AM/PM' format.\n * @returns {boolean} True if the time is within the range; otherwise, false.\n */\n public inTimeRange(time: string): boolean {\n return this.timepickerService.maxValidation(time, this.max) && this.timepickerService.minValidation(time, this.min);\n }\n\n /**\n * Generates the list of time options based on the configured step interval and locale settings AM/PM.\n *\n * @returns {string[]} An array of time strings in 'HH:mm' format.\n */\n public get timeStampsList(): string[] {\n return generateTimeStamps(this.step, this.useLocale);\n }\n\n protected onOpen(): void {\n this.keyManager = new ActiveDescendantKeyManager<OptionControl<string>>(this.options).withHomeAndEnd();\n this.setActiveOptionBasedOnCurrentValue();\n }\n\n @HostListener('click', ['$event'])\n @HostListener('keydown', ['$event'])\n protected handleControllerEvent(event: KeyboardEvent) {\n if (this.readonlyController?.readonly) return;\n\n this.keyManager?.onKeydown(event);\n const activeOption = this.keyManager?.activeItem as TimepickerOptionComponent;\n activeOption && this.scrollToActiveOption(activeOption, { behavior: 'smooth' });\n\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.timeSelected(activeOption);\n }\n }\n\n protected handleDateFieldChanges(): void {\n this.dateField?.valueChange$.pipe(this.takeUntilDestroyed()).subscribe((time) => this.updateValue(time ?? null));\n }\n\n private setActiveOptionBasedOnCurrentValue(): void {\n const isSelected = this.options.find((option) => option.isSelected);\n if (isSelected) {\n this.activateOption(isSelected);\n return;\n }\n\n this.activateNearestTimeOption();\n }\n\n private activateOption(option: TimepickerOptionComponent): void {\n this.keyManager && this.keyManager.setActiveItem(option);\n this.scrollToActiveOption(option);\n }\n\n private activateNearestTimeOption(): void {\n if (!this.value) {\n const currentDate = new Date();\n const isNearest = this.findNearestTimeOption(currentDate);\n if (isNearest) {\n this.activateOption(isNearest);\n }\n }\n }\n\n private findNearestTimeOption(currentDate: Date): TimepickerOptionComponent | undefined {\n const availableTimeSlots = this.options.filter((option) => !option.disabled);\n const nearestTimeValue = this.timepickerService.findClosestDate(\n availableTimeSlots.map((option) => option.value) as string[],\n `${currentDate.getHours()}:${currentDate.getMinutes()}`,\n );\n\n return availableTimeSlots.find((option) => option.value === nearestTimeValue);\n }\n\n private updateInputValue(): void {\n if (this.value && this.dateField) {\n const time = this.timepickerService.getLocalizedTimeFormat(this.value, this.useLocale);\n this.dateField.nativeElementValue = time;\n }\n }\n\n private scrollToActiveOption(option: TimepickerOptionComponent, _opts: ScrollIntoViewOptions = {}): void {\n if (isFunction(option.element.nativeElement.scrollIntoView)) {\n option.element.nativeElement.scrollIntoView({ block: 'center', ..._opts });\n }\n }\n}\n","<div class=\"odx-timepicker__wrapper\">\n <input [value]=\"value\" odxTimepickerControl type=\"text\" />\n</div>\n\n<odx-action-group class=\"odx-no-margin\">\n <button\n #dropdownTrigger\n class=\"odx-timepicker__trigger\"\n odxButton\n size=\"small\"\n variant=\"ghost\"\n aria-label=\"Select time\"\n [odxDropdown]=\"timeList\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, position: 'bottom-start', enableFallback: false }\"\n [odxDropdownTriggerElement]=\"dropdownTrigger.element.nativeElement\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n (odxDropdownBeforeClose)=\"onTouched()\"\n (odxDropdownAfterOpen)=\"onOpen()\"\n >\n <odx-icon name=\"chevron-down\" />\n </button>\n</odx-action-group>\n\n<ng-template #timeList>\n <div class=\"odx-timepicker__option-list\" role=\"listbox\">\n <odx-timepicker-option\n [value]=\"time\"\n [disabled]=\"!inTimeRange(time)\"\n *ngFor=\"let time of timeStampsList; trackBy: trackByIndex\"\n (selected)=\"timeSelected($event)\"\n >{{ time }}</odx-timepicker-option\n >\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { TimepickerOptionComponent } from './components/timepicker-option.component';\nimport { TimepickerInputControlDirective } from './directives/timepicker-input-control.directive';\nimport { TimepickerComponent } from './timepicker.component';\n\nconst modules = [TimepickerComponent, TimepickerInputControlDirective, TimepickerOptionComponent];\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class TimepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"odx-angular-components-timepicker.mjs","sources":["../../../../libs/angular/components/timepicker/src/lib/timepicker.token.ts","../../../../libs/angular/components/timepicker/src/lib/components/timepicker-option.component.ts","../../../../libs/angular/components/timepicker/src/lib/timepicker.service.ts","../../../../libs/angular/components/timepicker/src/lib/utils/ngx-mask-helper.ts","../../../../libs/angular/components/timepicker/src/lib/directives/timepicker-input-control.directive.ts","../../../../libs/angular/components/timepicker/src/lib/utils/generate-time-stamps.ts","../../../../libs/angular/components/timepicker/src/lib/timepicker.component.ts","../../../../libs/angular/components/timepicker/src/lib/timepicker.component.html","../../../../libs/angular/components/timepicker/src/lib/timepicker.module.ts","../../../../libs/angular/components/timepicker/src/odx-angular-components-timepicker.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { TimepickerComponent } from './timepicker.component';\n\n/**\n * An InjectionToken used for injecting an instance of TimepickerComponent.\n * This token facilitates the decoupling of the TimepickerComponent's implementation from its consumption,\n * allowing for more flexible and maintainable code, especially in scenarios requiring custom time picker\n * behavior or appearance.\n */\nexport const TIMEPICKER_CONTROL = new InjectionToken<TimepickerComponent>('@odx/angular/components/timepicker::TimepickerComponent');\n","import { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output, ViewEncapsulation, inject } from '@angular/core';\nimport { DisabledController, WithDisabledState, detectControllerChanges } from '@odx/angular';\nimport { OptionControl } from '@odx/angular/cdk/option-control';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { TIMEPICKER_CONTROL } from '../timepicker.token';\n\n/**\n * Represents a selectable option within a timepicker component. This component allows for\n * individual time values to be selected from a dropdown menu as part of the timepicker interface.\n * It integrates with the timepicker's control to manage selection state and accessibility.\n *\n * @extends {OptionControl<string>}\n */\n@CSSComponent('timepicker-option')\n@Component({\n selector: 'odx-timepicker-option',\n template: `<ng-content></ng-content>`,\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DisabledController.connect()],\n hostDirectives: [WithDisabledState],\n})\nexport class TimepickerOptionComponent extends OptionControl<string> implements OnInit {\n private readonly timepicker = inject(TIMEPICKER_CONTROL);\n protected readonly disabledController = DisabledController.inject();\n\n public isSelected = false;\n public override isActive = false;\n\n /**\n * Whether the option is disabled. This is used to determine whether the option should be selectable.\n *\n * @type {boolean}\n */\n public get disabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n /**\n * Emits an event when the option is selected, allowing the timepicker component to update its value\n * and close the dropdown.\n *\n * @emits {TimepickerOptionComponent}\n */\n @Output()\n public selected = new EventEmitter<TimepickerOptionComponent>();\n\n constructor() {\n super();\n detectControllerChanges(this.timepicker).pipe(this.takeUntilDestroyed()).subscribe();\n }\n\n public ngOnInit(): void {\n this.isSelected = this.timepicker.isTimeOptionSelected(this);\n }\n\n protected selectOption(): void {\n this.selected.emit(this);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { isAfter, isBefore, isEqual } from 'date-fns';\n\n/**\n * Service to provide utility functions for timepicker components, including validation, placeholder generation, and finding the closest time.\n * It also handles locale-based time formatting.\n */\n@Injectable({ providedIn: 'root' })\nexport class TimepickerService {\n private readonly windowRef = inject(WindowRef);\n\n /**\n * Generates a placeholder string for time input fields.\n *\n * @param {boolean} apm - Specifies if the placeholder should include AM/PM notation.\n * @returns {string} The placeholder string.\n */\n public getPlaceholder(apm = false): string {\n return apm ? '--:-- --' : '--:--';\n }\n\n /**\n * Validates if the given time is less than or equal to a maximum time constraint.\n *\n * @param {string} time - The time to validate.\n * @param {string} max - The maximum allowable time.\n * @returns {boolean} True if the time is valid, false otherwise.\n */\n public maxValidation(time: string, max: string): boolean {\n const [targetValue, maxValue] = this.convertToDates([time, max]);\n return isBefore(targetValue, maxValue) || isEqual(targetValue, maxValue);\n }\n\n /**\n * Validates if the given time is greater than or equal to a minimum time constraint.\n *\n * @param {string} time - The time to validate.\n * @param {string} min - The minimum allowable time.\n * @returns {boolean} True if the time is valid, false otherwise.\n */\n public minValidation(time: string, min: string): boolean {\n const [targetValue, minValue] = this.convertToDates([time, min]);\n return isAfter(targetValue, minValue) || isEqual(targetValue, minValue);\n }\n\n /**\n * Finds the closest time to a target time from a list of times.\n *\n * @param {string[]} timeStamps - The list of times to search through.\n * @param {string} targetTime - The target time to find the closest match for.\n * @returns {string} The closest time to the target.\n */\n public findClosestDate(timeStamps: string[], targetTime: string): string {\n const [target] = this.convertToDates([targetTime]);\n const datesArray = this.convertToDates(timeStamps);\n\n const closestDate = datesArray.reduce((prev, curr) => {\n return Math.abs(curr.getTime() - target.getTime()) < Math.abs(prev.getTime() - target.getTime()) ? curr : prev;\n });\n\n return this.getLocalizedTimeFormat(`${closestDate.getHours()}:${closestDate.getMinutes()}`);\n }\n\n /**\n * Formats a time string to a localized time format.\n *\n * @param {string} time - The time string to format.\n * @param {boolean} hour12 - Specifies if the output should use 12-hour format with AM/PM notation.\n * @returns {string} The formatted time string.\n */\n public getLocalizedTimeFormat(time: string, hour12 = false): string {\n const locale = hour12 ? 'en-US' : 'en-GB';\n const [date] = this.convertToDates([time]);\n return new this.windowRef.nativeWindow.Intl.DateTimeFormat(locale, {\n hour: '2-digit',\n minute: '2-digit',\n hour12,\n }).format(date);\n }\n\n private convertToDates(times: string[]): Date[] {\n return times.map((time) => new Date(`${time} 2022-12-19`));\n }\n}\n","/**\n * Processes and formats a time input value based on specific rules. It adjusts the input for valid time format,\n * especially focusing on single-digit hour inputs, ensuring minute values start with 0 if the last digit is greater\n * than 5, and appending 'M' to AM/PM indicators.\n *\n * @param {string} value - The current input value of the time field.\n * @param {InputEvent} event - The input event triggered by the user's interaction with the field.\n * @returns {string} The processed and potentially reformatted value.\n *\n * @example\n * ```ts\n * // Prepend 0 to single-digit hours greater than 1\n * processInputValue(\"2\", { inputType: \"insertText\" }); // Returns \"02\"\n *\n * // Ensure minute values are within valid ranges\n * processInputValue(\"11:8\", { inputType: \"insertText\" }); // Returns \"11:08\"\n *\n * // Append 'M' to AM/PM indicators\n * processInputValue(\"2 p\", { inputType: \"insertText\" }); // Returns \"2 PM\"\n * ```\n */\nexport function processInputValue(value: string, event: InputEvent): string {\n if (value.length === 1 && Number(value) > 1) {\n value = `0${value}`;\n } else if (value.length === 4 && Number(value.at(-1)) > 5) {\n value = `${value.slice(0, -1)}0${value.slice(-1)}`;\n }\n\n if (/[AaPp]/.test(value) && event.inputType === 'insertText') {\n value = `${value.toUpperCase()}M`;\n }\n\n return value;\n}\n","import { Directive, inject } from '@angular/core';\nimport { WithDisabledState, WithTabIndex } from '@odx/angular';\nimport { InputControlDirective } from '@odx/angular/cdk/custom-form-control';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { IConfig, NgxMaskPipe, provideNgxMask } from 'ngx-mask';\nimport { distinctUntilChanged, fromEvent, map } from 'rxjs';\nimport { TimepickerService } from '../timepicker.service';\nimport { TIMEPICKER_CONTROL } from '../timepicker.token';\nimport { processInputValue } from '../utils/ngx-mask-helper';\n\n/**\n * Directive to enhance a standard input element for time picking, integrating mask functionality for time format.\n * It automatically adapts to locale settings provided by the enclosing `TimepickerComponent` to display time in the appropriate format.\n *\n * @extends {InputControlDirective}\n */\n@CSSComponent('timepicker__control')\n@Directive({\n standalone: true,\n selector: 'input[odxTimepickerControl]',\n host: {\n '[attr.readonly]': 'isReadonly || null',\n '[attr.placeholder]': 'placeholder',\n },\n providers: [provideNgxMask(), NgxMaskPipe],\n hostDirectives: [WithTabIndex, WithDisabledState],\n})\nexport class TimepickerInputControlDirective extends InputControlDirective {\n private readonly timepicker = inject(TIMEPICKER_CONTROL);\n private readonly timepickerService = inject(TimepickerService);\n protected readonly ngxMaskPipe = inject(NgxMaskPipe);\n\n /**\n * Configuration for the mask applied to the timepicker input. Adjusts based on locale settings.\n *\n * @returns {Partial<IConfig>} The mask configuration for the timepicker input.\n */\n protected get maskConfig(): Partial<IConfig> {\n return {\n validation: false,\n apm: this.timepicker.useLocale,\n leadZeroDateTime: !this.timepicker.useLocale,\n\n patterns: {\n A: { pattern: new RegExp('[AaPp]') },\n M: { pattern: new RegExp('M') },\n },\n };\n }\n\n /**\n * Stream of value changes for the input element, applying the mask and processing the input based on locale.\n */\n public override valueChange$ = fromEvent(this.element.nativeElement, 'input').pipe(\n distinctUntilChanged(),\n map((event) => this.applyMask(event)),\n );\n\n /**\n * Computes and returns the placeholder text for the input based on locale settings.\n *\n * @returns {string} The placeholder text for the input.\n */\n public get placeholder(): string {\n return this.timepickerService.getPlaceholder(this.timepicker.useLocale);\n }\n\n /**\n * Determines whether the timepicker input is readonly, based on the state of the parent timepicker component.\n *\n * @returns {boolean} `true` if the input should be readonly; otherwise, `false`.\n */\n protected get isReadonly(): boolean {\n return this.timepicker.isReadonly;\n }\n\n /**\n * Applies the time format mask to the input value, transforming and returning the masked value.\n *\n * @param {Event} event - The input event triggering the mask application.\n * @returns {string} The masked input value.\n */\n private applyMask(event: Event): string {\n const mask = this.timepicker.useLocale ? 'Hh:m0 AM' : 'Hh:m0';\n let value = this.ngxMaskPipe.transform(this.nativeElementValue, mask, this.maskConfig);\n if (this.timepicker.useLocale) {\n value = processInputValue(value, event as InputEvent);\n }\n this.nativeElementValue = value;\n return value;\n }\n}\n","/**\n * Generates an array of time stamps within a 24-hour period based on the specified step interval.\n * The time stamps can be formatted in 24-hour format or 12-hour format with AM/PM based on locale preference.\n *\n * @param {number} step - The interval, in minutes, between each time stamp.\n * @param {boolean} useLocale - Determines if the time stamps should use the 12-hour format with AM/PM (`true`) or the 24-hour format (`false`).\n * @returns {string[]} An array of formatted time stamps as strings.\n * @example\n * ```ts\n * // Generate time stamps every 30 minutes using 24-hour format\n * generateTimeStamps(30, false);\n * // Returns [\"00:00\", \"00:30\", \"01:00\", ..., \"23:30\"]\n *\n * // Generate time stamps every 60 minutes using 12-hour format with AM/PM\n * generateTimeStamps(60, true);\n * // Returns [\"12:00 AM\", \"01:00 AM\", ..., \"11:00 PM\"]\n * ```\n */\nexport function generateTimeStamps(step: number, useLocale: boolean): string[] {\n const roundedStep = Math.round(step);\n\n return Array.from({ length: Math.ceil(24 * (60 / roundedStep)) }, (_, i) => {\n const hours = Math.floor((i * roundedStep) / 60);\n const minutes = (i * roundedStep) % 60;\n return formatTime(hours, minutes, useLocale);\n });\n}\n\n/**\n * Formats a given time as a string based on the specified hour, minute, and locale preference.\n * Can format time in either 24-hour format or 12-hour format with AM/PM.\n *\n * @param {number} hours - The hour component of the time.\n * @param {number} minutes - The minute component of the time.\n * @param {boolean} useLocale - Determines if the time should be formatted using the 12-hour format with AM/PM (`true`) or the 24-hour format (`false`).\n * @returns {string} The formatted time as a string.\n * @example\n * ```ts\n * // Format time using 24-hour format\n * formatTime(14, 30, false); // \"14:30\"\n *\n * // Format time using 12-hour format with AM/PM\n * formatTime(14, 30, true); // \"2:30 PM\"\n * ```\n */\nfunction formatTime(hours: number, minutes: number, useLocale: boolean): string {\n if (useLocale) {\n const period = hours >= 12 ? 'PM' : 'AM';\n const displayHours = hours % 12 === 0 ? 12 : hours % 12;\n return `${displayHours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')} ${period}`;\n } else {\n return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;\n }\n}\n","import { A11yModule, ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n HostListener,\n Input,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n booleanAttribute,\n forwardRef,\n inject,\n numberAttribute,\n} from '@angular/core';\nimport { DisabledController, ReadonlyController } from '@odx/angular';\nimport { CustomFormControl } from '@odx/angular/cdk/custom-form-control';\nimport { OptionControl } from '@odx/angular/cdk/option-control';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { DropdownDirective, DropdownModule } from '@odx/angular/components/dropdown';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement, isFunction, trackByIndex, untilDestroyed } from '@odx/angular/utils';\nimport { TimepickerOptionComponent } from './components/timepicker-option.component';\nimport { TimepickerInputControlDirective } from './directives/timepicker-input-control.directive';\nimport { TimepickerService } from './timepicker.service';\nimport { TIMEPICKER_CONTROL } from './timepicker.token';\nimport { generateTimeStamps } from './utils/generate-time-stamps';\n\n/**\n * Represents a time picker component allowing users to select a time from a dropdown list.\n * This component integrates with Angular forms and supports customization for locale, time range, and step intervals.\n *\n * @see {CustomFormControl}\n */\n@CSSComponent('timepicker')\n@Component({\n standalone: true,\n selector: 'odx-timepicker',\n templateUrl: 'timepicker.component.html',\n providers: [\n DisabledController.connect(),\n ReadonlyController.connect(),\n {\n provide: TIMEPICKER_CONTROL,\n useExisting: forwardRef(() => TimepickerComponent),\n },\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [A11yModule, ActionGroupComponent, ButtonComponent, DropdownModule, TimepickerOptionComponent, IconComponent, TimepickerInputControlDirective],\n host: {\n '[attr.readonly]': 'readonlyController?.readonly || null',\n },\n})\nexport class TimepickerComponent extends CustomFormControl<string | null> implements AfterViewInit {\n private readonly timepickerService = inject(TimepickerService);\n private _useLocale = false;\n protected keyManager?: ActiveDescendantKeyManager<OptionControl<string>>;\n\n protected readonly takeUntilDestroyed = untilDestroyed();\n protected readonly trackByIndex = trackByIndex;\n\n @ViewChild(DropdownDirective)\n protected readonly dropdown?: DropdownDirective;\n\n @ViewChildren(TimepickerOptionComponent, { emitDistinctChangesOnly: true })\n protected options!: QueryList<TimepickerOptionComponent>;\n\n public readonly element = injectElement();\n\n /**\n * Controls whether the timepicker should use locale-specific time formats AM/PM.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public set useLocale(val: boolean) {\n if (this.value && this.dateField) {\n const time = this.timepickerService.getLocalizedTimeFormat(this.value, val);\n this.updateValue(time);\n this.dateField.nativeElementValue = time;\n }\n this._useLocale = val;\n }\n\n /**\n * Gets a boolean value indicating whether the locale is being used.\n *\n * @returns {boolean} A boolean value indicating whether the locale is being used.\n */\n public get useLocale(): boolean {\n return this._useLocale;\n }\n\n /**\n * Controls the step interval between time options in minutes.\n *\n * @type {number}\n * @default 30\n */\n @Input({ transform: numberAttribute })\n public step = 30;\n\n /**\n * Specifies the minimum time value that can be selected ('05:00' or '05:00 AM').\n *\n * @type {string}\n * @default '00:00'\n */\n @Input()\n public min = '00:00';\n\n /**\n * Specifies the maximum time value that can be selected ('22:00' or '10:00 PM').\n *\n * @type {string}\n * @default '23:59'\n */\n @Input()\n public max = '23:59';\n\n /**\n * The directive for the timepicker input control.\n *\n * @type {TimepickerInputControlDirective | undefined}\n */\n @ViewChild(TimepickerInputControlDirective)\n public dateField?: TimepickerInputControlDirective;\n\n constructor() {\n super(null);\n }\n\n public ngAfterViewInit(): void {\n this.handleDateFieldChanges();\n this.updateInputValue();\n }\n\n /**\n * Checks if the given time option is selected.\n *\n * @param {TimepickerOptionComponent} option - The time option to check.\n * @returns {boolean} True if the option is selected, false otherwise.\n */\n public isTimeOptionSelected(option: TimepickerOptionComponent): boolean {\n return this.value === option.value;\n }\n\n /**\n * Handles the selection of a time option from the dropdown, updating the input field and closing the dropdown.\n *\n * @param {TimepickerOptionComponent | undefined} option - The selected time option component.\n */\n public timeSelected(option?: TimepickerOptionComponent): void {\n if (!option || option.disabled) return;\n const time = this.timepickerService.getLocalizedTimeFormat(option.getLabel(), this.useLocale);\n this.dateField && (this.dateField.nativeElementValue = time);\n this.updateValue(time);\n this.dropdown?.close();\n }\n\n /**\n * Determines whether the specified time is within the allowed time range.\n *\n * @param {string} time - The time to check, in 'HH:mm' or 'HH:mm AM/PM' format.\n * @returns {boolean} True if the time is within the range; otherwise, false.\n */\n public inTimeRange(time: string): boolean {\n return this.timepickerService.maxValidation(time, this.max) && this.timepickerService.minValidation(time, this.min);\n }\n\n /**\n * Generates the list of time options based on the configured step interval and locale settings AM/PM.\n *\n * @returns {string[]} An array of time strings in 'HH:mm' format.\n */\n public get timeStampsList(): string[] {\n return generateTimeStamps(this.step, this.useLocale);\n }\n\n protected onOpen(): void {\n this.keyManager = new ActiveDescendantKeyManager<OptionControl<string>>(this.options).withHomeAndEnd();\n this.setActiveOptionBasedOnCurrentValue();\n }\n\n @HostListener('click', ['$event'])\n @HostListener('keydown', ['$event'])\n protected handleControllerEvent(event: KeyboardEvent) {\n if (this.readonlyController?.readonly) return;\n\n this.keyManager?.onKeydown(event);\n const activeOption = this.keyManager?.activeItem as TimepickerOptionComponent;\n activeOption && this.scrollToActiveOption(activeOption, { behavior: 'smooth' });\n\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.timeSelected(activeOption);\n }\n }\n\n protected handleDateFieldChanges(): void {\n this.dateField?.valueChange$.pipe(this.takeUntilDestroyed()).subscribe((time) => this.updateValue(time ?? null));\n }\n\n private setActiveOptionBasedOnCurrentValue(): void {\n const isSelected = this.options.find((option) => option.isSelected);\n if (isSelected) {\n this.activateOption(isSelected);\n return;\n }\n\n this.activateNearestTimeOption();\n }\n\n private activateOption(option: TimepickerOptionComponent): void {\n this.keyManager && this.keyManager.setActiveItem(option);\n this.scrollToActiveOption(option);\n }\n\n private activateNearestTimeOption(): void {\n if (!this.value) {\n const currentDate = new Date();\n const isNearest = this.findNearestTimeOption(currentDate);\n if (isNearest) {\n this.activateOption(isNearest);\n }\n }\n }\n\n private findNearestTimeOption(currentDate: Date): TimepickerOptionComponent | undefined {\n const availableTimeSlots = this.options.filter((option) => !option.disabled);\n const nearestTimeValue = this.timepickerService.findClosestDate(\n availableTimeSlots.map((option) => option.value) as string[],\n `${currentDate.getHours()}:${currentDate.getMinutes()}`,\n );\n\n return availableTimeSlots.find((option) => option.value === nearestTimeValue);\n }\n\n private updateInputValue(): void {\n if (this.value && this.dateField) {\n const time = this.timepickerService.getLocalizedTimeFormat(this.value, this.useLocale);\n this.dateField.nativeElementValue = time;\n }\n }\n\n private scrollToActiveOption(option: TimepickerOptionComponent, _opts: ScrollIntoViewOptions = {}): void {\n if (isFunction(option.element.nativeElement.scrollIntoView)) {\n option.element.nativeElement.scrollIntoView({ block: 'center', ..._opts });\n }\n }\n}\n","<div class=\"odx-timepicker__wrapper\">\n <input [value]=\"value\" odxTimepickerControl type=\"text\" />\n</div>\n\n<odx-action-group class=\"odx-no-margin\">\n <button\n #dropdownTrigger\n class=\"odx-timepicker__trigger\"\n odxButton\n size=\"small\"\n variant=\"ghost\"\n aria-label=\"Select time\"\n [odxDropdown]=\"timeList\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, position: 'bottom-start', enableFallback: false }\"\n [odxDropdownTriggerElement]=\"dropdownTrigger.element.nativeElement\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n (odxDropdownBeforeClose)=\"onTouched()\"\n (odxDropdownAfterOpen)=\"onOpen()\"\n >\n <odx-icon name=\"chevron-down\" />\n </button>\n</odx-action-group>\n\n<ng-template #timeList>\n <div class=\"odx-timepicker__option-list\" role=\"listbox\">\n <odx-timepicker-option\n [value]=\"time\"\n [disabled]=\"!inTimeRange(time)\"\n *ngFor=\"let time of timeStampsList; trackBy: trackByIndex\"\n (selected)=\"timeSelected($event)\"\n >{{ time }}</odx-timepicker-option\n >\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { TimepickerOptionComponent } from './components/timepicker-option.component';\nimport { TimepickerInputControlDirective } from './directives/timepicker-input-control.directive';\nimport { TimepickerComponent } from './timepicker.component';\n\nconst modules = [TimepickerComponent, TimepickerInputControlDirective, TimepickerOptionComponent];\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class TimepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
|
|
@@ -58,22 +58,32 @@ class ToastService {
|
|
|
58
58
|
this.defaultOptions = injectToastConfig();
|
|
59
59
|
/**
|
|
60
60
|
* Observable stream of active toasts.
|
|
61
|
+
*
|
|
62
|
+
* @emits {ToastRef[]} The current list of active toasts.
|
|
61
63
|
*/
|
|
62
64
|
this.toasts$ = this.queue.value$;
|
|
63
65
|
/**
|
|
64
66
|
* Observable that emits when any update occurs in the toast queue.
|
|
67
|
+
*
|
|
68
|
+
* @emits {ToastRef[]} The updated list of active toasts.
|
|
65
69
|
*/
|
|
66
70
|
this.onUpdate$ = this.queue.onUpdate$;
|
|
67
71
|
/**
|
|
68
72
|
* Observable that emits when a toast is added.
|
|
73
|
+
*
|
|
74
|
+
* @emits {ToastRef} The newly added toast.
|
|
69
75
|
*/
|
|
70
76
|
this.onToastAdd$ = this.queue.onAdd$;
|
|
71
77
|
/**
|
|
72
78
|
* Observable that emits when a toast is updated.
|
|
79
|
+
*
|
|
80
|
+
* @emits {ToastRef} The updated toast.
|
|
73
81
|
*/
|
|
74
82
|
this.onToastUpdate$ = this.queue.onUpdate$;
|
|
75
83
|
/**
|
|
76
84
|
* Observable that emits when a toast is removed.
|
|
85
|
+
*
|
|
86
|
+
* @emits {ToastRef} The removed toast.
|
|
77
87
|
*/
|
|
78
88
|
this.onToastRemove$ = this.queue.onRemove$;
|
|
79
89
|
/**
|
|
@@ -98,6 +108,7 @@ class ToastService {
|
|
|
98
108
|
/**
|
|
99
109
|
* Creates and queues a new toast based on the provided item and options.
|
|
100
110
|
* Merges given options with default configurations.
|
|
111
|
+
*
|
|
101
112
|
* @param {Toast} item The toast item to create.
|
|
102
113
|
* @param {Partial<ToastOptions>} options Optional additional options for the toast.
|
|
103
114
|
* @returns {ToastRef} The reference to the newly created toast.
|
|
@@ -117,6 +128,7 @@ class ToastService {
|
|
|
117
128
|
}
|
|
118
129
|
/**
|
|
119
130
|
* Dismisses a specific toast identified by a reference or ID.
|
|
131
|
+
*
|
|
120
132
|
* @param {ToastRef | ToastRef['id']} refOrId The reference or ID of the toast to dismiss.
|
|
121
133
|
* @returns {ToastRef | null} The reference to the dismissed toast, or null if not found.
|
|
122
134
|
*/
|
|
@@ -152,13 +164,36 @@ const ToastVariant = {
|
|
|
152
164
|
SUCCESS: 'success',
|
|
153
165
|
};
|
|
154
166
|
|
|
167
|
+
/**
|
|
168
|
+
* A component that represents a single toast notification. This component is responsible for displaying
|
|
169
|
+
* message content, handling toast actions, and managing the automatic dismissal of the toast based on a duration.
|
|
170
|
+
* It supports dynamic content for descriptions and can show an optional set of actions.
|
|
171
|
+
*/
|
|
155
172
|
let ToastItemComponent = class ToastItemComponent {
|
|
156
173
|
constructor() {
|
|
157
174
|
this.takeUntilDestroyed = untilDestroyed();
|
|
158
175
|
this.element = injectElement();
|
|
176
|
+
/**
|
|
177
|
+
* The variant of the toast which influences the icon and styling.
|
|
178
|
+
*
|
|
179
|
+
* @type {ToastVariant | null}
|
|
180
|
+
* @default ToastVariant.DEFAULT
|
|
181
|
+
*/
|
|
159
182
|
this.variant = ToastVariant.DEFAULT;
|
|
183
|
+
/**
|
|
184
|
+
* Emits an event when the toast is dismissed, either through action or automatically.
|
|
185
|
+
*
|
|
186
|
+
* @emits {void}
|
|
187
|
+
*/
|
|
160
188
|
this.dismiss = new EventEmitter();
|
|
161
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* Determines the icon to display based on the toast's variant.
|
|
192
|
+
* Returns a string representing the icon class.
|
|
193
|
+
*
|
|
194
|
+
* @returns {string} - The icon class name.
|
|
195
|
+
* @default 'info'
|
|
196
|
+
*/
|
|
162
197
|
get icon() {
|
|
163
198
|
switch (this.variant) {
|
|
164
199
|
case ToastVariant.WARNING:
|
|
@@ -217,6 +252,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
217
252
|
|
|
218
253
|
var ToastContainerComponent_1;
|
|
219
254
|
const TOAST_ANIMATION_DELAY = '125ms';
|
|
255
|
+
/**
|
|
256
|
+
* Represents a container component for displaying toast notifications. This component manages and arranges toast messages,
|
|
257
|
+
* handling animations for entering and leaving toasts. It ensures that only a limited number of toasts are shown at the same time,
|
|
258
|
+
* based on the `maxItems` input. The container listens for toast events from the `ToastService` to update its list of toasts dynamically.
|
|
259
|
+
*
|
|
260
|
+
* The component uses a group of animations to slide toasts in and out smoothly and also provides an output for when a toast is dismissed.
|
|
261
|
+
* It's designed to integrate with a single instance per application, ensuring no more than one toast container is initialized.
|
|
262
|
+
*/
|
|
220
263
|
let ToastContainerComponent = class ToastContainerComponent {
|
|
221
264
|
constructor() {
|
|
222
265
|
this.windowRef = inject(WindowRef);
|
|
@@ -226,7 +269,18 @@ let ToastContainerComponent = class ToastContainerComponent {
|
|
|
226
269
|
this.element = injectElement();
|
|
227
270
|
this.items$ = this.toastService.toasts$.pipe(map((refs) => refs.slice(0, this.maxItems)));
|
|
228
271
|
this.hiddenToasts$ = this.toastService.toasts$.pipe(map((refs) => Math.max(0, refs.length - this.maxItems)));
|
|
272
|
+
/**
|
|
273
|
+
* Maximum number of toasts that can be displayed at once.
|
|
274
|
+
*
|
|
275
|
+
* @type {number}
|
|
276
|
+
* @default 3
|
|
277
|
+
*/
|
|
229
278
|
this.maxItems = 3;
|
|
279
|
+
/**
|
|
280
|
+
* Emits an event when a toast is dismissed.
|
|
281
|
+
*
|
|
282
|
+
* @emits {ToastRef} - The toast reference that was dismissed.
|
|
283
|
+
*/
|
|
230
284
|
this.dismiss = this.toastService.onToastRemove$;
|
|
231
285
|
}
|
|
232
286
|
static { ToastContainerComponent_1 = this; }
|