voyager-ionic-core 8.4.3 → 8.5.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/components/alert.js +30 -4
- package/components/checkbox.js +40 -6
- package/components/helpers.js +17 -29
- package/components/index6.js +11 -3
- package/components/index9.js +1 -1
- package/components/ion-input.js +22 -9
- package/components/ion-item-divider.js +2 -2
- package/components/ion-item-group.js +1 -1
- package/components/ion-item-option.js +2 -2
- package/components/ion-item-options.js +1 -1
- package/components/ion-item-sliding.js +1 -1
- package/components/ion-loading.js +2 -2
- package/components/ion-menu-button.js +2 -2
- package/components/ion-menu-toggle.js +2 -2
- package/components/ion-menu.js +2 -2
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +1 -1
- package/components/ion-note.js +2 -2
- package/components/ion-picker-legacy.js +2 -2
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-range.js +28 -6
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-router-link.js +2 -2
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-router.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +4 -4
- package/components/ion-segment-button.js +40 -9
- package/components/ion-segment-content.js +1 -1
- package/components/ion-segment-view.js +2 -2
- package/components/ion-segment.js +2 -2
- package/components/ion-select-option.js +1 -1
- package/components/ion-select.js +87 -16
- package/components/ion-skeleton-text.js +2 -2
- package/components/ion-split-pane.js +2 -2
- package/components/ion-tab-bar.js +2 -2
- package/components/ion-tab-button.js +2 -2
- package/components/ion-tab.js +2 -2
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +2 -2
- package/components/ion-textarea.js +21 -8
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-toast.js +2 -2
- package/components/ion-toggle.js +41 -6
- package/components/ionic-global.js +3 -13
- package/components/label.js +2 -2
- package/components/list-header.js +2 -2
- package/components/modal.js +286 -35
- package/components/picker-column-option.js +2 -2
- package/components/picker-column2.js +2 -2
- package/components/popover.js +2 -2
- package/components/radio-group.js +39 -2
- package/components/radio.js +3 -3
- package/components/ripple-effect.js +1 -1
- package/components/select-modal.js +1 -1
- package/components/select-popover.js +1 -1
- package/components/spinner.js +1 -1
- package/components/title.js +2 -2
- package/components/toolbar.js +2 -2
- package/css/core.css.map +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/dist/cjs/{app-globals-21afee77.js → app-globals-dd592863.js} +1 -1
- package/dist/cjs/{button-active-3f2f60b4.js → button-active-43e2b419.js} +1 -1
- package/dist/cjs/{data-21dc0f81.js → data-27cc2c9c.js} +1 -1
- package/dist/cjs/{framework-delegate-55f5683a.js → framework-delegate-11b0ba2f.js} +1 -1
- package/dist/cjs/{hardware-back-button-9e8a2c4f.js → hardware-back-button-5a99001f.js} +2 -2
- package/dist/cjs/{helpers-afaa9001.js → helpers-d0dfbb50.js} +18 -28
- package/dist/cjs/{index-73f75efb.js → index-2e236a04.js} +0 -4
- package/dist/cjs/{index-9509ecad.js → index-363fe6b2.js} +1 -1
- package/dist/cjs/{index-5915f9b3.js → index-48b2a28e.js} +11 -3
- package/dist/cjs/{index-5b6a7459.js → index-9b945a2d.js} +2 -2
- package/dist/cjs/{index-f05acd21.js → index-f68a486a.js} +6 -6
- package/dist/cjs/{index-8e789962.js → index-fd6383b6.js} +4 -4
- package/dist/cjs/index.cjs.js +11 -11
- package/dist/cjs/{input-shims-9e59ef62.js → input-shims-2d27a5be.js} +5 -3
- package/dist/cjs/{input.utils-611cde0b.js → input.utils-2f642324.js} +2 -2
- package/dist/cjs/ion-accordion_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
- package/dist/cjs/ion-alert.cjs.entry.js +38 -12
- package/dist/cjs/ion-app_8.cjs.entry.js +18 -18
- package/dist/cjs/ion-avatar_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-back-button.cjs.entry.js +3 -3
- package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-button_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-card_5.cjs.entry.js +3 -3
- package/dist/cjs/ion-checkbox.cjs.entry.js +40 -9
- package/dist/cjs/ion-chip.cjs.entry.js +2 -2
- package/dist/cjs/ion-col_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-datetime-button.cjs.entry.js +5 -5
- package/dist/cjs/ion-datetime_3.cjs.entry.js +12 -12
- package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-img.cjs.entry.js +3 -3
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +3 -3
- package/dist/cjs/ion-input.cjs.entry.js +25 -13
- package/dist/cjs/ion-item-option_3.cjs.entry.js +9 -9
- package/dist/cjs/ion-item_8.cjs.entry.js +14 -14
- package/dist/cjs/ion-loading.cjs.entry.js +9 -9
- package/dist/cjs/ion-menu_3.cjs.entry.js +14 -14
- package/dist/cjs/ion-modal.cjs.entry.js +294 -44
- package/dist/cjs/ion-nav_2.cjs.entry.js +9 -9
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +5 -5
- package/dist/cjs/ion-picker-column.cjs.entry.js +3 -3
- package/dist/cjs/ion-picker.cjs.entry.js +2 -2
- package/dist/cjs/ion-popover.cjs.entry.js +10 -10
- package/dist/cjs/ion-progress-bar.cjs.entry.js +4 -4
- package/dist/cjs/ion-radio_2.cjs.entry.js +42 -7
- package/dist/cjs/ion-range.cjs.entry.js +31 -10
- package/dist/cjs/ion-refresher_2.cjs.entry.js +7 -7
- package/dist/cjs/ion-reorder_2.cjs.entry.js +7 -7
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +3 -3
- package/dist/cjs/ion-route_4.cjs.entry.js +5 -5
- package/dist/cjs/ion-searchbar.cjs.entry.js +7 -7
- package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment-view.cjs.entry.js +3 -3
- package/dist/cjs/ion-segment_2.cjs.entry.js +44 -13
- package/dist/cjs/ion-select-modal.cjs.entry.js +8 -8
- package/dist/cjs/ion-select_3.cjs.entry.js +93 -25
- package/dist/cjs/ion-spinner.cjs.entry.js +3 -3
- package/dist/cjs/ion-split-pane.cjs.entry.js +4 -4
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +7 -7
- package/dist/cjs/ion-tab_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-text.cjs.entry.js +4 -4
- package/dist/cjs/ion-textarea.cjs.entry.js +24 -12
- package/dist/cjs/ion-toast.cjs.entry.js +9 -9
- package/dist/cjs/ion-toggle.cjs.entry.js +41 -9
- package/dist/cjs/{ionic-global-d9a8bb5b.js → ionic-global-acb665ad.js} +3 -13
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-cf40433b.js → ios.transition-f970164c.js} +5 -5
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-ededf99f.js → md.transition-aa8820dd.js} +5 -5
- package/dist/cjs/{notch-controller-d69150f5.js → notch-controller-58d2e557.js} +1 -1
- package/dist/cjs/{overlays-aa669eb8.js → overlays-737576a2.js} +5 -5
- package/dist/cjs/{status-tap-37681226.js → status-tap-08d1ac81.js} +5 -4
- package/dist/cjs/{swipe-back-f38a434a.js → swipe-back-5c0003bd.js} +1 -1
- package/dist/collection/components/alert/alert.js +34 -4
- package/dist/collection/components/checkbox/checkbox.ios.css +52 -15
- package/dist/collection/components/checkbox/checkbox.js +90 -4
- package/dist/collection/components/checkbox/checkbox.md.css +52 -15
- package/dist/collection/components/input/input.ios.css +3 -2
- package/dist/collection/components/input/input.js +18 -4
- package/dist/collection/components/input/input.md.css +7 -2
- 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 +2 -2
- package/dist/collection/components/list-header/list-header.js +2 -2
- package/dist/collection/components/loading/loading.js +2 -2
- package/dist/collection/components/menu/menu.js +2 -2
- 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/animations/ios.enter.js +50 -4
- package/dist/collection/components/modal/animations/ios.leave.js +24 -2
- package/dist/collection/components/modal/animations/md.enter.js +52 -5
- package/dist/collection/components/modal/animations/md.leave.js +26 -3
- package/dist/collection/components/modal/animations/sheet.js +11 -2
- package/dist/collection/components/modal/gestures/sheet.js +108 -12
- package/dist/collection/components/modal/modal.ios.css +16 -0
- package/dist/collection/components/modal/modal.js +32 -7
- package/dist/collection/components/modal/modal.md.css +6 -0
- 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/picker-column-option/picker-column-option.js +2 -2
- package/dist/collection/components/picker-legacy/picker.js +2 -2
- package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
- package/dist/collection/components/popover/popover.js +2 -2
- package/dist/collection/components/progress-bar/progress-bar.js +1 -1
- package/dist/collection/components/radio/radio.js +3 -3
- package/dist/collection/components/radio-group/radio-group.ios.css +205 -0
- package/dist/collection/components/radio-group/radio-group.js +72 -1
- package/dist/collection/components/radio-group/radio-group.md.css +205 -0
- package/dist/collection/components/range/range.js +25 -6
- package/dist/collection/components/refresher/refresher.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/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 +2 -2
- package/dist/collection/components/segment-button/segment-button.js +40 -9
- package/dist/collection/components/segment-content/segment-content.js +1 -1
- package/dist/collection/components/segment-view/segment-view.js +2 -2
- package/dist/collection/components/select/select.ios.css +59 -0
- package/dist/collection/components/select/select.js +136 -13
- package/dist/collection/components/select/select.md.css +61 -0
- package/dist/collection/components/select-modal/select-modal.js +1 -1
- package/dist/collection/components/select-option/select-option.js +1 -1
- package/dist/collection/components/select-popover/select-popover.js +1 -1
- 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 +2 -2
- 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/textarea.ios.css +3 -2
- package/dist/collection/components/textarea/textarea.js +17 -3
- package/dist/collection/components/textarea/textarea.md.css +7 -2
- package/dist/collection/components/thumbnail/thumbnail.js +1 -1
- package/dist/collection/components/title/title.js +2 -2
- package/dist/collection/components/toast/toast.js +2 -2
- package/dist/collection/components/toggle/toggle.ios.css +52 -15
- package/dist/collection/components/toggle/toggle.js +91 -4
- package/dist/collection/components/toggle/toggle.md.css +52 -15
- package/dist/collection/components/toolbar/toolbar.js +6 -2
- package/dist/collection/global/ionic-global.js +1 -12
- package/dist/collection/utils/floating-point/index.js +5 -0
- package/dist/collection/utils/helpers.js +16 -28
- package/dist/collection/utils/logging/index.js +10 -3
- package/dist/collection/utils/platform.js +2 -1
- package/dist/collection/utils/test/platform.utils.js +1 -1
- package/dist/docs.json +383 -2
- package/dist/esm/{app-globals-5dbb61a5.js → app-globals-7b6cbf1a.js} +1 -1
- package/dist/esm/{button-active-f6503382.js → button-active-90f1dbc4.js} +1 -1
- package/dist/esm/{data-ae11fd43.js → data-174ad5e0.js} +1 -1
- package/dist/esm/{framework-delegate-63d1a679.js → framework-delegate-c7d92b77.js} +1 -1
- package/dist/esm/{hardware-back-button-06ef3c3e.js → hardware-back-button-864101a3.js} +2 -2
- package/dist/esm/{helpers-da915de8.js → helpers-e48b0397.js} +17 -29
- package/dist/esm/{index-28849c61.js → index-527b9e34.js} +1 -4
- package/dist/esm/{index-9b0d46f4.js → index-738d7504.js} +11 -3
- package/dist/esm/{index-79b30591.js → index-8222b29f.js} +1 -1
- package/dist/esm/{index-5cc724f3.js → index-933ca126.js} +2 -2
- package/dist/esm/{index-3ad7f18b.js → index-a313df53.js} +6 -6
- package/dist/esm/{index-24b48b06.js → index-c63afbe6.js} +4 -4
- package/dist/esm/index.js +11 -11
- package/dist/esm/{input-shims-0314bbe5.js → input-shims-3070628a.js} +5 -3
- package/dist/esm/{input.utils-09c71bc7.js → input.utils-926c04a8.js} +2 -2
- package/dist/esm/ion-accordion_2.entry.js +4 -4
- package/dist/esm/ion-action-sheet.entry.js +8 -8
- package/dist/esm/ion-alert.entry.js +38 -12
- package/dist/esm/ion-app_8.entry.js +18 -18
- package/dist/esm/ion-avatar_3.entry.js +3 -3
- package/dist/esm/ion-back-button.entry.js +3 -3
- package/dist/esm/ion-backdrop.entry.js +2 -2
- package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
- package/dist/esm/ion-button_2.entry.js +4 -4
- package/dist/esm/ion-card_5.entry.js +3 -3
- package/dist/esm/ion-checkbox.entry.js +40 -9
- package/dist/esm/ion-chip.entry.js +2 -2
- package/dist/esm/ion-col_3.entry.js +3 -3
- package/dist/esm/ion-datetime-button.entry.js +5 -5
- package/dist/esm/ion-datetime_3.entry.js +12 -12
- package/dist/esm/ion-fab_3.entry.js +3 -3
- package/dist/esm/ion-img.entry.js +3 -3
- package/dist/esm/ion-infinite-scroll_2.entry.js +5 -5
- package/dist/esm/ion-input-password-toggle.entry.js +3 -3
- package/dist/esm/ion-input.entry.js +25 -13
- package/dist/esm/ion-item-option_3.entry.js +9 -9
- package/dist/esm/ion-item_8.entry.js +14 -14
- package/dist/esm/ion-loading.entry.js +9 -9
- package/dist/esm/ion-menu_3.entry.js +14 -14
- package/dist/esm/ion-modal.entry.js +294 -44
- package/dist/esm/ion-nav_2.entry.js +9 -9
- package/dist/esm/ion-picker-column-option.entry.js +5 -5
- package/dist/esm/ion-picker-column.entry.js +3 -3
- package/dist/esm/ion-picker.entry.js +2 -2
- package/dist/esm/ion-popover.entry.js +10 -10
- package/dist/esm/ion-progress-bar.entry.js +4 -4
- package/dist/esm/ion-radio_2.entry.js +42 -7
- package/dist/esm/ion-range.entry.js +31 -10
- package/dist/esm/ion-refresher_2.entry.js +7 -7
- package/dist/esm/ion-reorder_2.entry.js +7 -7
- package/dist/esm/ion-ripple-effect.entry.js +3 -3
- package/dist/esm/ion-route_4.entry.js +5 -5
- package/dist/esm/ion-searchbar.entry.js +7 -7
- package/dist/esm/ion-segment-content.entry.js +2 -2
- package/dist/esm/ion-segment-view.entry.js +3 -3
- package/dist/esm/ion-segment_2.entry.js +44 -13
- package/dist/esm/ion-select-modal.entry.js +8 -8
- package/dist/esm/ion-select_3.entry.js +93 -25
- package/dist/esm/ion-spinner.entry.js +3 -3
- package/dist/esm/ion-split-pane.entry.js +4 -4
- package/dist/esm/ion-tab-bar_2.entry.js +7 -7
- package/dist/esm/ion-tab_2.entry.js +6 -6
- package/dist/esm/ion-text.entry.js +4 -4
- package/dist/esm/ion-textarea.entry.js +24 -12
- package/dist/esm/ion-toast.entry.js +9 -9
- package/dist/esm/ion-toggle.entry.js +41 -9
- package/dist/esm/{ionic-global-c81d82ab.js → ionic-global-ca86cf32.js} +3 -13
- package/dist/esm/ionic.js +5 -5
- package/dist/esm/{ios.transition-4ee1a3af.js → ios.transition-5fe4d6c8.js} +5 -5
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-5106a0d2.js → md.transition-3d0d3730.js} +5 -5
- package/dist/esm/{notch-controller-55b09e11.js → notch-controller-381a5334.js} +1 -1
- package/dist/esm/{overlays-e7b9d6d9.js → overlays-7579a420.js} +5 -5
- package/dist/esm/{status-tap-f472b09f.js → status-tap-6367b913.js} +5 -4
- package/dist/esm/{swipe-back-b613d7db.js → swipe-back-326faa1c.js} +1 -1
- package/dist/esm-es5/app-globals-7b6cbf1a.js +4 -0
- package/dist/esm-es5/{button-active-f6503382.js → button-active-90f1dbc4.js} +1 -1
- package/dist/esm-es5/{data-ae11fd43.js → data-174ad5e0.js} +1 -1
- package/dist/esm-es5/{framework-delegate-63d1a679.js → framework-delegate-c7d92b77.js} +1 -1
- package/dist/esm-es5/{hardware-back-button-06ef3c3e.js → hardware-back-button-864101a3.js} +1 -1
- package/dist/esm-es5/helpers-e48b0397.js +4 -0
- package/dist/esm-es5/index-527b9e34.js +5 -0
- package/dist/esm-es5/index-738d7504.js +4 -0
- package/dist/esm-es5/{index-79b30591.js → index-8222b29f.js} +1 -1
- package/dist/esm-es5/{index-5cc724f3.js → index-933ca126.js} +1 -1
- package/dist/esm-es5/{index-3ad7f18b.js → index-a313df53.js} +1 -1
- package/dist/esm-es5/{index-24b48b06.js → index-c63afbe6.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/input-shims-3070628a.js +4 -0
- package/dist/esm-es5/{input.utils-09c71bc7.js → input.utils-926c04a8.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-password-toggle.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-option.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column.entry.js +1 -1
- package/dist/esm-es5/ion-picker.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-content.entry.js +1 -1
- package/dist/esm-es5/ion-segment-view.entry.js +1 -1
- package/dist/esm-es5/ion-segment_2.entry.js +1 -1
- package/dist/esm-es5/ion-select-modal.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-ca86cf32.js +4 -0
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/{ios.transition-4ee1a3af.js → ios.transition-5fe4d6c8.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-3d0d3730.js +4 -0
- package/dist/esm-es5/{notch-controller-55b09e11.js → notch-controller-381a5334.js} +1 -1
- package/dist/esm-es5/{overlays-e7b9d6d9.js → overlays-7579a420.js} +1 -1
- package/dist/esm-es5/status-tap-6367b913.js +4 -0
- package/dist/esm-es5/{swipe-back-b613d7db.js → swipe-back-326faa1c.js} +1 -1
- package/dist/html.html-data.json +48 -0
- 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-58d5df0c.system.entry.js → p-023e8017.system.entry.js} +1 -1
- package/dist/ionic/{p-f9a53abb.system.js → p-042d5353.system.js} +1 -1
- package/dist/ionic/p-060e4551.js +4 -0
- package/dist/ionic/p-0749768d.entry.js +4 -0
- package/dist/ionic/p-094c82d7.entry.js +4 -0
- package/dist/ionic/{p-7458862e.system.entry.js → p-0adb6909.system.entry.js} +1 -1
- package/dist/ionic/{p-508d024a.entry.js → p-0be8a0b5.entry.js} +1 -1
- package/dist/ionic/{p-2507278c.system.entry.js → p-0bedc891.system.entry.js} +2 -2
- package/dist/ionic/{p-63b0abde.system.entry.js → p-0c9b8240.system.entry.js} +1 -1
- package/dist/ionic/p-0ec5b7cf.system.js +4 -0
- package/dist/ionic/{p-7ed1657c.system.entry.js → p-1164ff6b.system.entry.js} +1 -1
- package/dist/ionic/p-13886789.entry.js +4 -0
- package/dist/ionic/p-143ff664.system.entry.js +4 -0
- package/dist/ionic/p-18f9b6d5.entry.js +4 -0
- package/dist/ionic/{p-62af944c.entry.js → p-19c32a76.entry.js} +1 -1
- package/dist/ionic/{p-e4f69534.system.entry.js → p-1a9613bf.system.entry.js} +1 -1
- package/dist/ionic/{p-f687573e.system.js → p-1bf5ec17.system.js} +1 -1
- package/dist/ionic/{p-5fce0c0b.system.entry.js → p-1c1d781d.system.entry.js} +1 -1
- package/dist/ionic/p-1d2844a5.system.entry.js +4 -0
- package/dist/ionic/p-1d98a7f1.entry.js +4 -0
- package/dist/ionic/p-1f837356.entry.js +4 -0
- package/dist/ionic/p-2027221d.js +4 -0
- package/dist/ionic/{p-69066a53.js → p-21891ead.js} +1 -1
- package/dist/ionic/{p-d743e981.js → p-22bc235f.js} +1 -1
- package/dist/ionic/{p-a4565eb5.system.js → p-24ae7b33.system.js} +1 -1
- package/dist/ionic/{p-184fbc9e.system.js → p-294271c7.system.js} +1 -1
- package/dist/ionic/p-297d6806.system.js +4 -0
- package/dist/ionic/p-29a5b4e4.entry.js +4 -0
- package/dist/ionic/{p-01186920.system.entry.js → p-2ab4a324.system.entry.js} +1 -1
- package/dist/ionic/{p-ffd131f9.system.entry.js → p-2b59470f.system.entry.js} +1 -1
- package/dist/ionic/{p-9e33104d.entry.js → p-2ee9a2c6.entry.js} +1 -1
- package/dist/ionic/p-2fa5a4b1.entry.js +4 -0
- package/dist/ionic/{p-e7ed4a7f.system.js → p-3479f51b.system.js} +1 -1
- package/dist/ionic/{p-afecb188.entry.js → p-35f14792.entry.js} +1 -1
- package/dist/ionic/{p-7ddc46c3.system.entry.js → p-37a438ad.system.entry.js} +2 -2
- package/dist/ionic/{p-937a7e21.entry.js → p-3af7b907.entry.js} +1 -1
- package/dist/ionic/{p-c449820c.system.js → p-3bd5fedc.system.js} +1 -1
- package/dist/ionic/{p-d18ab582.system.entry.js → p-3be7cdeb.system.entry.js} +2 -2
- package/dist/ionic/{p-a15ddedb.system.js → p-3e86b4fa.system.js} +1 -1
- package/dist/ionic/p-3f4327f7.js +4 -0
- package/dist/ionic/{p-982315a6.entry.js → p-42f6e75c.entry.js} +1 -1
- package/dist/ionic/{p-5823babc.system.entry.js → p-4470f87b.system.entry.js} +2 -2
- package/dist/ionic/p-4493c1ac.entry.js +4 -0
- package/dist/ionic/{p-8635f5e6.system.js → p-44e168f3.system.js} +1 -1
- package/dist/ionic/{p-c29f8157.system.entry.js → p-4630688e.system.entry.js} +1 -1
- package/dist/ionic/{p-98231c01.system.entry.js → p-472c7e08.system.entry.js} +1 -1
- package/dist/ionic/p-4888cb66.system.entry.js +4 -0
- package/dist/ionic/{p-2e46590d.system.entry.js → p-491de063.system.entry.js} +1 -1
- package/dist/ionic/{p-985a7e17.system.entry.js → p-49cb79a1.system.entry.js} +1 -1
- package/dist/ionic/{p-d6841eac.js → p-4c44d04c.js} +1 -1
- package/dist/ionic/p-4c94580e.js +4 -0
- package/dist/ionic/{p-1e010627.system.entry.js → p-4d0190ad.system.entry.js} +2 -2
- package/dist/ionic/{p-bb0db172.entry.js → p-50f38461.entry.js} +1 -1
- package/dist/ionic/{p-0c06e09b.system.js → p-51c363e7.system.js} +1 -1
- package/dist/ionic/{p-f1acf541.system.entry.js → p-524ad57e.system.entry.js} +1 -1
- package/dist/ionic/{p-a61cba41.entry.js → p-54893ae3.entry.js} +1 -1
- package/dist/ionic/p-54e9620f.js +4 -0
- package/dist/ionic/p-58c482af.entry.js +4 -0
- package/dist/ionic/p-597ff9af.js +4 -0
- package/dist/ionic/{p-5da94421.system.js → p-5eb6f582.system.js} +1 -1
- package/dist/ionic/{p-15e76dd1.entry.js → p-5f4ff20a.entry.js} +1 -1
- package/dist/ionic/{p-fbf284c7.entry.js → p-5f8cd560.entry.js} +1 -1
- package/dist/ionic/p-606887b7.system.entry.js +4 -0
- package/dist/ionic/{p-bdad26e3.entry.js → p-61e794fb.entry.js} +1 -1
- package/dist/ionic/p-66a5d6a8.js +5 -0
- package/dist/ionic/p-67163d4a.entry.js +4 -0
- package/dist/ionic/p-6797c66e.system.js +4 -0
- package/dist/ionic/p-6bb846d3.entry.js +4 -0
- package/dist/ionic/{p-d7aa6b00.entry.js → p-6e24cf82.entry.js} +1 -1
- package/dist/ionic/p-72e6a9c6.entry.js +4 -0
- package/dist/ionic/{p-5b932840.entry.js → p-747f9517.entry.js} +1 -1
- package/dist/ionic/{p-9ea607bd.system.js → p-77991411.system.js} +2 -2
- package/dist/ionic/{p-9f3008d4.system.js → p-7cc33a9a.system.js} +1 -1
- package/dist/ionic/{p-f3102647.system.entry.js → p-7e3b5638.system.entry.js} +1 -1
- package/dist/ionic/p-7f39653f.entry.js +4 -0
- package/dist/ionic/{p-98ff6b32.entry.js → p-7ff4f502.entry.js} +1 -1
- package/dist/ionic/p-81474833.system.entry.js +4 -0
- package/dist/ionic/{p-4439fc2a.entry.js → p-838cc359.entry.js} +1 -1
- package/dist/ionic/{p-52d7a191.entry.js → p-85f6070f.entry.js} +1 -1
- package/dist/ionic/{p-e4ee80be.system.entry.js → p-888d383b.system.entry.js} +1 -1
- package/dist/ionic/{p-da074ff7.entry.js → p-8b1c1fd7.entry.js} +1 -1
- package/dist/ionic/{p-32d44024.system.entry.js → p-8deac7df.system.entry.js} +1 -1
- package/dist/ionic/p-8fc426e2.entry.js +4 -0
- package/dist/ionic/p-959cf042.system.entry.js +4 -0
- package/dist/ionic/{p-17a9ca63.system.entry.js → p-96450929.system.entry.js} +2 -2
- package/dist/ionic/{p-19ea7bff.system.js → p-9a2ff5ea.system.js} +1 -1
- package/dist/ionic/p-9a5420dd.js +4 -0
- package/dist/ionic/{p-ecceeb90.js → p-9af7f110.js} +1 -1
- package/dist/ionic/{p-6d32975a.entry.js → p-9b069739.entry.js} +1 -1
- package/dist/ionic/{p-ca065903.system.entry.js → p-9df36075.system.entry.js} +1 -1
- package/dist/ionic/p-9e51f822.js +4 -0
- package/dist/ionic/{p-372ae7f4.system.js → p-a4866e3e.system.js} +1 -1
- package/dist/ionic/{p-95775830.entry.js → p-a520973b.entry.js} +1 -1
- package/dist/ionic/{p-17474161.system.js → p-a587b2ae.system.js} +1 -1
- package/dist/ionic/{p-cac0e0b3.system.entry.js → p-a63b345e.system.entry.js} +1 -1
- package/dist/ionic/{p-3c8e5c23.system.js → p-a6625de8.system.js} +1 -1
- package/dist/ionic/{p-6416c34c.system.entry.js → p-a6df5168.system.entry.js} +1 -1
- package/dist/ionic/p-a9f2c0a7.entry.js +4 -0
- package/dist/ionic/{p-73dc4950.entry.js → p-ab7337e1.entry.js} +1 -1
- package/dist/ionic/{p-ed75fcfb.system.entry.js → p-ac58d726.system.entry.js} +1 -1
- package/dist/ionic/p-ace2d2be.entry.js +4 -0
- package/dist/ionic/{p-efaffe74.entry.js → p-ada878ce.entry.js} +1 -1
- package/dist/ionic/p-b055d618.entry.js +4 -0
- package/dist/ionic/p-b0e53bc7.entry.js +4 -0
- package/dist/ionic/{p-2799c6d3.system.entry.js → p-b2296998.system.entry.js} +1 -1
- package/dist/ionic/{p-fca6ef5f.system.entry.js → p-b2ee0628.system.entry.js} +1 -1
- package/dist/ionic/{p-9fa07aec.entry.js → p-b6174297.entry.js} +1 -1
- package/dist/ionic/{p-c41ac815.entry.js → p-b85d199c.entry.js} +1 -1
- package/dist/ionic/p-b9ea58ef.js +4 -0
- package/dist/ionic/{p-14e159ea.system.entry.js → p-b9eb1465.system.entry.js} +1 -1
- package/dist/ionic/p-b9f2e353.entry.js +4 -0
- package/dist/ionic/p-bbc6db8c.entry.js +4 -0
- package/dist/ionic/p-bf64af90.system.js +4 -0
- package/dist/ionic/{p-33a8a71b.entry.js → p-c005cc37.entry.js} +1 -1
- package/dist/ionic/{p-45693d7e.entry.js → p-c25c0ba4.entry.js} +1 -1
- package/dist/ionic/p-c5b5f44a.entry.js +4 -0
- package/dist/ionic/{p-2172893e.system.entry.js → p-c6a20407.system.entry.js} +1 -1
- package/dist/ionic/{p-1046866e.system.entry.js → p-c8331397.system.entry.js} +1 -1
- package/dist/ionic/{p-34b11c24.js → p-c8402249.js} +1 -1
- package/dist/ionic/{p-61e3f887.entry.js → p-c8bf9ba7.entry.js} +1 -1
- package/dist/ionic/{p-72812e99.js → p-ceaea4ce.js} +1 -1
- package/dist/ionic/{p-1e67b266.system.entry.js → p-d37fdc68.system.entry.js} +1 -1
- package/dist/ionic/{p-0aa833fb.system.js → p-d7032956.system.js} +1 -1
- package/dist/ionic/p-d8c9d5ac.system.entry.js +4 -0
- package/dist/ionic/{p-2b838f86.system.entry.js → p-daf1e8ec.system.entry.js} +1 -1
- package/dist/ionic/{p-2bd0ae94.system.entry.js → p-def7a8bd.system.entry.js} +1 -1
- package/dist/ionic/p-e00b72ce.js +4 -0
- package/dist/ionic/{p-96cc4814.js → p-e0a05506.js} +1 -1
- package/dist/ionic/p-e0c0218f.system.entry.js +4 -0
- package/dist/ionic/{p-6499df44.system.entry.js → p-e0c43e11.system.entry.js} +1 -1
- package/dist/ionic/{p-2abae1cc.system.entry.js → p-e4683bfd.system.entry.js} +1 -1
- package/dist/ionic/{p-567de071.system.entry.js → p-e5708e5d.system.entry.js} +1 -1
- package/dist/ionic/{p-12a722b8.system.entry.js → p-e5c27d9f.system.entry.js} +1 -1
- package/dist/ionic/{p-06e58c4e.js → p-e7309bfa.js} +1 -1
- package/dist/ionic/p-ed768b77.entry.js +4 -0
- package/dist/ionic/p-eec4b772.entry.js +4 -0
- package/dist/ionic/p-eeee3990.system.entry.js +4 -0
- package/dist/ionic/p-efa0f3f5.entry.js +4 -0
- package/dist/ionic/p-f02e9382.system.entry.js +4 -0
- package/dist/ionic/p-f11a9436.system.js +5 -0
- package/dist/ionic/p-f201b53a.system.js +4 -0
- package/dist/ionic/{p-3cc276f4.js → p-f554845e.js} +1 -1
- package/dist/ionic/{p-424eb140.system.entry.js → p-f6bb9be7.system.entry.js} +1 -1
- package/dist/ionic/{p-d60342e3.js → p-f7ce606e.js} +1 -1
- package/dist/ionic/{p-1fe02220.system.entry.js → p-f94b2f2f.system.entry.js} +1 -1
- package/dist/ionic/{p-797eeea8.system.entry.js → p-ff4a1ba0.system.entry.js} +1 -1
- package/dist/types/components/checkbox/checkbox.d.ts +25 -0
- package/dist/types/components/input/input.d.ts +8 -0
- package/dist/types/components/modal/animations/sheet.d.ts +1 -0
- package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
- package/dist/types/components/modal/modal-interface.d.ts +1 -0
- package/dist/types/components/modal/modal.d.ts +14 -0
- package/dist/types/components/radio-group/radio-group.d.ts +15 -0
- package/dist/types/components/range/range.d.ts +3 -2
- package/dist/types/components/segment-button/segment-button.d.ts +2 -1
- package/dist/types/components/select/select.d.ts +29 -0
- package/dist/types/components/textarea/textarea.d.ts +8 -0
- package/dist/types/components/toggle/toggle.d.ts +25 -0
- package/dist/types/components/toolbar/toolbar.d.ts +4 -0
- package/dist/types/components.d.ts +96 -0
- package/dist/types/utils/config.d.ts +9 -3
- package/dist/types/utils/helpers.d.ts +5 -0
- package/dist/types/utils/logging/index.d.ts +13 -1
- package/dist/types/utils/native/capacitor.d.ts +7 -1
- package/dist/types/utils/test/platform.utils.d.ts +1 -1
- package/hydrate/index.js +739 -203
- package/hydrate/index.mjs +739 -203
- package/package.json +11 -11
- package/dist/esm-es5/app-globals-5dbb61a5.js +0 -4
- package/dist/esm-es5/helpers-da915de8.js +0 -4
- package/dist/esm-es5/index-28849c61.js +0 -5
- package/dist/esm-es5/index-9b0d46f4.js +0 -4
- package/dist/esm-es5/input-shims-0314bbe5.js +0 -4
- package/dist/esm-es5/ionic-global-c81d82ab.js +0 -4
- package/dist/esm-es5/md.transition-5106a0d2.js +0 -4
- package/dist/esm-es5/status-tap-f472b09f.js +0 -4
- package/dist/ionic/p-0303d0f8.js +0 -4
- package/dist/ionic/p-04909654.entry.js +0 -4
- package/dist/ionic/p-0574e87e.js +0 -4
- package/dist/ionic/p-06fee233.js +0 -4
- package/dist/ionic/p-081a4ce4.entry.js +0 -4
- package/dist/ionic/p-12c45a7c.entry.js +0 -4
- package/dist/ionic/p-14be4015.entry.js +0 -4
- package/dist/ionic/p-16188af7.entry.js +0 -4
- package/dist/ionic/p-16799667.system.entry.js +0 -4
- package/dist/ionic/p-16bfb979.system.entry.js +0 -4
- package/dist/ionic/p-19ec4f42.entry.js +0 -4
- package/dist/ionic/p-21e5e7e4.js +0 -4
- package/dist/ionic/p-25180df3.system.js +0 -5
- package/dist/ionic/p-2690b1de.js +0 -4
- package/dist/ionic/p-2b9b78c7.entry.js +0 -4
- package/dist/ionic/p-2fc0dafe.entry.js +0 -4
- package/dist/ionic/p-322c5fb4.system.js +0 -4
- package/dist/ionic/p-37cb43bd.system.entry.js +0 -4
- package/dist/ionic/p-3ad285e3.system.js +0 -4
- package/dist/ionic/p-404aede0.system.entry.js +0 -4
- package/dist/ionic/p-49a0e74c.entry.js +0 -4
- package/dist/ionic/p-4ec778aa.entry.js +0 -4
- package/dist/ionic/p-51796b2d.entry.js +0 -4
- package/dist/ionic/p-5ab1b709.entry.js +0 -4
- package/dist/ionic/p-69666e8a.system.entry.js +0 -4
- package/dist/ionic/p-6b280620.entry.js +0 -4
- package/dist/ionic/p-6d6cedc5.entry.js +0 -4
- package/dist/ionic/p-7b9a2b23.entry.js +0 -4
- package/dist/ionic/p-88e63c7d.js +0 -4
- package/dist/ionic/p-908d6080.entry.js +0 -4
- package/dist/ionic/p-942b5e13.entry.js +0 -4
- package/dist/ionic/p-9df2c6fb.entry.js +0 -4
- package/dist/ionic/p-a43467d8.entry.js +0 -4
- package/dist/ionic/p-a69b9fc5.system.js +0 -4
- package/dist/ionic/p-b2272f51.system.entry.js +0 -4
- package/dist/ionic/p-b335ffed.system.entry.js +0 -4
- package/dist/ionic/p-b51e4004.js +0 -4
- package/dist/ionic/p-b79ba17c.entry.js +0 -4
- package/dist/ionic/p-b7af48c0.js +0 -4
- package/dist/ionic/p-b82d4cab.js +0 -4
- package/dist/ionic/p-b9d7015f.entry.js +0 -4
- package/dist/ionic/p-bc36ad98.system.entry.js +0 -4
- package/dist/ionic/p-c4b53b16.system.entry.js +0 -4
- package/dist/ionic/p-c9f3a539.entry.js +0 -4
- package/dist/ionic/p-cdc83025.entry.js +0 -4
- package/dist/ionic/p-d836d43e.js +0 -5
- package/dist/ionic/p-de930745.entry.js +0 -4
- package/dist/ionic/p-dfb78785.system.js +0 -4
- package/dist/ionic/p-e563a35c.entry.js +0 -4
- package/dist/ionic/p-e6635685.js +0 -4
- package/dist/ionic/p-ebf042e0.system.entry.js +0 -4
- package/dist/ionic/p-ff4b7e40.system.js +0 -4
|
@@ -5,23 +5,23 @@
|
|
|
5
5
|
|
|
6
6
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
7
7
|
|
|
8
|
-
const index$3 = require('./index-
|
|
9
|
-
const index$2 = require('./index-
|
|
10
|
-
const frameworkDelegate = require('./framework-delegate-
|
|
11
|
-
const helpers = require('./helpers-
|
|
8
|
+
const index$3 = require('./index-2e236a04.js');
|
|
9
|
+
const index$2 = require('./index-9b945a2d.js');
|
|
10
|
+
const frameworkDelegate = require('./framework-delegate-11b0ba2f.js');
|
|
11
|
+
const helpers = require('./helpers-d0dfbb50.js');
|
|
12
12
|
const lockController = require('./lock-controller-6585a42a.js');
|
|
13
|
-
const index$4 = require('./index-
|
|
13
|
+
const index$4 = require('./index-48b2a28e.js');
|
|
14
14
|
const capacitor = require('./capacitor-c04564bf.js');
|
|
15
|
-
const overlays = require('./overlays-
|
|
15
|
+
const overlays = require('./overlays-737576a2.js');
|
|
16
16
|
const theme = require('./theme-d1c573d2.js');
|
|
17
|
-
const index$5 = require('./index-
|
|
18
|
-
const ionicGlobal = require('./ionic-global-
|
|
17
|
+
const index$5 = require('./index-f68a486a.js');
|
|
18
|
+
const ionicGlobal = require('./ionic-global-acb665ad.js');
|
|
19
19
|
const keyboard = require('./keyboard-af1bb365.js');
|
|
20
20
|
const animation = require('./animation-b4fdf128.js');
|
|
21
21
|
const cubicBezier = require('./cubic-bezier-f2dccc53.js');
|
|
22
22
|
const index$1 = require('./index-ee07ed59.js');
|
|
23
23
|
const index = require('./index-c8d52405.js');
|
|
24
|
-
require('./hardware-back-button-
|
|
24
|
+
require('./hardware-back-button-5a99001f.js');
|
|
25
25
|
require('./gesture-controller-9436f482.js');
|
|
26
26
|
require('./keyboard-0272231f.js');
|
|
27
27
|
|
|
@@ -506,7 +506,7 @@ const computeDuration = (remaining, velocity) => {
|
|
|
506
506
|
};
|
|
507
507
|
|
|
508
508
|
const createSheetEnterAnimation = (opts) => {
|
|
509
|
-
const { currentBreakpoint, backdropBreakpoint } = opts;
|
|
509
|
+
const { currentBreakpoint, backdropBreakpoint, expandToScroll } = opts;
|
|
510
510
|
/**
|
|
511
511
|
* If the backdropBreakpoint is undefined, then the backdrop
|
|
512
512
|
* should always fade in. If the backdropBreakpoint came before the
|
|
@@ -526,7 +526,16 @@ const createSheetEnterAnimation = (opts) => {
|
|
|
526
526
|
{ offset: 0, opacity: 1, transform: 'translateY(100%)' },
|
|
527
527
|
{ offset: 1, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
|
|
528
528
|
]);
|
|
529
|
-
|
|
529
|
+
/**
|
|
530
|
+
* This allows the content to be scrollable at any breakpoint.
|
|
531
|
+
*/
|
|
532
|
+
const contentAnimation = !expandToScroll
|
|
533
|
+
? animation.createAnimation('contentAnimation').keyframes([
|
|
534
|
+
{ offset: 0, opacity: 1, maxHeight: `${(1 - currentBreakpoint) * 100}%` },
|
|
535
|
+
{ offset: 1, opacity: 1, maxHeight: `${currentBreakpoint * 100}%` },
|
|
536
|
+
])
|
|
537
|
+
: undefined;
|
|
538
|
+
return { wrapperAnimation, backdropAnimation, contentAnimation };
|
|
530
539
|
};
|
|
531
540
|
const createSheetLeaveAnimation = (opts) => {
|
|
532
541
|
const { currentBreakpoint, backdropBreakpoint } = opts;
|
|
@@ -561,22 +570,68 @@ const createEnterAnimation$1 = () => {
|
|
|
561
570
|
})
|
|
562
571
|
.afterClearStyles(['pointer-events']);
|
|
563
572
|
const wrapperAnimation = animation.createAnimation().fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');
|
|
564
|
-
return { backdropAnimation, wrapperAnimation };
|
|
573
|
+
return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
|
|
565
574
|
};
|
|
566
575
|
/**
|
|
567
576
|
* iOS Modal Enter Animation for the Card presentation style
|
|
568
577
|
*/
|
|
569
578
|
const iosEnterAnimation = (baseEl, opts) => {
|
|
570
|
-
const { presentingEl, currentBreakpoint } = opts;
|
|
579
|
+
const { presentingEl, currentBreakpoint, expandToScroll } = opts;
|
|
571
580
|
const root = helpers.getElementRoot(baseEl);
|
|
572
|
-
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
|
|
581
|
+
const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
|
|
573
582
|
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
|
574
583
|
wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });
|
|
584
|
+
// The content animation is only added if scrolling is enabled for
|
|
585
|
+
// all the breakpoints.
|
|
586
|
+
!expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
|
|
575
587
|
const baseAnimation = animation.createAnimation('entering-base')
|
|
576
588
|
.addElement(baseEl)
|
|
577
589
|
.easing('cubic-bezier(0.32,0.72,0,1)')
|
|
578
590
|
.duration(500)
|
|
579
|
-
.addAnimation(wrapperAnimation)
|
|
591
|
+
.addAnimation([wrapperAnimation])
|
|
592
|
+
.beforeAddWrite(() => {
|
|
593
|
+
if (expandToScroll) {
|
|
594
|
+
// Scroll can only be done when the modal is fully expanded.
|
|
595
|
+
return;
|
|
596
|
+
}
|
|
597
|
+
/**
|
|
598
|
+
* There are some browsers that causes flickering when
|
|
599
|
+
* dragging the content when scroll is enabled at every
|
|
600
|
+
* breakpoint. This is due to the wrapper element being
|
|
601
|
+
* transformed off the screen and having a snap animation.
|
|
602
|
+
*
|
|
603
|
+
* A workaround is to clone the footer element and append
|
|
604
|
+
* it outside of the wrapper element. This way, the footer
|
|
605
|
+
* is still visible and the drag can be done without
|
|
606
|
+
* flickering. The original footer is hidden until the modal
|
|
607
|
+
* is dismissed. This maintains the animation of the footer
|
|
608
|
+
* when the modal is dismissed.
|
|
609
|
+
*
|
|
610
|
+
* The workaround needs to be done before the animation starts
|
|
611
|
+
* so there are no flickering issues.
|
|
612
|
+
*/
|
|
613
|
+
const ionFooter = baseEl.querySelector('ion-footer');
|
|
614
|
+
/**
|
|
615
|
+
* This check is needed to prevent more than one footer
|
|
616
|
+
* from being appended to the shadow root.
|
|
617
|
+
* Otherwise, iOS and MD enter animations would append
|
|
618
|
+
* the footer twice.
|
|
619
|
+
*/
|
|
620
|
+
const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
|
|
621
|
+
if (ionFooter && !ionFooterAlreadyAppended) {
|
|
622
|
+
const footerHeight = ionFooter.clientHeight;
|
|
623
|
+
const clonedFooter = ionFooter.cloneNode(true);
|
|
624
|
+
baseEl.shadowRoot.appendChild(clonedFooter);
|
|
625
|
+
ionFooter.style.setProperty('display', 'none');
|
|
626
|
+
ionFooter.setAttribute('aria-hidden', 'true');
|
|
627
|
+
// Padding is added to prevent some content from being hidden.
|
|
628
|
+
const page = baseEl.querySelector('.ion-page');
|
|
629
|
+
page.style.setProperty('padding-bottom', `${footerHeight}px`);
|
|
630
|
+
}
|
|
631
|
+
});
|
|
632
|
+
if (contentAnimation) {
|
|
633
|
+
baseAnimation.addAnimation(contentAnimation);
|
|
634
|
+
}
|
|
580
635
|
if (presentingEl) {
|
|
581
636
|
const isMobile = window.innerWidth < 768;
|
|
582
637
|
const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
|
|
@@ -654,7 +709,7 @@ const createLeaveAnimation$1 = () => {
|
|
|
654
709
|
* iOS Modal Leave Animation
|
|
655
710
|
*/
|
|
656
711
|
const iosLeaveAnimation = (baseEl, opts, duration = 500) => {
|
|
657
|
-
const { presentingEl, currentBreakpoint } = opts;
|
|
712
|
+
const { presentingEl, currentBreakpoint, expandToScroll } = opts;
|
|
658
713
|
const root = helpers.getElementRoot(baseEl);
|
|
659
714
|
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation$1();
|
|
660
715
|
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
|
@@ -663,7 +718,29 @@ const iosLeaveAnimation = (baseEl, opts, duration = 500) => {
|
|
|
663
718
|
.addElement(baseEl)
|
|
664
719
|
.easing('cubic-bezier(0.32,0.72,0,1)')
|
|
665
720
|
.duration(duration)
|
|
666
|
-
.addAnimation(wrapperAnimation)
|
|
721
|
+
.addAnimation(wrapperAnimation)
|
|
722
|
+
.beforeAddWrite(() => {
|
|
723
|
+
if (expandToScroll) {
|
|
724
|
+
// Scroll can only be done when the modal is fully expanded.
|
|
725
|
+
return;
|
|
726
|
+
}
|
|
727
|
+
/**
|
|
728
|
+
* If expandToScroll is disabled, we need to swap
|
|
729
|
+
* the visibility to the original, so the footer
|
|
730
|
+
* dismisses with the modal and doesn't stay
|
|
731
|
+
* until the modal is removed from the DOM.
|
|
732
|
+
*/
|
|
733
|
+
const ionFooter = baseEl.querySelector('ion-footer');
|
|
734
|
+
if (ionFooter) {
|
|
735
|
+
const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
|
|
736
|
+
ionFooter.style.removeProperty('display');
|
|
737
|
+
ionFooter.removeAttribute('aria-hidden');
|
|
738
|
+
clonedFooter.style.setProperty('display', 'none');
|
|
739
|
+
clonedFooter.setAttribute('aria-hidden', 'true');
|
|
740
|
+
const page = baseEl.querySelector('.ion-page');
|
|
741
|
+
page.style.removeProperty('padding-bottom');
|
|
742
|
+
}
|
|
743
|
+
});
|
|
667
744
|
const appEl = baseEl.closest('ion-app');
|
|
668
745
|
if (presentingEl && appEl) {
|
|
669
746
|
const isMobile = window.innerWidth < 768;
|
|
@@ -741,22 +818,69 @@ const createEnterAnimation = () => {
|
|
|
741
818
|
{ offset: 0, opacity: 0.01, transform: 'translateY(40px)' },
|
|
742
819
|
{ offset: 1, opacity: 1, transform: `translateY(0px)` },
|
|
743
820
|
]);
|
|
744
|
-
return { backdropAnimation, wrapperAnimation };
|
|
821
|
+
return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
|
|
745
822
|
};
|
|
746
823
|
/**
|
|
747
824
|
* Md Modal Enter Animation
|
|
748
825
|
*/
|
|
749
826
|
const mdEnterAnimation = (baseEl, opts) => {
|
|
750
|
-
const { currentBreakpoint } = opts;
|
|
827
|
+
const { currentBreakpoint, expandToScroll } = opts;
|
|
751
828
|
const root = helpers.getElementRoot(baseEl);
|
|
752
|
-
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
|
|
829
|
+
const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
|
|
753
830
|
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
|
754
831
|
wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
|
|
755
|
-
|
|
832
|
+
// The content animation is only added if scrolling is enabled for
|
|
833
|
+
// all the breakpoints.
|
|
834
|
+
expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
|
|
835
|
+
const baseAnimation = animation.createAnimation()
|
|
756
836
|
.addElement(baseEl)
|
|
757
837
|
.easing('cubic-bezier(0.36,0.66,0.04,1)')
|
|
758
838
|
.duration(280)
|
|
759
|
-
.addAnimation([backdropAnimation, wrapperAnimation])
|
|
839
|
+
.addAnimation([backdropAnimation, wrapperAnimation])
|
|
840
|
+
.beforeAddWrite(() => {
|
|
841
|
+
if (expandToScroll) {
|
|
842
|
+
// Scroll can only be done when the modal is fully expanded.
|
|
843
|
+
return;
|
|
844
|
+
}
|
|
845
|
+
/**
|
|
846
|
+
* There are some browsers that causes flickering when
|
|
847
|
+
* dragging the content when scroll is enabled at every
|
|
848
|
+
* breakpoint. This is due to the wrapper element being
|
|
849
|
+
* transformed off the screen and having a snap animation.
|
|
850
|
+
*
|
|
851
|
+
* A workaround is to clone the footer element and append
|
|
852
|
+
* it outside of the wrapper element. This way, the footer
|
|
853
|
+
* is still visible and the drag can be done without
|
|
854
|
+
* flickering. The original footer is hidden until the modal
|
|
855
|
+
* is dismissed. This maintains the animation of the footer
|
|
856
|
+
* when the modal is dismissed.
|
|
857
|
+
*
|
|
858
|
+
* The workaround needs to be done before the animation starts
|
|
859
|
+
* so there are no flickering issues.
|
|
860
|
+
*/
|
|
861
|
+
const ionFooter = baseEl.querySelector('ion-footer');
|
|
862
|
+
/**
|
|
863
|
+
* This check is needed to prevent more than one footer
|
|
864
|
+
* from being appended to the shadow root.
|
|
865
|
+
* Otherwise, iOS and MD enter animations would append
|
|
866
|
+
* the footer twice.
|
|
867
|
+
*/
|
|
868
|
+
const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
|
|
869
|
+
if (ionFooter && !ionFooterAlreadyAppended) {
|
|
870
|
+
const footerHeight = ionFooter.clientHeight;
|
|
871
|
+
const clonedFooter = ionFooter.cloneNode(true);
|
|
872
|
+
baseEl.shadowRoot.appendChild(clonedFooter);
|
|
873
|
+
ionFooter.style.setProperty('display', 'none');
|
|
874
|
+
ionFooter.setAttribute('aria-hidden', 'true');
|
|
875
|
+
// Padding is added to prevent some content from being hidden.
|
|
876
|
+
const page = baseEl.querySelector('.ion-page');
|
|
877
|
+
page.style.setProperty('padding-bottom', `${footerHeight}px`);
|
|
878
|
+
}
|
|
879
|
+
});
|
|
880
|
+
if (contentAnimation) {
|
|
881
|
+
baseAnimation.addAnimation(contentAnimation);
|
|
882
|
+
}
|
|
883
|
+
return baseAnimation;
|
|
760
884
|
};
|
|
761
885
|
|
|
762
886
|
const createLeaveAnimation = () => {
|
|
@@ -771,18 +895,41 @@ const createLeaveAnimation = () => {
|
|
|
771
895
|
* Md Modal Leave Animation
|
|
772
896
|
*/
|
|
773
897
|
const mdLeaveAnimation = (baseEl, opts) => {
|
|
774
|
-
const { currentBreakpoint } = opts;
|
|
898
|
+
const { currentBreakpoint, expandToScroll } = opts;
|
|
775
899
|
const root = helpers.getElementRoot(baseEl);
|
|
776
900
|
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation();
|
|
777
901
|
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
|
778
902
|
wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
|
|
779
|
-
|
|
903
|
+
const baseAnimation = animation.createAnimation()
|
|
780
904
|
.easing('cubic-bezier(0.47,0,0.745,0.715)')
|
|
781
905
|
.duration(200)
|
|
782
|
-
.addAnimation([backdropAnimation, wrapperAnimation])
|
|
906
|
+
.addAnimation([backdropAnimation, wrapperAnimation])
|
|
907
|
+
.beforeAddWrite(() => {
|
|
908
|
+
if (expandToScroll) {
|
|
909
|
+
// Scroll can only be done when the modal is fully expanded.
|
|
910
|
+
return;
|
|
911
|
+
}
|
|
912
|
+
/**
|
|
913
|
+
* If expandToScroll is disabled, we need to swap
|
|
914
|
+
* the visibility to the original, so the footer
|
|
915
|
+
* dismisses with the modal and doesn't stay
|
|
916
|
+
* until the modal is removed from the DOM.
|
|
917
|
+
*/
|
|
918
|
+
const ionFooter = baseEl.querySelector('ion-footer');
|
|
919
|
+
if (ionFooter) {
|
|
920
|
+
const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
|
|
921
|
+
ionFooter.style.removeProperty('display');
|
|
922
|
+
ionFooter.removeAttribute('aria-hidden');
|
|
923
|
+
clonedFooter.style.setProperty('display', 'none');
|
|
924
|
+
clonedFooter.setAttribute('aria-hidden', 'true');
|
|
925
|
+
const page = baseEl.querySelector('.ion-page');
|
|
926
|
+
page.style.removeProperty('padding-bottom');
|
|
927
|
+
}
|
|
928
|
+
});
|
|
929
|
+
return baseAnimation;
|
|
783
930
|
};
|
|
784
931
|
|
|
785
|
-
const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
|
|
932
|
+
const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
|
|
786
933
|
// Defaults for the sheet swipe animation
|
|
787
934
|
const defaultBackdrop = [
|
|
788
935
|
{ offset: 0, opacity: 'var(--backdrop-opacity)' },
|
|
@@ -799,17 +946,23 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
799
946
|
{ offset: 1, transform: 'translateY(100%)' },
|
|
800
947
|
],
|
|
801
948
|
BACKDROP_KEYFRAMES: backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop,
|
|
949
|
+
CONTENT_KEYFRAMES: [
|
|
950
|
+
{ offset: 0, maxHeight: '100%' },
|
|
951
|
+
{ offset: 1, maxHeight: '0%' },
|
|
952
|
+
],
|
|
802
953
|
};
|
|
803
954
|
const contentEl = baseEl.querySelector('ion-content');
|
|
804
955
|
const height = wrapperEl.clientHeight;
|
|
805
956
|
let currentBreakpoint = initialBreakpoint;
|
|
806
957
|
let offset = 0;
|
|
807
958
|
let canDismissBlocksGesture = false;
|
|
959
|
+
let cachedScrollEl = null;
|
|
808
960
|
const canDismissMaxStep = 0.95;
|
|
809
|
-
const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');
|
|
810
|
-
const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
|
|
811
961
|
const maxBreakpoint = breakpoints[breakpoints.length - 1];
|
|
812
962
|
const minBreakpoint = breakpoints[0];
|
|
963
|
+
const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');
|
|
964
|
+
const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
|
|
965
|
+
const contentAnimation = animation.childAnimations.find((ani) => ani.id === 'contentAnimation');
|
|
813
966
|
const enableBackdrop = () => {
|
|
814
967
|
baseEl.style.setProperty('pointer-events', 'auto');
|
|
815
968
|
backdropEl.style.setProperty('pointer-events', 'auto');
|
|
@@ -832,6 +985,31 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
832
985
|
*/
|
|
833
986
|
baseEl.classList.add(overlays.FOCUS_TRAP_DISABLE_CLASS);
|
|
834
987
|
};
|
|
988
|
+
/**
|
|
989
|
+
* Toggles the visible modal footer when `expandToScroll` is disabled.
|
|
990
|
+
* @param footer The footer to show.
|
|
991
|
+
*/
|
|
992
|
+
const swapFooterVisibility = (footer) => {
|
|
993
|
+
const originalFooter = baseEl.querySelector('ion-footer');
|
|
994
|
+
if (!originalFooter) {
|
|
995
|
+
return;
|
|
996
|
+
}
|
|
997
|
+
const clonedFooter = wrapperEl.nextElementSibling;
|
|
998
|
+
const footerToHide = footer === 'original' ? clonedFooter : originalFooter;
|
|
999
|
+
const footerToShow = footer === 'original' ? originalFooter : clonedFooter;
|
|
1000
|
+
footerToShow.style.removeProperty('display');
|
|
1001
|
+
footerToShow.removeAttribute('aria-hidden');
|
|
1002
|
+
const page = baseEl.querySelector('.ion-page');
|
|
1003
|
+
if (footer === 'original') {
|
|
1004
|
+
page.style.removeProperty('padding-bottom');
|
|
1005
|
+
}
|
|
1006
|
+
else {
|
|
1007
|
+
const pagePadding = footerToShow.clientHeight;
|
|
1008
|
+
page.style.setProperty('padding-bottom', `${pagePadding}px`);
|
|
1009
|
+
}
|
|
1010
|
+
footerToHide.style.setProperty('display', 'none');
|
|
1011
|
+
footerToHide.setAttribute('aria-hidden', 'true');
|
|
1012
|
+
};
|
|
835
1013
|
/**
|
|
836
1014
|
* After the entering animation completes,
|
|
837
1015
|
* we need to set the animation to go from
|
|
@@ -843,6 +1021,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
843
1021
|
if (wrapperAnimation && backdropAnimation) {
|
|
844
1022
|
wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
|
|
845
1023
|
backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
|
|
1024
|
+
contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
|
|
846
1025
|
animation.progressStart(true, 1 - currentBreakpoint);
|
|
847
1026
|
/**
|
|
848
1027
|
* If backdrop is not enabled, then content
|
|
@@ -859,7 +1038,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
859
1038
|
disableBackdrop();
|
|
860
1039
|
}
|
|
861
1040
|
}
|
|
862
|
-
if (contentEl && currentBreakpoint !== maxBreakpoint) {
|
|
1041
|
+
if (contentEl && currentBreakpoint !== maxBreakpoint && expandToScroll) {
|
|
863
1042
|
contentEl.scrollY = false;
|
|
864
1043
|
}
|
|
865
1044
|
const canStart = (detail) => {
|
|
@@ -873,6 +1052,14 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
873
1052
|
*/
|
|
874
1053
|
const contentEl = index$2.findClosestIonContent(detail.event.target);
|
|
875
1054
|
currentBreakpoint = getCurrentBreakpoint();
|
|
1055
|
+
/**
|
|
1056
|
+
* If `expandToScroll` is disabled, we should not allow the swipe gesture
|
|
1057
|
+
* to start if the content is not scrolled to the top.
|
|
1058
|
+
*/
|
|
1059
|
+
if (!expandToScroll && contentEl) {
|
|
1060
|
+
const scrollEl = index$2.isIonContent(contentEl) ? helpers.getElementRoot(contentEl).querySelector('.inner-scroll') : contentEl;
|
|
1061
|
+
return scrollEl.scrollTop === 0;
|
|
1062
|
+
}
|
|
876
1063
|
if (currentBreakpoint === 1 && contentEl) {
|
|
877
1064
|
/**
|
|
878
1065
|
* The modal should never swipe to close on the content with a refresher.
|
|
@@ -903,6 +1090,25 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
903
1090
|
* Remove undefined check
|
|
904
1091
|
*/
|
|
905
1092
|
canDismissBlocksGesture = baseEl.canDismiss !== undefined && baseEl.canDismiss !== true && minBreakpoint === 0;
|
|
1093
|
+
/**
|
|
1094
|
+
* Cache the scroll element reference when the gesture starts,
|
|
1095
|
+
* this allows us to avoid querying the DOM for the target in onMove,
|
|
1096
|
+
* which would impact performance significantly.
|
|
1097
|
+
*/
|
|
1098
|
+
if (!expandToScroll) {
|
|
1099
|
+
const targetEl = index$2.findClosestIonContent(detail.event.target);
|
|
1100
|
+
cachedScrollEl =
|
|
1101
|
+
targetEl && index$2.isIonContent(targetEl) ? helpers.getElementRoot(targetEl).querySelector('.inner-scroll') : targetEl;
|
|
1102
|
+
}
|
|
1103
|
+
/**
|
|
1104
|
+
* If expandToScroll is disabled, we need to swap
|
|
1105
|
+
* the footer visibility to the original, so if the modal
|
|
1106
|
+
* is dismissed, the footer dismisses with the modal
|
|
1107
|
+
* and doesn't stay on the screen after the modal is gone.
|
|
1108
|
+
*/
|
|
1109
|
+
if (!expandToScroll) {
|
|
1110
|
+
swapFooterVisibility('original');
|
|
1111
|
+
}
|
|
906
1112
|
/**
|
|
907
1113
|
* If we are pulling down, then it is possible we are pulling on the content.
|
|
908
1114
|
* We do not want scrolling to happen at the same time as the gesture.
|
|
@@ -920,6 +1126,13 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
920
1126
|
animation.progressStart(true, 1 - currentBreakpoint);
|
|
921
1127
|
};
|
|
922
1128
|
const onMove = (detail) => {
|
|
1129
|
+
/**
|
|
1130
|
+
* If `expandToScroll` is disabled, and an upwards swipe gesture is done within
|
|
1131
|
+
* the scrollable content, we should not allow the swipe gesture to continue.
|
|
1132
|
+
*/
|
|
1133
|
+
if (!expandToScroll && detail.deltaY <= 0 && cachedScrollEl) {
|
|
1134
|
+
return;
|
|
1135
|
+
}
|
|
923
1136
|
/**
|
|
924
1137
|
* If we are pulling down, then it is possible we are pulling on the content.
|
|
925
1138
|
* We do not want scrolling to happen at the same time as the gesture.
|
|
@@ -966,6 +1179,14 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
966
1179
|
animation.progressStep(offset);
|
|
967
1180
|
};
|
|
968
1181
|
const onEnd = (detail) => {
|
|
1182
|
+
/**
|
|
1183
|
+
* If expandToScroll is disabled, we should not allow the moveSheetToBreakpoint
|
|
1184
|
+
* function to be called if the user is trying to swipe content upwards and the content
|
|
1185
|
+
* is not scrolled to the top.
|
|
1186
|
+
*/
|
|
1187
|
+
if (!expandToScroll && detail.deltaY <= 0 && cachedScrollEl && cachedScrollEl.scrollTop > 0) {
|
|
1188
|
+
return;
|
|
1189
|
+
}
|
|
969
1190
|
/**
|
|
970
1191
|
* When the gesture releases, we need to determine
|
|
971
1192
|
* the closest breakpoint to snap to.
|
|
@@ -1018,6 +1239,19 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1018
1239
|
opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(snapToBreakpoint, backdropBreakpoint)})`,
|
|
1019
1240
|
},
|
|
1020
1241
|
]);
|
|
1242
|
+
if (contentAnimation) {
|
|
1243
|
+
/**
|
|
1244
|
+
* The modal content should scroll at any breakpoint when expandToScroll
|
|
1245
|
+
* is disabled. In order to do this, the content needs to be completely
|
|
1246
|
+
* viewable so scrolling can access everything. Otherwise, the default
|
|
1247
|
+
* behavior would show the content off the screen and only allow
|
|
1248
|
+
* scrolling when the sheet is fully expanded.
|
|
1249
|
+
*/
|
|
1250
|
+
contentAnimation.keyframes([
|
|
1251
|
+
{ offset: 0, maxHeight: `${(1 - breakpointOffset) * 100}%` },
|
|
1252
|
+
{ offset: 1, maxHeight: `${snapToBreakpoint * 100}%` },
|
|
1253
|
+
]);
|
|
1254
|
+
}
|
|
1021
1255
|
animation.progressStep(0);
|
|
1022
1256
|
}
|
|
1023
1257
|
/**
|
|
@@ -1025,6 +1259,14 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1025
1259
|
* snapping animation completes.
|
|
1026
1260
|
*/
|
|
1027
1261
|
gesture.enable(false);
|
|
1262
|
+
/**
|
|
1263
|
+
* If expandToScroll is disabled, we need to swap
|
|
1264
|
+
* the footer visibility to the cloned one so the footer
|
|
1265
|
+
* doesn't flicker when the sheet's height is animated.
|
|
1266
|
+
*/
|
|
1267
|
+
if (!expandToScroll && shouldRemainOpen) {
|
|
1268
|
+
swapFooterVisibility('cloned');
|
|
1269
|
+
}
|
|
1028
1270
|
if (shouldPreventDismiss) {
|
|
1029
1271
|
handleCanDismiss(baseEl, animation);
|
|
1030
1272
|
}
|
|
@@ -1032,13 +1274,13 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1032
1274
|
onDismiss();
|
|
1033
1275
|
}
|
|
1034
1276
|
/**
|
|
1035
|
-
*
|
|
1036
|
-
*
|
|
1037
|
-
*
|
|
1038
|
-
*
|
|
1039
|
-
*
|
|
1277
|
+
* Enables scrolling immediately if the sheet is about to fully expand
|
|
1278
|
+
* or if it allows scrolling at any breakpoint. Without this, there would
|
|
1279
|
+
* be a ~500ms delay while the modal animation completes, causing a
|
|
1280
|
+
* noticeable lag. Native iOS allows scrolling as soon as the gesture is
|
|
1281
|
+
* released, so we align with that behavior.
|
|
1040
1282
|
*/
|
|
1041
|
-
if (contentEl && snapToBreakpoint === breakpoints[breakpoints.length - 1]) {
|
|
1283
|
+
if (contentEl && (snapToBreakpoint === breakpoints[breakpoints.length - 1] || !expandToScroll)) {
|
|
1042
1284
|
contentEl.scrollY = true;
|
|
1043
1285
|
}
|
|
1044
1286
|
return new Promise((resolve) => {
|
|
@@ -1056,6 +1298,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1056
1298
|
helpers.raf(() => {
|
|
1057
1299
|
wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
|
|
1058
1300
|
backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
|
|
1301
|
+
contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
|
|
1059
1302
|
animation.progressStart(true, 1 - snapToBreakpoint);
|
|
1060
1303
|
currentBreakpoint = snapToBreakpoint;
|
|
1061
1304
|
onBreakpointChange(currentBreakpoint);
|
|
@@ -1108,10 +1351,10 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1108
1351
|
};
|
|
1109
1352
|
};
|
|
1110
1353
|
|
|
1111
|
-
const modalIosCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}";
|
|
1354
|
+
const modalIosCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer ion-toolbar:first-of-type{padding-top:6px}";
|
|
1112
1355
|
const IonModalIosStyle0 = modalIosCss;
|
|
1113
1356
|
|
|
1114
|
-
const modalMdCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}";
|
|
1357
|
+
const modalMdCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}";
|
|
1115
1358
|
const IonModalMdStyle0 = modalMdCss;
|
|
1116
1359
|
|
|
1117
1360
|
const Modal = class {
|
|
@@ -1180,6 +1423,7 @@ const Modal = class {
|
|
|
1180
1423
|
this.enterAnimation = undefined;
|
|
1181
1424
|
this.leaveAnimation = undefined;
|
|
1182
1425
|
this.breakpoints = undefined;
|
|
1426
|
+
this.expandToScroll = true;
|
|
1183
1427
|
this.initialBreakpoint = undefined;
|
|
1184
1428
|
this.backdropBreakpoint = 0;
|
|
1185
1429
|
this.handle = undefined;
|
|
@@ -1395,6 +1639,7 @@ const Modal = class {
|
|
|
1395
1639
|
presentingEl: presentingElement,
|
|
1396
1640
|
currentBreakpoint: this.initialBreakpoint,
|
|
1397
1641
|
backdropBreakpoint: this.backdropBreakpoint,
|
|
1642
|
+
expandToScroll: this.expandToScroll,
|
|
1398
1643
|
});
|
|
1399
1644
|
/* tslint:disable-next-line */
|
|
1400
1645
|
if (typeof window !== 'undefined') {
|
|
@@ -1445,7 +1690,10 @@ const Modal = class {
|
|
|
1445
1690
|
// should be in the DOM and referenced by now, except
|
|
1446
1691
|
// for the presenting el
|
|
1447
1692
|
const animationBuilder = this.leaveAnimation || ionicGlobal.config.get('modalLeave', iosLeaveAnimation);
|
|
1448
|
-
const ani = (this.animation = animationBuilder(el, {
|
|
1693
|
+
const ani = (this.animation = animationBuilder(el, {
|
|
1694
|
+
presentingEl: this.presentingElement,
|
|
1695
|
+
expandToScroll: this.expandToScroll,
|
|
1696
|
+
}));
|
|
1449
1697
|
const contentEl = index$2.findIonContent(el);
|
|
1450
1698
|
if (!contentEl) {
|
|
1451
1699
|
index$2.printIonContentErrorMsg(el);
|
|
@@ -1490,9 +1738,10 @@ const Modal = class {
|
|
|
1490
1738
|
presentingEl: this.presentingElement,
|
|
1491
1739
|
currentBreakpoint: initialBreakpoint,
|
|
1492
1740
|
backdropBreakpoint,
|
|
1741
|
+
expandToScroll: this.expandToScroll,
|
|
1493
1742
|
}));
|
|
1494
1743
|
ani.progressStart(true, 1);
|
|
1495
|
-
const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {
|
|
1744
|
+
const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, this.expandToScroll, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {
|
|
1496
1745
|
if (this.currentBreakpoint !== breakpoint) {
|
|
1497
1746
|
this.currentBreakpoint = breakpoint;
|
|
1498
1747
|
this.ionBreakpointDidChange.emit({ breakpoint });
|
|
@@ -1570,6 +1819,7 @@ const Modal = class {
|
|
|
1570
1819
|
presentingEl: presentingElement,
|
|
1571
1820
|
currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
|
|
1572
1821
|
backdropBreakpoint: this.backdropBreakpoint,
|
|
1822
|
+
expandToScroll: this.expandToScroll,
|
|
1573
1823
|
});
|
|
1574
1824
|
if (dismissed) {
|
|
1575
1825
|
const { delegate } = this.getDelegate();
|
|
@@ -1655,23 +1905,23 @@ const Modal = class {
|
|
|
1655
1905
|
return true;
|
|
1656
1906
|
}
|
|
1657
1907
|
render() {
|
|
1658
|
-
const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap } = this;
|
|
1908
|
+
const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
|
|
1659
1909
|
const showHandle = handle !== false && isSheetModal;
|
|
1660
1910
|
const mode = ionicGlobal.getIonMode(this);
|
|
1661
1911
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
1662
1912
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
1663
|
-
return (index$3.h(index$3.Host, Object.assign({ key: '
|
|
1913
|
+
return (index$3.h(index$3.Host, Object.assign({ key: 'e661562f9e4126136cee337e4ab8ca69ac80faae', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
|
|
1664
1914
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
1665
|
-
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true, [overlays.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), index$3.h("ion-backdrop", { key: '
|
|
1915
|
+
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [overlays.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), index$3.h("ion-backdrop", { key: '9221692e0e111f99e80239ca44faaaed9b288425', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && index$3.h("div", { key: '20def7088d31e5eb13c3f2404c514cd8b74cd966', class: "modal-shadow" }), index$3.h("div", Object.assign({ key: 'b11229330571d4ff7b9136dfdddcd7d759ada876',
|
|
1666
1916
|
/*
|
|
1667
1917
|
role and aria-modal must be used on the
|
|
1668
1918
|
same element. They must also be set inside the
|
|
1669
1919
|
shadow DOM otherwise ion-button will not be highlighted
|
|
1670
1920
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
1671
1921
|
*/
|
|
1672
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (index$3.h("button", { key: '
|
|
1922
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (index$3.h("button", { key: '95b2a62477dfbc063a91910f0d37357388cfd914', class: "modal-handle",
|
|
1673
1923
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
1674
|
-
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), index$3.h("slot", { key: '
|
|
1924
|
+
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), index$3.h("slot", { key: 'fba17dfdbdffbfd8992f473f633d172c5124dc19' }))));
|
|
1675
1925
|
}
|
|
1676
1926
|
get el() { return index$3.getElement(this); }
|
|
1677
1927
|
static get watchers() { return {
|