voyager-ionic-core 7.6.5 → 7.7.2
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/components/action-sheet.js +12 -6
- package/components/alert.js +11 -5
- package/components/backdrop.js +5 -3
- package/components/button.js +6 -4
- package/components/buttons.js +5 -3
- package/components/checkbox.js +4 -2
- package/components/data.js +1 -1
- package/components/hardware-back-button.js +47 -3
- package/components/helpers.js +1 -1
- package/components/icon.js +2 -1
- package/components/ion-accordion-group.js +6 -4
- package/components/ion-accordion.js +9 -5
- package/components/ion-app.js +14 -3
- package/components/ion-avatar.js +5 -3
- package/components/ion-back-button.js +6 -4
- package/components/ion-badge.js +6 -4
- package/components/ion-breadcrumb.js +6 -4
- package/components/ion-breadcrumbs.js +6 -4
- package/components/ion-card-content.js +5 -3
- package/components/ion-card-header.js +6 -4
- package/components/ion-card-subtitle.js +6 -4
- package/components/ion-card-title.js +6 -4
- package/components/ion-card.js +5 -3
- package/components/ion-chip.js +6 -4
- package/components/ion-col.js +4 -3
- package/components/ion-content.js +5 -4
- package/components/ion-datetime-button.js +6 -4
- package/components/ion-datetime.js +40 -19
- package/components/ion-fab-button.js +6 -4
- package/components/ion-fab-list.js +4 -3
- package/components/ion-fab.js +4 -3
- package/components/ion-footer.js +6 -4
- package/components/ion-grid.js +4 -3
- package/components/ion-header.js +6 -4
- package/components/ion-img.js +3 -2
- package/components/ion-infinite-scroll-content.js +6 -4
- package/components/ion-infinite-scroll.js +3 -2
- package/components/ion-input.js +4 -2
- package/components/ion-item-divider.js +6 -4
- package/components/ion-item-group.js +5 -3
- package/components/ion-item-option.js +6 -4
- package/components/ion-item-options.js +5 -3
- package/components/ion-item-sliding.js +3 -2
- package/components/ion-loading.js +10 -4
- package/components/ion-menu-button.js +6 -4
- package/components/ion-menu-toggle.js +4 -3
- package/components/ion-menu.js +13 -5
- package/components/ion-modal.js +13 -10
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +3 -2
- package/components/ion-picker.js +10 -4
- package/components/ion-progress-bar.js +5 -3
- package/components/ion-range.js +4 -2
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +5 -3
- package/components/ion-reorder-group.js +3 -2
- package/components/ion-reorder.js +5 -3
- package/components/ion-router-link.js +4 -3
- package/components/ion-router-outlet.js +3 -2
- package/components/ion-row.js +3 -2
- package/components/ion-searchbar.js +8 -6
- package/components/ion-segment-button.js +7 -5
- package/components/ion-segment.js +13 -4
- package/components/ion-select-option.js +3 -2
- package/components/ion-select.js +24 -3
- package/components/ion-skeleton-text.js +4 -3
- package/components/ion-split-pane.js +15 -14
- package/components/ion-tab-bar.js +6 -4
- package/components/ion-tab-button.js +6 -4
- package/components/ion-tab.js +4 -3
- package/components/ion-tabs.js +3 -2
- package/components/ion-text.js +4 -3
- package/components/ion-textarea.js +4 -2
- package/components/ion-thumbnail.js +3 -2
- package/components/ion-title.js +6 -4
- package/components/ion-toast.js +10 -4
- package/components/ion-toggle.js +4 -2
- package/components/ion-toolbar.js +6 -4
- package/components/item.js +15 -16
- package/components/label.js +5 -3
- package/components/list-header.js +6 -4
- package/components/list.js +5 -3
- package/components/note.js +6 -4
- package/components/overlays.js +83 -19
- package/components/picker-column-internal.js +7 -5
- package/components/picker-column.js +6 -4
- package/components/picker-internal.js +21 -3
- package/components/popover.js +12 -6
- package/components/radio-group.js +1 -1
- package/components/radio.js +4 -2
- package/components/ripple-effect.js +3 -2
- package/components/select-popover.js +7 -5
- package/components/spinner.js +3 -2
- package/css/core.css +28 -0
- package/css/core.css.map +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/dist/cjs/{animation-9b401d39.js → animation-fdab9de5.js} +1 -1
- package/dist/cjs/{app-globals-07127773.js → app-globals-92ad1b3d.js} +1 -1
- package/dist/cjs/{button-active-85665616.js → button-active-2d6520ec.js} +1 -1
- package/dist/cjs/{form-controller-7d42a722.js → form-controller-7b90d7b7.js} +1 -1
- package/dist/cjs/{framework-delegate-1c29b14a.js → framework-delegate-a3e6d060.js} +1 -1
- package/dist/cjs/{hardware-back-button-76833cac.js → hardware-back-button-2696acaf.js} +48 -2
- package/dist/cjs/{helpers-76bb7efb.js → helpers-2e1028fa.js} +1 -1
- package/dist/cjs/{index-71f41461.js → index-0ffe376d.js} +56 -23
- package/dist/cjs/{index-b4f986cd.js → index-10da82ce.js} +1 -1
- package/dist/cjs/{index-da15e99c.js → index-53d162b2.js} +1 -1
- package/dist/cjs/{index-96a721a7.js → index-a43f7a0f.js} +4 -4
- package/dist/cjs/{index-6bb6b651.js → index-c3580a90.js} +4 -4
- package/dist/cjs/index.cjs.js +11 -11
- package/dist/cjs/{input-shims-a23bb0f4.js → input-shims-6f804705.js} +2 -2
- package/dist/cjs/{input.utils-3d0166a2.js → input.utils-d693d18a.js} +1 -1
- package/dist/cjs/ion-accordion_2.cjs.entry.js +18 -12
- package/dist/cjs/ion-action-sheet.cjs.entry.js +20 -14
- package/dist/cjs/ion-alert.cjs.entry.js +19 -13
- package/dist/cjs/ion-app_8.cjs.entry.js +72 -50
- package/dist/cjs/ion-avatar_3.cjs.entry.js +16 -11
- package/dist/cjs/ion-back-button.cjs.entry.js +9 -7
- package/dist/cjs/ion-backdrop.cjs.entry.js +7 -5
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +15 -11
- package/dist/cjs/ion-button_2.cjs.entry.js +11 -8
- package/dist/cjs/ion-card_5.cjs.entry.js +31 -21
- package/dist/cjs/ion-checkbox.cjs.entry.js +8 -6
- package/dist/cjs/ion-chip.cjs.entry.js +8 -6
- package/dist/cjs/ion-col_3.cjs.entry.js +13 -10
- package/dist/cjs/ion-datetime-button.cjs.entry.js +8 -6
- package/dist/cjs/ion-datetime_3.cjs.entry.js +62 -33
- package/dist/cjs/ion-fab_3.cjs.entry.js +17 -13
- package/dist/cjs/ion-img.cjs.entry.js +6 -5
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +13 -10
- package/dist/cjs/ion-input.cjs.entry.js +10 -8
- package/dist/cjs/ion-item-option_3.cjs.entry.js +18 -13
- package/dist/cjs/ion-item_8.cjs.entry.js +53 -33
- package/dist/cjs/ion-loading.cjs.entry.js +17 -11
- package/dist/cjs/ion-menu_3.cjs.entry.js +29 -19
- package/dist/cjs/ion-modal.cjs.entry.js +21 -18
- package/dist/cjs/ion-nav_2.cjs.entry.js +10 -9
- package/dist/cjs/ion-picker-column-internal.cjs.entry.js +10 -8
- package/dist/cjs/ion-picker-internal.cjs.entry.js +23 -5
- package/dist/cjs/ion-popover.cjs.entry.js +20 -14
- package/dist/cjs/ion-progress-bar.cjs.entry.js +8 -6
- package/dist/cjs/ion-radio_2.cjs.entry.js +9 -7
- package/dist/cjs/ion-range.cjs.entry.js +9 -7
- package/dist/cjs/ion-refresher_2.cjs.entry.js +11 -9
- package/dist/cjs/ion-reorder_2.cjs.entry.js +12 -9
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +5 -4
- package/dist/cjs/ion-route_4.cjs.entry.js +7 -6
- package/dist/cjs/ion-searchbar.cjs.entry.js +11 -9
- package/dist/cjs/ion-segment_2.cjs.entry.js +23 -12
- package/dist/cjs/ion-select_3.cjs.entry.js +42 -18
- package/dist/cjs/ion-spinner.cjs.entry.js +5 -4
- package/dist/cjs/ion-split-pane.cjs.entry.js +17 -16
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +15 -11
- package/dist/cjs/ion-tab_2.cjs.entry.js +10 -8
- package/dist/cjs/ion-text.cjs.entry.js +6 -5
- package/dist/cjs/ion-textarea.cjs.entry.js +10 -8
- package/dist/cjs/ion-toast.cjs.entry.js +17 -11
- package/dist/cjs/ion-toggle.cjs.entry.js +8 -6
- package/dist/cjs/{ionic-global-c70c3fb5.js → ionic-global-59a10130.js} +1 -1
- package/dist/cjs/ionic.cjs.js +7 -7
- package/dist/cjs/{ios.transition-9624a175.js → ios.transition-c3b11cc3.js} +4 -4
- package/dist/cjs/loader.cjs.js +6 -6
- package/dist/cjs/{md.transition-786baf9a.js → md.transition-82a8c649.js} +4 -4
- package/dist/cjs/{notch-controller-9735e7ac.js → notch-controller-db0127c4.js} +1 -1
- package/dist/cjs/{overlays-4c97edb0.js → overlays-fb7ca451.js} +85 -22
- package/dist/cjs/{status-tap-66296dcb.js → status-tap-692f6d32.js} +3 -3
- package/dist/cjs/{swipe-back-e37a1a5c.js → swipe-back-7a848bb8.js} +1 -1
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/accordion/accordion.js +5 -3
- package/dist/collection/components/accordion/test/disabled/accordion.e2e.js +94 -0
- package/dist/collection/components/accordion/test/readonly/accordion.e2e.js +94 -0
- package/dist/collection/components/accordion-group/accordion-group.js +2 -2
- package/dist/collection/components/action-sheet/action-sheet.ios.css +13 -1
- package/dist/collection/components/action-sheet/action-sheet.js +9 -5
- package/dist/collection/components/alert/alert.ios.css +23 -0
- package/dist/collection/components/alert/alert.js +8 -4
- package/dist/collection/components/alert/test/basic/alert.e2e.js +29 -4
- package/dist/collection/components/app/app.js +12 -2
- package/dist/collection/components/avatar/avatar.js +1 -1
- package/dist/collection/components/back-button/back-button.js +2 -2
- package/dist/collection/components/backdrop/backdrop.js +1 -1
- package/dist/collection/components/badge/badge.js +2 -2
- package/dist/collection/components/breadcrumb/breadcrumb.js +2 -2
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +2 -2
- package/dist/collection/components/button/button.js +2 -2
- package/dist/collection/components/button/test/basic/button.e2e.js +1 -1
- package/dist/collection/components/buttons/buttons.js +1 -1
- package/dist/collection/components/card/card.js +1 -1
- package/dist/collection/components/card-content/card-content.js +1 -1
- package/dist/collection/components/card-header/card-header.js +2 -2
- package/dist/collection/components/card-subtitle/card-subtitle.js +2 -2
- package/dist/collection/components/card-title/card-title.js +2 -2
- package/dist/collection/components/chip/chip.js +2 -2
- package/dist/collection/components/col/col.js +2 -2
- package/dist/collection/components/content/content.js +3 -3
- package/dist/collection/components/datetime/datetime.js +35 -16
- package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +3 -3
- package/dist/collection/components/datetime/test/basic/datetime.e2e.js +12 -12
- package/dist/collection/components/datetime/test/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/disable-dates/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/disabled/datetime.e2e.js +4 -4
- package/dist/collection/components/datetime/test/display/datetime.e2e.js +9 -9
- package/dist/collection/components/datetime/test/locale/datetime.e2e.js +3 -3
- package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +11 -11
- package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/multiple/datetime.e2e.js +22 -5
- package/dist/collection/components/datetime/test/position/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +32 -32
- package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +3 -3
- package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +4 -4
- package/dist/collection/components/datetime/test/set-value/datetime.e2e.js +4 -4
- package/dist/collection/components/datetime/test/time-label/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/values/datetime.e2e.js +4 -4
- package/dist/collection/components/datetime-button/datetime-button.js +1 -1
- package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +14 -14
- package/dist/collection/components/datetime-button/test/disabled/datetime-button.e2e.js +2 -2
- package/dist/collection/components/datetime-button/test/multiple/datetime-button.e2e.js +6 -6
- package/dist/collection/components/fab/fab.js +2 -2
- package/dist/collection/components/fab-button/fab-button.js +2 -2
- package/dist/collection/components/fab-list/fab-list.js +2 -2
- package/dist/collection/components/footer/footer.js +2 -2
- package/dist/collection/components/grid/grid.js +2 -2
- package/dist/collection/components/header/header.js +2 -2
- package/dist/collection/components/header/test/condense/header.e2e.js +2 -2
- package/dist/collection/components/img/img.js +1 -1
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
- package/dist/collection/components/item/item.ios.css +2 -39
- package/dist/collection/components/item/item.js +10 -12
- package/dist/collection/components/item/item.md.css +2 -39
- package/dist/collection/components/item/test/item.spec.js +20 -0
- package/dist/collection/components/item-divider/item-divider.js +2 -2
- package/dist/collection/components/item-group/item-group.js +1 -1
- package/dist/collection/components/item-option/item-option.js +2 -2
- package/dist/collection/components/item-options/item-options.js +1 -1
- package/dist/collection/components/item-sliding/item-sliding.js +1 -1
- package/dist/collection/components/label/label.js +1 -1
- package/dist/collection/components/label/test/basic/label.e2e.js +2 -2
- package/dist/collection/components/list/list.js +1 -1
- package/dist/collection/components/list-header/list-header.js +2 -2
- package/dist/collection/components/loading/loading.js +8 -4
- package/dist/collection/components/menu/menu.js +8 -8
- package/dist/collection/components/menu-button/menu-button.js +2 -2
- package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
- package/dist/collection/components/modal/modal.js +11 -10
- package/dist/collection/components/modal/test/animations/modal.e2e.js +36 -0
- package/dist/collection/components/modal/test/sheet/modal.e2e.js +1 -1
- package/dist/collection/components/modal/test/standalone/modal.e2e.js +1 -1
- package/dist/collection/components/nav/nav.js +1 -1
- package/dist/collection/components/nav-link/nav-link.js +1 -1
- package/dist/collection/components/note/note.js +2 -2
- package/dist/collection/components/note/test/a11y/note.e2e.js +6 -6
- package/dist/collection/components/picker/picker.js +8 -4
- package/dist/collection/components/picker-column/picker-column.js +2 -2
- package/dist/collection/components/picker-column-internal/picker-column-internal.js +3 -3
- package/dist/collection/components/picker-internal/picker-internal.js +17 -1
- package/dist/collection/components/picker-internal/test/keyboard-entry/picker-internal.e2e.js +32 -0
- package/dist/collection/components/popover/popover.ios.css +8 -1
- package/dist/collection/components/popover/popover.js +8 -4
- package/dist/collection/components/popover/popover.md.css +1 -1
- package/dist/collection/components/progress-bar/progress-bar.js +1 -1
- package/dist/collection/components/radio-group/radio-group.js +1 -1
- package/dist/collection/components/radio-group/test/radio-group-events.e2e.js +15 -15
- package/dist/collection/components/range/test/label/range.e2e.js +2 -2
- package/dist/collection/components/range/test/range-events.e2e.js +2 -2
- package/dist/collection/components/refresher/refresher.js +1 -1
- package/dist/collection/components/refresher/test/test.utils.js +1 -1
- package/dist/collection/components/refresher-content/refresher-content.js +1 -1
- package/dist/collection/components/reorder/reorder.js +1 -1
- package/dist/collection/components/reorder-group/reorder-group.js +1 -1
- package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
- package/dist/collection/components/ripple-effect/test/basic/ripple-effect.e2e.js +2 -2
- package/dist/collection/components/router-link/router-link.js +2 -2
- package/dist/collection/components/router-outlet/router-outlet.js +1 -1
- package/dist/collection/components/row/row.js +1 -1
- package/dist/collection/components/searchbar/searchbar.js +4 -4
- package/dist/collection/components/segment/segment.js +9 -2
- package/dist/collection/components/segment-button/segment-button.js +3 -3
- package/dist/collection/components/select/select.js +20 -1
- package/dist/collection/components/select/test/disabled/select.e2e.js +1 -1
- package/dist/collection/components/select/test/select.spec.js +15 -0
- package/dist/collection/components/select-option/select-option.js +1 -1
- package/dist/collection/components/select-popover/select-popover.ios.css +10 -0
- package/dist/collection/components/select-popover/select-popover.js +1 -1
- package/dist/collection/components/select-popover/select-popover.md.css +10 -0
- package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
- package/dist/collection/components/spinner/spinner.js +1 -1
- package/dist/collection/components/split-pane/split-pane.js +11 -12
- package/dist/collection/components/tab/tab.js +2 -2
- package/dist/collection/components/tab-bar/tab-bar.js +2 -2
- package/dist/collection/components/tab-button/tab-button.js +2 -2
- package/dist/collection/components/tabs/tabs.js +1 -1
- package/dist/collection/components/text/text.js +2 -2
- package/dist/collection/components/textarea/test/textarea-events.e2e.js +4 -4
- package/dist/collection/components/thumbnail/thumbnail.js +1 -1
- package/dist/collection/components/title/title.js +2 -2
- package/dist/collection/components/toast/test/toast.spec.js +12 -0
- package/dist/collection/components/toast/toast.js +8 -4
- package/dist/collection/components/toolbar/toolbar.js +2 -2
- package/dist/collection/utils/hardware-back-button.js +45 -2
- package/dist/collection/utils/helpers.js +1 -1
- package/dist/collection/utils/overlays.js +82 -17
- package/dist/collection/utils/test/hardware-back-button.spec.js +38 -0
- package/dist/collection/utils/test/overlays/overlays.e2e.js +33 -0
- package/dist/collection/utils/test/overlays/overlays.spec.js +51 -0
- package/dist/docs.json +26 -31
- package/dist/esm/{animation-dde8cc0d.js → animation-60dbdd13.js} +1 -1
- package/dist/esm/{app-globals-52c78291.js → app-globals-5cf6195b.js} +1 -1
- package/dist/esm/{button-active-b62776db.js → button-active-47ac8092.js} +1 -1
- package/dist/esm/{data-775093f5.js → data-0f3ab200.js} +1 -1
- package/dist/esm/{form-controller-548aa79c.js → form-controller-014aa89f.js} +1 -1
- package/dist/esm/{framework-delegate-bc1fd82a.js → framework-delegate-fed7fe7c.js} +1 -1
- package/dist/esm/{hardware-back-button-b2bc76db.js → hardware-back-button-b410a047.js} +48 -3
- package/dist/esm/{helpers-ae653409.js → helpers-c0b9ca37.js} +1 -1
- package/dist/esm/{index-a97c95a7.js → index-0b4beb69.js} +4 -4
- package/dist/esm/{index-01cb9192.js → index-47b2066d.js} +4 -4
- package/dist/esm/{index-27668d5b.js → index-4c30cddd.js} +56 -23
- package/dist/esm/{index-82eeb47f.js → index-d64f34ea.js} +1 -1
- package/dist/esm/{index-b9e742e5.js → index-eb12ef92.js} +1 -1
- package/dist/esm/index.js +11 -11
- package/dist/esm/{input-shims-6539ce13.js → input-shims-b90ca55f.js} +2 -2
- package/dist/esm/{input.utils-a5a2d164.js → input.utils-6e9b0046.js} +1 -1
- package/dist/esm/ion-accordion_2.entry.js +18 -12
- package/dist/esm/ion-action-sheet.entry.js +20 -14
- package/dist/esm/ion-alert.entry.js +19 -13
- package/dist/esm/ion-app_8.entry.js +62 -40
- package/dist/esm/ion-avatar_3.entry.js +16 -11
- package/dist/esm/ion-back-button.entry.js +9 -7
- package/dist/esm/ion-backdrop.entry.js +7 -5
- package/dist/esm/ion-breadcrumb_2.entry.js +15 -11
- package/dist/esm/ion-button_2.entry.js +11 -8
- package/dist/esm/ion-card_5.entry.js +31 -21
- package/dist/esm/ion-checkbox.entry.js +8 -6
- package/dist/esm/ion-chip.entry.js +8 -6
- package/dist/esm/ion-col_3.entry.js +13 -10
- package/dist/esm/ion-datetime-button.entry.js +9 -7
- package/dist/esm/ion-datetime_3.entry.js +63 -34
- package/dist/esm/ion-fab_3.entry.js +17 -13
- package/dist/esm/ion-img.entry.js +6 -5
- package/dist/esm/ion-infinite-scroll_2.entry.js +13 -10
- package/dist/esm/ion-input.entry.js +10 -8
- package/dist/esm/ion-item-option_3.entry.js +18 -13
- package/dist/esm/ion-item_8.entry.js +53 -33
- package/dist/esm/ion-loading.entry.js +17 -11
- package/dist/esm/ion-menu_3.entry.js +29 -19
- package/dist/esm/ion-modal.entry.js +21 -18
- package/dist/esm/ion-nav_2.entry.js +10 -9
- package/dist/esm/ion-picker-column-internal.entry.js +10 -8
- package/dist/esm/ion-picker-internal.entry.js +23 -5
- package/dist/esm/ion-popover.entry.js +20 -14
- package/dist/esm/ion-progress-bar.entry.js +8 -6
- package/dist/esm/ion-radio_2.entry.js +9 -7
- package/dist/esm/ion-range.entry.js +9 -7
- package/dist/esm/ion-refresher_2.entry.js +11 -9
- package/dist/esm/ion-reorder_2.entry.js +12 -9
- package/dist/esm/ion-ripple-effect.entry.js +5 -4
- package/dist/esm/ion-route_4.entry.js +7 -6
- package/dist/esm/ion-searchbar.entry.js +11 -9
- package/dist/esm/ion-segment_2.entry.js +23 -12
- package/dist/esm/ion-select_3.entry.js +42 -18
- package/dist/esm/ion-spinner.entry.js +5 -4
- package/dist/esm/ion-split-pane.entry.js +17 -16
- package/dist/esm/ion-tab-bar_2.entry.js +15 -11
- package/dist/esm/ion-tab_2.entry.js +10 -8
- package/dist/esm/ion-text.entry.js +6 -5
- package/dist/esm/ion-textarea.entry.js +10 -8
- package/dist/esm/ion-toast.entry.js +17 -11
- package/dist/esm/ion-toggle.entry.js +8 -6
- package/dist/esm/{ionic-global-8fa0f940.js → ionic-global-ad9a1810.js} +1 -1
- package/dist/esm/ionic.js +8 -8
- package/dist/esm/{ios.transition-62fd50ab.js → ios.transition-b76c7020.js} +4 -4
- package/dist/esm/loader.js +7 -7
- package/dist/esm/{md.transition-7e56966a.js → md.transition-564937a7.js} +4 -4
- package/dist/esm/{notch-controller-fea7f9c5.js → notch-controller-15d281a4.js} +1 -1
- package/dist/esm/{overlays-8414359b.js → overlays-04a9a43f.js} +86 -22
- package/dist/esm/{status-tap-129c01cf.js → status-tap-5a95077d.js} +3 -3
- package/dist/esm/{swipe-back-18cb49f7.js → swipe-back-fa0ec5cd.js} +1 -1
- package/dist/esm-es5/{animation-dde8cc0d.js → animation-60dbdd13.js} +1 -1
- package/dist/esm-es5/app-globals-5cf6195b.js +4 -0
- package/dist/esm-es5/{button-active-b62776db.js → button-active-47ac8092.js} +1 -1
- package/dist/esm-es5/{data-775093f5.js → data-0f3ab200.js} +1 -1
- package/dist/esm-es5/{form-controller-548aa79c.js → form-controller-014aa89f.js} +1 -1
- package/dist/esm-es5/{framework-delegate-bc1fd82a.js → framework-delegate-fed7fe7c.js} +1 -1
- package/dist/esm-es5/hardware-back-button-b410a047.js +4 -0
- package/dist/esm-es5/helpers-c0b9ca37.js +4 -0
- package/dist/esm-es5/{index-a97c95a7.js → index-0b4beb69.js} +1 -1
- package/dist/esm-es5/{index-01cb9192.js → index-47b2066d.js} +1 -1
- package/dist/esm-es5/index-4c30cddd.js +5 -0
- package/dist/esm-es5/index-d64f34ea.js +4 -0
- package/dist/esm-es5/{index-b9e742e5.js → index-eb12ef92.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/{input-shims-6539ce13.js → input-shims-b90ca55f.js} +1 -1
- package/dist/esm-es5/{input.utils-a5a2d164.js → input.utils-6e9b0046.js} +1 -1
- package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
- package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
- package/dist/esm-es5/ion-alert.entry.js +1 -1
- package/dist/esm-es5/ion-app_8.entry.js +1 -1
- package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
- package/dist/esm-es5/ion-back-button.entry.js +1 -1
- package/dist/esm-es5/ion-backdrop.entry.js +1 -1
- package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
- package/dist/esm-es5/ion-button_2.entry.js +1 -1
- package/dist/esm-es5/ion-card_5.entry.js +1 -1
- package/dist/esm-es5/ion-checkbox.entry.js +1 -1
- package/dist/esm-es5/ion-chip.entry.js +1 -1
- package/dist/esm-es5/ion-col_3.entry.js +1 -1
- package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-fab_3.entry.js +1 -1
- package/dist/esm-es5/ion-img.entry.js +1 -1
- package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
- package/dist/esm-es5/ion-input.entry.js +1 -1
- package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
- package/dist/esm-es5/ion-item_8.entry.js +1 -1
- package/dist/esm-es5/ion-loading.entry.js +1 -1
- package/dist/esm-es5/ion-menu_3.entry.js +1 -1
- package/dist/esm-es5/ion-modal.entry.js +1 -1
- package/dist/esm-es5/ion-nav_2.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
- package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
- package/dist/esm-es5/ion-radio_2.entry.js +1 -1
- package/dist/esm-es5/ion-range.entry.js +1 -1
- package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
- package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
- package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
- package/dist/esm-es5/ion-route_4.entry.js +1 -1
- package/dist/esm-es5/ion-searchbar.entry.js +1 -1
- package/dist/esm-es5/ion-segment_2.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.entry.js +1 -1
- package/dist/esm-es5/ion-spinner.entry.js +1 -1
- package/dist/esm-es5/ion-split-pane.entry.js +1 -1
- package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
- package/dist/esm-es5/ion-tab_2.entry.js +1 -1
- package/dist/esm-es5/ion-text.entry.js +1 -1
- package/dist/esm-es5/ion-textarea.entry.js +1 -1
- package/dist/esm-es5/ion-toast.entry.js +1 -1
- package/dist/esm-es5/ion-toggle.entry.js +1 -1
- package/dist/esm-es5/{ionic-global-8fa0f940.js → ionic-global-ad9a1810.js} +1 -1
- package/dist/esm-es5/ionic.js +2 -2
- package/dist/esm-es5/{ios.transition-62fd50ab.js → ios.transition-b76c7020.js} +1 -1
- package/dist/esm-es5/loader.js +2 -2
- package/dist/esm-es5/md.transition-564937a7.js +4 -0
- package/dist/esm-es5/{notch-controller-fea7f9c5.js → notch-controller-15d281a4.js} +1 -1
- package/dist/esm-es5/overlays-04a9a43f.js +4 -0
- package/dist/esm-es5/{status-tap-129c01cf.js → status-tap-5a95077d.js} +1 -1
- package/dist/esm-es5/{swipe-back-18cb49f7.js → swipe-back-fa0ec5cd.js} +1 -1
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/ionic.js +1 -1
- package/dist/ionic/p-027f3674.entry.js +4 -0
- package/dist/ionic/p-0457213c.entry.js +4 -0
- package/dist/ionic/p-05d560ec.entry.js +4 -0
- package/dist/ionic/p-0b34d3a7.system.js +4 -0
- package/dist/ionic/p-0e23c289.system.entry.js +4 -0
- package/dist/ionic/p-1131946f.system.entry.js +4 -0
- package/dist/ionic/{p-25221a73.js → p-123b4809.js} +1 -1
- package/dist/ionic/{p-d2707f9d.system.js → p-1636923f.system.js} +1 -1
- package/dist/ionic/p-16a61810.entry.js +4 -0
- package/dist/ionic/p-18beebdf.system.entry.js +4 -0
- package/dist/ionic/p-1924f2e0.system.entry.js +4 -0
- package/dist/ionic/{p-53ec4f1c.system.js → p-1dfc11b3.system.js} +1 -1
- package/dist/ionic/p-1f16d040.entry.js +4 -0
- package/dist/ionic/p-1f19958f.system.entry.js +4 -0
- package/dist/ionic/p-21ca1f1c.js +4 -0
- package/dist/ionic/p-2327064c.entry.js +4 -0
- package/dist/ionic/{p-7bae84aa.entry.js → p-23c73017.entry.js} +1 -1
- package/dist/ionic/p-275705e5.entry.js +4 -0
- package/dist/ionic/{p-32b8e50d.system.js → p-2e14c533.system.js} +1 -1
- package/dist/ionic/p-2e1f014a.system.entry.js +4 -0
- package/dist/ionic/p-3079950e.entry.js +4 -0
- package/dist/ionic/{p-03e00f90.js → p-30cd5e7b.js} +1 -1
- package/dist/ionic/p-30d77a91.system.js +4 -0
- package/dist/ionic/{p-376a6063.js → p-31c495c2.js} +1 -1
- package/dist/ionic/p-337ac0f5.entry.js +4 -0
- package/dist/ionic/p-3471a7c0.system.entry.js +4 -0
- package/dist/ionic/p-3481d54e.system.entry.js +4 -0
- package/dist/ionic/{p-cabad15b.system.js → p-37c33319.system.js} +1 -1
- package/dist/ionic/p-396083cc.entry.js +4 -0
- package/dist/ionic/{p-e814f9c0.entry.js → p-3a7de59c.entry.js} +1 -1
- package/dist/ionic/{p-d51674c5.system.js → p-3c6f02cf.system.js} +1 -1
- package/dist/ionic/p-3d961d93.entry.js +4 -0
- package/dist/ionic/p-3e9ad72a.system.entry.js +4 -0
- package/dist/ionic/p-42a9f663.system.entry.js +4 -0
- package/dist/ionic/p-43a5edee.entry.js +4 -0
- package/dist/ionic/{p-8aa1d0b7.system.js → p-49543c9c.system.js} +1 -1
- package/dist/ionic/p-49aba878.js +4 -0
- package/dist/ionic/{p-88d5fbd3.js → p-4f777b5e.js} +1 -1
- package/dist/ionic/p-4fda5c35.entry.js +4 -0
- package/dist/ionic/{p-249633a4.entry.js → p-502780e4.entry.js} +1 -1
- package/dist/ionic/{p-436bd99a.entry.js → p-508a4c87.entry.js} +1 -1
- package/dist/ionic/p-5928fac9.system.entry.js +4 -0
- package/dist/ionic/{p-d5216086.entry.js → p-5b40d967.entry.js} +1 -1
- package/dist/ionic/p-5c2ae448.js +4 -0
- package/dist/ionic/p-5c580e89.entry.js +4 -0
- package/dist/ionic/p-5c6a04bd.entry.js +4 -0
- package/dist/ionic/p-5cb5f63d.system.entry.js +4 -0
- package/dist/ionic/{p-fd41bd8a.js → p-5d7e32ce.js} +1 -1
- package/dist/ionic/p-5e23bea8.system.entry.js +4 -0
- package/dist/ionic/{p-ed60d571.entry.js → p-5f169eba.entry.js} +1 -1
- package/dist/ionic/{p-13387c28.entry.js → p-601e17b4.entry.js} +1 -1
- package/dist/ionic/p-61ba2137.system.js +4 -0
- package/dist/ionic/p-64761c90.entry.js +4 -0
- package/dist/ionic/{p-c1c57873.system.entry.js → p-64856c3c.system.entry.js} +1 -1
- package/dist/ionic/p-6486e393.system.entry.js +4 -0
- package/dist/ionic/p-64db1331.entry.js +4 -0
- package/dist/ionic/{p-ef3a6b51.system.js → p-6525a8cd.system.js} +1 -1
- package/dist/ionic/p-657ccdd6.entry.js +4 -0
- package/dist/ionic/p-667e3e2d.entry.js +4 -0
- package/dist/ionic/p-6871553b.system.js +4 -0
- package/dist/ionic/p-68ba8e77.system.entry.js +4 -0
- package/dist/ionic/p-70e34286.system.entry.js +4 -0
- package/dist/ionic/p-7173ba59.system.entry.js +4 -0
- package/dist/ionic/p-717e2526.system.entry.js +4 -0
- package/dist/ionic/p-72fa96bf.system.js +5 -0
- package/dist/ionic/{p-87bb3735.system.js → p-7330c044.system.js} +1 -1
- package/dist/ionic/{p-ae638cb5.system.js → p-74deb358.system.js} +1 -1
- package/dist/ionic/p-7b1ed642.system.entry.js +4 -0
- package/dist/ionic/{p-b6f6f00e.entry.js → p-7ce40e7b.entry.js} +1 -1
- package/dist/ionic/p-86813176.system.entry.js +4 -0
- package/dist/ionic/p-8794fa00.system.entry.js +4 -0
- package/dist/ionic/p-88e9052d.entry.js +4 -0
- package/dist/ionic/{p-3c33dc30.system.js → p-89ca4c4b.system.js} +1 -1
- package/dist/ionic/p-8e651c29.entry.js +4 -0
- package/dist/ionic/p-9056778e.system.entry.js +4 -0
- package/dist/ionic/p-91cb3f9a.entry.js +4 -0
- package/dist/ionic/{p-29d03b3a.js → p-9393a49f.js} +1 -1
- package/dist/ionic/{p-3a75d7fd.js → p-94be3ad7.js} +1 -1
- package/dist/ionic/p-95d5a097.entry.js +4 -0
- package/dist/ionic/p-9cd7ba27.system.js +4 -0
- package/dist/ionic/p-9ec7208d.system.js +4 -0
- package/dist/ionic/p-a022b684.system.entry.js +4 -0
- package/dist/ionic/p-a0b28c69.system.entry.js +4 -0
- package/dist/ionic/p-a3df16b9.system.entry.js +4 -0
- package/dist/ionic/{p-4180a747.js → p-a3f572a7.js} +1 -1
- package/dist/ionic/{p-4a4bbcc5.system.js → p-a5951821.system.js} +2 -2
- package/dist/ionic/p-a6e465f5.entry.js +4 -0
- package/dist/ionic/{p-bb41c476.system.entry.js → p-a85d9047.system.entry.js} +1 -1
- package/dist/ionic/p-a8a56449.entry.js +4 -0
- package/dist/ionic/p-aaaa615c.system.entry.js +4 -0
- package/dist/ionic/p-abcedc15.system.entry.js +4 -0
- package/dist/ionic/{p-0bd51c34.system.js → p-abe101da.system.js} +1 -1
- package/dist/ionic/p-ae35294f.system.entry.js +4 -0
- package/dist/ionic/p-afd6d696.system.entry.js +4 -0
- package/dist/ionic/p-b06ac4a5.system.js +4 -0
- package/dist/ionic/p-b0ff8075.entry.js +4 -0
- package/dist/ionic/{p-66d633fb.js → p-b253ad7f.js} +1 -1
- package/dist/ionic/p-b2595011.system.entry.js +4 -0
- package/dist/ionic/p-b5839dc2.js +4 -0
- package/dist/ionic/p-b6279412.entry.js +4 -0
- package/dist/ionic/p-b8c685a7.system.js +4 -0
- package/dist/ionic/p-ba97a133.system.entry.js +4 -0
- package/dist/ionic/p-bd4787eb.entry.js +4 -0
- package/dist/ionic/p-bdca4784.js +4 -0
- package/dist/ionic/p-bf05cbc7.entry.js +4 -0
- package/dist/ionic/p-c11bab7e.entry.js +4 -0
- package/dist/ionic/p-c1797ec5.system.entry.js +4 -0
- package/dist/ionic/{p-36d187af.js → p-c2289cd1.js} +1 -1
- package/dist/ionic/p-c308f773.entry.js +4 -0
- package/dist/ionic/p-c39cc96d.system.entry.js +4 -0
- package/dist/ionic/p-c747f89b.system.entry.js +4 -0
- package/dist/ionic/{p-7798c78a.system.js → p-c80c7e90.system.js} +1 -1
- package/dist/ionic/{p-013013a3.js → p-c858f685.js} +1 -1
- package/dist/ionic/p-c995da88.system.js +4 -0
- package/dist/ionic/p-cb9e71e0.entry.js +4 -0
- package/dist/ionic/p-cd9a7017.system.entry.js +4 -0
- package/dist/ionic/p-cde3ac34.system.entry.js +4 -0
- package/dist/ionic/p-ceceac26.js +4 -0
- package/dist/ionic/{p-803ad1e3.entry.js → p-d39ab63d.entry.js} +1 -1
- package/dist/ionic/{p-43afd001.system.js → p-d4cadd34.system.js} +1 -1
- package/dist/ionic/p-db30f71b.entry.js +4 -0
- package/dist/ionic/p-dbcba5a2.js +4 -0
- package/dist/ionic/{p-1052ef2b.entry.js → p-dcb5711d.entry.js} +1 -1
- package/dist/ionic/{p-23ce95e8.js → p-de55ec45.js} +1 -1
- package/dist/ionic/p-df504a37.system.js +4 -0
- package/dist/ionic/p-e04b9647.system.entry.js +4 -0
- package/dist/ionic/{p-38f2c6bb.system.js → p-e2bb92ed.system.js} +1 -1
- package/dist/ionic/p-e81bf09e.system.entry.js +4 -0
- package/dist/ionic/p-e9f9388e.system.js +4 -0
- package/dist/ionic/p-ea25b4c8.system.entry.js +4 -0
- package/dist/ionic/p-eb07b88f.entry.js +4 -0
- package/dist/ionic/p-ed7a529f.js +5 -0
- package/dist/ionic/p-edcada2b.system.entry.js +4 -0
- package/dist/ionic/p-f0194418.system.entry.js +4 -0
- package/dist/ionic/p-f460c7ae.entry.js +4 -0
- package/dist/ionic/p-f53d074d.system.entry.js +4 -0
- package/dist/ionic/{p-18cae04f.js → p-f7dce541.js} +1 -1
- package/dist/ionic/p-f840d817.entry.js +4 -0
- package/dist/ionic/p-f8c96502.system.entry.js +4 -0
- package/dist/ionic/p-fb9f8495.system.entry.js +4 -0
- package/dist/ionic/p-fd2aa50c.js +4 -0
- package/dist/ionic/p-fd8ced99.system.js +4 -0
- package/dist/types/components/action-sheet/action-sheet-interface.d.ts +2 -2
- package/dist/types/components/action-sheet/action-sheet.d.ts +4 -0
- package/dist/types/components/alert/alert-interface.d.ts +2 -2
- package/dist/types/components/alert/alert.d.ts +4 -0
- package/dist/types/components/item/item.d.ts +1 -0
- package/dist/types/components/loading/loading.d.ts +4 -0
- package/dist/types/components/modal/modal.d.ts +4 -0
- package/dist/types/components/picker/picker.d.ts +4 -0
- package/dist/types/components/popover/popover.d.ts +4 -0
- package/dist/types/components/toast/toast-interface.d.ts +2 -2
- package/dist/types/components/toast/toast.d.ts +4 -0
- package/dist/types/components.d.ts +7 -7
- package/dist/types/interface.d.ts +1 -1
- package/dist/types/utils/browser/index.d.ts +22 -1
- package/dist/types/utils/config.d.ts +7 -0
- package/dist/types/utils/hardware-back-button.d.ts +13 -0
- package/hydrate/index.d.ts +1 -1
- package/hydrate/index.js +794 -373
- package/package.json +9 -9
- package/dist/collection/components/accordion/test/accordion.e2e.js +0 -39
- package/dist/esm-es5/app-globals-52c78291.js +0 -4
- package/dist/esm-es5/hardware-back-button-b2bc76db.js +0 -4
- package/dist/esm-es5/helpers-ae653409.js +0 -4
- package/dist/esm-es5/index-27668d5b.js +0 -5
- package/dist/esm-es5/index-82eeb47f.js +0 -4
- package/dist/esm-es5/md.transition-7e56966a.js +0 -4
- package/dist/esm-es5/overlays-8414359b.js +0 -4
- package/dist/ionic/p-005e0ad0.js +0 -4
- package/dist/ionic/p-01438d78.entry.js +0 -4
- package/dist/ionic/p-02e530f5.system.js +0 -4
- package/dist/ionic/p-0abedd22.entry.js +0 -4
- package/dist/ionic/p-0d2b6901.entry.js +0 -4
- package/dist/ionic/p-127ff448.entry.js +0 -4
- package/dist/ionic/p-1a0bf247.system.entry.js +0 -4
- package/dist/ionic/p-1a5f0313.system.js +0 -4
- package/dist/ionic/p-1cca10d6.system.js +0 -4
- package/dist/ionic/p-1f7fc88d.entry.js +0 -4
- package/dist/ionic/p-1ffb40d0.system.entry.js +0 -4
- package/dist/ionic/p-23a9d086.js +0 -4
- package/dist/ionic/p-25553eba.system.entry.js +0 -4
- package/dist/ionic/p-2a496995.js +0 -4
- package/dist/ionic/p-3197dbf7.entry.js +0 -4
- package/dist/ionic/p-32ad210f.system.js +0 -4
- package/dist/ionic/p-35e1a80f.system.entry.js +0 -4
- package/dist/ionic/p-38c337e7.system.js +0 -4
- package/dist/ionic/p-3b83e483.system.entry.js +0 -4
- package/dist/ionic/p-3bcbbf43.system.entry.js +0 -4
- package/dist/ionic/p-3f0afc6f.entry.js +0 -4
- package/dist/ionic/p-40f68333.system.js +0 -4
- package/dist/ionic/p-41040a92.system.entry.js +0 -4
- package/dist/ionic/p-41aa2662.entry.js +0 -4
- package/dist/ionic/p-48f7e8cc.system.entry.js +0 -4
- package/dist/ionic/p-4b3623da.js +0 -4
- package/dist/ionic/p-4cd6a04c.system.entry.js +0 -4
- package/dist/ionic/p-525b6ac4.system.entry.js +0 -4
- package/dist/ionic/p-54c92c77.entry.js +0 -4
- package/dist/ionic/p-5a85d71d.entry.js +0 -4
- package/dist/ionic/p-5aecd304.system.entry.js +0 -4
- package/dist/ionic/p-5c2da581.system.entry.js +0 -4
- package/dist/ionic/p-619fafe3.system.entry.js +0 -4
- package/dist/ionic/p-61bf9f6f.system.entry.js +0 -4
- package/dist/ionic/p-677cb2f7.js +0 -4
- package/dist/ionic/p-67c3a2a8.system.js +0 -5
- package/dist/ionic/p-688a36c7.entry.js +0 -4
- package/dist/ionic/p-6a257379.entry.js +0 -4
- package/dist/ionic/p-6b9eee40.system.entry.js +0 -4
- package/dist/ionic/p-6ba863b1.system.entry.js +0 -4
- package/dist/ionic/p-6e165986.system.entry.js +0 -4
- package/dist/ionic/p-7510e462.entry.js +0 -4
- package/dist/ionic/p-76b6b42e.system.entry.js +0 -4
- package/dist/ionic/p-770f5b43.system.js +0 -4
- package/dist/ionic/p-7751def0.system.entry.js +0 -4
- package/dist/ionic/p-788942c8.system.entry.js +0 -4
- package/dist/ionic/p-790220fd.system.js +0 -4
- package/dist/ionic/p-7de774dd.entry.js +0 -4
- package/dist/ionic/p-8084e9cb.entry.js +0 -4
- package/dist/ionic/p-80ddd0c1.entry.js +0 -4
- package/dist/ionic/p-85e04029.entry.js +0 -4
- package/dist/ionic/p-87e10168.system.entry.js +0 -4
- package/dist/ionic/p-888db766.system.js +0 -4
- package/dist/ionic/p-88d99112.system.entry.js +0 -4
- package/dist/ionic/p-89c28901.system.entry.js +0 -4
- package/dist/ionic/p-928e945d.system.entry.js +0 -4
- package/dist/ionic/p-978c6799.system.entry.js +0 -4
- package/dist/ionic/p-9a0b9b64.entry.js +0 -4
- package/dist/ionic/p-a2d75455.entry.js +0 -4
- package/dist/ionic/p-a706cf11.system.entry.js +0 -4
- package/dist/ionic/p-a78d17e2.entry.js +0 -4
- package/dist/ionic/p-aca77953.entry.js +0 -4
- package/dist/ionic/p-b09c8228.entry.js +0 -4
- package/dist/ionic/p-b2205a7c.system.entry.js +0 -4
- package/dist/ionic/p-b43cf55f.entry.js +0 -4
- package/dist/ionic/p-bc59962f.system.entry.js +0 -4
- package/dist/ionic/p-be04fcd8.system.entry.js +0 -4
- package/dist/ionic/p-bf595ef8.system.entry.js +0 -4
- package/dist/ionic/p-bf80f9d1.entry.js +0 -4
- package/dist/ionic/p-c0f62b42.system.js +0 -4
- package/dist/ionic/p-c16d9f2c.system.entry.js +0 -4
- package/dist/ionic/p-c48a9ef3.system.entry.js +0 -4
- package/dist/ionic/p-c9219299.entry.js +0 -4
- package/dist/ionic/p-cae77add.system.entry.js +0 -4
- package/dist/ionic/p-cd6bb7f5.system.entry.js +0 -4
- package/dist/ionic/p-cdce5ba3.system.entry.js +0 -4
- package/dist/ionic/p-d6129c6e.js +0 -5
- package/dist/ionic/p-d6beb1c9.system.entry.js +0 -4
- package/dist/ionic/p-db798370.system.entry.js +0 -4
- package/dist/ionic/p-dc1d883c.system.entry.js +0 -4
- package/dist/ionic/p-dd9dff11.entry.js +0 -4
- package/dist/ionic/p-ddbb2d5b.system.js +0 -4
- package/dist/ionic/p-de6f8b28.system.js +0 -4
- package/dist/ionic/p-df62accd.entry.js +0 -4
- package/dist/ionic/p-e1e05489.system.entry.js +0 -4
- package/dist/ionic/p-e3ff3cde.system.entry.js +0 -4
- package/dist/ionic/p-e8294cc1.entry.js +0 -4
- package/dist/ionic/p-e87564bc.entry.js +0 -4
- package/dist/ionic/p-ea7f77e7.entry.js +0 -4
- package/dist/ionic/p-eb210b21.system.entry.js +0 -4
- package/dist/ionic/p-eb80ca40.entry.js +0 -4
- package/dist/ionic/p-eba17ff5.system.entry.js +0 -4
- package/dist/ionic/p-eef72e06.js +0 -4
- package/dist/ionic/p-efcc4b66.entry.js +0 -4
- package/dist/ionic/p-f08d8865.js +0 -4
- package/dist/ionic/p-f3478ed6.system.entry.js +0 -4
- package/dist/ionic/p-f4bf2448.entry.js +0 -4
- package/dist/ionic/p-f4e37ba7.entry.js +0 -4
- package/dist/ionic/p-f56d53bd.entry.js +0 -4
- package/dist/ionic/p-f8564a9b.system.entry.js +0 -4
- package/dist/ionic/p-f865bc9a.entry.js +0 -4
- package/dist/ionic/p-fd1a0431.js +0 -4
|
@@ -5,7 +5,7 @@ import { Host, h } from "@stencil/core";
|
|
|
5
5
|
import { getIonMode } from "../../global/ionic-global";
|
|
6
6
|
export class Thumbnail {
|
|
7
7
|
render() {
|
|
8
|
-
return (h(Host, { class: getIonMode(this) }, h("slot",
|
|
8
|
+
return (h(Host, { key: '2b3d5139161f4b9075dce537c14b4087986b37c4', class: getIonMode(this) }, h("slot", { key: '3c4838c43e1230f9413a3cb66584417fd11382b2' })));
|
|
9
9
|
}
|
|
10
10
|
static get is() { return "ion-thumbnail"; }
|
|
11
11
|
static get encapsulation() { return "shadow"; }
|
|
@@ -27,11 +27,11 @@ export class ToolbarTitle {
|
|
|
27
27
|
render() {
|
|
28
28
|
const mode = getIonMode(this);
|
|
29
29
|
const size = this.getSize();
|
|
30
|
-
return (h(Host, { class: createColorClasses(this.color, {
|
|
30
|
+
return (h(Host, { key: 'b68a272a33ec81d282629a569676f64d3215a0c7', class: createColorClasses(this.color, {
|
|
31
31
|
[mode]: true,
|
|
32
32
|
[`title-${size}`]: true,
|
|
33
33
|
'title-rtl': document.dir === 'rtl',
|
|
34
|
-
}) }, h("div", { class: "toolbar-title" }, h("slot",
|
|
34
|
+
}) }, h("div", { key: '9069816a14e6e358695c5bd465787cf297c761bc', class: "toolbar-title" }, h("slot", { key: '8894bd04f2292b54050ee864abb5396deadf9874' }))));
|
|
35
35
|
}
|
|
36
36
|
static get is() { return "ion-title"; }
|
|
37
37
|
static get encapsulation() { return "shadow"; }
|
|
@@ -80,6 +80,18 @@ describe('toast: a11y smoke test', () => {
|
|
|
80
80
|
});
|
|
81
81
|
});
|
|
82
82
|
describe('toast: duration config', () => {
|
|
83
|
+
afterEach(() => {
|
|
84
|
+
/**
|
|
85
|
+
* Important: Reset the config
|
|
86
|
+
* after each test as it is not
|
|
87
|
+
* automatically reset.
|
|
88
|
+
* Otherwise, toasts in other tests
|
|
89
|
+
* will take on any toastDuration value
|
|
90
|
+
* set and timeouts will potentially run
|
|
91
|
+
* after tests are finished.
|
|
92
|
+
*/
|
|
93
|
+
config.reset({});
|
|
94
|
+
});
|
|
83
95
|
it('should have duration set to 0', async () => {
|
|
84
96
|
const page = await newSpecPage({
|
|
85
97
|
components: [Toast],
|
|
@@ -217,6 +217,10 @@ export class Toast {
|
|
|
217
217
|
* This can be useful in a button handler for determining which button was
|
|
218
218
|
* clicked to dismiss the toast.
|
|
219
219
|
* Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
|
|
220
|
+
*
|
|
221
|
+
* This is a no-op if the overlay has not been presented yet. If you want
|
|
222
|
+
* to remove an overlay from the DOM that was never presented, use the
|
|
223
|
+
* [remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.
|
|
220
224
|
*/
|
|
221
225
|
async dismiss(data, role) {
|
|
222
226
|
var _a, _b;
|
|
@@ -384,9 +388,9 @@ export class Toast {
|
|
|
384
388
|
if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
|
|
385
389
|
printIonWarning('This toast is using start and end buttons with the stacked toast layout. We recommend following the best practice of using either start or end buttons with the stacked toast layout.', el);
|
|
386
390
|
}
|
|
387
|
-
return (h(Host, Object.assign({ tabindex: "-1" }, this.htmlAttributes, { style: {
|
|
391
|
+
return (h(Host, Object.assign({ key: 'c8d7e7d2baa01d3ed5d65a845bc61acf087c0b18', tabindex: "-1" }, this.htmlAttributes, { style: {
|
|
388
392
|
zIndex: `${60000 + this.overlayIndex}`,
|
|
389
|
-
}, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { class: wrapperClass }, h("div", { class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (h("ion-icon", { class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), h("div", { class: "toast-content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
|
|
393
|
+
}, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: '27c0feeb89c4efb47c42623a4b036ed84338ed10', class: wrapperClass }, h("div", { key: '41d5a3069f92e4a6acef2793fa4e236cdbdaae88', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (h("ion-icon", { class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), h("div", { key: '176f497bc990ef2ecc14c7fa90dd3a54a912030a', class: "toast-content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
|
|
390
394
|
}
|
|
391
395
|
static get is() { return "ion-toast"; }
|
|
392
396
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1032,7 +1036,7 @@ export class Toast {
|
|
|
1032
1036
|
}, {
|
|
1033
1037
|
"name": "role",
|
|
1034
1038
|
"type": "string | undefined",
|
|
1035
|
-
"docs": "The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"
|
|
1039
|
+
"docs": "The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
1036
1040
|
}],
|
|
1037
1041
|
"references": {
|
|
1038
1042
|
"Promise": {
|
|
@@ -1054,7 +1058,7 @@ export class Toast {
|
|
|
1054
1058
|
"text": "data Any data to emit in the dismiss events."
|
|
1055
1059
|
}, {
|
|
1056
1060
|
"name": "param",
|
|
1057
|
-
"text": "role The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"
|
|
1061
|
+
"text": "role The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
1058
1062
|
}]
|
|
1059
1063
|
}
|
|
1060
1064
|
},
|
|
@@ -62,10 +62,10 @@ export class Toolbar {
|
|
|
62
62
|
this.childrenStyles.forEach((value) => {
|
|
63
63
|
Object.assign(childStyles, value);
|
|
64
64
|
});
|
|
65
|
-
return (h(Host, { class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {
|
|
65
|
+
return (h(Host, { key: 'afac0f08f3981483c072984ce047df5dc9cc1e99', class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {
|
|
66
66
|
[mode]: true,
|
|
67
67
|
'in-toolbar': hostContext('ion-toolbar', this.el),
|
|
68
|
-
})) }, h("div", { class: "toolbar-background" }), h("div", { class: "toolbar-container" }, h("slot", { name: "start" }), h("slot", { name: "secondary" }), h("div", { class: "toolbar-content" }, h("slot",
|
|
68
|
+
})) }, h("div", { key: '30d4f1d0ec01cc646398301b5f7d469391eb35d2', class: "toolbar-background" }), h("div", { key: '175d1f283e670b57a9bf8fd2a8c5e7d0da749aa8', class: "toolbar-container" }, h("slot", { key: '4853b18092737b32b5995457536fa5a7fc2816ef', name: "start" }), h("slot", { key: '6eb4921200aad02d7977d134edad6cff2aad91ad', name: "secondary" }), h("div", { key: '024e0339c74c4b9a886d49e96723243719643dc2', class: "toolbar-content" }, h("slot", { key: 'b6452c84692fedd6efe33ac67907d01253b76f8f' })), h("slot", { key: '636e56eeaa318ce45a9c3854a30b8eb2819a33e0', name: "primary" }), h("slot", { key: 'a45c19b93dca3719d75bd4d99acc49de87137a7d', name: "end" }))));
|
|
69
69
|
}
|
|
70
70
|
static get is() { return "ion-toolbar"; }
|
|
71
71
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
+
import { win } from "./browser/index";
|
|
5
|
+
import { config } from "../global/config";
|
|
6
|
+
/**
|
|
7
|
+
* CloseWatcher is a newer API that lets
|
|
8
|
+
* use detect the hardware back button event
|
|
9
|
+
* in a web browser: https://caniuse.com/?search=closewatcher
|
|
10
|
+
* However, not every browser supports it yet.
|
|
11
|
+
*
|
|
12
|
+
* This needs to be a function so that we can
|
|
13
|
+
* check the config once it has been set.
|
|
14
|
+
* Otherwise, this code would be evaluated the
|
|
15
|
+
* moment this file is evaluated which could be
|
|
16
|
+
* before the config is set.
|
|
17
|
+
*/
|
|
18
|
+
export const shoudUseCloseWatcher = () => config.get('experimentalCloseWatcher', false) && win !== undefined && 'CloseWatcher' in win;
|
|
4
19
|
/**
|
|
5
20
|
* When hardwareBackButton: false in config,
|
|
6
21
|
* we need to make sure we also block the default
|
|
@@ -17,7 +32,7 @@ export const blockHardwareBackButton = () => {
|
|
|
17
32
|
export const startHardwareBackButton = () => {
|
|
18
33
|
const doc = document;
|
|
19
34
|
let busy = false;
|
|
20
|
-
|
|
35
|
+
const backButtonCallback = () => {
|
|
21
36
|
if (busy) {
|
|
22
37
|
return;
|
|
23
38
|
}
|
|
@@ -63,7 +78,35 @@ export const startHardwareBackButton = () => {
|
|
|
63
78
|
}
|
|
64
79
|
};
|
|
65
80
|
processHandlers();
|
|
66
|
-
}
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* If the CloseWatcher is defined then
|
|
84
|
+
* we don't want to also listen for the native
|
|
85
|
+
* backbutton event otherwise we may get duplicate
|
|
86
|
+
* events firing.
|
|
87
|
+
*/
|
|
88
|
+
if (shoudUseCloseWatcher()) {
|
|
89
|
+
let watcher;
|
|
90
|
+
const configureWatcher = () => {
|
|
91
|
+
watcher === null || watcher === void 0 ? void 0 : watcher.destroy();
|
|
92
|
+
watcher = new win.CloseWatcher();
|
|
93
|
+
/**
|
|
94
|
+
* Once a close request happens
|
|
95
|
+
* the watcher gets destroyed.
|
|
96
|
+
* As a result, we need to re-configure
|
|
97
|
+
* the watcher so we can respond to other
|
|
98
|
+
* close requests.
|
|
99
|
+
*/
|
|
100
|
+
watcher.onclose = () => {
|
|
101
|
+
backButtonCallback();
|
|
102
|
+
configureWatcher();
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
configureWatcher();
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
doc.addEventListener('backbutton', backButtonCallback);
|
|
109
|
+
}
|
|
67
110
|
};
|
|
68
111
|
export const OVERLAY_BACK_BUTTON_PRIORITY = 100;
|
|
69
112
|
export const MENU_BACK_BUTTON_PRIORITY = 99; // 1 less than overlay priority since menu is displayed behind overlays
|
|
@@ -34,7 +34,7 @@ const transitionEnd = (el, expectedDuration = 0, callback) => {
|
|
|
34
34
|
el.addEventListener('transitionend', onTransitionEnd, opts);
|
|
35
35
|
animationTimeout = setTimeout(onTransitionEnd, expectedDuration + ANIMATION_FALLBACK_TIMEOUT);
|
|
36
36
|
unRegTrans = () => {
|
|
37
|
-
if (animationTimeout) {
|
|
37
|
+
if (animationTimeout !== undefined) {
|
|
38
38
|
clearTimeout(animationTimeout);
|
|
39
39
|
animationTimeout = undefined;
|
|
40
40
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { doc } from "./browser/index";
|
|
5
|
+
import { shoudUseCloseWatcher } from "./hardware-back-button";
|
|
5
6
|
import { config } from "../global/config";
|
|
6
7
|
import { getIonMode } from "../global/ionic-global";
|
|
7
8
|
import { CoreDelegate } from "./framework-delegate";
|
|
@@ -296,19 +297,38 @@ const connectListeners = (doc) => {
|
|
|
296
297
|
const lastOverlay = getPresentedOverlay(doc);
|
|
297
298
|
if (lastOverlay === null || lastOverlay === void 0 ? void 0 : lastOverlay.backdropDismiss) {
|
|
298
299
|
ev.detail.register(OVERLAY_BACK_BUTTON_PRIORITY, () => {
|
|
299
|
-
|
|
300
|
+
/**
|
|
301
|
+
* Do not return this promise otherwise
|
|
302
|
+
* the hardware back button utility will
|
|
303
|
+
* be blocked until the overlay dismisses.
|
|
304
|
+
* This is important for a modal with canDismiss.
|
|
305
|
+
* If the application presents a confirmation alert
|
|
306
|
+
* in the "canDismiss" callback, then it will be impossible
|
|
307
|
+
* to use the hardware back button to dismiss the alert
|
|
308
|
+
* dialog because the hardware back button utility
|
|
309
|
+
* is blocked on waiting for the modal to dismiss.
|
|
310
|
+
*/
|
|
311
|
+
lastOverlay.dismiss(undefined, BACKDROP);
|
|
300
312
|
});
|
|
301
313
|
}
|
|
302
314
|
});
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
315
|
+
/**
|
|
316
|
+
* Handle ESC to close overlay.
|
|
317
|
+
* CloseWatcher also handles pressing the Esc
|
|
318
|
+
* key, so if a browser supports CloseWatcher then
|
|
319
|
+
* this behavior will be handled via the ionBackButton
|
|
320
|
+
* event.
|
|
321
|
+
*/
|
|
322
|
+
if (!shoudUseCloseWatcher()) {
|
|
323
|
+
doc.addEventListener('keydown', (ev) => {
|
|
324
|
+
if (ev.key === 'Escape') {
|
|
325
|
+
const lastOverlay = getPresentedOverlay(doc);
|
|
326
|
+
if (lastOverlay === null || lastOverlay === void 0 ? void 0 : lastOverlay.backdropDismiss) {
|
|
327
|
+
lastOverlay.dismiss(undefined, BACKDROP);
|
|
328
|
+
}
|
|
309
329
|
}
|
|
310
|
-
}
|
|
311
|
-
}
|
|
330
|
+
});
|
|
331
|
+
}
|
|
312
332
|
}
|
|
313
333
|
};
|
|
314
334
|
export const dismissOverlay = (doc, data, role, overlayTag, id) => {
|
|
@@ -389,6 +409,15 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
389
409
|
return;
|
|
390
410
|
}
|
|
391
411
|
setRootAriaHidden(true);
|
|
412
|
+
/**
|
|
413
|
+
* Hide all other overlays from screen readers so only this one
|
|
414
|
+
* can be read. Note that presenting an overlay always makes
|
|
415
|
+
* it the topmost one.
|
|
416
|
+
*/
|
|
417
|
+
if (doc !== undefined) {
|
|
418
|
+
const presentedOverlays = getPresentedOverlays(doc);
|
|
419
|
+
presentedOverlays.forEach((o) => o.setAttribute('aria-hidden', 'true'));
|
|
420
|
+
}
|
|
392
421
|
overlay.presented = true;
|
|
393
422
|
overlay.willPresent.emit();
|
|
394
423
|
(_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
|
|
@@ -411,7 +440,7 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
411
440
|
* from returning focus as a result.
|
|
412
441
|
*/
|
|
413
442
|
if (overlay.el.tagName !== 'ION-TOAST') {
|
|
414
|
-
|
|
443
|
+
restoreElementFocus(overlay.el);
|
|
415
444
|
}
|
|
416
445
|
/**
|
|
417
446
|
* If the focused element is already
|
|
@@ -422,6 +451,14 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
422
451
|
if (overlay.keyboardClose && (document.activeElement === null || !overlay.el.contains(document.activeElement))) {
|
|
423
452
|
overlay.el.focus();
|
|
424
453
|
}
|
|
454
|
+
/**
|
|
455
|
+
* If this overlay was previously dismissed without being
|
|
456
|
+
* the topmost one (such as by manually calling dismiss()),
|
|
457
|
+
* it would still have aria-hidden on being presented again.
|
|
458
|
+
* Removing it here ensures the overlay is visible to screen
|
|
459
|
+
* readers.
|
|
460
|
+
*/
|
|
461
|
+
overlay.el.removeAttribute('aria-hidden');
|
|
425
462
|
};
|
|
426
463
|
/**
|
|
427
464
|
* When an overlay component is dismissed,
|
|
@@ -433,7 +470,7 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
433
470
|
* to where they were before they
|
|
434
471
|
* opened the overlay.
|
|
435
472
|
*/
|
|
436
|
-
const
|
|
473
|
+
const restoreElementFocus = async (overlayEl) => {
|
|
437
474
|
let previousElement = document.activeElement;
|
|
438
475
|
if (!previousElement) {
|
|
439
476
|
return;
|
|
@@ -445,18 +482,35 @@ const focusPreviousElementOnDismissIfNeeded = async (overlayEl) => {
|
|
|
445
482
|
}
|
|
446
483
|
await overlayEl.onDidDismiss();
|
|
447
484
|
/**
|
|
448
|
-
*
|
|
449
|
-
*
|
|
450
|
-
*
|
|
451
|
-
*
|
|
452
|
-
*
|
|
485
|
+
* After onDidDismiss, the overlay loses focus
|
|
486
|
+
* because it is removed from the document
|
|
487
|
+
*
|
|
488
|
+
* > An element will also lose focus [...]
|
|
489
|
+
* > if the element is removed from the document)
|
|
490
|
+
*
|
|
491
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/Element/blur_event
|
|
492
|
+
*
|
|
493
|
+
* Additionally, `document.activeElement` returns:
|
|
494
|
+
*
|
|
495
|
+
* > The Element which currently has focus,
|
|
496
|
+
* > `<body>` or null if there is
|
|
497
|
+
* > no focused element.
|
|
498
|
+
*
|
|
499
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/Document/activeElement#value
|
|
500
|
+
*
|
|
501
|
+
* However, if the user has already focused
|
|
502
|
+
* an element sometime between onWillDismiss
|
|
503
|
+
* and onDidDismiss (for example, focusing a
|
|
504
|
+
* text box after tapping a button in an
|
|
505
|
+
* action sheet) then don't restore focus to
|
|
506
|
+
* previous element
|
|
453
507
|
*/
|
|
454
508
|
if (document.activeElement === null || document.activeElement === document.body) {
|
|
455
509
|
previousElement.focus();
|
|
456
510
|
}
|
|
457
511
|
};
|
|
458
512
|
export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnimation, opts) => {
|
|
459
|
-
var _a, _b;
|
|
513
|
+
var _a, _b, _c;
|
|
460
514
|
if (!overlay.presented) {
|
|
461
515
|
return false;
|
|
462
516
|
}
|
|
@@ -483,6 +537,10 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
|
|
|
483
537
|
}
|
|
484
538
|
overlay.didDismiss.emit({ data, role });
|
|
485
539
|
(_b = overlay.didDismissShorthand) === null || _b === void 0 ? void 0 : _b.emit({ data, role });
|
|
540
|
+
// Get a reference to all animations currently assigned to this overlay
|
|
541
|
+
// Then tear them down to return the overlay to its initial visual state
|
|
542
|
+
const animations = activeAnimations.get(overlay) || [];
|
|
543
|
+
animations.forEach((ani) => ani.destroy());
|
|
486
544
|
activeAnimations.delete(overlay);
|
|
487
545
|
/**
|
|
488
546
|
* Make overlay hidden again in case it is being reused.
|
|
@@ -503,6 +561,13 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
|
|
|
503
561
|
console.error(err);
|
|
504
562
|
}
|
|
505
563
|
overlay.el.remove();
|
|
564
|
+
/**
|
|
565
|
+
* If there are other overlays presented, unhide the new
|
|
566
|
+
* topmost one from screen readers.
|
|
567
|
+
*/
|
|
568
|
+
if (doc !== undefined) {
|
|
569
|
+
(_c = getPresentedOverlay(doc)) === null || _c === void 0 ? void 0 : _c.removeAttribute('aria-hidden');
|
|
570
|
+
}
|
|
506
571
|
return true;
|
|
507
572
|
};
|
|
508
573
|
const getAppRoot = (doc) => {
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { startHardwareBackButton } from "../hardware-back-button";
|
|
5
|
+
import { config } from "../../global/config";
|
|
6
|
+
import { win } from "../browser/index";
|
|
5
7
|
describe('Hardware Back Button', () => {
|
|
6
8
|
beforeEach(() => startHardwareBackButton());
|
|
7
9
|
it('should call handler', () => {
|
|
@@ -47,6 +49,42 @@ describe('Hardware Back Button', () => {
|
|
|
47
49
|
expect(cbSpyTwo).toHaveBeenCalled();
|
|
48
50
|
});
|
|
49
51
|
});
|
|
52
|
+
describe('Experimental Close Watcher', () => {
|
|
53
|
+
test('should not use the Close Watcher API when available', () => {
|
|
54
|
+
const mockAPI = mockCloseWatcher();
|
|
55
|
+
config.reset({ experimentalCloseWatcher: false });
|
|
56
|
+
startHardwareBackButton();
|
|
57
|
+
expect(mockAPI.mock.calls).toHaveLength(0);
|
|
58
|
+
});
|
|
59
|
+
test('should use the Close Watcher API when available', () => {
|
|
60
|
+
const mockAPI = mockCloseWatcher();
|
|
61
|
+
config.reset({ experimentalCloseWatcher: true });
|
|
62
|
+
startHardwareBackButton();
|
|
63
|
+
expect(mockAPI.mock.calls).toHaveLength(1);
|
|
64
|
+
});
|
|
65
|
+
test('Close Watcher should dispatch ionBackButton events', () => {
|
|
66
|
+
const mockAPI = mockCloseWatcher();
|
|
67
|
+
config.reset({ experimentalCloseWatcher: true });
|
|
68
|
+
startHardwareBackButton();
|
|
69
|
+
const cbSpy = jest.fn();
|
|
70
|
+
document.addEventListener('ionBackButton', cbSpy);
|
|
71
|
+
// Call onclose on Ionic's instance of CloseWatcher
|
|
72
|
+
mockAPI.getMockImplementation()().onclose();
|
|
73
|
+
expect(cbSpy).toHaveBeenCalled();
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
const mockCloseWatcher = () => {
|
|
77
|
+
const mockCloseWatcher = jest.fn();
|
|
78
|
+
mockCloseWatcher.mockReturnValue({
|
|
79
|
+
requestClose: () => null,
|
|
80
|
+
close: () => null,
|
|
81
|
+
destroy: () => null,
|
|
82
|
+
oncancel: () => null,
|
|
83
|
+
onclose: () => null,
|
|
84
|
+
});
|
|
85
|
+
win.CloseWatcher = mockCloseWatcher;
|
|
86
|
+
return mockCloseWatcher;
|
|
87
|
+
};
|
|
50
88
|
const dispatchBackButtonEvent = () => {
|
|
51
89
|
const ev = new Event('backbutton');
|
|
52
90
|
document.dispatchEvent(ev);
|
|
@@ -175,5 +175,38 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
175
175
|
await modalInputOne.click();
|
|
176
176
|
await expect(modalInputOne).toBeFocused();
|
|
177
177
|
});
|
|
178
|
+
test('should not return focus to another element if focus already manually returned', async ({ page, skip, }, testInfo) => {
|
|
179
|
+
skip.browser('webkit', 'WebKit does not consider buttons to be focusable, so this test always passes since the input is the only focusable element.');
|
|
180
|
+
testInfo.annotations.push({
|
|
181
|
+
type: 'issue',
|
|
182
|
+
description: 'https://github.com/ionic-team/ionic-framework/issues/28849',
|
|
183
|
+
});
|
|
184
|
+
await page.setContent(`
|
|
185
|
+
<button id="open-action-sheet">open</button>
|
|
186
|
+
<ion-action-sheet trigger="open-action-sheet"></ion-action-sheet>
|
|
187
|
+
<input id="test-input" />
|
|
188
|
+
|
|
189
|
+
<script>
|
|
190
|
+
const actionSheet = document.querySelector('ion-action-sheet');
|
|
191
|
+
|
|
192
|
+
actionSheet.addEventListener('ionActionSheetWillDismiss', () => {
|
|
193
|
+
requestAnimationFrame(() => {
|
|
194
|
+
document.querySelector('#test-input').focus();
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
</script>
|
|
198
|
+
`, config);
|
|
199
|
+
const ionActionSheetDidPresent = await page.spyOnEvent('ionActionSheetDidPresent');
|
|
200
|
+
const actionSheet = page.locator('ion-action-sheet');
|
|
201
|
+
const input = page.locator('#test-input');
|
|
202
|
+
const trigger = page.locator('#open-action-sheet');
|
|
203
|
+
// present action sheet
|
|
204
|
+
await trigger.click();
|
|
205
|
+
await ionActionSheetDidPresent.next();
|
|
206
|
+
// dismiss action sheet
|
|
207
|
+
await actionSheet.evaluate((el) => el.dismiss());
|
|
208
|
+
// verify focus is in correct location
|
|
209
|
+
await expect(input).toBeFocused();
|
|
210
|
+
});
|
|
178
211
|
});
|
|
179
212
|
});
|
|
@@ -100,3 +100,54 @@ describe('setRootAriaHidden()', () => {
|
|
|
100
100
|
expect(routerOutlet.hasAttribute('aria-hidden')).toEqual(false);
|
|
101
101
|
});
|
|
102
102
|
});
|
|
103
|
+
describe('aria-hidden on individual overlays', () => {
|
|
104
|
+
it('should hide non-topmost overlays from screen readers', async () => {
|
|
105
|
+
const page = await newSpecPage({
|
|
106
|
+
components: [Modal],
|
|
107
|
+
html: `
|
|
108
|
+
<ion-modal id="one"></ion-modal>
|
|
109
|
+
<ion-modal id="two"></ion-modal>
|
|
110
|
+
`,
|
|
111
|
+
});
|
|
112
|
+
const modalOne = page.body.querySelector('ion-modal#one');
|
|
113
|
+
const modalTwo = page.body.querySelector('ion-modal#two');
|
|
114
|
+
await modalOne.present();
|
|
115
|
+
await modalTwo.present();
|
|
116
|
+
expect(modalOne.hasAttribute('aria-hidden')).toEqual(true);
|
|
117
|
+
expect(modalTwo.hasAttribute('aria-hidden')).toEqual(false);
|
|
118
|
+
});
|
|
119
|
+
it('should unhide new topmost overlay from screen readers when topmost is dismissed', async () => {
|
|
120
|
+
const page = await newSpecPage({
|
|
121
|
+
components: [Modal],
|
|
122
|
+
html: `
|
|
123
|
+
<ion-modal id="one"></ion-modal>
|
|
124
|
+
<ion-modal id="two"></ion-modal>
|
|
125
|
+
`,
|
|
126
|
+
});
|
|
127
|
+
const modalOne = page.body.querySelector('ion-modal#one');
|
|
128
|
+
const modalTwo = page.body.querySelector('ion-modal#two');
|
|
129
|
+
await modalOne.present();
|
|
130
|
+
await modalTwo.present();
|
|
131
|
+
// dismiss modalTwo so that modalOne becomes the new topmost overlay
|
|
132
|
+
await modalTwo.dismiss();
|
|
133
|
+
expect(modalOne.hasAttribute('aria-hidden')).toEqual(false);
|
|
134
|
+
});
|
|
135
|
+
it('should not keep overlays hidden from screen readers if presented after being dismissed while non-topmost', async () => {
|
|
136
|
+
const page = await newSpecPage({
|
|
137
|
+
components: [Modal],
|
|
138
|
+
html: `
|
|
139
|
+
<ion-modal id="one"></ion-modal>
|
|
140
|
+
<ion-modal id="two"></ion-modal>
|
|
141
|
+
`,
|
|
142
|
+
});
|
|
143
|
+
const modalOne = page.body.querySelector('ion-modal#one');
|
|
144
|
+
const modalTwo = page.body.querySelector('ion-modal#two');
|
|
145
|
+
await modalOne.present();
|
|
146
|
+
await modalTwo.present();
|
|
147
|
+
// modalOne is not the topmost overlay at this point and is hidden from screen readers
|
|
148
|
+
await modalOne.dismiss();
|
|
149
|
+
// modalOne will become the topmost overlay; ensure it isn't still hidden from screen readers
|
|
150
|
+
await modalOne.present();
|
|
151
|
+
expect(modalOne.hasAttribute('aria-hidden')).toEqual(false);
|
|
152
|
+
});
|
|
153
|
+
});
|