@kirbydesign/designsystem 10.1.3 → 10.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/avatar/avatar.component.d.ts +2 -1
- package/button/button.component.d.ts +1 -0
- package/calendar/calendar.component.d.ts +28 -18
- package/calendar/interfaces/calendar-day.d.ts +17 -0
- package/calendar/public_api.d.ts +1 -1
- package/chart/shared/chart-config-service/chart-config.service.d.ts +1 -1
- package/empty-state/empty-state.component.d.ts +10 -3
- package/esm2022/accordion/accordion-item.component.mjs +4 -4
- package/esm2022/accordion/accordion.directive.mjs +4 -4
- package/esm2022/accordion/accordion.module.mjs +5 -5
- package/esm2022/action-group/action-group.component.mjs +4 -4
- package/esm2022/avatar/avatar.component.mjs +7 -5
- package/esm2022/badge/badge.component.mjs +4 -4
- package/esm2022/button/button.component.mjs +18 -6
- package/esm2022/calendar/calendar.component.mjs +168 -101
- package/esm2022/calendar/interfaces/calendar-day.mjs +2 -0
- package/esm2022/calendar/interfaces/calendar-year-navigator-config.mjs +2 -0
- package/esm2022/calendar/public_api.mjs +1 -1
- package/esm2022/card/card-as-button/card-as-button.directive.mjs +4 -4
- package/esm2022/card/card-footer/card-footer.component.mjs +4 -4
- package/esm2022/card/card-header/card-header.component.mjs +4 -4
- package/esm2022/card/card.component.mjs +4 -4
- package/esm2022/card/card.module.mjs +5 -5
- package/esm2022/chart/chart/chart.component.mjs +4 -4
- package/esm2022/chart/charts.module.mjs +5 -5
- package/esm2022/chart/shared/base-chart/base-chart.component.mjs +4 -4
- package/esm2022/chart/shared/chart-config-service/chart-config.service.mjs +4 -4
- package/esm2022/chart/shared/chart-js-service/chart-js.service.mjs +4 -4
- package/esm2022/chart/stock-chart/stock-chart-js.service.mjs +4 -4
- package/esm2022/chart/stock-chart/stock-chart.component.mjs +4 -4
- package/esm2022/checkbox/checkbox.component.mjs +4 -4
- package/esm2022/data-table/data-table.module.mjs +5 -5
- package/esm2022/data-table/sortable/sortable.component.mjs +4 -4
- package/esm2022/divider/divider.component.mjs +4 -4
- package/esm2022/dropdown/dropdown.component.mjs +6 -6
- package/esm2022/dropdown/dropdown.module.mjs +5 -5
- package/esm2022/dropdown/keyboard-handler.service.mjs +4 -4
- package/esm2022/empty-state/empty-state.component.mjs +31 -7
- package/esm2022/empty-state/empty-state.module.mjs +5 -5
- package/esm2022/fab-sheet/fab-sheet.component.mjs +4 -4
- package/esm2022/flag/flag.component.mjs +4 -4
- package/esm2022/form-field/directives/affix/affix.directive.mjs +4 -4
- package/esm2022/form-field/directives/date/date-input.directive.mjs +4 -4
- package/esm2022/form-field/directives/decimal-mask/decimal-mask.directive.mjs +4 -4
- package/esm2022/form-field/form-field-message/form-field-message.component.mjs +4 -4
- package/esm2022/form-field/form-field.component.mjs +4 -4
- package/esm2022/form-field/form-field.module.mjs +8 -7
- package/esm2022/form-field/input/input.component.mjs +4 -4
- package/esm2022/form-field/input-counter/input-counter.component.mjs +4 -4
- package/esm2022/form-field/textarea/textarea.component.mjs +4 -4
- package/esm2022/header/header.component.mjs +16 -16
- package/esm2022/header/header.module.mjs +5 -5
- package/esm2022/helpers/content-mutation-observer.mjs +50 -0
- package/esm2022/helpers/element-ancestor-utils.mjs +33 -0
- package/esm2022/helpers/ionic-element-part-helper.mjs +4 -4
- package/esm2022/helpers/line-clamp-helper.mjs +4 -4
- package/esm2022/helpers/platform.service.mjs +4 -4
- package/esm2022/helpers/public_api.mjs +3 -2
- package/esm2022/icon/icon-registry.service.mjs +4 -4
- package/esm2022/icon/icon.component.mjs +4 -4
- package/esm2022/icon/icon.module.mjs +5 -5
- package/esm2022/item/item.component.mjs +13 -9
- package/esm2022/item/item.module.mjs +5 -5
- package/esm2022/item/label/label.component.mjs +5 -5
- package/esm2022/item-group/item-group.component.mjs +4 -4
- package/esm2022/item-sliding/item-sliding.component.mjs +4 -4
- package/esm2022/kirby-app/kirby-app.component.mjs +4 -4
- package/esm2022/kirby-app/kirby-app.module.mjs +5 -5
- package/esm2022/kirby-ionic-module/kirby-ionic.module.mjs +5 -5
- package/esm2022/lib/components/segmented-control/segmented-control.component.mjs +34 -7
- package/esm2022/lib/directives/key-handler/key-handler.directive.mjs +4 -4
- package/esm2022/lib/directives/modal-router-link/modal-router-link.directive.mjs +4 -4
- package/esm2022/lib/kirby.module.mjs +5 -5
- package/esm2022/list/directives/infinite-scroll.directive.mjs +4 -4
- package/esm2022/list/directives/list-item-color.directive.mjs +4 -4
- package/esm2022/list/helpers/list-helper.mjs +4 -4
- package/esm2022/list/list-experimental/list-experimental.component.mjs +4 -4
- package/esm2022/list/list-header/list-header.component.mjs +4 -4
- package/esm2022/list/list-item/list-item.component.mjs +5 -5
- package/esm2022/list/list-section-header/list-section-header.component.mjs +4 -4
- package/esm2022/list/list.component.mjs +5 -5
- package/esm2022/list/list.directive.mjs +13 -13
- package/esm2022/list/list.module.mjs +5 -5
- package/esm2022/loading-overlay/loading-overlay.component.mjs +4 -4
- package/esm2022/loading-overlay/loading-overlay.service.mjs +4 -4
- package/esm2022/menu/menu.component.mjs +215 -12
- package/esm2022/modal/modal/action-sheet/action-sheet.component.mjs +4 -4
- package/esm2022/modal/modal/alert/alert.component.mjs +4 -4
- package/esm2022/modal/modal/footer/modal-footer.component.mjs +4 -4
- package/esm2022/modal/modal/modal-component/modal.component.mjs +18 -8
- package/esm2022/modal/modal/services/action-sheet.helper.mjs +4 -4
- package/esm2022/modal/modal/services/alert.helper.mjs +4 -4
- package/esm2022/modal/modal/services/can-dismiss.helper.mjs +4 -4
- package/esm2022/modal/modal/services/modal-animation-builder.service.mjs +4 -4
- package/esm2022/modal/modal/services/modal.controller.mjs +4 -4
- package/esm2022/modal/modal/services/modal.helper.mjs +5 -4
- package/esm2022/modal/modal-navigation.service.mjs +4 -4
- package/esm2022/modal/modal-wrapper/compact/modal-compact-wrapper.component.mjs +19 -10
- package/esm2022/modal/modal-wrapper/config/modal-config.mjs +1 -1
- package/esm2022/modal/modal-wrapper/modal-elements-mover.delegate.mjs +1 -1
- package/esm2022/modal/modal-wrapper/modal-wrapper.component.mjs +35 -12
- package/esm2022/modal/modal.interfaces.mjs +4 -4
- package/esm2022/page/page-footer/page-footer.component.mjs +4 -4
- package/esm2022/page/page.component.mjs +39 -38
- package/esm2022/page/page.module.mjs +5 -5
- package/esm2022/popover/popover.component.mjs +4 -4
- package/esm2022/progress-circle/progress-circle-ring.component.mjs +4 -4
- package/esm2022/progress-circle/progress-circle.component.mjs +4 -4
- package/esm2022/radio/radio-group/radio-group.component.mjs +4 -4
- package/esm2022/radio/radio-module.mjs +5 -5
- package/esm2022/radio/radio.component.mjs +4 -4
- package/esm2022/range/range.component.mjs +4 -4
- package/esm2022/reorder-list/reorder-list.component.mjs +5 -5
- package/esm2022/router-outlet/router-outlet.component.mjs +4 -4
- package/esm2022/router-outlet/router-outlet.module.mjs +5 -5
- package/esm2022/section-header/section-header.component.mjs +4 -4
- package/esm2022/shared/component-loader.directive.mjs +4 -4
- package/esm2022/shared/fit-heading/fit-heading.directive.mjs +4 -4
- package/esm2022/shared/floating/floating.directive.mjs +4 -4
- package/esm2022/shared/portal/portal.directive.mjs +4 -4
- package/esm2022/shared/public_api.mjs +2 -1
- package/esm2022/shared/resize-observer/resize-observer.factory.mjs +4 -4
- package/esm2022/shared/resize-observer/resize-observer.service.mjs +4 -4
- package/esm2022/shared/theme-color/theme-color.directive.mjs +4 -4
- package/esm2022/shared/translation/translation.interface.mjs +2 -0
- package/esm2022/shared/translation/translation.service.mjs +37 -0
- package/esm2022/shared/translation/translations/da.mjs +11 -0
- package/esm2022/shared/translation/translations/en.mjs +11 -0
- package/esm2022/slide/slide-stretch-height.directive.mjs +4 -4
- package/esm2022/slide/slide.directive.mjs +4 -4
- package/esm2022/slide/slide.module.mjs +5 -5
- package/esm2022/slide/slides.component.mjs +16 -9
- package/esm2022/slide-button/slide-button.component.mjs +4 -4
- package/esm2022/spinner/spinner.component.mjs +4 -4
- package/esm2022/spinner/spinner.module.mjs +5 -5
- package/esm2022/tab-navigation/tab-navigation/tab-navigation.component.mjs +4 -4
- package/esm2022/tab-navigation/tab-navigation-item/tab-navigation-item.component.mjs +4 -4
- package/esm2022/tab-navigation/tab-navigation.module.mjs +5 -5
- package/esm2022/tabs/tab-button/tab-button.component.mjs +4 -4
- package/esm2022/tabs/tabs.component.mjs +4 -4
- package/esm2022/tabs/tabs.module.mjs +5 -5
- package/esm2022/tabs/tabs.service.mjs +4 -4
- package/esm2022/testing/test-helper.mjs +8 -5
- package/esm2022/testing-base/lib/components/mock.accordion-item.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.action-group.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.action-sheet.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.alert.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.avatar.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.badge.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.base-chart.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.button.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.calendar.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.card-footer.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.card-header.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.card.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.chart.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.checkbox.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.divider.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.dropdown.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.empty-state.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.fab-sheet.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.flag.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.form-field-message.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.form-field.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.header.component.mjs +10 -10
- package/esm2022/testing-base/lib/components/mock.icon.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.input-counter.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.input.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.item-group.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.item-sliding.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.item.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.kirby-app.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.label.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.list-experimental.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.list-header.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.list-item.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.list-section-header.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.list.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.loading-overlay.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.menu.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.modal-compact-wrapper.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.modal-footer.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.modal-wrapper.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.page-footer.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.page.component.mjs +34 -34
- package/esm2022/testing-base/lib/components/mock.popover.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.progress-circle-ring.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.progress-circle.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.radio-group.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.radio.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.range.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.reorder-list.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.router-outlet.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.section-header.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.segmented-control.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.slide-button.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.slides.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.spinner.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.stock-chart.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.tab-button.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.tab-navigation-item.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.tab-navigation.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.tabs.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.textarea.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.toggle-button.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.toggle.component.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.accordion.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.affix.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.card-as-button.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.component-loader.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.date-input.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.decimal-mask.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.fit-heading.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.floating.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.infinite-scroll.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.key-handler.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.list-item-color.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.list.directive.mjs +13 -13
- package/esm2022/testing-base/lib/directives/mock.modal-router-link.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.portal.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.slide.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.theme-color.directive.mjs +4 -4
- package/esm2022/testing-base/lib/kirby-testing-base.module.mjs +5 -5
- package/esm2022/testing-jasmine/lib/kirby-testing.module.mjs +5 -5
- package/esm2022/testing-jest/lib/kirby-testing.module.mjs +5 -5
- package/esm2022/toast/services/toast.controller.mjs +4 -4
- package/esm2022/toast/services/toast.helper.mjs +4 -4
- package/esm2022/toggle/toggle.component.mjs +4 -4
- package/esm2022/toggle-button/toggle-button.component.mjs +4 -4
- package/esm2022/toggle-button/toggle-button.module.mjs +5 -5
- package/esm2022/types/public_api.mjs +2 -1
- package/esm2022/types/unobserve-fn.mjs +2 -0
- package/esm2022/types/window-ref.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-accordion.mjs +10 -10
- package/fesm2022/kirbydesign-designsystem-accordion.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-action-group.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-action-group.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-avatar.mjs +6 -4
- package/fesm2022/kirbydesign-designsystem-avatar.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-badge.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-badge.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-button.mjs +17 -5
- package/fesm2022/kirbydesign-designsystem-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-calendar.mjs +168 -177
- package/fesm2022/kirbydesign-designsystem-calendar.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-card.mjs +16 -16
- package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-chart.mjs +22 -22
- package/fesm2022/kirbydesign-designsystem-chart.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-data-table.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-data-table.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-divider.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-divider.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-dropdown.mjs +12 -12
- package/fesm2022/kirbydesign-designsystem-dropdown.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-empty-state.mjs +33 -9
- package/fesm2022/kirbydesign-designsystem-empty-state.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-flag.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-flag.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-form-field.mjs +30 -30
- package/fesm2022/kirbydesign-designsystem-form-field.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-header.mjs +19 -19
- package/fesm2022/kirbydesign-designsystem-header.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-helpers.mjs +69 -10
- package/fesm2022/kirbydesign-designsystem-helpers.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-icon.mjs +10 -10
- package/fesm2022/kirbydesign-designsystem-icon.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item-group.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-item-group.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item-sliding.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-item-sliding.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item.mjs +20 -16
- package/fesm2022/kirbydesign-designsystem-item.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-kirby-app.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-kirby-app.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-kirby-ionic-module.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-kirby-ionic-module.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-list.mjs +42 -42
- package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs +6 -6
- package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-menu.mjs +214 -11
- package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-modal.mjs +99 -57
- package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-page.mjs +44 -43
- package/fesm2022/kirbydesign-designsystem-page.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-popover.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-popover.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-progress-circle.mjs +6 -6
- package/fesm2022/kirbydesign-designsystem-progress-circle.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-radio.mjs +10 -10
- package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-range.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-range.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-reorder-list.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-reorder-list.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-router-outlet.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-router-outlet.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-section-header.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-section-header.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared-floating.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared-portal.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-shared-portal.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared.mjs +71 -17
- package/fesm2022/kirbydesign-designsystem-shared.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-slide-button.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-slide-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-slide.mjs +24 -18
- package/fesm2022/kirbydesign-designsystem-slide.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-spinner.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-spinner.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs +10 -10
- package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-tabs.mjs +13 -13
- package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-base.mjs +286 -286
- package/fesm2022/kirbydesign-designsystem-testing-base.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-jest.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing-jest.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing.mjs +7 -4
- package/fesm2022/kirbydesign-designsystem-testing.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toast.mjs +6 -6
- package/fesm2022/kirbydesign-designsystem-toast.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toggle-button.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-toggle-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toggle.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-types.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-types.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem.mjs +43 -16
- package/fesm2022/kirbydesign-designsystem.mjs.map +1 -1
- package/form-field/form-field.module.d.ts +2 -1
- package/helpers/content-mutation-observer.d.ts +8 -0
- package/helpers/{element-has-ancestor.d.ts → element-ancestor-utils.d.ts} +1 -0
- package/helpers/public_api.d.ts +2 -1
- package/icons/svg/accounts-outline.svg +0 -2
- package/icons/svg/accounts.svg +0 -2
- package/icons/svg/backspace.svg +0 -2
- package/icons/svg/camera.svg +0 -2
- package/icons/svg/copy.svg +0 -2
- package/icons/svg/flag.svg +0 -2
- package/icons/svg/inbox-outline.svg +0 -2
- package/icons/svg/inbox.svg +0 -2
- package/icons/svg/information.svg +0 -2
- package/icons/svg/menu-outline.svg +0 -2
- package/icons/svg/menu.svg +0 -2
- package/icons/svg/person-outline.svg +0 -2
- package/icons/svg/person.svg +0 -2
- package/icons/svg/reorder.svg +0 -2
- package/icons/svg/support.svg +0 -2
- package/item/item.component.d.ts +3 -2
- package/lib/components/segmented-control/segmented-control.component.d.ts +4 -0
- package/menu/menu.component.d.ts +32 -8
- package/modal/modal/modal-component/modal.component.d.ts +6 -3
- package/modal/modal-wrapper/compact/modal-compact-wrapper.component.d.ts +4 -2
- package/modal/modal-wrapper/config/modal-config.d.ts +3 -0
- package/modal/modal-wrapper/modal-wrapper.component.d.ts +8 -3
- package/package.json +4 -4
- package/page/page.component.d.ts +4 -3
- package/scss/base/_item-typography.scss +1 -0
- package/shared/public_api.d.ts +1 -0
- package/shared/translation/translation.interface.d.ts +10 -0
- package/shared/translation/translation.service.d.ts +12 -0
- package/shared/translation/translations/da.d.ts +2 -0
- package/shared/translation/translations/en.d.ts +2 -0
- package/slide/slides.component.d.ts +3 -1
- package/testing/test-helper.d.ts +1 -0
- package/types/public_api.d.ts +1 -0
- package/types/unobserve-fn.d.ts +1 -0
- package/calendar/helpers/calendar-cell.model.d.ts +0 -9
- package/calendar/helpers/calendar-options.model.d.ts +0 -9
- package/calendar/helpers/calendar.helper.d.ts +0 -24
- package/esm2022/calendar/helpers/calendar-cell.model.mjs +0 -2
- package/esm2022/calendar/helpers/calendar-options.model.mjs +0 -2
- package/esm2022/calendar/helpers/calendar.helper.mjs +0 -80
- package/esm2022/calendar/options/calendar-year-navigator-config.mjs +0 -2
- package/esm2022/helpers/element-has-ancestor.mjs +0 -24
- /package/calendar/{options → interfaces}/calendar-year-navigator-config.d.ts +0 -0
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
import * as i1 from '@angular/common';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { ElementRef, Component, ChangeDetectionStrategy, Input, ViewChild, ContentChild } from '@angular/core';
|
|
5
|
-
import { ItemModule } from '@kirbydesign/designsystem/item';
|
|
4
|
+
import { ElementRef, Component, ChangeDetectionStrategy, Input, ViewChild, ContentChild, ContentChildren, HostListener } from '@angular/core';
|
|
5
|
+
import { ItemComponent, ItemModule } from '@kirbydesign/designsystem/item';
|
|
6
6
|
import * as i3 from '@kirbydesign/designsystem/card';
|
|
7
7
|
import { CardModule } from '@kirbydesign/designsystem/card';
|
|
8
8
|
import * as i2 from '@kirbydesign/designsystem/icon';
|
|
9
9
|
import { IconModule } from '@kirbydesign/designsystem/icon';
|
|
10
10
|
import { ButtonSize, ButtonComponent } from '@kirbydesign/designsystem/button';
|
|
11
11
|
import { FloatingOffset, FloatingDirective } from '@kirbydesign/designsystem/shared/floating';
|
|
12
|
+
import { UniqueIdGenerator } from '@kirbydesign/designsystem/helpers';
|
|
12
13
|
|
|
13
14
|
class MenuComponent {
|
|
14
|
-
constructor(
|
|
15
|
-
this.
|
|
15
|
+
constructor(cdr, elementRef, zone, renderer) {
|
|
16
|
+
this.cdr = cdr;
|
|
16
17
|
this.elementRef = elementRef;
|
|
17
18
|
this.zone = zone;
|
|
18
19
|
this.renderer = renderer;
|
|
20
|
+
this.menuId = UniqueIdGenerator.scopedTo('kirby-menu').next();
|
|
21
|
+
this.triggerButtonId = UniqueIdGenerator.scopedTo('kirby-menu-trigger-button').next();
|
|
19
22
|
this.isDisabled = false;
|
|
20
23
|
this.buttonSize = ButtonSize.MD;
|
|
21
24
|
this.placement = 'bottom-start';
|
|
@@ -27,29 +30,220 @@ class MenuComponent {
|
|
|
27
30
|
this.closeOnEscapeKey = true;
|
|
28
31
|
this.closeOnBackdrop = true;
|
|
29
32
|
this.shift = true;
|
|
33
|
+
this.floatingMenuIsShown = false;
|
|
30
34
|
this.FloatingOffset = FloatingOffset;
|
|
35
|
+
this.focusedIndex = -1;
|
|
36
|
+
}
|
|
37
|
+
_onKeydown(event) {
|
|
38
|
+
if (this.kirbyItems.length === 0) {
|
|
39
|
+
console.warn('[Kirby] No items found within menu');
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (this.floatingMenuIsShown) {
|
|
43
|
+
this.handleKeyDownForOpenedMenu(event);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this.handleKeyDownForClosedMenu(event);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
preventDefaultAndStopImmediatePropagation(event) {
|
|
50
|
+
event.stopImmediatePropagation();
|
|
51
|
+
event.preventDefault();
|
|
52
|
+
}
|
|
53
|
+
getFirstInteractiveElement(el) {
|
|
54
|
+
return el.querySelector('ion-toggle:not([disabled]), ion-checkbox:not([disabled]), ion-radio:not([disabled])');
|
|
55
|
+
}
|
|
56
|
+
handleKeyDownForClosedMenu(event) {
|
|
57
|
+
const key = event.key;
|
|
58
|
+
switch (key) {
|
|
59
|
+
case ' ':
|
|
60
|
+
case 'Enter':
|
|
61
|
+
case 'ArrowDown':
|
|
62
|
+
this.preventDefaultAndStopImmediatePropagation(event);
|
|
63
|
+
this.focusedIndex = 0;
|
|
64
|
+
this.floatingMenu.show();
|
|
65
|
+
this.focusItem();
|
|
66
|
+
break;
|
|
67
|
+
case 'ArrowUp':
|
|
68
|
+
this.preventDefaultAndStopImmediatePropagation(event);
|
|
69
|
+
this.focusedIndex = this.kirbyItems.length - 1;
|
|
70
|
+
this.floatingMenu.show();
|
|
71
|
+
this.focusItem();
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
isPrintableCharacter(key) {
|
|
76
|
+
return key.length === 1 && key.match(/\S/);
|
|
77
|
+
}
|
|
78
|
+
handleKeyDownForOpenedMenu(event) {
|
|
79
|
+
const key = event.key;
|
|
80
|
+
switch (key) {
|
|
81
|
+
case 'ArrowDown':
|
|
82
|
+
this.preventDefaultAndStopImmediatePropagation(event);
|
|
83
|
+
if (this.focusedIndex === this.kirbyItems.length - 1) {
|
|
84
|
+
this.focusedIndex = 0;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
this.focusedIndex++;
|
|
88
|
+
}
|
|
89
|
+
this.focusItem();
|
|
90
|
+
break;
|
|
91
|
+
case 'ArrowUp':
|
|
92
|
+
this.preventDefaultAndStopImmediatePropagation(event);
|
|
93
|
+
if (this.focusedIndex === 0) {
|
|
94
|
+
this.focusedIndex = this.kirbyItems.length - 1;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
this.focusedIndex--;
|
|
98
|
+
}
|
|
99
|
+
this.focusItem();
|
|
100
|
+
break;
|
|
101
|
+
case 'Home': {
|
|
102
|
+
this.preventDefaultAndStopImmediatePropagation(event);
|
|
103
|
+
if (this.focusedIndex > 0) {
|
|
104
|
+
this.focusedIndex = 0;
|
|
105
|
+
this.focusItem();
|
|
106
|
+
}
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
case 'End': {
|
|
110
|
+
this.preventDefaultAndStopImmediatePropagation(event);
|
|
111
|
+
if (this.focusedIndex < this.kirbyItems.length - 1) {
|
|
112
|
+
this.focusedIndex = this.kirbyItems.length - 1;
|
|
113
|
+
this.focusItem();
|
|
114
|
+
}
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
case 'Escape':
|
|
118
|
+
this.preventDefaultAndStopImmediatePropagation(event);
|
|
119
|
+
if (this.closeOnEscapeKey) {
|
|
120
|
+
this.floatingMenu.hide();
|
|
121
|
+
}
|
|
122
|
+
break;
|
|
123
|
+
case 'Tab':
|
|
124
|
+
this.floatingMenu.hide();
|
|
125
|
+
break;
|
|
126
|
+
default: {
|
|
127
|
+
if (this.isPrintableCharacter(key)) {
|
|
128
|
+
this.preventDefaultAndStopImmediatePropagation(event);
|
|
129
|
+
const foundItemIndex = this.getIndexOfItemByFirstCharacter(key);
|
|
130
|
+
if (foundItemIndex > -1) {
|
|
131
|
+
this.focusedIndex = foundItemIndex;
|
|
132
|
+
this.focusItem();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
getIndexOfItemByFirstCharacter(char) {
|
|
139
|
+
return this.getIndexByFirstMatchingStartString(char, this.kirbyItems.map((item) => item.nativeElement.innerText), this.focusedIndex + 1);
|
|
140
|
+
}
|
|
141
|
+
getIndexByFirstMatchingStartString(searchString, words, startIndex) {
|
|
142
|
+
searchString = searchString.toLowerCase();
|
|
143
|
+
const wordsStartingWithMatchString = words
|
|
144
|
+
.map((word, index) => {
|
|
145
|
+
return { word: word.toLowerCase(), index };
|
|
146
|
+
})
|
|
147
|
+
.filter((match) => match.word.startsWith(searchString));
|
|
148
|
+
if (wordsStartingWithMatchString.length === 0) {
|
|
149
|
+
return -1;
|
|
150
|
+
}
|
|
151
|
+
const firstWordStartingWithChar = wordsStartingWithMatchString[0];
|
|
152
|
+
const nextWordStartingWithChar = wordsStartingWithMatchString.find((wordAndIndex) => wordAndIndex.index >= startIndex);
|
|
153
|
+
return nextWordStartingWithChar?.index ?? firstWordStartingWithChar.index;
|
|
154
|
+
}
|
|
155
|
+
focusItem() {
|
|
156
|
+
const itemToBeFocused = this.kirbyItems.get(this.focusedIndex);
|
|
157
|
+
const ionItem = itemToBeFocused.nativeElement.querySelector('ion-item');
|
|
158
|
+
// Look for interactive element within ion-item like toggle or checkbox and set focus if found
|
|
159
|
+
const firstInteractiveElementWithinItem = this.getFirstInteractiveElement(ionItem);
|
|
160
|
+
if (typeof firstInteractiveElementWithinItem?.['setFocus'] === 'function') {
|
|
161
|
+
firstInteractiveElementWithinItem['setFocus']();
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
this.focusSelectableItem(ionItem);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
focusSelectableItem(ionItem) {
|
|
168
|
+
const nativeButton = ionItem.shadowRoot.querySelector('button:not([disabled])');
|
|
169
|
+
nativeButton?.focus();
|
|
170
|
+
}
|
|
171
|
+
getTriggerButton() {
|
|
172
|
+
return (this.userProvidedButton ?? this.defaultButtonElement).nativeElement;
|
|
31
173
|
}
|
|
32
174
|
ngAfterViewInit() {
|
|
33
|
-
this.
|
|
175
|
+
this.cdr.detectChanges(); // Sets the updated reference for kirby-floating
|
|
34
176
|
this.zone.runOutsideAngular(() => {
|
|
35
177
|
/*
|
|
36
178
|
* Listen for ionScroll outside of Angular's change detection to
|
|
37
179
|
* avoid a change detection cycle for every scroll-event fired
|
|
38
180
|
*/
|
|
39
181
|
this.scrollListenerDisposeFn = this.renderer.listen(document, 'ionScroll', () => {
|
|
40
|
-
this.
|
|
182
|
+
this.floatingMenu.hide();
|
|
41
183
|
});
|
|
42
184
|
});
|
|
43
185
|
}
|
|
186
|
+
ngAfterContentInit() {
|
|
187
|
+
this.setRoleAttributeForAllItems();
|
|
188
|
+
this.setUserProvidedButtonAriaAttributes();
|
|
189
|
+
this.ensureSelectableOnItems();
|
|
190
|
+
}
|
|
191
|
+
ensureSelectableOnItems() {
|
|
192
|
+
this.kirbyItemComponents.forEach((itemComponent) => {
|
|
193
|
+
if (itemComponent.selectable === undefined) {
|
|
194
|
+
itemComponent.selectable = true;
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
setRoleAttributeForAllItems() {
|
|
199
|
+
this.kirbyItems.forEach((item) => {
|
|
200
|
+
this.setRoleAttributeForItem(item.nativeElement);
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
setRoleAttributeForItem(item) {
|
|
204
|
+
let menuItemRole = 'menuitem';
|
|
205
|
+
if (item.matches(':has(kirby-toggle, kirby-checkbox)')) {
|
|
206
|
+
menuItemRole = 'menuitemcheckbox';
|
|
207
|
+
}
|
|
208
|
+
else if (item.matches(':has(kirby-radio)')) {
|
|
209
|
+
menuItemRole = 'menuitemradio';
|
|
210
|
+
}
|
|
211
|
+
this.renderer.setAttribute(item, 'role', menuItemRole);
|
|
212
|
+
}
|
|
213
|
+
menuVisibilityChanged(menuIsShown) {
|
|
214
|
+
this.floatingMenuIsShown = menuIsShown;
|
|
215
|
+
this.renderer.setAttribute(this.getTriggerButton(), 'aria-expanded', menuIsShown.toString());
|
|
216
|
+
if (!menuIsShown) {
|
|
217
|
+
this.focusedIndex = -1;
|
|
218
|
+
this.getTriggerButton().focus();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
setUserProvidedButtonAriaAttributes() {
|
|
222
|
+
if (!this.userProvidedButton)
|
|
223
|
+
return;
|
|
224
|
+
const button = this.userProvidedButton.nativeElement;
|
|
225
|
+
if (button.id) {
|
|
226
|
+
this.triggerButtonId = button.id;
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
this.renderer.setAttribute(button, 'id', this.triggerButtonId);
|
|
230
|
+
}
|
|
231
|
+
if (!button.getAttribute('aria-controls')) {
|
|
232
|
+
this.renderer.setAttribute(button, 'aria-controls', this.menuId);
|
|
233
|
+
}
|
|
234
|
+
if (!button.getAttribute('aria-haspopup')) {
|
|
235
|
+
this.renderer.setAttribute(button, 'aria-haspopup', 'true');
|
|
236
|
+
}
|
|
237
|
+
}
|
|
44
238
|
ngOnDestroy() {
|
|
45
239
|
this.scrollListenerDisposeFn?.();
|
|
46
240
|
}
|
|
47
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
48
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
241
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MenuComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
242
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MenuComponent, isStandalone: true, selector: "kirby-menu", inputs: { isDisabled: "isDisabled", buttonSize: "buttonSize", placement: "placement", attentionLevel: "attentionLevel", triggers: "triggers", DOMPortalOutlet: "DOMPortalOutlet", portalOutletConfig: "portalOutletConfig", autoPlacement: "autoPlacement", closeOnSelect: "closeOnSelect", closeOnEscapeKey: "closeOnEscapeKey", closeOnBackdrop: "closeOnBackdrop", shift: "shift", minWidth: "minWidth" }, host: { listeners: { "keydown": "_onKeydown($event)" } }, queries: [{ propertyName: "userProvidedButton", first: true, predicate: ButtonComponent, descendants: true, read: ElementRef }, { propertyName: "kirbyItems", predicate: ItemComponent, read: ElementRef }, { propertyName: "kirbyItemComponents", predicate: ItemComponent }], viewQueries: [{ propertyName: "buttonContainerElement", first: true, predicate: ["buttonContainer"], descendants: true, read: ElementRef }, { propertyName: "defaultButtonElement", first: true, predicate: ["defaultButton"], descendants: true, read: ElementRef }, { propertyName: "floatingMenu", first: true, predicate: FloatingDirective, descendants: true }], ngImport: i0, template: "<div class=\"button-container\" #buttonContainer>\n <ng-content select=\"button[kirby-button]\"></ng-content>\n <ng-container *ngIf=\"!userProvidedButton\">\n <button\n #defaultButton\n [id]=\"triggerButtonId\"\n kirby-button\n [size]=\"buttonSize\"\n [disabled]=\"isDisabled\"\n type=\"button\"\n [attentionLevel]=\"attentionLevel\"\n aria-haspopup=\"true\"\n [attr.aria-controls]=\"menuId\"\n aria-expanded=\"false\"\n >\n <kirby-icon [name]=\"'more'\"></kirby-icon>\n </button>\n </ng-container>\n</div>\n<kirby-card\n [id]=\"menuId\"\n kirbyFloating\n [strategy]=\"'fixed'\"\n [reference]=\"buttonContainerElement\"\n [isDisabled]=\"isDisabled\"\n [triggers]=\"triggers\"\n [placement]=\"placement\"\n [DOMPortalOutlet]=\"DOMPortalOutlet\"\n [portalOutletConfig]=\"portalOutletConfig\"\n [closeOnBackdrop]=\"closeOnBackdrop\"\n [closeOnEscapeKey]=\"closeOnEscapeKey\"\n [closeOnSelect]=\"closeOnSelect\"\n [autoPlacement]=\"autoPlacement\"\n [shift]=\"shift\"\n [style.minWidth]=\"minWidth ? minWidth + 'px' : null\"\n class=\"menu-popover\"\n (keydown)=\"_onKeydown($event)\"\n (displayChanged)=\"menuVisibilityChanged($event)\"\n role=\"menu\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n>\n <ng-content select=\"kirby-item\"></ng-content>\n</kirby-card>\n", styles: [":host{position:relative}.button-container{display:inline-block}kirby-card{max-height:352px;overflow-y:auto;box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26;min-width:240px;max-width:460px}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kirby-button],Button[kirby-button],a[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: FloatingDirective, selector: "[kirbyFloating]", inputs: ["reference", "placement", "strategy", "triggers", "DOMPortalOutlet", "portalOutletConfig", "isDisabled", "offset", "shift", "autoPlacement", "closeOnSelect", "closeOnEscapeKey", "closeOnBackdrop"], outputs: ["displayChanged"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: i2.IconComponent, selector: "kirby-icon", inputs: ["size", "name"] }, { kind: "ngmodule", type: CardModule }, { kind: "component", type: i3.CardComponent, selector: "kirby-card", inputs: ["title", "subtitle", "backgroundImageUrl", "hasPadding", "sizes", "variant"] }, { kind: "ngmodule", type: ItemModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
49
243
|
}
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
244
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MenuComponent, decorators: [{
|
|
51
245
|
type: Component,
|
|
52
|
-
args: [{ selector: 'kirby-menu', standalone: true, imports: [ButtonComponent, CommonModule, FloatingDirective, IconModule, CardModule, ItemModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"button-container\" #buttonContainer>\n <ng-content select=\"button[kirby-button]\"></ng-content>\n <ng-container *ngIf=\"!userProvidedButton\">\n <button\n kirby-button\n [size]=\"buttonSize\"\n [disabled]=\"isDisabled\"\n type=\"button\"\n [attentionLevel]=\"attentionLevel\"\n
|
|
246
|
+
args: [{ selector: 'kirby-menu', standalone: true, imports: [ButtonComponent, CommonModule, FloatingDirective, IconModule, CardModule, ItemModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"button-container\" #buttonContainer>\n <ng-content select=\"button[kirby-button]\"></ng-content>\n <ng-container *ngIf=\"!userProvidedButton\">\n <button\n #defaultButton\n [id]=\"triggerButtonId\"\n kirby-button\n [size]=\"buttonSize\"\n [disabled]=\"isDisabled\"\n type=\"button\"\n [attentionLevel]=\"attentionLevel\"\n aria-haspopup=\"true\"\n [attr.aria-controls]=\"menuId\"\n aria-expanded=\"false\"\n >\n <kirby-icon [name]=\"'more'\"></kirby-icon>\n </button>\n </ng-container>\n</div>\n<kirby-card\n [id]=\"menuId\"\n kirbyFloating\n [strategy]=\"'fixed'\"\n [reference]=\"buttonContainerElement\"\n [isDisabled]=\"isDisabled\"\n [triggers]=\"triggers\"\n [placement]=\"placement\"\n [DOMPortalOutlet]=\"DOMPortalOutlet\"\n [portalOutletConfig]=\"portalOutletConfig\"\n [closeOnBackdrop]=\"closeOnBackdrop\"\n [closeOnEscapeKey]=\"closeOnEscapeKey\"\n [closeOnSelect]=\"closeOnSelect\"\n [autoPlacement]=\"autoPlacement\"\n [shift]=\"shift\"\n [style.minWidth]=\"minWidth ? minWidth + 'px' : null\"\n class=\"menu-popover\"\n (keydown)=\"_onKeydown($event)\"\n (displayChanged)=\"menuVisibilityChanged($event)\"\n role=\"menu\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n>\n <ng-content select=\"kirby-item\"></ng-content>\n</kirby-card>\n", styles: [":host{position:relative}.button-container{display:inline-block}kirby-card{max-height:352px;overflow-y:auto;box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26;min-width:240px;max-width:460px}\n"] }]
|
|
53
247
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }], propDecorators: { isDisabled: [{
|
|
54
248
|
type: Input
|
|
55
249
|
}], buttonSize: [{
|
|
@@ -85,9 +279,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
85
279
|
}], userProvidedButton: [{
|
|
86
280
|
type: ContentChild,
|
|
87
281
|
args: [ButtonComponent, { read: ElementRef }]
|
|
88
|
-
}],
|
|
282
|
+
}], floatingMenu: [{
|
|
89
283
|
type: ViewChild,
|
|
90
284
|
args: [FloatingDirective]
|
|
285
|
+
}], kirbyItems: [{
|
|
286
|
+
type: ContentChildren,
|
|
287
|
+
args: [ItemComponent, { read: ElementRef }]
|
|
288
|
+
}], kirbyItemComponents: [{
|
|
289
|
+
type: ContentChildren,
|
|
290
|
+
args: [ItemComponent]
|
|
291
|
+
}], _onKeydown: [{
|
|
292
|
+
type: HostListener,
|
|
293
|
+
args: ['keydown', ['$event']]
|
|
91
294
|
}] } });
|
|
92
295
|
|
|
93
296
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kirbydesign-designsystem-menu.mjs","sources":["../../menu/src/menu.component.ts","../../menu/src/menu.component.html","../../menu/src/kirbydesign-designsystem-menu.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n Input,\n NgZone,\n OnDestroy,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { Placement } from '@floating-ui/dom';\n\nimport { ItemModule } from '@kirbydesign/designsystem/item';\nimport { CardModule } from '@kirbydesign/designsystem/card';\nimport { IconModule } from '@kirbydesign/designsystem/icon';\nimport { AttentionLevel, ButtonComponent, ButtonSize } from '@kirbydesign/designsystem/button';\nimport {\n FloatingDirective,\n FloatingOffset,\n PortalOutletConfig,\n TriggerEvent,\n} from '@kirbydesign/designsystem/shared/floating';\nimport { EventListenerDisposeFn } from '@kirbydesign/designsystem/types';\n\n@Component({\n selector: 'kirby-menu',\n standalone: true,\n imports: [ButtonComponent, CommonModule, FloatingDirective, IconModule, CardModule, ItemModule],\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuComponent implements AfterViewInit, OnDestroy {\n constructor(\n private cdf: ChangeDetectorRef,\n private elementRef: ElementRef<HTMLElement>,\n private zone: NgZone,\n private renderer: Renderer2\n ) {}\n\n @Input() public isDisabled: boolean = false;\n\n @Input() public buttonSize: ButtonSize = ButtonSize.MD;\n\n @Input() public placement: Placement = 'bottom-start';\n\n @Input() public attentionLevel: AttentionLevel = '3';\n\n @Input() public triggers: Array<TriggerEvent> = ['click'];\n\n @Input() public DOMPortalOutlet: HTMLElement = this.elementRef.nativeElement.ownerDocument.body;\n\n @Input() public portalOutletConfig: PortalOutletConfig | undefined;\n\n @Input() public autoPlacement: boolean = false;\n\n @Input() public closeOnSelect: boolean = true;\n\n @Input() public closeOnEscapeKey: boolean = true;\n\n @Input() public closeOnBackdrop: boolean = true;\n\n @Input() public shift: boolean = true;\n\n /**\n * The minimum width of the menu. If not set, the default width is 240px\n */\n @Input() public minWidth: number;\n\n @ViewChild('buttonContainer', { read: ElementRef })\n public buttonContainerElement: ElementRef<HTMLElement> | undefined;\n\n @ViewChild('defaultButton', { read: ElementRef })\n public defaultButtonElement: ElementRef<HTMLElement> | undefined;\n\n @ContentChild(ButtonComponent, { read: ElementRef }) public userProvidedButton:\n | ElementRef<HTMLElement>\n | undefined;\n\n @ViewChild(FloatingDirective)\n private floatingDirective: FloatingDirective;\n\n public FloatingOffset: typeof FloatingOffset = FloatingOffset;\n\n private scrollListenerDisposeFn: EventListenerDisposeFn;\n\n public ngAfterViewInit(): void {\n this.cdf.detectChanges(); // Sets the updated reference for kirby-floating\n\n this.zone.runOutsideAngular(() => {\n /*\n * Listen for ionScroll outside of Angular's change detection to\n * avoid a change detection cycle for every scroll-event fired\n */\n this.scrollListenerDisposeFn = this.renderer.listen(document, 'ionScroll', () => {\n this.floatingDirective.hide();\n });\n });\n }\n\n ngOnDestroy(): void {\n this.scrollListenerDisposeFn?.();\n }\n}\n","<div class=\"button-container\" #buttonContainer>\n <ng-content select=\"button[kirby-button]\"></ng-content>\n <ng-container *ngIf=\"!userProvidedButton\">\n <button\n kirby-button\n [size]=\"buttonSize\"\n [disabled]=\"isDisabled\"\n type=\"button\"\n [attentionLevel]=\"attentionLevel\"\n #defaultButton\n >\n <kirby-icon [name]=\"'more'\"></kirby-icon>\n </button>\n </ng-container>\n</div>\n<kirby-card\n kirbyFloating\n [strategy]=\"'fixed'\"\n [reference]=\"buttonContainerElement\"\n [isDisabled]=\"isDisabled\"\n [triggers]=\"triggers\"\n [placement]=\"placement\"\n [DOMPortalOutlet]=\"DOMPortalOutlet\"\n [portalOutletConfig]=\"portalOutletConfig\"\n [closeOnBackdrop]=\"closeOnBackdrop\"\n [closeOnEscapeKey]=\"closeOnEscapeKey\"\n [closeOnSelect]=\"closeOnSelect\"\n [autoPlacement]=\"autoPlacement\"\n [shift]=\"shift\"\n [ngStyle]=\"{\n minWidth: minWidth ? minWidth + 'px' : null\n }\"\n class=\"menu-popover\"\n>\n <ng-content select=\"kirby-item\"></ng-content>\n</kirby-card>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kirbydesign-designsystem-menu.mjs","sources":["../../menu/src/menu.component.ts","../../menu/src/menu.component.html","../../menu/src/kirbydesign-designsystem-menu.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n QueryList,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { Placement } from '@floating-ui/dom';\n\nimport { ItemComponent, ItemModule } from '@kirbydesign/designsystem/item';\nimport { CardModule } from '@kirbydesign/designsystem/card';\nimport { IconModule } from '@kirbydesign/designsystem/icon';\nimport { AttentionLevel, ButtonComponent, ButtonSize } from '@kirbydesign/designsystem/button';\nimport {\n FloatingDirective,\n FloatingOffset,\n PortalOutletConfig,\n TriggerEvent,\n} from '@kirbydesign/designsystem/shared/floating';\nimport { EventListenerDisposeFn } from '@kirbydesign/designsystem/types';\nimport { UniqueIdGenerator } from '@kirbydesign/designsystem/helpers';\n\n@Component({\n selector: 'kirby-menu',\n standalone: true,\n imports: [ButtonComponent, CommonModule, FloatingDirective, IconModule, CardModule, ItemModule],\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuComponent implements AfterViewInit, AfterContentInit, OnDestroy {\n readonly menuId: string = UniqueIdGenerator.scopedTo('kirby-menu').next();\n triggerButtonId: string = UniqueIdGenerator.scopedTo('kirby-menu-trigger-button').next();\n\n constructor(\n private cdr: ChangeDetectorRef,\n private elementRef: ElementRef<HTMLElement>,\n private zone: NgZone,\n private renderer: Renderer2\n ) {}\n\n @Input() public isDisabled: boolean = false;\n\n @Input() public buttonSize: ButtonSize = ButtonSize.MD;\n\n @Input() public placement: Placement = 'bottom-start';\n\n @Input() public attentionLevel: AttentionLevel = '3';\n\n @Input() public triggers: Array<TriggerEvent> = ['click'];\n\n @Input() public DOMPortalOutlet: HTMLElement = this.elementRef.nativeElement.ownerDocument.body;\n\n @Input() public portalOutletConfig: PortalOutletConfig | undefined;\n\n @Input() public autoPlacement: boolean = false;\n\n @Input() public closeOnSelect: boolean = true;\n\n @Input() public closeOnEscapeKey: boolean = true;\n\n @Input() public closeOnBackdrop: boolean = true;\n\n @Input() public shift: boolean = true;\n\n /**\n * The minimum width of the menu. If not set, the default width is 240px\n */\n @Input() public minWidth: number;\n\n @ViewChild('buttonContainer', { read: ElementRef })\n public buttonContainerElement: ElementRef<HTMLElement> | undefined;\n\n @ViewChild('defaultButton', { read: ElementRef })\n public defaultButtonElement: ElementRef<HTMLButtonElement> | undefined;\n\n @ContentChild(ButtonComponent, { read: ElementRef }) public userProvidedButton:\n | ElementRef<HTMLButtonElement>\n | undefined;\n\n @ViewChild(FloatingDirective)\n private floatingMenu: FloatingDirective;\n\n @ContentChildren(ItemComponent, { read: ElementRef }) public kirbyItems: QueryList<\n ElementRef<HTMLElement>\n >;\n\n @ContentChildren(ItemComponent) public kirbyItemComponents: QueryList<ItemComponent>;\n\n public floatingMenuIsShown: boolean = false;\n public FloatingOffset: typeof FloatingOffset = FloatingOffset;\n private scrollListenerDisposeFn: EventListenerDisposeFn;\n private focusedIndex = -1;\n\n @HostListener('keydown', ['$event'])\n _onKeydown(event: KeyboardEvent) {\n if (this.kirbyItems.length === 0) {\n console.warn('[Kirby] No items found within menu');\n return;\n }\n if (this.floatingMenuIsShown) {\n this.handleKeyDownForOpenedMenu(event);\n } else {\n this.handleKeyDownForClosedMenu(event);\n }\n }\n\n private preventDefaultAndStopImmediatePropagation(event: KeyboardEvent) {\n event.stopImmediatePropagation();\n event.preventDefault();\n }\n\n private getFirstInteractiveElement(el: HTMLIonItemElement) {\n return el.querySelector<HTMLIonToggleElement | HTMLIonRadioElement | HTMLIonCheckboxElement>(\n 'ion-toggle:not([disabled]), ion-checkbox:not([disabled]), ion-radio:not([disabled])'\n );\n }\n\n private handleKeyDownForClosedMenu(event: KeyboardEvent) {\n const key = event.key;\n switch (key) {\n case ' ':\n case 'Enter':\n case 'ArrowDown':\n this.preventDefaultAndStopImmediatePropagation(event);\n this.focusedIndex = 0;\n this.floatingMenu.show();\n this.focusItem();\n break;\n case 'ArrowUp':\n this.preventDefaultAndStopImmediatePropagation(event);\n this.focusedIndex = this.kirbyItems.length - 1;\n this.floatingMenu.show();\n this.focusItem();\n break;\n }\n }\n\n private isPrintableCharacter(key: string) {\n return key.length === 1 && key.match(/\\S/);\n }\n\n private handleKeyDownForOpenedMenu(event: KeyboardEvent) {\n const key = event.key;\n\n switch (key) {\n case 'ArrowDown':\n this.preventDefaultAndStopImmediatePropagation(event);\n if (this.focusedIndex === this.kirbyItems.length - 1) {\n this.focusedIndex = 0;\n } else {\n this.focusedIndex++;\n }\n this.focusItem();\n break;\n case 'ArrowUp':\n this.preventDefaultAndStopImmediatePropagation(event);\n if (this.focusedIndex === 0) {\n this.focusedIndex = this.kirbyItems.length - 1;\n } else {\n this.focusedIndex--;\n }\n this.focusItem();\n break;\n case 'Home': {\n this.preventDefaultAndStopImmediatePropagation(event);\n if (this.focusedIndex > 0) {\n this.focusedIndex = 0;\n this.focusItem();\n }\n break;\n }\n case 'End': {\n this.preventDefaultAndStopImmediatePropagation(event);\n if (this.focusedIndex < this.kirbyItems.length - 1) {\n this.focusedIndex = this.kirbyItems.length - 1;\n this.focusItem();\n }\n break;\n }\n case 'Escape':\n this.preventDefaultAndStopImmediatePropagation(event);\n if (this.closeOnEscapeKey) {\n this.floatingMenu.hide();\n }\n break;\n case 'Tab':\n this.floatingMenu.hide();\n break;\n default: {\n if (this.isPrintableCharacter(key)) {\n this.preventDefaultAndStopImmediatePropagation(event);\n const foundItemIndex = this.getIndexOfItemByFirstCharacter(key);\n if (foundItemIndex > -1) {\n this.focusedIndex = foundItemIndex;\n this.focusItem();\n }\n }\n }\n }\n }\n\n private getIndexOfItemByFirstCharacter(char: string) {\n return this.getIndexByFirstMatchingStartString(\n char,\n this.kirbyItems.map((item) => item.nativeElement.innerText),\n this.focusedIndex + 1\n );\n }\n\n private getIndexByFirstMatchingStartString(\n searchString: string,\n words: string[],\n startIndex: number\n ): number {\n searchString = searchString.toLowerCase();\n\n const wordsStartingWithMatchString = words\n .map((word, index) => {\n return { word: word.toLowerCase(), index };\n })\n .filter((match) => match.word.startsWith(searchString));\n\n if (wordsStartingWithMatchString.length === 0) {\n return -1;\n }\n\n const firstWordStartingWithChar = wordsStartingWithMatchString[0];\n const nextWordStartingWithChar = wordsStartingWithMatchString.find(\n (wordAndIndex) => wordAndIndex.index >= startIndex\n );\n\n return nextWordStartingWithChar?.index ?? firstWordStartingWithChar.index;\n }\n\n focusItem() {\n const itemToBeFocused = this.kirbyItems.get(this.focusedIndex);\n const ionItem = itemToBeFocused.nativeElement.querySelector('ion-item');\n\n // Look for interactive element within ion-item like toggle or checkbox and set focus if found\n const firstInteractiveElementWithinItem = this.getFirstInteractiveElement(ionItem);\n if (typeof firstInteractiveElementWithinItem?.['setFocus'] === 'function') {\n firstInteractiveElementWithinItem['setFocus']();\n } else {\n this.focusSelectableItem(ionItem);\n }\n }\n\n private focusSelectableItem(ionItem: HTMLIonItemElement) {\n const nativeButton: HTMLButtonElement =\n ionItem.shadowRoot.querySelector('button:not([disabled])');\n nativeButton?.focus();\n }\n\n getTriggerButton(): HTMLButtonElement {\n return (this.userProvidedButton ?? this.defaultButtonElement).nativeElement;\n }\n\n public ngAfterViewInit(): void {\n this.cdr.detectChanges(); // Sets the updated reference for kirby-floating\n\n this.zone.runOutsideAngular(() => {\n /*\n * Listen for ionScroll outside of Angular's change detection to\n * avoid a change detection cycle for every scroll-event fired\n */\n this.scrollListenerDisposeFn = this.renderer.listen(document, 'ionScroll', () => {\n this.floatingMenu.hide();\n });\n });\n }\n\n ngAfterContentInit(): void {\n this.setRoleAttributeForAllItems();\n this.setUserProvidedButtonAriaAttributes();\n this.ensureSelectableOnItems();\n }\n\n ensureSelectableOnItems() {\n this.kirbyItemComponents.forEach((itemComponent) => {\n if (itemComponent.selectable === undefined) {\n itemComponent.selectable = true;\n }\n });\n }\n\n private setRoleAttributeForAllItems() {\n this.kirbyItems.forEach((item) => {\n this.setRoleAttributeForItem(item.nativeElement);\n });\n }\n\n private setRoleAttributeForItem(item: HTMLElement) {\n let menuItemRole = 'menuitem';\n if (item.matches(':has(kirby-toggle, kirby-checkbox)')) {\n menuItemRole = 'menuitemcheckbox';\n } else if (item.matches(':has(kirby-radio)')) {\n menuItemRole = 'menuitemradio';\n }\n this.renderer.setAttribute(item, 'role', menuItemRole);\n }\n\n menuVisibilityChanged(menuIsShown: boolean) {\n this.floatingMenuIsShown = menuIsShown;\n this.renderer.setAttribute(this.getTriggerButton(), 'aria-expanded', menuIsShown.toString());\n if (!menuIsShown) {\n this.focusedIndex = -1;\n this.getTriggerButton().focus();\n }\n }\n\n private setUserProvidedButtonAriaAttributes() {\n if (!this.userProvidedButton) return;\n\n const button = this.userProvidedButton.nativeElement;\n if (button.id) {\n this.triggerButtonId = button.id;\n } else {\n this.renderer.setAttribute(button, 'id', this.triggerButtonId);\n }\n if (!button.getAttribute('aria-controls')) {\n this.renderer.setAttribute(button, 'aria-controls', this.menuId);\n }\n if (!button.getAttribute('aria-haspopup')) {\n this.renderer.setAttribute(button, 'aria-haspopup', 'true');\n }\n }\n\n ngOnDestroy(): void {\n this.scrollListenerDisposeFn?.();\n }\n}\n","<div class=\"button-container\" #buttonContainer>\n <ng-content select=\"button[kirby-button]\"></ng-content>\n <ng-container *ngIf=\"!userProvidedButton\">\n <button\n #defaultButton\n [id]=\"triggerButtonId\"\n kirby-button\n [size]=\"buttonSize\"\n [disabled]=\"isDisabled\"\n type=\"button\"\n [attentionLevel]=\"attentionLevel\"\n aria-haspopup=\"true\"\n [attr.aria-controls]=\"menuId\"\n aria-expanded=\"false\"\n >\n <kirby-icon [name]=\"'more'\"></kirby-icon>\n </button>\n </ng-container>\n</div>\n<kirby-card\n [id]=\"menuId\"\n kirbyFloating\n [strategy]=\"'fixed'\"\n [reference]=\"buttonContainerElement\"\n [isDisabled]=\"isDisabled\"\n [triggers]=\"triggers\"\n [placement]=\"placement\"\n [DOMPortalOutlet]=\"DOMPortalOutlet\"\n [portalOutletConfig]=\"portalOutletConfig\"\n [closeOnBackdrop]=\"closeOnBackdrop\"\n [closeOnEscapeKey]=\"closeOnEscapeKey\"\n [closeOnSelect]=\"closeOnSelect\"\n [autoPlacement]=\"autoPlacement\"\n [shift]=\"shift\"\n [style.minWidth]=\"minWidth ? minWidth + 'px' : null\"\n class=\"menu-popover\"\n (keydown)=\"_onKeydown($event)\"\n (displayChanged)=\"menuVisibilityChanged($event)\"\n role=\"menu\"\n [attr.aria-labelledby]=\"triggerButtonId\"\n>\n <ng-content select=\"kirby-item\"></ng-content>\n</kirby-card>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|