@ionic/core 8.7.17-dev.11771959013.18adabe2 → 8.7.17-dev.11772030258.1ee4f499
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 +561 -1
- package/components/alert.js +610 -1
- package/components/animation.js +817 -1
- package/components/backdrop.js +72 -1
- package/components/button-active.js +64 -1
- package/components/button.js +303 -1
- package/components/buttons.js +56 -1
- package/components/capacitor.js +10 -1
- package/components/checkbox.js +261 -1
- package/components/config.js +192 -1
- package/components/content.js +475 -1
- package/components/cubic-bezier.js +87 -1
- package/components/data.js +1635 -1
- package/components/dir.js +15 -1
- package/components/focus-visible.js +72 -1
- package/components/framework-delegate.js +137 -1
- package/components/gesture-controller.js +192 -1
- package/components/haptic.js +155 -1
- package/components/hardware-back-button.js +112 -1
- package/components/header.js +417 -1
- package/components/helpers.js +336 -1
- package/components/icon.js +456 -1
- package/components/index.d.ts +0 -2
- package/components/index.js +115 -1
- package/components/index2.js +416 -1
- package/components/index3.js +452 -1
- package/components/index4.js +118 -1
- package/components/index5.js +303 -1
- package/components/index6.js +29 -1
- package/components/index7.js +164 -1
- package/components/index8.js +125 -1
- package/components/index9.js +4 -1
- package/components/input-shims.js +624 -1
- package/components/input.utils.js +144 -1
- package/components/ion-accordion-group.js +269 -1
- package/components/ion-accordion.js +457 -1
- package/components/ion-action-sheet.js +6 -1
- package/components/ion-alert.js +6 -1
- package/components/ion-app.js +128 -1
- package/components/ion-avatar.js +41 -1
- package/components/ion-back-button.js +131 -1
- package/components/ion-backdrop.js +6 -1
- package/components/ion-badge.js +47 -1
- package/components/ion-breadcrumb.js +137 -1
- package/components/ion-breadcrumbs.js +164 -1
- package/components/ion-button.js +6 -1
- package/components/ion-buttons.js +6 -1
- package/components/ion-card-content.js +45 -1
- package/components/ion-card-header.js +56 -1
- package/components/ion-card-subtitle.js +48 -1
- package/components/ion-card-title.js +48 -1
- package/components/ion-card.js +107 -1
- package/components/ion-checkbox.js +6 -1
- package/components/ion-chip.js +66 -1
- package/components/ion-col.js +163 -1
- package/components/ion-content.js +6 -1
- package/components/ion-datetime-button.js +384 -1
- package/components/ion-datetime.js +2046 -1
- package/components/ion-fab-button.js +151 -1
- package/components/ion-fab-list.js +66 -1
- package/components/ion-fab.js +101 -1
- package/components/ion-footer.js +159 -1
- package/components/ion-grid.js +46 -1
- package/components/ion-header.js +6 -1
- package/components/ion-icon.js +6 -1
- package/components/ion-img.js +124 -1
- package/components/ion-infinite-scroll-content.js +70 -1
- package/components/ion-infinite-scroll.js +236 -1
- package/components/ion-input-otp.js +683 -1
- package/components/ion-input-password-toggle.js +129 -1
- package/components/ion-input.js +617 -1
- package/components/ion-item-divider.js +59 -1
- package/components/ion-item-group.js +46 -1
- package/components/ion-item-option.js +91 -1
- package/components/ion-item-options.js +73 -1
- package/components/ion-item-sliding.js +458 -1
- package/components/ion-item.js +6 -1
- package/components/ion-label.js +6 -1
- package/components/ion-list-header.js +6 -1
- package/components/ion-list.js +6 -1
- package/components/ion-loading.js +344 -1
- package/components/ion-menu-button.js +110 -1
- package/components/ion-menu-toggle.js +64 -1
- package/components/ion-menu.js +745 -1
- package/components/ion-modal.js +6 -1
- package/components/ion-nav-link.js +64 -1
- package/components/ion-nav.js +956 -1
- package/components/ion-note.js +47 -1
- package/components/ion-picker-column-option.js +6 -1
- package/components/ion-picker-column.js +6 -1
- package/components/ion-picker-legacy-column.js +6 -1
- package/components/ion-picker-legacy.js +343 -1
- package/components/ion-picker.js +6 -1
- package/components/ion-popover.js +6 -1
- package/components/ion-progress-bar.js +101 -1
- package/components/ion-radio-group.js +6 -1
- package/components/ion-radio.js +6 -1
- package/components/ion-range.js +853 -1
- package/components/ion-refresher-content.js +89 -1
- package/components/ion-refresher.js +751 -1
- package/components/ion-reorder-group.js +322 -1
- package/components/ion-reorder.js +60 -1
- package/components/ion-ripple-effect.js +6 -1
- package/components/ion-route-redirect.js +45 -1
- package/components/ion-route.js +74 -1
- package/components/ion-router-link.js +61 -1
- package/components/ion-router-outlet.js +227 -1
- package/components/ion-router.js +841 -1
- package/components/ion-row.js +36 -1
- package/components/ion-searchbar.js +530 -1
- package/components/ion-segment-button.js +174 -1
- package/components/ion-segment-content.js +35 -1
- package/components/ion-segment-view.js +148 -1
- package/components/ion-segment.js +602 -1
- package/components/ion-select-modal.js +6 -1
- package/components/ion-select-option.js +46 -1
- package/components/ion-select-popover.js +6 -1
- package/components/ion-select.js +1037 -1
- package/components/ion-skeleton-text.js +65 -1
- package/components/ion-spinner.js +6 -1
- package/components/ion-split-pane.js +197 -1
- package/components/ion-tab-bar.js +115 -1
- package/components/ion-tab-button.js +128 -1
- package/components/ion-tab.js +91 -1
- package/components/ion-tabs.js +205 -1
- package/components/ion-text.js +42 -1
- package/components/ion-textarea.js +554 -1
- package/components/ion-thumbnail.js +36 -1
- package/components/ion-title.js +6 -1
- package/components/ion-toast.js +941 -1
- package/components/ion-toggle.js +361 -1
- package/components/ion-toolbar.js +6 -1
- package/components/ionic-global.js +144 -1
- package/components/ios.transition.js +672 -1
- package/components/item.js +302 -1
- package/components/keyboard-controller.js +162 -1
- package/components/keyboard.js +141 -1
- package/components/keyboard2.js +76 -1
- package/components/label.js +100 -1
- package/components/list-header.js +47 -1
- package/components/list.js +68 -1
- package/components/lock-controller.js +35 -1
- package/components/md.transition.js +51 -1
- package/components/menu-toggle-util.js +9 -1
- package/components/modal.js +2674 -1
- package/components/notch-controller.js +150 -1
- package/components/overlays.js +912 -1
- package/components/picker-column-option.js +136 -1
- package/components/picker-column.js +595 -1
- package/components/picker-column2.js +377 -1
- package/components/picker.js +498 -1
- package/components/popover.js +1502 -1
- package/components/radio-group.js +287 -1
- package/components/radio.js +229 -1
- package/components/refresher.utils.js +193 -1
- package/components/ripple-effect.js +109 -1
- package/components/select-modal.js +196 -1
- package/components/select-popover.js +189 -1
- package/components/spinner.js +224 -1
- package/components/status-tap.js +36 -1
- package/components/swipe-back.js +75 -1
- package/components/theme.js +40 -1
- package/components/title.js +70 -1
- package/components/toolbar.js +89 -1
- package/components/validity.js +14 -1
- package/components/watch-options.js +44 -1
- package/dist/cjs/{animation-Dg4yiuR2.js → animation-Bt3H9L1C.js} +1 -1
- package/dist/cjs/app-globals-Ciccnk9_.js +10 -0
- package/dist/cjs/{button-active-FscMI17-.js → button-active-CMc8cD90.js} +1 -1
- package/dist/cjs/{config-BukYi_pW.js → config-C5fsO43a.js} +1 -1
- package/dist/cjs/{data-BYlBjkMU.js → data-JwZKaIQB.js} +1 -1
- package/dist/cjs/{framework-delegate-CRgp8o_p.js → framework-delegate-DMJRBuDi.js} +1 -1
- package/dist/cjs/{hardware-back-button-C4rMJ5uI.js → hardware-back-button-VCK4V3mG.js} +1 -1
- package/dist/cjs/{helpers-CxTYJdbT.js → helpers-DrTqNghc.js} +1 -1
- package/dist/cjs/{index-C845Ti6K.js → index-094mMFB-.js} +4 -4
- package/dist/cjs/{index-YcSftOMz.js → index-C534ULug.js} +2 -2
- package/dist/cjs/{index-MbaBbWXk.js → index-CO6eryBo.js} +2 -2
- package/dist/cjs/{index-CqT-2gKy.js → index-D6Wc6v08.js} +382 -503
- package/dist/cjs/{index-CFUwM5x_.js → index-DrMUZJj6.js} +5 -5
- package/dist/cjs/index.cjs.js +12 -12
- package/dist/cjs/{input-shims-DlFhYYTs.js → input-shims-CW0KUFTQ.js} +3 -3
- package/dist/cjs/{input.utils-DmeJ8dmo.js → input.utils-B_QROI2g.js} +2 -2
- package/dist/cjs/ion-accordion_2.cjs.entry.js +15 -23
- package/dist/cjs/ion-action-sheet.cjs.entry.js +15 -21
- package/dist/cjs/ion-alert.cjs.entry.js +17 -25
- package/dist/cjs/ion-app_8.cjs.entry.js +40 -44
- package/dist/cjs/ion-avatar_3.cjs.entry.js +12 -12
- package/dist/cjs/ion-back-button.cjs.entry.js +7 -7
- package/dist/cjs/ion-backdrop.cjs.entry.js +6 -6
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +14 -20
- package/dist/cjs/ion-button_2.cjs.entry.js +18 -36
- package/dist/cjs/ion-card_5.cjs.entry.js +23 -23
- package/dist/cjs/ion-checkbox.cjs.entry.js +7 -7
- package/dist/cjs/ion-chip.cjs.entry.js +6 -6
- package/dist/cjs/ion-col_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-datetime-button.cjs.entry.js +8 -8
- package/dist/cjs/ion-datetime_3.cjs.entry.js +39 -67
- package/dist/cjs/ion-fab_3.cjs.entry.js +13 -17
- package/dist/cjs/ion-img.cjs.entry.js +6 -8
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +13 -17
- package/dist/cjs/ion-input-otp.cjs.entry.js +10 -16
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +7 -9
- package/dist/cjs/ion-input.cjs.entry.js +13 -21
- package/dist/cjs/ion-item-option_3.cjs.entry.js +15 -17
- package/dist/cjs/ion-item_8.cjs.entry.js +36 -42
- package/dist/cjs/ion-loading.cjs.entry.js +14 -18
- package/dist/cjs/ion-menu_3.cjs.entry.js +22 -30
- package/dist/cjs/ion-modal.cjs.entry.js +221 -62
- package/dist/cjs/ion-nav_2.cjs.entry.js +10 -14
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +8 -10
- package/dist/cjs/ion-picker-column.cjs.entry.js +7 -11
- package/dist/cjs/ion-picker.cjs.entry.js +6 -6
- package/dist/cjs/ion-popover.cjs.entry.js +15 -21
- package/dist/cjs/ion-progress-bar.cjs.entry.js +7 -7
- package/dist/cjs/ion-radio_2.cjs.entry.js +13 -17
- package/dist/cjs/ion-range.cjs.entry.js +54 -180
- package/dist/cjs/ion-refresher_2.cjs.entry.js +14 -45
- package/dist/cjs/ion-reorder_2.cjs.entry.js +11 -13
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +4 -4
- package/dist/cjs/ion-route_4.cjs.entry.js +10 -20
- package/dist/cjs/ion-searchbar.cjs.entry.js +12 -22
- package/dist/cjs/ion-segment-content.cjs.entry.js +3 -3
- package/dist/cjs/ion-segment-view.cjs.entry.js +5 -5
- package/dist/cjs/ion-segment_2.cjs.entry.js +16 -26
- package/dist/cjs/ion-select-modal.cjs.entry.js +12 -12
- package/dist/cjs/ion-select_3.cjs.entry.js +21 -29
- package/dist/cjs/ion-spinner.cjs.entry.js +4 -4
- package/dist/cjs/ion-split-pane.cjs.entry.js +9 -15
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +12 -14
- package/dist/cjs/ion-tab_2.cjs.entry.js +8 -10
- package/dist/cjs/ion-text.cjs.entry.js +4 -4
- package/dist/cjs/ion-textarea.cjs.entry.js +12 -18
- package/dist/cjs/ion-toast.cjs.entry.js +15 -21
- package/dist/cjs/ion-toggle.cjs.entry.js +8 -10
- package/dist/cjs/{ionic-global-Bc3kJi1Z.js → ionic-global-HMVqOFGO.js} +1 -1
- package/dist/cjs/ionic.cjs.js +5 -5
- package/dist/cjs/{ios.transition-trBiC95R.js → ios.transition-BOt_uW73.js} +4 -4
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-CUQECuvD.js → md.transition-Dt968VXB.js} +4 -4
- package/dist/cjs/{notch-controller-sD-lTpdc.js → notch-controller-Bzqhjm4f.js} +1 -1
- package/dist/cjs/{overlays-C2jiBSNQ.js → overlays-B2b-TTbl.js} +5 -5
- package/dist/cjs/{status-tap-CCJk5VgT.js → status-tap-g0sWWkXk.js} +3 -3
- package/dist/cjs/{swipe-back-BGhTQ1CU.js → swipe-back-BIayeNOD.js} +2 -2
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/accordion-group/accordion-group.js +2 -4
- package/dist/collection/components/action-sheet/action-sheet.js +10 -20
- package/dist/collection/components/alert/alert.js +12 -24
- package/dist/collection/components/back-button/back-button.js +2 -4
- package/dist/collection/components/badge/badge.js +1 -2
- package/dist/collection/components/breadcrumb/breadcrumb.js +4 -8
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +2 -4
- package/dist/collection/components/button/button.js +3 -6
- package/dist/collection/components/card/card.js +3 -6
- package/dist/collection/components/card-header/card-header.js +1 -2
- package/dist/collection/components/card-subtitle/card-subtitle.js +1 -2
- package/dist/collection/components/card-title/card-title.js +1 -2
- package/dist/collection/components/checkbox/checkbox.js +2 -4
- package/dist/collection/components/chip/chip.js +1 -2
- package/dist/collection/components/content/content.js +4 -8
- package/dist/collection/components/datetime/datetime.js +15 -34
- package/dist/collection/components/datetime-button/datetime-button.js +1 -2
- package/dist/collection/components/fab-button/fab-button.js +3 -6
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -4
- package/dist/collection/components/input/input.js +6 -11
- package/dist/collection/components/input-otp/input-otp.js +4 -8
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +2 -4
- package/dist/collection/components/item/item.js +3 -6
- package/dist/collection/components/item-divider/item-divider.js +1 -2
- package/dist/collection/components/item-option/item-option.js +1 -2
- package/dist/collection/components/item-options/item-options.js +1 -2
- package/dist/collection/components/item-sliding/item-sliding.js +1 -2
- package/dist/collection/components/label/label.js +3 -6
- package/dist/collection/components/list-header/list-header.js +1 -2
- package/dist/collection/components/loading/loading.js +11 -22
- package/dist/collection/components/menu/menu.js +5 -10
- package/dist/collection/components/menu-button/menu-button.js +1 -2
- package/dist/collection/components/modal/gestures/sheet.js +108 -11
- package/dist/collection/components/modal/gestures/swipe-to-close.js +54 -1
- package/dist/collection/components/modal/modal.js +112 -58
- package/dist/collection/components/nav/nav.js +45 -89
- package/dist/collection/components/nav-link/nav-link.js +5 -9
- package/dist/collection/components/note/note.js +1 -2
- package/dist/collection/components/picker/picker.js +1 -2
- package/dist/collection/components/picker-column/picker-column.js +3 -6
- package/dist/collection/components/picker-column-option/picker-column-option.js +1 -2
- package/dist/collection/components/picker-legacy/picker.js +12 -24
- package/dist/collection/components/picker-legacy-column/picker-column.js +2 -4
- package/dist/collection/components/popover/popover.js +17 -33
- package/dist/collection/components/progress-bar/progress-bar.js +1 -2
- package/dist/collection/components/radio/radio.js +1 -2
- package/dist/collection/components/radio-group/radio-group.js +3 -6
- package/dist/collection/components/range/range.js +50 -189
- package/dist/collection/components/refresher/refresher.js +5 -73
- package/dist/collection/components/refresher-content/refresher-content.js +4 -8
- package/dist/collection/components/reorder-group/reorder-group.js +3 -6
- package/dist/collection/components/route/route.js +2 -4
- package/dist/collection/components/router/router.js +5 -10
- package/dist/collection/components/router-link/router-link.js +3 -6
- package/dist/collection/components/router-outlet/router-outlet.js +9 -18
- package/dist/collection/components/searchbar/searchbar.js +6 -11
- package/dist/collection/components/segment/segment.js +5 -10
- package/dist/collection/components/segment-button/segment-button.js +2 -4
- package/dist/collection/components/segment-view/segment-view.js +1 -2
- package/dist/collection/components/select/select.js +5 -10
- package/dist/collection/components/select-modal/select-modal.js +1 -2
- package/dist/collection/components/select-popover/select-popover.js +1 -2
- package/dist/collection/components/skeleton-text/skeleton-text.js +1 -2
- package/dist/collection/components/spinner/spinner.js +2 -4
- package/dist/collection/components/tab/tab.js +2 -4
- package/dist/collection/components/tab-bar/tab-bar.js +2 -4
- package/dist/collection/components/tab-button/tab-button.js +2 -4
- package/dist/collection/components/tabs/tabs.js +2 -4
- package/dist/collection/components/text/text.js +1 -2
- package/dist/collection/components/textarea/textarea.js +3 -6
- package/dist/collection/components/title/title.js +2 -4
- package/dist/collection/components/toast/toast.js +17 -34
- package/dist/collection/components/toggle/toggle.js +2 -4
- package/dist/collection/components/toolbar/toolbar.js +1 -2
- package/dist/docs.d.ts +0 -37
- package/dist/docs.json +442 -971
- package/dist/esm/{animation-CnGMT4ji.js → animation-Dt8bGnA-.js} +1 -1
- package/dist/esm/app-globals-BDSf8fOA.js +8 -0
- package/dist/esm/{button-active-BBx21brx.js → button-active-L570Swow.js} +1 -1
- package/dist/esm/{config-TO1rZH52.js → config-mCdtaoPe.js} +1 -1
- package/dist/esm/{data-B9iGR5YO.js → data-DCORV9FH.js} +1 -1
- package/dist/esm/{framework-delegate-CyxE1S_P.js → framework-delegate-BYawdMXj.js} +1 -1
- package/dist/esm/{hardware-back-button-CTe4XmL7.js → hardware-back-button-CPLxO-Ev.js} +1 -1
- package/dist/esm/{helpers-Tl8jw6S2.js → helpers-DEn3pfjm.js} +1 -1
- package/dist/esm/{index-hW6eNZ3o.js → index-Bs3kT4bc.js} +2 -2
- package/dist/esm/{index-IGIE5vDm.js → index-C8IsBmNU.js} +382 -503
- package/dist/esm/{index-B2KwgBLx.js → index-CvDIirVx.js} +5 -5
- package/dist/esm/{index-BtUdxPjv.js → index-ceb5RaMT.js} +2 -2
- package/dist/esm/{index-B-hkiOUh.js → index-r2D9DEro.js} +4 -4
- package/dist/esm/index.js +12 -12
- package/dist/esm/{input-shims-C1hAaHcP.js → input-shims-DyOpfTg6.js} +3 -3
- package/dist/esm/{input.utils-Bxa_DQ7-.js → input.utils-DrvTa8gz.js} +2 -2
- package/dist/esm/ion-accordion_2.entry.js +15 -23
- package/dist/esm/ion-action-sheet.entry.js +15 -21
- package/dist/esm/ion-alert.entry.js +17 -25
- package/dist/esm/ion-app_8.entry.js +40 -44
- package/dist/esm/ion-avatar_3.entry.js +12 -12
- package/dist/esm/ion-back-button.entry.js +7 -7
- package/dist/esm/ion-backdrop.entry.js +6 -6
- package/dist/esm/ion-breadcrumb_2.entry.js +14 -20
- package/dist/esm/ion-button_2.entry.js +18 -36
- package/dist/esm/ion-card_5.entry.js +23 -23
- package/dist/esm/ion-checkbox.entry.js +7 -7
- package/dist/esm/ion-chip.entry.js +6 -6
- package/dist/esm/ion-col_3.entry.js +8 -8
- package/dist/esm/ion-datetime-button.entry.js +8 -8
- package/dist/esm/ion-datetime_3.entry.js +39 -67
- package/dist/esm/ion-fab_3.entry.js +13 -17
- package/dist/esm/ion-img.entry.js +6 -8
- package/dist/esm/ion-infinite-scroll_2.entry.js +13 -17
- package/dist/esm/ion-input-otp.entry.js +10 -16
- package/dist/esm/ion-input-password-toggle.entry.js +7 -9
- package/dist/esm/ion-input.entry.js +13 -21
- package/dist/esm/ion-item-option_3.entry.js +15 -17
- package/dist/esm/ion-item_8.entry.js +36 -42
- package/dist/esm/ion-loading.entry.js +14 -18
- package/dist/esm/ion-menu_3.entry.js +22 -30
- package/dist/esm/ion-modal.entry.js +221 -62
- package/dist/esm/ion-nav_2.entry.js +10 -14
- package/dist/esm/ion-picker-column-option.entry.js +8 -10
- package/dist/esm/ion-picker-column.entry.js +7 -11
- package/dist/esm/ion-picker.entry.js +6 -6
- package/dist/esm/ion-popover.entry.js +15 -21
- package/dist/esm/ion-progress-bar.entry.js +7 -7
- package/dist/esm/ion-radio_2.entry.js +13 -17
- package/dist/esm/ion-range.entry.js +54 -180
- package/dist/esm/ion-refresher_2.entry.js +14 -45
- package/dist/esm/ion-reorder_2.entry.js +11 -13
- package/dist/esm/ion-ripple-effect.entry.js +4 -4
- package/dist/esm/ion-route_4.entry.js +10 -20
- package/dist/esm/ion-searchbar.entry.js +12 -22
- package/dist/esm/ion-segment-content.entry.js +3 -3
- package/dist/esm/ion-segment-view.entry.js +5 -5
- package/dist/esm/ion-segment_2.entry.js +16 -26
- package/dist/esm/ion-select-modal.entry.js +12 -12
- package/dist/esm/ion-select_3.entry.js +21 -29
- package/dist/esm/ion-spinner.entry.js +4 -4
- package/dist/esm/ion-split-pane.entry.js +9 -15
- package/dist/esm/ion-tab-bar_2.entry.js +12 -14
- package/dist/esm/ion-tab_2.entry.js +8 -10
- package/dist/esm/ion-text.entry.js +4 -4
- package/dist/esm/ion-textarea.entry.js +12 -18
- package/dist/esm/ion-toast.entry.js +15 -21
- package/dist/esm/ion-toggle.entry.js +8 -10
- package/dist/esm/{ionic-global-DfbeLwcV.js → ionic-global-CDrldh-5.js} +1 -1
- package/dist/esm/ionic.js +6 -6
- package/dist/esm/{ios.transition--aMF-pDH.js → ios.transition-BDzw0_Hm.js} +4 -4
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-BEVbfm8j.js → md.transition-BzDYi3qq.js} +4 -4
- package/dist/esm/{notch-controller-DAcvKU57.js → notch-controller-BwelN_JM.js} +1 -1
- package/dist/esm/{overlays-F8GHPo-e.js → overlays-D5YkFThA.js} +5 -5
- package/dist/esm/{status-tap-BfJqFSLF.js → status-tap-5DQ7Fc4V.js} +3 -3
- package/dist/esm/{swipe-back-BZBFwTQV.js → swipe-back-BKw2CAHc.js} +2 -2
- package/dist/html.html-data.json +109 -109
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-012212e4.entry.js +4 -0
- package/dist/ionic/p-074839fc.entry.js +4 -0
- package/dist/ionic/p-0dfa5a37.entry.js +4 -0
- package/dist/ionic/p-0f418a37.entry.js +4 -0
- package/dist/ionic/p-11518b31.entry.js +4 -0
- package/dist/ionic/{p-80cac7a2.entry.js → p-11aa58d6.entry.js} +1 -1
- package/dist/ionic/p-1838bed5.entry.js +4 -0
- package/dist/ionic/p-29721c43.entry.js +4 -0
- package/dist/ionic/{p-b67a2114.entry.js → p-2a939845.entry.js} +1 -1
- package/dist/ionic/{p-025d2d32.entry.js → p-316c0420.entry.js} +1 -1
- package/dist/ionic/p-31f7095f.entry.js +4 -0
- package/dist/ionic/p-34642fa1.entry.js +4 -0
- package/dist/ionic/p-35696017.entry.js +4 -0
- package/dist/ionic/{p-074344b8.entry.js → p-370e4237.entry.js} +1 -1
- package/dist/ionic/{p-964090ef.entry.js → p-3a6caca9.entry.js} +1 -1
- package/dist/ionic/p-40c261a3.entry.js +4 -0
- package/dist/ionic/{p-1fd588a7.entry.js → p-46d74291.entry.js} +1 -1
- package/dist/ionic/{p-301c43f8.entry.js → p-49d06882.entry.js} +1 -1
- package/dist/ionic/p-4e41ea20.entry.js +4 -0
- package/dist/ionic/{p-7c72d482.entry.js → p-51a60e0f.entry.js} +1 -1
- package/dist/ionic/{p-9833cf63.entry.js → p-582824c5.entry.js} +1 -1
- package/dist/ionic/p-6241ce47.entry.js +4 -0
- package/dist/ionic/p-639dd543.entry.js +4 -0
- package/dist/ionic/p-6444c606.entry.js +4 -0
- package/dist/ionic/{p-9fae83d8.entry.js → p-675b1a31.entry.js} +1 -1
- package/dist/ionic/p-6d070558.entry.js +4 -0
- package/dist/ionic/p-7268efa5.entry.js +4 -0
- package/dist/ionic/{p-b4d52b58.entry.js → p-72c38b88.entry.js} +1 -1
- package/dist/ionic/{p-370a60ee.entry.js → p-79bd78f9.entry.js} +1 -1
- package/dist/ionic/p-7babec72.entry.js +4 -0
- package/dist/ionic/{p-a287e18e.entry.js → p-86f53961.entry.js} +1 -1
- package/dist/ionic/{p-277abec1.entry.js → p-94de5cfa.entry.js} +1 -1
- package/dist/ionic/{p-e663bc5a.entry.js → p-9575b654.entry.js} +1 -1
- package/dist/ionic/{p-c1c9b2bb.entry.js → p-9a2d390d.entry.js} +1 -1
- package/dist/ionic/{p-DB_iPQC-.js → p-B0q1YL7N.js} +1 -1
- package/dist/ionic/{p-NFFyoJ4Q.js → p-BFvmZNyx.js} +1 -1
- package/dist/ionic/p-BKc55Xev.js +4 -0
- package/dist/ionic/{p-CYbRmDdy.js → p-BOVrCkpJ.js} +1 -1
- package/dist/ionic/{p-C0JvVFMv.js → p-BYEqWnSg.js} +1 -1
- package/dist/ionic/p-Bmgaetn_.js +4 -0
- package/dist/ionic/{p-BAt5H1ac.js → p-C7hRNDhM.js} +1 -1
- package/dist/ionic/p-C8IsBmNU.js +5 -0
- package/dist/ionic/p-CJxh_yLS.js +4 -0
- package/dist/ionic/{p-CGmVTdWh.js → p-CTfR9YZG.js} +1 -1
- package/dist/ionic/{p-B8xlpH8p.js → p-CwgG81ZD.js} +1 -1
- package/dist/ionic/{p-CmFz1Mjc.js → p-D-eFFUkA.js} +1 -1
- package/dist/ionic/{p-BvFYtOdE.js → p-D0dMcSkw.js} +1 -1
- package/dist/ionic/{p-DjriolRs.js → p-DCv9sLH2.js} +1 -1
- package/dist/ionic/{p-Bum7H1fw.js → p-DDb5r57F.js} +1 -1
- package/dist/ionic/{p-DLbbmF9h.js → p-DNcfiJwE.js} +1 -1
- package/dist/ionic/p-DUt5fQmA.js +4 -0
- package/dist/ionic/p-DZRJwG4S.js +4 -0
- package/dist/ionic/{p-gbVXD275.js → p-DbQ5QkTP.js} +1 -1
- package/dist/ionic/{p-BxIcPWoV.js → p-Dc45iWE4.js} +1 -1
- package/dist/ionic/{p-DTPR1Wpn.js → p-DdR6rpbR.js} +1 -1
- package/dist/ionic/{p-GWUGgWx6.js → p-QHYY4sjU.js} +1 -1
- package/dist/ionic/p-a127bee2.entry.js +4 -0
- package/dist/ionic/{p-f5dfb9a3.entry.js → p-ac4eb91d.entry.js} +1 -1
- package/dist/ionic/{p-ca31010f.entry.js → p-b0a7585c.entry.js} +1 -1
- package/dist/ionic/p-b3d44509.entry.js +4 -0
- package/dist/ionic/{p-bced1f3e.entry.js → p-c73627c8.entry.js} +1 -1
- package/dist/ionic/p-cc45bcbc.entry.js +4 -0
- package/dist/ionic/p-d0a2a1ab.entry.js +4 -0
- package/dist/ionic/{p-9745651b.entry.js → p-d126e8d3.entry.js} +1 -1
- package/dist/ionic/{p-b440381f.entry.js → p-d1f54e28.entry.js} +1 -1
- package/dist/ionic/{p-1fa1406c.entry.js → p-d2489bf2.entry.js} +1 -1
- package/dist/ionic/p-d3014190.entry.js +4 -0
- package/dist/ionic/{p-a84f2d21.entry.js → p-da7d04cc.entry.js} +1 -1
- package/dist/ionic/p-db82892c.entry.js +4 -0
- package/dist/ionic/{p-b2d5238b.entry.js → p-dbbe606a.entry.js} +1 -1
- package/dist/ionic/{p-28d7852f.entry.js → p-dd1aef77.entry.js} +1 -1
- package/dist/ionic/p-e1d1f3cc.entry.js +4 -0
- package/dist/ionic/{p-c3e65e45.entry.js → p-f8f22cc0.entry.js} +1 -1
- package/dist/ionic/{p-9802c88e.entry.js → p-f9061316.entry.js} +1 -1
- package/dist/types/components/datetime/datetime.d.ts +0 -9
- package/dist/types/components/header/header.utils.d.ts +1 -2
- package/dist/types/components/modal/gestures/sheet.d.ts +2 -2
- package/dist/types/components/modal/gestures/swipe-to-close.d.ts +2 -2
- package/dist/types/components/modal/modal-interface.d.ts +7 -0
- package/dist/types/components/modal/modal.d.ts +17 -1
- package/dist/types/components/range/range-interface.d.ts +0 -1
- package/dist/types/components/range/range.d.ts +4 -33
- package/dist/types/components/refresher/refresher-interface.d.ts +0 -7
- package/dist/types/components/refresher/refresher.d.ts +3 -16
- package/dist/types/components.d.ts +206 -929
- package/dist/types/interface.d.ts +2 -2
- package/dist/types/stencil-public-runtime.d.ts +14 -126
- package/dist/types/utils/gesture/listener.d.ts +1 -2
- package/hydrate/index.d.ts +0 -12
- package/hydrate/index.js +1550 -5375
- package/hydrate/index.mjs +1551 -5374
- package/package.json +2 -2
- package/dist/cjs/app-globals-CLI8xCmk.js +0 -11
- package/dist/esm/app-globals-DhZjtldk.js +0 -9
- package/dist/ionic/p-02acdef4.entry.js +0 -4
- package/dist/ionic/p-04e2c388.entry.js +0 -4
- package/dist/ionic/p-13ade5c8.entry.js +0 -4
- package/dist/ionic/p-1b02923f.entry.js +0 -4
- package/dist/ionic/p-1bd477a9.entry.js +0 -4
- package/dist/ionic/p-239a27a4.entry.js +0 -4
- package/dist/ionic/p-3e143d1d.entry.js +0 -4
- package/dist/ionic/p-4431ef7e.entry.js +0 -4
- package/dist/ionic/p-463767ce.entry.js +0 -4
- package/dist/ionic/p-4f888343.entry.js +0 -4
- package/dist/ionic/p-51c11c47.entry.js +0 -4
- package/dist/ionic/p-56050077.entry.js +0 -4
- package/dist/ionic/p-6a3a5aae.entry.js +0 -4
- package/dist/ionic/p-6b97f2a3.entry.js +0 -4
- package/dist/ionic/p-77de9c60.entry.js +0 -4
- package/dist/ionic/p-7d20f4f8.entry.js +0 -4
- package/dist/ionic/p-91fc7352.entry.js +0 -4
- package/dist/ionic/p-93845421.entry.js +0 -4
- package/dist/ionic/p-96a2e768.entry.js +0 -4
- package/dist/ionic/p-9d1676bb.entry.js +0 -4
- package/dist/ionic/p-BW_TRJm8.js +0 -4
- package/dist/ionic/p-CtA-yJYy.js +0 -4
- package/dist/ionic/p-D8HJQ1qq.js +0 -4
- package/dist/ionic/p-DtVZDHlS.js +0 -4
- package/dist/ionic/p-IGIE5vDm.js +0 -5
- package/dist/ionic/p-a805674e.entry.js +0 -4
- package/dist/ionic/p-a81ae2cd.entry.js +0 -4
- package/dist/ionic/p-cbf245b5.entry.js +0 -4
- package/dist/ionic/p-d68b665a.entry.js +0 -4
- package/dist/ionic/p-efe86ed9.entry.js +0 -4
- package/dist/ionic/p-hNN3VvaC.js +0 -4
|
@@ -7,7 +7,7 @@ import { clamp, getElementRoot, raf } from "../../../utils/helpers";
|
|
|
7
7
|
import { FOCUS_TRAP_DISABLE_CLASS } from "../../../utils/overlays";
|
|
8
8
|
import { getBackdropValueForSheet } from "../utils";
|
|
9
9
|
import { calculateSpringStep, handleCanDismiss } from "./utils";
|
|
10
|
-
export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
|
|
10
|
+
export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange, onDragStart, onDragMove, onDragEnd) => {
|
|
11
11
|
// Defaults for the sheet swipe animation
|
|
12
12
|
const defaultBackdrop = [
|
|
13
13
|
{ offset: 0, opacity: 'var(--backdrop-opacity)' },
|
|
@@ -270,6 +270,7 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
270
270
|
baseEl.focus();
|
|
271
271
|
});
|
|
272
272
|
animation.progressStart(true, 1 - currentBreakpoint);
|
|
273
|
+
onDragStart();
|
|
273
274
|
};
|
|
274
275
|
const onMove = (detail) => {
|
|
275
276
|
/**
|
|
@@ -338,6 +339,15 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
338
339
|
: step;
|
|
339
340
|
offset = clamp(0.0001, processedStep, maxStep);
|
|
340
341
|
animation.progressStep(offset);
|
|
342
|
+
const closest = calculateClosestBreakpoint(detail.velocityY, detail.deltaY);
|
|
343
|
+
const eventDetail = {
|
|
344
|
+
currentY: detail.currentY,
|
|
345
|
+
deltaY: detail.deltaY,
|
|
346
|
+
velocityY: detail.velocityY,
|
|
347
|
+
progress: calculateProgress(detail.currentY),
|
|
348
|
+
currentBreakpoint: closest,
|
|
349
|
+
};
|
|
350
|
+
onDragMove(eventDetail);
|
|
341
351
|
};
|
|
342
352
|
const onEnd = (detail) => {
|
|
343
353
|
/**
|
|
@@ -356,16 +366,7 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
356
366
|
swapFooterPosition('stationary');
|
|
357
367
|
return;
|
|
358
368
|
}
|
|
359
|
-
|
|
360
|
-
* When the gesture releases, we need to determine
|
|
361
|
-
* the closest breakpoint to snap to.
|
|
362
|
-
*/
|
|
363
|
-
const velocity = detail.velocityY;
|
|
364
|
-
const threshold = (detail.deltaY + velocity * 350) / height;
|
|
365
|
-
const diff = currentBreakpoint - threshold;
|
|
366
|
-
const closest = breakpoints.reduce((a, b) => {
|
|
367
|
-
return Math.abs(b - diff) < Math.abs(a - diff) ? b : a;
|
|
368
|
-
});
|
|
369
|
+
const closest = calculateClosestBreakpoint(detail.velocityY, detail.deltaY);
|
|
369
370
|
moveSheetToBreakpoint({
|
|
370
371
|
breakpoint: closest,
|
|
371
372
|
breakpointOffset: offset,
|
|
@@ -376,6 +377,14 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
376
377
|
*/
|
|
377
378
|
animated: true,
|
|
378
379
|
});
|
|
380
|
+
const eventDetail = {
|
|
381
|
+
currentY: detail.currentY,
|
|
382
|
+
deltaY: detail.deltaY,
|
|
383
|
+
velocityY: detail.velocityY,
|
|
384
|
+
progress: calculateProgress(detail.currentY),
|
|
385
|
+
currentBreakpoint: closest,
|
|
386
|
+
};
|
|
387
|
+
onDragEnd(eventDetail);
|
|
379
388
|
};
|
|
380
389
|
const moveSheetToBreakpoint = (options) => {
|
|
381
390
|
const { breakpoint, canDismiss, breakpointOffset, animated } = options;
|
|
@@ -515,6 +524,94 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
515
524
|
.progressEnd(1, 0, animated ? 500 : 0);
|
|
516
525
|
});
|
|
517
526
|
};
|
|
527
|
+
/**
|
|
528
|
+
* Calculates the closest breakpoint based on the current velocity and deltaY.
|
|
529
|
+
* This determines where the sheet should snap to when the user releases the
|
|
530
|
+
* gesture.
|
|
531
|
+
*
|
|
532
|
+
* @param velocityY The current velocity of the gesture in the Y direction.
|
|
533
|
+
* @param deltaY The change in Y position since the gesture started.
|
|
534
|
+
* @returns The closest breakpoint value.
|
|
535
|
+
*/
|
|
536
|
+
const calculateClosestBreakpoint = (velocityY, deltaY) => {
|
|
537
|
+
const threshold = (deltaY + velocityY * 350) / height;
|
|
538
|
+
const diff = currentBreakpoint - threshold;
|
|
539
|
+
const closest = breakpoints.reduce((a, b) => {
|
|
540
|
+
return Math.abs(b - diff) < Math.abs(a - diff) ? b : a;
|
|
541
|
+
});
|
|
542
|
+
return closest;
|
|
543
|
+
};
|
|
544
|
+
/**
|
|
545
|
+
* Calculates the progress of the swipe gesture.
|
|
546
|
+
*
|
|
547
|
+
* The progress is a value between 0 and 1 that represents how far
|
|
548
|
+
* the swipe has progressed towards closing the modal.
|
|
549
|
+
*
|
|
550
|
+
* A value closer to 1 means the modal is closer to being opened,
|
|
551
|
+
* while a value closer to 0 means the modal is closer to being closed.
|
|
552
|
+
*
|
|
553
|
+
* @param currentY The current Y position of the gesture
|
|
554
|
+
* @returns The progress of the sheet gesture
|
|
555
|
+
*/
|
|
556
|
+
const calculateProgress = (currentY) => {
|
|
557
|
+
const minBreakpoint = breakpoints[0];
|
|
558
|
+
const maxBreakpoint = breakpoints[breakpoints.length - 1];
|
|
559
|
+
// Convert breakpoints to pixel Y coordinates
|
|
560
|
+
/**
|
|
561
|
+
* The lowest point the sheet can be dragged to aka the point at which
|
|
562
|
+
* the sheet is fully closed.
|
|
563
|
+
*/
|
|
564
|
+
const maxY = convertBreakpointToY(minBreakpoint);
|
|
565
|
+
/**
|
|
566
|
+
* The highest point the sheet can be dragged to aka the point at which
|
|
567
|
+
* the sheet is fully open.
|
|
568
|
+
*/
|
|
569
|
+
const minY = convertBreakpointToY(maxBreakpoint);
|
|
570
|
+
// The total distance between the fully open and fully closed positions.
|
|
571
|
+
const totalDistance = maxY - minY;
|
|
572
|
+
// The distance from the current position to the fully closed position.
|
|
573
|
+
const distanceFromBottom = maxY - currentY;
|
|
574
|
+
/**
|
|
575
|
+
* The progress represents how far the sheet is from the bottom relative
|
|
576
|
+
* to the total distance. When the user starts swiping up, the progress
|
|
577
|
+
* should be close to 1, and when the user has swiped all the way down,
|
|
578
|
+
* the progress should be close to 0.
|
|
579
|
+
*/
|
|
580
|
+
const progress = distanceFromBottom / totalDistance;
|
|
581
|
+
// Round to the nearest thousandth to avoid returning very small decimal
|
|
582
|
+
const roundedProgress = Math.round(progress * 1000) / 1000;
|
|
583
|
+
return Math.max(0, Math.min(1, roundedProgress));
|
|
584
|
+
};
|
|
585
|
+
/**
|
|
586
|
+
* Converts a breakpoint value (0 to 1) into a pixel Y coordinate
|
|
587
|
+
* on the screen.
|
|
588
|
+
*
|
|
589
|
+
* @param breakpoint The breakpoint value (e.g., 0.5 for half-open)
|
|
590
|
+
* @returns The pixel Y coordinate on the screen
|
|
591
|
+
*/
|
|
592
|
+
const convertBreakpointToY = (breakpoint) => {
|
|
593
|
+
const rect = baseEl.getBoundingClientRect();
|
|
594
|
+
const modalHeight = rect.height;
|
|
595
|
+
// The bottom of the screen.
|
|
596
|
+
const viewportBottom = window.innerHeight;
|
|
597
|
+
/**
|
|
598
|
+
* The active height is how much of the modal is actually showing
|
|
599
|
+
* on the screen for this specific breakpoint.
|
|
600
|
+
*/
|
|
601
|
+
const activeHeight = modalHeight * breakpoint;
|
|
602
|
+
/**
|
|
603
|
+
* To find the Y coordinate, start at the bottom of the screen
|
|
604
|
+
* and move up by the active height of the modal.
|
|
605
|
+
*
|
|
606
|
+
* A breakpoint of 1.0 means the active height is the full modal height
|
|
607
|
+
* (fully open). A breakpoint of 0.0 means the active height is 0
|
|
608
|
+
* (fully closed).
|
|
609
|
+
*
|
|
610
|
+
* Since screen Y coordinates get smaller as you go up, we subtract the
|
|
611
|
+
* active height from the viewport bottom.
|
|
612
|
+
*/
|
|
613
|
+
return viewportBottom - activeHeight;
|
|
614
|
+
};
|
|
518
615
|
const gesture = createGesture({
|
|
519
616
|
el: wrapperEl,
|
|
520
617
|
gestureName: 'modalSheet',
|
|
@@ -12,7 +12,7 @@ import { calculateSpringStep, handleCanDismiss } from "./utils";
|
|
|
12
12
|
export const SwipeToCloseDefaults = {
|
|
13
13
|
MIN_PRESENTING_SCALE: 0.915,
|
|
14
14
|
};
|
|
15
|
-
export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss) => {
|
|
15
|
+
export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onDragStart, onDragMove, onDragEnd) => {
|
|
16
16
|
/**
|
|
17
17
|
* The step value at which a card modal
|
|
18
18
|
* is eligible for dismissing via gesture.
|
|
@@ -122,6 +122,7 @@ export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismi
|
|
|
122
122
|
disableContentScrollY(contentEl);
|
|
123
123
|
}
|
|
124
124
|
animation.progressStart(true, isOpen ? 1 : 0);
|
|
125
|
+
onDragStart();
|
|
125
126
|
};
|
|
126
127
|
const onMove = (detail) => {
|
|
127
128
|
const { deltaY } = detail;
|
|
@@ -189,6 +190,13 @@ export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismi
|
|
|
189
190
|
setCardStatusBarDark();
|
|
190
191
|
}
|
|
191
192
|
lastStep = clampedStep;
|
|
193
|
+
const eventDetail = {
|
|
194
|
+
currentY: detail.currentY,
|
|
195
|
+
deltaY: detail.deltaY,
|
|
196
|
+
velocityY: detail.velocityY,
|
|
197
|
+
progress: calculateProgress(el, detail.deltaY),
|
|
198
|
+
};
|
|
199
|
+
onDragMove(eventDetail);
|
|
192
200
|
};
|
|
193
201
|
const onEnd = (detail) => {
|
|
194
202
|
const velocity = detail.velocityY;
|
|
@@ -247,6 +255,13 @@ export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismi
|
|
|
247
255
|
else if (shouldComplete) {
|
|
248
256
|
onDismiss();
|
|
249
257
|
}
|
|
258
|
+
const eventDetail = {
|
|
259
|
+
currentY: detail.currentY,
|
|
260
|
+
deltaY: detail.deltaY,
|
|
261
|
+
velocityY: detail.velocityY,
|
|
262
|
+
progress: calculateProgress(el, detail.deltaY),
|
|
263
|
+
};
|
|
264
|
+
onDragEnd(eventDetail);
|
|
250
265
|
};
|
|
251
266
|
const gesture = createGesture({
|
|
252
267
|
el,
|
|
@@ -264,3 +279,41 @@ export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismi
|
|
|
264
279
|
const computeDuration = (remaining, velocity) => {
|
|
265
280
|
return clamp(400, remaining / Math.abs(velocity * 1.1), 500);
|
|
266
281
|
};
|
|
282
|
+
/**
|
|
283
|
+
* Calculates the progress of the swipe gesture.
|
|
284
|
+
*
|
|
285
|
+
* The progress is a value between 0 and 1 that represents how far
|
|
286
|
+
* the swipe has progressed towards closing the modal.
|
|
287
|
+
*
|
|
288
|
+
* A value closer to 1 means the modal is closer to being opened,
|
|
289
|
+
* while a value closer to 0 means the modal is closer to being closed.
|
|
290
|
+
*
|
|
291
|
+
* @param el The modal
|
|
292
|
+
* @param deltaY The change in Y position (positive when dragging down, negative when dragging up)
|
|
293
|
+
* @returns The progress of the swipe gesture
|
|
294
|
+
*/
|
|
295
|
+
const calculateProgress = (el, deltaY) => {
|
|
296
|
+
const windowHeight = window.innerHeight;
|
|
297
|
+
// Position when fully open
|
|
298
|
+
const modalTop = el.getBoundingClientRect().top;
|
|
299
|
+
/**
|
|
300
|
+
* The distance between the top of the modal and the bottom of the screen
|
|
301
|
+
* is the total distance the modal needs to travel to be fully closed.
|
|
302
|
+
*/
|
|
303
|
+
const totalDistance = windowHeight - modalTop;
|
|
304
|
+
/**
|
|
305
|
+
* The pull percentage is how far the user has swiped compared to the total
|
|
306
|
+
* distance needed to close the modal.
|
|
307
|
+
*/
|
|
308
|
+
const pullPercentage = deltaY / totalDistance;
|
|
309
|
+
/**
|
|
310
|
+
* The progress is the inverse of the pull percentage because
|
|
311
|
+
* when the user starts swiping up, the progress should be close to 1,
|
|
312
|
+
* and when the user has swiped all the way down, the progress should be
|
|
313
|
+
* close to 0.
|
|
314
|
+
*/
|
|
315
|
+
const progress = 1 - pullPercentage;
|
|
316
|
+
// Round to the nearest thousandth to avoid returning very small decimal
|
|
317
|
+
const roundedProgress = Math.round(progress * 1000) / 1000;
|
|
318
|
+
return Math.max(0, Math.min(1, roundedProgress));
|
|
319
|
+
};
|
|
@@ -501,32 +501,7 @@ export class Modal {
|
|
|
501
501
|
return;
|
|
502
502
|
}
|
|
503
503
|
const statusBarStyle = (_a = this.statusBarStyle) !== null && _a !== void 0 ? _a : StatusBarStyle.Default;
|
|
504
|
-
this.gesture = createSwipeToCloseGesture(el, ani, statusBarStyle, () =>
|
|
505
|
-
/**
|
|
506
|
-
* While the gesture animation is finishing
|
|
507
|
-
* it is possible for a user to tap the backdrop.
|
|
508
|
-
* This would result in the dismiss animation
|
|
509
|
-
* being played again. Typically this is avoided
|
|
510
|
-
* by setting `presented = false` on the overlay
|
|
511
|
-
* component; however, we cannot do that here as
|
|
512
|
-
* that would prevent the element from being
|
|
513
|
-
* removed from the DOM.
|
|
514
|
-
*/
|
|
515
|
-
this.gestureAnimationDismissing = true;
|
|
516
|
-
/**
|
|
517
|
-
* Reset the status bar style as the dismiss animation
|
|
518
|
-
* starts otherwise the status bar will be the wrong
|
|
519
|
-
* color for the duration of the dismiss animation.
|
|
520
|
-
* The dismiss method does this as well, but
|
|
521
|
-
* in this case it's only called once the animation
|
|
522
|
-
* has finished.
|
|
523
|
-
*/
|
|
524
|
-
setCardStatusBarDefault(this.statusBarStyle);
|
|
525
|
-
this.animation.onFinish(async () => {
|
|
526
|
-
await this.dismiss(undefined, GESTURE);
|
|
527
|
-
this.gestureAnimationDismissing = false;
|
|
528
|
-
});
|
|
529
|
-
});
|
|
504
|
+
this.gesture = createSwipeToCloseGesture(el, ani, statusBarStyle, () => this.cardOnDismiss(), () => this.onDragStart(), (detail) => this.onDragMove(detail), (detail) => this.onDragEnd(detail));
|
|
530
505
|
this.gesture.enable(true);
|
|
531
506
|
}
|
|
532
507
|
initSheetGesture() {
|
|
@@ -547,7 +522,7 @@ export class Modal {
|
|
|
547
522
|
this.currentBreakpoint = breakpoint;
|
|
548
523
|
this.ionBreakpointDidChange.emit({ breakpoint });
|
|
549
524
|
}
|
|
550
|
-
});
|
|
525
|
+
}, () => this.onDragStart(), (detail) => this.onDragMove(detail), (detail) => this.onDragEnd(detail));
|
|
551
526
|
this.gesture = gesture;
|
|
552
527
|
this.moveSheetToBreakpoint = moveSheetToBreakpoint;
|
|
553
528
|
this.gesture.enable(true);
|
|
@@ -644,6 +619,32 @@ export class Modal {
|
|
|
644
619
|
this.gestureAnimationDismissing = false;
|
|
645
620
|
});
|
|
646
621
|
}
|
|
622
|
+
cardOnDismiss() {
|
|
623
|
+
/**
|
|
624
|
+
* While the gesture animation is finishing
|
|
625
|
+
* it is possible for a user to tap the backdrop.
|
|
626
|
+
* This would result in the dismiss animation
|
|
627
|
+
* being played again. Typically this is avoided
|
|
628
|
+
* by setting `presented = false` on the overlay
|
|
629
|
+
* component; however, we cannot do that here as
|
|
630
|
+
* that would prevent the element from being
|
|
631
|
+
* removed from the DOM.
|
|
632
|
+
*/
|
|
633
|
+
this.gestureAnimationDismissing = true;
|
|
634
|
+
/**
|
|
635
|
+
* Reset the status bar style as the dismiss animation
|
|
636
|
+
* starts otherwise the status bar will be the wrong
|
|
637
|
+
* color for the duration of the dismiss animation.
|
|
638
|
+
* The dismiss method does this as well, but
|
|
639
|
+
* in this case it's only called once the animation
|
|
640
|
+
* has finished.
|
|
641
|
+
*/
|
|
642
|
+
setCardStatusBarDefault(this.statusBarStyle);
|
|
643
|
+
this.animation.onFinish(async () => {
|
|
644
|
+
await this.dismiss(undefined, GESTURE);
|
|
645
|
+
this.gestureAnimationDismissing = false;
|
|
646
|
+
});
|
|
647
|
+
}
|
|
647
648
|
/**
|
|
648
649
|
* Dismiss the modal overlay after it has been presented.
|
|
649
650
|
* This is a no-op if the overlay has not been presented yet. If you want
|
|
@@ -967,6 +968,15 @@ export class Modal {
|
|
|
967
968
|
(_a = this.parentRemovalObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
968
969
|
this.parentRemovalObserver = undefined;
|
|
969
970
|
}
|
|
971
|
+
onDragStart() {
|
|
972
|
+
this.ionDragStart.emit();
|
|
973
|
+
}
|
|
974
|
+
onDragMove(detail) {
|
|
975
|
+
this.ionDragMove.emit(detail);
|
|
976
|
+
}
|
|
977
|
+
onDragEnd(detail) {
|
|
978
|
+
this.ionDragEnd.emit(detail);
|
|
979
|
+
}
|
|
970
980
|
render() {
|
|
971
981
|
const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
|
|
972
982
|
const showHandle = handle !== false && isSheetModal;
|
|
@@ -974,20 +984,20 @@ export class Modal {
|
|
|
974
984
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
975
985
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
976
986
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
977
|
-
return (h(Host, Object.assign({ key: '
|
|
987
|
+
return (h(Host, Object.assign({ key: 'bca3cbdb2ce8e5127d27eae7494c434aaeddaf88', "no-router": true,
|
|
978
988
|
// Allow the modal to be navigable when the handle is focusable
|
|
979
989
|
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
|
|
980
990
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
981
|
-
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '
|
|
991
|
+
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: 'b1c4112123d84d8a9b9d455bcc17d884f99d9f28', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '080c8e6d37b311a1b5ad2655d99f18668abae211', class: "modal-shadow" }), h("div", Object.assign({ key: '8ba05e9520b1b5529bf0caeb766da5bf612d4d14',
|
|
982
992
|
/*
|
|
983
993
|
role and aria-modal must be used on the
|
|
984
994
|
same element. They must also be set inside the
|
|
985
995
|
shadow DOM otherwise ion-button will not be highlighted
|
|
986
996
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
987
997
|
*/
|
|
988
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '
|
|
998
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '2d2d5d731f55755f32ebcbf557f97486dc6202a6', class: "modal-handle",
|
|
989
999
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
990
|
-
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '
|
|
1000
|
+
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: 'c717d19865dafba02e15db79bc0662c5d89e96fd', onSlotchange: this.onSlotChange }))));
|
|
991
1001
|
}
|
|
992
1002
|
static get is() { return "ion-modal"; }
|
|
993
1003
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1060,8 +1070,7 @@ export class Modal {
|
|
|
1060
1070
|
"FrameworkDelegate": {
|
|
1061
1071
|
"location": "import",
|
|
1062
1072
|
"path": "../../interface",
|
|
1063
|
-
"id": "src/interface.d.ts::FrameworkDelegate"
|
|
1064
|
-
"referenceLocation": "FrameworkDelegate"
|
|
1073
|
+
"id": "src/interface.d.ts::FrameworkDelegate"
|
|
1065
1074
|
}
|
|
1066
1075
|
}
|
|
1067
1076
|
},
|
|
@@ -1107,8 +1116,7 @@ export class Modal {
|
|
|
1107
1116
|
"AnimationBuilder": {
|
|
1108
1117
|
"location": "import",
|
|
1109
1118
|
"path": "../../interface",
|
|
1110
|
-
"id": "src/interface.d.ts::AnimationBuilder"
|
|
1111
|
-
"referenceLocation": "AnimationBuilder"
|
|
1119
|
+
"id": "src/interface.d.ts::AnimationBuilder"
|
|
1112
1120
|
}
|
|
1113
1121
|
}
|
|
1114
1122
|
},
|
|
@@ -1131,8 +1139,7 @@ export class Modal {
|
|
|
1131
1139
|
"AnimationBuilder": {
|
|
1132
1140
|
"location": "import",
|
|
1133
1141
|
"path": "../../interface",
|
|
1134
|
-
"id": "src/interface.d.ts::AnimationBuilder"
|
|
1135
|
-
"referenceLocation": "AnimationBuilder"
|
|
1142
|
+
"id": "src/interface.d.ts::AnimationBuilder"
|
|
1136
1143
|
}
|
|
1137
1144
|
}
|
|
1138
1145
|
},
|
|
@@ -1250,8 +1257,7 @@ export class Modal {
|
|
|
1250
1257
|
"ModalHandleBehavior": {
|
|
1251
1258
|
"location": "import",
|
|
1252
1259
|
"path": "./modal-interface",
|
|
1253
|
-
"id": "src/components/modal/modal-interface.ts::ModalHandleBehavior"
|
|
1254
|
-
"referenceLocation": "ModalHandleBehavior"
|
|
1260
|
+
"id": "src/components/modal/modal-interface.ts::ModalHandleBehavior"
|
|
1255
1261
|
}
|
|
1256
1262
|
}
|
|
1257
1263
|
},
|
|
@@ -1277,8 +1283,7 @@ export class Modal {
|
|
|
1277
1283
|
"ComponentRef": {
|
|
1278
1284
|
"location": "import",
|
|
1279
1285
|
"path": "../../interface",
|
|
1280
|
-
"id": "src/interface.d.ts::ComponentRef"
|
|
1281
|
-
"referenceLocation": "ComponentRef"
|
|
1286
|
+
"id": "src/interface.d.ts::ComponentRef"
|
|
1282
1287
|
}
|
|
1283
1288
|
}
|
|
1284
1289
|
},
|
|
@@ -1301,13 +1306,12 @@ export class Modal {
|
|
|
1301
1306
|
"mutable": false,
|
|
1302
1307
|
"complexType": {
|
|
1303
1308
|
"original": "ComponentProps",
|
|
1304
|
-
"resolved": "
|
|
1309
|
+
"resolved": "undefined | { [key: string]: any; }",
|
|
1305
1310
|
"references": {
|
|
1306
1311
|
"ComponentProps": {
|
|
1307
1312
|
"location": "import",
|
|
1308
1313
|
"path": "../../interface",
|
|
1309
|
-
"id": "src/interface.d.ts::ComponentProps"
|
|
1310
|
-
"referenceLocation": "ComponentProps"
|
|
1314
|
+
"id": "src/interface.d.ts::ComponentProps"
|
|
1311
1315
|
}
|
|
1312
1316
|
}
|
|
1313
1317
|
},
|
|
@@ -1604,8 +1608,7 @@ export class Modal {
|
|
|
1604
1608
|
"OverlayEventDetail": {
|
|
1605
1609
|
"location": "import",
|
|
1606
1610
|
"path": "../../utils/overlays-interface",
|
|
1607
|
-
"id": "src/utils/overlays-interface.ts::OverlayEventDetail"
|
|
1608
|
-
"referenceLocation": "OverlayEventDetail"
|
|
1611
|
+
"id": "src/utils/overlays-interface.ts::OverlayEventDetail"
|
|
1609
1612
|
}
|
|
1610
1613
|
}
|
|
1611
1614
|
}
|
|
@@ -1626,8 +1629,7 @@ export class Modal {
|
|
|
1626
1629
|
"OverlayEventDetail": {
|
|
1627
1630
|
"location": "import",
|
|
1628
1631
|
"path": "../../utils/overlays-interface",
|
|
1629
|
-
"id": "src/utils/overlays-interface.ts::OverlayEventDetail"
|
|
1630
|
-
"referenceLocation": "OverlayEventDetail"
|
|
1632
|
+
"id": "src/utils/overlays-interface.ts::OverlayEventDetail"
|
|
1631
1633
|
}
|
|
1632
1634
|
}
|
|
1633
1635
|
}
|
|
@@ -1648,8 +1650,7 @@ export class Modal {
|
|
|
1648
1650
|
"ModalBreakpointChangeEventDetail": {
|
|
1649
1651
|
"location": "import",
|
|
1650
1652
|
"path": "./modal-interface",
|
|
1651
|
-
"id": "src/components/modal/modal-interface.ts::ModalBreakpointChangeEventDetail"
|
|
1652
|
-
"referenceLocation": "ModalBreakpointChangeEventDetail"
|
|
1653
|
+
"id": "src/components/modal/modal-interface.ts::ModalBreakpointChangeEventDetail"
|
|
1653
1654
|
}
|
|
1654
1655
|
}
|
|
1655
1656
|
}
|
|
@@ -1700,8 +1701,7 @@ export class Modal {
|
|
|
1700
1701
|
"OverlayEventDetail": {
|
|
1701
1702
|
"location": "import",
|
|
1702
1703
|
"path": "../../utils/overlays-interface",
|
|
1703
|
-
"id": "src/utils/overlays-interface.ts::OverlayEventDetail"
|
|
1704
|
-
"referenceLocation": "OverlayEventDetail"
|
|
1704
|
+
"id": "src/utils/overlays-interface.ts::OverlayEventDetail"
|
|
1705
1705
|
}
|
|
1706
1706
|
}
|
|
1707
1707
|
}
|
|
@@ -1722,8 +1722,7 @@ export class Modal {
|
|
|
1722
1722
|
"OverlayEventDetail": {
|
|
1723
1723
|
"location": "import",
|
|
1724
1724
|
"path": "../../utils/overlays-interface",
|
|
1725
|
-
"id": "src/utils/overlays-interface.ts::OverlayEventDetail"
|
|
1726
|
-
"referenceLocation": "OverlayEventDetail"
|
|
1725
|
+
"id": "src/utils/overlays-interface.ts::OverlayEventDetail"
|
|
1727
1726
|
}
|
|
1728
1727
|
}
|
|
1729
1728
|
}
|
|
@@ -1745,6 +1744,63 @@ export class Modal {
|
|
|
1745
1744
|
"resolved": "void",
|
|
1746
1745
|
"references": {}
|
|
1747
1746
|
}
|
|
1747
|
+
}, {
|
|
1748
|
+
"method": "ionDragStart",
|
|
1749
|
+
"name": "ionDragStart",
|
|
1750
|
+
"bubbles": true,
|
|
1751
|
+
"cancelable": true,
|
|
1752
|
+
"composed": true,
|
|
1753
|
+
"docs": {
|
|
1754
|
+
"tags": [],
|
|
1755
|
+
"text": "Event that is emitted when the sheet modal or card modal gesture starts."
|
|
1756
|
+
},
|
|
1757
|
+
"complexType": {
|
|
1758
|
+
"original": "void",
|
|
1759
|
+
"resolved": "void",
|
|
1760
|
+
"references": {}
|
|
1761
|
+
}
|
|
1762
|
+
}, {
|
|
1763
|
+
"method": "ionDragMove",
|
|
1764
|
+
"name": "ionDragMove",
|
|
1765
|
+
"bubbles": true,
|
|
1766
|
+
"cancelable": true,
|
|
1767
|
+
"composed": true,
|
|
1768
|
+
"docs": {
|
|
1769
|
+
"tags": [],
|
|
1770
|
+
"text": "Event that is emitted when the sheet modal or card modal gesture moves."
|
|
1771
|
+
},
|
|
1772
|
+
"complexType": {
|
|
1773
|
+
"original": "ModalDragEventDetail",
|
|
1774
|
+
"resolved": "ModalDragEventDetail",
|
|
1775
|
+
"references": {
|
|
1776
|
+
"ModalDragEventDetail": {
|
|
1777
|
+
"location": "import",
|
|
1778
|
+
"path": "./modal-interface",
|
|
1779
|
+
"id": "src/components/modal/modal-interface.ts::ModalDragEventDetail"
|
|
1780
|
+
}
|
|
1781
|
+
}
|
|
1782
|
+
}
|
|
1783
|
+
}, {
|
|
1784
|
+
"method": "ionDragEnd",
|
|
1785
|
+
"name": "ionDragEnd",
|
|
1786
|
+
"bubbles": true,
|
|
1787
|
+
"cancelable": true,
|
|
1788
|
+
"composed": true,
|
|
1789
|
+
"docs": {
|
|
1790
|
+
"tags": [],
|
|
1791
|
+
"text": "Event that is emitted when the sheet modal or card modal gesture ends."
|
|
1792
|
+
},
|
|
1793
|
+
"complexType": {
|
|
1794
|
+
"original": "ModalDragEventDetail",
|
|
1795
|
+
"resolved": "ModalDragEventDetail",
|
|
1796
|
+
"references": {
|
|
1797
|
+
"ModalDragEventDetail": {
|
|
1798
|
+
"location": "import",
|
|
1799
|
+
"path": "./modal-interface",
|
|
1800
|
+
"id": "src/components/modal/modal-interface.ts::ModalDragEventDetail"
|
|
1801
|
+
}
|
|
1802
|
+
}
|
|
1803
|
+
}
|
|
1748
1804
|
}];
|
|
1749
1805
|
}
|
|
1750
1806
|
static get methods() {
|
|
@@ -1817,8 +1873,7 @@ export class Modal {
|
|
|
1817
1873
|
"OverlayEventDetail": {
|
|
1818
1874
|
"location": "import",
|
|
1819
1875
|
"path": "../../utils/overlays-interface",
|
|
1820
|
-
"id": "src/utils/overlays-interface.ts::OverlayEventDetail"
|
|
1821
|
-
"referenceLocation": "OverlayEventDetail"
|
|
1876
|
+
"id": "src/utils/overlays-interface.ts::OverlayEventDetail"
|
|
1822
1877
|
},
|
|
1823
1878
|
"T": {
|
|
1824
1879
|
"location": "global",
|
|
@@ -1844,8 +1899,7 @@ export class Modal {
|
|
|
1844
1899
|
"OverlayEventDetail": {
|
|
1845
1900
|
"location": "import",
|
|
1846
1901
|
"path": "../../utils/overlays-interface",
|
|
1847
|
-
"id": "src/utils/overlays-interface.ts::OverlayEventDetail"
|
|
1848
|
-
"referenceLocation": "OverlayEventDetail"
|
|
1902
|
+
"id": "src/utils/overlays-interface.ts::OverlayEventDetail"
|
|
1849
1903
|
},
|
|
1850
1904
|
"T": {
|
|
1851
1905
|
"location": "global",
|