@ardium-pl/ui 5.0.0-alpha.106
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -0
- package/fesm2022/ardium-pl-ui.mjs +18003 -0
- package/fesm2022/ardium-pl-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/_internal/boolean-component.d.ts +65 -0
- package/lib/_internal/clear-button/clear-button.component.d.ts +7 -0
- package/lib/_internal/clear-button/clear-button.module.d.ts +8 -0
- package/lib/_internal/disablable-component.d.ts +24 -0
- package/lib/_internal/focusable-component.d.ts +56 -0
- package/lib/_internal/form-field-component.d.ts +22 -0
- package/lib/_internal/item-storages/dropdown-item-storage.d.ts +79 -0
- package/lib/_internal/item-storages/simple-item-storage.d.ts +167 -0
- package/lib/_internal/item-storages/simplest-item-storage.d.ts +75 -0
- package/lib/_internal/models/pagination.model.d.ts +49 -0
- package/lib/_internal/models/queue.d.ts +21 -0
- package/lib/_internal/ngmodel-component.d.ts +58 -0
- package/lib/_internal/public-api.d.ts +3 -0
- package/lib/_internal/selectable-list-component.d.ts +76 -0
- package/lib/_internal/utils/context-to-inputs.d.ts +3 -0
- package/lib/_internal/utils/date.utils.d.ts +21 -0
- package/lib/badge/badge.defaults.d.ts +13 -0
- package/lib/badge/badge.directive.d.ts +27 -0
- package/lib/badge/badge.module.d.ts +8 -0
- package/lib/badge/badge.types.d.ts +17 -0
- package/lib/badge/index.d.ts +4 -0
- package/lib/breakpoints/breakpoint.service.d.ts +12 -0
- package/lib/breakpoints/breakpoint.utils.d.ts +7 -0
- package/lib/breakpoints/breakpoints.d.ts +13 -0
- package/lib/breakpoints/index.d.ts +2 -0
- package/lib/buttons/_button-base.d.ts +25 -0
- package/lib/buttons/_button-base.defaults.d.ts +17 -0
- package/lib/buttons/button/button.component.d.ts +22 -0
- package/lib/buttons/button/button.defaults.d.ts +10 -0
- package/lib/buttons/button/button.directive.d.ts +23 -0
- package/lib/buttons/button/button.module.d.ts +9 -0
- package/lib/buttons/button/index.d.ts +4 -0
- package/lib/buttons/button-group/button-group.component.d.ts +25 -0
- package/lib/buttons/button-group/button-group.defaults.d.ts +7 -0
- package/lib/buttons/button-group/button-group.module.d.ts +8 -0
- package/lib/buttons/button-group/index.d.ts +3 -0
- package/lib/buttons/fab/fab.component.d.ts +13 -0
- package/lib/buttons/fab/fab.defaults.d.ts +8 -0
- package/lib/buttons/fab/fab.module.d.ts +8 -0
- package/lib/buttons/fab/index.d.ts +3 -0
- package/lib/buttons/general-button.types.d.ts +57 -0
- package/lib/buttons/icon-button/icon-button.component.d.ts +20 -0
- package/lib/buttons/icon-button/icon-button.defaults.d.ts +7 -0
- package/lib/buttons/icon-button/icon-button.module.d.ts +8 -0
- package/lib/buttons/icon-button/index.d.ts +3 -0
- package/lib/calendar/abstract-calendar.d.ts +135 -0
- package/lib/calendar/calendar.component.d.ts +15 -0
- package/lib/calendar/calendar.defaults.d.ts +34 -0
- package/lib/calendar/calendar.directives.d.ts +51 -0
- package/lib/calendar/calendar.internal-directives.d.ts +33 -0
- package/lib/calendar/calendar.internal-types.d.ts +5 -0
- package/lib/calendar/calendar.module.d.ts +10 -0
- package/lib/calendar/calendar.types.d.ts +111 -0
- package/lib/calendar/index.d.ts +8 -0
- package/lib/calendar/range-calendar.component.d.ts +17 -0
- package/lib/calendar/range-calendar.directives.d.ts +51 -0
- package/lib/calendar/range-calendar.module.d.ts +10 -0
- package/lib/calendar/views/calendar-views.module.d.ts +13 -0
- package/lib/calendar/views/days-view/days-view.component.d.ts +86 -0
- package/lib/calendar/views/days-view/days-view.helpers.d.ts +20 -0
- package/lib/calendar/views/months-view/months-view.component.d.ts +73 -0
- package/lib/calendar/views/months-view/months-view.helpers.d.ts +3 -0
- package/lib/calendar/views/years-view/years-view.component.d.ts +71 -0
- package/lib/calendar/views/years-view/years-view.helpers.d.ts +3 -0
- package/lib/card/card.children.d.ts +44 -0
- package/lib/card/card.component.d.ts +15 -0
- package/lib/card/card.defaults.d.ts +10 -0
- package/lib/card/card.module.d.ts +9 -0
- package/lib/card/card.types.d.ts +10 -0
- package/lib/card/index.d.ts +5 -0
- package/lib/checkbox/checkbox.component.d.ts +38 -0
- package/lib/checkbox/checkbox.defaults.d.ts +12 -0
- package/lib/checkbox/checkbox.directives.d.ts +15 -0
- package/lib/checkbox/checkbox.internal-directives.d.ts +10 -0
- package/lib/checkbox/checkbox.module.d.ts +10 -0
- package/lib/checkbox/checkbox.types.d.ts +22 -0
- package/lib/checkbox/index.d.ts +5 -0
- package/lib/checkbox-list/checkbox-list.component.d.ts +55 -0
- package/lib/checkbox-list/checkbox-list.defaults.d.ts +20 -0
- package/lib/checkbox-list/checkbox-list.directives.d.ts +16 -0
- package/lib/checkbox-list/checkbox-list.module.d.ts +11 -0
- package/lib/checkbox-list/checkbox-list.types.d.ts +11 -0
- package/lib/checkbox-list/index.d.ts +5 -0
- package/lib/chip/chip.component.d.ts +20 -0
- package/lib/chip/chip.defaults.d.ts +15 -0
- package/lib/chip/chip.module.d.ts +11 -0
- package/lib/chip/deletable-chip/deletable-chip.component.d.ts +23 -0
- package/lib/chip/deletable-chip/deletable-chip.defaults.d.ts +8 -0
- package/lib/chip/index.d.ts +7 -0
- package/lib/chip/selectable-chip/selectable-chip.component.d.ts +25 -0
- package/lib/chip/selectable-chip/selectable-chip.defaults.d.ts +9 -0
- package/lib/dialog/dialog.component.d.ts +47 -0
- package/lib/dialog/dialog.defaults.d.ts +19 -0
- package/lib/dialog/dialog.directives.d.ts +15 -0
- package/lib/dialog/dialog.module.d.ts +11 -0
- package/lib/dialog/dialog.types.d.ts +38 -0
- package/lib/dialog/index.d.ts +5 -0
- package/lib/divider/divider.component.d.ts +6 -0
- package/lib/divider/divider.defaults.d.ts +11 -0
- package/lib/divider/divider.directive.d.ts +18 -0
- package/lib/divider/divider.module.d.ts +9 -0
- package/lib/divider/divider.types.d.ts +5 -0
- package/lib/divider/index.d.ts +5 -0
- package/lib/dropdown-panel/dropdown-panel.component.d.ts +36 -0
- package/lib/dropdown-panel/dropdown-panel.defaults.d.ts +10 -0
- package/lib/dropdown-panel/dropdown-panel.module.d.ts +8 -0
- package/lib/dropdown-panel/dropdown-panel.types.d.ts +12 -0
- package/lib/dropdown-panel/index.d.ts +4 -0
- package/lib/file-inputs/file-drop-area/file-drop-area.component.d.ts +26 -0
- package/lib/file-inputs/file-drop-area/file-drop-area.defaults.d.ts +10 -0
- package/lib/file-inputs/file-drop-area/file-drop-area.directives.d.ts +21 -0
- package/lib/file-inputs/file-drop-area/file-drop-area.module.d.ts +12 -0
- package/lib/file-inputs/file-drop-area/index.d.ts +4 -0
- package/lib/file-inputs/file-input/file-input.component.d.ts +38 -0
- package/lib/file-inputs/file-input/file-input.defaults.d.ts +17 -0
- package/lib/file-inputs/file-input/file-input.directives.d.ts +46 -0
- package/lib/file-inputs/file-input/file-input.module.d.ts +13 -0
- package/lib/file-inputs/file-input/index.d.ts +4 -0
- package/lib/file-inputs/file-input-base.d.ts +60 -0
- package/lib/file-inputs/file-input-base.defaults.d.ts +7 -0
- package/lib/file-inputs/file-input-types.d.ts +41 -0
- package/lib/form-field/auto-error/auto-error.component.d.ts +19 -0
- package/lib/form-field/auto-error/auto-error.provider.d.ts +7 -0
- package/lib/form-field/error/error.component.d.ts +6 -0
- package/lib/form-field/error/error.directive.d.ts +9 -0
- package/lib/form-field/form-field-base.d.ts +30 -0
- package/lib/form-field/form-field-child.token.d.ts +8 -0
- package/lib/form-field/form-field-native-inputs.d.ts +17 -0
- package/lib/form-field/form-field.component.d.ts +7 -0
- package/lib/form-field/form-field.defaults.d.ts +11 -0
- package/lib/form-field/form-field.module.d.ts +17 -0
- package/lib/form-field/hint/hint.component.d.ts +6 -0
- package/lib/form-field/hint/hint.directive.d.ts +9 -0
- package/lib/form-field/hint-error/hint-error.component.d.ts +6 -0
- package/lib/form-field/hint-error/hint-error.directive.d.ts +9 -0
- package/lib/form-field/horizontal-form-field.component.d.ts +7 -0
- package/lib/form-field/index.d.ts +15 -0
- package/lib/form-field/label/label.component.d.ts +12 -0
- package/lib/form-field-frame/form-field-frame.component.d.ts +43 -0
- package/lib/form-field-frame/form-field-frame.defaults.d.ts +13 -0
- package/lib/form-field-frame/form-field-frame.directives.d.ts +15 -0
- package/lib/form-field-frame/form-field-frame.module.d.ts +9 -0
- package/lib/form-field-frame/form-field-frame.types.d.ts +10 -0
- package/lib/form-field-frame/index.d.ts +5 -0
- package/lib/grid/grid.component.d.ts +63 -0
- package/lib/grid/grid.defaults.d.ts +16 -0
- package/lib/grid/grid.module.d.ts +7 -0
- package/lib/grid/grid.types.d.ts +38 -0
- package/lib/grid/grid.utils.d.ts +20 -0
- package/lib/grid/index.d.ts +4 -0
- package/lib/icon/icon.component.d.ts +28 -0
- package/lib/icon/icon.defaults.d.ts +11 -0
- package/lib/icon/icon.module.d.ts +9 -0
- package/lib/icon/icon.pipe.d.ts +7 -0
- package/lib/icon/index.d.ts +4 -0
- package/lib/inputs/_simple-input-base.d.ts +67 -0
- package/lib/inputs/autocomplete-input/autocomplete-input.component.d.ts +69 -0
- package/lib/inputs/autocomplete-input/autocomplete-input.defaults.d.ts +18 -0
- package/lib/inputs/autocomplete-input/autocomplete-input.directives.d.ts +34 -0
- package/lib/inputs/autocomplete-input/autocomplete-input.module.d.ts +13 -0
- package/lib/inputs/autocomplete-input/index.d.ts +4 -0
- package/lib/inputs/date-input/abstract-date-input.d.ts +109 -0
- package/lib/inputs/date-input/date-input.component.d.ts +52 -0
- package/lib/inputs/date-input/date-input.defaults.d.ts +54 -0
- package/lib/inputs/date-input/date-input.directives.d.ts +83 -0
- package/lib/inputs/date-input/date-input.module.d.ts +17 -0
- package/lib/inputs/date-input/date-input.serializers.d.ts +5 -0
- package/lib/inputs/date-input/date-input.types.d.ts +17 -0
- package/lib/inputs/date-input/date-range-input.component.d.ts +36 -0
- package/lib/inputs/date-input/date-range-input.directives.d.ts +83 -0
- package/lib/inputs/date-input/date-range-input.module.d.ts +17 -0
- package/lib/inputs/date-input/index.d.ts +11 -0
- package/lib/inputs/date-input/multipage-date-range-input.component.d.ts +50 -0
- package/lib/inputs/date-input/multipage-date-range-input.directives.d.ts +83 -0
- package/lib/inputs/date-input/multipage-date-range-input.module.d.ts +17 -0
- package/lib/inputs/digit-input/digit-input.component.d.ts +62 -0
- package/lib/inputs/digit-input/digit-input.defaults.d.ts +16 -0
- package/lib/inputs/digit-input/digit-input.model.d.ts +27 -0
- package/lib/inputs/digit-input/digit-input.module.d.ts +9 -0
- package/lib/inputs/digit-input/digit-input.types.d.ts +30 -0
- package/lib/inputs/digit-input/digit-input.utils.d.ts +20 -0
- package/lib/inputs/digit-input/index.d.ts +4 -0
- package/lib/inputs/hex-input/hex-input.component.d.ts +57 -0
- package/lib/inputs/hex-input/hex-input.defaults.d.ts +22 -0
- package/lib/inputs/hex-input/hex-input.directives.d.ts +21 -0
- package/lib/inputs/hex-input/hex-input.model.d.ts +26 -0
- package/lib/inputs/hex-input/hex-input.module.d.ts +11 -0
- package/lib/inputs/hex-input/index.d.ts +4 -0
- package/lib/inputs/input/index.d.ts +4 -0
- package/lib/inputs/input/input.component.d.ts +15 -0
- package/lib/inputs/input/input.defaults.d.ts +9 -0
- package/lib/inputs/input/input.directives.d.ts +21 -0
- package/lib/inputs/input/input.module.d.ts +11 -0
- package/lib/inputs/input-transformers.d.ts +24 -0
- package/lib/inputs/input-types.d.ts +15 -0
- package/lib/inputs/input-utils.d.ts +66 -0
- package/lib/inputs/number-input/index.d.ts +4 -0
- package/lib/inputs/number-input/number-input.component.d.ts +78 -0
- package/lib/inputs/number-input/number-input.defaults.d.ts +28 -0
- package/lib/inputs/number-input/number-input.directives.d.ts +21 -0
- package/lib/inputs/number-input/number-input.module.d.ts +11 -0
- package/lib/inputs/number-input/number-input.types.d.ts +6 -0
- package/lib/inputs/password-input/index.d.ts +5 -0
- package/lib/inputs/password-input/password-input.component.d.ts +48 -0
- package/lib/inputs/password-input/password-input.defaults.d.ts +20 -0
- package/lib/inputs/password-input/password-input.directives.d.ts +28 -0
- package/lib/inputs/password-input/password-input.module.d.ts +11 -0
- package/lib/inputs/password-input/password-input.types.d.ts +3 -0
- package/lib/kbd/index.d.ts +5 -0
- package/lib/kbd/kbd.component.d.ts +15 -0
- package/lib/kbd/kbd.defaults.d.ts +8 -0
- package/lib/kbd/kbd.directive.d.ts +13 -0
- package/lib/kbd/kbd.module.d.ts +10 -0
- package/lib/kbd/kbd.pipe.d.ts +8 -0
- package/lib/kbd-shortcut/index.d.ts +3 -0
- package/lib/kbd-shortcut/kbd-shortcut.component.d.ts +18 -0
- package/lib/kbd-shortcut/kbd-shortcut.defaults.d.ts +8 -0
- package/lib/kbd-shortcut/kbd-shortcut.module.d.ts +9 -0
- package/lib/modal/index.d.ts +5 -0
- package/lib/modal/modal.component.d.ts +39 -0
- package/lib/modal/modal.defaults.d.ts +18 -0
- package/lib/modal/modal.directives.d.ts +8 -0
- package/lib/modal/modal.module.d.ts +12 -0
- package/lib/modal/modal.types.d.ts +3 -0
- package/lib/option/index.d.ts +2 -0
- package/lib/option/option.component.d.ts +25 -0
- package/lib/option/option.module.d.ts +8 -0
- package/lib/progress-bar/index.d.ts +4 -0
- package/lib/progress-bar/progress-bar.component.d.ts +18 -0
- package/lib/progress-bar/progress-bar.defaults.d.ts +13 -0
- package/lib/progress-bar/progress-bar.module.d.ts +8 -0
- package/lib/progress-bar/progress-bar.types.d.ts +22 -0
- package/lib/progress-circle/index.d.ts +5 -0
- package/lib/progress-circle/progress-circle.component.d.ts +25 -0
- package/lib/progress-circle/progress-circle.defaults.d.ts +15 -0
- package/lib/progress-circle/progress-circle.directive.d.ts +9 -0
- package/lib/progress-circle/progress-circle.module.d.ts +9 -0
- package/lib/progress-circle/progress-circle.types.d.ts +20 -0
- package/lib/radio/index.d.ts +4 -0
- package/lib/radio/radio/radio.component.d.ts +68 -0
- package/lib/radio/radio/radio.defaults.d.ts +8 -0
- package/lib/radio/radio-group.component.d.ts +40 -0
- package/lib/radio/radio.module.d.ts +9 -0
- package/lib/search-functions.d.ts +10 -0
- package/lib/segment/index.d.ts +5 -0
- package/lib/segment/segment.component.d.ts +40 -0
- package/lib/segment/segment.defaults.d.ts +18 -0
- package/lib/segment/segment.directives.d.ts +8 -0
- package/lib/segment/segment.module.d.ts +9 -0
- package/lib/segment/segment.types.d.ts +17 -0
- package/lib/select/index.d.ts +5 -0
- package/lib/select/select.component.d.ts +230 -0
- package/lib/select/select.defaults.d.ts +70 -0
- package/lib/select/select.directive.d.ts +95 -0
- package/lib/select/select.module.d.ts +14 -0
- package/lib/select/select.types.d.ts +60 -0
- package/lib/select/select.utils.d.ts +2 -0
- package/lib/slide-toggle/index.d.ts +4 -0
- package/lib/slide-toggle/slide-toggle.component.d.ts +21 -0
- package/lib/slide-toggle/slide-toggle.defaults.d.ts +14 -0
- package/lib/slide-toggle/slide-toggle.module.d.ts +8 -0
- package/lib/slide-toggle/slide-toggle.types.d.ts +5 -0
- package/lib/slider/abstract-slider.d.ts +96 -0
- package/lib/slider/index.d.ts +8 -0
- package/lib/slider/range-slider/range-slider.component.d.ts +37 -0
- package/lib/slider/range-slider/range-slider.module.d.ts +8 -0
- package/lib/slider/range-slider/range-slider.types.d.ts +6 -0
- package/lib/slider/slider.component.d.ts +24 -0
- package/lib/slider/slider.defaults.d.ts +6 -0
- package/lib/slider/slider.directive.d.ts +9 -0
- package/lib/slider/slider.module.d.ts +10 -0
- package/lib/slider/slider.types.d.ts +28 -0
- package/lib/snackbar/index.d.ts +4 -0
- package/lib/snackbar/snackbar-ref.d.ts +69 -0
- package/lib/snackbar/snackbar.component.d.ts +16 -0
- package/lib/snackbar/snackbar.service.d.ts +57 -0
- package/lib/snackbar/snackbar.token.d.ts +5 -0
- package/lib/snackbar/snackbar.types.d.ts +84 -0
- package/lib/spinner/index.d.ts +3 -0
- package/lib/spinner/spinner.component.d.ts +9 -0
- package/lib/spinner/spinner.defaults.d.ts +7 -0
- package/lib/spinner/spinner.module.d.ts +8 -0
- package/lib/stack/index.d.ts +3 -0
- package/lib/stack/stack.component.d.ts +26 -0
- package/lib/stack/stack.defaults.d.ts +14 -0
- package/lib/stack/stack.module.d.ts +7 -0
- package/lib/star/index.d.ts +5 -0
- package/lib/star/rating-display/index.d.ts +5 -0
- package/lib/star/rating-display/rating-display.component.d.ts +18 -0
- package/lib/star/rating-display/rating-display.defaults.d.ts +9 -0
- package/lib/star/rating-display/rating-display.directives.d.ts +9 -0
- package/lib/star/rating-display/rating-display.module.d.ts +10 -0
- package/lib/star/rating-display/rating-display.types.d.ts +8 -0
- package/lib/star/rating-input/index.d.ts +5 -0
- package/lib/star/rating-input/rating-input.component.d.ts +48 -0
- package/lib/star/rating-input/rating-input.defaults.d.ts +9 -0
- package/lib/star/rating-input/rating-input.directives.d.ts +9 -0
- package/lib/star/rating-input/rating-input.module.d.ts +10 -0
- package/lib/star/rating-input/rating-input.types.d.ts +12 -0
- package/lib/star/star-button/index.d.ts +5 -0
- package/lib/star/star-button/star-button.component.d.ts +26 -0
- package/lib/star/star-button/star-button.defaults.d.ts +10 -0
- package/lib/star/star-button/star-button.directives.d.ts +9 -0
- package/lib/star/star-button/star-button.module.d.ts +10 -0
- package/lib/star/star-button/star-button.types.d.ts +7 -0
- package/lib/star/star.component.d.ts +15 -0
- package/lib/star/star.defaults.d.ts +8 -0
- package/lib/star/star.directives.d.ts +9 -0
- package/lib/star/star.module.d.ts +10 -0
- package/lib/star/star.types.d.ts +33 -0
- package/lib/tabber/index.d.ts +6 -0
- package/lib/tabber/tab/tab.component.d.ts +27 -0
- package/lib/tabber/tabber.component.d.ts +44 -0
- package/lib/tabber/tabber.defaults.d.ts +14 -0
- package/lib/tabber/tabber.directives.d.ts +9 -0
- package/lib/tabber/tabber.module.d.ts +10 -0
- package/lib/tabber/tabber.types.d.ts +5 -0
- package/lib/table/index.d.ts +5 -0
- package/lib/table/table-item-storage.d.ts +273 -0
- package/lib/table/table.component.d.ts +111 -0
- package/lib/table/table.defaults.d.ts +50 -0
- package/lib/table/table.directives.d.ts +36 -0
- package/lib/table/table.module.d.ts +13 -0
- package/lib/table/table.types.d.ts +83 -0
- package/lib/table/utils.d.ts +4 -0
- package/lib/table-from-csv/index.d.ts +3 -0
- package/lib/table-from-csv/table-from-csv.component.d.ts +55 -0
- package/lib/table-from-csv/table-from-csv.defaults.d.ts +7 -0
- package/lib/table-from-csv/table-from-csv.module.d.ts +9 -0
- package/lib/table-pagination/index.d.ts +4 -0
- package/lib/table-pagination/table-pagination.component.d.ts +40 -0
- package/lib/table-pagination/table-pagination.defaults.d.ts +20 -0
- package/lib/table-pagination/table-pagination.module.d.ts +11 -0
- package/lib/table-pagination/table-pagination.types.d.ts +9 -0
- package/lib/text-list/index.d.ts +3 -0
- package/lib/text-list/text-list.component.d.ts +9 -0
- package/lib/text-list/text-list.module.d.ts +9 -0
- package/lib/text-list/text-list.pipe.d.ts +7 -0
- package/lib/types/alignment.types.d.ts +17 -0
- package/lib/types/button.types.d.ts +6 -0
- package/lib/types/colors.types.d.ts +71 -0
- package/lib/types/item-storage.types.d.ts +50 -0
- package/lib/types/theming.types.d.ts +62 -0
- package/lib/types/utility.types.d.ts +16 -0
- package/package.json +39 -0
- package/prebuilt-themes/default/badge.css +237 -0
- package/prebuilt-themes/default/badge.css.map +1 -0
- package/prebuilt-themes/default/buttons/button-group.css +19 -0
- package/prebuilt-themes/default/buttons/button-group.css.map +1 -0
- package/prebuilt-themes/default/buttons/button.css +339 -0
- package/prebuilt-themes/default/buttons/button.css.map +1 -0
- package/prebuilt-themes/default/buttons/fab.css +330 -0
- package/prebuilt-themes/default/buttons/fab.css.map +1 -0
- package/prebuilt-themes/default/buttons/icon-button.css +304 -0
- package/prebuilt-themes/default/buttons/icon-button.css.map +1 -0
- package/prebuilt-themes/default/calendar.css +393 -0
- package/prebuilt-themes/default/calendar.css.map +1 -0
- package/prebuilt-themes/default/card.css +154 -0
- package/prebuilt-themes/default/card.css.map +1 -0
- package/prebuilt-themes/default/checkbox-list.css +101 -0
- package/prebuilt-themes/default/checkbox-list.css.map +1 -0
- package/prebuilt-themes/default/checkbox.css +383 -0
- package/prebuilt-themes/default/checkbox.css.map +1 -0
- package/prebuilt-themes/default/chips.css +421 -0
- package/prebuilt-themes/default/chips.css.map +1 -0
- package/prebuilt-themes/default/color-display.css +37 -0
- package/prebuilt-themes/default/color-display.css.map +1 -0
- package/prebuilt-themes/default/color-picker.css +108 -0
- package/prebuilt-themes/default/color-picker.css.map +1 -0
- package/prebuilt-themes/default/core.css +112 -0
- package/prebuilt-themes/default/core.css.map +1 -0
- package/prebuilt-themes/default/dialog.css +22 -0
- package/prebuilt-themes/default/dialog.css.map +1 -0
- package/prebuilt-themes/default/divider.css +87 -0
- package/prebuilt-themes/default/divider.css.map +1 -0
- package/prebuilt-themes/default/dropdown-panel.css +45 -0
- package/prebuilt-themes/default/dropdown-panel.css.map +1 -0
- package/prebuilt-themes/default/file-drop-area.css +332 -0
- package/prebuilt-themes/default/file-drop-area.css.map +1 -0
- package/prebuilt-themes/default/form-field-frame.css +105 -0
- package/prebuilt-themes/default/form-field-frame.css.map +1 -0
- package/prebuilt-themes/default/form-field.css +153 -0
- package/prebuilt-themes/default/form-field.css.map +1 -0
- package/prebuilt-themes/default/inputs/autocomplete-input.css +198 -0
- package/prebuilt-themes/default/inputs/autocomplete-input.css.map +1 -0
- package/prebuilt-themes/default/inputs/color-input.css +108 -0
- package/prebuilt-themes/default/inputs/color-input.css.map +1 -0
- package/prebuilt-themes/default/inputs/date-input.css +152 -0
- package/prebuilt-themes/default/inputs/date-input.css.map +1 -0
- package/prebuilt-themes/default/inputs/digit-input.css +129 -0
- package/prebuilt-themes/default/inputs/digit-input.css.map +1 -0
- package/prebuilt-themes/default/inputs/file-input.css +399 -0
- package/prebuilt-themes/default/inputs/file-input.css.map +1 -0
- package/prebuilt-themes/default/inputs/hex-input.css +165 -0
- package/prebuilt-themes/default/inputs/hex-input.css.map +1 -0
- package/prebuilt-themes/default/inputs/input.css +152 -0
- package/prebuilt-themes/default/inputs/input.css.map +1 -0
- package/prebuilt-themes/default/inputs/number-input.css +230 -0
- package/prebuilt-themes/default/inputs/number-input.css.map +1 -0
- package/prebuilt-themes/default/inputs/password-input.css +132 -0
- package/prebuilt-themes/default/inputs/password-input.css.map +1 -0
- package/prebuilt-themes/default/kbd-shortcut.css +17 -0
- package/prebuilt-themes/default/kbd-shortcut.css.map +1 -0
- package/prebuilt-themes/default/kbd.css +29 -0
- package/prebuilt-themes/default/kbd.css.map +1 -0
- package/prebuilt-themes/default/modal.css +99 -0
- package/prebuilt-themes/default/modal.css.map +1 -0
- package/prebuilt-themes/default/progress-bar.css +286 -0
- package/prebuilt-themes/default/progress-bar.css.map +1 -0
- package/prebuilt-themes/default/progress-circle.css +181 -0
- package/prebuilt-themes/default/progress-circle.css.map +1 -0
- package/prebuilt-themes/default/radio.css +261 -0
- package/prebuilt-themes/default/radio.css.map +1 -0
- package/prebuilt-themes/default/segment.css +441 -0
- package/prebuilt-themes/default/segment.css.map +1 -0
- package/prebuilt-themes/default/select.css +322 -0
- package/prebuilt-themes/default/select.css.map +1 -0
- package/prebuilt-themes/default/slide-toggle.css +322 -0
- package/prebuilt-themes/default/slide-toggle.css.map +1 -0
- package/prebuilt-themes/default/slider.css +428 -0
- package/prebuilt-themes/default/slider.css.map +1 -0
- package/prebuilt-themes/default/snackbar.css +202 -0
- package/prebuilt-themes/default/snackbar.css.map +1 -0
- package/prebuilt-themes/default/spinner.css +164 -0
- package/prebuilt-themes/default/spinner.css.map +1 -0
- package/prebuilt-themes/default/stars.css +284 -0
- package/prebuilt-themes/default/stars.css.map +1 -0
- package/prebuilt-themes/default/tabber.css +253 -0
- package/prebuilt-themes/default/tabber.css.map +1 -0
- package/prebuilt-themes/default/table-pagination.css +60 -0
- package/prebuilt-themes/default/table-pagination.css.map +1 -0
- package/prebuilt-themes/default/table.css +467 -0
- package/prebuilt-themes/default/table.css.map +1 -0
- package/public-api.d.ts +59 -0
- package/themes/_variables.scss +124 -0
- package/themes/default/_clear-button.scss +78 -0
- package/themes/default/_coloring.scss +144 -0
- package/themes/default/_dropdown-arrow.scss +12 -0
- package/themes/default/_mixins.scss +91 -0
- package/themes/default/badge.scss +129 -0
- package/themes/default/buttons/_button-mixins.scss +152 -0
- package/themes/default/buttons/button-group.scss +19 -0
- package/themes/default/buttons/button.scss +119 -0
- package/themes/default/buttons/fab.scss +112 -0
- package/themes/default/buttons/icon-button.scss +91 -0
- package/themes/default/calendar.scss +298 -0
- package/themes/default/card.scss +181 -0
- package/themes/default/checkbox-list.scss +125 -0
- package/themes/default/checkbox.scss +123 -0
- package/themes/default/chips.scss +269 -0
- package/themes/default/color-display.scss +53 -0
- package/themes/default/color-picker.scss +113 -0
- package/themes/default/core.scss +129 -0
- package/themes/default/dialog.scss +25 -0
- package/themes/default/divider.scss +115 -0
- package/themes/default/dropdown-panel.scss +60 -0
- package/themes/default/file-drop-area.scss +221 -0
- package/themes/default/form-field-frame.scss +91 -0
- package/themes/default/form-field.scss +161 -0
- package/themes/default/inputs/_shared.scss +99 -0
- package/themes/default/inputs/autocomplete-input.scss +119 -0
- package/themes/default/inputs/color-input.scss +48 -0
- package/themes/default/inputs/date-input.scss +106 -0
- package/themes/default/inputs/digit-input.scss +138 -0
- package/themes/default/inputs/file-input.scss +187 -0
- package/themes/default/inputs/hex-input.scss +81 -0
- package/themes/default/inputs/input.scss +63 -0
- package/themes/default/inputs/number-input.scss +214 -0
- package/themes/default/inputs/password-input.scss +116 -0
- package/themes/default/kbd-shortcut.scss +21 -0
- package/themes/default/kbd.scss +40 -0
- package/themes/default/modal.scss +130 -0
- package/themes/default/progress-bar.scss +181 -0
- package/themes/default/progress-circle.scss +64 -0
- package/themes/default/radio.scss +154 -0
- package/themes/default/segment.scss +383 -0
- package/themes/default/select.scss +327 -0
- package/themes/default/slide-toggle.scss +228 -0
- package/themes/default/slider.scss +287 -0
- package/themes/default/snackbar.scss +78 -0
- package/themes/default/spinner.scss +31 -0
- package/themes/default/stars.scss +133 -0
- package/themes/default/tabber.scss +131 -0
- package/themes/default/table-pagination.scss +72 -0
- package/themes/default/table.scss +459 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ardium-pl-ui.mjs","sources":["../../../projects/ui/src/lib/_internal/item-storages/simplest-item-storage.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.types.ts","../../../projects/ui/src/lib/form-field/form-field-child.token.ts","../../../projects/ui/src/lib/types/theming.types.ts","../../../projects/ui/src/lib/_internal/disablable-component.ts","../../../projects/ui/src/lib/_internal/focusable-component.ts","../../../projects/ui/src/lib/_internal/ngmodel-component.ts","../../../projects/ui/src/lib/_internal/form-field-component.ts","../../../projects/ui/src/lib/types/alignment.types.ts","../../../projects/ui/src/lib/inputs/input-transformers.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.types.ts","../../../projects/ui/src/lib/inputs/input-utils.ts","../../../projects/ui/src/lib/inputs/_simple-input-base.ts","../../../projects/ui/src/lib/inputs/autocomplete-input/autocomplete-input.defaults.ts","../../../projects/ui/src/lib/inputs/autocomplete-input/autocomplete-input.directives.ts","../../../projects/ui/src/lib/_internal/utils/context-to-inputs.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.defaults.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.directives.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.component.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.component.html","../../../projects/ui/src/lib/_internal/clear-button/clear-button.component.ts","../../../projects/ui/src/lib/_internal/clear-button/clear-button.component.html","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.defaults.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.component.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.component.html","../../../projects/ui/src/lib/inputs/autocomplete-input/autocomplete-input.component.ts","../../../projects/ui/src/lib/inputs/autocomplete-input/autocomplete-input.component.html","../../../projects/ui/src/lib/_internal/clear-button/clear-button.module.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.module.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.module.ts","../../../projects/ui/src/lib/inputs/autocomplete-input/autocomplete-input.module.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.types.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.defaults.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.utils.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.model.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.component.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.component.html","../../../projects/ui/src/lib/inputs/digit-input/digit-input.module.ts","../../../projects/ui/src/lib/inputs/input/input.defaults.ts","../../../projects/ui/src/lib/inputs/input/input.directives.ts","../../../projects/ui/src/lib/inputs/input/input.component.ts","../../../projects/ui/src/lib/inputs/input/input.component.html","../../../projects/ui/src/lib/inputs/input/input.module.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.defaults.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.directives.ts","../../../projects/ui/src/lib/icon/icon.defaults.ts","../../../projects/ui/src/lib/icon/icon.pipe.ts","../../../projects/ui/src/lib/icon/icon.component.ts","../../../projects/ui/src/lib/icon/icon.component.html","../../../projects/ui/src/lib/inputs/password-input/password-input.component.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.component.html","../../../projects/ui/src/lib/icon/icon.module.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.module.ts","../../../projects/ui/src/lib/option/option.component.ts","../../../projects/ui/src/lib/option/option.module.ts","../../../projects/ui/src/lib/_internal/item-storages/dropdown-item-storage.ts","../../../projects/ui/src/lib/search-functions.ts","../../../projects/ui/src/lib/types/item-storage.types.ts","../../../projects/ui/src/lib/select/select.defaults.ts","../../../projects/ui/src/lib/select/select.directive.ts","../../../projects/ui/src/lib/select/select.utils.ts","../../../projects/ui/src/lib/types/colors.types.ts","../../../projects/ui/src/lib/chip/chip.defaults.ts","../../../projects/ui/src/lib/chip/deletable-chip/deletable-chip.defaults.ts","../../../projects/ui/src/lib/chip/deletable-chip/deletable-chip.component.ts","../../../projects/ui/src/lib/chip/deletable-chip/deletable-chip.component.html","../../../projects/ui/src/lib/select/select.component.ts","../../../projects/ui/src/lib/select/select.component.html","../../../projects/ui/src/lib/chip/chip.component.ts","../../../projects/ui/src/lib/chip/chip.component.html","../../../projects/ui/src/lib/_internal/boolean-component.ts","../../../projects/ui/src/lib/chip/selectable-chip/selectable-chip.defaults.ts","../../../projects/ui/src/lib/chip/selectable-chip/selectable-chip.component.ts","../../../projects/ui/src/lib/chip/selectable-chip/selectable-chip.component.html","../../../projects/ui/src/lib/chip/chip.module.ts","../../../projects/ui/src/lib/select/select.module.ts","../../../projects/ui/src/lib/file-inputs/file-input-types.ts","../../../projects/ui/src/lib/file-inputs/file-input-base.ts","../../../projects/ui/src/lib/file-inputs/file-input-base.defaults.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.defaults.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.directives.ts","../../../projects/ui/src/lib/buttons/_button-base.ts","../../../projects/ui/src/lib/types/button.types.ts","../../../projects/ui/src/lib/buttons/general-button.types.ts","../../../projects/ui/src/lib/buttons/_button-base.defaults.ts","../../../projects/ui/src/lib/buttons/button/button.defaults.ts","../../../projects/ui/src/lib/buttons/button/button.directive.ts","../../../projects/ui/src/lib/buttons/button/button.component.ts","../../../projects/ui/src/lib/buttons/button/button.component.html","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.component.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.component.html","../../../projects/ui/src/lib/buttons/button/button.module.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.module.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.defaults.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.directives.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.component.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.component.html","../../../projects/ui/src/lib/file-inputs/file-input/file-input.module.ts","../../../projects/ui/src/lib/_internal/utils/date.utils.ts","../../../projects/ui/src/lib/inputs/date-input/date-input.directives.ts","../../../projects/ui/src/lib/inputs/date-input/abstract-date-input.ts","../../../projects/ui/src/lib/calendar/calendar.types.ts","../../../projects/ui/src/lib/calendar/calendar.directives.ts","../../../projects/ui/src/lib/calendar/calendar.internal-directives.ts","../../../projects/ui/src/lib/calendar/views/months-view/months-view.helpers.ts","../../../projects/ui/src/lib/calendar/views/days-view/days-view.helpers.ts","../../../projects/ui/src/lib/buttons/icon-button/icon-button.defaults.ts","../../../projects/ui/src/lib/buttons/icon-button/icon-button.component.ts","../../../projects/ui/src/lib/buttons/icon-button/icon-button.component.html","../../../projects/ui/src/lib/calendar/views/days-view/days-view.component.ts","../../../projects/ui/src/lib/calendar/views/days-view/days-view.component.html","../../../projects/ui/src/lib/calendar/views/years-view/years-view.helpers.ts","../../../projects/ui/src/lib/calendar/views/months-view/months-view.component.ts","../../../projects/ui/src/lib/calendar/views/months-view/months-view.component.html","../../../projects/ui/src/lib/calendar/views/years-view/years-view.component.ts","../../../projects/ui/src/lib/calendar/views/years-view/years-view.component.html","../../../projects/ui/src/lib/calendar/abstract-calendar.ts","../../../projects/ui/src/lib/calendar/calendar.defaults.ts","../../../projects/ui/src/lib/calendar/calendar.component.ts","../../../projects/ui/src/lib/calendar/calendar.component.html","../../../projects/ui/src/lib/buttons/icon-button/icon-button.module.ts","../../../projects/ui/src/lib/calendar/views/calendar-views.module.ts","../../../projects/ui/src/lib/calendar/calendar.module.ts","../../../projects/ui/src/lib/calendar/range-calendar.component.ts","../../../projects/ui/src/lib/calendar/range-calendar.directives.ts","../../../projects/ui/src/lib/calendar/range-calendar.module.ts","../../../projects/ui/src/lib/inputs/date-input/date-input.serializers.ts","../../../projects/ui/src/lib/inputs/date-input/date-input.types.ts","../../../projects/ui/src/lib/inputs/date-input/date-input.defaults.ts","../../../projects/ui/src/lib/inputs/date-input/date-input.component.ts","../../../projects/ui/src/lib/inputs/date-input/date-input.component.html","../../../projects/ui/src/lib/inputs/date-input/date-input.module.ts","../../../projects/ui/src/lib/inputs/date-input/date-range-input.directives.ts","../../../projects/ui/src/lib/inputs/date-input/date-range-input.component.ts","../../../projects/ui/src/lib/inputs/date-input/date-range-input.component.html","../../../projects/ui/src/lib/inputs/date-input/date-range-input.module.ts","../../../projects/ui/src/lib/inputs/date-input/multipage-date-range-input.directives.ts","../../../projects/ui/src/lib/inputs/date-input/multipage-date-range-input.component.ts","../../../projects/ui/src/lib/inputs/date-input/multipage-date-range-input.component.html","../../../projects/ui/src/lib/inputs/date-input/multipage-date-range-input.module.ts","../../../projects/ui/src/lib/inputs/input-types.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.defaults.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.directives.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.model.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.component.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.component.html","../../../projects/ui/src/lib/inputs/hex-input/hex-input.module.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.defaults.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.directives.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.component.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.component.html","../../../projects/ui/src/lib/inputs/number-input/number-input.module.ts","../../../projects/ui/src/lib/buttons/button-group/button-group.defaults.ts","../../../projects/ui/src/lib/buttons/button-group/button-group.component.ts","../../../projects/ui/src/lib/buttons/button-group/button-group.component.html","../../../projects/ui/src/lib/buttons/button-group/button-group.module.ts","../../../projects/ui/src/lib/buttons/fab/fab.defaults.ts","../../../projects/ui/src/lib/buttons/fab/fab.component.ts","../../../projects/ui/src/lib/buttons/fab/fab.component.html","../../../projects/ui/src/lib/buttons/fab/fab.module.ts","../../../projects/ui/src/lib/checkbox/checkbox.defaults.ts","../../../projects/ui/src/lib/checkbox/checkbox.directives.ts","../../../projects/ui/src/lib/checkbox/checkbox.internal-directives.ts","../../../projects/ui/src/lib/checkbox/checkbox.types.ts","../../../projects/ui/src/lib/checkbox/checkbox.component.ts","../../../projects/ui/src/lib/checkbox/checkbox.component.html","../../../projects/ui/src/lib/checkbox/checkbox.module.ts","../../../projects/ui/src/lib/radio/radio/radio.defaults.ts","../../../projects/ui/src/lib/radio/radio/radio.component.ts","../../../projects/ui/src/lib/radio/radio/radio.component.html","../../../projects/ui/src/lib/radio/radio-group.component.ts","../../../projects/ui/src/lib/radio/radio.module.ts","../../../projects/ui/src/lib/_internal/item-storages/simple-item-storage.ts","../../../projects/ui/src/lib/_internal/selectable-list-component.ts","../../../projects/ui/src/lib/segment/segment.types.ts","../../../projects/ui/src/lib/segment/segment.defaults.ts","../../../projects/ui/src/lib/segment/segment.directives.ts","../../../projects/ui/src/lib/segment/segment.component.ts","../../../projects/ui/src/lib/segment/segment.component.html","../../../projects/ui/src/lib/segment/segment.module.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.types.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.defaults.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.component.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.component.html","../../../projects/ui/src/lib/slide-toggle/slide-toggle.module.ts","../../../projects/ui/src/lib/slider/range-slider/range-slider.types.ts","../../../projects/ui/src/lib/slider/slider.directive.ts","../../../projects/ui/src/lib/slider/slider.types.ts","../../../projects/ui/src/lib/slider/abstract-slider.ts","../../../projects/ui/src/lib/slider/slider.defaults.ts","../../../projects/ui/src/lib/slider/range-slider/range-slider.component.ts","../../../projects/ui/src/lib/slider/range-slider/range-slider.component.html","../../../projects/ui/src/lib/slider/range-slider/range-slider.module.ts","../../../projects/ui/src/lib/slider/slider.component.ts","../../../projects/ui/src/lib/slider/slider.component.html","../../../projects/ui/src/lib/slider/slider.module.ts","../../../projects/ui/src/lib/star/star.types.ts","../../../projects/ui/src/lib/star/rating-input/rating-input.defaults.ts","../../../projects/ui/src/lib/star/rating-input/rating-input.directives.ts","../../../projects/ui/src/lib/types/utility.types.ts","../../../projects/ui/src/lib/star/star-button/star-button.defaults.ts","../../../projects/ui/src/lib/star/star-button/star-button.directives.ts","../../../projects/ui/src/lib/star/star.defaults.ts","../../../projects/ui/src/lib/star/star.directives.ts","../../../projects/ui/src/lib/star/star.component.ts","../../../projects/ui/src/lib/star/star.component.html","../../../projects/ui/src/lib/star/star-button/star-button.component.ts","../../../projects/ui/src/lib/star/star-button/star-button.component.html","../../../projects/ui/src/lib/star/rating-input/rating-input.component.ts","../../../projects/ui/src/lib/star/rating-input/rating-input.component.html","../../../projects/ui/src/lib/star/star.module.ts","../../../projects/ui/src/lib/star/star-button/star-button.module.ts","../../../projects/ui/src/lib/star/rating-input/rating-input.module.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.types.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.defaults.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.directives.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.component.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.component.html","../../../projects/ui/src/lib/checkbox-list/checkbox-list.module.ts","../../../projects/ui/src/lib/badge/badge.types.ts","../../../projects/ui/src/lib/badge/badge.defaults.ts","../../../projects/ui/src/lib/badge/badge.directive.ts","../../../projects/ui/src/lib/badge/badge.module.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.types.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.defaults.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.component.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.component.html","../../../projects/ui/src/lib/progress-bar/progress-bar.module.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.types.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.defaults.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.component.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.component.html","../../../projects/ui/src/lib/progress-circle/progress-circle.directive.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.module.ts","../../../projects/ui/src/lib/spinner/spinner.defaults.ts","../../../projects/ui/src/lib/spinner/spinner.component.ts","../../../projects/ui/src/lib/spinner/spinner.component.html","../../../projects/ui/src/lib/spinner/spinner.module.ts","../../../projects/ui/src/lib/form-field/form-field.defaults.ts","../../../projects/ui/src/lib/form-field/auto-error/auto-error.provider.ts","../../../projects/ui/src/lib/form-field/error/error.directive.ts","../../../projects/ui/src/lib/form-field/error/error.component.ts","../../../projects/ui/src/lib/form-field/auto-error/auto-error.component.ts","../../../projects/ui/src/lib/form-field/auto-error/auto-error.component.html","../../../projects/ui/src/lib/form-field/form-field-native-inputs.ts","../../../projects/ui/src/lib/form-field/hint-error/hint-error.directive.ts","../../../projects/ui/src/lib/form-field/hint/hint.directive.ts","../../../projects/ui/src/lib/form-field/label/label.component.ts","../../../projects/ui/src/lib/form-field/label/label.component.html","../../../projects/ui/src/lib/form-field/form-field-base.ts","../../../projects/ui/src/lib/form-field/form-field.component.ts","../../../projects/ui/src/lib/form-field/form-field.component.html","../../../projects/ui/src/lib/form-field/hint-error/hint-error.component.ts","../../../projects/ui/src/lib/form-field/hint/hint.component.ts","../../../projects/ui/src/lib/form-field/horizontal-form-field.component.ts","../../../projects/ui/src/lib/form-field/horizontal-form-field.component.html","../../../projects/ui/src/lib/form-field/form-field.module.ts","../../../projects/ui/src/lib/kbd/kbd.defaults.ts","../../../projects/ui/src/lib/kbd/kbd.pipe.ts","../../../projects/ui/src/lib/kbd/kbd.component.ts","../../../projects/ui/src/lib/kbd/kbd.component.html","../../../projects/ui/src/lib/kbd/kbd.directive.ts","../../../projects/ui/src/lib/kbd/kbd.module.ts","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.defaults.ts","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.component.ts","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.component.html","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.module.ts","../../../projects/ui/src/lib/star/rating-display/rating-display.defaults.ts","../../../projects/ui/src/lib/star/rating-display/rating-display.directives.ts","../../../projects/ui/src/lib/star/rating-display/rating-display.component.ts","../../../projects/ui/src/lib/star/rating-display/rating-display.component.html","../../../projects/ui/src/lib/star/rating-display/rating-display.module.ts","../../../projects/ui/src/lib/table/table.types.ts","../../../projects/ui/src/lib/table/utils.ts","../../../projects/ui/src/lib/table/table-item-storage.ts","../../../projects/ui/src/lib/_internal/models/pagination.model.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.types.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.defaults.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.component.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.component.html","../../../projects/ui/src/lib/table-pagination/table-pagination.module.ts","../../../projects/ui/src/lib/table/table.defaults.ts","../../../projects/ui/src/lib/table/table.directives.ts","../../../projects/ui/src/lib/table/table.component.ts","../../../projects/ui/src/lib/table/table.component.html","../../../projects/ui/src/lib/table/table.module.ts","../../../projects/ui/src/lib/table-from-csv/table-from-csv.defaults.ts","../../../projects/ui/src/lib/table-from-csv/table-from-csv.component.ts","../../../projects/ui/src/lib/table-from-csv/table-from-csv.component.html","../../../projects/ui/src/lib/table-from-csv/table-from-csv.module.ts","../../../projects/ui/src/lib/text-list/text-list.pipe.ts","../../../projects/ui/src/lib/text-list/text-list.component.ts","../../../projects/ui/src/lib/text-list/text-list.component.html","../../../projects/ui/src/lib/text-list/text-list.module.ts","../../../projects/ui/src/lib/card/card.types.ts","../../../projects/ui/src/lib/card/card.defaults.ts","../../../projects/ui/src/lib/card/card.children.ts","../../../projects/ui/src/lib/card/card-header.template.html","../../../projects/ui/src/lib/card/card.component.ts","../../../projects/ui/src/lib/card/card.module.ts","../../../projects/ui/src/lib/divider/divider.types.ts","../../../projects/ui/src/lib/divider/divider.defaults.ts","../../../projects/ui/src/lib/divider/divider.directive.ts","../../../projects/ui/src/lib/divider/divider.component.ts","../../../projects/ui/src/lib/divider/divider.module.ts","../../../projects/ui/src/lib/breakpoints/breakpoints.ts","../../../projects/ui/src/lib/breakpoints/breakpoint.service.ts","../../../projects/ui/src/lib/grid/grid.utils.ts","../../../projects/ui/src/lib/breakpoints/breakpoint.utils.ts","../../../projects/ui/src/lib/grid/grid.types.ts","../../../projects/ui/src/lib/grid/grid.defaults.ts","../../../projects/ui/src/lib/grid/grid.component.ts","../../../projects/ui/src/lib/grid/grid.component.html","../../../projects/ui/src/lib/grid/grid.module.ts","../../../projects/ui/src/lib/stack/stack.defaults.ts","../../../projects/ui/src/lib/stack/stack.component.ts","../../../projects/ui/src/lib/stack/stack.component.html","../../../projects/ui/src/lib/stack/stack.module.ts","../../../projects/ui/src/lib/tabber/tabber.defaults.ts","../../../projects/ui/src/lib/tabber/tab/tab.component.ts","../../../projects/ui/src/lib/tabber/tab/tab.component.html","../../../projects/ui/src/lib/tabber/tabber.directives.ts","../../../projects/ui/src/lib/tabber/tabber.component.ts","../../../projects/ui/src/lib/tabber/tabber.component.html","../../../projects/ui/src/lib/tabber/tabber.module.ts","../../../projects/ui/src/lib/modal/modal.defaults.ts","../../../projects/ui/src/lib/dialog/dialog.types.ts","../../../projects/ui/src/lib/dialog/dialog.defaults.ts","../../../projects/ui/src/lib/dialog/dialog.directives.ts","../../../projects/ui/src/lib/modal/modal.directives.ts","../../../projects/ui/src/lib/modal/modal.component.ts","../../../projects/ui/src/lib/modal/modal.component.html","../../../projects/ui/src/lib/dialog/dialog.component.ts","../../../projects/ui/src/lib/dialog/dialog.component.html","../../../projects/ui/src/lib/modal/modal.module.ts","../../../projects/ui/src/lib/dialog/dialog.module.ts","../../../projects/ui/src/lib/_internal/models/queue.ts","../../../projects/ui/src/lib/snackbar/snackbar-ref.ts","../../../projects/ui/src/lib/snackbar/snackbar.types.ts","../../../projects/ui/src/lib/snackbar/snackbar.component.ts","../../../projects/ui/src/lib/snackbar/snackbar.component.html","../../../projects/ui/src/lib/snackbar/snackbar.token.ts","../../../projects/ui/src/lib/snackbar/snackbar.service.ts","../../../projects/ui/src/public-api.ts","../../../projects/ui/src/ardium-pl-ui.ts"],"sourcesContent":["import { Signal, computed, signal } from '@angular/core';\r\nimport { arraySignal } from '@ardium-ui/devkit';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { any, isDefined, isPrimitive } from 'simple-bool';\r\nimport { ArdSimplestStorageItem } from '../../types/item-storage.types';\r\nimport { Nullable } from '../../types/utility.types';\r\n\r\nexport interface SimplestItemStorageHostDefaults {\r\n suggValueFrom: string;\r\n suggLabelFrom: string;\r\n}\r\nexport interface SimplestItemStorageHost {\r\n readonly valueFrom: Signal<Nullable<string>>;\r\n readonly labelFrom: Signal<Nullable<string>>;\r\n readonly DEFAULTS: SimplestItemStorageHostDefaults;\r\n}\r\n\r\nexport class SimplestItemStorage {\r\n private readonly _items = arraySignal<ArdSimplestStorageItem>([]);\r\n private readonly _highlightedItem = signal<Nullable<ArdSimplestStorageItem>>(null);\r\n\r\n constructor(private readonly _ardParentComp: SimplestItemStorageHost) {}\r\n\r\n /**\r\n * Gets all items.\r\n */\r\n readonly items = this._items.asReadonly();\r\n /**\r\n * The currently highlighted item.\r\n */\r\n readonly highlightedItem = this._highlightedItem.asReadonly();\r\n /**\r\n * True if at least one item is highlighted, otherwise false.\r\n */\r\n readonly isAnyItemHighlighted = computed(() => isDefined(this._highlightedItem()));\r\n\r\n /**\r\n * Sets the component's items. Takes into account the values defined by the parent component for `suggValueFrom` and `suggLabelFrom`.\r\n * @param items An array of items to be set as the component's items.\r\n * @returns true if at least one of the items is of primitive type, otherwise false.\r\n */\r\n setItems(items: any[]): void {\r\n let areItemsPrimitive = false;\r\n if (any(items, isPrimitive)) {\r\n items = items.map(this._primitiveItemsMapFn);\r\n areItemsPrimitive = true;\r\n }\r\n\r\n this._items.set(\r\n items.map((item, index) => {\r\n return this._setItemsMapFn(item, index, areItemsPrimitive);\r\n })\r\n );\r\n }\r\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\r\n return { value: item };\r\n }\r\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdSimplestStorageItem {\r\n if (areItemsPrimitive) {\r\n return {\r\n itemData: rawItemData,\r\n index: index,\r\n value: rawItemData.value,\r\n label: rawItemData.value?.toString?.() ?? String(rawItemData.value),\r\n selected: false,\r\n highlighted: false,\r\n };\r\n }\r\n //get value\r\n const valuePath =\r\n this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom() ?? this._ardParentComp.DEFAULTS.suggValueFrom;\r\n const value = resolvePath(rawItemData, valuePath);\r\n\r\n //get label\r\n const labelPath =\r\n this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom() ?? this._ardParentComp.DEFAULTS.suggLabelFrom;\r\n const label = resolvePath(rawItemData, labelPath) ?? value;\r\n\r\n //return\r\n return {\r\n itemData: rawItemData,\r\n index: index,\r\n value: value,\r\n label: label?.toString?.() ?? String(label),\r\n selected: false,\r\n highlighted: false,\r\n };\r\n }\r\n\r\n /**\r\n * Selects the given item.\r\n * @param items The item to select.\r\n * @returns The value of the selected item.\r\n */\r\n selectItem(item: ArdSimplestStorageItem): any {\r\n return item.value;\r\n }\r\n selectCurrent(): any {\r\n const hi = this._highlightedItem();\r\n if (!hi) return undefined;\r\n return this.selectItem(hi);\r\n }\r\n\r\n /**\r\n * Unhighlights all currently highlighted items.\r\n */\r\n unhighlightCurrent(): void {\r\n const hi = this._highlightedItem();\r\n if (hi) {\r\n this._items.setAt(hi.index, {\r\n ...hi,\r\n highlighted: false,\r\n });\r\n }\r\n this._highlightedItem.set(null);\r\n }\r\n /**\r\n * Highlights a given item.\r\n * @param item The item to be highlighted.\r\n */\r\n highlightItem(item: ArdSimplestStorageItem): void {\r\n this.unhighlightCurrent();\r\n\r\n this._items.setAt(item.index, {\r\n ...item,\r\n highlighted: true,\r\n });\r\n\r\n this._highlightedItem.set(item);\r\n }\r\n /**\r\n * Unhighlights a given item.\r\n * @param item The item to be unhighlighted.\r\n */\r\n unhighlightItem(item: ArdSimplestStorageItem): void {\r\n this._items.setAt(item.index, {\r\n ...item,\r\n highlighted: false,\r\n });\r\n\r\n if (this._highlightedItem()?.index === item.index) this._highlightedItem.set(null);\r\n }\r\n /**\r\n * Highlights the first item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightFirstItem(): ArdSimplestStorageItem | null {\r\n if (!this._items().length) return null;\r\n\r\n this.unhighlightCurrent();\r\n\r\n const itemToHighlight = this._items().first();\r\n this.highlightItem(itemToHighlight);\r\n\r\n return itemToHighlight;\r\n }\r\n /**\r\n * Highlights the last item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightLastItem(): ArdSimplestStorageItem | null {\r\n if (!this._items().length) return null;\r\n\r\n this.unhighlightCurrent();\r\n\r\n const itemToHighlight = this._items().last();\r\n this.highlightItem(itemToHighlight);\r\n\r\n return itemToHighlight;\r\n }\r\n /**\r\n * Highlights the next non-disabled item defined by the offset amount.\r\n * @param offset The amount of items to offset the highlight by.\r\n * @returns The item highlighted.\r\n */\r\n highlightNextItem(offset: number): ArdSimplestStorageItem | null {\r\n const currentItem = this._highlightedItem();\r\n if (!currentItem) {\r\n return this.highlightFirstItem();\r\n }\r\n const items = this._items();\r\n const currentIndexInItems = items.findIndex(item => item.index === currentItem.index);\r\n\r\n let nextItemIndex = currentIndexInItems + offset;\r\n if (nextItemIndex >= items.length) {\r\n nextItemIndex -= items.length;\r\n } else if (nextItemIndex < 0) {\r\n nextItemIndex += items.length;\r\n }\r\n const itemToHighlight = items[nextItemIndex];\r\n\r\n this.highlightItem(itemToHighlight);\r\n\r\n return itemToHighlight;\r\n }\r\n}\r\n","export type ScrollAlignment = 'top' | 'bottom' | 'center';\r\n\r\nexport const DropdownPanelAppearance = {\r\n Outlined: 'outlined',\r\n Raised: 'raised',\r\n} as const;\r\nexport type DropdownPanelAppearance = (typeof DropdownPanelAppearance)[keyof typeof DropdownPanelAppearance];\r\n\r\nexport const DropdownPanelVariant = {\r\n Rounded: 'rounded',\r\n Sharp: 'sharp',\r\n SharpConnected: 'sharp ard-connected',\r\n} as const;\r\nexport type DropdownPanelVariant = (typeof DropdownPanelVariant)[keyof typeof DropdownPanelVariant];\r\n","import { InjectionToken, Signal } from '@angular/core';\r\n\r\nexport interface ArdFormFieldControl {\r\n hasError: Signal<boolean> | (() => boolean) | boolean;\r\n isSuccess?: Signal<boolean> | (() => boolean) | boolean;\r\n disabled: Signal<boolean> | (() => boolean) | boolean;\r\n htmlId: Signal<string> | (() => string) | string;\r\n // removed for now\r\n // will bring back when I figure out how (and if) to pass it onto the label\r\n // required?: Signal<boolean> | (() => boolean) | boolean;\r\n}\r\n\r\nexport const ARD_FORM_FIELD_CONTROL = new InjectionToken<ArdFormFieldControl>('ard-form-field-control');\r\n","//! appearances\r\nexport const OutlinedAppearance = {\r\n /**\r\n * No background with solid border.\r\n */\r\n Outlined: 'outlined',\r\n} as const;\r\nexport type OutlinedAppearance = (typeof OutlinedAppearance)[keyof typeof OutlinedAppearance];\r\n\r\nexport const PanelAppearance = {\r\n /**\r\n * Filled with a background color, with slight shadow.\r\n */\r\n Raised: 'raised',\r\n} as const;\r\nexport type PanelAppearance = (typeof PanelAppearance)[keyof typeof PanelAppearance];\r\n\r\nexport const FormElementAppearance = {\r\n ...OutlinedAppearance,\r\n /**\r\n * No background and no border. Useful for when trying to create a component that uses another component inside its borders.\r\n */\r\n Transparent: 'transparent',\r\n /**\r\n * Slighthly darker/lighter background with rounded but transparent border.\r\n */\r\n Filled: 'filled',\r\n} as const;\r\nexport type FormElementAppearance = (typeof FormElementAppearance)[keyof typeof FormElementAppearance];\r\n\r\nexport const DecorationElementAppearance = {\r\n Outlined: 'outlined',\r\n OutlinedStrong: 'outlined-strong',\r\n Filled: 'filled',\r\n FilledStrong: 'filled-strong',\r\n} as const;\r\nexport type DecorationElementAppearance = (typeof DecorationElementAppearance)[keyof typeof DecorationElementAppearance];\r\n\r\n//! variants\r\nexport const PanelVariant = {\r\n /**\r\n * Slightly rounded corners.\r\n */\r\n Rounded: 'rounded',\r\n /**\r\n * Sharp corners.\r\n */\r\n Sharp: 'sharp',\r\n} as const;\r\nexport type PanelVariant = (typeof PanelVariant)[keyof typeof PanelVariant];\r\n\r\nexport const FormElementVariant = {\r\n ...PanelVariant,\r\n /**\r\n * Fully rounded corners - pill shaped.\r\n */\r\n Pill: 'pill',\r\n} as const;\r\nexport type FormElementVariant = (typeof FormElementVariant)[keyof typeof FormElementVariant];\r\n","import { Directive, HostBinding, Input, signal } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\n\r\nexport interface _DisablableComponentDefaults {\r\n readonly: boolean;\r\n disabled: boolean;\r\n}\r\nexport const _disablableComponentDefaults: _DisablableComponentDefaults = {\r\n readonly: false,\r\n disabled: false,\r\n};\r\n\r\n@Directive()\r\nexport abstract class _DisablableComponentBase {\r\n constructor(protected readonly _DEFAULTS: _DisablableComponentDefaults) {}\r\n //! no value arguments\r\n /**\r\n * Whether the component is read-only. Defines the `readonly` host attribute and `ard-readonly` host class. Coercible into a boolean.\r\n */\r\n readonly readonly = signal<boolean>(this._DEFAULTS.readonly);\r\n @Input('readonly')\r\n set _readonly(v: any) {\r\n this.readonly.set(coerceBooleanProperty(v));\r\n }\r\n\r\n /**\r\n * Whether the component is disabled. Defines the `disabled` host attribute and `ard-disabled` host class. Coercible into a boolean.\r\n */\r\n readonly disabled = signal<boolean>(this._DEFAULTS.disabled);\r\n @Input('disabled')\r\n set _disabled(v: any) {\r\n this.disabled.set(coerceBooleanProperty(v));\r\n }\r\n\r\n @HostBinding('attr.readonly')\r\n @HostBinding('class.ard-readonly')\r\n get _readonlyHostAttribute(): boolean {\r\n return this.readonly();\r\n }\r\n @HostBinding('attr.disabled')\r\n @HostBinding('class.ard-disabled')\r\n get _disabledHostAttribute(): boolean {\r\n return this.disabled();\r\n }\r\n}\r\n","import { computed, Directive, ElementRef, input, output, QueryList, signal, ViewChildren } from '@angular/core';\r\nimport { coerceNumberProperty, NumberLike } from '@ardium-ui/devkit';\r\nimport { _DisablableComponentBase, _disablableComponentDefaults, _DisablableComponentDefaults } from './disablable-component';\r\n\r\nexport interface _FocusableComponentDefaults extends _DisablableComponentDefaults {\r\n tabIndex: number;\r\n}\r\nexport const _focusableComponentDefaults: _FocusableComponentDefaults = {\r\n ..._disablableComponentDefaults,\r\n tabIndex: 0,\r\n};\r\n\r\n@Directive()\r\nexport abstract class _FocusableComponentBase extends _DisablableComponentBase {\r\n protected override readonly _DEFAULTS!: _FocusableComponentDefaults;\r\n\r\n //! make the component focusable programmatically\r\n @ViewChildren('focusableElement')\r\n private readonly _focusableElement!: QueryList<ElementRef<HTMLElement>>;\r\n\r\n /**\r\n * Focuses the correct element in the component.\r\n */\r\n public focus(): void {\r\n this._focusableElement?.first?.nativeElement.focus();\r\n }\r\n /**\r\n * Focuses the first of all available elements in the component.\r\n */\r\n public focusFirst(): void {\r\n this.focus();\r\n }\r\n /**\r\n * Focuses the last of all available elements in the component.\r\n */\r\n public focusLast(): void {\r\n this._focusableElement?.last?.nativeElement.focus();\r\n }\r\n /**\r\n * Blurs all focusable elements in the component.\r\n */\r\n public blur(): void {\r\n this._focusableElement?.forEach(el => el.nativeElement.blur());\r\n }\r\n\r\n //! tabindex\r\n /**\r\n * The component's overall tab index. If the component is disabled, it is always `-1`. Coercible into a number, defaults to `0`.\r\n */\r\n readonly tabIndex = computed(() => (this.disabled() ? -1 : this._tabIndex()));\r\n readonly _tabIndex = input<number, NumberLike>(this._DEFAULTS.tabIndex, {\r\n alias: 'tabIndex',\r\n transform: v => coerceNumberProperty(v, 0),\r\n });\r\n\r\n //! events\r\n /**\r\n * The event emitter responsible for firing `focus` events.\r\n */\r\n readonly focusEvent = output<FocusEvent>({ alias: 'focus' });\r\n /**\r\n * The event emitter responsible for firing `blur` events.\r\n */\r\n readonly blurEvent = output<FocusEvent>({ alias: 'blur' });\r\n\r\n //! focus event handlers\r\n /**\r\n * Whether the component is currently focused.\r\n */\r\n readonly isFocused = signal<boolean>(false);\r\n\r\n /**\r\n * Function to handle when an element is focused. Sets `isFocused` and fires the `focus` event.\r\n * @param event The focus event to emit.\r\n */\r\n onFocus(event: FocusEvent) {\r\n this.isFocused.set(true);\r\n this.focusEvent.emit(event);\r\n }\r\n /**\r\n * Function to handle when an element is blurred. Sets `isFocused` and fires the `blur` event.\r\n * @param event The focus event to emit.\r\n */\r\n onBlur(event: FocusEvent) {\r\n this.isFocused.set(false);\r\n this.blurEvent.emit(event);\r\n }\r\n}\r\n","import { computed, Directive, input, OnDestroy, OnInit } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { coerceBooleanProperty, trackBoundControl } from '@ardium-ui/devkit';\r\nimport { TakeChance as Random } from 'take-chance';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { _FocusableComponentBase, _focusableComponentDefaults, _FocusableComponentDefaults } from './focusable-component';\r\n\r\nexport interface _NgModelComponentDefaults extends _FocusableComponentDefaults {}\r\n\r\nexport const _ngModelComponentDefaults: _NgModelComponentDefaults = {\r\n ..._focusableComponentDefaults,\r\n};\r\n\r\n/**\r\n * Common code for components which implement the ControlValueAccessor.\r\n *\r\n * **Warning**: `writeValue` function should be implemented on the child component!\r\n */\r\n@Directive()\r\nexport abstract class _NgModelComponentBase extends _FocusableComponentBase implements ControlValueAccessor, OnInit, OnDestroy {\r\n protected override readonly _DEFAULTS!: _NgModelComponentDefaults;\r\n\r\n //! control value accessor\r\n protected _onChangeRegistered!: (_: any) => void;\r\n protected _onTouchedRegistered!: () => void;\r\n /**\r\n * Registers a function to handle touched state. Required by ControlValueAccessor.\r\n * @param fn The function to register.\r\n */\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouchedRegistered = fn;\r\n }\r\n /**\r\n * Registers a function to handle value change. Required by ControlValueAccessor.\r\n * @param fn The function to register.\r\n */\r\n registerOnChange(fn: (_: any) => void): void {\r\n this._onChangeRegistered = fn;\r\n }\r\n /**\r\n * Sets the component's disabled state. Required by ControlValueAccessor.\r\n * @param isDisabled the new disabled state.\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n\r\n /**\r\n * Writes the a new value into the component. Required by ControlValueAccessor.\r\n * @abstract\r\n * @param v The new value to write.\r\n */\r\n abstract writeValue(v: any): void; //* abstract\r\n\r\n /**\r\n * Writes the a new value into the component. Required by ControlValueAccessor.\r\n * @abstract\r\n * @param v The new value to write.\r\n */\r\n protected abstract _emitChange(): void; //* abstract\r\n\r\n //! event handlers\r\n override onFocus(event: FocusEvent): void {\r\n this._shouldEmitTouched = false;\r\n super.onFocus(event);\r\n }\r\n\r\n protected _shouldEmitTouched = false;\r\n override onBlur(event: FocusEvent) {\r\n this._shouldEmitTouched = true;\r\n super.onBlur(event);\r\n\r\n setTimeout(() => {\r\n // if the component is immediately focused back (i.e. when changing focus between elements within the component)\r\n // the touched event will not be fired\r\n if (!this._shouldEmitTouched) return;\r\n this._emitTouched();\r\n }, 0);\r\n }\r\n\r\n protected _emitTouched(): void {\r\n this._onTouchedRegistered?.();\r\n }\r\n\r\n //! form field related\r\n readonly control = trackBoundControl(this);\r\n\r\n ngOnInit(): void {\r\n this.control.init();\r\n }\r\n\r\n readonly htmlId = input<string>(Random.id());\r\n readonly htmlName = input<Nullable<string>>(undefined);\r\n\r\n readonly _hasError = input<boolean | undefined, any>(undefined, {\r\n transform: v => coerceBooleanProperty(v),\r\n alias: 'hasError',\r\n });\r\n readonly hasError = computed<boolean>(() => this._hasError() ?? (this.control.touched() && this.control.invalid()));\r\n\r\n ngOnDestroy(): void {\r\n this.control.destroy();\r\n }\r\n}\r\n","import { computed, Directive, input } from '@angular/core';\r\nimport { ControlValueAccessor, Validators } from '@angular/forms';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ArdFormFieldControl } from '../form-field/form-field-child.token';\r\nimport { _NgModelComponentBase, _NgModelComponentDefaults, _ngModelComponentDefaults } from './ngmodel-component';\r\n\r\nexport interface _FormFieldComponentDefaults extends _NgModelComponentDefaults {\r\n required: boolean | undefined;\r\n}\r\n\r\nexport const _formFieldComponentDefaults: _FormFieldComponentDefaults = {\r\n ..._ngModelComponentDefaults,\r\n required: undefined,\r\n};\r\n\r\n/**\r\n * Common code for components which implement the ControlValueAccessor.\r\n *\r\n * **Warning**: `writeValue` function should be implemented on the child component!\r\n */\r\n@Directive()\r\nexport abstract class _FormFieldComponentBase extends _NgModelComponentBase implements ControlValueAccessor, ArdFormFieldControl {\r\n protected override readonly _DEFAULTS!: _FormFieldComponentDefaults;\r\n\r\n readonly _required = input<boolean | undefined, any>(undefined, {\r\n transform: v => coerceBooleanProperty(v),\r\n alias: 'required',\r\n });\r\n readonly required = computed<boolean>(\r\n () =>\r\n this._required() ??\r\n !!(this.control.validators()?.includes(Validators.required) || this.control.validators()?.includes(Validators.requiredTrue))\r\n );\r\n\r\n readonly isSuccess = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n}\r\n","export const SimpleOneAxisAlignment = {\r\n Left: 'left',\r\n Right: 'right',\r\n} as const;\r\nexport type SimpleOneAxisAlignment = (typeof SimpleOneAxisAlignment)[keyof typeof SimpleOneAxisAlignment];\r\n\r\nexport const OneAxisAlignment = {\r\n Left: 'left',\r\n Center: 'center',\r\n Right: 'right',\r\n} as const;\r\nexport type OneAxisAlignment = (typeof OneAxisAlignment)[keyof typeof OneAxisAlignment];\r\n\r\nexport const OneAxisAlignmentOrientational = {\r\n Start: 'start',\r\n Center: 'center',\r\n End: 'end',\r\n} as const;\r\nexport type OneAxisAlignmentOrientational = (typeof OneAxisAlignmentOrientational)[keyof typeof OneAxisAlignmentOrientational];\r\n","export type ArdTransformerFn = (\r\n currentText: string,\r\n previousText: string,\r\n caretPos: number\r\n) => { text: string; caretPos: number };\r\n\r\ninterface IRegExpTransformer {\r\n apply: ArdTransformerFn;\r\n}\r\nexport class RegExpTransformer implements IRegExpTransformer {\r\n constructor(\r\n public regex: RegExp,\r\n public replace = '',\r\n public caretModif = 0\r\n ) {}\r\n\r\n apply(currentText: string, previousText: string, caretPos: number): { text: string; caretPos: number } {\r\n let text = currentText;\r\n if (text && this.regex) {\r\n let safetySwitch = 0;\r\n while (text.match(this.regex)) {\r\n //prevent infinite loop\r\n if (safetySwitch > 999) {\r\n console.error(this, new Error('Possible infinite loop in the above RegExpTransformer. Exited after 1000 iterations.'));\r\n break;\r\n }\r\n //apply regex\r\n const lengthBefore = text.length;\r\n text = text.replace(this.regex, this.replace);\r\n const lengthAfter = text.length;\r\n //fix caret pos\r\n caretPos = caretPos + (lengthAfter - lengthBefore);\r\n //for infinite loop prevention\r\n safetySwitch++;\r\n }\r\n }\r\n return { text, caretPos };\r\n }\r\n}\r\n\r\nconst toUpper: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n return { text: currentText.toUpperCase(), caretPos };\r\n};\r\nconst toLower: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n return { text: currentText.toLowerCase(), caretPos };\r\n};\r\nconst int: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n const regexes: ([RegExp] | [RegExp, string] | [RegExp, string, number])[] = [[/[^0-9-]/], [/(.+)-/, '$1']];\r\n let obj = { text: currentText, caretPos };\r\n for (const arr of regexes) {\r\n const [regex, replace, caretModif] = arr;\r\n obj = new RegExpTransformer(regex, replace, caretModif).apply(obj.text, previousText, obj.caretPos);\r\n }\r\n return obj;\r\n};\r\nconst float: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n const regexes: ([RegExp] | [RegExp, string] | [RegExp, string, number])[] = [\r\n [/[^0-9.-]/],\r\n [/(.+)-/, '$1'],\r\n [/\\.(.*)\\./, '$1.'],\r\n [/^(-?)\\./, '$10.'],\r\n ];\r\n let obj = { text: currentText, caretPos };\r\n for (const arr of regexes) {\r\n const [regex, replace, caretModif] = arr;\r\n obj = new RegExpTransformer(regex, replace, caretModif).apply(obj.text, previousText, obj.caretPos);\r\n }\r\n return obj;\r\n};\r\nexport const ArdTransformer = {\r\n ToUpper: toUpper,\r\n ToLower: toLower,\r\n Integer: int,\r\n Float: float,\r\n} as const;\r\n","export const ArdNumberInputMinMaxBehavior = {\r\n AdjustOnInput: 'adjust-on-input',\r\n AdjustOnBlur: 'adjust-on-blur',\r\n Noop: 'noop',\r\n} as const;\r\nexport type ArdNumberInputMinMaxBehavior = typeof ArdNumberInputMinMaxBehavior[keyof typeof ArdNumberInputMinMaxBehavior];","import { ElementRef, Signal, computed, signal } from '@angular/core';\r\nimport { isAnyString, isDefined, isNull, isNumber } from 'simple-bool';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdTransformer, RegExpTransformer } from './input-transformers';\r\nimport { ArdNumberInputMinMaxBehavior } from './number-input/number-input.types';\r\n\r\nexport interface InputModelHost {\r\n readonly maxLength: Signal<Nullable<number>>;\r\n readonly textInputEl: Signal<ElementRef<HTMLInputElement> | undefined>;\r\n}\r\nexport class InputModel {\r\n constructor(protected readonly _ardHostCmp: InputModelHost) {}\r\n\r\n readonly value = signal<string | null>(null);\r\n readonly stringValue = computed<string>(() => this.value() ?? '');\r\n\r\n writeValue(v: any): boolean {\r\n if (!isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(`ARD-WA0020: Trying to set <ard-input>'s value to \"${v}\" (of type ${typeof v}), expected string or null.`)\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n return this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | null): boolean {\r\n //constraints\r\n v = this._applyLengthTransformer(v);\r\n //update view\r\n const oldVal = this.value();\r\n this.value.set(v);\r\n this._updateInputElement();\r\n return oldVal !== v;\r\n }\r\n rewriteValueAfterHostUpdate(): void {\r\n this._writeValue(this.value());\r\n }\r\n clear(): void {\r\n this.value.set(null);\r\n this._updateInputElement();\r\n }\r\n trim(): void {\r\n this.value.update(v => v?.trim() ?? null);\r\n this._updateInputElement();\r\n }\r\n\r\n _updateInputElement() {\r\n const el = this._ardHostCmp.textInputEl()?.nativeElement;\r\n if (!el) return;\r\n el.value = this.stringValue();\r\n }\r\n get caretPos(): number {\r\n return this._ardHostCmp.textInputEl()?.nativeElement.selectionEnd ?? this.stringValue.length;\r\n }\r\n set caretPos(pos: number) {\r\n this._ardHostCmp.textInputEl()?.nativeElement.setSelectionRange(pos, pos);\r\n }\r\n //! constraints\r\n protected _applyLengthTransformer(v: string | null): string | null {\r\n const max = this._ardHostCmp.maxLength();\r\n if (!isDefined(max)) return v;\r\n if (!v || v.length <= max) return v;\r\n\r\n v = v.substring(0, max);\r\n this.caretPos = max;\r\n return v;\r\n }\r\n}\r\nexport interface AutocompleteInputModelHost extends InputModelHost {\r\n charlist: Signal<RegExp | undefined>;\r\n}\r\nexport class AutocompleteInputModel extends InputModel {\r\n constructor(protected override readonly _ardHostCmp: AutocompleteInputModelHost) {\r\n super(_ardHostCmp);\r\n }\r\n protected override _writeValue(v: string | null): boolean {\r\n //transformers\r\n if (v) {\r\n let prev = this.stringValue();\r\n v = this._applyAllowOrDenylistTransformer(v, prev);\r\n prev = this.stringValue();\r\n v = this._applyLengthTransformer(v);\r\n }\r\n const oldVal = this.value();\r\n //update view\r\n this.value.set(v);\r\n this._updateInputElement();\r\n return oldVal !== v;\r\n }\r\n\r\n setSelection(from: number | null, to: number | null): void;\r\n setSelection(from: number | null, to?: number | null): void {\r\n to = to ?? this.value()?.length ?? Infinity;\r\n this._ardHostCmp.textInputEl()?.nativeElement.setSelectionRange(from, to);\r\n }\r\n //* constraints\r\n protected _applyAllowOrDenylistTransformer(v: string, prev: string): string {\r\n const charlist = this._ardHostCmp.charlist();\r\n if (!charlist || !v) return v;\r\n const { text, caretPos } = new RegExpTransformer(charlist).apply(v, prev, this.caretPos);\r\n this.caretPos = caretPos;\r\n return text;\r\n }\r\n}\r\n\r\nexport interface NumberInputModelHost {\r\n readonly max: Signal<number>;\r\n readonly min: Signal<number>;\r\n readonly minMaxBehavior: Signal<ArdNumberInputMinMaxBehavior>;\r\n readonly maxDecimalPlaces: Signal<number>;\r\n readonly fixedDecimalPlaces: Signal<boolean>;\r\n readonly decimalSeparator: Signal<string>;\r\n readonly allowFloat: Signal<boolean>;\r\n readonly inputEl: Signal<ElementRef<HTMLInputElement> | undefined>;\r\n}\r\nexport class NumberInputModel {\r\n constructor(protected readonly _ardHostCmp: NumberInputModelHost) {}\r\n\r\n //! value setters/getters\r\n protected readonly _value = signal<string | null>(null);\r\n readonly value = this._value.asReadonly();\r\n readonly stringValue = computed(() => this._value() ?? '');\r\n readonly numberValue = computed(() => (this._value() === null ? null : Number(this._value())));\r\n\r\n setValue(v: string | number | null): void {\r\n let stringV = isNumber(v) ? String(v) : v;\r\n\r\n if (stringV) {\r\n const sep = this._ardHostCmp.decimalSeparator();\r\n if (sep) {\r\n // always store with dot as decimal separator for internal consistency\r\n if (sep !== '.') {\r\n stringV = stringV.split(sep).join('.');\r\n }\r\n }\r\n }\r\n this._value.set(stringV);\r\n this._updateInputEl();\r\n }\r\n updateOnBlur(adjustMinMax?: boolean): void {\r\n let v = this._value();\r\n if (isNull(v)) return;\r\n\r\n v = this._applyStandardConstraints(\r\n v,\r\n adjustMinMax ?? this._ardHostCmp.minMaxBehavior() === ArdNumberInputMinMaxBehavior.AdjustOnBlur\r\n );\r\n // remove trailing zeros after decimal point\r\n if (v.includes('.')) {\r\n v = v.replace(/(\\.\\d*?)0+$/, '$1');\r\n }\r\n // remove decimal point if no digits after it\r\n if (v.endsWith('.')) {\r\n v = v.slice(0, -1);\r\n }\r\n // remove leading zeros (but keep \"0\" if the value is zero)\r\n if (!v.match(/^0(\\.\\d+)?$/)) {\r\n v = v.replace(/^0+/, '');\r\n }\r\n // apply fixed decimal places if configured\r\n if (this._ardHostCmp.allowFloat() && this._ardHostCmp.fixedDecimalPlaces()) {\r\n v = this._fixDecimalPlaces(v);\r\n }\r\n\r\n this.setValue(v);\r\n }\r\n private _fixDecimalPlaces(v: string): string {\r\n const maxDp = this._ardHostCmp.maxDecimalPlaces();\r\n if (!isDefined(maxDp) || maxDp === Infinity) return v;\r\n const num = Number(v);\r\n if (isNaN(num)) return v;\r\n return num.toFixed(maxDp);\r\n }\r\n\r\n private _updateInputEl(): void {\r\n let stringV = this.stringValue();\r\n const sep = this._ardHostCmp.decimalSeparator();\r\n if (sep && sep !== '.') {\r\n stringV = stringV.split('.').join(sep);\r\n }\r\n const el = this._ardHostCmp.inputEl()?.nativeElement;\r\n if (!el) return;\r\n\r\n const caretPos = this.caretPos;\r\n el.value = stringV;\r\n this.caretPos = caretPos;\r\n }\r\n\r\n //! write value handlers\r\n writeValue(v: any, applyConstraints: boolean): boolean {\r\n if (!isNumber(v) && !isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(`ARD-WA0070: Trying to set <ard-number-input>'s value to \"${typeof v}\", expected string, number, or null.`)\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n // check if value is already the same as current value\r\n if (v === null ? v === this._value() : Number(v) === this.numberValue()) return false;\r\n\r\n v = v === null ? null : String(v);\r\n return this._writeValue(v, applyConstraints);\r\n }\r\n protected _writeValue(v: string | null, applyConstraints: boolean): boolean {\r\n //constraints\r\n if (applyConstraints) {\r\n v = this._applyStandardConstraints(v, this._ardHostCmp.minMaxBehavior() === ArdNumberInputMinMaxBehavior.AdjustOnInput);\r\n }\r\n\r\n if (v === '') v = null;\r\n //update view\r\n const oldVal = this._value();\r\n this.setValue(v);\r\n return oldVal !== v;\r\n }\r\n rewriteValueAfterHostUpdate(): void {\r\n this._writeValue(this._value(), false);\r\n }\r\n\r\n //! input element methods\r\n get caretPos(): number {\r\n return this._ardHostCmp.inputEl()?.nativeElement.selectionEnd ?? this.stringValue().length;\r\n }\r\n set caretPos(pos: number) {\r\n const el = this._ardHostCmp.inputEl()?.nativeElement;\r\n el?.setSelectionRange(pos, pos);\r\n }\r\n\r\n //! constraints\r\n private _applyStandardConstraints(v: string | number | null, adjustMinMax: boolean): string {\r\n if (!v && v !== 0) return '';\r\n\r\n v = this._standardizeSeparator(v);\r\n v = this._removeDecimalPlaces(v);\r\n v = this._applyNumberConstraint(v);\r\n v = this._applyMaxDecimalPlaces(v);\r\n\r\n if (adjustMinMax) {\r\n v = this._applyMinMaxConstraints(v);\r\n }\r\n return v;\r\n }\r\n\r\n private _standardizeSeparator(v: string | number | null): string {\r\n if (!v && v !== 0) return '';\r\n const sep = this._ardHostCmp.decimalSeparator();\r\n if (!sep || sep === '.') return String(v);\r\n return String(v).replaceAll(sep, '.');\r\n }\r\n private _removeDecimalPlaces(v: string | number | null): string | number {\r\n if (!v && v !== 0) return '';\r\n if (this._ardHostCmp.allowFloat()) return v;\r\n\r\n return String(v).split('.')[0];\r\n }\r\n private _applyNumberConstraint(v: string | number): string {\r\n if (!v && v !== 0) return '';\r\n\r\n const input = String(v);\r\n const prev = this.stringValue();\r\n\r\n const transformerFn = this._ardHostCmp.allowFloat() ? ArdTransformer.Float : ArdTransformer.Integer;\r\n const { text, caretPos } = transformerFn(input, prev, this.caretPos);\r\n this.caretPos = caretPos;\r\n\r\n // return normalized text (dot separator) – display logic handles conversion\r\n return text;\r\n }\r\n private _applyMinMaxConstraints(v: string): string {\r\n if (!v) return '';\r\n\r\n // convert separator to dot for numeric comparison\r\n const sep = this._ardHostCmp.decimalSeparator();\r\n let numericString = v;\r\n if (sep && sep !== '.') {\r\n numericString = numericString.replaceAll(sep, '.');\r\n }\r\n const numericValue = Number(numericString);\r\n if (numericValue > this._ardHostCmp.max()) return this._ardHostCmp.max().toString();\r\n if (numericValue < this._ardHostCmp.min()) return this._ardHostCmp.min().toString();\r\n return v;\r\n }\r\n\r\n private _applyMaxDecimalPlaces(v: string | number): string {\r\n if (!v && v !== 0) return '';\r\n\r\n const maxDecimalPlaces = this._ardHostCmp.maxDecimalPlaces();\r\n if (!isDefined(maxDecimalPlaces) || maxDecimalPlaces === Infinity) return String(v);\r\n if (maxDecimalPlaces <= 0) return this._removeDecimalPlaces(v).toString();\r\n\r\n const text = String(v);\r\n const separatorIndex = text.indexOf('.');\r\n if (separatorIndex === -1) return text;\r\n\r\n const allowedEnd = separatorIndex + 1 + maxDecimalPlaces;\r\n if (text.length <= allowedEnd) return text;\r\n\r\n const capped = text.substring(0, allowedEnd);\r\n if (this.caretPos > capped.length) this.caretPos = capped.length;\r\n return capped;\r\n }\r\n}\r\n\r\nexport function escapeAndCreateRegex(str: string, flags?: string, negated = true): RegExp {\r\n str = str.replace(/([\\]]+)/g, '\\\\$1');\r\n return new RegExp(`[${negated ? '^' : ''}${str}]`, flags);\r\n}\r\n","import { AfterViewInit, computed, Directive, ElementRef, input, Input, output, viewChild } from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport {\r\n _FormFieldComponentBase,\r\n _FormFieldComponentDefaults,\r\n _formFieldComponentDefaults,\r\n} from '../_internal/form-field-component';\r\nimport { SimpleOneAxisAlignment } from './../types/alignment.types';\r\nimport { FormElementAppearance, FormElementVariant } from './../types/theming.types';\r\nimport { Nullable } from './../types/utility.types';\r\nimport { ArdInputType } from './input-types';\r\nimport { InputModel } from './input-utils';\r\n\r\nexport interface _SimpleInputComponentDefaults extends _FormFieldComponentDefaults {\r\n appearance: FormElementAppearance;\r\n variant: FormElementVariant;\r\n compact: boolean;\r\n placeholder: string;\r\n alignText: SimpleOneAxisAlignment;\r\n clearable: boolean;\r\n clearButtonTitle: string;\r\n inputAttrs: Record<string, any>;\r\n maxLength: Nullable<number>;\r\n autoTrim: boolean;\r\n type: ArdInputType;\r\n}\r\n\r\nexport const _simpleInputComponentDefaults: _SimpleInputComponentDefaults = {\r\n ..._formFieldComponentDefaults,\r\n appearance: FormElementAppearance.Outlined,\r\n variant: FormElementVariant.Rounded,\r\n compact: false,\r\n placeholder: '',\r\n alignText: SimpleOneAxisAlignment.Left,\r\n clearable: false,\r\n clearButtonTitle: 'Clear',\r\n inputAttrs: {},\r\n maxLength: undefined,\r\n autoTrim: false,\r\n type: 'text',\r\n};\r\n\r\n@Directive()\r\nexport abstract class _SimpleInputComponentBase extends _FormFieldComponentBase implements AfterViewInit {\r\n protected override readonly _DEFAULTS!: _SimpleInputComponentDefaults;\r\n\r\n //! input view\r\n readonly textInputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n protected readonly inputModel = new InputModel(this);\r\n private _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._wasViewInit = true;\r\n this._setInputAttributes();\r\n //set the value\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n delete this._valueBeforeInit;\r\n }\r\n }\r\n\r\n readonly placeholder = input<string>(this._DEFAULTS.placeholder);\r\n readonly clearButtonTitle = input<string>(this._DEFAULTS.clearButtonTitle);\r\n\r\n //! prefix & suffix\r\n abstract readonly prefixTemplate: any;\r\n abstract readonly suffixTemplate: any;\r\n\r\n //! placeholder\r\n abstract readonly placeholderTemplate: any;\r\n\r\n readonly shouldDisplayPlaceholder = computed<boolean>(() => Boolean(this.placeholder()) && !this.inputModel.value());\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(this._DEFAULTS.appearance);\r\n readonly variant = input<FormElementVariant>(this._DEFAULTS.variant);\r\n readonly alignText = input<SimpleOneAxisAlignment>(this._DEFAULTS.alignText);\r\n\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-text-align-${this.alignText()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.clearable() ? 'ard-clearable' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! other inputs\r\n readonly type = input<ArdInputType>(this._DEFAULTS.type);\r\n\r\n readonly inputAttrs = input<Record<string, any>>(this._DEFAULTS.inputAttrs);\r\n\r\n //! number attribute setters/getters\r\n readonly maxLength = input<Nullable<number>, any>(this._DEFAULTS.maxLength, {\r\n transform: v => coerceNumberProperty(v, this._DEFAULTS.maxLength),\r\n });\r\n\r\n readonly maxLengthAsInt = computed<number>(() => this.maxLength() ?? 2_147_483_647);\r\n\r\n //! no-value attribute setters/getters\r\n readonly clearable = input<boolean, BooleanLike>(this._DEFAULTS.clearable, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly autoTrim = input<boolean, BooleanLike>(this._DEFAULTS.autoTrim, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n this.inputModel.writeValue(v);\r\n }\r\n //! value two-way binding\r\n protected _valueBeforeInit?: string | null = null;\r\n @Input()\r\n set value(v: string | null) {\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.writeValue(v);\r\n }\r\n get value(): string | null {\r\n return this.inputModel.value();\r\n }\r\n readonly valueChange = output<string | null>();\r\n\r\n //! event emitters\r\n readonly inputEvent = output<string | null>({ alias: 'input' });\r\n readonly changeEvent = output<string | null>({ alias: 'change' });\r\n readonly clearEvent = output<MouseEvent>({ alias: 'clear' });\r\n\r\n //! event handlers\r\n onInput(newVal: string): void {\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n const valueHasChanged = this.inputModel.writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitInput();\r\n }\r\n protected _emitInput(): void {\r\n this._onChangeRegistered?.(this.value);\r\n this.inputEvent.emit(this.value);\r\n this.valueChange.emit(this.value);\r\n }\r\n //focus, blur, change\r\n onFocusMaster(event: FocusEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n this.onFocus(event);\r\n }\r\n onBlurMaster(event: FocusEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n this.onBlur(event);\r\n\r\n if (!this.autoTrim()) return;\r\n\r\n this.inputModel.trim();\r\n this._emitChange();\r\n this._emitInput();\r\n }\r\n onChange(event: Event): void {\r\n event.stopPropagation();\r\n this._emitChange();\r\n }\r\n protected _emitChange(): void {\r\n this.changeEvent.emit(this.inputModel.value());\r\n }\r\n // clear button\r\n readonly shouldShowClearButton = computed<boolean>(\r\n () => this.clearable() && !this.disabled() && !this.readonly() && Boolean(this.inputModel.value())\r\n );\r\n onClearButtonClick(event: MouseEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n event.stopPropagation();\r\n this.inputModel.clear();\r\n this._emitChange();\r\n this._emitInput();\r\n this.clearEvent.emit(event);\r\n this.focus();\r\n }\r\n\r\n //! copy event\r\n onCopy(event: ClipboardEvent): void {\r\n if (\r\n this.value &&\r\n //does the selection cover the entire input\r\n ((this.textInputEl()?.nativeElement.selectionStart === 0 &&\r\n this.textInputEl()?.nativeElement.selectionEnd === this.textInputEl()?.nativeElement.value.length) ||\r\n //or is zero-wide\r\n this.textInputEl()?.nativeElement.selectionStart === this.textInputEl()?.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', this.value);\r\n event.preventDefault();\r\n }\r\n }\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.textInputEl()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex()),\r\n type: this.type(),\r\n ...this.inputAttrs(),\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant } from '../../dropdown-panel/dropdown-panel.types';\r\nimport { ArdFormFieldFramePrefixSuffix } from '../../form-field-frame';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { _SimpleInputComponentDefaults, _simpleInputComponentDefaults } from '../_simple-input-base';\r\n\r\nexport interface ArdAutocompleteInputDefaults extends _SimpleInputComponentDefaults {\r\n suggValueFrom: string;\r\n suggLabelFrom: string;\r\n suggestionsLoadingText: string;\r\n charlist: string | undefined;\r\n charlistCaseInsensitive: boolean;\r\n dropdownAppearance: Nullable<DropdownPanelAppearance>;\r\n dropdownVariant: Nullable<DropdownPanelVariant>;\r\n PrefixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n SuffixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n}\r\n\r\nconst _inputDefaults: ArdAutocompleteInputDefaults = {\r\n ..._simpleInputComponentDefaults,\r\n suggValueFrom: 'value',\r\n suggLabelFrom: 'label',\r\n suggestionsLoadingText: 'Loading...',\r\n charlist: undefined,\r\n charlistCaseInsensitive: false,\r\n dropdownAppearance: undefined,\r\n dropdownVariant: undefined,\r\n PrefixComponent: undefined,\r\n SuffixComponent: undefined,\r\n};\r\n\r\nexport const ARD_AUTOCOMPLETE_INPUT_DEFAULTS = new InjectionToken<ArdAutocompleteInputDefaults>('ard-autocomplete-input-defaults', {\r\n factory: () => ({\r\n ..._inputDefaults,\r\n }),\r\n});\r\n\r\nexport function provideAutocompleteInputDefaults(config: Partial<ArdAutocompleteInputDefaults>): Provider {\r\n return { provide: ARD_AUTOCOMPLETE_INPUT_DEFAULTS, useValue: { ..._inputDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { FormFieldFrameTemplateContext } from '../../form-field-frame';\r\nimport { ArdSimplestStorageItem, OptionContext } from '../../types/item-storage.types';\r\n\r\n@Directive({ standalone: false, selector: 'ard-autocomplete-input > ng-template[ard-suggestion-tmp]' })\r\nexport class ArdAutocompleteInputSuggestionTemplateDirective {\r\n constructor(public template: TemplateRef<OptionContext<ArdSimplestStorageItem>>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-autocomplete-input > ng-template[ard-placeholder-tmp]' })\r\nexport class ArdAutocompleteInputPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-autocomplete-input > ng-template[ard-loading-tmp]' })\r\nexport class ArdAutocompleteInputLoadingTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-autocomplete-input > ng-template[ard-prefix-tmp]' })\r\nexport class ArdAutocompleteInputPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-autocomplete-input > ng-template[ard-suffix-tmp]' })\r\nexport class ArdAutocompleteInputSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n","import { computed, reflectComponentType, Signal, Type } from '@angular/core';\r\n\r\nexport function contextToInputs<T>(context: Signal<Record<string, any>>, component: Type<T> | undefined): Signal<Partial<T>> {\r\n let allowed: Set<string> | undefined;\r\n return computed(() => {\r\n if (!component) return {};\r\n\r\n if (!allowed) {\r\n const meta = reflectComponentType(component);\r\n if (!meta) return {};\r\n\r\n allowed = new Set(meta.inputs.map(i => i.templateName));\r\n }\r\n return Object.fromEntries(Object.entries(context()).filter(([key]) => allowed!.has(key))) as Partial<T>;\r\n });\r\n}\r\n\r\nexport function contextToInputsMultiple<T, V>(\r\n context: Signal<(value: V) => Record<string, any>>,\r\n component: Type<T> | undefined\r\n): Signal<(value: V) => Partial<T>> {\r\n let allowed: Set<string> | undefined;\r\n return computed(() => {\r\n if (!component) return () => ({});\r\n\r\n if (!allowed) {\r\n const meta = reflectComponentType(component);\r\n if (!meta) return () => ({});\r\n\r\n allowed = new Set(meta.inputs.map(i => i.templateName));\r\n }\r\n return (value: V) => Object.fromEntries(Object.entries(context()(value)).filter(([key]) => allowed!.has(key))) as Partial<T>;\r\n });\r\n}\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\r\nimport { _FocusableComponentDefaults, _focusableComponentDefaults } from '../_internal/focusable-component';\r\nimport { FormElementAppearance, FormElementVariant } from './../types/theming.types';\r\nimport { ArdFormFieldFramePrefixSuffix } from './form-field-frame.types';\r\n\r\nexport interface ArdFormFieldFrameDefaults extends _FocusableComponentDefaults {\r\n appearance: FormElementAppearance;\r\n variant: FormElementVariant;\r\n compact: boolean;\r\n PrefixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n SuffixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n}\r\n\r\nconst _formFieldFrameDefaults: ArdFormFieldFrameDefaults = {\r\n ..._focusableComponentDefaults,\r\n appearance: FormElementAppearance.Outlined,\r\n variant: FormElementVariant.Rounded,\r\n compact: false,\r\n PrefixComponent: undefined,\r\n SuffixComponent: undefined,\r\n};\r\n\r\nexport const ARD_FORM_FIELD_FRAME_DEFAULTS = new InjectionToken<ArdFormFieldFrameDefaults>('ard-form-field-frame-defaults', {\r\n factory: () => ({\r\n ..._formFieldFrameDefaults,\r\n }),\r\n});\r\n\r\nexport function provideFormFieldFrameDefaults(config: Partial<ArdFormFieldFrameDefaults>): Provider {\r\n return { provide: ARD_FORM_FIELD_FRAME_DEFAULTS, useValue: { ..._formFieldFrameDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { FormFieldFrameTemplateContext } from './form-field-frame.types';\r\n\r\n@Directive({ standalone: false, selector: 'ard-form-field-frame > ng-template[ard-prefix-tmp]' })\r\nexport class ArdFormFieldPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-form-field-frame > ng-template[ard-suffix-tmp]' })\r\nexport class ArdFormFieldSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n Inject,\r\n Input,\r\n input,\r\n TemplateRef,\r\n Type,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { delay, startWith, Subject } from 'rxjs';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { contextToInputs } from '../_internal/utils/context-to-inputs';\r\nimport { FormElementAppearance, FormElementVariant } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ARD_FORM_FIELD_FRAME_DEFAULTS, ArdFormFieldFrameDefaults } from './form-field-frame.defaults';\r\nimport { ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective } from './form-field-frame.directives';\r\nimport { ArdFormFieldFramePrefixSuffix, FormFieldFrameTemplateContext } from './form-field-frame.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-form-field-frame',\r\n templateUrl: './form-field-frame.component.html',\r\n styleUrls: ['./form-field-frame.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumFormFieldFrameComponent extends _FocusableComponentBase {\r\n protected override readonly _DEFAULTS!: ArdFormFieldFrameDefaults;\r\n constructor(@Inject(ARD_FORM_FIELD_FRAME_DEFAULTS) defaults: ArdFormFieldFrameDefaults) {\r\n super(defaults);\r\n }\r\n\r\n readonly hasError = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly isSuccess = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! focused state\r\n @Input({ alias: 'isFocused' })\r\n set _setIsFocused(v: boolean) {\r\n this.isFocused.set(v);\r\n }\r\n\r\n //! appearance\r\n /**\r\n * The appearance of the component, aka the styling.\r\n */\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n /**\r\n * The variant of the component, aka the shape.\r\n */\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n\r\n /**\r\n * Whether to use the compact styling or not.\r\n */\r\n readonly compact = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n private readonly _enableTransitions = toSignal(new Subject<boolean>().asObservable().pipe(startWith(true), delay(0)));\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.hasError() ? 'ard-has-error' : '',\r\n this.isSuccess() ? 'ard-is-success' : '',\r\n this.isFocused() && !this.readonly() ? 'ard-focused' : 'ard-unfocused',\r\n this._enableTransitions() ? 'ard-enable-transitions' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplateInput = input<Nullable<TemplateRef<FormFieldFrameTemplateContext>>>(undefined, {\r\n alias: 'prefixTemplate',\r\n });\r\n readonly suffixTemplateInput = input<Nullable<TemplateRef<FormFieldFrameTemplateContext>>>(undefined, {\r\n alias: 'suffixTemplate',\r\n });\r\n readonly prefixTemplate = contentChild(ArdFormFieldPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdFormFieldSuffixTemplateDirective);\r\n\r\n readonly prefixSuffixTemplateContext = computed<FormFieldFrameTemplateContext>(() => ({\r\n hasError: this.hasError(),\r\n disabled: this.disabled(),\r\n readonly: this.readonly(),\r\n isSuccess: this.isSuccess(),\r\n isFocused: this.isFocused(),\r\n }));\r\n\r\n readonly prefixComponentInput = input<Nullable<Type<ArdFormFieldFramePrefixSuffix>>>(undefined, {\r\n alias: 'prefixComponent',\r\n });\r\n readonly suffixComponentInput = input<Nullable<Type<ArdFormFieldFramePrefixSuffix>>>(undefined, {\r\n alias: 'suffixComponent',\r\n });\r\n readonly prefixComponent = this._DEFAULTS.PrefixComponent;\r\n readonly suffixComponent = this._DEFAULTS.SuffixComponent;\r\n\r\n readonly prefixComponentInputs = contextToInputs(this.prefixSuffixTemplateContext, this.prefixComponent);\r\n readonly suffixComponentInputs = contextToInputs(this.prefixSuffixTemplateContext, this.suffixComponent);\r\n}\r\n","<div\r\n class=\"ard-form-field-frame\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-form-field-overlay\"></div>\r\n @if (prefixTemplateInput() ?? prefixTemplate()) {\r\n <div class=\"ard-form-field-prefix-container\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"prefixTemplateInput() ?? prefixTemplate()?.template ?? null\"\r\n [ngTemplateOutletContext]=\"prefixSuffixTemplateContext()\"\r\n />\r\n </div>\r\n } @else if (prefixComponentInput() || prefixComponent) {\r\n <div class=\"ard-form-field-prefix-container\">\r\n <ng-template\r\n [ngComponentOutlet]=\"prefixComponentInput() ?? prefixComponent ?? null\"\r\n [ngComponentOutletInputs]=\"prefixComponentInputs()\"\r\n />\r\n </div>\r\n }\r\n <div class=\"ard-form-field-content-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (suffixTemplateInput() ?? suffixTemplate()) {\r\n <div class=\"ard-form-field-suffix-container\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"suffixTemplateInput() ?? suffixTemplate()?.template ?? null\"\r\n [ngTemplateOutletContext]=\"prefixSuffixTemplateContext()\"\r\n />\r\n </div>\r\n } @else if (suffixComponentInput() || suffixComponent) {\r\n <div class=\"ard-form-field-suffix-container\">\r\n <ng-template\r\n [ngComponentOutlet]=\"suffixComponentInput() ?? suffixComponent ?? null\"\r\n [ngComponentOutletInputs]=\"suffixComponentInputs()\"\r\n />\r\n </div>\r\n }\r\n</div>\r\n","import { Component } from '@angular/core';\r\nimport { _FocusableComponentBase, _focusableComponentDefaults } from './../focusable-component';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-clear-button',\r\n templateUrl: './clear-button.component.html',\r\n styleUrls: ['./clear-button.component.scss'],\r\n})\r\nexport class _ClearButtonComponent extends _FocusableComponentBase {\r\n constructor() {\r\n super(_focusableComponentDefaults);\r\n }\r\n}\r\n","<button\r\n #focusableElement\r\n class=\"ard-clear-btn-wrapper\"\r\n type=\"button\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div\r\n class=\"ard-clear-btn\"\r\n aria-hidden=\"true\"\r\n ></div>\r\n</button>\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant } from './dropdown-panel.types';\r\n\r\nexport interface ArdDropdownPanelDefaults {\r\n filterValue: string;\r\n appearance: DropdownPanelAppearance;\r\n variant: DropdownPanelVariant;\r\n compact: boolean;\r\n}\r\n\r\nconst _dropdownPanelDefaults: ArdDropdownPanelDefaults = {\r\n filterValue: '',\r\n appearance: DropdownPanelAppearance.Raised,\r\n variant: DropdownPanelVariant.Rounded,\r\n compact: false,\r\n};\r\n\r\nexport const ARD_DROPDOWN_PANEL_DEFAULTS = new InjectionToken<ArdDropdownPanelDefaults>('ard-dropdown-panel-defaults', {\r\n factory: () => ({\r\n ..._dropdownPanelDefaults,\r\n }),\r\n});\r\n\r\nexport function provideDropdownPanelDefaults(config: Partial<ArdDropdownPanelDefaults>): Provider {\r\n return { provide: ARD_DROPDOWN_PANEL_DEFAULTS, useValue: { ..._dropdownPanelDefaults, ...config } };\r\n}\r\n","import {\r\n AfterViewChecked,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ARD_DROPDOWN_PANEL_DEFAULTS } from './dropdown-panel.defaults';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant, ScrollAlignment } from './dropdown-panel.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-dropdown-panel',\r\n templateUrl: './dropdown-panel.component.html',\r\n styleUrls: ['./dropdown-panel.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class.ard-open]': 'isOpen()',\r\n },\r\n})\r\nexport class ArdiumDropdownPanelComponent implements AfterViewChecked {\r\n private readonly _DEFAULTS = inject(ARD_DROPDOWN_PANEL_DEFAULTS);\r\n\r\n private readonly _scrollElementRef = viewChild<ElementRef<HTMLElement>>('scroll');\r\n private readonly _scrollEl = computed(() => this._scrollElementRef()?.nativeElement);\r\n\r\n //! options\r\n readonly panelId = input<string>();\r\n readonly headerTemplate = input<TemplateRef<any> | null>(null);\r\n readonly footerTemplate = input<TemplateRef<any> | null>(null);\r\n readonly filterValue = input<Nullable<string>>(this._DEFAULTS.filterValue);\r\n\r\n //! appearance\r\n readonly appearance = input<DropdownPanelAppearance>(this._DEFAULTS.appearance);\r\n readonly variant = input<DropdownPanelVariant>(this._DEFAULTS.variant);\r\n\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string =>\r\n [`ard-appearance-${this.appearance()}`, `ard-variant-${this.variant()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! states\r\n readonly isOpen = input.required<boolean>();\r\n\r\n //! output events\r\n readonly scrollEvent = output<{\r\n start: number;\r\n end: number;\r\n }>({ alias: 'scroll' });\r\n readonly scrollToEndEvent = output({ alias: 'scrollToEnd' });\r\n\r\n //! event handlers\r\n onScroll() {\r\n const start = this._scrollTop;\r\n const end = this._scrollBottom;\r\n this.scrollEvent.emit({ start, end });\r\n\r\n if (end === this._scrollEl()?.scrollHeight) {\r\n this.scrollToEndEvent.emit();\r\n }\r\n }\r\n\r\n //! hooks\r\n ngAfterViewChecked(): void {\r\n if (!this._currentScrollToDirection) return;\r\n\r\n const recent = this._scrollEl()?.querySelector<HTMLElement>('.ard-option-highlighted-recent');\r\n if (!recent) return;\r\n\r\n const isInView = this._isElementInView(recent);\r\n if (!isInView) {\r\n this._scrollToElement(recent, this._currentScrollToDirection);\r\n }\r\n\r\n this._currentScrollToDirection = null;\r\n }\r\n\r\n //! scroll position\r\n private get _scrollTop(): number {\r\n return this._scrollEl()?.scrollTop ?? 0;\r\n }\r\n private set _scrollTop(value: number) {\r\n const el = this._scrollEl();\r\n if (!el) return;\r\n el.scrollTop = value;\r\n }\r\n private get _scrollBottom(): number {\r\n return this._scrollTop + (this._scrollEl()?.getBoundingClientRect().height ?? 0);\r\n }\r\n\r\n //! scroll to element methods\r\n private _scrollToElement(el: HTMLElement, alignTo: ScrollAlignment = 'center'): void {\r\n const scrollEl = this._scrollEl();\r\n if (!scrollEl) return;\r\n\r\n const parentContentRect = this._getContentRect(scrollEl);\r\n const elementRect = el.getBoundingClientRect();\r\n\r\n switch (alignTo) {\r\n case 'top':\r\n this._scrollTop += elementRect.top - parentContentRect.top;\r\n break;\r\n case 'bottom':\r\n this._scrollTop += elementRect.bottom - parentContentRect.bottom;\r\n break;\r\n case 'center':\r\n this._scrollTop += (elementRect.top + elementRect.bottom) / 2 - parentContentRect.top - parentContentRect.height / 2;\r\n break;\r\n }\r\n }\r\n\r\n private _currentScrollToDirection: ScrollAlignment | null = null;\r\n scrollToRecentlyHighlighted(direction: ScrollAlignment): void {\r\n this._currentScrollToDirection = direction;\r\n }\r\n private _isElementInView(el: HTMLElement): boolean {\r\n const scrollEl = this._scrollEl();\r\n if (!scrollEl) return true;\r\n\r\n const parentContentRect = this._getContentRect(scrollEl);\r\n const elementRect = el.getBoundingClientRect();\r\n return elementRect.bottom < parentContentRect.bottom && elementRect.top > parentContentRect.top;\r\n }\r\n private _getContentRect(el: HTMLElement): DOMRect {\r\n const elRect = el.getBoundingClientRect();\r\n const elPadding = window.getComputedStyle(el).getPropertyValue('padding');\r\n const paddings = elPadding.split(' ').map(v => (v ? parseFloat(v) : null));\r\n const topPadd = paddings[0] ?? 0;\r\n const rightPadd = paddings[1] ?? topPadd;\r\n const bottomPadd = paddings[2] ?? topPadd;\r\n const leftPadd = paddings[3] ?? rightPadd ?? topPadd;\r\n\r\n return new DOMRect(\r\n elRect.x + leftPadd,\r\n elRect.y + topPadd,\r\n elRect.width - leftPadd - rightPadd,\r\n elRect.height - topPadd - bottomPadd\r\n );\r\n }\r\n}\r\n","<div\r\n class=\"ard-dropdown-panel-container\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @if (headerTemplate()) {\r\n <div class=\"ard-dropdown-header\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"headerTemplate()\"\r\n [ngTemplateOutletContext]=\"{ searchTerm: filterValue() }\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n <div\r\n #scroll\r\n class=\"ard-dropdown-panel-content\"\r\n [attr.id]=\"panelId()\"\r\n (scroll)=\"onScroll()\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n @if (footerTemplate()) {\r\n <div class=\"ard-dropdown-footer\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"footerTemplate()\"\r\n [ngTemplateOutletContext]=\"{ searchTerm: filterValue() }\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n</div>\r\n","import { ConnectedPosition, Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Inject,\r\n Input,\r\n TemplateRef,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanLike, coerceArrayProperty, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { isString } from 'simple-bool';\r\nimport { SimplestItemStorage, SimplestItemStorageHost } from '../../_internal/item-storages/simplest-item-storage';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant } from '../../dropdown-panel/dropdown-panel.types';\r\nimport { ARD_FORM_FIELD_CONTROL } from '../../form-field/form-field-child.token';\r\nimport { ArdSimplestStorageItem } from '../../types/item-storage.types';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { _SimpleInputComponentBase } from '../_simple-input-base';\r\nimport { OptionContext } from './../../types/item-storage.types';\r\nimport { InputModel, InputModelHost, escapeAndCreateRegex } from './../input-utils';\r\nimport { ARD_AUTOCOMPLETE_INPUT_DEFAULTS, ArdAutocompleteInputDefaults } from './autocomplete-input.defaults';\r\nimport {\r\n ArdAutocompleteInputLoadingTemplateDirective,\r\n ArdAutocompleteInputPlaceholderTemplateDirective,\r\n ArdAutocompleteInputPrefixTemplateDirective,\r\n ArdAutocompleteInputSuffixTemplateDirective,\r\n ArdAutocompleteInputSuggestionTemplateDirective,\r\n} from './autocomplete-input.directives';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-autocomplete-input',\r\n templateUrl: './autocomplete-input.component.html',\r\n styleUrls: ['./autocomplete-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumAutocompleteInputComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ARD_FORM_FIELD_CONTROL,\r\n useExisting: ArdiumAutocompleteInputComponent,\r\n },\r\n ],\r\n})\r\nexport class ArdiumAutocompleteInputComponent\r\n extends _SimpleInputComponentBase\r\n implements InputModelHost, SimplestItemStorageHost, AfterViewInit\r\n{\r\n private readonly overlay = inject(Overlay);\r\n private readonly scrollStrategyOpts = inject(ScrollStrategyOptions);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n\r\n protected override readonly _DEFAULTS!: ArdAutocompleteInputDefaults;\r\n public readonly DEFAULTS!: ArdAutocompleteInputDefaults;\r\n constructor(@Inject(ARD_AUTOCOMPLETE_INPUT_DEFAULTS) defaults: ArdAutocompleteInputDefaults) {\r\n super(defaults);\r\n\r\n this.DEFAULTS = this._DEFAULTS;\r\n }\r\n\r\n //! input view\r\n protected override readonly inputModel = new InputModel(this);\r\n\r\n //! allowlist/denylist of characters\r\n //use standard string for denylist, prepend with ^ for allowlist\r\n readonly charlistFromInput = input<RegExp | undefined, string>(\r\n this._DEFAULTS.charlist\r\n ? escapeAndCreateRegex(this._DEFAULTS.charlist, '', this._DEFAULTS.charlist.startsWith('^'))\r\n : undefined,\r\n {\r\n alias: 'charlist',\r\n transform: v => {\r\n if (!isString(v)) {\r\n throw new Error('ARD-FT0033: [charlist] must be a non-empty string, got \"\".');\r\n }\r\n const negated = v.startsWith('^');\r\n return escapeAndCreateRegex(v, '', !negated);\r\n },\r\n }\r\n );\r\n readonly charlistCaseInsensitive = input<boolean, BooleanLike>(this._DEFAULTS.charlistCaseInsensitive, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n readonly charlist = computed<RegExp | undefined>(() => {\r\n const c = this.charlistFromInput();\r\n if (!this.charlistCaseInsensitive() || !c) {\r\n return c;\r\n }\r\n return new RegExp(c.source, 'i');\r\n });\r\n\r\n //! autocomplete\r\n readonly autocomplete = input<Nullable<string>>(undefined);\r\n\r\n readonly shouldDisplayAutocomplete = computed<boolean>(() => !this.disabled() && Boolean(this.autocomplete()));\r\n\r\n //autocomplete event\r\n readonly acceptAutocompleteEvent = output({ alias: 'acceptAutocomplete' });\r\n\r\n //! prefix & suffix\r\n override readonly prefixTemplate = contentChild(ArdAutocompleteInputPrefixTemplateDirective);\r\n override readonly suffixTemplate = contentChild(ArdAutocompleteInputSuffixTemplateDirective);\r\n\r\n readonly prefixComponent = this._DEFAULTS.PrefixComponent;\r\n readonly suffixComponent = this._DEFAULTS.SuffixComponent;\r\n\r\n //! placeholder\r\n override readonly placeholderTemplate = contentChild(ArdAutocompleteInputPlaceholderTemplateDirective);\r\n\r\n //! suggestions\r\n readonly suggestionStorage = new SimplestItemStorage(this);\r\n\r\n readonly valueFrom = input<Nullable<string>>(this._DEFAULTS.suggLabelFrom, { alias: 'suggValueFrom' });\r\n readonly labelFrom = input<Nullable<string>>(this._DEFAULTS.suggLabelFrom, { alias: 'suggLabelFrom' });\r\n\r\n readonly acceptSuggestionEvent = output<any>({ alias: 'acceptSuggestion' });\r\n\r\n readonly suggestionItems = this.suggestionStorage.items;\r\n\r\n @Input()\r\n set suggestions(value: any) {\r\n if (!Array.isArray(value)) value = coerceArrayProperty(value);\r\n\r\n this.suggestionStorage.setItems(value);\r\n\r\n this._suggestionDropdowOpen.set(true);\r\n this.suggestionStorage.highlightFirstItem();\r\n }\r\n\r\n private readonly _suggestionDropdowOpen = signal<boolean>(false);\r\n\r\n readonly shouldDisplaySuggestions = computed(\r\n () => !this.disabled() && (this.suggestionItems().length > 0 || this.areSuggestionsLoading()) && this._suggestionDropdowOpen()\r\n );\r\n\r\n readonly areSuggestionsLoading = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly suggestionsLoadingText = input<string>(this._DEFAULTS.suggestionsLoadingText);\r\n\r\n readonly suggestionTemplate = contentChild(ArdAutocompleteInputSuggestionTemplateDirective);\r\n readonly suggestionLoadingTemplate = contentChild(ArdAutocompleteInputLoadingTemplateDirective);\r\n\r\n //! suggestions overlay\r\n readonly dropdownHost = viewChild<ElementRef<HTMLDivElement>>('suggestionsHost');\r\n readonly dropdownTemplate = viewChild('suggestionsTemplate', { read: TemplateRef });\r\n\r\n private dropdownOverlay!: OverlayRef;\r\n\r\n override ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n const strategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.dropdownHost()!)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n } as ConnectedPosition,\r\n ])\r\n .withPush(false);\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n scrollStrategy: this.scrollStrategyOpts.block(),\r\n hasBackdrop: false,\r\n });\r\n\r\n this.dropdownOverlay = this.overlay.create(config);\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate()!, this.viewContainerRef);\r\n this.dropdownOverlay.attach(portal);\r\n\r\n this.setOverlaySize();\r\n }\r\n\r\n @HostListener('window:resize')\r\n setOverlaySize(): void {\r\n const rect = this.dropdownHost()?.nativeElement.getBoundingClientRect();\r\n this.dropdownOverlay.updateSize({ width: rect?.width });\r\n }\r\n\r\n readonly optionContextGenerator = computed<(item: ArdSimplestStorageItem) => OptionContext<ArdSimplestStorageItem>>(() => item => ({\r\n $implicit: item,\r\n item,\r\n index: item.index,\r\n value: item.value,\r\n label: item.label,\r\n selected: item.selected,\r\n highlighted: item.highlighted,\r\n itemData: item.itemData,\r\n }));\r\n\r\n //! suggestion-highligh-related\r\n private _isMouseBeingUsed = false;\r\n @HostListener('mousemove')\r\n onMouseMove() {\r\n this._isMouseBeingUsed = true;\r\n }\r\n onSuggestionMouseEnter(item: ArdSimplestStorageItem, event: MouseEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (!this._isMouseBeingUsed) return;\r\n this.suggestionStorage.highlightItem(item);\r\n\r\n event.stopPropagation();\r\n }\r\n onSuggestionMouseLeave(item: ArdSimplestStorageItem, event: MouseEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (!this._isMouseBeingUsed) return;\r\n this.suggestionStorage.unhighlightItem(item);\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n //! suggestion selection\r\n selectSuggestion(item: ArdSimplestStorageItem, event: MouseEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n event.stopPropagation();\r\n\r\n this._selectSuggestion(item);\r\n }\r\n private _selectSuggestion(item: ArdSimplestStorageItem): void {\r\n const selected = this.suggestionStorage.selectItem(item);\r\n this.writeValue(selected ?? '');\r\n\r\n this.acceptSuggestionEvent.emit(selected);\r\n\r\n //important to do those two things in this exact order\r\n this.focus();\r\n this._suggestionDropdowOpen.set(false);\r\n }\r\n handleSuggestionClickOutside(event: MouseEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n\r\n const target = event.target as HTMLElement;\r\n if (this.viewContainerRef.element.nativeElement.contains(target)) return;\r\n\r\n this._suggestionDropdowOpen.set(false);\r\n }\r\n //! suggestion appearance\r\n readonly dropdownAppearance = input<Nullable<DropdownPanelAppearance>>(this._DEFAULTS.dropdownAppearance);\r\n readonly dropdownAppearanceOrDefault = computed(() => {\r\n if (this.dropdownAppearance()) return this.dropdownAppearance()!;\r\n if (this.appearance() === FormElementAppearance.Outlined) return DropdownPanelAppearance.Outlined;\r\n return DropdownPanelAppearance.Raised;\r\n });\r\n readonly dropdownVariant = input<Nullable<DropdownPanelVariant>>(this._DEFAULTS.dropdownVariant);\r\n readonly dropdownVariantOrDefault = computed(() => {\r\n if (this.dropdownVariant()) return this.dropdownVariant()!;\r\n const variant = this.variant();\r\n if (variant === FormElementVariant.Pill) return DropdownPanelVariant.Rounded;\r\n return variant;\r\n });\r\n\r\n //! focus override\r\n override onFocus(event: FocusEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n this._suggestionDropdowOpen.set(true);\r\n if (!this.suggestionStorage.highlightedItem()) this.suggestionStorage.highlightFirstItem();\r\n\r\n super.onFocus(event);\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n \r\n switch (event.code) {\r\n case 'Enter': {\r\n this._onTabOrEnterPress(event);\r\n this._onEnterPress(event);\r\n return;\r\n }\r\n case 'Tab': {\r\n this._onTabOrEnterPress(event);\r\n return;\r\n }\r\n case 'ArrowDown': {\r\n this._onArrowDownPress(event);\r\n return;\r\n }\r\n case 'ArrowUp': {\r\n this._onArrowUpPress(event);\r\n return;\r\n }\r\n }\r\n }\r\n protected _onTabOrEnterPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplayAutocomplete()) return;\r\n event.preventDefault();\r\n\r\n this.onInput(this.autocomplete() ?? '');\r\n this.acceptAutocompleteEvent.emit();\r\n }\r\n private _onEnterPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n const item = this.suggestionStorage.highlightedItem();\r\n if (!item) return;\r\n\r\n event.preventDefault();\r\n this._selectSuggestion(item);\r\n }\r\n private _onArrowDownPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed = false;\r\n\r\n this.suggestionStorage.highlightNextItem(+1);\r\n }\r\n private _onArrowUpPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed = false;\r\n\r\n this.suggestionStorage.highlightNextItem(-1);\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n [prefixComponent]=\"prefixComponent\"\r\n [suffixComponent]=\"suffixComponent\"\r\n>\r\n <div\r\n class=\"ard-autocomplete-input\"\r\n #suggestionsHost\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayAutocomplete()) {\r\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\r\n }\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"htmlId()\"\r\n [attr.name]=\"htmlName()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [maxLength]=\"maxLengthAsInt()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\r\n role=\"listbox\"\r\n [compact]=\"compact()\"\r\n aria-label=\"Suggestions\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"shouldDisplaySuggestions()\"\r\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n >\r\n @for (item of suggestionItems(); track item.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-selected]=\"item.selected\"\r\n [class.ard-option-highlighted]=\"item.highlighted\"\r\n [attr.aria-selected]=\"item.selected\"\r\n (click)=\"selectSuggestion(item, $event)\"\r\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\r\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\r\n >\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ item.label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"suggestionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"optionContextGenerator()(item)\"\r\n ></ng-template>\r\n </span>\r\n </div>\r\n }\r\n @if (areSuggestionsLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ suggestionsLoadingText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate()?.template || defaultLoadingPlaceholderTemplate\"></ng-template>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { _ClearButtonComponent } from './clear-button.component';\r\n\r\n@NgModule({\r\n declarations: [_ClearButtonComponent],\r\n imports: [CommonModule],\r\n exports: [_ClearButtonComponent],\r\n})\r\nexport class _ClearButtonModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumDropdownPanelComponent } from './dropdown-panel.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumDropdownPanelComponent],\r\n imports: [CommonModule],\r\n exports: [ArdiumDropdownPanelComponent],\r\n})\r\nexport class ArdiumDropdownPanelModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumFormFieldFrameComponent } from './form-field-frame.component';\r\nimport { ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective } from './form-field-frame.directives';\r\n\r\n@NgModule({\r\n declarations: [ArdiumFormFieldFrameComponent, ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective],\r\n imports: [CommonModule],\r\n exports: [ArdiumFormFieldFrameComponent, ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective],\r\n})\r\nexport class ArdiumFormFieldFrameModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumClickOutsideModule } from '@ardium-ui/devkit';\r\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\r\nimport { ArdiumDropdownPanelModule } from '../../dropdown-panel/dropdown-panel.module';\r\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\r\nimport { ArdiumAutocompleteInputComponent } from './autocomplete-input.component';\r\nimport { ArdAutocompleteInputLoadingTemplateDirective, ArdAutocompleteInputPlaceholderTemplateDirective, ArdAutocompleteInputPrefixTemplateDirective, ArdAutocompleteInputSuffixTemplateDirective, ArdAutocompleteInputSuggestionTemplateDirective } from './autocomplete-input.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumAutocompleteInputComponent,\r\n ArdAutocompleteInputSuggestionTemplateDirective,\r\n ArdAutocompleteInputPlaceholderTemplateDirective,\r\n ArdAutocompleteInputLoadingTemplateDirective,\r\n ArdAutocompleteInputPrefixTemplateDirective,\r\n ArdAutocompleteInputSuffixTemplateDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ArdiumFormFieldFrameModule,\r\n _ClearButtonModule,\r\n ArdiumDropdownPanelModule,\r\n ArdiumClickOutsideModule,\r\n ],\r\n exports: [\r\n ArdiumAutocompleteInputComponent,\r\n ArdAutocompleteInputSuggestionTemplateDirective,\r\n ArdAutocompleteInputPlaceholderTemplateDirective,\r\n ArdAutocompleteInputLoadingTemplateDirective,\r\n ArdAutocompleteInputPrefixTemplateDirective,\r\n ArdAutocompleteInputSuffixTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumAutocompleteInputModule {}\r\n","export const DigitInputShape = {\r\n Square: 'square',\r\n Rectangle: 'rectangle',\r\n} as const;\r\nexport type DigitInputShape = (typeof DigitInputShape)[keyof typeof DigitInputShape];\r\n\r\nexport const TransformType = {\r\n Uppercase: 'uppercase',\r\n Lowercase: 'lowercase',\r\n} as const;\r\nexport type TransformType = (typeof TransformType)[keyof typeof TransformType];\r\n\r\nexport const DigitInputPrimitiveOption = {\r\n Number: 'number',\r\n Letter: 'letter',\r\n Alphanumeric: 'alphanumeric',\r\n Special: 'special',\r\n} as const;\r\nexport type DigitInputPrimitiveOption = (typeof DigitInputPrimitiveOption)[keyof typeof DigitInputPrimitiveOption];\r\n\r\nexport type DigitInputTransform = TransformType | ((char: string) => string) | null;\r\n\r\nexport interface DigitInputAcceptObject {\r\n accept: string | RegExp | ((char: string, charsBefore: string) => boolean);\r\n transform?: DigitInputTransform;\r\n readonly?: boolean;\r\n placeholder?: string;\r\n}\r\nexport interface DigitInputStaticObject {\r\n static: string;\r\n}\r\n\r\nexport type DigitInputOption = DigitInputAcceptObject | DigitInputStaticObject;\r\n\r\nexport type DigitInputConfig =\r\n /* (DigitInputPrimitiveOption | DigitInputOption)[][] */\r\n (DigitInputPrimitiveOption | DigitInputOption)[] | string | number;\r\n\r\nexport type DigitInputAutoFillParseFn = (autoFill: string) => string;\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _FormFieldComponentDefaults, _formFieldComponentDefaults } from '../../_internal/form-field-component';\r\nimport { FormElementAppearance, FormElementVariant } from './../../types/theming.types';\r\nimport { DigitInputAutoFillParseFn, DigitInputShape, DigitInputTransform } from './digit-input.types';\r\n\r\nexport interface ArdDigitInputDefaults extends _FormFieldComponentDefaults {\r\n appearance: FormElementAppearance;\r\n variant: FormElementVariant;\r\n shape: DigitInputShape;\r\n compact: boolean;\r\n outputAsString: boolean;\r\n transform: DigitInputTransform;\r\n inputAttrs: Record<string, any>;\r\n autoFillParseFn: DigitInputAutoFillParseFn;\r\n}\r\n\r\nconst _digitInputDefaults: ArdDigitInputDefaults = {\r\n ..._formFieldComponentDefaults,\r\n appearance: FormElementAppearance.Outlined,\r\n variant: FormElementVariant.Rounded,\r\n shape: DigitInputShape.Square,\r\n compact: false,\r\n outputAsString: false,\r\n transform: null,\r\n inputAttrs: {},\r\n autoFillParseFn: v => v,\r\n};\r\n\r\nexport const ARD_DIGIT_INPUT_DEFAULTS = new InjectionToken<ArdDigitInputDefaults>('ard-digit-input-defaults', {\r\n factory: () => ({\r\n ..._digitInputDefaults,\r\n }),\r\n});\r\n\r\nexport function provideDigitInputDefaults(config: Partial<ArdDigitInputDefaults>): Provider {\r\n return { provide: ARD_DIGIT_INPUT_DEFAULTS, useValue: { ..._digitInputDefaults, ...config } };\r\n}\r\n","import { ElementRef, Signal } from '@angular/core';\r\nimport { DigitInputTransform } from './digit-input.types';\r\n\r\nexport interface DigitInputConfigData {\r\n type: DigitInputConfigDataType;\r\n char?: string;\r\n index?: number;\r\n readonly?: boolean;\r\n placeholder?: string;\r\n}\r\nexport interface DigitInputModelHost {\r\n readonly inputs: Signal<readonly ElementRef<HTMLInputElement>[]>;\r\n readonly outputAsString: Signal<boolean>;\r\n readonly transform: Signal<DigitInputTransform>;\r\n}\r\n\r\nexport const DigitInputConfigDataType = {\r\n Input: 'input',\r\n Static: 'static',\r\n} as const;\r\nexport type DigitInputConfigDataType = (typeof DigitInputConfigDataType)[keyof typeof DigitInputConfigDataType];\r\n\r\nexport function _sanitizeRegExpString(str: string): string {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\n","import { computed, effect, signal } from '@angular/core';\r\nimport { coerceArrayProperty } from '@ardium-ui/devkit';\r\nimport { isAnyString, isArray, isFunction, isNull, isNumber, isRegExp } from 'simple-bool';\r\nimport {\r\n DigitInputAcceptObject,\r\n DigitInputConfig,\r\n DigitInputOption,\r\n DigitInputPrimitiveOption,\r\n TransformType,\r\n} from './digit-input.types';\r\nimport { DigitInputConfigData, DigitInputConfigDataType, DigitInputModelHost, _sanitizeRegExpString } from './digit-input.utils';\r\n\r\nexport class DigitInputModel {\r\n constructor(private _ardHost: DigitInputModelHost) {\r\n //set the value array to be the same length\r\n effect(\r\n () => {\r\n const configArr = this.configArrayData();\r\n\r\n this.value.update(arr => {\r\n if (!arr) arr = [];\r\n const newArr: (string | null)[] = [];\r\n for (let i = 0; i < configArr.length; i++) {\r\n const curr = arr[i];\r\n const config = configArr[i];\r\n newArr.push(config.type === DigitInputConfigDataType.Static ? null : curr ?? null);\r\n }\r\n return newArr;\r\n });\r\n }\r\n );\r\n }\r\n\r\n private readonly _configArray = signal<DigitInputOption[]>([]);\r\n\r\n readonly configArrayData = computed<DigitInputConfigData[]>(() => {\r\n return this._configArray().map((v, i) => {\r\n if ('static' in v) {\r\n return {\r\n type: DigitInputConfigDataType.Static,\r\n char: v.static,\r\n } satisfies DigitInputConfigData;\r\n }\r\n return {\r\n type: DigitInputConfigDataType.Input,\r\n index: i,\r\n readonly: v.readonly,\r\n placeholder: v.placeholder ?? '',\r\n } satisfies DigitInputConfigData;\r\n });\r\n });\r\n\r\n readonly isConfigDefined = computed((): boolean => this._configArray().length > 0);\r\n\r\n readonly value = signal<(string | null)[] | null>(null);\r\n\r\n readonly valueWithStatics = computed<(string | null)[]>(() => {\r\n const configArr = this.configArrayData();\r\n const arr = this.value() ?? [];\r\n\r\n const newArr: (string | null)[] = [];\r\n for (let i = 0; i < configArr.length; i++) {\r\n const curr = arr[i];\r\n const config = configArr[i];\r\n newArr.push(config.type === DigitInputConfigDataType.Static ? config.char! : curr ?? null);\r\n }\r\n return newArr;\r\n });\r\n\r\n readonly stringValue = computed(\r\n (): string =>\r\n this.valueWithStatics()\r\n ?.map(v => v ?? ' ')\r\n .join('') ?? ''\r\n );\r\n\r\n readonly isValueFull = computed((): boolean => this.value()?.filter(v => v).length === this._configArray().length);\r\n\r\n isDefinedAtIndex(index: number): boolean {\r\n return !!this.value()?.[index];\r\n }\r\n\r\n writeValue(v: any): boolean {\r\n if (this._ardHost.outputAsString()) {\r\n if (!isAnyString(v) && !isNull(v)) {\r\n throw new Error(\r\n `ARD-FT0040b: Trying to set <ard-digit-input>'s value to \"${v}\" (of type ${typeof v}), but the input uses [outputAsString]=\"true\", and thus expects string or null.`\r\n );\r\n }\r\n const vArray = v?.split('') ?? [];\r\n\r\n if (vArray.length > this._configArray().length) {\r\n console.warn(\r\n `ARD-WA0041: Value provided to <ard-digit-input> is too long. Got ${\r\n vArray.length\r\n } characters, but expected a maximum of ${this._configArray().length} characters.`\r\n );\r\n }\r\n return this._writeValue(vArray);\r\n }\r\n if (!isAnyString(v) && !isNull(v) && !isArray(v)) {\r\n throw new Error(\r\n `ARD-FT0041: Trying to set <ard-digit-input>'s value to \"${v}\" (of type ${typeof v}), expected string or array of characters.`\r\n );\r\n }\r\n const vArray = coerceArrayProperty(v);\r\n\r\n if (vArray.length > this._configArray().length) {\r\n console.warn(\r\n `ARD-WA0041: Value provided to <ard-digit-input> is too long. Got ${\r\n vArray.length\r\n } characters, but expected a maximum of ${this._configArray().length} characters.`\r\n );\r\n }\r\n const problemIndex = vArray.findIndex(el => !isAnyString(el) || el.length > 1);\r\n if (problemIndex !== -1) {\r\n throw new Error(\r\n `ARD-FT0042: Array passed to <ard-digit-input>'s value must only contain strings of length 1 or 0. Element \"${vArray[problemIndex]}\" at index ${problemIndex} does not match those requirements.`\r\n );\r\n }\r\n return this._writeValue(vArray);\r\n }\r\n private _writeValue(v: string[] | null): boolean {\r\n const isOldValueTheSame = this.value()?.length ? this.value()!.every((ch, i) => ch === v?.[i]) : !v?.length;\r\n if (isOldValueTheSame) return false;\r\n this.value.set(v && v.map(el => el || null));\r\n this.validateValueAndUpdate();\r\n this._updateInputElements();\r\n return true;\r\n }\r\n\r\n private _updateInputElements() {\r\n const v = this.value() ?? [];\r\n let i = 0;\r\n for (const inputEl of this._ardHost.inputs()) {\r\n inputEl.nativeElement.value = v[i] ?? '';\r\n i++;\r\n }\r\n }\r\n\r\n //! setting config\r\n setConfig(config: DigitInputConfig): void {\r\n this._setConfig(config);\r\n this.validateValueAndUpdate();\r\n }\r\n private _setConfig(config: DigitInputConfig): void {\r\n //map a number to ready objects\r\n let configAsNumber = isAnyString(config) ? Number(config) : null;\r\n if (isNumber(config) || isNumber(configAsNumber)) {\r\n configAsNumber = isNumber(config) ? config : configAsNumber!;\r\n this._configArray.set(new Array(configAsNumber).fill({ accept: (str: string) => /[0-9]/.test(str) }));\r\n return;\r\n }\r\n //map a string to an array\r\n let configArr: string[] | Exclude<DigitInputConfig, number | string>;\r\n if (isAnyString(config)) {\r\n configArr = coerceArrayProperty(config);\r\n } else {\r\n configArr = config;\r\n }\r\n //map array to ready objects\r\n this._configArray.set(\r\n configArr.map((v, i) => {\r\n if (!isAnyString(v)) {\r\n if ('accept' in v && !isFunction(v.accept)) {\r\n const regExp = isRegExp(v.accept) ? v.accept : new RegExp(`[${_sanitizeRegExpString(v.accept)}]`);\r\n v.accept = str => regExp.test(str);\r\n }\r\n return v;\r\n }\r\n\r\n switch (v) {\r\n case DigitInputPrimitiveOption.Number:\r\n return { accept: str => /[0-9]/.test(str) };\r\n case DigitInputPrimitiveOption.Letter:\r\n return { accept: str => /[a-zA-Z]/.test(str) };\r\n case DigitInputPrimitiveOption.Alphanumeric:\r\n return { accept: str => /[0-9a-zA-Z]/.test(str) };\r\n case DigitInputPrimitiveOption.Special:\r\n return { accept: str => /[!@#$%^&*-_=+/\\\\.,]/.test(str) };\r\n\r\n default:\r\n if (configArr.length === 1) {\r\n throw new Error(`ARD-NF0043S: <ard-digit-input>'s config is invalid. Expected number or array, got \"${v}\"`);\r\n }\r\n throw new Error(`ARD-NF0043B: Found invalid string \"${v}\" in <ard-digit-input>'s config at index ${i}`);\r\n }\r\n })\r\n );\r\n }\r\n\r\n resetInputValue(index: number): void {\r\n if (index < 0 || index > this._configArray().length) return;\r\n\r\n const config = this._configArray()[index] as DigitInputOption;\r\n let newValue = '';\r\n if ('static' in config) {\r\n newValue = config.static;\r\n }\r\n\r\n //get the corresponding HTML input element\r\n const inputEl = this._ardHost.inputs()[index];\r\n if (!inputEl) {\r\n throw new Error(\r\n \"ARD-IS0048: <ard-digit-input>'s value changed, but its corresponding input element could not be found. If you are reading this, you probably experienced a problem with Ardium UI. Please report this issue to the creators.\"\r\n );\r\n }\r\n //update the input element and value array\r\n inputEl.nativeElement.value = newValue;\r\n\r\n this.value.update(arr => {\r\n if (!arr) arr = [];\r\n const newArr = [...arr];\r\n newArr[index] = newValue || null;\r\n return newArr;\r\n });\r\n }\r\n\r\n //! validate against the config\r\n validateInputAndSetValue(\r\n input: string,\r\n index: number\r\n ): null | { wasChanged: boolean; wasValidChar: boolean; resultChar: string | null } {\r\n if (index < 0 || index > this._configArray().length) return null;\r\n\r\n let v = this.value();\r\n //prepare the value array if does not exist\r\n if (!v) {\r\n this.value.set([]);\r\n }\r\n v = [];\r\n //prepare the characters before the current one (to be used in validation)\r\n const before = this.stringValue().charAt(index);\r\n\r\n //remove the old character from the input element\r\n if (before && input.length > 1 && input.match(before)) {\r\n input = input.replace(before, '');\r\n }\r\n //use only the first or last character (error safety)\r\n const firstChar = input.charAt(0);\r\n const lastChar = input.charAt(input.length - 1);\r\n input = firstChar === before ? lastChar : firstChar;\r\n\r\n //validate and transform, if necessary\r\n const inputChar = this._validateSingleChar(input, before, this._configArray()[index] as DigitInputAcceptObject);\r\n\r\n //get the corresponding HTML input element\r\n const inputEl = this._ardHost.inputs()[index];\r\n if (!inputEl) {\r\n throw new Error(\r\n \"ARD-IS0048: <ard-digit-input>'s value changed, but its corresponding input element could not be found. If you are reading this, you probably experienced a problem with Ardium UI. Please report this issue to the creators.\"\r\n );\r\n }\r\n //update the input element and value array\r\n const newVal = inputChar ?? before;\r\n inputEl.nativeElement.value = newVal ?? '';\r\n\r\n this.value.update(arr => {\r\n if (!arr) arr = [];\r\n const newArr = [...arr];\r\n newArr[index] = newVal || null;\r\n return newArr;\r\n });\r\n //return changes marker and validated value\r\n return { wasChanged: newVal !== before, wasValidChar: !isNull(inputChar), resultChar: inputChar };\r\n }\r\n validateValueAndUpdate(): void {\r\n const v = this.value();\r\n if (!v) return;\r\n\r\n let before = '';\r\n const newValue: (string | null)[] = [];\r\n for (let i = 0; i < Math.min(this._configArray().length, v.length); i++) {\r\n const char = v[i];\r\n before += char ?? ' ';\r\n\r\n if (!char) {\r\n newValue.push(char);\r\n continue;\r\n }\r\n const newChar = this._validateSingleChar(char, before, this._configArray()[i] as DigitInputAcceptObject);\r\n newValue.push(newChar);\r\n }\r\n this.value.set(newValue);\r\n }\r\n private _validateSingleChar(char: string | null, before: string, config: DigitInputOption): string | null {\r\n // return the character if it is static\r\n if ('static' in config) return config.static;\r\n // for peace of mind protect against modifying read-only fields\r\n if (config.readonly) {\r\n throw new Error(\r\n `ARD-IS0049R: trying to set value of a <ard-digit-input>'s readonly field. This is error is fatal to the functioning of Ardium UI. Please report this issue to the creators.`\r\n );\r\n }\r\n // process regex or convert string into regex\r\n if (!isFunction(config.accept)) {\r\n const regExp = isRegExp(config.accept) ? config.accept : new RegExp(`[${_sanitizeRegExpString(config.accept)}]`);\r\n config.accept = str => regExp.test(str);\r\n }\r\n if (!char) return char;\r\n\r\n // check if input fits the criteria\r\n const canAccept = config.accept(char, before);\r\n if (!canAccept) return null;\r\n\r\n // transform if needed\r\n const transform = config.transform ?? this._ardHost.transform();\r\n if (transform) {\r\n if (transform === TransformType.Lowercase) {\r\n return char.toLowerCase();\r\n }\r\n if (transform === TransformType.Uppercase) {\r\n return char.toUpperCase();\r\n }\r\n if (isFunction(transform)) {\r\n return transform(char).charAt(0);\r\n }\r\n console.warn(\r\n `ARD-IS0049T: <ard-digit-input>'s value validator encountered an unexpected value of the config's \"transform\" property. Ardium UI was able to handle this issue, but please report it to the creators.`\r\n );\r\n }\r\n return char;\r\n }\r\n}\r\n","import { AutofillMonitor } from '@angular/cdk/text-field';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n forwardRef,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n viewChildren,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { Subscription } from 'rxjs';\r\nimport { _FormFieldComponentBase } from '../../_internal/form-field-component';\r\nimport { ARD_FORM_FIELD_CONTROL } from '../../form-field/form-field-child.token';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { ARD_DIGIT_INPUT_DEFAULTS, ArdDigitInputDefaults } from './digit-input.defaults';\r\nimport { DigitInputModel } from './digit-input.model';\r\nimport { DigitInputAutoFillParseFn, DigitInputConfig, DigitInputShape, DigitInputTransform } from './digit-input.types';\r\nimport { DigitInputModelHost } from './digit-input.utils';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-digit-input',\r\n templateUrl: './digit-input.component.html',\r\n styleUrls: ['./digit-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumDigitInputComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ARD_FORM_FIELD_CONTROL,\r\n useExisting: ArdiumDigitInputComponent,\r\n },\r\n ],\r\n})\r\nexport class ArdiumDigitInputComponent\r\n extends _FormFieldComponentBase\r\n implements ControlValueAccessor, DigitInputModelHost, OnInit, AfterViewInit, OnDestroy\r\n{\r\n protected override readonly _DEFAULTS!: ArdDigitInputDefaults;\r\n constructor(@Inject(ARD_DIGIT_INPUT_DEFAULTS) defaults: ArdDigitInputDefaults) {\r\n super(defaults);\r\n\r\n effect(() => {\r\n if (this.configArrayData().length === this._oldConfigArrayDataLength) return;\r\n\r\n this._oldConfigArrayDataLength = this.configArrayData().length;\r\n this._emitChange();\r\n });\r\n }\r\n\r\n private readonly _autoFillMonitor = inject(AutofillMonitor);\r\n\r\n //! inputs ref\r\n readonly inputs = viewChildren<ElementRef<HTMLInputElement>>('input');\r\n\r\n readonly inputAttrs = input<Record<string, any>>(this._DEFAULTS.inputAttrs);\r\n\r\n private _setInputAttributes() {\r\n const inputs = this.inputs();\r\n for (const input of inputs) {\r\n const inputEl = input.nativeElement;\r\n const attributes: Record<string, string> = {\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n ...this.inputAttrs(),\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n inputEl.setAttribute(key, attributes[key]);\r\n }\r\n }\r\n }\r\n\r\n //! auto-fill\r\n readonly autoFillParseFn = input<DigitInputAutoFillParseFn>(this._DEFAULTS.autoFillParseFn);\r\n\r\n readonly isAutofilled = signal<boolean>(false);\r\n private readonly _wasAutofillValueRead = signal<boolean>(false);\r\n\r\n private _autoFillSubs: Subscription[] = [];\r\n private _subscribeToAutoFillOnInputs() {\r\n const inputs = this.inputs();\r\n for (const input of inputs) {\r\n const sub = this._autoFillMonitor.monitor(input).subscribe(event => {\r\n this.isAutofilled.set(event.isAutofilled);\r\n });\r\n this._autoFillSubs.push(sub);\r\n }\r\n }\r\n\r\n private _unsubscribeFromAutoFill() {\r\n const inputs = this.inputs();\r\n for (const input of inputs) {\r\n this._autoFillMonitor.stopMonitoring(input);\r\n }\r\n for (const sub of this._autoFillSubs) {\r\n sub.unsubscribe();\r\n }\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n this._unsubscribeFromAutoFill();\r\n }\r\n\r\n //! data model\r\n private readonly model = new DigitInputModel(this);\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(this._DEFAULTS.appearance);\r\n readonly variant = input<FormElementVariant>(this._DEFAULTS.variant);\r\n readonly shape = input<DigitInputShape>(this._DEFAULTS.shape);\r\n\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-shape-${this.shape()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.isAutofilled() ? 'ard-autofilled' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! model access points\r\n readonly config = input.required<void, DigitInputConfig>({\r\n transform: v => this.model.setConfig(v),\r\n });\r\n readonly configArrayData = this.model.configArrayData;\r\n\r\n readonly transform = input<DigitInputTransform>(this._DEFAULTS.transform);\r\n\r\n private _oldConfigArrayDataLength = -1;\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n this._oldConfigArrayDataLength = this.configArrayData().length;\r\n }\r\n\r\n isInputEmpty(index: number): boolean {\r\n return !this.model.isDefinedAtIndex(index);\r\n }\r\n\r\n //! control value accessor's write value implementation\r\n private _valueBeforeViewInit?: any;\r\n writeValue(v: any): void {\r\n if (!this._wasViewInit) {\r\n this._valueBeforeViewInit = v;\r\n return;\r\n }\r\n this._writeValue(v);\r\n }\r\n private _writeValue(v: any): boolean {\r\n return this.model.writeValue(v);\r\n }\r\n\r\n private _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._wasViewInit = true;\r\n\r\n if (this._valueBeforeViewInit) {\r\n this._writeValue(this._valueBeforeViewInit);\r\n }\r\n\r\n this._setInputAttributes();\r\n this._subscribeToAutoFillOnInputs();\r\n }\r\n\r\n //! value two-way binding\r\n readonly outputAsString = input<boolean, BooleanLike>(this._DEFAULTS.outputAsString, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly outputControlValueAccessorOnFinish = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n @Input()\r\n set value(v: string | (string | null)[] | null) {\r\n this.writeValue(v);\r\n }\r\n readonly valueChange = output<string | (string | null)[] | null>();\r\n\r\n readonly stringValue = this.model.stringValue;\r\n\r\n readonly emittableValue = computed((): string | (string | null)[] | null => {\r\n if (this.outputAsString()) return this.model.stringValue();\r\n return this.model.valueWithStatics();\r\n });\r\n\r\n //! event emitters\r\n readonly finishedValue = output<string | (string | null)[] | null>();\r\n\r\n readonly focusIndexEvent = output<number>({ alias: 'focusIndex' });\r\n readonly blurIndexEvent = output<number>({ alias: 'blurIndex' });\r\n\r\n //! event handlers\r\n onPaste(event: ClipboardEvent, index: number): void {\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n const value = event.clipboardData?.getData('text');\r\n event.stopPropagation();\r\n event.preventDefault();\r\n if (!value) return;\r\n\r\n this._handleMultiDigitChange(value, index);\r\n }\r\n onInput(event: Event, index: number): void {\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n const value = (event.target as HTMLInputElement).value;\r\n if (this.isAutofilled()) {\r\n if (!this._wasAutofillValueRead()) {\r\n this._wasAutofillValueRead.set(true);\r\n setTimeout(() => {\r\n this._wasAutofillValueRead.set(false);\r\n\r\n const parsedValue = this.autoFillParseFn()(value);\r\n\r\n this._handleMultiDigitChange(parsedValue, 0);\r\n }, 0);\r\n }\r\n return;\r\n }\r\n const wasValidCharacter = this._updateSingleInputValue(value, index);\r\n if (!wasValidCharacter) return;\r\n this.focusByIndex(index + 1);\r\n }\r\n private _handleMultiDigitChange(value: string, startIndex: number): void {\r\n const maxLength = this.inputs().length - startIndex;\r\n value\r\n .slice(0, maxLength)\r\n .split('')\r\n .forEach((char, i) => {\r\n this.model.resetInputValue(startIndex + i);\r\n this.model.validateInputAndSetValue(char, startIndex + i);\r\n });\r\n\r\n this.focusByIndex(startIndex - 1 + Math.min(value.length, maxLength));\r\n\r\n this._emitChange();\r\n }\r\n private _updateSingleInputValue(value: string, index: number): boolean {\r\n const changeResult = this.model.validateInputAndSetValue(value, index);\r\n\r\n if (changeResult?.wasChanged) {\r\n this._emitChange();\r\n }\r\n\r\n return changeResult?.wasValidChar ?? false;\r\n }\r\n focusByIndex(index: number): boolean;\r\n focusByIndex(index: number, tryFocusingNext: boolean, direction: 1 | -1): boolean;\r\n focusByIndex(index: number, tryFocusingNext?: boolean, direction?: 1 | -1): boolean {\r\n if (index < 0 || index >= this.inputs().length) return false;\r\n const nextEl = this.inputs()[index]?.nativeElement;\r\n if (!nextEl) return false;\r\n\r\n if (nextEl.getAttribute('data-ard-static') !== null) {\r\n return this.focusByIndex(index + (direction ?? 1));\r\n }\r\n nextEl.focus();\r\n if (tryFocusingNext && direction && document.activeElement !== nextEl) {\r\n return this.focusByIndex(index + direction);\r\n }\r\n return document.activeElement === nextEl;\r\n }\r\n //focus, blur, change\r\n onFocusMaster(event: FocusEvent, index: number): void {\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n this.focusIndexEvent.emit(index);\r\n (event.target as HTMLInputElement).setSelectionRange(0, 1);\r\n\r\n this.onFocus(event);\r\n }\r\n onBlurMaster(event: FocusEvent, index: number): void {\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n this.blurIndexEvent.emit(index);\r\n this.onBlur(event);\r\n }\r\n protected _emitChange(): void {\r\n const v = this.emittableValue();\r\n if (!this.outputControlValueAccessorOnFinish() || this.model.isValueFull()) this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n if (this.model.isValueFull()) {\r\n this.finishedValue.emit(v);\r\n }\r\n }\r\n onKeydown(event: KeyboardEvent, index: number): void {\r\n if (this.disabled() || this.readonly()) return;\r\n \r\n switch (event.key) {\r\n case 'ArrowLeft':\r\n this.focusByIndex(index - 1, true, -1);\r\n return;\r\n case 'ArrowRight':\r\n this.focusByIndex(index + 1, true, +1);\r\n return;\r\n case 'Home':\r\n this.focusByIndex(0, true, 1);\r\n return;\r\n case 'End':\r\n this.focusByIndex(this.inputs.length - 1, true, -1);\r\n return;\r\n case 'Backspace':\r\n case 'Delete':\r\n this._updateSingleInputValue('', index);\r\n this.focusByIndex(index - 1, true, -1);\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"ard-digit-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-error]=\"hasError()\"\r\n [class.ard-is-success]=\"isSuccess()\"\r\n>\r\n @for (data of configArrayData(); track $index) {\r\n <div\r\n class=\"ard-digit-input__item\"\r\n [class.ard-digit-input__item-with-input]=\"data.type === 'input'\"\r\n >\r\n @if (data.type === 'input') {\r\n <input\r\n #input\r\n #focusableElement\r\n class=\"ard-digit-input__input\"\r\n type=\"text\"\r\n [readonly]=\"readonly() || data.readonly\"\r\n [placeholder]=\"data.placeholder\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [class.ard-digit-input__input-readonly]=\"readonly() || data.readonly\"\r\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\r\n (paste)=\"onPaste($event, data.index!)\"\r\n (input)=\"onInput($event, data.index!)\"\r\n (focus)=\"onFocusMaster($event, data.index!)\"\r\n (blur)=\"onBlurMaster($event, data.index!)\"\r\n (keydown)=\"onKeydown($event, data.index!)\"\r\n />\r\n } @else {\r\n <div class=\"ard-digit-input__static\">\r\n {{ data.char }}\r\n </div>\r\n <input\r\n #input\r\n type=\"text\"\r\n class=\"ard-digit-input__static-input\"\r\n data-ard-static\r\n autocomplete=\"off\"\r\n tabindex=\"-1\"\r\n aria-hidden=\"true\"\r\n [value]=\"data.char\"\r\n />\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { CdkAutofill } from '@angular/cdk/text-field';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumDigitInputComponent } from './digit-input.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumDigitInputComponent],\r\n imports: [CommonModule, CdkAutofill],\r\n exports: [ArdiumDigitInputComponent],\r\n})\r\nexport class ArdiumDigitInputModule {}\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\r\nimport { ArdFormFieldFramePrefixSuffix } from '../../form-field-frame';\r\nimport { _simpleInputComponentDefaults, _SimpleInputComponentDefaults } from '../_simple-input-base';\r\n\r\nexport interface ArdInputDefaults extends _SimpleInputComponentDefaults {\r\n PrefixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n SuffixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n}\r\n\r\nconst _inputDefaults: ArdInputDefaults = {\r\n ..._simpleInputComponentDefaults,\r\n PrefixComponent: undefined,\r\n SuffixComponent: undefined,\r\n};\r\n\r\nexport const ARD_SIMPLE_INPUT_DEFAULTS = new InjectionToken<ArdInputDefaults>('ard-input-defaults', {\r\n factory: () => ({\r\n ..._inputDefaults,\r\n }),\r\n});\r\n\r\nexport function provideInputDefaults(config: Partial<ArdInputDefaults>): Provider {\r\n return { provide: ARD_SIMPLE_INPUT_DEFAULTS, useValue: { ..._inputDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { FormFieldFrameTemplateContext } from '../../form-field-frame';\r\n\r\n@Directive({ standalone: false, selector: 'ard-input > ng-template[ard-placeholder-tmp]' })\r\nexport class ArdInputPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-input > ng-template[ard-prefix-tmp]' })\r\nexport class ArdInputPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-input > ng-template[ard-suffix-tmp]' })\r\nexport class ArdInputSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n","import { ChangeDetectionStrategy, Component, contentChild, forwardRef, Inject, ViewEncapsulation } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ARD_FORM_FIELD_CONTROL } from '../../form-field/form-field-child.token';\r\nimport { _SimpleInputComponentBase } from '../_simple-input-base';\r\nimport { ARD_SIMPLE_INPUT_DEFAULTS, ArdInputDefaults } from './input.defaults';\r\nimport {\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n} from './input.directives';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumInputComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ARD_FORM_FIELD_CONTROL,\r\n useExisting: ArdiumInputComponent,\r\n },\r\n ],\r\n})\r\nexport class ArdiumInputComponent extends _SimpleInputComponentBase {\r\n protected override readonly _DEFAULTS!: ArdInputDefaults;\r\n constructor(@Inject(ARD_SIMPLE_INPUT_DEFAULTS) defaults: ArdInputDefaults) {\r\n super(defaults);\r\n }\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplate = contentChild(ArdInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdInputSuffixTemplateDirective);\r\n\r\n readonly prefixComponent = this._DEFAULTS.PrefixComponent;\r\n readonly suffixComponent = this._DEFAULTS.SuffixComponent;\r\n\r\n //! placeholder\r\n readonly placeholderTemplate = contentChild(ArdInputPlaceholderTemplateDirective);\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n [prefixComponent]=\"prefixComponent\"\r\n [suffixComponent]=\"suffixComponent\"\r\n>\r\n <div\r\n class=\"ard-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"htmlId()\"\r\n [attr.name]=\"htmlName()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [attr.type]=\"type()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [maxLength]=\"maxLengthAsInt()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\r\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\r\nimport { ArdiumInputComponent } from './input.component';\r\nimport {\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n} from './input.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumInputComponent,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ],\r\n imports: [CommonModule, _ClearButtonModule, ArdiumFormFieldFrameModule],\r\n exports: [\r\n ArdiumInputComponent,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumInputModule {}\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\r\nimport { _FormFieldComponentDefaults, _formFieldComponentDefaults } from '../../_internal/form-field-component';\r\nimport { ArdFormFieldFramePrefixSuffix } from '../../form-field-frame';\r\nimport { FormElementAppearance, FormElementVariant } from './../../types/theming.types';\r\nimport { Nullable } from './../../types/utility.types';\r\n\r\nexport interface ArdPasswordInputDefaults extends _FormFieldComponentDefaults {\r\n appearance: FormElementAppearance;\r\n variant: FormElementVariant;\r\n compact: boolean;\r\n placeholder: string;\r\n revealable: boolean;\r\n holdToReveal: boolean;\r\n autoHideTimeoutMs: Nullable<number>;\r\n revealed: boolean;\r\n inputAttrs: Record<string, any>;\r\n PrefixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n SuffixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n}\r\n\r\nconst _passwordInputDefaults: ArdPasswordInputDefaults = {\r\n ..._formFieldComponentDefaults,\r\n appearance: FormElementAppearance.Outlined,\r\n variant: FormElementVariant.Rounded,\r\n compact: false,\r\n placeholder: '',\r\n revealable: true,\r\n holdToReveal: false,\r\n autoHideTimeoutMs: undefined,\r\n revealed: false,\r\n inputAttrs: {},\r\n PrefixComponent: undefined,\r\n SuffixComponent: undefined,\r\n};\r\n\r\nexport const ARD_PASSWORD_INPUT_DEFAULTS = new InjectionToken<ArdPasswordInputDefaults>('ard-password-input-defaults', {\r\n factory: () => ({\r\n ..._passwordInputDefaults,\r\n }),\r\n});\r\n\r\nexport function providePasswordInputDefaults(config: Partial<ArdPasswordInputDefaults>): Provider {\r\n return { provide: ARD_PASSWORD_INPUT_DEFAULTS, useValue: { ..._passwordInputDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { FormFieldFrameTemplateContext } from '../../form-field-frame';\r\nimport { PasswordInputRevealButtonContext } from './password-input.types';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-password-input > ng-template[ard-placeholder-tmp]',\r\n})\r\nexport class ArdPasswordInputPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-password-input > ng-template[ard-prefix-tmp]' })\r\nexport class ArdPasswordInputPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-password-input > ng-template[ard-suffix-tmp]' })\r\nexport class ArdPasswordInputSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-password-input > ng-template[ard-reveal-tmp]' })\r\nexport class ArdPasswordInputRevealButtonTemplateDirective {\r\n constructor(public template: TemplateRef<PasswordInputRevealButtonContext>) {}\r\n}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { Grade, OpticalSize, Weight } from './icon.component';\r\n\r\nexport interface ArdIconDefaults {\r\n filled: boolean;\r\n weight: Weight;\r\n grade: Grade;\r\n opticalSize: OpticalSize;\r\n ariaLabel: string;\r\n}\r\n\r\nconst _iconDefaults: ArdIconDefaults = {\r\n filled: false,\r\n weight: 400,\r\n grade: 0,\r\n opticalSize: 40,\r\n ariaLabel: '',\r\n};\r\n\r\nexport const ARD_ICON_DEFAULTS = new InjectionToken<ArdIconDefaults>('ard-icon-defaults', {\r\n factory: () => ({\r\n ..._iconDefaults,\r\n }),\r\n});\r\n\r\nexport function provideIconDefaults(config: Partial<ArdIconDefaults>): Provider {\r\n return { provide: ARD_ICON_DEFAULTS, useValue: { ..._iconDefaults, ...config } };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'icon',\r\n})\r\nexport class ArdiumIconPipe implements PipeTransform {\r\n transform(value: string): string {\r\n value = value.trim().toLowerCase();\r\n value = value.replace(/[ -]/g, '_');\r\n return value;\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isDefined } from 'simple-bool';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ARD_ICON_DEFAULTS } from './icon.defaults';\r\n\r\ntype WeightNumber = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\r\ntype WeightString = '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';\r\nexport type Weight = WeightNumber | WeightString;\r\n\r\ntype GradeNumber = -25 | 0 | 200;\r\ntype GradeString = '-25' | '0' | '200';\r\nexport type Grade = GradeNumber | GradeString;\r\n\r\ntype OpticalSizeNumber = 20 | 24 | 40 | 48;\r\ntype OpticalSizeString = '20' | '24' | '40' | '48';\r\nexport type OpticalSize = OpticalSizeNumber | OpticalSizeString;\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-icon',\r\n templateUrl: `./icon.component.html`,\r\n styleUrls: ['./icon.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumIconComponent implements AfterViewInit {\r\n protected readonly _DEFAULTS = inject(ARD_ICON_DEFAULTS);\r\n\r\n readonly ariaLabel = input<string>('');\r\n readonly icon = input<Nullable<string>>(undefined);\r\n\r\n readonly filled = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly weight = input<WeightNumber | undefined, Nullable<Weight>>(400, {\r\n transform: v => coerceNumberProperty(v, 400) as WeightNumber,\r\n });\r\n readonly grade = input<GradeNumber | undefined, Nullable<GradeNumber>>(0, {\r\n transform: v => coerceNumberProperty(v, 0) as GradeNumber,\r\n });\r\n readonly opticalSize = input<OpticalSizeNumber | undefined, Nullable<OpticalSize>>(40, {\r\n transform: v => coerceNumberProperty(v, 40) as OpticalSizeNumber,\r\n });\r\n\r\n readonly fontVariationSettings = computed<string>(() => {\r\n //map values to different properties defined by google icons\r\n const propObject = {\r\n FILL: isDefined(this.filled()) ? Number(this.filled()) : undefined,\r\n wght: this.weight(),\r\n GRAD: this.grade(),\r\n opsz: this.opticalSize(),\r\n };\r\n //map the object to an array of strings\r\n const propObjectAsArray = Object.entries(propObject) //object to array\r\n .filter(v => isDefined(v[1])) //filter undefined values\r\n .map(v => `\"${v[0]}\" ${v[1]}`) //map key-value pairs to strings\r\n .flat(); //flatten\r\n\r\n //create the final string only if any of the properties are defined\r\n return propObjectAsArray.length === 0 ? '' : ['font-variation-settings: ', propObjectAsArray.join(', ')].join('');\r\n });\r\n\r\n readonly contentWrapper = viewChild<ElementRef<HTMLElement>>('contentWrapperEl');\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.icon() && !this.contentWrapper()?.nativeElement.innerText) {\r\n console.warn(`ARD-FT9000: Using <ard-icon> without specifying the [icon] field.`);\r\n }\r\n }\r\n}\r\n","<span\r\n class=\"ard-icon material-symbols-outlined\"\r\n [attr.aria-hidden]=\"ariaLabel() !== undefined\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [style]=\"fontVariationSettings()\"\r\n>\r\n {{ icon() ?? contentWrapperEl.innerText | icon }}\r\n</span>\r\n\r\n<div\r\n #contentWrapperEl\r\n class=\"ard-icon-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Inject,\r\n OnDestroy,\r\n OnInit,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n input,\r\n model,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanLike, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isAnyString, isDefined } from 'simple-bool';\r\nimport { _FormFieldComponentBase } from '../../_internal/form-field-component';\r\nimport { ARD_FORM_FIELD_CONTROL } from '../../form-field/form-field-child.token';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { ARD_PASSWORD_INPUT_DEFAULTS, ArdPasswordInputDefaults } from './password-input.defaults';\r\nimport {\r\n ArdPasswordInputPlaceholderTemplateDirective,\r\n ArdPasswordInputPrefixTemplateDirective,\r\n ArdPasswordInputRevealButtonTemplateDirective,\r\n ArdPasswordInputSuffixTemplateDirective,\r\n} from './password-input.directives';\r\nimport { PasswordInputRevealButtonContext } from './password-input.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-password-input',\r\n templateUrl: './password-input.component.html',\r\n styleUrls: ['./password-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumPasswordInputComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ARD_FORM_FIELD_CONTROL,\r\n useExisting: ArdiumPasswordInputComponent,\r\n },\r\n ],\r\n})\r\nexport class ArdiumPasswordInputComponent extends _FormFieldComponentBase implements ControlValueAccessor, OnInit, OnDestroy {\r\n protected override readonly _DEFAULTS!: ArdPasswordInputDefaults;\r\n constructor(@Inject(ARD_PASSWORD_INPUT_DEFAULTS) defaults: ArdPasswordInputDefaults) {\r\n super(defaults);\r\n }\r\n\r\n //! input view\r\n readonly textInputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n this._setInputAttributes();\r\n }\r\n\r\n readonly placeholder = input<string>(this._DEFAULTS.placeholder);\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplate = contentChild(ArdPasswordInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdPasswordInputSuffixTemplateDirective);\r\n\r\n readonly prefixComponent = this._DEFAULTS.PrefixComponent;\r\n readonly suffixComponent = this._DEFAULTS.SuffixComponent;\r\n\r\n //! placeholder\r\n readonly placeholderTemplate = contentChild(ArdPasswordInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed(() => !!this.placeholder() && !this.value());\r\n\r\n //! revealing\r\n readonly revealable = input<boolean, BooleanLike>(this._DEFAULTS.revealable, { transform: v => coerceBooleanProperty(v) });\r\n readonly holdToReveal = input<boolean, BooleanLike>(this._DEFAULTS.holdToReveal, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly autoHideTimeoutMs = input<Nullable<number>, any>(this._DEFAULTS.autoHideTimeoutMs, {\r\n transform: v => coerceNumberProperty(v, this._DEFAULTS.autoHideTimeoutMs),\r\n });\r\n\r\n readonly revealed = model<boolean>(this._DEFAULTS.revealed);\r\n\r\n private _hideTimeout: NodeJS.Timeout | null = null;\r\n toggleReveal(newState = !this.revealed()): void {\r\n this.revealed.set(newState);\r\n\r\n if (this._hideTimeout) {\r\n clearTimeout(this._hideTimeout);\r\n }\r\n const timeout = this.autoHideTimeoutMs();\r\n if (timeout && newState) {\r\n this._hideTimeout = setTimeout(() => this.revealed.set(false), timeout);\r\n }\r\n }\r\n\r\n @HostListener('document:mouseup')\r\n onMouseUp(): void {\r\n if (this.holdToReveal() && this.revealed()) {\r\n this.revealed.set(false);\r\n }\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n if (this._hideTimeout) {\r\n clearTimeout(this._hideTimeout);\r\n }\r\n }\r\n\r\n readonly revealTemplate = contentChild(ArdPasswordInputRevealButtonTemplateDirective);\r\n\r\n readonly revealButtonContext = computed(\r\n (): PasswordInputRevealButtonContext => ({\r\n $implicit: this.revealed(),\r\n })\r\n );\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(this._DEFAULTS.appearance);\r\n readonly variant = input<FormElementVariant>(this._DEFAULTS.variant);\r\n\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.revealable() ? 'ard-revealable' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>(this._DEFAULTS.inputAttrs);\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n if (!isAnyString(v) && isDefined(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(\r\n `ARD-WA0020: Trying to set <ard-password-input>'s value to \"${v}\" (of type ${typeof v}), expected string or null.`\r\n )\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n return;\r\n }\r\n this._writeValue(v ?? null);\r\n }\r\n protected _writeValue(v: string | null): boolean {\r\n const oldVal = this.value();\r\n this.value.set(v);\r\n return oldVal !== v;\r\n }\r\n //! value two-way binding\r\n readonly value = model<string | null>(null);\r\n\r\n //! event handlers\r\n onInput(newVal: string): void {\r\n const valueHasChanged = this._writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitChange();\r\n }\r\n protected _emitChange(): void {\r\n const v = this.value();\r\n this._onChangeRegistered?.(v);\r\n }\r\n //focus, blur, change\r\n onChange(event: Event): void {\r\n event.stopPropagation();\r\n this._emitChange();\r\n }\r\n\r\n // copy\r\n onCopy(event: ClipboardEvent): void {\r\n const textInputEl = this.textInputEl();\r\n const v = this.value();\r\n if (\r\n v &&\r\n textInputEl &&\r\n //does the selection cover the entire input\r\n ((textInputEl.nativeElement.selectionStart === 0 &&\r\n textInputEl.nativeElement.selectionEnd === textInputEl.nativeElement.value.length) ||\r\n //or is zero-wide\r\n textInputEl.nativeElement.selectionStart === textInputEl.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', v);\r\n event.preventDefault();\r\n }\r\n }\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.textInputEl()?.nativeElement;\r\n if (!input) return;\r\n\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex()),\r\n ...this.inputAttrs(),\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n [prefixComponent]=\"prefixComponent\"\r\n [suffixComponent]=\"suffixComponent\"\r\n>\r\n <div\r\n class=\"ard-password-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value()\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n [type]=\"!revealable() || !revealed() ? 'password' : 'text'\"\r\n [attr.id]=\"htmlId()\"\r\n [attr.name]=\"htmlName()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [value]=\"value() || ''\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n [class.ard-revealed]=\"revealable() && revealed()\"\r\n />\r\n </div>\r\n\r\n @if (revealable()) {\r\n <button\r\n class=\"ard-reveal-button\"\r\n type=\"button\"\r\n (click)=\"!holdToReveal() && toggleReveal()\"\r\n (mousedown)=\"holdToReveal() && revealed.set(true)\"\r\n >\r\n <ng-template\r\n #defaultRevealTemplate\r\n let-revealed\r\n >\r\n <ard-icon [icon]=\"revealed ? 'visibility' : 'visibility_off'\"></ard-icon>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"revealTemplate()?.template || defaultRevealTemplate\"\r\n [ngTemplateOutletContext]=\"revealButtonContext()\"\r\n />\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumIconComponent } from './icon.component';\r\nimport { ArdiumIconPipe } from './icon.pipe';\r\n\r\n@NgModule({\r\n declarations: [ArdiumIconComponent, ArdiumIconPipe],\r\n imports: [CommonModule],\r\n exports: [ArdiumIconComponent, ArdiumIconPipe],\r\n})\r\nexport class ArdiumIconModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\r\nimport { ArdiumIconModule } from '../../icon/icon.module';\r\nimport { ArdiumPasswordInputComponent } from './password-input.component';\r\nimport {\r\n ArdPasswordInputPlaceholderTemplateDirective,\r\n ArdPasswordInputPrefixTemplateDirective,\r\n ArdPasswordInputRevealButtonTemplateDirective,\r\n ArdPasswordInputSuffixTemplateDirective,\r\n} from './password-input.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumPasswordInputComponent,\r\n ArdPasswordInputPlaceholderTemplateDirective,\r\n ArdPasswordInputPrefixTemplateDirective,\r\n ArdPasswordInputSuffixTemplateDirective,\r\n ArdPasswordInputRevealButtonTemplateDirective,\r\n ],\r\n imports: [CommonModule, ArdiumFormFieldFrameModule, ArdiumIconModule],\r\n exports: [\r\n ArdiumPasswordInputComponent,\r\n ArdPasswordInputPlaceholderTemplateDirective,\r\n ArdPasswordInputPrefixTemplateDirective,\r\n ArdPasswordInputSuffixTemplateDirective,\r\n ArdPasswordInputRevealButtonTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumPasswordInputModule {}\r\n","import {\r\n AfterViewChecked,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { Subject } from 'rxjs';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-option',\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumOptionComponent implements OnChanges, AfterViewChecked, OnDestroy {\r\n private readonly elementRef = inject(ElementRef<HTMLElement>);\r\n\r\n readonly value = input<any>(undefined);\r\n\r\n readonly hasImplicitValue = computed<boolean>(() => this.value() === undefined);\r\n\r\n readonly label = input<Nullable<string>>(undefined);\r\n\r\n get labelOrInnerHtml(): string {\r\n return this.label() ?? (this.elementRef.nativeElement.innerHTML || '').trim();\r\n }\r\n\r\n readonly disabled = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! state change listener\r\n readonly stateChange$ = new Subject<{\r\n value: any;\r\n oldValue?: string;\r\n disabled: boolean;\r\n label?: Nullable<string>;\r\n }>();\r\n\r\n private _previousLabel: Nullable<string>;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['disabled']) {\r\n this.stateChange$.next({\r\n value: this.value(),\r\n disabled: changes['disabled'].currentValue,\r\n });\r\n }\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n if (this.label() !== this._previousLabel) {\r\n let oldValue = this.value();\r\n if (this.hasImplicitValue()) oldValue = this._previousLabel;\r\n\r\n this._previousLabel = this.label();\r\n\r\n this.stateChange$.next({\r\n value: this.value(),\r\n oldValue,\r\n disabled: this.disabled(),\r\n label: this.label(),\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChange$.complete();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumOptionComponent } from './option.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumOptionComponent],\r\n imports: [CommonModule],\r\n exports: [ArdiumOptionComponent],\r\n})\r\nexport class ArdiumOptionModule {}\r\n","import { computed, Signal, signal } from '@angular/core';\r\nimport { arraySignal } from '@ardium-ui/devkit';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { firstValueFrom, isObservable, Observable } from 'rxjs';\r\nimport { any, evaluate, isArray, isDefined, isObject, isPrimitive, isPromise } from 'simple-bool';\r\nimport { AddCustomFn } from '../../select/select.types';\r\nimport { ArdItemGroupMap, ArdOption, ArdOptionGroup, CompareWithFn, GroupByFn, SearchFn } from '../../types/item-storage.types';\r\nimport { Nullable } from '../../types/utility.types';\r\n\r\nexport interface ItemStorageHost {\r\n readonly valueFrom: Signal<string>;\r\n readonly labelFrom: Signal<string>;\r\n readonly disabledFrom: Signal<string>;\r\n readonly invertDisabled: Signal<boolean>;\r\n readonly groupLabelFrom: Signal<string | GroupByFn>;\r\n readonly groupDisabledFrom: Signal<string>;\r\n readonly childrenFrom: Signal<string>;\r\n readonly itemsAlreadyGrouped: Signal<Nullable<boolean>>;\r\n readonly hideSelected: Signal<boolean>;\r\n readonly deferValueWrites: Signal<boolean>;\r\n readonly searchCaseSensitive: Signal<boolean>;\r\n readonly searchFn: Signal<SearchFn | null>;\r\n readonly compareWith: Signal<Nullable<CompareWithFn>>;\r\n readonly multiselectable: Signal<boolean>;\r\n readonly maxSelectedItems: Signal<Nullable<number>>;\r\n readonly addCustom: Signal<boolean | AddCustomFn<any> | AddCustomFn<Promise<any>>>;\r\n readonly _componentId: string;\r\n}\r\n\r\nexport class ItemStorage {\r\n private readonly _items = arraySignal<ArdOption>([]);\r\n\r\n readonly filteredItems = computed<ArdOption[]>(() => this.items().filter(item => item.filtered), {\r\n equal: arrayEqualityFn,\r\n });\r\n readonly selectedItems = computed<ArdOption[]>(() => this.items().filter(item => item.selected), {\r\n equal: arrayEqualityFn,\r\n });\r\n readonly highlightedItems = computed<ArdOption[]>(() => this.items().filter(item => item.highlighted), {\r\n equal: arrayEqualityFn,\r\n });\r\n private readonly _lastHighlightedItem = signal<Nullable<ArdOption>>(undefined);\r\n private readonly _recentlyHighlightedItem = signal<Nullable<ArdOption>>(undefined);\r\n\r\n private readonly _groups = computed<ArdItemGroupMap>(() => {\r\n const groupMap: ArdItemGroupMap = this._createEmptyGroupMap();\r\n for (const item of this.filteredItems()) {\r\n if (this._ardParentComp.hideSelected() && item.selected) continue;\r\n\r\n let group = groupMap.get(item.group);\r\n if (!group) {\r\n group = {\r\n label: item.group?.toString?.() ?? String(item.group),\r\n children: [],\r\n disabled: false,\r\n };\r\n groupMap.set(item.group, group);\r\n }\r\n group.children.push(item);\r\n }\r\n return groupMap;\r\n });\r\n\r\n private _updateItems(updateFn: (item: ArdOption) => ArdOption): void {\r\n this._items.map(updateFn);\r\n }\r\n private _updateItemsFromArray(updateFn: (item: ArdOption) => ArdOption, itemsToUpdate: ArdOption[]): void {\r\n this._items.update(items => {\r\n for (const itemToUpdate of itemsToUpdate) {\r\n const item = items[itemToUpdate.index];\r\n if (item) {\r\n items[itemToUpdate.index] = updateFn(item);\r\n }\r\n }\r\n return items;\r\n });\r\n }\r\n\r\n constructor(private readonly _ardParentComp: ItemStorageHost) {}\r\n\r\n readonly groups = computed(() =>\r\n Array.from(this._groups().entries())\r\n .map(([, group]) => group)\r\n .filter(group => group.children.length)\r\n );\r\n readonly items = computed(() => [...this._items()]);\r\n\r\n readonly lastSelectedItem = computed(() => this.selectedItems().last(1, item => !item.disabled));\r\n\r\n readonly value = computed(() => this._itemsToValue(this.selectedItems()));\r\n private _itemsToValue(items: ArdOption[]): any[] {\r\n return items.map(item => item.value);\r\n }\r\n\r\n readonly isNoItemsToSelect = computed(() => this.items().length === this.selectedItems().length);\r\n readonly isNoItemsFound = computed(() => this.filteredItems().length === 0);\r\n readonly isAnyItemExactMatch = computed(() => this.filteredItems().some(item => item.isExactMatch));\r\n readonly isAnyItemSelected = computed(() => this.selectedItems().length > 0);\r\n readonly isAnyItemHighlighted = computed(() => this.highlightedItems().length > 0);\r\n readonly itemsLeftUntilLimit = computed(() =>\r\n this._ardParentComp.multiselectable() && isDefined(this._ardParentComp.maxSelectedItems())\r\n ? this._ardParentComp.maxSelectedItems()! - this.selectedItems().length\r\n : 1\r\n );\r\n readonly isItemLimitReached = computed(() => this.itemsLeftUntilLimit() <= 0);\r\n private readonly _highlightableItems = computed(() =>\r\n this.filteredItems().filter(\r\n item =>\r\n !item.disabled && (this._ardParentComp.hideSelected() ? !item.selected : this.isItemLimitReached() ? item.selected : true)\r\n )\r\n );\r\n\r\n setItems(items: any[]): void {\r\n let areItemsPrimitive = false;\r\n if (this._ardParentComp.groupLabelFrom() && this._ardParentComp.itemsAlreadyGrouped()) {\r\n const newItems = [];\r\n for (const group of items) {\r\n let children: any[];\r\n [children, areItemsPrimitive] = this._ungroupAlreadyGroupedItems(group);\r\n newItems.push(...children);\r\n }\r\n items = newItems;\r\n }\r\n if (any(items, isPrimitive)) {\r\n items = items.map(this._primitiveItemsMapFn);\r\n areItemsPrimitive = true;\r\n }\r\n\r\n this._items.set(\r\n items.map((item, index) => {\r\n return this._setItemsMapFn(item, index, areItemsPrimitive);\r\n })\r\n );\r\n // write value if it was deferred\r\n if (isDefined(this._valueToWriteAfterItemsLoad)) {\r\n this.handleWriteValue(this._valueToWriteAfterItemsLoad);\r\n }\r\n }\r\n updateItemFromOptionComponent(itemValue: any, updatedItem: Partial<ArdOption>): void {\r\n const item = this.findItemByValue(itemValue);\r\n if (!item) return;\r\n const index = item.index;\r\n this._items.setAt(index, { ...item, ...updatedItem });\r\n }\r\n private _addSingleItem(item: any): ArdOption {\r\n const isItemPrimitive = isPrimitive(item);\r\n //map a primitive item to a usable object\r\n if (isItemPrimitive) {\r\n item = this._primitiveItemsMapFn(item);\r\n }\r\n //map the item to create data bindings\r\n const ardOption = this._setItemsMapFn(item, (this.items().last()?.index ?? -1) + 1, isItemPrimitive);\r\n\r\n //push the item into all items\r\n this._items.push(ardOption);\r\n\r\n //add all items to filter array\r\n this._updateItems(item => ({ ...item, filtered: true }));\r\n\r\n return ardOption;\r\n }\r\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\r\n return { value: item };\r\n }\r\n private _ungroupAlreadyGroupedItems<T extends object>(group: T): [any[], boolean] {\r\n //determine groupBy (groupLabel) path\r\n const groupBy = this._ardParentComp.groupLabelFrom();\r\n\r\n //get group label from object\r\n let groupName: any;\r\n if (typeof groupBy === 'string') {\r\n groupName = resolvePath(group, groupBy);\r\n } else {\r\n groupName = groupBy(group);\r\n }\r\n\r\n //determine group children path\r\n const childrenPath = this._ardParentComp.childrenFrom();\r\n\r\n //get group children\r\n let groupItems: any = resolvePath(group, childrenPath);\r\n\r\n //return empty array if groupItems is not an array or is empty\r\n if (!isArray(groupItems) || groupItems.length === 0) return [[], false];\r\n\r\n //check if the array is an array of primitives, and map it if needed\r\n const areItemsPrimitive = false;\r\n if (any(groupItems, isPrimitive)) {\r\n groupItems = groupItems.map(this._primitiveItemsMapFn);\r\n }\r\n //add group name to every child\r\n groupItems = groupItems.map((item: any) => {\r\n item.$ardgroup = groupName;\r\n return item;\r\n });\r\n\r\n return [groupItems, areItemsPrimitive];\r\n }\r\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdOption {\r\n if (areItemsPrimitive) {\r\n return {\r\n itemData: rawItemData,\r\n index: index,\r\n value: rawItemData.value,\r\n label: rawItemData.value?.toString?.() ?? String(rawItemData.value),\r\n disabled: false,\r\n filtered: true,\r\n isExactMatch: false,\r\n selected: false,\r\n highlighted: false,\r\n group: undefined,\r\n highlighted_recently: false,\r\n };\r\n }\r\n //get value\r\n const valuePath = this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom();\r\n const value = resolvePath(rawItemData, valuePath);\r\n\r\n //get label\r\n const labelPath = this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom();\r\n const label = resolvePath(rawItemData, labelPath) ?? value;\r\n\r\n //get disabled\r\n const disabledPath = this._ardParentComp.disabledFrom();\r\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\r\n if (this._ardParentComp.invertDisabled()) {\r\n disabled = !disabled;\r\n }\r\n\r\n //get groups\r\n let group: any = undefined;\r\n const groupBy = this._ardParentComp.groupLabelFrom();\r\n if (groupBy) {\r\n if (rawItemData.$ardgroup) {\r\n group = rawItemData.$ardgroup;\r\n } else {\r\n if (typeof groupBy === 'string') {\r\n group = resolvePath(rawItemData, groupBy);\r\n } else {\r\n group = groupBy(rawItemData);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n itemData: rawItemData,\r\n index: index,\r\n value: value,\r\n label: label?.toString?.() ?? String(label),\r\n disabled: disabled,\r\n group: group,\r\n filtered: true,\r\n isExactMatch: false,\r\n selected: false,\r\n highlighted: false,\r\n highlighted_recently: false,\r\n };\r\n }\r\n private _createEmptyGroupMap(): ArdItemGroupMap {\r\n return new Map([\r\n [\r\n undefined,\r\n {\r\n label: '',\r\n children: [],\r\n disabled: false,\r\n selected: false,\r\n highlighted: false,\r\n },\r\n ],\r\n ]) as ArdItemGroupMap;\r\n }\r\n private _isWriteValueValid(ngModel: any[]): boolean {\r\n return ngModel.every(item => {\r\n if (!isDefined(this._ardParentComp.compareWith) && isObject(item)) {\r\n console.warn(\r\n `ARD-WA${this._ardParentComp._componentId}0: [valueFrom] can only point to a property of a primitive type. Define [compareWith] if using objects as a value is needed.`\r\n );\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n private _valueToWriteAfterItemsLoad: any = null;\r\n async handleWriteValue(ngModel: any): Promise<void> {\r\n //defer writing the value if no options are yet loaded\r\n if (this._ardParentComp.deferValueWrites() && this._items().length === 0) {\r\n this._valueToWriteAfterItemsLoad = ngModel;\r\n return;\r\n }\r\n // if null or undefined clear selection\r\n if (!isDefined(ngModel)) {\r\n this.clearAllSelected();\r\n return;\r\n }\r\n\r\n // convert from single item to items array\r\n if (!isArray(ngModel)) {\r\n ngModel = [ngModel];\r\n }\r\n const ngModelArray = ngModel as any[];\r\n // check value validity\r\n if (!this._isWriteValueValid(ngModelArray)) {\r\n return;\r\n }\r\n\r\n const itemsToSelect = (\r\n await Promise.all(\r\n ngModelArray.map(async v => {\r\n const item = this.findItemByValue(v);\r\n if (item) {\r\n return item;\r\n }\r\n return new Promise<ArdOption | null>(resolve => {\r\n setTimeout(() => {\r\n const item = this.findItemByValue(v);\r\n if (item) {\r\n resolve(item);\r\n return;\r\n }\r\n console.warn(\r\n `ARD-WA${this._ardParentComp._componentId}1: Couldn't find an item with value ${\r\n v?.toString?.() || String(v)\r\n } when trying to select it.`\r\n );\r\n resolve(null);\r\n }, 0);\r\n });\r\n })\r\n )\r\n ).filter(v => !!v);\r\n\r\n this.selectItem(...itemsToSelect);\r\n }\r\n findItemByValue(valueToFind: any): ArdOption | undefined {\r\n let findBy: (item: ArdOption) => boolean;\r\n if (this._ardParentComp.compareWith()) {\r\n findBy = item => this._ardParentComp.compareWith()!(valueToFind, item.value);\r\n } else {\r\n findBy = item => item.value === valueToFind;\r\n }\r\n return this.items().find(item => findBy(item));\r\n }\r\n async addCustomOption(\r\n value: string,\r\n fn: AddCustomFn<any> | AddCustomFn<Promise<any>> | AddCustomFn<Observable<any>>\r\n ): Promise<ArdOption | null> {\r\n let optionValue = fn(value);\r\n\r\n if (isObservable(optionValue)) {\r\n optionValue = await firstValueFrom(optionValue);\r\n } else if (isPromise(optionValue)) {\r\n try {\r\n optionValue = await optionValue;\r\n } catch (error) {\r\n console.error(\r\n `ARD-NF${this._ardParentComp._componentId}2: Failed to add a custom option. The promise was rejected with the following error:`,\r\n error\r\n );\r\n return null;\r\n }\r\n }\r\n\r\n const newOptionObj = this._addSingleItem(optionValue);\r\n return newOptionObj;\r\n }\r\n\r\n clearAllSelected(): any[] {\r\n const removedItemValues = this._itemsToValue(this.selectedItems());\r\n this._updateItems(item => ({ ...item, selected: false }));\r\n return removedItemValues;\r\n }\r\n clearLastSelected(): ArdOption {\r\n const item = this.selectedItems().last();\r\n if (!item) return item;\r\n this.unselectItem(item);\r\n return item;\r\n }\r\n\r\n selectItem(...items: ArdOption[]): [any[], any[], any[]] {\r\n if (this.isItemLimitReached()) {\r\n return [[], [], this._itemsToValue(items)];\r\n }\r\n\r\n const itemsLeftUntilLimit = this.itemsLeftUntilLimit();\r\n let itemsSelectedCount = 0;\r\n const newItemsArray = [...this.items()];\r\n for (const item of items) {\r\n itemsSelectedCount++;\r\n if (item.selected) continue;\r\n if (itemsSelectedCount > itemsLeftUntilLimit) {\r\n break;\r\n }\r\n newItemsArray[item.index] = { ...item, selected: true };\r\n }\r\n\r\n const itemsUnselected = this._ardParentComp.multiselectable()\r\n ? []\r\n : this.selectedItems().filter(item => !items.find(v => v.value === item.value));\r\n\r\n for (const item of itemsUnselected) {\r\n newItemsArray[item.index] = { ...item, selected: false };\r\n }\r\n\r\n const itemsSelected = items.slice(0, itemsSelectedCount);\r\n const itemsFailedToSelect = items.slice(itemsSelectedCount);\r\n\r\n const isAnyNewItemToBeSelected = !!itemsSelected.find(item => !this.selectedItems().find(v => v.value === item.value));\r\n\r\n if (isAnyNewItemToBeSelected) {\r\n this._items.set(newItemsArray);\r\n }\r\n if (!this._lastHighlightedItem()) {\r\n this._lastHighlightedItem.set(itemsFailedToSelect.first() || itemsSelected.last());\r\n }\r\n\r\n return [this._itemsToValue(itemsSelected), this._itemsToValue(itemsUnselected), this._itemsToValue(itemsFailedToSelect)];\r\n }\r\n unselectItem(...items: ArdOption[]): any[] {\r\n this._updateItemsFromArray(item => ({ ...item, selected: false }), items);\r\n\r\n if (!this._lastHighlightedItem()) {\r\n this._lastHighlightedItem.set(items.last());\r\n }\r\n\r\n return this._itemsToValue(items);\r\n }\r\n toggleItem(item: ArdOption): void {\r\n if (item.selected) {\r\n this.unselectItem(item);\r\n return;\r\n }\r\n this.selectItem(item);\r\n }\r\n\r\n clearAllHighlights(): void {\r\n this._updateItems(item => ({ ...item, highlighted: false }));\r\n }\r\n highlightGroup(group: ArdOptionGroup): ArdOption {\r\n const childrenIndexes = new Set(group.children.map(item => item.index));\r\n this._updateItems(item => ({ ...item, highlighted: childrenIndexes.has(item.index) }));\r\n return group.children.first();\r\n }\r\n highlightSingleItem(item: ArdOption): ArdOption | null {\r\n if (!item || item.disabled) return null;\r\n this.clearAllHighlights();\r\n return this.highlightItem(item);\r\n }\r\n highlightItem(...items: ArdOption[]): ArdOption {\r\n this._updateItemsFromArray(item => ({ ...item, highlighted: true }), items);\r\n this._lastHighlightedItem.set(items.last());\r\n return items.last();\r\n }\r\n unhighlightItem(...items: ArdOption[]): void {\r\n this._updateItemsFromArray(item => ({ ...item, highlighted: false }), items);\r\n }\r\n highlightFirstItem(): ArdOption | null {\r\n this.clearAllHighlights();\r\n const itemsToHighlight = this._highlightableItems();\r\n return this.highlightSingleItem(itemsToHighlight.first());\r\n }\r\n highlightLastItem(): ArdOption | null {\r\n this.clearAllHighlights();\r\n const itemsToHighlight = this._highlightableItems();\r\n return this.highlightSingleItem(itemsToHighlight.last());\r\n }\r\n highlightAllItems(): void {\r\n this.highlightItem(...this._highlightableItems());\r\n }\r\n setRecentlyHighlighted(itemToSet: ArdOption): void {\r\n this._updateItemsFromArray(item => ({ ...item, highlighted_recently: itemToSet.index === item.index }), [itemToSet]);\r\n this._recentlyHighlightedItem.set(itemToSet);\r\n }\r\n highlightNextItem(offset: number, hasShift?: boolean): ArdOption | null {\r\n if (!this.isAnyItemHighlighted()) {\r\n return this.highlightFirstItem();\r\n }\r\n const currentItem = this._lastHighlightedItem() ?? this._highlightableItems().first();\r\n const highlightableItems = this._highlightableItems();\r\n const currentIndexInFiltered = highlightableItems.findIndex(item => item.index === currentItem.index);\r\n\r\n let nextItemIndex = currentIndexInFiltered + offset;\r\n if (nextItemIndex >= highlightableItems.length) {\r\n nextItemIndex -= highlightableItems.length;\r\n }\r\n if (nextItemIndex < 0) {\r\n nextItemIndex += highlightableItems.length;\r\n }\r\n const itemToHighlight = highlightableItems[nextItemIndex];\r\n\r\n if (hasShift && this._ardParentComp.multiselectable()) {\r\n if (itemToHighlight.highlighted) {\r\n this.unhighlightItem(currentItem);\r\n }\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n return this.highlightSingleItem(itemToHighlight);\r\n }\r\n filter(filterTerm: string): void {\r\n if (!filterTerm) {\r\n this.resetFiltered();\r\n return;\r\n }\r\n if (!this._ardParentComp.searchCaseSensitive()) {\r\n filterTerm = filterTerm.toLocaleLowerCase();\r\n }\r\n\r\n const searchFn = this._ardParentComp.searchFn();\r\n if (!searchFn) {\r\n return;\r\n }\r\n this._updateItems(item => {\r\n const searchResult = searchFn(filterTerm, item);\r\n return { ...item, filtered: searchResult[0], isExactMatch: searchResult[1] };\r\n });\r\n\r\n if (!this.isNoItemsFound) this.highlightFirstItem();\r\n else this.clearAllHighlights();\r\n }\r\n resetFiltered(): ArdOption[] {\r\n if (this.filteredItems().length === this.items().length) return this.items();\r\n\r\n this._updateItems(item => ({ ...item, filtered: true }));\r\n return this.items();\r\n }\r\n}\r\n\r\nfunction arrayEqualityFn<T>(a: T[], b: T[]): boolean {\r\n return a === b || (a.length === 0 && b.length === 0) || (a.length === b.length && a.every((v, i) => v === b[i]));\r\n}\r\n","import { ArdOption, SearchFn } from './types/item-storage.types';\r\n\r\nexport function searchInString(searchTerm: string, toSearch: string) {\r\n if (toSearch === undefined) return false;\r\n return toSearch.indexOf(searchTerm) !== -1;\r\n}\r\nexport const searchFunctions: {\r\n byLabel: SearchFn;\r\n byValue: SearchFn;\r\n byGroup: SearchFn;\r\n byLabelAndGroup: SearchFn;\r\n byLabelAndValue: SearchFn;\r\n byLabelAndGroupAndValue: SearchFn;\r\n} = {\r\n /**\r\n * Determines if the item should appear in the search results, based on the label only.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabel: (searchTerm: string, item: ArdOption) => {\r\n const lowerLabel = item.label.toLocaleLowerCase();\r\n const isExact = searchTerm === lowerLabel;\r\n return [isExact || searchInString(searchTerm, lowerLabel), isExact];\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the value only.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byValue: (searchTerm: string, item: ArdOption) => {\r\n const lowerValue = String(item.value).toLocaleLowerCase();\r\n const isExact = searchTerm === lowerValue;\r\n return [isExact || searchInString(searchTerm, lowerValue), isExact];\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the group only.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byGroup: (searchTerm: string, item: ArdOption) => {\r\n const lowerGroup = String(item.group).toLocaleLowerCase();\r\n const isExact = searchTerm === lowerGroup;\r\n return [isExact || searchInString(searchTerm, lowerGroup), isExact];\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the label and group.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabelAndGroup: (searchTerm: string, item: ArdOption) => {\r\n const labelMatch = searchFunctions.byLabel(searchTerm, item);\r\n const matchData = labelMatch[0] ? ([true, labelMatch[1]] as [boolean, boolean]) : searchFunctions.byGroup(searchTerm, item);\r\n return matchData;\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the label and value.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabelAndValue: (searchTerm: string, item: ArdOption) => {\r\n const labelMatch = searchFunctions.byLabel(searchTerm, item);\r\n const matchData = labelMatch[0] ? ([true, labelMatch[1]] as [boolean, boolean]) : searchFunctions.byValue(searchTerm, item);\r\n return matchData;\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the label, group, and value.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabelAndGroupAndValue: (searchTerm: string, item: ArdOption) => {\r\n const labelAndValueMatch = searchFunctions.byLabelAndValue(searchTerm, item);\r\n const matchData = labelAndValueMatch[0]\r\n ? ([true, labelAndValueMatch[1]] as [boolean, boolean])\r\n : searchFunctions.byGroup(searchTerm, item);\r\n return matchData;\r\n },\r\n};\r\n","export type OptionContext<T extends ArdSimplestStorageItem> = {\r\n $implicit: T;\r\n item: T;\r\n} & {\r\n [K in keyof Omit<T, 'filtered'>]: T[K];\r\n};\r\n\r\nexport interface ArdSimplestStorageItem {\r\n readonly itemData: object;\r\n readonly index: number;\r\n readonly value: any;\r\n readonly label: string;\r\n readonly selected: boolean;\r\n readonly highlighted: boolean;\r\n}\r\n\r\nexport interface ArdOptionSimple extends ArdSimplestStorageItem {\r\n readonly disabled: boolean;\r\n}\r\n\r\nexport interface ArdOption extends ArdOptionSimple {\r\n readonly filtered: boolean;\r\n readonly isExactMatch: boolean;\r\n readonly group: unknown;\r\n readonly highlighted_recently: boolean;\r\n}\r\n\r\nexport interface ArdOptionGroup {\r\n readonly label: string;\r\n readonly disabled: boolean;\r\n readonly children: ArdOption[];\r\n}\r\n\r\nexport const ArdPanelPosition = {\r\n Top: 'top',\r\n Bottom: 'bottom',\r\n Auto: 'auto',\r\n} as const;\r\nexport type ArdPanelPosition = (typeof ArdPanelPosition)[keyof typeof ArdPanelPosition];\r\n\r\nexport type ArdItemGroupMap = Map<any, ArdOptionGroup>;\r\n\r\n/**\r\n * Function used to determine the group label for an item, based on the item's data.\r\n */\r\nexport type GroupByFn = (item: any) => any;\r\n/**\r\n * Function used to search for items based on a search term.\r\n *\r\n * Should return a tuple where the first value is a boolean indicating if the item matches the search term,\r\n * and the second value is a boolean indicating if the match is an exact match (used for auto-highlighting).\r\n */\r\nexport type SearchFn = (searchTerm: string, item: ArdOption) => [boolean, boolean];\r\n/**\r\n * Function used to compare a value with an option's value to determine if they are considered equal.\r\n */\r\nexport type CompareWithFn = (value: any, optionValue: any) => boolean;\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\r\nimport { _FormFieldComponentDefaults, _formFieldComponentDefaults } from '../_internal/form-field-component';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant } from '../dropdown-panel';\r\nimport { ArdFormFieldFramePrefixSuffix } from '../form-field-frame';\r\nimport { searchFunctions } from '../search-functions';\r\nimport { ArdPanelPosition, CompareWithFn, GroupByFn, SearchFn } from '../types/item-storage.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { FormElementAppearance, FormElementVariant } from './../types/theming.types';\r\nimport {\r\n AddCustomFn,\r\n ArdSelectAddCustomComponent,\r\n ArdSelectDropdownArrowComponent,\r\n ArdSelectItemDisplayLimitComponent,\r\n ArdSelectLoadingPlaceholderComponent,\r\n ArdSelectLoadingSpinnerComponent,\r\n ArdSelectNoItemsFoundComponent,\r\n ArdSelectOptgroupComponent,\r\n ArdSelectOptionComponent,\r\n ArdSelectPlaceholderComponent,\r\n ArdSelectValueComponent,\r\n} from './select.types';\r\n\r\nexport interface ArdSelectDefaults extends _FormFieldComponentDefaults {\r\n valueFrom: string;\r\n labelFrom: string;\r\n disabledFrom: string;\r\n groupLabelFrom: string | GroupByFn;\r\n groupDisabledFrom: string;\r\n childrenFrom: string;\r\n placeholder: string;\r\n searchPlaceholder: string;\r\n clearButtonTitle: string;\r\n dropdownPosition: ArdPanelPosition;\r\n noItemsFoundText: string;\r\n addCustomOptionText: string;\r\n loadingPlaceholderText: string;\r\n inputAttrs: Record<string, any>;\r\n isLoading: boolean;\r\n deferValueWrites: boolean | null;\r\n itemsAlreadyGrouped: boolean;\r\n invertDisabled: boolean;\r\n noGroupActions: boolean;\r\n autoHighlightFirst: boolean;\r\n autoFocus: boolean;\r\n keepOpen: boolean;\r\n hideSelected: boolean;\r\n noBackspaceClear: boolean;\r\n sortMultipleValues: boolean;\r\n searchCaseSensitive: boolean;\r\n keepSearchAfterSelect: boolean;\r\n maxSelectedItems: number;\r\n itemDisplayLimit: number;\r\n searchFn: SearchFn;\r\n compareWith: Nullable<CompareWithFn>;\r\n appearance: FormElementAppearance;\r\n variant: FormElementVariant;\r\n compact: boolean;\r\n dropdownPanelWidth: Nullable<number | string>;\r\n dropdownPanelHeight: Nullable<number | string>;\r\n dropdownPanelMinWidth: Nullable<number | string>;\r\n dropdownPanelMinHeight: Nullable<number | string>;\r\n dropdownPanelMaxWidth: Nullable<number | string>;\r\n dropdownPanelMaxHeight: Nullable<number | string>;\r\n dropdownAppearance: Nullable<DropdownPanelAppearance>;\r\n dropdownVariant: Nullable<DropdownPanelVariant>;\r\n multiselectable: boolean;\r\n clearable: boolean;\r\n searchable: boolean;\r\n addCustom: boolean | AddCustomFn<any> | AddCustomFn<Promise<any>>;\r\n PrefixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n SuffixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n OptionComponent?: Type<ArdSelectOptionComponent>;\r\n OptgroupComponent?: Type<ArdSelectOptgroupComponent>;\r\n ValueComponent?: Type<ArdSelectValueComponent>;\r\n PlaceholderComponent?: Type<ArdSelectPlaceholderComponent>;\r\n DropdownArrowComponent?: Type<ArdSelectDropdownArrowComponent>;\r\n LoadingSpinnerComponent?: Type<ArdSelectLoadingSpinnerComponent>;\r\n LoadingPlaceholderComponent?: Type<ArdSelectLoadingPlaceholderComponent>;\r\n NoItemsFoundComponent?: Type<ArdSelectNoItemsFoundComponent>;\r\n AddCustomComponent?: Type<ArdSelectAddCustomComponent>;\r\n ItemDisplayLimitComponent?: Type<ArdSelectItemDisplayLimitComponent>;\r\n}\r\n\r\nconst _selectDefaults: ArdSelectDefaults = {\r\n ..._formFieldComponentDefaults,\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n disabledFrom: 'disabled',\r\n groupLabelFrom: 'group',\r\n groupDisabledFrom: 'disabled',\r\n childrenFrom: 'children',\r\n searchFn: searchFunctions.byLabel,\r\n clearButtonTitle: 'Clear',\r\n noItemsFoundText: 'No items found.',\r\n addCustomOptionText: 'Add option',\r\n loadingPlaceholderText: 'Loading...',\r\n placeholder: '',\r\n searchPlaceholder: '',\r\n dropdownPosition: ArdPanelPosition.Auto,\r\n inputAttrs: {},\r\n isLoading: false,\r\n deferValueWrites: null,\r\n itemsAlreadyGrouped: false,\r\n invertDisabled: false,\r\n noGroupActions: false,\r\n autoHighlightFirst: false,\r\n autoFocus: false,\r\n keepOpen: false,\r\n hideSelected: false,\r\n noBackspaceClear: false,\r\n sortMultipleValues: false,\r\n searchCaseSensitive: false,\r\n keepSearchAfterSelect: false,\r\n maxSelectedItems: Infinity,\r\n itemDisplayLimit: Infinity,\r\n compareWith: undefined,\r\n appearance: FormElementAppearance.Outlined,\r\n variant: FormElementVariant.Rounded,\r\n compact: false,\r\n dropdownPanelWidth: undefined,\r\n dropdownPanelHeight: undefined,\r\n dropdownPanelMinWidth: 'max-content',\r\n dropdownPanelMinHeight: undefined,\r\n dropdownPanelMaxWidth: undefined,\r\n dropdownPanelMaxHeight: undefined,\r\n dropdownAppearance: undefined,\r\n dropdownVariant: undefined,\r\n multiselectable: false,\r\n clearable: false,\r\n searchable: false,\r\n addCustom: false,\r\n PrefixComponent: undefined,\r\n SuffixComponent: undefined,\r\n OptionComponent: undefined,\r\n OptgroupComponent: undefined,\r\n ValueComponent: undefined,\r\n PlaceholderComponent: undefined,\r\n DropdownArrowComponent: undefined,\r\n LoadingSpinnerComponent: undefined,\r\n LoadingPlaceholderComponent: undefined,\r\n NoItemsFoundComponent: undefined,\r\n AddCustomComponent: undefined,\r\n ItemDisplayLimitComponent: undefined,\r\n};\r\n\r\nexport const ARD_SELECT_DEFAULTS = new InjectionToken<ArdSelectDefaults>('ard-select-defaults', {\r\n factory: () => ({ ..._selectDefaults }),\r\n});\r\n\r\nexport function provideSelectDefaults(config: Partial<ArdSelectDefaults>): Provider {\r\n return { provide: ARD_SELECT_DEFAULTS, useValue: { ..._selectDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { FormFieldFrameTemplateContext } from '../form-field-frame';\r\nimport { ArdOption, OptionContext } from '../types/item-storage.types';\r\nimport {\r\n CustomOptionContext,\r\n GroupContext,\r\n ItemDisplayLimitContext,\r\n ItemLimitContext,\r\n PlaceholderContext,\r\n SearchContext,\r\n ValueContext,\r\n} from './select.types';\r\n\r\n//public (exported)\r\n\r\n@Directive({ standalone: false, selector: 'ard-select > ng-template[ard-prefix-tmp]' })\r\nexport class ArdSelectPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-select > ng-template[ard-suffix-tmp]' })\r\nexport class ArdSelectSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-select > ng-template[ard-value-tmp]' })\r\nexport class ArdValueTemplateDirective {\r\n constructor(public template: TemplateRef<ValueContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-select > ng-template[ard-option-tmp]' })\r\nexport class ArdOptionTemplateDirective {\r\n constructor(public template: TemplateRef<OptionContext<ArdOption>>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-select > ng-template[ard-optgroup-tmp]' })\r\nexport class ArdOptgroupTemplateDirective {\r\n constructor(public template: TemplateRef<GroupContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-select > ng-template[ard-placeholder-tmp]' })\r\nexport class ArdSelectPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<PlaceholderContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-select > ng-template[ard-dropdown-arrow-tmp]' })\r\nexport class ArdSelectDropdownArrowTemplateDirective {\r\n constructor(public template: TemplateRef<null>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-select > ng-template[ard-loading-spinner-tmp]' })\r\nexport class ArdLoadingSpinnerTemplateDirective {\r\n constructor(public template: TemplateRef<null>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-select > ng-template[ard-loading-placeholder-tmp]',\r\n})\r\nexport class ArdLoadingPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-select > ng-template[ard-dropdown-header-tmp]' })\r\nexport class ArdDropdownHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-select > ng-template[ard-dropdown-footer-tmp]' })\r\nexport class ArdDropdownFooterTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-select > ng-template[ard-no-items-found-tmp]' })\r\nexport class ArdNoItemsFoundTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-select > ng-template[ard-add-custom-tmp]' })\r\nexport class ArdAddCustomTemplateDirective {\r\n constructor(public template: TemplateRef<CustomOptionContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-select > ng-template[ard-item-limit-reached-tmp]' })\r\nexport class ArdItemLimitReachedTemplateDirective {\r\n constructor(public template: TemplateRef<ItemLimitContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-select > ng-template[ard-item-display-limit-tmp]' })\r\nexport class ArdItemDisplayLimitTemplateDirective {\r\n constructor(public template: TemplateRef<ItemDisplayLimitContext>) {}\r\n}\r\n","import { Nullable } from '../types/utility.types';\r\n\r\nconst NUMBER_REGEX = /^\\d+$/;\r\n\r\nexport function transformDropdownPanelSize(v: Nullable<number | string>): Nullable<number | string> {\r\n if (typeof v === 'string' && NUMBER_REGEX.test(v)) {\r\n return Number(v);\r\n }\r\n return v;\r\n}\r\n","/**\r\n * The color of the component.\r\n *\r\n * @see {@link ButtonColoringMode} to set what part of the component should be colored.\r\n */\r\nexport const ComponentColor = {\r\n /**\r\n * The app's standard text color.\r\n */\r\n None: 'none',\r\n /**\r\n * The app's primary color.\r\n */\r\n Primary: 'primary',\r\n /**\r\n * The app's secondary color.\r\n */\r\n Secondary: 'secondary',\r\n /**\r\n * The app's warning color. Usually some shade of yellow.\r\n */\r\n Warning: 'warn',\r\n /**\r\n * The app's danger color. Usually some shade of red.\r\n */\r\n Danger: 'danger',\r\n /**\r\n * The app's success color. Usually some shade of green or lime.\r\n */\r\n Success: 'success',\r\n /**\r\n * The app's info color. Usually some shade of blue or light blue.\r\n */\r\n Info: 'info',\r\n} as const;\r\nexport type ComponentColor = (typeof ComponentColor)[keyof typeof ComponentColor];\r\n\r\nexport const SimpleComponentColor = {\r\n ...ComponentColor,\r\n /**\r\n * The current color set by css.\r\n */\r\n CurrentColor: 'currentColor',\r\n} as const;\r\nexport type SimpleComponentColor = (typeof SimpleComponentColor)[keyof typeof SimpleComponentColor];\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _disablableComponentDefaults, _DisablableComponentDefaults } from '../_internal/disablable-component';\r\nimport { SimpleOneAxisAlignment } from '../types/alignment.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { DecorationElementAppearance, FormElementVariant } from '../types/theming.types';\r\n\r\nexport interface ArdChipDefaults extends _DisablableComponentDefaults {\r\n contentAlignment: SimpleOneAxisAlignment;\r\n appearance: DecorationElementAppearance;\r\n variant: FormElementVariant;\r\n color: ComponentColor;\r\n compact: boolean;\r\n}\r\n\r\nexport const _chipDefaults: ArdChipDefaults = {\r\n ..._disablableComponentDefaults,\r\n contentAlignment: SimpleOneAxisAlignment.Left,\r\n appearance: DecorationElementAppearance.Outlined,\r\n variant: FormElementVariant.Rounded,\r\n color: ComponentColor.Primary,\r\n compact: false,\r\n};\r\n\r\nexport const ARD_CHIP_DEFAULTS = new InjectionToken<ArdChipDefaults>('ard-chip-defaults', {\r\n factory: () => _chipDefaults,\r\n});\r\n\r\nexport function provideChipDefaults(config: Partial<ArdChipDefaults>): Provider {\r\n return { provide: ARD_CHIP_DEFAULTS, useValue: { ..._chipDefaults, ...config } };\r\n}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _focusableComponentDefaults, _FocusableComponentDefaults } from '../../_internal/focusable-component';\r\nimport { _chipDefaults, ArdChipDefaults } from '../chip.defaults';\r\n\r\nexport interface ArdDeletableChipDefaults extends ArdChipDefaults, _FocusableComponentDefaults {\r\n deleteButtonTitle: string;\r\n}\r\n\r\nconst _deletableChipDefaults: ArdDeletableChipDefaults = {\r\n ..._focusableComponentDefaults,\r\n ..._chipDefaults,\r\n deleteButtonTitle: 'Delete',\r\n};\r\n\r\nexport const ARD_DELETABLE_CHIP_DEFAULTS = new InjectionToken<ArdDeletableChipDefaults>('ard-deletable-chip-defaults', {\r\n factory: () => ({\r\n ..._deletableChipDefaults,\r\n }),\r\n});\r\n\r\nexport function provideDeletableChipDefaults(config: Partial<ArdDeletableChipDefaults>): Provider {\r\n return { provide: ARD_DELETABLE_CHIP_DEFAULTS, useValue: { ..._deletableChipDefaults, ...config } };\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n forwardRef,\r\n Inject,\r\n input,\r\n output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../../_internal/focusable-component';\r\nimport { SimpleOneAxisAlignment } from '../../types/alignment.types';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { DecorationElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { ARD_DELETABLE_CHIP_DEFAULTS, ArdDeletableChipDefaults } from './deletable-chip.defaults';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-deletable-chip',\r\n templateUrl: './deletable-chip.component.html',\r\n styleUrls: ['../chip.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumDeletableChipComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumDeletableChipComponent extends _FocusableComponentBase {\r\n protected override readonly _DEFAULTS!: ArdDeletableChipDefaults;\r\n constructor(@Inject(ARD_DELETABLE_CHIP_DEFAULTS) defaults: ArdDeletableChipDefaults) {\r\n super(defaults);\r\n }\r\n\r\n readonly deleteButtonTitle = input<string>(this._DEFAULTS.deleteButtonTitle);\r\n\r\n //! appearance\r\n readonly contentAlignment = input<SimpleOneAxisAlignment>(this._DEFAULTS.contentAlignment);\r\n readonly appearance = input<DecorationElementAppearance>(this._DEFAULTS.appearance);\r\n readonly variant = input<FormElementVariant>(this._DEFAULTS.variant);\r\n readonly color = input<ComponentColor>(this._DEFAULTS.color);\r\n\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-chip-align-${this.contentAlignment()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! events\r\n readonly deleteEvent = output<MouseEvent>({ alias: 'delete' });\r\n\r\n emitDelete(event: MouseEvent) {\r\n if (this.disabled() || this.readonly()) return;\r\n this.deleteEvent.emit(event);\r\n }\r\n}\r\n","<div\r\n class=\"ard-chip-wrapper ard-chip-deletable\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-clear-button\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [title]=\"deleteButtonTitle()\"\r\n (click)=\"deleteEvent.emit($event)\"\r\n [tabIndex]=\"tabIndex()\"\r\n ></ard-clear-button>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n HostBinding,\r\n HostListener,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n QueryList,\r\n Signal,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n inject,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanLike, NumberLike, coerceArrayProperty, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { Observable, Subject, merge, startWith, takeUntil } from 'rxjs';\r\nimport { isAnyString, isArray, isFunction } from 'simple-bool';\r\nimport { _FormFieldComponentBase } from '../_internal/form-field-component';\r\nimport { ItemStorage, ItemStorageHost } from '../_internal/item-storages/dropdown-item-storage';\r\nimport { contextToInputs, contextToInputsMultiple } from '../_internal/utils/context-to-inputs';\r\nimport { ArdiumDropdownPanelComponent } from '../dropdown-panel/dropdown-panel.component';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant } from '../dropdown-panel/dropdown-panel.types';\r\nimport { ARD_FORM_FIELD_CONTROL } from '../form-field/form-field-child.token';\r\nimport { ArdiumOptionComponent } from '../option/option.component';\r\nimport {\r\n ArdOption,\r\n ArdOptionGroup,\r\n ArdPanelPosition,\r\n CompareWithFn,\r\n GroupByFn,\r\n OptionContext,\r\n SearchFn,\r\n} from '../types/item-storage.types';\r\nimport { FormElementAppearance } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { FormElementVariant } from './../types/theming.types';\r\nimport { ARD_SELECT_DEFAULTS, ArdSelectDefaults } from './select.defaults';\r\nimport {\r\n ArdAddCustomTemplateDirective,\r\n ArdDropdownFooterTemplateDirective,\r\n ArdDropdownHeaderTemplateDirective,\r\n ArdItemDisplayLimitTemplateDirective,\r\n ArdItemLimitReachedTemplateDirective,\r\n ArdLoadingPlaceholderTemplateDirective,\r\n ArdLoadingSpinnerTemplateDirective,\r\n ArdNoItemsFoundTemplateDirective,\r\n ArdOptgroupTemplateDirective,\r\n ArdOptionTemplateDirective,\r\n ArdSelectDropdownArrowTemplateDirective,\r\n ArdSelectPlaceholderTemplateDirective,\r\n ArdSelectPrefixTemplateDirective,\r\n ArdSelectSuffixTemplateDirective,\r\n ArdValueTemplateDirective,\r\n} from './select.directive';\r\nimport {\r\n AddCustomFn,\r\n CustomOptionContext,\r\n GroupContext,\r\n ItemDisplayLimitContext,\r\n ItemLimitContext,\r\n PlaceholderContext,\r\n SearchContext,\r\n StatsContext,\r\n ValueContext,\r\n} from './select.types';\r\nimport { transformDropdownPanelSize } from './select.utils';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSelectComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ARD_FORM_FIELD_CONTROL,\r\n useExisting: ArdiumSelectComponent,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSelectComponent\r\n extends _FormFieldComponentBase\r\n implements OnChanges, AfterViewInit, AfterContentInit, OnInit, OnDestroy, ControlValueAccessor, ItemStorageHost\r\n{\r\n protected override readonly _DEFAULTS!: ArdSelectDefaults;\r\n constructor(@Inject(ARD_SELECT_DEFAULTS) defaults: ArdSelectDefaults) {\r\n super(defaults);\r\n }\r\n\r\n readonly _componentId: string = '000';\r\n readonly itemStorage = new ItemStorage(this);\r\n\r\n //! privates\r\n private _items: any[] | null = [];\r\n private readonly _isMouseBeingUsed = signal<boolean>(false);\r\n private readonly _searchBarFocused = signal<boolean>(false);\r\n private readonly _destroy$ = new Subject<void>();\r\n\r\n //! publics\r\n readonly searchTerm = model<string>('');\r\n isItemsInputUsed = false;\r\n\r\n //! binding-related inputs\r\n //value/label/disabled/group/pre-grouped children paths\r\n readonly valueFrom = input<string>(this._DEFAULTS.valueFrom);\r\n readonly labelFrom = input<string>(this._DEFAULTS.labelFrom);\r\n readonly disabledFrom = input<string>(this._DEFAULTS.disabledFrom);\r\n //! group-related inputs\r\n readonly groupLabelFrom = input<string | GroupByFn>(this._DEFAULTS.groupLabelFrom);\r\n readonly groupDisabledFrom = input<string>(this._DEFAULTS.groupDisabledFrom);\r\n readonly childrenFrom = input<string>(this._DEFAULTS.childrenFrom);\r\n //! settings\r\n readonly placeholder = input<string>(this._DEFAULTS.placeholder);\r\n readonly searchPlaceholder = input<string>(this._DEFAULTS.searchPlaceholder);\r\n readonly clearButtonTitle = input<string>(this._DEFAULTS.clearButtonTitle);\r\n\r\n readonly dropdownPosition = input<ArdPanelPosition>(this._DEFAULTS.dropdownPosition);\r\n //! template-related settings\r\n readonly noItemsFoundText = input<string>(this._DEFAULTS.noItemsFoundText);\r\n readonly addCustomOptionText = input<string>(this._DEFAULTS.addCustomOptionText);\r\n readonly loadingPlaceholderText = input<string>(this._DEFAULTS.loadingPlaceholderText);\r\n //! search-related options\r\n readonly searchInputId = input<Nullable<string>>(undefined);\r\n readonly inputAttrs = input<Record<string, any>>(this._DEFAULTS.inputAttrs);\r\n //! other inputs\r\n readonly isLoading = input<boolean, BooleanLike>(this._DEFAULTS.isLoading, { transform: v => coerceBooleanProperty(v) });\r\n readonly _deferValueWrites = input<boolean | null>(this._DEFAULTS.deferValueWrites, { alias: 'deferValueWrites' });\r\n readonly deferValueWrites = computed<boolean>(() => this._deferValueWrites() ?? this.isLoading());\r\n\r\n //! boolean settings\r\n readonly itemsAlreadyGrouped = input<boolean, BooleanLike>(this._DEFAULTS.itemsAlreadyGrouped, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n readonly invertDisabled = input<boolean, BooleanLike>(this._DEFAULTS.invertDisabled, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n readonly noGroupActions = input<boolean, BooleanLike>(this._DEFAULTS.noGroupActions, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n readonly autoHighlightFirst = input<boolean, BooleanLike>(this._DEFAULTS.autoHighlightFirst, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n readonly autoFocus = input<boolean, BooleanLike>(this._DEFAULTS.autoFocus, { transform: v => coerceBooleanProperty(v) });\r\n readonly keepOpen = input<boolean, BooleanLike>(this._DEFAULTS.keepOpen, { transform: v => coerceBooleanProperty(v) });\r\n readonly hideSelected = input<boolean, BooleanLike>(this._DEFAULTS.hideSelected, { transform: v => coerceBooleanProperty(v) });\r\n readonly noBackspaceClear = input<boolean, BooleanLike>(this._DEFAULTS.noBackspaceClear, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n readonly searchCaseSensitive = input<boolean, BooleanLike>(this._DEFAULTS.searchCaseSensitive, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n readonly keepSearchAfterSelect = input<boolean, BooleanLike>(this._DEFAULTS.keepSearchAfterSelect, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n //! number inputs\r\n readonly maxSelectedItems = input<number, NumberLike>(this._DEFAULTS.maxSelectedItems, {\r\n transform: v => coerceNumberProperty(v, this._DEFAULTS.maxSelectedItems),\r\n });\r\n readonly itemDisplayLimit = input<number, NumberLike>(this._DEFAULTS.itemDisplayLimit, {\r\n transform: v => coerceNumberProperty(v, this._DEFAULTS.itemDisplayLimit),\r\n });\r\n\r\n //! function inputs\r\n /**\r\n * The function used to search for matching items based on the search term.\r\n *\r\n * When set to `null`, the search functionality will be disabled (all items will be shown),\r\n * but the `searchEvent` will still be emitted with the search term whenever it changes.\r\n */\r\n readonly searchFn = input<SearchFn | null>(this._DEFAULTS.searchFn);\r\n readonly compareWith = input<Nullable<CompareWithFn>>(this._DEFAULTS.compareWith);\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(this._DEFAULTS.appearance);\r\n readonly variant = input<FormElementVariant>(this._DEFAULTS.variant);\r\n\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n //appearance and variant handled in ard-form-field-frame component\r\n this.compact() ? 'ard-compact' : '',\r\n this.multiselectable() ? 'ard-multiselect' : 'ard-singleselect',\r\n this.clearable() ? 'ard-clearable' : '',\r\n this.searchable() ? 'ard-searchable' : '',\r\n this.filtered() ? 'ard-filtered' : '',\r\n this.touched() ? 'ard-touched' : '',\r\n this.isOpen() ? 'ard-dropdown-open' : '',\r\n this._searchBarFocused() ? 'ard-select-focused' : '',\r\n this.disabled() || this.readonly() ? 'ard-touch-disabled' : 'ard-touch-enabled',\r\n ].join(' ')\r\n );\r\n\r\n readonly dropdownAppearance = input<Nullable<DropdownPanelAppearance>>(this._DEFAULTS.dropdownAppearance);\r\n readonly dropdownAppearanceOrDefault = computed(() => {\r\n if (this.dropdownAppearance()) return this.dropdownAppearance()!;\r\n if (this.appearance() === FormElementAppearance.Outlined) return DropdownPanelAppearance.Outlined;\r\n return DropdownPanelAppearance.Raised;\r\n });\r\n readonly dropdownVariant = input<Nullable<DropdownPanelVariant>>(this._DEFAULTS.dropdownVariant);\r\n readonly dropdownVariantOrDefault = computed(() => {\r\n if (this.dropdownVariant()) return this.dropdownVariant()!;\r\n const variant = this.variant();\r\n if (variant === FormElementVariant.Pill) return DropdownPanelVariant.Rounded;\r\n return variant;\r\n });\r\n\r\n @HostBinding('class.ard-group-items')\r\n get _groupItemsHostAttribute() {\r\n return this.groupLabelFrom();\r\n }\r\n\r\n //! items setter/getter\r\n @Input()\r\n get items() {\r\n return this._items;\r\n }\r\n set items(value: string | any[] | null) {\r\n this.isItemsInputUsed = true;\r\n if (value === null) {\r\n value = [];\r\n this.isItemsInputUsed = false;\r\n } else if (isAnyString(value)) {\r\n value = coerceArrayProperty(value);\r\n }\r\n this.itemStorage.setItems(value);\r\n }\r\n\r\n @ContentChildren(ArdiumOptionComponent)\r\n optionComponents!: QueryList<ArdiumOptionComponent>;\r\n\r\n private _setItemsFromComponents() {\r\n const handleOptionChange = () => {\r\n const changedOrDestroyed = merge(this.optionComponents.changes, this._destroy$);\r\n merge(...this.optionComponents.map(option => option.stateChange$))\r\n .pipe(takeUntil(changedOrDestroyed))\r\n .subscribe(option => {\r\n setTimeout(() => {\r\n this.itemStorage.updateItemFromOptionComponent(option.oldValue ?? option.value, {\r\n disabled: option.disabled,\r\n label: option.label || undefined,\r\n value: option.value,\r\n itemData: {\r\n label: option.label,\r\n value: option.value,\r\n disabled: option.disabled,\r\n },\r\n });\r\n }, 0);\r\n });\r\n };\r\n this.optionComponents.changes\r\n .pipe(startWith(this.optionComponents), takeUntil(this._destroy$))\r\n .subscribe((options: QueryList<ArdiumOptionComponent>) => {\r\n if (options.length === 0) return;\r\n setTimeout(() => {\r\n this.items = options.map(option => {\r\n return {\r\n value: option.value() ?? option.labelOrInnerHtml,\r\n label: option.labelOrInnerHtml ?? option.value(),\r\n disabled: option.disabled(),\r\n };\r\n });\r\n handleOptionChange();\r\n this.detectChanges();\r\n }, 0);\r\n });\r\n }\r\n\r\n //! attribute and/or class setters/getters\r\n readonly multiselectable = input<boolean, BooleanLike>(this._DEFAULTS.multiselectable, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n readonly clearable = input<boolean, BooleanLike>(this._DEFAULTS.clearable, { transform: v => coerceBooleanProperty(v) });\r\n readonly searchable = input<boolean, BooleanLike>(this._DEFAULTS.searchable, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly filtered = computed<boolean>(() => this.searchable() && this.searchTerm() !== '');\r\n\r\n readonly touched = signal<boolean>(false);\r\n\r\n //! custom options\r\n private readonly _defaultAddCustomFn: AddCustomFn<any> = (value: string) => value;\r\n\r\n readonly addCustom = input<\r\n false | AddCustomFn<any> | AddCustomFn<Promise<any>> | AddCustomFn<Observable<any>>,\r\n string | boolean | AddCustomFn<any> | AddCustomFn<Promise<any>> | AddCustomFn<Observable<any>>\r\n >(this._DEFAULTS.addCustom === true ? this._defaultAddCustomFn : this._DEFAULTS.addCustom, {\r\n transform: v => {\r\n if (isFunction(v)) {\r\n return v;\r\n }\r\n //coerce the value into a boolean\r\n //if \"true\", use the default function. Otherwise, just set to \"false\".\r\n return coerceBooleanProperty(v) && this._defaultAddCustomFn;\r\n },\r\n });\r\n readonly shouldShowAddCustom = computed<boolean>(\r\n () => this.addCustom() !== false && this.searchTerm().length > 0 && !this.itemStorage.isAnyItemExactMatch()\r\n );\r\n\r\n async addCustomOption(value: string) {\r\n const ac = this.addCustom();\r\n if (!ac) return;\r\n\r\n const newOptionObj = await this.itemStorage.addCustomOption(value, ac);\r\n if (!newOptionObj) return;\r\n\r\n this.selectItem(newOptionObj);\r\n }\r\n\r\n //! control value accessor\r\n //override the writeValue and setDisabledState defined in _NgModelComponent\r\n override setDisabledState(state: boolean): void {\r\n this._disabled = state;\r\n this._cd.markForCheck();\r\n }\r\n writeValue(ngModel: any[]): void {\r\n this.itemStorage.handleWriteValue(ngModel);\r\n this._cd.markForCheck();\r\n }\r\n //! change & touch event emitters\r\n protected _emitChange(): void {\r\n const value = this.multiselectable() ? this.itemStorage.value() : this.itemStorage.value()[0];\r\n this._onChangeRegistered?.(value);\r\n this.valueChange.emit(value);\r\n }\r\n protected override _emitTouched(): void {\r\n super._emitTouched();\r\n if (this.isOpen()) return;\r\n this.touched.set(true);\r\n }\r\n\r\n //! value input & output\r\n @Input()\r\n set value(newValue: any) {\r\n //if is a string, coerce it into array of strings\r\n if (isAnyString(newValue)) newValue = coerceArrayProperty(newValue);\r\n //if it is not a string and not an array, just put it in an array\r\n else if (!isArray(newValue)) newValue = [newValue];\r\n\r\n this.writeValue(newValue);\r\n }\r\n get value(): Signal<any[]> {\r\n return this.itemStorage.value;\r\n }\r\n readonly valueChange = output<any[]>();\r\n\r\n //! output events\r\n readonly addEvent = output<any[]>({ alias: 'add' });\r\n readonly failedToAddEvent = output<any[]>({ alias: 'failedToAdd' });\r\n readonly removeEvent = output<any[]>({ alias: 'remove' });\r\n readonly clearEvent = output<void>({ alias: 'clear' });\r\n readonly openEvent = output<void>({ alias: 'open' });\r\n readonly closeEvent = output<void>({ alias: 'close' });\r\n readonly scrollEvent = output<{\r\n start: number;\r\n end: number;\r\n }>({ alias: 'scroll' });\r\n readonly scrollToEndEvent = output({ alias: 'scrollToEnd' });\r\n\r\n readonly isOpen = model<boolean>(false);\r\n\r\n //! view children\r\n readonly searchInput = viewChild<ElementRef<HTMLInputElement>>('searchInput');\r\n readonly dropdownPanel = viewChild<ArdiumDropdownPanelComponent>(ArdiumDropdownPanelComponent);\r\n\r\n //! templates\r\n readonly optionTemplate = contentChild(ArdOptionTemplateDirective);\r\n readonly optgroupTemplate = contentChild(ArdOptgroupTemplateDirective);\r\n readonly valueTemplate = contentChild(ArdValueTemplateDirective);\r\n readonly placeholderTemplate = contentChild(ArdSelectPlaceholderTemplateDirective);\r\n readonly dropdownArrowTemplate = contentChild(ArdSelectDropdownArrowTemplateDirective);\r\n readonly loadingSpinnerTemplate = contentChild(ArdLoadingSpinnerTemplateDirective);\r\n readonly loadingPlaceholderTemplate = contentChild(ArdLoadingPlaceholderTemplateDirective);\r\n readonly dropdownHeaderTemplate = contentChild(ArdDropdownHeaderTemplateDirective);\r\n readonly dropdownFooterTemplate = contentChild(ArdDropdownFooterTemplateDirective);\r\n readonly noItemsFoundTemplate = contentChild(ArdNoItemsFoundTemplateDirective);\r\n readonly addCustomTemplate = contentChild(ArdAddCustomTemplateDirective);\r\n readonly itemLimitReachedTemplate = contentChild(ArdItemLimitReachedTemplateDirective);\r\n readonly itemDisplayLimitTemplate = contentChild(ArdItemDisplayLimitTemplateDirective);\r\n\r\n readonly prefixTemplate = contentChild(ArdSelectPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdSelectSuffixTemplateDirective);\r\n\r\n readonly prefixComponent = this._DEFAULTS.PrefixComponent;\r\n readonly suffixComponent = this._DEFAULTS.SuffixComponent;\r\n\r\n readonly optionComponent = this._DEFAULTS.OptionComponent;\r\n readonly optgroupComponent = this._DEFAULTS.OptgroupComponent;\r\n readonly valueComponent = this._DEFAULTS.ValueComponent;\r\n readonly placeholderComponent = this._DEFAULTS.PlaceholderComponent;\r\n readonly dropdownArrowComponent = this._DEFAULTS.DropdownArrowComponent;\r\n readonly loadingSpinnerComponent = this._DEFAULTS.LoadingSpinnerComponent;\r\n readonly loadingPlaceholderComponent = this._DEFAULTS.LoadingPlaceholderComponent;\r\n readonly noItemsFoundComponent = this._DEFAULTS.NoItemsFoundComponent;\r\n readonly addCustomComponent = this._DEFAULTS.AddCustomComponent;\r\n readonly itemDisplayLimitComponent = this._DEFAULTS.ItemDisplayLimitComponent;\r\n\r\n //! context providers\r\n readonly optionContextGenerator = computed<(item: ArdOption) => OptionContext<ArdOption>>(() => item => ({\r\n $implicit: item,\r\n item,\r\n index: item.index,\r\n value: item.value,\r\n label: item.label,\r\n selected: item.selected,\r\n highlighted: item.highlighted,\r\n itemData: item.itemData,\r\n group: item.group,\r\n disabled: item.disabled,\r\n isExactMatch: item.isExactMatch,\r\n highlighted_recently: item.highlighted_recently,\r\n }));\r\n readonly valueContextGenerator = computed<(item: ArdOption) => ValueContext>(() => item => ({\r\n ...this.optionContextGenerator()(item),\r\n unselect: () => {\r\n this.unselectItem(item);\r\n },\r\n itemsSelectedCount: this.itemStorage.selectedItems().length,\r\n totalItemsCount: this.itemStorage.items().length,\r\n }));\r\n readonly groupContextGenerator = computed<(group: ArdOptionGroup) => GroupContext>(() => group => ({\r\n $implicit: group,\r\n group,\r\n label: group.label,\r\n disabled: group.disabled,\r\n selectedChildrenCount: group.children.filter(v => v.selected).length,\r\n totalChildrenCount: group.children.length,\r\n }));\r\n readonly getStatsContext = computed(\r\n (): StatsContext => ({\r\n totalItems: this.totalItems(),\r\n foundItems: this.foundItems(),\r\n })\r\n );\r\n readonly getSearchContext = computed(\r\n (): SearchContext => ({\r\n $implicit: this.searchTerm(),\r\n searchTerm: this.searchTerm(),\r\n totalItems: this.totalItems(),\r\n foundItems: this.foundItems(),\r\n })\r\n );\r\n readonly getPlaceholderContext = computed((): PlaceholderContext => {\r\n const placeholder = this.placeholderForCurrentContext();\r\n return {\r\n placeholder,\r\n $implicit: placeholder,\r\n };\r\n });\r\n readonly getCustomOptionContext = computed(\r\n (): CustomOptionContext => ({\r\n $implicit: this.searchTerm(),\r\n searchTerm: this.searchTerm(),\r\n })\r\n );\r\n readonly getItemLimitContext = computed(\r\n (): ItemLimitContext => ({\r\n totalItems: this.totalItems(),\r\n selectedItems: this.itemStorage.selectedItems().length,\r\n itemLimit: this.maxSelectedItems(),\r\n })\r\n );\r\n readonly getItemDisplayLimitContext = computed((): ItemDisplayLimitContext => {\r\n const selectedItems = this.itemStorage.selectedItems().length;\r\n return {\r\n totalItems: this.totalItems(),\r\n selectedItems,\r\n itemLimit: this.maxSelectedItems(),\r\n overflowCount: selectedItems - (this.itemDisplayLimit() ?? 0),\r\n };\r\n });\r\n\r\n //! default component input generators\r\n readonly optionComponentInputsGenerator = contextToInputsMultiple(this.optionContextGenerator, this.optionComponent);\r\n readonly optgroupComponentInputsGenerator = contextToInputsMultiple(this.groupContextGenerator, this.optgroupComponent);\r\n readonly valueComponentInputsGenerator = contextToInputsMultiple(this.valueContextGenerator, this.valueComponent);\r\n\r\n readonly placeholderComponentInputs = contextToInputs(this.getPlaceholderContext, this.placeholderComponent);\r\n readonly loadingPlaceholderComponentInputs = contextToInputs(this.getSearchContext, this.loadingPlaceholderComponent);\r\n readonly noItemsFoundComponentInputs = contextToInputs(this.getSearchContext, this.noItemsFoundComponent);\r\n readonly addCustomComponentInputs = contextToInputs(this.getCustomOptionContext, this.addCustomComponent);\r\n readonly itemDisplayLimitComponentInputs = contextToInputs(this.getItemDisplayLimitContext, this.itemDisplayLimitComponent);\r\n\r\n private readonly elementRef = inject(ElementRef<HTMLElement>);\r\n private readonly _cd = inject(ChangeDetectorRef);\r\n private readonly overlay = inject(Overlay);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly scrollStrategyOpts = inject(ScrollStrategyOptions);\r\n\r\n //! dropdown overlay\r\n readonly dropdownHost = viewChild.required<ElementRef<HTMLDivElement>>('dropdownHost');\r\n readonly dropdownTemplate = viewChild.required<TemplateRef<any>>('dropdownTemplate');\r\n\r\n readonly dropdownPanelWidth = input<Nullable<number | string>, Nullable<number | string>>(this._DEFAULTS.dropdownPanelWidth, {\r\n transform: transformDropdownPanelSize,\r\n });\r\n readonly dropdownPanelHeight = input<Nullable<number | string>, Nullable<number | string>>(this._DEFAULTS.dropdownPanelHeight, {\r\n transform: transformDropdownPanelSize,\r\n });\r\n readonly dropdownPanelMinWidth = input<Nullable<number | string>, Nullable<number | string>>(\r\n this._DEFAULTS.dropdownPanelMinWidth,\r\n { transform: transformDropdownPanelSize }\r\n );\r\n readonly dropdownPanelMinHeight = input<Nullable<number | string>, Nullable<number | string>>(\r\n this._DEFAULTS.dropdownPanelMinHeight,\r\n { transform: transformDropdownPanelSize }\r\n );\r\n readonly dropdownPanelMaxWidth = input<Nullable<number | string>, Nullable<number | string>>(\r\n this._DEFAULTS.dropdownPanelMaxWidth,\r\n { transform: transformDropdownPanelSize }\r\n );\r\n readonly dropdownPanelMaxHeight = input<Nullable<number | string>, Nullable<number | string>>(\r\n this._DEFAULTS.dropdownPanelMaxHeight,\r\n { transform: transformDropdownPanelSize }\r\n );\r\n\r\n private dropdownOverlay?: OverlayRef;\r\n\r\n private _createOverlay(): void {\r\n const strategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.dropdownHost())\r\n .withFlexibleDimensions(false)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n },\r\n ]);\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n scrollStrategy: this.scrollStrategyOpts.block(),\r\n hasBackdrop: false,\r\n width: this.dropdownPanelWidth() ?? undefined,\r\n height: this.dropdownPanelHeight() ?? undefined,\r\n minWidth: this.dropdownPanelMinWidth() ?? undefined,\r\n minHeight: this.dropdownPanelMinHeight() ?? undefined,\r\n maxWidth: this.dropdownPanelMaxWidth() ?? undefined,\r\n maxHeight: this.dropdownPanelMaxHeight() ?? undefined,\r\n });\r\n\r\n this.dropdownOverlay = this.overlay.create(config);\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate(), this.viewContainerRef);\r\n this.dropdownOverlay.attach(portal);\r\n this.setOverlaySize();\r\n }\r\n private _destroyOverlay(): void {\r\n if (!this.dropdownOverlay) return;\r\n\r\n this.dropdownOverlay.dispose();\r\n delete this.dropdownOverlay;\r\n }\r\n\r\n setOverlaySize(): void {\r\n if (!this.dropdownOverlay) return;\r\n\r\n const rect = this.dropdownHost().nativeElement.getBoundingClientRect();\r\n this.dropdownOverlay.updateSize({ width: rect.width });\r\n }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n this.setOverlaySize();\r\n }\r\n\r\n //! hooks\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n this._setSearchInputAttributes();\r\n }\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n ngAfterViewInit(): void {\r\n if (this.autoFocus()) {\r\n this.focus();\r\n }\r\n }\r\n ngAfterContentInit(): void {\r\n if (!this.isItemsInputUsed) {\r\n this._setItemsFromComponents();\r\n }\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n //fire items load handler when loading is set to false\r\n if (changes['loading']) {\r\n if (changes['loading'].currentValue === false) {\r\n this._onItemsLoad();\r\n }\r\n }\r\n // re-apply filter when search term changes\r\n if (changes['searchTerm'] && (changes['searchable'] ? changes['searchable'].currentValue : this.searchable())) {\r\n this.filter(changes['searchTerm'].currentValue, false);\r\n }\r\n }\r\n private _onItemsLoad() {\r\n if (!this._searchBarFocused) return;\r\n this.open();\r\n }\r\n\r\n //! getters\r\n readonly firstHighlightedItem = computed<ArdOption | undefined>(() => this.itemStorage.highlightedItems()?.first());\r\n readonly shouldDisplayPlaceholder = computed<boolean>(() => !this.itemStorage.isAnyItemSelected() && !this.searchTerm());\r\n readonly shouldDisplayValue = computed<boolean>(\r\n () => this.itemStorage.isAnyItemSelected() && (!this.searchTerm() || this.multiselectable())\r\n );\r\n readonly shouldShowClearButton = computed<boolean>(\r\n () =>\r\n this.clearable() &&\r\n !this.disabled() &&\r\n !this.readonly() &&\r\n (this.itemStorage.isAnyItemSelected() || this.searchTerm() !== '')\r\n );\r\n readonly itemsToDisplay = computed<IterableIterator<ArdOptionGroup>>(() => this.itemStorage.groups().values());\r\n readonly shouldShowNoItemsFound = computed<boolean>(\r\n () => this.itemStorage.isNoItemsFound() && !this.isLoading() && !this.shouldShowAddCustom()\r\n );\r\n readonly totalItems = computed<number>(() => this.itemStorage.items().length);\r\n readonly foundItems = computed<number | undefined>(() =>\r\n this.searchable() ? this.itemStorage.filteredItems().length : undefined\r\n );\r\n readonly shouldShowItemDisplayLimit = computed<boolean>(\r\n () =>\r\n this.multiselectable() &&\r\n this.itemDisplayLimit() !== Infinity &&\r\n this.itemStorage.selectedItems().length > this.itemDisplayLimit()\r\n );\r\n readonly isInputElementReadonly = computed<boolean>(\r\n () => !this.addCustom() && (!this.searchable() || this.itemStorage.isItemLimitReached())\r\n );\r\n\r\n isValueWithinDisplayLimit(i: number): boolean {\r\n return !this.multiselectable() || this.itemDisplayLimit() === Infinity || i < this.itemDisplayLimit();\r\n }\r\n readonly placeholderForCurrentContext = computed<string>(() => {\r\n if (this.searchPlaceholder() && this.searchable() && (this._searchBarFocused() || this._isClickedWithin()))\r\n return this.searchPlaceholder();\r\n return this.placeholder();\r\n });\r\n\r\n //! search input event handlers\r\n filter(filterTerm: string, shouldAutoOpen: boolean): void {\r\n this.searchTerm.set(filterTerm);\r\n this.itemStorage.filter(filterTerm);\r\n if (shouldAutoOpen) {\r\n this.open();\r\n }\r\n }\r\n onSearchInputFocus(): void {\r\n this._searchBarFocused.set(true);\r\n }\r\n override onBlur(event: FocusEvent): void {\r\n super.onBlur(event);\r\n\r\n if (this.isOpen()) {\r\n this.focus();\r\n this._shouldEmitTouched = false;\r\n return;\r\n }\r\n\r\n this._searchBarFocused.set(false);\r\n }\r\n //! item selection handlers\r\n toggleItem(item: ArdOption): void {\r\n // don't use itemStorage.toggleItem() - we need to emit different events for select/unselect\r\n if (item.selected) {\r\n this.unselectItem(item);\r\n return;\r\n }\r\n this.selectItem(item);\r\n }\r\n selectItem(...items: ArdOption[]): void {\r\n const [selected, unselected, failedToSelect] = this.itemStorage.selectItem(...items);\r\n\r\n if (unselected.length > 0) {\r\n this.removeEvent.emit(unselected);\r\n }\r\n if (failedToSelect.length > 0) {\r\n this.failedToAddEvent.emit(failedToSelect);\r\n }\r\n if (selected.length > 0) {\r\n this.addEvent.emit(selected);\r\n\r\n this.focus();\r\n if (!this.keepSearchAfterSelect()) this._clearSearch();\r\n\r\n if (!this.keepOpen() || this.itemStorage.isNoItemsToSelect()) {\r\n this.close();\r\n }\r\n }\r\n if (unselected.length > 0 || selected.length > 0) {\r\n this._emitChange();\r\n }\r\n }\r\n unselectItem(...items: ArdOption[]): void {\r\n const unselected = this.itemStorage.unselectItem(...items);\r\n\r\n this.removeEvent.emit(unselected);\r\n this._emitChange();\r\n if (!this.keepSearchAfterSelect()) this._clearSearch();\r\n\r\n this.focus();\r\n\r\n if (!this.keepOpen() || this.itemStorage.isNoItemsToSelect()) {\r\n this.close();\r\n }\r\n }\r\n private _clearAllItems(): void {\r\n const cleared = this.itemStorage.clearAllSelected();\r\n\r\n this.focus();\r\n\r\n this.clearEvent.emit();\r\n this.removeEvent.emit(cleared);\r\n this._emitChange();\r\n this._emitTouched();\r\n }\r\n private _clearLastItem(): void {\r\n const clearedValue = this.itemStorage.clearLastSelected().value;\r\n\r\n this.focus();\r\n\r\n this.removeEvent.emit([clearedValue]);\r\n this._emitChange();\r\n }\r\n //! highligh-related\r\n onMouseMove() {\r\n this._isMouseBeingUsed.set(true);\r\n }\r\n onGroupMouseover(group: ArdOptionGroup): void {\r\n if (!this.multiselectable() || this.noGroupActions()) return;\r\n this.itemStorage.highlightGroup(group);\r\n }\r\n onItemMouseOver(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n onItemMouseEnter(option: ArdOption, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed()) return;\r\n this.itemStorage.highlightSingleItem(option);\r\n event.stopPropagation();\r\n }\r\n onItemMouseLeave(option: ArdOption, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed()) return;\r\n this.itemStorage.unhighlightItem(option);\r\n event.stopPropagation();\r\n }\r\n //! click handlers\r\n private readonly _isClickedWithin = signal<boolean>(false);\r\n onItemClick(option: ArdOption, event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (this.clearable() || this.multiselectable()) this.toggleItem(option);\r\n else this.selectItem(option);\r\n\r\n this._isClickedWithin.set(true);\r\n }\r\n onGroupClick(group: ArdOptionGroup): void {\r\n if (!this.multiselectable() || this.noGroupActions()) return;\r\n if (group.children.every(o => o.selected)) {\r\n this.unselectItem(...group.children);\r\n return;\r\n }\r\n this.selectItem(...group.children);\r\n\r\n this._isClickedWithin.set(true);\r\n }\r\n handleClearButtonClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (this.searchTerm()) {\r\n this._clearSearch();\r\n return;\r\n }\r\n this._clearAllItems();\r\n }\r\n handleDropdownArrowClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this._isClickedWithin.set(true);\r\n\r\n this.toggle();\r\n }\r\n handleOutsideClick(event: MouseEvent): void {\r\n if (!this.isOpen()) return;\r\n const target = event.target as HTMLElement;\r\n if (this.elementRef.nativeElement.contains(target)) return;\r\n\r\n this.close();\r\n }\r\n handleAnywhereClick(event: MouseEvent): void {\r\n const target = event.target as HTMLElement;\r\n if (target.tagName !== 'INPUT') {\r\n event.preventDefault();\r\n }\r\n\r\n this._isClickedWithin.set(true);\r\n\r\n if (!this._searchBarFocused() && !this.readonly()) {\r\n this.focus();\r\n }\r\n\r\n if (this.searchable()) {\r\n this.open();\r\n } else {\r\n this.toggle();\r\n }\r\n }\r\n @HostListener('mouseup')\r\n onMouseup(): void {\r\n this._isClickedWithin.set(false);\r\n }\r\n //! dropdown state handlers\r\n toggle(): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n return;\r\n }\r\n this.open();\r\n }\r\n open(): void {\r\n if (this.disabled() || this.readonly() || this.isOpen()) return;\r\n\r\n this.isOpen.set(true);\r\n if (this.autoHighlightFirst()) this.itemStorage.highlightFirstItem();\r\n\r\n this._createOverlay();\r\n this.focus();\r\n\r\n this.openEvent.emit();\r\n this.detectChanges();\r\n }\r\n close(): void {\r\n if (!this.isOpen()) return;\r\n\r\n this.isOpen.set(false);\r\n\r\n this._destroyOverlay();\r\n\r\n this._emitTouched();\r\n this.closeEvent.emit();\r\n this._cd.markForCheck();\r\n }\r\n //! ChangeDetectorRef\r\n detectChanges(): void {\r\n if (!(this._cd as any).destroyed) {\r\n this._cd.detectChanges();\r\n }\r\n }\r\n //! search\r\n private _clearSearch(): void {\r\n this._setSearch('');\r\n }\r\n private _setSearch(searchTerm: string): void {\r\n this.searchTerm.set(searchTerm);\r\n this.filter(searchTerm, true);\r\n }\r\n private _setSearchInputAttributes() {\r\n const input = this.searchInput()?.nativeElement;\r\n if (!input) return;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n ...this.inputAttrs(),\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, attributes[key]);\r\n }\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'Enter': {\r\n this._onEnterPress(event);\r\n return;\r\n }\r\n case 'Space': {\r\n this._onSpacePress(event);\r\n return;\r\n }\r\n case 'ArrowDown': {\r\n this._onArrowDownPress(event);\r\n return;\r\n }\r\n case 'ArrowUp': {\r\n this._onArrowUpPress(event);\r\n return;\r\n }\r\n case 'Escape': {\r\n this._onEscapePress(event);\r\n return;\r\n }\r\n case 'Home': {\r\n this._onHomePress(event);\r\n return;\r\n }\r\n case 'End': {\r\n this._onEndPress(event);\r\n return;\r\n }\r\n case 'Backspace':\r\n case 'Delete': {\r\n this._onBackspaceOrDeletePress(event);\r\n return;\r\n }\r\n case 'KeyA': {\r\n if (event.ctrlKey) {\r\n this._onCtrlAPress();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n private async _onEnterPress(event: KeyboardEvent) {\r\n event.preventDefault();\r\n let shouldClose = !this.keepOpen();\r\n\r\n //select the currently highlighted option\r\n if (this.isOpen() && this.firstHighlightedItem()) {\r\n if ((this.clearable() || this.multiselectable()) && this.itemStorage.highlightedItems().every(item => item.selected)) {\r\n this.unselectItem(...this.itemStorage.highlightedItems());\r\n } else {\r\n this.selectItem(...this.itemStorage.highlightedItems());\r\n }\r\n }\r\n //add a custom option\r\n else if (this.isOpen() && this.shouldShowAddCustom()) {\r\n await this.addCustomOption(this.searchTerm());\r\n }\r\n //in case of no action, open the dropdown (or keep it open)\r\n else {\r\n shouldClose = false;\r\n }\r\n\r\n if (shouldClose) {\r\n this.itemStorage.clearAllHighlights();\r\n this.close();\r\n }\r\n }\r\n private _onSpacePress(event: KeyboardEvent): void {\r\n if (this.isOpen()) return;\r\n\r\n event.preventDefault();\r\n this.open();\r\n }\r\n private _onArrowDownPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this.open();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightNextItem(+1, event.shiftKey);\r\n if (recentlyHighlighted) {\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n }\r\n\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('bottom');\r\n }\r\n private _onArrowUpPress(event: KeyboardEvent): void {\r\n if (!this.isOpen()) return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightNextItem(-1, event.shiftKey);\r\n if (recentlyHighlighted) {\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n }\r\n\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('top');\r\n }\r\n private _onEscapePress(event: KeyboardEvent): void {\r\n if (!this.isOpen()) return;\r\n event.preventDefault();\r\n\r\n this.itemStorage.clearAllHighlights();\r\n this.close();\r\n }\r\n private _onHomePress(event: KeyboardEvent): void {\r\n if (\r\n !this.isOpen() ||\r\n (this.searchInput()?.nativeElement.selectionEnd !== 0 && this.searchInput()?.nativeElement.selectionStart !== 0)\r\n )\r\n return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightFirstItem();\r\n if (!recentlyHighlighted) return;\r\n\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('top');\r\n }\r\n private _onEndPress(event: KeyboardEvent): void {\r\n if (\r\n !this.isOpen() ||\r\n (this.searchInput()?.nativeElement.selectionEnd !== this.searchTerm().length &&\r\n this.searchInput()?.nativeElement.selectionStart !== this.searchTerm().length)\r\n )\r\n return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightLastItem();\r\n if (!recentlyHighlighted) return;\r\n\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('bottom');\r\n }\r\n private _onBackspaceOrDeletePress(event: KeyboardEvent): void {\r\n if (this.searchTerm() || !this.clearable() || this.noBackspaceClear() || !this.itemStorage.isAnyItemSelected()) return;\r\n\r\n event.preventDefault();\r\n if (this.multiselectable() && this.itemStorage.selectedItems().length > 1) {\r\n this._clearLastItem();\r\n return;\r\n }\r\n this._clearAllItems();\r\n }\r\n private _onCtrlAPress(): void {\r\n this.itemStorage.highlightAllItems();\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n [prefixComponent]=\"prefixComponent\"\r\n [suffixComponent]=\"suffixComponent\"\r\n>\r\n <div\r\n class=\"ard-select\"\r\n #dropdownHost\r\n (click)=\"handleAnywhereClick($event)\"\r\n [class.ard-has-value]=\"itemStorage.isAnyItemSelected()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-select-value-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n @if (placeholderComponent && !placeholderTemplate()) {\r\n <ng-template\r\n [ngComponentOutlet]=\"placeholderComponent\"\r\n [ngComponentOutletInputs]=\"placeholderComponentInputs()\"\r\n />\r\n } @else {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n }\r\n }\r\n @if (shouldDisplayValue()) {\r\n @for (item of itemStorage.selectedItems(); track item.index) {\r\n <div\r\n class=\"ard-select-value\"\r\n [class.ard-value-disabled]=\"item.disabled\"\r\n [attr.hidden]=\"!isValueWithinDisplayLimit($index)\"\r\n >\r\n @if (isValueWithinDisplayLimit($index)) {\r\n @if (valueComponent && !valueTemplate()) {\r\n <ng-template\r\n [ngComponentOutlet]=\"valueComponent\"\r\n [ngComponentOutletInputs]=\"valueComponentInputsGenerator()(item)\"\r\n />\r\n } @else {\r\n <ng-template\r\n [ngTemplateOutlet]=\"\r\n valueTemplate()?.template || (multiselectable() ? defaultMultiValueTemplate : defaultValueTemplate)\r\n \"\r\n [ngTemplateOutletContext]=\"valueContextGenerator()(item)\"\r\n />\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n <ng-template\r\n #defaultValueTemplate\r\n let-label=\"label\"\r\n >\r\n <div\r\n class=\"ard-select-value\"\r\n [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"\r\n ></div>\r\n </ng-template>\r\n <ng-template\r\n #defaultMultiValueTemplate\r\n let-item\r\n let-label=\"label\"\r\n let-unselect=\"unselect\"\r\n >\r\n <ard-deletable-chip\r\n (delete)=\"unselect(item)\"\r\n [variant]=\"variant()\"\r\n compact\r\n appearance=\"outlined\"\r\n >\r\n <div [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"></div>\r\n </ard-deletable-chip>\r\n </ng-template>\r\n }\r\n @if (itemStorage.isAnyItemSelected() && shouldShowItemDisplayLimit()) {\r\n <div class=\"ard-overflow-indicator\">\r\n @if (itemDisplayLimitComponent && !itemDisplayLimitTemplate()) {\r\n <ng-template\r\n [ngComponentOutlet]=\"itemDisplayLimitComponent\"\r\n [ngComponentOutletInputs]=\"itemDisplayLimitComponentInputs()\"\r\n />\r\n } @else {\r\n <ng-template\r\n [ngTemplateOutlet]=\"itemDisplayLimitTemplate()?.template || defaultItemDisplayLimitTemplate\"\r\n [ngTemplateOutletContext]=\"getItemDisplayLimitContext()\"\r\n />\r\n\r\n <ng-template\r\n #defaultItemDisplayLimitTemplate\r\n let-count=\"overflowCount\"\r\n >\r\n <div>{{ count }} more...</div>\r\n </ng-template>\r\n }\r\n </div>\r\n }\r\n\r\n @if (!readonly()) {\r\n <div\r\n class=\"ard-search-input\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n >\r\n <input\r\n #searchInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"searchInputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"isInputElementReadonly()\"\r\n [disabled]=\"disabled()\"\r\n [value]=\"searchTerm()\"\r\n aria-autocomplete=\"list\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"filter(searchInput.value, true)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onSearchInputFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"ard-select-controls\">\r\n @if (isLoading()) {\r\n @if (loadingSpinnerComponent && !loadingSpinnerTemplate()) {\r\n <ng-template [ngComponentOutlet]=\"loadingSpinnerComponent\" />\r\n } @else {\r\n <ng-template #defaultLoadingSpinnerTemplate>\r\n <div class=\"ard-spinner\"></div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate()?.template || defaultLoadingSpinnerTemplate\" />\r\n }\r\n }\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"handleClearButtonClick($event)\"\r\n />\r\n }\r\n @if (!readonly()) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-dropdown-arrow-wrapper\"\r\n (click)=\"handleDropdownArrowClick($event)\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n >\r\n @if (dropdownArrowComponent && !dropdownArrowTemplate()) {\r\n <ng-template [ngComponentOutlet]=\"dropdownArrowComponent\" />\r\n } @else {\r\n <ng-template #defaultDropdownArrowTemplate>\r\n <span class=\"ard-dropdown-arrow\"></span>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"dropdownArrowTemplate()?.template || defaultDropdownArrowTemplate\" />\r\n }\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-select-dropdown-panel\"\r\n role=\"listbox\"\r\n aria-label=\"Options list\"\r\n [headerTemplate]=\"dropdownHeaderTemplate()?.template ?? null\"\r\n [footerTemplate]=\"dropdownFooterTemplate()?.template ?? null\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [filterValue]=\"searchTerm()\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"handleOutsideClick($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n (scroll)=\"scrollEvent.emit($event)\"\r\n (scrollToEnd)=\"scrollToEndEvent.emit($event)\"\r\n >\r\n @if (!shouldShowNoItemsFound()) {\r\n @for (group of itemStorage.groups(); track $index) {\r\n <div\r\n class=\"ard-optgroup\"\r\n role=\"group\"\r\n [class.ard-group-disabled]=\"group.disabled\"\r\n (mouseover)=\"onGroupMouseover(group)\"\r\n (click)=\"onGroupClick(group)\"\r\n >\r\n @if (!!group.label) {\r\n @if (optgroupComponent && !optgroupTemplate()) {\r\n <ng-template\r\n [ngComponentOutlet]=\"optgroupComponent\"\r\n [ngComponentOutletInputs]=\"optgroupComponentInputsGenerator()(group)\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultOptgroupTemplate\r\n let-label=\"label\"\r\n >\r\n <span\r\n class=\"ard-optgroup-label\"\r\n [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"\r\n ></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optgroupTemplate()?.template || defaultOptgroupTemplate\"\r\n [ngTemplateOutletContext]=\"groupContextGenerator()(group)\"\r\n />\r\n }\r\n }\r\n\r\n <div class=\"ard-optgroup-children\">\r\n @for (option of group.children; track option.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-disabled]=\"option.disabled || (itemStorage.isItemLimitReached() && !option.selected)\"\r\n [class.ard-option-selected]=\"option.selected\"\r\n [class.ard-option-highlighted]=\"option.highlighted\"\r\n [class.ard-option-highlighted-recent]=\"option.highlighted_recently\"\r\n [attr.aria-selected]=\"option.selected\"\r\n [attr.id]=\"htmlId() + '-' + option.index\"\r\n (click)=\"onItemClick(option, $event)\"\r\n (mouseover)=\"onItemMouseOver($event)\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n >\r\n <div class=\"ard-option-label\">\r\n @if (optionComponent && !optionTemplate()) {\r\n <ng-template\r\n [ngComponentOutlet]=\"optionComponent\"\r\n [ngComponentOutletInputs]=\"optionComponentInputsGenerator()(option)\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultOptionTemplate\r\n let-label=\"label\"\r\n >\r\n <span [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"optionContextGenerator()(option)\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n }\r\n @if (shouldShowNoItemsFound()) {\r\n @if (noItemsFoundComponent && !noItemsFoundTemplate()) {\r\n <ng-template\r\n [ngComponentOutlet]=\"noItemsFoundComponent\"\r\n [ngComponentOutletInputs]=\"noItemsFoundComponentInputs()\"\r\n />\r\n } @else {\r\n <ng-template #defaultNoItemsFoundTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ noItemsFoundText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"noItemsFoundTemplate()?.template || defaultNoItemsFoundTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n }\r\n }\r\n @if (shouldShowAddCustom()) {\r\n <div\r\n class=\"ard-option ard-option-highlighted ard-add-custom\"\r\n (click)=\"addCustomOption(searchTerm())\"\r\n >\r\n @if (addCustomComponent && !addCustomTemplate()) {\r\n <ng-template\r\n [ngComponentOutlet]=\"addCustomComponent\"\r\n [ngComponentOutletInputs]=\"addCustomComponentInputs()\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultAddCustomTemplate\r\n let-searchTerm\r\n >\r\n <span class=\"ard-add-custom-label\">{{ addCustomOptionText() }}</span>\r\n <span class=\"ard-add-custom-value\">\"{{ searchTerm }}\"</span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"addCustomTemplate()?.template || defaultAddCustomTemplate\"\r\n [ngTemplateOutletContext]=\"getCustomOptionContext()\"\r\n />\r\n }\r\n </div>\r\n }\r\n @if (isLoading()) {\r\n @if (loadingPlaceholderComponent && !loadingPlaceholderTemplate()) {\r\n <ng-template\r\n [ngComponentOutlet]=\"loadingPlaceholderComponent\"\r\n [ngComponentOutletInputs]=\"loadingPlaceholderComponentInputs()\"\r\n />\r\n } @else {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ loadingPlaceholderText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"loadingPlaceholderTemplate()?.template || defaultLoadingPlaceholderTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n }\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, Inject, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleOneAxisAlignment } from '../types/alignment.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { DecorationElementAppearance, FormElementVariant } from '../types/theming.types';\r\nimport { _DisablableComponentBase } from './../_internal/disablable-component';\r\nimport { ARD_CHIP_DEFAULTS, ArdChipDefaults } from './chip.defaults';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-chip',\r\n templateUrl: './chip.component.html',\r\n styleUrls: ['./chip.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumChipComponent extends _DisablableComponentBase {\r\n protected override readonly _DEFAULTS!: ArdChipDefaults;\r\n constructor(@Inject(ARD_CHIP_DEFAULTS) defaults: ArdChipDefaults) {\r\n super(defaults);\r\n }\r\n\r\n //! appearance\r\n readonly contentAlignment = input<SimpleOneAxisAlignment>(this._DEFAULTS.contentAlignment);\r\n readonly appearance = input<DecorationElementAppearance>(this._DEFAULTS.appearance);\r\n readonly variant = input<FormElementVariant>(this._DEFAULTS.variant);\r\n readonly color = input<ComponentColor>(this._DEFAULTS.color);\r\n\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-chip-align-${this.contentAlignment()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<div\r\n class=\"ard-chip-wrapper ard-chip\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { computed, Directive, HostBinding, input, Input, output, signal } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase, _ngModelComponentDefaults, _NgModelComponentDefaults } from './ngmodel-component';\r\n\r\nexport interface _BooleanComponentDefaults extends _NgModelComponentDefaults {\r\n reverseSelected: boolean;\r\n}\r\nexport const _booleanComponentDefaults: _BooleanComponentDefaults = { ..._ngModelComponentDefaults, reverseSelected: false };\r\n\r\n/**\r\n * Common code for components, which only operate on the \"selected\" state.\r\n */\r\n@Directive()\r\nexport abstract class _BooleanComponentBase extends _NgModelComponentBase implements ControlValueAccessor {\r\n protected override readonly _DEFAULTS!: _BooleanComponentDefaults;\r\n\r\n protected abstract readonly _componentId: string;\r\n protected abstract readonly _componentName: string;\r\n\r\n //! control value accessor\r\n writeValue(v: any): void {\r\n this._selected = v;\r\n }\r\n //emitter function\r\n /**\r\n * Emits all select-state-related events.\r\n */\r\n protected _emitChange() {\r\n this._onChangeRegistered?.(this.selected());\r\n\r\n if (this.selected()) this.selectEvent.emit(null);\r\n else this.unselectEvent.emit(null);\r\n\r\n this.selectedChange.emit(this.selected());\r\n this.changeEvent.emit(this.selected());\r\n }\r\n\r\n //! events\r\n /**\r\n * The event emitter responsible for firing `select` events. Fired when the `selected` state is set to true.\r\n */\r\n readonly selectEvent = output<null>({ alias: 'select' });\r\n /**\r\n * The event emitter responsible for firing `unselect` events. Fired when the `selected` state is set to false.\r\n */\r\n readonly unselectEvent = output<null>({ alias: 'unselect' });\r\n /**\r\n * The event emitter responsible for firing `change` events. Fired when the `selected` state is changed.\r\n */\r\n readonly changeEvent = output<boolean>({ alias: 'change' });\r\n\r\n //! [(selected)] two-way binding\r\n // can be set using a no-value argument\r\n readonly selected = signal<boolean>(false);\r\n /**\r\n * The selection state of the component. Coercible into a boolean.\r\n */\r\n @Input('selected')\r\n set _selected(v: any) {\r\n this.selected.set(coerceBooleanProperty(v));\r\n }\r\n @HostBinding('attr.selected')\r\n @HostBinding('class.ard-selected')\r\n get _selectedHostAttribute(): boolean {\r\n return this.selectedAccountingForReverse();\r\n }\r\n /**\r\n * The event emitter responsible for firing `selectedChange` events. Fired when the `selected` state is changed.\r\n */\r\n readonly selectedChange = output<boolean>();\r\n\r\n /**\r\n * The reverse of the `selected` state. Coercible into a boolean. Useful for cases where the \"selected\" state is semantically reversed, e.g. \"disabled\".\r\n */\r\n readonly reverseSelected = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n /**\r\n * The \"selected\" state, accounting for the `reverseSelected` input.\r\n */\r\n readonly selectedAccountingForReverse = computed<boolean>(() => (this.reverseSelected() ? !this.selected() : this.selected()));\r\n\r\n /**\r\n * Toggles the selected state. Emits all appropriate events.\r\n */\r\n toggleSelected() {\r\n if (this.disabled() || this.readonly()) return;\r\n this.selected.update(v => !v);\r\n this._emitChange();\r\n this._emitTouched();\r\n }\r\n\r\n /**\r\n * Sets the state to \"selected\". Emits all appropriate events only if the state changes.\r\n */\r\n select() {\r\n if (this.disabled() || this.readonly()) return;\r\n this.selected.set(true);\r\n this._emitChange();\r\n this._emitTouched();\r\n }\r\n /**\r\n * Sets the state to \"unselected\". Emits all appropriate events only if the state changes.\r\n */\r\n unselect() {\r\n if (this.disabled() || this.readonly()) return;\r\n this.selected.set(false);\r\n this._emitChange();\r\n this._emitTouched();\r\n }\r\n}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _booleanComponentDefaults, _BooleanComponentDefaults } from '../../_internal/boolean-component';\r\nimport { _chipDefaults, ArdChipDefaults } from '../chip.defaults';\r\n\r\nexport interface ArdSelectableChipDefaults extends ArdChipDefaults, _BooleanComponentDefaults {\r\n chipTitle: string;\r\n hideSelectionIcon: boolean;\r\n}\r\n\r\nconst _selectableChipDefaults: ArdSelectableChipDefaults = {\r\n ..._booleanComponentDefaults,\r\n ..._chipDefaults,\r\n chipTitle: 'Select',\r\n hideSelectionIcon: false,\r\n};\r\n\r\nexport const ARD_SELECTABLE_CHIP_DEFAULTS = new InjectionToken<ArdSelectableChipDefaults>('ard-selectable-chip-defaults', {\r\n factory: () => ({\r\n ..._selectableChipDefaults,\r\n }),\r\n});\r\n\r\nexport function provideSelectableChipDefaults(config: Partial<ArdSelectableChipDefaults>): Provider {\r\n return { provide: ARD_SELECTABLE_CHIP_DEFAULTS, useValue: { ..._selectableChipDefaults, ...config } };\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, Inject, input, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleOneAxisAlignment } from '../../types/alignment.types';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { DecorationElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { _BooleanComponentBase } from './../../_internal/boolean-component';\r\nimport { ARD_SELECTABLE_CHIP_DEFAULTS, ArdSelectableChipDefaults } from './selectable-chip.defaults';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-selectable-chip',\r\n templateUrl: './selectable-chip.component.html',\r\n styleUrls: ['../chip.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSelectableChipComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSelectableChipComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n protected override readonly _DEFAULTS!: ArdSelectableChipDefaults;\r\n constructor(@Inject(ARD_SELECTABLE_CHIP_DEFAULTS) defaults: ArdSelectableChipDefaults) {\r\n super(defaults);\r\n }\r\n\r\n protected readonly _componentId = '111';\r\n protected readonly _componentName = 'selectable-chip';\r\n\r\n readonly chipTitle = input<string>(this._DEFAULTS.chipTitle);\r\n readonly hideSelectionIcon = input<boolean, BooleanLike>(this._DEFAULTS.hideSelectionIcon, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n //! appearance\r\n readonly contentAlignment = input<SimpleOneAxisAlignment>(this._DEFAULTS.contentAlignment);\r\n readonly appearance = input<DecorationElementAppearance>(this._DEFAULTS.appearance);\r\n readonly variant = input<FormElementVariant>(this._DEFAULTS.variant);\r\n readonly color = input<ComponentColor>(this._DEFAULTS.color);\r\n\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-chip-align-${this.contentAlignment()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n type=\"button\"\r\n class=\"ard-chip-wrapper ard-chip-selectable\"\r\n role=\"checkbox\"\r\n [attr.aria-checked]=\"selectedAccountingForReverse()\"\r\n [class.ard-chip-selected]=\"selectedAccountingForReverse()\"\r\n [attr.id]=\"htmlId()\"\r\n [attr.name]=\"htmlName()\"\r\n [attr.aria-disabled]=\"disabled()\"\r\n [ngClass]=\"ngClasses()\"\r\n [title]=\"chipTitle()\"\r\n [tabindex]=\"tabIndex()\"\r\n (click)=\"toggleSelected()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div\r\n class=\"ard-chip-selection-icon\"\r\n role=\"img\"\r\n ></div>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumChipComponent } from './chip.component';\r\nimport { ArdiumSelectableChipComponent } from './selectable-chip/selectable-chip.component';\r\nimport { ArdiumDeletableChipComponent } from './deletable-chip/deletable-chip.component';\r\nimport { _ClearButtonModule } from '../_internal/clear-button/clear-button.module';\r\n\r\n@NgModule({\r\n declarations: [ArdiumChipComponent, ArdiumSelectableChipComponent, ArdiumDeletableChipComponent],\r\n imports: [CommonModule, _ClearButtonModule],\r\n exports: [ArdiumChipComponent, ArdiumSelectableChipComponent, ArdiumDeletableChipComponent],\r\n})\r\nexport class ArdiumChipModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumDropdownPanelModule } from '../dropdown-panel/dropdown-panel.module';\r\nimport { ArdiumChipModule } from './../chip/chip.module';\r\nimport { ArdiumSelectComponent } from './select.component';\r\nimport {\r\n ArdAddCustomTemplateDirective,\r\n ArdDropdownFooterTemplateDirective,\r\n ArdDropdownHeaderTemplateDirective,\r\n ArdItemDisplayLimitTemplateDirective,\r\n ArdItemLimitReachedTemplateDirective,\r\n ArdLoadingPlaceholderTemplateDirective,\r\n ArdLoadingSpinnerTemplateDirective,\r\n ArdNoItemsFoundTemplateDirective,\r\n ArdOptgroupTemplateDirective,\r\n ArdOptionTemplateDirective,\r\n ArdSelectDropdownArrowTemplateDirective,\r\n ArdSelectPlaceholderTemplateDirective,\r\n ArdSelectPrefixTemplateDirective,\r\n ArdSelectSuffixTemplateDirective,\r\n ArdValueTemplateDirective,\r\n} from './select.directive';\r\n\r\nimport { ArdiumClickOutsideModule, ArdiumEscapeHTMLModule } from '@ardium-ui/devkit';\r\nimport { ArdiumFormFieldFrameModule } from '../form-field-frame/form-field-frame.module';\r\nimport { _ClearButtonModule } from './../_internal/clear-button/clear-button.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumSelectComponent,\r\n //tempalate directives\r\n ArdOptionTemplateDirective,\r\n ArdOptgroupTemplateDirective,\r\n ArdValueTemplateDirective,\r\n ArdSelectPlaceholderTemplateDirective,\r\n ArdLoadingSpinnerTemplateDirective,\r\n ArdLoadingPlaceholderTemplateDirective,\r\n ArdDropdownHeaderTemplateDirective,\r\n ArdDropdownFooterTemplateDirective,\r\n ArdNoItemsFoundTemplateDirective,\r\n ArdItemLimitReachedTemplateDirective,\r\n ArdItemDisplayLimitTemplateDirective,\r\n ArdAddCustomTemplateDirective,\r\n ArdSelectPrefixTemplateDirective,\r\n ArdSelectSuffixTemplateDirective,\r\n ArdSelectDropdownArrowTemplateDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ArdiumFormFieldFrameModule,\r\n ArdiumDropdownPanelModule,\r\n ArdiumChipModule,\r\n ArdiumClickOutsideModule,\r\n _ClearButtonModule,\r\n ArdiumEscapeHTMLModule,\r\n ],\r\n exports: [\r\n ArdiumSelectComponent,\r\n //tempalate directives\r\n ArdOptionTemplateDirective,\r\n ArdOptgroupTemplateDirective,\r\n ArdValueTemplateDirective,\r\n ArdSelectPlaceholderTemplateDirective,\r\n ArdLoadingSpinnerTemplateDirective,\r\n ArdLoadingPlaceholderTemplateDirective,\r\n ArdDropdownHeaderTemplateDirective,\r\n ArdDropdownFooterTemplateDirective,\r\n ArdNoItemsFoundTemplateDirective,\r\n ArdItemLimitReachedTemplateDirective,\r\n ArdItemDisplayLimitTemplateDirective,\r\n ArdAddCustomTemplateDirective,\r\n ArdSelectPrefixTemplateDirective,\r\n ArdSelectSuffixTemplateDirective,\r\n ArdSelectDropdownArrowTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumSelectModule {}\r\n","export interface FileInputBrowseContext {\r\n browse: () => void;\r\n}\r\n\r\nexport interface FileInputFileAmountContext extends FileInputBrowseContext {\r\n amount: number;\r\n}\r\n\r\nexport interface FileInputFilesContext extends FileInputFileAmountContext {\r\n $implicit: File[];\r\n files: File[];\r\n}\r\n\r\nexport type FileInputFileType = {\r\n /**\r\n * An optional desciption of the category of file types allowed. Default to be an empty string.\r\n */\r\n description?: string;\r\n /**\r\n * An object with the keys set to the MIME type and the values an array of file extensions (see below for an example).\r\n * ```ts\r\n * readonly FILE_TYPES = [\r\n * {\r\n * description: \"Text file\",\r\n * accept: { \"text/plain\": [\".txt\"] },\r\n * },\r\n * ];\r\n * ```\r\n */\r\n accept: Record<string, string[]>;\r\n};\r\n\r\nexport type FileInputFileTypes = FileInputFileType[];\r\n\r\nexport const FileInputFailedUploadReason = {\r\n InvalidMimeType: 'InvalidMimeType',\r\n MimeTypeFoundButExtensionNotAllowed: 'MimeTypeFoundButExtensionNotAllowed',\r\n InvalidExtension: 'InvalidExtension',\r\n FileTooBig: 'FileTooBig',\r\n TooManyFiles: 'TooManyFiles',\r\n} as const;\r\nexport type FileInputFailedUploadReason = typeof FileInputFailedUploadReason[keyof typeof FileInputFailedUploadReason];\r\n\r\nexport interface FileInputFailedUpload {\r\n file: File;\r\n reason: FileInputFailedUploadReason;\r\n}","import {\r\n AfterViewInit,\r\n computed,\r\n Directive,\r\n ElementRef,\r\n inject,\r\n Input,\r\n input,\r\n OnInit,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport {\r\n BooleanLike,\r\n coerceBooleanProperty,\r\n coerceNumberProperty,\r\n FileSystemMethod,\r\n FileSystemService,\r\n FileSystemStartDirectory,\r\n} from '@ardium-ui/devkit';\r\nimport { isDefined } from 'simple-bool';\r\nimport { _FormFieldComponentBase } from '../_internal/form-field-component';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { _FileInputBaseDefaults } from './file-input-base.defaults';\r\nimport { FileInputFailedUpload, FileInputFailedUploadReason, FileInputFileTypes } from './file-input-types';\r\n\r\n@Directive()\r\nexport abstract class _FileInputComponentBase extends _FormFieldComponentBase implements OnInit, AfterViewInit {\r\n protected override readonly _DEFAULTS!: _FileInputBaseDefaults;\r\n\r\n private readonly _fileSystemService = inject(FileSystemService);\r\n\r\n abstract readonly componentId: string;\r\n\r\n readonly fileInputEl = viewChild<ElementRef<HTMLInputElement>>('fileInput');\r\n\r\n readonly name = input<string>('');\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n if (!(window.File && window.FileReader && window.Blob)) {\r\n console.error(\r\n new Error(\r\n `ARD-FT${this.componentId}0: Cannot use Ardium UI file features because this browser does not support file handling!`\r\n )\r\n );\r\n }\r\n }\r\n protected _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._wasViewInit = true;\r\n\r\n this._updateElementValue();\r\n }\r\n\r\n //! appearance\r\n readonly compact = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! settings\r\n readonly multiple = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly maxFiles = input<Nullable<number>, any>(null, { transform: v => coerceNumberProperty(v, null) });\r\n\r\n readonly maxFilesWithMultiple = computed<number>(() => (this.multiple() ? (this.maxFiles() ?? Infinity) : 1));\r\n\r\n readonly blockAfterUpload = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n get shouldBeBlocked(): boolean {\r\n return this.disabled() || this.readonly() || (this.blockAfterUpload() && isDefined(this.value));\r\n }\r\n\r\n readonly maxFileSizeBytes = input<Nullable<number>, any>(null, { transform: v => coerceNumberProperty(v, null) });\r\n\r\n readonly accept = input<string | string[]>('*');\r\n readonly directoryId = input<Nullable<string>>(undefined);\r\n readonly startDirectory = input<Nullable<FileSystemStartDirectory>>(undefined);\r\n readonly fileTypes = input<Nullable<FileInputFileTypes>>(undefined);\r\n\r\n readonly acceptString = computed<string>(() => {\r\n const types = this.fileTypes();\r\n if (types) {\r\n const acceptEntries: string[] = [];\r\n for (const type of types) {\r\n if (type.accept) {\r\n for (const mimeType in type.accept) {\r\n const extensions = type.accept[mimeType];\r\n if (extensions && extensions.length > 0) {\r\n acceptEntries.push(...extensions);\r\n }\r\n }\r\n }\r\n }\r\n return acceptEntries.join(',');\r\n }\r\n\r\n const accept = this.accept();\r\n if (Array.isArray(accept)) {\r\n return accept.join(',');\r\n }\r\n\r\n return accept;\r\n });\r\n\r\n readonly acceptedMimeTypes = computed<{ mimeType: string; extensions: Set<string> }[] | null>(() => {\r\n const types = this.fileTypes();\r\n if (types) {\r\n const mimeTypes: { mimeType: string; extensions: Set<string> }[] = [];\r\n for (const type of types) {\r\n if (type.accept) {\r\n for (const mimeType in type.accept) {\r\n mimeTypes.push({ mimeType, extensions: new Set(type.accept[mimeType]) });\r\n }\r\n }\r\n }\r\n return mimeTypes;\r\n }\r\n return null;\r\n });\r\n\r\n //! value\r\n protected _value: File[] | null = null;\r\n @Input()\r\n get value(): File[] | null {\r\n return this._value;\r\n }\r\n set value(v: File | File[] | null) {\r\n this.writeValue(v);\r\n }\r\n\r\n readonly valueChange = output<File[] | null>();\r\n readonly dragFilesEvent = output<File[]>({ alias: 'dragFiles' });\r\n readonly failedUploadEvent = output<FileInputFailedUpload[]>({ alias: 'failedUpload' });\r\n\r\n protected _valueBeforeInit: File[] | null = null;\r\n writeValue(v: File | File[] | null): void {\r\n this._writeValue(v, false);\r\n }\r\n protected _writeValue(v: File | File[] | null, emitEvents = true): void {\r\n if (!(v instanceof File) && !Array.isArray(v) && v !== null) {\r\n console.error(\r\n new Error(`ARD-FT${this.componentId}1: <ard-file-input>'s value must be a File, an array of Files, or null.`)\r\n );\r\n return;\r\n }\r\n if (v instanceof File) {\r\n v = [v];\r\n }\r\n if (Array.isArray(v) && !this.multiple() && v.length > 1) {\r\n console.warn(\r\n `ARD-WA${this.componentId}2: <ard-file-input> received an array of files but the 'multiple' input is not set to true. Only the first file will be used.`\r\n );\r\n v = [v[0]];\r\n }\r\n if (Array.isArray(v) && v.length === 0) {\r\n v = null;\r\n }\r\n\r\n if (v === null) {\r\n this.currentViewState.set('idle');\r\n } else {\r\n this.currentViewState.set('uploaded');\r\n }\r\n this._value = v;\r\n\r\n if (this._wasViewInit) this._updateElementValue();\r\n\r\n if (emitEvents) {\r\n this._emitChange();\r\n }\r\n }\r\n\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n openBrowseDialog(): void {\r\n if (this.disabled() || this.readonly()) return;\r\n // use FileSystemAPI if supported & needed\r\n if (\r\n this._fileSystemService.isFileSystemAPISupported('showOpenFilePicker') &&\r\n (this.directoryId() || this.startDirectory() || this.fileTypes())\r\n ) {\r\n this._isFilePickerOpen = true;\r\n\r\n this._fileSystemService\r\n .requestFileUpload({\r\n method: FileSystemMethod.PreferFileSystem,\r\n multiple: this.multiple(),\r\n directoryId: this.directoryId() ?? undefined,\r\n startDirectory: this.startDirectory() ?? undefined,\r\n types: this.fileTypes() ?? undefined,\r\n accept: this.accept() === '*' ? undefined : this.accept(),\r\n })\r\n .then(fileOrFiles => {\r\n if (!fileOrFiles) {\r\n this._writeValue(null);\r\n this.currentViewState.set('idle');\r\n return;\r\n }\r\n const files = Array.isArray(fileOrFiles) ? fileOrFiles : [fileOrFiles];\r\n this._writeFilesToValue(files);\r\n this._isFilePickerOpen = false;\r\n });\r\n return;\r\n }\r\n // else use the old-school method by clicking directly on the input\r\n this._isFilePickerOpen = true;\r\n this.fileInputEl()?.nativeElement.click();\r\n }\r\n\r\n //! temporary value\r\n //for drag event handling\r\n protected _draggedFiles: number | null = null;\r\n\r\n //! view state\r\n readonly currentViewState = signal<'idle' | 'dragover' | 'uploaded'>('idle');\r\n private _beforeDragoverState: 'idle' | 'uploaded' = 'idle';\r\n\r\n //! event handlers\r\n onDragover(event: DragEvent): void {\r\n event.preventDefault();\r\n if (this.shouldBeBlocked) {\r\n if (!event.dataTransfer) return;\r\n\r\n event.dataTransfer.dropEffect = 'none';\r\n return;\r\n }\r\n if (this.currentViewState() === 'dragover') return;\r\n\r\n this._draggedFiles = this._countDragenterFiles(event.dataTransfer);\r\n\r\n if (!this._draggedFiles) return;\r\n\r\n this._beforeDragoverState = this.currentViewState() as 'idle' | 'uploaded';\r\n this.currentViewState.set('dragover');\r\n }\r\n onDragleave(): void {\r\n if (this.shouldBeBlocked) return;\r\n if (this.currentViewState() !== 'dragover') return;\r\n\r\n this.currentViewState.set(this._beforeDragoverState);\r\n }\r\n onDrop(event: DragEvent): void {\r\n event.preventDefault();\r\n\r\n if (this.shouldBeBlocked) return;\r\n\r\n const filelist = event.dataTransfer?.files;\r\n if (!filelist) {\r\n this.currentViewState.set('idle');\r\n return;\r\n }\r\n const files = Array.from(filelist);\r\n if (!files) {\r\n this.currentViewState.set('idle');\r\n return;\r\n }\r\n const filteredFiles: File[] = [];\r\n const failedFiles: FileInputFailedUpload[] = [];\r\n const acceptedMimeTypes = this.acceptedMimeTypes();\r\n if (acceptedMimeTypes) {\r\n let mimeTypeMatched = false;\r\n fileLoop: for (const file of files) {\r\n const { shouldAccept, reason } = this._filterFilesBasedOnSizeAndCount(file, filteredFiles.length);\r\n if (!shouldAccept) {\r\n failedFiles.push({ file, reason: reason! });\r\n continue;\r\n }\r\n\r\n mimeTypeMatched = false;\r\n for (const mimeTypeObj of acceptedMimeTypes) {\r\n if (isMimeTypeMatching(file, mimeTypeObj.mimeType)) {\r\n mimeTypeMatched = true;\r\n\r\n const extension = '.' + file.name.split('.').pop()?.toLowerCase();\r\n if (mimeTypeObj.extensions.size === 0 || mimeTypeObj.extensions.has('*') || mimeTypeObj.extensions.has(extension)) {\r\n filteredFiles.push(file);\r\n continue fileLoop;\r\n }\r\n }\r\n }\r\n if (!mimeTypeMatched) {\r\n failedFiles.push({ file, reason: FileInputFailedUploadReason.InvalidMimeType });\r\n } else {\r\n failedFiles.push({ file, reason: FileInputFailedUploadReason.MimeTypeFoundButExtensionNotAllowed });\r\n }\r\n }\r\n } else {\r\n const accept = this.accept();\r\n let acceptEntries: string[] = [];\r\n if (Array.isArray(accept)) {\r\n acceptEntries = accept.map(e => e.trim().toLowerCase());\r\n } else {\r\n acceptEntries = accept.split(',').map(e => e.trim().toLowerCase());\r\n }\r\n if (typeof accept === 'string' && accept === '*') {\r\n for (const file of files) {\r\n const { shouldAccept, reason } = this._filterFilesBasedOnSizeAndCount(file, filteredFiles.length);\r\n if (!shouldAccept) {\r\n failedFiles.push({ file, reason: reason! });\r\n }\r\n }\r\n } else {\r\n fileLoop: for (const file of files) {\r\n const { shouldAccept, reason } = this._filterFilesBasedOnSizeAndCount(file, filteredFiles.length);\r\n if (!shouldAccept) {\r\n failedFiles.push({ file, reason: reason! });\r\n continue;\r\n }\r\n\r\n const extension = '.' + file.name.split('.').at(-1)?.toLowerCase();\r\n for (const entry of acceptEntries) {\r\n if (extension === entry) {\r\n filteredFiles.push(file);\r\n continue fileLoop;\r\n }\r\n }\r\n failedFiles.push({ file, reason: FileInputFailedUploadReason.InvalidExtension });\r\n }\r\n }\r\n }\r\n\r\n this.dragFilesEvent.emit(filteredFiles);\r\n this.failedUploadEvent.emit(failedFiles);\r\n\r\n this.currentViewState.set('uploaded');\r\n this._writeValue(filteredFiles.length > 0 ? filteredFiles : null);\r\n this._emitTouched();\r\n }\r\n onFileInputChange(): void {\r\n this._isFilePickerOpen = false;\r\n const files = Array.from(this.fileInputEl()?.nativeElement.files ?? []);\r\n this._writeFilesToValue(files);\r\n }\r\n private _writeFilesToValue(files: File[]) {\r\n if (files.length === 0) {\r\n this._writeValue(null);\r\n this.currentViewState.set('idle');\r\n this._emitTouched();\r\n return;\r\n }\r\n this._writeValue(files);\r\n this.currentViewState.set('uploaded');\r\n this._emitTouched();\r\n }\r\n\r\n //! touched event handling\r\n private _isFilePickerOpen = false;\r\n\r\n override onFocus(event: FocusEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (this._isFilePickerOpen) {\r\n setTimeout(() => {\r\n this._emitTouched();\r\n }, 200);\r\n }\r\n this._isFilePickerOpen = false;\r\n\r\n super.onFocus(event);\r\n }\r\n override onBlur(event: FocusEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n super.onBlur(event);\r\n\r\n this._shouldEmitTouched = !this._isFilePickerOpen;\r\n }\r\n\r\n //! helpers\r\n private _filterFilesBasedOnSizeAndCount(\r\n file: File,\r\n existingFileCount: number\r\n ): { shouldAccept: boolean; reason?: FileInputFailedUploadReason } {\r\n // check count\r\n if (existingFileCount >= this.maxFilesWithMultiple()) {\r\n return { shouldAccept: false, reason: FileInputFailedUploadReason.TooManyFiles };\r\n }\r\n // check size\r\n if (file.size > 0 && this.maxFileSizeBytes() !== null && file.size > this.maxFileSizeBytes()!) {\r\n return { shouldAccept: false, reason: FileInputFailedUploadReason.FileTooBig };\r\n }\r\n // all good\r\n return { shouldAccept: true };\r\n }\r\n protected _countDragenterFiles(data: DataTransfer | null): number | null {\r\n if (!data) return null;\r\n\r\n return Array.from(data.items).filter(item => item.kind === 'file').length;\r\n }\r\n\r\n protected _updateElementValue(): void {\r\n const v = this.value;\r\n\r\n const inputEl = this.fileInputEl()?.nativeElement;\r\n if (!inputEl) return;\r\n if (!v) {\r\n inputEl.value = '';\r\n return;\r\n }\r\n\r\n const dataTransfer = new DataTransfer();\r\n for (const file of v) {\r\n dataTransfer.items.add(file);\r\n }\r\n inputEl.files = dataTransfer.files;\r\n }\r\n}\r\n\r\nfunction isMimeTypeMatching(file: File, mimeType: string): boolean {\r\n if (mimeType === '*') return true;\r\n if (mimeType.endsWith('/*')) {\r\n const prefix = mimeType.slice(0, -2);\r\n return file.type.startsWith(prefix);\r\n }\r\n return file.type === mimeType;\r\n}\r\n","import { _formFieldComponentDefaults, _FormFieldComponentDefaults } from '../_internal/form-field-component';\r\n\r\nexport interface _FileInputBaseDefaults extends _FormFieldComponentDefaults {\r\n compact: boolean;\r\n multiple: boolean;\r\n blockAfterUpload: boolean;\r\n}\r\n\r\nexport const _fileInputBaseDefaults: _FileInputBaseDefaults = {\r\n ..._formFieldComponentDefaults,\r\n compact: false,\r\n multiple: false,\r\n blockAfterUpload: false,\r\n};\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _FileInputBaseDefaults, _fileInputBaseDefaults } from '../file-input-base.defaults';\r\nimport { ComponentColor } from './../../types/colors.types';\r\nimport { FormElementVariant } from './../../types/theming.types';\r\n\r\nexport interface ArdFileDropAreaDefaults extends _FileInputBaseDefaults {\r\n variant: FormElementVariant;\r\n color: ComponentColor;\r\n}\r\n\r\nconst _fileDropAreaDefaults: ArdFileDropAreaDefaults = {\r\n ..._fileInputBaseDefaults,\r\n variant: FormElementVariant.Rounded,\r\n color: ComponentColor.Primary,\r\n};\r\n\r\nexport const ARD_FILE_DROP_AREA_DEFAULTS = new InjectionToken<ArdFileDropAreaDefaults>('ard-file-drop-area-defaults', {\r\n factory: () => ({\r\n ..._fileDropAreaDefaults,\r\n }),\r\n});\r\n\r\nexport function provideFileDropAreaDefaults(config: Partial<ArdFileDropAreaDefaults>): Provider {\r\n return { provide: ARD_FILE_DROP_AREA_DEFAULTS, useValue: { ..._fileDropAreaDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { FileInputBrowseContext, FileInputFilesContext } from '../file-input-types';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-file-drop-area > ng-template[ard-idle-content-tmp]',\r\n})\r\nexport class ArdiumFileDropAreaIdleContentTemplateDirective {\r\n constructor(public template: TemplateRef<FileInputBrowseContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-file-drop-area > ng-template[ard-dragover-content-tmp]',\r\n})\r\nexport class ArdiumFileDropAreaDragoverContentTemplateDirective {\r\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-file-drop-area > ng-template[ard-dropped-content-tmp]',\r\n})\r\nexport class ArdiumFileDropAreaUploadedContentTemplateDirective {\r\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\r\n}\r\n","import { computed, Directive, input, Signal } from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty, coerceNumberProperty, NumberLike } from '@ardium-ui/devkit';\r\nimport { ButtonType } from '../types/button.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { _ButtonBaseDefaults } from './_button-base.defaults';\r\nimport { ButtonAppearance } from './general-button.types';\r\n\r\n@Directive()\r\nexport abstract class _ButtonBase {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n constructor(protected readonly _DEFAULTS: _ButtonBaseDefaults) {}\r\n\r\n readonly type = input<ButtonType>(this._DEFAULTS.type);\r\n\r\n readonly ariaLabel = input<string>('');\r\n\r\n //! button settings\r\n readonly appearance = input<ButtonAppearance>(this._DEFAULTS.appearance);\r\n readonly color = input<ComponentColor>(this._DEFAULTS.color);\r\n\r\n readonly lightColoring = input<boolean, BooleanLike>(this._DEFAULTS.lightColoring, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n readonly disabled = input<boolean, BooleanLike>(this._DEFAULTS.disabled, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly tabIndex = computed(() => (this.disabled() ? -1 : this._tabIndex()));\r\n readonly _tabIndex = input<number, NumberLike>(this._DEFAULTS.tabIndex, {\r\n alias: 'tabIndex',\r\n transform: v => coerceNumberProperty(v, 0),\r\n });\r\n\r\n readonly pointerEventsWhenDisabled = input<boolean, BooleanLike>(this._DEFAULTS.pointerEventsWhenDisabled, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n abstract readonly ngClasses: Signal<string>;\r\n}\r\n","export const ButtonType = {\r\n Button: 'button',\r\n Submit: 'submit',\r\n Reset: 'reset',\r\n} as const;\r\nexport type ButtonType = (typeof ButtonType)[keyof typeof ButtonType];\r\n","/**\r\n * General button appearance. Controls which parts of the button can be colored.\r\n *\r\n * @see {@link ButtonColoringMode}\r\n */\r\nexport const ButtonAppearance = {\r\n /**\r\n * No border and no background. Text and icon are colored.\r\n */\r\n Transparent: 'transparent',\r\n /**\r\n * No border, but with text shadow. Text, icon, and background are colored.\r\n */\r\n Raised: 'raised',\r\n /**\r\n * No border, but with text shadow. White background. Text and icon are colored.\r\n */\r\n RaisedStrong: 'raised-strong',\r\n /**\r\n * White background. Text and icon are colored.\r\n */\r\n Outlined: 'outlined',\r\n /**\r\n * White background. Text, icon, and border may be colored.\r\n *\r\n * Background becomes colored on hover/focus.\r\n */\r\n OutlinedStrong: 'outlined-strong',\r\n /**\r\n * No border. Text, icon, and background are colored.\r\n */\r\n Flat: 'flat',\r\n} as const;\r\nexport type ButtonAppearance = (typeof ButtonAppearance)[keyof typeof ButtonAppearance];\r\n\r\nexport const ButtonVariant = {\r\n /**\r\n * Basic, rectangular button.\r\n */\r\n Rounded: 'rounded',\r\n /**\r\n * Pill-shaped button.\r\n */\r\n Pill: 'pill',\r\n /**\r\n * Basic, rectangular button with sharp corners.\r\n */\r\n Sharp: 'sharp',\r\n} as const;\r\nexport type ButtonVariant = (typeof ButtonVariant)[keyof typeof ButtonVariant];\r\n\r\n/**\r\n * **F**loating **A**ction **B**utton size.\r\n */\r\nexport const FabSize = {\r\n Standard: 'standard',\r\n Small: 'small',\r\n} as const;\r\nexport type FabSize = (typeof FabSize)[keyof typeof FabSize];\r\n","import { ButtonType } from '../types/button.types';\r\nimport { ComponentColor } from './../types/colors.types';\r\nimport { ButtonAppearance } from './general-button.types';\r\n\r\nexport interface _SimpleButtonDefaults {\r\n disabled: boolean;\r\n tabIndex: number;\r\n color: ComponentColor;\r\n lightColoring: boolean;\r\n compact: boolean;\r\n type: ButtonType;\r\n pointerEventsWhenDisabled: boolean;\r\n}\r\nexport const _simpleButtonDefaults: _SimpleButtonDefaults = {\r\n disabled: false,\r\n tabIndex: 0,\r\n color: ComponentColor.Primary,\r\n lightColoring: false,\r\n compact: false,\r\n type: ButtonType.Button,\r\n pointerEventsWhenDisabled: false,\r\n};\r\nexport interface _ButtonBaseDefaults extends _SimpleButtonDefaults {\r\n appearance: ButtonAppearance;\r\n}\r\nexport const _buttonBaseDefaults: _ButtonBaseDefaults = {\r\n ..._simpleButtonDefaults,\r\n appearance: ButtonAppearance.Raised,\r\n};\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _buttonBaseDefaults, _ButtonBaseDefaults } from '../_button-base.defaults';\r\nimport { ButtonVariant } from '../general-button.types';\r\n\r\nexport interface ArdButtonDefaults extends _ButtonBaseDefaults {\r\n variant: ButtonVariant;\r\n vertical: boolean;\r\n square: boolean;\r\n}\r\n\r\nconst _buttonDefaults: ArdButtonDefaults = {\r\n ..._buttonBaseDefaults,\r\n variant: ButtonVariant.Rounded,\r\n vertical: false,\r\n square: false,\r\n};\r\n\r\nexport const ARD_BUTTON_DEFAULTS = new InjectionToken<ArdButtonDefaults>('ard-button-defaults', {\r\n factory: () => ({ ..._buttonDefaults }),\r\n});\r\n\r\nexport function provideButtonDefaults(config: Partial<ArdButtonDefaults>): Provider {\r\n return { provide: ARD_BUTTON_DEFAULTS, useValue: { ..._buttonDefaults, ...config } };\r\n}\r\n","import { computed, Directive, effect, ElementRef, inject, Inject, input, Renderer2, signal, SimpleChanges } from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _ButtonBase } from '../_button-base';\r\nimport { ButtonVariant } from '../general-button.types';\r\nimport { ARD_BUTTON_DEFAULTS, ArdButtonDefaults } from './button.defaults';\r\n\r\n@Directive({\r\n selector: 'button[ard-button], a[ard-button]',\r\n standalone: false,\r\n host: {\r\n '[class]': 'ngClasses()',\r\n '[tabindex]': 'tabIndex()',\r\n '(click)': 'handleClick($event)',\r\n },\r\n})\r\nexport class ArdiumButtonDirective extends _ButtonBase {\r\n protected override readonly _DEFAULTS!: ArdButtonDefaults;\r\n\r\n constructor(@Inject(ARD_BUTTON_DEFAULTS) defaults: ArdButtonDefaults) {\r\n super(defaults);\r\n\r\n const el: HTMLElement = this._hostEl.nativeElement;\r\n if (el.tagName === 'BUTTON') {\r\n effect(() => {\r\n this._renderer.setProperty(el, 'disabled', this.disabled());\r\n });\r\n effect(() => {\r\n this._renderer.setAttribute(el, 'type', this.type());\r\n });\r\n }\r\n }\r\n\r\n private readonly _hostEl = inject(ElementRef);\r\n private readonly _renderer = inject(Renderer2);\r\n\r\n handleClick(event: Event): void {\r\n if (this.disabled()) {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n }\r\n\r\n //! button settings\r\n readonly variant = input<ButtonVariant>(this._DEFAULTS.variant);\r\n\r\n readonly vertical = input<boolean, BooleanLike>(this._DEFAULTS.vertical, { transform: v => coerceBooleanProperty(v) });\r\n readonly square = input<boolean, BooleanLike>(this._DEFAULTS.square, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n 'ard-button',\r\n this.wrapperClasses(),\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n this.lightColoring() ? `ard-light-coloring` : '',\r\n this.disabled() ? 'ard-disabled' : '',\r\n this.compact() ? 'ard-compact' : '',\r\n this.vertical() ? 'ard-button-vertical' : '',\r\n this.square() ? 'ard-button-square' : '',\r\n this.pointerEventsWhenDisabled() ? 'ard-button-with-pointer-events-when-disabled' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! inheriting from button groups\r\n readonly inheritedCompact = signal<boolean | null>(null);\r\n\r\n readonly wasCompactChanged = signal<boolean>(false);\r\n\r\n readonly compactOrInherited = computed(() =>\r\n this.wasCompactChanged() ? this.compact() : (this.inheritedCompact() ?? this.compact())\r\n );\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['compact']) {\r\n this.wasCompactChanged.set(true);\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Inject, OnChanges, SimpleChanges, ViewEncapsulation, computed, input, output, signal } from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _ButtonBase } from '../_button-base';\r\nimport { ButtonVariant } from '../general-button.types';\r\nimport { ARD_BUTTON_DEFAULTS, ArdButtonDefaults } from './button.defaults';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-button',\r\n templateUrl: './button.component.html',\r\n styleUrls: ['./button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class.ard-button-with-pointer-events-when-disabled]': 'pointerEventsWhenDisabled()',\r\n },\r\n})\r\nexport class ArdiumButtonComponent extends _ButtonBase implements OnChanges {\r\n protected override readonly _DEFAULTS!: ArdButtonDefaults;\r\n\r\n constructor(@Inject(ARD_BUTTON_DEFAULTS) defaults: ArdButtonDefaults) {\r\n super(defaults);\r\n }\r\n\r\n //! events\r\n readonly focusEvent = output<FocusEvent>({ alias: 'focus' });\r\n readonly blurEvent = output<FocusEvent>({ alias: 'blur' });\r\n\r\n //! button settings\r\n readonly variant = input<ButtonVariant>(this._DEFAULTS.variant);\r\n\r\n readonly vertical = input<boolean, BooleanLike>(this._DEFAULTS.vertical, { transform: v => coerceBooleanProperty(v) });\r\n readonly square = input<boolean, BooleanLike>(this._DEFAULTS.square, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly inheritedCompact = signal<boolean | null>(null);\r\n\r\n readonly wasCompactChanged = signal<boolean>(false);\r\n\r\n readonly compactOrInherited = computed(() =>\r\n this.wasCompactChanged() ? this.compact() : (this.inheritedCompact() ?? this.compact())\r\n );\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['compact']) {\r\n this.wasCompactChanged.set(true);\r\n }\r\n }\r\n\r\n // stub definition to satisfy abstract class\r\n override readonly ngClasses = computed(() => '');\r\n}\r\n","<button\r\n #buttonElement\r\n ard-button\r\n (focus)=\"focusEvent.emit($event)\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n [type]=\"type()\"\r\n [appearance]=\"appearance()\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [lightColoring]=\"lightColoring()\"\r\n [pointerEventsWhenDisabled]=\"pointerEventsWhenDisabled()\"\r\n [variant]=\"variant()\"\r\n [vertical]=\"vertical()\"\r\n [square]=\"square()\"\r\n [compact]=\"compactOrInherited()\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n>\r\n <ng-content></ng-content>\r\n</button>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Inject,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n input\r\n} from '@angular/core';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { FormElementVariant } from '../../types/theming.types';\r\nimport { _FileInputComponentBase } from '../file-input-base';\r\nimport { FileInputBrowseContext, FileInputFileAmountContext, FileInputFilesContext } from '../file-input-types';\r\nimport { ARD_FILE_DROP_AREA_DEFAULTS, ArdFileDropAreaDefaults } from './file-drop-area.defaults';\r\nimport {\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n} from './file-drop-area.directives';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-file-drop-area',\r\n templateUrl: './file-drop-area.component.html',\r\n styleUrls: ['./file-drop-area.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumFileDropAreaComponent extends _FileInputComponentBase {\r\n protected override readonly _DEFAULTS!: ArdFileDropAreaDefaults;\r\n constructor(@Inject(ARD_FILE_DROP_AREA_DEFAULTS) defaults: ArdFileDropAreaDefaults) {\r\n super(defaults);\r\n }\r\n\r\n readonly componentId = '010';\r\n\r\n //! appearance\r\n readonly variant = input<FormElementVariant>(this._DEFAULTS.variant);\r\n readonly color = input<ComponentColor>(this._DEFAULTS.color);\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [`ard-variant-${this.variant()}`, `ard-color-${this.color()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! triggering file dialog\r\n protected _wasMousedownOnElement: true | null = null;\r\n onMousedown(): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this._wasMousedownOnElement = true;\r\n }\r\n onMouseup(): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (!this._wasMousedownOnElement) return;\r\n this._wasMousedownOnElement = null;\r\n\r\n this.openBrowseDialog();\r\n }\r\n\r\n //! templates\r\n readonly idleTemplate = contentChild(ArdiumFileDropAreaIdleContentTemplateDirective);\r\n readonly dragoverTemplate = contentChild(ArdiumFileDropAreaDragoverContentTemplateDirective);\r\n readonly uploadedTemplate = contentChild(ArdiumFileDropAreaUploadedContentTemplateDirective);\r\n\r\n getIdleContext(): FileInputBrowseContext {\r\n return {\r\n browse: () => {\r\n this.openBrowseDialog();\r\n },\r\n };\r\n }\r\n getDragoverContext(): FileInputFileAmountContext {\r\n return {\r\n amount: this._draggedFiles!,\r\n browse: () => {\r\n this.openBrowseDialog();\r\n },\r\n };\r\n }\r\n getUploadedContext(): FileInputFilesContext {\r\n const files = this.value!;\r\n return {\r\n $implicit: files,\r\n amount: files.length,\r\n files,\r\n browse: () => {\r\n this.openBrowseDialog();\r\n },\r\n };\r\n }\r\n}\r\n","<div\r\n class=\"ard-file-drop-area\"\r\n (ardClickOutside)=\"onDragleave()\"\r\n (dragleave)=\"onDragleave()\"\r\n (dragover)=\"onDragover($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-file-drop-area-outline\">\r\n <div class=\"ard-file-drop-area-content\">\r\n @if (currentViewState() === 'idle') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"idleTemplate()?.template ?? defaultIdleTemplate\"\r\n [ngTemplateOutletContext]=\"getIdleContext()\"\r\n />\r\n } @if (currentViewState() === 'dragover') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"dragoverTemplate()?.template ?? defaultDragoverTemplate\"\r\n [ngTemplateOutletContext]=\"getDragoverContext()\"\r\n />\r\n } @if (currentViewState() === 'uploaded') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"uploadedTemplate()?.template ?? defaultUploadedTemplate\"\r\n [ngTemplateOutletContext]=\"getUploadedContext()\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n<input\r\n #fileInput\r\n class=\"ard-file-drop-area-input-element\"\r\n type=\"file\"\r\n [multiple]=\"multiple()\"\r\n [attr.id]=\"htmlId()\"\r\n [attr.name]=\"htmlName()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [readOnly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (change)=\"onFileInputChange()\"\r\n/>\r\n\r\n<ng-template\r\n #defaultIdleTemplate\r\n let-browse=\"browse\"\r\n>\r\n <ard-icon class=\"ard-file-drop-area-icon\">upload</ard-icon>\r\n <strong class=\"ard-file-drop-area-drop-text\">\r\n @if (!multiple()) {\r\n <span>Drag & Drop a file</span>\r\n } @else {\r\n <span>Drag & Drop files</span>\r\n } here\r\n </strong>\r\n <span class=\"ard-file-drop-area-or-text\">or</span>\r\n <ard-button\r\n class=\"ard-file-drop-area-browse-button\"\r\n appearance=\"transparent\"\r\n [compact]=\"compact()\"\r\n [variant]=\"variant()\"\r\n [color]=\"color()\"\r\n (click)=\"browse()\"\r\n [tabIndex]=\"this.readonly() ? -1 : tabIndex()\"\r\n [disabled]=\"this.disabled() || this.readonly()\"\r\n >\r\n Browse files\r\n </ard-button>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultDragoverTemplate\r\n let-amount=\"amount\"\r\n>\r\n <span class=\"ard-file-drop-area-dragover-text\">Drop </span>\r\n <span class=\"ard-file-drop-area-dragover-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-drop-area-dragover-text\"> here to upload. </span>\r\n @if (amount > 1 && !multiple()) {\r\n <strong class=\"ard-file-drop-area-dragover-warning\"> Only the first file will be uploaded! </strong>\r\n }\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultUploadedTemplate\r\n let-amount=\"amount\"\r\n let-files=\"files\"\r\n>\r\n <div class=\"ard-file-drop-area-uploaded-container\">\r\n <div class=\"ard-file-drop-area-uploaded-message\">\r\n <span class=\"ard-file-drop-area-uploaded-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-drop-area-uploaded-text\"> uploaded.</span>\r\n </div>\r\n <div class=\"ard-file-drop-area-uploaded-files\">\r\n @for (file of files; track $index) {\r\n <div class=\"ard-file-drop-area-file\">\r\n <ard-icon>draft</ard-icon>\r\n <div class=\"ard-file-drop-area-file-info\">\r\n <span class=\"ard-file-drop-area-filename\">\r\n <span class=\"ard-file-drop-area-filename-name\">{{ file | filename }}</span>\r\n <span class=\"ard-file-drop-area-filename-ext\">{{ file | fileext : true }}</span>\r\n </span>\r\n <span class=\"ard-file-drop-area-filesize\">{{ file.size | filesize }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumButtonComponent } from './button.component';\r\nimport { ArdiumButtonDirective } from './button.directive';\r\n\r\n@NgModule({\r\n declarations: [ArdiumButtonComponent, ArdiumButtonDirective],\r\n imports: [CommonModule],\r\n exports: [ArdiumButtonComponent, ArdiumButtonDirective],\r\n})\r\nexport class ArdiumButtonModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport {\r\n ArdiumClickOutsideModule,\r\n ArdiumFilePipesModule\r\n} from '@ardium-ui/devkit';\r\nimport { ArdiumButtonModule } from '../../buttons/button/button.module';\r\nimport { ArdiumIconModule } from '../../icon/icon.module';\r\nimport { ArdiumFileDropAreaComponent } from './file-drop-area.component';\r\nimport {\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n} from './file-drop-area.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumFileDropAreaComponent,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ArdiumButtonModule,\r\n ArdiumIconModule,\r\n ArdiumFilePipesModule,\r\n ArdiumClickOutsideModule,\r\n ],\r\n exports: [\r\n ArdiumFileDropAreaComponent,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumFileDropAreaModule {}\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\r\nimport { ArdFormFieldFramePrefixSuffix } from '../../form-field-frame';\r\nimport { _fileInputBaseDefaults, _FileInputBaseDefaults } from '../file-input-base.defaults';\r\nimport { ComponentColor } from './../../types/colors.types';\r\nimport { FormElementAppearance, FormElementVariant } from './../../types/theming.types';\r\n\r\nexport interface ArdFileInputDefaults extends _FileInputBaseDefaults {\r\n appearance: FormElementAppearance;\r\n variant: FormElementVariant;\r\n color: ComponentColor;\r\n inputAttrs: Record<string, any>;\r\n clearable: boolean;\r\n clearButtonTitle: string;\r\n PrefixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n SuffixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n}\r\n\r\nconst _fileInputDefaults: ArdFileInputDefaults = {\r\n ..._fileInputBaseDefaults,\r\n appearance: FormElementAppearance.Outlined,\r\n variant: FormElementVariant.Rounded,\r\n color: ComponentColor.Primary,\r\n inputAttrs: {},\r\n clearable: false,\r\n clearButtonTitle: 'Clear',\r\n PrefixComponent: undefined,\r\n SuffixComponent: undefined,\r\n};\r\n\r\nexport const ARD_FILE_INPUT_DEFAULTS = new InjectionToken<ArdFileInputDefaults>('ard-file-input-defaults', {\r\n factory: () => ({\r\n ..._fileInputDefaults,\r\n }),\r\n});\r\n\r\nexport function provideFileInputDefaults(config: Partial<ArdFileInputDefaults>): Provider {\r\n return { provide: ARD_FILE_INPUT_DEFAULTS, useValue: { ..._fileInputDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { FormFieldFrameTemplateContext } from '../../form-field-frame';\r\nimport { FileInputBrowseContext, FileInputFilesContext } from '../file-input-types';\r\n\r\n@Directive({ standalone: false, selector: 'ard-file-input > ng-template[ard-placeholder-tmp]' })\r\nexport class ArdFileInputPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-file-input > ng-template[ard-prefix-tmp]' })\r\nexport class ArdFileInputPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-file-input > ng-template[ard-suffix-tmp]' })\r\nexport class ArdFileInputSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-file-input > ng-template[ard-idle-content-tmp]' })\r\nexport class ArdiumFileInputIdleContentTemplateDirective {\r\n constructor(public template: TemplateRef<FileInputBrowseContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-file-input > ng-template[ard-dragover-content-tmp]',\r\n})\r\nexport class ArdiumFileInputDragoverContentTemplateDirective {\r\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-file-input > ng-template[ard-dropped-content-tmp]',\r\n})\r\nexport class ArdiumFileInputUploadedContentTemplateDirective {\r\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-file-input > ng-template[ard-upload-icon-tmp]',\r\n})\r\nexport class ArdiumFileInputUploadIconTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Inject,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ARD_FORM_FIELD_CONTROL } from '../../form-field/form-field-child.token';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { _FileInputComponentBase } from '../file-input-base';\r\nimport { FileInputBrowseContext, FileInputFileAmountContext, FileInputFilesContext } from '../file-input-types';\r\nimport { ARD_FILE_INPUT_DEFAULTS, ArdFileInputDefaults } from './file-input.defaults';\r\nimport {\r\n ArdFileInputPrefixTemplateDirective,\r\n ArdFileInputSuffixTemplateDirective,\r\n ArdiumFileInputDragoverContentTemplateDirective,\r\n ArdiumFileInputIdleContentTemplateDirective,\r\n ArdiumFileInputUploadIconTemplateDirective,\r\n ArdiumFileInputUploadedContentTemplateDirective\r\n} from './file-input.directives';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-file-input',\r\n templateUrl: './file-input.component.html',\r\n styleUrls: ['./file-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumFileInputComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ARD_FORM_FIELD_CONTROL,\r\n useExisting: forwardRef(() => ArdiumFileInputComponent),\r\n },\r\n ],\r\n})\r\nexport class ArdiumFileInputComponent extends _FileInputComponentBase {\r\n protected override readonly _DEFAULTS!: ArdFileInputDefaults;\r\n constructor(@Inject(ARD_FILE_INPUT_DEFAULTS) defaults: ArdFileInputDefaults) {\r\n super(defaults);\r\n }\r\n\r\n readonly componentId = '011';\r\n\r\n //! appearance\r\n //all handled in ard-form-field-frame component\r\n readonly appearance = input<FormElementAppearance>(this._DEFAULTS.appearance);\r\n readonly variant = input<FormElementVariant>(this._DEFAULTS.variant);\r\n readonly color = input<ComponentColor>(this._DEFAULTS.color);\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>(this._DEFAULTS.inputAttrs);\r\n\r\n //! root element classes\r\n readonly ngClasses = computed<string>(() =>\r\n [`ard-color-${this.color()}`, `ard-state-${this.currentViewState()}`, this.value ? 'ard-has-value' : ''].join(' ')\r\n );\r\n\r\n //! clear button\r\n readonly clearable = input<boolean, BooleanLike>(this._DEFAULTS.clearable, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly clearButtonTitle = input<string>(this._DEFAULTS.clearButtonTitle);\r\n\r\n get shouldShowClearButton(): boolean {\r\n return this.clearable() && !this.disabled() && !this.readonly() && Boolean(this.value);\r\n }\r\n onClearButtonClick(event: MouseEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n event.stopPropagation();\r\n this.clear();\r\n this.focus();\r\n }\r\n\r\n //! clear function\r\n clear(): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (!this.clearable()) return;\r\n\r\n this.writeValue(null);\r\n this._emitChange();\r\n this.clearEvent.emit();\r\n }\r\n\r\n readonly clearEvent = output({ alias: 'clear' });\r\n\r\n //! state\r\n readonly touched = signal<boolean>(false);\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplate = contentChild(ArdFileInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdFileInputSuffixTemplateDirective);\r\n\r\n readonly prefixComponent = this._DEFAULTS.PrefixComponent;\r\n readonly suffixComponent = this._DEFAULTS.SuffixComponent;\r\n\r\n //! templates\r\n readonly idleTemplate = contentChild(ArdiumFileInputIdleContentTemplateDirective);\r\n readonly dragoverTemplate = contentChild(ArdiumFileInputDragoverContentTemplateDirective);\r\n readonly uploadedTemplate = contentChild(ArdiumFileInputUploadedContentTemplateDirective);\r\n readonly uploadIconTemplate = contentChild(ArdiumFileInputUploadIconTemplateDirective);\r\n\r\n getIdleContext(): FileInputBrowseContext {\r\n return {\r\n browse: () => {\r\n this.openBrowseDialog();\r\n },\r\n };\r\n }\r\n getDragoverContext(): FileInputFileAmountContext {\r\n return {\r\n amount: this._draggedFiles!,\r\n browse: () => {\r\n this.openBrowseDialog();\r\n },\r\n };\r\n }\r\n getUploadedContext(): FileInputFilesContext {\r\n const files = this.value!;\r\n return {\r\n $implicit: files,\r\n amount: files.length,\r\n files,\r\n browse: () => {\r\n this.openBrowseDialog();\r\n },\r\n };\r\n }\r\n}\r\n","<ard-form-field-frame\r\n class=\"ard-file-input-form-field-frame\"\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n [prefixComponent]=\"prefixComponent\"\r\n [suffixComponent]=\"suffixComponent\"\r\n (dragover)=\"onDragover($event)\"\r\n (dragleave)=\"onDragleave()\"\r\n (drop)=\"onDrop($event)\"\r\n (ardClickOutside)=\"onDragleave()\"\r\n>\r\n <div\r\n class=\"ard-file-input\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n <div class=\"ard-file-input__value\">\r\n @if (currentViewState() === 'idle') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"idleTemplate()?.template ?? defaultIdleTemplate\"\r\n [ngTemplateOutletContext]=\"getIdleContext()\"\r\n />\r\n }\r\n @if (currentViewState() === 'dragover') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"dragoverTemplate()?.template ?? defaultDragoverTemplate\"\r\n [ngTemplateOutletContext]=\"getDragoverContext()\"\r\n />\r\n }\r\n @if (currentViewState() === 'uploaded') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"uploadedTemplate()?.template ?? defaultUploadedTemplate\"\r\n [ngTemplateOutletContext]=\"getUploadedContext()\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (shouldShowClearButton) {\r\n <ard-clear-button\r\n #focusableElement\r\n [title]=\"clearButtonTitle()\"\r\n (mouseup)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n @if (!shouldBeBlocked) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-browse-button\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabIndex]=\"readonly() ? -1 : tabIndex()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n (click)=\"openBrowseDialog()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n\r\n <ng-template #defaultUploadIconTemplate>\r\n <ard-icon>folder</ard-icon>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"uploadIconTemplate()?.template || defaultUploadIconTemplate\" />\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<input\r\n #fileInput\r\n class=\"ard-file-input__input\"\r\n type=\"file\"\r\n [multiple]=\"multiple()\"\r\n [attr.id]=\"htmlId()\"\r\n [attr.name]=\"htmlName()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [readOnly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [accept]=\"acceptString()\"\r\n (change)=\"onFileInputChange()\"\r\n/>\r\n\r\n<ng-template\r\n #defaultIdleTemplate\r\n let-browse=\"browse\"\r\n>\r\n <span class=\"ard-file-input__idle\">\r\n @if (multiple()) {\r\n <span>Upload a file</span>\r\n } @else {\r\n <span>Upload files</span>\r\n }\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultDragoverTemplate\r\n let-amount=\"amount\"\r\n>\r\n <span class=\"ard-file-input__dragover-text\">Drop </span>\r\n @if (multiple()) {\r\n <span class=\"ard-file-input__dragover-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n } @else {\r\n <span class=\"ard-file-input__dragover-amount\"> a file </span>\r\n }\r\n <span class=\"ard-file-input__dragover-text\"> here to upload </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultUploadedTemplate\r\n let-amount=\"amount\"\r\n let-files=\"files\"\r\n>\r\n <div class=\"ard-file-input__uploaded\">\r\n @if (amount === 1) {\r\n <div class=\"ard-file-input__full-file-name\">\r\n <span class=\"ard-file-input__file-name\">\r\n {{ files?.[0]?.name | filename }}\r\n </span>\r\n <span class=\"ard-file-input__file-ext\">\r\n {{ files?.[0]?.name | fileext: true }}\r\n </span>\r\n </div>\r\n } @else {\r\n <span class=\"ard-file-input__uploaded-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-input__uploaded-text\"> uploaded.</span>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumFilePipesModule } from '@ardium-ui/devkit';\r\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\r\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\r\nimport { ArdiumIconModule } from '../../icon/icon.module';\r\nimport { ArdiumFileInputComponent } from './file-input.component';\r\nimport {\r\n ArdFileInputPlaceholderTemplateDirective,\r\n ArdFileInputPrefixTemplateDirective,\r\n ArdFileInputSuffixTemplateDirective,\r\n ArdiumFileInputDragoverContentTemplateDirective,\r\n ArdiumFileInputIdleContentTemplateDirective,\r\n ArdiumFileInputUploadedContentTemplateDirective,\r\n ArdiumFileInputUploadIconTemplateDirective,\r\n} from './file-input.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumFileInputComponent,\r\n ArdiumFileInputUploadIconTemplateDirective,\r\n ArdiumFileInputUploadedContentTemplateDirective,\r\n ArdiumFileInputDragoverContentTemplateDirective,\r\n ArdiumFileInputIdleContentTemplateDirective,\r\n ArdFileInputSuffixTemplateDirective,\r\n ArdFileInputPrefixTemplateDirective,\r\n ArdFileInputPlaceholderTemplateDirective,\r\n ],\r\n imports: [CommonModule, ArdiumFormFieldFrameModule, _ClearButtonModule, ArdiumIconModule, ArdiumFilePipesModule],\r\n exports: [\r\n ArdiumFileInputComponent,\r\n ArdiumFileInputUploadIconTemplateDirective,\r\n ArdiumFileInputUploadedContentTemplateDirective,\r\n ArdiumFileInputDragoverContentTemplateDirective,\r\n ArdiumFileInputIdleContentTemplateDirective,\r\n ArdFileInputSuffixTemplateDirective,\r\n ArdFileInputPrefixTemplateDirective,\r\n ArdFileInputPlaceholderTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumFileInputModule {}\r\n","import { isDefined } from 'simple-bool';\r\n\r\nexport function getUTCDate(): Date;\r\nexport function getUTCDate(year: number, monthIndex: number, day: number): Date;\r\nexport function getUTCDate(\r\n year: number,\r\n monthIndex: number,\r\n day: number,\r\n hour: number,\r\n minute: number,\r\n second: number,\r\n millisecond: number\r\n): Date;\r\nexport function getUTCDate(\r\n year?: number,\r\n monthIndex?: number,\r\n day?: number,\r\n hour: number = 0,\r\n minute: number = 0,\r\n second: number = 0,\r\n millisecond: number = 0\r\n): Date {\r\n if (!isDefined(year) && !isDefined(monthIndex) && !isDefined(day)) {\r\n const now = new Date();\r\n now.setMinutes(now.getMinutes() + now.getTimezoneOffset());\r\n return now;\r\n }\r\n return new Date(Date.UTC(year!, monthIndex, day, hour, minute, second, millisecond));\r\n}\r\n\r\nexport function createDate(year: number, month: number, date: number, UTC: boolean) {\r\n if (UTC) {\r\n return getUTCDate(year, month, date);\r\n } else {\r\n return new Date(year, month, date);\r\n }\r\n}\r\n\r\nexport function getDateComponents(date: null, UTC: boolean): { year: null; month: null; date: null };\r\nexport function getDateComponents(date: Date, UTC: boolean): { year: number; month: number; date: number };\r\nexport function getDateComponents(\r\n date: Date | null,\r\n UTC: boolean\r\n): { year: number | null; month: number | null; date: number | null };\r\nexport function getDateComponents(\r\n date: Date | null,\r\n UTC: boolean\r\n): { year: number | null; month: number | null; date: number | null } {\r\n if (!date) {\r\n return { year: null, month: null, date: null };\r\n }\r\n return {\r\n year: UTC ? date.getUTCFullYear() : date.getFullYear(),\r\n month: UTC ? date.getUTCMonth() : date.getMonth(),\r\n date: UTC ? date.getUTCDate() : date.getDate(),\r\n };\r\n}\r\n\r\nexport function startOfDay(date: Date, UTC: boolean = false): Date {\r\n if (UTC) {\r\n return getUTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\r\n }\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n}\r\n\r\nexport function endOfDay(date: Date, UTC: boolean = false): Date {\r\n if (UTC) {\r\n return getUTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 23, 59, 59, 999);\r\n }\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999);\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { CalendarDayContext, CalendarDaysViewHeaderContext, CalendarFloatingMonthContext, CalendarMonthContext, CalendarMonthsViewHeaderContext, CalendarWeekdayContext, CalendarYearContext, CalendarYearsViewHeaderContext } from '../../calendar';\r\nimport { FormFieldFrameTemplateContext } from '../../form-field-frame';\r\nimport { ArdDateInputAcceptButtonsContext, ArdDateInputValueContext } from './date-input.types';\r\n\r\n//public (exported)\r\n\r\n@Directive({ standalone: false, selector: 'ard-date-input > ng-template[ard-prefix-tmp]' })\r\nexport class ArdDateInputPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-date-input > ng-template[ard-suffix-tmp]' })\r\nexport class ArdDateInputSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-date-input > ng-template[ard-value-tmp]' })\r\nexport class ArdDateInputValueTemplateDirective {\r\n constructor(public template: TemplateRef<ArdDateInputValueContext<Date>>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-date-input > ng-template[ard-date-input-icon-tmp]' })\r\nexport class ArdDateInputCalendarIconTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-date-input > ng-template[ard-accept-buttons-tmp]' })\r\nexport class ArdDateInputAcceptButtonsTemplateDirective {\r\n constructor(public template: TemplateRef<ArdDateInputAcceptButtonsContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-date-input > ng-template[ard-header-tmp]',\r\n})\r\nexport class ArdDateInputDaysViewHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarDaysViewHeaderContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-date-input > ng-template[ard-year-picker-header-tmp]',\r\n})\r\nexport class ArdDateInputYearsViewHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarYearsViewHeaderContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-date-input > ng-template[ard-month-picker-header-tmp]',\r\n})\r\nexport class ArdDateInputMonthsViewHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarMonthsViewHeaderContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-date-input > ng-template[ard-weekday-tmp]',\r\n})\r\nexport class ArdDateInputWeekdayTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarWeekdayContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-date-input > ng-template[ard-floating-month-tmp]',\r\n})\r\nexport class ArdDateInputFloatingMonthTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarFloatingMonthContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-date-input > ng-template[ard-year-tmp]',\r\n})\r\nexport class ArdDateInputYearTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarYearContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-date-input > ng-template[ard-month-tmp]',\r\n})\r\nexport class ArdDateInputMonthTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarMonthContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-date-input > ng-template[ard-day-tmp]',\r\n})\r\nexport class ArdDateInputDayTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarDayContext>) {}\r\n}\r\n","import { Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n computed,\r\n contentChild,\r\n Directive,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n InputSignal,\r\n model,\r\n OnDestroy,\r\n output,\r\n Signal,\r\n signal,\r\n SimpleChanges,\r\n TemplateRef,\r\n viewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { BooleanLike, coerceBooleanProperty, coerceDateOnlyProperty, coerceNumberProperty, NumberLike } from '@ardium-ui/devkit';\r\nimport { _FormFieldComponentBase } from '../../_internal/form-field-component';\r\nimport {\r\n ArdCalendarDaysViewHeaderTemplateDirective,\r\n ArdCalendarDayTemplateDirective,\r\n ArdCalendarFilterFn,\r\n ArdCalendarFloatingMonthTemplateDirective,\r\n ArdCalendarMonthsViewHeaderTemplateDirective,\r\n ArdCalendarMonthTemplateDirective,\r\n ArdCalendarView,\r\n ArdCalendarWeekdayTemplateDirective,\r\n ArdCalendarYearsViewHeaderTemplateDirective,\r\n ArdCalendarYearTemplateDirective,\r\n} from '../../calendar';\r\nimport { ArdiumDropdownPanelComponent, DropdownPanelAppearance, DropdownPanelVariant } from '../../dropdown-panel';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { ArdDateInputDefaults } from './date-input.defaults';\r\nimport {\r\n ArdDateInputAcceptButtonsTemplateDirective,\r\n ArdDateInputCalendarIconTemplateDirective,\r\n ArdDateInputValueTemplateDirective\r\n} from './date-input.directives';\r\nimport { ArdDateInputAcceptButtonsContext, ArdDateInputSerializeFn, ArdDateInputValueContext } from './date-input.types';\r\n\r\n@Directive()\r\nexport abstract class _AbstractDateInput<T, PT = T> extends _FormFieldComponentBase implements OnDestroy, ControlValueAccessor {\r\n abstract readonly componentId: string;\r\n abstract readonly componentName: string;\r\n\r\n abstract readonly isRangeSelector: boolean;\r\n\r\n protected override readonly _DEFAULTS!: ArdDateInputDefaults;\r\n constructor(defaults: ArdDateInputDefaults) {\r\n super(defaults);\r\n\r\n // emit value whenever it changes\r\n effect(() => {\r\n if (!this._isFullValue(this.value())) return;\r\n this._emitChange();\r\n });\r\n }\r\n\r\n private readonly elementRef = inject(ElementRef<HTMLElement>);\r\n private readonly overlay = inject(Overlay);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly scrollStrategyOpts = inject(ScrollStrategyOptions);\r\n\r\n readonly placeholder = input<string>(this._DEFAULTS.placeholder);\r\n\r\n readonly calendarDisabled = input<boolean, BooleanLike>(this._DEFAULTS.calendarDisabled, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n readonly calendarHidden = input<boolean, BooleanLike>(this._DEFAULTS.calendarHidden, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n //! serialization\r\n abstract readonly serializeFn: InputSignal<ArdDateInputSerializeFn<PT>>;\r\n\r\n //! control value accessor\r\n readonly value = model<PT | null>(null);\r\n\r\n abstract override writeValue(value: T | null): void;\r\n\r\n //! change & touch event emitters\r\n protected _emitChange(): void {\r\n this._onChangeRegistered?.(this.getValueForEmit());\r\n }\r\n\r\n protected abstract getValueForEmit(): T | null;\r\n\r\n //! output events\r\n readonly isOpen = model<boolean>(false);\r\n\r\n readonly openEvent = output<void>({ alias: 'open' });\r\n readonly closeEvent = output<void>({ alias: 'close' });\r\n\r\n //! computed properties\r\n abstract readonly shouldDisplayPlaceholder: Signal<boolean>;\r\n abstract readonly shouldDisplayValue: Signal<boolean>;\r\n abstract readonly shouldDisplayDateInput: Signal<boolean>;\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(this._DEFAULTS.appearance);\r\n readonly variant = input<FormElementVariant>(this._DEFAULTS.variant);\r\n readonly color = input<ComponentColor>(this._DEFAULTS.color);\r\n\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n //appearance and variant handled in ard-form-field-frame component\r\n //color handled in ard-calendar component\r\n this.compact() ? 'ard-compact' : '',\r\n this.isOpen() ? 'ard-dropdown-open' : '',\r\n ].join(' ')\r\n );\r\n\r\n readonly dropdownAppearance = input<Nullable<DropdownPanelAppearance>>(this._DEFAULTS.dropdownAppearance);\r\n readonly dropdownAppearanceOrDefault = computed(() => {\r\n if (this.dropdownAppearance()) return this.dropdownAppearance()!;\r\n if (this.appearance() === FormElementAppearance.Outlined) return DropdownPanelAppearance.Outlined;\r\n return DropdownPanelAppearance.Raised;\r\n });\r\n readonly dropdownVariant = input<Nullable<DropdownPanelVariant>>(this._DEFAULTS.dropdownVariant);\r\n readonly dropdownVariantOrDefault = computed(() => {\r\n if (this.dropdownVariant()) return this.dropdownVariant()!;\r\n const variant = this.variant();\r\n if (variant === FormElementVariant.Pill) return DropdownPanelVariant.Rounded;\r\n return variant;\r\n });\r\n\r\n //! calendar attributes\r\n readonly activeView = model<ArdCalendarView>(this._DEFAULTS.activeView);\r\n readonly startView = input<Nullable<ArdCalendarView>>(this._DEFAULTS.startView);\r\n\r\n readonly activeYear = model<number>(this._DEFAULTS.activeYear);\r\n readonly activeMonth = model<number>(this._DEFAULTS.activeMonth);\r\n\r\n readonly firstWeekday = input<number, NumberLike>(this._DEFAULTS.firstWeekday, {\r\n transform: v => {\r\n const value = coerceNumberProperty(v, this._DEFAULTS.firstWeekday);\r\n if (!Number.isInteger(value)) {\r\n console.error(\r\n new Error(`ARD-NF0081A: [firstWeekday] must be a positive integer, got \"${value}\". Using default value instead.`)\r\n );\r\n return this._DEFAULTS.firstWeekday;\r\n }\r\n if (value < 0 || value > 6) {\r\n console.error(\r\n new Error(\r\n `ARD-WA0081B: [firstWeekday] must be between 0 and 6, got \"${value}\". Using modulo operator to adjust the value.`\r\n )\r\n );\r\n }\r\n return value % 7;\r\n },\r\n });\r\n\r\n readonly multipleYearPageChangeModifier = input<number, NumberLike>(this._DEFAULTS.multipleYearPageChangeModifier, {\r\n transform: v => {\r\n const value = coerceNumberProperty(v, this._DEFAULTS.multipleYearPageChangeModifier);\r\n if (!Number.isInteger(value) || value < 1) {\r\n console.error(\r\n new Error(\r\n `ARD-NF0082: [multipleYearPageChangeModifier] must be a positive integer, got \"${value}\". Using default value instead.`\r\n )\r\n );\r\n return this._DEFAULTS.multipleYearPageChangeModifier;\r\n }\r\n return value;\r\n },\r\n });\r\n\r\n readonly min = input<Date | null, any>(this._DEFAULTS.min, {\r\n transform: v => (v === null ? null : coerceDateOnlyProperty(v, this._DEFAULTS.min, true)),\r\n });\r\n readonly max = input<Date | null, any>(this._DEFAULTS.max, {\r\n transform: v => (v === null ? null : coerceDateOnlyProperty(v, this._DEFAULTS.max, true)),\r\n });\r\n\r\n readonly UTC = input<boolean, BooleanLike>(this._DEFAULTS.UTC, { transform: v => coerceBooleanProperty(v) });\r\n readonly _UTCAfterInit = signal<boolean>(this._DEFAULTS.UTC);\r\n\r\n readonly filter = input<ArdCalendarFilterFn | null>(this._DEFAULTS.filter);\r\n\r\n readonly hideFloatingMonth = input<boolean, BooleanLike>(this._DEFAULTS.hideFloatingMonth, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n //! lifecycle hooks\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['UTC']) {\r\n if (changes['UTC'].firstChange) {\r\n this._UTCAfterInit.set(changes['UTC'].currentValue);\r\n } else {\r\n console.error(\r\n `ARD-NF0084: <ard-date-input>'s [UTC] attribute should not be changed dynamically. This change will be ignored.`\r\n );\r\n }\r\n }\r\n }\r\n\r\n //! calendar outputs\r\n readonly yearSelect = output<number>();\r\n readonly monthSelect = output<number>();\r\n\r\n //! calendar controls\r\n readonly useAcceptButtonToSelect = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n private _valueToAccept: PT | null = null;\r\n\r\n onCalendarSelectedChange(value: PT | null): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (!value) return;\r\n if (this.useAcceptButtonToSelect()) {\r\n this._valueToAccept = value;\r\n return;\r\n }\r\n this._acceptSelectedDate(value);\r\n }\r\n private _acceptSelectedDate(date: PT | null): void {\r\n this.value.set(date);\r\n if (this._isFullValue(date)) {\r\n this.close();\r\n }\r\n }\r\n private _cancelCalendarSelection(): void {\r\n this.close();\r\n }\r\n protected abstract _isFullValue(value: PT | T | null): value is T;\r\n\r\n onAcceptButtonClick(): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this._acceptSelectedDate(this._valueToAccept);\r\n this._valueToAccept = null;\r\n }\r\n onCancelButtonClick(): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this._cancelCalendarSelection();\r\n }\r\n\r\n //! dropdown overlay\r\n readonly dropdownHost = viewChild.required<ElementRef<HTMLElement>>('dropdownHost');\r\n readonly dropdownTemplate = viewChild.required<TemplateRef<any>>('dropdownTemplate');\r\n readonly dropdownPanel = viewChild.required<ArdiumDropdownPanelComponent>(ArdiumDropdownPanelComponent);\r\n\r\n private dropdownOverlay?: OverlayRef;\r\n\r\n private _createOverlay(): void {\r\n const strategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.dropdownHost())\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n },\r\n ]);\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n scrollStrategy: this.scrollStrategyOpts.block(),\r\n hasBackdrop: false,\r\n });\r\n\r\n this.dropdownOverlay = this.overlay.create(config);\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate(), this.viewContainerRef);\r\n this.dropdownOverlay.attach(portal);\r\n }\r\n private _destroyOverlay(): void {\r\n if (!this.dropdownOverlay) return;\r\n\r\n this.dropdownOverlay.dispose();\r\n delete this.dropdownOverlay;\r\n }\r\n\r\n //! dropdown state handlers\r\n onGeneralClick(event: MouseEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n const target = event.target as HTMLElement;\r\n if (target.tagName !== 'INPUT') {\r\n event.preventDefault();\r\n }\r\n }\r\n onOutsideClick(event: MouseEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (!this.isOpen()) return;\r\n const target = event.target as HTMLElement;\r\n if (this.elementRef.nativeElement.contains(target)) return;\r\n\r\n this.close();\r\n }\r\n onCalendarButtonClick(event: MouseEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (this.calendarDisabled()) return;\r\n if (this.calendarHidden()) return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n this.toggle();\r\n }\r\n\r\n toggle(): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n return;\r\n }\r\n this.open();\r\n }\r\n open(): void {\r\n if (this.disabled() || this.readonly() || this.isOpen()) return;\r\n\r\n const startView = this.startView();\r\n if (startView) {\r\n this.activeView.set(startView);\r\n }\r\n\r\n this.isOpen.set(true);\r\n\r\n this._createOverlay();\r\n this.openEvent.emit();\r\n }\r\n close(): void {\r\n if (this.disabled() || this.readonly() || !this.isOpen()) return;\r\n\r\n this.isOpen.set(false);\r\n\r\n this._destroyOverlay();\r\n this.closeEvent.emit();\r\n }\r\n\r\n //! templates\r\n readonly valueTemplate = contentChild(ArdDateInputValueTemplateDirective);\r\n readonly calendarIconTemplate = contentChild(ArdDateInputCalendarIconTemplateDirective);\r\n readonly acceptButtonsTemplate = contentChild(ArdDateInputAcceptButtonsTemplateDirective);\r\n\r\n abstract readonly calendarYearsViewHeaderTemplate: Signal<ArdCalendarYearsViewHeaderTemplateDirective | undefined>;\r\n abstract readonly calendarMonthsViewHeaderTemplate: Signal<ArdCalendarMonthsViewHeaderTemplateDirective | undefined>;\r\n abstract readonly calendarDaysViewHeaderTemplate: Signal<ArdCalendarDaysViewHeaderTemplateDirective | undefined>;\r\n abstract readonly calendarWeekdayTemplate: Signal<ArdCalendarWeekdayTemplateDirective | undefined>;\r\n abstract readonly calendarFloatingMonthTemplate: Signal<ArdCalendarFloatingMonthTemplateDirective | undefined>;\r\n abstract readonly calendarYearTemplate: Signal<ArdCalendarYearTemplateDirective | undefined>;\r\n abstract readonly calendarMonthTemplate: Signal<ArdCalendarMonthTemplateDirective | undefined>;\r\n abstract readonly calendarDayTemplate: Signal<ArdCalendarDayTemplateDirective | undefined>;\r\n\r\n //! template customizations\r\n readonly calendarDaysViewHeaderDateFormat = input<string>(this._DEFAULTS.calendarDaysViewHeaderDateFormat); // 'MMM YYYY'\r\n readonly calendarYearsViewHeaderDateFormat = input<string>(this._DEFAULTS.calendarYearsViewHeaderDateFormat); // 'YYYY'\r\n readonly calendarMonthsViewHeaderDateFormat = input<string>(this._DEFAULTS.calendarMonthsViewHeaderDateFormat); // 'YYYY'\r\n readonly calendarWeekdayDateFormat = input<string>(this._DEFAULTS.calendarWeekdayDateFormat); // 'EEEEE'\r\n readonly calendarWeekdayTitleDateFormat = input<string>(this._DEFAULTS.calendarWeekdayTitleDateFormat); // 'EEEE'\r\n readonly calendarFloatingMonthDateFormat = input<string>(this._DEFAULTS.calendarFloatingMonthDateFormat); // 'LLL'\r\n readonly calendarFloatingMonthTitleDateFormat = input<string>(this._DEFAULTS.calendarFloatingMonthTitleDateFormat); // 'LLLL'\r\n readonly calendarYearDateFormat = input<string>(this._DEFAULTS.calendarYearDateFormat); // 'YYYY'\r\n readonly calendarMonthDateFormat = input<string>(this._DEFAULTS.calendarMonthDateFormat); // 'MMM'\r\n readonly calendarDayDateFormat = input<string>(this._DEFAULTS.calendarDayDateFormat); // 'D'\r\n\r\n readonly acceptButtonText = input<string>(this._DEFAULTS.acceptButtonText);\r\n readonly cancelButtonText = input<string>(this._DEFAULTS.cancelButtonText);\r\n\r\n //! context providers\r\n readonly valueContext = computed<ArdDateInputValueContext<PT>>(() => ({\r\n $implicit: this.serializeFn()(this.value()),\r\n rawValue: this.value(),\r\n }));\r\n\r\n readonly acceptButtonsContext = computed<ArdDateInputAcceptButtonsContext>(() => ({\r\n $implicit: () => this.onAcceptButtonClick(),\r\n accept: () => this.onAcceptButtonClick(),\r\n cancel: () => this.onCancelButtonClick(),\r\n disabled: this.disabled() || this.calendarDisabled(),\r\n }));\r\n}\r\n","import { isDate, isNumber } from 'simple-bool';\r\n\r\nexport const ArdCalendarView = {\r\n Days: 'days',\r\n Months: 'months',\r\n Years: 'years',\r\n} as const;\r\nexport type ArdCalendarView = (typeof ArdCalendarView)[keyof typeof ArdCalendarView];\r\n\r\nexport const ArdMultiCalendarLocation = {\r\n Only: 'only',\r\n Left: 'left',\r\n Inner: 'inner',\r\n Right: 'right',\r\n} as const;\r\nexport type ArdMultiCalendarLocation = (typeof ArdMultiCalendarLocation)[keyof typeof ArdMultiCalendarLocation];\r\n\r\nexport class DateRange {\r\n constructor(\r\n public from: Date,\r\n public to: Date\r\n ) {}\r\n}\r\nexport class PartialDateRange {\r\n constructor(\r\n public from: Date,\r\n public to: Date | null\r\n ) {}\r\n}\r\nexport function isDateRange(v: unknown): v is DateRange {\r\n return !!v && typeof v === 'object' && 'from' in v && isDate(v.from) && 'to' in v && isDate(v.to);\r\n}\r\nexport function isAnyDateRange(v: unknown): v is PartialDateRange {\r\n return !!v && typeof v === 'object' && 'from' in v && isDate(v.from) && 'to' in v && (isDate(v.to) || v.to === null);\r\n}\r\n\r\nexport interface YearRange {\r\n from: number;\r\n to: number;\r\n}\r\nexport function isYearRange(v: unknown): v is YearRange {\r\n return !!v && typeof v === 'object' && 'from' in v && isNumber(v.from) && 'to' in v && isNumber(v.to);\r\n}\r\n\r\nexport type ArdCalendarFilterFn = (date: Date) => boolean;\r\n\r\n//! template contexts\r\nexport interface CalendarYearsViewHeaderContext {\r\n nextPage: () => void;\r\n prevPage: () => void;\r\n openMonthsView: () => void;\r\n openDaysView: () => void;\r\n onFocus: (event: FocusEvent) => void;\r\n onBlur: (event: FocusEvent) => void;\r\n canGoToNextPage: boolean;\r\n canGoToPreviousPage: boolean;\r\n hideNextPageButton: boolean;\r\n hidePreviousPageButton: boolean;\r\n yearRange: YearRange;\r\n dateRange: DateRange;\r\n $implicit: DateRange;\r\n}\r\n\r\nexport interface CalendarMonthsViewHeaderContext {\r\n nextPage: () => void;\r\n prevPage: () => void;\r\n openDaysView: () => void;\r\n openYearsView: () => void;\r\n onFocus: (event: FocusEvent) => void;\r\n onBlur: (event: FocusEvent) => void;\r\n canGoToNextPage: boolean;\r\n canGoToPreviousPage: boolean;\r\n hideNextPageButton: boolean;\r\n hidePreviousPageButton: boolean;\r\n year: number;\r\n date: Date;\r\n $implicit: number;\r\n}\r\n\r\nexport interface CalendarDaysViewHeaderContext {\r\n nextMonth: () => void;\r\n prevMonth: () => void;\r\n nextYear: () => void;\r\n prevYear: () => void;\r\n openYearsView: () => void;\r\n openMonthsView: () => void;\r\n onFocus: (event: FocusEvent) => void;\r\n onBlur: (event: FocusEvent) => void;\r\n canGoToNextPage: boolean;\r\n canGoToPreviousPage: boolean;\r\n hideNextPageButton: boolean;\r\n hidePreviousPageButton: boolean;\r\n year: number;\r\n month: number;\r\n $implicit: Date;\r\n}\r\n\r\nexport interface CalendarWeekdayContext {\r\n dayIndex: number;\r\n date: Date;\r\n $implicit: Date;\r\n}\r\n\r\nexport interface CalendarFloatingMonthContext {\r\n month: number;\r\n date: Date;\r\n $implicit: Date;\r\n}\r\n\r\nexport interface CalendarYearContext {\r\n value: number;\r\n date: Date;\r\n $implicit: Date;\r\n select: (year: number) => void;\r\n}\r\n\r\nexport interface CalendarMonthContext {\r\n month: number;\r\n date: Date;\r\n $implicit: Date;\r\n select: (month: number | Date) => void;\r\n}\r\n\r\nexport interface CalendarDayContext {\r\n value: number;\r\n date: Date;\r\n $implicit: number;\r\n select: (day: number | Date) => void;\r\n}\r\n\r\nexport interface CalendarActionButtonsContext {\r\n cancel: () => void;\r\n apply: () => void;\r\n reset: () => void;\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport {\r\n CalendarDayContext,\r\n CalendarDaysViewHeaderContext,\r\n CalendarFloatingMonthContext,\r\n CalendarMonthContext,\r\n CalendarMonthsViewHeaderContext,\r\n CalendarWeekdayContext,\r\n CalendarYearContext,\r\n CalendarYearsViewHeaderContext,\r\n} from './calendar.types';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-calendar > ng-template[ard-header-tmp]',\r\n})\r\nexport class ArdCalendarDaysViewHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarDaysViewHeaderContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-calendar > ng-template[ard-year-picker-header-tmp]',\r\n})\r\nexport class ArdCalendarYearsViewHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarYearsViewHeaderContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-calendar > ng-template[ard-month-picker-header-tmp]',\r\n})\r\nexport class ArdCalendarMonthsViewHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarMonthsViewHeaderContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-calendar > ng-template[ard-weekday-tmp]',\r\n})\r\nexport class ArdCalendarWeekdayTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarWeekdayContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-calendar > ng-template[ard-floating-month-tmp]',\r\n})\r\nexport class ArdCalendarFloatingMonthTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarFloatingMonthContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-calendar > ng-template[ard-year-tmp]',\r\n})\r\nexport class ArdCalendarYearTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarYearContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-calendar > ng-template[ard-month-tmp]',\r\n})\r\nexport class ArdCalendarMonthTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarMonthContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-calendar > ng-template[ard-day-tmp]',\r\n})\r\nexport class ArdCalendarDayTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarDayContext>) {}\r\n}\r\n","import { Directive, input, TemplateRef } from '@angular/core';\r\nimport {\r\n ArdCalendarDaysViewHeaderTemplateDirective,\r\n ArdCalendarDayTemplateDirective,\r\n ArdCalendarFloatingMonthTemplateDirective,\r\n ArdCalendarMonthsViewHeaderTemplateDirective,\r\n ArdCalendarMonthTemplateDirective,\r\n ArdCalendarWeekdayTemplateDirective,\r\n ArdCalendarYearsViewHeaderTemplateDirective,\r\n ArdCalendarYearTemplateDirective,\r\n} from './calendar.directives';\r\n\r\n@Directive({ standalone: true, selector: 'ard-calendar > ng-template[_ard-tmp-repository]' })\r\nexport class _CalendarTemplateRepositoryDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n\r\n readonly daysViewHeaderTmp = input<ArdCalendarDaysViewHeaderTemplateDirective | { template: TemplateRef<any> } | undefined>(\r\n undefined\r\n );\r\n readonly yearsViewHeaderTmp = input<ArdCalendarYearsViewHeaderTemplateDirective | { template: TemplateRef<any> } | undefined>(\r\n undefined\r\n );\r\n readonly monthsViewHeaderTmp = input<ArdCalendarMonthsViewHeaderTemplateDirective | { template: TemplateRef<any> } | undefined>(\r\n undefined\r\n );\r\n readonly weekdayTmp = input<ArdCalendarWeekdayTemplateDirective | { template: TemplateRef<any> } | undefined>(undefined);\r\n readonly floatingMonthTmp = input<ArdCalendarFloatingMonthTemplateDirective | { template: TemplateRef<any> } | undefined>(\r\n undefined\r\n );\r\n readonly yearTmp = input<ArdCalendarYearTemplateDirective | { template: TemplateRef<any> } | undefined>(undefined);\r\n readonly monthTmp = input<ArdCalendarMonthTemplateDirective | { template: TemplateRef<any> } | undefined>(undefined);\r\n readonly dayTmp = input<ArdCalendarDayTemplateDirective | { template: TemplateRef<any> } | undefined>(undefined);\r\n}\r\n","import { getUTCDate } from '@ardium-ui/devkit';\r\nimport { isDefined } from 'simple-bool';\r\nimport { CalendarArrayItem } from '../../calendar.internal-types';\r\n\r\nexport function isMonthOutOfRange(month: number, year: number, min: Date | null, max: Date | null): number {\r\n const dateForMinComparison = getUTCDate(year, month + 1, 0); // last day of month\r\n if (isDefined(min) && dateForMinComparison < min) return -1;\r\n\r\n const dateForMaxComparison = getUTCDate(year, month, 1); // first day of month\r\n if (isDefined(max) && dateForMaxComparison > max) return 1;\r\n\r\n return 0;\r\n}\r\n\r\nexport function getCalendarMonthsArray(year: number, min: Date | null, max: Date | null): CalendarArrayItem[] {\r\n const months: CalendarArrayItem[] = [];\r\n for (let month = 0; month < 12; month++) {\r\n const monthData: CalendarArrayItem = {\r\n value: month,\r\n valueDate: new Date(year, month, 2),\r\n disabled: !!isMonthOutOfRange(month, year, min, max),\r\n };\r\n months.push(monthData);\r\n }\r\n return months;\r\n}\r\n","import { isDefined } from 'simple-bool';\r\nimport { getUTCDate } from '../../../_internal/utils/date.utils';\r\nimport { CalendarArrayItem } from '../../calendar.internal-types';\r\n\r\nexport type CalendarArray = (CalendarArrayItem | null)[][];\r\n\r\nexport interface CalendarData {\r\n array: CalendarArray;\r\n leadingSpaces: number;\r\n trailingSpaces: number;\r\n weeks: number;\r\n}\r\n\r\n/**\r\n * Generates a layout array to be used to create a calendar page for the given year and month.\r\n *\r\n * The returned object contains an array to create the layout from, the number of leading and trailing spaces in the layout, and the number of weeks (full or not) in the month.\r\n * @param year The year of the current active view\r\n * @param monthIndex The month index of the current active view\r\n * @param firstWeekday The index of the first weekday in the calendar layout. Starts at Sunday (index 0), ends with Saturday (index 6). Defaults to 1.\r\n * @returns A {@link CalendarData} object.\r\n */\r\nexport function getCalendarDayData(\r\n year: number,\r\n monthIndex: number,\r\n firstWeekday = 1,\r\n min: Date | null,\r\n max: Date | null,\r\n fillUpTo6Weeks: boolean,\r\n reserverFirstRow: boolean\r\n): CalendarData {\r\n firstWeekday %= 7;\r\n\r\n const firstDayDate = new Date(year, monthIndex, 1);\r\n const firstDayWeekday = (firstDayDate.getDay() - firstWeekday + 7) % 7;\r\n\r\n const lastDayDate = new Date(firstDayDate);\r\n lastDayDate.setMonth(firstDayDate.getMonth() + 1); // advance the month by 1\r\n lastDayDate.setDate(0); // set the date to 0, which essentially means \"the last day of the previous month\"\r\n const lastDay = lastDayDate.getDate();\r\n\r\n const shouldReserveFirstRow = reserverFirstRow && firstDayWeekday < 3;\r\n\r\n const calendarArray: CalendarArray = [];\r\n let currentDay = firstDayWeekday * -1; // how many empty spaces to add\r\n let trailingSpaces = 0;\r\n let totalWeeks = 0;\r\n\r\n for (let week = 0; week < 6; week++) {\r\n const currentWeek: (CalendarArrayItem | null)[] = [];\r\n // add days for the whole week\r\n for (let weekday = 0; weekday < 7; weekday++) {\r\n currentDay++;\r\n // add empty space before the first day of the month\r\n if (currentDay < 1 || currentDay > lastDay) {\r\n currentWeek.push(null);\r\n trailingSpaces++;\r\n continue;\r\n }\r\n // add the day number\r\n const valueDate = getUTCDate(year, monthIndex, currentDay);\r\n currentWeek.push({\r\n value: currentDay,\r\n valueDate,\r\n disabled: !!isDayOutOfRange(valueDate, min, max),\r\n });\r\n }\r\n calendarArray.push(currentWeek);\r\n if (currentDay > lastDay) {\r\n if (shouldReserveFirstRow) {\r\n totalWeeks = week + 2;\r\n break;\r\n }\r\n totalWeeks = week + 1;\r\n break;\r\n }\r\n }\r\n trailingSpaces -= firstDayWeekday;\r\n\r\n if (fillUpTo6Weeks) {\r\n if (shouldReserveFirstRow) {\r\n while (totalWeeks < 5) {\r\n totalWeeks++;\r\n calendarArray.push([null, null, null, null, null, null, null]);\r\n }\r\n } else {\r\n while (totalWeeks < 6) {\r\n totalWeeks++;\r\n calendarArray.push([null, null, null, null, null, null, null]);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n array: calendarArray,\r\n leadingSpaces: firstDayWeekday,\r\n trailingSpaces,\r\n weeks: totalWeeks,\r\n };\r\n}\r\n\r\nexport function getCalendarWeekdayArray(firstWeekday = 1): number[] {\r\n return [0, 1, 2, 3, 4, 5, 6].map(v => (v + firstWeekday) % 7);\r\n}\r\n\r\nexport function isDayOutOfRange(date: Date, min: Date | null, max: Date | null): number {\r\n if (isDefined(min) && date < min) return -1;\r\n if (isDefined(max) && date > max) return 1;\r\n return 0;\r\n}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _focusableComponentDefaults, _FocusableComponentDefaults } from '../../_internal/focusable-component';\r\nimport { _simpleButtonDefaults, _SimpleButtonDefaults } from '../_button-base.defaults';\r\n\r\nexport interface ArdIconButtonDefaults extends _SimpleButtonDefaults, _FocusableComponentDefaults {}\r\n\r\nexport const ARD_ICON_BUTTON_DEFAULTS = new InjectionToken<ArdIconButtonDefaults>('ard-icon-button-defaults', {\r\n factory: () => ({ ..._simpleButtonDefaults, ..._focusableComponentDefaults }),\r\n});\r\n\r\nexport function provideIconButtonDefaults(config: Partial<ArdIconButtonDefaults>): Provider {\r\n return { provide: ARD_ICON_BUTTON_DEFAULTS, useValue: { ..._simpleButtonDefaults, ..._focusableComponentDefaults, ...config } };\r\n}\r\n","import { ChangeDetectionStrategy, Component, Inject, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../../_internal/focusable-component';\r\nimport { ButtonType } from '../../types/button.types';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { ARD_ICON_BUTTON_DEFAULTS, ArdIconButtonDefaults } from './icon-button.defaults';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-icon-button',\r\n templateUrl: './icon-button.component.html',\r\n styleUrls: ['./icon-button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class.ard-button-with-pointer-events-when-disabled]': 'pointerEventsWhenDisabled()',\r\n },\r\n})\r\nexport class ArdiumIconButtonComponent extends _FocusableComponentBase {\r\n protected override readonly _DEFAULTS!: ArdIconButtonDefaults;\r\n constructor(@Inject(ARD_ICON_BUTTON_DEFAULTS) defaults: ArdIconButtonDefaults) {\r\n super(defaults);\r\n }\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly type = input<ButtonType>(this._DEFAULTS.type);\r\n\r\n readonly ariaLabel = input<string>('');\r\n\r\n //! button settings\r\n readonly color = input<ComponentColor>(this._DEFAULTS.color);\r\n\r\n readonly lightColoring = input<boolean, BooleanLike>(this._DEFAULTS.lightColoring, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly pointerEventsWhenDisabled = input<boolean, BooleanLike>(this._DEFAULTS.pointerEventsWhenDisabled, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n 'ard-appearance-transparent',\r\n `ard-color-${this.disabled() ? ComponentColor.None : this.color()}`,\r\n this.lightColoring() ? `ard-light-coloring` : '',\r\n this.compact() ? 'ard-compact' : '',\r\n this.pointerEventsWhenDisabled() ? 'ard-icon-button-with-pointer-events-when-disabled' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n class=\"ard-icon-button\"\r\n [type]=\"type()\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n>\r\n <ng-content></ng-content>\r\n</button>\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n ElementRef,\r\n HostListener,\r\n input,\r\n output,\r\n TemplateRef,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { createDate, getDateComponents, getUTCDate } from '../../../_internal/utils/date.utils';\r\nimport {\r\n ArdMultiCalendarLocation,\r\n CalendarDayContext,\r\n CalendarDaysViewHeaderContext,\r\n CalendarFloatingMonthContext,\r\n CalendarWeekdayContext,\r\n} from '../../calendar.types';\r\nimport { isMonthOutOfRange } from '../months-view/months-view.helpers';\r\nimport { getCalendarDayData, getCalendarWeekdayArray } from './days-view.helpers';\r\n\r\nconst TODAY = new Date();\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-days-view',\r\n templateUrl: './days-view.component.html',\r\n styleUrl: './days-view.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DaysViewComponent implements AfterViewInit {\r\n readonly tabIndex = input.required<number>();\r\n readonly readOnly = input.required<boolean>();\r\n readonly disabled = input.required<boolean>();\r\n\r\n readonly autoFocus = input.required<boolean>();\r\n\r\n readonly _isUsingKeyboard = input.required<boolean>();\r\n\r\n @HostListener('mousemove')\r\n onMouseMove(): void {\r\n if (this._isUsingKeyboard()) return;\r\n if (this.highlightedDay()) this.triggerHighlightDay.emit(null);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.autoFocus()) return;\r\n this.focus();\r\n this.triggerHighlightDay.emit(1);\r\n }\r\n\r\n //! active year/month\r\n readonly activeYear = input.required<number>();\r\n readonly activeMonth = input.required<number>();\r\n\r\n readonly selectedDate = input.required<Date | null>();\r\n readonly selectedDateEnd = input.required<Date | null>();\r\n\r\n readonly rangeSelectionMode = input.required<boolean>();\r\n\r\n readonly UTC = input.required<boolean>();\r\n\r\n readonly min = input.required<Date | null>();\r\n readonly max = input.required<Date | null>();\r\n\r\n readonly multiCalendarLocation = input.required<ArdMultiCalendarLocation>();\r\n\r\n readonly isDayFilteredOut = input.required<(day: number, month?: number, year?: number) => boolean>();\r\n\r\n readonly highlightedDay = input.required<number | null>();\r\n\r\n readonly highlightedDayDate = computed<Date | null>(() => {\r\n const day = this.highlightedDay();\r\n if (day === null) return null;\r\n return createDate(this.activeYear(), this.activeMonth(), day, this.UTC());\r\n });\r\n\r\n //! focusing\r\n readonly focusableElement = viewChild.required<ElementRef<HTMLElement>>('focusableElement');\r\n\r\n focus(): void {\r\n this.focusableElement().nativeElement.focus();\r\n }\r\n\r\n //! calendar data\r\n readonly firstWeekday = input.required<number>();\r\n readonly staticHeight = input.required<boolean>();\r\n readonly hideFloatingMonth = input.required<boolean>();\r\n\r\n readonly activeCalendarData = computed(() =>\r\n getCalendarDayData(\r\n this.activeYear(),\r\n this.activeMonth(),\r\n this.firstWeekday(),\r\n this.min(),\r\n this.max(),\r\n this.staticHeight(),\r\n !this.hideFloatingMonth()\r\n )\r\n );\r\n\r\n readonly reserveTopRow = computed<boolean>(() => !this.hideFloatingMonth() && this.activeCalendarData().leadingSpaces < 3);\r\n\r\n readonly weekdayArray = computed(() => getCalendarWeekdayArray(this.firstWeekday()));\r\n\r\n isDaySelected(day: number | Date | null): boolean {\r\n if (day instanceof Date) day = day.getDate();\r\n const isStartDateSelected = this.isDaySelectedStart(day);\r\n\r\n if (this.rangeSelectionMode()) {\r\n const isEndDateSelected = this.isDaySelectedEnd(day);\r\n return isStartDateSelected || isEndDateSelected;\r\n }\r\n return isStartDateSelected;\r\n }\r\n isDaySelectedStart(day: number | Date | null): boolean {\r\n if (day instanceof Date) day = day.getDate();\r\n const selected = this.selectedDate();\r\n const { year, month, date } = getDateComponents(selected, this.UTC());\r\n const isStartDateSelected = selected !== null && this.activeYear() === year && this.activeMonth() === month && day === date;\r\n\r\n return isStartDateSelected;\r\n }\r\n isDaySelectedEnd(day: number | Date | null): boolean {\r\n if (day instanceof Date) day = day.getDate();\r\n const selected = this.selectedDateEnd();\r\n const { year, month, date } = getDateComponents(selected, this.UTC());\r\n const isEndDateSelected = selected !== null && this.activeYear() === year && this.activeMonth() === month && day === date;\r\n\r\n return isEndDateSelected;\r\n }\r\n isDayBetweenSelectedRange(day: number | Date | null): boolean {\r\n if (!this.rangeSelectionMode()) return false;\r\n if (day instanceof Date) day = day.getDate();\r\n const selected = this.selectedDate();\r\n const selectedEnd = this.selectedDateEnd();\r\n if (selected === null || selectedEnd === null || selected >= selectedEnd) return false;\r\n return this._isDayBetweenDates(day!, selected, selectedEnd);\r\n }\r\n isDayBetweenSelectedHighlighted(day: number | Date | null): boolean {\r\n if (!this.rangeSelectionMode() || this.selectedDateEnd()) return false;\r\n if (day instanceof Date) day = day.getDate();\r\n const selected = this.selectedDate();\r\n const highlightedEnd = this.highlightedDayDate();\r\n if (selected === null || highlightedEnd === null || selected >= highlightedEnd) return false;\r\n return this._isDayBetweenDates(day!, selected, highlightedEnd);\r\n }\r\n private _isDayBetweenDates(day: number, startDate: Date, endDate: Date): boolean {\r\n const date = createDate(this.activeYear(), this.activeMonth(), day, this.UTC());\r\n return date >= startDate && date <= endDate;\r\n }\r\n\r\n readonly currentAriaLabel = computed(() => {\r\n const day = this.highlightedDay();\r\n if (day === null) {\r\n return '';\r\n }\r\n return new Date(this.activeYear(), this.activeMonth(), day).toLocaleDateString(undefined, {\r\n weekday: 'long',\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n });\r\n });\r\n\r\n //! outputs\r\n readonly triggerOpenYearsView = output<void>();\r\n readonly triggerOpenMonthsView = output<void>();\r\n\r\n readonly triggerSelectDay = output<number | null>();\r\n readonly triggerChangeMonth = output<number | null>();\r\n readonly triggerChangeYear = output<number | null>();\r\n\r\n readonly triggerHighlightDay = output<number | null>();\r\n readonly triggerHighlightNextDay = output<number>();\r\n readonly triggerHighlightPreviousDay = output<number>();\r\n readonly triggerHighlightFirstDay = output<void>();\r\n readonly triggerHighlightLastDay = output<void>();\r\n readonly triggerHighlightSameDayPreviousPage = output<boolean>();\r\n readonly triggerHighlightSameDayNextPage = output<boolean>();\r\n\r\n readonly focusEvent = output<FocusEvent>({ alias: 'focus' });\r\n readonly blurEvent = output<FocusEvent>({ alias: 'blur' });\r\n\r\n onCalendarDayMouseover(day: number | null): void {\r\n if (this._isUsingKeyboard()) return;\r\n if (this.disabled() || this.readOnly()) return;\r\n if (day && this.isDayFilteredOut()(day)) return;\r\n\r\n this.triggerHighlightDay.emit(day);\r\n }\r\n onCalendarDayClick(day: number | null): void {\r\n if (this.disabled() || this.readOnly()) return;\r\n if (day === null) return;\r\n if (this.isDayFilteredOut()(day)) return;\r\n\r\n this.triggerHighlightDay.emit(day);\r\n this.focus();\r\n this.triggerSelectDay.emit(day);\r\n }\r\n onDayGridFocus(): void {\r\n if (this.disabled() || this.readOnly()) return;\r\n this.triggerHighlightFirstDay.emit();\r\n }\r\n onDayGridBlur(): void {\r\n if (this.disabled() || this.readOnly()) return;\r\n this.triggerHighlightDay.emit(null);\r\n }\r\n onDayGridClick(): void {\r\n if (this.disabled() || this.readOnly()) return;\r\n if (this.highlightedDay() !== null) return;\r\n this.triggerHighlightFirstDay.emit();\r\n }\r\n\r\n //! helpers\r\n isDayToday(day: number | null): boolean {\r\n return this.activeYear() === TODAY.getFullYear() && this.activeMonth() === TODAY.getMonth() && day === TODAY.getDate();\r\n }\r\n isMonthOutOfRange(month: number): number {\r\n return isMonthOutOfRange(month, this.activeYear(), this.min(), this.max());\r\n }\r\n\r\n //! keyboard controls\r\n onMainGridKeydown(event: KeyboardEvent): void {\r\n if (this.disabled() || this.readOnly()) return;\r\n switch (event.code) {\r\n case 'Space':\r\n case 'Enter':\r\n this._onEnterPress(event);\r\n break;\r\n case 'ArrowUp':\r\n this._onArrowUpPress(event);\r\n break;\r\n case 'ArrowDown':\r\n this._onArrowDownPress(event);\r\n break;\r\n case 'ArrowLeft':\r\n this._onArrowLeftPress(event);\r\n break;\r\n case 'ArrowRight':\r\n this._onArrowRightPress(event);\r\n break;\r\n case 'Home':\r\n this._onHomePress(event);\r\n break;\r\n case 'End':\r\n this._onEndPress(event);\r\n break;\r\n case 'PageUp':\r\n this._onPageUpPress(event);\r\n break;\r\n case 'PageDown':\r\n this._onPageDownPress(event);\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n }\r\n //select currently selected entry\r\n private _onEnterPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n this.triggerSelectDay.emit(this.highlightedDay());\r\n }\r\n //highlight the entry one line below\r\n private _onArrowDownPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n this.triggerHighlightNextDay.emit(7);\r\n }\r\n //highlight the entry one line above\r\n private _onArrowUpPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n this.triggerHighlightPreviousDay.emit(7);\r\n }\r\n //highlight next entry\r\n private _onArrowRightPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n this.triggerHighlightNextDay.emit(1);\r\n }\r\n //highlight previous entry\r\n private _onArrowLeftPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n this.triggerHighlightPreviousDay.emit(1);\r\n }\r\n //highlight first entry on the page\r\n private _onHomePress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n this.triggerHighlightFirstDay.emit();\r\n }\r\n //highlight last entry on the page\r\n private _onEndPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n this.triggerHighlightLastDay.emit();\r\n }\r\n //alone: highlight same entry on the next page\r\n //with alt: highlight same entry multiple pages after (12 pages)\r\n private _onPageDownPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n this.triggerHighlightSameDayNextPage.emit(event.altKey);\r\n }\r\n //alone: highlight same entry on the previous page\r\n //with alt: highlight same entry multiple pages before (12 pages)\r\n private _onPageUpPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n this.triggerHighlightSameDayPreviousPage.emit(event.altKey);\r\n }\r\n\r\n //! templates\r\n readonly daysViewHeaderTemplate = input.required<TemplateRef<CalendarDaysViewHeaderContext> | undefined>();\r\n readonly floatingMonthTemplate = input.required<TemplateRef<CalendarFloatingMonthContext> | undefined>();\r\n readonly weekdayTemplate = input.required<TemplateRef<CalendarWeekdayContext> | undefined>();\r\n readonly dayTemplate = input.required<TemplateRef<CalendarDayContext> | undefined>();\r\n\r\n //! template customizations\r\n readonly daysViewHeaderDateFormat = input.required<string>(); // 'MMM YYYY'\r\n readonly weekdayDateFormat = input.required<string>(); // 'EEEEE'\r\n readonly weekdayTitleDateFormat = input.required<string>(); // 'EEEE'\r\n readonly floatingMonthDateFormat = input.required<string>(); // 'LLL'\r\n readonly floatingMonthTitleDateFormat = input.required<string>(); // 'LLLL'\r\n readonly dayDateFormat = input.required<string>(); // 'D'\r\n\r\n //! template contexts\r\n readonly daysViewHeaderContext = computed<CalendarDaysViewHeaderContext>(() => ({\r\n nextMonth: () => {\r\n this.triggerChangeMonth.emit(this.activeMonth() + 1);\r\n },\r\n prevMonth: () => {\r\n this.triggerChangeMonth.emit(this.activeMonth() - 1);\r\n },\r\n nextYear: () => {\r\n this.triggerChangeYear.emit(this.activeYear() + 1);\r\n },\r\n prevYear: () => {\r\n this.triggerChangeYear.emit(this.activeYear() - 1);\r\n },\r\n openYearsView: () => {\r\n this.triggerOpenYearsView.emit();\r\n },\r\n openMonthsView: () => {\r\n this.triggerOpenMonthsView.emit();\r\n },\r\n onFocus: (event: FocusEvent) => {\r\n this.focusEvent.emit(event);\r\n },\r\n onBlur: (event: FocusEvent) => {\r\n this.blurEvent.emit(event);\r\n },\r\n canGoToNextPage: !this.isMonthOutOfRange(this.activeMonth() + 1),\r\n canGoToPreviousPage: !this.isMonthOutOfRange(this.activeMonth() - 1),\r\n hideNextPageButton:\r\n this.multiCalendarLocation() === ArdMultiCalendarLocation.Left ||\r\n this.multiCalendarLocation() === ArdMultiCalendarLocation.Inner,\r\n hidePreviousPageButton:\r\n this.multiCalendarLocation() === ArdMultiCalendarLocation.Right ||\r\n this.multiCalendarLocation() === ArdMultiCalendarLocation.Inner,\r\n year: this.activeYear(),\r\n month: this.activeMonth(),\r\n $implicit: getUTCDate(this.activeYear(), this.activeMonth(), 2), // second day of month to prevent timezone issues\r\n }));\r\n\r\n readonly weekdayContext = computed<(dayIndex: number) => CalendarWeekdayContext>(() => (dayIndex: number) => {\r\n // create a date object for the given day index (0 = Sunday, 1 = Monday, etc.)\r\n // add 4 because January 4, 1970 is a Sunday\r\n const date = getUTCDate(1970, 0, 4 + dayIndex);\r\n return {\r\n dayIndex,\r\n date,\r\n $implicit: date,\r\n };\r\n });\r\n\r\n readonly floatingMonthContext = computed<CalendarFloatingMonthContext>(() => {\r\n const date = getUTCDate(this.activeYear(), this.activeMonth(), 2); // second day of month to prevent timezone issues\r\n return {\r\n month: this.activeMonth(),\r\n date,\r\n $implicit: date,\r\n };\r\n });\r\n\r\n readonly dayContext = computed<(day: number) => CalendarDayContext>(() => (day: number) => {\r\n const date = getUTCDate(this.activeYear(), this.activeMonth(), day);\r\n return {\r\n value: day,\r\n date,\r\n $implicit: day,\r\n select: (dayOrDate: number | Date) => {\r\n this.triggerSelectDay.emit(dayOrDate instanceof Date ? dayOrDate.getDate() : dayOrDate);\r\n },\r\n };\r\n });\r\n}\r\n","<div class=\"ard-days-view\">\r\n @if (!readOnly()) {\r\n <div class=\"ard-calendar__top-toolbar\">\r\n <ng-template\r\n #defaultDaysViewHeaderTemplate\r\n let-currDate\r\n let-nextMonth=\"nextMonth\"\r\n let-prevMonth=\"prevMonth\"\r\n let-canGoToNextMonth=\"canGoToNextPage\"\r\n let-canGoToPreviousMonth=\"canGoToPreviousPage\"\r\n let-hideNextPageButton=\"hideNextPageButton\"\r\n let-hidePreviousPageButton=\"hidePreviousPageButton\"\r\n let-openYearsView=\"openYearsView\"\r\n let-onFocus=\"onFocus\"\r\n let-onBlur=\"onBlur\"\r\n >\r\n <div class=\"ard-calendar__calendar-header\">\r\n <div>\r\n @if (!hidePreviousPageButton) {\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"prevMonth()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToPreviousMonth\"\r\n >\r\n <ard-icon>chevron_left</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n <ard-button\r\n class=\"ard-calendar__header-button\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n variant=\"pill\"\r\n [tabIndex]=\"tabIndex()\"\r\n (click)=\"openYearsView()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n >\r\n {{ currDate | date: this.daysViewHeaderDateFormat() | uppercase }}\r\n <div class=\"ard-dropdown-arrow\"></div>\r\n </ard-button>\r\n <div>\r\n @if (!hideNextPageButton) {\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"nextMonth()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToNextMonth\"\r\n >\r\n <ard-icon>chevron_right</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"daysViewHeaderTemplate() || defaultDaysViewHeaderTemplate\"\r\n [ngTemplateOutletContext]=\"daysViewHeaderContext()\"\r\n />\r\n </div>\r\n }\r\n <div class=\"ard-calendar__weekdays\">\r\n <ng-template\r\n #defaultWeekdayTemplate\r\n let-date\r\n >\r\n <div\r\n class=\"ard-calendar__weekday\"\r\n [title]=\"date | date: weekdayTitleDateFormat() | titlecase\"\r\n >\r\n {{ date | date: weekdayDateFormat() | uppercase }}\r\n </div>\r\n </ng-template>\r\n @for (weekdayIndex of weekdayArray(); track weekdayIndex) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"weekdayTemplate() || defaultWeekdayTemplate\"\r\n [ngTemplateOutletContext]=\"weekdayContext()(weekdayIndex)\"\r\n />\r\n }\r\n </div>\r\n <div\r\n #focusableElement\r\n class=\"ard-calendar__days-grid\"\r\n [class.ard-reserve-top-row]=\"reserveTopRow()\"\r\n [tabindex]=\"tabIndex()\"\r\n [ariaLabel]=\"currentAriaLabel()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (focus)=\"onDayGridFocus()\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n (blur)=\"onDayGridBlur()\"\r\n (click)=\"onDayGridClick()\"\r\n (keydown)=\"onMainGridKeydown($event)\"\r\n role=\"grid\"\r\n >\r\n @if (!hideFloatingMonth()) {\r\n <div class=\"ard-calendar__floating-month\">\r\n <ng-template\r\n #defaultFloatingMonthTemplate\r\n let-date\r\n >\r\n <div [title]=\"date | date: floatingMonthTitleDateFormat() | titlecase\">\r\n {{ date | date: floatingMonthDateFormat() | uppercase }}\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"floatingMonthTemplate() || defaultFloatingMonthTemplate\"\r\n [ngTemplateOutletContext]=\"floatingMonthContext()\"\r\n />\r\n </div>\r\n }\r\n @for (week of activeCalendarData().array; track $index) {\r\n @for (day of week; track day ? day : activeCalendarData().leadingSpaces - $index) {\r\n @if (day === null) {\r\n <div class=\"ard-calendar__entry ard-calendar__entry-empty\"></div>\r\n } @else {\r\n <div\r\n class=\"ard-calendar__entry\"\r\n [class.ard-calendar__entry-highlighted]=\"highlightedDay() === day.value\"\r\n [class.ard-calendar__entry-highlighted-in-range]=\"isDayBetweenSelectedHighlighted(day.value)\"\r\n [class.ard-calendar__entry-disabled]=\"day.disabled || isDayFilteredOut()(day.value)\"\r\n [class.ard-calendar__entry-selected]=\"isDaySelected(day.value)\"\r\n [class.ard-calendar__entry-selected-start]=\"isDaySelectedStart(day.value)\"\r\n [class.ard-calendar__entry-selected-end]=\"isDaySelectedEnd(day.value)\"\r\n [class.ard-calendar__entry-selected-in-range]=\"isDayBetweenSelectedRange(day.value)\"\r\n [class.ard-calendar-today]=\"isDayToday(day.value)\"\r\n (click)=\"onCalendarDayClick(day.value)\"\r\n (mousemove)=\"$event.stopPropagation()\"\r\n (mouseover)=\"onCalendarDayMouseover(day.value)\"\r\n role=\"gridcell\"\r\n >\r\n <div class=\"ard-calendar__entry-button\">\r\n <div class=\"ard-range-overlay\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-template\r\n #defaultDayTemplate\r\n let-date=\"date\"\r\n >\r\n {{ date | date: dayDateFormat() }}\r\n </ng-template>\r\n <ng-template\r\n [ngTemplateOutlet]=\"dayTemplate() || defaultDayTemplate\"\r\n [ngTemplateOutletContext]=\"dayContext()(day.value)\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n }\r\n }\r\n </div>\r\n</div>\r\n","import { getUTCDate } from '@ardium-ui/devkit';\r\nimport { isDefined } from 'simple-bool';\r\nimport { CalendarArrayItem } from '../../calendar.internal-types';\r\n\r\nexport function getCalendarYearsArray(\r\n startYear: number,\r\n yearCount: number,\r\n min: Date | null,\r\n max: Date | null\r\n): CalendarArrayItem[] {\r\n return new Array(yearCount).fill(startYear).map((v, i) => ({ value: v + i, valueDate: new Date(v + i, 1, 1), disabled: !!isYearOutOfRange(v + i, min, max) }));\r\n}\r\nexport function isYearOutOfRange(year: number, min: Date | null, max: Date | null): number {\r\n const dateForMinComparison = getUTCDate(year, 11, 31);\r\n if (isDefined(min) && dateForMinComparison < min) return -1;\r\n\r\n const dateForMaxComparison = getUTCDate(year, 0, 1);\r\n if (isDefined(max) && dateForMaxComparison > max) return 1;\r\n\r\n return 0;\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n ElementRef,\r\n HostListener,\r\n input,\r\n output,\r\n TemplateRef,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { isNull } from 'simple-bool';\r\nimport { getDateComponents, getUTCDate } from '../../../_internal/utils/date.utils';\r\nimport { ArdMultiCalendarLocation, CalendarMonthContext, CalendarMonthsViewHeaderContext } from '../../calendar.types';\r\nimport { isYearOutOfRange } from '../years-view/years-view.helpers';\r\nimport { ComponentColor } from './../../../types/colors.types';\r\nimport { getCalendarMonthsArray } from './months-view.helpers';\r\n\r\nconst TODAY = new Date();\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-months-view',\r\n templateUrl: './months-view.component.html',\r\n styleUrl: './months-view.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MonthsViewComponent implements AfterViewInit {\r\n readonly tabIndex = input.required<number>();\r\n readonly readOnly = input.required<boolean>();\r\n readonly disabled = input.required<boolean>();\r\n\r\n readonly autoFocus = input.required<boolean>();\r\n\r\n readonly _isUsingKeyboard = input.required<boolean>();\r\n\r\n @HostListener('mousemove')\r\n onMouseMove(): void {\r\n if (this._isUsingKeyboard()) return;\r\n if (this.highlightedMonth()) this.triggerHighlightMonth.emit(null);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.autoFocus()) return;\r\n this.focus();\r\n this.triggerHighlightMonth.emit(0);\r\n }\r\n\r\n readonly color = input.required<ComponentColor>();\r\n\r\n readonly activeYear = input.required<number>();\r\n readonly activeMonth = input.required<number>();\r\n\r\n readonly selectedDate = input.required<Date | null>();\r\n readonly selectedDateEnd = input.required<Date | null>();\r\n\r\n readonly rangeSelectionMode = input.required<boolean>();\r\n\r\n readonly UTC = input.required<boolean>();\r\n\r\n readonly min = input.required<Date | null>();\r\n readonly max = input.required<Date | null>();\r\n\r\n readonly multiCalendarLocation = input.required<ArdMultiCalendarLocation>();\r\n\r\n readonly monthsArray = computed(() => getCalendarMonthsArray(this.activeYear(), this.min(), this.max()));\r\n\r\n readonly currentAriaLabel = computed(() => {\r\n const month = this.highlightedMonth();\r\n if (month === null) {\r\n return '';\r\n }\r\n return new Date(this.activeYear(), month, 1).toLocaleDateString(undefined, {\r\n year: 'numeric',\r\n month: 'long',\r\n });\r\n });\r\n\r\n //! outputs\r\n readonly triggerOpenYearsView = output<void>();\r\n readonly triggerOpenDaysView = output<void>();\r\n\r\n readonly focusEvent = output<FocusEvent>({ alias: 'focus' });\r\n readonly blurEvent = output<FocusEvent>({ alias: 'blur' });\r\n\r\n readonly triggerSelectMonth = output<number>();\r\n readonly triggeChangeYear = output<number>();\r\n\r\n readonly triggerHighlightMonth = output<number | null>();\r\n readonly triggerHighlightNextMonth = output<number>();\r\n readonly triggerHighlightPreviousMonth = output<number>();\r\n readonly triggerHighlightFirstMonth = output<void>();\r\n readonly triggerHighlightLastMonth = output<void>();\r\n readonly triggerHighlightSameMonthPreviousPage = output<boolean>();\r\n readonly triggerHighlightSameMonthNextPage = output<boolean>();\r\n\r\n //! calendar entry hover & click\r\n readonly highlightedMonth = input.required<number | null>();\r\n\r\n readonly highlightedMonthDate = computed<Date | null>(() => {\r\n const month = this.highlightedMonth();\r\n if (isNull(month)) return null;\r\n return new Date(this.activeYear(), month, 2);\r\n });\r\n\r\n onCalendarMonthMouseover(month: number): void {\r\n if (this._isUsingKeyboard()) return;\r\n if (this.disabled() || this.readOnly()) return;\r\n\r\n this.triggerHighlightMonth.emit(month);\r\n }\r\n\r\n onCalendarMonthClick(month: number): void {\r\n if (this.disabled() || this.readOnly()) return;\r\n this.triggerSelectMonth.emit(month);\r\n }\r\n\r\n onMonthGridFocus(): void {\r\n if (this.disabled() || this.readOnly()) return;\r\n this.triggerHighlightMonth.emit(0);\r\n }\r\n onMonthGridBlur(): void {\r\n if (this.disabled() || this.readOnly()) return;\r\n this.triggerHighlightMonth.emit(null);\r\n }\r\n onMonthGridClick(): void {\r\n if (this.disabled() || this.readOnly()) return;\r\n if (this.highlightedMonth() !== null) return;\r\n this.triggerHighlightMonth.emit(0);\r\n }\r\n\r\n //! focusing\r\n readonly focusableElement = viewChild.required<ElementRef<HTMLElement>>('focusableElement');\r\n\r\n focus(): void {\r\n this.focusableElement().nativeElement.focus();\r\n }\r\n\r\n //! keyboard controls\r\n onMainGridKeydown(event: KeyboardEvent): void {\r\n if (this.disabled() || this.readOnly()) return;\r\n switch (event.code) {\r\n case 'Space':\r\n case 'Enter':\r\n this._onEnterPress(event);\r\n break;\r\n case 'ArrowUp':\r\n this._onArrowUpPress(event);\r\n break;\r\n case 'ArrowDown':\r\n this._onArrowDownPress(event);\r\n break;\r\n case 'ArrowLeft':\r\n this._onArrowLeftPress(event);\r\n break;\r\n case 'ArrowRight':\r\n this._onArrowRightPress(event);\r\n break;\r\n case 'Home':\r\n this._onHomePress(event);\r\n break;\r\n case 'End':\r\n this._onEndPress(event);\r\n break;\r\n case 'PageUp':\r\n this._onPageUpPress(event);\r\n break;\r\n case 'PageDown':\r\n this._onPageDownPress(event);\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n }\r\n //select currently selected entry\r\n private _onEnterPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n const month = this.highlightedMonth();\r\n if (isNull(month)) return;\r\n this.triggerSelectMonth.emit(month);\r\n }\r\n //highlight the entry one line below\r\n private _onArrowDownPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this.triggerHighlightNextMonth.emit(4); //4 months per line\r\n }\r\n //highlight the entry one line above\r\n private _onArrowUpPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this.triggerHighlightPreviousMonth.emit(4); //4 months per line\r\n }\r\n //highlight next entry\r\n private _onArrowRightPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this.triggerHighlightNextMonth.emit(1);\r\n }\r\n //highlight previous entry\r\n private _onArrowLeftPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this.triggerHighlightPreviousMonth.emit(1);\r\n }\r\n //highlight first entry on the page\r\n private _onHomePress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this.triggerHighlightFirstMonth.emit();\r\n }\r\n //highlight last entry on the page\r\n private _onEndPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this.triggerHighlightLastMonth.emit();\r\n }\r\n //alone: highlight same entry on the next page\r\n //with alt: highlight same entry multiple pages after (10 pages)\r\n private _onPageDownPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this.triggerHighlightSameMonthNextPage.emit(event.altKey);\r\n }\r\n //alone: highlight same entry on the previous page\r\n //with alt: highlight same entry multiple pages before (10 pages)\r\n private _onPageUpPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this.triggerHighlightSameMonthPreviousPage.emit(event.altKey);\r\n }\r\n\r\n //! helpers\r\n isMonthToday(month: number): boolean {\r\n return this.activeYear() === TODAY.getFullYear() && month === TODAY.getMonth();\r\n }\r\n isMonthSelected(month: number | Date | null): boolean {\r\n if (month instanceof Date) month = month.getMonth();\r\n const isStartDateSelected = this.isMonthSelectedStart(month);\r\n\r\n if (this.rangeSelectionMode()) {\r\n const isEndDateSelected = this.isMonthSelectedEnd(month);\r\n return isStartDateSelected || isEndDateSelected;\r\n }\r\n return isStartDateSelected;\r\n }\r\n isMonthSelectedStart(month: number | Date | null): boolean {\r\n if (month instanceof Date) month = month.getMonth();\r\n const selected = this.selectedDate();\r\n const { year, month: selectedMonth } = getDateComponents(selected, this.UTC());\r\n const isStartDateSelected = selected !== null && this.activeYear() === year && month === selectedMonth;\r\n\r\n return isStartDateSelected;\r\n }\r\n isMonthSelectedEnd(month: number | Date | null): boolean {\r\n if (month instanceof Date) month = month.getMonth();\r\n const selected = this.selectedDateEnd();\r\n const { year, month: selectedMonth } = getDateComponents(selected, this.UTC());\r\n const isEndDateSelected = selected !== null && this.activeYear() === year && month === selectedMonth;\r\n\r\n return isEndDateSelected;\r\n }\r\n isMonthBetweenSelectedRange(month: number | Date | null): boolean {\r\n if (!this.rangeSelectionMode()) return false;\r\n if (month instanceof Date) month = month.getMonth();\r\n const selected = this.selectedDate();\r\n const selectedEnd = this.selectedDateEnd();\r\n if (selected === null || selectedEnd === null || selected >= selectedEnd) return false;\r\n return this._isMonthBetweenDates(month!, selected, selectedEnd);\r\n }\r\n isMonthBetweenSelectedHighlighted(month: number | Date | null): boolean {\r\n if (!this.rangeSelectionMode() || this.selectedDateEnd()) return false;\r\n if (month instanceof Date) month = month.getMonth();\r\n const selected = this.selectedDate();\r\n const highlightedEnd = this.highlightedMonthDate();\r\n if (selected === null || highlightedEnd === null || selected >= highlightedEnd) return false;\r\n return this._isMonthBetweenDates(month!, selected, highlightedEnd);\r\n }\r\n private _isMonthBetweenDates(month: number, startDate: Date, endDate: Date): boolean {\r\n const { year: startYear, month: startMonth } = getDateComponents(startDate, this.UTC());\r\n const { year: endYear, month: endMonth } = getDateComponents(endDate, this.UTC());\r\n return startYear <= this.activeYear() && startMonth <= month && endYear >= this.activeYear() && endMonth >= month;\r\n }\r\n isYearOutOfRange(year: number): number {\r\n return isYearOutOfRange(year, this.min(), this.max());\r\n }\r\n\r\n //! templates\r\n readonly monthsViewHeaderTemplate = input.required<TemplateRef<CalendarMonthsViewHeaderContext> | undefined>();\r\n readonly monthTemplate = input.required<TemplateRef<CalendarMonthContext> | undefined>();\r\n\r\n //! template customizations\r\n readonly monthsViewHeaderDateFormat = input.required<string>(); // 'YYYY'\r\n readonly monthDateFormat = input.required<string>(); // 'MMM'\r\n\r\n //! template contexts\r\n readonly monthsViewHeaderContext = computed(\r\n (): CalendarMonthsViewHeaderContext => ({\r\n nextPage: () => {\r\n this.triggeChangeYear.emit(this.activeYear() + 1);\r\n },\r\n prevPage: () => {\r\n this.triggeChangeYear.emit(this.activeYear() - 1);\r\n },\r\n openYearsView: () => {\r\n this.triggerOpenYearsView.emit();\r\n },\r\n openDaysView: () => {\r\n this.triggerOpenDaysView.emit();\r\n },\r\n onFocus: (event: FocusEvent) => {\r\n this.focusEvent.emit(event);\r\n },\r\n onBlur: (event: FocusEvent) => {\r\n this.blurEvent.emit(event);\r\n },\r\n canGoToNextPage: !this.isYearOutOfRange(this.activeYear() + 1),\r\n canGoToPreviousPage: !this.isYearOutOfRange(this.activeYear() - 1),\r\n hideNextPageButton:\r\n this.multiCalendarLocation() === ArdMultiCalendarLocation.Left ||\r\n this.multiCalendarLocation() === ArdMultiCalendarLocation.Inner,\r\n hidePreviousPageButton:\r\n this.multiCalendarLocation() === ArdMultiCalendarLocation.Right ||\r\n this.multiCalendarLocation() === ArdMultiCalendarLocation.Inner,\r\n year: this.activeYear(),\r\n date: getUTCDate(this.activeYear(), 0, 2), // second day of month to prevent timezone issues\r\n $implicit: this.activeYear(),\r\n })\r\n );\r\n\r\n readonly monthContext = computed(() => (month: number): CalendarMonthContext => {\r\n const date = getUTCDate(this.activeYear(), month, 2); // second day of month to prevent timezone issues\r\n return {\r\n month,\r\n date,\r\n $implicit: date,\r\n select: (month: number | Date) => {\r\n if (month instanceof Date) month = month.getMonth();\r\n this.triggerSelectMonth.emit(month);\r\n },\r\n };\r\n });\r\n}\r\n","<div class=\"ard-months-view\">\r\n @if (!readOnly()) {\r\n <div class=\"ard-calendar__top-toolbar\">\r\n <ng-template\r\n #defaultMonthsViewHeaderTemplate\r\n let-date=\"date\"\r\n let-nextPage=\"nextPage\"\r\n let-prevPage=\"prevPage\"\r\n let-canGoToNextPage=\"canGoToNextPage\"\r\n let-canGoToPreviousPage=\"canGoToPreviousPage\"\r\n let-hideNextPageButton=\"hideNextPageButton\"\r\n let-hidePreviousPageButton=\"hidePreviousPageButton\"\r\n let-openDaysView=\"openDaysView\"\r\n let-onFocus=\"onFocus\"\r\n let-onBlur=\"onBlur\"\r\n >\r\n <div class=\"ard-calendar__calendar-header\">\r\n <div>\r\n @if (!hidePreviousPageButton) {\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"prevPage()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToPreviousPage\"\r\n >\r\n <ard-icon>chevron_left</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n <ard-button\r\n class=\"ard-calendar__header-button\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n variant=\"pill\"\r\n [color]=\"color()\"\r\n [tabIndex]=\"tabIndex()\"\r\n (click)=\"openDaysView()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n >\r\n {{ date | date: monthsViewHeaderDateFormat() }}\r\n <div class=\"ard-dropdown-arrow\"></div>\r\n </ard-button>\r\n <div>\r\n @if (!hideNextPageButton) {\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"nextPage()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToNextPage\"\r\n >\r\n <ard-icon>chevron_right</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"monthsViewHeaderTemplate() || defaultMonthsViewHeaderTemplate\"\r\n [ngTemplateOutletContext]=\"monthsViewHeaderContext()\"\r\n />\r\n </div>\r\n }\r\n <div\r\n #focusableElement\r\n class=\"ard-calendar__simple-grid\"\r\n [tabindex]=\"tabIndex()\"\r\n [ariaLabel]=\"currentAriaLabel()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (focus)=\"onMonthGridFocus()\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n (blur)=\"onMonthGridBlur()\"\r\n (click)=\"onMonthGridClick()\"\r\n (keydown)=\"onMainGridKeydown($event)\"\r\n role=\"grid\"\r\n >\r\n @for (month of monthsArray(); track $index) {\r\n <div\r\n class=\"ard-calendar__entry\"\r\n [class.ard-calendar__entry-highlighted]=\"highlightedMonth() === month.value\"\r\n [class.ard-calendar__entry-highlighted-in-range]=\"isMonthBetweenSelectedHighlighted(month.value)\"\r\n [class.ard-calendar__entry-disabled]=\"month.disabled\"\r\n [class.ard-calendar__entry-selected]=\"isMonthSelected(month.value)\"\r\n [class.ard-calendar__entry-selected-start]=\"isMonthSelectedStart(month.value)\"\r\n [class.ard-calendar__entry-selected-end]=\"isMonthSelectedEnd(month.value)\"\r\n [class.ard-calendar__entry-selected-in-range]=\"isMonthBetweenSelectedRange(month.value)\"\r\n [class.ard-calendar-today]=\"isMonthToday(month.value)\"\r\n (click)=\"onCalendarMonthClick(month.value)\"\r\n (mousemove)=\"$event.stopPropagation()\"\r\n (mouseover)=\"onCalendarMonthMouseover(month.value)\"\r\n role=\"gridcell\"\r\n >\r\n <div class=\"ard-calendar__entry-button\">\r\n <div class=\"ard-range-overlay\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-template\r\n #defaultMonthTemplate\r\n let-month\r\n >\r\n {{ month | date: monthDateFormat() : '+0000' | uppercase }}\r\n </ng-template>\r\n <ng-template\r\n [ngTemplateOutlet]=\"monthTemplate() || defaultMonthTemplate\"\r\n [ngTemplateOutletContext]=\"monthContext()(month.value)\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n ElementRef,\r\n HostListener,\r\n input,\r\n output,\r\n TemplateRef,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { isNull } from 'simple-bool';\r\nimport { getDateComponents, getUTCDate } from '../../../_internal/utils/date.utils';\r\nimport {\r\n ArdMultiCalendarLocation,\r\n CalendarYearContext,\r\n CalendarYearsViewHeaderContext,\r\n DateRange,\r\n YearRange,\r\n} from '../../calendar.types';\r\nimport { getCalendarYearsArray, isYearOutOfRange } from './years-view.helpers';\r\n\r\nconst TODAY = new Date();\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-years-view',\r\n templateUrl: './years-view.component.html',\r\n styleUrl: './years-view.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class YearsViewComponent implements AfterViewInit {\r\n readonly tabIndex = input.required<number>();\r\n readonly readOnly = input.required<boolean>();\r\n readonly disabled = input.required<boolean>();\r\n\r\n readonly autoFocus = input.required<boolean>();\r\n\r\n readonly _isUsingKeyboard = input.required<boolean>();\r\n\r\n @HostListener('mousemove')\r\n onMouseMove(): void {\r\n if (this._isUsingKeyboard()) return;\r\n if (this.highlightedYear()) this.triggerHighlightYear.emit(null);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.autoFocus()) return;\r\n this.focus();\r\n this.triggerHighlightYear.emit(this.currentYearRangeStart());\r\n }\r\n\r\n readonly selectedDate = input.required<Date | null>();\r\n readonly selectedDateEnd = input.required<Date | null>();\r\n\r\n readonly rangeSelectionMode = input.required<boolean>();\r\n\r\n readonly UTC = input.required<boolean>();\r\n\r\n readonly min = input.required<Date | null>();\r\n readonly max = input.required<Date | null>();\r\n\r\n readonly multiCalendarLocation = input.required<ArdMultiCalendarLocation>();\r\n\r\n readonly currentYearRangeStart = input.required<number>();\r\n readonly multipleYearPageSize = input.required<number>();\r\n readonly yearsArray = computed(() =>\r\n getCalendarYearsArray(this.currentYearRangeStart(), this.multipleYearPageSize(), this.min(), this.max())\r\n );\r\n\r\n readonly currentAriaLabel = computed(() => {\r\n return this.highlightedYear()?.toString() ?? '';\r\n });\r\n\r\n //! outputs\r\n readonly triggerOpenMonthsView = output<void>();\r\n readonly triggerOpenDaysView = output<void>();\r\n\r\n readonly focusEvent = output<FocusEvent>({ alias: 'focus' });\r\n readonly blurEvent = output<FocusEvent>({ alias: 'blur' });\r\n\r\n readonly triggerSelectYear = output<number>();\r\n readonly triggerChangeYearsViewPage = output<number>();\r\n\r\n readonly triggerHighlightYear = output<number | null>();\r\n readonly triggerHighlightNextYear = output<number>();\r\n readonly triggerHighlightPreviousYear = output<number>();\r\n readonly triggerHighlightFirstYear = output<void>();\r\n readonly triggerHighlightLastYear = output<void>();\r\n readonly triggerHighlightSameYearPreviousPage = output<boolean>();\r\n readonly triggerHighlightSameYearNextPage = output<boolean>();\r\n\r\n //! calendar entry hover & click\r\n readonly highlightedYear = input.required<number | null>();\r\n\r\n readonly highlightedYearDate = computed<Date | null>(() => {\r\n const year = this.highlightedYear();\r\n if (isNull(year)) return null;\r\n return new Date(year, 0, 1);\r\n });\r\n\r\n onCalendarYearMouseover(year: number): void {\r\n if (this._isUsingKeyboard() || this.disabled() || this.readOnly()) return;\r\n\r\n this.triggerHighlightYear.emit(year);\r\n }\r\n onCalendarYearClick(year: number): void {\r\n if (this.disabled() || this.readOnly()) return;\r\n this.triggerSelectYear.emit(year);\r\n }\r\n onYearGridFocus(): void {\r\n if (this.disabled() || this.readOnly()) return;\r\n this.triggerHighlightFirstYear.emit();\r\n }\r\n onYearGridBlur(): void {\r\n if (this.disabled() || this.readOnly()) return;\r\n this.triggerHighlightYear.emit(null);\r\n }\r\n onYearGridClick(): void {\r\n if (this.disabled() || this.readOnly()) return;\r\n if (this.highlightedYear() !== null) return;\r\n this.triggerHighlightFirstYear.emit();\r\n }\r\n\r\n //! helpers\r\n isYearToday(year: number): boolean {\r\n return year === TODAY.getFullYear();\r\n }\r\n isYearSelected(year: number | Date | null): boolean {\r\n if (year instanceof Date) year = year.getFullYear();\r\n const isStartDateSelected = this.isYearSelectedStart(year);\r\n\r\n if (this.rangeSelectionMode()) {\r\n const isEndDateSelected = this.isYearSelectedEnd(year);\r\n return isStartDateSelected || isEndDateSelected;\r\n }\r\n return isStartDateSelected;\r\n }\r\n isYearSelectedStart(year: number | Date | null): boolean {\r\n if (year instanceof Date) year = year.getFullYear();\r\n const selected = this.selectedDate();\r\n const { year: selectedYear } = getDateComponents(selected, this.UTC());\r\n const isStartDateSelected = selected !== null && year === selectedYear;\r\n\r\n return isStartDateSelected;\r\n }\r\n isYearSelectedEnd(year: number | Date | null): boolean {\r\n if (year instanceof Date) year = year.getFullYear();\r\n const selected = this.selectedDateEnd();\r\n const { year: selectedYear } = getDateComponents(selected, this.UTC());\r\n const isEndDateSelected = selected !== null && year === selectedYear;\r\n\r\n return isEndDateSelected;\r\n }\r\n isYearBetweenSelectedRange(year: number | Date | null): boolean {\r\n if (!this.rangeSelectionMode()) return false;\r\n if (year instanceof Date) year = year.getFullYear();\r\n const selected = this.selectedDate();\r\n const selectedEnd = this.selectedDateEnd();\r\n if (selected === null || selectedEnd === null || selected >= selectedEnd) return false;\r\n return this._isYearBetweenDates(year!, selected, selectedEnd);\r\n }\r\n isYearBetweenSelectedHighlighted(year: number | Date | null): boolean {\r\n if (!this.rangeSelectionMode() || this.selectedDateEnd()) return false;\r\n if (year instanceof Date) year = year.getFullYear();\r\n const selected = this.selectedDate();\r\n const highlightedEnd = this.highlightedYearDate();\r\n if (selected === null || highlightedEnd === null || selected >= highlightedEnd) return false;\r\n return this._isYearBetweenDates(year!, selected, highlightedEnd);\r\n }\r\n private _isYearBetweenDates(year: number, startDate: Date, endDate: Date): boolean {\r\n const { year: startYear } = getDateComponents(startDate, this.UTC());\r\n const { year: endYear } = getDateComponents(endDate, this.UTC());\r\n return startYear <= year && endYear >= year;\r\n }\r\n isYearOutOfRange(year: number): number {\r\n return isYearOutOfRange(year, this.min(), this.max());\r\n }\r\n\r\n //! focusing\r\n readonly focusableElement = viewChild.required<ElementRef<HTMLElement>>('focusableElement');\r\n\r\n focus(): void {\r\n this.focusableElement().nativeElement.focus();\r\n }\r\n\r\n //! keyboard controls\r\n onMainGridKeydown(event: KeyboardEvent): void {\r\n if (this.disabled() || this.readOnly()) return;\r\n switch (event.code) {\r\n case 'Space':\r\n case 'Enter':\r\n this._onEnterPress(event);\r\n break;\r\n case 'ArrowUp':\r\n this._onArrowUpPress(event);\r\n break;\r\n case 'ArrowDown':\r\n this._onArrowDownPress(event);\r\n break;\r\n case 'ArrowLeft':\r\n this._onArrowLeftPress(event);\r\n break;\r\n case 'ArrowRight':\r\n this._onArrowRightPress(event);\r\n break;\r\n case 'Home':\r\n this._onHomePress(event);\r\n break;\r\n case 'End':\r\n this._onEndPress(event);\r\n break;\r\n case 'PageUp':\r\n this._onPageUpPress(event);\r\n break;\r\n case 'PageDown':\r\n this._onPageDownPress(event);\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n }\r\n //select currently selected entry\r\n private _onEnterPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n const year = this.highlightedYear();\r\n if (isNull(year)) return;\r\n\r\n this.triggerSelectYear.emit(year);\r\n }\r\n //highlight the entry one line below\r\n private _onArrowDownPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n this.triggerHighlightNextYear.emit(4); //4 years per line\r\n }\r\n //highlight the entry one line above\r\n private _onArrowUpPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n this.triggerHighlightPreviousYear.emit(4); //4 years per line\r\n }\r\n //highlight next entry\r\n private _onArrowRightPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n this.triggerHighlightNextYear.emit(1);\r\n }\r\n //highlight previous entry\r\n private _onArrowLeftPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n this.triggerHighlightPreviousYear.emit(1);\r\n }\r\n //highlight first entry on the page\r\n private _onHomePress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n this.triggerHighlightFirstYear.emit();\r\n }\r\n //highlight last entry on the page\r\n private _onEndPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n this.triggerHighlightLastYear.emit();\r\n }\r\n //alone: highlight same entry on the previous page\r\n //with alt: highlight same entry multiple pages before\r\n private _onPageUpPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n this.triggerHighlightSameYearPreviousPage.emit(event.altKey);\r\n }\r\n //alone: highlight same entry on the next page\r\n //with alt: highlight same entry multiple pages after\r\n private _onPageDownPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n\r\n this.triggerHighlightSameYearNextPage.emit(event.altKey);\r\n }\r\n\r\n //! templates\r\n readonly yearsViewHeaderTemplate = input.required<TemplateRef<CalendarYearsViewHeaderContext> | undefined>();\r\n readonly yearTemplate = input.required<TemplateRef<CalendarYearContext> | undefined>();\r\n\r\n //! template customizations\r\n readonly yearsViewHeaderDateFormat = input.required<string>(); // 'YYYY'\r\n readonly yearDateFormat = input.required<string>(); // 'YYYY'\r\n\r\n //! template contexts\r\n readonly yearsViewHeaderContext = computed<CalendarYearsViewHeaderContext>(() => {\r\n const yearRangeStart = this.currentYearRangeStart();\r\n const yearRangeEnd = yearRangeStart + 23;\r\n const dateRange: DateRange = new DateRange(\r\n getUTCDate(yearRangeStart, 0, 2), // second day of month to prevent timezone issues\r\n getUTCDate(yearRangeEnd, 0, 2)\r\n );\r\n const yearRange: YearRange = {\r\n from: yearRangeStart,\r\n to: yearRangeEnd,\r\n };\r\n return {\r\n nextPage: () => {\r\n this.triggerChangeYearsViewPage.emit(1);\r\n },\r\n prevPage: () => {\r\n this.triggerChangeYearsViewPage.emit(-1);\r\n },\r\n openMonthsView: () => {\r\n this.triggerOpenMonthsView.emit();\r\n },\r\n openDaysView: () => {\r\n this.triggerOpenDaysView.emit();\r\n },\r\n onFocus: (event: FocusEvent) => {\r\n this.focusEvent.emit(event);\r\n },\r\n onBlur: (event: FocusEvent) => {\r\n this.blurEvent.emit(event);\r\n },\r\n canGoToNextPage: !this.isYearOutOfRange(yearRangeEnd + 1),\r\n canGoToPreviousPage: !this.isYearOutOfRange(yearRangeStart - 1),\r\n hideNextPageButton:\r\n this.multiCalendarLocation() === ArdMultiCalendarLocation.Left ||\r\n this.multiCalendarLocation() === ArdMultiCalendarLocation.Inner,\r\n hidePreviousPageButton:\r\n this.multiCalendarLocation() === ArdMultiCalendarLocation.Right ||\r\n this.multiCalendarLocation() === ArdMultiCalendarLocation.Inner,\r\n yearRange: yearRange,\r\n dateRange,\r\n $implicit: dateRange,\r\n };\r\n });\r\n readonly yearContext = computed<(year: number) => CalendarYearContext>(() => {\r\n return (year: number) => {\r\n const date = getUTCDate(year, 1, 2); // second day of month to prevent timezone issues\r\n return {\r\n value: year,\r\n date,\r\n $implicit: date,\r\n select: (year: number) => {\r\n this.triggerSelectYear.emit(year);\r\n },\r\n };\r\n };\r\n });\r\n}\r\n","<div class=\"ard-years-view\">\r\n @if (!readOnly()) {\r\n <div class=\"ard-calendar__top-toolbar\">\r\n <ng-template\r\n #defaultYearsViewHeaderTemplate\r\n let-dateRange=\"dateRange\"\r\n let-nextPage=\"nextPage\"\r\n let-prevPage=\"prevPage\"\r\n let-canGoToNextPage=\"canGoToNextPage\"\r\n let-canGoToPreviousPage=\"canGoToPreviousPage\"\r\n let-hideNextPageButton=\"hideNextPageButton\"\r\n let-hidePreviousPageButton=\"hidePreviousPageButton\"\r\n let-openDaysView=\"openDaysView\"\r\n let-onFocus=\"onFocus\"\r\n let-onBlur=\"onBlur\"\r\n >\r\n <div class=\"ard-calendar__calendar-header\">\r\n <div>\r\n @if (!hidePreviousPageButton) {\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"prevPage()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToPreviousPage\"\r\n >\r\n <ard-icon>chevron_left</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n <ard-button\r\n class=\"ard-calendar__header-button\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n variant=\"pill\"\r\n [tabIndex]=\"tabIndex()\"\r\n (click)=\"openDaysView()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n >\r\n {{ dateRange.from | date: yearsViewHeaderDateFormat() }}\r\n —\r\n {{ dateRange.to | date: yearsViewHeaderDateFormat() }}\r\n <div class=\"ard-dropdown-arrow\"></div>\r\n </ard-button>\r\n <div>\r\n @if (!hideNextPageButton) {\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"nextPage()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToNextPage\"\r\n >\r\n <ard-icon>chevron_right</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"yearsViewHeaderTemplate() || defaultYearsViewHeaderTemplate\"\r\n [ngTemplateOutletContext]=\"yearsViewHeaderContext()\"\r\n />\r\n </div>\r\n }\r\n <div\r\n #focusableElement\r\n class=\"ard-calendar__simple-grid\"\r\n [tabindex]=\"tabIndex()\"\r\n [ariaLabel]=\"currentAriaLabel()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (focus)=\"onYearGridFocus()\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n (blur)=\"onYearGridBlur()\"\r\n (click)=\"onYearGridClick()\"\r\n (keydown)=\"onMainGridKeydown($event)\"\r\n role=\"grid\"\r\n >\r\n @for (year of yearsArray(); track year) {\r\n <div\r\n class=\"ard-calendar__entry\"\r\n [class.ard-calendar__entry-highlighted]=\"highlightedYear() === year.value\"\r\n [class.ard-calendar__entry-highlighted-in-range]=\"isYearBetweenSelectedHighlighted(year.value)\"\r\n [class.ard-calendar__entry-disabled]=\"year.disabled\"\r\n [class.ard-calendar__entry-selected]=\"isYearSelected(year.value)\"\r\n [class.ard-calendar__entry-selected-start]=\"isYearSelectedStart(year.value)\"\r\n [class.ard-calendar__entry-selected-end]=\"isYearSelectedEnd(year.value)\"\r\n [class.ard-calendar__entry-selected-in-range]=\"isYearBetweenSelectedRange(year.value)\"\r\n [class.ard-calendar-today]=\"isYearToday(year.value)\"\r\n (click)=\"onCalendarYearClick(year.value)\"\r\n (mousemove)=\"$event.stopPropagation()\"\r\n (mouseover)=\"onCalendarYearMouseover(year.value)\"\r\n role=\"gridcell\"\r\n >\r\n <div class=\"ard-calendar__entry-button\">\r\n <div class=\"ard-range-overlay\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-template\r\n #defaultYearTemplate\r\n let-year\r\n >\r\n {{ year | date: yearDateFormat() }}\r\n </ng-template>\r\n <ng-template\r\n [ngTemplateOutlet]=\"yearTemplate() || defaultYearTemplate\"\r\n [ngTemplateOutletContext]=\"yearContext()(year.value)\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","import {\r\n computed,\r\n contentChild,\r\n Directive,\r\n HostListener,\r\n input,\r\n linkedSignal,\r\n model,\r\n ModelSignal,\r\n OnChanges,\r\n output,\r\n Signal,\r\n signal,\r\n SimpleChanges,\r\n viewChild\r\n} from '@angular/core';\r\nimport {\r\n BooleanLike,\r\n coerceBooleanProperty,\r\n coerceDateOnlyProperty,\r\n coerceNumberProperty,\r\n getUTCDate,\r\n NumberLike,\r\n} from '@ardium-ui/devkit';\r\nimport { roundFromZero, roundToMultiple } from 'more-rounding';\r\nimport { isDefined, isNull } from 'simple-bool';\r\nimport { _FormFieldComponentBase } from '../_internal/form-field-component';\r\nimport { createDate } from '../_internal/utils/date.utils';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdCalendarDefaults } from './calendar.defaults';\r\nimport {\r\n ArdCalendarDaysViewHeaderTemplateDirective,\r\n ArdCalendarDayTemplateDirective,\r\n ArdCalendarFloatingMonthTemplateDirective,\r\n ArdCalendarMonthsViewHeaderTemplateDirective,\r\n ArdCalendarMonthTemplateDirective,\r\n ArdCalendarWeekdayTemplateDirective,\r\n ArdCalendarYearsViewHeaderTemplateDirective,\r\n ArdCalendarYearTemplateDirective,\r\n} from './calendar.directives';\r\nimport { _CalendarTemplateRepositoryDirective } from './calendar.internal-directives';\r\nimport { ArdCalendarFilterFn, ArdCalendarView, ArdMultiCalendarLocation } from './calendar.types';\r\nimport { DaysViewComponent } from './views/days-view/days-view.component';\r\nimport { isDayOutOfRange } from './views/days-view/days-view.helpers';\r\nimport { MonthsViewComponent } from './views/months-view/months-view.component';\r\nimport { isMonthOutOfRange } from './views/months-view/months-view.helpers';\r\nimport { YearsViewComponent } from './views/years-view/years-view.component';\r\nimport { isYearOutOfRange } from './views/years-view/years-view.helpers';\r\n\r\n@Directive({})\r\nexport abstract class _AbstractCalendar<T, PT = T> extends _FormFieldComponentBase implements OnChanges {\r\n abstract readonly componentId: string;\r\n abstract readonly componentName: string;\r\n\r\n abstract readonly isRangeSelector: boolean;\r\n\r\n protected override readonly _DEFAULTS!: ArdCalendarDefaults;\r\n constructor(defaults: ArdCalendarDefaults) {\r\n super(defaults);\r\n }\r\n\r\n readonly TODAY = computed<Date>(() =>\r\n createDate(new Date().getFullYear(), new Date().getMonth(), new Date().getDate(), this.UTC())\r\n );\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(this._DEFAULTS.color);\r\n\r\n readonly ngClasses = computed((): string => [`ard-color-${this.color()}`].join(' '));\r\n\r\n //! active view\r\n readonly activeView = model<ArdCalendarView>(this._DEFAULTS.activeView);\r\n readonly activeYear = model<number>(this._DEFAULTS.activeYear);\r\n readonly activeMonth = model<number>(this._DEFAULTS.activeMonth);\r\n readonly activePageChange = output<{ year: number; month: number }>();\r\n\r\n readonly firstWeekday = input<number, NumberLike>(this._DEFAULTS.firstWeekday, {\r\n transform: v => {\r\n const value = coerceNumberProperty(v, this._DEFAULTS.firstWeekday);\r\n if (!Number.isInteger(value)) {\r\n console.error(\r\n new Error(\r\n `ARD-NF${this.componentId}1A: [firstWeekday] must be a positive integer, got \"${value}\". Using default value instead.`\r\n )\r\n );\r\n return this._DEFAULTS.firstWeekday;\r\n }\r\n if (value < 0 || value > 6) {\r\n console.error(\r\n new Error(\r\n `ARD-NF${this.componentId}1B: [firstWeekday] must be between 0 and 6, got \"${value}\". Using modulo operator to adjust the value.`\r\n )\r\n );\r\n }\r\n return value % 7;\r\n },\r\n });\r\n\r\n readonly multipleYearPageChangeModifier = input<number, NumberLike>(this._DEFAULTS.multipleYearPageChangeModifier, {\r\n transform: v => {\r\n const value = coerceNumberProperty(v, this._DEFAULTS.multipleYearPageChangeModifier);\r\n if (!Number.isInteger(value) || value < 1) {\r\n console.error(\r\n new Error(\r\n `ARD-NF${this.componentId}2: [multipleYearPageChangeModifier] must be a positive integer, got \"${value}\". Using default value instead.`\r\n )\r\n );\r\n return this._DEFAULTS.multipleYearPageChangeModifier;\r\n }\r\n return value;\r\n },\r\n });\r\n readonly multipleYearOffset = input<number, NumberLike>(this._DEFAULTS.multipleYearOffset, {\r\n transform: v => {\r\n const value = coerceNumberProperty(v, this._DEFAULTS.multipleYearOffset);\r\n if (!Number.isInteger(value) || value < 0) {\r\n console.error(\r\n new Error(\r\n `ARD-NF${this.componentId}3: [multipleYearOffset] must be a non-negative integer, got \"${value}\". Using default value instead.`\r\n )\r\n );\r\n return this._DEFAULTS.multipleYearOffset;\r\n }\r\n return value;\r\n },\r\n });\r\n readonly multipleYearPageSize = input<number, NumberLike>(this._DEFAULTS.multipleYearPageSize, {\r\n transform: v => {\r\n const value = coerceNumberProperty(v, this._DEFAULTS.multipleYearPageSize);\r\n if (!Number.isInteger(value) || value < 1) {\r\n console.error(\r\n new Error(\r\n `ARD-NF${this.componentId}5: [multipleYearPageSize] must be a positive integer, got \"${value}\". Using default value instead.`\r\n )\r\n );\r\n return this._DEFAULTS.multipleYearPageSize;\r\n }\r\n return value;\r\n },\r\n });\r\n\r\n readonly multiCalendarLocation = input<ArdMultiCalendarLocation>(this._DEFAULTS.multiCalendarLocation);\r\n\r\n readonly autoFocus = input<boolean, BooleanLike>(this._DEFAULTS.autoFocus, { transform: v => coerceBooleanProperty(v) });\r\n readonly staticHeight = input<boolean, BooleanLike>(this._DEFAULTS.staticHeight, { transform: v => coerceBooleanProperty(v) });\r\n readonly hideFloatingMonth = input<boolean, BooleanLike>(this._DEFAULTS.hideFloatingMonth, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n readonly daysViewComponent = viewChild.required(DaysViewComponent);\r\n readonly monthsViewComponent = viewChild.required(MonthsViewComponent);\r\n readonly yearsViewComponent = viewChild.required(YearsViewComponent);\r\n\r\n openDaysView(): void {\r\n this.activeView.set(ArdCalendarView.Days);\r\n setTimeout(() => {\r\n this.daysViewComponent().focus();\r\n }, 0);\r\n }\r\n openMonthsView(): void {\r\n this.activeView.set(ArdCalendarView.Months);\r\n setTimeout(() => {\r\n this.monthsViewComponent().focus();\r\n }, 0);\r\n }\r\n openYearsView(): void {\r\n this.activeView.set(ArdCalendarView.Years);\r\n setTimeout(() => {\r\n this.yearsViewComponent().focus();\r\n }, 0);\r\n }\r\n\r\n //! value\r\n readonly selectionStart = signal<Date | null>(null);\r\n readonly selectionEnd = signal<Date | null>(null);\r\n\r\n abstract readonly endDate: Signal<Date | null>;\r\n\r\n abstract readonly value: ModelSignal<PT | null>;\r\n\r\n readonly yearSelect = output<number>();\r\n readonly monthSelect = output<number>();\r\n\r\n readonly min = input<Date | null, any>(this._DEFAULTS.min, {\r\n transform: v => (v === null ? null : coerceDateOnlyProperty(v, this._DEFAULTS.min, true)),\r\n });\r\n readonly max = input<Date | null, any>(this._DEFAULTS.max, {\r\n transform: v => (v === null ? null : coerceDateOnlyProperty(v, this._DEFAULTS.max, true)),\r\n });\r\n\r\n readonly UTC = input<boolean, BooleanLike>(this._DEFAULTS.UTC, { transform: v => coerceBooleanProperty(v) });\r\n private readonly _UTCAfterInit = signal<boolean>(this._DEFAULTS.UTC);\r\n\r\n readonly filter = input<ArdCalendarFilterFn | null>(this._DEFAULTS.filter);\r\n\r\n abstract override writeValue(v: any): void;\r\n\r\n protected override _emitChange(): void {\r\n this._onChangeRegistered?.(this.getValueForEmit());\r\n }\r\n\r\n protected abstract getValueForEmit(): T | null;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['UTC']) {\r\n if (changes['UTC'].firstChange) {\r\n this._UTCAfterInit.set(changes['UTC'].currentValue);\r\n } else {\r\n console.error(\r\n `ARD-NF${this.componentId}4: <ard-${this.componentName}>'s [UTC] attribute should not be changed dynamically. This change will be ignored.`\r\n );\r\n }\r\n }\r\n if (changes['value']) {\r\n this.writeValue(changes['value'].currentValue);\r\n }\r\n }\r\n\r\n private _emitActivePageChange(): void {\r\n this.activePageChange.emit({ year: this.activeYear(), month: this.activeMonth() });\r\n }\r\n private _emitHighlightedDate(): void {\r\n const day = this.highlightedDay();\r\n if (!day) return;\r\n const date = createDate(this.activeYear(), this.activeMonth(), day, this.UTC());\r\n this.highlightDayEvent.emit(date);\r\n }\r\n\r\n //! selecting days\r\n isDayOutOfRange(day: number, month: number = this.activeMonth(), year: number = this.activeYear()): number {\r\n const dayDate = getUTCDate(year, month, day);\r\n return isDayOutOfRange(dayDate, this.min(), this.max());\r\n }\r\n readonly isDayFilteredOut = computed(() => {\r\n return (day: number, month: number = this.activeMonth(), year: number = this.activeYear()): boolean => {\r\n return this.filter()?.(createDate(year, month, day, this.UTC())) ?? false;\r\n };\r\n });\r\n selectDay(day: number | Date | null): void {\r\n const startValue = this.selectionStart();\r\n // reset selection\r\n if (isNull(day)) {\r\n if (!isDefined(startValue)) return;\r\n\r\n this.selectionStart.set(null);\r\n this.selectionEnd.set(null);\r\n return;\r\n }\r\n\r\n if (day instanceof Date) day = day.getDate();\r\n // check if day is out of range or filtered out\r\n if ((day && this.isDayOutOfRange(day)) || this.isDayFilteredOut()(day)) return;\r\n\r\n // range selection logic\r\n const endValue = this.selectionEnd();\r\n const newDate = createDate(this.activeYear(), this.activeMonth(), day, this.UTC());\r\n if (this.isRangeSelector) {\r\n // select end date\r\n if (isDefined(startValue) && !isDefined(endValue) && newDate > startValue) {\r\n this.selectionEnd.set(newDate);\r\n return;\r\n }\r\n // reset end date and start a new selection\r\n this.selectionEnd.set(null);\r\n }\r\n // avoid setting the same date again\r\n if (\r\n startValue &&\r\n startValue.getFullYear() === this.activeYear() &&\r\n startValue.getMonth() === this.activeMonth() &&\r\n startValue.getDate() === day\r\n ) {\r\n return;\r\n }\r\n this.selectionStart.set(newDate);\r\n }\r\n selectCurrentlyHighlightedDay(): void {\r\n if (!isDefined(this.highlightedDay())) return;\r\n\r\n this.selectDay(this.highlightedDay());\r\n }\r\n\r\n //! highlighting days\r\n readonly highlightedDay = model<number | null>(null);\r\n\r\n readonly highlightDayEvent = output<Date>({ alias: 'highlightDay' });\r\n\r\n setHighlightedDay(day: number | null, month: number = this.activeMonth(), year: number = this.activeYear()): void {\r\n if (isNull(day)) {\r\n this.highlightedDay.update(() => day);\r\n this._emitHighlightedDate();\r\n return;\r\n }\r\n const date = createDate(year, month, day, this.UTC());\r\n const outOfRange = this.isDayOutOfRange(day, month, year);\r\n\r\n if (outOfRange === -1) {\r\n this._highlightMinDay();\r\n return;\r\n }\r\n if (outOfRange === 1) {\r\n this._highlightMaxDay();\r\n return;\r\n }\r\n\r\n this.highlightedDay.update(() => date.getDate());\r\n\r\n if (date.getFullYear() !== this.activeYear()) {\r\n this.activeYear.set(date.getFullYear());\r\n }\r\n if (date.getMonth() !== this.activeMonth()) {\r\n this.activeMonth.set(date.getMonth());\r\n }\r\n this._emitHighlightedDate();\r\n this._emitActivePageChange();\r\n }\r\n\r\n private _highlightMinDay(): void {\r\n const min = this.min();\r\n if (!isDefined(min)) return;\r\n\r\n this.activeYear.set(min.getFullYear());\r\n this.activeMonth.set(min.getMonth());\r\n this.highlightedDay.set(min.getDate());\r\n this._emitHighlightedDate();\r\n this._emitActivePageChange();\r\n }\r\n private _highlightMaxDay(): void {\r\n const max = this.max();\r\n if (!isDefined(max)) return;\r\n\r\n this.activeYear.set(max.getFullYear());\r\n this.activeMonth.set(max.getMonth());\r\n this.highlightedDay.set(max.getDate());\r\n this._emitHighlightedDate();\r\n this._emitActivePageChange();\r\n }\r\n\r\n highlightNextDay(offset = 1): void {\r\n const currentDay = this.highlightedDay();\r\n const newDay = isDefined(currentDay) ? currentDay + offset : 1;\r\n this.setHighlightedDay(newDay);\r\n }\r\n highlightPreviousDay(offset = 1): void {\r\n this.highlightNextDay(offset * -1);\r\n }\r\n highlightFirstDay(): void {\r\n this.setHighlightedDay(1);\r\n }\r\n highlightLastDay(): void {\r\n const daysInMonth = createDate(this.activeYear(), this.activeMonth() + 1, 0, this.UTC()).getDate();\r\n this.setHighlightedDay(daysInMonth);\r\n }\r\n highlightSameDayNextMonth(): void {\r\n const month = this.activeMonth();\r\n const year = this.activeYear();\r\n const newMonth = month + 1;\r\n const newYear = year + Math.floor(newMonth / 12);\r\n this.setHighlightedDay(this.highlightedDay(), newMonth % 12, newYear);\r\n }\r\n highlightSameDayPreviousMonth(): void {\r\n const month = this.activeMonth();\r\n const year = this.activeYear();\r\n const newMonth = month - 1;\r\n const newYear = year + Math.floor(newMonth / 12);\r\n this.setHighlightedDay(this.highlightedDay(), newMonth % 12, newYear);\r\n }\r\n highlightSameDayNextYear(): void {\r\n this.setHighlightedDay(this.highlightedDay(), this.activeMonth(), this.activeYear() + 1);\r\n }\r\n highlightSameDayPreviousYear(): void {\r\n this.setHighlightedDay(this.highlightedDay(), this.activeMonth(), this.activeYear() - 1);\r\n }\r\n\r\n //! selecting months\r\n isMonthSelected(month: number | Date): boolean {\r\n if (month instanceof Date) month = month.getMonth();\r\n return (\r\n this.selectionStart() !== null &&\r\n this.activeYear() === this.selectionStart()?.getFullYear() &&\r\n month === this.selectionStart()?.getMonth()\r\n );\r\n }\r\n isMonthOutOfRange(month: number, year: number = this.activeYear()): number {\r\n return isMonthOutOfRange(month, year, this.min(), this.max());\r\n }\r\n changeMonth(newMonth: number | null): boolean {\r\n if (isNull(newMonth)) {\r\n this.activeMonth.set(this.TODAY().getMonth());\r\n this._emitActivePageChange();\r\n return true;\r\n }\r\n\r\n if (this.isMonthOutOfRange(newMonth)) return false;\r\n\r\n if (newMonth > 11) {\r\n this.activeYear.update(v => v + 1);\r\n this.activeMonth.set(0);\r\n } else if (newMonth < 0) {\r\n this.activeYear.update(v => v - 1);\r\n this.activeMonth.set(11);\r\n } else {\r\n this.activeMonth.set(newMonth);\r\n }\r\n this._emitActivePageChange();\r\n\r\n return true;\r\n }\r\n selectMonth(newMonth: number | null): void {\r\n if (isNull(newMonth) || this.isMonthOutOfRange(newMonth)) return;\r\n\r\n const wasSuccessful = this.changeMonth(newMonth);\r\n if (!wasSuccessful) return;\r\n\r\n this.openDaysView();\r\n this.monthSelect.emit(newMonth);\r\n }\r\n selectCurrentlyHighlightedMonth(): void {\r\n if (!isDefined(this.highlightedMonth())) return;\r\n\r\n this.selectMonth(this.highlightedMonth()!);\r\n }\r\n\r\n //! highlighting months\r\n private readonly _highlightedMonth = signal<number | null>(null);\r\n readonly highlightedMonth = this._highlightedMonth.asReadonly();\r\n\r\n setHighlightedMonth(month: number | null, year: number = this.activeYear()): void {\r\n if (isNull(month)) {\r\n this._highlightedMonth.update(() => month);\r\n return;\r\n }\r\n const date = createDate(year, month, 15, this.UTC());\r\n const outOfRange = this.isMonthOutOfRange(month, year);\r\n\r\n if (outOfRange === -1) {\r\n this._highlightMinMonth();\r\n return;\r\n }\r\n if (outOfRange === 1) {\r\n this._highlightMaxMonth();\r\n return;\r\n }\r\n\r\n this._highlightedMonth.update(() => date.getMonth());\r\n\r\n if (date.getFullYear() !== this.activeYear()) {\r\n this.activeYear.set(date.getFullYear());\r\n this._emitActivePageChange();\r\n }\r\n }\r\n\r\n private _highlightMinMonth(): void {\r\n const min = this.min();\r\n if (!isDefined(min)) return;\r\n\r\n this.activeYear.set(min.getFullYear());\r\n this._emitActivePageChange();\r\n this._highlightedMonth.set(min.getMonth());\r\n }\r\n private _highlightMaxMonth(): void {\r\n const max = this.max();\r\n if (!isDefined(max)) return;\r\n\r\n this.activeYear.set(max.getFullYear());\r\n this._emitActivePageChange();\r\n this._highlightedMonth.set(max.getMonth());\r\n }\r\n\r\n highlightNextMonth(offset = 1): void {\r\n const currentMonth = this.highlightedMonth();\r\n const newMonth = isDefined(currentMonth) ? currentMonth + offset : 0;\r\n this.setHighlightedMonth(newMonth);\r\n }\r\n highlightPreviousMonth(offset = 1): void {\r\n this.highlightNextMonth(offset * -1);\r\n }\r\n highlightFirstMonth(): void {\r\n this.setHighlightedMonth(0);\r\n }\r\n highlightLastMonth(): void {\r\n this.setHighlightedMonth(11);\r\n }\r\n highlightSameMonthNextYear(multiple: boolean): void {\r\n this.setHighlightedMonth(this.highlightedMonth(), this.activeYear() + (multiple ? 10 : 1));\r\n }\r\n highlightSameMonthPreviousYear(multiple: boolean): void {\r\n this.setHighlightedMonth(this.highlightedMonth(), this.activeYear() - (multiple ? 10 : 1));\r\n }\r\n\r\n //! selecting years\r\n isYearSelected(year: number | Date): boolean {\r\n if (year instanceof Date) year = year.getFullYear();\r\n return this.selectionStart() !== null && year === this.selectionStart()?.getFullYear();\r\n }\r\n isYearOutOfRange(year: number): number {\r\n return isYearOutOfRange(year, this.min(), this.max());\r\n }\r\n changeYear(year: number | null): boolean {\r\n if (isNull(year)) {\r\n this.activeYear.set(this.TODAY().getFullYear());\r\n this._emitActivePageChange();\r\n return true;\r\n }\r\n\r\n if (this.isYearOutOfRange(year)) return false;\r\n\r\n this.activeYear.set(year);\r\n this._emitActivePageChange();\r\n\r\n return true;\r\n }\r\n selectYear(year: number | Date | null): void {\r\n if (isNull(year)) return;\r\n if (year instanceof Date) year = year.getFullYear();\r\n\r\n const wasSuccessful = this.changeYear(year);\r\n if (!wasSuccessful) return;\r\n\r\n this.openMonthsView();\r\n this.yearSelect.emit(year);\r\n }\r\n selectCurrentlyHighlightedYear(): void {\r\n if (!isDefined(this.highlightedYear())) return;\r\n\r\n this.selectYear(this.highlightedYear()!);\r\n }\r\n\r\n //! highlighting years\r\n private readonly __highlightedYear = signal<number | null>(null);\r\n readonly highlightedYear = this.__highlightedYear.asReadonly();\r\n\r\n readonly currentYearRangeStart = linkedSignal<number>(() => {\r\n // align to a multiple of 4 and subtract offset\r\n const rangeStartForCurrentYear =\r\n this.TODAY().getFullYear() - (this.TODAY().getFullYear() % 4) - this.multipleYearOffset() * 4;\r\n\r\n const activeYear = this.activeYear();\r\n\r\n const offset =\r\n roundToMultiple(activeYear - rangeStartForCurrentYear + 1, this.multipleYearPageSize(), 'up') - this.multipleYearPageSize(); // check how many n-year pages need to be turned\r\n\r\n return rangeStartForCurrentYear + offset;\r\n });\r\n\r\n setHighlightedYear(year: number | null): void {\r\n if (isNull(year)) {\r\n this.__highlightedYear.update(() => year);\r\n return;\r\n }\r\n const date = createDate(year, 0, 1, this.UTC());\r\n const outOfRange = this.isYearOutOfRange(year);\r\n\r\n if (outOfRange === -1) {\r\n this._highlightMinYear();\r\n return;\r\n }\r\n if (outOfRange === 1) {\r\n this._highlightMaxYear();\r\n return;\r\n }\r\n\r\n const newYear = date.getFullYear();\r\n this.__highlightedYear.update(() => newYear);\r\n\r\n if (newYear < this.currentYearRangeStart() || newYear >= this.currentYearRangeStart() + this.multipleYearPageSize()) {\r\n // round the offset away from zero: 0.1 -> 1, -0.1 -> -1\r\n // this is to ensure the range start is always shifted by n years\r\n const offset = roundFromZero((newYear - this.currentYearRangeStart()) / this.multipleYearPageSize());\r\n this.currentYearRangeStart.update(v => v + offset * this.multipleYearPageSize());\r\n }\r\n }\r\n\r\n changeYearsViewPage(offset: number): void {\r\n const newYearRangeStart = this.currentYearRangeStart() + offset * this.multipleYearPageSize();\r\n this.currentYearRangeStart.set(newYearRangeStart);\r\n }\r\n\r\n private _highlightMinYear(): void {\r\n const min = this.min();\r\n if (!isDefined(min)) return;\r\n\r\n this.__highlightedYear.set(min.getFullYear());\r\n }\r\n private _highlightMaxYear(): void {\r\n const max = this.max();\r\n if (!isDefined(max)) return;\r\n\r\n this.__highlightedYear.set(max.getFullYear());\r\n }\r\n\r\n highlightNextYear(offset = 1): void {\r\n const currentYear = this.highlightedYear();\r\n const newYear = isDefined(currentYear) ? currentYear + offset : null;\r\n this.setHighlightedYear(newYear);\r\n }\r\n highlightPreviousYear(offset = 1): void {\r\n this.highlightNextYear(offset * -1);\r\n }\r\n highlightFirstYear(): void {\r\n this.setHighlightedYear(this.currentYearRangeStart());\r\n }\r\n highlightLastYear(): void {\r\n this.setHighlightedYear(this.currentYearRangeStart() + this.multipleYearPageSize() - 1);\r\n }\r\n highlightSameYearNextPage(multiple: boolean): void {\r\n const year = this.highlightedYear() ?? this.currentYearRangeStart();\r\n this.setHighlightedYear(year + (multiple ? this.multipleYearPageChangeModifier() : 1) * this.multipleYearPageSize());\r\n }\r\n highlightSameYearPreviousPage(multiple: boolean): void {\r\n const year = this.highlightedYear() ?? this.currentYearRangeStart();\r\n this.setHighlightedYear(year - (multiple ? this.multipleYearPageChangeModifier() : 1) * this.multipleYearPageSize());\r\n }\r\n\r\n //! internals\r\n readonly _isUsingKeyboard = signal<boolean>(false);\r\n @HostListener('document:mousemove')\r\n onDocumentMousemove(): void {\r\n this._isUsingKeyboard.set(false);\r\n }\r\n @HostListener('document:keydown')\r\n onDocumentKeydown(): void {\r\n this._isUsingKeyboard.set(true);\r\n }\r\n\r\n //! templates\r\n readonly templateRepository = contentChild(_CalendarTemplateRepositoryDirective);\r\n\r\n readonly yearsViewHeaderTemplate = contentChild(ArdCalendarYearsViewHeaderTemplateDirective);\r\n readonly monthsViewHeaderTemplate = contentChild(ArdCalendarMonthsViewHeaderTemplateDirective);\r\n readonly daysViewHeaderTemplate = contentChild(ArdCalendarDaysViewHeaderTemplateDirective);\r\n readonly floatingMonthTemplate = contentChild(ArdCalendarFloatingMonthTemplateDirective);\r\n readonly yearTemplate = contentChild(ArdCalendarYearTemplateDirective);\r\n readonly monthTemplate = contentChild(ArdCalendarMonthTemplateDirective);\r\n readonly dayTemplate = contentChild(ArdCalendarDayTemplateDirective);\r\n readonly weekdayTemplate = contentChild(ArdCalendarWeekdayTemplateDirective);\r\n\r\n //! template customizations\r\n readonly daysViewHeaderDateFormat = input<string>(this._DEFAULTS.daysViewHeaderDateFormat); // 'MMM YYYY'\r\n readonly yearsViewHeaderDateFormat = input<string>(this._DEFAULTS.yearsViewHeaderDateFormat); // 'YYYY'\r\n readonly monthsViewHeaderDateFormat = input<string>(this._DEFAULTS.monthsViewHeaderDateFormat); // 'YYYY'\r\n readonly weekdayDateFormat = input<string>(this._DEFAULTS.weekdayDateFormat); // 'EEEEE'\r\n readonly weekdayTitleDateFormat = input<string>(this._DEFAULTS.weekdayTitleDateFormat); // 'EEEE'\r\n readonly floatingMonthDateFormat = input<string>(this._DEFAULTS.floatingMonthDateFormat); // 'LLL'\r\n readonly floatingMonthTitleDateFormat = input<string>(this._DEFAULTS.floatingMonthTitleDateFormat); // 'LLLL'\r\n readonly yearDateFormat = input<string>(this._DEFAULTS.yearDateFormat); // 'YYYY'\r\n readonly monthDateFormat = input<string>(this._DEFAULTS.monthDateFormat); // 'MMM'\r\n readonly dayDateFormat = input<string>(this._DEFAULTS.dayDateFormat); // 'D'\r\n}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _FormFieldComponentDefaults, _formFieldComponentDefaults } from '../_internal/form-field-component';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdCalendarFilterFn, ArdCalendarView, ArdMultiCalendarLocation } from './calendar.types';\r\n\r\nexport interface ArdCalendarDefaults extends _FormFieldComponentDefaults {\r\n color: ComponentColor;\r\n activeView: ArdCalendarView;\r\n activeYear: number;\r\n activeMonth: number;\r\n firstWeekday: number;\r\n multipleYearPageChangeModifier: number;\r\n multipleYearOffset: number;\r\n multipleYearPageSize: number;\r\n staticHeight: boolean;\r\n hideFloatingMonth: boolean;\r\n autoFocus: boolean;\r\n multiCalendarLocation: ArdMultiCalendarLocation;\r\n min: Date | null;\r\n max: Date | null;\r\n filter: ArdCalendarFilterFn | null;\r\n UTC: boolean;\r\n // template customizations\r\n daysViewHeaderDateFormat: string;\r\n yearsViewHeaderDateFormat: string;\r\n monthsViewHeaderDateFormat: string;\r\n weekdayDateFormat: string;\r\n weekdayTitleDateFormat: string;\r\n floatingMonthDateFormat: string;\r\n floatingMonthTitleDateFormat: string;\r\n yearDateFormat: string;\r\n monthDateFormat: string;\r\n dayDateFormat: string;\r\n}\r\n\r\nconst _calendarDefaults: ArdCalendarDefaults = {\r\n ..._formFieldComponentDefaults,\r\n color: ComponentColor.Primary,\r\n activeView: ArdCalendarView.Days,\r\n activeYear: new Date().getFullYear(),\r\n activeMonth: new Date().getMonth(),\r\n firstWeekday: 1,\r\n multipleYearPageChangeModifier: 5,\r\n multipleYearOffset: 2,\r\n multipleYearPageSize: 24,\r\n staticHeight: false,\r\n hideFloatingMonth: false,\r\n autoFocus: false,\r\n multiCalendarLocation: ArdMultiCalendarLocation.Only,\r\n min: null,\r\n max: null,\r\n filter: null,\r\n UTC: false,\r\n // template customizations\r\n daysViewHeaderDateFormat: 'MMM yyyy',\r\n yearsViewHeaderDateFormat: 'yyyy',\r\n monthsViewHeaderDateFormat: 'yyyy',\r\n weekdayDateFormat: 'EEEEE',\r\n weekdayTitleDateFormat: 'EEEE',\r\n floatingMonthDateFormat: 'LLL',\r\n floatingMonthTitleDateFormat: 'LLLL',\r\n yearDateFormat: 'yyyy',\r\n monthDateFormat: 'MMM',\r\n dayDateFormat: 'd',\r\n};\r\n\r\nexport const ARD_CALENDAR_DEFAULTS = new InjectionToken<ArdCalendarDefaults>('ard-calendar-defaults', {\r\n factory: () => ({\r\n ..._calendarDefaults,\r\n }),\r\n});\r\n\r\nexport function provideCalendarDefaults(config: Partial<ArdCalendarDefaults>): Provider {\r\n return { provide: ARD_CALENDAR_DEFAULTS, useValue: { ..._calendarDefaults, ...config } };\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n forwardRef,\r\n Inject,\r\n model,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { isDefined } from 'simple-bool';\r\nimport { ARD_FORM_FIELD_CONTROL } from '../form-field/form-field-child.token';\r\nimport { _AbstractCalendar } from './abstract-calendar';\r\nimport { ARD_CALENDAR_DEFAULTS, ArdCalendarDefaults } from './calendar.defaults';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-calendar',\r\n templateUrl: './calendar.component.html',\r\n styleUrls: ['./calendar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumCalendarComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ARD_FORM_FIELD_CONTROL,\r\n useExisting: ArdiumCalendarComponent,\r\n },\r\n ],\r\n})\r\nexport class ArdiumCalendarComponent extends _AbstractCalendar<Date> {\r\n readonly componentId = '200';\r\n readonly componentName = 'calendar';\r\n readonly isRangeSelector = false;\r\n\r\n constructor(@Inject(ARD_CALENDAR_DEFAULTS) defaults: ArdCalendarDefaults) {\r\n super(defaults);\r\n\r\n effect(() => {\r\n const v = this.selectionStart();\r\n if (!isDefined(v)) {\r\n return;\r\n }\r\n this.value.set(v);\r\n this._emitChange();\r\n });\r\n }\r\n\r\n readonly value = model<Date | null>(null);\r\n\r\n readonly endDate = computed<null>(() => null);\r\n\r\n override writeValue(v: any): void {\r\n if (v instanceof Date) {\r\n this.selectionStart.set(v);\r\n } else if (!isDefined(v)) {\r\n this.selectionStart.set(null);\r\n } else {\r\n console.error(new Error(`ARD-NF2003: <ard-calendar> [writeValue] expected a Date or null, got \"${v}\".`));\r\n }\r\n }\r\n\r\n protected getValueForEmit(): Date | null {\r\n return this.value();\r\n }\r\n}\r\n","<div\r\n class=\"ard-calendar\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @switch (activeView()) { @case ('days') {\r\n <ard-days-view\r\n [tabIndex]=\"tabIndex()\"\r\n [readOnly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [autoFocus]=\"autoFocus()\"\r\n [_isUsingKeyboard]=\"_isUsingKeyboard()\"\r\n [activeMonth]=\"activeMonth()\"\r\n [activeYear]=\"activeYear()\"\r\n [selectedDate]=\"selectionStart()\"\r\n [selectedDateEnd]=\"endDate()\"\r\n [rangeSelectionMode]=\"isRangeSelector\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [staticHeight]=\"staticHeight()\"\r\n [highlightedDay]=\"highlightedDay()\"\r\n [UTC]=\"UTC()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [multiCalendarLocation]=\"multiCalendarLocation()\"\r\n [hideFloatingMonth]=\"hideFloatingMonth()\"\r\n [isDayFilteredOut]=\"isDayFilteredOut()\"\r\n [daysViewHeaderTemplate]=\"daysViewHeaderTemplate()?.template ?? templateRepository()?.daysViewHeaderTmp()?.template\"\r\n [floatingMonthTemplate]=\"floatingMonthTemplate()?.template ?? templateRepository()?.floatingMonthTmp()?.template\"\r\n [weekdayTemplate]=\"weekdayTemplate()?.template ?? templateRepository()?.weekdayTmp()?.template\"\r\n [dayTemplate]=\"dayTemplate()?.template ?? templateRepository()?.dayTmp()?.template\"\r\n [daysViewHeaderDateFormat]=\"daysViewHeaderDateFormat()\"\r\n [weekdayDateFormat]=\"weekdayDateFormat()\"\r\n [weekdayTitleDateFormat]=\"weekdayTitleDateFormat()\"\r\n [floatingMonthDateFormat]=\"floatingMonthDateFormat()\"\r\n [floatingMonthTitleDateFormat]=\"floatingMonthTitleDateFormat()\"\r\n [dayDateFormat]=\"dayDateFormat()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (triggerOpenMonthsView)=\"openMonthsView()\"\r\n (triggerOpenYearsView)=\"openYearsView()\"\r\n (triggerChangeMonth)=\"changeMonth($event)\"\r\n (triggerChangeYear)=\"changeYear($event)\"\r\n (triggerHighlightDay)=\"setHighlightedDay($event)\"\r\n (triggerHighlightFirstDay)=\"highlightFirstDay()\"\r\n (triggerHighlightLastDay)=\"highlightLastDay()\"\r\n (triggerHighlightNextDay)=\"highlightNextDay($event)\"\r\n (triggerHighlightPreviousDay)=\"highlightPreviousDay($event)\"\r\n (triggerHighlightSameDayNextPage)=\"$event ? highlightSameDayNextYear() : highlightSameDayNextMonth()\"\r\n (triggerHighlightSameDayPreviousPage)=\"$event ? highlightSameDayPreviousYear() : highlightSameDayPreviousMonth()\"\r\n (triggerSelectDay)=\"selectDay($event)\"\r\n />\r\n } @case ('months') {\r\n <ard-months-view\r\n [tabIndex]=\"tabIndex()\"\r\n [readOnly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [autoFocus]=\"autoFocus()\"\r\n [_isUsingKeyboard]=\"_isUsingKeyboard()\"\r\n [color]=\"color()\"\r\n [activeMonth]=\"activeMonth()\"\r\n [activeYear]=\"activeYear()\"\r\n [selectedDate]=\"selectionStart()\"\r\n [selectedDateEnd]=\"endDate()\"\r\n [rangeSelectionMode]=\"isRangeSelector\"\r\n [UTC]=\"UTC()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [multiCalendarLocation]=\"multiCalendarLocation()\"\r\n [highlightedMonth]=\"highlightedMonth()\"\r\n [monthsViewHeaderTemplate]=\"monthsViewHeaderTemplate()?.template ?? templateRepository()?.monthsViewHeaderTmp()?.template\"\r\n [monthTemplate]=\"monthTemplate()?.template ?? templateRepository()?.monthTmp()?.template\"\r\n [monthsViewHeaderDateFormat]=\"monthsViewHeaderDateFormat()\"\r\n [monthDateFormat]=\"monthDateFormat()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (triggerOpenDaysView)=\"openDaysView()\"\r\n (triggerOpenYearsView)=\"openYearsView()\"\r\n (triggeChangeYear)=\"changeYear($event)\"\r\n (triggerSelectMonth)=\"selectMonth($event)\"\r\n (triggerHighlightMonth)=\"setHighlightedMonth($event)\"\r\n (triggerHighlightFirstMonth)=\"highlightFirstMonth()\"\r\n (triggerHighlightLastMonth)=\"highlightLastMonth()\"\r\n (triggerHighlightNextMonth)=\"highlightNextMonth($event)\"\r\n (triggerHighlightPreviousMonth)=\"highlightPreviousMonth($event)\"\r\n (triggerHighlightSameMonthNextPage)=\"highlightSameMonthNextYear($event)\"\r\n (triggerHighlightSameMonthPreviousPage)=\"highlightSameMonthPreviousYear($event)\"\r\n />\r\n } @case ('years') {\r\n <ard-years-view\r\n [tabIndex]=\"tabIndex()\"\r\n [readOnly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [autoFocus]=\"autoFocus()\"\r\n [_isUsingKeyboard]=\"_isUsingKeyboard()\"\r\n [highlightedYear]=\"highlightedYear()\"\r\n [currentYearRangeStart]=\"currentYearRangeStart()\"\r\n [multipleYearPageSize]=\"multipleYearPageSize()\"\r\n [selectedDate]=\"selectionStart()\"\r\n [selectedDateEnd]=\"endDate()\"\r\n [rangeSelectionMode]=\"isRangeSelector\"\r\n [UTC]=\"UTC()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [multiCalendarLocation]=\"multiCalendarLocation()\"\r\n [yearsViewHeaderTemplate]=\"yearsViewHeaderTemplate()?.template ?? templateRepository()?.yearsViewHeaderTmp()?.template\"\r\n [yearTemplate]=\"yearTemplate()?.template ?? templateRepository()?.yearTmp()?.template\"\r\n [yearsViewHeaderDateFormat]=\"yearsViewHeaderDateFormat()\"\r\n [yearDateFormat]=\"yearDateFormat()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (triggerOpenDaysView)=\"openDaysView()\"\r\n (triggerOpenMonthsView)=\"openMonthsView()\"\r\n (triggerSelectYear)=\"selectYear($event)\"\r\n (triggerChangeYearsViewPage)=\"changeYearsViewPage($event)\"\r\n (triggerHighlightYear)=\"setHighlightedYear($event)\"\r\n (triggerHighlightFirstYear)=\"highlightFirstYear()\"\r\n (triggerHighlightLastYear)=\"highlightLastYear()\"\r\n (triggerHighlightNextYear)=\"highlightNextYear($event)\"\r\n (triggerHighlightPreviousYear)=\"highlightPreviousYear($event)\"\r\n (triggerHighlightSameYearNextPage)=\"highlightSameYearNextPage($event)\"\r\n (triggerHighlightSameYearPreviousPage)=\"highlightSameYearPreviousPage($event)\"\r\n />\r\n } }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumIconButtonComponent } from './icon-button.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumIconButtonComponent],\r\n imports: [CommonModule],\r\n exports: [ArdiumIconButtonComponent],\r\n})\r\nexport class ArdiumIconButtonModule {}\r\n","import { CommonModule, DatePipe, TitleCasePipe, UpperCasePipe } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumButtonModule } from '../../buttons/button';\r\nimport { ArdiumIconButtonModule } from '../../buttons/icon-button';\r\nimport { ArdiumIconModule } from '../../icon';\r\nimport { DaysViewComponent } from './days-view/days-view.component';\r\nimport { MonthsViewComponent } from './months-view/months-view.component';\r\nimport { YearsViewComponent } from './years-view/years-view.component';\r\n\r\n@NgModule({\r\n declarations: [DaysViewComponent, MonthsViewComponent, YearsViewComponent],\r\n imports: [CommonModule, DatePipe, ArdiumIconButtonModule, ArdiumIconModule, ArdiumButtonModule, UpperCasePipe, TitleCasePipe],\r\n exports: [DaysViewComponent, MonthsViewComponent, YearsViewComponent],\r\n})\r\nexport class _CalendarViewsModule {}\r\n","import { CommonModule, DATE_PIPE_DEFAULT_OPTIONS } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumCalendarComponent } from './calendar.component';\r\nimport {\r\n ArdCalendarDaysViewHeaderTemplateDirective,\r\n ArdCalendarDayTemplateDirective,\r\n ArdCalendarFloatingMonthTemplateDirective,\r\n ArdCalendarMonthsViewHeaderTemplateDirective,\r\n ArdCalendarMonthTemplateDirective,\r\n ArdCalendarWeekdayTemplateDirective,\r\n ArdCalendarYearsViewHeaderTemplateDirective,\r\n ArdCalendarYearTemplateDirective,\r\n} from './calendar.directives';\r\nimport { _CalendarViewsModule } from './views/calendar-views.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumCalendarComponent,\r\n // template directives\r\n ArdCalendarDaysViewHeaderTemplateDirective,\r\n ArdCalendarYearsViewHeaderTemplateDirective,\r\n ArdCalendarMonthsViewHeaderTemplateDirective,\r\n ArdCalendarWeekdayTemplateDirective,\r\n ArdCalendarFloatingMonthTemplateDirective,\r\n ArdCalendarYearTemplateDirective,\r\n ArdCalendarMonthTemplateDirective,\r\n ArdCalendarDayTemplateDirective,\r\n ],\r\n imports: [CommonModule, _CalendarViewsModule],\r\n exports: [\r\n ArdiumCalendarComponent,\r\n // template directives\r\n ArdCalendarDaysViewHeaderTemplateDirective,\r\n ArdCalendarYearsViewHeaderTemplateDirective,\r\n ArdCalendarMonthsViewHeaderTemplateDirective,\r\n ArdCalendarWeekdayTemplateDirective,\r\n ArdCalendarFloatingMonthTemplateDirective,\r\n ArdCalendarYearTemplateDirective,\r\n ArdCalendarMonthTemplateDirective,\r\n ArdCalendarDayTemplateDirective,\r\n ],\r\n providers: [\r\n { provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: { timezone: '+0000' } },\r\n ],\r\n})\r\nexport class ArdiumCalendarModule {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n effect,\r\n forwardRef,\r\n Inject,\r\n model,\r\n output,\r\n untracked,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { isDate, isDefined, isObject } from 'simple-bool';\r\nimport { ARD_FORM_FIELD_CONTROL } from '../form-field/form-field-child.token';\r\nimport { _AbstractCalendar } from './abstract-calendar';\r\nimport { ARD_CALENDAR_DEFAULTS, ArdCalendarDefaults } from './calendar.defaults';\r\nimport { DateRange, PartialDateRange } from './calendar.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-range-calendar',\r\n templateUrl: './calendar.component.html',\r\n styleUrls: ['./calendar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumRangeCalendarComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ARD_FORM_FIELD_CONTROL,\r\n useExisting: ArdiumRangeCalendarComponent,\r\n },\r\n ],\r\n})\r\nexport class ArdiumRangeCalendarComponent extends _AbstractCalendar<DateRange, PartialDateRange> {\r\n readonly componentId = '200';\r\n readonly componentName = 'calendar';\r\n readonly isRangeSelector = true;\r\n\r\n\r\n constructor(@Inject(ARD_CALENDAR_DEFAULTS) defaults: ArdCalendarDefaults) {\r\n super(defaults);\r\n\r\n effect(() => {\r\n const start = this.selectionStart();\r\n const end = this.selectionEnd();\r\n\r\n if (!isDefined(start)) {\r\n this.value.set(null);\r\n return;\r\n }\r\n if (!isDefined(end)) {\r\n this.startSelection.emit(start);\r\n }\r\n // avoid re-emitting same value\r\n const value = untracked(() => this.value());\r\n if (value && value.from.valueOf() === start.valueOf() && value.to?.valueOf() === end?.valueOf()) {\r\n return;\r\n }\r\n this.value.set(new PartialDateRange(start, end));\r\n if (end) {\r\n this._emitChange();\r\n }\r\n });\r\n }\r\n\r\n readonly value = model<PartialDateRange | null>(null);\r\n\r\n readonly startSelection = output<Date>();\r\n\r\n readonly endDate = this.selectionEnd.asReadonly();\r\n\r\n override writeValue(v: any): void {\r\n if (isObject(v) && 'from' in v && 'to' in v && isDate(v['from']) && isDate(v['to'])) {\r\n this.selectionStart.set(v['from']);\r\n this.selectionEnd.set(v['to']);\r\n } else if (!isDefined(v)) {\r\n this.selectionStart.set(null);\r\n this.selectionEnd.set(null);\r\n } else {\r\n console.error(\r\n new Error(`ARD-NF2003: <ard-range-calendar> [writeValue] expected a { from: Date, to: Date } object or null, got \"${v}\".`)\r\n );\r\n }\r\n }\r\n\r\n protected override getValueForEmit(): DateRange | null {\r\n const value = this.value();\r\n if (!value || !isDefined(value.from) || !isDefined(value.to)) return null;\r\n return new DateRange(value.from, value.to);\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport {\r\n CalendarDayContext,\r\n CalendarDaysViewHeaderContext,\r\n CalendarFloatingMonthContext,\r\n CalendarMonthContext,\r\n CalendarMonthsViewHeaderContext,\r\n CalendarWeekdayContext,\r\n CalendarYearContext,\r\n CalendarYearsViewHeaderContext,\r\n} from './calendar.types';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-range-calendar > ng-template[ard-header-tmp]',\r\n})\r\nexport class ArdRangeCalendarDaysViewHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarDaysViewHeaderContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-range-calendar > ng-template[ard-year-picker-header-tmp]',\r\n})\r\nexport class ArdRangeCalendarYearsViewHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarYearsViewHeaderContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-range-calendar > ng-template[ard-month-picker-header-tmp]',\r\n})\r\nexport class ArdRangeCalendarMonthsViewHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarMonthsViewHeaderContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-range-calendar > ng-template[ard-weekday-tmp]',\r\n})\r\nexport class ArdRangeCalendarWeekdayTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarWeekdayContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-range-calendar > ng-template[ard-floating-month-tmp]',\r\n})\r\nexport class ArdRangeCalendarFloatingMonthTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarFloatingMonthContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-range-calendar > ng-template[ard-year-tmp]',\r\n})\r\nexport class ArdRangeCalendarYearTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarYearContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-range-calendar > ng-template[ard-month-tmp]',\r\n})\r\nexport class ArdRangeCalendarMonthTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarMonthContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-range-calendar > ng-template[ard-day-tmp]',\r\n})\r\nexport class ArdRangeCalendarDayTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarDayContext>) {}\r\n}\r\n","import { CommonModule, DATE_PIPE_DEFAULT_OPTIONS } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumRangeCalendarComponent } from './range-calendar.component';\r\nimport {\r\n ArdRangeCalendarDaysViewHeaderTemplateDirective,\r\n ArdRangeCalendarDayTemplateDirective,\r\n ArdRangeCalendarFloatingMonthTemplateDirective,\r\n ArdRangeCalendarMonthsViewHeaderTemplateDirective,\r\n ArdRangeCalendarMonthTemplateDirective,\r\n ArdRangeCalendarWeekdayTemplateDirective,\r\n ArdRangeCalendarYearsViewHeaderTemplateDirective,\r\n ArdRangeCalendarYearTemplateDirective,\r\n} from './range-calendar.directives';\r\nimport { _CalendarViewsModule } from './views/calendar-views.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumRangeCalendarComponent,\r\n // template directives\r\n ArdRangeCalendarDaysViewHeaderTemplateDirective,\r\n ArdRangeCalendarYearsViewHeaderTemplateDirective,\r\n ArdRangeCalendarMonthsViewHeaderTemplateDirective,\r\n ArdRangeCalendarWeekdayTemplateDirective,\r\n ArdRangeCalendarFloatingMonthTemplateDirective,\r\n ArdRangeCalendarYearTemplateDirective,\r\n ArdRangeCalendarMonthTemplateDirective,\r\n ArdRangeCalendarDayTemplateDirective,\r\n ],\r\n imports: [CommonModule, _CalendarViewsModule],\r\n exports: [\r\n ArdiumRangeCalendarComponent,\r\n // template directives\r\n ArdRangeCalendarDaysViewHeaderTemplateDirective,\r\n ArdRangeCalendarYearsViewHeaderTemplateDirective,\r\n ArdRangeCalendarMonthsViewHeaderTemplateDirective,\r\n ArdRangeCalendarWeekdayTemplateDirective,\r\n ArdRangeCalendarFloatingMonthTemplateDirective,\r\n ArdRangeCalendarYearTemplateDirective,\r\n ArdRangeCalendarMonthTemplateDirective,\r\n ArdRangeCalendarDayTemplateDirective,\r\n ],\r\n providers: [\r\n { provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: { timezone: '+0000' } },\r\n ],\r\n})\r\nexport class ArdiumRangeCalendarModule {}\r\n","import { isDateRange, PartialDateRange } from '../../calendar';\r\nimport { ArdDateInputDeserializeFn, ArdDateInputSerializeFn } from './date-input.types';\r\n\r\nexport const DEFAULT_DATE_INPUT_SERIALIZE_FN: ArdDateInputSerializeFn<Date> = (value: Date | null) => {\r\n if (value instanceof Date) {\r\n return `${value.getDate().toString().padStart(2, '0')}/${(value.getMonth() + 1)\r\n .toString()\r\n .padStart(2, '0')}/${value.getFullYear()}`;\r\n }\r\n return '';\r\n};\r\n\r\nexport const DEFAULT_DATE_RANGE_INPUT_SERIALIZE_FN: ArdDateInputSerializeFn<PartialDateRange> = (value: PartialDateRange | null) => {\r\n if (isDateRange(value)) {\r\n const from = `${value.from.getDate().toString().padStart(2, '0')}/${(value.from.getMonth() + 1)\r\n .toString()\r\n .padStart(2, '0')}/${value.from.getFullYear()}`;\r\n const to = value.to\r\n ? `${value.to.getDate().toString().padStart(2, '0')}/${(value.to.getMonth() + 1)\r\n .toString()\r\n .padStart(2, '0')}/${value.to.getFullYear()}`\r\n : '';\r\n return `${from} – ${to}`;\r\n }\r\n return '';\r\n};\r\n\r\nexport const DEFAULT_DATE_INPUT_DESERIALIZE_FN: ArdDateInputDeserializeFn<Date> = (\r\n value: string,\r\n prevValue: Date | null\r\n): Date | null => {\r\n const trimmed = value.trim();\r\n\r\n // case: ISO string\r\n if (!trimmed.includes('/') && !isNaN(Date.parse(trimmed))) {\r\n const isoDate = new Date(trimmed);\r\n isoDate.setHours(0, 0, 0, 0);\r\n return isoDate;\r\n }\r\n\r\n const parts = trimmed.split('/');\r\n const currentYear = new Date().getFullYear();\r\n\r\n if (parts.length === 1) {\r\n // case: only year provided\r\n const year = parseInt(parts[0], 10);\r\n if (isNaN(year)) return null;\r\n const date = new Date(year, 0, 1); // Jan 1st\r\n return date;\r\n }\r\n\r\n if (parts.length === 2) {\r\n // case: day/month, use current year\r\n const day = parseInt(parts[0], 10);\r\n const month = parseInt(parts[1], 10) - 1;\r\n if (isNaN(day) || isNaN(month)) return null;\r\n const date = new Date(currentYear, month, day);\r\n return isNaN(date.getTime()) ? null : date;\r\n }\r\n\r\n if (parts.length === 3) {\r\n // case: full date\r\n const day = parseInt(parts[0], 10);\r\n const month = parseInt(parts[1], 10) - 1;\r\n const year = parseInt(parts[2], 10);\r\n if (isNaN(day) || isNaN(month) || isNaN(year)) return null;\r\n const date = new Date(year, month, day);\r\n return isNaN(date.getTime()) ? null : date;\r\n }\r\n\r\n // invalid format\r\n return prevValue;\r\n};\r\n","export type ArdDateInputSerializeFn<T> = (date: T | null) => string;\r\nexport type ArdDateInputDeserializeFn<T> = (date: string, prevValue: T | null) => T | null;\r\n\r\nexport interface ArdDateInputValueContext<T> {\r\n $implicit: string;\r\n rawValue: T | null;\r\n}\r\n\r\nexport interface ArdDateInputAcceptButtonsContext {\r\n $implicit: () => void;\r\n cancel: () => void;\r\n accept: () => void;\r\n disabled: boolean;\r\n}\r\n\r\nexport const ArdDateInputMinMaxStrategy = {\r\n Allow: 'allow',\r\n Adjust: 'adjust',\r\n} as const;\r\nexport type ArdDateInputMinMaxStrategy = (typeof ArdDateInputMinMaxStrategy)[keyof typeof ArdDateInputMinMaxStrategy];\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\r\nimport { _FormFieldComponentDefaults, _formFieldComponentDefaults } from '../../_internal/form-field-component';\r\nimport { ArdCalendarFilterFn, ArdCalendarView, PartialDateRange } from '../../calendar/calendar.types';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant } from '../../dropdown-panel';\r\nimport { ArdFormFieldFramePrefixSuffix } from '../../form-field-frame';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport {\r\n DEFAULT_DATE_INPUT_DESERIALIZE_FN,\r\n DEFAULT_DATE_INPUT_SERIALIZE_FN,\r\n DEFAULT_DATE_RANGE_INPUT_SERIALIZE_FN,\r\n} from './date-input.serializers';\r\nimport { ArdDateInputDeserializeFn, ArdDateInputMinMaxStrategy, ArdDateInputSerializeFn } from './date-input.types';\r\n\r\nexport interface ArdDateInputDefaults extends _FormFieldComponentDefaults {\r\n inputAttrs: Record<string, any>;\r\n placeholder: string;\r\n serializeFn: ArdDateInputSerializeFn<Date>;\r\n rangeSerializeFn: ArdDateInputSerializeFn<PartialDateRange>;\r\n deserializeFn: ArdDateInputDeserializeFn<Date>;\r\n appearance: FormElementAppearance;\r\n variant: FormElementVariant;\r\n color: ComponentColor;\r\n compact: boolean;\r\n dropdownAppearance: DropdownPanelAppearance;\r\n dropdownVariant: DropdownPanelVariant;\r\n minMaxStrategy: ArdDateInputMinMaxStrategy;\r\n startView: Nullable<ArdCalendarView>;\r\n inputReadOnly: boolean;\r\n calendarDisabled: boolean;\r\n calendarHidden: boolean;\r\n // calendar defaults\r\n activeView: ArdCalendarView;\r\n activeYear: number;\r\n activeMonth: number;\r\n firstWeekday: number;\r\n multipleYearPageChangeModifier: number;\r\n numberOfCalendars: number;\r\n min: Date | null;\r\n max: Date | null;\r\n filter: ArdCalendarFilterFn | null;\r\n UTC: boolean;\r\n hideFloatingMonth: boolean;\r\n // template customizations\r\n calendarDaysViewHeaderDateFormat: string;\r\n calendarYearsViewHeaderDateFormat: string;\r\n calendarMonthsViewHeaderDateFormat: string;\r\n calendarWeekdayDateFormat: string;\r\n calendarWeekdayTitleDateFormat: string;\r\n calendarFloatingMonthDateFormat: string;\r\n calendarFloatingMonthTitleDateFormat: string;\r\n calendarYearDateFormat: string;\r\n calendarMonthDateFormat: string;\r\n calendarDayDateFormat: string;\r\n acceptButtonText: string;\r\n cancelButtonText: string;\r\n PrefixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n SuffixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n}\r\n\r\nconst _dateInputDefaults: ArdDateInputDefaults = {\r\n ..._formFieldComponentDefaults,\r\n inputAttrs: {},\r\n placeholder: '',\r\n serializeFn: DEFAULT_DATE_INPUT_SERIALIZE_FN,\r\n rangeSerializeFn: DEFAULT_DATE_RANGE_INPUT_SERIALIZE_FN,\r\n deserializeFn: DEFAULT_DATE_INPUT_DESERIALIZE_FN,\r\n appearance: FormElementAppearance.Outlined,\r\n variant: FormElementVariant.Rounded,\r\n color: ComponentColor.Primary,\r\n compact: false,\r\n dropdownAppearance: DropdownPanelAppearance.Outlined,\r\n dropdownVariant: DropdownPanelVariant.Rounded,\r\n minMaxStrategy: ArdDateInputMinMaxStrategy.Adjust,\r\n startView: undefined,\r\n inputReadOnly: false,\r\n calendarDisabled: false,\r\n calendarHidden: false,\r\n // calendar defaults\r\n activeView: ArdCalendarView.Days,\r\n activeYear: new Date().getFullYear(),\r\n activeMonth: new Date().getMonth(),\r\n firstWeekday: 1,\r\n multipleYearPageChangeModifier: 5,\r\n numberOfCalendars: 2,\r\n min: null,\r\n max: null,\r\n filter: null,\r\n UTC: false,\r\n hideFloatingMonth: false,\r\n // template customizations\r\n calendarDaysViewHeaderDateFormat: 'MMM yyyy',\r\n calendarYearsViewHeaderDateFormat: 'yyyy',\r\n calendarMonthsViewHeaderDateFormat: 'yyyy',\r\n calendarWeekdayDateFormat: 'EEEEE',\r\n calendarWeekdayTitleDateFormat: 'EEEE',\r\n calendarFloatingMonthDateFormat: 'LLL',\r\n calendarFloatingMonthTitleDateFormat: 'LLLL',\r\n calendarYearDateFormat: 'yyyy',\r\n calendarMonthDateFormat: 'MMM',\r\n calendarDayDateFormat: 'd',\r\n acceptButtonText: 'Accept',\r\n cancelButtonText: 'Cancel',\r\n PrefixComponent: undefined,\r\n SuffixComponent: undefined,\r\n};\r\n\r\nexport const ARD_DATE_INPUT_DEFAULTS = new InjectionToken<ArdDateInputDefaults>('ard-date-input-defaults', {\r\n factory: () => ({ ..._dateInputDefaults }),\r\n});\r\n\r\nexport function provideDateInputDefaults(config: Partial<ArdDateInputDefaults>): Provider {\r\n return { provide: ARD_DATE_INPUT_DEFAULTS, useValue: { ..._dateInputDefaults, ...config } };\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n effect,\r\n ElementRef,\r\n forwardRef,\r\n Inject,\r\n input,\r\n model,\r\n signal,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { isDefined, isNull } from 'simple-bool';\r\nimport { getUTCDate } from '../../_internal/utils/date.utils';\r\nimport { ARD_FORM_FIELD_CONTROL } from '../../form-field/form-field-child.token';\r\nimport { _AbstractDateInput } from './abstract-date-input';\r\nimport { ARD_DATE_INPUT_DEFAULTS, ArdDateInputDefaults } from './date-input.defaults';\r\nimport {\r\n ArdDateInputDaysViewHeaderTemplateDirective,\r\n ArdDateInputDayTemplateDirective,\r\n ArdDateInputFloatingMonthTemplateDirective,\r\n ArdDateInputMonthsViewHeaderTemplateDirective,\r\n ArdDateInputMonthTemplateDirective,\r\n ArdDateInputPrefixTemplateDirective,\r\n ArdDateInputSuffixTemplateDirective,\r\n ArdDateInputWeekdayTemplateDirective,\r\n ArdDateInputYearsViewHeaderTemplateDirective,\r\n ArdDateInputYearTemplateDirective,\r\n} from './date-input.directives';\r\nimport { ArdDateInputDeserializeFn, ArdDateInputMinMaxStrategy, ArdDateInputSerializeFn } from './date-input.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-date-input',\r\n templateUrl: './date-input.component.html',\r\n styleUrls: ['./date-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumDateInputComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ARD_FORM_FIELD_CONTROL,\r\n useExisting: ArdiumDateInputComponent,\r\n },\r\n ],\r\n})\r\nexport class ArdiumDateInputComponent extends _AbstractDateInput<Date> implements AfterViewInit {\r\n readonly componentId = '008';\r\n readonly componentName = 'date-input';\r\n readonly isRangeSelector = false;\r\n\r\n protected override readonly _DEFAULTS!: ArdDateInputDefaults;\r\n constructor(@Inject(ARD_DATE_INPUT_DEFAULTS) defaults: ArdDateInputDefaults) {\r\n super(defaults);\r\n\r\n effect(() => {\r\n const value = this.value();\r\n const serializer = this.serializeFn();\r\n this._serializeValueIntoDateInput(value, serializer);\r\n });\r\n }\r\n\r\n readonly dateInputValue = model<string>('');\r\n\r\n writeValue(v: Date | null): void {\r\n if (v instanceof Date) {\r\n this.value.set(v);\r\n } else if (!isDefined(v)) {\r\n this.value.set(null);\r\n } else {\r\n console.error(new Error(`ARD-NF0083: <ard-date-input> writeValue expected a Date or null, got \"${v}\".`));\r\n }\r\n }\r\n protected _isFullValue(_: Date | null): _ is Date {\r\n return true;\r\n }\r\n protected getValueForEmit(): Date | null {\r\n return this.value();\r\n }\r\n\r\n //! date input event handlers\r\n readonly dateInput = viewChild<ElementRef<HTMLInputElement>>('dateInput');\r\n\r\n readonly inputAttrs = input<Record<string, any>>(this._DEFAULTS.inputAttrs);\r\n\r\n readonly inputReadOnly = input<boolean, BooleanLike>(this._DEFAULTS.inputReadOnly, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n readonly minMaxStrategy = input<ArdDateInputMinMaxStrategy>(this._DEFAULTS.minMaxStrategy);\r\n readonly serializeFn = input<ArdDateInputSerializeFn<Date>>(this._DEFAULTS.serializeFn);\r\n readonly deserializeFn = input<ArdDateInputDeserializeFn<Date>>(this._DEFAULTS.deserializeFn);\r\n\r\n readonly isDateInputFocused = signal<boolean>(false);\r\n private readonly _wasDateInputChanged = signal<boolean>(false);\r\n\r\n onDateInputFocus(event: FocusEvent): void {\r\n this.onFocus(event);\r\n\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n this.isDateInputFocused.set(true);\r\n this._wasDateInputChanged.set(false);\r\n }\r\n onDateInputBlur(event: FocusEvent): void {\r\n this.onBlur(event);\r\n\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n this._processDateInputText(this.dateInputValue());\r\n\r\n if (!this.isDateInputFocused()) return;\r\n\r\n this.isDateInputFocused.set(false);\r\n }\r\n onDateInputEnter(event: KeyboardEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (event.key !== 'Enter') return;\r\n event.preventDefault();\r\n this.close();\r\n this.blur();\r\n this.focus();\r\n }\r\n private _processDateInputText(value: string): void {\r\n let date = this.deserializeFn()(value, this.value());\r\n\r\n if (this.minMaxStrategy() === ArdDateInputMinMaxStrategy.Adjust && date) {\r\n const min = this.min();\r\n const max = this.max();\r\n\r\n // min and max are always in UTC when they are set, so we need to convert the date to UTC for comparison\r\n date = getUTCDate(date.getFullYear(), date.getMonth(), date.getDate());\r\n\r\n if (min && date < min) {\r\n date = min;\r\n } else if (max && date > max) {\r\n date = max;\r\n }\r\n // convert the date back to local time if the UTC mode is off\r\n if (!this._UTCAfterInit()) {\r\n date = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\r\n }\r\n\r\n if (date.toISOString() !== this.value()?.toISOString()) {\r\n this.value.set(date);\r\n }\r\n return;\r\n }\r\n\r\n // deserialized date should always be in local time, so we need to convert it to UTC if the UTC mode is on\r\n if (date && this._UTCAfterInit()) {\r\n date = getUTCDate(date.getFullYear(), date.getMonth(), date.getDate());\r\n }\r\n\r\n if (date?.toISOString() !== this.value()?.toISOString()) {\r\n this.value.set(date);\r\n }\r\n }\r\n private _setDateInputAttributes() {\r\n const input = this.dateInput()?.nativeElement;\r\n if (!input) return;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n ...this.inputAttrs(),\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, attributes[key]);\r\n }\r\n }\r\n\r\n onDateInputInput(event: Event): void {\r\n const v = (event.target as HTMLInputElement).value;\r\n this.dateInputValue.set(v);\r\n }\r\n private _serializeValueIntoDateInput(value: Date | null, serializer: ArdDateInputSerializeFn<Date>): void {\r\n this.dateInputValue.set(serializer(value));\r\n }\r\n\r\n readonly shouldDisplayPlaceholder = computed(() => {\r\n if (this.isDateInputFocused() && this.dateInputValue()) return false;\r\n return isNull(this.value());\r\n });\r\n readonly shouldDisplayValue = computed(() => {\r\n if (this.isDateInputFocused()) return false;\r\n return this.value() instanceof Date;\r\n });\r\n readonly shouldDisplayDateInput = computed(() => {\r\n return !this.inputReadOnly() && !this.shouldDisplayValue() && this.isDateInputFocused();\r\n });\r\n\r\n //! hooks\r\n ngAfterViewInit(): void {\r\n this._setDateInputAttributes();\r\n }\r\n\r\n override onGeneralClick(event: MouseEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n super.onGeneralClick(event);\r\n this.dateInput()?.nativeElement.focus();\r\n\r\n if (this.isOpen()) {\r\n this.close();\r\n }\r\n }\r\n\r\n readonly prefixTemplate = contentChild(ArdDateInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdDateInputSuffixTemplateDirective);\r\n\r\n readonly prefixComponent = this._DEFAULTS.PrefixComponent;\r\n readonly suffixComponent = this._DEFAULTS.SuffixComponent;\r\n\r\n readonly calendarDaysViewHeaderTemplate = contentChild(ArdDateInputDaysViewHeaderTemplateDirective);\r\n readonly calendarYearsViewHeaderTemplate = contentChild(ArdDateInputYearsViewHeaderTemplateDirective);\r\n readonly calendarMonthsViewHeaderTemplate = contentChild(ArdDateInputMonthsViewHeaderTemplateDirective);\r\n readonly calendarWeekdayTemplate = contentChild(ArdDateInputWeekdayTemplateDirective);\r\n readonly calendarFloatingMonthTemplate = contentChild(ArdDateInputFloatingMonthTemplateDirective);\r\n readonly calendarYearTemplate = contentChild(ArdDateInputYearTemplateDirective);\r\n readonly calendarMonthTemplate = contentChild(ArdDateInputMonthTemplateDirective);\r\n readonly calendarDayTemplate = contentChild(ArdDateInputDayTemplateDirective);\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n [prefixComponent]=\"prefixComponent\"\r\n [suffixComponent]=\"suffixComponent\"\r\n>\r\n <div\r\n class=\"ard-date-input\"\r\n #dropdownHost\r\n (click)=\"onGeneralClick($event)\"\r\n [class.ard-has-value]=\"!!value()\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-date-input__date-input-focused]=\"isDateInputFocused()\"\r\n >\r\n <div class=\"ard-date-input__value-container ard-input-container\">\r\n <div\r\n class=\"ard-date-input__placeholder ard-placeholder\"\r\n [class.ard-date-input__placeholder-hidden]=\"!shouldDisplayPlaceholder()\"\r\n >\r\n {{ placeholder() }}\r\n </div>\r\n <div\r\n class=\"ard-date-input__value\"\r\n [class.ard-date-input__value-hidden]=\"!shouldDisplayValue()\"\r\n >\r\n <ng-template\r\n #defaultValueTemplate\r\n let-date\r\n >\r\n {{ date }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"valueContext()\"\r\n />\r\n </div>\r\n @if (!readonly()) {\r\n <div\r\n class=\"ard-date-input__input-container\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n [class.ard-date-input__input-container-hidden]=\"!shouldDisplayDateInput()\"\r\n >\r\n <input\r\n #dateInput\r\n #focusableElement\r\n type=\"text\"\r\n class=\"ard-date-input__input\"\r\n [attr.id]=\"htmlId()\"\r\n [attr.name]=\"htmlName()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [value]=\"dateInputValue()\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"onDateInputInput($event)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onDateInputFocus($event)\"\r\n (blur)=\"onDateInputBlur($event)\"\r\n (keydown)=\"onDateInputEnter($event)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (!calendarHidden() && !readonly()) {\r\n <ard-icon-button\r\n color=\"none\"\r\n [disabled]=\"calendarDisabled()\"\r\n (click)=\"onCalendarButtonClick($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n >\r\n <ng-template\r\n #defaultCalendarIconTemplate\r\n let-date\r\n >\r\n <ard-icon filled>today</ard-icon>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"calendarIconTemplate()?.template || defaultCalendarIconTemplate\" />\r\n </ard-icon-button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-date-input__dropdown-panel\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"onOutsideClick($event)\"\r\n >\r\n <ard-calendar\r\n class=\"ard-date-input__calendar\"\r\n [(activeMonth)]=\"activeMonth\"\r\n [(activeYear)]=\"activeYear\"\r\n [(activeView)]=\"activeView\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [UTC]=\"_UTCAfterInit()\"\r\n [hideFloatingMonth]=\"hideFloatingMonth()\"\r\n autoFocus\r\n staticHeight\r\n [multipleYearPageChangeModifier]=\"multipleYearPageChangeModifier()\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled() || calendarDisabled()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [value]=\"value()\"\r\n [daysViewHeaderDateFormat]=\"calendarDaysViewHeaderDateFormat()\"\r\n [yearsViewHeaderDateFormat]=\"calendarYearsViewHeaderDateFormat()\"\r\n [monthsViewHeaderDateFormat]=\"calendarMonthsViewHeaderDateFormat()\"\r\n [weekdayDateFormat]=\"calendarWeekdayDateFormat()\"\r\n [weekdayTitleDateFormat]=\"calendarWeekdayTitleDateFormat()\"\r\n [floatingMonthDateFormat]=\"calendarFloatingMonthDateFormat()\"\r\n [floatingMonthTitleDateFormat]=\"calendarFloatingMonthTitleDateFormat()\"\r\n [yearDateFormat]=\"calendarYearDateFormat()\"\r\n [monthDateFormat]=\"calendarMonthDateFormat()\"\r\n [dayDateFormat]=\"calendarDayDateFormat()\"\r\n (valueChange)=\"onCalendarSelectedChange($event)\"\r\n (yearSelect)=\"yearSelect.emit($event)\"\r\n (monthSelect)=\"monthSelect.emit($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n >\r\n <ng-template\r\n _ard-tmp-repository\r\n [daysViewHeaderTmp]=\"calendarDaysViewHeaderTemplate()\"\r\n [yearsViewHeaderTmp]=\"calendarYearsViewHeaderTemplate()\"\r\n [monthsViewHeaderTmp]=\"calendarMonthsViewHeaderTemplate()\"\r\n [weekdayTmp]=\"calendarWeekdayTemplate()\"\r\n [floatingMonthTmp]=\"calendarFloatingMonthTemplate()\"\r\n [yearTmp]=\"calendarYearTemplate()\"\r\n [monthTmp]=\"calendarMonthTemplate()\"\r\n [dayTmp]=\"calendarDayTemplate()\"\r\n />\r\n </ard-calendar>\r\n @if (useAcceptButtonToSelect()) {\r\n <div class=\"ard-date-input__accept-buttons-container\">\r\n <ng-template\r\n #defaultAcceptButtonsTemplate\r\n let-accept=\"accept\"\r\n let-cancel=\"cancel\"\r\n let-disabled=\"disabled\"\r\n >\r\n <ard-button\r\n appearance=\"outlined\"\r\n color=\"none\"\r\n [disabled]=\"disabled\"\r\n (click)=\"cancel()\"\r\n >\r\n {{ cancelButtonText() }}\r\n </ard-button>\r\n <ard-button\r\n appearance=\"raised\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled\"\r\n (click)=\"accept()\"\r\n >\r\n {{ acceptButtonText() }}\r\n </ard-button>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"acceptButtonsTemplate()?.template || defaultAcceptButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"acceptButtonsContext()\"\r\n />\r\n </div>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n","import { CommonModule, DATE_PIPE_DEFAULT_OPTIONS } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumClickOutsideModule } from '@ardium-ui/devkit';\r\nimport { ArdiumButtonModule } from '../../buttons/button';\r\nimport { ArdiumIconButtonModule } from '../../buttons/icon-button';\r\nimport { ArdiumCalendarModule } from '../../calendar';\r\nimport { _CalendarTemplateRepositoryDirective } from '../../calendar/calendar.internal-directives';\r\nimport { ArdiumDropdownPanelModule } from '../../dropdown-panel/dropdown-panel.module';\r\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\r\nimport { ArdiumIconModule } from '../../icon';\r\nimport { ArdiumDateInputComponent } from './date-input.component';\r\nimport {\r\n ArdDateInputAcceptButtonsTemplateDirective,\r\n ArdDateInputCalendarIconTemplateDirective,\r\n ArdDateInputDaysViewHeaderTemplateDirective,\r\n ArdDateInputDayTemplateDirective,\r\n ArdDateInputFloatingMonthTemplateDirective,\r\n ArdDateInputMonthsViewHeaderTemplateDirective,\r\n ArdDateInputMonthTemplateDirective,\r\n ArdDateInputPrefixTemplateDirective,\r\n ArdDateInputSuffixTemplateDirective,\r\n ArdDateInputValueTemplateDirective,\r\n ArdDateInputWeekdayTemplateDirective,\r\n ArdDateInputYearsViewHeaderTemplateDirective,\r\n ArdDateInputYearTemplateDirective,\r\n} from './date-input.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumDateInputComponent,\r\n //template directives\r\n ArdDateInputPrefixTemplateDirective,\r\n ArdDateInputSuffixTemplateDirective,\r\n ArdDateInputValueTemplateDirective,\r\n ArdDateInputCalendarIconTemplateDirective,\r\n ArdDateInputAcceptButtonsTemplateDirective,\r\n ArdDateInputDaysViewHeaderTemplateDirective,\r\n ArdDateInputDayTemplateDirective,\r\n ArdDateInputFloatingMonthTemplateDirective,\r\n ArdDateInputMonthsViewHeaderTemplateDirective,\r\n ArdDateInputMonthTemplateDirective,\r\n ArdDateInputWeekdayTemplateDirective,\r\n ArdDateInputYearsViewHeaderTemplateDirective,\r\n ArdDateInputYearTemplateDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ArdiumFormFieldFrameModule,\r\n ArdiumDropdownPanelModule,\r\n ArdiumClickOutsideModule,\r\n ArdiumCalendarModule,\r\n ArdiumIconButtonModule,\r\n ArdiumButtonModule,\r\n ArdiumIconModule,\r\n _CalendarTemplateRepositoryDirective,\r\n ],\r\n exports: [\r\n ArdiumDateInputComponent,\r\n //tempalate directives\r\n ArdDateInputPrefixTemplateDirective,\r\n ArdDateInputSuffixTemplateDirective,\r\n ArdDateInputValueTemplateDirective,\r\n ArdDateInputCalendarIconTemplateDirective,\r\n ArdDateInputAcceptButtonsTemplateDirective,\r\n ArdDateInputDaysViewHeaderTemplateDirective,\r\n ArdDateInputDayTemplateDirective,\r\n ArdDateInputFloatingMonthTemplateDirective,\r\n ArdDateInputMonthsViewHeaderTemplateDirective,\r\n ArdDateInputMonthTemplateDirective,\r\n ArdDateInputWeekdayTemplateDirective,\r\n ArdDateInputYearsViewHeaderTemplateDirective,\r\n ArdDateInputYearTemplateDirective,\r\n ],\r\n providers: [\r\n { provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: { timezone: '+0000' } },\r\n ],\r\n})\r\nexport class ArdiumDateInputModule {}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { CalendarDayContext, CalendarDaysViewHeaderContext, CalendarFloatingMonthContext, CalendarMonthContext, CalendarMonthsViewHeaderContext, CalendarWeekdayContext, CalendarYearContext, CalendarYearsViewHeaderContext } from '../../calendar';\r\nimport { FormFieldFrameTemplateContext } from '../../form-field-frame';\r\nimport { ArdDateInputAcceptButtonsContext, ArdDateInputValueContext } from './date-input.types';\r\n\r\n//public (exported)\r\n\r\n@Directive({ standalone: false, selector: 'ard-date-range-input > ng-template[ard-prefix-tmp]' })\r\nexport class ArdDateRangeInputPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-date-range-input > ng-template[ard-suffix-tmp]' })\r\nexport class ArdDateRangeInputSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-date-range-input > ng-template[ard-value-tmp]' })\r\nexport class ArdDateRangeInputValueTemplateDirective {\r\n constructor(public template: TemplateRef<ArdDateInputValueContext<Date>>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-date-range-input > ng-template[ard-date-input-icon-tmp]' })\r\nexport class ArdDateRangeInputCalendarIconTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-date-range-input > ng-template[ard-accept-buttons-tmp]' })\r\nexport class ArdDateRangeInputAcceptButtonsTemplateDirective {\r\n constructor(public template: TemplateRef<ArdDateInputAcceptButtonsContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-date-range-input > ng-template[ard-header-tmp]',\r\n})\r\nexport class ArdDateRangeInputDaysViewHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarDaysViewHeaderContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-date-range-input > ng-template[ard-year-picker-header-tmp]',\r\n})\r\nexport class ArdDateRangeInputYearsViewHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarYearsViewHeaderContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-date-range-input > ng-template[ard-month-picker-header-tmp]',\r\n})\r\nexport class ArdDateRangeInputMonthsViewHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarMonthsViewHeaderContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-date-range-input > ng-template[ard-weekday-tmp]',\r\n})\r\nexport class ArdDateRangeInputWeekdayTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarWeekdayContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-date-range-input > ng-template[ard-floating-month-tmp]',\r\n})\r\nexport class ArdDateRangeInputFloatingMonthTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarFloatingMonthContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-date-range-input > ng-template[ard-year-tmp]',\r\n})\r\nexport class ArdDateRangeInputYearTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarYearContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-date-range-input > ng-template[ard-month-tmp]',\r\n})\r\nexport class ArdDateRangeInputMonthTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarMonthContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-date-range-input > ng-template[ard-day-tmp]',\r\n})\r\nexport class ArdDateRangeInputDayTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarDayContext>) {}\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n Inject,\r\n input,\r\n output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { isDate, isDefined, isNull, isObject } from 'simple-bool';\r\nimport { DateRange, isDateRange, PartialDateRange } from '../../calendar';\r\nimport { ARD_FORM_FIELD_CONTROL } from '../../form-field/form-field-child.token';\r\nimport { _AbstractDateInput } from './abstract-date-input';\r\nimport { ARD_DATE_INPUT_DEFAULTS, ArdDateInputDefaults } from './date-input.defaults';\r\nimport { ArdDateInputSerializeFn } from './date-input.types';\r\nimport {\r\n ArdDateRangeInputDaysViewHeaderTemplateDirective,\r\n ArdDateRangeInputDayTemplateDirective,\r\n ArdDateRangeInputFloatingMonthTemplateDirective,\r\n ArdDateRangeInputMonthsViewHeaderTemplateDirective,\r\n ArdDateRangeInputMonthTemplateDirective,\r\n ArdDateRangeInputPrefixTemplateDirective,\r\n ArdDateRangeInputSuffixTemplateDirective,\r\n ArdDateRangeInputWeekdayTemplateDirective,\r\n ArdDateRangeInputYearsViewHeaderTemplateDirective,\r\n ArdDateRangeInputYearTemplateDirective,\r\n} from './date-range-input.directives';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-date-range-input',\r\n templateUrl: './date-range-input.component.html',\r\n styleUrls: ['./date-range-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumDateRangeInputComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ARD_FORM_FIELD_CONTROL,\r\n useExisting: ArdiumDateRangeInputComponent,\r\n },\r\n ],\r\n})\r\nexport class ArdiumDateRangeInputComponent extends _AbstractDateInput<DateRange, PartialDateRange> {\r\n readonly componentId = '009';\r\n readonly componentName = 'date-range-input';\r\n readonly isRangeSelector = true;\r\n\r\n protected override readonly _DEFAULTS!: ArdDateInputDefaults;\r\n constructor(@Inject(ARD_DATE_INPUT_DEFAULTS) defaults: ArdDateInputDefaults) {\r\n super(defaults);\r\n }\r\n\r\n override onGeneralClick(event: MouseEvent): void {\r\n super.onGeneralClick(event);\r\n this.toggle();\r\n }\r\n\r\n readonly partialValueChange = output<PartialDateRange>();\r\n\r\n readonly serializeFn = input<ArdDateInputSerializeFn<PartialDateRange>>(this._DEFAULTS.rangeSerializeFn);\r\n\r\n override writeValue(v: any): void {\r\n if (isObject(v) && 'from' in v && 'to' in v && isDate(v['from']) && isDate(v['to'])) {\r\n this.value.set({ from: v['from'], to: v['to'] });\r\n } else if (!isDefined(v)) {\r\n this.value.set(null);\r\n } else {\r\n console.error(\r\n new Error(\r\n `ARD-NF0093: <ard-date-range-input> [writeValue] expected a { from: Date, to: Date } object or null, got \"${v}\".`\r\n )\r\n );\r\n }\r\n }\r\n protected _isFullValue(value: PartialDateRange | null): value is DateRange {\r\n return !!value?.from && !!value?.to;\r\n }\r\n protected getValueForEmit(): DateRange | null {\r\n const value = this.value();\r\n if (this._isFullValue(value)) {\r\n return new DateRange(value.from, value.to);\r\n }\r\n return null;\r\n }\r\n\r\n readonly shouldDisplayPlaceholder = computed(() => {\r\n return isNull(this.value());\r\n });\r\n readonly shouldDisplayValue = computed(() => {\r\n return isDateRange(this.value());\r\n });\r\n readonly shouldDisplayDateInput = computed(() => false);\r\n\r\n readonly prefixTemplate = contentChild(ArdDateRangeInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdDateRangeInputSuffixTemplateDirective);\r\n\r\n readonly prefixComponent = this._DEFAULTS.PrefixComponent;\r\n readonly suffixComponent = this._DEFAULTS.SuffixComponent;\r\n\r\n readonly calendarDaysViewHeaderTemplate = contentChild(ArdDateRangeInputDaysViewHeaderTemplateDirective);\r\n readonly calendarYearsViewHeaderTemplate = contentChild(ArdDateRangeInputYearsViewHeaderTemplateDirective);\r\n readonly calendarMonthsViewHeaderTemplate = contentChild(ArdDateRangeInputMonthsViewHeaderTemplateDirective);\r\n readonly calendarWeekdayTemplate = contentChild(ArdDateRangeInputWeekdayTemplateDirective);\r\n readonly calendarFloatingMonthTemplate = contentChild(ArdDateRangeInputFloatingMonthTemplateDirective);\r\n readonly calendarYearTemplate = contentChild(ArdDateRangeInputYearTemplateDirective);\r\n readonly calendarMonthTemplate = contentChild(ArdDateRangeInputMonthTemplateDirective);\r\n readonly calendarDayTemplate = contentChild(ArdDateRangeInputDayTemplateDirective);\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n [prefixComponent]=\"prefixComponent\"\r\n [suffixComponent]=\"suffixComponent\"\r\n>\r\n <div\r\n class=\"ard-date-input ard-date-range-input\"\r\n #dropdownHost\r\n (click)=\"onGeneralClick($event)\"\r\n [class.ard-has-value]=\"!!value()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-date-input__value-container ard-input-container\">\r\n <div\r\n class=\"ard-date-input__placeholder ard-placeholder\"\r\n [class.ard-date-input__placeholder-hidden]=\"!shouldDisplayPlaceholder()\"\r\n >\r\n {{ placeholder() }}\r\n </div>\r\n <div\r\n class=\"ard-date-input__value\"\r\n [class.ard-date-input__value-hidden]=\"!shouldDisplayValue()\"\r\n >\r\n <ng-template\r\n #defaultValueTemplate\r\n let-date\r\n >\r\n {{ date }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"valueContext()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (!calendarHidden() && !readonly()) {\r\n <ard-icon-button\r\n color=\"none\"\r\n [disabled]=\"calendarDisabled()\"\r\n (click)=\"onCalendarButtonClick($event)\"\r\n >\r\n <ng-template\r\n #defaultCalendarIconTemplate\r\n let-date\r\n >\r\n <ard-icon filled>today</ard-icon>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"calendarIconTemplate()?.template || defaultCalendarIconTemplate\" />\r\n </ard-icon-button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-date-input__dropdown-panel\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"onOutsideClick($event)\"\r\n >\r\n <ard-range-calendar\r\n class=\"ard-date-input__calendar\"\r\n [(activeMonth)]=\"activeMonth\"\r\n [(activeYear)]=\"activeYear\"\r\n [(activeView)]=\"activeView\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [UTC]=\"_UTCAfterInit()\"\r\n [hideFloatingMonth]=\"hideFloatingMonth()\"\r\n autoFocus\r\n staticHeight\r\n [multipleYearPageChangeModifier]=\"multipleYearPageChangeModifier()\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled() || calendarDisabled()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [value]=\"value()\"\r\n [daysViewHeaderDateFormat]=\"calendarDaysViewHeaderDateFormat()\"\r\n [yearsViewHeaderDateFormat]=\"calendarYearsViewHeaderDateFormat()\"\r\n [monthsViewHeaderDateFormat]=\"calendarMonthsViewHeaderDateFormat()\"\r\n [weekdayDateFormat]=\"calendarWeekdayDateFormat()\"\r\n [weekdayTitleDateFormat]=\"calendarWeekdayTitleDateFormat()\"\r\n [floatingMonthDateFormat]=\"calendarFloatingMonthDateFormat()\"\r\n [floatingMonthTitleDateFormat]=\"calendarFloatingMonthTitleDateFormat()\"\r\n [yearDateFormat]=\"calendarYearDateFormat()\"\r\n [monthDateFormat]=\"calendarMonthDateFormat()\"\r\n [dayDateFormat]=\"calendarDayDateFormat()\"\r\n (valueChange)=\"onCalendarSelectedChange($event)\"\r\n (yearSelect)=\"yearSelect.emit($event)\"\r\n (monthSelect)=\"monthSelect.emit($event)\"\r\n >\r\n <ng-template\r\n _ard-tmp-repository\r\n [daysViewHeaderTmp]=\"calendarDaysViewHeaderTemplate()\"\r\n [yearsViewHeaderTmp]=\"calendarYearsViewHeaderTemplate()\"\r\n [monthsViewHeaderTmp]=\"calendarMonthsViewHeaderTemplate()\"\r\n [weekdayTmp]=\"calendarWeekdayTemplate()\"\r\n [floatingMonthTmp]=\"calendarFloatingMonthTemplate()\"\r\n [yearTmp]=\"calendarYearTemplate()\"\r\n [monthTmp]=\"calendarMonthTemplate()\"\r\n [dayTmp]=\"calendarDayTemplate()\"\r\n />\r\n </ard-range-calendar>\r\n @if (useAcceptButtonToSelect()) {\r\n <div class=\"ard-date-input__accept-buttons-container\">\r\n <ng-template\r\n #defaultAcceptButtonsTemplate\r\n let-accept=\"accept\"\r\n let-cancel=\"cancel\"\r\n let-disabled=\"disabled\"\r\n >\r\n <ard-button\r\n appearance=\"outlined\"\r\n color=\"none\"\r\n [disabled]=\"disabled\"\r\n (click)=\"cancel()\"\r\n >\r\n {{ cancelButtonText() }}\r\n </ard-button>\r\n <ard-button\r\n appearance=\"raised\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled\"\r\n (click)=\"accept()\"\r\n >\r\n {{ acceptButtonText() }}\r\n </ard-button>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"acceptButtonsTemplate()?.template || defaultAcceptButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"acceptButtonsContext()\"\r\n />\r\n </div>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n","import { CommonModule, DATE_PIPE_DEFAULT_OPTIONS } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumClickOutsideModule } from '@ardium-ui/devkit';\r\nimport { ArdiumButtonModule } from '../../buttons/button';\r\nimport { ArdiumIconButtonModule } from '../../buttons/icon-button';\r\nimport { ArdiumRangeCalendarModule } from '../../calendar';\r\nimport { _CalendarTemplateRepositoryDirective } from '../../calendar/calendar.internal-directives';\r\nimport { ArdiumDropdownPanelModule } from '../../dropdown-panel/dropdown-panel.module';\r\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\r\nimport { ArdiumIconModule } from '../../icon';\r\nimport { ArdiumDateRangeInputComponent } from './date-range-input.component';\r\nimport {\r\n ArdDateRangeInputAcceptButtonsTemplateDirective,\r\n ArdDateRangeInputCalendarIconTemplateDirective,\r\n ArdDateRangeInputDaysViewHeaderTemplateDirective,\r\n ArdDateRangeInputDayTemplateDirective,\r\n ArdDateRangeInputFloatingMonthTemplateDirective,\r\n ArdDateRangeInputMonthsViewHeaderTemplateDirective,\r\n ArdDateRangeInputMonthTemplateDirective,\r\n ArdDateRangeInputPrefixTemplateDirective,\r\n ArdDateRangeInputSuffixTemplateDirective,\r\n ArdDateRangeInputValueTemplateDirective,\r\n ArdDateRangeInputWeekdayTemplateDirective,\r\n ArdDateRangeInputYearsViewHeaderTemplateDirective,\r\n ArdDateRangeInputYearTemplateDirective,\r\n} from './date-range-input.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumDateRangeInputComponent,\r\n //template directives\r\n ArdDateRangeInputPrefixTemplateDirective,\r\n ArdDateRangeInputSuffixTemplateDirective,\r\n ArdDateRangeInputValueTemplateDirective,\r\n ArdDateRangeInputCalendarIconTemplateDirective,\r\n ArdDateRangeInputAcceptButtonsTemplateDirective,\r\n ArdDateRangeInputDaysViewHeaderTemplateDirective,\r\n ArdDateRangeInputDayTemplateDirective,\r\n ArdDateRangeInputFloatingMonthTemplateDirective,\r\n ArdDateRangeInputMonthsViewHeaderTemplateDirective,\r\n ArdDateRangeInputMonthTemplateDirective,\r\n ArdDateRangeInputWeekdayTemplateDirective,\r\n ArdDateRangeInputYearsViewHeaderTemplateDirective,\r\n ArdDateRangeInputYearTemplateDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ArdiumFormFieldFrameModule,\r\n ArdiumDropdownPanelModule,\r\n ArdiumClickOutsideModule,\r\n ArdiumRangeCalendarModule,\r\n ArdiumIconButtonModule,\r\n ArdiumButtonModule,\r\n ArdiumIconModule,\r\n _CalendarTemplateRepositoryDirective,\r\n ],\r\n exports: [\r\n ArdiumDateRangeInputComponent,\r\n //tempalate directives\r\n ArdDateRangeInputPrefixTemplateDirective,\r\n ArdDateRangeInputSuffixTemplateDirective,\r\n ArdDateRangeInputValueTemplateDirective,\r\n ArdDateRangeInputCalendarIconTemplateDirective,\r\n ArdDateRangeInputAcceptButtonsTemplateDirective,\r\n ArdDateRangeInputDaysViewHeaderTemplateDirective,\r\n ArdDateRangeInputDayTemplateDirective,\r\n ArdDateRangeInputFloatingMonthTemplateDirective,\r\n ArdDateRangeInputMonthsViewHeaderTemplateDirective,\r\n ArdDateRangeInputMonthTemplateDirective,\r\n ArdDateRangeInputWeekdayTemplateDirective,\r\n ArdDateRangeInputYearsViewHeaderTemplateDirective,\r\n ArdDateRangeInputYearTemplateDirective,\r\n ],\r\n providers: [\r\n { provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: { timezone: '+0000' } },\r\n ],\r\n})\r\nexport class ArdiumDateRangeInputModule {}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { CalendarDayContext, CalendarDaysViewHeaderContext, CalendarFloatingMonthContext, CalendarMonthContext, CalendarMonthsViewHeaderContext, CalendarWeekdayContext, CalendarYearContext, CalendarYearsViewHeaderContext } from '../../calendar';\r\nimport { FormFieldFrameTemplateContext } from '../../form-field-frame';\r\nimport { ArdDateInputAcceptButtonsContext, ArdDateInputValueContext } from './date-input.types';\r\n\r\n//public (exported)\r\n\r\n@Directive({ standalone: false, selector: 'ard-multipage-date-range-input > ng-template[ard-prefix-tmp]' })\r\nexport class ArdMultipageDateRangeInputPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-multipage-date-range-input > ng-template[ard-suffix-tmp]' })\r\nexport class ArdMultipageDateRangeInputSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-multipage-date-range-input > ng-template[ard-value-tmp]' })\r\nexport class ArdMultipageDateRangeInputValueTemplateDirective {\r\n constructor(public template: TemplateRef<ArdDateInputValueContext<Date>>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-multipage-date-range-input > ng-template[ard-date-input-icon-tmp]' })\r\nexport class ArdMultipageDateRangeInputCalendarIconTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-multipage-date-range-input > ng-template[ard-accept-buttons-tmp]' })\r\nexport class ArdMultipageDateRangeInputAcceptButtonsTemplateDirective {\r\n constructor(public template: TemplateRef<ArdDateInputAcceptButtonsContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-multipage-date-range-input > ng-template[ard-header-tmp]',\r\n})\r\nexport class ArdMultipageDateRangeInputDaysViewHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarDaysViewHeaderContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-multipage-date-range-input > ng-template[ard-year-picker-header-tmp]',\r\n})\r\nexport class ArdMultipageDateRangeInputYearsViewHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarYearsViewHeaderContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-multipage-date-range-input > ng-template[ard-month-picker-header-tmp]',\r\n})\r\nexport class ArdMultipageDateRangeInputMonthsViewHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarMonthsViewHeaderContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-multipage-date-range-input > ng-template[ard-weekday-tmp]',\r\n})\r\nexport class ArdMultipageDateRangeInputWeekdayTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarWeekdayContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-multipage-date-range-input > ng-template[ard-floating-month-tmp]',\r\n})\r\nexport class ArdMultipageDateRangeInputFloatingMonthTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarFloatingMonthContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-multipage-date-range-input > ng-template[ard-year-tmp]',\r\n})\r\nexport class ArdMultipageDateRangeInputYearTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarYearContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-multipage-date-range-input > ng-template[ard-month-tmp]',\r\n})\r\nexport class ArdMultipageDateRangeInputMonthTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarMonthContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-multipage-date-range-input > ng-template[ard-day-tmp]',\r\n})\r\nexport class ArdMultipageDateRangeInputDayTemplateDirective {\r\n constructor(public template: TemplateRef<CalendarDayContext>) {}\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n Inject,\r\n input,\r\n signal,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceNumberProperty, NumberLike } from '@ardium-ui/devkit';\r\nimport { isDate, isDefined, isNull, isObject } from 'simple-bool';\r\nimport { ArdMultiCalendarLocation, DateRange, isDateRange, PartialDateRange } from '../../calendar';\r\nimport { ARD_FORM_FIELD_CONTROL } from '../../form-field/form-field-child.token';\r\nimport { _AbstractDateInput } from './abstract-date-input';\r\nimport { ARD_DATE_INPUT_DEFAULTS, ArdDateInputDefaults } from './date-input.defaults';\r\nimport { ArdDateInputSerializeFn } from './date-input.types';\r\nimport {\r\n ArdMultipageDateRangeInputDaysViewHeaderTemplateDirective,\r\n ArdMultipageDateRangeInputDayTemplateDirective,\r\n ArdMultipageDateRangeInputFloatingMonthTemplateDirective,\r\n ArdMultipageDateRangeInputMonthsViewHeaderTemplateDirective,\r\n ArdMultipageDateRangeInputMonthTemplateDirective,\r\n ArdMultipageDateRangeInputPrefixTemplateDirective,\r\n ArdMultipageDateRangeInputSuffixTemplateDirective,\r\n ArdMultipageDateRangeInputWeekdayTemplateDirective,\r\n ArdMultipageDateRangeInputYearsViewHeaderTemplateDirective,\r\n ArdMultipageDateRangeInputYearTemplateDirective,\r\n} from './multipage-date-range-input.directives';\r\n\r\ntype CalendarDataItem = { location: ArdMultiCalendarLocation; activeDate: Date; highlightedDay: number | null };\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-multipage-date-range-input',\r\n templateUrl: './multipage-date-range-input.component.html',\r\n styleUrls: ['./multipage-date-range-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumMultipageDateRangeInputComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ARD_FORM_FIELD_CONTROL,\r\n useExisting: ArdiumMultipageDateRangeInputComponent,\r\n },\r\n ],\r\n})\r\nexport class ArdiumMultipageDateRangeInputComponent extends _AbstractDateInput<DateRange, PartialDateRange> {\r\n readonly componentId = '012';\r\n readonly componentName = 'multipage-date-range-input';\r\n readonly isRangeSelector = true;\r\n\r\n protected override readonly _DEFAULTS!: ArdDateInputDefaults;\r\n constructor(@Inject(ARD_DATE_INPUT_DEFAULTS) defaults: ArdDateInputDefaults) {\r\n super(defaults);\r\n }\r\n\r\n readonly serializeFn = input<ArdDateInputSerializeFn<PartialDateRange>>(this._DEFAULTS.rangeSerializeFn);\r\n\r\n readonly highlightedDate = signal<Date | null>(null);\r\n\r\n readonly numberOfCalendars = input<number, NumberLike>(this._DEFAULTS.numberOfCalendars, {\r\n transform: v => {\r\n const value = coerceNumberProperty(v, this._DEFAULTS.numberOfCalendars);\r\n if (!Number.isInteger(value) || value < 1) {\r\n console.error(\r\n new Error(`ARD-NF0082: [numberOfCalendars] must be a positive integer, got \"${value}\". Using default value instead.`)\r\n );\r\n return this._DEFAULTS.numberOfCalendars;\r\n }\r\n return value;\r\n },\r\n });\r\n\r\n readonly calendarDataArray = computed<CalendarDataItem[]>(() =>\r\n new Array(this.numberOfCalendars()).fill(undefined).map((_, i, arr) => {\r\n const activeDate = new Date(this.activeYear(), this.activeMonth() + i, 1);\r\n const highlighted = this.highlightedDate();\r\n let highlightedDay: number | null = null;\r\n if (isNull(highlighted)) {\r\n highlightedDay = null;\r\n } else {\r\n if (\r\n activeDate.getFullYear() < highlighted.getFullYear() ||\r\n (activeDate.getFullYear() === highlighted.getFullYear() && activeDate.getMonth() < highlighted.getMonth())\r\n ) {\r\n highlightedDay = 32;\r\n } else if (\r\n activeDate.getFullYear() > highlighted.getFullYear() ||\r\n (activeDate.getFullYear() === highlighted.getFullYear() && activeDate.getMonth() > highlighted.getMonth())\r\n ) {\r\n highlightedDay = 0;\r\n } else {\r\n highlightedDay = highlighted.getDate();\r\n }\r\n }\r\n return {\r\n location:\r\n arr.length === 1\r\n ? ArdMultiCalendarLocation.Only\r\n : i === 0\r\n ? ArdMultiCalendarLocation.Left\r\n : i === arr.length - 1\r\n ? ArdMultiCalendarLocation.Right\r\n : ArdMultiCalendarLocation.Inner,\r\n activeDate,\r\n highlightedDay,\r\n };\r\n })\r\n );\r\n\r\n override onGeneralClick(event: MouseEvent): void {\r\n super.onGeneralClick(event);\r\n this.toggle();\r\n }\r\n\r\n onActivePageChange(newPage: { year: number; month: number }, index: number): void {\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n const newDate = new Date(newPage.year, newPage.month, 1);\r\n newDate.setMonth(newDate.getMonth() - index);\r\n this.activeYear.set(newDate.getFullYear());\r\n this.activeMonth.set(newDate.getMonth());\r\n }\r\n onHighlightDate(date: Date | null) {\r\n if (this.disabled() || this.readonly()) return;\r\n this.highlightedDate.set(date);\r\n }\r\n\r\n override writeValue(v: any): void {\r\n if (isObject(v) && 'from' in v && 'to' in v && isDate(v['from']) && isDate(v['to'])) {\r\n this.value.set({ from: v['from'], to: v['to'] });\r\n } else if (!isDefined(v)) {\r\n this.value.set(null);\r\n } else {\r\n console.error(\r\n new Error(\r\n `ARD-NF0123: <ard-multipage-date-range-input> [writeValue] expected a { from: Date, to: Date } object or null, got \"${v}\".`\r\n )\r\n );\r\n }\r\n }\r\n protected _isFullValue(value: PartialDateRange | null): value is DateRange {\r\n return !!value?.from && !!value?.to;\r\n }\r\n protected getValueForEmit(): DateRange | null {\r\n const value = this.value();\r\n if (this._isFullValue(value)) {\r\n return new DateRange(value.from, value.to);\r\n }\r\n return null;\r\n }\r\n\r\n readonly shouldDisplayPlaceholder = computed(() => {\r\n return isNull(this.value());\r\n });\r\n readonly shouldDisplayValue = computed(() => {\r\n return isDateRange(this.value());\r\n });\r\n readonly shouldDisplayDateInput = computed(() => false);\r\n\r\n readonly prefixTemplate = contentChild(ArdMultipageDateRangeInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdMultipageDateRangeInputSuffixTemplateDirective);\r\n\r\n readonly prefixComponent = this._DEFAULTS.PrefixComponent;\r\n readonly suffixComponent = this._DEFAULTS.SuffixComponent;\r\n\r\n readonly calendarDaysViewHeaderTemplate = contentChild(ArdMultipageDateRangeInputDaysViewHeaderTemplateDirective);\r\n readonly calendarYearsViewHeaderTemplate = contentChild(ArdMultipageDateRangeInputYearsViewHeaderTemplateDirective);\r\n readonly calendarMonthsViewHeaderTemplate = contentChild(ArdMultipageDateRangeInputMonthsViewHeaderTemplateDirective);\r\n readonly calendarWeekdayTemplate = contentChild(ArdMultipageDateRangeInputWeekdayTemplateDirective);\r\n readonly calendarFloatingMonthTemplate = contentChild(ArdMultipageDateRangeInputFloatingMonthTemplateDirective);\r\n readonly calendarYearTemplate = contentChild(ArdMultipageDateRangeInputYearTemplateDirective);\r\n readonly calendarMonthTemplate = contentChild(ArdMultipageDateRangeInputMonthTemplateDirective);\r\n readonly calendarDayTemplate = contentChild(ArdMultipageDateRangeInputDayTemplateDirective);\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n [prefixComponent]=\"prefixComponent\"\r\n [suffixComponent]=\"suffixComponent\"\r\n>\r\n <div\r\n class=\"ard-date-input ard-multipage-date-range-input\"\r\n #dropdownHost\r\n (click)=\"onGeneralClick($event)\"\r\n [class.ard-has-value]=\"!!value()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-date-input__value-container ard-input-container\">\r\n <div\r\n class=\"ard-date-input__placeholder ard-placeholder\"\r\n [class.ard-date-input__placeholder-hidden]=\"!shouldDisplayPlaceholder()\"\r\n >\r\n {{ placeholder() }}\r\n </div>\r\n <div\r\n class=\"ard-date-input__value\"\r\n [class.ard-date-input__value-hidden]=\"!shouldDisplayValue()\"\r\n >\r\n <ng-template\r\n #defaultValueTemplate\r\n let-date\r\n >\r\n {{ date }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"valueContext()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (!calendarHidden() && !readonly()) {\r\n <ard-icon-button\r\n color=\"none\"\r\n [disabled]=\"calendarDisabled()\"\r\n (click)=\"onCalendarButtonClick($event)\"\r\n >\r\n <ng-template\r\n #defaultCalendarIconTemplate\r\n let-date\r\n >\r\n <ard-icon filled>today</ard-icon>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"calendarIconTemplate()?.template || defaultCalendarIconTemplate\" />\r\n </ard-icon-button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-date-input__dropdown-panel\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"onOutsideClick($event)\"\r\n >\r\n <div class=\"ard-date-input__multipage-wrapper\">\r\n @for (calendarData of calendarDataArray(); track $index) {\r\n <ard-range-calendar\r\n class=\"ard-date-input__calendar\"\r\n [activeMonth]=\"calendarData.activeDate.getMonth()\"\r\n [activeYear]=\"calendarData.activeDate.getFullYear()\"\r\n (activePageChange)=\"onActivePageChange($event, $index)\"\r\n (highlightDay)=\"onHighlightDate($event)\"\r\n [highlightedDay]=\"calendarData.highlightedDay\"\r\n [(activeView)]=\"activeView\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [UTC]=\"_UTCAfterInit()\"\r\n [autoFocus]=\"$index === 0\"\r\n hideFloatingMonth\r\n staticHeight\r\n [multipleYearPageChangeModifier]=\"multipleYearPageChangeModifier()\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled() || calendarDisabled()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [value]=\"value()\"\r\n [multiCalendarLocation]=\"calendarData.location\"\r\n [daysViewHeaderDateFormat]=\"calendarDaysViewHeaderDateFormat()\"\r\n [yearsViewHeaderDateFormat]=\"calendarYearsViewHeaderDateFormat()\"\r\n [monthsViewHeaderDateFormat]=\"calendarMonthsViewHeaderDateFormat()\"\r\n [weekdayDateFormat]=\"calendarWeekdayDateFormat()\"\r\n [weekdayTitleDateFormat]=\"calendarWeekdayTitleDateFormat()\"\r\n [yearDateFormat]=\"calendarYearDateFormat()\"\r\n [monthDateFormat]=\"calendarMonthDateFormat()\"\r\n [dayDateFormat]=\"calendarDayDateFormat()\"\r\n (valueChange)=\"onCalendarSelectedChange($event)\"\r\n (yearSelect)=\"yearSelect.emit($event)\"\r\n (monthSelect)=\"monthSelect.emit($event)\"\r\n >\r\n <ng-template\r\n _ard-tmp-repository\r\n [daysViewHeaderTmp]=\"calendarDaysViewHeaderTemplate() ?? { template: defaultDaysViewHeaderTemplate }\"\r\n [yearsViewHeaderTmp]=\"calendarYearsViewHeaderTemplate()\"\r\n [monthsViewHeaderTmp]=\"calendarMonthsViewHeaderTemplate()\"\r\n [weekdayTmp]=\"calendarWeekdayTemplate()\"\r\n [floatingMonthTmp]=\"calendarFloatingMonthTemplate()\"\r\n [yearTmp]=\"calendarYearTemplate()\"\r\n [monthTmp]=\"calendarMonthTemplate()\"\r\n [dayTmp]=\"calendarDayTemplate()\"\r\n />\r\n </ard-range-calendar>\r\n }\r\n </div>\r\n @if (useAcceptButtonToSelect()) {\r\n <div class=\"ard-date-input__accept-buttons-container\">\r\n <ng-template\r\n #defaultAcceptButtonsTemplate\r\n let-accept=\"accept\"\r\n let-cancel=\"cancel\"\r\n let-disabled=\"disabled\"\r\n >\r\n <ard-button\r\n appearance=\"outlined\"\r\n color=\"none\"\r\n [disabled]=\"disabled\"\r\n (click)=\"cancel()\"\r\n >\r\n {{ cancelButtonText() }}\r\n </ard-button>\r\n <ard-button\r\n appearance=\"raised\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled\"\r\n (click)=\"accept()\"\r\n >\r\n {{ acceptButtonText() }}\r\n </ard-button>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"acceptButtonsTemplate()?.template || defaultAcceptButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"acceptButtonsContext()\"\r\n />\r\n </div>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultDaysViewHeaderTemplate\r\n let-currDate\r\n let-nextMonth=\"nextMonth\"\r\n let-prevMonth=\"prevMonth\"\r\n let-canGoToNextMonth=\"canGoToNextPage\"\r\n let-canGoToPreviousMonth=\"canGoToPreviousPage\"\r\n let-hideNextPageButton=\"hideNextPageButton\"\r\n let-hidePreviousPageButton=\"hidePreviousPageButton\"\r\n>\r\n <div class=\"ard-calendar__calendar-header\">\r\n <div>\r\n @if (!hidePreviousPageButton) {\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"prevMonth()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToPreviousMonth\"\r\n >\r\n <ard-icon>chevron_left</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n <span class=\"ard-calendar__header-button\">\r\n {{ currDate | date : calendarDaysViewHeaderDateFormat() | uppercase }}\r\n </span>\r\n <div>\r\n @if (!hideNextPageButton) {\r\n <ard-icon-button\r\n size=\"small\"\r\n appearance=\"transparent\"\r\n color=\"none\"\r\n (click)=\"nextMonth()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [disabled]=\"!canGoToNextMonth\"\r\n >\r\n <ard-icon>chevron_right</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { CommonModule, DATE_PIPE_DEFAULT_OPTIONS } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumClickOutsideModule } from '@ardium-ui/devkit';\r\nimport { ArdiumButtonModule } from '../../buttons/button';\r\nimport { ArdiumIconButtonModule } from '../../buttons/icon-button';\r\nimport { ArdiumRangeCalendarModule } from '../../calendar';\r\nimport { _CalendarTemplateRepositoryDirective } from '../../calendar/calendar.internal-directives';\r\nimport { ArdiumDropdownPanelModule } from '../../dropdown-panel/dropdown-panel.module';\r\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\r\nimport { ArdiumIconModule } from '../../icon';\r\nimport { ArdiumMultipageDateRangeInputComponent } from './multipage-date-range-input.component';\r\nimport {\r\n ArdMultipageDateRangeInputAcceptButtonsTemplateDirective,\r\n ArdMultipageDateRangeInputCalendarIconTemplateDirective,\r\n ArdMultipageDateRangeInputDaysViewHeaderTemplateDirective,\r\n ArdMultipageDateRangeInputDayTemplateDirective,\r\n ArdMultipageDateRangeInputFloatingMonthTemplateDirective,\r\n ArdMultipageDateRangeInputMonthsViewHeaderTemplateDirective,\r\n ArdMultipageDateRangeInputMonthTemplateDirective,\r\n ArdMultipageDateRangeInputPrefixTemplateDirective,\r\n ArdMultipageDateRangeInputSuffixTemplateDirective,\r\n ArdMultipageDateRangeInputValueTemplateDirective,\r\n ArdMultipageDateRangeInputWeekdayTemplateDirective,\r\n ArdMultipageDateRangeInputYearsViewHeaderTemplateDirective,\r\n ArdMultipageDateRangeInputYearTemplateDirective,\r\n} from './multipage-date-range-input.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumMultipageDateRangeInputComponent,\r\n //template directives\r\n ArdMultipageDateRangeInputPrefixTemplateDirective,\r\n ArdMultipageDateRangeInputSuffixTemplateDirective,\r\n ArdMultipageDateRangeInputValueTemplateDirective,\r\n ArdMultipageDateRangeInputCalendarIconTemplateDirective,\r\n ArdMultipageDateRangeInputAcceptButtonsTemplateDirective,\r\n ArdMultipageDateRangeInputDaysViewHeaderTemplateDirective,\r\n ArdMultipageDateRangeInputDayTemplateDirective,\r\n ArdMultipageDateRangeInputFloatingMonthTemplateDirective,\r\n ArdMultipageDateRangeInputMonthsViewHeaderTemplateDirective,\r\n ArdMultipageDateRangeInputMonthTemplateDirective,\r\n ArdMultipageDateRangeInputWeekdayTemplateDirective,\r\n ArdMultipageDateRangeInputYearsViewHeaderTemplateDirective,\r\n ArdMultipageDateRangeInputYearTemplateDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ArdiumFormFieldFrameModule,\r\n ArdiumDropdownPanelModule,\r\n ArdiumClickOutsideModule,\r\n ArdiumRangeCalendarModule,\r\n ArdiumIconButtonModule,\r\n ArdiumButtonModule,\r\n ArdiumIconModule,\r\n _CalendarTemplateRepositoryDirective,\r\n ],\r\n exports: [\r\n ArdiumMultipageDateRangeInputComponent,\r\n //tempalate directives\r\n ArdMultipageDateRangeInputPrefixTemplateDirective,\r\n ArdMultipageDateRangeInputSuffixTemplateDirective,\r\n ArdMultipageDateRangeInputValueTemplateDirective,\r\n ArdMultipageDateRangeInputCalendarIconTemplateDirective,\r\n ArdMultipageDateRangeInputAcceptButtonsTemplateDirective,\r\n ArdMultipageDateRangeInputDaysViewHeaderTemplateDirective,\r\n ArdMultipageDateRangeInputDayTemplateDirective,\r\n ArdMultipageDateRangeInputFloatingMonthTemplateDirective,\r\n ArdMultipageDateRangeInputMonthsViewHeaderTemplateDirective,\r\n ArdMultipageDateRangeInputMonthTemplateDirective,\r\n ArdMultipageDateRangeInputWeekdayTemplateDirective,\r\n ArdMultipageDateRangeInputYearsViewHeaderTemplateDirective,\r\n ArdMultipageDateRangeInputYearTemplateDirective,\r\n ],\r\n providers: [\r\n { provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: { timezone: '+0000' } },\r\n ],\r\n})\r\nexport class ArdiumMultipageDateRangeInputModule {}\r\n","export const CaseTransformerType = {\r\n NoChange: 'nochange',\r\n Uppercase: 'uppercase',\r\n Lowercase: 'lowercase',\r\n} as const;\r\nexport type CaseTransformerType = (typeof CaseTransformerType)[keyof typeof CaseTransformerType];\r\n\r\nexport const ArdInputType = {\r\n Text: 'text',\r\n Password: 'password',\r\n Email: 'email',\r\n Tel: 'tel',\r\n Url: 'url',\r\n Search: 'search',\r\n} as const;\r\nexport type ArdInputType = (typeof ArdInputType)[keyof typeof ArdInputType];\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\r\nimport { _FormFieldComponentDefaults, _formFieldComponentDefaults } from '../../_internal/form-field-component';\r\nimport { ArdFormFieldFramePrefixSuffix } from '../../form-field-frame';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { CaseTransformerType } from '../input-types';\r\nimport { FormElementAppearance, FormElementVariant } from './../../types/theming.types';\r\n\r\nexport interface ArdHexInputDefaults extends _FormFieldComponentDefaults {\r\n appearance: FormElementAppearance;\r\n variant: FormElementVariant;\r\n compact: boolean;\r\n placeholder: string;\r\n case: CaseTransformerType;\r\n maxDigits: Nullable<number>;\r\n hideHash: boolean;\r\n clearable: boolean;\r\n clearButtonTitle: string;\r\n inputAttrs: Record<string, any>;\r\n PrefixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n SuffixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n}\r\n\r\nconst _hexInputDefaults: ArdHexInputDefaults = {\r\n ..._formFieldComponentDefaults,\r\n appearance: FormElementAppearance.Outlined,\r\n variant: FormElementVariant.Rounded,\r\n compact: false,\r\n placeholder: '',\r\n case: CaseTransformerType.NoChange,\r\n maxDigits: undefined,\r\n hideHash: false,\r\n clearable: false,\r\n clearButtonTitle: 'Clear',\r\n inputAttrs: {},\r\n PrefixComponent: undefined,\r\n SuffixComponent: undefined,\r\n};\r\n\r\nexport const ARD_HEX_INPUT_DEFAULTS = new InjectionToken<ArdHexInputDefaults>('ard-hex-input-defaults', {\r\n factory: () => ({\r\n ..._hexInputDefaults,\r\n }),\r\n});\r\n\r\nexport function provideHexInputDefaults(config: Partial<ArdHexInputDefaults>): Provider {\r\n return { provide: ARD_HEX_INPUT_DEFAULTS, useValue: { ..._hexInputDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { FormFieldFrameTemplateContext } from '../../form-field-frame';\r\n\r\n@Directive({ standalone: false, selector: 'ard-hex-input > ng-template[ard-placeholder-tmp]' })\r\nexport class ArdHexInputPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-hex-input ng-template[ard-prefix-tmp]' })\r\nexport class ArdHexInputPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-hex-input ng-template[ard-suffix-tmp]' })\r\nexport class ArdHexInputSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n","import { ElementRef, Signal, computed, signal } from '@angular/core';\r\nimport { isAnyString, isDefined, isNull } from 'simple-bool';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { RegExpTransformer } from '../input-transformers';\r\nimport { CaseTransformerType } from '../input-types';\r\n\r\nexport interface HexInputModelHost {\r\n readonly case: Signal<CaseTransformerType>;\r\n readonly maxDigits: Signal<Nullable<number>>;\r\n readonly textInputEl: Signal<ElementRef<HTMLInputElement> | undefined>;\r\n}\r\nexport class HexInputModel {\r\n constructor(protected readonly _hostComp: HexInputModelHost) {}\r\n\r\n //! value setters/getters\r\n readonly value = signal<string | null>(null);\r\n readonly stringValue = computed<string>(() => this.value() ?? '');\r\n //value with the hash sign\r\n readonly hashSignValue = computed<string>(() => '#' + this.stringValue());\r\n\r\n //! write value handlers\r\n writeValue(v: any): boolean {\r\n if (!isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(`ARD-WA0160: Trying to set <ard-hex-input>'s value to \"${v}\" (of type ${typeof v}), expected string or null.`)\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n //normalize the value\r\n v = v ?? '';\r\n if (typeof v === 'string') v = v.replace('#', '');\r\n\r\n return this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | null): boolean {\r\n const oldVal = this.value();\r\n //constraints\r\n if (v) {\r\n v = this._applyCharactersConstraint(v);\r\n v = this._applyDigitsConstraint(v, oldVal ?? '');\r\n v = this._applyCaseTransformer(v);\r\n }\r\n //update view\r\n this.value.set(v);\r\n this._updateInputElement();\r\n return oldVal !== v;\r\n }\r\n clear(): void {\r\n this._writeValue(null);\r\n }\r\n rewriteValueAfterHostUpdate(): void {\r\n this._writeValue(this.value());\r\n }\r\n\r\n //! input element methods\r\n _updateInputElement() {\r\n const el = this._hostComp.textInputEl()?.nativeElement;\r\n if (!el) return;\r\n const caretPos = this.caretPos;\r\n el.value = this.stringValue();\r\n this.caretPos = caretPos;\r\n }\r\n get caretPos(): number {\r\n return this._hostComp.textInputEl()?.nativeElement.selectionEnd ?? this.stringValue().length;\r\n }\r\n set caretPos(pos: number) {\r\n this._hostComp.textInputEl()?.nativeElement.setSelectionRange(pos, pos);\r\n }\r\n\r\n //! constraints\r\n private _charactersRegexTransformer = new RegExpTransformer(/[^0-9a-f]/i, '');\r\n private _applyCharactersConstraint(v: string): string {\r\n const { text, caretPos } = this._charactersRegexTransformer.apply(v, '', this.caretPos);\r\n this.caretPos = caretPos;\r\n return text;\r\n }\r\n private _applyDigitsConstraint(v: string, prev: string): string {\r\n const maxLength = this._hostComp.maxDigits();\r\n if (!isDefined(maxLength)) return v;\r\n if (v.length <= maxLength) return v;\r\n if (v.length < prev.length) return v;\r\n\r\n let firstChangeIndex = 0;\r\n while (\r\n firstChangeIndex < v.length &&\r\n (!prev.charAt(firstChangeIndex) || v.charAt(firstChangeIndex) === prev.charAt(firstChangeIndex)) &&\r\n firstChangeIndex <= maxLength\r\n ) {\r\n firstChangeIndex++;\r\n }\r\n if (firstChangeIndex > maxLength) return v.substring(0, maxLength);\r\n\r\n const overflow = v.length - maxLength;\r\n this.caretPos -= overflow;\r\n return v.substring(0, firstChangeIndex) + v.substring(firstChangeIndex + overflow);\r\n }\r\n private _applyCaseTransformer(v: string): string {\r\n if (this._hostComp.case() === CaseTransformerType.Uppercase) return v.toUpperCase();\r\n if (this._hostComp.case() === CaseTransformerType.Lowercase) return v.toLowerCase();\r\n return v;\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n ElementRef,\r\n forwardRef,\r\n Inject,\r\n input,\r\n Input,\r\n output,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanLike, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { _FormFieldComponentBase } from '../../_internal/form-field-component';\r\nimport { ARD_FORM_FIELD_CONTROL } from '../../form-field/form-field-child.token';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { CaseTransformerType } from '../input-types';\r\nimport { ARD_HEX_INPUT_DEFAULTS, ArdHexInputDefaults } from './hex-input.defaults';\r\nimport {\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n} from './hex-input.directives';\r\nimport { HexInputModel, HexInputModelHost } from './hex-input.model';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-hex-input',\r\n templateUrl: './hex-input.component.html',\r\n styleUrls: ['./hex-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumHexInputComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ARD_FORM_FIELD_CONTROL,\r\n useExisting: forwardRef(() => ArdiumHexInputComponent),\r\n },\r\n ],\r\n})\r\nexport class ArdiumHexInputComponent\r\n extends _FormFieldComponentBase\r\n implements ControlValueAccessor, HexInputModelHost, AfterViewInit\r\n{\r\n protected override readonly _DEFAULTS!: ArdHexInputDefaults;\r\n constructor(@Inject(ARD_HEX_INPUT_DEFAULTS) defaults: ArdHexInputDefaults) {\r\n super(defaults);\r\n }\r\n //! input view\r\n readonly textInputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n protected readonly inputModel = new HexInputModel(this);\r\n protected _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._wasViewInit = true;\r\n this._setInputAttributes();\r\n //set the value\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n delete this._valueBeforeInit;\r\n }\r\n }\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplate = contentChild(ArdHexInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdHexInputSuffixTemplateDirective);\r\n\r\n readonly prefixComponent = this._DEFAULTS.PrefixComponent;\r\n readonly suffixComponent = this._DEFAULTS.SuffixComponent;\r\n\r\n //! placeholder\r\n readonly placeholder = input<Nullable<string>>(this._DEFAULTS.placeholder);\r\n\r\n readonly placeholderTemplate = contentChild(ArdHexInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed((): boolean => Boolean(this.placeholder()) && !this.inputModel.stringValue());\r\n\r\n //! appearance\r\n //all handled in ard-form-field-frame component\r\n readonly appearance = input<FormElementAppearance>(this._DEFAULTS.appearance);\r\n readonly variant = input<FormElementVariant>(this._DEFAULTS.variant);\r\n\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! settings\r\n readonly case = input<CaseTransformerType>(this._DEFAULTS.case);\r\n\r\n readonly maxDigits = input<Nullable<number>, any>(this._DEFAULTS.maxDigits, {\r\n transform: v => coerceNumberProperty(v, this._DEFAULTS.maxDigits),\r\n });\r\n readonly maxDigitsAsInt = computed<number>(() => this.maxDigits() ?? 2_147_483_647);\r\n\r\n readonly hideHash = input<boolean, BooleanLike>(this._DEFAULTS.hideHash, { transform: v => coerceBooleanProperty(v) });\r\n readonly showHash = computed(() => !this.hideHash());\r\n\r\n //! clear button\r\n readonly clearable = input<boolean, BooleanLike>(this._DEFAULTS.clearable, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly clearButtonTitle = input<string>(this._DEFAULTS.clearButtonTitle);\r\n\r\n readonly shouldShowClearButton = computed<boolean>(\r\n () => this.clearable() && !this.disabled() && Boolean(this.inputModel?.value())\r\n );\r\n\r\n onClearButtonClick(event: MouseEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n event.stopPropagation();\r\n this.inputModel.clear();\r\n this._emitChange();\r\n this._emitInput();\r\n this.clearEvent.emit();\r\n this.focus();\r\n }\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.inputModel.writeValue(v);\r\n }\r\n\r\n //! value two-way binding\r\n protected _valueBeforeInit?: string | null = null;\r\n @Input()\r\n set value(v: string | null) {\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.writeValue(v);\r\n }\r\n get value(): string | null {\r\n return this.inputModel?.hashSignValue();\r\n }\r\n readonly valueChange = output<string>();\r\n\r\n //! event emitters\r\n readonly inputEvent = output<string>({ alias: 'input' });\r\n readonly changeEvent = output<string>({ alias: 'change' });\r\n readonly clearEvent = output<void>({ alias: 'clear' });\r\n\r\n //! event handlers\r\n onInput(newVal: string, event: Event): void {\r\n if (this.disabled() || this.readonly()) return;\r\n \r\n event.stopPropagation();\r\n const valueHasChanged = this.inputModel.writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitInput();\r\n }\r\n protected _emitInput(): void {\r\n const v = this.inputModel.hashSignValue();\r\n this.inputEvent.emit(v);\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n onChange(event: Event): void {\r\n this._emitChange();\r\n event.stopPropagation();\r\n }\r\n protected _emitChange(): void {\r\n const v = this.inputModel.hashSignValue();\r\n this.changeEvent.emit(v);\r\n }\r\n\r\n override onBlur(event: FocusEvent): void {\r\n super.onBlur(event);\r\n \r\n if (this.disabled() || this.readonly()) return;\r\n\r\n this._emitChange();\r\n }\r\n\r\n //smart focus\r\n onMouseup(): void {\r\n if (this.disabled() || this.readonly()) return;\r\n const selection = window.getSelection();\r\n if (selection && selection.type === 'Range') return;\r\n\r\n this.focus();\r\n }\r\n\r\n onCopy(event: ClipboardEvent): void {\r\n if (\r\n this.value &&\r\n //does the selection cover the entire input\r\n ((this.textInputEl()?.nativeElement.selectionStart === 0 &&\r\n this.textInputEl()?.nativeElement.selectionEnd === this.textInputEl()?.nativeElement.value.length) ||\r\n //or is zero-wide\r\n this.textInputEl()?.nativeElement.selectionStart === this.textInputEl()?.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', this.value);\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.textInputEl()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex),\r\n ...this.inputAttrs,\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n [prefixComponent]=\"prefixComponent\"\r\n [suffixComponent]=\"suffixComponent\"\r\n>\r\n <div\r\n class=\"ard-hex-input\"\r\n [class.ard-has-value]=\"value\"\r\n (mouseup)=\"onMouseup()\"\r\n >\r\n @if (showHash()) {\r\n <div class=\"ard-hash-container\">#</div>\r\n }\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"htmlId()\"\r\n [attr.name]=\"htmlName()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [maxLength]=\"maxDigitsAsInt()\"\r\n (input)=\"onInput(textInput.value, $event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumHexInputComponent } from './hex-input.component';\r\nimport {\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n} from './hex-input.directives';\r\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\r\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumHexInputComponent,\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n ],\r\n imports: [CommonModule, ArdiumFormFieldFrameModule, _ClearButtonModule],\r\n exports: [\r\n ArdiumHexInputComponent,\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumHexInputModule {}\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\r\nimport { _FormFieldComponentDefaults, _formFieldComponentDefaults } from '../../_internal/form-field-component';\r\nimport { ArdFormFieldFramePrefixSuffix } from '../../form-field-frame';\r\nimport { OneAxisAlignment } from './../../types/alignment.types';\r\nimport { FormElementAppearance, FormElementVariant } from './../../types/theming.types';\r\nimport { ArdNumberInputMinMaxBehavior } from './number-input.types';\r\n\r\nexport interface ArdNumberInputDefaults extends _FormFieldComponentDefaults {\r\n appearance: FormElementAppearance;\r\n variant: FormElementVariant;\r\n compact: boolean;\r\n placeholder: string;\r\n alignText: OneAxisAlignment;\r\n inputAttrs: Record<string, any>;\r\n min: number;\r\n max: number;\r\n minMaxBehavior: ArdNumberInputMinMaxBehavior;\r\n maxDecimalPlaces: number;\r\n fixedDecimalPlaces: boolean;\r\n decimalSeparator: string;\r\n allowFloat: boolean;\r\n noButtons: boolean;\r\n stepSize: number;\r\n keepFocusOnQuickChangeButton: boolean;\r\n PrefixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n SuffixComponent?: Type<ArdFormFieldFramePrefixSuffix>;\r\n}\r\n\r\nconst _numberInputDefaults: ArdNumberInputDefaults = {\r\n ..._formFieldComponentDefaults,\r\n appearance: FormElementAppearance.Outlined,\r\n variant: FormElementVariant.Rounded,\r\n compact: false,\r\n placeholder: '',\r\n alignText: OneAxisAlignment.Center,\r\n inputAttrs: {},\r\n min: 0,\r\n max: Infinity,\r\n minMaxBehavior: ArdNumberInputMinMaxBehavior.AdjustOnBlur,\r\n maxDecimalPlaces: Infinity,\r\n fixedDecimalPlaces: false,\r\n decimalSeparator: '.',\r\n allowFloat: false,\r\n noButtons: false,\r\n stepSize: 1,\r\n keepFocusOnQuickChangeButton: true,\r\n PrefixComponent: undefined,\r\n SuffixComponent: undefined,\r\n};\r\n\r\nexport const ARD_NUMBER_INPUT_DEFAULTS = new InjectionToken<ArdNumberInputDefaults>('ard-number-input-defaults', {\r\n factory: () => ({\r\n ..._numberInputDefaults,\r\n }),\r\n});\r\n\r\nexport function provideNumberInputDefaults(config: Partial<ArdNumberInputDefaults>): Provider {\r\n return { provide: ARD_NUMBER_INPUT_DEFAULTS, useValue: { ..._numberInputDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { FormFieldFrameTemplateContext } from '../../form-field-frame';\r\n\r\n@Directive({ standalone: false, selector: 'ard-number-input > ng-template[ard-placeholder-tmp]' })\r\nexport class ArdNumberInputPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-number-input > ng-template[ard-prefix-tmp]' })\r\nexport class ArdNumberInputPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-number-input > ng-template[ard-suffix-tmp]' })\r\nexport class ArdNumberInputSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<FormFieldFrameTemplateContext>) {}\r\n}","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n effect,\r\n ElementRef,\r\n forwardRef,\r\n Inject,\r\n Input,\r\n input,\r\n output,\r\n untracked,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanLike, coerceBooleanProperty, coerceNumberProperty, NumberLike } from '@ardium-ui/devkit';\r\nimport { roundToPrecision } from 'more-rounding';\r\nimport { isDefined } from 'simple-bool';\r\nimport { _FormFieldComponentBase } from '../../_internal/form-field-component';\r\nimport { contextToInputs } from '../../_internal/utils/context-to-inputs';\r\nimport { ButtonAppearance, ButtonVariant } from '../../buttons/general-button.types';\r\nimport { FormFieldFrameTemplateContext } from '../../form-field-frame';\r\nimport { ARD_FORM_FIELD_CONTROL } from '../../form-field/form-field-child.token';\r\nimport { OneAxisAlignment } from '../../types/alignment.types';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { NumberInputModel, NumberInputModelHost } from '../input-utils';\r\nimport { ARD_NUMBER_INPUT_DEFAULTS, ArdNumberInputDefaults } from './number-input.defaults';\r\nimport {\r\n ArdNumberInputPlaceholderTemplateDirective,\r\n ArdNumberInputPrefixTemplateDirective,\r\n ArdNumberInputSuffixTemplateDirective,\r\n} from './number-input.directives';\r\nimport { ArdNumberInputMinMaxBehavior } from './number-input.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-number-input',\r\n templateUrl: './number-input.component.html',\r\n styleUrls: ['./number-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumNumberInputComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ARD_FORM_FIELD_CONTROL,\r\n useExisting: ArdiumNumberInputComponent,\r\n },\r\n ],\r\n})\r\nexport class ArdiumNumberInputComponent\r\n extends _FormFieldComponentBase\r\n implements ControlValueAccessor, NumberInputModelHost, AfterViewInit\r\n{\r\n protected override readonly _DEFAULTS!: ArdNumberInputDefaults;\r\n constructor(@Inject(ARD_NUMBER_INPUT_DEFAULTS) defaults: ArdNumberInputDefaults) {\r\n super(defaults);\r\n\r\n effect(() => {\r\n const allowFloat = this.allowFloat();\r\n const stepSize = this.stepSize();\r\n if (!allowFloat && stepSize % 1 !== 0) {\r\n throw new Error(\r\n `ARD-FT0071c: <ard-number-input>'s [stepSize] must be an integer when [allowFloat] is false, got \"${stepSize}\".`\r\n );\r\n }\r\n });\r\n\r\n // refresh input display when decimalSeparator changes\r\n effect(() => {\r\n this.decimalSeparator();\r\n // calling rewrite ensures element value includes new separator\r\n untracked(() => this.inputModel.rewriteValueAfterHostUpdate());\r\n });\r\n }\r\n\r\n //! input view\r\n readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n protected readonly inputModel = new NumberInputModel(this);\r\n private _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._setInputAttributes();\r\n this._wasViewInit = true;\r\n //set the value\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n delete this._valueBeforeInit;\r\n }\r\n }\r\n\r\n //! placeholder\r\n readonly placeholder = input<Nullable<string>>(this._DEFAULTS.placeholder);\r\n\r\n readonly placeholderTemplate = contentChild(ArdNumberInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed<boolean>(() => !!this.placeholder() && !this.inputModel.stringValue());\r\n\r\n //! prefix and suffix templates\r\n readonly prefixTemplate = contentChild(ArdNumberInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdNumberInputSuffixTemplateDirective);\r\n\r\n readonly prefixSuffixTemplateContext = computed<FormFieldFrameTemplateContext>(() => ({\r\n hasError: this.hasError(),\r\n disabled: this.disabled(),\r\n readonly: this.readonly(),\r\n isSuccess: this.isSuccess(),\r\n isFocused: this.isFocused(),\r\n }));\r\n\r\n readonly prefixComponent = this._DEFAULTS.PrefixComponent;\r\n readonly suffixComponent = this._DEFAULTS.SuffixComponent;\r\n\r\n readonly prefixComponentInputs = contextToInputs(this.prefixSuffixTemplateContext, this.prefixComponent);\r\n readonly suffixComponentInputs = contextToInputs(this.prefixSuffixTemplateContext, this.suffixComponent);\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(this._DEFAULTS.appearance);\r\n readonly variant = input<FormElementVariant>(this._DEFAULTS.variant);\r\n readonly alignText = input<OneAxisAlignment>(this._DEFAULTS.alignText);\r\n\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string => {\r\n return [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-text-align-${this.alignText()}`,\r\n `ard-quick-change-${!this.noButtons()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ');\r\n });\r\n\r\n readonly buttonVariant = computed((): ButtonVariant => {\r\n if (this.variant() === FormElementVariant.Rounded) return ButtonVariant.Rounded;\r\n if (this.variant() === FormElementVariant.Pill) return ButtonVariant.Pill;\r\n if (this.variant() === FormElementVariant.Sharp) return ButtonVariant.Sharp;\r\n return ButtonVariant.Rounded;\r\n });\r\n readonly buttonAppearance = computed<ButtonAppearance>(() => {\r\n if (this.appearance() === FormElementAppearance.Outlined && this.variant() !== FormElementVariant.Pill) {\r\n return ButtonAppearance.Outlined;\r\n }\r\n return ButtonAppearance.Transparent;\r\n });\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n this.inputModel.writeValue(v, false);\r\n\r\n if (this.isFocused()) return;\r\n this.inputModel.updateOnBlur(true);\r\n }\r\n\r\n //! value two-way binding\r\n protected _valueBeforeInit?: string | null = null;\r\n @Input()\r\n set value(v: string | number | null) {\r\n if (typeof v === 'number') v = v.toString();\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.writeValue(v);\r\n }\r\n readonly valueChange = output<number | null>();\r\n\r\n //! event emitters\r\n readonly inputEvent = output<number | null>({ alias: 'input' });\r\n readonly changeEvent = output<number | null>({ alias: 'change' });\r\n readonly clearEvent = output<MouseEvent>({ alias: 'clear' });\r\n readonly quickChangeEvent = output<{\r\n readonly direction: 1 | -1;\r\n readonly value: number;\r\n }>({ alias: 'quickChange' });\r\n\r\n //! min/max and number type\r\n readonly min = input<number, NumberLike>(this._DEFAULTS.min, { transform: v => coerceNumberProperty(v, this._DEFAULTS.min) });\r\n readonly max = input<number, NumberLike>(this._DEFAULTS.max, { transform: v => coerceNumberProperty(v, this._DEFAULTS.max) });\r\n\r\n readonly minMaxBehavior = input<ArdNumberInputMinMaxBehavior>(this._DEFAULTS.minMaxBehavior);\r\n\r\n readonly maxDecimalPlaces = input<number, NumberLike>(this._DEFAULTS.maxDecimalPlaces, {\r\n transform: v => {\r\n const newValue = coerceNumberProperty(v, this._DEFAULTS.maxDecimalPlaces);\r\n if (newValue < 0) {\r\n throw new Error(\r\n `ARD-FT0072a: Cannot set <ard-number-input>'s [maxDecimalPlaces] to a negative value, got \"${newValue}\".`\r\n );\r\n }\r\n if (newValue % 1 !== 0) {\r\n throw new Error(\r\n `ARD-FT0072b: Cannot set <ard-number-input>'s [maxDecimalPlaces] to a non-integer value, got \"${newValue}\".`\r\n );\r\n }\r\n return newValue;\r\n },\r\n });\r\n readonly fixedDecimalPlaces = input<boolean, BooleanLike>(this._DEFAULTS.fixedDecimalPlaces, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n readonly decimalSeparator = input<string, string>(this._DEFAULTS.decimalSeparator, {\r\n transform: (v: any) => {\r\n if (typeof v !== 'string' || v.length !== 1) {\r\n throw new Error(`ARD-FT0073: <ard-number-input>'s [decimalSeparator] must be a single character, got \"${v}\".`);\r\n }\r\n return v;\r\n },\r\n });\r\n\r\n readonly allowFloat = input<boolean, BooleanLike>(this._DEFAULTS.allowFloat, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! incerement/decrement buttons\r\n readonly noButtons = input<boolean, BooleanLike>(this._DEFAULTS.noButtons, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly keepFocusOnQuickChangeButton = input<boolean, BooleanLike>(this._DEFAULTS.keepFocusOnQuickChangeButton, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n readonly stepSize = input<number, NumberLike>(this._DEFAULTS.stepSize, {\r\n transform: v => {\r\n const newValue = coerceNumberProperty(v, 1);\r\n if (newValue === 0) {\r\n throw new Error(`ARD-FT0071a: Cannot set <ard-number-input>'s [stepSize] to 0.`);\r\n }\r\n if (newValue < 0) {\r\n throw new Error(`ARD-FT0071b: Cannot set <ard-number-input>'s [stepSize] to a negative value, got \"${newValue}\".`);\r\n }\r\n return newValue;\r\n },\r\n });\r\n\r\n onQuickChangeButtonClick(direction: 1 | -1, event?: MouseEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n let num = this.inputModel.numberValue();\r\n const hasAnyValue = isDefined(num);\r\n if (!num) num = 0;\r\n\r\n if (direction === 1 && num >= this.max() && hasAnyValue) return;\r\n if (direction === -1 && num <= this.min() && hasAnyValue) return;\r\n\r\n if (event) event.stopPropagation();\r\n\r\n const newValue = num + this.stepSize() * direction;\r\n //round to 9 decimal places to avoid floating point arithmetic errors\r\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\r\n const newValuePrecise = roundToPrecision(newValue, 9);\r\n\r\n this.writeValue(newValuePrecise);\r\n this.quickChangeEvent.emit({ direction, value: newValuePrecise });\r\n this._emitChange();\r\n this._emitTouched();\r\n\r\n this._focusInputIfCantQuickChange();\r\n }\r\n private _focusInputIfCantQuickChange(): void {\r\n if (this.keepFocusOnQuickChangeButton()) return;\r\n if (!this.canDecrement() || !this.canIncrement()) this.focus();\r\n }\r\n\r\n private _isQuickChangeButtonFocused = false;\r\n onQuickChangeButtonMouseup(event: MouseEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n // prevent the event from reaching the parent element\r\n if (this.keepFocusOnQuickChangeButton()) {\r\n this._isQuickChangeButtonFocused = true;\r\n setTimeout(() => {\r\n this._isQuickChangeButtonFocused = false;\r\n }, 0);\r\n }\r\n }\r\n\r\n readonly canIncrement = computed<boolean>(() => {\r\n const num = this.inputModel.numberValue();\r\n return !isDefined(num) || num < this.max();\r\n });\r\n readonly canDecrement = computed<boolean>(() => {\r\n const num = this.inputModel.numberValue();\r\n return !isDefined(num) || num > this.min();\r\n });\r\n\r\n //! event handlers\r\n onInput(newVal: string): void {\r\n if (this.disabled() || this.readonly()) return;\r\n\r\n const valueHasChanged = this.inputModel.writeValue(newVal, true);\r\n if (!valueHasChanged) return;\r\n this._emitInput();\r\n }\r\n protected _emitInput(): void {\r\n this.inputEvent.emit(this.inputModel.numberValue());\r\n this._emitChange();\r\n }\r\n\r\n //focus, blur, change\r\n onFocusMaster(event: FocusEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this.onFocus(event);\r\n }\r\n onBlurMaster(event: FocusEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this.onBlur(event);\r\n\r\n this.inputModel.updateOnBlur();\r\n }\r\n //change\r\n onChange(event: Event): void {\r\n event.stopPropagation();\r\n this._emitChange();\r\n }\r\n protected _emitChange(): void {\r\n const v = this.inputModel.numberValue();\r\n this.valueChange.emit(v);\r\n this.changeEvent.emit(v);\r\n this._onChangeRegistered?.(v);\r\n }\r\n\r\n //smart focus\r\n onMouseup(): void {\r\n if (this.disabled() || this.readonly()) return;\r\n const selection = window.getSelection();\r\n if (selection && selection.type === 'Range') return;\r\n\r\n if (this._isQuickChangeButtonFocused) return;\r\n this.focus();\r\n }\r\n\r\n // copy\r\n onCopy(event: ClipboardEvent): void {\r\n if (\r\n this.value &&\r\n //does the selection cover the entire input\r\n ((this.inputEl()?.nativeElement.selectionStart === 0 &&\r\n this.inputEl()?.nativeElement.selectionEnd === this.inputEl()?.nativeElement.value.length) ||\r\n //or is zero-wide\r\n this.inputEl()?.nativeElement.selectionStart === this.inputEl()?.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', String(this.value));\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.inputEl()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex),\r\n ...this.inputAttrs,\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"ard-number-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-error]=\"hasError()\"\r\n [class.ard-is-success]=\"isSuccess()\"\r\n [class.ard-has-value]=\"value\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (mouseup)=\"onMouseup()\"\r\n>\r\n @if (!noButtons()) {\r\n <ard-button\r\n class=\"ard-quick-change-button decrement\"\r\n [variant]=\"buttonVariant()\"\r\n [appearance]=\"buttonAppearance()\"\r\n color=\"none\"\r\n [disabled]=\"!canDecrement()\"\r\n [tabIndex]=\"!canDecrement() || readonly() ? -1 : tabIndex()\"\r\n pointerEventsWhenDisabled\r\n (click)=\"canDecrement() && onQuickChangeButtonClick(-1, $event)\"\r\n (mouseup)=\"onQuickChangeButtonMouseup($event)\"\r\n (ardHold)=\"canDecrement() && onQuickChangeButtonClick(-1)\"\r\n ardHoldSpaceKey\r\n >\r\n -\r\n </ard-button>\r\n }\r\n <div class=\"ard-number-input-wrapper\">\r\n @if (prefixTemplate()) {\r\n <div class=\"ard-number-input-prefix-container\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"prefixTemplate()?.template ?? null\"\r\n [ngTemplateOutletContext]=\"prefixSuffixTemplateContext()\"\r\n />\r\n </div>\r\n } @else if (prefixComponent) {\r\n <div class=\"ard-number-input-prefix-container\">\r\n <ng-template\r\n [ngComponentOutlet]=\"prefixComponent\"\r\n [ngComponentOutletInputs]=\"prefixComponentInputs()\"\r\n />\r\n </div>\r\n }\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template\r\n #defaultPlaceholderTemplate\r\n let-plchldr\r\n >\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n inputmode=\"numeric\"\r\n [attr.id]=\"htmlId()\"\r\n [attr.name]=\"htmlName()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n @if (suffixTemplate()) {\r\n <div class=\"ard-number-input-suffix-container\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"suffixTemplate()?.template ?? null\"\r\n [ngTemplateOutletContext]=\"prefixSuffixTemplateContext()\"\r\n />\r\n </div>\r\n } @else if (suffixComponent) {\r\n <div class=\"ard-number-input-suffix-container\">\r\n <ng-template\r\n [ngComponentOutlet]=\"suffixComponent\"\r\n [ngComponentOutletInputs]=\"suffixComponentInputs()\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n @if (!noButtons()) {\r\n <ard-button\r\n class=\"ard-quick-change-button increment\"\r\n [variant]=\"buttonVariant()\"\r\n [appearance]=\"buttonAppearance()\"\r\n color=\"none\"\r\n [disabled]=\"!canIncrement()\"\r\n [tabIndex]=\"!canIncrement() || readonly() ? -1 : tabIndex()\"\r\n pointerEventsWhenDisabled\r\n (click)=\"canIncrement() && onQuickChangeButtonClick(1, $event)\"\r\n (mouseup)=\"onQuickChangeButtonMouseup($event)\"\r\n (ardHold)=\"canIncrement() && onQuickChangeButtonClick(1)\"\r\n ardHoldSpaceKey\r\n >\r\n +\r\n </ard-button>\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumHoldModule } from '@ardium-ui/devkit';\r\nimport { ArdiumButtonModule } from '../../buttons/button/button.module';\r\nimport { ArdiumNumberInputComponent } from './number-input.component';\r\nimport {\r\n ArdNumberInputPlaceholderTemplateDirective,\r\n ArdNumberInputPrefixTemplateDirective,\r\n ArdNumberInputSuffixTemplateDirective,\r\n} from './number-input.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumNumberInputComponent,\r\n ArdNumberInputPlaceholderTemplateDirective,\r\n ArdNumberInputPrefixTemplateDirective,\r\n ArdNumberInputSuffixTemplateDirective,\r\n ],\r\n imports: [CommonModule, ArdiumHoldModule, ArdiumButtonModule],\r\n exports: [\r\n ArdiumNumberInputComponent,\r\n ArdNumberInputPlaceholderTemplateDirective,\r\n ArdNumberInputPrefixTemplateDirective,\r\n ArdNumberInputSuffixTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumNumberInputModule {}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\n\r\nexport interface ArdButtonGroupDefaults {\r\n vertical: boolean;\r\n compact: boolean;\r\n}\r\n\r\nconst _buttonGroupDefaults: ArdButtonGroupDefaults = {\r\n vertical: false,\r\n compact: false,\r\n};\r\n\r\nexport const ARD_BUTTON_GROUP_DEFAULTS = new InjectionToken<ArdButtonGroupDefaults>('ard-button-group-defaults', {\r\n factory: () => ({ ..._buttonGroupDefaults }),\r\n});\r\n\r\nexport function provideButtonGroupDefaults(config: Partial<ArdButtonGroupDefaults>): Provider {\r\n return { provide: ARD_BUTTON_GROUP_DEFAULTS, useValue: { ..._buttonGroupDefaults, ...config } };\r\n}\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n computed,\r\n contentChildren,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ArdiumButtonComponent, ArdiumButtonDirective } from '../button';\r\nimport { ARD_BUTTON_GROUP_DEFAULTS } from './button-group.defaults';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-button-group',\r\n templateUrl: './button-group.component.html',\r\n styleUrls: ['./button-group.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'ard-button-group',\r\n '[class.ard-button-group__vertical]': 'verticalOrInherited()',\r\n '[class.ard-button-group__compact]': 'compactOrInherited()',\r\n },\r\n})\r\nexport class ArdiumButtonGroupComponent implements AfterContentInit {\r\n private readonly _DEFAULTS = inject(ARD_BUTTON_GROUP_DEFAULTS);\r\n\r\n readonly vertical = input<boolean, BooleanLike>(this._DEFAULTS.vertical, { transform: v => coerceBooleanProperty(v) });\r\n readonly inheritedVertical = signal<boolean | null>(null);\r\n\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n readonly inheritedCompact = signal<boolean | null>(null);\r\n\r\n readonly wasVerticalChanged = signal<boolean>(false);\r\n readonly wasCompactChanged = signal<boolean>(false);\r\n\r\n readonly verticalOrInherited = computed(() =>\r\n this.wasVerticalChanged() ? this.vertical() : (this.inheritedVertical() ?? this.vertical())\r\n );\r\n readonly compactOrInherited = computed(() =>\r\n this.wasCompactChanged() ? this.compact() : (this.inheritedCompact() ?? this.compact())\r\n );\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['vertical']) {\r\n this.wasVerticalChanged.set(true);\r\n }\r\n if (changes['compact']) {\r\n this.wasCompactChanged.set(true);\r\n }\r\n }\r\n\r\n readonly groupChildren = contentChildren(ArdiumButtonGroupComponent);\r\n readonly buttonChildren = contentChildren(ArdiumButtonComponent);\r\n readonly buttonDirChildren = contentChildren(ArdiumButtonDirective);\r\n\r\n constructor() {\r\n effect(() => {\r\n this._updateChildrenStyles();\r\n });\r\n }\r\n\r\n private _wasContentInitialized = false;\r\n ngAfterContentInit() {\r\n this._wasContentInitialized = true;\r\n this._updateChildrenStyles();\r\n }\r\n\r\n private _updateChildrenStyles() {\r\n const buttonChildren = this.buttonChildren();\r\n const buttonDirChildren = this.buttonDirChildren();\r\n const groupChildren = this.groupChildren();\r\n\r\n const compact = this.compactOrInherited();\r\n const vertical = this.verticalOrInherited();\r\n\r\n if (!this._wasContentInitialized) {\r\n return;\r\n }\r\n\r\n for (const child of [...buttonChildren, ...buttonDirChildren]) {\r\n child.inheritedCompact.set(compact);\r\n }\r\n for (const child of groupChildren) {\r\n child.inheritedCompact.set(compact);\r\n child.inheritedVertical.set(vertical);\r\n }\r\n }\r\n}\r\n","<ng-content />","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumButtonGroupComponent } from './button-group.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumButtonGroupComponent],\r\n imports: [CommonModule],\r\n exports: [ArdiumButtonGroupComponent],\r\n})\r\nexport class ArdiumButtonGroupModule {}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _buttonBaseDefaults, _ButtonBaseDefaults } from '../_button-base.defaults';\r\nimport { FabSize } from '../general-button.types';\r\n\r\nexport interface ArdFabDefaults extends _ButtonBaseDefaults {\r\n size: FabSize;\r\n // extended: boolean;\r\n}\r\n\r\nconst _fabDefaults: ArdFabDefaults = {\r\n ..._buttonBaseDefaults,\r\n size: FabSize.Standard,\r\n // extended: false,\r\n};\r\n\r\nexport const ARD_FAB_DEFAULTS = new InjectionToken<ArdFabDefaults>('ard-fab-defaults', {\r\n factory: () => ({\r\n ..._fabDefaults,\r\n }),\r\n});\r\n\r\nexport function provideFabDefaults(config: Partial<ArdFabDefaults>): Provider {\r\n return { provide: ARD_FAB_DEFAULTS, useValue: { ..._fabDefaults, ...config } };\r\n}\r\n","import { ChangeDetectionStrategy, Component, Inject, ViewEncapsulation, computed, input, output } from '@angular/core';\r\nimport { _ButtonBase } from '../_button-base';\r\nimport { FabSize } from '../general-button.types';\r\nimport { ARD_FAB_DEFAULTS, ArdFabDefaults } from './fab.defaults';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-fab',\r\n templateUrl: './fab.component.html',\r\n styleUrls: ['./fab.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class.ard-button-with-pointer-events-when-disabled]': 'pointerEventsWhenDisabled()',\r\n },\r\n})\r\nexport class ArdiumFabComponent extends _ButtonBase {\r\n constructor(@Inject(ARD_FAB_DEFAULTS) defaults: ArdFabDefaults) {\r\n super(defaults);\r\n }\r\n \r\n //! events\r\n readonly focusEvent = output<FocusEvent>({ alias: 'focus' });\r\n readonly blurEvent = output<FocusEvent>({ alias: 'blur' });\r\n\r\n //! appearance\r\n readonly size = input<FabSize>(FabSize.Standard);\r\n\r\n // readonly extended = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-fab-size-${this.size()}`,\r\n this.lightColoring() ? `ard-light-coloring` : '',\r\n // this.extended() ? 'ard-fab-extended' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n class=\"ard-fab\"\r\n [type]=\"type()\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n>\r\n <ng-content></ng-content>\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumFabComponent } from './fab.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumFabComponent],\r\n imports: [CommonModule],\r\n exports: [ArdiumFabComponent],\r\n})\r\nexport class ArdiumFabModule {}\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\r\nimport { _booleanComponentDefaults, _BooleanComponentDefaults } from '../_internal/boolean-component';\r\nimport { SimpleComponentColor } from './../types/colors.types';\r\nimport { ArdCheckboxIcon, ArdCheckboxLabel } from './checkbox.types';\r\n\r\nexport interface ArdCheckboxDefaults extends _BooleanComponentDefaults {\r\n color: SimpleComponentColor;\r\n unselectedColor: SimpleComponentColor;\r\n CheckboxIconComponent?: Type<ArdCheckboxIcon>;\r\n LabelComponent?: Type<ArdCheckboxLabel>;\r\n}\r\n\r\nconst _checkboxDefaults: ArdCheckboxDefaults = {\r\n ..._booleanComponentDefaults,\r\n color: SimpleComponentColor.Primary,\r\n unselectedColor: SimpleComponentColor.None,\r\n CheckboxIconComponent: undefined,\r\n LabelComponent: undefined,\r\n};\r\n\r\nexport const ARD_CHECKBOX_DEFAULTS = new InjectionToken<ArdCheckboxDefaults>('ard-checkbox-defaults', {\r\n factory: () => ({\r\n ..._checkboxDefaults,\r\n }),\r\n});\r\n\r\nexport function provideCheckboxDefaults(config: Partial<ArdCheckboxDefaults>): Provider {\r\n return { provide: ARD_CHECKBOX_DEFAULTS, useValue: { ..._checkboxDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { CheckboxTemplateContext } from './checkbox.types';\r\n\r\n@Directive({ standalone: false, selector: 'ard-checkbox > ng-template[ard-checkbox-tmp]' })\r\nexport class ArdCheckboxTemplateDirective {\r\n constructor(public template: TemplateRef<CheckboxTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-checkbox > ng-template[ard-label-tmp]' })\r\nexport class ArdCheckboxLabelTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n","import { Directive, input, TemplateRef } from '@angular/core';\r\nimport { ArdCheckboxTemplateDirective } from './checkbox.directives';\r\n\r\n@Directive({ standalone: true, selector: 'ard-checkbox > ng-template[_ard-tmp-repository]' })\r\nexport class _CheckboxTemplateRepositoryDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n\r\n readonly checkboxTmp = input<ArdCheckboxTemplateDirective | undefined>(undefined);\r\n}\r\n","import { TemplateComponent } from '../types/utility.types';\r\n\r\nexport const CheckboxState = {\r\n Unselected: 'unselected',\r\n Indeterminate: 'indeterminate',\r\n Selected: 'selected',\r\n} as const;\r\nexport type CheckboxState = (typeof CheckboxState)[keyof typeof CheckboxState];\r\n\r\nexport interface CheckboxTemplateContext {\r\n $implicit: boolean;\r\n selected: boolean;\r\n internalSelected: boolean;\r\n state: CheckboxState;\r\n internalState: CheckboxState;\r\n}\r\nexport interface CheckboxLabelTemplateContext {\r\n $implicit: string;\r\n label: string;\r\n}\r\n\r\nexport interface ArdCheckboxIcon extends TemplateComponent<CheckboxTemplateContext> {}\r\nexport interface ArdCheckboxLabel extends TemplateComponent<CheckboxLabelTemplateContext> {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Inject,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n input,\r\n model,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { contextToInputs } from '../_internal/utils/context-to-inputs';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { _BooleanComponentBase } from './../_internal/boolean-component';\r\nimport { ARD_CHECKBOX_DEFAULTS, ArdCheckboxDefaults } from './checkbox.defaults';\r\nimport { ArdCheckboxLabelTemplateDirective, ArdCheckboxTemplateDirective } from './checkbox.directives';\r\nimport { _CheckboxTemplateRepositoryDirective } from './checkbox.internal-directives';\r\nimport { CheckboxLabelTemplateContext, CheckboxState, CheckboxTemplateContext } from './checkbox.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-checkbox',\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumCheckboxComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumCheckboxComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n protected override readonly _DEFAULTS!: ArdCheckboxDefaults;\r\n constructor(@Inject(ARD_CHECKBOX_DEFAULTS) defaults: ArdCheckboxDefaults) {\r\n super(defaults);\r\n }\r\n\r\n protected readonly _componentId = '100';\r\n protected readonly _componentName = 'checkbox';\r\n\r\n //! label\r\n // string for defining label text, boolean for showing/hiding label, null for no label\r\n readonly label = input<string | boolean | null, string | undefined | boolean | null>(null, {\r\n transform: v => (v === undefined || v === '' ? true : v),\r\n });\r\n\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(this._DEFAULTS.color);\r\n readonly unselectedColor = input<SimpleComponentColor>(this._DEFAULTS.unselectedColor);\r\n\r\n readonly ngClasses = computed(() =>\r\n [`ard-color-${this.color()}`, `ard-unselected-color-${this.unselectedColor()}`, `ard-checkbox-${this.internalState()}`].join(\r\n ' '\r\n )\r\n );\r\n\r\n //override the \"selected\" setter, so it changes the state too.\r\n override set _selected(v: any) {\r\n const selected = coerceBooleanProperty(v);\r\n this.selected.set(selected);\r\n this.internalState.set(selected ? CheckboxState.Selected : CheckboxState.Unselected);\r\n }\r\n\r\n readonly internalState = model<CheckboxState>(CheckboxState.Unselected, { alias: 'state' });\r\n\r\n readonly state = computed<CheckboxState>(() => {\r\n if (!this.reverseSelected()) return this.internalState();\r\n if (this.internalState() === CheckboxState.Unselected) return CheckboxState.Selected;\r\n if (this.internalState() === CheckboxState.Selected) return CheckboxState.Unselected;\r\n return this.internalState();\r\n });\r\n\r\n readonly State = CheckboxState;\r\n\r\n //! click action\r\n toggleState() {\r\n if (this.disabled() || this.readonly()) return;\r\n let newState: CheckboxState = CheckboxState.Unselected;\r\n if (this.internalState() === CheckboxState.Unselected) {\r\n newState = CheckboxState.Selected;\r\n }\r\n this.internalState.set(newState);\r\n this.selected.set(this.internalState() === CheckboxState.Selected);\r\n\r\n this._emitChange();\r\n this._emitTouched();\r\n }\r\n\r\n //! templates\r\n readonly checkboxIconComponent = this._DEFAULTS.CheckboxIconComponent;\r\n readonly labelComponent = this._DEFAULTS.LabelComponent;\r\n\r\n readonly templateRepository = contentChild(_CheckboxTemplateRepositoryDirective);\r\n\r\n readonly checkboxTemplate = contentChild(ArdCheckboxTemplateDirective);\r\n readonly labelTemplate = contentChild(ArdCheckboxLabelTemplateDirective);\r\n\r\n readonly checkboxTemplateContext = computed<CheckboxTemplateContext>(() => ({\r\n $implicit: this.selectedAccountingForReverse(),\r\n selected: this.selectedAccountingForReverse(),\r\n internalSelected: this.selected(),\r\n state: this.state(),\r\n internalState: this.internalState(),\r\n }));\r\n readonly checkboxIconInputs = contextToInputs(this.checkboxTemplateContext, this.checkboxIconComponent);\r\n\r\n readonly labelTemplateContext = computed<CheckboxLabelTemplateContext>(() => {\r\n const label = this.label();\r\n return {\r\n $implicit: typeof label === 'string' ? label : '',\r\n label: typeof label === 'string' ? label : '',\r\n };\r\n });\r\n readonly labelComponentInputs = contextToInputs(this.labelTemplateContext, this.labelComponent);\r\n}\r\n","<button\r\n class=\"ard-checkbox\"\r\n role=\"checkbox\"\r\n type=\"button\"\r\n [attr.id]=\"htmlId()\"\r\n [attr.name]=\"htmlName()\"\r\n [attr.aria-checked]=\"selectedAccountingForReverse()\"\r\n [attr.aria-disabled]=\"disabled()\"\r\n [attr.aria-labelledby]=\"label() ? htmlId() + '-label' : null\"\r\n [tabindex]=\"tabIndex()\"\r\n [ngClass]=\"ngClasses()\"\r\n (click)=\"toggleState()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n\r\n @if (checkboxIconComponent && !checkboxTemplate()) {\r\n <!-- render the component -->\r\n <ng-template\r\n [ngComponentOutlet]=\"checkboxIconComponent\"\r\n [ngComponentOutletInputs]=\"checkboxIconInputs()\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultCheckboxTemplate\r\n let-state=\"state\"\r\n let-selected=\"selected\"\r\n >\r\n <ard-icon\r\n [icon]=\"\r\n state === State.Selected\r\n ? 'check_box'\r\n : state === State.Unselected\r\n ? 'check_box_outline_blank'\r\n : 'indeterminate_check_box'\r\n \"\r\n [filled]=\"state !== State.Indeterminate\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"\r\n templateRepository()?.checkboxTmp()?.template ?? checkboxTemplate()?.template ?? defaultCheckboxTemplate\r\n \"\r\n [ngTemplateOutletContext]=\"checkboxTemplateContext()\"\r\n />\r\n }\r\n</button>\r\n@if (label()) {\r\n <div\r\n class=\"ard-checkbox__label\"\r\n (click)=\"toggleState()\"\r\n [attr.id]=\"htmlId() + '-label'\"\r\n >\r\n <div class=\"ard-checkbox__label-inner\">\r\n @if (labelComponent && !labelTemplate()) {\r\n <!-- render the component -->\r\n <ng-template\r\n [ngComponentOutlet]=\"labelComponent\"\r\n [ngComponentOutletInputs]=\"labelComponentInputs()\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultLabelTemplate\r\n let-label\r\n >\r\n {{ label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"labelTemplate()?.template ?? defaultLabelTemplate\"\r\n [ngTemplateOutletContext]=\"labelTemplateContext()\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumIconModule } from \"../icon\";\r\nimport { ArdiumCheckboxComponent } from './checkbox.component';\r\nimport { ArdCheckboxTemplateDirective } from './checkbox.directives';\r\n\r\n@NgModule({\r\n declarations: [ArdiumCheckboxComponent, ArdCheckboxTemplateDirective],\r\n imports: [CommonModule, ArdiumIconModule],\r\n exports: [ArdiumCheckboxComponent, ArdCheckboxTemplateDirective],\r\n})\r\nexport class ArdiumCheckboxModule {}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _FocusableComponentDefaults, _focusableComponentDefaults } from '../../_internal/focusable-component';\r\nimport { SimpleComponentColor } from './../../types/colors.types';\r\n\r\nexport interface ArdRadioDefaults extends _FocusableComponentDefaults {\r\n color: SimpleComponentColor;\r\n}\r\n\r\nconst _radioDefaults: ArdRadioDefaults = {\r\n ..._focusableComponentDefaults,\r\n color: SimpleComponentColor.Primary,\r\n};\r\n\r\nexport const ARD_RADIO_DEFAULTS = new InjectionToken<ArdRadioDefaults>('ard-radio-defaults', {\r\n factory: () => ({\r\n ..._radioDefaults,\r\n }),\r\n});\r\n\r\nexport function provideRadioDefaults(config: Partial<ArdRadioDefaults>): Provider {\r\n return { provide: ARD_RADIO_DEFAULTS, useValue: { ..._radioDefaults, ...config } };\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n Inject,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { TakeChance as Random } from 'take-chance';\r\nimport { _FocusableComponentBase } from '../../_internal/focusable-component';\r\nimport { SimpleComponentColor } from '../../types/colors.types';\r\nimport { ARD_RADIO_DEFAULTS, ArdRadioDefaults } from './radio.defaults';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-radio',\r\n templateUrl: './radio.component.html',\r\n styleUrls: ['./radio.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumRadioComponent extends _FocusableComponentBase {\r\n protected readonly _changeDetector = inject(ChangeDetectorRef);\r\n\r\n protected override readonly _DEFAULTS!: ArdRadioDefaults;\r\n constructor(@Inject(ARD_RADIO_DEFAULTS) defaults: ArdRadioDefaults) {\r\n super(defaults);\r\n }\r\n\r\n readonly htmlId = input<string>(Random.id());\r\n\r\n /**\r\n * Emits all select-state-related events.\r\n */\r\n protected _emitChange() {\r\n if (this.selected()) this.selectEvent.emit();\r\n else this.unselectEvent.emit();\r\n\r\n this.selectedChange.emit(this.selected());\r\n this.changeEvent.emit(this.selected());\r\n }\r\n protected _emitTouched() {\r\n this.touchedEvent.emit();\r\n }\r\n\r\n //! events\r\n /**\r\n * The event emitter responsible for firing `select` events. Fired when the `selected` state is set to true.\r\n */\r\n readonly selectEvent = output<void>({ alias: 'select' });\r\n /**\r\n * The event emitter responsible for firing `unselect` events. Fired when the `selected` state is set to false.\r\n */\r\n readonly unselectEvent = output<void>({ alias: 'unselect' });\r\n /**\r\n * The event emitter responsible for firing `change` events. Fired when the `selected` state is changed.\r\n */\r\n readonly changeEvent = output<boolean>({ alias: 'change' });\r\n /**\r\n * The event emitter responsible for firing `touched` events. Fired when the component is marked as touched (e.g., on blur).\r\n */\r\n readonly touchedEvent = output<void>({ alias: 'touched' });\r\n\r\n //! [(selected)] two-way binding\r\n // can be set using a no-value argument\r\n readonly selected = signal<boolean>(false);\r\n /**\r\n * The selection state of the component. Coercible into a boolean.\r\n */\r\n @Input('selected')\r\n set _selected(v: any) {\r\n this.selected.set(coerceBooleanProperty(v));\r\n }\r\n @HostBinding('attr.selected')\r\n @HostBinding('class.ard-selected')\r\n get _selectedHostAttribute(): boolean {\r\n return this.selected();\r\n }\r\n /**\r\n * The event emitter responsible for firing `selectedChange` events. Fired when the `selected` state is changed.\r\n */\r\n readonly selectedChange = output<boolean>();\r\n\r\n /**\r\n * Toggles the selected state. Emits all appropriate events.\r\n */\r\n toggleSelected() {\r\n if (this.disabled() || this.readonly()) return;\r\n this.selected.update(v => !v);\r\n this._emitChange();\r\n this._emitTouched();\r\n }\r\n\r\n /**\r\n * Sets the state to \"selected\". Emits all appropriate events only if the state changes.\r\n */\r\n select() {\r\n if (this.disabled() || this.readonly()) return;\r\n this.selected.set(true);\r\n this._emitChange();\r\n this._emitTouched();\r\n }\r\n /**\r\n * Sets the state to \"unselected\". Emits all appropriate events only if the state changes.\r\n */\r\n unselect() {\r\n if (this.disabled() || this.readonly()) return;\r\n this.selected.set(false);\r\n this._emitChange();\r\n this._emitTouched();\r\n }\r\n\r\n readonly value = input<any>();\r\n\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(this._DEFAULTS.color);\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [`ard-color-${this.color()}`, `ard-radio-${this.selected() ? 'selected' : 'unselected'}`].join(' ')\r\n );\r\n\r\n //! event handlers\r\n onMousedown(): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this.focus();\r\n }\r\n onMouseup(): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this.focus();\r\n this.selected.set(true);\r\n this._emitChange();\r\n }\r\n\r\n //! radio-group access points\r\n readonly name = signal<string | null>(null);\r\n\r\n /**\r\n * Marks the radio button as needing checking for change detection.\r\n * This method is exposed because the parent radio group will directly\r\n * update bound properties of the radio button.\r\n */\r\n markForCheck() {\r\n // When group value changes, the button will not be notified. Use `markForCheck` to explicit\r\n // update radio button's status\r\n this._changeDetector.markForCheck();\r\n }\r\n}\r\n","<button\r\n #focusableElement\r\n class=\"ard-radio\"\r\n type=\"button\"\r\n [ngClass]=\"ngClasses()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (mousedown)=\"onMousedown()\"\r\n (mouseup)=\"onMouseup()\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-radio-circles\">\r\n <div class=\"ard-radio-outer-circle\"></div>\r\n <div class=\"ard-radio-inner-circle\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </div>\r\n <label [for]=\"htmlId()\">\r\n <ng-content></ng-content>\r\n </label>\r\n</button>\r\n\r\n<input\r\n class=\"ard-radio-input-element\"\r\n type=\"radio\"\r\n [name]=\"name()\"\r\n [id]=\"htmlId()\"\r\n [checked]=\"selected()\"\r\n [disabled]=\"disabled()\"\r\n [readOnly]=\"readonly()\"\r\n #radio\r\n/>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n Input,\r\n OnDestroy,\r\n OutputRefSubscription,\r\n ViewEncapsulation,\r\n computed,\r\n contentChildren,\r\n effect,\r\n forwardRef,\r\n model,\r\n output,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TakeChance as Random } from 'take-chance';\r\nimport { _FormFieldComponentBase, _formFieldComponentDefaults } from '../_internal/form-field-component';\r\nimport { ARD_FORM_FIELD_CONTROL } from '../form-field/form-field-child.token';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdiumRadioComponent } from './radio/radio.component';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-radio-group',\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./radio-group.component.scss'],\r\n host: {\r\n '[attr.tabindex]': 'null',\r\n '[attr.aria-label]': 'null',\r\n '[attr.aria-labelledby]': 'null',\r\n '[attr.aria-describedby]': 'null',\r\n role: 'radiogroup',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumRadioGroupComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ARD_FORM_FIELD_CONTROL,\r\n useExisting: ArdiumRadioGroupComponent,\r\n },\r\n ],\r\n})\r\nexport class ArdiumRadioGroupComponent extends _FormFieldComponentBase implements AfterContentInit, OnDestroy {\r\n private readonly _radios = contentChildren<ArdiumRadioComponent>(ArdiumRadioComponent, { descendants: true });\r\n\r\n @HostBinding('attr.id')\r\n get _htmlIdHostAttribute() {\r\n return this.htmlId();\r\n }\r\n\r\n constructor() {\r\n super(_formFieldComponentDefaults); // no need for injecting a token with default values\r\n\r\n effect(() => {\r\n this.name();\r\n this._updateRadioButtonNames();\r\n });\r\n effect(() => {\r\n this.readonly();\r\n this._updateReadonlyRadioButtons();\r\n });\r\n effect(() => {\r\n this.selected();\r\n this._checkSelectedRadioButton();\r\n });\r\n effect(() => {\r\n const radios = this._radios();\r\n if (!radios) return;\r\n\r\n setTimeout(() => {\r\n this._updateRadioButtonNames();\r\n }, 0);\r\n\r\n this._destroyChildSubscriptions();\r\n\r\n //sub to child component events\r\n for (const radio of radios) {\r\n this._childEventSubs.push(\r\n radio.blurEvent.subscribe(v => {\r\n this._handleBlurEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.focusEvent.subscribe(v => {\r\n this._handleFocusEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.selectedChange.subscribe((v: boolean) => {\r\n if (!v) return;\r\n this._handleChangeEvents(radio);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.touchedEvent.subscribe(() => {\r\n this._emitTouched();\r\n })\r\n );\r\n }\r\n });\r\n }\r\n\r\n //! value\r\n @Input()\r\n get value(): any | undefined {\r\n return this.selected()?.value();\r\n }\r\n set value(v: any) {\r\n this.writeValue(v);\r\n }\r\n\r\n readonly valueChange = output<any>();\r\n readonly changeEvent = output<any>({ alias: 'change' });\r\n\r\n private _valueBeforeInit: any;\r\n writeValue(v: any): void {\r\n if (this.value !== v) {\r\n if (!this._isContentInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n\r\n this._findRadioByValue(v);\r\n }\r\n setTimeout(() => {\r\n this._updateRadiosByValue();\r\n }, 0);\r\n }\r\n\r\n private _findRadioByValue(v: any): void {\r\n if (!this._radios) return;\r\n\r\n this.selected.set(this._radios().find(radio => v === radio.value()) ?? null);\r\n }\r\n\r\n /** Updates all child radios depending on the currently selected radio. */\r\n private _updateRadiosByValue(): void {\r\n if (!this._isContentInit) return;\r\n\r\n this._radios().forEach(radio => {\r\n radio.selected.set(this.value === radio.value());\r\n radio.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * The currently selected radio button. If set to a new radio button, the radio group value\r\n * will be updated to match the new selected button.\r\n */\r\n readonly selected = model<Nullable<ArdiumRadioComponent>>(null);\r\n\r\n private _checkSelectedRadioButton() {\r\n const s = this.selected();\r\n if (s && !s.selected()) {\r\n s.selected.set(true);\r\n s.markForCheck();\r\n }\r\n }\r\n\r\n //! name\r\n /** Name of the radio button group. All radio buttons inside this group will use this name. */\r\n readonly name = computed<string>(() => this.htmlName() ?? Random.id());\r\n\r\n private _updateRadioButtonNames(): void {\r\n if (this._radios()) {\r\n this._radios().forEach(radio => {\r\n radio.name.set(this.name());\r\n radio.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n private _updateReadonlyRadioButtons(): void {\r\n if (this._radios()) {\r\n this._radios().forEach(radio => {\r\n radio.readonly.set(this.readonly());\r\n radio.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n //! update handlers\r\n private _handleBlurEvents(event: FocusEvent): void {\r\n this.onBlur(event);\r\n }\r\n private _handleFocusEvents(event: FocusEvent): void {\r\n this.onFocus(event);\r\n }\r\n private _handleChangeEvents(selected: ArdiumRadioComponent): void {\r\n this.writeValue(selected.value());\r\n\r\n this._emitChange();\r\n }\r\n\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.changeEvent.emit(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n //! hooks\r\n private _childEventSubs: OutputRefSubscription[] = [];\r\n private _isContentInit = false;\r\n ngAfterContentInit(): void {\r\n this._isContentInit = true;\r\n\r\n if (this._valueBeforeInit !== undefined) {\r\n this.writeValue(this._valueBeforeInit);\r\n }\r\n\r\n setTimeout(() => {\r\n this._updateRadioButtonNames();\r\n }, 0);\r\n\r\n //sub to child component events\r\n for (const radio of this._radios()) {\r\n this._childEventSubs.push(\r\n radio.blurEvent.subscribe(v => {\r\n this._handleBlurEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.focusEvent.subscribe(v => {\r\n this._handleFocusEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.selectedChange.subscribe((v: boolean) => {\r\n if (!v) return;\r\n this._handleChangeEvents(radio);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.touchedEvent.subscribe(() => {\r\n this._emitTouched();\r\n })\r\n );\r\n }\r\n }\r\n override ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n this._destroyChildSubscriptions();\r\n }\r\n private _destroyChildSubscriptions(): void {\r\n for (const sub of this._childEventSubs) {\r\n sub.unsubscribe();\r\n }\r\n this._childEventSubs = [];\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumRadioGroupComponent } from './radio-group.component';\r\nimport { ArdiumRadioComponent } from './radio/radio.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumRadioGroupComponent, ArdiumRadioComponent],\r\n imports: [CommonModule],\r\n exports: [ArdiumRadioGroupComponent, ArdiumRadioComponent],\r\n})\r\nexport class ArdiumRadioModule {}\r\n","import { Signal, computed } from '@angular/core';\r\nimport { arraySignal } from '@ardium-ui/devkit';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { evaluate, isArray, isDefined, isObject, isPrimitive } from 'simple-bool';\r\nimport { ArdOptionSimple, CompareWithFn } from '../../types/item-storage.types';\r\nimport { Nullable } from '../../types/utility.types';\r\n\r\nexport interface ItemStorageHostDefaults {\r\n valueFrom: string;\r\n labelFrom: string;\r\n disabledFrom: string;\r\n}\r\nexport interface SimpleItemStorageHost {\r\n readonly valueFrom: Signal<Nullable<string>>;\r\n readonly labelFrom: Signal<Nullable<string>>;\r\n readonly disabledFrom: Signal<Nullable<string>>;\r\n readonly invertDisabled: Signal<boolean>;\r\n readonly DEFAULTS: ItemStorageHostDefaults;\r\n readonly compareWith: Signal<Nullable<CompareWithFn>>;\r\n readonly multiselectable: Signal<boolean>;\r\n readonly isValueRequired: Signal<boolean>;\r\n readonly maxSelectedItems: Signal<Nullable<number>>;\r\n readonly _componentId: string;\r\n readonly _componentName: string;\r\n}\r\n\r\nexport class SimpleItemStorage {\r\n private readonly _items = arraySignal<ArdOptionSimple>([]);\r\n\r\n constructor(private readonly _ardParentComp: SimpleItemStorageHost) {}\r\n\r\n /**\r\n * Gets all items.\r\n */\r\n readonly items = computed<ArdOptionSimple[]>(() => [...this._items()]);\r\n /**\r\n * Gets all currently selected items.\r\n */\r\n readonly selectedItems = computed<ArdOptionSimple[]>(() => this.items().filter(item => item.selected));\r\n /**\r\n * Gets all currently highlighted items.\r\n */\r\n readonly highlightedItems = computed<ArdOptionSimple[]>(() => this.items().filter(item => item.highlighted));\r\n /**\r\n * Gets the values of the currently selected items.\r\n */\r\n readonly value = computed(() => this._itemsToValue(this.selectedItems()));\r\n /**\r\n * Maps an array of items into their values.\r\n * @param items The items to convert to value.\r\n * @returns An array of item values.\r\n */\r\n private _itemsToValue(items: ArdOptionSimple[]): any[] {\r\n return items.map(item => item.value);\r\n }\r\n\r\n private _updateItems(updateFn: (item: ArdOptionSimple) => ArdOptionSimple): void {\r\n this._items.map(updateFn);\r\n }\r\n private _updateItemsFromArray(updateFn: (item: ArdOptionSimple) => ArdOptionSimple, itemsToUpdate: ArdOptionSimple[]): void {\r\n this._items.update(items => {\r\n for (const itemToUpdate of itemsToUpdate) {\r\n const item = items[itemToUpdate.index];\r\n if (item) {\r\n items[itemToUpdate.index] = updateFn(item);\r\n }\r\n }\r\n return items;\r\n });\r\n }\r\n\r\n /**\r\n * Returns true if at least one item is highlighted, otherwise false.\r\n */\r\n readonly isAnyItemHighlighted = computed(() => this.highlightedItems().length > 0);\r\n /**\r\n * Finds all highlightable items. An item is considered highlightable if it is **not** disabled.\r\n * @returns An array of all highlightable items.\r\n */\r\n private readonly _highlightableItems = computed(() =>\r\n this.items().filter(item => !item.disabled && (this.isItemLimitReached() ? item.selected : true))\r\n );\r\n\r\n readonly itemsLeftUntilLimit = computed(() =>\r\n this._ardParentComp.multiselectable() && isDefined(this._ardParentComp.maxSelectedItems())\r\n ? this._ardParentComp.maxSelectedItems()! - this.selectedItems().length\r\n : 1\r\n );\r\n /**\r\n * Returns true if the parent component defines the limit of concurrently selectable items and the amount of currently selected items matches that limit. Otherwise returns false.\r\n *\r\n * **TLDR**: true if `maxSelectedItems` is defined and the number of selected items matches that value.\r\n */\r\n readonly isItemLimitReached = computed(() => this.itemsLeftUntilLimit() <= 0);\r\n\r\n private _areItemsInitialized = false;\r\n /**\r\n * Sets the component's items. Takes into account the values defined by the parent component for `valueFrom`, `labelFrom`, and `disabledFrom`.\r\n * @param items An array of items to be set as the component's items.\r\n * @returns true if at least one of the items is of primitive type, otherwise false.\r\n */\r\n setItems(items: unknown[]): void {\r\n this._areItemsInitialized = true;\r\n let areItemsPrimitive = false;\r\n if (items.some(isPrimitive)) {\r\n items = items.map(this._primitiveItemsMapFn);\r\n areItemsPrimitive = true;\r\n }\r\n\r\n this._items.set(\r\n items.map((item, index) => {\r\n return this._setItemsMapFn(item, index, areItemsPrimitive);\r\n })\r\n );\r\n if (this._valueBeforeItemsSet !== null) {\r\n this.writeValue(this._valueBeforeItemsSet);\r\n this._valueBeforeItemsSet = null;\r\n }\r\n }\r\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\r\n return { value: item };\r\n }\r\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdOptionSimple {\r\n if (areItemsPrimitive) {\r\n return {\r\n itemData: rawItemData,\r\n index: index,\r\n value: rawItemData.value,\r\n label: rawItemData.value?.toString?.() ?? String(rawItemData.value),\r\n disabled: false,\r\n selected: false,\r\n highlighted: false,\r\n };\r\n }\r\n //get value\r\n const valuePath =\r\n this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom() ?? this._ardParentComp.DEFAULTS.valueFrom;\r\n const value = resolvePath(rawItemData, valuePath);\r\n\r\n //get label\r\n const labelPath =\r\n this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom() ?? this._ardParentComp.DEFAULTS.labelFrom;\r\n const label = resolvePath(rawItemData, labelPath) ?? value;\r\n\r\n //get disabled\r\n const disabledPath = this._ardParentComp.disabledFrom() ?? this._ardParentComp.DEFAULTS.disabledFrom;\r\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\r\n if (this._ardParentComp.invertDisabled()) {\r\n disabled = !disabled;\r\n }\r\n\r\n //return\r\n return {\r\n itemData: rawItemData,\r\n index: index,\r\n value: value,\r\n label: label?.toString?.() ?? String(label),\r\n disabled: disabled,\r\n selected: false,\r\n highlighted: false,\r\n };\r\n }\r\n\r\n\r\n private _valueBeforeItemsSet: any = null;\r\n /**\r\n * Writes a new value to the item storage. Selects the correct items based on the provided values, warning the user if the value is not found.\r\n * @param ngModel The value of the ngModel to set.\r\n */\r\n writeValue(ngModel: any): void {\r\n if (!this._areItemsInitialized) {\r\n this._valueBeforeItemsSet = ngModel;\r\n return;\r\n }\r\n this._forceUnselectAll();\r\n\r\n if (!this._validateWriteValue(ngModel)) return;\r\n\r\n const selectItemByValue = (value: any) => {\r\n if (value === null || value === undefined) {\r\n this.unselectAll();\r\n return;\r\n }\r\n const item = this.findItemByValue(value);\r\n\r\n if (item) {\r\n this.selectItem(item);\r\n return;\r\n }\r\n console.warn(\r\n `ARD-WA${this._ardParentComp._componentId}3: Couldn't find an item with value ${value?.toString?.() || String(value)}.`\r\n );\r\n };\r\n\r\n if (this._ardParentComp.multiselectable()) {\r\n for (const modelValue of ngModel) {\r\n selectItemByValue(modelValue);\r\n }\r\n } else {\r\n selectItemByValue(ngModel);\r\n }\r\n }\r\n\r\n private _validateSingleElementType(item: unknown): boolean {\r\n if (!isDefined(this._ardParentComp.compareWith()) && isObject(item) && this._ardParentComp.valueFrom()) {\r\n if (!this._ardParentComp.multiselectable() && Array.isArray(item)) {\r\n console.error(\r\n `ARD-FT${this._ardParentComp._componentId}0s: a non-multiselectable <ard-${this._ardParentComp._componentName}> expects its value not to be an array, got \"[${item}]\". If the value is supposed to be an array, use [compareWith].`\r\n );\r\n return false;\r\n }\r\n\r\n let jsonItemString = `${item}`;\r\n try {\r\n jsonItemString = JSON.stringify(item);\r\n } catch (error) {\r\n /* ignore */\r\n }\r\n\r\n console.error(\r\n `ARD-FT${this._ardParentComp._componentId}2: Setting object ${jsonItemString} as your value with [valueFrom] is not allowed unless [compareWith] is used.`\r\n );\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Validates that all values of the value to be written are able to be accurately compared against the storage items.\r\n *\r\n * An item from the ngModel array is considered valid if it is a primitive value, or if all of the below points are met:\r\n * 1. The parent component defines the `compareWith` property.\r\n * 2. The ngModel value item is an object (or array).\r\n * 3. The parent component has a defined `valueFrom` property.\r\n * @param ngModel The value of ngModel to validate.\r\n * @returns true if all items are valid, otherwise false.\r\n */\r\n private _validateWriteValue(ngModel: unknown): boolean {\r\n if (this._ardParentComp.multiselectable()) {\r\n if (!isArray(ngModel)) {\r\n throw new Error(\r\n `ARD-FT${this._ardParentComp._componentId}0m: a multiselectable <ard-${this._ardParentComp._componentName}> expects its value to be an array, got \"${ngModel}\".`\r\n );\r\n }\r\n return ngModel.every(v => this._validateSingleElementType(v));\r\n }\r\n return this._validateSingleElementType(ngModel);\r\n }\r\n\r\n findItemByValue(valueToFind: any): ArdOptionSimple | undefined {\r\n let findBy: (item: ArdOptionSimple) => boolean;\r\n const cmpFn = this._ardParentComp.compareWith();\r\n if (isDefined(cmpFn)) {\r\n findBy = item => cmpFn(valueToFind, item.value);\r\n } else {\r\n findBy = item => item.value === valueToFind;\r\n }\r\n return this.items().find(item => findBy(item));\r\n }\r\n\r\n /**\r\n * Unselects all selected items.\r\n *\r\n * If the parent component requires at least one value to be selected at all times, the first selected items is left selected.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n unselectAll(): any[] {\r\n return this.unselectItem(...this.selectedItems());\r\n }\r\n /**\r\n * Unselects all selected items, no matter what the component settings are.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n private _forceUnselectAll(): any[] {\r\n const ret = this.value();\r\n\r\n this._updateItems(item => ({ ...item, selected: false }));\r\n\r\n return ret;\r\n }\r\n /**\r\n * Selects one or multiple items.\r\n *\r\n * Accounts for the limit of concurrently selected items defined by the parent component.\r\n * @param items A rest operator array of item objects to be selected.\r\n * @returns A tuple containing three arrays, all mapped to only their values:\r\n * - An array of items selected,\r\n * - An array of items unselected,\r\n * - An array of items failed to select due to the limit.\r\n */\r\n selectItem(...items: ArdOptionSimple[]): [any[], any[], any[]] {\r\n if (this.isItemLimitReached()) {\r\n return [[], [], this._itemsToValue(items)];\r\n }\r\n\r\n const itemsLeftUntilLimit = this.itemsLeftUntilLimit();\r\n let itemsSelectedCount = 0;\r\n const newItemsArray = [...this.items()];\r\n for (const item of items) {\r\n itemsSelectedCount++;\r\n if (item.selected) continue;\r\n if (itemsSelectedCount > itemsLeftUntilLimit) {\r\n break;\r\n }\r\n newItemsArray[item.index] = { ...item, selected: true };\r\n }\r\n\r\n const itemsUnselected = this._ardParentComp.multiselectable()\r\n ? []\r\n : this.selectedItems().filter(item => !items.find(v => v.value === item.value));\r\n \r\n for (const item of itemsUnselected) {\r\n newItemsArray[item.index] = { ...item, selected: false };\r\n }\r\n \r\n const itemsSelected = items.slice(0, itemsSelectedCount);\r\n const itemsFailedToSelect = items.slice(itemsSelectedCount);\r\n\r\n const isAnyNewItemToBeSelected = !!itemsSelected.find(item => !this.selectedItems().find(v => v.value === item.value));\r\n\r\n if (isAnyNewItemToBeSelected) {\r\n this._items.set(newItemsArray);\r\n }\r\n\r\n return [this._itemsToValue(itemsSelected), this._itemsToValue(itemsUnselected), this._itemsToValue(itemsFailedToSelect)];\r\n }\r\n /**\r\n *\r\n * @param items A rest operator array of item objects to be unselected.\r\n * @returns An array of items unselected, mapped to only their values.\r\n */\r\n unselectItem(...items: ArdOptionSimple[]): any[] {\r\n let shouldKeepFirstSelected = this._ardParentComp.isValueRequired();\r\n\r\n const unselectedItems: ArdOptionSimple[] = [];\r\n this._updateItemsFromArray(item => {\r\n if (item.selected && shouldKeepFirstSelected) {\r\n shouldKeepFirstSelected = false;\r\n return item;\r\n }\r\n if (item.selected) {\r\n unselectedItems.push(item);\r\n }\r\n return {\r\n ...item,\r\n selected: false,\r\n };\r\n }, items);\r\n\r\n return this._itemsToValue(unselectedItems);\r\n }\r\n\r\n /**\r\n * Unhighlights all currently highlighted items.\r\n */\r\n unhighlightAll(): void {\r\n this._updateItems(item => ({ ...item, highlighted: false }));\r\n }\r\n /**\r\n * Highlights the given item, while unhighlighting all other items. Does nothing when the item is disabled.\r\n * @param item The item to be highlighted.\r\n * @returns The highlighted item.\r\n */\r\n highlightSingleItem(item: ArdOptionSimple): ArdOptionSimple | null {\r\n if (!item || item.disabled) return null;\r\n this.unhighlightAll();\r\n return this.highlightItem(item);\r\n }\r\n /**\r\n * Highlights all given items.\r\n * @param items A rest operator array of items to be highlighted.\r\n * @returns The last highlighted item.\r\n */\r\n highlightItem(...items: ArdOptionSimple[]): ArdOptionSimple {\r\n this._updateItemsFromArray(item => ({ ...item, highlighted: true }), items);\r\n return items.last();\r\n }\r\n /**\r\n * Unhighlights all given items.\r\n * @param items A rest operator array of items to be unhighlighted.\r\n */\r\n unhighlightItem(...items: ArdOptionSimple[]): void {\r\n this._updateItemsFromArray(item => ({ ...item, highlighted: false }), items);\r\n }\r\n /**\r\n * Highlights the first item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightFirstItem(): ArdOptionSimple | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this._highlightableItems().first();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights the last item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightLastItem(): ArdOptionSimple | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this._highlightableItems().last();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights all non-disabled items.\r\n */\r\n highlightAllItems(): void {\r\n const itemsToHighlight = this._highlightableItems();\r\n\r\n this.highlightItem(...itemsToHighlight);\r\n }\r\n /**\r\n * Highlights the next non-disabled item defined by the offset amount.\r\n *\r\n * If `hasShift` is set to true, all originally highlighted items are kept. Otherwise, all original items are unselected.\r\n * @param offset The amount of items to offset the highlight by.\r\n * @param hasShift Whether the user has the shift key pressed.\r\n * @returns The item highlighted.\r\n */\r\n highlightNextItem(offset: number, hasShift?: boolean): ArdOptionSimple | null {\r\n if (!this.isAnyItemHighlighted()) {\r\n return this.highlightFirstItem();\r\n }\r\n const currentItem = this.highlightedItems().last();\r\n const itemsWithoutDisabled = this._items().filter(item => !item.disabled && (!this.isItemLimitReached() || item.selected));\r\n const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index === currentItem.index);\r\n\r\n let nextItemIndex = currentIndexInItems + offset;\r\n if (nextItemIndex >= itemsWithoutDisabled.length) {\r\n nextItemIndex -= itemsWithoutDisabled.length;\r\n }\r\n if (nextItemIndex < 0) {\r\n nextItemIndex += itemsWithoutDisabled.length;\r\n }\r\n const itemToHighlight = itemsWithoutDisabled[nextItemIndex];\r\n\r\n if (hasShift && this._ardParentComp.multiselectable()) {\r\n if (itemToHighlight.highlighted) {\r\n this.unhighlightItem(currentItem);\r\n }\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n return this.highlightSingleItem(itemToHighlight);\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n HostBinding,\r\n HostListener,\r\n Input,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { BooleanLike, coerceArrayProperty, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { ArdFormFieldControl } from '../form-field/form-field-child.token';\r\nimport { ArdOptionSimple, CompareWithFn, OptionContext } from '../types/item-storage.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { _FormFieldComponentBase, _FormFieldComponentDefaults, _formFieldComponentDefaults } from './form-field-component';\r\nimport { SimpleItemStorage, SimpleItemStorageHost } from './item-storages/simple-item-storage';\r\n\r\nexport interface _SelectableListComponentDefaults extends _FormFieldComponentDefaults {\r\n valueFrom: string;\r\n labelFrom: string;\r\n disabledFrom: string;\r\n compareWith: Nullable<CompareWithFn>;\r\n multiselectable: boolean;\r\n requireValue: boolean;\r\n invertDisabled: boolean;\r\n maxSelectedItems: Nullable<number>;\r\n}\r\nexport const _selectableListComponentDefaults: _SelectableListComponentDefaults = {\r\n ..._formFieldComponentDefaults,\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n disabledFrom: 'disabled',\r\n compareWith: undefined,\r\n multiselectable: false,\r\n requireValue: false,\r\n invertDisabled: false,\r\n maxSelectedItems: undefined,\r\n};\r\n\r\n@Directive()\r\nexport abstract class _SelectableListComponentBase\r\n extends _FormFieldComponentBase\r\n implements ControlValueAccessor, SimpleItemStorageHost, ArdFormFieldControl\r\n{\r\n protected override readonly _DEFAULTS!: _SelectableListComponentDefaults;\r\n\r\n //! public constants\r\n readonly itemStorage = new SimpleItemStorage(this);\r\n readonly element!: HTMLElement;\r\n readonly DEFAULTS = this._DEFAULTS;\r\n\r\n abstract readonly _componentId: string;\r\n abstract readonly _componentName: string;\r\n\r\n private readonly _cd = inject(ChangeDetectorRef);\r\n\r\n //! binding-related inputs\r\n readonly valueFrom = input<string>(this._DEFAULTS.valueFrom);\r\n readonly labelFrom = input<string>(this._DEFAULTS.labelFrom);\r\n readonly disabledFrom = input<string>(this._DEFAULTS.disabledFrom);\r\n readonly compareWith = input<Nullable<CompareWithFn>>(this._DEFAULTS.compareWith);\r\n\r\n //! items setter/getter\r\n @Input()\r\n get items(): any[] {\r\n return this.itemStorage.items();\r\n }\r\n set items(value: any) {\r\n if (!Array.isArray(value)) value = coerceArrayProperty(value);\r\n\r\n this.itemStorage.setItems(value);\r\n }\r\n\r\n //! multiselectable\r\n readonly multiselectable = input<boolean, BooleanLike>(this._DEFAULTS.multiselectable, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n @HostBinding('attr.multiple')\r\n @HostBinding('class.ard-multiselect')\r\n get _multiselectableHostAttribute() {\r\n return this.multiselectable();\r\n }\r\n\r\n readonly singleselectable = computed(() => !this.multiselectable());\r\n\r\n //! require value\r\n readonly requireValue = input<boolean, BooleanLike>(this._DEFAULTS.requireValue, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly isValueRequired = computed(() => this.requireValue() || !this.multiselectable());\r\n\r\n @HostBinding('class.ard-require-value')\r\n get _requireValueHostAttribute() {\r\n return this.requireValue();\r\n }\r\n\r\n //! coerced properties\r\n readonly invertDisabled = input<boolean, BooleanLike>(this._DEFAULTS.invertDisabled, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n readonly maxSelectedItems = input<Nullable<number>, any>(this._DEFAULTS.maxSelectedItems, {\r\n transform: v => coerceNumberProperty(v, undefined),\r\n });\r\n\r\n //! control value accessor\r\n //override the writeValue and setDisabledState defined in _NgModelComponent\r\n override setDisabledState(state: boolean): void {\r\n this.disabled.set(state);\r\n this._cd.markForCheck();\r\n }\r\n writeValue(ngModel: any[]): void {\r\n this.itemStorage.writeValue(ngModel);\r\n this._cd.markForCheck();\r\n }\r\n\r\n //! change & touch event emitters\r\n readonly touched = signal<boolean>(false);\r\n\r\n @HostBinding('class.ard-touched')\r\n get _touchedHostAttribute(): boolean {\r\n return this.touched();\r\n }\r\n\r\n protected _emitChange(): void {\r\n const value = this.singleselectable() ? this.itemStorage.value()[0] : this.itemStorage.value();\r\n this._onChangeRegistered?.(value);\r\n this.valueChange.emit(value);\r\n }\r\n protected _onTouched(): void {\r\n if (this.touched()) return;\r\n\r\n this._onTouchedRegistered?.();\r\n this.touched.set(true);\r\n }\r\n\r\n //! focus & blur handlers\r\n private readonly lastBlurTimestamp = signal<Nullable<number>>(undefined);\r\n override onFocus(event: FocusEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n super.onFocus(event);\r\n\r\n const lbt = this.lastBlurTimestamp();\r\n if (this.touched() || !lbt || lbt + 1 < Date.now()) return;\r\n this.lastBlurTimestamp.set(null);\r\n\r\n this._onTouched();\r\n }\r\n override onBlur(event: FocusEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n super.onBlur(event);\r\n\r\n if (!this.touched()) this.lastBlurTimestamp.set(Date.now());\r\n }\r\n\r\n //! getters\r\n readonly highlightedItems = computed<ArdOptionSimple[]>(() => this.itemStorage.highlightedItems());\r\n readonly firstHighlightedItem = computed<Nullable<ArdOptionSimple>>(() => this.highlightedItems()?.first());\r\n readonly isItemLimitReached = computed(() => this.itemStorage.isItemLimitReached());\r\n\r\n //! context providers\r\n readonly optionContextGenerator = computed<(item: ArdOptionSimple) => OptionContext<ArdOptionSimple>>(() => item => ({\r\n $implicit: item,\r\n item,\r\n index: item.index,\r\n value: item.value,\r\n label: item.label,\r\n selected: item.selected,\r\n highlighted: item.highlighted,\r\n itemData: item.itemData,\r\n disabled: item.disabled,\r\n }));\r\n\r\n //! value input & output\r\n @Input()\r\n set value(newValue: any) {\r\n if (this.multiselectable() && !Array.isArray(newValue)) newValue = coerceArrayProperty(newValue);\r\n this.writeValue(newValue);\r\n }\r\n readonly valueChange = output<any[] | any>();\r\n\r\n //! output events\r\n readonly addEvent = output<any[]>({ alias: 'add' });\r\n readonly removeEvent = output<any[]>({ alias: 'remove' });\r\n\r\n //! item selection handlers\r\n toggleItem(item: ArdOptionSimple): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (item.selected) {\r\n if (this.singleselectable()) return;\r\n\r\n this.unselectItem(item);\r\n return;\r\n }\r\n this.selectItem(item);\r\n }\r\n selectItem(...items: ArdOptionSimple[]): void {\r\n if (this.disabled() || this.readonly()) return;\r\n const [selected, unselected] = this.itemStorage.selectItem(...items);\r\n\r\n if (unselected.length > 0) this.removeEvent.emit(unselected);\r\n\r\n if (selected.length > 0) {\r\n this.addEvent.emit(selected);\r\n this._emitChange();\r\n }\r\n }\r\n unselectItem(...items: ArdOptionSimple[]): void {\r\n if (this.disabled() || this.readonly()) return;\r\n const unselected = this.itemStorage.unselectItem(...items);\r\n\r\n if (unselected.length > 0) this.removeEvent.emit(unselected);\r\n\r\n this._emitChange();\r\n }\r\n\r\n //! highligh-related\r\n\r\n readonly isMouseBeingUsed = signal<boolean>(false);\r\n @HostListener('mousemove')\r\n onMouseMove() {\r\n this.isMouseBeingUsed.set(true);\r\n }\r\n onItemMouseEnter(option: ArdOptionSimple, event: MouseEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (!this.isMouseBeingUsed) return;\r\n this.itemStorage.highlightSingleItem(option);\r\n event.stopPropagation();\r\n }\r\n onItemMouseLeave(option: ArdOptionSimple, event: MouseEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (!this.isMouseBeingUsed) return;\r\n this.itemStorage.unhighlightItem(option);\r\n event.stopPropagation();\r\n }\r\n\r\n //! click handlers\r\n onItemClick(option: ArdOptionSimple, event: MouseEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n event.stopPropagation();\r\n this.toggleItem(option);\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n if (this.disabled() || this.readonly()) {\r\n if (event.code === 'Space') {\r\n event.preventDefault();\r\n }\r\n return;\r\n }\r\n switch (event.code) {\r\n case 'Space':\r\n case 'Enter': {\r\n this._toggleHighlightedItems(event);\r\n return;\r\n }\r\n case 'ArrowRight': {\r\n this._highlightNext(event);\r\n return;\r\n }\r\n case 'ArrowLeft': {\r\n this._highlightPrevious(event);\r\n return;\r\n }\r\n case 'Home': {\r\n this._highlightFirst(event);\r\n return;\r\n }\r\n case 'End': {\r\n this._highlightLast(event);\r\n return;\r\n }\r\n case 'KeyA': {\r\n if (event.ctrlKey) {\r\n this._highlightAll();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n private _toggleHighlightedItems(event: KeyboardEvent): void {\r\n if (!this.isFocused()) return;\r\n\r\n event.preventDefault();\r\n\r\n const highlightedItems = this.highlightedItems();\r\n\r\n if (highlightedItems.every(item => item.selected)) {\r\n this.unselectItem(...highlightedItems);\r\n } else {\r\n this.selectItem(...highlightedItems);\r\n }\r\n }\r\n private _highlightPrevious(event: KeyboardEvent): void {\r\n if (!this.isFocused()) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightNextItem(-1, event.shiftKey);\r\n }\r\n private _highlightNext(event: KeyboardEvent): void {\r\n if (!this.isFocused()) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightNextItem(+1, event.shiftKey);\r\n }\r\n private _highlightFirst(event: KeyboardEvent): void {\r\n if (!this.isFocused()) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightFirstItem();\r\n }\r\n private _highlightLast(event: KeyboardEvent): void {\r\n if (!this.isFocused()) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightLastItem();\r\n }\r\n private _highlightAll(): void {\r\n this.itemStorage.highlightAllItems();\r\n }\r\n}\r\n","import { FormElementAppearance, FormElementVariant } from '../types/theming.types';\r\n\r\nexport const SegmentVariant = {\r\n ...FormElementVariant,\r\n RoundedConnected: 'rounded-connected',\r\n SharpConnected: 'sharp-connected',\r\n PillConnected: 'pill-connected',\r\n} as const;\r\nexport type SegmentVariant = (typeof SegmentVariant)[keyof typeof SegmentVariant];\r\n\r\nexport const SegmentAppearance = {\r\n ...FormElementAppearance,\r\n FilledStrong: 'filled-strong',\r\n OutlinedStrong: 'outlined-strong',\r\n} as const;\r\nexport type SegmentAppearance = (typeof SegmentAppearance)[keyof typeof SegmentAppearance];\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _selectableListComponentDefaults, _SelectableListComponentDefaults } from '../_internal/selectable-list-component';\r\nimport { OneAxisAlignment } from '../types/alignment.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { SegmentAppearance, SegmentVariant } from './segment.types';\r\n\r\nexport interface ArdSegmentDefaults extends _SelectableListComponentDefaults {\r\n appearance: SegmentAppearance;\r\n variant: SegmentVariant;\r\n color: ComponentColor;\r\n align: OneAxisAlignment;\r\n iconBased: boolean;\r\n compact: boolean;\r\n autoFocus: boolean;\r\n uniformWidths: boolean;\r\n itemsPerRow: number;\r\n}\r\n\r\nconst _segmentDefaults: ArdSegmentDefaults = {\r\n ..._selectableListComponentDefaults,\r\n appearance: SegmentAppearance.Outlined,\r\n variant: SegmentVariant.RoundedConnected,\r\n color: ComponentColor.Primary,\r\n align: OneAxisAlignment.Center,\r\n iconBased: false,\r\n compact: false,\r\n autoFocus: false,\r\n uniformWidths: false,\r\n itemsPerRow: Infinity,\r\n};\r\n\r\nexport const ARD_SEGMENT_DEFAULTS = new InjectionToken<ArdSegmentDefaults>('ard-segment-defaults', {\r\n factory: () => ({\r\n ..._segmentDefaults,\r\n }),\r\n});\r\n\r\nexport function provideSegmentDefaults(config: Partial<ArdSegmentDefaults>): Provider {\r\n return { provide: ARD_SEGMENT_DEFAULTS, useValue: { ..._segmentDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({ standalone: false, selector: 'ng-template[ard-segm-option-tmp]' })\r\nexport class ArdSegmentOptionTemplateDirective {\r\n constructor(readonly template: TemplateRef<any>) {}\r\n}\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n Inject,\r\n input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanLike, coerceBooleanProperty, coerceNumberProperty, NumberLike } from '@ardium-ui/devkit';\r\nimport { _SelectableListComponentBase } from '../_internal/selectable-list-component';\r\nimport { ARD_FORM_FIELD_CONTROL } from '../form-field/form-field-child.token';\r\nimport { OneAxisAlignment } from '../types/alignment.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdOptionSimple } from '../types/item-storage.types';\r\nimport { SimpleItemStorageHost } from './../_internal/item-storages/simple-item-storage';\r\nimport { ARD_SEGMENT_DEFAULTS, ArdSegmentDefaults } from './segment.defaults';\r\nimport { ArdSegmentOptionTemplateDirective } from './segment.directives';\r\nimport { SegmentAppearance, SegmentVariant } from './segment.types';\r\n\r\ninterface SegmentRow {\r\n options: ArdOptionSimple[];\r\n isNotFull?: boolean;\r\n}\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-segment',\r\n templateUrl: './segment.component.html',\r\n styleUrls: ['./segment.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSegmentComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: ARD_FORM_FIELD_CONTROL,\r\n useExisting: ArdiumSegmentComponent,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSegmentComponent extends _SelectableListComponentBase implements SimpleItemStorageHost, AfterContentInit {\r\n override readonly _componentId: string = '104';\r\n override readonly _componentName: string = 'segment';\r\n\r\n protected override readonly _DEFAULTS!: ArdSegmentDefaults;\r\n constructor(@Inject(ARD_SEGMENT_DEFAULTS) defaults: ArdSegmentDefaults) {\r\n super(defaults);\r\n }\r\n\r\n //! appearance\r\n readonly appearance = input<SegmentAppearance>(this._DEFAULTS.appearance);\r\n readonly variant = input<SegmentVariant>(this._DEFAULTS.variant);\r\n readonly color = input<ComponentColor>(this._DEFAULTS.color);\r\n readonly align = input<OneAxisAlignment>(this._DEFAULTS.align);\r\n\r\n readonly iconBased = input<boolean, BooleanLike>(this._DEFAULTS.iconBased, { transform: v => coerceBooleanProperty(v) });\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-align-${this.align()}`,\r\n this.iconBased() ? 'ard-icon-based' : '',\r\n this.compact() ? 'ard-compact' : '',\r\n this.itemRows().length > 1 ? 'ard-multirow' : 'ard-singlerow',\r\n ].join(' ')\r\n );\r\n\r\n //! coerced properties\r\n readonly autoFocus = input<boolean, BooleanLike>(this._DEFAULTS.autoFocus, { transform: v => coerceBooleanProperty(v) });\r\n readonly uniformWidths = input<boolean, BooleanLike>(this._DEFAULTS.uniformWidths, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly itemsPerRow = input<number, NumberLike>(this._DEFAULTS.itemsPerRow, {\r\n transform: v => {\r\n const newValue = coerceNumberProperty(v, this._DEFAULTS.itemsPerRow);\r\n if (newValue === 0) throw new Error(`ARD-FT1040a: Cannot set <ard-segment>'s [itemsPerRow] to 0.`);\r\n if (newValue < 0)\r\n throw new Error(`ARD-FT1040b: Cannot set <ard-segment>'s [itemsPerRow] to a negative value, got \"${newValue}\".`);\r\n if (newValue % 1 !== 0) {\r\n const roundedValue = Math.round(newValue) || 1; // round to nearest int, but never round to zero\r\n console.warn(\r\n new Error(\r\n `ARD-WA1040c: Cannot set <ard-segment>'s [itemsPerRow] to a non-interger value, got \"${newValue}\". The value was rounded to \"${roundedValue}\".`\r\n )\r\n );\r\n return Math.ceil(newValue);\r\n }\r\n return newValue;\r\n },\r\n });\r\n get itemsInActualRow(): number {\r\n return this.itemsPerRow() === Infinity ? this.items.length : this.itemsPerRow();\r\n }\r\n\r\n //! option template\r\n readonly optionTemplate = contentChild(ArdSegmentOptionTemplateDirective);\r\n\r\n //! lifecycle hooks\r\n ngAfterContentInit(): void {\r\n if (this.autoFocus() && !this.disabled() && !this.readonly()) {\r\n this.focus();\r\n }\r\n }\r\n\r\n //! item row getters\r\n readonly itemRows = computed<SegmentRow[]>(() => {\r\n const itemRows: SegmentRow[] = [];\r\n let currentRow: ArdOptionSimple[] = [];\r\n //get all rows\r\n for (const item of this.items) {\r\n //add item\r\n currentRow.push(item);\r\n\r\n //push if item amount reached the limit\r\n if (this.itemsPerRow() && currentRow.length === this.itemsPerRow()) {\r\n itemRows.push({ options: currentRow });\r\n currentRow = [];\r\n }\r\n }\r\n //push the last row if it is not empty\r\n if (currentRow.length !== 0) {\r\n itemRows.push({\r\n options: currentRow,\r\n isNotFull: Boolean(this.itemsPerRow()),\r\n });\r\n }\r\n return itemRows;\r\n });\r\n\r\n //! focus handler override\r\n override onFocus(event: FocusEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n super.onFocus(event);\r\n\r\n if (this.itemStorage.isAnyItemHighlighted()) return;\r\n\r\n this.itemStorage.highlightFirstItem();\r\n }\r\n\r\n override onBlur(event: FocusEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n super.onBlur(event);\r\n\r\n this.itemStorage.unhighlightAll();\r\n }\r\n}\r\n","<div\r\n #focusableElement\r\n class=\"ard-segment-container\"\r\n [class.ard-disabled]=\"disabled()\"\r\n [ariaDisabled]=\"disabled()\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-focus-visible]=\"isFocused() && !isMouseBeingUsed\"\r\n [class.ard-using-keyboard]=\"!isMouseBeingUsed()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n @for (row of itemRows(); track $index) {\r\n <div\r\n class=\"ard-segment-row\"\r\n [class.ard-segment-row-partial]=\"row.isNotFull\"\r\n [class.ard-segment-row-uniform]=\"uniformWidths() || itemsPerRow() < items.length\"\r\n [style]=\"{ '--ard-_segment-row-items': itemsInActualRow }\"\r\n >\r\n @for (option of row.options; track $index) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-segment-option\"\r\n tabindex=\"-1\"\r\n [class.ard-option-disabled]=\"option.disabled || (isItemLimitReached() && !option.selected)\"\r\n [class.ard-option-selected]=\"option.selected\"\r\n [class.ard-option-highlighted]=\"!readonly() && option.highlighted\"\r\n [ariaSelected]=\"option.selected\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n (click)=\"onItemClick(option, $event)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ option.label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"optionContextGenerator()(option)\"\r\n />\r\n </span>\r\n </div>\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumSegmentComponent } from './segment.component';\r\nimport { ArdSegmentOptionTemplateDirective } from './segment.directives';\r\n\r\n@NgModule({\r\n declarations: [ArdiumSegmentComponent, ArdSegmentOptionTemplateDirective],\r\n imports: [CommonModule],\r\n exports: [ArdiumSegmentComponent, ArdSegmentOptionTemplateDirective],\r\n})\r\nexport class ArdiumSegmentModule {}\r\n","export const ArdSlideToggleAppearance = {\r\n Raised: 'raised',\r\n Contained: 'contained',\r\n} as const;\r\nexport type ArdSlideToggleAppearance = (typeof ArdSlideToggleAppearance)[keyof typeof ArdSlideToggleAppearance];\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _booleanComponentDefaults, _BooleanComponentDefaults } from '../_internal/boolean-component';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ComponentColor } from './../types/colors.types';\r\nimport { ArdSlideToggleAppearance } from './slide-toggle.types';\r\n\r\nexport interface ArdSlideToggleDefaults extends _BooleanComponentDefaults {\r\n color: ComponentColor;\r\n appearance: ArdSlideToggleAppearance;\r\n icon: Nullable<string>;\r\n selectedIcon: Nullable<string>;\r\n unselectedIcon: Nullable<string>;\r\n}\r\n\r\nconst _slideToggleDefaults: ArdSlideToggleDefaults = {\r\n ..._booleanComponentDefaults,\r\n color: ComponentColor.Primary,\r\n appearance: ArdSlideToggleAppearance.Raised,\r\n icon: undefined,\r\n selectedIcon: undefined,\r\n unselectedIcon: undefined,\r\n};\r\n\r\nexport const ARD_SLIDE_TOGGLE_DEFAULTS = new InjectionToken<ArdSlideToggleDefaults>('ard-slide-toggle-defaults', {\r\n factory: () => ({\r\n ..._slideToggleDefaults,\r\n }),\r\n});\r\n\r\nexport function provideSlideToggleDefaults(config: Partial<ArdSlideToggleDefaults>): Provider {\r\n return { provide: ARD_SLIDE_TOGGLE_DEFAULTS, useValue: { ..._slideToggleDefaults, ...config } };\r\n}\r\n","import { ChangeDetectionStrategy, Component, Inject, ViewEncapsulation, computed, forwardRef, input } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { _BooleanComponentBase } from './../_internal/boolean-component';\r\nimport { ARD_SLIDE_TOGGLE_DEFAULTS, ArdSlideToggleDefaults } from './slide-toggle.defaults';\r\nimport { ArdSlideToggleAppearance } from './slide-toggle.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-slide-toggle',\r\n templateUrl: './slide-toggle.component.html',\r\n styleUrls: ['./slide-toggle.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSlideToggleComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSlideToggleComponent extends _BooleanComponentBase {\r\n protected override readonly _DEFAULTS!: ArdSlideToggleDefaults;\r\n constructor(@Inject(ARD_SLIDE_TOGGLE_DEFAULTS) defaults: ArdSlideToggleDefaults) {\r\n super(defaults);\r\n }\r\n\r\n protected readonly _componentId = '101';\r\n protected readonly _componentName = 'slide-toggle';\r\n\r\n readonly wrapperClass = input<Nullable<string>>(undefined);\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(this._DEFAULTS.color);\r\n readonly appearance = input<ArdSlideToggleAppearance>(this._DEFAULTS.appearance);\r\n readonly icon = input<Nullable<string>>(this._DEFAULTS.icon);\r\n readonly selectedIcon = input<Nullable<string>>(this._DEFAULTS.selectedIcon);\r\n readonly unselectedIcon = input<Nullable<string>>(this._DEFAULTS.unselectedIcon);\r\n\r\n readonly ngClasses = computed(() => {\r\n return [`ard-color-${this.color()}`, `ard-appearance-${this.appearance()}`, this.wrapperClass() ?? ''].join(' ');\r\n });\r\n}\r\n","<button\r\n type=\"button\"\r\n role=\"checkbox\"\r\n class=\"ard-slide-toggle\"\r\n [class.ard-slide-toggle-selected]=\"selectedAccountingForReverse()\"\r\n [attr.aria-checked]=\"selectedAccountingForReverse()\"\r\n [attr.aria-disabled]=\"disabled()\"\r\n [attr.id]=\"htmlId()\"\r\n [attr.name]=\"htmlName()\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (click)=\"toggleSelected()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slide-toggle-track\">\r\n <div class=\"ard-slide-toggle-track-overlay\"></div>\r\n </div>\r\n <div class=\"ard-slide-toggle-handle\">\r\n <div class=\"ard-focus-overlay\"></div>\r\n @if (selectedIcon() ?? icon()) {\r\n <div class=\"ard-slide-toggle-icon ard-icon-for-selected\">{{ selectedIcon() ?? icon() }}</div>\r\n }\r\n @if (unselectedIcon() ?? icon()) {\r\n <div class=\"ard-slide-toggle-icon ard-icon-for-unselected\">{{ unselectedIcon() ?? icon() }}</div>\r\n }\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumSlideToggleComponent } from './slide-toggle.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumSlideToggleComponent],\r\n imports: [CommonModule],\r\n exports: [ArdiumSlideToggleComponent],\r\n})\r\nexport class ArdiumSlideToggleModule {}\r\n","export const ArdRangeSelectionBehavior = {\r\n Push: 'push',\r\n Allow: 'allow',\r\n Block: 'block',\r\n} as const;\r\nexport type ArdRangeSelectionBehavior = typeof ArdRangeSelectionBehavior[keyof typeof ArdRangeSelectionBehavior];","import { Directive, TemplateRef } from '@angular/core';\r\nimport { SliderTooltipContext } from './slider.types';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ng-template[ard-slider-tooltip-tmp]',\r\n})\r\nexport class ArdSliderTooltipDirective {\r\n constructor(public template: TemplateRef<SliderTooltipContext>) {}\r\n}\r\n","export interface SliderTooltipContext {\r\n value: string | number;\r\n $implicit: string | number;\r\n}\r\n\r\nexport const SliderTooltipBehavior = {\r\n Always: 'always',\r\n Auto: 'auto',\r\n Never: 'never',\r\n} as const;\r\nexport type SliderTooltipBehavior = (typeof SliderTooltipBehavior)[keyof typeof SliderTooltipBehavior];\r\n\r\nexport const SliderDecorationPosition = {\r\n Top: 'top',\r\n Bottom: 'bottom',\r\n} as const;\r\nexport type SliderDecorationPosition = (typeof SliderDecorationPosition)[keyof typeof SliderDecorationPosition];\r\n\r\nexport interface SliderLabelObject {\r\n label: string | number;\r\n value: number;\r\n}\r\nexport interface _InternalSliderLabelObject {\r\n label: string;\r\n positionPercent: string;\r\n}\r\n\r\nexport interface SliderRange<T = number> {\r\n from: T;\r\n to: T;\r\n}\r\n\r\nexport type SliderTooltipFormatFn = (value: number) => string | number;\r\n","import { Overlay, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n Renderer2,\r\n Signal,\r\n ViewContainerRef,\r\n WritableSignal,\r\n computed,\r\n contentChild,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n untracked,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { BooleanLike, NumberLike, coerceArrayProperty, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { roundToMultiple, roundToPrecision } from 'more-rounding';\r\nimport { isDefined } from 'simple-bool';\r\nimport { _NgModelComponentBase, _NgModelComponentDefaults, _ngModelComponentDefaults } from '../_internal/ngmodel-component';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { ArdRangeSelectionBehavior } from './range-slider/range-slider.types';\r\nimport { ArdSliderTooltipDirective } from './slider.directive';\r\nimport {\r\n SliderDecorationPosition,\r\n SliderLabelObject,\r\n SliderTooltipBehavior,\r\n SliderTooltipFormatFn,\r\n _InternalSliderLabelObject,\r\n} from './slider.types';\r\n\r\nexport interface _AsbtractSliderDefaults extends _NgModelComponentDefaults {\r\n noTooltip: boolean;\r\n showValueTicks: boolean;\r\n formatTooltipFn: SliderTooltipFormatFn;\r\n min: number;\r\n max: number;\r\n step: number;\r\n shiftMultiplier: number;\r\n labelPosition: SliderDecorationPosition;\r\n labels: SliderLabelObject[] | number[] | null;\r\n color: SimpleComponentColor;\r\n compact: boolean;\r\n tooltipPosition: SliderDecorationPosition;\r\n tooltipBehavior: SliderTooltipBehavior;\r\n selectionBehavior: ArdRangeSelectionBehavior;\r\n minimumDistance: number;\r\n emitTouchedOnEveryChange: boolean;\r\n}\r\n\r\nexport const _asbtractSliderDefaults: _AsbtractSliderDefaults = {\r\n ..._ngModelComponentDefaults,\r\n noTooltip: false,\r\n showValueTicks: false,\r\n formatTooltipFn: v => v,\r\n min: 0,\r\n max: 100,\r\n step: 1,\r\n shiftMultiplier: 5,\r\n labelPosition: SliderDecorationPosition.Bottom,\r\n labels: [],\r\n color: SimpleComponentColor.Primary,\r\n compact: false,\r\n tooltipPosition: SliderDecorationPosition.Top,\r\n tooltipBehavior: SliderTooltipBehavior.Auto,\r\n selectionBehavior: ArdRangeSelectionBehavior.Allow,\r\n minimumDistance: 0,\r\n emitTouchedOnEveryChange: false,\r\n};\r\n\r\n@Directive()\r\nexport abstract class _AbstractSlider<T> extends _NgModelComponentBase {\r\n abstract readonly componentId: string;\r\n abstract readonly componentName: string;\r\n\r\n protected override readonly _DEFAULTS!: _AsbtractSliderDefaults;\r\n\r\n public readonly elementRef = viewChild<ElementRef<HTMLElement>>('track');\r\n\r\n protected readonly document = inject(DOCUMENT);\r\n protected readonly renderer = inject(Renderer2);\r\n protected readonly overlay = inject(Overlay);\r\n protected readonly scrollStrategyOpts = inject(ScrollStrategyOptions);\r\n protected readonly viewContainerRef = inject(ViewContainerRef);\r\n\r\n //! min, max, step sizes\r\n readonly min = input<number, NumberLike>(this._DEFAULTS.min, {\r\n transform: v => coerceNumberProperty(v, this._DEFAULTS.min),\r\n });\r\n readonly max = input<number, NumberLike>(this._DEFAULTS.max, {\r\n transform: v => coerceNumberProperty(v, this._DEFAULTS.max),\r\n });\r\n\r\n readonly step = input<number, NumberLike>(this._DEFAULTS.step, {\r\n transform: v => {\r\n const step = coerceNumberProperty(v, this._DEFAULTS.step);\r\n if (step === 0) {\r\n throw new Error(`ARD-FT${this.componentId}1a: Cannot set <ard-${this.componentName}>'s [step] to 0.`);\r\n }\r\n if (step < 0) {\r\n throw new Error(\r\n `ARD-FT${this.componentId}1b: Cannot set <ard-${this.componentName}>'s [step] to a negative value, got ${step}.`\r\n );\r\n }\r\n return step;\r\n },\r\n });\r\n\r\n readonly minMaxStepValueCleanup = effect(() => {\r\n this.min();\r\n this.max();\r\n this.step();\r\n untracked(() => this.cleanupValueAfterMinMaxStepChange());\r\n });\r\n readonly minMaxErrorCheck = effect(() => {\r\n const min = this.min();\r\n const max = this.max();\r\n if (min >= max) {\r\n throw new Error(\r\n `ARD-FT${this.componentId}0: Cannot set <ard-${this.componentName}>'s [min] to a value greater than or equal to [max], got min=${min} and max=${max}.`\r\n );\r\n }\r\n });\r\n\r\n readonly shiftMultiplier = input<number, NumberLike>(this._DEFAULTS.shiftMultiplier, {\r\n transform: v => coerceNumberProperty(v, this._DEFAULTS.shiftMultiplier),\r\n });\r\n\r\n protected readonly _stepSizeComputed = computed<number>(() => this.step() / Math.abs(this.min() - this.max()));\r\n\r\n //! value ticks\r\n readonly showValueTicks = input<boolean, BooleanLike>(this._DEFAULTS.showValueTicks, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n protected readonly _tickArray = computed<string[]>(() => {\r\n const newArr: number[] = [];\r\n\r\n let positionPercentCumulative = 0;\r\n while (positionPercentCumulative < 100) {\r\n newArr.push(positionPercentCumulative);\r\n positionPercentCumulative += this._stepSizeComputed() * 100;\r\n positionPercentCumulative = roundToPrecision(positionPercentCumulative, 6);\r\n }\r\n newArr.push(100);\r\n\r\n return newArr.map(v => `${v}%`);\r\n });\r\n\r\n //! labels\r\n private _transformLabelInput = (labels: SliderLabelObject[] | number[] | string | null | undefined): SliderLabelObject[] => {\r\n if (!isDefined(labels) || (Array.isArray(labels) && labels.length === 0)) {\r\n return [];\r\n }\r\n if (typeof labels === 'string') {\r\n labels = coerceArrayProperty(labels).map(Number);\r\n }\r\n if (isDefined(labels[0]) && typeof labels[0] === 'number') {\r\n return (labels as number[]).map(label => ({ label, value: label }));\r\n }\r\n return labels as SliderLabelObject[];\r\n };\r\n\r\n readonly labelPosition = input<SliderDecorationPosition>(this._DEFAULTS.labelPosition);\r\n\r\n readonly labels = input<SliderLabelObject[], SliderLabelObject[] | number[] | string | null | undefined>(\r\n this._transformLabelInput(this._DEFAULTS.labels),\r\n { transform: v => this._transformLabelInput(v) }\r\n );\r\n\r\n readonly labelObjects = computed<_InternalSliderLabelObject[]>(() => {\r\n const v = this.labels();\r\n if (!isDefined(v) || v.length === 0) {\r\n return [];\r\n }\r\n return v.map(label => {\r\n const v = this._clampValue(label.value);\r\n return {\r\n label: String(label.label),\r\n positionPercent: `${this._valueToPercent(v) * 100}%`,\r\n };\r\n });\r\n });\r\n\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n\r\n readonly compact = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-color-${this.color()}`,\r\n `ard-labels-${this.labelPosition()}`,\r\n `ard-tooltip-${this.tooltipPosition()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! determining transition\r\n readonly sliderTransition = computed(() => {\r\n const x = this._totalSteps();\r\n //this is determined using this graph: https://www.geogebra.org/calculator/nqgnhpap\r\n //capped at y=80\r\n //this specific graph is chosen because it looks the best in my opinion\r\n const formulaResult = (20 * (x + 200)) / (x + 20) - 80;\r\n const formulaResultRounded = roundToPrecision(formulaResult, 3);\r\n\r\n if (formulaResultRounded < 0) return '0';\r\n\r\n const transitionDuration = Math.min(80, formulaResultRounded);\r\n return transitionDuration + 'ms';\r\n });\r\n private readonly _totalSteps = computed<number>(() => (this.max() - this.min()) / this.step());\r\n\r\n //! value input & output\r\n //! abstract here\r\n protected abstract readonly _value: WritableSignal<T>;\r\n @Input()\r\n set value(newValue: T) {\r\n this.writeValue(newValue);\r\n }\r\n get value(): T {\r\n return this._value();\r\n }\r\n readonly valueChange = output<T>();\r\n\r\n //! writeValue\r\n //! abstract here\r\n abstract override writeValue(v: any): void; //* abstact\r\n\r\n abstract cleanupValueAfterMinMaxStepChange(): void; //* abstact\r\n\r\n //! methods for programmatic manipulation\r\n abstract reset(): void;\r\n\r\n protected _offset(offset: number, hasShift: boolean, handleId = 1): void {\r\n const stepSize = this._stepSizeComputed() * (hasShift ? this.shiftMultiplier() : 1);\r\n let newPercent = this._handlePositions()[handleId - 1] + stepSize * offset;\r\n newPercent = this._clampPercentValue(newPercent);\r\n this._setValueFromPercent(newPercent);\r\n if (this.emitTouchedOnEveryChange()) {\r\n this._emitTouched();\r\n }\r\n }\r\n protected _decrement(event: KeyboardEvent, forceShift: boolean = false): void {\r\n this._offset(-1, forceShift || event.shiftKey);\r\n }\r\n protected _increment(event: KeyboardEvent, forceShift: boolean = false): void {\r\n this._offset(+1, forceShift || event.shiftKey);\r\n }\r\n\r\n //! helper methods\r\n protected _clampValue(v: number): number {\r\n //clamp between min and max\r\n v = Math.min(v, this.max());\r\n v = Math.max(v, this.min());\r\n //round to the nearest step\r\n v -= this.min();\r\n v = roundToMultiple(v, this.step());\r\n v += this.min();\r\n return v;\r\n }\r\n protected _valueToPercent(v: number): number {\r\n const minMaxDifference = Math.abs(this.min() - this.max());\r\n return (v - this.min()) / minMaxDifference;\r\n }\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n //! tooltip\r\n readonly noTooltip = input<boolean, BooleanLike>(this._DEFAULTS.noTooltip, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly tooltipFormatFn = input<SliderTooltipFormatFn>(this._DEFAULTS.formatTooltipFn);\r\n\r\n readonly tooltipTemplate = contentChild(ArdSliderTooltipDirective);\r\n\r\n readonly tooltipPosition = input<SliderDecorationPosition>(SliderDecorationPosition.Top);\r\n readonly tooltipBehavior = input<SliderTooltipBehavior>(SliderTooltipBehavior.Auto);\r\n\r\n //! event handlers\r\n protected readonly _grabbedHandleId = signal<null | number>(null);\r\n protected _shouldCheckForMovement = false;\r\n protected _bodyHasClass = false;\r\n\r\n readonly emitTouchedOnEveryChange = input<boolean, BooleanLike>(this._DEFAULTS.emitTouchedOnEveryChange, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n readonly isSliderHandleGrabbed = computed(() => !!this._grabbedHandleId());\r\n\r\n readonly grabbedHandleEffect = effect(() => {\r\n if (this.isSliderHandleGrabbed()) {\r\n this.renderer.addClass(this.document.body, 'ard-body-slider-handle-grabbed');\r\n } else {\r\n this.renderer.removeClass(this.document.body, 'ard-body-slider-handle-grabbed');\r\n }\r\n });\r\n\r\n abstract onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void; //* abstact\r\n\r\n onPointerDownOnHandle(event: MouseEvent | TouchEvent, handleId = 1): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this._grabbedHandleId.set(handleId);\r\n this._shouldCheckForMovement = true;\r\n if (!this._bodyHasClass) {\r\n this._bodyHasClass = true;\r\n this.renderer.addClass(this.document.body, 'ard-prevent-touch-actions');\r\n }\r\n }\r\n\r\n abstract onPointerMove(event: MouseEvent | TouchEvent): void; //* abstact\r\n\r\n @HostListener('document:pointerup')\r\n @HostListener('document:touchend')\r\n onPointerUp(): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (!this._shouldCheckForMovement) return;\r\n if (this.emitTouchedOnEveryChange()) {\r\n this._emitTouched();\r\n }\r\n this._grabbedHandleId.set(null);\r\n this._shouldCheckForMovement = false;\r\n if (this._bodyHasClass) {\r\n this._bodyHasClass = false;\r\n this.renderer.removeClass(this.document.body, 'ard-prevent-touch-actions');\r\n }\r\n }\r\n\r\n //! position calculators\r\n protected abstract readonly _handlePositions: Signal<[number, number]>;\r\n\r\n readonly handlePositionsPercent = computed<[string, string]>(() => [\r\n this._handlePositions()[0] * 100 + '%',\r\n this._handlePositions()[1] * 100 + '%',\r\n ]);\r\n\r\n protected _setValueFromPercent(percent: number, handleId: number | null = 1): void {\r\n if (!handleId) return;\r\n if (this._handlePositions()[handleId - 1] === percent) return;\r\n this._value.set(this._percentValueToValue(percent, handleId));\r\n\r\n this._emitChange();\r\n }\r\n protected _writeValueFromEvent(event: MouseEvent | TouchEvent, handleId?: number | null): void {\r\n if (this.disabled() || this.readonly()) return;\r\n const percent = this._getPercentValueFromEvent(event);\r\n this._setValueFromPercent(percent, handleId);\r\n }\r\n protected abstract _percentValueToValue(percent: number, handleId?: number): T; //* abstact\r\n\r\n protected _getElementRect(): DOMRect {\r\n return this.elementRef()!.nativeElement.getBoundingClientRect();\r\n }\r\n protected _clampPercentValue(percent: number): number {\r\n //clamp between 0 and 1\r\n percent = Math.min(percent, 1);\r\n percent = Math.max(percent, 0);\r\n //round to the nearest step\r\n percent = roundToMultiple(percent, this._stepSizeComputed());\r\n return percent;\r\n }\r\n protected _getPercentValueFromEvent(event: MouseEvent | TouchEvent): number {\r\n const rect = this._getElementRect();\r\n let position: number;\r\n if (event instanceof MouseEvent) {\r\n position = event.clientX;\r\n } else {\r\n position = event.targetTouches[0].clientX;\r\n }\r\n const percent = (position - rect.left) / rect.width;\r\n return this._clampPercentValue(percent);\r\n }\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n switch (event.code) {\r\n case 'ArrowLeft':\r\n case 'ArrowDown': {\r\n this._decrement(event);\r\n return;\r\n }\r\n case 'ArrowRight':\r\n case 'ArrowUp': {\r\n this._increment(event);\r\n return;\r\n }\r\n case 'PageDown': {\r\n this._decrement(event, true);\r\n return;\r\n }\r\n case 'PageUp': {\r\n this._increment(event, true);\r\n return;\r\n }\r\n case 'Home': {\r\n this._decrement(event, true);\r\n // TODO: should go to min directly\r\n return;\r\n }\r\n case 'End': {\r\n this._increment(event, true);\r\n // TODO: should go to max directly\r\n return;\r\n }\r\n }\r\n }\r\n}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _asbtractSliderDefaults, _AsbtractSliderDefaults } from './abstract-slider';\r\n\r\nexport interface ArdSliderDefaults extends _AsbtractSliderDefaults {}\r\n\r\nconst _sliderDefaults: ArdSliderDefaults = {\r\n ..._asbtractSliderDefaults,\r\n};\r\n\r\nexport const ARD_SLIDER_DEFAULTS = new InjectionToken<ArdSliderDefaults>('ard-slider-defaults', {\r\n factory: () => ({\r\n ..._sliderDefaults,\r\n }),\r\n});\r\n\r\nexport function provideSliderDefaults(config: Partial<ArdSliderDefaults>): Provider {\r\n return { provide: ARD_SLIDER_DEFAULTS, useValue: { ..._sliderDefaults, ...config } };\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n HostListener,\r\n Inject,\r\n input,\r\n OnInit,\r\n signal,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { coerceNumberProperty, NumberLike } from '@ardium-ui/devkit';\r\nimport { roundToPrecision } from 'more-rounding';\r\nimport { isNumber, isObject } from 'simple-bool';\r\nimport { _AbstractSlider } from '../abstract-slider';\r\nimport { ARD_SLIDER_DEFAULTS, ArdSliderDefaults } from '../slider.defaults';\r\nimport { SliderRange, SliderTooltipContext } from '../slider.types';\r\nimport { ArdRangeSelectionBehavior } from './range-slider.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-range-slider',\r\n templateUrl: './range-slider.component.html',\r\n styleUrls: ['./range-slider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumRangeSliderComponent extends _AbstractSlider<SliderRange> implements OnInit {\r\n readonly componentId = '106';\r\n readonly componentName = 'range-slider';\r\n\r\n protected override readonly _DEFAULTS!: ArdSliderDefaults;\r\n constructor(@Inject(ARD_SLIDER_DEFAULTS) defaults: ArdSliderDefaults) {\r\n super(defaults);\r\n }\r\n\r\n protected readonly _value = signal<SliderRange>({ from: -Number.MIN_SAFE_INTEGER, to: Number.MIN_SAFE_INTEGER });\r\n\r\n //! writeValue\r\n private _isValidObject(v: any): v is SliderRange {\r\n return isObject(v) && isNumber(v['from']) && isNumber(v['to']);\r\n }\r\n private _isValidTuple(v: any): v is [number, number] {\r\n return Array.isArray(v) && isNumber(v[0]) && isNumber(v[1]) && v.length === 2;\r\n }\r\n private _normalizeSliderRange(v: SliderRange): SliderRange {\r\n if (v.from <= v.to) return v;\r\n return { from: v.to, to: v.from };\r\n }\r\n writeValue(v: any): void {\r\n if (!this._isValidObject(v) && !this._isValidTuple(v)) {\r\n this.reset();\r\n return;\r\n }\r\n let from = -Number.MIN_SAFE_INTEGER;\r\n let to = Number.MIN_SAFE_INTEGER;\r\n if (this._isValidObject(v)) {\r\n from = v.from;\r\n to = v.to;\r\n } else if (this._isValidTuple(v)) {\r\n from = v[0];\r\n to = v[1];\r\n }\r\n const fromClamped = this._clampValue(from);\r\n const toClamped = this._clampValue(to);\r\n const value = this._normalizeSliderRange({ from: fromClamped, to: toClamped });\r\n\r\n if (value.from === this.value.from && value.to === this.value.to) {\r\n return;\r\n }\r\n this._value.set(value);\r\n }\r\n override get value(): SliderRange {\r\n return this._normalizeSliderRange(this._value());\r\n }\r\n override set value(v: any) {\r\n this.writeValue(v);\r\n }\r\n cleanupValueAfterMinMaxStepChange(): void {\r\n const prevValue = this._value();\r\n this.writeValue(prevValue);\r\n const newValue = this._value();\r\n\r\n if (prevValue.from !== newValue.from || prevValue.to !== newValue.to) {\r\n this._emitChange();\r\n }\r\n }\r\n\r\n readonly selectionBehavior = input<ArdRangeSelectionBehavior>(this._DEFAULTS.selectionBehavior);\r\n readonly minimumDistance = input<number, NumberLike>(this._DEFAULTS.minimumDistance, {\r\n transform: v => coerceNumberProperty(v, this._DEFAULTS.minimumDistance),\r\n });\r\n\r\n //! tooltip updater\r\n protected readonly _tooltipValue = computed<SliderRange<string>>(() => {\r\n const v = this._value();\r\n const formatFn = this.tooltipFormatFn();\r\n\r\n const tooltipValue = {\r\n from: String(formatFn(v.from)),\r\n to: String(formatFn(v.to)),\r\n };\r\n return tooltipValue;\r\n });\r\n\r\n readonly tooltipContexts = computed<SliderRange<SliderTooltipContext>>(() => {\r\n return {\r\n from: {\r\n value: this._tooltipValue().from,\r\n $implicit: this._tooltipValue().from,\r\n },\r\n to: {\r\n value: this._tooltipValue().to,\r\n $implicit: this._tooltipValue().to,\r\n },\r\n };\r\n });\r\n\r\n //! methods for programmatic manipulation\r\n reset(): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this._value.set({ from: -this.min(), to: this.max() });\r\n }\r\n\r\n //! track overlay getters\r\n readonly trackOverlayLeft = computed(() => {\r\n return Math.min(...this._handlePositions()) * 100 + '%';\r\n });\r\n readonly trackOverlayWidth = computed(() => {\r\n return Math.abs(this._handlePositions()[0] - this._handlePositions()[1]) * 100 + '%';\r\n });\r\n\r\n //! event handlers\r\n onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this._writeValueFromEvent(event);\r\n this.onPointerDownOnHandle(event);\r\n }\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onPointerMove(event: MouseEvent | TouchEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (!this._shouldCheckForMovement) return;\r\n if (!this._bodyHasClass) {\r\n this._bodyHasClass = true;\r\n this.renderer.addClass(this.document.body, 'ard-prevent-touch-actions');\r\n }\r\n this._writeValueFromEvent(event, this._grabbedHandleId());\r\n }\r\n\r\n //! position calculators\r\n protected _percentValueToValue(percent: number, handleId: number): SliderRange {\r\n const minMaxDifference = Math.abs(this.min() - this.max());\r\n let newVal = percent * minMaxDifference + this.min();\r\n //round to 9 decimal places to avoid floating point arithmetic errors\r\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\r\n newVal = roundToPrecision(newVal, 9);\r\n\r\n const minimumDistanceInSteps = this.step() * this.minimumDistance();\r\n const currValue = this._value();\r\n const newValObj = { from: currValue.from, to: currValue.to };\r\n if (handleId === 1) {\r\n if (newVal >= currValue.to - minimumDistanceInSteps) {\r\n if (this.selectionBehavior() === ArdRangeSelectionBehavior.Block) {\r\n newVal = currValue.to - minimumDistanceInSteps;\r\n } else if (this.selectionBehavior() === ArdRangeSelectionBehavior.Push) {\r\n newValObj.to = newVal + minimumDistanceInSteps;\r\n } else {\r\n // Allow - do nothing\r\n }\r\n }\r\n newValObj.from = newVal;\r\n } else {\r\n if (newVal <= currValue.from + minimumDistanceInSteps) {\r\n if (this.selectionBehavior() === ArdRangeSelectionBehavior.Block) {\r\n newVal = currValue.from + minimumDistanceInSteps;\r\n } else if (this.selectionBehavior() === ArdRangeSelectionBehavior.Push) {\r\n newValObj.from = newVal - minimumDistanceInSteps;\r\n } else {\r\n // Allow - do nothing\r\n }\r\n }\r\n newValObj.to = newVal;\r\n }\r\n return newValObj;\r\n }\r\n\r\n protected readonly _handlePositions = computed<[number, number]>(() => {\r\n const minMaxDifference = Math.abs(this.min() - this.max());\r\n const value = this._value();\r\n const pos1 = (value.from - this.min()) / minMaxDifference;\r\n const pos2 = (value.to - this.min()) / minMaxDifference;\r\n return [pos1, pos2];\r\n });\r\n\r\n //! handle focus monitors\r\n readonly currentHandle = signal<1 | 2 | null>(null);\r\n onHandleFocus(event: FocusEvent, handleId: 1 | 2) {\r\n if (this.disabled() || this.readonly()) return;\r\n this.onFocus(event);\r\n\r\n this.currentHandle.set(handleId);\r\n }\r\n override onBlur(event: FocusEvent) {\r\n super.onBlur(event);\r\n this.currentHandle.set(null);\r\n }\r\n}\r\n","<div\r\n class=\"ard-range-slider-container-master\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-slider-handle-grabbed]=\"isSliderHandleGrabbed()\"\r\n [style]=\"{ '--_ard-slider-transition': sliderTransition() }\"\r\n>\r\n <div class=\"ard-slider-container\">\r\n <div\r\n #track\r\n class=\"ard-slider-track\"\r\n (pointerdown)=\"onTrackHitboxPointerDown($event)\"\r\n >\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slider-track-overlay ard-slider-track-inactive\"></div>\r\n <div\r\n class=\"ard-slider-track-overlay ard-slider-track-active\"\r\n [style]=\"{\r\n left: trackOverlayLeft(),\r\n width: trackOverlayWidth()\r\n }\"\r\n ></div>\r\n @if (showValueTicks()) {\r\n <div class=\"ard-value-tick-container\">\r\n @for (tick of _tickArray(); track tick) {\r\n <div\r\n class=\"ard-value-tick\"\r\n [style]=\"{ left: tick }\"\r\n ></div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed() && currentHandle() === 1\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 1)\"\r\n (focus)=\"onHandleFocus($event, 1)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: handlePositionsPercent()[0] }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: handlePositionsPercent()[0] }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"tooltipContexts().from\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed() && currentHandle() === 2\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 2)\"\r\n (focus)=\"onHandleFocus($event, 2)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: handlePositionsPercent()[1] }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: handlePositionsPercent()[1] }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"tooltipContexts().to\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n </div>\r\n @if (labelObjects().length > 0) {\r\n <div class=\"ard-slider-label-container\">\r\n @for (label of labelObjects(); track $index) {\r\n <div\r\n class=\"ard-slider-label\"\r\n [style]=\"{ left: label.positionPercent }\"\r\n >\r\n {{ label.label }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<ng-template #handleThumbBase>\r\n <div class=\"ard-slider-thumb\"></div>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumRangeSliderComponent } from './range-slider.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumRangeSliderComponent],\r\n imports: [CommonModule],\r\n exports: [ArdiumRangeSliderComponent],\r\n})\r\nexport class ArdiumRangeSliderModule {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n forwardRef,\r\n HostListener,\r\n Inject,\r\n signal,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { roundToPrecision } from 'more-rounding';\r\nimport { _AbstractSlider } from './abstract-slider';\r\nimport { ARD_SLIDER_DEFAULTS, ArdSliderDefaults } from './slider.defaults';\r\nimport { SliderTooltipContext } from './slider.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-slider',\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSliderComponent extends _AbstractSlider<number> {\r\n readonly componentId = '105';\r\n readonly componentName = 'slider';\r\n\r\n protected override readonly _DEFAULTS!: ArdSliderDefaults;\r\n constructor(@Inject(ARD_SLIDER_DEFAULTS) defaults: ArdSliderDefaults) {\r\n super(defaults);\r\n }\r\n\r\n //! value input & output\r\n protected readonly _value = signal<number>(0);\r\n\r\n //! tooltip updater\r\n protected readonly _tooltipValue = computed<string>(() => {\r\n const v = this._value();\r\n const formatFn = this.tooltipFormatFn();\r\n\r\n const tooltipValue = String(formatFn?.(v) ?? v);\r\n return tooltipValue;\r\n });\r\n\r\n readonly tooltipContext = computed<SliderTooltipContext>(() => {\r\n return {\r\n value: this._tooltipValue(),\r\n $implicit: this._tooltipValue(),\r\n };\r\n });\r\n\r\n //! writeValue\r\n writeValue(v: any): void {\r\n v = Number(v);\r\n if (isNaN(v)) {\r\n this.reset();\r\n return;\r\n }\r\n v = this._clampValue(v);\r\n this._value.set(v);\r\n }\r\n cleanupValueAfterMinMaxStepChange(): void {\r\n const prevValue = this._value();\r\n this.writeValue(this._value());\r\n const newValue = this._value();\r\n\r\n if (prevValue !== newValue) {\r\n this._emitChange();\r\n }\r\n }\r\n\r\n //! methods for programmatic manipulation\r\n reset(): void {\r\n this._value.set(0);\r\n }\r\n increment(steps = 1): void {\r\n this._offset(steps, false);\r\n }\r\n decrement(steps = 1): void {\r\n this._offset(-steps, false);\r\n }\r\n\r\n //! event handlers\r\n onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this._writeValueFromEvent(event);\r\n this.onPointerDownOnHandle(event);\r\n }\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onPointerMove(event: MouseEvent | TouchEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (!this._shouldCheckForMovement) return;\r\n this._writeValueFromEvent(event);\r\n }\r\n\r\n //! position calculators\r\n protected _percentValueToValue(percent: number): number {\r\n const minMaxDifference = Math.abs(this.min() - this.max());\r\n const newVal = percent * minMaxDifference + this.min();\r\n //round to 9 decimal places to avoid floating point arithmetic errors\r\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\r\n return roundToPrecision(newVal, 9);\r\n }\r\n\r\n protected readonly _handlePositions = computed<[number, number]>(() => {\r\n const minMaxDifference = Math.abs(this.min() - this.max());\r\n const percentPosition = (this._value() - this.min()) / minMaxDifference;\r\n return [percentPosition, percentPosition];\r\n });\r\n}\r\n","<div\r\n class=\"ard-slider-container-master\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-slider-handle-grabbed]=\"isSliderHandleGrabbed()\"\r\n [style]=\"{ '--_ard-slider-transition': sliderTransition() }\"\r\n>\r\n <div class=\"ard-slider-container\">\r\n <div\r\n #track\r\n class=\"ard-slider-track\"\r\n (pointerdown)=\"onTrackHitboxPointerDown($event)\"\r\n >\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slider-track-overlay ard-slider-track-inactive\"></div>\r\n <div\r\n class=\"ard-slider-track-overlay ard-slider-track-active\"\r\n [style]=\"{ width: handlePositionsPercent()[0] }\"\r\n ></div>\r\n @if (showValueTicks()) {\r\n <div class=\"ard-value-tick-container\">\r\n @for (tick of _tickArray(); track tick) {\r\n <div\r\n class=\"ard-value-tick\"\r\n [style]=\"{ left: tick }\"\r\n ></div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed()\"\r\n (pointerdown)=\"onPointerDownOnHandle($event)\"\r\n (touchstart)=\"onPointerDownOnHandle($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: handlePositionsPercent()[0] }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: handlePositionsPercent()[0] }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"tooltipContext()\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n </div>\r\n @if (labelObjects().length > 0) {\r\n <div class=\"ard-slider-label-container\">\r\n @for (label of labelObjects(); track $index) {\r\n <div\r\n class=\"ard-slider-label\"\r\n [style]=\"{ left: label.positionPercent }\"\r\n >\r\n {{ label.label }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { OverlayModule } from '@angular/cdk/overlay';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumSliderComponent } from './slider.component';\r\nimport { ArdSliderTooltipDirective } from './slider.directive';\r\n\r\n@NgModule({\r\n declarations: [ArdiumSliderComponent, ArdSliderTooltipDirective],\r\n imports: [CommonModule, OverlayModule],\r\n exports: [ArdiumSliderComponent, ArdSliderTooltipDirective],\r\n})\r\nexport class ArdiumSliderModule {}\r\n","import { SimpleComponentColor } from '../types/colors.types';\r\n\r\nexport const StarFillMode = {\r\n /**\r\n * The star is not filled, just an outline.\r\n */\r\n None: 'none',\r\n /**\r\n * Half of the star is filled.\r\n */\r\n Half: 'half',\r\n /**\r\n * The star is fully filled.\r\n */\r\n Filled: 'filled',\r\n} as const;\r\nexport type StarFillMode = (typeof StarFillMode)[keyof typeof StarFillMode];\r\n\r\nexport const StarColor = {\r\n ...SimpleComponentColor,\r\n /**\r\n * The app's color set for all stars. Usually gold or yellow-gold.\r\n */\r\n Gold: 'gold',\r\n} as const;\r\nexport type StarColor = (typeof StarColor)[keyof typeof StarColor];\r\n\r\nexport interface ArdStarIconContext {\r\n $implicit: StarFillMode;\r\n}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _FormFieldComponentDefaults, _formFieldComponentDefaults } from '../../_internal/form-field-component';\r\nimport { StarColor } from '../star.types';\r\n\r\nexport interface ArdRatingInputDefaults extends _FormFieldComponentDefaults {\r\n color: StarColor;\r\n max: number;\r\n}\r\n\r\nconst _ratingInputDefaults: ArdRatingInputDefaults = {\r\n ..._formFieldComponentDefaults,\r\n color: StarColor.Gold,\r\n max: 5,\r\n};\r\n\r\nexport const ARD_RATING_INPUT_DEFAULTS = new InjectionToken<ArdRatingInputDefaults>('ard-rating-input-defaults', {\r\n factory: () => ({\r\n ..._ratingInputDefaults,\r\n }),\r\n});\r\n\r\nexport function provideRatingInputDefaults(config: Partial<ArdRatingInputDefaults>): Provider {\r\n return { provide: ARD_RATING_INPUT_DEFAULTS, useValue: { ..._ratingInputDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { ArdRatingInputStarButtonTemplateContext } from './rating-input.types';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-rating-input > ng-template[ard-star-button-tmp]',\r\n})\r\nexport class ArdRatingInputStarButtonTemplateDirective {\r\n constructor(public template: TemplateRef<ArdRatingInputStarButtonTemplateContext>) {}\r\n}\r\n","import { InputSignal } from \"@angular/core\";\r\n\r\nexport const ClickStrategy = {\r\n Noop: 'noop',\r\n Default: 'default',\r\n} as const;\r\nexport type ClickStrategy = (typeof ClickStrategy)[keyof typeof ClickStrategy];\r\n\r\n/**\r\n * Represents an array type that must contain at least one element.\r\n *\r\n * @template T - The type of elements in the array.\r\n */\r\nexport type NonEmptyArray<T> = [T, ...T[]];\r\n\r\nexport type Nullable<T> = T | undefined | null;\r\n\r\nexport type TemplateComponent<T> = {\r\n [key in keyof T]?: InputSignal<T[key]>;\r\n}","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _booleanComponentDefaults, _BooleanComponentDefaults } from '../../_internal/boolean-component';\r\nimport { StarColor } from '../star.types';\r\nimport { ClickStrategy } from './../../types/utility.types';\r\n\r\nexport interface ArdStarButtonDefaults extends _BooleanComponentDefaults {\r\n clickStrategy: ClickStrategy;\r\n color: StarColor;\r\n}\r\n\r\nconst _starButtonDefaults: ArdStarButtonDefaults = {\r\n ..._booleanComponentDefaults,\r\n clickStrategy: ClickStrategy.Default,\r\n color: StarColor.Gold,\r\n};\r\n\r\nexport const ARD_STAR_BUTTON_DEFAULTS = new InjectionToken<ArdStarButtonDefaults>('ard-star-button-defaults', {\r\n factory: () => ({\r\n ..._starButtonDefaults,\r\n }),\r\n});\r\n\r\nexport function provideStarButtonDefaults(config: Partial<ArdStarButtonDefaults>): Provider {\r\n return { provide: ARD_STAR_BUTTON_DEFAULTS, useValue: { ..._starButtonDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { ArdStarButtonStarTemplateContext } from './star-button.types';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-star-button > ng-template[ard-star-tmp]',\r\n})\r\nexport class ArdStarButtonStarTemplateDirective {\r\n constructor(public template: TemplateRef<ArdStarButtonStarTemplateContext>) {}\r\n}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { StarColor, StarFillMode } from './star.types';\r\n\r\nexport interface ArdStarDefaults {\r\n color: StarColor;\r\n filled: StarFillMode | boolean;\r\n}\r\n\r\nconst _starDefaults: ArdStarDefaults = {\r\n color: StarColor.Gold,\r\n filled: StarFillMode.None,\r\n};\r\n\r\nexport const ARD_STAR_DEFAULTS = new InjectionToken<ArdStarDefaults>('ard-star-defaults', {\r\n factory: () => ({\r\n ..._starDefaults,\r\n }),\r\n});\r\n\r\nexport function provideStarDefaults(config: Partial<ArdStarDefaults>): Provider {\r\n return { provide: ARD_STAR_DEFAULTS, useValue: { ..._starDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { ArdStarIconContext } from './star.types';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-star > ng-template[ard-star-icon-tmp]',\r\n})\r\nexport class ArdStarIconTemplateDirective {\r\n constructor(public template: TemplateRef<ArdStarIconContext>) {}\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, contentChild, inject, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ARD_STAR_DEFAULTS } from './star.defaults';\r\nimport { ArdStarIconTemplateDirective } from './star.directives';\r\nimport { ArdStarIconContext, StarColor, StarFillMode } from './star.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-star',\r\n templateUrl: './star.component.html',\r\n styleUrls: ['./star.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumStarComponent {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n protected readonly _DEFAULTS = inject(ARD_STAR_DEFAULTS);\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(this._DEFAULTS.color);\r\n readonly filled = input<StarFillMode, StarFillMode | boolean | string | undefined>(\r\n this._transformFillMode(this._DEFAULTS.filled),\r\n {\r\n transform: this._transformFillMode,\r\n }\r\n );\r\n\r\n private _transformFillMode(value: StarFillMode | boolean | string | undefined): StarFillMode {\r\n if (value === StarFillMode.None || value === StarFillMode.Half || value === StarFillMode.Filled) {\r\n return value;\r\n }\r\n return coerceBooleanProperty(value) ? StarFillMode.Filled : StarFillMode.None;\r\n }\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [this.wrapperClasses(), `ard-color-${this.color()}`, `ard-star-fill-${this.filled()}`].join(' ')\r\n );\r\n\r\n //! template\r\n readonly iconTemplate = contentChild(ArdStarIconTemplateDirective);\r\n\r\n readonly iconTemplateContext = computed<ArdStarIconContext>(() => ({ $implicit: this.filled() }));\r\n}\r\n","<div\r\n class=\"ard-star\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <ng-template\r\n #defaultIconTemplate\r\n let-fillMode\r\n >\r\n @if (fillMode === 'filled') {\r\n <ard-icon filled>star</ard-icon>\r\n } @else if (fillMode === 'half') {\r\n <ard-icon>star-half</ard-icon>\r\n } @else {\r\n <ard-icon>star</ard-icon>\r\n }\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"iconTemplate()?.template || defaultIconTemplate\"\r\n [ngTemplateOutletContext]=\"iconTemplateContext()\"\r\n />\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Inject,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n input,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { _BooleanComponentBase } from '../../_internal/boolean-component';\r\nimport { ClickStrategy } from '../../types/utility.types';\r\nimport { StarColor } from '../star.types';\r\nimport { StarFillMode } from './../star.types';\r\nimport { ARD_STAR_BUTTON_DEFAULTS, ArdStarButtonDefaults } from './star-button.defaults';\r\nimport { ArdStarButtonStarTemplateDirective } from './star-button.directives';\r\nimport { ArdStarButtonStarTemplateContext } from './star-button.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-star-button',\r\n templateUrl: './star-button.component.html',\r\n styleUrls: ['./star-button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumStarButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumStarButtonComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n protected override readonly _DEFAULTS!: ArdStarButtonDefaults;\r\n constructor(@Inject(ARD_STAR_BUTTON_DEFAULTS) defaults: ArdStarButtonDefaults) {\r\n super(defaults);\r\n }\r\n\r\n protected readonly _componentId = '107';\r\n protected readonly _componentName = 'start-button';\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly clickStrategy = input<ClickStrategy>(this._DEFAULTS.clickStrategy);\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(this._DEFAULTS.color);\r\n\r\n readonly ngClasses = computed<string>(() => [this.wrapperClasses(), `ard-color-${this.color()}`].join(' '));\r\n\r\n readonly starFillState = computed<StarFillMode>(() =>\r\n this.selectedAccountingForReverse() ? StarFillMode.Filled : StarFillMode.None\r\n );\r\n readonly starFillInternal = computed<StarFillMode>(() => (this.selected() ? StarFillMode.Filled : StarFillMode.None));\r\n\r\n onClick(): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (this.clickStrategy() === ClickStrategy.Noop) return;\r\n this.toggleSelected();\r\n }\r\n\r\n //! template\r\n readonly starTemplate = contentChild(ArdStarButtonStarTemplateDirective);\r\n\r\n readonly starTemplateContext = computed<ArdStarButtonStarTemplateContext>(() => ({\r\n $implicit: this.starFillState(),\r\n fillMode: this.starFillState(),\r\n fillModeInternal: this.starFillInternal(),\r\n color: this.color(),\r\n }));\r\n}\r\n","<button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-star-button\"\r\n role=\"checkbox\"\r\n [attr.aria-checked]=\"selectedAccountingForReverse()\"\r\n [attr.aria-disabled]=\"disabled()\"\r\n [attr.aria-readonly]=\"readonly()\"\r\n [attr.id]=\"htmlId()\"\r\n [attr.name]=\"htmlName()\"\r\n [ngClass]=\"ngClasses()\"\r\n (click)=\"onClick()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabindex]=\"readonly() ? -1 : tabIndex()\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n\r\n <ng-template\r\n #defaultStarTemplate\r\n let-fillMode=\"fillMode\"\r\n let-color=\"color\"\r\n >\r\n <ard-star\r\n [filled]=\"fillMode\"\r\n [color]=\"color\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"starTemplate()?.template || defaultStarTemplate\"\r\n [ngTemplateOutletContext]=\"starTemplateContext()\"\r\n />\r\n</button>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n effect,\r\n forwardRef,\r\n HostListener,\r\n Inject,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n viewChildren,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceNumberProperty, NumberLike } from '@ardium-ui/devkit';\r\nimport { _FormFieldComponentBase } from '../../_internal/form-field-component';\r\nimport { ArdFormFieldControl } from '../../form-field';\r\nimport { ArdiumStarButtonComponent } from '../star-button/star-button.component';\r\nimport { StarColor } from '../star.types';\r\nimport { ARD_RATING_INPUT_DEFAULTS, ArdRatingInputDefaults } from './rating-input.defaults';\r\nimport { ArdRatingInputStarButtonTemplateDirective } from './rating-input.directives';\r\nimport { ArdRatingInputStarButtonTemplateContext } from './rating-input.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-rating-input',\r\n templateUrl: './rating-input.component.html',\r\n styleUrls: ['./rating-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumRatingInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumRatingInputComponent extends _FormFieldComponentBase implements ControlValueAccessor, ArdFormFieldControl {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n protected override readonly _DEFAULTS!: ArdRatingInputDefaults;\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(this._DEFAULTS.color);\r\n\r\n readonly ngClasses = computed<string>(() => [this.wrapperClasses(), `ard-color-${this.color()}`].join(' '));\r\n\r\n //! events\r\n readonly highlightEvent = output<number>({ alias: 'highlight' });\r\n\r\n readonly value = model<number | null>(null);\r\n\r\n constructor(@Inject(ARD_RATING_INPUT_DEFAULTS) defaults: ArdRatingInputDefaults) {\r\n super(defaults);\r\n effect(() => {\r\n const hi = this._highlightedStarIndex();\r\n if (hi !== null) {\r\n this.highlightEvent.emit(hi);\r\n }\r\n });\r\n }\r\n\r\n //! stars\r\n readonly max = input<number, NumberLike>(this._DEFAULTS.max, { transform: v => coerceNumberProperty(v, this._DEFAULTS.max) });\r\n\r\n readonly starButtonInstances = viewChildren<ArdiumStarButtonComponent>('starButton');\r\n private readonly _highlightedStarIndex = signal<number | null>(null);\r\n\r\n readonly starArray = computed<number[]>(() => new Array(this.max()).fill(0).map((_, i) => i));\r\n\r\n //! ControlValueAccessor's writeValue\r\n writeValue(v: number): void {\r\n this.value.set(v);\r\n }\r\n onStarClick(index: number): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this.value.set(index + 1);\r\n this._emitChange();\r\n this._emitTouched();\r\n }\r\n onStarHighlight(index: number): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this._highlightedStarIndex.set(index);\r\n }\r\n setDisplayToValue() {\r\n this._highlightedStarIndex.set(null);\r\n }\r\n protected _emitChange(): void {\r\n this._onChangeRegistered?.(this.value());\r\n }\r\n\r\n //* focus handlers\r\n private _isFocusEventSuppressed = false;\r\n private _isBlurEventSuppressed = false;\r\n private _currentFocusIndex: number | null = null;\r\n onStarButtonFocus(event: FocusEvent, index: number) {\r\n if (this.disabled() || this.readonly()) return;\r\n this._currentFocusIndex = index;\r\n if (this._isFocusEventSuppressed) {\r\n this._isFocusEventSuppressed = false;\r\n return;\r\n }\r\n this.onFocus(event);\r\n }\r\n onStarButtonBlur(event: FocusEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this._currentFocusIndex = null;\r\n if (this._isBlurEventSuppressed) {\r\n this._isBlurEventSuppressed = false;\r\n return;\r\n }\r\n this.onBlur(event);\r\n }\r\n focusStarButtonByIndex(index: number): void {\r\n if (!this.starButtonInstances()) return;\r\n this.starButtonInstances()[index]!.focus();\r\n }\r\n focusNextStarButton(offset: number): void {\r\n if (!this.starButtonInstances() || this._currentFocusIndex === null) return;\r\n\r\n let nextIndex = this._currentFocusIndex + offset;\r\n nextIndex = Math.min(nextIndex, this.max() - 1);\r\n nextIndex = Math.max(nextIndex, 0);\r\n\r\n this.focusStarButtonByIndex(nextIndex);\r\n }\r\n private _suppressFocusEvents(): void {\r\n this._isFocusEventSuppressed = true;\r\n this._isBlurEventSuppressed = true;\r\n }\r\n\r\n override focus(): void {\r\n this.focusStarButtonByIndex(0);\r\n }\r\n override blur(): void {\r\n if (!this.starButtonInstances() || this._currentFocusIndex === null) return;\r\n this.starButtonInstances()[this._currentFocusIndex]!.blur();\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n if (this.disabled() || this.readonly()) return;\r\n switch (event.code) {\r\n case 'Tab': {\r\n this._onTabPress(event.shiftKey);\r\n return;\r\n }\r\n case 'ArrowRight': {\r\n this._onArrowRightPress(event);\r\n return;\r\n }\r\n case 'ArrowLeft': {\r\n this._onArrowLeftPress(event);\r\n return;\r\n }\r\n case 'Home': {\r\n this._onHomePress(event);\r\n return;\r\n }\r\n case 'End': {\r\n this._onEndPress(event);\r\n return;\r\n }\r\n }\r\n }\r\n private _onArrowRightPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this.focusNextStarButton(+1);\r\n }\r\n private _onArrowLeftPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this.focusNextStarButton(-1);\r\n }\r\n private _onHomePress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this.focusStarButtonByIndex(0);\r\n }\r\n private _onEndPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this.focusStarButtonByIndex(this.max() - 1);\r\n }\r\n private _onTabPress(withShift: boolean): void {\r\n if (withShift) {\r\n this.focusStarButtonByIndex(0);\r\n } else {\r\n this.focusStarButtonByIndex(this.max() - 1);\r\n }\r\n }\r\n\r\n //! template\r\n readonly starButtonTemplate = contentChild(ArdRatingInputStarButtonTemplateDirective);\r\n\r\n readonly getStarButtonTemplateContext = computed<(index: number) => ArdRatingInputStarButtonTemplateContext>(() => index => ({\r\n color: this.color(),\r\n index,\r\n highlightedIndex: this._highlightedStarIndex() ?? -1,\r\n valueIndex: (this.value() ?? 0) - 1,\r\n tabIndex: this.tabIndex(),\r\n onClick: () => {\r\n this.onStarClick(index);\r\n },\r\n onFocus: (event: FocusEvent) => {\r\n this.onStarButtonFocus(event, index);\r\n },\r\n onBlur: (event: FocusEvent) => {\r\n this.onStarButtonBlur(event);\r\n },\r\n onHighlight: () => {\r\n this.onStarHighlight(index);\r\n },\r\n }));\r\n}\r\n","<div\r\n class=\"ard-rating-input\"\r\n [ngClass]=\"ngClasses()\"\r\n (mouseleave)=\"setDisplayToValue()\"\r\n>\r\n <ng-template\r\n #defaultStarButtonTemplate\r\n let-color=\"color\"\r\n let-index=\"index\"\r\n let-highlightedIndex=\"highlightedIndex\"\r\n let-valueIndex=\"valueIndex\"\r\n let-tabIndex=\"tabIndex\"\r\n let-onClick=\"onClick\"\r\n let-onFocus=\"onFocus\"\r\n let-onBlur=\"onBlur\"\r\n let-onHighlight=\"onHighlight\"\r\n >\r\n <ard-star-button\r\n #starButton\r\n [class.ard-star-not-in-value]=\"index > valueIndex && index > highlightedIndex\"\r\n [color]=\"index <= valueIndex || index <= highlightedIndex ? color : 'none'\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n clickStrategy=\"noop\"\r\n [selected]=\"highlightedIndex === -1 ? index <= valueIndex : index <= highlightedIndex\"\r\n (click)=\"onClick()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (mouseenter)=\"onHighlight()\"\r\n [tabIndex]=\"tabIndex\"\r\n />\r\n </ng-template>\r\n\r\n @for (index of starArray(); track index) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"starButtonTemplate()?.template || defaultStarButtonTemplate\"\r\n [ngTemplateOutletContext]=\"getStarButtonTemplateContext()(index)\"\r\n />\r\n <input\r\n type=\"radio\"\r\n class=\"ard-rating-input__radio\"\r\n value=\"index\"\r\n [attr.name]=\"htmlName()\"\r\n [attr.id]=\"htmlId() + index\"\r\n tabindex=\"-1\"\r\n />\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumIconModule } from '../icon';\r\nimport { ArdiumStarComponent } from './star.component';\r\nimport { ArdStarIconTemplateDirective } from './star.directives';\r\n\r\n@NgModule({\r\n declarations: [ArdiumStarComponent, ArdStarIconTemplateDirective],\r\n imports: [CommonModule, ArdiumIconModule],\r\n exports: [ArdiumStarComponent, ArdStarIconTemplateDirective],\r\n})\r\nexport class ArdiumStarModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumStarModule } from '../star.module';\r\nimport { ArdiumStarButtonComponent } from './star-button.component';\r\nimport { ArdStarButtonStarTemplateDirective } from './star-button.directives';\r\n\r\n@NgModule({\r\n declarations: [ArdiumStarButtonComponent, ArdStarButtonStarTemplateDirective],\r\n imports: [CommonModule, ArdiumStarModule],\r\n exports: [ArdiumStarButtonComponent, ArdStarButtonStarTemplateDirective],\r\n})\r\nexport class ArdiumStarButtonModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumStarButtonModule } from '../star-button';\r\nimport { ArdiumRatingInputComponent } from './rating-input.component';\r\nimport { ArdRatingInputStarButtonTemplateDirective } from './rating-input.directives';\r\n\r\n@NgModule({\r\n declarations: [ArdiumRatingInputComponent, ArdRatingInputStarButtonTemplateDirective],\r\n imports: [CommonModule, ArdiumStarButtonModule],\r\n exports: [ArdiumRatingInputComponent, ArdRatingInputStarButtonTemplateDirective],\r\n})\r\nexport class ArdiumRatingInputModule {}\r\n","import { ArdOptionSimple, OptionContext } from '../types/item-storage.types';\r\nimport { TemplateComponent } from '../types/utility.types';\r\n\r\nexport interface ArdCheckboxListLabelComponent extends TemplateComponent<OptionContext<ArdOptionSimple>> {}\r\n\r\nexport const CheckboxListAlignType = {\r\n LeftClumped: 'left-clumped',\r\n LeftSplit: 'left-split',\r\n RightSplit: 'right-split',\r\n RightClumped: 'right-clumped',\r\n} as const;\r\nexport type CheckboxListAlignType = (typeof CheckboxListAlignType)[keyof typeof CheckboxListAlignType];\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\r\nimport { _ngModelComponentDefaults, _NgModelComponentDefaults } from '../_internal/ngmodel-component';\r\nimport { CompareWithFn } from '../types/item-storage.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ComponentColor } from './../types/colors.types';\r\nimport { ArdCheckboxListLabelComponent, CheckboxListAlignType } from './checkbox-list.types';\r\n\r\nexport interface ArdCheckboxListDefaults extends _NgModelComponentDefaults {\r\n valueFrom: string;\r\n labelFrom: string;\r\n disabledFrom: string;\r\n compareWith: Nullable<CompareWithFn>;\r\n invertDisabled: boolean;\r\n maxSelectedItems: number;\r\n color: ComponentColor;\r\n align: CheckboxListAlignType;\r\n compact: boolean;\r\n LabelComponent?: Type<ArdCheckboxListLabelComponent>;\r\n}\r\n\r\nconst _checkboxListDefaults: ArdCheckboxListDefaults = {\r\n ..._ngModelComponentDefaults,\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n disabledFrom: 'disabled',\r\n compareWith: null,\r\n invertDisabled: false,\r\n maxSelectedItems: Infinity,\r\n color: ComponentColor.Primary,\r\n align: CheckboxListAlignType.LeftClumped,\r\n compact: false,\r\n LabelComponent: undefined,\r\n};\r\n\r\nexport const ARD_CHECKBOX_LIST_DEFAULTS = new InjectionToken<ArdCheckboxListDefaults>('ard-checkbox-list-defaults', {\r\n factory: () => ({\r\n ..._checkboxListDefaults,\r\n }),\r\n});\r\n\r\nexport function provideCheckboxListDefaults(config: Partial<ArdCheckboxListDefaults>): Provider {\r\n return { provide: ARD_CHECKBOX_LIST_DEFAULTS, useValue: { ..._checkboxListDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { CheckboxTemplateContext } from '../checkbox/checkbox.types';\r\nimport { ArdOptionSimple, OptionContext } from '../types/item-storage.types';\r\n\r\n@Directive({ standalone: false, selector: 'ard-checkbox-list > ng-template[ard-checkbox-tmp]' })\r\nexport class ArdCheckboxListCheckboxTemplateDirective {\r\n constructor(public template: TemplateRef<CheckboxTemplateContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-checkbox-list > ng-template[ard-label-tmp]' })\r\nexport class ArdCheckboxListLabelTemplateDirective {\r\n constructor(public template: TemplateRef<OptionContext<ArdOptionSimple>>) {}\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n HostBinding,\r\n Inject,\r\n Input,\r\n input,\r\n output,\r\n signal,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty, coerceNumberProperty, NumberLike } from '@ardium-ui/devkit';\r\nimport { SimpleItemStorage, SimpleItemStorageHost } from '../_internal/item-storages/simple-item-storage';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\nimport { contextToInputsMultiple } from '../_internal/utils/context-to-inputs';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdOptionSimple, CompareWithFn, OptionContext } from '../types/item-storage.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ARD_CHECKBOX_LIST_DEFAULTS, ArdCheckboxListDefaults } from './checkbox-list.defaults';\r\nimport { ArdCheckboxListCheckboxTemplateDirective, ArdCheckboxListLabelTemplateDirective } from './checkbox-list.directives';\r\nimport { CheckboxListAlignType } from './checkbox-list.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-checkbox-list',\r\n templateUrl: './checkbox-list.component.html',\r\n styleUrls: ['./checkbox-list.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumCheckboxListComponent extends _NgModelComponentBase implements SimpleItemStorageHost, AfterViewInit {\r\n protected override readonly _DEFAULTS!: ArdCheckboxListDefaults;\r\n constructor(@Inject(ARD_CHECKBOX_LIST_DEFAULTS) defaults: ArdCheckboxListDefaults) {\r\n super(defaults);\r\n }\r\n\r\n @HostBinding('attr.id')\r\n get _htmlIdHostAttribute() {\r\n return this.htmlId();\r\n }\r\n\r\n readonly DEFAULTS = this._DEFAULTS;\r\n // static values. Not meant to be changed.\r\n readonly multiselectable = signal<true>(true);\r\n readonly isValueRequired = signal<false>(false);\r\n readonly _componentId = '300';\r\n readonly _componentName = 'checkbox-list';\r\n\r\n private readonly _itemStorage = new SimpleItemStorage(this);\r\n\r\n readonly valueFrom = input<string>(this._DEFAULTS.valueFrom);\r\n readonly labelFrom = input<string>(this._DEFAULTS.labelFrom);\r\n readonly disabledFrom = input<string>(this._DEFAULTS.disabledFrom);\r\n\r\n @Input()\r\n set items(v: any[]) {\r\n this._itemStorage.setItems(v);\r\n }\r\n get items(): ArdOptionSimple[] {\r\n return this._itemStorage.items();\r\n }\r\n\r\n readonly compareWith = input<Nullable<CompareWithFn>>(this._DEFAULTS.compareWith);\r\n\r\n readonly invertDisabled = input<boolean, BooleanLike>(this._DEFAULTS.invertDisabled, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n readonly maxSelectedItems = input<number, NumberLike>(this._DEFAULTS.maxSelectedItems, {\r\n transform: v => coerceNumberProperty(v, this._DEFAULTS.maxSelectedItems),\r\n });\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(this._DEFAULTS.color);\r\n readonly align = input<CheckboxListAlignType>(this._DEFAULTS.align);\r\n\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [`ard-color-${this.color()}`, `ard-align-${this.align()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! value\r\n @Input()\r\n get value(): any {\r\n return this._itemStorage.value();\r\n }\r\n set value(v: any) {\r\n this.writeValue(v);\r\n }\r\n\r\n readonly valueChange = output<any>();\r\n\r\n private _valueBeforeInit: any;\r\n writeValue(v: any): void {\r\n if (!this._isViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this._itemStorage.writeValue(v);\r\n }\r\n\r\n private _isViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._isViewInit = true;\r\n\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n }\r\n }\r\n\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n onItemHighlight(v: ArdOptionSimple): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this._itemStorage.highlightSingleItem(v);\r\n }\r\n onItemFocus(v: ArdOptionSimple): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this._itemStorage.highlightSingleItem(v);\r\n }\r\n onItemBlur(): void {\r\n this._itemStorage.unhighlightAll();\r\n }\r\n selectItem(v: ArdOptionSimple): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this._itemStorage.selectItem(v);\r\n this._emitChange();\r\n this._emitTouched();\r\n }\r\n unselectItem(v: ArdOptionSimple): void {\r\n if (this.disabled() || this.readonly()) return;\r\n this._itemStorage.unselectItem(v);\r\n this._emitChange();\r\n this._emitTouched();\r\n }\r\n toggleItem(v: ArdOptionSimple): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (v.selected) {\r\n this.unselectItem(v);\r\n return;\r\n }\r\n this.selectItem(v);\r\n }\r\n\r\n //! templates\r\n readonly checkboxTemplate = contentChild(ArdCheckboxListCheckboxTemplateDirective);\r\n\r\n readonly labelTemplate = contentChild(ArdCheckboxListLabelTemplateDirective);\r\n\r\n readonly labelComponent = this._DEFAULTS.LabelComponent;\r\n\r\n readonly labelContextGenerator = computed<(item: ArdOptionSimple) => OptionContext<ArdOptionSimple>>(() => item => ({\r\n $implicit: item,\r\n item,\r\n index: item.index,\r\n value: item.value,\r\n label: item.label,\r\n selected: item.selected,\r\n highlighted: item.highlighted,\r\n itemData: item.itemData,\r\n disabled: item.disabled,\r\n }));\r\n\r\n readonly labelComponentInputsGenerator = contextToInputsMultiple(this.labelContextGenerator, this.labelComponent);\r\n}\r\n","<div\r\n class=\"ard-checkbox-list\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (item of items; track item.index) {\r\n <div\r\n class=\"ard-checkbox-list__item\"\r\n [class.ard-item-highlighted]=\"item.highlighted\"\r\n [class.ard-item-disabled]=\"item.disabled\"\r\n [class.ard-item-selected]=\"item.selected\"\r\n (mouseover)=\"onItemHighlight(item)\"\r\n (mouseleave)=\"onItemBlur()\"\r\n (click)=\"toggleItem(item)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-checkbox\r\n [selected]=\"item.selected\"\r\n [disabled]=\"item.disabled\"\r\n [readonly]=\"readonly()\"\r\n [color]=\"color()\"\r\n [htmlId]=\"htmlId() + item.index\"\r\n [tabIndex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onItemFocus(item)\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onItemBlur()\"\r\n (select)=\"selectItem(item)\"\r\n (unselect)=\"unselectItem(item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <ng-template\r\n _ard-tmp-repository\r\n [checkboxTmp]=\"checkboxTemplate()\"\r\n />\r\n </ard-checkbox>\r\n <label [for]=\"htmlId() + item.index\">\r\n @if (labelComponent && !labelTemplate()) {\r\n <ng-template\r\n [ngComponentOutlet]=\"labelComponent\"\r\n [ngComponentOutletInputs]=\"labelComponentInputsGenerator()(item)\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultLabelTemplate\r\n let-label=\"label\"\r\n >\r\n {{ label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"labelTemplate()?.template || defaultLabelTemplate\"\r\n [ngTemplateOutletContext]=\"labelContextGenerator()(item)\"\r\n />\r\n }\r\n </label>\r\n </div>\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { _CheckboxTemplateRepositoryDirective } from '../checkbox/checkbox.internal-directives';\r\nimport { ArdiumCheckboxModule } from '../checkbox/checkbox.module';\r\nimport { ArdiumCheckboxListComponent } from './checkbox-list.component';\r\nimport { ArdCheckboxListCheckboxTemplateDirective, ArdCheckboxListLabelTemplateDirective } from './checkbox-list.directives';\r\n\r\n@NgModule({\r\n declarations: [ArdiumCheckboxListComponent, ArdCheckboxListCheckboxTemplateDirective, ArdCheckboxListLabelTemplateDirective],\r\n imports: [CommonModule, ArdiumCheckboxModule, _CheckboxTemplateRepositoryDirective],\r\n exports: [ArdiumCheckboxListComponent, ArdCheckboxListCheckboxTemplateDirective, ArdCheckboxListLabelTemplateDirective],\r\n})\r\nexport class ArdiumCheckboxListModule {}\r\n","export const BadgeSize = {\r\n Small: 'small',\r\n Medium: 'medium',\r\n Large: 'large',\r\n} as const;\r\nexport type BadgeSize = (typeof BadgeSize)[keyof typeof BadgeSize];\r\n\r\nexport const BadgePosition = {\r\n AboveBefore: 'above-before',\r\n AboveAfter: 'above-after',\r\n BelowBefore: 'below-before',\r\n BelowAfter: 'below-after',\r\n Before: 'before',\r\n After: 'after',\r\n Above: 'above',\r\n Below: 'below',\r\n} as const;\r\nexport type BadgePosition = (typeof BadgePosition)[keyof typeof BadgePosition];\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { ComponentColor } from './../types/colors.types';\r\nimport { FormElementVariant } from './../types/theming.types';\r\nimport { BadgePosition, BadgeSize } from './badge.types';\r\n\r\nexport interface ArdBadgeDefaults {\r\n color: ComponentColor;\r\n variant: FormElementVariant;\r\n size: BadgeSize;\r\n position: BadgePosition;\r\n overlap: boolean;\r\n}\r\n\r\nconst _badgeDefaults: ArdBadgeDefaults = {\r\n color: ComponentColor.Primary,\r\n variant: FormElementVariant.Rounded,\r\n size: BadgeSize.Medium,\r\n position: BadgePosition.AboveAfter,\r\n overlap: false,\r\n};\r\n\r\nexport const ARD_BADGE_DEFAULTS = new InjectionToken<ArdBadgeDefaults>('ard-badge-defaults', {\r\n factory: () => ({\r\n ..._badgeDefaults,\r\n }),\r\n});\r\n\r\nexport function provideBadgeDefaults(config: Partial<ArdBadgeDefaults>): Provider {\r\n return { provide: ARD_BADGE_DEFAULTS, useValue: { ..._badgeDefaults, ...config } };\r\n}\r\n","import {\r\n AfterViewInit,\r\n Directive,\r\n ElementRef,\r\n OnChanges,\r\n OnDestroy,\r\n Renderer2,\r\n computed,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { FormElementVariant } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ARD_BADGE_DEFAULTS } from './badge.defaults';\r\nimport { BadgePosition, BadgeSize } from './badge.types';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: '[ardBadge]',\r\n})\r\nexport class ArdiumBadgeDirective implements OnChanges, AfterViewInit, OnDestroy {\r\n private readonly _elRef = inject(ElementRef);\r\n private readonly _renderer = inject(Renderer2);\r\n\r\n private readonly _DEFAULTS = inject(ARD_BADGE_DEFAULTS);\r\n\r\n readonly text = input<string>('', { alias: 'ardBadge' });\r\n\r\n readonly color = input<ComponentColor>(this._DEFAULTS.color, { alias: 'ardBadgeColor' });\r\n readonly variant = input<FormElementVariant>(this._DEFAULTS.variant, { alias: 'ardBadgeVariant' });\r\n readonly size = input<BadgeSize>(this._DEFAULTS.size, { alias: 'ardBadgeSize' });\r\n\r\n readonly position = input<BadgePosition, BadgePosition>(this._DEFAULTS.position, {\r\n alias: 'ardBadgePosition',\r\n transform: v => {\r\n switch (v) {\r\n case BadgePosition.Before:\r\n return BadgePosition.AboveBefore;\r\n case BadgePosition.After:\r\n case BadgePosition.Above:\r\n return BadgePosition.AboveAfter;\r\n case BadgePosition.Below:\r\n return BadgePosition.BelowAfter;\r\n\r\n default:\r\n return v;\r\n }\r\n },\r\n });\r\n\r\n readonly ariaLabel = input<string>('', { alias: 'ardBadgeAriaLabel' });\r\n\r\n readonly hidden = input<boolean, BooleanLike>(false, { alias: 'ardBadgeHidden', transform: v => coerceBooleanProperty(v) });\r\n readonly overlap = input<boolean, BooleanLike>(this._DEFAULTS.overlap, {\r\n alias: 'ardBadgeOverlap',\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n private readonly _elementClasses = computed(() =>\r\n [\r\n 'ard-badge',\r\n `ard-color-${this.color()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-badge-size-${this.size()}`,\r\n `ard-badge-position-${this.position()}`,\r\n this.hidden() ? 'ard-badge-hidden' : '',\r\n this.overlap() ? 'ard-badge-overlap' : 'ard-badge-no-overlap',\r\n ].join(' ')\r\n );\r\n\r\n private _createBadgeElement(): HTMLElement {\r\n try {\r\n const R = this._renderer;\r\n const element = R.createElement('div') as HTMLDivElement;\r\n R.setAttribute(element, 'class', this._elementClasses());\r\n R.setAttribute(element, 'aria-label', this.ariaLabel());\r\n\r\n if (this.text()) {\r\n const textHost = R.createElement('div') as HTMLDivElement;\r\n R.addClass(textHost, 'ard-badge-content');\r\n\r\n const text = R.createText(this.text());\r\n R.appendChild(textHost, text);\r\n R.appendChild(element, textHost);\r\n }\r\n\r\n return element;\r\n } catch (error: unknown) {\r\n if (error instanceof Error) {\r\n error.message = 'ARD-FT4030: An unknown error has occured while rendering ardBadge: ' + error.message;\r\n throw error;\r\n }\r\n throw new Error(`ARD-FT4030: An unknown error has occured while rendering ardBadge: ` + error);\r\n }\r\n }\r\n\r\n private readonly _badgeElement = signal<Nullable<HTMLElement>>(undefined);\r\n ngOnChanges(): void {\r\n if (this._badgeElement()) {\r\n this._renderer.removeChild(this._elRef.nativeElement, this._badgeElement());\r\n }\r\n const element = this._createBadgeElement();\r\n this._badgeElement.set(element);\r\n this._renderer.appendChild(this._elRef.nativeElement, element);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._renderer.addClass(this._elRef.nativeElement, 'ard-badge-host');\r\n }\r\n ngOnDestroy(): void {\r\n if (this._badgeElement()) {\r\n this._renderer.removeChild(this._elRef.nativeElement, this._badgeElement());\r\n }\r\n this._renderer.removeClass(this._elRef.nativeElement, 'ard-badge-host');\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumBadgeDirective } from './badge.directive';\r\n\r\n@NgModule({\r\n declarations: [ArdiumBadgeDirective],\r\n imports: [CommonModule],\r\n exports: [ArdiumBadgeDirective],\r\n})\r\nexport class ArdiumBadgeModule {}\r\n","\r\nexport const ProgressBarSize = {\r\n Default: 'default',\r\n Auto: 'auto',\r\n} as const;\r\nexport type ProgressBarSize = (typeof ProgressBarSize)[keyof typeof ProgressBarSize];\r\n\r\nexport const ProgressBarAppearance = {\r\n Colorless: 'colorless',\r\n Colored: 'colored',\r\n} as const;\r\nexport type ProgressBarAppearance = (typeof ProgressBarAppearance)[keyof typeof ProgressBarAppearance];\r\n\r\nexport const ProgressBarVariant = {\r\n Sharp: 'sharp',\r\n Pill: 'pill',\r\n} as const;\r\nexport type ProgressBarVariant = (typeof ProgressBarVariant)[keyof typeof ProgressBarVariant];\r\n\r\nexport const ProgressBarMode = {\r\n Determinate: 'determinate',\r\n Indeterminate: 'indeterminate',\r\n Buffer: 'buffer',\r\n Query: 'query',\r\n} as const;\r\nexport type ProgressBarMode = (typeof ProgressBarMode)[keyof typeof ProgressBarMode];\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { SimpleComponentColor } from './../types/colors.types';\r\nimport { ProgressBarMode, ProgressBarSize, ProgressBarVariant } from './progress-bar.types';\r\n\r\nexport interface ArdProgressBarDefaults {\r\n value: number;\r\n bufferValue: number;\r\n color: SimpleComponentColor;\r\n variant: ProgressBarVariant;\r\n size: ProgressBarSize;\r\n mode: ProgressBarMode;\r\n}\r\n\r\nconst _progressBarDefaults: ArdProgressBarDefaults = {\r\n value: 0,\r\n bufferValue: 0,\r\n color: SimpleComponentColor.Primary,\r\n variant: ProgressBarVariant.Pill,\r\n size: ProgressBarSize.Default,\r\n mode: ProgressBarMode.Determinate,\r\n};\r\n\r\nexport const ARD_PROGRESS_BAR_DEFAULTS = new InjectionToken<ArdProgressBarDefaults>('ard-progress-bar-defaults', {\r\n factory: () => ({\r\n ..._progressBarDefaults,\r\n }),\r\n});\r\n\r\nexport function provideProgressBarDefaults(config: Partial<ArdProgressBarDefaults>): Provider {\r\n return { provide: ARD_PROGRESS_BAR_DEFAULTS, useValue: { ..._progressBarDefaults, ...config } };\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { coerceNumberProperty, NumberLike } from '@ardium-ui/devkit';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { ARD_PROGRESS_BAR_DEFAULTS } from './progress-bar.defaults';\r\nimport { ProgressBarMode, ProgressBarSize, ProgressBarVariant } from './progress-bar.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-progress-bar',\r\n templateUrl: './progress-bar.component.html',\r\n styleUrls: ['./progress-bar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumProgressBarComponent {\r\n protected readonly _DEFAULTS = inject(ARD_PROGRESS_BAR_DEFAULTS);\r\n\r\n readonly value = input<number, NumberLike>(this._DEFAULTS.value, { transform: v => coerceNumberProperty(v, this._DEFAULTS.value) });\r\n readonly bufferValue = input<number, NumberLike>(this._DEFAULTS.bufferValue, {\r\n transform: v => coerceNumberProperty(v, this._DEFAULTS.bufferValue),\r\n });\r\n\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(this._DEFAULTS.color);\r\n readonly variant = input<ProgressBarVariant>(this._DEFAULTS.variant);\r\n readonly size = input<ProgressBarSize>(this._DEFAULTS.size);\r\n readonly mode = input<ProgressBarMode>(this._DEFAULTS.mode);\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-progress-bar__size-${this.size()}`,\r\n `ard-progress-bar__mode-${this.mode()}`,\r\n ].join(' ')\r\n );\r\n\r\n //! error detection\r\n constructor() {\r\n effect(() => {\r\n if (this.mode() === ProgressBarMode.Buffer && this.size() === ProgressBarSize.Auto) {\r\n console.error(\r\n new Error(\r\n `ARD-NF4010: Forbidden param combination in <ard-progress-bar>: cannot use 'mode=\"buffer\"' and 'size=\"auto\"' at the same time.`\r\n )\r\n );\r\n }\r\n });\r\n }\r\n\r\n //! bar styling\r\n readonly cssVariables = computed<string>(() => {\r\n if (this.mode() === ProgressBarMode.Indeterminate || this.mode() === ProgressBarMode.Query) {\r\n return '--ard-_progress-bar-main: 0;';\r\n }\r\n const mainVariable = `--ard-_progress-bar-main: ${this.value()}%;`;\r\n if (this.mode() === ProgressBarMode.Buffer) {\r\n return mainVariable + `--ard-_progress-bar-buffer: ${this.bufferValue()}%;`;\r\n }\r\n return mainVariable;\r\n });\r\n}\r\n","<div\r\n class=\"ard-progress-bar\"\r\n role=\"progressbar\"\r\n [style]=\"cssVariables()\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-progress-bar__background\"></div>\r\n <div class=\"ard-progress-bar__overlay-buffer\"></div>\r\n <div class=\"ard-progress-bar__overlay\"></div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumProgressBarComponent } from './progress-bar.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumProgressBarComponent],\r\n imports: [CommonModule],\r\n exports: [ArdiumProgressBarComponent],\r\n})\r\nexport class ArdiumProgressBarModule {}\r\n","import { TemplateComponent } from '../types/utility.types';\r\n\r\nexport interface ArdProgressCircleValueComponent extends TemplateComponent<ProgressCircleValueContext> {}\r\n\r\nexport interface ProgressCircleValueContext {\r\n value: number;\r\n percentValue: number;\r\n max: number;\r\n $implicit: number;\r\n}\r\n\r\nexport const ProgressCircleAppearance = {\r\n Transparent: 'transparent',\r\n Colorless: 'colorless',\r\n Colored: 'colored',\r\n} as const;\r\nexport type ProgressCircleAppearance = (typeof ProgressCircleAppearance)[keyof typeof ProgressCircleAppearance];\r\n\r\nexport const ProgressCircleVariant = {\r\n Full: 'full',\r\n Ring: 'ring',\r\n} as const;\r\nexport type ProgressCircleVariant = (typeof ProgressCircleVariant)[keyof typeof ProgressCircleVariant];\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { ArdProgressCircleValueComponent, ProgressCircleAppearance, ProgressCircleVariant } from './progress-circle.types';\r\n\r\nexport interface ArdProgressCircleDefaults {\r\n value: number;\r\n max: number;\r\n color: SimpleComponentColor;\r\n appearance: ProgressCircleAppearance;\r\n variant: ProgressCircleVariant;\r\n hideValue: boolean;\r\n reverse: boolean;\r\n ValueComponent?: Type<ArdProgressCircleValueComponent>;\r\n}\r\n\r\nconst _progressCircleDefaults: ArdProgressCircleDefaults = {\r\n value: 0,\r\n max: 100,\r\n color: SimpleComponentColor.Primary,\r\n appearance: ProgressCircleAppearance.Transparent,\r\n variant: ProgressCircleVariant.Full,\r\n hideValue: false,\r\n reverse: false,\r\n ValueComponent: undefined,\r\n};\r\n\r\nexport const ARD_PROGRESS_CIRCLE_DEFAULTS = new InjectionToken<ArdProgressCircleDefaults>('ard-progress-circle-defaults', {\r\n factory: () => ({\r\n ..._progressCircleDefaults,\r\n }),\r\n});\r\n\r\nexport function provideProgressCircleDefaults(config: Partial<ArdProgressCircleDefaults>): Provider {\r\n return { provide: ARD_PROGRESS_CIRCLE_DEFAULTS, useValue: { ..._progressCircleDefaults, ...config } };\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n inject,\r\n input,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty, coerceNumberProperty, NumberLike } from '@ardium-ui/devkit';\r\nimport { contextToInputs } from '../_internal/utils/context-to-inputs';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { ARD_PROGRESS_CIRCLE_DEFAULTS } from './progress-circle.defaults';\r\nimport { ArdProgressCircleValueTemplateDirective } from './progress-circle.directive';\r\nimport { ProgressCircleAppearance, ProgressCircleValueContext, ProgressCircleVariant } from './progress-circle.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-progress-circle',\r\n templateUrl: './progress-circle.component.html',\r\n styleUrls: ['./progress-circle.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumProgressCircleComponent {\r\n protected readonly _DEFAULTS = inject(ARD_PROGRESS_CIRCLE_DEFAULTS);\r\n\r\n readonly value = input<number, NumberLike>(this._DEFAULTS.value, { transform: v => coerceNumberProperty(v, this._DEFAULTS.value) });\r\n readonly max = input<number, NumberLike>(this._DEFAULTS.max, { transform: v => coerceNumberProperty(v, this._DEFAULTS.max) });\r\n\r\n readonly percentValue = computed<number>(() => (this.value() / this.max()) * 100);\r\n\r\n //! appearance\r\n readonly appearance = input<ProgressCircleAppearance>(this._DEFAULTS.appearance);\r\n readonly color = input<SimpleComponentColor>(this._DEFAULTS.color);\r\n readonly variant = input<ProgressCircleVariant>(this._DEFAULTS.variant);\r\n\r\n readonly hideValue = input<boolean, BooleanLike>(this._DEFAULTS.hideValue, { transform: v => coerceBooleanProperty(v) });\r\n readonly reverse = input<boolean, BooleanLike>(this._DEFAULTS.reverse, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-progress-circle-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n this.hideValue() ? 'ard-progress-circle-hide-value' : '',\r\n this.reverse() ? 'ard-progress-circle-reversed' : '',\r\n ].join(' ')\r\n );\r\n\r\n readonly fillPercentVariable = computed<string>(() => {\r\n const fillAmount = this.reverse() ? 100 - this.percentValue() : this.percentValue();\r\n return `--ard-_progress-circle-fill-amount: ${fillAmount}%`;\r\n });\r\n\r\n //! templates\r\n readonly valueTemplate = contentChild<TemplateRef<ArdProgressCircleValueTemplateDirective>>(TemplateRef);\r\n\r\n readonly getValueContext = computed<ProgressCircleValueContext>(() => ({\r\n value: this.value(),\r\n percentValue: this.percentValue(),\r\n max: this.max(),\r\n $implicit: this.percentValue(),\r\n }));\r\n\r\n readonly valueComponent = this._DEFAULTS.ValueComponent;\r\n readonly valueComponentInputs = contextToInputs(this.getValueContext, this.valueComponent);\r\n}\r\n","<div\r\n class=\"ard-progress-circle\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-progress-circle-background\"></div>\r\n <div\r\n class=\"ard-progress-circle-overlay\"\r\n [style]=\"fillPercentVariable()\"\r\n ></div>\r\n <div class=\"ard-progress-circle-value\">\r\n @if (valueComponent && !valueTemplate()) {\r\n <ng-template\r\n [ngComponentOutlet]=\"valueComponent\"\r\n [ngComponentOutletInputs]=\"valueComponentInputs()\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultValueTemplate\r\n let-percents\r\n >\r\n {{ percents | number: '1.0-0' }}%\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate() || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"getValueContext()\"\r\n ></ng-template>\r\n }\r\n </div>\r\n</div>\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { ProgressCircleValueContext } from './progress-circle.types';\r\n\r\n@Directive({ standalone: false, selector: 'ard-progress-circle > ng-template[ard-value-tmp]' })\r\nexport class ArdProgressCircleValueTemplateDirective {\r\n constructor(public template: TemplateRef<ProgressCircleValueContext>) {}\r\n}\r\n","import { CommonModule, DecimalPipe } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumProgressCircleComponent } from './progress-circle.component';\r\nimport { ArdProgressCircleValueTemplateDirective } from './progress-circle.directive';\r\n\r\n@NgModule({\r\n declarations: [ArdiumProgressCircleComponent, ArdProgressCircleValueTemplateDirective],\r\n imports: [CommonModule, DecimalPipe],\r\n exports: [ArdiumProgressCircleComponent, ArdProgressCircleValueTemplateDirective],\r\n})\r\nexport class ArdiumProgressCircleModule {}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { SimpleComponentColor } from './../types/colors.types';\r\n\r\nexport interface ArdSpinnerDefaults {\r\n color: SimpleComponentColor;\r\n}\r\n\r\nconst _spinnerDefaults: ArdSpinnerDefaults = {\r\n color: SimpleComponentColor.Primary,\r\n};\r\n\r\nexport const ARD_SPINNER_DEFAULTS = new InjectionToken<ArdSpinnerDefaults>('ard-spinner-defaults', {\r\n factory: () => ({\r\n ..._spinnerDefaults,\r\n }),\r\n});\r\n\r\nexport function provideSpinnerDefaults(config: Partial<ArdSpinnerDefaults>): Provider {\r\n return { provide: ARD_SPINNER_DEFAULTS, useValue: { ..._spinnerDefaults, ...config } };\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, inject, input } from '@angular/core';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { ARD_SPINNER_DEFAULTS } from './spinner.defaults';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrls: ['./spinner.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumSpinnerComponent {\r\n protected readonly _DEFAULTS = inject(ARD_SPINNER_DEFAULTS);\r\n\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(this._DEFAULTS.color);\r\n\r\n readonly ngClasses = computed((): string => [`ard-color-${this.color()}`].join(' '));\r\n}\r\n","<svg\r\n class=\"ard-spinner\"\r\n [ngClass]=\"ngClasses()\"\r\n viewBox=\"0 0 100 100\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n>\r\n <circle\r\n class=\"ard-spinner-circle\"\r\n cx=\"50\"\r\n cy=\"50\"\r\n r=\"20\"\r\n ></circle>\r\n</svg>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumSpinnerComponent } from './spinner.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumSpinnerComponent],\r\n imports: [CommonModule],\r\n exports: [ArdiumSpinnerComponent],\r\n})\r\nexport class ArdiumSpinnerModule {}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { SimpleOneAxisAlignment } from './../types/alignment.types';\r\n\r\nexport interface ArdFormFieldDefaults {\r\n defaultHintAlign: SimpleOneAxisAlignment;\r\n reserveHintLine: boolean;\r\n labelRequiredText: string;\r\n labelOptionalText: string;\r\n autoErrorOnlyFirstError: boolean;\r\n}\r\n\r\nconst _formFieldDefaults: ArdFormFieldDefaults = {\r\n defaultHintAlign: SimpleOneAxisAlignment.Left,\r\n reserveHintLine: false,\r\n labelRequiredText: '*',\r\n labelOptionalText: '(optional)',\r\n autoErrorOnlyFirstError: true,\r\n};\r\n\r\nexport const ARD_FORM_FIELD_DEFAULTS = new InjectionToken<ArdFormFieldDefaults>('ard-form-field-defaults', {\r\n factory: () => ({\r\n ..._formFieldDefaults,\r\n }),\r\n});\r\n\r\nexport function provideFormFieldDefaults(config: Partial<ArdFormFieldDefaults>): Provider {\r\n return { provide: ARD_FORM_FIELD_DEFAULTS, useValue: { ..._formFieldDefaults, ...config } };\r\n}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\n\r\nexport interface ArdErrorMap {\r\n $fallback?: string;\r\n [key: string]: string | ((errorData: any) => string) | undefined;\r\n}\r\n\r\nexport const ARD_ERROR_MAP = new InjectionToken<ArdErrorMap>('ard-error-map', {\r\n factory: () => ({ $fallback: 'Provide error messages using provideErrorMap' }),\r\n});\r\n\r\nexport function provideErrorMap(errorMap: ArdErrorMap): Provider {\r\n return { provide: ARD_ERROR_MAP, useValue: errorMap };\r\n}\r\n","import { Directive, effect, input } from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\n\r\n@Directive({\r\n selector: '[ard-error]',\r\n standalone: true,\r\n host: {\r\n '[class.ard-error]': 'true',\r\n '[class.ard-error-default]': '!left() && !right()',\r\n '[class.ard-error-left]': 'left() && !right()',\r\n '[class.ard-error-right]': '!left() && right()',\r\n },\r\n})\r\nexport class ArdiumErrorDirective {\r\n readonly left = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly right = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.left() && this.right()) {\r\n console.error(`ARD-NF5140: Cannot align a form field error to both left and right.`);\r\n }\r\n });\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { ArdiumErrorDirective } from './error.directive';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-error',\r\n template: '<ng-content />',\r\n hostDirectives: [{ directive: ArdiumErrorDirective }],\r\n})\r\nexport class ArdiumErrorComponent {}\r\n","import { Component, computed, effect, inject, input, OnDestroy, signal } from '@angular/core';\r\nimport { AbstractControl, TouchedChangeEvent } from '@angular/forms';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { filter, map, startWith, Subscription } from 'rxjs';\r\nimport { ARD_FORM_FIELD_DEFAULTS } from '../form-field.defaults';\r\nimport { ARD_ERROR_MAP } from './auto-error.provider';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-auto-error',\r\n templateUrl: './auto-error.component.html',\r\n host: {\r\n '[class.ard-auto-error]': 'true',\r\n '[class.ard-auto-error-default]': '!left() && !right()',\r\n '[class.ard-auto-error-left]': 'left() && !right()',\r\n '[class.ard-auto-error-right]': '!left() && right()',\r\n '[class.ard-auto-error__no-errors]': 'errorMessages().length === 0',\r\n '[class.ard-auto-error__has-errors]': 'errorMessages().length > 0',\r\n },\r\n})\r\nexport class ArdiumAutoErrorComponent implements OnDestroy {\r\n private readonly _errorMap = inject(ARD_ERROR_MAP);\r\n private readonly _DEFAULTS = inject(ARD_FORM_FIELD_DEFAULTS);\r\n\r\n readonly control = input.required<AbstractControl<any>>();\r\n\r\n readonly onlyFirstError = input<boolean, BooleanLike>(this._DEFAULTS.autoErrorOnlyFirstError, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n private _eventsSub!: Subscription;\r\n constructor() {\r\n effect(() => {\r\n const control = this.control();\r\n this._eventsSub = control.events\r\n .pipe(\r\n startWith(new TouchedChangeEvent(true, control)),\r\n filter(event => 'touched' in event || 'status' in event),\r\n map(() => {\r\n const errors = control.errors;\r\n if (!errors || !control.touched) {\r\n return [];\r\n }\r\n if (typeof errors === 'object' && Object.keys(errors).length === 0) {\r\n return [];\r\n }\r\n\r\n const onlyFirstError = this.onlyFirstError();\r\n const errorMessages: string[] = [];\r\n for (const errorType in this._errorMap) {\r\n if (errorType in errors) {\r\n const valueOrFn = this._errorMap[errorType];\r\n if (typeof valueOrFn === 'function') {\r\n const result = valueOrFn(errors[errorType]);\r\n if (onlyFirstError) {\r\n return [result];\r\n }\r\n errorMessages.push(result);\r\n } else if (valueOrFn !== undefined) {\r\n if (onlyFirstError) {\r\n return [valueOrFn];\r\n }\r\n errorMessages.push(valueOrFn);\r\n }\r\n }\r\n }\r\n if (errorMessages.length === 0) {\r\n return [this._errorMap.$fallback || JSON.stringify(errors)];\r\n }\r\n return errorMessages;\r\n })\r\n )\r\n .subscribe(errorMessages => {\r\n this.errorMessages.set(errorMessages);\r\n });\r\n\r\n () => {\r\n this._eventsSub.unsubscribe();\r\n };\r\n });\r\n\r\n effect(() => {\r\n if (this.left() && this.right()) {\r\n console.error(`ARD-NF5150: Cannot align a form field auto-error to both left and right.`);\r\n }\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this._eventsSub?.unsubscribe();\r\n }\r\n\r\n readonly errorMessages = signal<string[]>([], { equal: (a, b) => a.length === b.length && a.every((v, i) => v === b[i]) });\r\n\r\n readonly hasError = computed<boolean>(() => this.errorMessages().length > 0);\r\n\r\n readonly left = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly right = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n}\r\n","@for (message of errorMessages(); track message) {\r\n <ard-error>{{ message }}</ard-error>\r\n}","import { computed, Directive, input } from '@angular/core';\r\nimport { Validators } from '@angular/forms';\r\nimport { BooleanLike, coerceBooleanProperty, trackBoundControl } from '@ardium-ui/devkit';\r\nimport { TakeChance as Random } from 'take-chance';\r\nimport { ARD_FORM_FIELD_CONTROL, ArdFormFieldControl } from './form-field-child.token';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector:\r\n 'ard-form-field > input, ard-form-field > textarea, ard-form-field > select, ard-horizontal-form-field > input, ard-horizontal-form-field > textarea, ard-horizontal-form-field > select',\r\n providers: [\r\n {\r\n provide: ARD_FORM_FIELD_CONTROL,\r\n useExisting: ArdiumFormFieldNativeInputAdapterDirective,\r\n },\r\n ],\r\n host: {\r\n '[class.ard-has-error]': 'hasError()',\r\n '[class.ard-is-success]': 'isSuccess()',\r\n },\r\n})\r\nexport class ArdiumFormFieldNativeInputAdapterDirective implements ArdFormFieldControl {\r\n readonly _required = input<boolean | undefined, any>(undefined, {\r\n transform: v => coerceBooleanProperty(v),\r\n alias: 'required',\r\n });\r\n readonly required = computed<boolean>(\r\n () =>\r\n this._required() ??\r\n !!(this.control.validators()?.includes(Validators.required) || this.control.validators()?.includes(Validators.requiredTrue))\r\n );\r\n\r\n readonly isSuccess = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly disabled = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! form field related\r\n readonly control = trackBoundControl(this, { attachValueAccessor: false });\r\n\r\n ngOnInit(): void {\r\n this.control.init();\r\n }\r\n\r\n readonly htmlId = input<string>(Random.id());\r\n\r\n readonly _hasError = input<boolean | undefined, any>(undefined, {\r\n transform: v => coerceBooleanProperty(v),\r\n alias: 'hasError',\r\n });\r\n readonly hasError = computed<boolean>(() => this._hasError() ?? (this.control.touched() && this.control.invalid()));\r\n\r\n ngOnDestroy(): void {\r\n this.control.destroy();\r\n }\r\n}\r\n","import { Directive, effect, input } from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\n\r\n@Directive({\r\n selector: '[ard-hint-error]',\r\n standalone: true,\r\n host: {\r\n '[class.ard-hint-error]': 'true',\r\n '[class.ard-hint]': 'true',\r\n '[class.ard-error-default]': '!left() && !right()',\r\n '[class.ard-error-left]': 'left() && !right()',\r\n '[class.ard-error-right]': '!left() && right()',\r\n '[class.ard-error]': 'true',\r\n '[class.ard-hint-default]': '!left() && !right()',\r\n '[class.ard-hint-left]': 'left() && !right()',\r\n '[class.ard-hint-right]': '!left() && right()',\r\n },\r\n})\r\nexport class ArdiumHintErrorDirective {\r\n readonly left = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly right = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.left() && this.right()) {\r\n console.error(`ARD-NF5150: Cannot align a form field hint-error to both left and right.`);\r\n }\r\n });\r\n }\r\n}\r\n","import { Directive, effect, input } from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\n\r\n@Directive({\r\n selector: '[ard-hint]',\r\n standalone: true,\r\n host: {\r\n '[class.ard-hint]': 'true',\r\n '[class.ard-hint-default]': '!left() && !right()',\r\n '[class.ard-hint-left]': 'left() && !right()',\r\n '[class.ard-hint-right]': '!left() && right()',\r\n },\r\n})\r\nexport class ArdiumHintDirective {\r\n readonly left = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly right = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.left() && this.right()) {\r\n console.error(`ARD-NF5130: Cannot align a form field hint to both left and right.`);\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, effect, inject, input } from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ARD_FORM_FIELD_DEFAULTS } from '../form-field.defaults';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-label',\r\n templateUrl: './label.component.html',\r\n host: {\r\n '[class.ard-label]': 'true',\r\n },\r\n})\r\nexport class ArdiumLabelComponent {\r\n protected readonly _DEFAULTS = inject(ARD_FORM_FIELD_DEFAULTS);\r\n\r\n readonly required = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly optional = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly requiredText = input<string>(this._DEFAULTS.labelRequiredText);\r\n readonly optionalText = input<string>(this._DEFAULTS.labelOptionalText);\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.required() && this.optional()) {\r\n console.error(`ARD-NF5120: Cannot set a form field label to be both required and optional.`);\r\n }\r\n });\r\n }\r\n}\r\n","<div\r\n class=\"ard-label__text\"\r\n [class.ard-label__required]=\"required()\"\r\n [class.ard-label__optional]=\"optional()\"\r\n>\r\n <ng-content />\r\n <span class=\"ard-label__required-optional-text\">\r\n @if (required() && !optional()) {\r\n {{ requiredText() }}\r\n } @else if (optional() && !required()) {\r\n {{ optionalText() }}\r\n }\r\n </span>\r\n</div>\r\n","import { computed, contentChild, contentChildren, Directive, inject, input } from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { isFunction } from 'simple-bool';\r\nimport { SimpleOneAxisAlignment } from '../types/alignment.types';\r\nimport { ArdiumAutoErrorComponent } from './auto-error/auto-error.component';\r\nimport { ArdiumErrorDirective } from './error/error.directive';\r\nimport { ARD_FORM_FIELD_CONTROL, ArdFormFieldControl } from './form-field-child.token';\r\nimport { ARD_FORM_FIELD_DEFAULTS } from './form-field.defaults';\r\nimport { ArdiumHintErrorDirective } from './hint-error/hint-error.directive';\r\nimport { ArdiumHintDirective } from './hint/hint.directive';\r\nimport { ArdiumLabelComponent } from './label/label.component';\r\n\r\n@Directive()\r\nexport abstract class _FormFieldBase {\r\n protected readonly _DEFAULTS = inject(ARD_FORM_FIELD_DEFAULTS);\r\n\r\n readonly defaultHintAlign = input<SimpleOneAxisAlignment>(this._DEFAULTS.defaultHintAlign);\r\n\r\n public readonly alignHintToLeftByDefault = computed(() => this.defaultHintAlign() === SimpleOneAxisAlignment.Left);\r\n\r\n readonly control = contentChild<ArdFormFieldControl>(ARD_FORM_FIELD_CONTROL);\r\n\r\n get controlHasError() {\r\n const fnOrValue = this.control()?.hasError;\r\n return isFunction(fnOrValue) ? fnOrValue() : fnOrValue;\r\n }\r\n get controlIsSuccess() {\r\n const fnOrValue = this.control()?.isSuccess;\r\n return isFunction(fnOrValue) ? fnOrValue() : fnOrValue;\r\n }\r\n get controlDisabled() {\r\n const fnOrValue = this.control()?.disabled;\r\n return isFunction(fnOrValue) ? fnOrValue() : fnOrValue;\r\n }\r\n get controlHtmlId() {\r\n const fnOrValue = this.control()?.htmlId;\r\n return isFunction(fnOrValue) ? fnOrValue() : fnOrValue;\r\n }\r\n // get controlRequired() {\r\n // const fnOrValue = this.control()?.required;\r\n // return isFunction(fnOrValue) ? fnOrValue() : fnOrValue;\r\n // }\r\n\r\n readonly label = contentChild<ArdiumLabelComponent>(ArdiumLabelComponent);\r\n\r\n readonly hints = contentChildren(ArdiumHintDirective);\r\n readonly errors = contentChildren(ArdiumErrorDirective);\r\n readonly autoErrors = contentChildren(ArdiumAutoErrorComponent);\r\n readonly hintErrors = contentChildren(ArdiumHintErrorDirective);\r\n\r\n readonly hasAnyHint = computed<boolean>(() => this.hints().length > 0 || this.hintErrors().length > 0);\r\n readonly hasAnyError = computed<boolean>(\r\n () => this.errors().length > 0 || (this.autoErrors().length > 0 && this.autoErrors().some(e => e.hasError()))\r\n );\r\n readonly reserveHintLine = input<boolean, BooleanLike>(this._DEFAULTS.reserveHintLine, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n ngOnInit(): void {\r\n if (!this.control()) {\r\n throw new Error(\r\n `ARD-FT5110: Form field component requires any control (input) to be present within the element. Found none.`\r\n );\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { _FormFieldBase } from './form-field-base';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-form-field',\r\n templateUrl: './form-field.component.html',\r\n styleUrl: './form-field.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumFormFieldComponent extends _FormFieldBase implements OnInit {}\r\n","<div\r\n class=\"ard-form-field\"\r\n [class.ard-form-field__with-error]=\"controlHasError\"\r\n [class.ard-form-field__is-success]=\"controlIsSuccess\"\r\n [class.ard-form-field__control-disabled]=\"controlDisabled\"\r\n>\r\n <label\r\n class=\"ard-form-field__label\"\r\n [attr.for]=\"controlHtmlId\"\r\n >\r\n <ng-content select=\"ard-label, [ard-label]\" />\r\n </label>\r\n <div class=\"ard-form-field__input\">\r\n <ng-content />\r\n </div>\r\n <div\r\n class=\"ard-form-field__hints\"\r\n [class.ard-form-field__errors]=\"hasAnyError()\"\r\n [class.ard-form-field__reserve-hint-line]=\"reserveHintLine() || hasAnyHint()\"\r\n [class.ard-form-field__hints-default-left]=\"alignHintToLeftByDefault()\"\r\n >\r\n @if (hasAnyError()) {\r\n <div class=\"ard-form-field__errors-left\">\r\n @if (alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-error\">\r\n <ng-template [ngTemplateOutlet]=\"defaultAutoErrors\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultErrors\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-error[left], [ard-error][left], ard-auto-error[left]\" />\r\n <ng-template [ngTemplateOutlet]=\"leftHintErrors\" />\r\n </div>\r\n <div class=\"ard-form-field__errors-right\">\r\n @if (!alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-error\">\r\n <ng-template [ngTemplateOutlet]=\"defaultAutoErrors\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultErrors\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-error[right], [ard-error][right], ard-auto-error[right]\" />\r\n <ng-template [ngTemplateOutlet]=\"rightHintErrors\" />\r\n </div>\r\n } @else {\r\n <div class=\"ard-form-field__hints-left\">\r\n @if (alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-hint\">\r\n <ng-template [ngTemplateOutlet]=\"defaultHints\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-hint[left], [ard-hint][left]\" />\r\n <ng-template [ngTemplateOutlet]=\"leftHintErrors\" />\r\n </div>\r\n <div class=\"ard-form-field__hints-right\">\r\n @if (!alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-hint\">\r\n <ng-template [ngTemplateOutlet]=\"defaultHints\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-hint[right], [ard-hint][right]\" />\r\n <ng-template [ngTemplateOutlet]=\"rightHintErrors\" />\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n<ng-template #defaultHints>\r\n <ng-content select=\"ard-hint:not([left]):not([right]), [ard-hint]:not([left]):not([right])\" />\r\n</ng-template>\r\n\r\n<ng-template #defaultErrors>\r\n <ng-content select=\"ard-error:not([left]):not([right]), [ard-error]:not([left]):not([right])\" />\r\n</ng-template>\r\n\r\n<ng-template #defaultAutoErrors>\r\n <ng-content select=\"ard-auto-error:not([left]):not([right])\" />\r\n</ng-template>\r\n\r\n<ng-template #defaultHintErrors>\r\n <ng-content select=\"ard-hint-error:not([left]):not([right]), [ard-hint-error]:not([left]):not([right])\" />\r\n</ng-template>\r\n<ng-template #leftHintErrors>\r\n <ng-content select=\"ard-hint-error[left], [ard-hint-error][left]\" />\r\n</ng-template>\r\n<ng-template #rightHintErrors>\r\n <ng-content select=\"ard-hint-error[right], [ard-hint-error][right]\" />\r\n</ng-template>\r\n","import { Component } from '@angular/core';\r\nimport { ArdiumHintErrorDirective } from './hint-error.directive';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-hint-error',\r\n template: '<ng-content />',\r\n hostDirectives: [{ directive: ArdiumHintErrorDirective, inputs: ['left', 'right'] }],\r\n})\r\nexport class ArdiumHintErrorComponent {}\r\n","import { Component } from '@angular/core';\r\nimport { ArdiumHintDirective } from './hint.directive';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-hint',\r\n template: '<ng-content />',\r\n hostDirectives: [{ directive: ArdiumHintDirective, inputs: ['left', 'right'] }],\r\n})\r\nexport class ArdiumHintComponent {}\r\n","import { ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { _FormFieldBase } from './form-field-base';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-horizontal-form-field',\r\n templateUrl: './horizontal-form-field.component.html',\r\n styleUrl: './form-field.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumHorizontalFormFieldComponent extends _FormFieldBase implements OnInit {}\r\n","<div\r\n class=\"ard-horizontal-form-field\"\r\n [class.ard-form-field__with-error]=\"controlHasError\"\r\n [class.ard-form-field__is-success]=\"controlIsSuccess\"\r\n [class.ard-form-field__control-disabled]=\"controlDisabled\"\r\n>\r\n <div class=\"ard-form-field__label-container\">\r\n <label\r\n class=\"ard-form-field__label\"\r\n [attr.for]=\"controlHtmlId\"\r\n >\r\n <ng-content select=\"ard-label, [ard-label]\" />\r\n </label>\r\n </div>\r\n <div class=\"ard-form-field__non-label\">\r\n <div class=\"ard-form-field__input\">\r\n <ng-content />\r\n </div>\r\n <div\r\n class=\"ard-form-field__hints\"\r\n [class.ard-form-field__errors]=\"hasAnyError()\"\r\n [class.ard-form-field__reserve-hint-line]=\"reserveHintLine() || hasAnyHint()\"\r\n [class.ard-form-field__hints-default-left]=\"alignHintToLeftByDefault()\"\r\n >\r\n @if (hasAnyError()) {\r\n <div class=\"ard-form-field__errors-left\">\r\n @if (alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-error\">\r\n <ng-template [ngTemplateOutlet]=\"defaultAutoErrors\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultErrors\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-error[left], [ard-error][left], ard-auto-error[left]\" />\r\n <ng-template [ngTemplateOutlet]=\"leftHintErrors\" />\r\n </div>\r\n <div class=\"ard-form-field__errors-right\">\r\n @if (!alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-error\">\r\n <ng-template [ngTemplateOutlet]=\"defaultAutoErrors\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultErrors\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-error[right], [ard-error][right], ard-auto-error[right]\" />\r\n <ng-template [ngTemplateOutlet]=\"rightHintErrors\" />\r\n </div>\r\n } @else {\r\n <div class=\"ard-form-field__hints-left\">\r\n @if (alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-hint\">\r\n <ng-template [ngTemplateOutlet]=\"defaultHints\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-hint[left], [ard-hint][left]\" />\r\n <ng-template [ngTemplateOutlet]=\"leftHintErrors\" />\r\n </div>\r\n <div class=\"ard-form-field__hints-right\">\r\n @if (!alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-hint\">\r\n <ng-template [ngTemplateOutlet]=\"defaultHints\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-hint[right], [ard-hint][right]\" />\r\n <ng-template [ngTemplateOutlet]=\"rightHintErrors\" />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #defaultHints>\r\n <ng-content select=\"ard-hint:not([left]):not([right]), [ard-hint]:not([left]):not([right])\" />\r\n</ng-template>\r\n\r\n<ng-template #defaultAutoErrors>\r\n <ng-content select=\"ard-auto-error:not([left]):not([right])\" />\r\n</ng-template>\r\n\r\n<ng-template #defaultErrors>\r\n <ng-content select=\"ard-error:not([left]):not([right]), [ard-error]:not([left]):not([right])\" />\r\n</ng-template>\r\n\r\n<ng-template #defaultHintErrors>\r\n <ng-content select=\"ard-hint-error:not([left]):not([right]), [ard-hint-error]:not([left]):not([right])\" />\r\n</ng-template>\r\n<ng-template #leftHintErrors>\r\n <ng-content select=\"ard-hint-error[left], [ard-hint-error][left]\" />\r\n</ng-template>\r\n<ng-template #rightHintErrors>\r\n <ng-content select=\"ard-hint-error[right], [ard-hint-error][right]\" />\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumAutoErrorComponent } from './auto-error/auto-error.component';\r\nimport { ArdiumErrorComponent } from './error/error.component';\r\nimport { ArdiumErrorDirective } from './error/error.directive';\r\nimport { ArdiumFormFieldNativeInputAdapterDirective } from './form-field-native-inputs';\r\nimport { ArdiumFormFieldComponent } from './form-field.component';\r\nimport { ArdiumHintErrorComponent } from './hint-error/hint-error.component';\r\nimport { ArdiumHintComponent } from './hint/hint.component';\r\nimport { ArdiumHintDirective } from './hint/hint.directive';\r\nimport { ArdiumHorizontalFormFieldComponent } from './horizontal-form-field.component';\r\nimport { ArdiumLabelComponent } from './label/label.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumFormFieldComponent,\r\n ArdiumHorizontalFormFieldComponent,\r\n ArdiumFormFieldNativeInputAdapterDirective,\r\n ArdiumLabelComponent,\r\n ArdiumHintComponent,\r\n ArdiumErrorComponent,\r\n ArdiumHintErrorComponent,\r\n ArdiumAutoErrorComponent,\r\n ],\r\n imports: [CommonModule, ArdiumHintDirective, ArdiumErrorDirective],\r\n exports: [\r\n ArdiumFormFieldComponent,\r\n ArdiumHorizontalFormFieldComponent,\r\n ArdiumFormFieldNativeInputAdapterDirective,\r\n ArdiumLabelComponent,\r\n ArdiumHintComponent,\r\n ArdiumErrorComponent,\r\n ArdiumHintErrorComponent,\r\n ArdiumAutoErrorComponent,\r\n ],\r\n})\r\nexport class ArdiumFormFieldModule {}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { FormElementAppearance } from './../types/theming.types';\r\n\r\nexport interface ArdKbdDefaults {\r\n full: boolean;\r\n appearance: FormElementAppearance;\r\n}\r\n\r\nconst _kbdDefaults: ArdKbdDefaults = {\r\n full: false,\r\n appearance: FormElementAppearance.Outlined,\r\n};\r\n\r\nexport const ARD_KBD_DEFAULTS = new InjectionToken<ArdKbdDefaults>('ard-kbd-defaults', {\r\n factory: () => ({\r\n ..._kbdDefaults,\r\n }),\r\n});\r\n\r\nexport function provideKbdDefaults(config: Partial<ArdKbdDefaults>): Provider {\r\n return { provide: ARD_KBD_DEFAULTS, useValue: { ..._kbdDefaults, ...config } };\r\n}\r\n","import { inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { keyToString } from 'key-display-names';\r\nimport { ARD_KBD_DEFAULTS } from './kbd.defaults';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'kbd',\r\n})\r\nexport class ArdiumKbdPipe implements PipeTransform {\r\n protected readonly _DEFAULTS = inject(ARD_KBD_DEFAULTS);\r\n\r\n transform(value: string, useShort: boolean = !this._DEFAULTS.full): string {\r\n return keyToString(value, useShort);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { FormElementAppearance } from './../types/theming.types';\r\nimport { ARD_KBD_DEFAULTS } from './kbd.defaults';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-kbd',\r\n templateUrl: './kbd.component.html',\r\n styleUrls: ['./kbd.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumKbdComponent implements AfterViewInit {\r\n protected readonly _DEFAULTS = inject(ARD_KBD_DEFAULTS);\r\n\r\n readonly contentWrapper = viewChild<ElementRef<HTMLElement>>('contentWrapperEl');\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.key() && !this.contentWrapper()!.nativeElement.innerText) {\r\n throw new Error(`ARD-FT5030: Using <ard-kbd> without specifying the [key] field is not allowed.`);\r\n }\r\n }\r\n\r\n readonly key = input<string>('');\r\n readonly full = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Filled);\r\n\r\n readonly ngClasses = computed<string>(() => [`ard-appearance-${this.appearance()}`].join(' '));\r\n}\r\n","<kbd\r\n class=\"ard-kbd\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n {{ key() || contentWrapper()?.nativeElement?.innerText || '' | kbd: !full() }}\r\n</kbd>\r\n\r\n<div\r\n #contentWrapperEl\r\n class=\"ard-kbd-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { computed, Directive, effect, ElementRef, inject, input, Renderer2 } from '@angular/core';\r\nimport { FormElementAppearance } from './../types/theming.types';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: '[ardKbd]',\r\n})\r\nexport class ArdiumKbdDirective {\r\n readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\r\n readonly renderer: Renderer2 = inject(Renderer2);\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Filled, { alias: 'ardKbdAppearance' });\r\n\r\n readonly ngClasses = computed<string[]>(() => ['ard-kbd', `ard-appearance-${this.appearance()}`]);\r\n\r\n constructor() {\r\n effect(() => {\r\n const classes = this.ngClasses();\r\n this.updateClasses(classes);\r\n });\r\n }\r\n\r\n private updateClasses(classes: string[]): void {\r\n const element = this.elementRef.nativeElement;\r\n\r\n const previousClasses = element.className.split(' ').filter(cls => cls.startsWith('ard-appearance-'));\r\n previousClasses.forEach(cls => this.renderer.removeClass(element, cls));\r\n\r\n classes.forEach(cls => {\r\n this.renderer.addClass(element, cls);\r\n });\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumKbdComponent } from './kbd.component';\r\nimport { ArdiumKbdDirective } from './kbd.directive';\r\nimport { ArdiumKbdPipe } from './kbd.pipe';\r\n\r\n@NgModule({\r\n declarations: [ArdiumKbdComponent, ArdiumKbdPipe, ArdiumKbdDirective],\r\n imports: [CommonModule],\r\n exports: [ArdiumKbdComponent, ArdiumKbdPipe, ArdiumKbdDirective],\r\n})\r\nexport class ArdiumKbdModule {}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { FormElementAppearance } from '../types/theming.types';\r\n\r\nexport interface ArdKbdShortcutDefaults {\r\n full?: boolean;\r\n appearance?: FormElementAppearance;\r\n}\r\n\r\nexport const ARD_KBD_SHORTCUT_DEFAULTS = new InjectionToken<ArdKbdShortcutDefaults>('ard-kbd-shortcut-defaults', {\r\n factory: () => ({}),\r\n});\r\n\r\nexport function provideKbdShortcutDefaults(config: Partial<ArdKbdShortcutDefaults>): Provider {\r\n return { provide: ARD_KBD_SHORTCUT_DEFAULTS, useValue: config };\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { BooleanLike, coerceArrayProperty, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ARD_KBD_DEFAULTS } from '../kbd/kbd.defaults';\r\nimport { FormElementAppearance } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ARD_KBD_SHORTCUT_DEFAULTS } from './kbd-shortcut.defaults';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-kbd-shortcut',\r\n templateUrl: './kbd-shortcut.component.html',\r\n styleUrls: ['./kbd-shortcut.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumKbdShortcutComponent implements AfterViewInit {\r\n protected readonly _KBD_DEFAULTS = inject(ARD_KBD_DEFAULTS);\r\n protected readonly _DEFAULTS = inject(ARD_KBD_SHORTCUT_DEFAULTS);\r\n\r\n readonly contentWrapper = viewChild<ElementRef<HTMLElement>>('contentWrapperEl');\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.keys() && !this.contentWrapper()?.nativeElement.innerText) {\r\n throw new Error(`ARD-FT5040: Using <ard-kbd-shortcut> without specifying the [keys] field is not allowed.`);\r\n }\r\n }\r\n\r\n readonly splitRegex = /[+, ]/;\r\n readonly keys = input<Nullable<string[]>, Nullable<string | string[]>>(undefined, {\r\n transform: v => coerceArrayProperty(v, this.splitRegex),\r\n });\r\n\r\n readonly full = input<boolean, BooleanLike>(this._DEFAULTS.full ?? this._KBD_DEFAULTS.full, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(this._DEFAULTS.appearance ?? this._KBD_DEFAULTS.appearance);\r\n\r\n readonly ngClasses = computed<string>(() => [`ard-appearance-${this.appearance}`].join(' '));\r\n}\r\n","<div\r\n class=\"ard-kbd-shortcut\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (key of keys() ?? contentWrapper()?.nativeElement?.innerText?.split(splitRegex); track $index) {\r\n @if ($index !== 0) {\r\n <span>+</span>\r\n }\r\n <ard-kbd\r\n [appearance]=\"appearance()\"\r\n [full]=\"full()\"\r\n [key]=\"key\"\r\n />\r\n }\r\n</div>\r\n\r\n<div\r\n #contentWrapperEl\r\n class=\"ard-kbd-shortcut-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumKbdModule } from '../kbd/kbd.module';\r\nimport { ArdiumKbdShortcutComponent } from './kbd-shortcut.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumKbdShortcutComponent],\r\n imports: [CommonModule, ArdiumKbdModule],\r\n exports: [ArdiumKbdShortcutComponent],\r\n})\r\nexport class ArdiumKbdShortcutModule {}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { StarColor } from '../star.types';\r\n\r\nexport interface ArdRatingDisplayDefaults {\r\n color: StarColor;\r\n max: number;\r\n value: number;\r\n}\r\n\r\nconst _ratingDisplayDefaults: ArdRatingDisplayDefaults = {\r\n color: StarColor.Gold,\r\n max: 5,\r\n value: 0,\r\n};\r\n\r\nexport const ARD_RATING_DISPLAY_DEFAULTS = new InjectionToken<ArdRatingDisplayDefaults>('ard-rating-display-defaults', {\r\n factory: () => ({\r\n ..._ratingDisplayDefaults,\r\n }),\r\n});\r\n\r\nexport function provideRatingDisplayDefaults(config: Partial<ArdRatingDisplayDefaults>): Provider {\r\n return { provide: ARD_RATING_DISPLAY_DEFAULTS, useValue: { ..._ratingDisplayDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { ArdRatingDisplayStarTemplateContext } from './rating-display.types';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-rating-display > ng-template[ard-star-tmp]',\r\n})\r\nexport class ArdRatingDisplayStarTemplateDirective {\r\n constructor(public template: TemplateRef<ArdRatingDisplayStarTemplateContext>) {}\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, contentChild, inject, input, ViewEncapsulation } from '@angular/core';\r\nimport { coerceNumberProperty, NumberLike } from '@ardium-ui/devkit';\r\nimport { isArray, isNumber } from 'simple-bool';\r\nimport { StarColor, StarFillMode } from './../star.types';\r\nimport { ARD_RATING_DISPLAY_DEFAULTS } from './rating-display.defaults';\r\nimport { ArdRatingDisplayStarTemplateDirective } from './rating-display.directives';\r\nimport { ArdRatingDisplayStarTemplateContext } from './rating-display.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-rating-display',\r\n templateUrl: './rating-display.component.html',\r\n styleUrls: ['./rating-display.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumRatingDisplayComponent {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n protected readonly _DEFAULTS = inject(ARD_RATING_DISPLAY_DEFAULTS);\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(this._DEFAULTS.color);\r\n\r\n readonly ngClasses = computed<string>(() => [this.wrapperClasses(), `ard-color-${this.color}`].join(' '));\r\n\r\n //! stars\r\n readonly max = input<number, NumberLike>(this._DEFAULTS.max, { transform: v => coerceNumberProperty(v, this._DEFAULTS.max) });\r\n\r\n readonly value = input<number | StarFillMode[], string | number | StarFillMode[]>(this._DEFAULTS.value, {\r\n transform: v => {\r\n if (isArray(v)) {\r\n return v;\r\n }\r\n return coerceNumberProperty(v, 0);\r\n },\r\n });\r\n\r\n readonly starArray = computed<StarFillMode[]>(() => {\r\n let v = this.value();\r\n let newArr: StarFillMode[];\r\n\r\n // pad the array with non-filled stars and return it\r\n if (isArray(v)) {\r\n newArr = [...v];\r\n while (newArr.length < this.max()) {\r\n newArr.push(StarFillMode.None);\r\n }\r\n return newArr;\r\n }\r\n\r\n // create an array from a numeric value\r\n newArr = [];\r\n while (newArr.length < this.max()) {\r\n v--;\r\n if (v + 1 >= 1) {\r\n newArr.push(StarFillMode.Filled);\r\n continue;\r\n }\r\n if (Math.round(v + 1) === 1) {\r\n newArr.push(StarFillMode.Half);\r\n continue;\r\n }\r\n newArr.push(StarFillMode.None);\r\n }\r\n return newArr;\r\n });\r\n\r\n //! template\r\n readonly starTemplate = contentChild(ArdRatingDisplayStarTemplateDirective);\r\n\r\n readonly getStarTemplateContext = computed<(fillMode: StarFillMode, index: number) => ArdRatingDisplayStarTemplateContext>(\r\n () => (fillMode, index) => ({\r\n $implicit: fillMode,\r\n fillMode,\r\n index,\r\n valueIndex: isNumber(this.value()) ? (this.value() as number) - 1 : -1,\r\n color: this.color(),\r\n })\r\n );\r\n}\r\n","<div\r\n class=\"ard-rating-display\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <ng-template\r\n #defaultStarTemplate\r\n let-fillMode=\"fillMode\"\r\n let-color=\"color\"\r\n >\r\n <ard-star\r\n [class.ard-star-not-in-value]=\"fillMode !== 'none'\"\r\n [filled]=\"fillMode\"\r\n [color]=\"fillMode !== 'none' ? color : 'none'\"\r\n />\r\n </ng-template>\r\n\r\n @for (fillMode of starArray(); track $index) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"starTemplate()?.template || defaultStarTemplate\"\r\n [ngTemplateOutletContext]=\"getStarTemplateContext()(fillMode, $index)\"\r\n />\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumStarModule } from '../star.module';\r\nimport { ArdiumRatingDisplayComponent } from './rating-display.component';\r\nimport { ArdRatingDisplayStarTemplateDirective } from './rating-display.directives';\r\n\r\n@NgModule({\r\n declarations: [ArdiumRatingDisplayComponent, ArdRatingDisplayStarTemplateDirective],\r\n imports: [CommonModule, ArdiumStarModule],\r\n exports: [ArdiumRatingDisplayComponent, ArdRatingDisplayStarTemplateDirective],\r\n})\r\nexport class ArdiumRatingDisplayModule {}\r\n","import { TemplateRef } from '@angular/core';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { NonEmptyArray } from '../types/utility.types';\r\nimport { CheckboxState } from '../checkbox/checkbox.types';\r\n\r\nexport type DataSource = string | { type: 'checkbox' | 'autocount' };\r\n\r\nexport interface _GenericColumn {\r\n header: string | { template: string | TemplateRef<unknown> };\r\n cellClass?: string;\r\n}\r\n\r\nexport interface TableDataColumn extends _GenericColumn {\r\n dataSource: DataSource;\r\n template?: string | TemplateRef<unknown>;\r\n sortable?: boolean;\r\n sortFn?: (columnAData: any, columnBData: any) => number;\r\n highlight?: boolean | ComponentColor;\r\n width?: string | number;\r\n minWidth?: string | number;\r\n isRowHeader?: boolean;\r\n}\r\nexport interface TableSubheader extends _GenericColumn {\r\n children: NonEmptyArray<TableSubheader | TableDataColumn>;\r\n}\r\n\r\nexport const SortType = {\r\n Ascending: 'ascending',\r\n Descending: 'descending',\r\n} as const;\r\nexport type SortType = (typeof SortType)[keyof typeof SortType];\r\n\r\n//! contexts\r\nexport interface TableSubheaderContext {\r\n $implicit: string;\r\n header: string;\r\n}\r\nexport interface TableHeaderContext extends TableSubheaderContext {\r\n sortable: boolean;\r\n sortType: SortType | null;\r\n onTriggerSort: (event?: MouseEvent) => void;\r\n onTriggerResetSort: (event?: MouseEvent) => void;\r\n}\r\nexport interface TableCheckboxContext {\r\n $implicit: boolean;\r\n selected: boolean;\r\n disabled: boolean;\r\n onChange: (event: MouseEvent) => void;\r\n}\r\nexport interface TableHeaderCheckboxContext {\r\n $implicit: CheckboxState;\r\n state: CheckboxState;\r\n onChange: () => void;\r\n}\r\nexport interface TableCaptionContext {\r\n $implicit: string;\r\n}\r\n\r\n//! appearance-related\r\nexport const TableAppearance = {\r\n Strong: 'strong',\r\n Light: 'light',\r\n Colorless: 'colorless',\r\n} as const;\r\nexport type TableAppearance = (typeof TableAppearance)[keyof typeof TableAppearance];\r\n\r\nexport const TableVariant = {\r\n Rounded: 'rounded',\r\n Sharp: 'sharp',\r\n} as const;\r\nexport type TableVariant = (typeof TableVariant)[keyof typeof TableVariant];\r\n\r\nexport const TablePaginationStrategy = {\r\n Noop: 'noop',\r\n Slice: 'slice',\r\n} as const;\r\nexport type TablePaginationStrategy = (typeof TablePaginationStrategy)[keyof typeof TablePaginationStrategy];\r\n\r\nexport const TableAlignType = {\r\n TopLeft: 'top-left',\r\n TopCenter: 'top-center',\r\n TopRight: 'top-right',\r\n CenterLeft: 'center-left',\r\n Center: 'center-center',\r\n CenterRight: 'center-right',\r\n BottomLeft: 'bottom-left',\r\n BottomCenter: 'bottom-center',\r\n BottomRight: 'bottom-right',\r\n} as const;\r\nexport type TableAlignType = (typeof TableAlignType)[keyof typeof TableAlignType];\r\n","import { TableDataColumn, TableSubheader } from './table.types';\r\n\r\nexport function isTableSubheader(v: TableDataColumn | TableSubheader): v is TableSubheader {\r\n return 'children' in v;\r\n}\r\n\r\nexport function areAllDataColumns(cols: (TableDataColumn | TableSubheader)[]): boolean {\r\n return cols.every(col => !isTableSubheader(col));\r\n}\r\n\r\nexport function merge2dArrays<T>(destArr: T[][], arr: T[][]): void {\r\n const diff = arr.length - destArr.length;\r\n if (diff > 0) {\r\n for (let i = 0; i < diff; i++) {\r\n destArr.push([]);\r\n }\r\n }\r\n for (let row = 0; row < arr.length; row++) {\r\n destArr[row] = [...destArr[row], ...arr[row]];\r\n }\r\n}\r\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { evaluate, isDefined, isNull } from 'simple-bool';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { SortType, TableDataColumn, TablePaginationStrategy, TableSubheader } from './table.types';\r\nimport { areAllDataColumns, isTableSubheader, merge2dArrays } from './utils';\r\n\r\nexport class ArdTableRow {\r\n private readonly _itemData = signal<any>(undefined);\r\n readonly itemData = this._itemData.asReadonly();\r\n\r\n private readonly _index = signal<number>(-1);\r\n readonly index = this._index.asReadonly();\r\n\r\n private readonly _isEmpty = signal<boolean>(false);\r\n readonly isEmpty = this._isEmpty.asReadonly();\r\n\r\n private readonly _data = signal<any[]>([]);\r\n readonly data = this._data.asReadonly();\r\n\r\n private readonly _dataColumns = signal<TableDataColumn[]>([]);\r\n readonly dataColumns = this._dataColumns.asReadonly();\r\n\r\n private readonly _class = signal<string>('');\r\n readonly class = this._class.asReadonly();\r\n\r\n readonly disabled = signal<boolean>(false);\r\n readonly bold = signal<boolean>(false);\r\n readonly selected = signal<boolean>(false);\r\n readonly highlighted = signal<boolean>(false);\r\n\r\n constructor(\r\n itemData: any,\r\n index: number,\r\n data: any[],\r\n dataColumns: TableDataColumn[],\r\n disabled: boolean,\r\n bold: boolean,\r\n isEmpty = false\r\n ) {\r\n this._itemData.set(itemData);\r\n this._index.set(index);\r\n this._data.set(data);\r\n this._dataColumns.set(dataColumns);\r\n this.disabled.set(disabled);\r\n this.bold.set(bold);\r\n this._isEmpty.set(isEmpty);\r\n }\r\n static newEmptyCell(index: number) {\r\n return new ArdTableRow(null, index, [], [], false, false, true);\r\n }\r\n}\r\nexport interface TableItemStorageHost {\r\n readonly rowDisabledFrom: Signal<string>;\r\n readonly rowBoldFrom: Signal<string>;\r\n readonly invertRowDisabled: Signal<boolean>;\r\n readonly invertRowBold: Signal<boolean>;\r\n readonly data: Signal<Nullable<any>>[];\r\n readonly maxSelectedItems: Signal<Nullable<number>>;\r\n readonly treatDataSourceAsString: Signal<boolean>;\r\n\r\n readonly paginated: Signal<boolean>;\r\n readonly paginationStrategy: Signal<TablePaginationStrategy>;\r\n readonly itemsPerPage: Signal<number>;\r\n readonly page: Signal<number>;\r\n}\r\nexport class HeaderCell {\r\n readonly cell = signal<TableDataColumn | TableSubheader>(undefined as any);\r\n readonly colspan = signal<number>(1);\r\n readonly rowspan = signal<number>(1);\r\n\r\n constructor(cell: TableDataColumn | TableSubheader, colspan = 1, rowspan = 1) {\r\n this.cell.set(cell);\r\n this.colspan.set(colspan);\r\n this.rowspan.set(rowspan);\r\n }\r\n\r\n get width(): string | null {\r\n const cell = this.cell();\r\n if (isTableSubheader(cell)) return null;\r\n return this._getWidth(cell.width);\r\n }\r\n get minWidth(): string | null {\r\n const cell = this.cell();\r\n if (isTableSubheader(cell)) return null;\r\n return this._getWidth(cell.minWidth);\r\n }\r\n /**\r\n * Thransforms a numeric width into a CSS string if needed. Pure function.\r\n * @param width the width to be converted.\r\n * @returns The width expressed as a CSS-compatible string or null.\r\n */\r\n private _getWidth(width: string | number | undefined): string | null {\r\n if (!width) return null;\r\n if (typeof width === 'number') return `${width}px`;\r\n return width;\r\n }\r\n}\r\n\r\nexport class TableItemStorage {\r\n private readonly _items = signal<ArdTableRow[]>([]);\r\n private readonly _sortedItems = signal<ArdTableRow[]>([]);\r\n\r\n private readonly _dataColumns = signal<TableDataColumn[]>([]);\r\n private readonly _headerCells = signal<HeaderCell[][]>([]);\r\n\r\n constructor(private readonly _ardParentComp: TableItemStorageHost) {}\r\n\r\n /**\r\n * Gets all items.\r\n */\r\n readonly items = this._items.asReadonly();\r\n readonly sortedItems = this._sortedItems.asReadonly();\r\n /**\r\n * Gets items based on the current pagination state.\r\n */\r\n readonly paginatedItems = computed(() => {\r\n if (!this._ardParentComp.paginated() || this._ardParentComp.paginationStrategy() === TablePaginationStrategy.Noop) {\r\n return this.sortedItems();\r\n }\r\n const page = this._ardParentComp.page();\r\n const IPP = this._ardParentComp.itemsPerPage();\r\n const itemsStart = (page - 1) * IPP;\r\n const itemsEnd = page * IPP;\r\n return this.sortedItems().slice(itemsStart, itemsEnd);\r\n });\r\n /**\r\n * Gets all currently selected items.\r\n */\r\n readonly selectedItems = computed<ArdTableRow[]>(() => this.items().filter(item => item.selected()));\r\n /**\r\n * Gets all currently highlighted items.\r\n */\r\n readonly highlightedItems = computed<ArdTableRow[]>(() => this.items().filter(item => item.highlighted()));\r\n /**\r\n * Gets all highlightable items. An item is considered highlightable if it is **not** disabled.\r\n */\r\n readonly highlightableItems = computed<ArdTableRow[]>(() => this._items().filter(item => !item.disabled()));\r\n /**\r\n * Gets the values of the currently selected items.\r\n */\r\n readonly value = computed(() => this._itemsToValue(this.selectedItems()));\r\n /**\r\n * Maps an array of items into their values.\r\n * @param items The items to convert to value.\r\n * @returns An array of item values.\r\n */\r\n private _itemsToValue(items: ArdTableRow[]): any[] {\r\n return items.map(item => item.itemData());\r\n }\r\n\r\n /**\r\n * Returns true if at least one item is highlighted, otherwise false.\r\n */\r\n readonly isAnyItemHighlighted = computed(() => this.highlightedItems().length > 0);\r\n /**\r\n * Checks if any item in the table is selected.\r\n * @returns A boolean value indicating if any item is selected.\r\n */\r\n readonly isAnyItemSelected = computed(() => this.selectedItems().length > 0);\r\n /**\r\n * Checks if all items in the table are selected.\r\n * @returns A boolean value indicating if all items are selected.\r\n */\r\n readonly areAllSelected = computed(() => this.selectedItems().length === this._items().filter(item => !item.disabled()).length);\r\n /**\r\n * Returns true if the parent component defines the limit of concurrently selectable items and the amount of currently selected items matches that limit. Otherwise returns false.\r\n *\r\n * **TLDR**: true if `maxSelectedItems` is defined and the number of selected items matches that value.\r\n */\r\n readonly isItemLimitReached = computed(() => {\r\n const max = this._ardParentComp.maxSelectedItems();\r\n if (!isDefined(max)) {\r\n return false;\r\n }\r\n return max <= this.selectedItems().length;\r\n });\r\n\r\n /**\r\n * Gets the header cells of the table.\r\n * @returns a 2D array of header cells.\r\n */\r\n readonly headerCells = this._headerCells.asReadonly();\r\n /**\r\n * Checks if the table has defined columns.\r\n * @returns a boolean value indicating if the table has defined columns.\r\n */\r\n readonly hasDefinedColumns = computed(() => this._dataColumns().length > 0);\r\n\r\n //! setting columns\r\n /**\r\n * Sets the columns of the table.\r\n * @param cols an array of table data columns or table subheaders.\r\n */\r\n setColumns(cols: (TableDataColumn | TableSubheader)[]): void {\r\n const maxNestingLevel = this._getHeaderMaxNesting(cols);\r\n const headerCells = this._mapColumnsToArray(cols, maxNestingLevel, 0);\r\n this._headerCells.set(this._filterHeaderCells(headerCells));\r\n this._dataColumns.set(this._extractDataSources(cols));\r\n }\r\n /**\r\n * Filters out null values from the header cells array. Pure function.\r\n * @param cells a 2D array of header cells or null values.\r\n * @returns a 2D array of header cells without null values and empty arrays.\r\n */\r\n private _filterHeaderCells(cells: (HeaderCell | null)[][]): HeaderCell[][] {\r\n for (let i = 0; i < cells.length; i++) {\r\n cells[i] = cells[i].filter(v => v !== null);\r\n }\r\n return cells.filter(row => row.length) as HeaderCell[][];\r\n }\r\n /**\r\n * Extracts the data sources from the columns array. Pure function.\r\n * @param cols an array of table data columns or table subheaders.\r\n * @returns an array of table data columns.\r\n */\r\n private _extractDataSources(cols: (TableDataColumn | TableSubheader)[]): TableDataColumn[] {\r\n const dataColumns: TableDataColumn[] = [];\r\n\r\n for (const col of cols) {\r\n if (!isTableSubheader(col)) {\r\n dataColumns.push(col);\r\n continue;\r\n }\r\n dataColumns.push(...this._extractDataSources(col.children));\r\n }\r\n\r\n return dataColumns;\r\n }\r\n /**\r\n * Gets the maximum nesting level of the columns array. Pure function.\r\n * @param cols an array of table data columns or table subheaders.\r\n * @returns the maximum nesting level as a number.\r\n */\r\n private _getHeaderMaxNesting(cols: (TableDataColumn | TableSubheader)[]): number {\r\n if (areAllDataColumns(cols)) return 1;\r\n let max = 1;\r\n for (const col of cols.filter(v => isTableSubheader(v)) as TableSubheader[]) {\r\n const height = 1 + this._getHeaderMaxNesting(col.children);\r\n if (height > max) max = height;\r\n }\r\n return max;\r\n }\r\n /**\r\n * Maps the columns tree to a 2D array of header cells or null values. Pure function.\r\n * @param cols an array of table data columns or table subheaders.\r\n * @param maxNesting the maximum nesting level of the columns array.\r\n * @param currentNesting the current nesting level of the columns array.\r\n * @returns a 2D array of header cells or null values.\r\n */\r\n private _mapColumnsToArray(\r\n cols: (TableDataColumn | TableSubheader)[],\r\n maxNesting: number,\r\n currentNesting: number\r\n ): (HeaderCell | null)[][] {\r\n if (areAllDataColumns(cols)) {\r\n return [cols.map(col => new HeaderCell(col, 1, maxNesting - currentNesting))];\r\n }\r\n const headerCells: (HeaderCell | null)[][] = [[]];\r\n for (const col of cols) {\r\n if (!isTableSubheader(col)) {\r\n headerCells[0].push(new HeaderCell(col, 1, maxNesting - currentNesting));\r\n continue;\r\n }\r\n const childCells: (HeaderCell | null)[][] = [[], ...this._mapColumnsToArray(col.children, maxNesting, currentNesting + 1)];\r\n const height = childCells.length - 1;\r\n const width = childCells[1].length;\r\n for (let i = 0; i < height; i++) {\r\n headerCells.push([null]);\r\n }\r\n headerCells[0].push(new HeaderCell(col, width, 1));\r\n for (let i = 0; i < width - 1; i++) {\r\n headerCells[0].push(null);\r\n }\r\n merge2dArrays(headerCells, childCells);\r\n }\r\n return headerCells;\r\n }\r\n\r\n //! setting items\r\n /**\r\n * Sets the component's items. Takes into account the values defined by the parent component for `rowDisabledFrom`, `rowBoldFrom`, and `rowHighlightedFrom`.\r\n * @param items An array of items to be set as the component's items.\r\n */\r\n setItems(items: any[]): void {\r\n if (!this.hasDefinedColumns()) return;\r\n\r\n const mappedItems = items.map((item, i) => this._setItemsMapFn(item, i));\r\n this._items.set(mappedItems);\r\n this._sortedItems.set(mappedItems);\r\n }\r\n /**\r\n * Maps raw item data to an {@link ArdTableRow} object.\r\n *\r\n * @param {any} rawItemData - The raw data of the item.\r\n * @param {number} index - The index of the item.\r\n * @returns {ArdTableRow} Returns an ArdTableRow object with mapped properties.\r\n * @private\r\n */\r\n private _setItemsMapFn(rawItemData: any, index: number): ArdTableRow {\r\n //get data\r\n const [data, dataColumns] = this._getRowData(rawItemData, index);\r\n\r\n //get bold\r\n const rowBoldFromPath = this._ardParentComp.rowBoldFrom();\r\n let bold = resolvePath(rawItemData, rowBoldFromPath);\r\n if (this._ardParentComp.invertRowBold()) {\r\n bold = !bold;\r\n }\r\n\r\n //get disabled\r\n const disabledPath = this._ardParentComp.rowDisabledFrom();\r\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\r\n if (this._ardParentComp.invertRowDisabled()) {\r\n disabled = !disabled;\r\n }\r\n\r\n return new ArdTableRow(rawItemData, index, data, dataColumns, disabled, bold);\r\n }\r\n /**\r\n * Retrieves data for a row based on data columns configuration.\r\n *\r\n * @param {any} rawItemData - The raw data of the item.\r\n * @param {number} index - The index of the item.\r\n * @returns {any[]} Returns an array containing the row data.\r\n * @private\r\n */\r\n private _getRowData(rawItemData: any, index: number): [any[], TableDataColumn[]] {\r\n const data: any[] = [];\r\n const _cols = this._dataColumns();\r\n for (let i = 0; i < _cols.length; i++) {\r\n const dataColumn = _cols[i];\r\n const sourcePath = dataColumn.dataSource;\r\n\r\n if (typeof sourcePath === 'string') {\r\n if (this._ardParentComp.treatDataSourceAsString()) {\r\n data.push(rawItemData[sourcePath]);\r\n continue;\r\n }\r\n data.push(resolvePath(rawItemData, sourcePath));\r\n continue;\r\n }\r\n if (sourcePath.type === 'autocount') {\r\n data.push(index + 1);\r\n continue;\r\n }\r\n if (sourcePath.type === 'checkbox') {\r\n data.push({ _ardCheckbox: true, index });\r\n continue;\r\n }\r\n const sourceString = typeof sourcePath === 'object' ? JSON.stringify(sourcePath) : sourcePath;\r\n throw new Error(`ARD-FT5052: Unexpected data source \"${sourceString}\" at index ${i}.`);\r\n }\r\n return [data, this._dataColumns()];\r\n }\r\n /**\r\n * Writes a new value to the item storage. Selects the correct items based on the provided values, warning the user if the value is not found.\r\n * @param indexes The value of the ngModel to set.\r\n */\r\n writeValue(indexes: number[]): void {\r\n this._forceUnselectAll();\r\n this.selectItem(...indexes);\r\n }\r\n\r\n //! selecting items\r\n /**\r\n * Checks if an item with the given index is selected.\r\n *\r\n * @param {number} index The index of the item to check.\r\n * @returns {boolean} _true_ if the item is selected, otherwise _false_.\r\n */\r\n isItemSelected(index: number): boolean {\r\n return this.selectedItems().some(item => item.index() === index);\r\n }\r\n /**\r\n * Selects all items.\r\n *\r\n * Accounts for the limit of concurrently selected items defined by the parent component.\r\n * @returns a tuple containing two arrays:\r\n * * An array of items selected.\r\n * * An array of items failed to select.\r\n */\r\n selectAll(): [any[], any[]] {\r\n return this.selectItem(...this._items().map(v => v.index()));\r\n }\r\n /**\r\n * Unselects all selected items.\r\n *\r\n * If the parent component requires at least one value to be selected at all times, the first selected items is left selected.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n unselectAll(): any[] {\r\n const selected = this.selectedItems();\r\n for (const item of selected) {\r\n item.selected.set(false);\r\n }\r\n\r\n return this._itemsToValue(selected);\r\n }\r\n /**\r\n * Unselects all selected items, no matter what the component settings are.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n private _forceUnselectAll(): any[] {\r\n const selected = this.selectedItems();\r\n for (const item of selected) {\r\n item.selected.set(false);\r\n }\r\n\r\n return this._itemsToValue(selected);\r\n }\r\n /**\r\n * Selects one or multiple items.\r\n *\r\n * Accounts for the limit of concurrently selected items defined by the parent component.\r\n *\r\n * @param indexes A rest operator array of item indexes to be selected.\r\n * @returns a tuple containing two arrays:\r\n * - An array of items selected.\r\n * - An array of items failed to select.\r\n */\r\n selectItem(...indexes: number[]): [any[], any[]] {\r\n const itemsToBeSelected = this._items().filter(item => !item.disabled() && indexes.includes(item.index()));\r\n if (this.isItemLimitReached()) {\r\n return [[], this._itemsToValue(itemsToBeSelected)];\r\n }\r\n\r\n let itemsSelectedCount = 0;\r\n const itemsSelected = [];\r\n let itemsLeftUntilLimit = (this._ardParentComp.maxSelectedItems() ?? Infinity) - this.selectedItems().length;\r\n for (const item of itemsToBeSelected) {\r\n itemsSelectedCount++;\r\n if (item.selected()) continue;\r\n if (itemsLeftUntilLimit <= 0) {\r\n break;\r\n }\r\n itemsLeftUntilLimit--;\r\n item.selected.set(true);\r\n itemsSelected.push(item);\r\n }\r\n\r\n const itemsFailedToSelect = itemsToBeSelected.slice(itemsSelectedCount - 1);\r\n return [this._itemsToValue(itemsSelected), this._itemsToValue(itemsFailedToSelect)];\r\n }\r\n /**\r\n * Unselects one or multiple items.\r\n * @param items A rest operator array of item indexes to be unselected.\r\n * @returns An array of items unselected, mapped to only their values.\r\n */\r\n unselectItem(...indexes: number[]): any[] {\r\n const itemsToBeUnselected = this._items().filter(item => indexes.includes(item.index()));\r\n for (const item of itemsToBeUnselected) {\r\n item.selected.set(false);\r\n }\r\n\r\n return this._itemsToValue(itemsToBeUnselected);\r\n }\r\n\r\n //! highlighting items\r\n /**\r\n * Unhighlights all currently highlighted items.\r\n */\r\n unhighlightAll(): void {\r\n const highlighted = this.highlightedItems();\r\n for (const item of highlighted) {\r\n item.highlighted.set(false);\r\n }\r\n }\r\n /**\r\n * Highlights the given item, while unhighlighting all other items. Does nothing when the item is disabled.\r\n * @param item The index of the item to be highlighted.\r\n * @returns The highlighted item.\r\n */\r\n highlightSingleItem(index: number): ArdTableRow | null {\r\n this.unhighlightAll();\r\n return this.highlightItem(index);\r\n }\r\n /**\r\n * Highlights all given items.\r\n * @param items A rest operator array of item indexes to be highlighted.\r\n * @returns The last highlighted item.\r\n */\r\n highlightItem(...indexes: number[]): ArdTableRow {\r\n const items = this._items().filter(item => indexes.includes(item.index()));\r\n for (const item of items) {\r\n item.highlighted.set(true);\r\n }\r\n return items.last();\r\n }\r\n /**\r\n * Unhighlights all given items.\r\n * @param items A rest operator array of item indexes to be unhighlighted.\r\n */\r\n unhighlightItem(...indexes: number[]): void {\r\n const items = this._items().filter(item => indexes.includes(item.index()));\r\n for (const item of items) {\r\n if (!item || !item.highlighted()) return;\r\n\r\n item.highlighted.set(false);\r\n }\r\n }\r\n /**\r\n * Highlights the first item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightFirstItem(): ArdTableRow | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().first().index();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights the last item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightLastItem(): ArdTableRow | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().last().index();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights all non-disabled items.\r\n */\r\n highlightAllItems(): void {\r\n const itemsToHighlight = this.highlightableItems().map(v => v.index());\r\n this.highlightItem(...itemsToHighlight);\r\n }\r\n /**\r\n * Highlights the next non-disabled item defined by the offset amount.\r\n *\r\n * If `hasShift` is set to true, all originally highlighted items are kept. Otherwise, all original items are unselected.\r\n * @param offset The amount of items to offset the highlight by.\r\n * @param hasShift Whether the user has the shift key pressed.\r\n * @returns The item highlighted.\r\n */\r\n highlightNextItem(offset: number, hasShift?: boolean): ArdTableRow | null {\r\n if (!this.isAnyItemHighlighted()) {\r\n return this.highlightFirstItem();\r\n }\r\n const currentItem = this.highlightedItems().last();\r\n const itemsWithoutDisabled = this._items().filter(\r\n item => !item.disabled() && (!this.isItemLimitReached() || item.selected())\r\n );\r\n const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index() === currentItem.index());\r\n\r\n let nextItemIndex = currentIndexInItems + offset;\r\n if (nextItemIndex >= itemsWithoutDisabled.length) {\r\n nextItemIndex -= itemsWithoutDisabled.length;\r\n }\r\n if (nextItemIndex < 0) {\r\n nextItemIndex += itemsWithoutDisabled.length;\r\n }\r\n const itemToHighlight = itemsWithoutDisabled[nextItemIndex];\r\n\r\n if (hasShift) {\r\n if (itemToHighlight.highlighted()) {\r\n this.unhighlightItem(nextItemIndex);\r\n }\r\n return this.highlightItem(nextItemIndex);\r\n }\r\n return this.highlightSingleItem(nextItemIndex);\r\n }\r\n\r\n //! sorting\r\n private _currentSortColumn: number | null = null;\r\n private _currentSortType: SortType | null = null;\r\n\r\n toggleCurrentSortColumn(column: number): void {\r\n if (this._currentSortColumn === column) {\r\n if (this._currentSortType === SortType.Ascending) {\r\n this._currentSortType = SortType.Descending;\r\n } else {\r\n this._currentSortType = SortType.Ascending;\r\n }\r\n this._generateSortedRows(true);\r\n return;\r\n }\r\n this._currentSortColumn = column;\r\n this._currentSortType = SortType.Ascending;\r\n this._generateSortedRows();\r\n }\r\n resetSort(): void {\r\n this._currentSortColumn = null;\r\n this._currentSortType = null;\r\n this._sortedItems.set([...this.items()]);\r\n }\r\n getColumnSortType(column: number): SortType | null {\r\n if (this._currentSortColumn === column) {\r\n return this._currentSortType;\r\n }\r\n return null;\r\n }\r\n private _generateSortedRows(justReverse?: boolean): void {\r\n if (justReverse) {\r\n this._sortedItems.update(v => [...v.reverse()]);\r\n return;\r\n }\r\n const sortColumnIndex = this._currentSortColumn;\r\n if (isNull(sortColumnIndex) || !this._currentSortType) {\r\n this._sortedItems.set(this.items());\r\n return;\r\n }\r\n const sortColumn = this._dataColumns()[sortColumnIndex];\r\n if (!sortColumn) {\r\n throw new Error(\r\n `ARD-IS5059: Encountered an issue in <ard-table>: could not find the column with index ${sortColumnIndex}. This is most likely an Ardium UI bug, please report it to the creators.`\r\n );\r\n }\r\n\r\n const direction = this._currentSortType === SortType.Ascending ? 1 : -1;\r\n const sortFn =\r\n sortColumn.sortFn ??\r\n ((a, b) => {\r\n if (a > b) return direction;\r\n if (a < b) return -1 * direction;\r\n return 0;\r\n });\r\n\r\n this._sortedItems.set([...this.items()].sort((a, b) => sortFn(a.data()[sortColumnIndex], b.data()[sortColumnIndex])));\r\n }\r\n}\r\n","import { ModelSignal, Signal, computed } from '@angular/core';\r\nimport { isDefined } from 'simple-bool';\r\n\r\nexport interface PaginationModelHost {\r\n readonly componentId: string;\r\n readonly totalItems: Signal<number>;\r\n readonly options: Signal<number[] | { value: number; label: string }[]>;\r\n readonly itemsPerPage: ModelSignal<number>;\r\n readonly page: ModelSignal<number>;\r\n}\r\n\r\nexport interface PaginationCurrentItemsContext {\r\n readonly currentItemsFrom: number;\r\n readonly currentItemsTo: number;\r\n readonly totalItems: number;\r\n readonly totalPages: number;\r\n readonly page: number;\r\n}\r\n\r\nexport interface PaginationContext extends PaginationCurrentItemsContext {\r\n readonly itemsPerPageOptions: number[] | { value: number; label: string }[];\r\n readonly itemsPerPage: number;\r\n readonly onItemsPerPageChange: (newValue: number) => void;\r\n readonly firstPageDisabled: boolean;\r\n readonly prevPageDisabled: boolean;\r\n readonly nextPageDisabled: boolean;\r\n readonly lastPageDisabled: boolean;\r\n readonly onPageChange: (newPage: number) => void;\r\n}\r\n\r\nexport class PaginationModel {\r\n constructor(private readonly _ardHostCmp: PaginationModelHost) {}\r\n\r\n readonly isTotalItemsDefined = computed<boolean>(() => isDefined(this._ardHostCmp.totalItems()));\r\n\r\n readonly lastPageNum = computed<number | null>(() => {\r\n const total = this._ardHostCmp.totalItems();\r\n if (!total) return null;\r\n return Math.ceil(total / this._ardHostCmp.itemsPerPage());\r\n });\r\n readonly isLastPage = computed<boolean>(() => {\r\n return !isDefined(this._ardHostCmp.totalItems()) || this.lastPageNum() === this._ardHostCmp.page();\r\n });\r\n readonly itemsOnCurrentPage = computed<[number, number] | null>(() => {\r\n const total = this._ardHostCmp.totalItems();\r\n if (!total) return null;\r\n return [\r\n Math.min(total, (this._ardHostCmp.page() - 1) * this._ardHostCmp.itemsPerPage() + 1),\r\n Math.min(total, this._ardHostCmp.page() * this._ardHostCmp.itemsPerPage()),\r\n ];\r\n });\r\n\r\n //! action disabled states\r\n readonly firstPageDisabled = computed<boolean>(() => {\r\n return !isDefined(this._ardHostCmp.totalItems()) || this._ardHostCmp.page() === 1;\r\n });\r\n readonly lastPageDisabled = computed<boolean>(() => {\r\n return !isDefined(this._ardHostCmp.totalItems()) || this._ardHostCmp.page() === this.lastPageNum();\r\n });\r\n\r\n //! current page\r\n setPage(v: number): void {\r\n this._ardHostCmp.page.set(v);\r\n }\r\n getPage(): number {\r\n return this._ardHostCmp.page();\r\n }\r\n goToFirstPage(): number | null {\r\n if (this.firstPageDisabled()) return null;\r\n this.setPage(1);\r\n return 1;\r\n }\r\n goToPrevPage(): number | null {\r\n if (this.firstPageDisabled()) return null;\r\n this.setPage(this._ardHostCmp.page() - 1);\r\n return this._ardHostCmp.page();\r\n }\r\n goToNextPage(): number | null {\r\n if (this.lastPageDisabled()) return null;\r\n this.setPage(this._ardHostCmp.page() + 1);\r\n return this._ardHostCmp.page();\r\n }\r\n goToLastPage(): number | null {\r\n if (this.lastPageDisabled()) return null;\r\n this.setPage(this.lastPageNum()!);\r\n return this._ardHostCmp.page();\r\n }\r\n\r\n //! context\r\n readonly getCurrentItemsContext = computed<PaginationCurrentItemsContext>(() => {\r\n const total = this._ardHostCmp.totalItems();\r\n if (!total)\r\n throw new Error(`ARD-FT${this._ardHostCmp.componentId}90: Cannot use pagination model without defining total items first.`);\r\n\r\n const pageItems = this.itemsOnCurrentPage()!;\r\n return {\r\n totalPages: this.lastPageNum()!,\r\n totalItems: total,\r\n page: this._ardHostCmp.page(),\r\n currentItemsFrom: pageItems[0],\r\n currentItemsTo: pageItems[1],\r\n };\r\n });\r\n readonly getPartialContext = computed<Omit<PaginationContext, 'onItemsPerPageChange' | 'onPageChange'>>(() => {\r\n return {\r\n ...this.getCurrentItemsContext(),\r\n itemsPerPageOptions: this._ardHostCmp.options(),\r\n itemsPerPage: this._ardHostCmp.itemsPerPage(),\r\n firstPageDisabled: this.firstPageDisabled(),\r\n prevPageDisabled: this.firstPageDisabled(),\r\n nextPageDisabled: this.lastPageDisabled(),\r\n lastPageDisabled: this.lastPageDisabled(),\r\n };\r\n });\r\n}\r\n","import { PaginationCurrentItemsContext } from '../_internal/models/pagination.model';\r\n\r\nexport const PaginationAlign = {\r\n Left: 'left',\r\n Center: 'center',\r\n Right: 'right',\r\n Split: 'split',\r\n} as const;\r\nexport type PaginationAlign = (typeof PaginationAlign)[keyof typeof PaginationAlign];\r\n\r\nexport type CurrentItemsFormatFn = (context: PaginationCurrentItemsContext) => string;\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _focusableComponentDefaults, _FocusableComponentDefaults } from '../_internal/focusable-component';\r\nimport { ComponentColor } from './../types/colors.types';\r\nimport { CurrentItemsFormatFn, PaginationAlign } from './table-pagination.types';\r\n\r\nexport interface ArdTablePaginationDefaults extends _FocusableComponentDefaults {\r\n options: number[] | { value: number; label: string }[];\r\n itemsPerPage: number;\r\n page: number;\r\n color: ComponentColor;\r\n align: PaginationAlign;\r\n compact: boolean;\r\n useFirstLastButtons: boolean;\r\n itemsPerPageText: string;\r\n currentItemsFormatFn: CurrentItemsFormatFn;\r\n}\r\n\r\nconst _tablePaginationDefaults: ArdTablePaginationDefaults = {\r\n ..._focusableComponentDefaults,\r\n options: [10, 25, 50],\r\n itemsPerPage: 50,\r\n page: 1,\r\n color: ComponentColor.None,\r\n align: PaginationAlign.Split,\r\n compact: false,\r\n useFirstLastButtons: false,\r\n itemsPerPageText: 'Items per page:',\r\n currentItemsFormatFn: ({ currentItemsFrom, currentItemsTo, totalItems }) =>\r\n `${currentItemsFrom} – ${currentItemsTo} of ${totalItems}`,\r\n};\r\n\r\nexport const ARD_TABLE_PAGINATION_DEFAULTS = new InjectionToken<ArdTablePaginationDefaults>('ard-table-pagination-defaults', {\r\n factory: () => ({\r\n ..._tablePaginationDefaults,\r\n }),\r\n});\r\n\r\nexport function provideTablePaginationDefaults(config: Partial<ArdTablePaginationDefaults>): Provider {\r\n return { provide: ARD_TABLE_PAGINATION_DEFAULTS, useValue: { ..._tablePaginationDefaults, ...config } };\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Inject,\r\n OnInit,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n model\r\n} from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { PaginationModel } from '../_internal/models/pagination.model';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ARD_TABLE_PAGINATION_DEFAULTS, ArdTablePaginationDefaults } from './table-pagination.defaults';\r\nimport { CurrentItemsFormatFn, PaginationAlign } from './table-pagination.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-table-pagination',\r\n templateUrl: './table-pagination.component.html',\r\n styleUrls: ['./table-pagination.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTablePaginationComponent extends _FocusableComponentBase implements OnInit {\r\n protected override readonly _DEFAULTS!: ArdTablePaginationDefaults;\r\n constructor(@Inject(ARD_TABLE_PAGINATION_DEFAULTS) defaults: ArdTablePaginationDefaults) {\r\n super(defaults);\r\n }\r\n\r\n readonly componentId = '506';\r\n\r\n private readonly _pagination = new PaginationModel(this);\r\n\r\n //! main settings\r\n readonly totalItems = input.required<number>();\r\n readonly options = input<number[] | { value: number; label: string }[]>([10, 25, 50]);\r\n readonly itemsPerPage = model<number>(50);\r\n readonly page = model<number>(1);\r\n\r\n ngOnInit(): void {\r\n if (this._pagination.isTotalItemsDefined()) return;\r\n throw new Error('ARD-FT5060: Table pagination requires [totalItems] to be defined.');\r\n }\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly align = input<PaginationAlign>(PaginationAlign.Split);\r\n\r\n readonly compact = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [`ard-color-${this.color()}`, `ard-align-${this.align()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! miscellaneous\r\n readonly useFirstLastButtons = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly isLoading = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly itemsPerPageText = input<string>('Items per page:');\r\n\r\n readonly currentItemsFormatFn = input<CurrentItemsFormatFn>(\r\n ({ currentItemsFrom: currentItemsFirst, currentItemsTo: currentItemsLast, totalItems }) =>\r\n `${currentItemsFirst} – ${currentItemsLast} of ${totalItems}`\r\n );\r\n\r\n //! contexts\r\n readonly getCurrentItemsContext = this._pagination.getCurrentItemsContext;\r\n\r\n readonly firstPageDisabled = this._pagination.firstPageDisabled;\r\n readonly lastPageDisabled = this._pagination.lastPageDisabled;\r\n\r\n //! methods\r\n onItemsPerPageChange(newValue: number): void {\r\n if (this.isLoading()) return;\r\n if (newValue === this.itemsPerPage()) return;\r\n this.itemsPerPage.set(newValue);\r\n }\r\n onPageChange(newPage: number): void {\r\n if (this.isLoading()) return;\r\n if (newPage === this.page()) return;\r\n this._pagination.setPage(newPage);\r\n }\r\n onFirstPage(): void {\r\n if (this.isLoading()) return;\r\n this._pagination.goToFirstPage();\r\n }\r\n onPrevPage(): void {\r\n if (this.isLoading()) return;\r\n this._pagination.goToPrevPage();\r\n }\r\n onNextPage(): void {\r\n if (this.isLoading()) return;\r\n this._pagination.goToNextPage();\r\n }\r\n onLastPage(): void {\r\n if (this.isLoading()) return;\r\n this._pagination.goToLastPage();\r\n }\r\n}\r\n","<div\r\n class=\"ard-pagination\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-pagination__items-per-page\">\r\n <div class=\"ard-pagination__text\">{{ itemsPerPageText() }}</div>\r\n <ard-select\r\n [items]=\"options()\"\r\n [compact]=\"compact()\"\r\n [value]=\"itemsPerPage()\"\r\n autoHighlightFirst=\"false\"\r\n [disabled]=\"disabled()\"\r\n (valueChange)=\"onItemsPerPageChange($event[0])\"\r\n clearable=\"false\"\r\n />\r\n </div>\r\n <div class=\"ard-pagination__current-page\">\r\n <div class=\"ard-pagination__text\">\r\n {{ currentItemsFormatFn()(getCurrentItemsContext()) }}\r\n </div>\r\n <div class=\"ard-pagination__buttons\">\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onFirstPage()\"\r\n >\r\n <ard-icon>first page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onPrevPage()\"\r\n >\r\n <ard-icon>navigate before</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onNextPage()\"\r\n >\r\n <ard-icon>navigate next</ard-icon>\r\n </ard-icon-button>\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onLastPage()\"\r\n >\r\n <ard-icon>last page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumIconButtonModule } from '../buttons/icon-button/icon-button.module';\r\nimport { ArdiumIconModule } from '../icon/icon.module';\r\nimport { ArdiumSelectModule } from '../select/select.module';\r\nimport { ArdiumTablePaginationComponent } from './table-pagination.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumTablePaginationComponent],\r\n imports: [CommonModule, ArdiumSelectModule, ArdiumIconButtonModule, ArdiumIconModule],\r\n exports: [ArdiumTablePaginationComponent],\r\n})\r\nexport class ArdiumTablePaginationModule {}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _focusableComponentDefaults, _FocusableComponentDefaults } from '../_internal/focusable-component';\r\nimport { ProgressBarMode } from '../progress-bar';\r\nimport { CurrentItemsFormatFn, PaginationAlign } from '../table-pagination';\r\nimport { TableAlignType, TableAppearance, TablePaginationStrategy, TableVariant } from '../table/table.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\nexport interface ArdTableDefaults extends _FocusableComponentDefaults {\r\n rowDisabledFrom: string;\r\n rowBoldFrom: string;\r\n invertRowDisabled: boolean;\r\n invertRowBold: boolean;\r\n selectableRows: boolean;\r\n maxSelectedItems: Nullable<number>;\r\n clickableRows: boolean;\r\n caption: Nullable<string>;\r\n isLoading: boolean;\r\n loadingProgress: number;\r\n loadingProgressBuffer: number;\r\n loadingBarMode: ProgressBarMode;\r\n loadingBarColor: ComponentColor;\r\n appearance: TableAppearance;\r\n variant: TableVariant;\r\n color: ComponentColor;\r\n align: TableAlignType;\r\n headerAlign: TableAlignType;\r\n compact: boolean;\r\n zebra: boolean;\r\n stickyHeader: boolean;\r\n paginated: boolean;\r\n paginationStrategy: TablePaginationStrategy;\r\n paginationOptions: number[] | { value: number; label: string }[];\r\n totalItems: Nullable<number>;\r\n paginationColor: ComponentColor;\r\n paginationAlign: PaginationAlign;\r\n itemsPerPageText: string;\r\n currentItemsFormatFn: CurrentItemsFormatFn;\r\n pageFillRemaining: boolean;\r\n paginationDisabled: boolean;\r\n useFirstLastButtons: boolean;\r\n itemsPerPage: number;\r\n page: number;\r\n treatDataSourceAsString: boolean;\r\n}\r\n\r\nexport const _tableDefaults: ArdTableDefaults = {\r\n ..._focusableComponentDefaults,\r\n rowDisabledFrom: 'disabled',\r\n rowBoldFrom: 'bold',\r\n invertRowDisabled: false,\r\n invertRowBold: false,\r\n selectableRows: false,\r\n maxSelectedItems: undefined,\r\n clickableRows: false,\r\n caption: undefined,\r\n isLoading: false,\r\n loadingProgress: 0,\r\n loadingProgressBuffer: 0,\r\n loadingBarMode: ProgressBarMode.Determinate,\r\n loadingBarColor: ComponentColor.Secondary,\r\n appearance: TableAppearance.Strong,\r\n variant: TableVariant.Rounded,\r\n color: ComponentColor.Primary,\r\n align: TableAlignType.CenterLeft,\r\n headerAlign: TableAlignType.CenterLeft,\r\n compact: false,\r\n zebra: false,\r\n stickyHeader: false,\r\n paginated: false,\r\n paginationStrategy: TablePaginationStrategy.Noop,\r\n paginationOptions: [10, 25, 50],\r\n totalItems: undefined,\r\n paginationColor: ComponentColor.None,\r\n paginationAlign: PaginationAlign.Split,\r\n itemsPerPageText: 'Items per page:',\r\n currentItemsFormatFn: ({ currentItemsFrom, currentItemsTo, totalItems }) =>\r\n `${currentItemsFrom} – ${currentItemsTo} of ${totalItems}`,\r\n pageFillRemaining: false,\r\n paginationDisabled: false,\r\n useFirstLastButtons: false,\r\n itemsPerPage: 50,\r\n page: 1,\r\n treatDataSourceAsString: false,\r\n};\r\n\r\nexport const ARD_TABLE_DEFAULTS = new InjectionToken<ArdTableDefaults>('ard-table-defaults', {\r\n factory: () => ({\r\n ..._tableDefaults,\r\n }),\r\n});\r\n\r\nexport function provideTableDefaults(config: Partial<ArdTableDefaults>): Provider {\r\n return { provide: ARD_TABLE_DEFAULTS, useValue: { ..._tableDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef, input } from '@angular/core';\r\nimport { PaginationContext } from '../_internal/models/pagination.model';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { TableCaptionContext, TableCheckboxContext } from './table.types';\r\n\r\n@Directive({ standalone: false, selector: 'ard-table > ng-template[ard-table-tmp]' })\r\nexport class ArdiumTableTemplateDirective {\r\n readonly name = input.required<Nullable<string>>({ alias: 'ard-table-tmp' });\r\n\r\n constructor(public template: TemplateRef<any>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-table > ng-template[ard-table-checkbox-tmp]' })\r\nexport class ArdiumTableCheckboxTemplateDirective {\r\n constructor(public template: TemplateRef<TableCheckboxContext>) {}\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-table > ng-template[ard-table-header-checkbox-tmp]',\r\n})\r\nexport class ArdiumTableHeaderCheckboxTemplateDirective {\r\n constructor(public template: TemplateRef<TableCheckboxContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-table > ng-template[ard-table-caption-tmp]' })\r\nexport class ArdiumTableCaptionTemplateDirective {\r\n constructor(public template: TemplateRef<TableCaptionContext>) {}\r\n}\r\n\r\n//! paginations\r\n@Directive({ standalone: false, selector: 'ard-table > ng-template[ard-table-pagination-tmp]' })\r\nexport class ArdiumTablePaginationTemplateDirective {\r\n constructor(public template: TemplateRef<PaginationContext>) {}\r\n}\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n contentChildren,\r\n Inject,\r\n Input,\r\n input,\r\n model,\r\n OnChanges,\r\n output,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty, coerceNumberProperty, NumberLike } from '@ardium-ui/devkit';\r\nimport { isDefined, isNumber } from 'simple-bool';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { CheckboxState } from '../checkbox/checkbox.types';\r\nimport { ProgressBarMode } from '../progress-bar';\r\nimport { CurrentItemsFormatFn, PaginationAlign } from '../table-pagination/table-pagination.types';\r\nimport { ComponentColor, SimpleComponentColor } from '../types/colors.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdTableRow, HeaderCell, TableItemStorage, TableItemStorageHost } from './table-item-storage';\r\nimport { ARD_TABLE_DEFAULTS, ArdTableDefaults } from './table.defaults';\r\nimport {\r\n ArdiumTableCaptionTemplateDirective,\r\n ArdiumTableCheckboxTemplateDirective,\r\n ArdiumTableHeaderCheckboxTemplateDirective,\r\n ArdiumTableTemplateDirective,\r\n} from './table.directives';\r\nimport {\r\n TableAlignType,\r\n TableAppearance,\r\n TableCaptionContext,\r\n TableCheckboxContext,\r\n TableDataColumn,\r\n TableHeaderCheckboxContext,\r\n TableHeaderContext,\r\n TablePaginationStrategy,\r\n TableSubheader,\r\n TableSubheaderContext,\r\n TableVariant,\r\n} from './table.types';\r\nimport { isTableSubheader } from './utils';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTableComponent extends _FocusableComponentBase implements TableItemStorageHost, AfterContentInit, OnChanges {\r\n protected override readonly _DEFAULTS!: ArdTableDefaults;\r\n constructor(@Inject(ARD_TABLE_DEFAULTS) defaults: ArdTableDefaults) {\r\n super(defaults);\r\n }\r\n\r\n private readonly _itemStorage = new TableItemStorage(this);\r\n\r\n readonly rowDisabledFrom = input<string>(this._DEFAULTS.rowDisabledFrom);\r\n readonly rowBoldFrom = input<string>(this._DEFAULTS.rowBoldFrom);\r\n readonly invertRowDisabled = input<boolean, BooleanLike>(this._DEFAULTS.invertRowDisabled, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n readonly invertRowBold = input<boolean, BooleanLike>(this._DEFAULTS.invertRowBold, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly selectableRows = input<boolean, BooleanLike>(this._DEFAULTS.selectableRows, { transform: v => coerceBooleanProperty(v) });\r\n readonly maxSelectedItems = input<Nullable<number>, any>(this._DEFAULTS.maxSelectedItems, {\r\n transform: v => coerceNumberProperty(v, this._DEFAULTS.maxSelectedItems),\r\n });\r\n\r\n readonly clickableRows = input<boolean, BooleanLike>(this._DEFAULTS.clickableRows, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly caption = input<Nullable<string>>(this._DEFAULTS.caption);\r\n\r\n readonly isLoading = input<boolean, BooleanLike>(this._DEFAULTS.isLoading, { transform: v => coerceBooleanProperty(v) });\r\n readonly loadingProgress = input<number, NumberLike>(this._DEFAULTS.loadingProgress, {\r\n transform: v => coerceNumberProperty(v, this._DEFAULTS.loadingProgress),\r\n });\r\n readonly loadingProgressBuffer = input<number, NumberLike>(this._DEFAULTS.loadingProgressBuffer, {\r\n transform: v => coerceNumberProperty(v, this._DEFAULTS.loadingProgressBuffer),\r\n });\r\n readonly loadingBarMode = input<ProgressBarMode>(this._DEFAULTS.loadingBarMode);\r\n readonly loadingBarColor = input<ComponentColor>(this._DEFAULTS.loadingBarColor);\r\n\r\n //! appearance\r\n readonly appearance = input<TableAppearance>(this._DEFAULTS.appearance);\r\n readonly variant = input<TableVariant>(this._DEFAULTS.variant);\r\n readonly color = input<ComponentColor>(this._DEFAULTS.color);\r\n readonly align = input<TableAlignType>(this._DEFAULTS.align);\r\n readonly headerAlign = input<TableAlignType>(this._DEFAULTS.headerAlign);\r\n\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n readonly zebra = input<boolean, BooleanLike>(this._DEFAULTS.zebra, { transform: v => coerceBooleanProperty(v) });\r\n readonly stickyHeader = input<boolean, BooleanLike>(this._DEFAULTS.stickyHeader, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-align-${this.align()}`,\r\n `ard-header-align-${this.headerAlign()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.zebra() ? 'ard-zebra-table' : '',\r\n this.selectableRows() ? 'ard-selectable-rows' : '',\r\n this.stickyHeader() ? 'ard-sticky-header' : '',\r\n this.isLoading() ? 'ard-table-loading' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! pagination\r\n readonly paginated = input<boolean, BooleanLike>(this._DEFAULTS.paginated, { transform: v => coerceBooleanProperty(v) });\r\n readonly paginationStrategy = input<TablePaginationStrategy>(this._DEFAULTS.paginationStrategy);\r\n readonly paginationOptions = input<\r\n number[] | { value: number; label: string }[],\r\n number[] | { value: number; label: string }[]\r\n >(this._DEFAULTS.paginationOptions, {\r\n transform: v => {\r\n return v.filter(el => {\r\n const opt = isNumber(el) ? el : el.value;\r\n if (opt <= 0 || opt % 1 !== 0) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5052: each item of <ard-table>'s [paginationOptions] must be a positive integer. The \"${opt}\" option will be ignored.`\r\n )\r\n );\r\n return false;\r\n }\r\n return true;\r\n }) as number[] | { value: number; label: string }[];\r\n },\r\n });\r\n readonly totalItems = input<Nullable<number>, any>(this._DEFAULTS.totalItems, {\r\n transform: v => coerceNumberProperty(v, this._DEFAULTS.totalItems),\r\n });\r\n readonly paginationColor = input<ComponentColor>(this._DEFAULTS.paginationColor);\r\n readonly paginationAlign = input<PaginationAlign>(this._DEFAULTS.paginationAlign);\r\n readonly itemsPerPageText = input<string>(this._DEFAULTS.itemsPerPageText);\r\n readonly currentItemsFormatFn = input<CurrentItemsFormatFn>(this._DEFAULTS.currentItemsFormatFn);\r\n\r\n readonly pageFillRemaining = input<boolean, BooleanLike>(this._DEFAULTS.pageFillRemaining, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n readonly paginationDisabled = input<boolean, BooleanLike>(this._DEFAULTS.paginationDisabled, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n readonly useFirstLastButtons = input<boolean, BooleanLike>(this._DEFAULTS.useFirstLastButtons, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n readonly itemsPerPage = model<number>(this._DEFAULTS.itemsPerPage);\r\n readonly page = model<number>(this._DEFAULTS.page);\r\n\r\n readonly isDefinedTotalItems = computed(\r\n () => this.paginationStrategy() !== TablePaginationStrategy.Noop || isDefined(this.totalItems())\r\n );\r\n readonly canDisplayPagination = computed(() => this.paginated() && this.isDefinedTotalItems());\r\n\r\n //! print errors if needed\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['itemsPerPage']) {\r\n const ipp = changes['itemsPerPage'].currentValue;\r\n const options =\r\n (changes['paginationOptions']?.currentValue as number[] | { value: number; label: string }[]) || this.paginationOptions();\r\n if (!options.find(v => (typeof v === 'number' ? v === ipp : v.value === ipp))) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5051: value of \"${ipp}\" in <ard-table>'s [itemsPerPage] does not appear in [paginationOptions] array [${options\r\n .map(v => (typeof v === 'number' ? v : v.value))\r\n .join(', ')}]`\r\n )\r\n );\r\n }\r\n }\r\n if (changes['page']) {\r\n const page = changes['page'].currentValue as number;\r\n if (page === 0) {\r\n throw new Error(`ARD-FT5053a: <ard-table>'s [page] uses 1-indexed numbering system. The value 0 is not accepted.`);\r\n } else if (page < 0 || page % 1 !== 0) {\r\n throw new Error(`ARD-FT5053b: value of <ard-table>'s [page] must be a positive integer, got \"${page}\".`);\r\n }\r\n }\r\n }\r\n\r\n //! item storage getters\r\n readonly headerCells = computed(() => this._itemStorage.headerCells());\r\n\r\n readonly dataRows = computed(() => {\r\n const items: ArdTableRow[] = this._itemStorage.paginatedItems();\r\n\r\n if (!this.pageFillRemaining()) return items;\r\n if (!this.isDefinedTotalItems()) {\r\n throw new Error('ARD-FT5050: <ard-table> requires [totalItems] to be defined when using \"slice\" pagination strategy.');\r\n }\r\n if (this.page() === 1) return items;\r\n\r\n const ipp = this.itemsPerPage();\r\n for (let i = items.length; i < ipp; i++) {\r\n items.push(ArdTableRow.newEmptyCell(i));\r\n }\r\n return items;\r\n });\r\n\r\n //! columns/data setters\r\n @Input()\r\n set columns(v: (TableDataColumn | TableSubheader)[]) {\r\n this._itemStorage.setColumns(v);\r\n }\r\n private _data: any[] = [];\r\n @Input()\r\n set data(v: any[]) {\r\n this._data = v;\r\n this._itemStorage.setItems(v);\r\n }\r\n get data(): any[] {\r\n return this._data;\r\n }\r\n\r\n readonly treatDataSourceAsString = input<boolean, BooleanLike>(this._DEFAULTS.treatDataSourceAsString, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n //! templates\r\n readonly checkboxTemplate = contentChild<ArdiumTableCheckboxTemplateDirective, TemplateRef<TableCheckboxContext>>(\r\n ArdiumTableCheckboxTemplateDirective,\r\n {\r\n read: TemplateRef<TableCheckboxContext>,\r\n }\r\n );\r\n readonly headerCheckboxTemplate = contentChild<\r\n ArdiumTableHeaderCheckboxTemplateDirective,\r\n TemplateRef<TableHeaderCheckboxContext>\r\n >(ArdiumTableHeaderCheckboxTemplateDirective, {\r\n read: TemplateRef<TableHeaderCheckboxContext>,\r\n });\r\n readonly captionTemplate = contentChild<ArdiumTableCaptionTemplateDirective, TemplateRef<TableCaptionContext>>(\r\n ArdiumTableCaptionTemplateDirective,\r\n {\r\n read: TemplateRef<TableCaptionContext>,\r\n }\r\n );\r\n\r\n private _itemTemplates: Record<string, TemplateRef<any>> = {};\r\n readonly templateChildren = contentChildren<ArdiumTableTemplateDirective>(ArdiumTableTemplateDirective);\r\n\r\n ngAfterContentInit(): void {\r\n const templates = Array.from(this.templateChildren());\r\n for (const instance of templates) {\r\n const name = instance.name();\r\n if (!name) {\r\n console.error(new Error('ARD-FT5054: [ard-table-tmp] requires a value to be specified.'));\r\n continue;\r\n }\r\n this._itemTemplates[name] = instance.template;\r\n }\r\n }\r\n\r\n getHeaderTemplate(tmp: string | { template: string | TemplateRef<any> }): TemplateRef<any> | undefined {\r\n if (typeof tmp === 'string') return undefined;\r\n return this.getCellTemplate(tmp.template);\r\n }\r\n getHeaderCheckboxColor(): SimpleComponentColor {\r\n if (this.appearance() === TableAppearance.Strong) return SimpleComponentColor.CurrentColor;\r\n return this.color();\r\n }\r\n getCellTemplate(tmp?: string | TemplateRef<any>): TemplateRef<any> | undefined {\r\n //return undefined\r\n if (!tmp) return undefined;\r\n //return template, if it is one\r\n if (tmp instanceof TemplateRef) return tmp;\r\n //check if the name can be found\r\n if (!(tmp in this._itemTemplates)) {\r\n console.error(new Error(`ARD-NF5055: <ard-table> error: cannot find template named \"${tmp}\"`));\r\n return undefined;\r\n }\r\n //return the template\r\n return this._itemTemplates[tmp];\r\n }\r\n getCellStyle(cell: TableDataColumn | TableSubheader): string {\r\n if (isTableSubheader(cell)) return 'width:unset;min-width:unset';\r\n const width = typeof cell.width === 'number' ? `${cell.width}px` : cell.width;\r\n const minWidth = typeof cell.minWidth === 'number' ? `${cell.minWidth}px` : cell.minWidth;\r\n return [`width:${width ?? 'unset'}`, `min-width:${minWidth ?? 'unset'}`].join(';');\r\n }\r\n\r\n //! click & hover handlers\r\n onCheckboxClick(index: number): void {\r\n this.toggleRowSelected(index);\r\n }\r\n onRowClick(row: ArdTableRow, event: MouseEvent): void {\r\n if (this.clickableRows()) {\r\n event.stopPropagation();\r\n this.clickRowEvent.emit(row.itemData());\r\n return;\r\n }\r\n if (this.selectableRows()) {\r\n event.stopPropagation();\r\n this.toggleRowSelected(row.index());\r\n return;\r\n }\r\n }\r\n onRowMouseOver(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n onRowMouseEnter(index: number, event: MouseEvent): void {\r\n if (!this.selectableRows() && !this.clickableRows()) return;\r\n event.stopPropagation();\r\n this._itemStorage.highlightSingleItem(index);\r\n }\r\n onRowMouseLeave(index: number, event: MouseEvent): void {\r\n if (!this.selectableRows() && !this.clickableRows()) return;\r\n event.stopPropagation();\r\n this._itemStorage.unhighlightItem(index);\r\n }\r\n\r\n //! select handlers\r\n /**\r\n * Toggles the selection state of a row in the table.\r\n * @param selected a boolean value indicating if the row is currently selected.\r\n * @param index the index of the row in the table.\r\n */\r\n toggleRowSelected(index: number): void {\r\n if (this._itemStorage.isItemSelected(index)) {\r\n const unselected = this._itemStorage.unselectItem(index);\r\n if (unselected.length) this.unselectRowEvent.emit(unselected);\r\n } else {\r\n const [selected, failed] = this._itemStorage.selectItem(index);\r\n if (selected.length) this.selectRowEvent.emit(selected);\r\n if (failed.length) this.failedSelectRowEvent.emit(failed);\r\n }\r\n this._emitSelect();\r\n }\r\n /**\r\n * Toggles the selection state of all rows in the table.\r\n */\r\n toggleAllRowsSelected(): void {\r\n if (this._itemStorage.areAllSelected()) {\r\n const unselected = this._itemStorage.unselectAll();\r\n if (unselected.length) this.unselectRowEvent.emit(unselected);\r\n } else {\r\n const [selected, failed] = this._itemStorage.selectAll();\r\n if (selected.length) this.selectRowEvent.emit(selected);\r\n if (failed.length) this.failedSelectRowEvent.emit(failed);\r\n }\r\n this._emitSelect();\r\n }\r\n private _emitSelect(): void {\r\n const v = this._itemStorage.value();\r\n this.selectedRowsChangeEvent.emit(v);\r\n }\r\n isCellCheckbox(cell: any): boolean {\r\n return typeof cell === 'object' && '_ardCheckbox' in cell && 'index' in cell;\r\n }\r\n isHeaderCellCheckbox(cell: HeaderCell): boolean {\r\n const dataCell = cell.cell();\r\n if (isTableSubheader(dataCell)) return false;\r\n if (typeof dataCell.dataSource === 'string') return false;\r\n return dataCell.dataSource.type === 'checkbox';\r\n }\r\n isHeaderCellSortable(cell: HeaderCell): boolean {\r\n const dataCell = cell.cell();\r\n if (isTableSubheader(dataCell)) return false;\r\n return dataCell.sortable ?? false;\r\n }\r\n\r\n readonly selectedRowsChangeEvent = output<any[]>({ alias: 'selectedRowsChange' });\r\n readonly failedSelectRowEvent = output<any[]>({ alias: 'failedSelectRow' });\r\n readonly selectRowEvent = output<any[]>({ alias: 'selectRow' });\r\n readonly unselectRowEvent = output<any[]>({ alias: 'unselectRow' });\r\n readonly clickRowEvent = output<any>({ alias: 'clickRow' });\r\n\r\n //! contexts\r\n getHeaderContext(cell: TableDataColumn, index: number): TableHeaderContext | null;\r\n getHeaderContext(cell: TableSubheader, index: number): TableSubheaderContext | null;\r\n getHeaderContext(cell: TableDataColumn | TableSubheader, index: number): TableHeaderContext | TableSubheaderContext | null;\r\n getHeaderContext(cell: TableDataColumn | TableSubheader, index: number): TableHeaderContext | TableSubheaderContext | null {\r\n if (typeof cell.header !== 'string') return null;\r\n if (isTableSubheader(cell))\r\n return {\r\n $implicit: cell.header,\r\n header: cell.header,\r\n };\r\n return {\r\n $implicit: cell.header,\r\n header: cell.header,\r\n sortable: cell.sortable ?? false,\r\n sortType: this._itemStorage.getColumnSortType(index),\r\n onTriggerSort: () => this._itemStorage.toggleCurrentSortColumn(index),\r\n onTriggerResetSort: (event?: Event) => {\r\n this._itemStorage.resetSort();\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n },\r\n };\r\n }\r\n readonly getHeaderCheckboxContext = computed<TableHeaderCheckboxContext>(() => {\r\n let state: CheckboxState = CheckboxState.Unselected;\r\n if (this._itemStorage.isAnyItemSelected()) {\r\n state = CheckboxState.Indeterminate;\r\n if (this._itemStorage.areAllSelected()) {\r\n state = CheckboxState.Selected;\r\n }\r\n }\r\n return {\r\n $implicit: state,\r\n state,\r\n onChange: () => {\r\n this.toggleAllRowsSelected();\r\n },\r\n };\r\n });\r\n getCheckboxContext(index: number): TableCheckboxContext {\r\n const item = this._itemStorage.items().find(v => v.index() === index)!;\r\n const selected = item.selected();\r\n return {\r\n $implicit: selected,\r\n selected: selected,\r\n disabled: item.disabled(),\r\n onChange: () => {\r\n this.onCheckboxClick(index);\r\n },\r\n };\r\n }\r\n}\r\n","<table\r\n class=\"ard-table\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @if (caption()) {\r\n <caption class=\"ard-table__caption\">\r\n <div class=\"ard-table__caption-container\">\r\n <ng-template\r\n #defaultCaptionTemplate\r\n let-captionText\r\n >\r\n {{ captionText }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"captionTemplate() ?? defaultCaptionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: caption() }\"\r\n />\r\n </div>\r\n </caption>\r\n }\r\n <thead class=\"ard-table__header\">\r\n @for (row of headerCells(); track $index) {\r\n <tr class=\"ard-table__header-row\">\r\n @for (cell of row; track $index) {\r\n <th\r\n class=\"ard-table__header-cell\"\r\n [ngClass]=\"cell.cell().cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isHeaderCellCheckbox(cell)\"\r\n [attr.colspan]=\"cell.colspan()\"\r\n [attr.rowspan]=\"cell.rowspan()\"\r\n [scope]=\"cell.colspan() > 1 ? 'colgroup' : 'col'\"\r\n >\r\n <div\r\n class=\"ard-table__cell-container\"\r\n [class.ard-table__sortable]=\"isHeaderCellSortable(cell)\"\r\n [style.width]=\"cell.width\"\r\n [style.minWidth]=\"cell.minWidth\"\r\n >\r\n @if (isHeaderCellCheckbox(cell)) {\r\n <ng-template\r\n #defaultHeaderCheckboxTemplate\r\n let-state\r\n let-onChange=\"onChange\"\r\n >\r\n <ard-checkbox\r\n [tabIndex]=\"isLoading() ? -1 : tabIndex()\"\r\n [state]=\"state\"\r\n [color]=\"getHeaderCheckboxColor()\"\r\n unselectedColor=\"currentColor\"\r\n (change)=\"onChange()\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"headerCheckboxTemplate() ?? defaultHeaderCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"getHeaderCheckboxContext()\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultHeaderCellTemplate\r\n let-content\r\n let-sortable=\"sortable\"\r\n let-sortType=\"sortType\"\r\n let-onTriggerSort=\"onTriggerSort\"\r\n let-onTriggerResetSort=\"onTriggerResetSort\"\r\n >\r\n <div\r\n class=\"ard-table__header-template-container\"\r\n [class.ard-sortable]=\"sortable\"\r\n [class.ard-nonsortable]=\"!sortable\"\r\n >\r\n @if (sortable) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-table__header-content-container\"\r\n (click)=\"onTriggerSort($event)\"\r\n [tabindex]=\"tabIndex()\"\r\n (keydown.Esc)=\"onTriggerResetSort($event)\"\r\n >\r\n <div class=\"ard-table__header-content\">{{ content }}</div>\r\n @if (sortType !== null) {\r\n <div class=\"ard-table__header-sort-icon\">\r\n @if (sortType === 'ascending') {\r\n <ard-icon>south</ard-icon>\r\n } @else if (sortType === 'descending') {\r\n <ard-icon>north</ard-icon>\r\n }\r\n </div>\r\n }\r\n </button>\r\n } @else {\r\n <div class=\"ard-table__header-content-container\">\r\n <div class=\"ard-table__header-content\">{{ content }}</div>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"getHeaderTemplate(cell.cell().header) ?? defaultHeaderCellTemplate\"\r\n [ngTemplateOutletContext]=\"getHeaderContext(cell.cell(), $index)\"\r\n />\r\n }\r\n </div>\r\n </th>\r\n }\r\n </tr>\r\n }\r\n <tr class=\"ard-table__progress-bar-row\">\r\n <th\r\n class=\"ard-table__progress-bar-cell\"\r\n colspan=\"9999\"\r\n >\r\n @if (isLoading()) {\r\n <ard-progress-bar\r\n [value]=\"loadingProgress()\"\r\n [bufferValue]=\"loadingProgressBuffer()\"\r\n [mode]=\"loadingBarMode()\"\r\n [color]=\"loadingBarColor()\"\r\n variant=\"sharp\"\r\n hideValue\r\n />\r\n }\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"ard-table__body\">\r\n @for (row of dataRows(); track $index) {\r\n @if (row.isEmpty()) {\r\n <tr class=\"ard-table__empty-row\">\r\n <td\r\n class=\"ard-table__empty-cell\"\r\n colspan=\"9999\"\r\n ></td>\r\n </tr>\r\n } @else {\r\n <tr\r\n class=\"ard-table__body-row\"\r\n [class.ard-table__selected-row]=\"row.selected()\"\r\n [class.ard-table__highlighted-row]=\"row.highlighted()\"\r\n [class.ard-table__disabled-row]=\"row.disabled()\"\r\n [class.ard-table__bold-row]=\"row.bold()\"\r\n (click)=\"onRowClick(row, $event)\"\r\n (mouseover)=\"onRowMouseOver($event)\"\r\n (mouseenter)=\"onRowMouseEnter(row.index(), $event)\"\r\n (mouseleave)=\"onRowMouseLeave(row.index(), $event)\"\r\n >\r\n @for (cell of row.data(); track $index) {\r\n <ng-template #cellTmp>\r\n <div\r\n class=\"ard-table__cell-container\"\r\n [style]=\"getCellStyle(row.dataColumns()[$index])\"\r\n >\r\n @if (isCellCheckbox(cell)) {\r\n <ng-template\r\n #defaultCheckboxTemplate\r\n let-isChecked\r\n let-onChange=\"onChange\"\r\n let-disabled=\"disabled\"\r\n >\r\n <ard-checkbox\r\n [tabIndex]=\"isLoading() ? -1 : tabIndex()\"\r\n [selected]=\"isChecked\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChange()\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"checkboxTemplate() ?? defaultCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"getCheckboxContext(row.index())\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultCellTemplate\r\n let-content\r\n >\r\n {{ content }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"getCellTemplate(row.dataColumns()[$index].template) ?? defaultCellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: cell }\"\r\n />\r\n }\r\n </div>\r\n </ng-template>\r\n @if (!row.dataColumns()[$index].isRowHeader) {\r\n <td\r\n class=\"ard-table__body-cell\"\r\n [ngClass]=\"row.dataColumns()[$index].cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isCellCheckbox(cell)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"cellTmp\"></ng-template>\r\n </td>\r\n } @else {\r\n <th\r\n class=\"ard-table__body-cell ard-table__row-header\"\r\n scope=\"row\"\r\n [ngClass]=\"row.dataColumns()[$index].cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isCellCheckbox(cell)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"cellTmp\"></ng-template>\r\n </th>\r\n }\r\n }\r\n </tr>\r\n }\r\n }\r\n </tbody>\r\n @if (canDisplayPagination()) {\r\n <tfoot class=\"ard-table__foot\">\r\n <tr class=\"ard-table__foot-row\">\r\n <td\r\n class=\"ard-table__pagination-cell\"\r\n colspan=\"9999\"\r\n >\r\n <ard-table-pagination\r\n [options]=\"paginationOptions()\"\r\n [totalItems]=\"totalItems()!\"\r\n [disabled]=\"paginationDisabled()\"\r\n [(itemsPerPage)]=\"itemsPerPage\"\r\n [(page)]=\"page\"\r\n [align]=\"paginationAlign()\"\r\n [isLoading]=\"isLoading()\"\r\n [itemsPerPageText]=\"itemsPerPageText()\"\r\n [currentItemsFormatFn]=\"currentItemsFormatFn()\"\r\n />\r\n </td>\r\n </tr>\r\n </tfoot>\r\n }\r\n</table>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumCheckboxModule } from '../checkbox/checkbox.module';\r\nimport { ArdiumIconModule } from '../icon/icon.module';\r\nimport { ArdiumTablePaginationModule } from '../table-pagination/table-pagination.module';\r\nimport { ArdiumProgressBarModule } from './../progress-bar/progress-bar.module';\r\nimport { ArdiumTableComponent } from './table.component';\r\nimport {\r\n ArdiumTableCaptionTemplateDirective,\r\n ArdiumTableCheckboxTemplateDirective,\r\n ArdiumTableHeaderCheckboxTemplateDirective,\r\n ArdiumTablePaginationTemplateDirective,\r\n ArdiumTableTemplateDirective,\r\n} from './table.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumTableComponent,\r\n ArdiumTableTemplateDirective,\r\n ArdiumTableCheckboxTemplateDirective,\r\n ArdiumTableHeaderCheckboxTemplateDirective,\r\n ArdiumTableCaptionTemplateDirective,\r\n ArdiumTablePaginationTemplateDirective,\r\n ],\r\n imports: [CommonModule, ArdiumCheckboxModule, ArdiumTablePaginationModule, ArdiumIconModule, ArdiumProgressBarModule],\r\n exports: [\r\n ArdiumTableComponent,\r\n ArdiumTableTemplateDirective,\r\n ArdiumTableCheckboxTemplateDirective,\r\n ArdiumTableHeaderCheckboxTemplateDirective,\r\n ArdiumTableCaptionTemplateDirective,\r\n ArdiumTablePaginationTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumTableModule {}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { _tableDefaults, ArdTableDefaults } from './../table/table.defaults';\r\n\r\nexport interface ArdTableFromCsvDefaults extends ArdTableDefaults {\r\n separator: string;\r\n}\r\n\r\nconst _tableFromCsvDefaults: ArdTableFromCsvDefaults = {\r\n ..._tableDefaults,\r\n separator: ',',\r\n};\r\n\r\nexport const ARD_TABLE_FROM_CSV_DEFAULTS = new InjectionToken<ArdTableFromCsvDefaults>('ard-table-from-csv-defaults', {\r\n factory: () => ({\r\n ..._tableFromCsvDefaults,\r\n }),\r\n});\r\n\r\nexport function provideTableFromCsvDefaults(config: Partial<ArdTableFromCsvDefaults>): Provider {\r\n return { provide: ARD_TABLE_FROM_CSV_DEFAULTS, useValue: { ..._tableFromCsvDefaults, ...config } };\r\n}\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n OnChanges,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n model,\r\n} from '@angular/core';\r\nimport { CurrentItemsFormatFn, PaginationAlign } from '../table-pagination/table-pagination.types';\r\nimport { TableDataColumn, TablePaginationStrategy } from '../table/table.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ARD_TABLE_FROM_CSV_DEFAULTS } from './table-from-csv.defaults';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-table-from-csv',\r\n templateUrl: './table-from-csv.component.html',\r\n styleUrls: ['./table-from-csv.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTableFromCsvComponent implements AfterContentInit, OnChanges {\r\n protected readonly _DEFAULTS = inject(ARD_TABLE_FROM_CSV_DEFAULTS);\r\n\r\n // most inputs are of type \"any\" because <ard-table> accepts type \"any\" and coerces it into appropriate types\r\n readonly selectableRows = input<any>(this._DEFAULTS.selectableRows);\r\n readonly maxSelectedItems = input<any>(this._DEFAULTS.maxSelectedItems);\r\n readonly clickableRows = input<any>(this._DEFAULTS.clickableRows);\r\n\r\n readonly isLoading = input<any>(this._DEFAULTS.isLoading);\r\n readonly loadingProgress = input<any>(this._DEFAULTS.loadingProgress);\r\n\r\n readonly caption = input<Nullable<string>>(this._DEFAULTS.caption);\r\n\r\n readonly appearance = input<any>(this._DEFAULTS.appearance);\r\n readonly variant = input<any>(this._DEFAULTS.variant);\r\n readonly color = input<any>(this._DEFAULTS.color);\r\n readonly align = input<any>(this._DEFAULTS.align);\r\n readonly headerAlign = input<any>(this._DEFAULTS.headerAlign);\r\n\r\n readonly compact = input<any>(this._DEFAULTS.compact);\r\n readonly zebra = input<any>(this._DEFAULTS.zebra);\r\n readonly stickyHeader = input<any>(this._DEFAULTS.stickyHeader);\r\n\r\n //! pagination\r\n readonly paginated = input<any>(this._DEFAULTS.paginated);\r\n\r\n readonly paginationStrategy = input<TablePaginationStrategy>(this._DEFAULTS.paginationStrategy);\r\n\r\n readonly paginationOptions = input<number[] | { value: number; label: string }[]>(this._DEFAULTS.paginationOptions);\r\n readonly totalItems = input<any>(this._DEFAULTS.totalItems);\r\n readonly paginationColor = input<ComponentColor>(this._DEFAULTS.paginationColor);\r\n readonly paginationAlign = input<PaginationAlign>(this._DEFAULTS.paginationAlign);\r\n readonly itemsPerPageText = input<string>(this._DEFAULTS.itemsPerPageText);\r\n readonly currentItemsFormatFn = input<CurrentItemsFormatFn>(this._DEFAULTS.currentItemsFormatFn);\r\n\r\n readonly pageFillRemaining = input<any>(this._DEFAULTS.pageFillRemaining);\r\n readonly paginationDisabled = input<any>(this._DEFAULTS.paginationDisabled);\r\n readonly useFirstLastButtons = input<any>(this._DEFAULTS.useFirstLastButtons);\r\n\r\n readonly itemsPerPage = model<number>(this._DEFAULTS.itemsPerPage);\r\n readonly page = model<number>(this._DEFAULTS.page);\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['itemsPerPage']) {\r\n const ipp = changes['itemsPerPage'].currentValue;\r\n const options =\r\n (changes['paginationOptions']?.currentValue as number[] | { value: number; label: string }[]) ||\r\n (this.paginationOptions() as number[] | { value: number; label: string }[]);\r\n if (!options.find(v => (typeof v === 'number' ? v === ipp : v.value === ipp))) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5071: value of \"${ipp}\" in <ard-table-from-csv>'s [itemsPerPage] does not appear in [paginationOptions] array [${options\r\n .map(v => (typeof v === 'number' ? v : v.value))\r\n .join(', ')}]`\r\n )\r\n );\r\n }\r\n }\r\n if (changes['paginationOptions']) {\r\n const options = changes['paginationOptions'].currentValue.map((v: number | { value: number; label: string }) =>\r\n typeof v === 'number' ? v : v.value\r\n ) as number[];\r\n for (const opt of options) {\r\n if (opt <= 0 || opt % 1 !== 0) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5072: each item of <ard-table-from-csv>'s [paginationOptions] must be a positive integer. The \"${opt}\" option will be ignored.`\r\n )\r\n );\r\n }\r\n }\r\n }\r\n if (changes['page']) {\r\n const page = changes['page'].currentValue as number;\r\n if (page === 0) {\r\n throw new Error(\r\n `ARD-FT5073a: <ard-table-from-csv>'s [page] uses 1-indexed numbering system. The value 0 is not accepted.`\r\n );\r\n } else if (page < 0 || page % 1 !== 0) {\r\n throw new Error(`ARD-FT5073b: value of <ard-table-from-csv>'s [page] must be a positive integer, got \"${page}\".`);\r\n }\r\n }\r\n }\r\n\r\n //! data\r\n readonly separator = input<string>(this._DEFAULTS.separator);\r\n\r\n readonly stringData = input<string>('', { alias: 'data' });\r\n readonly data = computed<{ headers: TableDataColumn[]; dataRows: any[] } | null>(() => {\r\n const v = this.stringData();\r\n if (!this._isCsvValid(v)) return null;\r\n const lines = v.split('\\n');\r\n const headers = this._convertCsvToHeaders(lines.shift()!);\r\n const dataRows = this._convertCsvToArray(lines, headers);\r\n return { headers, dataRows };\r\n });\r\n\r\n private readonly _isDataOkay = computed(() => this.data() !== null);\r\n\r\n readonly headers = computed(() => this.data()?.headers ?? []);\r\n readonly dataRows = computed(() => this.data()?.dataRows ?? []);\r\n\r\n ngAfterContentInit(): void {\r\n if (!this._isDataOkay()) {\r\n console.error(new Error(`ARD-FT5070: Expected <ard-table-from-csv>'s [data] attribute to be a non-empty string, got \"\".`));\r\n }\r\n }\r\n\r\n private _isCsvValid(csv: string): boolean {\r\n return csv.length > 1;\r\n }\r\n private _convertCsvToHeaders(line: string): TableDataColumn[] {\r\n const headers = line.split(this.separator());\r\n return headers.map(header => {\r\n header = header.trim();\r\n return {\r\n header,\r\n dataSource: header,\r\n };\r\n });\r\n }\r\n private _convertCsvToArray(lines: string[], headers: TableDataColumn[]): any[] {\r\n const dataRows: Record<string, any>[] = [];\r\n\r\n for (const line of lines) {\r\n const lineArr = line.split(this.separator());\r\n\r\n const obj: Record<string, any> = {};\r\n for (let i = 0; i < headers.length; i++) {\r\n const source = headers[i].dataSource as string;\r\n obj[source] = lineArr[i]?.trim() ?? '';\r\n }\r\n dataRows.push(obj);\r\n }\r\n return dataRows;\r\n }\r\n}\r\n","<ard-table\r\n treatDataSourceAsString\r\n [columns]=\"headers()\"\r\n [data]=\"dataRows()\"\r\n [selectableRows]=\"selectableRows()\"\r\n [maxSelectedItems]=\"maxSelectedItems()\"\r\n [clickableRows]=\"clickableRows()\"\r\n [isLoading]=\"isLoading()\"\r\n [loadingProgress]=\"loadingProgress()\"\r\n [caption]=\"caption()\"\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [color]=\"color()\"\r\n [align]=\"align()\"\r\n [headerAlign]=\"headerAlign()\"\r\n [compact]=\"compact()\"\r\n [zebra]=\"zebra()\"\r\n [stickyHeader]=\"stickyHeader()\"\r\n [paginated]=\"paginated()\"\r\n [paginationStrategy]=\"paginationStrategy()\"\r\n [totalItems]=\"totalItems()\"\r\n [paginationColor]=\"paginationColor()\"\r\n [paginationAlign]=\"paginationAlign()\"\r\n [itemsPerPageText]=\"itemsPerPageText()\"\r\n [currentItemsFormatFn]=\"currentItemsFormatFn()\"\r\n [pageFillRemaining]=\"pageFillRemaining()\"\r\n [paginationDisabled]=\"paginationDisabled()\"\r\n [useFirstLastButtons]=\"useFirstLastButtons()\"\r\n [(itemsPerPage)]=\"itemsPerPage\"\r\n [(page)]=\"page\"\r\n/>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumTableFromCsvComponent } from './table-from-csv.component';\r\nimport { ArdiumTableModule } from './../table/table.module';\r\n\r\n@NgModule({\r\n declarations: [ArdiumTableFromCsvComponent],\r\n imports: [CommonModule, ArdiumTableModule],\r\n exports: [ArdiumTableFromCsvComponent],\r\n})\r\nexport class ArdiumTableFromCsvModule {}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ standalone: false, name: 'ardTextList', pure: true })\r\nexport class ArdiumTextListPipe implements PipeTransform {\r\n transform(value: any[], separator: string = ', ', filter: boolean = false): string {\r\n if (filter) return value.filter(Boolean).join(separator);\r\n return value.join(separator);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-text-list',\r\n templateUrl: './text-list.component.html',\r\n styleUrl: './text-list.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTextListComponent {\r\n readonly values = input.required<any[]>();\r\n\r\n readonly separator = input<string>(', ');\r\n\r\n readonly filter = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n}\r\n","{{ values() | ardTextList: separator() : filter() }}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumTextListComponent } from './text-list.component';\r\nimport { ArdiumTextListPipe } from './text-list.pipe';\r\n\r\n@NgModule({\r\n declarations: [ArdiumTextListComponent, ArdiumTextListPipe],\r\n imports: [CommonModule],\r\n exports: [ArdiumTextListComponent, ArdiumTextListPipe],\r\n})\r\nexport class ArdiumTextListModule {}\r\n","export const CardAppearance = {\r\n Outlined: 'outlined',\r\n Raised: 'raised',\r\n} as const;\r\nexport type CardAppearance = (typeof CardAppearance)[keyof typeof CardAppearance];\r\n\r\nexport const CardVariant = {\r\n Rounded: 'rounded',\r\n Sharp: 'sharp',\r\n} as const;\r\nexport type CardVariant = (typeof CardVariant)[keyof typeof CardVariant];\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { OneAxisAlignment } from './../types/alignment.types';\r\nimport { CardAppearance, CardVariant } from './card.types';\r\n\r\nexport interface ArdCardDefaults {\r\n appearance: CardAppearance;\r\n variant: CardVariant;\r\n actionButtonsAlign: OneAxisAlignment;\r\n}\r\n\r\nconst _cardDefaults: ArdCardDefaults = {\r\n appearance: CardAppearance.Raised,\r\n variant: CardVariant.Rounded,\r\n actionButtonsAlign: OneAxisAlignment.Right,\r\n};\r\n\r\nexport const ARD_CARD_DEFAULTS = new InjectionToken<ArdCardDefaults>('ard-card-defaults', {\r\n factory: () => ({\r\n ..._cardDefaults,\r\n }),\r\n});\r\n\r\nexport function provideCardDefaults(config: Partial<ArdCardDefaults>): Provider {\r\n return { provide: ARD_CARD_DEFAULTS, useValue: { ..._cardDefaults, ...config } };\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n ElementRef,\r\n Renderer2,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { OneAxisAlignment } from '../types/alignment.types';\r\nimport { ARD_CARD_DEFAULTS } from './card.defaults';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-card-header',\r\n templateUrl: 'card-header.template.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumCardHeaderComponent {}\r\n\r\n@Directive({ standalone: false, selector: 'ard-card-subtitle, [ard-card-subtitle]' })\r\nexport class ArdiumCardSubtitleDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-subtitle');\r\n }\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-card-title, [ard-card-title]' })\r\nexport class ArdiumCardTitleDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-title');\r\n }\r\n}\r\n\r\n@Directive({ standalone: false, selector: '[ard-card-avatar]' })\r\nexport class ArdiumCardAvatarDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-avatar');\r\n }\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-card-content, [ard-card-content]' })\r\nexport class ArdiumCardContentDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-content');\r\n }\r\n}\r\n\r\n@Directive({ standalone: false, selector: '[ard-card-image]' })\r\nexport class ArdiumCardImageDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-image');\r\n }\r\n}\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ard-card-action-buttons, [ard-card-action-buttons]',\r\n host: {\r\n '[class]': 'alignClass()',\r\n },\r\n})\r\nexport class ArdiumCardActionButtonsDirective {\r\n private readonly _DEFAULTS = inject(ARD_CARD_DEFAULTS);\r\n\r\n readonly align = input<OneAxisAlignment>(this._DEFAULTS.actionButtonsAlign);\r\n\r\n readonly alignClass = computed(() => `ard-card-action-buttons ard-align-${this.align()}`);\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-card-footer, [ard-card-footer]' })\r\nexport class ArdiumCardFooterDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-footer');\r\n }\r\n}\r\n","<ng-content select=\"[ard-card-avatar]\" />\r\n<div class=\"ard-card-header-title-container\">\r\n <ng-content\r\n select=\"ard-card-title, ard-card-subtitle,\r\n [ard-card-title], [ard-card-subtitle]\"\r\n />\r\n</div>\r\n<ng-content />\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n HostBinding,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { ARD_CARD_DEFAULTS } from './card.defaults';\r\nimport { CardAppearance, CardVariant } from './card.types';\r\n\r\n@Directive({ standalone: false, selector: '[ard-card]' })\r\nexport class ArdiumCardDirective {\r\n private readonly _DEFAULTS = inject(ARD_CARD_DEFAULTS);\r\n\r\n //! appearance\r\n readonly appearance = input<CardAppearance>(this._DEFAULTS.appearance);\r\n readonly variant = input<CardVariant>(this._DEFAULTS.variant);\r\n\r\n readonly ngClasses = computed(() =>\r\n ['ard-card', `ard-appearance-${this.appearance()}`, `ard-variant-${this.variant()}`].join(' ')\r\n );\r\n\r\n @HostBinding('class')\r\n get _ngClassesHostAttribute() {\r\n return this.ngClasses();\r\n }\r\n}\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-card',\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumCardComponent extends ArdiumCardDirective {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport {\r\n ArdiumCardActionButtonsDirective,\r\n ArdiumCardAvatarDirective,\r\n ArdiumCardContentDirective,\r\n ArdiumCardFooterDirective,\r\n ArdiumCardHeaderComponent,\r\n ArdiumCardImageDirective,\r\n ArdiumCardSubtitleDirective,\r\n ArdiumCardTitleDirective,\r\n} from './card.children';\r\nimport { ArdiumCardComponent, ArdiumCardDirective } from './card.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumCardComponent,\r\n ArdiumCardDirective,\r\n ArdiumCardHeaderComponent,\r\n ArdiumCardTitleDirective,\r\n ArdiumCardSubtitleDirective,\r\n ArdiumCardAvatarDirective,\r\n ArdiumCardContentDirective,\r\n ArdiumCardImageDirective,\r\n ArdiumCardActionButtonsDirective,\r\n ArdiumCardFooterDirective,\r\n ],\r\n imports: [CommonModule],\r\n exports: [\r\n ArdiumCardComponent,\r\n ArdiumCardDirective,\r\n ArdiumCardHeaderComponent,\r\n ArdiumCardTitleDirective,\r\n ArdiumCardSubtitleDirective,\r\n ArdiumCardAvatarDirective,\r\n ArdiumCardContentDirective,\r\n ArdiumCardImageDirective,\r\n ArdiumCardActionButtonsDirective,\r\n ArdiumCardFooterDirective,\r\n ],\r\n})\r\nexport class ArdiumCardModule {}\r\n","export const ArdDividerVariant = {\r\n Full: 'full',\r\n Middle: 'middle',\r\n} as const;\r\nexport type ArdDividerVariant = typeof ArdDividerVariant[keyof typeof ArdDividerVariant];","import { InjectionToken, Provider } from '@angular/core';\r\nimport { OneAxisAlignmentOrientational } from '../types/alignment.types';\r\nimport { ArdDividerVariant } from './divider.types';\r\n\r\nexport interface ArdDividerDefaults {\r\n vertical: boolean;\r\n variant: ArdDividerVariant;\r\n flexItem: boolean;\r\n textAlign: OneAxisAlignmentOrientational;\r\n}\r\n\r\nconst _dividerDefaults: ArdDividerDefaults = {\r\n vertical: false,\r\n variant: ArdDividerVariant.Full,\r\n flexItem: false,\r\n textAlign: OneAxisAlignmentOrientational.Center,\r\n};\r\n\r\nexport const ARD_DIVIDER_DEFAULTS = new InjectionToken<ArdDividerDefaults>('ard-divider-defaults', {\r\n factory: () => ({\r\n ..._dividerDefaults,\r\n }),\r\n});\r\n\r\nexport function provideDividerDefaults(config: Partial<ArdDividerDefaults>): Provider {\r\n return { provide: ARD_DIVIDER_DEFAULTS, useValue: { ..._dividerDefaults, ...config } };\r\n}\r\n","import { computed, Directive, inject, input } from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { OneAxisAlignmentOrientational } from '../types/alignment.types';\r\nimport { ARD_DIVIDER_DEFAULTS } from './divider.defaults';\r\nimport { ArdDividerVariant } from './divider.types';\r\n\r\n@Directive({\r\n selector: '[ard-divider]',\r\n standalone: false,\r\n host: {\r\n role: 'separator',\r\n '[class]': 'ngClasses()',\r\n },\r\n})\r\nexport class ArdiumDividerDirective {\r\n protected readonly _DEFAULTS = inject(ARD_DIVIDER_DEFAULTS);\r\n\r\n readonly vertical = input<boolean, BooleanLike>(this._DEFAULTS.vertical, { transform: v => coerceBooleanProperty(v) });\r\n readonly flexItem = input<boolean, BooleanLike>(this._DEFAULTS.flexItem, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly textAlign = input<OneAxisAlignmentOrientational>(this._DEFAULTS.textAlign);\r\n readonly variant = input<ArdDividerVariant>(this._DEFAULTS.variant);\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n 'ard-divider',\r\n this.vertical() ? 'ard-divider__vertical' : 'ard-divider__horizontal',\r\n this.flexItem() ? 'ard-divider__flex-item' : '',\r\n `ard-divider__text-align-${this.textAlign()}`,\r\n `ard-divider__${this.variant()}`,\r\n ].join(' ')\r\n );\r\n}\r\n\r\n\r\n@Directive({\r\n standalone: true,\r\n host: {\r\n role: 'separator',\r\n '[class]': 'ngClasses()',\r\n },\r\n})\r\nexport class ArdiumDividerDirectiveStandalone extends ArdiumDividerDirective {}","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\nimport { ArdiumDividerDirectiveStandalone } from './divider.directive';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-divider',\r\n template: '<ng-content />',\r\n styleUrls: ['./divider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [{ directive: ArdiumDividerDirectiveStandalone, inputs: ['vertical', 'flexItem', 'textAlign', 'variant'] }],\r\n})\r\nexport class ArdiumDividerComponent {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumDividerComponent } from './divider.component';\r\nimport { ArdiumDividerDirective } from './divider.directive';\r\n\r\n@NgModule({\r\n declarations: [ArdiumDividerComponent, ArdiumDividerDirective],\r\n imports: [CommonModule],\r\n exports: [ArdiumDividerComponent, ArdiumDividerDirective],\r\n})\r\nexport class ArdiumDividerModule {}\r\n","export interface ArdBreakpointsConfig<T> {\r\n xs?: T;\r\n sm?: T;\r\n md?: T;\r\n lg?: T;\r\n xl?: T;\r\n '2xl'?: T;\r\n [key: string]: T | undefined;\r\n}\r\n\r\nexport type ArdBreakpoints = Required<ArdBreakpointsConfig<string>>;\r\n\r\nimport { InjectionToken, Provider } from '@angular/core';\r\nimport { ArdiumBreakpointService } from './breakpoint.service';\r\n\r\nconst _defaultBreakpoints: ArdBreakpoints = {\r\n xs: '0rem', // 0px\r\n sm: '36rem', // 576px\r\n md: '48rem', // 768px\r\n lg: '64rem', // 1024px\r\n xl: '80rem', // 1280px\r\n '2xl': '96rem', // 1536px\r\n};\r\n\r\nexport const ARD_BREAKPOINTS = new InjectionToken<Map<string, string>>('ard-breakpoints', {\r\n factory: () => mapBreakpointsToMediaQueries(_defaultBreakpoints),\r\n});\r\n\r\nexport function provideBreakpoints(config?: Partial<ArdBreakpoints>): Provider[] {\r\n return [\r\n {\r\n provide: ARD_BREAKPOINTS,\r\n useValue: mapBreakpointsToMediaQueries({ ..._defaultBreakpoints, ...(config ?? {}) } as ArdBreakpoints),\r\n },\r\n ArdiumBreakpointService,\r\n ];\r\n}\r\n\r\nfunction mapBreakpointsToMediaQueries(breakpoints: ArdBreakpoints): Map<string, string> {\r\n const map = new Map<string, string>();\r\n\r\n let firstUnit: string | null = null;\r\n const entries = Object.entries(breakpoints)\r\n .map(entry => {\r\n const [key, value] = entry;\r\n if (value === undefined) {\r\n return null;\r\n }\r\n const [, amountStr, unit] = value.match(/(\\d+)(\\w+)/) || [];\r\n const amount = Number(amountStr);\r\n // validate format\r\n if (isNaN(amount) || !unit) {\r\n console.warn(`ARD-WA-G00: Invalid breakpoint format for ${key}: ${value}`);\r\n return null;\r\n }\r\n // validate consistent units\r\n if (!firstUnit) {\r\n firstUnit = unit;\r\n } else if (unit !== firstUnit) {\r\n console.warn(\r\n `ARD-WA-G01: All breakpoints must use the same unit. Expected \"${firstUnit}\" but got \"${unit}\" for breakpoint \"${key}\"`\r\n );\r\n return null;\r\n }\r\n // validate positive values\r\n if (amount < 0) {\r\n console.warn(`ARD-WA-G02: Breakpoint values must be non-negative. Invalid value for ${key}: ${value}`);\r\n return null;\r\n }\r\n\r\n return [key, { amount, unit }] as [string, { amount: number; unit: string }];\r\n })\r\n .filter(entry => entry !== null)\r\n .sort((a, b) => a![1].amount - b![1].amount) as [string, { amount: number; unit: string }][];\r\n\r\n for (let i = 0; i < entries.length; i++) {\r\n const [key, { amount, unit }] = entries[i];\r\n const minWidth = `(min-width: ${amount}${unit})`;\r\n\r\n const nextEntry = entries[i + 1];\r\n if (!nextEntry) {\r\n map.set(minWidth, key);\r\n continue;\r\n }\r\n\r\n const [, { amount: nextAmount, unit: nextUnit }] = nextEntry;\r\n const maxWidth = `(max-width: ${nextAmount - 0.01}${nextUnit})`;\r\n const mediaQuery = i === entries.length - 1 ? minWidth : `${minWidth} and ${maxWidth}`;\r\n map.set(mediaQuery, key);\r\n }\r\n return map;\r\n}\r\n","import { BreakpointObserver } from '@angular/cdk/layout';\r\nimport { inject, Injectable, OnDestroy, signal } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { ARD_BREAKPOINTS } from './breakpoints';\r\n\r\n@Injectable()\r\nexport class ArdiumBreakpointService implements OnDestroy {\r\n private readonly _destroyed = new Subject<void>();\r\n\r\n public readonly breakpointMap = inject(ARD_BREAKPOINTS);\r\n public readonly breakpoints = Array.from(this.breakpointMap.values());\r\n\r\n public readonly currentBreakpoint = signal<string | null>(null);\r\n\r\n constructor() {\r\n inject(BreakpointObserver)\r\n .observe(Array.from(this.breakpointMap.keys()))\r\n .pipe(takeUntil(this._destroyed))\r\n .subscribe(result => {\r\n for (const query of Object.keys(result.breakpoints)) {\r\n if (result.breakpoints[query]) {\r\n this.currentBreakpoint.set(this.breakpointMap.get(query)!);\r\n }\r\n }\r\n });\r\n }\r\n ngOnDestroy() {\r\n this._destroyed.next();\r\n this._destroyed.complete();\r\n }\r\n}\r\n","import { coerceArrayProperty } from '@ardium-ui/devkit';\r\nimport { isNumber, isObject } from 'simple-bool';\r\nimport { ArdBreakpointsConfig } from './../breakpoints/breakpoints';\r\n\r\n/**\r\n * Normalizes various responsive value representations into a full {@link ArdBreakpointsConfig}.\r\n *\r\n * - `number`: same value is applied to all breakpoints.\r\n * - `string`: either a single number or a space-separated breakpoint list\r\n * like `\"xs:1 sm:2 md:3 lg:4 xl:5\"`.\r\n * - `ArdBreakpointsConfig`: missing breakpoints are filled based on smaller ones.\r\n */\r\nexport function transformResponsiveValue<T>(\r\n v: T | string | ArdBreakpointsConfig<T>,\r\n breakpoints: string[],\r\n componentId: string,\r\n parseValue: (val: string) => T | undefined\r\n): Required<ArdBreakpointsConfig<T>>;\r\n\r\n/**\r\n * Normalizes various responsive value representations into a full {@link ArdBreakpointsConfig}.\r\n *\r\n * - `number`: same value is applied to all breakpoints.\r\n * - `string`: either a single number or a space-separated breakpoint list\r\n * like `\"xs:1 sm:2 md:3 lg:4 xl:5\"`.\r\n * - `ArdBreakpointsConfig`: missing breakpoints are filled based on smaller ones.\r\n */\r\nexport function transformResponsiveValue<T, R extends T>(\r\n v: T | string | ArdBreakpointsConfig<T>,\r\n breakpoints: string[],\r\n componentId: string,\r\n parseValue: (val: string) => R | undefined,\r\n parseToR: (val: T) => R\r\n): Required<ArdBreakpointsConfig<R>>;\r\n\r\nexport function transformResponsiveValue<T, R extends T>(\r\n v: T | string | ArdBreakpointsConfig<T>,\r\n breakpoints: string[],\r\n componentId: string,\r\n parseValue: (val: string) => R | undefined,\r\n parseToR?: (val: T) => R\r\n): Required<ArdBreakpointsConfig<R>> {\r\n // if it's an object, fill in missing breakpoints\r\n if (isObject(v)) {\r\n const vAsR = {} as Partial<ArdBreakpointsConfig<R>>;\r\n for (const [bp, val] of Object.entries(v)) {\r\n vAsR[bp] = parseToR?.(val!) ?? (val as unknown as R);\r\n }\r\n\r\n return fillInMissingBreakpoints<R>(vAsR, breakpoints, componentId);\r\n }\r\n // parse string like \"xs:1 sm:2 md:3 lg:4 xl:5\"\r\n const items = coerceArrayProperty(v, ' ')\r\n .map(item => {\r\n const [breakpointOrValue, value] = item.split(':');\r\n const rawValue = value !== undefined ? value.trim() : breakpointOrValue.trim();\r\n return {\r\n breakpoint: value !== undefined ? breakpointOrValue.trim() : 'xs',\r\n rawValue,\r\n value: parseValue(rawValue),\r\n };\r\n })\r\n .filter(item => {\r\n if (!breakpoints.includes(item.breakpoint)) {\r\n console.warn(`ARD-WA${componentId}0: Unknown breakpoint \"${item.breakpoint}:${item.value}\". This entry will be ignored.`);\r\n return false;\r\n }\r\n if (item.value === undefined || item.value === null || item.value === '' || (isNumber(item.value) && isNaN(item.value))) {\r\n console.warn(`ARD-WA${componentId}1: Invalid value for breakpoint \"${item.breakpoint}\". This entry will be ignored.`);\r\n return false;\r\n }\r\n return true;\r\n })\r\n .reduce(\r\n (acc, curr) => {\r\n if (acc[curr.breakpoint]) {\r\n console.warn(\r\n `ARD-WA${componentId}2: Duplicate value for breakpoint \"${curr.breakpoint}\". The value \"${curr.rawValue}\" will overwrite the previous value \"${acc[curr.breakpoint]}\".`\r\n );\r\n }\r\n acc[curr.breakpoint] = curr.value;\r\n return acc;\r\n },\r\n {} as Record<string, R | undefined>\r\n );\r\n return fillInMissingBreakpoints(items, breakpoints, componentId);\r\n}\r\n\r\nexport function fillInMissingBreakpoints<T>(\r\n config: Partial<ArdBreakpointsConfig<T>>,\r\n breakpoints: string[],\r\n componentId: string\r\n): Required<ArdBreakpointsConfig<T>> {\r\n const filledConfig: Record<string, T> = {};\r\n let lastValue: T | undefined = undefined;\r\n for (const bp of breakpoints) {\r\n if (config[bp] !== undefined) {\r\n filledConfig[bp] = config[bp]!;\r\n lastValue = config[bp];\r\n continue;\r\n }\r\n if (lastValue !== undefined) {\r\n filledConfig[bp] = lastValue;\r\n continue;\r\n }\r\n throw new Error(`ARD-FT${componentId}3: Missing value for breakpoint \"${bp}\" and no smaller breakpoint to inherit from.`);\r\n }\r\n return filledConfig as Required<ArdBreakpointsConfig<T>>;\r\n}\r\n","import { coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isNull, isNumber } from 'simple-bool';\r\nimport { ArdGridSize, isArdGridSize } from '../grid';\r\nimport { fillInMissingBreakpoints, transformResponsiveValue } from '../grid/grid.utils';\r\nimport { ArdBreakpointsConfig } from './breakpoints';\r\n\r\nexport function parseNumberOrBreakpointConfig(\r\n value: number | string | ArdBreakpointsConfig<number>,\r\n breakpoints: string[],\r\n componentId: string\r\n): Required<ArdBreakpointsConfig<number>> {\r\n if (typeof value === 'number') {\r\n // If it's a number, apply it to all breakpoints\r\n return fillInMissingBreakpoints({ xs: value }, breakpoints, componentId);\r\n }\r\n return transformResponsiveValue<number>(value, breakpoints, componentId, coerceNumberProperty);\r\n}\r\n\r\nexport function parseSizeOrBreakpointConfig(\r\n value: number | ArdGridSize | string | ArdBreakpointsConfig<number | ArdGridSize>,\r\n breakpoints: string[],\r\n componentId: string\r\n): Required<ArdBreakpointsConfig<number | ArdGridSize>> {\r\n if (typeof value === 'number' || isArdGridSize(value)) {\r\n // If it's a number or ArdGridSize, apply it to all breakpoints\r\n return fillInMissingBreakpoints({ xs: value }, breakpoints, componentId);\r\n }\r\n return transformResponsiveValue<number | ArdGridSize>(value, breakpoints, componentId, v => {\r\n if (isArdGridSize(v)) {\r\n return v;\r\n }\r\n return coerceNumberProperty(v);\r\n });\r\n}\r\n\r\nexport function parseBooleanOrBreakpointConfig(\r\n value: boolean | string | ArdBreakpointsConfig<boolean>,\r\n breakpoints: string[],\r\n componentId: string\r\n): Required<ArdBreakpointsConfig<boolean>> {\r\n if (typeof value === 'boolean') {\r\n // If it's a boolean, apply it to all breakpoints\r\n return fillInMissingBreakpoints({ xs: value }, breakpoints, componentId);\r\n }\r\n if (value === '' || value === 'true') {\r\n return fillInMissingBreakpoints({ xs: true }, breakpoints, componentId);\r\n }\r\n return transformResponsiveValue<boolean>(value, breakpoints, componentId, v => v === 'true');\r\n}\r\n\r\nexport function parseCSSUnitOrBreakpointConfig(\r\n value: null | number | string | ArdBreakpointsConfig<string | number>,\r\n breakpoints: string[],\r\n componentId: string\r\n): Required<ArdBreakpointsConfig<string>> | null {\r\n if (isNull(value)) {\r\n return value;\r\n }\r\n if (isNumber(value)) {\r\n fillInMissingBreakpoints({ xs: value }, breakpoints, componentId);\r\n }\r\n return transformResponsiveValue<string | number, string>(\r\n value,\r\n breakpoints,\r\n componentId,\r\n v => {\r\n const num = coerceNumberProperty(v, NaN);\r\n return isNaN(num) ? v : `calc(var(--ard-grid-spacing-unit) * ${num})`;\r\n },\r\n v => (typeof v === 'number' ? `calc(var(--ard-grid-spacing-unit) * ${v})` : v)\r\n );\r\n}\r\n\r\nexport function parseEnumOrBreakpointConfig<T>(\r\n value: T | string | ArdBreakpointsConfig<T>,\r\n breakpoints: string[],\r\n componentId: string,\r\n isEnumValue: (val: any) => val is T\r\n): Required<ArdBreakpointsConfig<T>> {\r\n if (isEnumValue(value)) {\r\n // If it's an enum value, apply it to all breakpoints\r\n return fillInMissingBreakpoints({ xs: value as T }, breakpoints, componentId);\r\n }\r\n return transformResponsiveValue<T>(value, breakpoints, componentId, v => (isEnumValue(v) ? v : undefined));\r\n}\r\n","//! size\r\nexport const ArdGridSize = {\r\n Grow: 'grow',\r\n Auto: 'auto',\r\n} as const;\r\nexport type ArdGridSize = (typeof ArdGridSize)[keyof typeof ArdGridSize];\r\n\r\nconst gridSizeValuesSet = new Set(Object.values(ArdGridSize));\r\n\r\nexport function isArdGridSize(value: any): value is ArdGridSize {\r\n return gridSizeValuesSet.has(value);\r\n}\r\n\r\n//! justify\r\nexport const ArdGridJustify = {\r\n Start: 'flex-start',\r\n End: 'flex-end',\r\n Center: 'center',\r\n SpaceBetween: 'space-between',\r\n SpaceAround: 'space-around',\r\n SpaceEvenly: 'space-evenly',\r\n} as const;\r\nexport type ArdGridJustify = (typeof ArdGridJustify)[keyof typeof ArdGridJustify];\r\n\r\nconst gridJustifyValuesSet = new Set(Object.values(ArdGridJustify));\r\n\r\nexport function isArdGridJustify(value: any): value is ArdGridJustify {\r\n return gridJustifyValuesSet.has(value);\r\n}\r\n\r\n//! align\r\nexport const ArdGridAlign = {\r\n Start: 'flex-start',\r\n End: 'flex-end',\r\n Center: 'center',\r\n} as const;\r\nexport type ArdGridAlign = (typeof ArdGridAlign)[keyof typeof ArdGridAlign];\r\n\r\nconst gridAlignValuesSet = new Set(Object.values(ArdGridAlign));\r\n\r\nexport function isArdGridAlign(value: any): value is ArdGridAlign {\r\n return gridAlignValuesSet.has(value);\r\n}\r\n\r\n//! wrap\r\nexport const ArdGridWrap = {\r\n Wrap: 'wrap',\r\n NoWrap: 'nowrap',\r\n WrapReverse: 'wrap-reverse',\r\n} as const;\r\nexport type ArdGridWrap = (typeof ArdGridWrap)[keyof typeof ArdGridWrap];\r\n\r\nconst gridWrapValuesSet = new Set(Object.values(ArdGridWrap));\r\n\r\nexport function isArdGridWrap(value: any): value is ArdGridWrap {\r\n return gridWrapValuesSet.has(value);\r\n}\r\n\r\n//! direction\r\nexport const ArdGridDirection = {\r\n Row: 'row',\r\n RowReverse: 'row-reverse',\r\n Column: 'column',\r\n ColumnReverse: 'column-reverse',\r\n} as const;\r\nexport type ArdGridDirection = (typeof ArdGridDirection)[keyof typeof ArdGridDirection];\r\n\r\nconst gridDirectionValuesSet = new Set(Object.values(ArdGridDirection));\r\n\r\nexport function isArdGridDirection(value: any): value is ArdGridDirection {\r\n return gridDirectionValuesSet.has(value);\r\n}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { ArdBreakpointsConfig } from '../breakpoints/breakpoints';\r\nimport { ArdGridAlign, ArdGridJustify, ArdGridSize, ArdGridWrap } from './grid.types';\r\n\r\nexport interface ArdGridDefaults {\r\n columns: number | string | ArdBreakpointsConfig<number>;\r\n size: number | string | ArdGridSize | ArdBreakpointsConfig<number | ArdGridSize>;\r\n reverse: boolean | string | ArdBreakpointsConfig<boolean>;\r\n justifyContent: ArdGridJustify | ArdBreakpointsConfig<ArdGridJustify>;\r\n alignItems: ArdGridAlign | ArdBreakpointsConfig<ArdGridAlign>;\r\n spacing: number | string | ArdBreakpointsConfig<number | string>;\r\n columnSpacing: null | number | string | ArdBreakpointsConfig<number | string>;\r\n rowSpacing: null | number | string | ArdBreakpointsConfig<number | string>;\r\n wrap: ArdGridWrap | ArdBreakpointsConfig<ArdGridWrap>;\r\n}\r\n\r\nconst _gridDefaults: ArdGridDefaults = {\r\n columns: 12,\r\n size: ArdGridSize.Grow,\r\n reverse: false,\r\n justifyContent: ArdGridJustify.Start,\r\n alignItems: ArdGridAlign.Start,\r\n spacing: 3,\r\n columnSpacing: null,\r\n rowSpacing: null,\r\n wrap: ArdGridWrap.Wrap,\r\n};\r\n\r\nexport const ARD_GRID_DEFAULTS = new InjectionToken<ArdGridDefaults>('ard-grid-defaults', {\r\n factory: () => ({\r\n ..._gridDefaults,\r\n }),\r\n});\r\n\r\nexport function provideGridDefaults(config: Partial<ArdGridDefaults>): Provider {\r\n return { provide: ARD_GRID_DEFAULTS, useValue: { ..._gridDefaults, ...config } };\r\n}\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChildren,\r\n effect,\r\n inject,\r\n input,\r\n OnChanges,\r\n signal,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ArdiumBreakpointService } from '../breakpoints/breakpoint.service';\r\nimport {\r\n parseBooleanOrBreakpointConfig,\r\n parseCSSUnitOrBreakpointConfig,\r\n parseEnumOrBreakpointConfig,\r\n parseNumberOrBreakpointConfig,\r\n parseSizeOrBreakpointConfig,\r\n} from '../breakpoints/breakpoint.utils';\r\nimport { ArdBreakpointsConfig } from '../breakpoints/breakpoints';\r\nimport { ARD_GRID_DEFAULTS } from './grid.defaults';\r\nimport {\r\n ArdGridAlign,\r\n ArdGridJustify,\r\n ArdGridSize,\r\n ArdGridWrap,\r\n isArdGridAlign,\r\n isArdGridJustify,\r\n isArdGridWrap,\r\n} from './grid.types';\r\n\r\n@Component({\r\n selector: 'ard-grid',\r\n standalone: false,\r\n templateUrl: './grid.component.html',\r\n styleUrl: './grid.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'ard-grid',\r\n '[style]': 'currentStyle()',\r\n '[class.ard-grid__container]': 'container()',\r\n '[class.ard-grid__item]': '!container()',\r\n '[class.ard-grid__item-grow]': '!container() && currentSize() === \"grow\"',\r\n '[class.ard-grid__item-auto]': '!container() && currentSize() === \"auto\"',\r\n },\r\n})\r\nexport class ArdiumGridComponent implements AfterContentInit, OnChanges {\r\n private readonly _componentId = '601';\r\n\r\n protected readonly _DEFAULTS = inject(ARD_GRID_DEFAULTS);\r\n\r\n private readonly _breakpointService = inject(ArdiumBreakpointService);\r\n\r\n constructor() {\r\n effect(() => {\r\n this._updateChildrenStyles();\r\n });\r\n }\r\n\r\n private _wasContentInitialized = false;\r\n ngAfterContentInit() {\r\n this._wasContentInitialized = true;\r\n this._updateChildrenStyles();\r\n }\r\n\r\n //! is container\r\n readonly container = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! configurations\r\n readonly columns = input<Required<ArdBreakpointsConfig<number>>, number | string | ArdBreakpointsConfig<number>>(\r\n parseNumberOrBreakpointConfig(this._DEFAULTS.columns, this._breakpointService.breakpoints, this._componentId),\r\n { transform: value => parseNumberOrBreakpointConfig(value, this._breakpointService.breakpoints, this._componentId) }\r\n );\r\n readonly size = input<\r\n Required<ArdBreakpointsConfig<number | ArdGridSize>>,\r\n number | ArdGridSize | string | ArdBreakpointsConfig<number>\r\n >(parseSizeOrBreakpointConfig(this._DEFAULTS.size, this._breakpointService.breakpoints, this._componentId), {\r\n transform: value => parseSizeOrBreakpointConfig(value, this._breakpointService.breakpoints, this._componentId),\r\n });\r\n\r\n readonly reverse = input<Required<ArdBreakpointsConfig<boolean>>, boolean | string | ArdBreakpointsConfig<boolean>>(\r\n parseBooleanOrBreakpointConfig(this._DEFAULTS.reverse, this._breakpointService.breakpoints, this._componentId),\r\n { transform: value => parseBooleanOrBreakpointConfig(value, this._breakpointService.breakpoints, this._componentId) }\r\n );\r\n\r\n readonly justifyContent = input<\r\n Required<ArdBreakpointsConfig<ArdGridJustify>>,\r\n ArdGridJustify | string | ArdBreakpointsConfig<ArdGridJustify>\r\n >(parseEnumOrBreakpointConfig(this._DEFAULTS.justifyContent, this._breakpointService.breakpoints, this._componentId, isArdGridJustify), {\r\n transform: value => parseEnumOrBreakpointConfig(value, this._breakpointService.breakpoints, this._componentId, isArdGridJustify),\r\n });\r\n\r\n readonly alignItems = input<\r\n Required<ArdBreakpointsConfig<ArdGridAlign>>,\r\n ArdGridAlign | string | ArdBreakpointsConfig<ArdGridAlign>\r\n >(parseEnumOrBreakpointConfig(this._DEFAULTS.alignItems, this._breakpointService.breakpoints, this._componentId, isArdGridAlign), {\r\n transform: value => parseEnumOrBreakpointConfig(value, this._breakpointService.breakpoints, this._componentId, isArdGridAlign),\r\n });\r\n\r\n readonly spacing = input<\r\n Required<ArdBreakpointsConfig<number | string>>,\r\n number | string | ArdBreakpointsConfig<number | string>\r\n >(parseCSSUnitOrBreakpointConfig(this._DEFAULTS.spacing, this._breakpointService.breakpoints, this._componentId)!, {\r\n transform: value => parseCSSUnitOrBreakpointConfig(value, this._breakpointService.breakpoints, this._componentId)!,\r\n });\r\n\r\n readonly columnSpacing = input<\r\n ArdBreakpointsConfig<number | string> | null,\r\n null | number | string | ArdBreakpointsConfig<number | string>\r\n >(parseCSSUnitOrBreakpointConfig(this._DEFAULTS.columnSpacing, this._breakpointService.breakpoints, this._componentId), {\r\n transform: value => parseCSSUnitOrBreakpointConfig(value, this._breakpointService.breakpoints, this._componentId),\r\n });\r\n\r\n readonly rowSpacing = input<\r\n ArdBreakpointsConfig<number | string> | null,\r\n null | number | string | ArdBreakpointsConfig<number | string>\r\n >(parseCSSUnitOrBreakpointConfig(this._DEFAULTS.rowSpacing, this._breakpointService.breakpoints, this._componentId), {\r\n transform: value => parseCSSUnitOrBreakpointConfig(value, this._breakpointService.breakpoints, this._componentId),\r\n });\r\n\r\n readonly wrap = input<Required<ArdBreakpointsConfig<ArdGridWrap>>, ArdGridWrap | string | ArdBreakpointsConfig<ArdGridWrap>>(\r\n parseEnumOrBreakpointConfig(this._DEFAULTS.wrap, this._breakpointService.breakpoints, this._componentId, isArdGridWrap),\r\n { transform: value => parseEnumOrBreakpointConfig(value, this._breakpointService.breakpoints, this._componentId, isArdGridWrap) }\r\n );\r\n\r\n //! inherited properties\r\n readonly inheritedColumns = signal<ArdBreakpointsConfig<number> | null>(null);\r\n readonly inheritedReverse = signal<ArdBreakpointsConfig<boolean> | null>(null);\r\n readonly inheritedJustifyContent = signal<ArdBreakpointsConfig<ArdGridJustify> | null>(null);\r\n readonly inheritedAlignItems = signal<ArdBreakpointsConfig<ArdGridAlign> | null>(null);\r\n readonly inheritedColumnSpacing = signal<ArdBreakpointsConfig<number | string> | null>(null);\r\n readonly inheritedRowSpacing = signal<ArdBreakpointsConfig<number | string> | null>(null);\r\n readonly inheritedWrap = signal<ArdBreakpointsConfig<ArdGridWrap> | null>(null);\r\n\r\n readonly wasColumnsChanged = signal<boolean>(false);\r\n readonly wasReverseChanged = signal<boolean>(false);\r\n readonly wasJustifyContentChanged = signal<boolean>(false);\r\n readonly wasAlignItemsChanged = signal<boolean>(false);\r\n readonly wasColumnSpacingChanged = signal<boolean>(false);\r\n readonly wasRowSpacingChanged = signal<boolean>(false);\r\n readonly wasWrapChanged = signal<boolean>(false);\r\n\r\n //! inherited or own properties\r\n readonly columnsOrInherited = computed(() =>\r\n this.wasColumnsChanged() ? this.columns() : (this.inheritedColumns() ?? this.columns())\r\n );\r\n readonly reverseOrInherited = computed(() =>\r\n this.wasReverseChanged() ? this.reverse() : (this.inheritedReverse() ?? this.reverse())\r\n );\r\n readonly justifyContentOrInherited = computed(() =>\r\n this.wasJustifyContentChanged() ? this.justifyContent() : (this.inheritedJustifyContent() ?? this.justifyContent())\r\n );\r\n readonly alignItemsOrInherited = computed(() =>\r\n this.wasAlignItemsChanged() ? this.alignItems() : (this.inheritedAlignItems() ?? this.alignItems())\r\n );\r\n readonly columnSpacingOrInherited = computed(() =>\r\n this.wasColumnSpacingChanged() ? this.columnSpacing() : (this.inheritedColumnSpacing() ?? this.columnSpacing())\r\n );\r\n readonly rowSpacingOrInherited = computed(() =>\r\n this.wasRowSpacingChanged() ? this.rowSpacing() : (this.inheritedRowSpacing() ?? this.rowSpacing())\r\n );\r\n readonly wrapOrInherited = computed(() => (this.wasWrapChanged() ? this.wrap() : (this.inheritedWrap() ?? this.wrap())));\r\n\r\n //! computed properties\r\n readonly finalColumnSpacing = computed(() => this.columnSpacingOrInherited() ?? this.spacing());\r\n readonly finalRowSpacing = computed(() => this.rowSpacingOrInherited() ?? this.spacing());\r\n\r\n //! current values\r\n readonly currentColumns = computed(() => this.columnsOrInherited()[this._breakpointService.currentBreakpoint() ?? 'xs']);\r\n readonly currentSize = computed(() => this.size()[this._breakpointService.currentBreakpoint() ?? 'xs']);\r\n readonly currentReverse = computed(() => this.reverseOrInherited()[this._breakpointService.currentBreakpoint() ?? 'xs']);\r\n readonly currentJustifyContent = computed(\r\n () => this.justifyContentOrInherited()[this._breakpointService.currentBreakpoint() ?? 'xs']\r\n );\r\n readonly currentAlignItems = computed(() => this.alignItemsOrInherited()[this._breakpointService.currentBreakpoint() ?? 'xs']);\r\n readonly currentColumnSpacing = computed(() => this.finalColumnSpacing()[this._breakpointService.currentBreakpoint() ?? 'xs']);\r\n readonly currentRowSpacing = computed(() => this.finalRowSpacing()[this._breakpointService.currentBreakpoint() ?? 'xs']);\r\n readonly currentWrap = computed(() => this.wrapOrInherited()[this._breakpointService.currentBreakpoint() ?? 'xs']);\r\n\r\n readonly currentInheritedColumns = computed(\r\n () => this.inheritedColumns()?.[this._breakpointService.currentBreakpoint() ?? 'xs']\r\n );\r\n readonly currentInheritedColumnSpacing = computed(\r\n () => this.inheritedColumnSpacing()?.[this._breakpointService.currentBreakpoint() ?? 'xs']\r\n );\r\n readonly currentInheritedRowSpacing = computed(\r\n () => this.inheritedRowSpacing()?.[this._breakpointService.currentBreakpoint() ?? 'xs']\r\n );\r\n\r\n readonly currentStyle = computed(() =>\r\n [\r\n this.currentSize() ? `--ard-_grid-size: ${this.currentSize()}` : '',\r\n\r\n this.currentInheritedColumns() ? `--ard-_grid-parent-columns: ${this.currentInheritedColumns()}` : '',\r\n this.currentInheritedColumnSpacing() ? `--ard-_grid-parent-column-spacing: ${this.currentInheritedColumnSpacing()}` : '',\r\n this.currentInheritedRowSpacing() ? `--ard-_grid-parent-row-spacing: ${this.currentInheritedRowSpacing()}` : '',\r\n\r\n this.container() ? `--ard-_grid-columns: ${this.currentColumns()}` : '',\r\n this.container() ? `--ard-_grid-direction: ${this.currentReverse() ? 'row-reverse' : 'row'}` : '',\r\n this.container() ? `--ard-_grid-justify-content: ${this.currentJustifyContent()}` : '',\r\n this.container() ? `--ard-_grid-align-items: ${this.currentAlignItems()}` : '',\r\n this.container() ? `--ard-_grid-column-spacing: ${this.currentColumnSpacing()}` : '',\r\n this.container() ? `--ard-_grid-row-spacing: ${this.currentRowSpacing()}` : '',\r\n this.container() ? `--ard-_grid-wrap: ${this.currentWrap()}` : '',\r\n ]\r\n .filter(Boolean)\r\n .join(';')\r\n );\r\n\r\n //! inheriting styles for items\r\n readonly children = contentChildren(ArdiumGridComponent);\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['columns']) {\r\n this.wasColumnsChanged.set(true);\r\n }\r\n if (changes['reverse']) {\r\n this.wasReverseChanged.set(true);\r\n }\r\n if (changes['justifyContent']) {\r\n this.wasJustifyContentChanged.set(true);\r\n }\r\n if (changes['alignItems']) {\r\n this.wasAlignItemsChanged.set(true);\r\n }\r\n if (changes['columnSpacing']) {\r\n this.wasColumnSpacingChanged.set(true);\r\n }\r\n if (changes['rowSpacing']) {\r\n this.wasRowSpacingChanged.set(true);\r\n }\r\n if (changes['wrap']) {\r\n this.wasWrapChanged.set(true);\r\n }\r\n }\r\n\r\n private _updateChildrenStyles() {\r\n const children = this.children();\r\n\r\n const columns = this.columnsOrInherited();\r\n const reverse = this.reverseOrInherited();\r\n const justifyContent = this.justifyContentOrInherited();\r\n const alignItems = this.alignItemsOrInherited();\r\n const columnSpacing = this.finalColumnSpacing();\r\n const rowSpacing = this.finalRowSpacing();\r\n const wrap = this.wrapOrInherited();\r\n\r\n if (!this._wasContentInitialized) {\r\n return;\r\n }\r\n\r\n for (const child of children) {\r\n child.inheritedColumns.set(columns);\r\n child.inheritedReverse.set(reverse);\r\n child.inheritedJustifyContent.set(justifyContent);\r\n child.inheritedAlignItems.set(alignItems);\r\n child.inheritedColumnSpacing.set(columnSpacing);\r\n child.inheritedRowSpacing.set(rowSpacing);\r\n child.inheritedWrap.set(wrap);\r\n }\r\n }\r\n}\r\n","<ng-content />","import { NgModule } from '@angular/core';\r\nimport { ArdiumGridComponent } from './grid.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumGridComponent\r\n ],\r\n imports: [],\r\n exports: [\r\n ArdiumGridComponent\r\n ]\r\n})\r\nexport class ArdiumGridModule {}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { ArdBreakpointsConfig } from '../breakpoints';\r\nimport { ArdGridAlign, ArdGridDirection, ArdGridJustify, ArdGridWrap } from '../grid';\r\n\r\nexport interface ArdStackDefaults {\r\n direction: ArdGridDirection | ArdBreakpointsConfig<ArdGridDirection>;\r\n justifyContent: ArdGridJustify | ArdBreakpointsConfig<ArdGridJustify>;\r\n alignItems: ArdGridAlign | ArdBreakpointsConfig<ArdGridAlign>;\r\n spacing: number | string | ArdBreakpointsConfig<number | string>;\r\n columnSpacing: null | number | string | ArdBreakpointsConfig<number | string>;\r\n rowSpacing: null | number | string | ArdBreakpointsConfig<number | string>;\r\n wrap: ArdGridWrap | ArdBreakpointsConfig<ArdGridWrap>;\r\n}\r\n\r\nconst _stackDefaults: ArdStackDefaults = {\r\n direction: ArdGridDirection.Column,\r\n justifyContent: ArdGridJustify.Start,\r\n alignItems: ArdGridAlign.Start,\r\n spacing: 3,\r\n columnSpacing: null,\r\n rowSpacing: null,\r\n wrap: ArdGridWrap.Wrap,\r\n};\r\n\r\nexport const ARD_STACK_DEFAULTS = new InjectionToken<ArdStackDefaults>('ard-stack-defaults', {\r\n factory: () => ({\r\n ..._stackDefaults,\r\n }),\r\n});\r\n\r\nexport function provideStackDefaults(config: Partial<ArdStackDefaults>): Provider {\r\n return { provide: ARD_STACK_DEFAULTS, useValue: { ..._stackDefaults, ...config } };\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\r\nimport { ArdiumBreakpointService } from '../breakpoints/breakpoint.service';\r\nimport { parseCSSUnitOrBreakpointConfig, parseEnumOrBreakpointConfig } from '../breakpoints/breakpoint.utils';\r\nimport { ArdBreakpointsConfig } from '../breakpoints/breakpoints';\r\nimport {\r\n ArdGridAlign,\r\n ArdGridDirection,\r\n ArdGridJustify,\r\n ArdGridWrap,\r\n isArdGridAlign,\r\n isArdGridDirection,\r\n isArdGridJustify,\r\n isArdGridWrap,\r\n} from '../grid';\r\nimport { ARD_STACK_DEFAULTS } from './stack.defaults';\r\n\r\n@Component({\r\n selector: 'ard-stack',\r\n standalone: false,\r\n templateUrl: './stack.component.html',\r\n styleUrl: './stack.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'ard-stack',\r\n '[style]': 'currentStyle()',\r\n },\r\n})\r\nexport class ArdiumStackComponent {\r\n private readonly _componentId = '602';\r\n\r\n protected readonly _DEFAULTS = inject(ARD_STACK_DEFAULTS);\r\n\r\n private readonly _breakpointService = inject(ArdiumBreakpointService);\r\n\r\n //! configurations\r\n readonly direction = input<\r\n Required<ArdBreakpointsConfig<ArdGridDirection>>,\r\n ArdGridDirection | string | ArdBreakpointsConfig<ArdGridDirection>\r\n >(parseEnumOrBreakpointConfig(this._DEFAULTS.direction, this._breakpointService.breakpoints, this._componentId, isArdGridDirection), {\r\n transform: value => parseEnumOrBreakpointConfig(value, this._breakpointService.breakpoints, this._componentId, isArdGridDirection),\r\n });\r\n\r\n readonly justifyContent = input<\r\n Required<ArdBreakpointsConfig<ArdGridJustify>>,\r\n ArdGridJustify | string | ArdBreakpointsConfig<ArdGridJustify>\r\n >(parseEnumOrBreakpointConfig(this._DEFAULTS.justifyContent, this._breakpointService.breakpoints, this._componentId, isArdGridJustify), {\r\n transform: value => parseEnumOrBreakpointConfig(value, this._breakpointService.breakpoints, this._componentId, isArdGridJustify),\r\n });\r\n\r\n readonly alignItems = input<\r\n Required<ArdBreakpointsConfig<ArdGridAlign>>,\r\n ArdGridAlign | string | ArdBreakpointsConfig<ArdGridAlign>\r\n >(parseEnumOrBreakpointConfig(this._DEFAULTS.alignItems, this._breakpointService.breakpoints, this._componentId, isArdGridAlign), {\r\n transform: value => parseEnumOrBreakpointConfig(value, this._breakpointService.breakpoints, this._componentId, isArdGridAlign),\r\n });\r\n\r\n readonly spacing = input<\r\n Required<ArdBreakpointsConfig<number | string>>,\r\n number | string | ArdBreakpointsConfig<number | string>\r\n >(parseCSSUnitOrBreakpointConfig(this._DEFAULTS.spacing, this._breakpointService.breakpoints, this._componentId)!, {\r\n transform: value => parseCSSUnitOrBreakpointConfig(value, this._breakpointService.breakpoints, this._componentId)!,\r\n });\r\n\r\n readonly columnSpacing = input<\r\n ArdBreakpointsConfig<number | string> | null,\r\n null | number | string | ArdBreakpointsConfig<number | string>\r\n >(parseCSSUnitOrBreakpointConfig(this._DEFAULTS.columnSpacing, this._breakpointService.breakpoints, this._componentId), {\r\n transform: value => parseCSSUnitOrBreakpointConfig(value, this._breakpointService.breakpoints, this._componentId),\r\n });\r\n\r\n readonly rowSpacing = input<\r\n ArdBreakpointsConfig<number | string> | null,\r\n null | number | string | ArdBreakpointsConfig<number | string>\r\n >(parseCSSUnitOrBreakpointConfig(this._DEFAULTS.rowSpacing, this._breakpointService.breakpoints, this._componentId), {\r\n transform: value => parseCSSUnitOrBreakpointConfig(value, this._breakpointService.breakpoints, this._componentId),\r\n });\r\n\r\n readonly wrap = input<Required<ArdBreakpointsConfig<ArdGridWrap>>, ArdGridWrap | string | ArdBreakpointsConfig<ArdGridWrap>>(\r\n parseEnumOrBreakpointConfig(this._DEFAULTS.wrap, this._breakpointService.breakpoints, this._componentId, isArdGridWrap),\r\n { transform: value => parseEnumOrBreakpointConfig(value, this._breakpointService.breakpoints, this._componentId, isArdGridWrap) }\r\n );\r\n\r\n //! computed properties\r\n readonly finalColumnSpacing = computed(() => this.columnSpacing() ?? this.spacing());\r\n readonly finalRowSpacing = computed(() => this.rowSpacing() ?? this.spacing());\r\n\r\n //! current values\r\n readonly currentDirection = computed(() => this.direction()[this._breakpointService.currentBreakpoint() ?? 'xs']);\r\n readonly currentJustifyContent = computed(() => this.justifyContent()[this._breakpointService.currentBreakpoint() ?? 'xs']);\r\n readonly currentAlignItems = computed(() => this.alignItems()[this._breakpointService.currentBreakpoint() ?? 'xs']);\r\n readonly currentColumnSpacing = computed(() => this.finalColumnSpacing()[this._breakpointService.currentBreakpoint() ?? 'xs']);\r\n readonly currentRowSpacing = computed(() => this.finalRowSpacing()[this._breakpointService.currentBreakpoint() ?? 'xs']);\r\n readonly currentWrap = computed(() => this.wrap()[this._breakpointService.currentBreakpoint() ?? 'xs']);\r\n\r\n readonly currentStyle = computed(() =>\r\n [\r\n `--ard-_stack-direction: ${this.currentDirection()}`,\r\n `--ard-_stack-justify-content: ${this.currentJustifyContent()}`,\r\n `--ard-_stack-align-items: ${this.currentAlignItems()}`,\r\n `--ard-_stack-column-spacing: ${this.currentColumnSpacing()}`,\r\n `--ard-_stack-row-spacing: ${this.currentRowSpacing()}`,\r\n `--ard-_stack-wrap: ${this.currentWrap()}`,\r\n ]\r\n .filter(Boolean)\r\n .join(';')\r\n );\r\n}\r\n","<ng-content />","import { NgModule } from '@angular/core';\r\nimport { ArdiumStackComponent } from './stack.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumStackComponent],\r\n imports: [],\r\n exports: [ArdiumStackComponent],\r\n})\r\nexport class ArdiumStackModule {}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { OneAxisAlignment } from './../types/alignment.types';\r\nimport { ComponentColor } from './../types/colors.types';\r\n\r\nexport interface ArdTabberDefaults {\r\n tabDisabled: boolean;\r\n tabPointerEventsWhenDisabled: boolean;\r\n color: ComponentColor;\r\n stretchTabs: boolean;\r\n uniformTabWidths: boolean;\r\n tabAlignment: OneAxisAlignment;\r\n tabIndex: number;\r\n}\r\n\r\nconst _tabberDefaults: ArdTabberDefaults = {\r\n tabDisabled: false,\r\n tabPointerEventsWhenDisabled: false,\r\n color: ComponentColor.Primary,\r\n stretchTabs: false,\r\n uniformTabWidths: false,\r\n tabAlignment: OneAxisAlignment.Left,\r\n tabIndex: 0,\r\n};\r\n\r\nexport const ARD_TABBER_DEFAULTS = new InjectionToken<ArdTabberDefaults>('ard-tabber-defaults', {\r\n factory: () => ({\r\n ..._tabberDefaults,\r\n }),\r\n});\r\n\r\nexport function provideTabberDefaults(config: Partial<ArdTabberDefaults>): Provider {\r\n return { provide: ARD_TABBER_DEFAULTS, useValue: { ..._tabberDefaults, ...config } };\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { Subject } from 'rxjs';\r\nimport { ARD_TABBER_DEFAULTS } from '../tabber.defaults';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-tab',\r\n templateUrl: './tab.component.html',\r\n styleUrl: './tab.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n role: 'tabpanel',\r\n '[class.ard-tab-disabled]': 'disabled()',\r\n '[class.ard-tab-selected]': 'selected()',\r\n },\r\n})\r\nexport class ArdiumTabComponent implements OnDestroy {\r\n protected readonly _DEFAULTS = inject(ARD_TABBER_DEFAULTS);\r\n\r\n readonly disabled = input<boolean, BooleanLike>(this._DEFAULTS.tabDisabled, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly pointerEventsWhenDisabled = input<boolean, BooleanLike>(this._DEFAULTS.tabPointerEventsWhenDisabled, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n readonly tabTitle = input<string>('');\r\n\r\n readonly selected = signal<boolean>(false);\r\n @Input('selected')\r\n set _selected(v: any) {\r\n this.selected.set(coerceBooleanProperty(v));\r\n }\r\n\r\n setSelected(state: boolean): void {\r\n this.selected.set(state);\r\n this._emitChange();\r\n }\r\n\r\n private _emitChange(): void {\r\n this.selectedChangeInternal$.next(this.selected());\r\n }\r\n\r\n readonly focused = signal<boolean>(false);\r\n\r\n readonly _label = input<string | TemplateRef<any> | null>(null, { alias: 'label' });\r\n readonly label = computed(() => this._label() ?? this.tabId());\r\n\r\n _isTabIdInitialized = false;\r\n readonly tabId = input.required<string, string>({\r\n transform: v => {\r\n this._isTabIdInitialized = true;\r\n return v;\r\n },\r\n });\r\n\r\n readonly focusEvent = output<void>({ alias: 'focus' });\r\n readonly blurEvent = output<void>({ alias: 'blur' });\r\n readonly selectedChange = output<boolean>();\r\n\r\n readonly selectedChangeInternal$ = new Subject<boolean>();\r\n\r\n private _selectedChangeSub = this.selectedChangeInternal$.subscribe(this.selectedChange.emit);\r\n ngOnDestroy(): void {\r\n this._selectedChangeSub.unsubscribe();\r\n this.selectedChangeInternal$.complete();\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { TabberLabelContext } from './tabber.types';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'ng-template[ard-tabber-label-tmp]',\r\n})\r\nexport class ArdTabberLabelTemplateDirective {\r\n constructor(public template: TemplateRef<TabberLabelContext>) {}\r\n}\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n OnChanges,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n contentChildren,\r\n inject,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { OneAxisAlignment } from '../types/alignment.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdiumTabComponent } from './tab/tab.component';\r\nimport { ARD_TABBER_DEFAULTS } from './tabber.defaults';\r\nimport { ArdTabberLabelTemplateDirective } from './tabber.directives';\r\nimport { TabberLabelContext } from './tabber.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-tabber',\r\n templateUrl: './tabber.component.html',\r\n styleUrl: './tabber.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTabberComponent implements AfterContentInit, OnChanges {\r\n protected readonly _DEFAULTS = inject(ARD_TABBER_DEFAULTS);\r\n\r\n public readonly tabs = contentChildren(ArdiumTabComponent, { descendants: true });\r\n\r\n readonly selectedTabId = model<string | null>(null, { alias: 'selectedTab' });\r\n\r\n readonly selectedTab = computed<ArdiumTabComponent | null>(\r\n () => this.tabs().find(tab => tab.tabId() === this.selectedTabId()) ?? null\r\n );\r\n\r\n readonly focusedTabId = signal<string | null>(null);\r\n\r\n readonly focusedTab = computed<ArdiumTabComponent | null>(\r\n () => this.tabs().find(tab => tab.tabId() === this.focusedTabId()) ?? null\r\n );\r\n\r\n private _selectedTabIdToCheck: string | null = null;\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['selectedTabId']) {\r\n // make sure the tab exists\r\n const newTabId = changes['selectedTabId'].currentValue;\r\n if (this.tabs().some(tab => !tab._isTabIdInitialized)) {\r\n this._selectedTabIdToCheck = newTabId;\r\n } else {\r\n const oldTabId = changes['selectedTabId'].previousValue;\r\n this._validateSelectedTabId(newTabId, oldTabId);\r\n }\r\n }\r\n }\r\n\r\n private _validateSelectedTabId(newTabId: string | null, oldTabId: string | null): void {\r\n if (newTabId !== null) {\r\n const newTab = this.tabs().find(tab => tab._isTabIdInitialized && tab.tabId() === newTabId);\r\n if (!newTab) {\r\n // tabs are initialized but the tab does not exist, show error\r\n console.error(`ARD-NF6000: Trying to select a tab with id '${newTabId}' that does not exist.`);\r\n return;\r\n }\r\n // tab exists, select it and unselect the old one\r\n if (oldTabId !== null) {\r\n const oldTab = this.tabs().find(tab => tab._isTabIdInitialized && tab.tabId() === oldTabId);\r\n if (oldTab) this._unselectSpecificTab(oldTab);\r\n }\r\n this._selectNewTab(newTab);\r\n }\r\n }\r\n\r\n readonly initialTab = input<string | undefined>(undefined);\r\n\r\n ngAfterContentInit(): void {\r\n let selectedCmp: ArdiumTabComponent | null = null;\r\n for (const cmp of this.tabs()) {\r\n if (cmp.selected()) {\r\n // ensure only one tab is selected\r\n if (selectedCmp) {\r\n cmp.selected.set(false);\r\n }\r\n\r\n selectedCmp = cmp;\r\n }\r\n\r\n // subscribe to events\r\n cmp.focusEvent.subscribe(() => {\r\n this.focusEvent.emit(cmp.tabId());\r\n });\r\n cmp.blurEvent.subscribe(() => {\r\n this.blurEvent.emit(cmp.tabId());\r\n });\r\n cmp.selectedChangeInternal$.subscribe(isSelected => {\r\n if (!isSelected) {\r\n this.selectedTabId.set(null);\r\n return;\r\n }\r\n this.selectTab(cmp);\r\n });\r\n }\r\n\r\n // if there was a pending selectedTabId to check, do it now\r\n if (this._selectedTabIdToCheck !== null) {\r\n this._validateSelectedTabId(this._selectedTabIdToCheck, null);\r\n this._selectedTabIdToCheck = null;\r\n }\r\n // if no tab is selected, select the initial tab or the first tab\r\n if (!selectedCmp) {\r\n const initiallySelectedTab = this.tabs().find(tab => tab.tabId() === this.initialTab());\r\n selectedCmp = initiallySelectedTab ?? this.tabs()[0] ?? null;\r\n\r\n if (selectedCmp) {\r\n selectedCmp.selected.set(true);\r\n }\r\n }\r\n\r\n this.selectedTabId.set(selectedCmp.tabId());\r\n }\r\n\r\n selectTab(tab: ArdiumTabComponent): void {\r\n if (tab.tabId() === this.selectedTabId() || tab.disabled()) {\r\n return;\r\n }\r\n this._unselectCurrentTab(tab);\r\n this.selectedTabId.set(tab.tabId());\r\n this._selectNewTab(tab);\r\n }\r\n private _unselectSpecificTab(tab: ArdiumTabComponent): void {\r\n tab.selected.set(false);\r\n tab.selectedChange.emit(false);\r\n }\r\n private _unselectCurrentTab(referenceTab?: ArdiumTabComponent): void {\r\n const curr = this.selectedTab();\r\n if (curr && (!referenceTab || curr.tabId() !== referenceTab.tabId())) {\r\n this._unselectSpecificTab(curr);\r\n }\r\n }\r\n private _selectNewTab(tab: ArdiumTabComponent): void {\r\n tab.selected.set(true);\r\n tab.selectedChange.emit(true);\r\n }\r\n onTabFocus(tab: ArdiumTabComponent): void {\r\n tab.focusEvent.emit();\r\n tab.focused.set(true);\r\n\r\n this.focusedTabId.set(tab.tabId());\r\n }\r\n onTabBlur(tab: ArdiumTabComponent): void {\r\n tab.blurEvent.emit();\r\n tab.focused.set(false);\r\n\r\n this.focusedTabId.set(null);\r\n }\r\n\r\n readonly focusEvent = output<string>({ alias: 'focus' });\r\n readonly blurEvent = output<string>({ alias: 'blur' });\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(this._DEFAULTS.color);\r\n\r\n readonly ngClasses = computed(() => [`ard-color-${this.color()}`].join(' '));\r\n\r\n //! tab container settings\r\n readonly stretchTabs = input<boolean, BooleanLike>(this._DEFAULTS.stretchTabs, { transform: v => coerceBooleanProperty(v) });\r\n readonly uniformTabWidths = input<boolean, BooleanLike>(this._DEFAULTS.uniformTabWidths, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n readonly tabAlignment = input<OneAxisAlignment>(this._DEFAULTS.tabAlignment);\r\n\r\n readonly tabContainerClasses = computed(() =>\r\n [\r\n this.uniformTabWidths() && !this.stretchTabs() ? 'ard-uniform-tab-widths' : '',\r\n this.stretchTabs() ? 'ard-stretch-tabs' : '',\r\n this.stretchTabs() ? '' : `ard-tab-align-${this.tabAlignment()}`,\r\n ].join(' ')\r\n );\r\n\r\n //! other\r\n readonly tabIndex = input<number | string>(0);\r\n\r\n //! tab label template\r\n readonly labelTemplate = contentChild(ArdTabberLabelTemplateDirective);\r\n\r\n readonly tabsWithTemplates = computed(() =>\r\n this.tabs().map(tab => ({\r\n tab,\r\n template: typeof tab.label() === 'string' ? null : (tab.label() as TemplateRef<any>),\r\n templateContext:\r\n typeof tab.label() === 'string'\r\n ? ({ $implicit: tab.label(), tabId: tab.tabId(), label: tab.label() } as TabberLabelContext)\r\n : null,\r\n }))\r\n );\r\n}\r\n","<div\r\n class=\"ard-tabber\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div\r\n class=\"ard-tabber-tabs\"\r\n [ngClass]=\"tabContainerClasses()\"\r\n [style]=\"{ '--ard-_tabber-tabs': tabs().length }\"\r\n >\r\n @for (tabObj of tabsWithTemplates(); track tabObj) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n role=\"tab\"\r\n class=\"ard-tab-button\"\r\n [id]=\"tabObj.tab.tabId()\"\r\n [class.ard-tab-disabled]=\"tabObj.tab.disabled()\"\r\n [class.ard-tab-with-pointer-events-when-disabled]=\"tabObj.tab.pointerEventsWhenDisabled()\"\r\n [class.ard-tab-active]=\"tabObj.tab.tabId() === selectedTabId()\"\r\n [class.ard-tab-focused]=\"tabObj.tab.tabId() === focusedTabId()\"\r\n [title]=\"tabObj.tab.tabTitle()\"\r\n (click)=\"selectTab(tabObj.tab)\"\r\n (focus)=\"onTabFocus(tabObj.tab)\"\r\n (blur)=\"onTabBlur(tabObj.tab)\"\r\n [tabindex]=\"tabObj.tab.disabled() ? -1 : tabIndex()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-template\r\n #defaultLabelTemplate\r\n let-label\r\n >\r\n {{ label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tabObj.template ?? labelTemplate()?.template ?? defaultLabelTemplate\"\r\n [ngTemplateOutletContext]=\"tabObj.templateContext\"\r\n />\r\n </div>\r\n </button>\r\n }\r\n </div>\r\n <div\r\n role=\"tabpanel\"\r\n class=\"ard-tabber-content\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumTabComponent } from './tab/tab.component';\r\nimport { ArdiumTabberComponent } from './tabber.component';\r\nimport { ArdTabberLabelTemplateDirective } from './tabber.directives';\r\n\r\n@NgModule({\r\n declarations: [ArdiumTabberComponent, ArdiumTabComponent, ArdTabberLabelTemplateDirective],\r\n imports: [CommonModule],\r\n exports: [ArdiumTabberComponent, ArdiumTabComponent, ArdTabberLabelTemplateDirective],\r\n})\r\nexport class ArdiumTabberModule {}\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\r\nimport { PanelAppearance, PanelVariant } from './../types/theming.types';\r\nimport { ArdModalCloseIcon } from './modal.types';\r\n\r\nexport interface ArdModalDefaults {\r\n appearance: PanelAppearance;\r\n variant: PanelVariant;\r\n compact: boolean;\r\n heading: string;\r\n noCloseButton: boolean;\r\n noBackdrop: boolean;\r\n disableBackdropClose: boolean;\r\n panelClass: string;\r\n backdropClass: string;\r\n CloseIconComponent?: Type<ArdModalCloseIcon>;\r\n}\r\n\r\nexport const _modalDefaults: ArdModalDefaults = {\r\n appearance: PanelAppearance.Raised,\r\n variant: PanelVariant.Rounded,\r\n compact: false,\r\n heading: '',\r\n noCloseButton: false,\r\n noBackdrop: false,\r\n disableBackdropClose: false,\r\n panelClass: '',\r\n backdropClass: '',\r\n CloseIconComponent: undefined,\r\n};\r\n\r\nexport const ARD_MODAL_DEFAULTS = new InjectionToken<ArdModalDefaults>('ard-modal-defaults', {\r\n factory: () => ({\r\n ..._modalDefaults,\r\n }),\r\n});\r\n\r\nexport function provideModalDefaults(config: Partial<ArdModalDefaults>): Provider {\r\n return { provide: ARD_MODAL_DEFAULTS, useValue: { ..._modalDefaults, ...config } };\r\n}\r\n","import { ButtonAppearance } from '../buttons/general-button.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\r\nimport { TemplateComponent } from '../types/utility.types';\r\n\r\nexport const ArdDialogResult = {\r\n Confirm: 'confirm',\r\n Reject: 'reject',\r\n Close: 'close',\r\n} as const;\r\nexport type ArdDialogResult = (typeof ArdDialogResult)[keyof typeof ArdDialogResult];\r\n\r\nexport const ArdDialogActionType = {\r\n NoOp: 'no-op',\r\n AutoClose: 'autoclose',\r\n} as const;\r\nexport type ArdDialogActionType = (typeof ArdDialogActionType)[keyof typeof ArdDialogActionType];\r\n\r\nexport interface DialogButtonsContext {\r\n confirmButton: {\r\n text: string;\r\n color: ComponentColor;\r\n appearance: ButtonAppearance;\r\n pointerEventsWhenDisabled: boolean;\r\n };\r\n rejectButton: {\r\n enabled: boolean;\r\n text: string;\r\n color: ComponentColor;\r\n appearance: ButtonAppearance;\r\n };\r\n canConfirm: boolean;\r\n allActionsDisabled: boolean;\r\n onConfirm: () => void;\r\n onReject: () => void;\r\n dialogAppearance: PanelAppearance;\r\n dialogVariant: PanelVariant;\r\n dialogCompact: boolean;\r\n}\r\n\r\nexport interface ArdDialogButtonsComponent extends TemplateComponent<DialogButtonsContext> {}\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\r\nimport { _modalDefaults, ArdModalDefaults } from '../modal/modal.defaults';\r\nimport { ButtonAppearance } from './../buttons/general-button.types';\r\nimport { ComponentColor } from './../types/colors.types';\r\nimport { ArdDialogActionType, ArdDialogButtonsComponent } from './dialog.types';\r\n\r\nexport interface ArdDialogDefaults extends ArdModalDefaults {\r\n confirmButtonText: string;\r\n confirmButtonColor: ComponentColor;\r\n confirmButtonAppearance: ButtonAppearance;\r\n rejectButtonText: string;\r\n rejectButtonColor: ComponentColor;\r\n rejectButtonAppearance: ButtonAppearance;\r\n noRejectButton: boolean;\r\n canConfirm: boolean;\r\n buttonActionType: ArdDialogActionType;\r\n ButtonsComponent?: Type<ArdDialogButtonsComponent>;\r\n}\r\n\r\nconst _dialogDefaults: ArdDialogDefaults = {\r\n ..._modalDefaults,\r\n confirmButtonText: 'Confirm',\r\n confirmButtonColor: ComponentColor.Primary,\r\n confirmButtonAppearance: ButtonAppearance.RaisedStrong,\r\n rejectButtonText: 'Cancel',\r\n rejectButtonColor: ComponentColor.None,\r\n rejectButtonAppearance: ButtonAppearance.Transparent,\r\n noRejectButton: false,\r\n canConfirm: true,\r\n buttonActionType: ArdDialogActionType.AutoClose,\r\n ButtonsComponent: undefined,\r\n};\r\n\r\nexport const ARD_DIALOG_DEFAULTS = new InjectionToken<ArdDialogDefaults>('ard-dialog-defaults', {\r\n factory: () => ({\r\n ..._dialogDefaults,\r\n }),\r\n});\r\n\r\nexport function provideDialogDefaults(config: Partial<ArdDialogDefaults>): Provider {\r\n return { provide: ARD_DIALOG_DEFAULTS, useValue: { ..._dialogDefaults, ...config } };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { DialogButtonsContext } from './dialog.types';\r\n\r\n@Directive({ standalone: false, selector: 'ard-dialog > ng-template[ard-buttons-tmp]' })\r\nexport class ArdDialogButtonsTemplateDirective {\r\n constructor(public template: TemplateRef<DialogButtonsContext>) {}\r\n}\r\n\r\n@Directive({ standalone: false, selector: 'ard-dialog > ng-template[ard-close-icon-tmp]' })\r\nexport class ArdDialogCloseIconTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({ standalone: false, selector: 'ard-modal > ng-template[ard-close-icon-tmp]' })\r\nexport class ArdModalCloseIconTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n","import { Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n TemplateRef,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\r\nimport { ARD_MODAL_DEFAULTS } from './modal.defaults';\r\nimport { ArdModalCloseIconTemplateDirective } from './modal.directives';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-modal',\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumModalComponent {\r\n private readonly overlay = inject(Overlay);\r\n private readonly scrollStrategyOpts = inject(ScrollStrategyOptions);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n\r\n private readonly _DEFAULTS = inject(ARD_MODAL_DEFAULTS);\r\n\r\n //! appearance\r\n readonly appearance = input<PanelAppearance>(this._DEFAULTS.appearance);\r\n readonly variant = input<PanelVariant>(this._DEFAULTS.variant);\r\n\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [`ard-variant-${this.variant()}`, `ard-appearance-${this.appearance()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! heading\r\n readonly heading = input<string>(this._DEFAULTS.heading);\r\n\r\n readonly noCloseButton = input<boolean, BooleanLike>(this._DEFAULTS.noCloseButton, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly panelClass = input<string>(this._DEFAULTS.panelClass);\r\n readonly backdropClass = input<string>(this._DEFAULTS.backdropClass);\r\n\r\n //! options\r\n readonly noBackdrop = input<boolean, BooleanLike>(this._DEFAULTS.noBackdrop, { transform: v => coerceBooleanProperty(v) });\r\n readonly disableBackdropClose = input<boolean, BooleanLike>(this._DEFAULTS.disableBackdropClose, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n readonly allActionsDisabled = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! open state handling\r\n private readonly open = signal<boolean>(false);\r\n @Input({ alias: 'open' })\r\n set _open(v: any) {\r\n this.open.set(coerceBooleanProperty(v));\r\n if (this.open()) this._openOverlay();\r\n else this._destroyOverlay();\r\n }\r\n\r\n openProgrammatically() {\r\n this.open.set(true);\r\n }\r\n closeProgrammatically() {\r\n this.open.set(false);\r\n }\r\n\r\n readonly openChange = output<boolean>();\r\n readonly closeEvent = output<void>({ alias: 'close' });\r\n\r\n //! overlay handling\r\n readonly modalTemplate = viewChild('modalTemplate', { read: TemplateRef });\r\n\r\n private _modalOverlay?: OverlayRef;\r\n\r\n private _openOverlay(): void {\r\n const strategy = this.overlay.position().global();\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n scrollStrategy: this.scrollStrategyOpts.block(),\r\n hasBackdrop: false,\r\n });\r\n\r\n this._modalOverlay = this.overlay.create(config);\r\n\r\n const portal = new TemplatePortal(this.modalTemplate()!, this.viewContainerRef);\r\n this._modalOverlay.attach(portal);\r\n }\r\n private _destroyOverlay(): void {\r\n if (!this._modalOverlay) return;\r\n\r\n this.openChange.emit(false);\r\n this.closeEvent.emit();\r\n this._modalOverlay.dispose();\r\n delete this._modalOverlay;\r\n }\r\n\r\n //! events\r\n onBackdropClick(): void {\r\n if (this.disableBackdropClose() || this.allActionsDisabled()) return;\r\n this._destroyOverlay();\r\n }\r\n onCloseButtonClick(): void {\r\n if (this.allActionsDisabled()) return;\r\n this._destroyOverlay();\r\n }\r\n\r\n //! templates\r\n readonly closeIconTemplate = contentChild(ArdModalCloseIconTemplateDirective);\r\n\r\n readonly _closeIconTemplate = input<ArdModalCloseIconTemplateDirective | undefined>(undefined);\r\n readonly closeIconComponent = this._DEFAULTS.CloseIconComponent;\r\n}\r\n","<ng-template #modalTemplate>\r\n @if (noBackdrop()) {\r\n <div\r\n class=\"ard-modal\"\r\n [ngClass]=\"[ngClasses(), backdropClass()]\"\r\n (click)=\"onBackdropClick()\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"_modalInsidePanel\"></ng-template>\r\n </div>\r\n } @else {\r\n <div\r\n class=\"ard-modal ard-modal-backdrop\"\r\n [ngClass]=\"[ngClasses(), backdropClass()]\"\r\n (click)=\"onBackdropClick()\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"_modalInsidePanel\"></ng-template>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #_modalInsidePanel>\r\n <div\r\n class=\"ard-modal-panel\"\r\n [ngClass]=\"panelClass()\"\r\n cdkTrapFocus\r\n [class.ard-modal-no-heading-text]=\"!heading()\"\r\n [class.ard-modal-has-close-button]=\"!noCloseButton()\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <div class=\"ard-modal-heading\">\r\n <div class=\"ard-modal-heading-text\">{{ heading() || (noCloseButton() ? '' : ' ') }}</div>\r\n @if (!noCloseButton()) {\r\n <ard-icon-button\r\n class=\"ard-modal-close-button\"\r\n color=\"none\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"allActionsDisabled()\"\r\n (click)=\"onCloseButtonClick()\"\r\n >\r\n @if (closeIconComponent && !closeIconTemplate()) {\r\n <!-- render the component -->\r\n <ng-template [ngComponentOutlet]=\"closeIconComponent\" />\r\n } @else {\r\n <ng-template #defaultCloseIconTemplate>\r\n <ard-icon>close</ard-icon>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"closeIconTemplate()?.template ?? _closeIconTemplate()?.template ?? defaultCloseIconTemplate\"\r\n />\r\n }\r\n </ard-icon-button>\r\n }\r\n </div>\r\n <div class=\"ard-modal-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n inject,\r\n input,\r\n model,\r\n output,\r\n} from '@angular/core';\r\nimport { BooleanLike, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { contextToInputs } from '../_internal/utils/context-to-inputs';\r\nimport { ButtonAppearance } from '../buttons/general-button.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\r\nimport { ARD_DIALOG_DEFAULTS } from './dialog.defaults';\r\nimport { ArdDialogButtonsTemplateDirective, ArdDialogCloseIconTemplateDirective } from './dialog.directives';\r\nimport { ArdDialogActionType, ArdDialogResult, DialogButtonsContext } from './dialog.types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'ard-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrl: './dialog.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumDialogComponent {\r\n private readonly _DEFAULTS = inject(ARD_DIALOG_DEFAULTS);\r\n\r\n //! appearance\r\n //all handled by modal component\r\n readonly appearance = input<PanelAppearance>(this._DEFAULTS.appearance);\r\n readonly variant = input<PanelVariant>(this._DEFAULTS.variant);\r\n\r\n readonly compact = input<boolean, BooleanLike>(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! heading\r\n //all handled by modal component\r\n readonly heading = input<string>(this._DEFAULTS.heading);\r\n\r\n readonly noCloseButton = input<boolean, BooleanLike>(this._DEFAULTS.noCloseButton, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n readonly panelClass = input<string>(this._DEFAULTS.panelClass);\r\n readonly backdropClass = input<string>(this._DEFAULTS.backdropClass);\r\n\r\n //! options\r\n //all handled by modal component\r\n readonly noBackdrop = input<boolean, BooleanLike>(this._DEFAULTS.noBackdrop, { transform: v => coerceBooleanProperty(v) });\r\n readonly disableBackdropClose = input<boolean, BooleanLike>(this._DEFAULTS.disableBackdropClose, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n\r\n readonly buttonActionType = input<ArdDialogActionType>(this._DEFAULTS.buttonActionType);\r\n\r\n readonly allActionsDisabled = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! open state handling\r\n //all handled by modal component\r\n readonly open = model<boolean>(false);\r\n\r\n readonly closeEvent = output<ArdDialogResult>({ alias: 'close' });\r\n readonly confirmEvent = output<void>({ alias: 'confirm' });\r\n readonly rejectEvent = output<void>({ alias: 'reject' });\r\n\r\n openProgrammatically() {\r\n this.open.set(true);\r\n }\r\n closeProgrammatically() {\r\n this.open.set(false);\r\n }\r\n\r\n //! button settings\r\n readonly confirmButtonText = input<string>(this._DEFAULTS.confirmButtonText);\r\n readonly confirmButtonColor = input<ComponentColor>(this._DEFAULTS.confirmButtonColor);\r\n readonly confirmButtonAppearance = input<ButtonAppearance>(this._DEFAULTS.confirmButtonAppearance);\r\n readonly confirmButtonPointerEventsWhenDisabled = input<boolean, BooleanLike>(false, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n readonly rejectButtonText = input<string>(this._DEFAULTS.rejectButtonText);\r\n readonly rejectButtonColor = input<ComponentColor>(this._DEFAULTS.rejectButtonColor);\r\n readonly rejectButtonAppearance = input<ButtonAppearance>(this._DEFAULTS.rejectButtonAppearance);\r\n\r\n readonly noRejectButton = input<boolean, BooleanLike>(this._DEFAULTS.noRejectButton, {\r\n transform: v => coerceBooleanProperty(v),\r\n });\r\n readonly canConfirm = input<boolean, BooleanLike>(this._DEFAULTS.canConfirm, { transform: v => coerceBooleanProperty(v) });\r\n\r\n private _isCloseEventTimeoutRunning = false;\r\n onConfirmClick() {\r\n if (!this.canConfirm() || this.allActionsDisabled()) return;\r\n\r\n this._isCloseEventTimeoutRunning = true;\r\n\r\n if (this.buttonActionType() === ArdDialogActionType.AutoClose) {\r\n this.open.set(false);\r\n }\r\n setTimeout(() => {\r\n this._isCloseEventTimeoutRunning = false;\r\n this.confirmEvent.emit();\r\n this.closeEvent.emit('confirm');\r\n }, 0);\r\n }\r\n onRejectClick() {\r\n if (this.allActionsDisabled()) return;\r\n\r\n this._isCloseEventTimeoutRunning = true;\r\n\r\n if (this.buttonActionType() === ArdDialogActionType.AutoClose) {\r\n this.open.set(false);\r\n }\r\n setTimeout(() => {\r\n this._isCloseEventTimeoutRunning = false;\r\n this.rejectEvent.emit();\r\n this.closeEvent.emit('reject');\r\n }, 0);\r\n }\r\n onModalClose() {\r\n if (this._isCloseEventTimeoutRunning) return;\r\n this.closeEvent.emit('close');\r\n }\r\n\r\n //! templates\r\n readonly buttonsTemplate = contentChild(ArdDialogButtonsTemplateDirective);\r\n\r\n readonly closeIconTemplate = contentChild(ArdDialogCloseIconTemplateDirective);\r\n\r\n readonly getButtonsContext = computed<DialogButtonsContext>(() => {\r\n return {\r\n confirmButton: {\r\n text: this.confirmButtonText(),\r\n color: this.confirmButtonColor(),\r\n appearance: this.confirmButtonAppearance(),\r\n pointerEventsWhenDisabled: this.confirmButtonPointerEventsWhenDisabled(),\r\n },\r\n rejectButton: {\r\n enabled: !this.noRejectButton(),\r\n text: this.rejectButtonText(),\r\n color: this.rejectButtonColor(),\r\n appearance: this.rejectButtonAppearance(),\r\n },\r\n canConfirm: this.canConfirm(),\r\n allActionsDisabled: this.allActionsDisabled(),\r\n onConfirm: () => this.onConfirmClick(),\r\n onReject: () => this.onRejectClick(),\r\n dialogAppearance: this.appearance(),\r\n dialogVariant: this.variant(),\r\n dialogCompact: this.compact(),\r\n };\r\n });\r\n\r\n readonly buttonsComponent = this._DEFAULTS.ButtonsComponent;\r\n readonly buttonsComponentInputs = contextToInputs(this.getButtonsContext, this.buttonsComponent);\r\n}\r\n","<ard-modal\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [heading]=\"heading()\"\r\n [noCloseButton]=\"noCloseButton()\"\r\n [panelClass]=\"panelClass()\"\r\n [backdropClass]=\"backdropClass()\"\r\n [noBackdrop]=\"noBackdrop()\"\r\n [disableBackdropClose]=\"disableBackdropClose()\"\r\n [allActionsDisabled]=\"allActionsDisabled()\"\r\n [(open)]=\"open\"\r\n (close)=\"onModalClose()\"\r\n [_closeIconTemplate]=\"closeIconTemplate()\"\r\n>\r\n <div class=\"ard-dialog-container\">\r\n <div class=\"ard-dialog-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"ard-dialog-buttons\">\r\n @if (buttonsComponent && !buttonsTemplate()) {\r\n <ng-template\r\n [ngComponentOutlet]=\"buttonsComponent\"\r\n [ngComponentOutletInputs]=\"buttonsComponentInputs()\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultButtonsTemplate\r\n let-confirmButton=\"confirmButton\"\r\n let-rejectButton=\"rejectButton\"\r\n let-canConfirm=\"canConfirm\"\r\n let-allActionsDisabled=\"allActionsDisabled\"\r\n let-onConfirm=\"onConfirm\"\r\n let-onReject=\"onReject\"\r\n let-dialogVariant=\"dialogVariant\"\r\n let-dialogCompact=\"dialogCompact\"\r\n >\r\n <div class=\"ard-dialog-buttons-container\">\r\n @if (rejectButton.enabled) {\r\n <ard-button\r\n [color]=\"rejectButton.color\"\r\n [appearance]=\"rejectButton.appearance\"\r\n [variant]=\"dialogVariant\"\r\n [compact]=\"dialogCompact\"\r\n [disabled]=\"allActionsDisabled\"\r\n (click)=\"onReject()\"\r\n >\r\n {{ rejectButton.text }}\r\n </ard-button>\r\n }\r\n <ard-button\r\n [color]=\"confirmButton.color\"\r\n [appearance]=\"confirmButton.appearance\"\r\n [variant]=\"dialogVariant\"\r\n [compact]=\"dialogCompact\"\r\n (click)=\"onConfirm()\"\r\n [disabled]=\"!canConfirm || allActionsDisabled\"\r\n [pointerEventsWhenDisabled]=\"confirmButton.pointerEventsWhenDisabled\"\r\n >\r\n {{ confirmButton.text }}\r\n </ard-button>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"buttonsTemplate()?.template ?? defaultButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"getButtonsContext()\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n</ard-modal>\r\n","import { A11yModule } from '@angular/cdk/a11y';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumIconButtonModule } from '../buttons/icon-button/icon-button.module';\r\nimport { ArdiumIconModule } from '../icon/icon.module';\r\nimport { ArdiumModalComponent } from './modal.component';\r\nimport { ArdModalCloseIconTemplateDirective } from './modal.directives';\r\n\r\n@NgModule({\r\n declarations: [ArdiumModalComponent, ArdModalCloseIconTemplateDirective],\r\n imports: [CommonModule, ArdiumIconButtonModule, ArdiumIconModule, A11yModule],\r\n exports: [ArdiumModalComponent, ArdModalCloseIconTemplateDirective],\r\n})\r\nexport class ArdiumModalModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumButtonModule } from '../buttons/button/button.module';\r\nimport { ArdiumModalModule } from '../modal/modal.module';\r\nimport { ArdiumDialogComponent } from './dialog.component';\r\nimport { ArdDialogButtonsTemplateDirective, ArdDialogCloseIconTemplateDirective } from './dialog.directives';\r\n\r\n@NgModule({\r\n declarations: [ArdiumDialogComponent, ArdDialogButtonsTemplateDirective, ArdDialogCloseIconTemplateDirective],\r\n imports: [CommonModule, ArdiumButtonModule, ArdiumModalModule],\r\n exports: [ArdiumDialogComponent, ArdDialogButtonsTemplateDirective, ArdDialogCloseIconTemplateDirective],\r\n})\r\nexport class ArdiumDialogModule {}\r\n","interface IQueue {\r\n readonly length: number;\r\n}\r\n\r\nexport class Queue<T = unknown> implements IQueue {\r\n private head?: QueueItem<T>;\r\n private tail?: QueueItem<T>;\r\n\r\n push(item: T): void {\r\n if (!this.tail) return this.pushFront(item);\r\n this.tail!.next = new QueueItem(item);\r\n this.tail = this.tail!.next!;\r\n }\r\n pushFront(item: T): void {\r\n this.head = new QueueItem(item, this.head);\r\n if (!this.tail) this.tail = this.head;\r\n }\r\n pop(): T | undefined {\r\n const head = this.head;\r\n if (!head) return;\r\n //replace head with the next item\r\n this.head = head.next;\r\n //delete the tail if there are no next items\r\n if (!this.head) this.tail = undefined;\r\n\r\n return head.value;\r\n }\r\n peek(): T | undefined {\r\n return this.head?.value;\r\n }\r\n clear(): void {\r\n this.head = undefined;\r\n this.tail = undefined;\r\n }\r\n get length(): number {\r\n let length = 0;\r\n let currentNode = this.head;\r\n while (currentNode) {\r\n length++;\r\n currentNode = currentNode.next;\r\n }\r\n return length;\r\n }\r\n isEmpty(): boolean {\r\n return !this.head;\r\n }\r\n toArray(): T[] {\r\n const array: T[] = [];\r\n let currentNode = this.head;\r\n while (currentNode) {\r\n array.push(currentNode.value);\r\n currentNode = currentNode.next;\r\n }\r\n return array;\r\n }\r\n}\r\n\r\nexport class QueueItem<T> {\r\n constructor(\r\n public value: T,\r\n public next?: QueueItem<T>\r\n ) {}\r\n}\r\n","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentType } from '@angular/cdk/portal';\r\nimport { InjectionToken } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdSnackbarData, ArdSnackbarOptions, ArdSnackbarType } from './snackbar.types';\r\n\r\nexport const ARD_SNACKBAR_DATA = new InjectionToken<ArdSnackbarData>('ArdSnackbarData');\r\nexport const ARD_SNACKBAR_COLOR = new InjectionToken<ComponentColor>('ArdSnackbarColor');\r\nexport const ARD_SNACKBAR_TYPE = new InjectionToken<ArdSnackbarType>('ArdSnackbarType');\r\n\r\nexport class _ArdSnackbarRefInternal<T> {\r\n constructor(\r\n public component: ComponentType<T>,\r\n public options: Required<ArdSnackbarOptions>,\r\n dismiss: (withAction?: boolean) => void\r\n ) {\r\n this.publicRef = new ArdSnackbarRef(dismiss, this._onOpen, this._onCloseStart);\r\n }\r\n\r\n readonly publicRef!: ArdSnackbarRef<T>;\r\n\r\n timeout!: any;\r\n overlay!: OverlayRef;\r\n\r\n private readonly _onOpen = new Subject<void>();\r\n private readonly _onCloseStart = new BehaviorSubject<boolean>(false);\r\n\r\n markAsOpened() {\r\n this._onOpen.next();\r\n this._onOpen.complete();\r\n }\r\n markAsStartingToClose(withAction = false) {\r\n this._onCloseStart.next(withAction);\r\n this._onCloseStart.complete();\r\n }\r\n}\r\n\r\n/**\r\n * Reference to an opened snackbar.\r\n * Provides methods for closing the snackbar programmatically, and observables for subscribing to open, close, and action events.\r\n */\r\nexport class ArdSnackbarRef<T = unknown> {\r\n constructor(\r\n private readonly dismiss: (withAction?: boolean) => void,\r\n private readonly _onOpen: Subject<void>,\r\n private readonly _onCloseStart: BehaviorSubject<boolean>\r\n ) {}\r\n\r\n private readonly _onClose = new Subject<boolean>();\r\n private readonly _onAction = new Subject<void>();\r\n\r\n /**\r\n * Observable that emits when the snackbar is opened. Completes after emitting the first value.\r\n */\r\n public readonly onOpen = this._onOpen.asObservable();\r\n /**\r\n * Observable that emits when the snackbar is closed and all animations have finished. Emits a boolean value indicating whether the snackbar was closed as a result of the user clicking the action button (true) or not (false). Completes after emitting the first value.\r\n */\r\n public readonly onClose = this._onClose.asObservable();\r\n /**\r\n * Observable that emits when the snackbar action is triggered, before the snackbar starts closing. Completes when the snackbar is closed, regardless of whether any value was emitted.\r\n */\r\n public readonly onAction = this._onAction.asObservable();\r\n /**\r\n * Observable that emits when the snackbar starts the closing process. Emits a boolean value indicating whether the closing was triggered by the user clicking the action button (true) or not (false). Completes after emitting the first value.\r\n */\r\n public readonly onCloseStart = this._onCloseStart.asObservable();\r\n\r\n /**\r\n * The instance of the component rendered inside the snackbar.\r\n */\r\n public readonly instance!: T;\r\n\r\n /**\r\n * Closes the snackbar, optionally indicating that the action was triggered.\r\n * @param withAction A boolean value indicating whether the snackbar is being closed as a result of the user clicking the action button (true) or not (false).\r\n */\r\n close(withAction = false): void {\r\n if (this.isClosed) return;\r\n this.dismiss(withAction);\r\n if (withAction) {\r\n this._onAction.next();\r\n }\r\n this._onAction.complete();\r\n }\r\n\r\n /**\r\n * Marks the snackbar as closed after the closing animation has finished.\r\n * @param withAction\r\n * @returns\r\n */\r\n markAsClosed(withAction = false): void {\r\n if (this.isClosed) return;\r\n this._onClose.next(withAction);\r\n this._onClose.complete();\r\n this._isClosed = true;\r\n }\r\n\r\n private _isClosed = false;\r\n /**\r\n * Indicates whether the snackbar has been closed and the closing animation has finished.\r\n */\r\n public get isClosed(): boolean {\r\n return this._isClosed;\r\n }\r\n}\r\n","import { ElementRef } from '@angular/core';\r\nimport { ComponentColor } from '../types/colors.types';\r\n\r\nexport const ArdSnackbarAlignment = {\r\n TopLeft: 'top-left',\r\n TopCenter: 'top-center',\r\n TopRight: 'top-right',\r\n BottomLeft: 'bottom-left',\r\n BottomCenter: 'bottom-center',\r\n BottomRight: 'bottom-right',\r\n} as const;\r\nexport type ArdSnackbarAlignment = (typeof ArdSnackbarAlignment)[keyof typeof ArdSnackbarAlignment];\r\n\r\nexport const ArdSnackbarOriginRelation = {\r\n Inside: 'inside',\r\n Outside: 'outside',\r\n} as const;\r\nexport type ArdSnackbarOriginRelation = (typeof ArdSnackbarOriginRelation)[keyof typeof ArdSnackbarOriginRelation];\r\n\r\nexport const ArdSnackbarQueueHandling = {\r\n Default: 'default',\r\n Skip: 'skip',\r\n Overwrite: 'overwrite',\r\n} as const;\r\nexport type ArdSnackbarQueueHandling = (typeof ArdSnackbarQueueHandling)[keyof typeof ArdSnackbarQueueHandling];\r\n\r\nexport type ArdSnackbarOrigin<T = any> = HTMLElement | ElementRef<T>;\r\n\r\nexport const ArdSnackbarType = {\r\n None: 'none',\r\n Danger: 'danger',\r\n Warning: 'warn',\r\n Success: 'success',\r\n Info: 'info',\r\n} as const;\r\nexport type ArdSnackbarType = (typeof ArdSnackbarType)[keyof typeof ArdSnackbarType];\r\n\r\nexport interface ArdSnackbarData {\r\n message: string;\r\n action?: string;\r\n}\r\n\r\n/**\r\n * Options for configuring the behavior and appearance of a snackbar.\r\n */\r\nexport interface ArdSnackbarOptions {\r\n /**\r\n * Message and action text data to be passed to the snackbar component\r\n */\r\n data?: ArdSnackbarData;\r\n /**\r\n * Placement options for the snackbar. If not provided, the snackbar will be centered at the bottom of the screen.\r\n */\r\n placement?: {\r\n /**\r\n * The alignment of the snackbar in relation to the origin element. If not provided, it will default to 'bottom-center'.\r\n */\r\n align?: ArdSnackbarAlignment;\r\n /**\r\n * The origin element to which the snackbar is attached. If not provided, it will default to 'document.body'.\r\n */\r\n origin?: ArdSnackbarOrigin;\r\n /**\r\n * The relation of the snackbar to the origin element. If not provided, it will default to 'outside'.\r\n */\r\n originRelation?: ArdSnackbarOriginRelation;\r\n };\r\n /**\r\n * Duration in milliseconds for which the snackbar should be visible. If not provided, it will default to 3000ms. Set to `Infinity` for a persistent snackbar that must be dismissed manually.\r\n */\r\n duration?: number;\r\n /**\r\n * Color of the snackbar. This will apply a corresponding color class to the snackbar element, which can be used to style the snackbar based on the chosen color. If not provided, it will default to 'primary'.\r\n */\r\n color?: ComponentColor;\r\n /**\r\n * Type of the snackbar, which can be used to apply specific styles or icons based on the type. If not provided, it will default to 'none'.\r\n */\r\n type?: ArdSnackbarType;\r\n /**\r\n * Defines how the snackbar should behave when there are multiple snackbars in the queue. If not provided, it will default to 'default'.\r\n * - 'default': New snackbars will be added to the end of the queue and displayed after the currently opened snackbar is dismissed.\r\n * - 'skip': The new snackbar will be added to the start of the queue and displayed after the current snackbar is dismissed.\r\n * - 'overwrite': If there is already an opened snackbar, it will be immediately dismissed and replaced with the new snackbar.\r\n */\r\n queueHandling?: ArdSnackbarQueueHandling;\r\n /**\r\n * Additional CSS class or classes to apply to the snackbar panel.\r\n */\r\n panelClass?: string | string[];\r\n}\r\n","import { AsyncPipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\r\nimport { isDefined } from 'simple-bool';\r\nimport { ArdiumButtonModule } from '../buttons/button/button.module';\r\nimport { ArdiumIconModule } from '../icon/icon.module';\r\nimport { ARD_SNACKBAR_COLOR, ARD_SNACKBAR_DATA, ARD_SNACKBAR_TYPE, ArdSnackbarRef } from './snackbar-ref';\r\nimport { ArdSnackbarType } from './snackbar.types';\r\n\r\n@Component({\r\n selector: 'ard-simple-snackbar',\r\n templateUrl: './snackbar.component.html',\r\n styles: `\r\n ard-simple-snackbar {\r\n display: block;\r\n }\r\n `,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [ArdiumButtonModule, AsyncPipe, ArdiumIconModule],\r\n standalone: true,\r\n})\r\nexport class _ArdSimpleSnackbarComponent {\r\n public readonly snackbarRef = inject(ArdSnackbarRef);\r\n public readonly data = inject(ARD_SNACKBAR_DATA);\r\n public readonly color = inject(ARD_SNACKBAR_COLOR);\r\n public readonly type = inject(ARD_SNACKBAR_TYPE);\r\n\r\n public readonly typeIcon = this._getTypeIcon();\r\n\r\n closeWithAction(): void {\r\n this.snackbarRef.close(true);\r\n }\r\n\r\n get hasAction(): boolean {\r\n return isDefined(this.data.action);\r\n }\r\n\r\n private _getTypeIcon(): string | null {\r\n switch (this.type) {\r\n case ArdSnackbarType.Danger:\r\n return 'error';\r\n case ArdSnackbarType.Warning:\r\n return 'warning';\r\n case ArdSnackbarType.Success:\r\n return 'check_circle';\r\n case ArdSnackbarType.Info:\r\n return 'info';\r\n }\r\n return null;\r\n }\r\n\r\n get colorClass(): string {\r\n return `ard-color-${this.color}`;\r\n }\r\n}\r\n","<div\r\n class=\"ard-snackbar\"\r\n [class.ard-snackbar-closing]=\"snackbarRef.onCloseStart | async\"\r\n [class]=\"colorClass\"\r\n>\r\n <div class=\"ard-snackbar-content\">\r\n @if (typeIcon) {\r\n <ard-icon filled>{{ typeIcon }}</ard-icon>\r\n }\r\n <div class=\"ard-snackbar-message\">{{ data.message }}</div>\r\n </div>\r\n @if (data.action) {\r\n <ard-button\r\n class=\"ard-snackbar-action\"\r\n appearance=\"transparent\"\r\n lightColoring\r\n [color]=\"color\"\r\n (click)=\"closeWithAction()\"\r\n >{{ data.action }}</ard-button\r\n >\r\n }\r\n</div>\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { ComponentColor } from './../types/colors.types';\r\nimport {\r\n ArdSnackbarAlignment,\r\n ArdSnackbarOptions,\r\n ArdSnackbarOriginRelation,\r\n ArdSnackbarQueueHandling,\r\n ArdSnackbarType,\r\n} from './snackbar.types';\r\n\r\nconst _snackbarDefaults: Required<ArdSnackbarOptions> = {\r\n placement: {\r\n align: ArdSnackbarAlignment.BottomCenter,\r\n origin: document.body,\r\n originRelation: ArdSnackbarOriginRelation.Inside,\r\n },\r\n duration: 5000,\r\n queueHandling: ArdSnackbarQueueHandling.Default,\r\n panelClass: [],\r\n data: { message: '' },\r\n color: ComponentColor.Primary,\r\n type: ArdSnackbarType.None,\r\n};\r\n\r\nexport const ARD_SNACKBAR_DEFAULTS = new InjectionToken<Required<ArdSnackbarOptions>>('ard-snackbar-defaults', {\r\n factory: () => ({ ..._snackbarDefaults }),\r\n});\r\n\r\nexport function provideSnackbarDefaults(config: Partial<ArdSnackbarOptions>): Provider {\r\n return { provide: ARD_SNACKBAR_DEFAULTS, useValue: { ..._snackbarDefaults, ...config } };\r\n}\r\n\r\nexport const ARD_SNACKBAR_ANIMATION_LENGTH = new InjectionToken<number>('ard-snackbar-animation-length', {\r\n factory: () => 150,\r\n});\r\n","import { ComponentType, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Injectable, Injector, OnDestroy, inject } from '@angular/core';\r\nimport { isArray, isDefined } from 'simple-bool';\r\nimport { Queue } from '../_internal/models/queue';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport {\r\n ARD_SNACKBAR_COLOR,\r\n ARD_SNACKBAR_DATA,\r\n ARD_SNACKBAR_TYPE,\r\n ArdSnackbarRef,\r\n _ArdSnackbarRefInternal,\r\n} from './snackbar-ref';\r\nimport { _ArdSimpleSnackbarComponent } from './snackbar.component';\r\nimport { ARD_SNACKBAR_ANIMATION_LENGTH, ARD_SNACKBAR_DEFAULTS } from './snackbar.token';\r\nimport { ArdSnackbarOptions, ArdSnackbarOriginRelation, ArdSnackbarQueueHandling, ArdSnackbarType } from './snackbar.types';\r\n\r\nconst TIMEOUT_LIMIT = 2_147_483_647; //maximum duration for setTimeout in browsers\r\n\r\n/**\r\n * Service for opening snackbars. Provides methods for opening snackbars with either a simple message and action, or with a custom component. Manages a queue of snackbars to be displayed, and handles the display and dismissal of snackbars according to the specified options. Also provides methods for retrieving and clearing the snackbar queue.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ArdiumSnackbarService implements OnDestroy {\r\n private readonly _snackbarQueue = new Queue<_ArdSnackbarRefInternal<unknown>>();\r\n private _openedSnackbar?: _ArdSnackbarRefInternal<unknown>;\r\n\r\n private readonly _DEFAULTS = inject(ARD_SNACKBAR_DEFAULTS);\r\n private readonly _animationLength = inject(ARD_SNACKBAR_ANIMATION_LENGTH);\r\n private readonly _overlay = inject(Overlay);\r\n private readonly _injector = inject(Injector);\r\n\r\n //! public methods for creating new snackbars\r\n /**\r\n * Opens a snackbar with the given message, action and options.\r\n * @param message The message to display in the snackbar.\r\n * @param action The label for the snackbar action. If provided, the snackbar will have an action button with this label.\r\n * When the action button is clicked, the snackbar will emit a close event with `withAction` set to `true`.\r\n * @param options Additional options for configuring the snackbar.\r\n * @returns A reference to the opened snackbar.\r\n */\r\n open(message: string, action?: string, options: ArdSnackbarOptions = {}): ArdSnackbarRef<_ArdSimpleSnackbarComponent> {\r\n options.data = {\r\n message,\r\n action: action ?? options.data?.action,\r\n };\r\n const mergedOptions = this._mergeOptions(options);\r\n\r\n if (typeof mergedOptions.data === 'object' && !isArray(mergedOptions.data)) {\r\n mergedOptions.data.message = message;\r\n mergedOptions.data.action = action;\r\n }\r\n\r\n const internalRef = new _ArdSnackbarRefInternal(_ArdSimpleSnackbarComponent, mergedOptions, (withAction?: boolean) => {\r\n this.dismissCurrent(withAction);\r\n });\r\n\r\n this._handleQueue(mergedOptions.queueHandling!, internalRef);\r\n return internalRef.publicRef;\r\n }\r\n /**\r\n * Opens a snackbar with a custom component, passing the given options.\r\n * @param component The component to display inside the snackbar. This component will be instantiated and inserted into the snackbar overlay.\r\n * @param options Additional options for configuring the snackbar, such as data to pass to the component, placement, styling, etc.\r\n * @returns A reference to the opened snackbar, with the generic type of the component instance. You can use this reference to subscribe to open/close events, and to close the snackbar programmatically.\r\n */\r\n openFromComponent<T>(component: ComponentType<T>, options: ArdSnackbarOptions): ArdSnackbarRef<T> {\r\n const mergedOptions = this._mergeOptions(options);\r\n\r\n const internalRef = new _ArdSnackbarRefInternal(component, mergedOptions, (withAction?: boolean) =>\r\n this.dismissCurrent(withAction)\r\n );\r\n\r\n this._handleQueue(options.queueHandling!, internalRef);\r\n return internalRef.publicRef;\r\n }\r\n //! handling adding new snackbars to queue\r\n private _handleQueue<T>(handling: ArdSnackbarQueueHandling, ref: _ArdSnackbarRefInternal<T>) {\r\n const isNotOpen = !isDefined(this._openedSnackbar);\r\n if (handling === ArdSnackbarQueueHandling.Default) {\r\n const wasEmpty = this._snackbarQueue.isEmpty();\r\n this._snackbarQueue.push(ref);\r\n if (wasEmpty && isNotOpen) {\r\n this._openNext();\r\n }\r\n } else if (handling === ArdSnackbarQueueHandling.Skip || handling === ArdSnackbarQueueHandling.Overwrite) {\r\n const wasEmpty = this._snackbarQueue.isEmpty();\r\n if (!wasEmpty && handling === ArdSnackbarQueueHandling.Overwrite) this._snackbarQueue.clear();\r\n this._snackbarQueue.pushFront(ref);\r\n if (wasEmpty && isNotOpen) {\r\n this._openNext();\r\n } else {\r\n this.dismissCurrent(false);\r\n //it is opened automatically within the dismiss method\r\n }\r\n }\r\n }\r\n private _mergeOptions(options: ArdSnackbarOptions): Required<ArdSnackbarOptions> {\r\n // merge placement\r\n if (options.placement) {\r\n options.placement = {\r\n ...this._DEFAULTS.placement,\r\n ...options.placement,\r\n };\r\n } else {\r\n options.placement = this._DEFAULTS.placement;\r\n }\r\n // merge data\r\n if (options.data) {\r\n options.data = {\r\n ...this._DEFAULTS.data,\r\n ...options.data,\r\n };\r\n } else {\r\n options.data = this._DEFAULTS.data;\r\n }\r\n return {\r\n ...this._DEFAULTS,\r\n ...options,\r\n } as Required<ArdSnackbarOptions>;\r\n }\r\n //! opening snackbars\r\n private _openNext() {\r\n const sb = this._snackbarQueue.pop();\r\n if (!sb) return;\r\n this._openedSnackbar = sb;\r\n const overlay = this._createOverlay(sb.options);\r\n sb.overlay = overlay;\r\n\r\n const injector = this._createInjector(sb.options, sb.publicRef);\r\n const portal = new ComponentPortal(sb.component, undefined, injector);\r\n const componentRef = overlay.attach(portal);\r\n (sb.publicRef as any).instance = componentRef.instance;\r\n sb.markAsOpened();\r\n\r\n this._openedSnackbar = sb;\r\n\r\n const duration =\r\n sb.options.duration === Infinity || sb.options.duration <= 0 || sb.options.duration > TIMEOUT_LIMIT\r\n ? TIMEOUT_LIMIT\r\n : sb.options.duration;\r\n\r\n sb.timeout = setTimeout(() => {\r\n this.dismissCurrent(false);\r\n }, duration);\r\n }\r\n private _createOverlay(options: ArdSnackbarOptions): OverlayRef {\r\n let x!: 'start' | 'center' | 'end';\r\n let originY!: 'top' | 'center' | 'bottom';\r\n let overlayY!: 'top' | 'center' | 'bottom';\r\n let overlayY2!: 'top' | 'center' | 'bottom';\r\n\r\n //horizontal alignments\r\n if (options.placement?.align?.match('left')) {\r\n x = 'start';\r\n } else if (options.placement?.align?.match('right')) {\r\n x = 'end';\r\n } else {\r\n x = 'center';\r\n }\r\n // vertical alignments\r\n if (options.placement?.align?.match('bottom')) {\r\n originY = 'bottom';\r\n overlayY = 'bottom';\r\n overlayY2 = 'top';\r\n } else {\r\n originY = 'top';\r\n overlayY = 'top';\r\n overlayY2 = 'bottom';\r\n }\r\n\r\n let origin = options.placement!.origin;\r\n if (!origin) {\r\n console.error(\r\n new Error(`ARD-NF7021: trying to open a snackbar, but the origin is undefined. Using \"document.body\" instead.`)\r\n );\r\n origin = document.body;\r\n }\r\n\r\n const isInside = options.placement?.originRelation === ArdSnackbarOriginRelation.Inside;\r\n const strategy = this._overlay\r\n .position()\r\n .flexibleConnectedTo(origin)\r\n .withPositions([\r\n {\r\n originX: x,\r\n originY,\r\n overlayX: x,\r\n overlayY: isInside ? overlayY : overlayY2,\r\n },\r\n {\r\n originX: x,\r\n originY,\r\n overlayX: x,\r\n overlayY: !isInside ? overlayY : overlayY2,\r\n },\r\n ]);\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n hasBackdrop: false,\r\n panelClass: options.panelClass,\r\n });\r\n\r\n return this._overlay.create(config);\r\n }\r\n\r\n //! public actions\r\n /**\r\n * Dismisses the currently opened snackbar, if any. If `withAction` is true, it indicates that the snackbar is being dismissed as a result of the user clicking the action button (if it has one). This will cause the snackbar to emit a close event with `withAction` set to true, allowing you to differentiate between automatic dismissal and user-initiated dismissal via the action button.\r\n * @param withAction Optional boolean indicating whether the dismissal is due to the user clicking the action button. Defaults to false. If true, the snackbar's close event will emit with `withAction` set to true, allowing you to handle this case differently if needed.\r\n */\r\n dismissCurrent(withAction?: boolean) {\r\n const sb = this._openedSnackbar;\r\n if (!sb) {\r\n console.warn(new Error(`ARD-WA7020: trying to dismiss the current snackbar, but no snackbar is currently opened.`));\r\n return;\r\n }\r\n\r\n sb.markAsStartingToClose();\r\n\r\n setTimeout(() => {\r\n this._openedSnackbar = undefined;\r\n sb.publicRef.markAsClosed(withAction);\r\n sb.overlay?.dispose();\r\n clearTimeout(sb.timeout);\r\n\r\n this._openNext();\r\n }, this._animationLength);\r\n }\r\n\r\n //! public queue methods\r\n /**\r\n * Returns an array of references to the snackbars currently in the queue, in the order they will be opened. Note that this does not include the currently opened snackbar, if any.\r\n */\r\n getQueue(): ArdSnackbarRef<unknown>[] {\r\n return this._snackbarQueue.toArray().map(v => v.publicRef);\r\n }\r\n /**\r\n * Clears all pending snackbars from the queue. Does not affect the currently opened snackbar, if any. Use with caution, as this will remove all pending snackbars that have not yet been displayed, and they will not be shown at all.\r\n */\r\n clearQueue(): void {\r\n this._snackbarQueue.clear();\r\n }\r\n\r\n /**\r\n * @deprecated Internal implementation detail, do not use directly.\r\n */\r\n ngOnDestroy(): void {\r\n this._snackbarQueue.clear();\r\n this.dismissCurrent(false);\r\n }\r\n\r\n private _createInjector<T>(options: ArdSnackbarOptions, snackbarRef: ArdSnackbarRef<T>): Injector {\r\n return Injector.create({\r\n parent: this._injector,\r\n providers: [\r\n { provide: ArdSnackbarRef, useValue: snackbarRef },\r\n { provide: ARD_SNACKBAR_DATA, useValue: options.data },\r\n {\r\n provide: ARD_SNACKBAR_TYPE,\r\n useValue: options.type ?? ArdSnackbarType.None,\r\n },\r\n {\r\n provide: ARD_SNACKBAR_COLOR,\r\n useValue: options.color ?? (options.type !== ArdSnackbarType.None ? options.type : null) ?? ComponentColor.Secondary,\r\n },\r\n ],\r\n });\r\n }\r\n}\r\n","/*\r\n * Public API Surface of Ardium UI\r\n */\r\nimport 'first-last';\r\n\r\n//! component group 0 - inputs and selects\r\nexport * from './lib/inputs/autocomplete-input'; // 003\r\nexport * from './lib/inputs/digit-input'; // 004\r\nexport * from './lib/inputs/input'; // 002\r\nexport * from './lib/inputs/password-input'; // 005\r\nexport * from './lib/option'; // 001\r\nexport * from './lib/select'; // 000\r\n// export * from './lib/inputs/color-input'; // 006\r\nexport * from './lib/file-inputs/file-drop-area'; // 010\r\nexport * from './lib/file-inputs/file-input'; // 011\r\nexport * from './lib/inputs/date-input'; // 008 & 009 & 012\r\nexport * from './lib/inputs/hex-input'; // 016\r\nexport * from './lib/inputs/number-input'; // 007\r\n\r\n//! component group 1 - small forms-related components\r\nexport * from './lib/buttons/button';\r\nexport * from './lib/buttons/button-group';\r\nexport * from './lib/buttons/fab';\r\nexport * from './lib/buttons/general-button.types';\r\nexport * from './lib/buttons/icon-button';\r\nexport * from './lib/checkbox'; // 100\r\nexport * from './lib/chip'; // 110 & 111\r\nexport * from './lib/radio'; // 103\r\nexport * from './lib/segment'; // 104\r\nexport * from './lib/slide-toggle'; // 102\r\nexport * from './lib/slider'; // 105 & 106\r\nexport * from './lib/star/rating-input'; // 108\r\nexport * from './lib/star/star-button'; // 107\r\n\r\n//! component group 2 - pickers\r\nexport * from './lib/calendar'; // 200 & 201\r\n// export * from './lib/color/color-picker'; // 202\r\n\r\n//! component group 3 - lists\r\nexport * from './lib/checkbox-list'; // 300\r\n\r\n//! component group 4 - state display components\r\nexport * from './lib/badge'; // 403\r\nexport * from './lib/progress-bar'; // 401\r\nexport * from './lib/progress-circle'; // 402\r\nexport * from './lib/spinner'; // 400\r\n\r\n//! component group 5 - data display components\r\n// export * from './lib/color/color-display'; // 502\r\nexport * from './lib/dropdown-panel'; // 501\r\nexport * from './lib/form-field'; // 511-515\r\nexport * from './lib/form-field-frame'; // 500\r\nexport * from './lib/kbd'; // 503\r\nexport * from './lib/kbd-shortcut'; // 504\r\nexport * from './lib/star'; // 508\r\nexport * from './lib/star/rating-display'; // 509\r\nexport * from './lib/table'; // 505\r\nexport * from './lib/table-from-csv'; // 507\r\nexport * from './lib/table-pagination'; // 506\r\nexport * from './lib/text-list'; // 510\r\n\r\n//! component group 6 - layout components\r\nexport * from './lib/card';\r\nexport * from './lib/divider';\r\nexport * from './lib/grid'; // 601\r\nexport * from './lib/stack'; // 602\r\nexport * from './lib/tabber'; // 600\r\n\r\n//! component group 7 - popups\r\nexport * from './lib/dialog'; // 701\r\nexport * from './lib/modal'; // 700\r\nexport * from './lib/snackbar'; // 702\r\n\r\n//! component group 9 - other\r\nexport * from './lib/icon'; // 900\r\n\r\n//! types\r\nexport * from './lib/_internal/public-api';\r\nexport * from './lib/types/alignment.types';\r\nexport * from './lib/types/colors.types';\r\nexport * from './lib/types/item-storage.types';\r\nexport * from './lib/types/theming.types';\r\nexport * from './lib/types/utility.types';\r\n\r\n//! miscellaneous\r\nexport * from './lib/breakpoints';\r\nexport { searchFunctions as ArdSearchFunction, searchInString } from './lib/search-functions';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Random","_inputDefaults","i2.ArdiumFormFieldFrameComponent","i3._ClearButtonComponent","i4.ArdiumDropdownPanelComponent","i5","i2._ClearButtonComponent","i3.ArdiumFormFieldFrameComponent","i1.ArdiumIconPipe","i3.ArdiumIconComponent","i3.ArdiumDropdownPanelComponent","i4.ArdiumDeletableChipComponent","i6._ClearButtonComponent","i1.ArdiumButtonDirective","i2.ArdiumButtonComponent","i4.ArdiumIconComponent","getUTCDate","TODAY","i2.ArdiumIconButtonComponent","i4.ArdiumButtonComponent","i2.DaysViewComponent","i3.MonthsViewComponent","i4.YearsViewComponent","i5.ArdiumCalendarComponent","i6.ArdiumIconButtonComponent","i7.ArdiumButtonComponent","i8.ArdiumIconComponent","i9._CalendarTemplateRepositoryDirective","i5.ArdiumRangeCalendarComponent","i2","i3.ArdiumButtonComponent","i2.ArdiumIconComponent","i2.ArdiumStarComponent","i2.ArdiumStarButtonComponent","i2.ArdiumCheckboxComponent","i3._CheckboxTemplateRepositoryDirective","i1.ArdiumErrorComponent","i2.ArdiumKbdPipe","i2.ArdiumKbdComponent","i2.ArdiumSelectComponent","i3.ArdiumIconButtonComponent","i3.ArdiumTablePaginationComponent","i5.ArdiumProgressBarComponent","i1.ArdiumTableComponent","i1.ArdiumTextListPipe","i4","i3.ArdiumModalComponent","i1.ArdiumButtonComponent"],"mappings":"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"}
|