@kirbydesign/designsystem 11.0.0 → 11.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/index.d.ts +42 -6
- package/accordion/index.d.ts.map +1 -0
- package/action-group/index.d.ts +43 -6
- package/action-group/index.d.ts.map +1 -0
- package/avatar/index.d.ts +28 -6
- package/avatar/index.d.ts.map +1 -0
- package/badge/index.d.ts +20 -6
- package/badge/index.d.ts.map +1 -0
- package/button/index.d.ts +43 -6
- package/button/index.d.ts.map +1 -0
- package/calendar/index.d.ts +137 -6
- package/calendar/index.d.ts.map +1 -0
- package/card/index.d.ts +72 -6
- package/card/index.d.ts.map +1 -0
- package/chart/index.d.ts +198 -4
- package/chart/index.d.ts.map +1 -0
- package/checkbox/index.d.ts +69 -6
- package/checkbox/index.d.ts.map +1 -0
- package/config/index.d.ts +40 -4
- package/config/index.d.ts.map +1 -0
- package/data-table/index.d.ts +30 -4
- package/data-table/index.d.ts.map +1 -0
- package/divider/index.d.ts +10 -6
- package/divider/index.d.ts.map +1 -0
- package/dropdown/index.d.ts +166 -6
- package/dropdown/index.d.ts.map +1 -0
- package/empty-state/index.d.ts +37 -6
- package/empty-state/index.d.ts.map +1 -0
- package/fab-sheet/index.d.ts +29 -6
- package/fab-sheet/index.d.ts.map +1 -0
- package/fesm2022/kirbydesign-designsystem-accordion.mjs +42 -22
- package/fesm2022/kirbydesign-designsystem-accordion.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-action-group.mjs +5 -7
- package/fesm2022/kirbydesign-designsystem-action-group.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-avatar.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-avatar.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-badge.mjs +4 -6
- package/fesm2022/kirbydesign-designsystem-badge.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-button.mjs +4 -5
- package/fesm2022/kirbydesign-designsystem-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-calendar.mjs +4 -6
- package/fesm2022/kirbydesign-designsystem-calendar.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-card.mjs +20 -21
- package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-chart.mjs +478 -478
- package/fesm2022/kirbydesign-designsystem-chart.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs +6 -8
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-config.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-data-table.mjs +8 -8
- package/fesm2022/kirbydesign-designsystem-data-table.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-divider.mjs +4 -5
- package/fesm2022/kirbydesign-designsystem-divider.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-dropdown.mjs +27 -22
- package/fesm2022/kirbydesign-designsystem-dropdown.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-empty-state.mjs +10 -9
- package/fesm2022/kirbydesign-designsystem-empty-state.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs +5 -6
- package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-flag.mjs +5 -6
- package/fesm2022/kirbydesign-designsystem-flag.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-form-field.mjs +48 -41
- package/fesm2022/kirbydesign-designsystem-form-field.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-header.mjs +20 -20
- package/fesm2022/kirbydesign-designsystem-header.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-helpers-scss.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-helpers.mjs +9 -9
- package/fesm2022/kirbydesign-designsystem-helpers.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-icon.mjs +11 -10
- package/fesm2022/kirbydesign-designsystem-icon.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item-group.mjs +4 -5
- package/fesm2022/kirbydesign-designsystem-item-group.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item-sliding.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-item-sliding.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item.mjs +12 -13
- 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-list.mjs +43 -46
- package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs +8 -8
- package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-menu.mjs +8 -10
- package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-modal.mjs +643 -634
- package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-page.mjs +67 -54
- package/fesm2022/kirbydesign-designsystem-page.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-popover.mjs +5 -6
- package/fesm2022/kirbydesign-designsystem-popover.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-progress-circle.mjs +8 -9
- package/fesm2022/kirbydesign-designsystem-progress-circle.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-radio.mjs +16 -16
- package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-range.mjs +6 -8
- 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 +9 -10
- package/fesm2022/kirbydesign-designsystem-router-outlet.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-section-header.mjs +4 -5
- 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 +18 -18
- package/fesm2022/kirbydesign-designsystem-shared.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-slide-button.mjs +17 -70
- package/fesm2022/kirbydesign-designsystem-slide-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-slide.mjs +14 -14
- 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 +11 -11
- package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-tabs.mjs +14 -15
- 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 +4 -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 +9 -10
- package/fesm2022/kirbydesign-designsystem-toggle-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toggle.mjs +6 -8
- 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 +17 -18
- package/fesm2022/kirbydesign-designsystem.mjs.map +1 -1
- package/flag/index.d.ts +14 -6
- package/flag/index.d.ts.map +1 -0
- package/form-field/index.d.ts +230 -6
- package/form-field/index.d.ts.map +1 -0
- package/header/index.d.ts +70 -6
- package/header/index.d.ts.map +1 -0
- package/helpers/index.d.ts +94 -4
- package/helpers/index.d.ts.map +1 -0
- package/helpers/scss/index.d.ts +9 -6
- package/helpers/scss/index.d.ts.map +1 -0
- package/icon/index.d.ts +66 -4
- package/icon/index.d.ts.map +1 -0
- package/icons/svg/top-up.svg +1 -0
- package/index.d.ts +222 -6
- package/index.d.ts.map +1 -0
- package/item/index.d.ts +53 -6
- package/item/index.d.ts.map +1 -0
- package/item-group/index.d.ts +10 -6
- package/item-group/index.d.ts.map +1 -0
- package/item-sliding/index.d.ts +28 -6
- package/item-sliding/index.d.ts.map +1 -0
- package/kirby-app/index.d.ts +21 -6
- package/kirby-app/index.d.ts.map +1 -0
- package/list/index.d.ts +282 -4
- package/list/index.d.ts.map +1 -0
- package/loading-overlay/index.d.ts +26 -6
- package/loading-overlay/index.d.ts.map +1 -0
- package/menu/index.d.ts +71 -6
- package/menu/index.d.ts.map +1 -0
- package/modal/index.d.ts +492 -4
- package/modal/index.d.ts.map +1 -0
- package/package.json +17 -17
- package/page/index.d.ts +233 -4
- package/page/index.d.ts.map +1 -0
- package/popover/index.d.ts +40 -6
- package/popover/index.d.ts.map +1 -0
- package/progress-circle/index.d.ts +64 -6
- package/progress-circle/index.d.ts.map +1 -0
- package/radio/index.d.ts +100 -6
- package/radio/index.d.ts.map +1 -0
- package/range/index.d.ts +45 -6
- package/range/index.d.ts.map +1 -0
- package/reorder-list/index.d.ts +34 -6
- package/reorder-list/index.d.ts.map +1 -0
- package/router-outlet/index.d.ts +20 -6
- package/router-outlet/index.d.ts.map +1 -0
- package/section-header/index.d.ts +9 -6
- package/section-header/index.d.ts.map +1 -0
- package/shared/floating/index.d.ts +138 -4
- package/shared/floating/index.d.ts.map +1 -0
- package/shared/index.d.ts +150 -4
- package/shared/index.d.ts.map +1 -0
- package/shared/portal/index.d.ts +36 -4
- package/shared/portal/index.d.ts.map +1 -0
- package/slide/index.d.ts +66 -6
- package/slide/index.d.ts.map +1 -0
- package/slide-button/index.d.ts +35 -6
- package/slide-button/index.d.ts.map +1 -0
- package/spinner/index.d.ts +16 -6
- package/spinner/index.d.ts.map +1 -0
- package/tab-navigation/index.d.ts +58 -6
- package/tab-navigation/index.d.ts.map +1 -0
- package/tabs/index.d.ts +49 -6
- package/tabs/index.d.ts.map +1 -0
- package/testing/index.d.ts +62 -6
- package/testing/index.d.ts.map +1 -0
- package/testing-base/index.d.ts +816 -6
- package/testing-base/index.d.ts.map +1 -0
- package/testing-jasmine/index.d.ts +11 -6
- package/testing-jasmine/index.d.ts.map +1 -0
- package/testing-jest/index.d.ts +11 -6
- package/testing-jest/index.d.ts.map +1 -0
- package/toast/index.d.ts +34 -6
- package/toast/index.d.ts.map +1 -0
- package/toggle/index.d.ts +64 -6
- package/toggle/index.d.ts.map +1 -0
- package/toggle-button/index.d.ts +58 -6
- package/toggle-button/index.d.ts.map +1 -0
- package/types/index.d.ts +21 -6
- package/types/index.d.ts.map +1 -0
- package/accordion/accordion-item.component.d.ts +0 -22
- package/accordion/accordion-item.component.d.ts.map +0 -1
- package/accordion/accordion.directive.d.ts +0 -6
- package/accordion/accordion.directive.d.ts.map +0 -1
- package/accordion/accordion.module.d.ts +0 -10
- package/accordion/accordion.module.d.ts.map +0 -1
- package/accordion/kirbydesign-designsystem-accordion.d.ts.map +0 -1
- package/accordion/public_api.d.ts +0 -4
- package/accordion/public_api.d.ts.map +0 -1
- package/action-group/action-group.component.d.ts +0 -40
- package/action-group/action-group.component.d.ts.map +0 -1
- package/action-group/kirbydesign-designsystem-action-group.d.ts.map +0 -1
- package/action-group/public_api.d.ts +0 -2
- package/action-group/public_api.d.ts.map +0 -1
- package/avatar/avatar.component.d.ts +0 -25
- package/avatar/avatar.component.d.ts.map +0 -1
- package/avatar/kirbydesign-designsystem-avatar.d.ts.map +0 -1
- package/avatar/public_api.d.ts +0 -2
- package/avatar/public_api.d.ts.map +0 -1
- package/badge/badge.component.d.ts +0 -16
- package/badge/badge.component.d.ts.map +0 -1
- package/badge/kirbydesign-designsystem-badge.d.ts.map +0 -1
- package/badge/public_api.d.ts +0 -2
- package/badge/public_api.d.ts.map +0 -1
- package/button/button.component.d.ts +0 -39
- package/button/button.component.d.ts.map +0 -1
- package/button/kirbydesign-designsystem-button.d.ts.map +0 -1
- package/button/public_api.d.ts +0 -2
- package/button/public_api.d.ts.map +0 -1
- package/calendar/calendar.component.d.ts +0 -113
- package/calendar/calendar.component.d.ts.map +0 -1
- package/calendar/interfaces/calendar-day.d.ts +0 -18
- package/calendar/interfaces/calendar-day.d.ts.map +0 -1
- package/calendar/interfaces/calendar-year-navigator-config.d.ts +0 -5
- package/calendar/interfaces/calendar-year-navigator-config.d.ts.map +0 -1
- package/calendar/kirbydesign-designsystem-calendar.d.ts.map +0 -1
- package/calendar/public_api.d.ts +0 -3
- package/calendar/public_api.d.ts.map +0 -1
- package/card/card-as-button/card-as-button.directive.d.ts +0 -16
- package/card/card-as-button/card-as-button.directive.d.ts.map +0 -1
- package/card/card-flag-level.d.ts +0 -3
- package/card/card-flag-level.d.ts.map +0 -1
- package/card/card-footer/card-footer.component.d.ts +0 -7
- package/card/card-footer/card-footer.component.d.ts.map +0 -1
- package/card/card-header/card-header.component.d.ts +0 -13
- package/card/card-header/card-header.component.d.ts.map +0 -1
- package/card/card.component.d.ts +0 -27
- package/card/card.component.d.ts.map +0 -1
- package/card/card.module.d.ts +0 -13
- package/card/card.module.d.ts.map +0 -1
- package/card/kirbydesign-designsystem-card.d.ts.map +0 -1
- package/card/public_api.d.ts +0 -7
- package/card/public_api.d.ts.map +0 -1
- package/chart/chart/chart.component.d.ts +0 -8
- package/chart/chart/chart.component.d.ts.map +0 -1
- package/chart/chart/index.d.ts +0 -2
- package/chart/chart/index.d.ts.map +0 -1
- package/chart/chart-config/chart-bar-config/chart-bar-config.d.ts +0 -10
- package/chart/chart-config/chart-bar-config/chart-bar-config.d.ts.map +0 -1
- package/chart/chart-config/chart-base-config.d.ts +0 -7
- package/chart/chart-config/chart-base-config.d.ts.map +0 -1
- package/chart/chart-config/chart-stock-config/chart-stock-config.d.ts +0 -21
- package/chart/chart-config/chart-stock-config/chart-stock-config.d.ts.map +0 -1
- package/chart/chart-config/chart-stock-config/data-label-position/data-label-position.d.ts +0 -5
- package/chart/chart-config/chart-stock-config/data-label-position/data-label-position.d.ts.map +0 -1
- package/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.d.ts +0 -3
- package/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.d.ts.map +0 -1
- package/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.model.d.ts +0 -13
- package/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.model.d.ts.map +0 -1
- package/chart/charts.module.d.ts +0 -9
- package/chart/charts.module.d.ts.map +0 -1
- package/chart/kirbydesign-designsystem-chart.d.ts.map +0 -1
- package/chart/public_api.d.ts +0 -7
- package/chart/public_api.d.ts.map +0 -1
- package/chart/shared/base-chart/base-chart.component.d.ts +0 -35
- package/chart/shared/base-chart/base-chart.component.d.ts.map +0 -1
- package/chart/shared/base-chart/index.d.ts +0 -2
- package/chart/shared/base-chart/index.d.ts.map +0 -1
- package/chart/shared/chart-config-service/chart-config.service.d.ts +0 -31
- package/chart/shared/chart-config-service/chart-config.service.d.ts.map +0 -1
- package/chart/shared/chart-config-service/configs/annotations.config.d.ts +0 -3
- package/chart/shared/chart-config-service/configs/annotations.config.d.ts.map +0 -1
- package/chart/shared/chart-config-service/configs/global-defaults.config.d.ts +0 -49
- package/chart/shared/chart-config-service/configs/global-defaults.config.d.ts.map +0 -1
- package/chart/shared/chart-config-service/configs/interaction-functions-extensions.config.d.ts +0 -5
- package/chart/shared/chart-config-service/configs/interaction-functions-extensions.config.d.ts.map +0 -1
- package/chart/shared/chart-config-service/configs/type.config.d.ts +0 -3
- package/chart/shared/chart-config-service/configs/type.config.d.ts.map +0 -1
- package/chart/shared/chart-config-service/index.d.ts +0 -2
- package/chart/shared/chart-config-service/index.d.ts.map +0 -1
- package/chart/shared/chart-js-service/annotations.delegate.d.ts +0 -17
- package/chart/shared/chart-js-service/annotations.delegate.d.ts.map +0 -1
- package/chart/shared/chart-js-service/chart-js.service.d.ts +0 -46
- package/chart/shared/chart-js-service/chart-js.service.d.ts.map +0 -1
- package/chart/shared/chart-js-service/chartjs-plugin-marker/chartjs-plugin-marker.d.ts +0 -15
- package/chart/shared/chart-js-service/chartjs-plugin-marker/chartjs-plugin-marker.d.ts.map +0 -1
- package/chart/shared/chart-js-service/configured-chart-js.d.ts +0 -4
- package/chart/shared/chart-js-service/configured-chart-js.d.ts.map +0 -1
- package/chart/shared/chart-js-service/index.d.ts +0 -3
- package/chart/shared/chart-js-service/index.d.ts.map +0 -1
- package/chart/shared/chart-js-service/test-utils.d.ts +0 -5
- package/chart/shared/chart-js-service/test-utils.d.ts.map +0 -1
- package/chart/shared/charts.types.d.ts +0 -27
- package/chart/shared/charts.types.d.ts.map +0 -1
- package/chart/shared/index.d.ts +0 -5
- package/chart/shared/index.d.ts.map +0 -1
- package/chart/stock-chart/index.d.ts +0 -2
- package/chart/stock-chart/index.d.ts.map +0 -1
- package/chart/stock-chart/stock-chart-js.service.d.ts +0 -38
- package/chart/stock-chart/stock-chart-js.service.d.ts.map +0 -1
- package/chart/stock-chart/stock-chart.component.d.ts +0 -10
- package/chart/stock-chart/stock-chart.component.d.ts.map +0 -1
- package/checkbox/checkbox.component.d.ts +0 -66
- package/checkbox/checkbox.component.d.ts.map +0 -1
- package/checkbox/kirbydesign-designsystem-checkbox.d.ts.map +0 -1
- package/checkbox/public_api.d.ts +0 -2
- package/checkbox/public_api.d.ts.map +0 -1
- package/config/kirbydesign-designsystem-config.d.ts.map +0 -1
- package/config/provide-kirby.d.ts +0 -38
- package/config/provide-kirby.d.ts.map +0 -1
- package/config/public_api.d.ts +0 -2
- package/config/public_api.d.ts.map +0 -1
- package/data-table/data-table.module.d.ts +0 -13
- package/data-table/data-table.module.d.ts.map +0 -1
- package/data-table/kirbydesign-designsystem-data-table.d.ts.map +0 -1
- package/data-table/public_api.d.ts +0 -3
- package/data-table/public_api.d.ts.map +0 -1
- package/data-table/sortable/sortable.component.d.ts +0 -18
- package/data-table/sortable/sortable.component.d.ts.map +0 -1
- package/divider/divider.component.d.ts +0 -7
- package/divider/divider.component.d.ts.map +0 -1
- package/divider/kirbydesign-designsystem-divider.d.ts.map +0 -1
- package/divider/public_api.d.ts +0 -2
- package/divider/public_api.d.ts.map +0 -1
- package/dropdown/dropdown.component.d.ts +0 -131
- package/dropdown/dropdown.component.d.ts.map +0 -1
- package/dropdown/dropdown.module.d.ts +0 -16
- package/dropdown/dropdown.module.d.ts.map +0 -1
- package/dropdown/dropdown.types.d.ts +0 -10
- package/dropdown/dropdown.types.d.ts.map +0 -1
- package/dropdown/keyboard-handler.service.d.ts +0 -7
- package/dropdown/keyboard-handler.service.d.ts.map +0 -1
- package/dropdown/kirbydesign-designsystem-dropdown.d.ts.map +0 -1
- package/dropdown/public_api.d.ts +0 -6
- package/dropdown/public_api.d.ts.map +0 -1
- package/empty-state/empty-state.component.d.ts +0 -24
- package/empty-state/empty-state.component.d.ts.map +0 -1
- package/empty-state/empty-state.module.d.ts +0 -11
- package/empty-state/empty-state.module.d.ts.map +0 -1
- package/empty-state/kirbydesign-designsystem-empty-state.d.ts.map +0 -1
- package/empty-state/public_api.d.ts +0 -3
- package/empty-state/public_api.d.ts.map +0 -1
- package/fab-sheet/fab-sheet.component.d.ts +0 -26
- package/fab-sheet/fab-sheet.component.d.ts.map +0 -1
- package/fab-sheet/kirbydesign-designsystem-fab-sheet.d.ts.map +0 -1
- package/fab-sheet/public_api.d.ts +0 -2
- package/fab-sheet/public_api.d.ts.map +0 -1
- package/flag/flag.component.d.ts +0 -10
- package/flag/flag.component.d.ts.map +0 -1
- package/flag/kirbydesign-designsystem-flag.d.ts.map +0 -1
- package/flag/public_api.d.ts +0 -2
- package/flag/public_api.d.ts.map +0 -1
- package/form-field/directives/affix/affix.directive.d.ts +0 -10
- package/form-field/directives/affix/affix.directive.d.ts.map +0 -1
- package/form-field/directives/date/date-input.directive.d.ts +0 -45
- package/form-field/directives/date/date-input.directive.d.ts.map +0 -1
- package/form-field/directives/decimal-mask/decimal-mask.directive.d.ts +0 -41
- package/form-field/directives/decimal-mask/decimal-mask.directive.d.ts.map +0 -1
- package/form-field/form-field-message/form-field-message.component.d.ts +0 -8
- package/form-field/form-field-message/form-field-message.component.d.ts.map +0 -1
- package/form-field/form-field.component.d.ts +0 -58
- package/form-field/form-field.component.d.ts.map +0 -1
- package/form-field/form-field.module.d.ts +0 -14
- package/form-field/form-field.module.d.ts.map +0 -1
- package/form-field/input/input.component.d.ts +0 -39
- package/form-field/input/input.component.d.ts.map +0 -1
- package/form-field/input-counter/input-counter.component.d.ts +0 -16
- package/form-field/input-counter/input-counter.component.d.ts.map +0 -1
- package/form-field/kirbydesign-designsystem-form-field.d.ts.map +0 -1
- package/form-field/public_api.d.ts +0 -10
- package/form-field/public_api.d.ts.map +0 -1
- package/form-field/textarea/textarea.component.d.ts +0 -28
- package/form-field/textarea/textarea.component.d.ts.map +0 -1
- package/header/header.component.d.ts +0 -59
- package/header/header.component.d.ts.map +0 -1
- package/header/header.module.d.ts +0 -10
- package/header/header.module.d.ts.map +0 -1
- package/header/kirbydesign-designsystem-header.d.ts.map +0 -1
- package/header/public_api.d.ts +0 -3
- package/header/public_api.d.ts.map +0 -1
- package/helpers/chart-config-has-type.d.ts +0 -3
- package/helpers/chart-config-has-type.d.ts.map +0 -1
- package/helpers/color-helper.d.ts +0 -2
- package/helpers/color-helper.d.ts.map +0 -1
- package/helpers/content-mutation-observer.d.ts +0 -9
- package/helpers/content-mutation-observer.d.ts.map +0 -1
- package/helpers/deep-copy.d.ts +0 -2
- package/helpers/deep-copy.d.ts.map +0 -1
- package/helpers/design-token-helper.d.ts +0 -2
- package/helpers/design-token-helper.d.ts.map +0 -1
- package/helpers/element-ancestor-utils.d.ts +0 -3
- package/helpers/element-ancestor-utils.d.ts.map +0 -1
- package/helpers/ionic-element-part-helper.d.ts +0 -10
- package/helpers/ionic-element-part-helper.d.ts.map +0 -1
- package/helpers/kirby-animation.d.ts +0 -20
- package/helpers/kirby-animation.d.ts.map +0 -1
- package/helpers/kirbydesign-designsystem-helpers.d.ts.map +0 -1
- package/helpers/line-clamp-helper.d.ts +0 -12
- package/helpers/line-clamp-helper.d.ts.map +0 -1
- package/helpers/merge-deep.d.ts +0 -17
- package/helpers/merge-deep.d.ts.map +0 -1
- package/helpers/platform.service.d.ts +0 -11
- package/helpers/platform.service.d.ts.map +0 -1
- package/helpers/public_api.d.ts +0 -15
- package/helpers/public_api.d.ts.map +0 -1
- package/helpers/scss/kirbydesign-designsystem-helpers-scss.d.ts.map +0 -1
- package/helpers/scss/public_api.d.ts +0 -2
- package/helpers/scss/public_api.d.ts.map +0 -1
- package/helpers/scss/scss-helper.d.ts +0 -7
- package/helpers/scss/scss-helper.d.ts.map +0 -1
- package/helpers/string-helper.d.ts +0 -2
- package/helpers/string-helper.d.ts.map +0 -1
- package/helpers/theme-color.type.d.ts +0 -2
- package/helpers/theme-color.type.d.ts.map +0 -1
- package/helpers/unique-id-generator.helper.d.ts +0 -9
- package/helpers/unique-id-generator.helper.d.ts.map +0 -1
- package/icon/icon-registry.service.d.ts +0 -21
- package/icon/icon-registry.service.d.ts.map +0 -1
- package/icon/icon-settings.d.ts +0 -8
- package/icon/icon-settings.d.ts.map +0 -1
- package/icon/icon.component.d.ts +0 -29
- package/icon/icon.component.d.ts.map +0 -1
- package/icon/icon.module.d.ts +0 -10
- package/icon/icon.module.d.ts.map +0 -1
- package/icon/kirby-icon-settings.d.ts +0 -4
- package/icon/kirby-icon-settings.d.ts.map +0 -1
- package/icon/kirbydesign-designsystem-icon.d.ts.map +0 -1
- package/icon/public_api.d.ts +0 -6
- package/icon/public_api.d.ts.map +0 -1
- package/item/item.component.d.ts +0 -34
- package/item/item.component.d.ts.map +0 -1
- package/item/item.module.d.ts +0 -12
- package/item/item.module.d.ts.map +0 -1
- package/item/kirbydesign-designsystem-item.d.ts.map +0 -1
- package/item/label/label.component.d.ts +0 -8
- package/item/label/label.component.d.ts.map +0 -1
- package/item/public_api.d.ts +0 -4
- package/item/public_api.d.ts.map +0 -1
- package/item-group/item-group.component.d.ts +0 -7
- package/item-group/item-group.component.d.ts.map +0 -1
- package/item-group/kirbydesign-designsystem-item-group.d.ts.map +0 -1
- package/item-group/public_api.d.ts +0 -2
- package/item-group/public_api.d.ts.map +0 -1
- package/item-sliding/item-sliding.component.d.ts +0 -14
- package/item-sliding/item-sliding.component.d.ts.map +0 -1
- package/item-sliding/item-sliding.types.d.ts +0 -11
- package/item-sliding/item-sliding.types.d.ts.map +0 -1
- package/item-sliding/kirbydesign-designsystem-item-sliding.d.ts.map +0 -1
- package/item-sliding/public_api.d.ts +0 -3
- package/item-sliding/public_api.d.ts.map +0 -1
- package/kirby-app/kirby-app.component.d.ts +0 -10
- package/kirby-app/kirby-app.component.d.ts.map +0 -1
- package/kirby-app/kirby-app.module.d.ts +0 -10
- package/kirby-app/kirby-app.module.d.ts.map +0 -1
- package/kirby-app/kirbydesign-designsystem-kirby-app.d.ts.map +0 -1
- package/kirby-app/public_api.d.ts +0 -3
- package/kirby-app/public_api.d.ts.map +0 -1
- package/kirbydesign-designsystem.d.ts.map +0 -1
- package/lib/components/index.d.ts +0 -3
- package/lib/components/index.d.ts.map +0 -1
- package/lib/components/segmented-control/segment-item.d.ts +0 -14
- package/lib/components/segmented-control/segment-item.d.ts.map +0 -1
- package/lib/components/segmented-control/segmented-control.component.d.ts +0 -86
- package/lib/components/segmented-control/segmented-control.component.d.ts.map +0 -1
- package/lib/directives/index.d.ts +0 -3
- package/lib/directives/index.d.ts.map +0 -1
- package/lib/directives/key-handler/key-handler.directive.d.ts +0 -10
- package/lib/directives/key-handler/key-handler.directive.d.ts.map +0 -1
- package/lib/directives/modal-router-link/modal-router-link.directive.d.ts +0 -16
- package/lib/directives/modal-router-link/modal-router-link.directive.d.ts.map +0 -1
- package/lib/index.d.ts +0 -49
- package/lib/index.d.ts.map +0 -1
- package/lib/kirby.module.d.ts +0 -57
- package/lib/kirby.module.d.ts.map +0 -1
- package/list/directives/index.d.ts +0 -4
- package/list/directives/index.d.ts.map +0 -1
- package/list/directives/infinite-scroll.directive.d.ts +0 -50
- package/list/directives/infinite-scroll.directive.d.ts.map +0 -1
- package/list/directives/list-item-color.directive.d.ts +0 -13
- package/list/directives/list-item-color.directive.d.ts.map +0 -1
- package/list/directives/scroll.model.d.ts +0 -6
- package/list/directives/scroll.model.d.ts.map +0 -1
- package/list/helpers/index.d.ts +0 -2
- package/list/helpers/index.d.ts.map +0 -1
- package/list/helpers/list-helper.d.ts +0 -22
- package/list/helpers/list-helper.d.ts.map +0 -1
- package/list/kirbydesign-designsystem-list.d.ts.map +0 -1
- package/list/list-experimental/index.d.ts +0 -2
- package/list/list-experimental/index.d.ts.map +0 -1
- package/list/list-experimental/list-experimental.component.d.ts +0 -9
- package/list/list-experimental/list-experimental.component.d.ts.map +0 -1
- package/list/list-header/index.d.ts +0 -2
- package/list/list-header/index.d.ts.map +0 -1
- package/list/list-header/list-header.component.d.ts +0 -7
- package/list/list-header/list-header.component.d.ts.map +0 -1
- package/list/list-item/index.d.ts +0 -2
- package/list/list-item/index.d.ts.map +0 -1
- package/list/list-item/list-item.component.d.ts +0 -37
- package/list/list-item/list-item.component.d.ts.map +0 -1
- package/list/list-section-header/index.d.ts +0 -2
- package/list/list-section-header/index.d.ts.map +0 -1
- package/list/list-section-header/list-section-header.component.d.ts +0 -7
- package/list/list-section-header/list-section-header.component.d.ts.map +0 -1
- package/list/list-swipe-action.d.ts +0 -2
- package/list/list-swipe-action.d.ts.map +0 -1
- package/list/list-swipe-action.type.d.ts +0 -12
- package/list/list-swipe-action.type.d.ts.map +0 -1
- package/list/list.component.d.ts +0 -108
- package/list/list.component.d.ts.map +0 -1
- package/list/list.directive.d.ts +0 -18
- package/list/list.directive.d.ts.map +0 -1
- package/list/list.event.d.ts +0 -8
- package/list/list.event.d.ts.map +0 -1
- package/list/list.module.d.ts +0 -19
- package/list/list.module.d.ts.map +0 -1
- package/list/public_api.d.ts +0 -12
- package/list/public_api.d.ts.map +0 -1
- package/loading-overlay/kirbydesign-designsystem-loading-overlay.d.ts.map +0 -1
- package/loading-overlay/loading-overlay.component.d.ts +0 -9
- package/loading-overlay/loading-overlay.component.d.ts.map +0 -1
- package/loading-overlay/loading-overlay.service.d.ts +0 -15
- package/loading-overlay/loading-overlay.service.d.ts.map +0 -1
- package/loading-overlay/public_api.d.ts +0 -3
- package/loading-overlay/public_api.d.ts.map +0 -1
- package/menu/kirbydesign-designsystem-menu.d.ts.map +0 -1
- package/menu/menu.component.d.ts +0 -68
- package/menu/menu.component.d.ts.map +0 -1
- package/menu/public_api.d.ts +0 -2
- package/menu/public_api.d.ts.map +0 -1
- package/modal/kirbydesign-designsystem-modal.d.ts.map +0 -1
- package/modal/modal/action-sheet/action-sheet.component.d.ts +0 -18
- package/modal/modal/action-sheet/action-sheet.component.d.ts.map +0 -1
- package/modal/modal/action-sheet/config/action-sheet-config.d.ts +0 -8
- package/modal/modal/action-sheet/config/action-sheet-config.d.ts.map +0 -1
- package/modal/modal/action-sheet/config/action-sheet-item.d.ts +0 -5
- package/modal/modal/action-sheet/config/action-sheet-item.d.ts.map +0 -1
- package/modal/modal/action-sheet/index.d.ts +0 -4
- package/modal/modal/action-sheet/index.d.ts.map +0 -1
- package/modal/modal/alert/alert.component.d.ts +0 -29
- package/modal/modal/alert/alert.component.d.ts.map +0 -1
- package/modal/modal/alert/config/alert-config.d.ts +0 -15
- package/modal/modal/alert/config/alert-config.d.ts.map +0 -1
- package/modal/modal/alert/index.d.ts +0 -3
- package/modal/modal/alert/index.d.ts.map +0 -1
- package/modal/modal/footer/modal-footer.component.d.ts +0 -13
- package/modal/modal/footer/modal-footer.component.d.ts.map +0 -1
- package/modal/modal/index.d.ts +0 -7
- package/modal/modal/index.d.ts.map +0 -1
- package/modal/modal/modal-component/modal.component.d.ts +0 -53
- package/modal/modal/modal-component/modal.component.d.ts.map +0 -1
- package/modal/modal/services/action-sheet.helper.d.ts +0 -12
- package/modal/modal/services/action-sheet.helper.d.ts.map +0 -1
- package/modal/modal/services/alert.helper.d.ts +0 -15
- package/modal/modal/services/alert.helper.d.ts.map +0 -1
- package/modal/modal/services/can-dismiss-modal-guard.d.ts +0 -3
- package/modal/modal/services/can-dismiss-modal-guard.d.ts.map +0 -1
- package/modal/modal/services/can-dismiss.helper.d.ts +0 -13
- package/modal/modal/services/can-dismiss.helper.d.ts.map +0 -1
- package/modal/modal/services/index.d.ts +0 -7
- package/modal/modal/services/index.d.ts.map +0 -1
- package/modal/modal/services/modal-animation-builder.service.d.ts +0 -28
- package/modal/modal/services/modal-animation-builder.service.d.ts.map +0 -1
- package/modal/modal/services/modal.controller.d.ts +0 -39
- package/modal/modal/services/modal.controller.d.ts.map +0 -1
- package/modal/modal/services/modal.helper.d.ts +0 -21
- package/modal/modal/services/modal.helper.d.ts.map +0 -1
- package/modal/modal-navigation.service.d.ts +0 -39
- package/modal/modal-navigation.service.d.ts.map +0 -1
- package/modal/modal-wrapper/compact/index.d.ts +0 -2
- package/modal/modal-wrapper/compact/index.d.ts.map +0 -1
- package/modal/modal-wrapper/compact/modal-compact-wrapper.component.d.ts +0 -36
- package/modal/modal-wrapper/compact/modal-compact-wrapper.component.d.ts.map +0 -1
- package/modal/modal-wrapper/config/drawer-supplementary-action.d.ts +0 -5
- package/modal/modal-wrapper/config/drawer-supplementary-action.d.ts.map +0 -1
- package/modal/modal-wrapper/config/index.d.ts +0 -4
- package/modal/modal-wrapper/config/index.d.ts.map +0 -1
- package/modal/modal-wrapper/config/modal-config.d.ts +0 -42
- package/modal/modal-wrapper/config/modal-config.d.ts.map +0 -1
- package/modal/modal-wrapper/config/modal-config.helper.d.ts +0 -3
- package/modal/modal-wrapper/config/modal-config.helper.d.ts.map +0 -1
- package/modal/modal-wrapper/index.d.ts +0 -4
- package/modal/modal-wrapper/index.d.ts.map +0 -1
- package/modal/modal-wrapper/modal-elements-mover.delegate.d.ts +0 -15
- package/modal/modal-wrapper/modal-elements-mover.delegate.d.ts.map +0 -1
- package/modal/modal-wrapper/modal-wrapper.component.d.ts +0 -112
- package/modal/modal-wrapper/modal-wrapper.component.d.ts.map +0 -1
- package/modal/modal.interfaces.d.ts +0 -58
- package/modal/modal.interfaces.d.ts.map +0 -1
- package/modal/public_api.d.ts +0 -5
- package/modal/public_api.d.ts.map +0 -1
- package/page/kirbydesign-designsystem-page.d.ts.map +0 -1
- package/page/page-footer/page-footer.component.d.ts +0 -15
- package/page/page-footer/page-footer.component.d.ts.map +0 -1
- package/page/page.component.d.ts +0 -207
- package/page/page.component.d.ts.map +0 -1
- package/page/page.module.d.ts +0 -14
- package/page/page.module.d.ts.map +0 -1
- package/page/public_api.d.ts +0 -4
- package/page/public_api.d.ts.map +0 -1
- package/popover/kirbydesign-designsystem-popover.d.ts.map +0 -1
- package/popover/popover.component.d.ts +0 -37
- package/popover/popover.component.d.ts.map +0 -1
- package/popover/public_api.d.ts +0 -2
- package/popover/public_api.d.ts.map +0 -1
- package/progress-circle/kirbydesign-designsystem-progress-circle.d.ts.map +0 -1
- package/progress-circle/progress-circle-ring.component.d.ts +0 -20
- package/progress-circle/progress-circle-ring.component.d.ts.map +0 -1
- package/progress-circle/progress-circle.component.d.ts +0 -43
- package/progress-circle/progress-circle.component.d.ts.map +0 -1
- package/progress-circle/public_api.d.ts +0 -3
- package/progress-circle/public_api.d.ts.map +0 -1
- package/public-api.d.ts +0 -2
- package/public-api.d.ts.map +0 -1
- package/radio/kirbydesign-designsystem-radio.d.ts.map +0 -1
- package/radio/public_api.d.ts +0 -4
- package/radio/public_api.d.ts.map +0 -1
- package/radio/radio-group/radio-group.component.d.ts +0 -65
- package/radio/radio-group/radio-group.component.d.ts.map +0 -1
- package/radio/radio-module.d.ts +0 -11
- package/radio/radio-module.d.ts.map +0 -1
- package/radio/radio.component.d.ts +0 -26
- package/radio/radio.component.d.ts.map +0 -1
- package/range/kirbydesign-designsystem-range.d.ts.map +0 -1
- package/range/public_api.d.ts +0 -2
- package/range/public_api.d.ts.map +0 -1
- package/range/range.component.d.ts +0 -42
- package/range/range.component.d.ts.map +0 -1
- package/reorder-list/kirbydesign-designsystem-reorder-list.d.ts.map +0 -1
- package/reorder-list/public_api.d.ts +0 -3
- package/reorder-list/public_api.d.ts.map +0 -1
- package/reorder-list/reorder-event.d.ts +0 -8
- package/reorder-list/reorder-event.d.ts.map +0 -1
- package/reorder-list/reorder-list.component.d.ts +0 -24
- package/reorder-list/reorder-list.component.d.ts.map +0 -1
- package/router-outlet/kirbydesign-designsystem-router-outlet.d.ts.map +0 -1
- package/router-outlet/public_api.d.ts +0 -4
- package/router-outlet/public_api.d.ts.map +0 -1
- package/router-outlet/router-outlet.component.d.ts +0 -8
- package/router-outlet/router-outlet.component.d.ts.map +0 -1
- package/router-outlet/router-outlet.module.d.ts +0 -10
- package/router-outlet/router-outlet.module.d.ts.map +0 -1
- package/section-header/kirbydesign-designsystem-section-header.d.ts.map +0 -1
- package/section-header/public_api.d.ts +0 -2
- package/section-header/public_api.d.ts.map +0 -1
- package/section-header/section-header.component.d.ts +0 -6
- package/section-header/section-header.component.d.ts.map +0 -1
- package/shared/component-configuration.d.ts +0 -6
- package/shared/component-configuration.d.ts.map +0 -1
- package/shared/component-loader.directive.d.ts +0 -16
- package/shared/component-loader.directive.d.ts.map +0 -1
- package/shared/controls/label-helpers.d.ts +0 -17
- package/shared/controls/label-helpers.d.ts.map +0 -1
- package/shared/dynamic-component.d.ts +0 -4
- package/shared/dynamic-component.d.ts.map +0 -1
- package/shared/fit-heading/fit-heading.directive.d.ts +0 -29
- package/shared/fit-heading/fit-heading.directive.d.ts.map +0 -1
- package/shared/fit-heading/index.d.ts +0 -2
- package/shared/fit-heading/index.d.ts.map +0 -1
- package/shared/floating/floating.directive.d.ts +0 -136
- package/shared/floating/floating.directive.d.ts.map +0 -1
- package/shared/floating/kirbydesign-designsystem-shared-floating.d.ts.map +0 -1
- package/shared/floating/public_api.d.ts +0 -2
- package/shared/floating/public_api.d.ts.map +0 -1
- package/shared/kirbydesign-designsystem-shared.d.ts.map +0 -1
- package/shared/portal/kirbydesign-designsystem-shared-portal.d.ts.map +0 -1
- package/shared/portal/portal.directive.d.ts +0 -35
- package/shared/portal/portal.directive.d.ts.map +0 -1
- package/shared/portal/public_api.d.ts +0 -2
- package/shared/portal/public_api.d.ts.map +0 -1
- package/shared/public_api.d.ts +0 -10
- package/shared/public_api.d.ts.map +0 -1
- package/shared/resize-observer/resize-observer.factory.d.ts +0 -11
- package/shared/resize-observer/resize-observer.factory.d.ts.map +0 -1
- package/shared/resize-observer/resize-observer.service.d.ts +0 -16
- package/shared/resize-observer/resize-observer.service.d.ts.map +0 -1
- package/shared/theme-color/theme-color.directive.d.ts +0 -36
- package/shared/theme-color/theme-color.directive.d.ts.map +0 -1
- package/shared/translation/translation.interface.d.ts +0 -13
- package/shared/translation/translation.interface.d.ts.map +0 -1
- package/shared/translation/translation.service.d.ts +0 -13
- package/shared/translation/translation.service.d.ts.map +0 -1
- package/shared/translation/translations/da.d.ts +0 -3
- package/shared/translation/translations/da.d.ts.map +0 -1
- package/shared/translation/translations/de.d.ts +0 -3
- package/shared/translation/translations/de.d.ts.map +0 -1
- package/shared/translation/translations/en.d.ts +0 -3
- package/shared/translation/translations/en.d.ts.map +0 -1
- package/slide/kirbydesign-designsystem-slide.d.ts.map +0 -1
- package/slide/public_api.d.ts +0 -5
- package/slide/public_api.d.ts.map +0 -1
- package/slide/slide-stretch-height.directive.d.ts +0 -10
- package/slide/slide-stretch-height.directive.d.ts.map +0 -1
- package/slide/slide.directive.d.ts +0 -6
- package/slide/slide.directive.d.ts.map +0 -1
- package/slide/slide.module.d.ts +0 -13
- package/slide/slide.module.d.ts.map +0 -1
- package/slide/slides.component.d.ts +0 -42
- package/slide/slides.component.d.ts.map +0 -1
- package/slide-button/kirbydesign-designsystem-slide-button.d.ts.map +0 -1
- package/slide-button/public_api.d.ts +0 -2
- package/slide-button/public_api.d.ts.map +0 -1
- package/slide-button/slide-button.component.d.ts +0 -32
- package/slide-button/slide-button.component.d.ts.map +0 -1
- package/spinner/kirbydesign-designsystem-spinner.d.ts.map +0 -1
- package/spinner/public_api.d.ts +0 -3
- package/spinner/public_api.d.ts.map +0 -1
- package/spinner/spinner.component.d.ts +0 -6
- package/spinner/spinner.component.d.ts.map +0 -1
- package/spinner/spinner.module.d.ts +0 -9
- package/spinner/spinner.module.d.ts.map +0 -1
- package/tab-navigation/kirbydesign-designsystem-tab-navigation.d.ts.map +0 -1
- package/tab-navigation/public_api.d.ts +0 -4
- package/tab-navigation/public_api.d.ts.map +0 -1
- package/tab-navigation/tab-navigation/tab-navigation.component.d.ts +0 -36
- package/tab-navigation/tab-navigation/tab-navigation.component.d.ts.map +0 -1
- package/tab-navigation/tab-navigation-item/tab-navigation-item.component.d.ts +0 -14
- package/tab-navigation/tab-navigation-item/tab-navigation-item.component.d.ts.map +0 -1
- package/tab-navigation/tab-navigation.module.d.ts +0 -10
- package/tab-navigation/tab-navigation.module.d.ts.map +0 -1
- package/tabs/kirbydesign-designsystem-tabs.d.ts.map +0 -1
- package/tabs/public_api.d.ts +0 -6
- package/tabs/public_api.d.ts.map +0 -1
- package/tabs/tab-button/tab-button.component.d.ts +0 -12
- package/tabs/tab-button/tab-button.component.d.ts.map +0 -1
- package/tabs/tab-button/tab-button.events.d.ts +0 -2
- package/tabs/tab-button/tab-button.events.d.ts.map +0 -1
- package/tabs/tabs.component.d.ts +0 -15
- package/tabs/tabs.component.d.ts.map +0 -1
- package/tabs/tabs.module.d.ts +0 -12
- package/tabs/tabs.module.d.ts.map +0 -1
- package/tabs/tabs.service.d.ts +0 -12
- package/tabs/tabs.service.d.ts.map +0 -1
- package/testing/element-css-custom-matchers.d.ts +0 -4
- package/testing/element-css-custom-matchers.d.ts.map +0 -1
- package/testing/kirbydesign-designsystem-testing.d.ts.map +0 -1
- package/testing/public_api.d.ts +0 -3
- package/testing/public_api.d.ts.map +0 -1
- package/testing/test-helper.d.ts +0 -55
- package/testing/test-helper.d.ts.map +0 -1
- package/testing-base/kirbydesign-designsystem-testing-base.d.ts.map +0 -1
- package/testing-base/lib/components/index.d.ts +0 -64
- package/testing-base/lib/components/index.d.ts.map +0 -1
- package/testing-base/lib/components/mock.accordion-item.component.d.ts +0 -10
- package/testing-base/lib/components/mock.accordion-item.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.action-group.component.d.ts +0 -9
- package/testing-base/lib/components/mock.action-group.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.action-sheet.component.d.ts +0 -16
- package/testing-base/lib/components/mock.action-sheet.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.alert.component.d.ts +0 -15
- package/testing-base/lib/components/mock.alert.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.avatar.component.d.ts +0 -16
- package/testing-base/lib/components/mock.avatar.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.badge.component.d.ts +0 -8
- package/testing-base/lib/components/mock.badge.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.base-chart.component.d.ts +0 -16
- package/testing-base/lib/components/mock.base-chart.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.button.component.d.ts +0 -15
- package/testing-base/lib/components/mock.button.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.calendar.component.d.ts +0 -33
- package/testing-base/lib/components/mock.calendar.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.card-footer.component.d.ts +0 -7
- package/testing-base/lib/components/mock.card-footer.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.card-header.component.d.ts +0 -12
- package/testing-base/lib/components/mock.card-header.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.card.component.d.ts +0 -14
- package/testing-base/lib/components/mock.card.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.chart.component.d.ts +0 -9
- package/testing-base/lib/components/mock.chart.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.checkbox.component.d.ts +0 -14
- package/testing-base/lib/components/mock.checkbox.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.divider.component.d.ts +0 -7
- package/testing-base/lib/components/mock.divider.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.dropdown.component.d.ts +0 -22
- package/testing-base/lib/components/mock.dropdown.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.empty-state.component.d.ts +0 -9
- package/testing-base/lib/components/mock.empty-state.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.fab-sheet.component.d.ts +0 -8
- package/testing-base/lib/components/mock.fab-sheet.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.flag.component.d.ts +0 -8
- package/testing-base/lib/components/mock.flag.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.form-field-message.component.d.ts +0 -8
- package/testing-base/lib/components/mock.form-field-message.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.form-field.component.d.ts +0 -9
- package/testing-base/lib/components/mock.form-field.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.header.component.d.ts +0 -22
- package/testing-base/lib/components/mock.header.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.icon.component.d.ts +0 -9
- package/testing-base/lib/components/mock.icon.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.input-counter.component.d.ts +0 -8
- package/testing-base/lib/components/mock.input-counter.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.input.component.d.ts +0 -16
- package/testing-base/lib/components/mock.input.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.item-group.component.d.ts +0 -6
- package/testing-base/lib/components/mock.item-group.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.item-sliding.component.d.ts +0 -9
- package/testing-base/lib/components/mock.item-sliding.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.item.component.d.ts +0 -13
- package/testing-base/lib/components/mock.item.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.kirby-app.component.d.ts +0 -6
- package/testing-base/lib/components/mock.kirby-app.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.label.component.d.ts +0 -7
- package/testing-base/lib/components/mock.label.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.list-experimental.component.d.ts +0 -6
- package/testing-base/lib/components/mock.list-experimental.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.list-header.component.d.ts +0 -6
- package/testing-base/lib/components/mock.list-header.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.list-item.component.d.ts +0 -17
- package/testing-base/lib/components/mock.list-item.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.list-section-header.component.d.ts +0 -7
- package/testing-base/lib/components/mock.list-section-header.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.list.component.d.ts +0 -24
- package/testing-base/lib/components/mock.list.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.loading-overlay.component.d.ts +0 -9
- package/testing-base/lib/components/mock.loading-overlay.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.menu.component.d.ts +0 -21
- package/testing-base/lib/components/mock.menu.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.modal-compact-wrapper.component.d.ts +0 -8
- package/testing-base/lib/components/mock.modal-compact-wrapper.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.modal-footer.component.d.ts +0 -8
- package/testing-base/lib/components/mock.modal-footer.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.modal-wrapper.component.d.ts +0 -10
- package/testing-base/lib/components/mock.modal-wrapper.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.page-footer.component.d.ts +0 -7
- package/testing-base/lib/components/mock.page-footer.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.page.component.d.ts +0 -70
- package/testing-base/lib/components/mock.page.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.popover.component.d.ts +0 -11
- package/testing-base/lib/components/mock.popover.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.progress-circle-ring.component.d.ts +0 -11
- package/testing-base/lib/components/mock.progress-circle-ring.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.progress-circle.component.d.ts +0 -9
- package/testing-base/lib/components/mock.progress-circle.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.radio-group.component.d.ts +0 -15
- package/testing-base/lib/components/mock.radio-group.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.radio.component.d.ts +0 -10
- package/testing-base/lib/components/mock.radio.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.range.component.d.ts +0 -22
- package/testing-base/lib/components/mock.range.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.reorder-list.component.d.ts +0 -13
- package/testing-base/lib/components/mock.reorder-list.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.router-outlet.component.d.ts +0 -7
- package/testing-base/lib/components/mock.router-outlet.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.section-header.component.d.ts +0 -6
- package/testing-base/lib/components/mock.section-header.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.segmented-control.component.d.ts +0 -16
- package/testing-base/lib/components/mock.segmented-control.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.slide-button.component.d.ts +0 -11
- package/testing-base/lib/components/mock.slide-button.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.slides.component.d.ts +0 -11
- package/testing-base/lib/components/mock.slides.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.spinner.component.d.ts +0 -6
- package/testing-base/lib/components/mock.spinner.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.stock-chart.component.d.ts +0 -9
- package/testing-base/lib/components/mock.stock-chart.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.tab-button.component.d.ts +0 -9
- package/testing-base/lib/components/mock.tab-button.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.tab-navigation-item.component.d.ts +0 -7
- package/testing-base/lib/components/mock.tab-navigation-item.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.tab-navigation.component.d.ts +0 -8
- package/testing-base/lib/components/mock.tab-navigation.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.tabs.component.d.ts +0 -6
- package/testing-base/lib/components/mock.tabs.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.textarea.component.d.ts +0 -12
- package/testing-base/lib/components/mock.textarea.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.toggle-button.component.d.ts +0 -9
- package/testing-base/lib/components/mock.toggle-button.component.d.ts.map +0 -1
- package/testing-base/lib/components/mock.toggle.component.d.ts +0 -10
- package/testing-base/lib/components/mock.toggle.component.d.ts.map +0 -1
- package/testing-base/lib/directives/index.d.ts +0 -17
- package/testing-base/lib/directives/index.d.ts.map +0 -1
- package/testing-base/lib/directives/mock.accordion.directive.d.ts +0 -6
- package/testing-base/lib/directives/mock.accordion.directive.d.ts.map +0 -1
- package/testing-base/lib/directives/mock.affix.directive.d.ts +0 -7
- package/testing-base/lib/directives/mock.affix.directive.d.ts.map +0 -1
- package/testing-base/lib/directives/mock.card-as-button.directive.d.ts +0 -6
- package/testing-base/lib/directives/mock.card-as-button.directive.d.ts.map +0 -1
- package/testing-base/lib/directives/mock.component-loader.directive.d.ts +0 -9
- package/testing-base/lib/directives/mock.component-loader.directive.d.ts.map +0 -1
- package/testing-base/lib/directives/mock.date-input.directive.d.ts +0 -6
- package/testing-base/lib/directives/mock.date-input.directive.d.ts.map +0 -1
- package/testing-base/lib/directives/mock.decimal-mask.directive.d.ts +0 -13
- package/testing-base/lib/directives/mock.decimal-mask.directive.d.ts.map +0 -1
- package/testing-base/lib/directives/mock.fit-heading.directive.d.ts +0 -8
- package/testing-base/lib/directives/mock.fit-heading.directive.d.ts.map +0 -1
- package/testing-base/lib/directives/mock.floating.directive.d.ts +0 -27
- package/testing-base/lib/directives/mock.floating.directive.d.ts.map +0 -1
- package/testing-base/lib/directives/mock.infinite-scroll.directive.d.ts +0 -9
- package/testing-base/lib/directives/mock.infinite-scroll.directive.d.ts.map +0 -1
- package/testing-base/lib/directives/mock.key-handler.directive.d.ts +0 -6
- package/testing-base/lib/directives/mock.key-handler.directive.d.ts.map +0 -1
- package/testing-base/lib/directives/mock.list-item-color.directive.d.ts +0 -9
- package/testing-base/lib/directives/mock.list-item-color.directive.d.ts.map +0 -1
- package/testing-base/lib/directives/mock.list.directive.d.ts +0 -18
- package/testing-base/lib/directives/mock.list.directive.d.ts.map +0 -1
- package/testing-base/lib/directives/mock.modal-router-link.directive.d.ts +0 -9
- package/testing-base/lib/directives/mock.modal-router-link.directive.d.ts.map +0 -1
- package/testing-base/lib/directives/mock.portal.directive.d.ts +0 -7
- package/testing-base/lib/directives/mock.portal.directive.d.ts.map +0 -1
- package/testing-base/lib/directives/mock.slide.directive.d.ts +0 -6
- package/testing-base/lib/directives/mock.slide.directive.d.ts.map +0 -1
- package/testing-base/lib/directives/mock.theme-color.directive.d.ts +0 -8
- package/testing-base/lib/directives/mock.theme-color.directive.d.ts.map +0 -1
- package/testing-base/lib/index.d.ts +0 -4
- package/testing-base/lib/index.d.ts.map +0 -1
- package/testing-base/lib/kirby-testing-base.module.d.ts +0 -86
- package/testing-base/lib/kirby-testing-base.module.d.ts.map +0 -1
- package/testing-base/lib/mock-components.d.ts +0 -3
- package/testing-base/lib/mock-components.d.ts.map +0 -1
- package/testing-base/lib/mock-directives.d.ts +0 -3
- package/testing-base/lib/mock-directives.d.ts.map +0 -1
- package/testing-base/public_api.d.ts +0 -2
- package/testing-base/public_api.d.ts.map +0 -1
- package/testing-jasmine/kirbydesign-designsystem-testing-jasmine.d.ts.map +0 -1
- package/testing-jasmine/lib/kirby-testing.module.d.ts +0 -8
- package/testing-jasmine/lib/kirby-testing.module.d.ts.map +0 -1
- package/testing-jasmine/lib/mock-providers.d.ts +0 -33
- package/testing-jasmine/lib/mock-providers.d.ts.map +0 -1
- package/testing-jasmine/public_api.d.ts +0 -2
- package/testing-jasmine/public_api.d.ts.map +0 -1
- package/testing-jest/kirbydesign-designsystem-testing-jest.d.ts.map +0 -1
- package/testing-jest/lib/kirby-testing.module.d.ts +0 -8
- package/testing-jest/lib/kirby-testing.module.d.ts.map +0 -1
- package/testing-jest/lib/mock-providers.d.ts +0 -68
- package/testing-jest/lib/mock-providers.d.ts.map +0 -1
- package/testing-jest/public_api.d.ts +0 -2
- package/testing-jest/public_api.d.ts.map +0 -1
- package/toast/config/toast-config.d.ts +0 -8
- package/toast/config/toast-config.d.ts.map +0 -1
- package/toast/kirbydesign-designsystem-toast.d.ts.map +0 -1
- package/toast/public_api.d.ts +0 -4
- package/toast/public_api.d.ts.map +0 -1
- package/toast/services/indexs.d.ts +0 -3
- package/toast/services/indexs.d.ts.map +0 -1
- package/toast/services/toast.controller.d.ts +0 -11
- package/toast/services/toast.controller.d.ts.map +0 -1
- package/toast/services/toast.helper.d.ts +0 -15
- package/toast/services/toast.helper.d.ts.map +0 -1
- package/toggle/kirbydesign-designsystem-toggle.d.ts.map +0 -1
- package/toggle/public_api.d.ts +0 -2
- package/toggle/public_api.d.ts.map +0 -1
- package/toggle/toggle.component.d.ts +0 -61
- package/toggle/toggle.component.d.ts.map +0 -1
- package/toggle-button/kirbydesign-designsystem-toggle-button.d.ts.map +0 -1
- package/toggle-button/public_api.d.ts +0 -3
- package/toggle-button/public_api.d.ts.map +0 -1
- package/toggle-button/toggle-button.component.d.ts +0 -48
- package/toggle-button/toggle-button.component.d.ts.map +0 -1
- package/toggle-button/toggle-button.module.d.ts +0 -9
- package/toggle-button/toggle-button.module.d.ts.map +0 -1
- package/types/event-listener-dispose-fn.d.ts +0 -2
- package/types/event-listener-dispose-fn.d.ts.map +0 -1
- package/types/form-field-control.d.ts +0 -6
- package/types/form-field-control.d.ts.map +0 -1
- package/types/kirbydesign-designsystem-types.d.ts.map +0 -1
- package/types/public_api.d.ts +0 -5
- package/types/public_api.d.ts.map +0 -1
- package/types/unobserve-fn.d.ts +0 -2
- package/types/unobserve-fn.d.ts.map +0 -1
- package/types/window-ref.d.ts +0 -7
- package/types/window-ref.d.ts.map +0 -1
|
@@ -1,363 +1,139 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import * as i1 from '@angular/router';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import * as
|
|
8
|
-
import {
|
|
9
|
-
import * as
|
|
2
|
+
import { Optional, Component, InjectionToken, ElementRef, Input, ViewChild, ChangeDetectionStrategy, Injectable, Injector, RendererStyleFlags2, TemplateRef, HostListener, HostBinding, ViewChildren, ContentChild, EventEmitter, Output, Inject, inject } from '@angular/core';
|
|
3
|
+
import * as i1$3 from '@angular/router';
|
|
4
|
+
import { RouterModule, RouterOutlet, NavigationEnd, NavigationStart, ROUTES } from '@angular/router';
|
|
5
|
+
import { of, isObservable, Subject, firstValueFrom, merge, EMPTY } from 'rxjs';
|
|
6
|
+
import { debounceTime, first, takeUntil, map, filter, startWith, pairwise, skipUntil } from 'rxjs/operators';
|
|
7
|
+
import * as i3$1 from '@kirbydesign/designsystem/helpers';
|
|
8
|
+
import { getIonModalDialogAncestor, DesignTokenHelper, observeContent, KirbyAnimation } from '@kirbydesign/designsystem/helpers';
|
|
9
|
+
import * as i7 from '@angular/common';
|
|
10
10
|
import { CommonModule } from '@angular/common';
|
|
11
|
-
import { ButtonComponent } from '@kirbydesign/designsystem/button';
|
|
12
|
-
import * as i1$1 from '@kirbydesign/designsystem/card';
|
|
13
|
-
import { CardModule } from '@kirbydesign/designsystem/card';
|
|
14
|
-
import * as i1$3 from '@kirbydesign/designsystem/types';
|
|
15
11
|
import * as i6 from '@kirbydesign/designsystem/icon';
|
|
16
12
|
import { IconModule } from '@kirbydesign/designsystem/icon';
|
|
17
|
-
import
|
|
13
|
+
import { ButtonComponent } from '@kirbydesign/designsystem/button';
|
|
14
|
+
import * as i1$2 from '@ionic/angular/standalone';
|
|
15
|
+
import { IonHeader, IonToolbar, IonTitle, IonButtons, IonContent, createAnimation, ModalController as ModalController$1, IonModal, IonFooter } from '@ionic/angular/standalone';
|
|
16
|
+
import * as i1$1 from '@kirbydesign/designsystem/shared';
|
|
18
17
|
import { ThemeColorDirective, inheritAriaLabelText } from '@kirbydesign/designsystem/shared';
|
|
18
|
+
import * as i1 from '@kirbydesign/designsystem/types';
|
|
19
19
|
import * as i3 from '@kirbydesign/designsystem/empty-state';
|
|
20
20
|
import { EmptyStateModule } from '@kirbydesign/designsystem/empty-state';
|
|
21
|
-
import * as
|
|
22
|
-
import {
|
|
21
|
+
import * as i1$4 from '@kirbydesign/designsystem/card';
|
|
22
|
+
import { CardModule } from '@kirbydesign/designsystem/card';
|
|
23
23
|
|
|
24
|
-
class
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
return modalRoutes;
|
|
48
|
-
}
|
|
49
|
-
async getModuleRootPath(routes, moduleRootRoutePath) {
|
|
50
|
-
if (moduleRootRoutePath) {
|
|
51
|
-
const trimmedPaths = moduleRootRoutePath
|
|
52
|
-
.trim()
|
|
53
|
-
.split('/')
|
|
54
|
-
.filter((path) => !!path);
|
|
55
|
-
const rootPath = [''];
|
|
56
|
-
return rootPath.concat(trimmedPaths);
|
|
57
|
-
}
|
|
58
|
-
const currentRoutePaths = await this.getCurrentRoutePaths();
|
|
59
|
-
const moduleRootPaths = this.getRoutePathsWithoutChildSegments(currentRoutePaths, routes);
|
|
60
|
-
return moduleRootPaths;
|
|
61
|
-
}
|
|
62
|
-
async getCurrentRoutePaths() {
|
|
63
|
-
const rootPath = [''];
|
|
64
|
-
const currentNavigation = this.router.getCurrentNavigation();
|
|
65
|
-
if (!this.router.navigated && !currentNavigation) {
|
|
66
|
-
// If router hasn't navigated yet and we are not in the middle of navigating, assume root:
|
|
67
|
-
return rootPath;
|
|
68
|
-
}
|
|
69
|
-
if (currentNavigation) {
|
|
70
|
-
// Wait for current navigation to finish:
|
|
71
|
-
await firstValueFrom(this.navigationEndListener$);
|
|
72
|
-
}
|
|
73
|
-
let childRoute = this.route.snapshot.root;
|
|
74
|
-
while (childRoute.firstChild) {
|
|
75
|
-
childRoute = childRoute.firstChild;
|
|
76
|
-
}
|
|
77
|
-
const currentBackdropRoutePath = childRoute.pathFromRoot.filter((route) => route.outlet !== 'modal');
|
|
78
|
-
return rootPath.concat(...currentBackdropRoutePath.map((route) => route.url.filter((segment) => !!segment.path).map((segment) => segment.path)));
|
|
79
|
-
}
|
|
80
|
-
getRoutePathsWithoutChildSegments(routePaths, routes) {
|
|
81
|
-
if (!routePaths.length)
|
|
82
|
-
return routePaths;
|
|
83
|
-
const matchedChildRoute = this.findChildRouteForUrl(routePaths.join('/'), routes);
|
|
84
|
-
if (!matchedChildRoute)
|
|
85
|
-
return routePaths;
|
|
86
|
-
const startSlashRegex = /^\//;
|
|
87
|
-
const relativeChildRoute = matchedChildRoute.replace(startSlashRegex, '');
|
|
88
|
-
const childSegmentCount = relativeChildRoute.split('/').length;
|
|
89
|
-
const routePathsWithoutChildSegments = routePaths.slice(0, -childSegmentCount); // Remove child segments from end of route path array
|
|
90
|
-
return routePathsWithoutChildSegments;
|
|
91
|
-
}
|
|
92
|
-
findChildRouteForUrl(url, routes) {
|
|
93
|
-
const moduleRelativePaths = this.getRoutePaths(routes, ['']).sort().reverse(); // Ensure child paths are evaluated first
|
|
94
|
-
let matchedChildRoute = moduleRelativePaths.find((path) => url.endsWith(path));
|
|
95
|
-
if (!matchedChildRoute) {
|
|
96
|
-
// No static child route found matching current route - look for child route with url params:
|
|
97
|
-
const exactMatch = false;
|
|
98
|
-
matchedChildRoute = moduleRelativePaths.find((path) => path.includes('/:') && this.pathContainsChildRouteWithUrlParams(url, path, exactMatch));
|
|
99
|
-
}
|
|
100
|
-
return matchedChildRoute;
|
|
101
|
-
}
|
|
102
|
-
pathContainsChildRouteWithUrlParams(path, childRouteWithUrlParams, exactMatch) {
|
|
103
|
-
const pathSegments = path.split('/');
|
|
104
|
-
const startSlashRegex = /^\//;
|
|
105
|
-
let childRouteToMatch = childRouteWithUrlParams;
|
|
106
|
-
if (!exactMatch) {
|
|
107
|
-
const relativeChildRoute = childRouteWithUrlParams.replace(startSlashRegex, '');
|
|
108
|
-
childRouteToMatch = relativeChildRoute;
|
|
109
|
-
}
|
|
110
|
-
const childRouteSegments = childRouteToMatch.split('/');
|
|
111
|
-
// Match each child route segment against url
|
|
112
|
-
// Match backwards from end to start of child route, i.e. "url ends with child route":
|
|
113
|
-
const pathContainsChildRoute = childRouteSegments.reverse().every((childRouteSegment) => {
|
|
114
|
-
const pathSegment = pathSegments.pop();
|
|
115
|
-
// url params (e.g. `/:id/`) are treated as a match:
|
|
116
|
-
return childRouteSegment.startsWith(':') || childRouteSegment === pathSegment;
|
|
117
|
-
});
|
|
118
|
-
if (exactMatch) {
|
|
119
|
-
// Only match if we've reached the start of the url to match against:
|
|
120
|
-
return pathSegments.length === 0 && pathContainsChildRoute;
|
|
121
|
-
}
|
|
122
|
-
return pathContainsChildRoute;
|
|
123
|
-
}
|
|
124
|
-
getRoutePaths(routes, parentPath) {
|
|
125
|
-
return Array.isArray(routes)
|
|
126
|
-
? [].concat(...routes.map((route) => this.getRoutePath(route, parentPath)))
|
|
127
|
-
: [];
|
|
128
|
-
}
|
|
129
|
-
getRoutePath(route, parentPath) {
|
|
130
|
-
const routes = [];
|
|
131
|
-
if (route.outlet)
|
|
132
|
-
return routes; // Don't return relative paths for outlet routes
|
|
133
|
-
const currentPath = [...parentPath];
|
|
134
|
-
if (route.path) {
|
|
135
|
-
currentPath.push(route.path);
|
|
136
|
-
routes.push(currentPath.join('/'));
|
|
137
|
-
}
|
|
138
|
-
return routes.concat(this.getRoutePaths(route.children, currentPath));
|
|
139
|
-
}
|
|
140
|
-
getModalRoutePath(route, parentPath) {
|
|
141
|
-
const modalOutletName = 'modal';
|
|
142
|
-
if (!!route.path && route.outlet === modalOutletName) {
|
|
143
|
-
const modalOutletPath = `(${modalOutletName}:${route.path})`;
|
|
144
|
-
const modalRoutePath = [...parentPath, modalOutletPath].join('/');
|
|
145
|
-
return [modalRoutePath];
|
|
146
|
-
}
|
|
147
|
-
const currentPath = [...parentPath];
|
|
148
|
-
if (route.path) {
|
|
149
|
-
currentPath.push(route.path);
|
|
150
|
-
}
|
|
151
|
-
return [].concat(...this.getModalRoutePaths(route.children, currentPath));
|
|
24
|
+
class Modal {
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* WARNING: This is for internal use only and should not be used outside of Kirby.
|
|
28
|
+
*/
|
|
29
|
+
var ModalElementType;
|
|
30
|
+
(function (ModalElementType) {
|
|
31
|
+
ModalElementType[ModalElementType["PAGE_PROGRESS"] = 0] = "PAGE_PROGRESS";
|
|
32
|
+
ModalElementType[ModalElementType["FOOTER"] = 1] = "FOOTER";
|
|
33
|
+
ModalElementType[ModalElementType["TITLE"] = 2] = "TITLE";
|
|
34
|
+
})(ModalElementType || (ModalElementType = {}));
|
|
35
|
+
/**
|
|
36
|
+
* WARNING: This is for internal use only and should not be used outside of Kirby.
|
|
37
|
+
*/
|
|
38
|
+
class ModalElementsAdvertiser {
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* WARNING: This is for internal use only and should not be used outside of Kirby.
|
|
42
|
+
*/
|
|
43
|
+
class ModalElementComponent {
|
|
44
|
+
get isContainedInModal() {
|
|
45
|
+
return this.modalElementsAdvertiser !== null;
|
|
152
46
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
47
|
+
constructor(modalElementType, elementRef, modalElementsAdvertiser) {
|
|
48
|
+
this.modalElementType = modalElementType;
|
|
49
|
+
this.elementRef = elementRef;
|
|
50
|
+
this.modalElementsAdvertiser = modalElementsAdvertiser;
|
|
157
51
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
return true;
|
|
162
|
-
}
|
|
163
|
-
const previousRoutePath = (currentNavigation.previousNavigation.finalUrl ||
|
|
164
|
-
currentNavigation.previousNavigation.extractedUrl).toString();
|
|
165
|
-
const wasModalRoute = this.isModalRoute(previousRoutePath);
|
|
166
|
-
const isModalRoute = this.isModalRoute(navigationEnd.urlAfterRedirects);
|
|
167
|
-
if (!wasModalRoute && isModalRoute) {
|
|
168
|
-
return true;
|
|
52
|
+
ngAfterViewInit() {
|
|
53
|
+
if (this.isContainedInModal) {
|
|
54
|
+
this.modalElementsAdvertiser.addModalElement(this.modalElementType, this.elementRef);
|
|
169
55
|
}
|
|
170
|
-
const currentModalRouteParent = navigationEnd.urlAfterRedirects.split('/(modal:')[0];
|
|
171
|
-
const previousModalRouteParent = previousRoutePath.split('/(modal:')[0];
|
|
172
|
-
return previousModalRouteParent !== currentModalRouteParent;
|
|
173
56
|
}
|
|
174
|
-
|
|
175
|
-
if (this.
|
|
176
|
-
|
|
177
|
-
return this.navigationEndListener$.pipe(startWith(currentNavigationEnd));
|
|
57
|
+
ngOnDestroy() {
|
|
58
|
+
if (this.isContainedInModal) {
|
|
59
|
+
this.modalElementsAdvertiser.removeModalElement(this.modalElementType, this.elementRef);
|
|
178
60
|
}
|
|
179
|
-
return this.navigationEndListener$;
|
|
180
|
-
}
|
|
181
|
-
modalRouteActivatedFor(navigationEnd$, modalRouteSet, modalRoutesContainsUrlParams) {
|
|
182
|
-
return navigationEnd$.pipe(filter((navigationEnd) => this.modalRouteSetContainsPath(modalRouteSet, navigationEnd, modalRoutesContainsUrlParams)), map((navigationEnd) => {
|
|
183
|
-
return {
|
|
184
|
-
route: this.getCurrentActivatedRoute(),
|
|
185
|
-
isNewModal: this.isNewModalWindow(navigationEnd),
|
|
186
|
-
};
|
|
187
|
-
}));
|
|
188
61
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
}
|
|
62
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalElementComponent, deps: [{ token: ModalElementType }, { token: i0.ElementRef }, { token: ModalElementsAdvertiser, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
63
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.0", type: ModalElementComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: '', isInline: true }); }
|
|
64
|
+
}
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalElementComponent, decorators: [{
|
|
66
|
+
type: Component,
|
|
67
|
+
args: [{
|
|
68
|
+
template: '',
|
|
69
|
+
standalone: false,
|
|
70
|
+
}]
|
|
71
|
+
}], ctorParameters: () => [{ type: ModalElementType }, { type: i0.ElementRef }, { type: ModalElementsAdvertiser, decorators: [{
|
|
72
|
+
type: Optional
|
|
73
|
+
}] }] });
|
|
74
|
+
|
|
75
|
+
const COMPONENT_PROPS = new InjectionToken('componentProps');
|
|
76
|
+
|
|
77
|
+
/*
|
|
78
|
+
The ModalWrapperComponent class was growing large.
|
|
79
|
+
|
|
80
|
+
Hence the functions responsible for moving modal elements around
|
|
81
|
+
has been encapsulated in this class.
|
|
82
|
+
*/
|
|
83
|
+
class ModalElementsMoverDelegate {
|
|
84
|
+
constructor(renderer, elementRef) {
|
|
85
|
+
this.renderer = renderer;
|
|
86
|
+
this.elementRef = elementRef;
|
|
199
87
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
if (!hasRoute && modalRoutesContainsUrlParams) {
|
|
204
|
-
// Use `for ... of` instead of `forEach` so we can break out of the loop if route is found:
|
|
205
|
-
for (const route of modalRouteSet) {
|
|
206
|
-
const exactMatch = true;
|
|
207
|
-
const routeMatchesPath = this.pathContainsChildRouteWithUrlParams(pathname, route, exactMatch);
|
|
208
|
-
if (routeMatchesPath) {
|
|
209
|
-
hasRoute = true;
|
|
210
|
-
break;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
return hasRoute;
|
|
88
|
+
addFooter(footerElementRef) {
|
|
89
|
+
// Move the footer next to ion-content
|
|
90
|
+
this.moveChild(footerElementRef, this.elementRef);
|
|
215
91
|
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
const navigationEnd$ = await this.waitForCurrentThenGetNavigationEndStream();
|
|
219
|
-
const modalRoutes = await this.getModalRoutes(routeConfig, moduleRootRoutePath);
|
|
220
|
-
const hasModalRoutes = modalRoutes.length > 0;
|
|
221
|
-
if (hasModalRoutes) {
|
|
222
|
-
const modalRoutesContainsUrlParams = modalRoutes.some((route) => route.includes('/:'));
|
|
223
|
-
const modalRouteSet = new Set(modalRoutes);
|
|
224
|
-
const activated$ = this.modalRouteActivatedFor(navigationEnd$, modalRouteSet, modalRoutesContainsUrlParams);
|
|
225
|
-
const deactivated$ = this.modalRouteDeactivatedFor(navigationEnd$, modalRouteSet, modalRoutesContainsUrlParams);
|
|
226
|
-
return { activated$, deactivated$ };
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
return { activated$: EMPTY, deactivated$: EMPTY };
|
|
92
|
+
removeFooter(footerElementRef) {
|
|
93
|
+
this.removeChild(footerElementRef);
|
|
230
94
|
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
const childPath = commands.pop();
|
|
234
|
-
const result = await this.router.navigate([...commands, { outlets: { modal: [childPath] } }], {
|
|
235
|
-
queryParams,
|
|
236
|
-
relativeTo: this.getCurrentActivatedRoute(),
|
|
237
|
-
});
|
|
238
|
-
return result;
|
|
95
|
+
addPageProgress(pageProgressElementRef, ionToolbarElement) {
|
|
96
|
+
this.moveChild(pageProgressElementRef, ionToolbarElement);
|
|
239
97
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
queryParams,
|
|
243
|
-
relativeTo: this.getCurrentActivatedRoute(),
|
|
244
|
-
});
|
|
98
|
+
removePageProgress(pageProgressElementRef) {
|
|
99
|
+
this.removeChild(pageProgressElementRef);
|
|
245
100
|
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
101
|
+
/*
|
|
102
|
+
contentTitleElement & ionTitleElement has to be passed
|
|
103
|
+
as arguments to the method; not part of the constructor, as they
|
|
104
|
+
might reference completely different elements between calls.
|
|
105
|
+
|
|
106
|
+
For example in a multi-page routed modal where the elements are destroyed
|
|
107
|
+
and recreated.
|
|
108
|
+
*/
|
|
109
|
+
addTitle(titleElementRef, contentTitleElement, hasCollapsibleTitle, ionTitleElement) {
|
|
110
|
+
this.moveChild(titleElementRef, ionTitleElement);
|
|
111
|
+
// If title is collapsible append it to content area; required by ionic implementation.
|
|
112
|
+
if (hasCollapsibleTitle) {
|
|
113
|
+
const titleElementClone = titleElementRef.nativeElement.cloneNode(true);
|
|
114
|
+
this.moveChild(new ElementRef(titleElementClone), contentTitleElement);
|
|
253
115
|
}
|
|
254
|
-
const parentRoute = this.getBackdropRoute(currentActivatedRoute);
|
|
255
|
-
return this.router.navigate(['./'], {
|
|
256
|
-
relativeTo: parentRoute,
|
|
257
|
-
});
|
|
258
116
|
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
117
|
+
removeTitle(titleElementRef, hasCollapsibleTitle, contentTitleElement) {
|
|
118
|
+
this.removeChild(titleElementRef);
|
|
119
|
+
if (hasCollapsibleTitle) {
|
|
120
|
+
const kirbyPageTitleElement = contentTitleElement.nativeElement.querySelector('kirby-page-title');
|
|
121
|
+
this.removeChild(new ElementRef(kirbyPageTitleElement));
|
|
263
122
|
}
|
|
264
|
-
return parentRoute;
|
|
265
123
|
}
|
|
266
|
-
|
|
267
|
-
const
|
|
268
|
-
const
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
.subscribe(() => {
|
|
272
|
-
modal.dismiss();
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ModalNavigationService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
276
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ModalNavigationService, providedIn: 'root' }); }
|
|
277
|
-
}
|
|
278
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ModalNavigationService, decorators: [{
|
|
279
|
-
type: Injectable,
|
|
280
|
-
args: [{ providedIn: 'root' }]
|
|
281
|
-
}], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }] });
|
|
282
|
-
|
|
283
|
-
class ActionSheetComponent {
|
|
284
|
-
constructor() {
|
|
285
|
-
this.cancelButtonText = 'Cancel';
|
|
286
|
-
this.hideCancel = false;
|
|
287
|
-
this.disabled = false;
|
|
288
|
-
this.cancel = new EventEmitter();
|
|
289
|
-
this.itemSelect = new EventEmitter();
|
|
290
|
-
}
|
|
291
|
-
onItemSelect(selection) {
|
|
292
|
-
this.itemSelect.emit(selection);
|
|
293
|
-
}
|
|
294
|
-
onCancel() {
|
|
295
|
-
this.cancel.emit();
|
|
296
|
-
}
|
|
297
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ActionSheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
298
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ActionSheetComponent, isStandalone: true, selector: "kirby-action-sheet", inputs: { cancelButtonText: "cancelButtonText", hideCancel: "hideCancel", disabled: "disabled", header: "header", subheader: "subheader", items: "items" }, outputs: { cancel: "cancel", itemSelect: "itemSelect" }, ngImport: i0, template: "<kirby-card>\n <kirby-card-header\n *ngIf=\"header\"\n [title]=\"header\"\n [isTitleBold]=\"true\"\n [subtitle]=\"subheader\"\n ></kirby-card-header>\n <button\n kirby-button\n expand=\"block\"\n size=\"lg\"\n [noDecoration]=\"true\"\n (click)=\"onItemSelect(item)\"\n *ngFor=\"let item of items\"\n >\n {{ item.text }}\n </button>\n</kirby-card>\n<button\n *ngIf=\"!hideCancel\"\n kirby-button\n class=\"cancel-btn\"\n size=\"lg\"\n attentionLevel=\"3\"\n (click)=\"onCancel()\"\n>\n {{ cancelButtonText }}\n</button>\n", styles: [":host{--kirby-internal-margin-horizontal-default: 32px}@media (max-width: 320px){:host{--kirby-internal-margin-horizontal-default: 16px}}:host{--kirby-internal-margin-horizontal-total: calc( 2 * var(--kirby-action-sheet-margin-horizontal, var(--kirby-internal-margin-horizontal-default)) );display:flex;flex-direction:column;align-items:center;justify-content:flex-end;margin:0 auto;width:calc(100vw - var(--kirby-internal-margin-horizontal-total));max-width:calc(375px - var(--kirby-internal-margin-horizontal-total))}@media (hover: hover) and (pointer: fine){:host button[kirby-button].no-decoration:focus-visible{box-shadow:none;--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black)}}kirby-card{align-self:stretch;pointer-events:auto;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14}kirby-card button[kirby-button]{margin:0;border-radius:0}kirby-card button[kirby-button]:not(:focus){border-top:1px solid var(--kirby-background-color)}@media (hover: hover) and (pointer: fine){.cancel-btn:focus{transition:all 80ms linear 0ms;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}.cancel-btn:focus:not(:focus-visible){box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 0 transparent}.cancel-btn:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}.cancel-btn{font-weight:700;margin-top:16px;margin-bottom:24px;pointer-events:auto}\n"], dependencies: [{ kind: "ngmodule", type: CardModule }, { kind: "component", type: i1$1.CardComponent, selector: "kirby-card", inputs: ["title", "subtitle", "backgroundImageUrl", "hasPadding", "sizes", "variant"] }, { kind: "component", type: i1$1.CardHeaderComponent, selector: "kirby-card-header", inputs: ["title", "subtitle", "isTitleBold", "flagged", "hasPadding"] }, { 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: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
299
|
-
}
|
|
300
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ActionSheetComponent, decorators: [{
|
|
301
|
-
type: Component,
|
|
302
|
-
args: [{ imports: [CardModule, ButtonComponent, CommonModule], selector: 'kirby-action-sheet', template: "<kirby-card>\n <kirby-card-header\n *ngIf=\"header\"\n [title]=\"header\"\n [isTitleBold]=\"true\"\n [subtitle]=\"subheader\"\n ></kirby-card-header>\n <button\n kirby-button\n expand=\"block\"\n size=\"lg\"\n [noDecoration]=\"true\"\n (click)=\"onItemSelect(item)\"\n *ngFor=\"let item of items\"\n >\n {{ item.text }}\n </button>\n</kirby-card>\n<button\n *ngIf=\"!hideCancel\"\n kirby-button\n class=\"cancel-btn\"\n size=\"lg\"\n attentionLevel=\"3\"\n (click)=\"onCancel()\"\n>\n {{ cancelButtonText }}\n</button>\n", styles: [":host{--kirby-internal-margin-horizontal-default: 32px}@media (max-width: 320px){:host{--kirby-internal-margin-horizontal-default: 16px}}:host{--kirby-internal-margin-horizontal-total: calc( 2 * var(--kirby-action-sheet-margin-horizontal, var(--kirby-internal-margin-horizontal-default)) );display:flex;flex-direction:column;align-items:center;justify-content:flex-end;margin:0 auto;width:calc(100vw - var(--kirby-internal-margin-horizontal-total));max-width:calc(375px - var(--kirby-internal-margin-horizontal-total))}@media (hover: hover) and (pointer: fine){:host button[kirby-button].no-decoration:focus-visible{box-shadow:none;--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black)}}kirby-card{align-self:stretch;pointer-events:auto;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14}kirby-card button[kirby-button]{margin:0;border-radius:0}kirby-card button[kirby-button]:not(:focus){border-top:1px solid var(--kirby-background-color)}@media (hover: hover) and (pointer: fine){.cancel-btn:focus{transition:all 80ms linear 0ms;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}.cancel-btn:focus:not(:focus-visible){box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 0 transparent}.cancel-btn:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}.cancel-btn{font-weight:700;margin-top:16px;margin-bottom:24px;pointer-events:auto}\n"] }]
|
|
303
|
-
}], propDecorators: { cancelButtonText: [{
|
|
304
|
-
type: Input
|
|
305
|
-
}], hideCancel: [{
|
|
306
|
-
type: Input
|
|
307
|
-
}], disabled: [{
|
|
308
|
-
type: Input
|
|
309
|
-
}], header: [{
|
|
310
|
-
type: Input
|
|
311
|
-
}], subheader: [{
|
|
312
|
-
type: Input
|
|
313
|
-
}], items: [{
|
|
314
|
-
type: Input
|
|
315
|
-
}], cancel: [{
|
|
316
|
-
type: Output
|
|
317
|
-
}], itemSelect: [{
|
|
318
|
-
type: Output
|
|
319
|
-
}] } });
|
|
320
|
-
|
|
321
|
-
class ActionSheetHelper {
|
|
322
|
-
constructor(ionicModalController) {
|
|
323
|
-
this.ionicModalController = ionicModalController;
|
|
124
|
+
moveChild(childElementRef, newParentElementRef) {
|
|
125
|
+
const child = childElementRef.nativeElement;
|
|
126
|
+
const newParent = newParentElementRef.nativeElement;
|
|
127
|
+
this.renderer.removeChild(child.parentElement, child);
|
|
128
|
+
this.renderer.appendChild(newParent, child);
|
|
324
129
|
}
|
|
325
|
-
|
|
326
|
-
const
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
cssClass: ['kirby-overlay', 'kirby-action-sheet'],
|
|
331
|
-
componentProps: {
|
|
332
|
-
...config,
|
|
333
|
-
cancel: cancel,
|
|
334
|
-
itemSelect: itemSelect,
|
|
335
|
-
},
|
|
336
|
-
backdropDismiss: true,
|
|
337
|
-
});
|
|
338
|
-
// Remove 'modal-shadow' element as we are no longer able to hide it with CSS in Ionic 6.
|
|
339
|
-
// We need to remove it so it does not obstruct the backdrop-click to dismiss functionality.
|
|
340
|
-
ionModal.shadowRoot.querySelector('.modal-shadow').remove();
|
|
341
|
-
const cancelSubscription = cancel.subscribe(() => ionModal.dismiss());
|
|
342
|
-
const itemSelectSubscription = itemSelect.subscribe((item) => ionModal.dismiss(item));
|
|
343
|
-
const onDidDismiss = ionModal.onDidDismiss();
|
|
344
|
-
onDidDismiss.then(() => {
|
|
345
|
-
cancelSubscription.unsubscribe();
|
|
346
|
-
itemSelectSubscription.unsubscribe();
|
|
347
|
-
});
|
|
348
|
-
await ionModal.present();
|
|
349
|
-
return {
|
|
350
|
-
dismiss: ionModal.dismiss.bind(ionModal),
|
|
351
|
-
onWillDismiss: ionModal.onWillDismiss(),
|
|
352
|
-
onDidDismiss: ionModal.onDidDismiss(),
|
|
353
|
-
};
|
|
130
|
+
removeChild(childElementRef, parentElement) {
|
|
131
|
+
const child = childElementRef.nativeElement;
|
|
132
|
+
if (child) {
|
|
133
|
+
this.renderer.removeChild(parentElement || child.parentElement, child);
|
|
134
|
+
}
|
|
354
135
|
}
|
|
355
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ActionSheetHelper, deps: [{ token: i1$2.ModalController }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
356
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ActionSheetHelper }); }
|
|
357
136
|
}
|
|
358
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ActionSheetHelper, decorators: [{
|
|
359
|
-
type: Injectable
|
|
360
|
-
}], ctorParameters: () => [{ type: i1$2.ModalController }] });
|
|
361
137
|
|
|
362
138
|
class AlertComponent {
|
|
363
139
|
set title(title) {
|
|
@@ -366,6 +142,12 @@ class AlertComponent {
|
|
|
366
142
|
set message(message) {
|
|
367
143
|
this.message$ = typeof message === 'string' ? of(message) : message;
|
|
368
144
|
}
|
|
145
|
+
set okBtn(okBtn) {
|
|
146
|
+
this.okBtn$ = typeof okBtn === 'string' ? of(okBtn) : okBtn;
|
|
147
|
+
}
|
|
148
|
+
set cancelBtn(cancelBtn) {
|
|
149
|
+
this.cancelBtn$ = typeof cancelBtn === 'string' ? of(cancelBtn) : cancelBtn;
|
|
150
|
+
}
|
|
369
151
|
constructor(elementRef, windowRef) {
|
|
370
152
|
this.elementRef = elementRef;
|
|
371
153
|
this.windowRef = windowRef;
|
|
@@ -390,10 +172,10 @@ class AlertComponent {
|
|
|
390
172
|
const ionModalElement = this.elementRef.nativeElement.closest('ion-modal');
|
|
391
173
|
ionModalElement?.dismiss(true);
|
|
392
174
|
}
|
|
393
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
394
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
175
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: AlertComponent, deps: [{ token: i0.ElementRef }, { token: i1.WindowRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
176
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.0", type: AlertComponent, isStandalone: true, selector: "kirby-alert", inputs: { title: "title", message: "message", iconName: "iconName", iconThemeColor: "iconThemeColor", okBtn: "okBtn", okBtnIsDestructive: "okBtnIsDestructive", cancelBtn: "cancelBtn" }, host: { properties: { "class.ion-page": "false" } }, viewQueries: [{ propertyName: "alertWrapper", first: true, predicate: ["alertWrapper"], descendants: true, static: true }], ngImport: i0, template: "<article #alertWrapper>\n <kirby-empty-state\n [iconName]=\"iconName\"\n [themeColor]=\"iconThemeColor\"\n [title]=\"title$ | async\"\n [subtitle]=\"message$ | async\"\n ></kirby-empty-state>\n <div class=\"buttongroup\">\n @if (cancelBtn$ | async; as cancelBtn) {\n <button kirby-button attentionLevel=\"3\" class=\"cancel-btn\" (click)=\"onCancel()\">\n {{ cancelBtn }}\n </button>\n }\n <button\n kirby-button\n [size]=\"(cancelBtn$ | async) ? null : 'lg'\"\n attentionLevel=\"1\"\n class=\"ok-btn\"\n [class.destructive]=\"okBtnIsDestructive\"\n (click)=\"onOk()\"\n >\n {{ okBtn$ | async }}\n </button>\n </div>\n</article>\n", styles: ["article{overflow:hidden;padding:24px 16px 16px}@media (max-width: 320px){article{padding:8px}}.buttongroup{display:flex;justify-content:center;column-gap:8px}.buttongroup button{flex:1 1 50%;margin-inline:0}.buttongroup button:only-child{flex-grow:0}\n"], dependencies: [{ kind: "ngmodule", type: IconModule }, { kind: "directive", type: i1$1.ThemeColorDirective, selector: "kirby-avatar[themeColor], kirby-card[themeColor], kirby-icon[themeColor], kirby-progress-circle-ring[themeColor], kirby-modal-footer[themeColor], kirby-empty-state[themeColor]", inputs: ["themeColor"] }, { kind: "ngmodule", type: EmptyStateModule }, { kind: "component", type: i3.EmptyStateComponent, selector: "kirby-empty-state", inputs: ["iconName", "title", "subtitle"] }, { 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: "pipe", type: i7.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
395
177
|
}
|
|
396
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
178
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: AlertComponent, decorators: [{
|
|
397
179
|
type: Component,
|
|
398
180
|
args: [{ imports: [
|
|
399
181
|
IconModule,
|
|
@@ -402,8 +184,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
402
184
|
CommonModule,
|
|
403
185
|
EmptyStateModule,
|
|
404
186
|
ThemeColorDirective,
|
|
405
|
-
], selector: 'kirby-alert', host: { '[class.ion-page]': 'false' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<article #alertWrapper>\n <kirby-empty-state\n [iconName]=\"iconName\"\n [themeColor]=\"iconThemeColor\"\n [title]=\"title$ | async\"\n [subtitle]=\"message$ | async\"\n ></kirby-empty-state>\n <div class=\"buttongroup\">\n
|
|
406
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1
|
|
187
|
+
], selector: 'kirby-alert', host: { '[class.ion-page]': 'false' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<article #alertWrapper>\n <kirby-empty-state\n [iconName]=\"iconName\"\n [themeColor]=\"iconThemeColor\"\n [title]=\"title$ | async\"\n [subtitle]=\"message$ | async\"\n ></kirby-empty-state>\n <div class=\"buttongroup\">\n @if (cancelBtn$ | async; as cancelBtn) {\n <button kirby-button attentionLevel=\"3\" class=\"cancel-btn\" (click)=\"onCancel()\">\n {{ cancelBtn }}\n </button>\n }\n <button\n kirby-button\n [size]=\"(cancelBtn$ | async) ? null : 'lg'\"\n attentionLevel=\"1\"\n class=\"ok-btn\"\n [class.destructive]=\"okBtnIsDestructive\"\n (click)=\"onOk()\"\n >\n {{ okBtn$ | async }}\n </button>\n </div>\n</article>\n", styles: ["article{overflow:hidden;padding:24px 16px 16px}@media (max-width: 320px){article{padding:8px}}.buttongroup{display:flex;justify-content:center;column-gap:8px}.buttongroup button{flex:1 1 50%;margin-inline:0}.buttongroup button:only-child{flex-grow:0}\n"] }]
|
|
188
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.WindowRef }], propDecorators: { alertWrapper: [{
|
|
407
189
|
type: ViewChild,
|
|
408
190
|
args: ['alertWrapper', { static: true }]
|
|
409
191
|
}], title: [{
|
|
@@ -445,7 +227,6 @@ class AlertHelper {
|
|
|
445
227
|
return {
|
|
446
228
|
...config,
|
|
447
229
|
okBtn: this.getOkBtn(config),
|
|
448
|
-
cancelBtn: config.cancelBtn,
|
|
449
230
|
okBtnIsDestructive: this.getOkBtnIsDestructive(config),
|
|
450
231
|
iconName: config.icon && config.icon.name,
|
|
451
232
|
iconThemeColor: config.icon && config.icon.themeColor,
|
|
@@ -454,11 +235,11 @@ class AlertHelper {
|
|
|
454
235
|
getOkBtn(config) {
|
|
455
236
|
let text;
|
|
456
237
|
if (config.okBtn) {
|
|
457
|
-
if (typeof config.okBtn === 'string') {
|
|
238
|
+
if (typeof config.okBtn === 'string' || isObservable(config.okBtn)) {
|
|
458
239
|
text = config.okBtn;
|
|
459
240
|
}
|
|
460
241
|
else {
|
|
461
|
-
text = config.okBtn
|
|
242
|
+
text = config.okBtn?.text;
|
|
462
243
|
}
|
|
463
244
|
}
|
|
464
245
|
return text;
|
|
@@ -466,64 +247,13 @@ class AlertHelper {
|
|
|
466
247
|
getOkBtnIsDestructive(config) {
|
|
467
248
|
return typeof config.okBtn === 'object' ? config.okBtn.isDestructive : undefined;
|
|
468
249
|
}
|
|
469
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
470
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
250
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: AlertHelper, deps: [{ token: i1$2.ModalController }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
251
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: AlertHelper }); }
|
|
471
252
|
}
|
|
472
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
253
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: AlertHelper, decorators: [{
|
|
473
254
|
type: Injectable
|
|
474
255
|
}], ctorParameters: () => [{ type: i1$2.ModalController }] });
|
|
475
256
|
|
|
476
|
-
class Modal {
|
|
477
|
-
}
|
|
478
|
-
/**
|
|
479
|
-
* WARNING: This is for internal use only and should not be used outside of Kirby.
|
|
480
|
-
*/
|
|
481
|
-
var ModalElementType;
|
|
482
|
-
(function (ModalElementType) {
|
|
483
|
-
ModalElementType[ModalElementType["PAGE_PROGRESS"] = 0] = "PAGE_PROGRESS";
|
|
484
|
-
ModalElementType[ModalElementType["FOOTER"] = 1] = "FOOTER";
|
|
485
|
-
ModalElementType[ModalElementType["TITLE"] = 2] = "TITLE";
|
|
486
|
-
})(ModalElementType || (ModalElementType = {}));
|
|
487
|
-
/**
|
|
488
|
-
* WARNING: This is for internal use only and should not be used outside of Kirby.
|
|
489
|
-
*/
|
|
490
|
-
class ModalElementsAdvertiser {
|
|
491
|
-
}
|
|
492
|
-
/**
|
|
493
|
-
* WARNING: This is for internal use only and should not be used outside of Kirby.
|
|
494
|
-
*/
|
|
495
|
-
class ModalElementComponent {
|
|
496
|
-
get isContainedInModal() {
|
|
497
|
-
return this.modalElementsAdvertiser !== null;
|
|
498
|
-
}
|
|
499
|
-
constructor(modalElementType, elementRef, modalElementsAdvertiser) {
|
|
500
|
-
this.modalElementType = modalElementType;
|
|
501
|
-
this.elementRef = elementRef;
|
|
502
|
-
this.modalElementsAdvertiser = modalElementsAdvertiser;
|
|
503
|
-
}
|
|
504
|
-
ngAfterViewInit() {
|
|
505
|
-
if (this.isContainedInModal) {
|
|
506
|
-
this.modalElementsAdvertiser.addModalElement(this.modalElementType, this.elementRef);
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
ngOnDestroy() {
|
|
510
|
-
if (this.isContainedInModal) {
|
|
511
|
-
this.modalElementsAdvertiser.removeModalElement(this.modalElementType, this.elementRef);
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ModalElementComponent, deps: [{ token: ModalElementType }, { token: i0.ElementRef }, { token: ModalElementsAdvertiser, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
515
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ModalElementComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: '', isInline: true }); }
|
|
516
|
-
}
|
|
517
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ModalElementComponent, decorators: [{
|
|
518
|
-
type: Component,
|
|
519
|
-
args: [{
|
|
520
|
-
template: '',
|
|
521
|
-
standalone: false,
|
|
522
|
-
}]
|
|
523
|
-
}], ctorParameters: () => [{ type: ModalElementType }, { type: i0.ElementRef }, { type: ModalElementsAdvertiser, decorators: [{
|
|
524
|
-
type: Optional
|
|
525
|
-
}] }] });
|
|
526
|
-
|
|
527
257
|
class CanDismissHelper {
|
|
528
258
|
constructor(alertHelper) {
|
|
529
259
|
this.alertHelper = alertHelper;
|
|
@@ -542,76 +272,13 @@ class CanDismissHelper {
|
|
|
542
272
|
const result = await alert.onWillDismiss;
|
|
543
273
|
return result.data;
|
|
544
274
|
}
|
|
545
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
546
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
275
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: CanDismissHelper, deps: [{ token: AlertHelper }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
276
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: CanDismissHelper }); }
|
|
547
277
|
}
|
|
548
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
278
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: CanDismissHelper, decorators: [{
|
|
549
279
|
type: Injectable
|
|
550
280
|
}], ctorParameters: () => [{ type: AlertHelper }] });
|
|
551
281
|
|
|
552
|
-
const COMPONENT_PROPS = new InjectionToken('componentProps');
|
|
553
|
-
|
|
554
|
-
/*
|
|
555
|
-
The ModalWrapperComponent class was growing large.
|
|
556
|
-
|
|
557
|
-
Hence the functions responsible for moving modal elements around
|
|
558
|
-
has been encapsulated in this class.
|
|
559
|
-
*/
|
|
560
|
-
class ModalElementsMoverDelegate {
|
|
561
|
-
constructor(renderer, elementRef) {
|
|
562
|
-
this.renderer = renderer;
|
|
563
|
-
this.elementRef = elementRef;
|
|
564
|
-
}
|
|
565
|
-
addFooter(footerElementRef) {
|
|
566
|
-
// Move the footer next to ion-content
|
|
567
|
-
this.moveChild(footerElementRef, this.elementRef);
|
|
568
|
-
}
|
|
569
|
-
removeFooter(footerElementRef) {
|
|
570
|
-
this.removeChild(footerElementRef);
|
|
571
|
-
}
|
|
572
|
-
addPageProgress(pageProgressElementRef, ionToolbarElement) {
|
|
573
|
-
this.moveChild(pageProgressElementRef, ionToolbarElement);
|
|
574
|
-
}
|
|
575
|
-
removePageProgress(pageProgressElementRef) {
|
|
576
|
-
this.removeChild(pageProgressElementRef);
|
|
577
|
-
}
|
|
578
|
-
/*
|
|
579
|
-
contentTitleElement & ionTitleElement has to be passed
|
|
580
|
-
as arguments to the method; not part of the constructor, as they
|
|
581
|
-
might reference completely different elements between calls.
|
|
582
|
-
|
|
583
|
-
For example in a multi-page routed modal where the elements are destroyed
|
|
584
|
-
and recreated.
|
|
585
|
-
*/
|
|
586
|
-
addTitle(titleElementRef, contentTitleElement, hasCollapsibleTitle, ionTitleElement) {
|
|
587
|
-
this.moveChild(titleElementRef, ionTitleElement);
|
|
588
|
-
// If title is collapsible append it to content area; required by ionic implementation.
|
|
589
|
-
if (hasCollapsibleTitle) {
|
|
590
|
-
const titleElementClone = titleElementRef.nativeElement.cloneNode(true);
|
|
591
|
-
this.moveChild(new ElementRef(titleElementClone), contentTitleElement);
|
|
592
|
-
}
|
|
593
|
-
}
|
|
594
|
-
removeTitle(titleElementRef, hasCollapsibleTitle, contentTitleElement) {
|
|
595
|
-
this.removeChild(titleElementRef);
|
|
596
|
-
if (hasCollapsibleTitle) {
|
|
597
|
-
const kirbyPageTitleElement = contentTitleElement.nativeElement.querySelector('kirby-page-title');
|
|
598
|
-
this.removeChild(new ElementRef(kirbyPageTitleElement));
|
|
599
|
-
}
|
|
600
|
-
}
|
|
601
|
-
moveChild(childElementRef, newParentElementRef) {
|
|
602
|
-
const child = childElementRef.nativeElement;
|
|
603
|
-
const newParent = newParentElementRef.nativeElement;
|
|
604
|
-
this.renderer.removeChild(child.parentElement, child);
|
|
605
|
-
this.renderer.appendChild(newParent, child);
|
|
606
|
-
}
|
|
607
|
-
removeChild(childElementRef, parentElement) {
|
|
608
|
-
const child = childElementRef.nativeElement;
|
|
609
|
-
if (child) {
|
|
610
|
-
this.renderer.removeChild(parentElement || child.parentElement, child);
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
}
|
|
614
|
-
|
|
615
282
|
const contentScrollDebounceTimeInMS = 10;
|
|
616
283
|
const contentScrolledOffsetInPixels = 4;
|
|
617
284
|
class ModalWrapperComponent {
|
|
@@ -709,6 +376,10 @@ class ModalWrapperComponent {
|
|
|
709
376
|
this.setAriaLabel();
|
|
710
377
|
}
|
|
711
378
|
set currentFooter(footer) {
|
|
379
|
+
if (this._currentFooter) {
|
|
380
|
+
this.resizeObserverService.unobserve(this._currentFooter);
|
|
381
|
+
}
|
|
382
|
+
this._currentFooter = footer;
|
|
712
383
|
if (footer !== null) {
|
|
713
384
|
this.resizeObserverService.observe(footer, (entry) => {
|
|
714
385
|
const [property, pixelValue] = [
|
|
@@ -1061,13 +732,13 @@ class ModalWrapperComponent {
|
|
|
1061
732
|
this.destroy$.next();
|
|
1062
733
|
this.destroy$.complete();
|
|
1063
734
|
}
|
|
1064
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1065
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
735
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalWrapperComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i1$1.ResizeObserverService }, { token: i1.WindowRef }, { token: i3$1.PlatformService }, { token: CanDismissHelper }, { token: i0.EnvironmentInjector }, { token: i1$1.TranslationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
736
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.0", type: ModalWrapperComponent, isStandalone: true, selector: "kirby-modal-wrapper", inputs: { scrollDisabled: "scrollDisabled", config: "config", content: "content" }, host: { listeners: { "window:focus": "onFocusChange()", "window:focusout": "onFocusChange()", "window:ionKeyboardDidShow": "_onKeyboardShow($event.detail.keyboardHeight)", "window:keyboardWillShow": "_onKeyboardShow($event.keyboardHeight)", "window:ionKeyboardDidHide": "_onKeyboardHide()", "window:keyboardWillHide": "_onKeyboardHide()", "window:resize": "_onWindowResize()" }, properties: { "class.collapsible-title": "this._hasCollapsibleTitle", "class.drawer": "this._isDrawer" } }, providers: [
|
|
1066
737
|
{ provide: Modal, useExisting: ModalWrapperComponent },
|
|
1067
738
|
{ provide: ModalElementsAdvertiser, useExisting: ModalWrapperComponent },
|
|
1068
|
-
], queries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "ionContent", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: "ionContentElement", first: true, predicate: IonContent, descendants: true, read: ElementRef, static: true }, { propertyName: "ionHeaderElement", first: true, predicate: IonHeader, descendants: true, read: ElementRef, static: true }, { propertyName: "ionToolbarElement", first: true, predicate: IonToolbar, descendants: true, read: ElementRef, static: true }, { propertyName: "ionTitleElement", first: true, predicate: IonTitle, descendants: true, read: ElementRef, static: true }, { propertyName: "routerOutlet", first: true, predicate: RouterOutlet, descendants: true, static: true }, { propertyName: "_contentTitleElement", first: true, predicate: ["contentTitle"], descendants: true, read: ElementRef }, { propertyName: "toolbarButtonsQuery", predicate: ButtonComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<ion-header\n role=\"presentation\"\n [class.content-scrolled]=\"isContentScrolled\"\n (touchstart)=\"onHeaderTouchStart($event)\"\n>\n <ion-toolbar>\n <ion-title role=\"heading\" aria-level=\"2\" tabindex=\"-1\"></ion-title>\n
|
|
739
|
+
], queries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "ionContent", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: "ionContentElement", first: true, predicate: IonContent, descendants: true, read: ElementRef, static: true }, { propertyName: "ionHeaderElement", first: true, predicate: IonHeader, descendants: true, read: ElementRef, static: true }, { propertyName: "ionToolbarElement", first: true, predicate: IonToolbar, descendants: true, read: ElementRef, static: true }, { propertyName: "ionTitleElement", first: true, predicate: IonTitle, descendants: true, read: ElementRef, static: true }, { propertyName: "routerOutlet", first: true, predicate: RouterOutlet, descendants: true, static: true }, { propertyName: "_contentTitleElement", first: true, predicate: ["contentTitle"], descendants: true, read: ElementRef }, { propertyName: "toolbarButtonsQuery", predicate: ButtonComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<ion-header\n role=\"presentation\"\n [class.content-scrolled]=\"isContentScrolled\"\n (touchstart)=\"onHeaderTouchStart($event)\"\n>\n <ion-toolbar>\n <ion-title role=\"heading\" aria-level=\"2\" tabindex=\"-1\"></ion-title>\n @if (config.flavor === 'drawer' && config.drawerSupplementaryAction) {\n <ion-buttons slot=\"secondary\">\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n (click)=\"config.drawerSupplementaryAction.action($event)\"\n >\n <kirby-icon [name]=\"config.drawerSupplementaryAction.iconName\"></kirby-icon>\n </button>\n </ion-buttons>\n }\n <ion-buttons slot=\"primary\">\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n [noDecoration]=\"config.interactWithBackground\"\n [attr.aria-label]=\"translations.get('close')\"\n (click)=\"close()\"\n >\n <kirby-icon name=\"close\"></kirby-icon>\n </button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"scrollEventsEnabled\">\n @if (_hasCollapsibleTitle) {\n <ion-header collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-xlarge\" #contentTitle></span>\n </ion-toolbar>\n </ion-header>\n }\n\n <!-- Outlet for ModalController -->\n <ng-container\n *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n ></ng-container>\n\n <!-- Outlet for projected content -->\n <ng-container *ngTemplateOutlet=\"content; injector: modalWrapperInjector\"></ng-container>\n\n <!-- Outlet for route-based modal -->\n <router-outlet\n name=\"kirbyModalWrapperOutlet\"\n [style.visibility]=\"config.modalRoute ? 'visible' : 'hidden'\"\n ></router-outlet>\n</ion-content>\n", styles: ["ion-header{box-sizing:border-box}ion-header ion-toolbar{--padding-start: 8px;--padding-end: 8px;--padding-bottom: 7px;--padding-top: 8px;--border-width: 0;--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));border-bottom:1px solid transparent;transition:border-color .2s linear}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-header ion-toolbar button{color:var(--color)}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}@media (max-width: 767px){:host.drawer ion-header ion-toolbar{--padding-top: 16px}:host.drawer ion-header ion-toolbar:first-of-type{padding-top:0}}@media (min-width: 768px){ion-header ion-toolbar{border-bottom-color:var(--kirby-medium)}}ion-header.content-scrolled ion-toolbar{border-bottom-color:var(--kirby-medium)}:host-context(ion-modal.no-header-area-border) ion-header ion-toolbar{border-bottom-color:transparent}@media (max-width: 767px){:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}}:host-context(ion-modal.kirby-drawer.interact-with-background){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-header ion-toolbar{border-bottom-color:transparent}:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:var(--kirby-safe-area-top, 0)}@media (min-width: 768px){:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end));font-size:16px;font-weight:700}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column;height:calc(var(--height) - var(--header-height) - var(--footer-height));max-height:calc(var(--max-height) - var(--header-height) - var(--footer-height))}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-top: 0px;--padding-bottom: 32px;--padding-start: 8px;--padding-end: 8px;border:none}@media (min-width: 768px){:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-start: 16px;--padding-end: 16px}}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$3.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { 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: IconModule }, { kind: "component", type: i6.IconComponent, selector: "kirby-icon", inputs: ["size", "name"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }] }); }
|
|
1069
740
|
}
|
|
1070
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
741
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalWrapperComponent, decorators: [{
|
|
1071
742
|
type: Component,
|
|
1072
743
|
args: [{ imports: [
|
|
1073
744
|
RouterModule,
|
|
@@ -1082,8 +753,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
1082
753
|
], selector: 'kirby-modal-wrapper', providers: [
|
|
1083
754
|
{ provide: Modal, useExisting: ModalWrapperComponent },
|
|
1084
755
|
{ provide: ModalElementsAdvertiser, useExisting: ModalWrapperComponent },
|
|
1085
|
-
], template: "<ion-header\n role=\"presentation\"\n [class.content-scrolled]=\"isContentScrolled\"\n (touchstart)=\"onHeaderTouchStart($event)\"\n>\n <ion-toolbar>\n <ion-title role=\"heading\" aria-level=\"2\" tabindex=\"-1\"></ion-title>\n
|
|
1086
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i1$
|
|
756
|
+
], template: "<ion-header\n role=\"presentation\"\n [class.content-scrolled]=\"isContentScrolled\"\n (touchstart)=\"onHeaderTouchStart($event)\"\n>\n <ion-toolbar>\n <ion-title role=\"heading\" aria-level=\"2\" tabindex=\"-1\"></ion-title>\n @if (config.flavor === 'drawer' && config.drawerSupplementaryAction) {\n <ion-buttons slot=\"secondary\">\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n (click)=\"config.drawerSupplementaryAction.action($event)\"\n >\n <kirby-icon [name]=\"config.drawerSupplementaryAction.iconName\"></kirby-icon>\n </button>\n </ion-buttons>\n }\n <ion-buttons slot=\"primary\">\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n [noDecoration]=\"config.interactWithBackground\"\n [attr.aria-label]=\"translations.get('close')\"\n (click)=\"close()\"\n >\n <kirby-icon name=\"close\"></kirby-icon>\n </button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"scrollEventsEnabled\">\n @if (_hasCollapsibleTitle) {\n <ion-header collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-xlarge\" #contentTitle></span>\n </ion-toolbar>\n </ion-header>\n }\n\n <!-- Outlet for ModalController -->\n <ng-container\n *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n ></ng-container>\n\n <!-- Outlet for projected content -->\n <ng-container *ngTemplateOutlet=\"content; injector: modalWrapperInjector\"></ng-container>\n\n <!-- Outlet for route-based modal -->\n <router-outlet\n name=\"kirbyModalWrapperOutlet\"\n [style.visibility]=\"config.modalRoute ? 'visible' : 'hidden'\"\n ></router-outlet>\n</ion-content>\n", styles: ["ion-header{box-sizing:border-box}ion-header ion-toolbar{--padding-start: 8px;--padding-end: 8px;--padding-bottom: 7px;--padding-top: 8px;--border-width: 0;--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));border-bottom:1px solid transparent;transition:border-color .2s linear}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-header ion-toolbar button{color:var(--color)}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}@media (max-width: 767px){:host.drawer ion-header ion-toolbar{--padding-top: 16px}:host.drawer ion-header ion-toolbar:first-of-type{padding-top:0}}@media (min-width: 768px){ion-header ion-toolbar{border-bottom-color:var(--kirby-medium)}}ion-header.content-scrolled ion-toolbar{border-bottom-color:var(--kirby-medium)}:host-context(ion-modal.no-header-area-border) ion-header ion-toolbar{border-bottom-color:transparent}@media (max-width: 767px){:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}}:host-context(ion-modal.kirby-drawer.interact-with-background){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-header ion-toolbar{border-bottom-color:transparent}:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:var(--kirby-safe-area-top, 0)}@media (min-width: 768px){:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end));font-size:16px;font-weight:700}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column;height:calc(var(--height) - var(--header-height) - var(--footer-height));max-height:calc(var(--max-height) - var(--header-height) - var(--footer-height))}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-top: 0px;--padding-bottom: 32px;--padding-start: 8px;--padding-end: 8px;border:none}@media (min-width: 768px){:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-start: 16px;--padding-end: 16px}}\n"] }]
|
|
757
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i1$1.ResizeObserverService }, { type: i1.WindowRef }, { type: i3$1.PlatformService }, { type: CanDismissHelper }, { type: i0.EnvironmentInjector }, { type: i1$1.TranslationService }], propDecorators: { _hasCollapsibleTitle: [{
|
|
1087
758
|
type: HostBinding,
|
|
1088
759
|
args: ['class.collapsible-title']
|
|
1089
760
|
}], scrollDisabled: [{
|
|
@@ -1207,13 +878,13 @@ class ModalCompactWrapperComponent {
|
|
|
1207
878
|
// This fixes an undesired scroll behaviour occurring on keyboard-tabbing backwards (with shift+tab):
|
|
1208
879
|
this.windowRef.nativeWindow.scrollTo({ top: this.scrollY });
|
|
1209
880
|
}
|
|
1210
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1211
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
881
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalCompactWrapperComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i1.WindowRef }, { token: CanDismissHelper }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
882
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.0", type: ModalCompactWrapperComponent, isStandalone: true, selector: "kirby-modal-compact-wrapper", inputs: { config: "config", content: "content" }, host: { listeners: { "window:focus": "onFocusChange()", "window:focusout": "onFocusChange()" }, properties: { "class.ion-page": "false" } }, providers: [{ provide: Modal, useExisting: ModalCompactWrapperComponent }], ngImport: i0, template: "<!-- Outlet for ModalController -->\n<ng-container\n *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n></ng-container>\n\n<!-- Outlet for projected content -->\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n", styles: [":host{display:block;padding:24px 16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
1212
883
|
}
|
|
1213
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
884
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalCompactWrapperComponent, decorators: [{
|
|
1214
885
|
type: Component,
|
|
1215
886
|
args: [{ selector: 'kirby-modal-compact-wrapper', providers: [{ provide: Modal, useExisting: ModalCompactWrapperComponent }], imports: [CommonModule], host: { '[class.ion-page]': 'false' }, template: "<!-- Outlet for ModalController -->\n<ng-container\n *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n></ng-container>\n\n<!-- Outlet for projected content -->\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n", styles: [":host{display:block;padding:24px 16px}\n"] }]
|
|
1216
|
-
}], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i1
|
|
887
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i1.WindowRef }, { type: CanDismissHelper }, { type: i0.Renderer2 }], propDecorators: { config: [{
|
|
1217
888
|
type: Input
|
|
1218
889
|
}], content: [{
|
|
1219
890
|
type: Input
|
|
@@ -1262,68 +933,176 @@ class ModalAnimationBuilderService {
|
|
|
1262
933
|
return el.shadowRoot || fallback;
|
|
1263
934
|
};
|
|
1264
935
|
}
|
|
1265
|
-
enterAnimation(currentBackdrop) {
|
|
1266
|
-
return (baseEl, opts) => {
|
|
936
|
+
enterAnimation(currentBackdrop) {
|
|
937
|
+
return (baseEl, opts) => {
|
|
938
|
+
const { presentingEl } = opts;
|
|
939
|
+
const root = this.getElementRoot(baseEl);
|
|
940
|
+
const { wrapperAnimation, backdropAnimation } = this.createEnterAnimation();
|
|
941
|
+
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
|
942
|
+
wrapperAnimation
|
|
943
|
+
.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow'))
|
|
944
|
+
.beforeStyles({ opacity: 1 });
|
|
945
|
+
const baseAnimation = createAnimation('entering-base')
|
|
946
|
+
.addElement(baseEl)
|
|
947
|
+
.easing(this.easingEnter)
|
|
948
|
+
.duration(this.duration)
|
|
949
|
+
.addAnimation(wrapperAnimation);
|
|
950
|
+
let currentBackdropAnimation;
|
|
951
|
+
if (currentBackdrop) {
|
|
952
|
+
currentBackdropAnimation = createAnimation()
|
|
953
|
+
.addElement(currentBackdrop)
|
|
954
|
+
.fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
|
|
955
|
+
}
|
|
956
|
+
if (presentingEl) {
|
|
957
|
+
const isMobile = !this.platform.isPhabletOrBigger();
|
|
958
|
+
const hasCardModal = presentingEl.tagName === 'ION-MODAL' &&
|
|
959
|
+
presentingEl.presentingElement !== undefined;
|
|
960
|
+
const presentingElRoot = this.getElementRoot(presentingEl);
|
|
961
|
+
const presentingAnimation = createAnimation().beforeStyles({
|
|
962
|
+
transform: 'translateY(0)',
|
|
963
|
+
'transform-origin': 'top center',
|
|
964
|
+
overflow: 'hidden',
|
|
965
|
+
});
|
|
966
|
+
const bodyEl = document.body;
|
|
967
|
+
if (isMobile) {
|
|
968
|
+
/**
|
|
969
|
+
* Fallback for browsers that does not support `max()` (ex: Firefox)
|
|
970
|
+
* No need to worry about statusbar padding since engines like Gecko
|
|
971
|
+
* are not used as the engine for standalone Cordova/Capacitor apps
|
|
972
|
+
*/
|
|
973
|
+
const transformOffset = !CSS.supports('width', 'max(0px, 1px)')
|
|
974
|
+
? '30px'
|
|
975
|
+
: 'max(30px, var(--ion-safe-area-top))';
|
|
976
|
+
const modalTransform = hasCardModal ? '-10px' : transformOffset;
|
|
977
|
+
const toPresentingScale = this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE;
|
|
978
|
+
const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;
|
|
979
|
+
presentingAnimation
|
|
980
|
+
.afterStyles({
|
|
981
|
+
transform: finalTransform,
|
|
982
|
+
})
|
|
983
|
+
.beforeAddWrite(() => bodyEl.style.setProperty('background-color', 'black'))
|
|
984
|
+
.addElement(presentingEl)
|
|
985
|
+
.keyframes([
|
|
986
|
+
{
|
|
987
|
+
offset: 0,
|
|
988
|
+
filter: 'contrast(1)',
|
|
989
|
+
transform: 'translateY(0px) scale(1)',
|
|
990
|
+
borderRadius: '0px',
|
|
991
|
+
},
|
|
992
|
+
{
|
|
993
|
+
offset: 1,
|
|
994
|
+
filter: 'contrast(0.85)',
|
|
995
|
+
transform: finalTransform,
|
|
996
|
+
borderRadius: '10px 10px 0 0',
|
|
997
|
+
},
|
|
998
|
+
]);
|
|
999
|
+
baseAnimation.addAnimation(presentingAnimation);
|
|
1000
|
+
}
|
|
1001
|
+
else {
|
|
1002
|
+
baseAnimation.addAnimation(backdropAnimation);
|
|
1003
|
+
if (currentBackdropAnimation) {
|
|
1004
|
+
baseAnimation.addAnimation(currentBackdropAnimation);
|
|
1005
|
+
}
|
|
1006
|
+
if (!hasCardModal) {
|
|
1007
|
+
wrapperAnimation.fromTo('opacity', '0', '1');
|
|
1008
|
+
}
|
|
1009
|
+
else {
|
|
1010
|
+
const toPresentingScale = hasCardModal
|
|
1011
|
+
? this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE
|
|
1012
|
+
: 1;
|
|
1013
|
+
const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;
|
|
1014
|
+
presentingAnimation
|
|
1015
|
+
.afterStyles({
|
|
1016
|
+
transform: finalTransform,
|
|
1017
|
+
})
|
|
1018
|
+
.addElement(presentingElRoot.querySelector('.modal-wrapper'))
|
|
1019
|
+
.keyframes([
|
|
1020
|
+
{ offset: 0, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },
|
|
1021
|
+
{ offset: 1, filter: 'contrast(0.85)', transform: finalTransform },
|
|
1022
|
+
]);
|
|
1023
|
+
const shadowAnimation = createAnimation()
|
|
1024
|
+
.afterStyles({
|
|
1025
|
+
transform: finalTransform,
|
|
1026
|
+
})
|
|
1027
|
+
.addElement(presentingElRoot.querySelector('.modal-shadow'))
|
|
1028
|
+
.keyframes([
|
|
1029
|
+
{ offset: 0, opacity: '1', transform: 'translateY(0) scale(1)' },
|
|
1030
|
+
{ offset: 1, opacity: '0', transform: finalTransform },
|
|
1031
|
+
]);
|
|
1032
|
+
baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
else {
|
|
1037
|
+
baseAnimation.addAnimation(backdropAnimation);
|
|
1038
|
+
if (currentBackdropAnimation) {
|
|
1039
|
+
baseAnimation.addAnimation(currentBackdropAnimation);
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1042
|
+
return baseAnimation;
|
|
1043
|
+
};
|
|
1044
|
+
}
|
|
1045
|
+
leaveAnimation(currentBackdrop) {
|
|
1046
|
+
return (baseEl, opts, duration = this.duration) => {
|
|
1267
1047
|
const { presentingEl } = opts;
|
|
1268
1048
|
const root = this.getElementRoot(baseEl);
|
|
1269
|
-
const { wrapperAnimation, backdropAnimation } = this.
|
|
1049
|
+
const { wrapperAnimation, backdropAnimation } = this.createLeaveAnimation();
|
|
1270
1050
|
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
|
1271
1051
|
wrapperAnimation
|
|
1272
1052
|
.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow'))
|
|
1273
1053
|
.beforeStyles({ opacity: 1 });
|
|
1274
|
-
const baseAnimation = createAnimation('
|
|
1054
|
+
const baseAnimation = createAnimation('leaving-base')
|
|
1275
1055
|
.addElement(baseEl)
|
|
1276
|
-
.easing(this.
|
|
1277
|
-
.duration(
|
|
1056
|
+
.easing(this.easingLeave)
|
|
1057
|
+
.duration(duration)
|
|
1278
1058
|
.addAnimation(wrapperAnimation);
|
|
1279
1059
|
let currentBackdropAnimation;
|
|
1280
1060
|
if (currentBackdrop) {
|
|
1281
1061
|
currentBackdropAnimation = createAnimation()
|
|
1282
1062
|
.addElement(currentBackdrop)
|
|
1283
|
-
.fromTo('opacity', 'var(--backdrop-opacity)'
|
|
1063
|
+
.fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
|
|
1064
|
+
.afterStyles({ opacity: 'var(--backdrop-opacity)' }); //Ensures backdrop is reset to default opacity after swipe to close
|
|
1284
1065
|
}
|
|
1285
1066
|
if (presentingEl) {
|
|
1286
1067
|
const isMobile = !this.platform.isPhabletOrBigger();
|
|
1287
1068
|
const hasCardModal = presentingEl.tagName === 'ION-MODAL' &&
|
|
1288
1069
|
presentingEl.presentingElement !== undefined;
|
|
1289
1070
|
const presentingElRoot = this.getElementRoot(presentingEl);
|
|
1290
|
-
const presentingAnimation = createAnimation()
|
|
1291
|
-
transform
|
|
1292
|
-
'transform
|
|
1293
|
-
|
|
1071
|
+
const presentingAnimation = createAnimation()
|
|
1072
|
+
.beforeClearStyles(['transform'])
|
|
1073
|
+
.afterClearStyles(['transform'])
|
|
1074
|
+
.onFinish((currentStep) => {
|
|
1075
|
+
// only reset background color if this is the last card-style modal
|
|
1076
|
+
if (currentStep !== 1) {
|
|
1077
|
+
return;
|
|
1078
|
+
}
|
|
1079
|
+
presentingEl.style.setProperty('overflow', '');
|
|
1080
|
+
const numModals = Array.from(bodyEl.querySelectorAll('ion-modal')).filter((m) => m.presentingElement !== undefined).length;
|
|
1081
|
+
if (numModals <= 1) {
|
|
1082
|
+
bodyEl.style.setProperty('background-color', '');
|
|
1083
|
+
}
|
|
1294
1084
|
});
|
|
1295
1085
|
const bodyEl = document.body;
|
|
1296
1086
|
if (isMobile) {
|
|
1297
|
-
/**
|
|
1298
|
-
* Fallback for browsers that does not support `max()` (ex: Firefox)
|
|
1299
|
-
* No need to worry about statusbar padding since engines like Gecko
|
|
1300
|
-
* are not used as the engine for standalone Cordova/Capacitor apps
|
|
1301
|
-
*/
|
|
1302
1087
|
const transformOffset = !CSS.supports('width', 'max(0px, 1px)')
|
|
1303
1088
|
? '30px'
|
|
1304
1089
|
: 'max(30px, var(--ion-safe-area-top))';
|
|
1305
1090
|
const modalTransform = hasCardModal ? '-10px' : transformOffset;
|
|
1306
1091
|
const toPresentingScale = this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE;
|
|
1307
1092
|
const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;
|
|
1308
|
-
presentingAnimation
|
|
1309
|
-
.afterStyles({
|
|
1310
|
-
transform: finalTransform,
|
|
1311
|
-
})
|
|
1312
|
-
.beforeAddWrite(() => bodyEl.style.setProperty('background-color', 'black'))
|
|
1313
|
-
.addElement(presentingEl)
|
|
1314
|
-
.keyframes([
|
|
1093
|
+
presentingAnimation.addElement(presentingEl).keyframes([
|
|
1315
1094
|
{
|
|
1316
1095
|
offset: 0,
|
|
1317
|
-
filter: 'contrast(1)',
|
|
1318
|
-
transform: 'translateY(0px) scale(1)',
|
|
1319
|
-
borderRadius: '0px',
|
|
1320
|
-
},
|
|
1321
|
-
{
|
|
1322
|
-
offset: 1,
|
|
1323
1096
|
filter: 'contrast(0.85)',
|
|
1324
1097
|
transform: finalTransform,
|
|
1325
1098
|
borderRadius: '10px 10px 0 0',
|
|
1326
1099
|
},
|
|
1100
|
+
{
|
|
1101
|
+
offset: 1,
|
|
1102
|
+
filter: 'contrast(1)',
|
|
1103
|
+
transform: 'translateY(0px) scale(1)',
|
|
1104
|
+
borderRadius: '0px',
|
|
1105
|
+
},
|
|
1327
1106
|
]);
|
|
1328
1107
|
baseAnimation.addAnimation(presentingAnimation);
|
|
1329
1108
|
}
|
|
@@ -1333,7 +1112,7 @@ class ModalAnimationBuilderService {
|
|
|
1333
1112
|
baseAnimation.addAnimation(currentBackdropAnimation);
|
|
1334
1113
|
}
|
|
1335
1114
|
if (!hasCardModal) {
|
|
1336
|
-
wrapperAnimation.fromTo('opacity', '
|
|
1115
|
+
wrapperAnimation.fromTo('opacity', '1', '0');
|
|
1337
1116
|
}
|
|
1338
1117
|
else {
|
|
1339
1118
|
const toPresentingScale = hasCardModal
|
|
@@ -1341,22 +1120,22 @@ class ModalAnimationBuilderService {
|
|
|
1341
1120
|
: 1;
|
|
1342
1121
|
const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;
|
|
1343
1122
|
presentingAnimation
|
|
1123
|
+
.addElement(presentingElRoot.querySelector('.modal-wrapper'))
|
|
1344
1124
|
.afterStyles({
|
|
1345
|
-
transform:
|
|
1125
|
+
transform: 'translate3d(0, 0, 0)',
|
|
1346
1126
|
})
|
|
1347
|
-
.addElement(presentingElRoot.querySelector('.modal-wrapper'))
|
|
1348
1127
|
.keyframes([
|
|
1349
|
-
{ offset: 0, filter: 'contrast(
|
|
1350
|
-
{ offset: 1, filter: 'contrast(
|
|
1128
|
+
{ offset: 0, filter: 'contrast(0.85)', transform: finalTransform },
|
|
1129
|
+
{ offset: 1, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },
|
|
1351
1130
|
]);
|
|
1352
1131
|
const shadowAnimation = createAnimation()
|
|
1132
|
+
.addElement(presentingElRoot.querySelector('.modal-shadow'))
|
|
1353
1133
|
.afterStyles({
|
|
1354
|
-
transform:
|
|
1134
|
+
transform: 'translateY(0) scale(1)',
|
|
1355
1135
|
})
|
|
1356
|
-
.addElement(presentingElRoot.querySelector('.modal-shadow'))
|
|
1357
1136
|
.keyframes([
|
|
1358
|
-
{ offset: 0, opacity: '
|
|
1359
|
-
{ offset: 1, opacity: '
|
|
1137
|
+
{ offset: 0, opacity: '0', transform: finalTransform },
|
|
1138
|
+
{ offset: 1, opacity: '1', transform: 'translateY(0) scale(1)' },
|
|
1360
1139
|
]);
|
|
1361
1140
|
baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);
|
|
1362
1141
|
}
|
|
@@ -1371,121 +1150,272 @@ class ModalAnimationBuilderService {
|
|
|
1371
1150
|
return baseAnimation;
|
|
1372
1151
|
};
|
|
1373
1152
|
}
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1153
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalAnimationBuilderService, deps: [{ token: i3$1.PlatformService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1154
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalAnimationBuilderService, providedIn: 'root' }); }
|
|
1155
|
+
}
|
|
1156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalAnimationBuilderService, decorators: [{
|
|
1157
|
+
type: Injectable,
|
|
1158
|
+
args: [{ providedIn: 'root' }]
|
|
1159
|
+
}], ctorParameters: () => [{ type: i3$1.PlatformService }] });
|
|
1160
|
+
|
|
1161
|
+
class ModalNavigationService {
|
|
1162
|
+
constructor(router, route) {
|
|
1163
|
+
this.router = router;
|
|
1164
|
+
this.route = route;
|
|
1165
|
+
this.navigationEndListener$ = this.router.events.pipe(filter((event) => event instanceof NavigationEnd));
|
|
1166
|
+
}
|
|
1167
|
+
isModalRoute(url) {
|
|
1168
|
+
return url.includes('(modal:');
|
|
1169
|
+
}
|
|
1170
|
+
getCurrentActivatedRoute() {
|
|
1171
|
+
let childRoute = this.route.root;
|
|
1172
|
+
while (childRoute.firstChild) {
|
|
1173
|
+
childRoute = childRoute.firstChild;
|
|
1174
|
+
}
|
|
1175
|
+
return childRoute;
|
|
1176
|
+
}
|
|
1177
|
+
async getModalRoutes(routeConfig, moduleRootRoutePath) {
|
|
1178
|
+
const flattenedRoutes = [].concat(...routeConfig);
|
|
1179
|
+
let modalRoutes = [];
|
|
1180
|
+
const moduleRootPaths = await this.getModuleRootPath(flattenedRoutes, moduleRootRoutePath);
|
|
1181
|
+
if (moduleRootPaths) {
|
|
1182
|
+
modalRoutes = this.getModalRoutePaths(flattenedRoutes, moduleRootPaths);
|
|
1183
|
+
}
|
|
1184
|
+
return modalRoutes;
|
|
1185
|
+
}
|
|
1186
|
+
async getModuleRootPath(routes, moduleRootRoutePath) {
|
|
1187
|
+
if (moduleRootRoutePath) {
|
|
1188
|
+
const trimmedPaths = moduleRootRoutePath
|
|
1189
|
+
.trim()
|
|
1190
|
+
.split('/')
|
|
1191
|
+
.filter((path) => !!path);
|
|
1192
|
+
const rootPath = [''];
|
|
1193
|
+
return rootPath.concat(trimmedPaths);
|
|
1194
|
+
}
|
|
1195
|
+
const currentRoutePaths = await this.getCurrentRoutePaths();
|
|
1196
|
+
const moduleRootPaths = this.getRoutePathsWithoutChildSegments(currentRoutePaths, routes);
|
|
1197
|
+
return moduleRootPaths;
|
|
1198
|
+
}
|
|
1199
|
+
async getCurrentRoutePaths() {
|
|
1200
|
+
const rootPath = [''];
|
|
1201
|
+
const currentNavigation = this.router.getCurrentNavigation();
|
|
1202
|
+
if (!this.router.navigated && !currentNavigation) {
|
|
1203
|
+
// If router hasn't navigated yet and we are not in the middle of navigating, assume root:
|
|
1204
|
+
return rootPath;
|
|
1205
|
+
}
|
|
1206
|
+
if (currentNavigation) {
|
|
1207
|
+
// Wait for current navigation to finish:
|
|
1208
|
+
await firstValueFrom(this.navigationEndListener$);
|
|
1209
|
+
}
|
|
1210
|
+
let childRoute = this.route.snapshot.root;
|
|
1211
|
+
while (childRoute.firstChild) {
|
|
1212
|
+
childRoute = childRoute.firstChild;
|
|
1213
|
+
}
|
|
1214
|
+
const currentBackdropRoutePath = childRoute.pathFromRoot.filter((route) => route.outlet !== 'modal');
|
|
1215
|
+
return rootPath.concat(...currentBackdropRoutePath.map((route) => route.url.filter((segment) => !!segment.path).map((segment) => segment.path)));
|
|
1216
|
+
}
|
|
1217
|
+
getRoutePathsWithoutChildSegments(routePaths, routes) {
|
|
1218
|
+
if (!routePaths.length)
|
|
1219
|
+
return routePaths;
|
|
1220
|
+
const matchedChildRoute = this.findChildRouteForUrl(routePaths.join('/'), routes);
|
|
1221
|
+
if (!matchedChildRoute)
|
|
1222
|
+
return routePaths;
|
|
1223
|
+
const startSlashRegex = /^\//;
|
|
1224
|
+
const relativeChildRoute = matchedChildRoute.replace(startSlashRegex, '');
|
|
1225
|
+
const childSegmentCount = relativeChildRoute.split('/').length;
|
|
1226
|
+
const routePathsWithoutChildSegments = routePaths.slice(0, -childSegmentCount); // Remove child segments from end of route path array
|
|
1227
|
+
return routePathsWithoutChildSegments;
|
|
1228
|
+
}
|
|
1229
|
+
findChildRouteForUrl(url, routes) {
|
|
1230
|
+
const moduleRelativePaths = this.getRoutePaths(routes, ['']).sort().reverse(); // Ensure child paths are evaluated first
|
|
1231
|
+
let matchedChildRoute = moduleRelativePaths.find((path) => url.endsWith(path));
|
|
1232
|
+
if (!matchedChildRoute) {
|
|
1233
|
+
// No static child route found matching current route - look for child route with url params:
|
|
1234
|
+
const exactMatch = false;
|
|
1235
|
+
matchedChildRoute = moduleRelativePaths.find((path) => path.includes('/:') && this.pathContainsChildRouteWithUrlParams(url, path, exactMatch));
|
|
1236
|
+
}
|
|
1237
|
+
return matchedChildRoute;
|
|
1238
|
+
}
|
|
1239
|
+
pathContainsChildRouteWithUrlParams(path, childRouteWithUrlParams, exactMatch) {
|
|
1240
|
+
const pathSegments = path.split('/');
|
|
1241
|
+
const startSlashRegex = /^\//;
|
|
1242
|
+
let childRouteToMatch = childRouteWithUrlParams;
|
|
1243
|
+
if (!exactMatch) {
|
|
1244
|
+
const relativeChildRoute = childRouteWithUrlParams.replace(startSlashRegex, '');
|
|
1245
|
+
childRouteToMatch = relativeChildRoute;
|
|
1246
|
+
}
|
|
1247
|
+
const childRouteSegments = childRouteToMatch.split('/');
|
|
1248
|
+
// Match each child route segment against url
|
|
1249
|
+
// Match backwards from end to start of child route, i.e. "url ends with child route":
|
|
1250
|
+
const pathContainsChildRoute = childRouteSegments.reverse().every((childRouteSegment) => {
|
|
1251
|
+
const pathSegment = pathSegments.pop();
|
|
1252
|
+
// url params (e.g. `/:id/`) are treated as a match:
|
|
1253
|
+
return childRouteSegment.startsWith(':') || childRouteSegment === pathSegment;
|
|
1254
|
+
});
|
|
1255
|
+
if (exactMatch) {
|
|
1256
|
+
// Only match if we've reached the start of the url to match against:
|
|
1257
|
+
return pathSegments.length === 0 && pathContainsChildRoute;
|
|
1258
|
+
}
|
|
1259
|
+
return pathContainsChildRoute;
|
|
1260
|
+
}
|
|
1261
|
+
getRoutePaths(routes, parentPath) {
|
|
1262
|
+
return Array.isArray(routes)
|
|
1263
|
+
? [].concat(...routes.map((route) => this.getRoutePath(route, parentPath)))
|
|
1264
|
+
: [];
|
|
1265
|
+
}
|
|
1266
|
+
getRoutePath(route, parentPath) {
|
|
1267
|
+
const routes = [];
|
|
1268
|
+
if (route.outlet)
|
|
1269
|
+
return routes; // Don't return relative paths for outlet routes
|
|
1270
|
+
const currentPath = [...parentPath];
|
|
1271
|
+
if (route.path) {
|
|
1272
|
+
currentPath.push(route.path);
|
|
1273
|
+
routes.push(currentPath.join('/'));
|
|
1274
|
+
}
|
|
1275
|
+
return routes.concat(this.getRoutePaths(route.children, currentPath));
|
|
1276
|
+
}
|
|
1277
|
+
getModalRoutePath(route, parentPath) {
|
|
1278
|
+
const modalOutletName = 'modal';
|
|
1279
|
+
if (!!route.path && route.outlet === modalOutletName) {
|
|
1280
|
+
const modalOutletPath = `(${modalOutletName}:${route.path})`;
|
|
1281
|
+
const modalRoutePath = [...parentPath, modalOutletPath].join('/');
|
|
1282
|
+
return [modalRoutePath];
|
|
1283
|
+
}
|
|
1284
|
+
const currentPath = [...parentPath];
|
|
1285
|
+
if (route.path) {
|
|
1286
|
+
currentPath.push(route.path);
|
|
1287
|
+
}
|
|
1288
|
+
return [].concat(...this.getModalRoutePaths(route.children, currentPath));
|
|
1289
|
+
}
|
|
1290
|
+
getModalRoutePaths(routes, parentPath) {
|
|
1291
|
+
return Array.isArray(routes)
|
|
1292
|
+
? [].concat(...routes.map((route) => this.getModalRoutePath(route, parentPath)))
|
|
1293
|
+
: [];
|
|
1294
|
+
}
|
|
1295
|
+
isNewModalWindow(navigationEnd) {
|
|
1296
|
+
const currentNavigation = this.router.getCurrentNavigation();
|
|
1297
|
+
if (!currentNavigation || !currentNavigation.previousNavigation) {
|
|
1298
|
+
return true;
|
|
1299
|
+
}
|
|
1300
|
+
const previousRoutePath = (currentNavigation.previousNavigation.finalUrl ||
|
|
1301
|
+
currentNavigation.previousNavigation.extractedUrl).toString();
|
|
1302
|
+
const wasModalRoute = this.isModalRoute(previousRoutePath);
|
|
1303
|
+
const isModalRoute = this.isModalRoute(navigationEnd.urlAfterRedirects);
|
|
1304
|
+
if (!wasModalRoute && isModalRoute) {
|
|
1305
|
+
return true;
|
|
1306
|
+
}
|
|
1307
|
+
const currentModalRouteParent = navigationEnd.urlAfterRedirects.split('/(modal:')[0];
|
|
1308
|
+
const previousModalRouteParent = previousRoutePath.split('/(modal:')[0];
|
|
1309
|
+
return previousModalRouteParent !== currentModalRouteParent;
|
|
1310
|
+
}
|
|
1311
|
+
async waitForCurrentThenGetNavigationEndStream() {
|
|
1312
|
+
if (this.router.getCurrentNavigation()) {
|
|
1313
|
+
const currentNavigationEnd = await firstValueFrom(this.navigationEndListener$);
|
|
1314
|
+
return this.navigationEndListener$.pipe(startWith(currentNavigationEnd));
|
|
1315
|
+
}
|
|
1316
|
+
return this.navigationEndListener$;
|
|
1317
|
+
}
|
|
1318
|
+
modalRouteActivatedFor(navigationEnd$, modalRouteSet, modalRoutesContainsUrlParams) {
|
|
1319
|
+
return navigationEnd$.pipe(filter((navigationEnd) => this.modalRouteSetContainsPath(modalRouteSet, navigationEnd, modalRoutesContainsUrlParams)), map((navigationEnd) => {
|
|
1320
|
+
return {
|
|
1321
|
+
route: this.getCurrentActivatedRoute(),
|
|
1322
|
+
isNewModal: this.isNewModalWindow(navigationEnd),
|
|
1323
|
+
};
|
|
1324
|
+
}));
|
|
1325
|
+
}
|
|
1326
|
+
modalRouteDeactivatedFor(navigationEnd$, modalRouteSet, modalRoutesContainsUrlParams) {
|
|
1327
|
+
return navigationEnd$.pipe(pairwise(),
|
|
1328
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1329
|
+
filter(([prevNavigation, _]) => this.modalRouteSetContainsPath(modalRouteSet, prevNavigation, modalRoutesContainsUrlParams)), // Only emit if previous route was modal
|
|
1330
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1331
|
+
map(([_, currentNavigation]) => {
|
|
1332
|
+
const isNewModalRoute = this.isModalRoute(currentNavigation.urlAfterRedirects);
|
|
1333
|
+
// Deactivate modal route if new route is NOT modal OR is outside current parent route:
|
|
1334
|
+
return !isNewModalRoute || this.isNewModalWindow(currentNavigation);
|
|
1335
|
+
}), filter((isDeactivation) => isDeactivation));
|
|
1336
|
+
}
|
|
1337
|
+
modalRouteSetContainsPath(modalRouteSet, navigationEnd, modalRoutesContainsUrlParams) {
|
|
1338
|
+
const pathname = navigationEnd.urlAfterRedirects.split('?')[0];
|
|
1339
|
+
let hasRoute = modalRouteSet.has(pathname);
|
|
1340
|
+
if (!hasRoute && modalRoutesContainsUrlParams) {
|
|
1341
|
+
// Use `for ... of` instead of `forEach` so we can break out of the loop if route is found:
|
|
1342
|
+
for (const route of modalRouteSet) {
|
|
1343
|
+
const exactMatch = true;
|
|
1344
|
+
const routeMatchesPath = this.pathContainsChildRouteWithUrlParams(pathname, route, exactMatch);
|
|
1345
|
+
if (routeMatchesPath) {
|
|
1346
|
+
hasRoute = true;
|
|
1347
|
+
break;
|
|
1471
1348
|
}
|
|
1472
1349
|
}
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1350
|
+
}
|
|
1351
|
+
return hasRoute;
|
|
1352
|
+
}
|
|
1353
|
+
async getModalNavigation(routeConfig, moduleRootRoutePath) {
|
|
1354
|
+
if (Array.isArray(routeConfig)) {
|
|
1355
|
+
const navigationEnd$ = await this.waitForCurrentThenGetNavigationEndStream();
|
|
1356
|
+
const modalRoutes = await this.getModalRoutes(routeConfig, moduleRootRoutePath);
|
|
1357
|
+
const hasModalRoutes = modalRoutes.length > 0;
|
|
1358
|
+
if (hasModalRoutes) {
|
|
1359
|
+
const modalRoutesContainsUrlParams = modalRoutes.some((route) => route.includes('/:'));
|
|
1360
|
+
const modalRouteSet = new Set(modalRoutes);
|
|
1361
|
+
const activated$ = this.modalRouteActivatedFor(navigationEnd$, modalRouteSet, modalRoutesContainsUrlParams);
|
|
1362
|
+
const deactivated$ = this.modalRouteDeactivatedFor(navigationEnd$, modalRouteSet, modalRoutesContainsUrlParams);
|
|
1363
|
+
return { activated$, deactivated$ };
|
|
1478
1364
|
}
|
|
1479
|
-
|
|
1480
|
-
};
|
|
1365
|
+
}
|
|
1366
|
+
return { activated$: EMPTY, deactivated$: EMPTY };
|
|
1367
|
+
}
|
|
1368
|
+
async navigateToModal(path, queryParams) {
|
|
1369
|
+
const commands = Array.isArray(path) ? [...path] : path.split('/');
|
|
1370
|
+
const childPath = commands.pop();
|
|
1371
|
+
const result = await this.router.navigate([...commands, { outlets: { modal: [childPath] } }], {
|
|
1372
|
+
queryParams,
|
|
1373
|
+
relativeTo: this.getCurrentActivatedRoute(),
|
|
1374
|
+
});
|
|
1375
|
+
return result;
|
|
1376
|
+
}
|
|
1377
|
+
async navigateWithinModal(relativePath, queryParams) {
|
|
1378
|
+
return this.router.navigate([relativePath], {
|
|
1379
|
+
queryParams,
|
|
1380
|
+
relativeTo: this.getCurrentActivatedRoute(),
|
|
1381
|
+
});
|
|
1382
|
+
}
|
|
1383
|
+
async navigateOutOfModalOutlet() {
|
|
1384
|
+
const currentActivatedRoute = this.getCurrentActivatedRoute();
|
|
1385
|
+
const currentNavigationFinalUrl = this.router.getCurrentNavigation()?.finalUrl?.toString();
|
|
1386
|
+
const isCurrentlyNavigatingOutOfModalOutlet = currentNavigationFinalUrl && !this.isModalRoute(currentNavigationFinalUrl);
|
|
1387
|
+
if (currentActivatedRoute.outlet !== 'modal' || isCurrentlyNavigatingOutOfModalOutlet) {
|
|
1388
|
+
// Nothing to do here, bail out:
|
|
1389
|
+
return Promise.resolve(true);
|
|
1390
|
+
}
|
|
1391
|
+
const parentRoute = this.getBackdropRoute(currentActivatedRoute);
|
|
1392
|
+
return this.router.navigate(['./'], {
|
|
1393
|
+
relativeTo: parentRoute,
|
|
1394
|
+
});
|
|
1395
|
+
}
|
|
1396
|
+
getBackdropRoute(currentActivatedRoute) {
|
|
1397
|
+
let parentRoute = currentActivatedRoute.parent;
|
|
1398
|
+
while (parentRoute && !parentRoute.component && !!parentRoute.parent) {
|
|
1399
|
+
parentRoute = parentRoute.parent;
|
|
1400
|
+
}
|
|
1401
|
+
return parentRoute;
|
|
1402
|
+
}
|
|
1403
|
+
handleBrowserBackButton(modal) {
|
|
1404
|
+
const popstateNavigationStart$ = this.router.events.pipe(filter((event) => event instanceof NavigationStart && event.navigationTrigger === 'popstate'));
|
|
1405
|
+
const navigationEnd$ = this.router.events.pipe(filter((event) => event instanceof NavigationEnd));
|
|
1406
|
+
navigationEnd$
|
|
1407
|
+
.pipe(skipUntil(popstateNavigationStart$), takeUntil(modal.onWillDismiss()))
|
|
1408
|
+
.subscribe(() => {
|
|
1409
|
+
modal.dismiss();
|
|
1410
|
+
});
|
|
1481
1411
|
}
|
|
1482
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1483
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1412
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalNavigationService, deps: [{ token: i1$3.Router }, { token: i1$3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1413
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalNavigationService, providedIn: 'root' }); }
|
|
1484
1414
|
}
|
|
1485
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1415
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalNavigationService, decorators: [{
|
|
1486
1416
|
type: Injectable,
|
|
1487
1417
|
args: [{ providedIn: 'root' }]
|
|
1488
|
-
}], ctorParameters: () => [{ type:
|
|
1418
|
+
}], ctorParameters: () => [{ type: i1$3.Router }, { type: i1$3.ActivatedRoute }] });
|
|
1489
1419
|
|
|
1490
1420
|
class ModalHelper {
|
|
1491
1421
|
constructor(ionicModalController, modalAnimationBuilder, modalNavigationService, windowRef, canDismissHelper) {
|
|
@@ -1585,12 +1515,91 @@ class ModalHelper {
|
|
|
1585
1515
|
this.isModalOpening = false;
|
|
1586
1516
|
return overlay;
|
|
1587
1517
|
}
|
|
1588
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1589
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1518
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalHelper, deps: [{ token: i1$2.ModalController }, { token: ModalAnimationBuilderService }, { token: ModalNavigationService }, { token: i1.WindowRef }, { token: CanDismissHelper }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1519
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalHelper }); }
|
|
1520
|
+
}
|
|
1521
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalHelper, decorators: [{
|
|
1522
|
+
type: Injectable
|
|
1523
|
+
}], ctorParameters: () => [{ type: i1$2.ModalController }, { type: ModalAnimationBuilderService }, { type: ModalNavigationService }, { type: i1.WindowRef }, { type: CanDismissHelper }] });
|
|
1524
|
+
|
|
1525
|
+
class ActionSheetComponent {
|
|
1526
|
+
constructor() {
|
|
1527
|
+
this.cancelButtonText = 'Cancel';
|
|
1528
|
+
this.hideCancel = false;
|
|
1529
|
+
this.disabled = false;
|
|
1530
|
+
this.cancel = new EventEmitter();
|
|
1531
|
+
this.itemSelect = new EventEmitter();
|
|
1532
|
+
}
|
|
1533
|
+
onItemSelect(selection) {
|
|
1534
|
+
this.itemSelect.emit(selection);
|
|
1535
|
+
}
|
|
1536
|
+
onCancel() {
|
|
1537
|
+
this.cancel.emit();
|
|
1538
|
+
}
|
|
1539
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ActionSheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1540
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.0", type: ActionSheetComponent, isStandalone: true, selector: "kirby-action-sheet", inputs: { cancelButtonText: "cancelButtonText", hideCancel: "hideCancel", disabled: "disabled", header: "header", subheader: "subheader", items: "items" }, outputs: { cancel: "cancel", itemSelect: "itemSelect" }, ngImport: i0, template: "<kirby-card>\n @if (header) {\n <kirby-card-header\n [title]=\"header\"\n [isTitleBold]=\"true\"\n [subtitle]=\"subheader\"\n ></kirby-card-header>\n }\n @for (item of items; track item.id) {\n <button\n kirby-button\n expand=\"block\"\n size=\"lg\"\n [noDecoration]=\"true\"\n (click)=\"onItemSelect(item)\"\n >\n {{ item.text }}\n </button>\n }\n</kirby-card>\n@if (!hideCancel) {\n <button kirby-button class=\"cancel-btn\" size=\"lg\" attentionLevel=\"3\" (click)=\"onCancel()\">\n {{ cancelButtonText }}\n </button>\n}\n", styles: [":host{--kirby-internal-margin-horizontal-default: 32px}@media (max-width: 320px){:host{--kirby-internal-margin-horizontal-default: 16px}}:host{--kirby-internal-margin-horizontal-total: calc( 2 * var(--kirby-action-sheet-margin-horizontal, var(--kirby-internal-margin-horizontal-default)) );display:flex;flex-direction:column;align-items:center;justify-content:flex-end;margin:0 auto;width:calc(100vw - var(--kirby-internal-margin-horizontal-total));max-width:calc(375px - var(--kirby-internal-margin-horizontal-total))}@media (hover: hover) and (pointer: fine){:host button[kirby-button].no-decoration:focus-visible{box-shadow:none;--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black)}}kirby-card{align-self:stretch;pointer-events:auto;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14}kirby-card button[kirby-button]{margin:0;border-radius:0}kirby-card button[kirby-button]:not(:focus){border-top:1px solid var(--kirby-background-color)}@media (hover: hover) and (pointer: fine){.cancel-btn:focus{transition:all 80ms linear 0ms;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}.cancel-btn:focus:not(:focus-visible){box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 0 transparent}.cancel-btn:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}.cancel-btn{font-weight:700;margin-top:16px;margin-bottom:24px;pointer-events:auto}\n"], dependencies: [{ kind: "ngmodule", type: CardModule }, { kind: "component", type: i1$4.CardComponent, selector: "kirby-card", inputs: ["title", "subtitle", "backgroundImageUrl", "hasPadding", "sizes", "variant"] }, { kind: "component", type: i1$4.CardHeaderComponent, selector: "kirby-card-header", inputs: ["title", "subtitle", "isTitleBold", "flagged", "hasPadding"] }, { kind: "component", type: ButtonComponent, selector: "button[kirby-button],Button[kirby-button],a[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }] }); }
|
|
1541
|
+
}
|
|
1542
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ActionSheetComponent, decorators: [{
|
|
1543
|
+
type: Component,
|
|
1544
|
+
args: [{ imports: [CardModule, ButtonComponent], selector: 'kirby-action-sheet', template: "<kirby-card>\n @if (header) {\n <kirby-card-header\n [title]=\"header\"\n [isTitleBold]=\"true\"\n [subtitle]=\"subheader\"\n ></kirby-card-header>\n }\n @for (item of items; track item.id) {\n <button\n kirby-button\n expand=\"block\"\n size=\"lg\"\n [noDecoration]=\"true\"\n (click)=\"onItemSelect(item)\"\n >\n {{ item.text }}\n </button>\n }\n</kirby-card>\n@if (!hideCancel) {\n <button kirby-button class=\"cancel-btn\" size=\"lg\" attentionLevel=\"3\" (click)=\"onCancel()\">\n {{ cancelButtonText }}\n </button>\n}\n", styles: [":host{--kirby-internal-margin-horizontal-default: 32px}@media (max-width: 320px){:host{--kirby-internal-margin-horizontal-default: 16px}}:host{--kirby-internal-margin-horizontal-total: calc( 2 * var(--kirby-action-sheet-margin-horizontal, var(--kirby-internal-margin-horizontal-default)) );display:flex;flex-direction:column;align-items:center;justify-content:flex-end;margin:0 auto;width:calc(100vw - var(--kirby-internal-margin-horizontal-total));max-width:calc(375px - var(--kirby-internal-margin-horizontal-total))}@media (hover: hover) and (pointer: fine){:host button[kirby-button].no-decoration:focus-visible{box-shadow:none;--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black)}}kirby-card{align-self:stretch;pointer-events:auto;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14}kirby-card button[kirby-button]{margin:0;border-radius:0}kirby-card button[kirby-button]:not(:focus){border-top:1px solid var(--kirby-background-color)}@media (hover: hover) and (pointer: fine){.cancel-btn:focus{transition:all 80ms linear 0ms;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}.cancel-btn:focus:not(:focus-visible){box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 0 transparent}.cancel-btn:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}.cancel-btn{font-weight:700;margin-top:16px;margin-bottom:24px;pointer-events:auto}\n"] }]
|
|
1545
|
+
}], propDecorators: { cancelButtonText: [{
|
|
1546
|
+
type: Input
|
|
1547
|
+
}], hideCancel: [{
|
|
1548
|
+
type: Input
|
|
1549
|
+
}], disabled: [{
|
|
1550
|
+
type: Input
|
|
1551
|
+
}], header: [{
|
|
1552
|
+
type: Input
|
|
1553
|
+
}], subheader: [{
|
|
1554
|
+
type: Input
|
|
1555
|
+
}], items: [{
|
|
1556
|
+
type: Input
|
|
1557
|
+
}], cancel: [{
|
|
1558
|
+
type: Output
|
|
1559
|
+
}], itemSelect: [{
|
|
1560
|
+
type: Output
|
|
1561
|
+
}] } });
|
|
1562
|
+
|
|
1563
|
+
class ActionSheetHelper {
|
|
1564
|
+
constructor(ionicModalController) {
|
|
1565
|
+
this.ionicModalController = ionicModalController;
|
|
1566
|
+
}
|
|
1567
|
+
async showActionSheet(config) {
|
|
1568
|
+
const cancel = new EventEmitter();
|
|
1569
|
+
const itemSelect = new EventEmitter();
|
|
1570
|
+
const ionModal = await this.ionicModalController.create({
|
|
1571
|
+
component: ActionSheetComponent,
|
|
1572
|
+
cssClass: ['kirby-overlay', 'kirby-action-sheet'],
|
|
1573
|
+
componentProps: {
|
|
1574
|
+
...config,
|
|
1575
|
+
cancel: cancel,
|
|
1576
|
+
itemSelect: itemSelect,
|
|
1577
|
+
},
|
|
1578
|
+
backdropDismiss: true,
|
|
1579
|
+
});
|
|
1580
|
+
// Remove 'modal-shadow' element as we are no longer able to hide it with CSS in Ionic 6.
|
|
1581
|
+
// We need to remove it so it does not obstruct the backdrop-click to dismiss functionality.
|
|
1582
|
+
ionModal.shadowRoot.querySelector('.modal-shadow').remove();
|
|
1583
|
+
const cancelSubscription = cancel.subscribe(() => ionModal.dismiss());
|
|
1584
|
+
const itemSelectSubscription = itemSelect.subscribe((item) => ionModal.dismiss(item));
|
|
1585
|
+
const onDidDismiss = ionModal.onDidDismiss();
|
|
1586
|
+
onDidDismiss.then(() => {
|
|
1587
|
+
cancelSubscription.unsubscribe();
|
|
1588
|
+
itemSelectSubscription.unsubscribe();
|
|
1589
|
+
});
|
|
1590
|
+
await ionModal.present();
|
|
1591
|
+
return {
|
|
1592
|
+
dismiss: ionModal.dismiss.bind(ionModal),
|
|
1593
|
+
onWillDismiss: ionModal.onWillDismiss(),
|
|
1594
|
+
onDidDismiss: ionModal.onDidDismiss(),
|
|
1595
|
+
};
|
|
1596
|
+
}
|
|
1597
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ActionSheetHelper, deps: [{ token: i1$2.ModalController }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1598
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ActionSheetHelper }); }
|
|
1590
1599
|
}
|
|
1591
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1600
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ActionSheetHelper, decorators: [{
|
|
1592
1601
|
type: Injectable
|
|
1593
|
-
}], ctorParameters: () => [{ type: i1$2.ModalController }
|
|
1602
|
+
}], ctorParameters: () => [{ type: i1$2.ModalController }] });
|
|
1594
1603
|
|
|
1595
1604
|
class ModalController {
|
|
1596
1605
|
constructor(modalHelper, actionSheetHelper, alertHelper, modalNavigationService, routeConfig) {
|
|
@@ -1688,10 +1697,10 @@ class ModalController {
|
|
|
1688
1697
|
this.destroy$.next();
|
|
1689
1698
|
this.destroy$.complete();
|
|
1690
1699
|
}
|
|
1691
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1692
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1700
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalController, deps: [{ token: ModalHelper }, { token: ActionSheetHelper }, { token: AlertHelper }, { token: ModalNavigationService }, { token: ROUTES, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1701
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalController }); }
|
|
1693
1702
|
}
|
|
1694
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1703
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalController, decorators: [{
|
|
1695
1704
|
type: Injectable
|
|
1696
1705
|
}], ctorParameters: () => [{ type: ModalHelper }, { type: ActionSheetHelper }, { type: AlertHelper }, { type: ModalNavigationService }, { type: undefined, decorators: [{
|
|
1697
1706
|
type: Optional
|
|
@@ -1812,10 +1821,10 @@ class ModalComponent {
|
|
|
1812
1821
|
'aria-label': inheritAriaLabelText(this.elementRef.nativeElement),
|
|
1813
1822
|
};
|
|
1814
1823
|
}
|
|
1815
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1816
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1824
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalComponent, deps: [{ token: CanDismissHelper }, { token: ModalNavigationService }, { token: i1.WindowRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1825
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.0", type: ModalComponent, isStandalone: true, selector: "kirby-modal", inputs: { isOpen: "isOpen", trigger: "trigger", size: "size", scrollDisabled: "scrollDisabled", canDismiss: "canDismiss", collapseTitle: "collapseTitle", customHeight: "customHeight", flavor: "flavor", drawerSupplementaryAction: "drawerSupplementaryAction", interactWithBackground: "interactWithBackground" }, outputs: { willPresent: "willPresent", didPresent: "didPresent", didDismiss: "didDismiss", willDismiss: "willDismiss" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, static: true }], viewQueries: [{ propertyName: "modalElement", first: true, predicate: IonModal, descendants: true, read: ElementRef, static: true }, { propertyName: "ionContent", first: true, predicate: IonContent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ion-modal\n class=\"kirby-modal kirby-overlay kirby-modal-{{ size }}\"\n [ngClass]=\"[\n flavor === 'compact' ? 'kirby-modal-compact' : 'kirby-' + flavor,\n interactWithBackground ? 'interact-with-background' : '',\n ]\"\n [isOpen]=\"isOpen\"\n [trigger]=\"trigger\"\n [canDismiss]=\"_canDismiss\"\n [showBackdrop]=\"!interactWithBackground\"\n [style.--kirby-modal-height]=\"customHeight\"\n (willPresent)=\"_onWillPresent($event)\"\n (didPresent)=\"_onDidPresent($event)\"\n (willDismiss)=\"_onWillDismiss($event)\"\n (didDismiss)=\"_onDidDismiss($event)\"\n>\n <ng-template>\n @if (flavor === 'compact') {\n <kirby-modal-compact-wrapper\n [config]=\"_config\"\n [content]=\"template\"\n ></kirby-modal-compact-wrapper>\n } @else {\n <kirby-modal-wrapper\n class=\"ion-page\"\n [config]=\"_config\"\n [content]=\"template\"\n [scrollDisabled]=\"scrollDisabled\"\n ></kirby-modal-wrapper>\n }\n </ng-template>\n</ion-modal>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: ModalWrapperComponent, selector: "kirby-modal-wrapper", inputs: ["scrollDisabled", "config", "content"] }, { kind: "component", type: ModalCompactWrapperComponent, selector: "kirby-modal-compact-wrapper", inputs: ["config", "content"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1817
1826
|
}
|
|
1818
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1827
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalComponent, decorators: [{
|
|
1819
1828
|
type: Component,
|
|
1820
1829
|
args: [{ selector: 'kirby-modal', imports: [
|
|
1821
1830
|
CommonModule,
|
|
@@ -1823,8 +1832,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
1823
1832
|
IonModal,
|
|
1824
1833
|
ModalWrapperComponent,
|
|
1825
1834
|
ModalCompactWrapperComponent,
|
|
1826
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-modal\n class=\"kirby-modal kirby-overlay kirby-modal-{{ size }}\"\n [ngClass]=\"[\n flavor === 'compact' ? 'kirby-modal-compact' : 'kirby-' + flavor,\n interactWithBackground ? 'interact-with-background' : ''
|
|
1827
|
-
}], ctorParameters: () => [{ type: CanDismissHelper }, { type: ModalNavigationService }, { type: i1
|
|
1835
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-modal\n class=\"kirby-modal kirby-overlay kirby-modal-{{ size }}\"\n [ngClass]=\"[\n flavor === 'compact' ? 'kirby-modal-compact' : 'kirby-' + flavor,\n interactWithBackground ? 'interact-with-background' : '',\n ]\"\n [isOpen]=\"isOpen\"\n [trigger]=\"trigger\"\n [canDismiss]=\"_canDismiss\"\n [showBackdrop]=\"!interactWithBackground\"\n [style.--kirby-modal-height]=\"customHeight\"\n (willPresent)=\"_onWillPresent($event)\"\n (didPresent)=\"_onDidPresent($event)\"\n (willDismiss)=\"_onWillDismiss($event)\"\n (didDismiss)=\"_onDidDismiss($event)\"\n>\n <ng-template>\n @if (flavor === 'compact') {\n <kirby-modal-compact-wrapper\n [config]=\"_config\"\n [content]=\"template\"\n ></kirby-modal-compact-wrapper>\n } @else {\n <kirby-modal-wrapper\n class=\"ion-page\"\n [config]=\"_config\"\n [content]=\"template\"\n [scrollDisabled]=\"scrollDisabled\"\n ></kirby-modal-wrapper>\n }\n </ng-template>\n</ion-modal>\n" }]
|
|
1836
|
+
}], ctorParameters: () => [{ type: CanDismissHelper }, { type: ModalNavigationService }, { type: i1.WindowRef }, { type: i0.ElementRef }], propDecorators: { modalElement: [{
|
|
1828
1837
|
type: ViewChild,
|
|
1829
1838
|
args: [IonModal, { static: true, read: ElementRef }]
|
|
1830
1839
|
}], ionContent: [{
|
|
@@ -1873,12 +1882,12 @@ class ModalFooterComponent extends ModalElementComponent {
|
|
|
1873
1882
|
this.type = 'fixed';
|
|
1874
1883
|
this.themeColor = 'white';
|
|
1875
1884
|
}
|
|
1876
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1877
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1885
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalFooterComponent, deps: [{ token: i0.ElementRef }, { token: ModalElementsAdvertiser, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1886
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.0", type: ModalFooterComponent, isStandalone: true, selector: "kirby-modal-footer", inputs: { snapToKeyboard: "snapToKeyboard", type: "type", themeColor: "themeColor" }, host: { properties: { "class.snap-to-keyboard": "this.snapToKeyboard", "class": "this._cssClass" } }, usesInheritance: true, ngImport: i0, template: "<ion-footer role=\"presentation\">\n <ng-content></ng-content>\n</ion-footer>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14;box-sizing:inherit;display:flex;justify-content:var(--kirby-modal-footer-justify-content, center);align-items:center;background-color:var(--kirby-modal-footer-background, var(--kirby-white));color:var(--kirby-modal-footer-color, var(--kirby-white-contrast));padding:16px;padding-bottom:calc(12px + var(--kirby-modal-footer-safe-area-bottom, 0px))}@media (min-width: 768px){ion-footer{padding:24px}}@media (max-width: 767px){:host{--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}}:host{box-sizing:border-box;display:block}:host(.snap-to-keyboard) ion-footer{transition:transform .15s ease-out}:host(.light) ion-footer{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);background-color:var(--kirby-background-color)}:host(.inline) ion-footer{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);background:transparent;box-shadow:none}:host-context(.keyboard-visible).snap-to-keyboard ion-footer{transition:transform .25s ease-out 1ms;transform:translateY(calc((var(--keyboard-offset, 0px) - var(--kirby-modal-footer-safe-area-bottom, 0px)) * -1))}:host-context(.modal-wrapper.full-height){--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}\n"], dependencies: [{ kind: "component", type: IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1878
1887
|
}
|
|
1879
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1888
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ModalFooterComponent, decorators: [{
|
|
1880
1889
|
type: Component,
|
|
1881
|
-
args: [{ imports: [
|
|
1890
|
+
args: [{ imports: [IonFooter], selector: 'kirby-modal-footer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-footer role=\"presentation\">\n <ng-content></ng-content>\n</ion-footer>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14;box-sizing:inherit;display:flex;justify-content:var(--kirby-modal-footer-justify-content, center);align-items:center;background-color:var(--kirby-modal-footer-background, var(--kirby-white));color:var(--kirby-modal-footer-color, var(--kirby-white-contrast));padding:16px;padding-bottom:calc(12px + var(--kirby-modal-footer-safe-area-bottom, 0px))}@media (min-width: 768px){ion-footer{padding:24px}}@media (max-width: 767px){:host{--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}}:host{box-sizing:border-box;display:block}:host(.snap-to-keyboard) ion-footer{transition:transform .15s ease-out}:host(.light) ion-footer{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);background-color:var(--kirby-background-color)}:host(.inline) ion-footer{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);background:transparent;box-shadow:none}:host-context(.keyboard-visible).snap-to-keyboard ion-footer{transition:transform .25s ease-out 1ms;transform:translateY(calc((var(--keyboard-offset, 0px) - var(--kirby-modal-footer-safe-area-bottom, 0px)) * -1))}:host-context(.modal-wrapper.full-height){--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}\n"] }]
|
|
1882
1891
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: ModalElementsAdvertiser, decorators: [{
|
|
1883
1892
|
type: Optional
|
|
1884
1893
|
}] }], propDecorators: { snapToKeyboard: [{
|