voyager-ionic-core 9.0.1 → 9.0.6
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/index.js +1 -1
- package/components/ion-accordion-group.js +1 -1
- package/components/ion-accordion.js +1 -1
- package/components/ion-action-sheet.js +1 -1
- package/components/ion-alert.js +1 -1
- package/components/ion-app.js +1 -1
- package/components/ion-avatar.js +1 -1
- package/components/ion-back-button.js +1 -1
- package/components/ion-backdrop.js +1 -1
- package/components/ion-badge.js +1 -1
- package/components/ion-breadcrumb.js +1 -1
- package/components/ion-breadcrumbs.js +1 -1
- package/components/ion-button.js +1 -1
- package/components/ion-buttons.js +1 -1
- package/components/ion-card-content.js +1 -1
- package/components/ion-card-header.js +1 -1
- package/components/ion-card-subtitle.js +1 -1
- package/components/ion-card-title.js +1 -1
- package/components/ion-card.js +1 -1
- package/components/ion-checkbox.js +1 -1
- package/components/ion-chip.js +1 -1
- package/components/ion-col.js +1 -1
- package/components/ion-content.js +1 -1
- package/components/ion-datetime-button.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-fab-button.js +1 -1
- package/components/ion-fab-list.js +1 -1
- package/components/ion-fab.js +1 -1
- package/components/ion-footer.js +1 -1
- package/components/ion-grid.js +1 -1
- package/components/ion-header.js +1 -1
- package/components/ion-icon.js +1 -1
- package/components/ion-img.js +1 -1
- package/components/ion-infinite-scroll-content.js +1 -1
- package/components/ion-infinite-scroll.js +1 -1
- package/components/ion-input-otp.js +1 -1
- package/components/ion-input-password-toggle.js +1 -1
- package/components/ion-input.js +1 -1
- package/components/ion-item-divider.js +1 -1
- package/components/ion-item-group.js +1 -1
- package/components/ion-item-option.js +1 -1
- package/components/ion-item-options.js +1 -1
- package/components/ion-item-sliding.js +1 -1
- package/components/ion-item.js +1 -1
- package/components/ion-label.js +1 -1
- package/components/ion-list-header.js +1 -1
- package/components/ion-list.js +1 -1
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu-toggle.js +1 -1
- package/components/ion-menu.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +1 -1
- package/components/ion-note.js +1 -1
- package/components/ion-picker-column-option.js +1 -1
- package/components/ion-picker-column.js +1 -1
- package/components/ion-picker.js +1 -1
- package/components/ion-popover.js +1 -1
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-radio-group.js +1 -1
- package/components/ion-radio.js +1 -1
- package/components/ion-range.js +1 -1
- 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-ripple-effect.js +1 -1
- package/components/ion-route-redirect.js +1 -1
- package/components/ion-route.js +1 -1
- package/components/ion-router-link.js +1 -1
- 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 +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-segment-content.js +1 -1
- package/components/ion-segment-view.js +1 -1
- package/components/ion-segment.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-option.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-skeleton-text.js +1 -1
- package/components/ion-spinner.js +1 -1
- package/components/ion-split-pane.js +1 -1
- package/components/ion-tab-bar.js +1 -1
- package/components/ion-tab-button.js +1 -1
- package/components/ion-tab.js +1 -1
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +1 -1
- package/components/ion-textarea.js +1 -1
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/ion-toggle.js +1 -1
- package/components/ion-toolbar.js +1 -1
- package/components/{p-Hp8t4RMX.js → p-6sKRBFnK.js} +1 -1
- package/components/{p-qAXsfUff.js → p-B8HBLiYi.js} +1 -1
- package/{dist/ionic/p-Do3zTvCA.js → components/p-BEiYs-sz.js} +1 -1
- package/components/p-BKeulLTJ.js +4 -0
- package/components/{p-5ldEpNdG.js → p-BKxLivx4.js} +1 -1
- package/components/{p-BYJRZKHa.js → p-BLjEwM6v.js} +1 -1
- package/components/{p-Cd1WaN-0.js → p-BNnmwjuy.js} +1 -1
- package/components/{p-COO0eJOA.js → p-BSJriPuC.js} +1 -1
- package/components/p-BUVGbkSc.js +4 -0
- package/components/{p-DL13ieTa.js → p-B_tZQKpS.js} +1 -1
- package/components/p-BexLz2XV.js +4 -0
- package/components/p-BinR4_P7.js +4 -0
- package/components/{p-DxhHlJln.js → p-BrOSQhkA.js} +1 -1
- package/components/p-BriaEJK8.js +4 -0
- package/components/p-BsLM9eQu.js +4 -0
- package/components/{p-DhNuxvJH.js → p-Bu6O-veK.js} +1 -1
- package/components/{p-DJR0R0e1.js → p-C7rB-0-1.js} +1 -1
- package/components/{p-6ZLn6K5e.js → p-C9ioHZq-.js} +1 -1
- package/components/p-CAQG0btC.js +4 -0
- package/components/{p-DMBiAyOR.js → p-CHHkdXfP.js} +1 -1
- package/components/p-CJgshb3W.js +4 -0
- package/components/p-CQjNc-Pz.js +4 -0
- package/components/{p-CJgnoKcN.js → p-CTUMJM0R.js} +1 -1
- package/components/{p-C4VpVfrJ.js → p-CVVUo4J1.js} +1 -1
- package/components/{p-B4lxwJ8N.js → p-CXy2v7GI.js} +1 -1
- package/components/{p-BQyuFxYc.js → p-C_NQIzjP.js} +1 -1
- package/components/{p-D7wDJdFn.js → p-Canp1qah.js} +1 -1
- package/components/p-CcQQ8oRo.js +4 -0
- package/components/{p-GGbIHyEF.js → p-CiFFeRH9.js} +1 -1
- package/components/p-CiXOsJF2.js +4 -0
- package/components/p-Ctw69DyZ.js +4 -0
- package/components/{p-DngGb-NV.js → p-CvzE7FFp.js} +1 -1
- package/components/{p-TWw4e4sO.js → p-CzykzqAO.js} +1 -1
- package/components/p-D0jSx7rE.js +4 -0
- package/components/{p-C-NbvXu4.js → p-D4NOsSCE.js} +1 -1
- package/components/{p-cEN43Ahr.js → p-DGUed0uX.js} +1 -1
- package/components/p-DM2jMsSO.js +4 -0
- package/components/p-DPyjiKOq.js +4 -0
- package/components/{p-BF48Oc0v.js → p-DSmHJ2DH.js} +1 -1
- package/components/p-DWGgvN5e.js +4 -0
- package/components/p-DlUdjUlf.js +4 -0
- package/components/{p-DM1gJSMP.js → p-Dlr7b3_2.js} +1 -1
- package/components/p-F1rV0pyK.js +4 -0
- package/components/{p-DFLJvuRK.js → p-LH1I_Zhd.js} +1 -1
- package/components/p-PPagT42x.js +4 -0
- package/components/{p-CqbGBmqb.js → p-RJT5zTbD.js} +1 -1
- package/components/p-T2dnrBya.js +4 -0
- package/components/p-WMQuK_Tj.js +4 -0
- package/components/p-eJpG4UbM.js +4 -0
- package/components/p-fFx6WCTj.js +4 -0
- package/{dist/ionic/p-BgOvhHy_.js → components/p-q2WJ5Igc.js} +1 -1
- package/components/{p-D5w_FlVa.js → p-y7Nhe3de.js} +1 -1
- package/css/core.css +1 -1
- package/css/core.css.map +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/dist/cjs/{animation-Kd1N7WTN.js → animation-BFKyYY11.js} +3 -3
- package/dist/cjs/{app-globals-b1G4t26O.js → app-globals-BLTzqkrC.js} +1 -1
- package/dist/cjs/attribute-controller-CXIeB0Mn.js +131 -0
- package/dist/cjs/{button-active-CQCFubJJ.js → button-active-CEQaiV9N.js} +2 -2
- package/dist/cjs/{capacitor-DmA66EwP.js → capacitor-BMzmHhwe.js} +3 -3
- package/dist/cjs/{format-bHU8N1g5.js → format-CdRlDqPs.js} +1 -1
- package/dist/cjs/{framework-delegate-d-fWfeI6.js → framework-delegate-DTLbqaaO.js} +1 -1
- package/dist/cjs/{haptic-Ch-X4gRx.js → haptic-CJVUv_GB.js} +1 -1
- package/dist/cjs/{helpers-7wzdhdeg.js → helpers-Crluoxqu.js} +50 -3
- package/dist/cjs/{index-DtvKGwdh.js → index-BAM4223M.js} +2 -2
- package/dist/cjs/{index-C74Q3t6a.js → index-BKpybYNI.js} +7 -8
- package/dist/cjs/{index-BbqUBe2T.js → index-BSD7toMO.js} +10 -8
- package/dist/cjs/{index-DFNrCX7M.js → index-CElfU-dK.js} +8 -9
- package/dist/cjs/{index-CQfEIyLK.js → index-CgXTRA_-.js} +4 -4
- package/dist/cjs/{index-DXoo08JC.js → index-SAR1xwtW.js} +25 -12
- package/dist/cjs/index.cjs.js +19 -19
- package/dist/cjs/{input-shims-VJIiKBKv.js → input-shims-CHghGZe-.js} +16 -17
- package/dist/cjs/{input.utils-EHVE2RK_.js → input.utils-BBZr0wjw.js} +1 -1
- package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-action-sheet.cjs.entry.js +26 -28
- package/dist/cjs/ion-alert.cjs.entry.js +27 -29
- package/dist/cjs/ion-app_8.cjs.entry.js +72 -24
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
- 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 +23 -34
- package/dist/cjs/ion-card_5.cjs.entry.js +19 -7
- package/dist/cjs/ion-checkbox.cjs.entry.js +4 -4
- package/dist/cjs/ion-chip.cjs.entry.js +2 -2
- package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime-button.cjs.entry.js +4 -4
- package/dist/cjs/ion-datetime.cjs.entry.js +34 -29
- 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-otp.cjs.entry.js +3 -3
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +12 -16
- package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +17 -8
- package/dist/cjs/ion-loading.cjs.entry.js +18 -20
- package/dist/cjs/ion-menu_3.cjs.entry.js +15 -17
- package/dist/cjs/ion-modal.cjs.entry.js +177 -172
- package/dist/cjs/ion-nav_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +3 -3
- package/dist/cjs/ion-picker-column.cjs.entry.js +8 -9
- package/dist/cjs/ion-picker.cjs.entry.js +2 -2
- package/dist/cjs/ion-popover.cjs.entry.js +119 -42
- package/dist/cjs/ion-progress-bar.cjs.entry.js +3 -3
- package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-range.cjs.entry.js +4 -4
- package/dist/cjs/ion-refresher_2.cjs.entry.js +8 -9
- package/dist/cjs/ion-reorder_2.cjs.entry.js +6 -7
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
- package/dist/cjs/ion-route_4.cjs.entry.js +4 -4
- package/dist/cjs/ion-searchbar.cjs.entry.js +3 -3
- package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment-view.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-select-modal.cjs.entry.js +8 -10
- package/dist/cjs/ion-select_3.cjs.entry.js +71 -53
- package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
- package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +6 -7
- package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +11 -15
- package/dist/cjs/ion-toast.cjs.entry.js +49 -51
- package/dist/cjs/ion-toggle.cjs.entry.js +6 -7
- package/dist/cjs/{ionic-global-CYJNT-2P.js → ionic-global-C1h8Yi_K.js} +1 -1
- package/dist/cjs/ionic.cjs.js +5 -5
- package/dist/cjs/{ios.transition-DYGiD6gM.js → ios.transition-YFSxiyP_.js} +4 -5
- package/dist/cjs/{item-multiple-inputs-Dv6qrMhm.js → item-multiple-inputs-h2PyAFzG.js} +1 -1
- package/dist/cjs/{keyboard-cHxZlTyz.js → keyboard-C-C7xMKk.js} +1 -1
- package/dist/cjs/{keyboard-Cix5TVkD.js → keyboard-Cv-LNReK.js} +5 -3
- package/dist/cjs/{keyboard-controller-PtZoN2GS.js → keyboard-controller-CLcFxSnb.js} +9 -9
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-CrSkaoz6.js → md.transition-Cm8yg0UK.js} +4 -5
- package/dist/cjs/{overlays-BR21NUIG.js → overlays-C68wNDWY.js} +162 -9
- package/dist/cjs/{select-option-render-CrbLc-1j.js → select-option-render-C-Yh9yZG.js} +2 -2
- package/dist/cjs/{slot-mutation-controller-D6IjSEIh.js → slot-mutation-controller-zixZ5LyH.js} +73 -5
- package/dist/cjs/{status-tap-CNP5eD1R.js → status-tap-C3frTJ4c.js} +3 -3
- package/dist/cjs/{swipe-back-CSIJQfu5.js → swipe-back-ChrfFzIe.js} +2 -2
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/button/button.js +21 -32
- package/dist/collection/components/card/card.js +17 -6
- package/dist/collection/components/content/content.js +62 -8
- package/dist/collection/components/datetime/datetime.js +27 -20
- package/dist/collection/components/input/input.ios.css +6 -0
- package/dist/collection/components/input/input.js +6 -9
- package/dist/collection/components/input/input.md.css +6 -0
- package/dist/collection/components/item/item.js +15 -6
- package/dist/collection/components/modal/modal.ios.css +12 -1
- package/dist/collection/components/modal/modal.js +31 -8
- package/dist/collection/components/modal/modal.md.css +12 -1
- package/dist/collection/components/modal/safe-area-utils.js +69 -90
- package/dist/collection/components/modal/utils.js +7 -0
- package/dist/collection/components/popover/animations/ios.enter.js +20 -6
- package/dist/collection/components/popover/animations/md.enter.js +19 -5
- package/dist/collection/components/popover/utils.js +64 -13
- package/dist/collection/components/select/select.ios.css +1 -1
- package/dist/collection/components/select/select.js +67 -38
- package/dist/collection/components/select/select.md.css +1 -1
- package/dist/collection/components/textarea/textarea.ios.css +15 -1
- package/dist/collection/components/textarea/textarea.js +5 -8
- package/dist/collection/components/textarea/textarea.md.css +15 -1
- package/dist/collection/index.js +1 -1
- package/dist/collection/utils/attribute-controller.js +126 -0
- package/dist/collection/utils/forms/click-controller.js +70 -0
- package/dist/collection/utils/forms/index.js +1 -0
- package/dist/collection/utils/helpers.js +44 -3
- package/dist/collection/utils/logging/index.js +4 -0
- package/dist/collection/utils/overlays.js +34 -0
- package/dist/collection/utils/sanitization/index.js +10 -8
- package/dist/docs.json +9 -3
- package/dist/esm/{animation-BFNVlYum.js → animation-CFd8Olt3.js} +2 -2
- package/dist/esm/{app-globals-BgX0BGL1.js → app-globals-7GHLBkwd.js} +1 -1
- package/dist/esm/attribute-controller-Cn665x42.js +128 -0
- package/dist/esm/{button-active-BfOvDr3b.js → button-active-DMuYeDQN.js} +2 -2
- package/dist/esm/{capacitor-CFERIeaU.js → capacitor-CoEgIpR9.js} +1 -1
- package/dist/esm/{format-DDFE9jM5.js → format-C9zPmwKU.js} +1 -1
- package/dist/esm/{framework-delegate-BwNhx9NR.js → framework-delegate-DeT5pmPB.js} +1 -1
- package/dist/esm/{haptic-Cq4UAeka.js → haptic-Dxm7ZmT5.js} +1 -1
- package/dist/esm/{helpers-BSmc0nst.js → helpers-B54ynME_.js} +47 -4
- package/dist/esm/{index-C1b9CLFg.js → index--21qeSt0.js} +2 -2
- package/dist/esm/{index-DnA_7Bnx.js → index-B8iieOdw.js} +4 -4
- package/dist/esm/{index-BuPaALjU.js → index-B9jhwvmO.js} +5 -6
- package/dist/esm/{index-CqoUoxgG.js → index-D4ZMZz_3.js} +10 -8
- package/dist/esm/{index-C23AVPx9.js → index-D9OR05yj.js} +26 -13
- package/dist/esm/{index-CJln0gS3.js → index-D_xZtbw6.js} +2 -3
- package/dist/esm/index.js +11 -13
- package/dist/esm/{input-shims-Dqk-Ou25.js → input-shims-MCrhq67U.js} +5 -6
- package/dist/esm/{input.utils-rqoH22pW.js → input.utils-B-IIWrwT.js} +1 -1
- package/dist/esm/ion-accordion_2.entry.js +3 -3
- package/dist/esm/ion-action-sheet.entry.js +11 -13
- package/dist/esm/ion-alert.entry.js +11 -13
- package/dist/esm/ion-app_8.entry.js +72 -24
- package/dist/esm/ion-avatar_3.entry.js +2 -2
- 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 +23 -34
- package/dist/esm/ion-card_5.entry.js +19 -7
- package/dist/esm/ion-checkbox.entry.js +4 -4
- package/dist/esm/ion-chip.entry.js +2 -2
- package/dist/esm/ion-col_3.entry.js +2 -2
- package/dist/esm/ion-datetime-button.entry.js +4 -4
- package/dist/esm/ion-datetime.entry.js +33 -28
- 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-otp.entry.js +3 -3
- package/dist/esm/ion-input-password-toggle.entry.js +2 -2
- package/dist/esm/ion-input.entry.js +12 -16
- package/dist/esm/ion-item-option_3.entry.js +4 -4
- package/dist/esm/ion-item_8.entry.js +17 -8
- package/dist/esm/ion-loading.entry.js +7 -9
- package/dist/esm/ion-menu_3.entry.js +7 -9
- package/dist/esm/ion-modal.entry.js +115 -110
- package/dist/esm/ion-nav_2.entry.js +6 -6
- package/dist/esm/ion-picker-column-option.entry.js +3 -3
- package/dist/esm/ion-picker-column.entry.js +5 -6
- package/dist/esm/ion-picker.entry.js +2 -2
- package/dist/esm/ion-popover.entry.js +108 -31
- package/dist/esm/ion-progress-bar.entry.js +3 -3
- package/dist/esm/ion-radio_2.entry.js +4 -4
- package/dist/esm/ion-range.entry.js +4 -4
- package/dist/esm/ion-refresher_2.entry.js +8 -9
- package/dist/esm/ion-reorder_2.entry.js +6 -7
- package/dist/esm/ion-ripple-effect.entry.js +2 -2
- package/dist/esm/ion-route_4.entry.js +4 -4
- package/dist/esm/ion-searchbar.entry.js +3 -3
- package/dist/esm/ion-segment-content.entry.js +1 -1
- package/dist/esm/ion-segment-view.entry.js +1 -1
- package/dist/esm/ion-segment_2.entry.js +3 -3
- package/dist/esm/ion-select-modal.entry.js +7 -9
- package/dist/esm/ion-select_3.entry.js +66 -48
- package/dist/esm/ion-spinner.entry.js +2 -2
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar_2.entry.js +6 -7
- package/dist/esm/ion-tab_2.entry.js +3 -3
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +11 -15
- package/dist/esm/ion-toast.entry.js +7 -9
- package/dist/esm/ion-toggle.entry.js +6 -7
- package/dist/esm/{ionic-global-ZXjCXKH0.js → ionic-global-B-G43ddm.js} +1 -1
- package/dist/esm/ionic.js +6 -6
- package/dist/esm/{ios.transition-CWAgfQ1r.js → ios.transition-CRfGj4Mo.js} +4 -5
- package/dist/esm/{item-multiple-inputs-DZnIiOO_.js → item-multiple-inputs-BSD9wGHO.js} +1 -1
- package/dist/esm/{keyboard-Cj8mLJeq.js → keyboard-DDw62P0D.js} +5 -3
- package/dist/esm/{keyboard-controller-DEwoa1ev.js → keyboard-controller-Dzjet5wD.js} +2 -2
- package/dist/esm/{keyboard-DAF8GNJ9.js → keyboard-ly3M0GO7.js} +1 -1
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-ZuqDDdDW.js → md.transition-wqThNy_C.js} +4 -5
- package/dist/esm/{overlays-DKE0DgvE.js → overlays-BQnV0HAU.js} +156 -7
- package/dist/esm/{select-option-render-1W6W9pbC.js → select-option-render-CGxPejmz.js} +2 -2
- package/dist/esm/{slot-mutation-controller-B5NpUZ-N.js → slot-mutation-controller-C3s4-_YN.js} +69 -3
- package/dist/esm/{status-tap-Cv9gb3ja.js → status-tap-DRx9wSD_.js} +3 -3
- package/dist/esm/{swipe-back-De5HlmeM.js → swipe-back-CXmdi75W.js} +2 -2
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-8b80d9f9.entry.js → p-0517aec4.entry.js} +1 -1
- package/dist/ionic/{p-ee09ac9d.entry.js → p-083b1119.entry.js} +1 -1
- package/dist/ionic/p-0ab133d6.entry.js +4 -0
- package/dist/ionic/{p-271c3640.entry.js → p-1110da0d.entry.js} +1 -1
- package/dist/ionic/p-1213b719.entry.js +4 -0
- package/dist/ionic/p-150f350e.entry.js +4 -0
- package/dist/ionic/{p-38b9375b.entry.js → p-20d1ac29.entry.js} +1 -1
- package/dist/ionic/p-24b0a961.entry.js +4 -0
- package/dist/ionic/{p-f0fb23c1.entry.js → p-2e6e933d.entry.js} +1 -1
- package/dist/ionic/p-30dcf43b.entry.js +4 -0
- package/dist/ionic/p-336ea4b8.entry.js +4 -0
- package/dist/ionic/{p-b9b4e85d.entry.js → p-378341d1.entry.js} +1 -1
- package/dist/ionic/{p-191a651e.entry.js → p-37f46670.entry.js} +1 -1
- package/dist/ionic/p-3a5faaa8.entry.js +4 -0
- package/dist/ionic/{p-efc0cf82.entry.js → p-3c4b0ba7.entry.js} +1 -1
- package/dist/ionic/p-42b2a992.entry.js +4 -0
- package/dist/ionic/p-49a16200.entry.js +4 -0
- package/dist/ionic/{p-837db1b9.entry.js → p-4dbb2f4f.entry.js} +1 -1
- package/dist/ionic/p-52dc3309.entry.js +4 -0
- package/dist/ionic/{p-85599fe3.entry.js → p-58f914ee.entry.js} +1 -1
- package/dist/ionic/{p-561af487.entry.js → p-5b9666be.entry.js} +1 -1
- package/dist/ionic/p-5c19330c.entry.js +4 -0
- package/dist/ionic/{p-3bba83ee.entry.js → p-61b304c8.entry.js} +1 -1
- package/dist/ionic/p-624f2fa8.entry.js +4 -0
- package/dist/ionic/p-636349e2.entry.js +4 -0
- package/dist/ionic/{p-d8c138d9.entry.js → p-6865f0e1.entry.js} +1 -1
- package/dist/ionic/p-7441ed2b.entry.js +4 -0
- package/dist/ionic/p-76309bab.entry.js +4 -0
- package/dist/ionic/p-83448626.entry.js +4 -0
- package/dist/ionic/{p-5d9094ac.entry.js → p-834afcf7.entry.js} +1 -1
- package/dist/ionic/{p-099b7f9f.entry.js → p-93cd738b.entry.js} +1 -1
- package/dist/ionic/{p-d6755739.entry.js → p-9b78fedf.entry.js} +1 -1
- package/dist/ionic/p-9dd9788c.entry.js +4 -0
- package/dist/ionic/{p-DYUjHcuH.js → p-B4ELlbJE.js} +1 -1
- package/dist/ionic/p-B4wzg4z4.js +4 -0
- package/dist/ionic/p-B4xjg_Qu.js +4 -0
- package/dist/ionic/{p-T71k3C35.js → p-BCgqWm-V.js} +1 -1
- package/dist/ionic/p-BChRVdVv.js +4 -0
- package/dist/ionic/{p-DTxBioUO.js → p-BUB5OrpU.js} +1 -1
- package/dist/ionic/p-BVEsh7-M.js +4 -0
- package/dist/ionic/p-Ba6ZV-qU.js +4 -0
- package/dist/ionic/p-BhMQahM6.js +4 -0
- package/dist/ionic/p-BtHAx8im.js +4 -0
- package/dist/ionic/{p-DZ6Hmc-8.js → p-Bv-6401R.js} +1 -1
- package/dist/ionic/{p-C8XilMh0.js → p-CCik51Nv.js} +1 -1
- package/dist/ionic/p-CTmJSZcs.js +4 -0
- package/dist/ionic/{p-BaeKWZ-a.js → p-CVwXN07G.js} +1 -1
- package/dist/ionic/p-CgQdInM0.js +4 -0
- package/{components/p-BJr2B5hZ.js → dist/ionic/p-CrAPHbJ3.js} +1 -1
- package/dist/ionic/p-CsWrz1c2.js +4 -0
- package/dist/ionic/p-D5akOqD0.js +4 -0
- package/dist/ionic/{p-C23AVPx9.js → p-D9OR05yj.js} +2 -2
- package/dist/ionic/{p-D4OrdtJf.js → p-DHf9V6zI.js} +1 -1
- package/dist/ionic/{p-Bd72UYI2.js → p-DNxEB9-T.js} +1 -1
- package/dist/ionic/p-DZUqAr_6.js +4 -0
- package/dist/ionic/{p-CM5OBjTW.js → p-DffXRKHu.js} +1 -1
- package/dist/ionic/{p-BMPN55of.js → p-DxvRP6ld.js} +1 -1
- package/dist/ionic/p-Dzew6Qv7.js +4 -0
- package/dist/ionic/p-PkaVMJga.js +4 -0
- package/dist/ionic/{p-4712a8a9.entry.js → p-b0a3dd1a.entry.js} +1 -1
- package/dist/ionic/p-b1164028.entry.js +4 -0
- package/dist/ionic/{p-ca1b8865.entry.js → p-b710b4b8.entry.js} +1 -1
- package/dist/ionic/{p-6e386853.entry.js → p-b9659d21.entry.js} +1 -1
- package/dist/ionic/{p-68cc89a6.entry.js → p-ba7bd621.entry.js} +1 -1
- package/dist/ionic/{p-db449915.entry.js → p-c2a23101.entry.js} +1 -1
- package/dist/ionic/p-daaecea3.entry.js +4 -0
- package/dist/ionic/p-e05073f6.entry.js +4 -0
- package/dist/ionic/{p-90f50a65.entry.js → p-e137f724.entry.js} +1 -1
- package/dist/ionic/p-e1969fd1.entry.js +4 -0
- package/dist/ionic/{p-7fbb3319.entry.js → p-e338693a.entry.js} +1 -1
- package/dist/ionic/p-e4c3f17f.entry.js +4 -0
- package/dist/ionic/p-e7414c33.entry.js +4 -0
- package/dist/ionic/{p-dd01be0a.entry.js → p-eb762f80.entry.js} +1 -1
- package/dist/ionic/{p-ec00fd0d.entry.js → p-edcb63e5.entry.js} +1 -1
- package/dist/ionic/p-f19e50f8.entry.js +4 -0
- package/dist/ionic/p-f9057f70.entry.js +4 -0
- package/dist/ionic/{p-9c5f2691.entry.js → p-f99cf5aa.entry.js} +1 -1
- package/dist/ionic/{p-54cbb0a7.entry.js → p-fee863dc.entry.js} +1 -1
- package/dist/ionic/p-kKvGoaEe.js +4 -0
- package/dist/ionic/p-tXpzvta8.js +4 -0
- package/dist/ionic/p-vPo3vRFc.js +4 -0
- package/dist/types/components/button/button.d.ts +3 -12
- package/dist/types/components/card/card.d.ts +3 -1
- package/dist/types/components/content/content.d.ts +28 -3
- package/dist/types/components/datetime/datetime.d.ts +5 -10
- package/dist/types/components/input/input.d.ts +1 -0
- package/dist/types/components/item/item.d.ts +1 -1
- package/dist/types/components/modal/modal.d.ts +9 -1
- package/dist/types/components/modal/safe-area-utils.d.ts +28 -14
- package/dist/types/components/modal/utils.d.ts +4 -0
- package/dist/types/components/popover/utils.d.ts +16 -3
- package/dist/types/components/select/select.d.ts +11 -0
- package/dist/types/components/textarea/textarea.d.ts +1 -0
- package/dist/types/components.d.ts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/stencil-public-runtime.d.ts +61 -55
- package/dist/types/utils/attribute-controller.d.ts +56 -0
- package/dist/types/utils/forms/click-controller.d.ts +36 -0
- package/dist/types/utils/forms/index.d.ts +1 -0
- package/dist/types/utils/helpers.d.ts +27 -2
- package/dist/types/utils/logging/index.d.ts +4 -0
- package/dist/types/utils/overlays.d.ts +15 -0
- package/dist/types/utils/sanitization/index.d.ts +2 -2
- package/hydrate/index.js +817 -299
- package/hydrate/index.mjs +817 -299
- package/package.json +4 -4
- package/components/p-1sJ0ZDPe.js +0 -4
- package/components/p-BNBnVi_1.js +0 -4
- package/components/p-BT9-hMMz.js +0 -4
- package/components/p-BWoa-cki.js +0 -4
- package/components/p-BgkOsq-d.js +0 -4
- package/components/p-Bi-it1EH.js +0 -4
- package/components/p-C0493tbX.js +0 -4
- package/components/p-C09TXohi.js +0 -4
- package/components/p-CG_zZq_I.js +0 -4
- package/components/p-CMRYD_yR.js +0 -4
- package/components/p-CNLioZ3B.js +0 -4
- package/components/p-CWAks_S_.js +0 -4
- package/components/p-CrAKlX71.js +0 -4
- package/components/p-Cw6WocLJ.js +0 -4
- package/components/p-DGPjJNOU.js +0 -4
- package/components/p-DZRZic9C.js +0 -4
- package/components/p-DiuOa1vw.js +0 -4
- package/components/p-Dj40C8gm.js +0 -4
- package/components/p-Djmz-ssp.js +0 -4
- package/components/p-DnBNYc7u.js +0 -4
- package/components/p-DwSXbQSz.js +0 -4
- package/components/p-M34T2gyX.js +0 -4
- package/components/p-YjMkHuvH.js +0 -4
- package/dist/cjs/hardware-back-button-Bu4Dzw8l.js +0 -121
- package/dist/cjs/index-DkNv4J_i.js +0 -10
- package/dist/esm/hardware-back-button-DmkiRgOT.js +0 -115
- package/dist/esm/index-ZjP4CjeZ.js +0 -7
- package/dist/ionic/p-06c6b540.entry.js +0 -4
- package/dist/ionic/p-0dcb7bb6.entry.js +0 -4
- package/dist/ionic/p-1347880c.entry.js +0 -4
- package/dist/ionic/p-1f24cb24.entry.js +0 -4
- package/dist/ionic/p-2c52fe3e.entry.js +0 -4
- package/dist/ionic/p-2ea4bb36.entry.js +0 -4
- package/dist/ionic/p-338a02e0.entry.js +0 -4
- package/dist/ionic/p-4c3e50f8.entry.js +0 -4
- package/dist/ionic/p-4e2fef42.entry.js +0 -4
- package/dist/ionic/p-5906ea6f.entry.js +0 -4
- package/dist/ionic/p-5cc09b40.entry.js +0 -4
- package/dist/ionic/p-612ea3b1.entry.js +0 -4
- package/dist/ionic/p-66f150ec.entry.js +0 -4
- package/dist/ionic/p-77c96e08.entry.js +0 -4
- package/dist/ionic/p-7bfeccb3.entry.js +0 -4
- package/dist/ionic/p-7e394cc3.entry.js +0 -4
- package/dist/ionic/p-9595e305.entry.js +0 -4
- package/dist/ionic/p-BY6BzzPF.js +0 -4
- package/dist/ionic/p-BhamHSw3.js +0 -4
- package/dist/ionic/p-BijjLYjT.js +0 -4
- package/dist/ionic/p-CER8qW8Y.js +0 -4
- package/dist/ionic/p-CFuOr1Tu.js +0 -4
- package/dist/ionic/p-CIGNaXM1.js +0 -4
- package/dist/ionic/p-CMZYmFb4.js +0 -4
- package/dist/ionic/p-CkxVYPtX.js +0 -4
- package/dist/ionic/p-CmXuiRT6.js +0 -4
- package/dist/ionic/p-D5t_-oMk.js +0 -4
- package/dist/ionic/p-D6rHcCvc.js +0 -4
- package/dist/ionic/p-DLM95R4x.js +0 -4
- package/dist/ionic/p-D_gb-kdd.js +0 -4
- package/dist/ionic/p-DajLgJ4d.js +0 -4
- package/dist/ionic/p-ZjP4CjeZ.js +0 -4
- package/dist/ionic/p-a1cc2861.entry.js +0 -4
- package/dist/ionic/p-a20a2ebe.entry.js +0 -4
- package/dist/ionic/p-a8ff2489.entry.js +0 -4
- package/dist/ionic/p-b3532b8d.entry.js +0 -4
- package/dist/ionic/p-b80c86c4.entry.js +0 -4
- package/dist/ionic/p-c57fc396.entry.js +0 -4
- package/dist/ionic/p-cc4320d3.entry.js +0 -4
- package/dist/ionic/p-f83b3e0c.entry.js +0 -4
- package/dist/ionic/p-fU3rOYad.js +0 -4
- package/dist/ionic/p-zWf7R2xV.js +0 -4
|
@@ -3,25 +3,23 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var index$
|
|
7
|
-
var index
|
|
8
|
-
var frameworkDelegate = require('./framework-delegate-
|
|
9
|
-
var helpers = require('./helpers-
|
|
6
|
+
var index$2 = require('./index-SAR1xwtW.js');
|
|
7
|
+
var index = require('./index-BAM4223M.js');
|
|
8
|
+
var frameworkDelegate = require('./framework-delegate-DTLbqaaO.js');
|
|
9
|
+
var helpers = require('./helpers-Crluoxqu.js');
|
|
10
10
|
var lockController = require('./lock-controller-aDB9wrEf.js');
|
|
11
|
-
var capacitor = require('./capacitor-
|
|
12
|
-
var
|
|
11
|
+
var capacitor = require('./capacitor-BMzmHhwe.js');
|
|
12
|
+
var hardwareBackButton = require('./overlays-C68wNDWY.js');
|
|
13
13
|
var theme = require('./theme-Bw0rpaNN.js');
|
|
14
|
-
var index$
|
|
15
|
-
var ionicGlobal = require('./ionic-global-
|
|
16
|
-
var keyboard = require('./keyboard-
|
|
17
|
-
var animation = require('./animation-
|
|
14
|
+
var index$3 = require('./index-CgXTRA_-.js');
|
|
15
|
+
var ionicGlobal = require('./ionic-global-C1h8Yi_K.js');
|
|
16
|
+
var keyboard = require('./keyboard-Cv-LNReK.js');
|
|
17
|
+
var animation = require('./animation-BFKyYY11.js');
|
|
18
18
|
var cubicBezier = require('./cubic-bezier-DAjy1V-e.js');
|
|
19
|
-
var index$
|
|
20
|
-
var index = require('./index-DkNv4J_i.js');
|
|
19
|
+
var index$1 = require('./index-DRPqwSvU.js');
|
|
21
20
|
require('./dir-zwDPRE5K.js');
|
|
22
|
-
require('./hardware-back-button-Bu4Dzw8l.js');
|
|
23
21
|
require('./gesture-controller-CeJslptU.js');
|
|
24
|
-
require('./keyboard-
|
|
22
|
+
require('./keyboard-C-C7xMKk.js');
|
|
25
23
|
|
|
26
24
|
var Style;
|
|
27
25
|
(function (Style) {
|
|
@@ -118,17 +116,23 @@ const getBackdropValueForSheet = (x, backdropBreakpoint) => {
|
|
|
118
116
|
*
|
|
119
117
|
*/
|
|
120
118
|
const setCardStatusBarDark = () => {
|
|
121
|
-
if (!
|
|
119
|
+
if (!helpers.win || helpers.win.innerWidth >= 768) {
|
|
122
120
|
return;
|
|
123
121
|
}
|
|
124
122
|
StatusBar.setStyle({ style: Style.Dark });
|
|
125
123
|
};
|
|
126
124
|
const setCardStatusBarDefault = (defaultStyle = Style.Default) => {
|
|
127
|
-
if (!
|
|
125
|
+
if (!helpers.win || helpers.win.innerWidth >= 768) {
|
|
128
126
|
return;
|
|
129
127
|
}
|
|
130
128
|
StatusBar.setStyle({ style: defaultStyle });
|
|
131
129
|
};
|
|
130
|
+
/**
|
|
131
|
+
* Calls back when the modal's resolved `--height` changes.
|
|
132
|
+
*/
|
|
133
|
+
const onModalHeightChange = (hostEl, callback) => {
|
|
134
|
+
return helpers.onCustomPropertyChange(hostEl, '--height', () => callback());
|
|
135
|
+
};
|
|
132
136
|
|
|
133
137
|
/**
|
|
134
138
|
* Swiping is only possible when the content is scrolled to the top, so that we
|
|
@@ -141,8 +145,8 @@ const setCardStatusBarDefault = (defaultStyle = Style.Default) => {
|
|
|
141
145
|
* synchronous operation, and `getScrollElement` is asynchronous.
|
|
142
146
|
*/
|
|
143
147
|
const canSwipeOnContent = (contentEl) => {
|
|
144
|
-
const scrollEl = index
|
|
145
|
-
const hasRefresherInContent = !!index
|
|
148
|
+
const scrollEl = index.isIonContent(contentEl) ? helpers.getElementRoot(contentEl).querySelector('.inner-scroll') : contentEl;
|
|
149
|
+
const hasRefresherInContent = !!index.findRefresherInContent(contentEl);
|
|
146
150
|
return !hasRefresherInContent && scrollEl.scrollTop === 0;
|
|
147
151
|
};
|
|
148
152
|
const handleCanDismiss = async (el, animation) => {
|
|
@@ -162,7 +166,7 @@ const handleCanDismiss = async (el, animation) => {
|
|
|
162
166
|
* If the function returns `true`,
|
|
163
167
|
* then we can proceed with dismiss.
|
|
164
168
|
*/
|
|
165
|
-
const shouldDismiss = await el.canDismiss(undefined,
|
|
169
|
+
const shouldDismiss = await el.canDismiss(undefined, hardwareBackButton.GESTURE);
|
|
166
170
|
if (!shouldDismiss) {
|
|
167
171
|
return;
|
|
168
172
|
}
|
|
@@ -279,7 +283,7 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
|
|
|
279
283
|
let initialScrollY = true;
|
|
280
284
|
let lastStep = 0;
|
|
281
285
|
const getScrollY = () => {
|
|
282
|
-
if (contentEl && index
|
|
286
|
+
if (contentEl && index.isIonContent(contentEl)) {
|
|
283
287
|
return contentEl.scrollY;
|
|
284
288
|
/**
|
|
285
289
|
* Custom scroll containers are intended to be
|
|
@@ -305,7 +309,7 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
|
|
|
305
309
|
* swipe again. The target content will not
|
|
306
310
|
* be the same between swipes.
|
|
307
311
|
*/
|
|
308
|
-
contentEl = index
|
|
312
|
+
contentEl = index.findClosestIonContent(target);
|
|
309
313
|
if (contentEl) {
|
|
310
314
|
return canSwipeOnContent(contentEl);
|
|
311
315
|
}
|
|
@@ -349,7 +353,7 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
|
|
|
349
353
|
* happen at the same time as the gesture.
|
|
350
354
|
*/
|
|
351
355
|
if (deltaY > 0 && contentEl) {
|
|
352
|
-
index
|
|
356
|
+
index.disableContentScrollY(contentEl);
|
|
353
357
|
}
|
|
354
358
|
animation.progressStart(true, isOpen ? 1 : 0);
|
|
355
359
|
onDragStart();
|
|
@@ -363,7 +367,7 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
|
|
|
363
367
|
* happen at the same time as the gesture.
|
|
364
368
|
*/
|
|
365
369
|
if (deltaY > 0 && contentEl) {
|
|
366
|
-
index
|
|
370
|
+
index.disableContentScrollY(contentEl);
|
|
367
371
|
}
|
|
368
372
|
/**
|
|
369
373
|
* If we are swiping on the content
|
|
@@ -458,7 +462,7 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
|
|
|
458
462
|
isOpen = shouldComplete;
|
|
459
463
|
gesture.enable(false);
|
|
460
464
|
if (contentEl) {
|
|
461
|
-
index
|
|
465
|
+
index.resetContentScrollY(contentEl, initialScrollY);
|
|
462
466
|
}
|
|
463
467
|
animation
|
|
464
468
|
.onFinish(() => {
|
|
@@ -507,10 +511,10 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
|
|
|
507
511
|
};
|
|
508
512
|
onDragEnd(eventDetail);
|
|
509
513
|
};
|
|
510
|
-
const gesture = index$
|
|
514
|
+
const gesture = index$1.createGesture({
|
|
511
515
|
el,
|
|
512
516
|
gestureName: 'modalSwipeToClose',
|
|
513
|
-
gesturePriority:
|
|
517
|
+
gesturePriority: hardwareBackButton.OVERLAY_GESTURE_PRIORITY,
|
|
514
518
|
direction: 'y',
|
|
515
519
|
threshold: 10,
|
|
516
520
|
canStart,
|
|
@@ -1062,7 +1066,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1062
1066
|
* as inputs should not be focusable outside
|
|
1063
1067
|
* the sheet.
|
|
1064
1068
|
*/
|
|
1065
|
-
baseEl.classList.remove(
|
|
1069
|
+
baseEl.classList.remove(hardwareBackButton.FOCUS_TRAP_DISABLE_CLASS);
|
|
1066
1070
|
};
|
|
1067
1071
|
const disableBackdrop = () => {
|
|
1068
1072
|
baseEl.style.setProperty('pointer-events', 'none');
|
|
@@ -1074,7 +1078,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1074
1078
|
* Adding this class disables focus trapping
|
|
1075
1079
|
* for the sheet temporarily.
|
|
1076
1080
|
*/
|
|
1077
|
-
baseEl.classList.add(
|
|
1081
|
+
baseEl.classList.add(hardwareBackButton.FOCUS_TRAP_DISABLE_CLASS);
|
|
1078
1082
|
};
|
|
1079
1083
|
/**
|
|
1080
1084
|
* Toggles the footer to an absolute position while moving to prevent
|
|
@@ -1198,7 +1202,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1198
1202
|
* For example, when using ion-nav within a modal it is possible to swipe, push a view,
|
|
1199
1203
|
* and then swipe again. The target content will not be the same between swipes.
|
|
1200
1204
|
*/
|
|
1201
|
-
const contentEl = index
|
|
1205
|
+
const contentEl = index.findClosestIonContent(detail.event.target);
|
|
1202
1206
|
currentBreakpoint = getCurrentBreakpoint();
|
|
1203
1207
|
/**
|
|
1204
1208
|
* Upwards swipes on the content cannot move the sheet anyway, so this only
|
|
@@ -1235,9 +1239,9 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1235
1239
|
* which would impact performance significantly.
|
|
1236
1240
|
*/
|
|
1237
1241
|
if (!expandToScroll) {
|
|
1238
|
-
const targetEl = index
|
|
1242
|
+
const targetEl = index.findClosestIonContent(detail.event.target);
|
|
1239
1243
|
cachedScrollEl =
|
|
1240
|
-
targetEl && index
|
|
1244
|
+
targetEl && index.isIonContent(targetEl) ? helpers.getElementRoot(targetEl).querySelector('.inner-scroll') : targetEl;
|
|
1241
1245
|
}
|
|
1242
1246
|
/**
|
|
1243
1247
|
* If expandToScroll is disabled, we need to swap
|
|
@@ -1629,7 +1633,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1629
1633
|
*/
|
|
1630
1634
|
return viewportBottom - activeHeight;
|
|
1631
1635
|
};
|
|
1632
|
-
const gesture = index$
|
|
1636
|
+
const gesture = index$1.createGesture({
|
|
1633
1637
|
el: wrapperEl,
|
|
1634
1638
|
gestureName: 'modalSheet',
|
|
1635
1639
|
gesturePriority: 40,
|
|
@@ -1657,40 +1661,12 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1657
1661
|
};
|
|
1658
1662
|
};
|
|
1659
1663
|
|
|
1660
|
-
/**
|
|
1661
|
-
* These thresholds match the SCSS media query breakpoints in modal.vars.scss
|
|
1662
|
-
* that trigger the centered dialog layout (non-fullscreen modal).
|
|
1663
|
-
*
|
|
1664
|
-
* SCSS defines two height breakpoints: $modal-inset-min-height-small (600px)
|
|
1665
|
-
* and $modal-inset-min-height-large (768px). We use the smaller one because
|
|
1666
|
-
* that's the threshold where the modal transitions from fullscreen to centered
|
|
1667
|
-
* dialog — the larger breakpoint only increases the dialog's height.
|
|
1668
|
-
*/
|
|
1669
|
-
const MODAL_INSET_MIN_WIDTH = 768;
|
|
1670
|
-
const MODAL_INSET_MIN_HEIGHT = 600;
|
|
1671
1664
|
const EDGE_THRESHOLD = 5;
|
|
1672
|
-
/**
|
|
1673
|
-
* CSS values for `--width` / `--height` that are treated as fullscreen
|
|
1674
|
-
* (modal touches the corresponding screen edges). Empty string means the
|
|
1675
|
-
* property was not overridden. See `hasCustomModalDimensions()`.
|
|
1676
|
-
*/
|
|
1677
|
-
const FULLSCREEN_SIZE_VALUES = new Set(['', '100%', '100vw', '100vh', '100dvw', '100dvh', '100svw', '100svh']);
|
|
1678
1665
|
/**
|
|
1679
1666
|
* Cache for resolved root safe-area-top value, invalidated once per frame.
|
|
1680
1667
|
*/
|
|
1681
1668
|
let cachedRootSafeAreaTop = null;
|
|
1682
1669
|
let cacheInvalidationScheduled = false;
|
|
1683
|
-
/**
|
|
1684
|
-
* Determines if the current viewport meets the CSS media query conditions
|
|
1685
|
-
* that cause regular modals to render as centered dialogs instead of fullscreen.
|
|
1686
|
-
* Matches: @media (min-width: 768px) and (min-height: 600px)
|
|
1687
|
-
*/
|
|
1688
|
-
const isCenteredDialogViewport = () => {
|
|
1689
|
-
if (!index.win)
|
|
1690
|
-
return false;
|
|
1691
|
-
return index.win.matchMedia(`(min-width: ${MODAL_INSET_MIN_WIDTH}px) and (min-height: ${MODAL_INSET_MIN_HEIGHT}px)`)
|
|
1692
|
-
.matches;
|
|
1693
|
-
};
|
|
1694
1670
|
/**
|
|
1695
1671
|
* Resolves the current root --ion-safe-area-top value to pixels.
|
|
1696
1672
|
* Uses a temporary element because getComputedStyle on :root returns
|
|
@@ -1703,7 +1679,7 @@ const getRootSafeAreaTop = () => {
|
|
|
1703
1679
|
if (cachedRootSafeAreaTop !== null) {
|
|
1704
1680
|
return cachedRootSafeAreaTop;
|
|
1705
1681
|
}
|
|
1706
|
-
const doc =
|
|
1682
|
+
const doc = helpers.win?.document;
|
|
1707
1683
|
if (!doc?.body) {
|
|
1708
1684
|
return 0;
|
|
1709
1685
|
}
|
|
@@ -1724,55 +1700,64 @@ const getRootSafeAreaTop = () => {
|
|
|
1724
1700
|
return value;
|
|
1725
1701
|
};
|
|
1726
1702
|
/**
|
|
1727
|
-
* Calls back when the resolved root `--ion-safe-area-top` changes
|
|
1728
|
-
*
|
|
1729
|
-
*
|
|
1703
|
+
* Calls back when the resolved root `--ion-safe-area-top` changes. The value
|
|
1704
|
+
* the caller already applied is passed as the baseline, so a change between
|
|
1705
|
+
* that read and the observer starting is still reported.
|
|
1730
1706
|
*/
|
|
1731
1707
|
const onRootSafeAreaTopChange = (callback) => {
|
|
1732
|
-
|
|
1733
|
-
if (!doc?.body || typeof ResizeObserver === 'undefined') {
|
|
1734
|
-
return () => undefined;
|
|
1735
|
-
}
|
|
1736
|
-
const probe = doc.createElement('div');
|
|
1737
|
-
probe.style.cssText =
|
|
1738
|
-
'position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;width:0;' +
|
|
1739
|
-
'height:var(--ion-safe-area-top,0px);';
|
|
1740
|
-
doc.body.appendChild(probe);
|
|
1741
|
-
/**
|
|
1742
|
-
* Seeded with the value the caller has already applied, so a change that
|
|
1743
|
-
* lands before the observer's first delivery still gets reported. Comparing
|
|
1744
|
-
* against an unset value instead would consume that first delivery and treat
|
|
1745
|
-
* the new inset as the baseline.
|
|
1746
|
-
*/
|
|
1747
|
-
let lastHeight = getRootSafeAreaTop();
|
|
1748
|
-
const observer = new ResizeObserver((entries) => {
|
|
1749
|
-
const { height } = entries[0].contentRect;
|
|
1750
|
-
if (height !== lastHeight) {
|
|
1751
|
-
lastHeight = height;
|
|
1752
|
-
callback(height);
|
|
1753
|
-
}
|
|
1754
|
-
});
|
|
1755
|
-
observer.observe(probe);
|
|
1756
|
-
return () => {
|
|
1757
|
-
observer.disconnect();
|
|
1758
|
-
probe.remove();
|
|
1759
|
-
};
|
|
1708
|
+
return helpers.onCustomPropertyChange(helpers.win?.document?.body, '--ion-safe-area-top', callback, getRootSafeAreaTop());
|
|
1760
1709
|
};
|
|
1761
1710
|
/**
|
|
1762
|
-
*
|
|
1763
|
-
*
|
|
1764
|
-
*
|
|
1711
|
+
* Determines which viewport axes the modal spans so safe-area requirements
|
|
1712
|
+
* can be predicted independently for each axis.
|
|
1713
|
+
*
|
|
1714
|
+
* A modal that spans an axis reaches both edges on that axis and needs the
|
|
1715
|
+
* corresponding safe-area insets. A modal that does not span an axis reaches
|
|
1716
|
+
* neither edge on that axis.
|
|
1765
1717
|
*
|
|
1766
|
-
*
|
|
1767
|
-
*
|
|
1768
|
-
*
|
|
1769
|
-
*
|
|
1718
|
+
* When both `--width` and `--height` are `fullscreen`, coverage can be
|
|
1719
|
+
* determined directly. Otherwise, coverage is based on the rendered wrapper,
|
|
1720
|
+
* including cases where content sizing or `--max-height` causes the modal
|
|
1721
|
+
* to reach the viewport.
|
|
1770
1722
|
*/
|
|
1771
|
-
const
|
|
1723
|
+
const getModalCoveredAxes = (hostEl) => {
|
|
1772
1724
|
const styles = getComputedStyle(hostEl);
|
|
1773
|
-
const width = styles.getPropertyValue('--width')
|
|
1774
|
-
const height = styles.getPropertyValue('--height')
|
|
1775
|
-
|
|
1725
|
+
const width = hardwareBackButton.getOverlaySizeType(styles.getPropertyValue('--width'));
|
|
1726
|
+
const height = hardwareBackButton.getOverlaySizeType(styles.getPropertyValue('--height'));
|
|
1727
|
+
if (width === 'fullscreen' && height === 'fullscreen') {
|
|
1728
|
+
return { vertical: true, horizontal: true };
|
|
1729
|
+
}
|
|
1730
|
+
return measureCoveredAxes(hostEl);
|
|
1731
|
+
};
|
|
1732
|
+
/**
|
|
1733
|
+
* Measures the modal wrapper to determine whether it spans the viewport
|
|
1734
|
+
* on each axis.
|
|
1735
|
+
*
|
|
1736
|
+
* The wrapper has no box while the modal is hidden, so `overlay-hidden`
|
|
1737
|
+
* is temporarily removed to allow the wrapper to be measured. The class
|
|
1738
|
+
* is restored in the same task before the browser can paint.
|
|
1739
|
+
*
|
|
1740
|
+
* Only the wrapper's size is measured. Its position is affected by the
|
|
1741
|
+
* enter animation, which initially translates it by its own height, while
|
|
1742
|
+
* the translation does not affect its measured size.
|
|
1743
|
+
*/
|
|
1744
|
+
const measureCoveredAxes = (hostEl) => {
|
|
1745
|
+
const wrapperEl = hostEl.shadowRoot?.querySelector('.modal-wrapper');
|
|
1746
|
+
if (wrapperEl == null || helpers.win === undefined) {
|
|
1747
|
+
return { vertical: false, horizontal: false };
|
|
1748
|
+
}
|
|
1749
|
+
const wasHidden = hostEl.classList.contains('overlay-hidden');
|
|
1750
|
+
if (wasHidden) {
|
|
1751
|
+
hostEl.classList.remove('overlay-hidden');
|
|
1752
|
+
}
|
|
1753
|
+
const { width, height } = wrapperEl.getBoundingClientRect();
|
|
1754
|
+
if (wasHidden) {
|
|
1755
|
+
hostEl.classList.add('overlay-hidden');
|
|
1756
|
+
}
|
|
1757
|
+
return {
|
|
1758
|
+
vertical: height >= helpers.win.innerHeight - EDGE_THRESHOLD,
|
|
1759
|
+
horizontal: width >= helpers.win.innerWidth - EDGE_THRESHOLD,
|
|
1760
|
+
};
|
|
1776
1761
|
};
|
|
1777
1762
|
/**
|
|
1778
1763
|
* Returns the initial safe-area configuration based on modal type.
|
|
@@ -1806,26 +1791,23 @@ const getInitialSafeAreaConfig = (context) => {
|
|
|
1806
1791
|
right: '0px',
|
|
1807
1792
|
};
|
|
1808
1793
|
}
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
};
|
|
1822
|
-
}
|
|
1823
|
-
// Fullscreen modals on phone - inherit all safe areas
|
|
1794
|
+
/**
|
|
1795
|
+
* Each axis is evaluated independently because a modal can span one axis
|
|
1796
|
+
* without spanning the other. This allows the initial safe-area configuration
|
|
1797
|
+
* to match the modal's expected dimensions and avoids correcting an incorrect
|
|
1798
|
+
* pair of insets after presentation.
|
|
1799
|
+
*
|
|
1800
|
+
* A modal can span the horizontal axis while remaining inset vertically, or
|
|
1801
|
+
* span the vertical axis while remaining inset horizontally. Wide viewports
|
|
1802
|
+
* can also render regular modals as centered dialogs, while content-sized
|
|
1803
|
+
* modals may still be clamped to the viewport.
|
|
1804
|
+
*/
|
|
1805
|
+
const { vertical, horizontal } = context.coveredAxes ?? { vertical: true, horizontal: true };
|
|
1824
1806
|
return {
|
|
1825
|
-
top: 'inherit',
|
|
1826
|
-
bottom: 'inherit',
|
|
1827
|
-
left: 'inherit',
|
|
1828
|
-
right: 'inherit',
|
|
1807
|
+
top: vertical ? 'inherit' : '0px',
|
|
1808
|
+
bottom: vertical ? 'inherit' : '0px',
|
|
1809
|
+
left: horizontal ? 'inherit' : '0px',
|
|
1810
|
+
right: horizontal ? 'inherit' : '0px',
|
|
1829
1811
|
};
|
|
1830
1812
|
};
|
|
1831
1813
|
/**
|
|
@@ -1843,8 +1825,8 @@ const getInitialSafeAreaConfig = (context) => {
|
|
|
1843
1825
|
*/
|
|
1844
1826
|
const getPositionBasedSafeAreaConfig = (wrapperEl) => {
|
|
1845
1827
|
const rect = wrapperEl.getBoundingClientRect();
|
|
1846
|
-
const vh =
|
|
1847
|
-
const vw =
|
|
1828
|
+
const vh = helpers.win?.innerHeight ?? 0;
|
|
1829
|
+
const vw = helpers.win?.innerWidth ?? 0;
|
|
1848
1830
|
// Only apply safe-area to sides where modal overlaps with screen edge
|
|
1849
1831
|
return {
|
|
1850
1832
|
top: rect.top <= EDGE_THRESHOLD ? 'inherit' : '0px',
|
|
@@ -1877,28 +1859,28 @@ const clearSafeAreaOverrides = (hostEl) => {
|
|
|
1877
1859
|
hostEl.style.removeProperty('--ion-safe-area-right');
|
|
1878
1860
|
};
|
|
1879
1861
|
|
|
1880
|
-
const modalIosCss = () => `:host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:
|
|
1862
|
+
const modalIosCss = () => `:host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:100%;--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-wrapper{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;outline:none}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px}}@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-modal-offset-top, 0px) + 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}`;
|
|
1881
1863
|
|
|
1882
|
-
const modalMdCss = () => `:host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:
|
|
1864
|
+
const modalMdCss = () => `:host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:100%;--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-wrapper{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;outline:none}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px}}@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-modal-offset-top, 0px) + 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}`;
|
|
1883
1865
|
|
|
1884
1866
|
const Modal = class {
|
|
1885
1867
|
constructor(hostRef) {
|
|
1886
|
-
index$
|
|
1887
|
-
this.didPresent = index$
|
|
1888
|
-
this.willPresent = index$
|
|
1889
|
-
this.willDismiss = index$
|
|
1890
|
-
this.didDismiss = index$
|
|
1891
|
-
this.ionBreakpointDidChange = index$
|
|
1892
|
-
this.didPresentShorthand = index$
|
|
1893
|
-
this.willPresentShorthand = index$
|
|
1894
|
-
this.willDismissShorthand = index$
|
|
1895
|
-
this.didDismissShorthand = index$
|
|
1896
|
-
this.ionMount = index$
|
|
1897
|
-
this.ionDragStart = index$
|
|
1898
|
-
this.ionDragMove = index$
|
|
1899
|
-
this.ionDragEnd = index$
|
|
1868
|
+
index$2.registerInstance(this, hostRef);
|
|
1869
|
+
this.didPresent = index$2.createEvent(this, "ionModalDidPresent", 7);
|
|
1870
|
+
this.willPresent = index$2.createEvent(this, "ionModalWillPresent", 7);
|
|
1871
|
+
this.willDismiss = index$2.createEvent(this, "ionModalWillDismiss", 7);
|
|
1872
|
+
this.didDismiss = index$2.createEvent(this, "ionModalDidDismiss", 7);
|
|
1873
|
+
this.ionBreakpointDidChange = index$2.createEvent(this, "ionBreakpointDidChange", 7);
|
|
1874
|
+
this.didPresentShorthand = index$2.createEvent(this, "didPresent", 7);
|
|
1875
|
+
this.willPresentShorthand = index$2.createEvent(this, "willPresent", 7);
|
|
1876
|
+
this.willDismissShorthand = index$2.createEvent(this, "willDismiss", 7);
|
|
1877
|
+
this.didDismissShorthand = index$2.createEvent(this, "didDismiss", 7);
|
|
1878
|
+
this.ionMount = index$2.createEvent(this, "ionMount", 7);
|
|
1879
|
+
this.ionDragStart = index$2.createEvent(this, "ionDragStart", 7);
|
|
1880
|
+
this.ionDragMove = index$2.createEvent(this, "ionDragMove", 7);
|
|
1881
|
+
this.ionDragEnd = index$2.createEvent(this, "ionDragEnd", 7);
|
|
1900
1882
|
this.lockController = lockController.createLockController();
|
|
1901
|
-
this.triggerController =
|
|
1883
|
+
this.triggerController = hardwareBackButton.createTriggerController();
|
|
1902
1884
|
this.coreDelegate = frameworkDelegate.CoreDelegate();
|
|
1903
1885
|
this.isSheetModal = false;
|
|
1904
1886
|
this.inheritedAttributes = {};
|
|
@@ -2044,7 +2026,7 @@ const Modal = class {
|
|
|
2044
2026
|
*/
|
|
2045
2027
|
return;
|
|
2046
2028
|
}
|
|
2047
|
-
this.dismiss(undefined,
|
|
2029
|
+
this.dismiss(undefined, hardwareBackButton.BACKDROP);
|
|
2048
2030
|
};
|
|
2049
2031
|
this.onLifecycle = (modalEvent) => {
|
|
2050
2032
|
const el = this.usersElement;
|
|
@@ -2142,7 +2124,7 @@ const Modal = class {
|
|
|
2142
2124
|
}
|
|
2143
2125
|
connectedCallback() {
|
|
2144
2126
|
const { el } = this;
|
|
2145
|
-
|
|
2127
|
+
hardwareBackButton.prepareOverlay(el);
|
|
2146
2128
|
this.triggerChanged();
|
|
2147
2129
|
// A disconnect tears down state this presentation still needs and cannot
|
|
2148
2130
|
// tell a re-insert from a removal, so put it back.
|
|
@@ -2152,7 +2134,7 @@ const Modal = class {
|
|
|
2152
2134
|
// A relocation from `willPresent` reaches these before `present()` has
|
|
2153
2135
|
// applied the lock, so they apply it instead. Both are idempotent.
|
|
2154
2136
|
if (this.presented) {
|
|
2155
|
-
|
|
2137
|
+
hardwareBackButton.restoreRootFocusTrapAccessibility(el);
|
|
2156
2138
|
this.initParentRemovalObserver();
|
|
2157
2139
|
}
|
|
2158
2140
|
}
|
|
@@ -2165,7 +2147,7 @@ const Modal = class {
|
|
|
2165
2147
|
this.cleanupSafeAreaOverrides();
|
|
2166
2148
|
// Clean up aria-hidden if removed without dismiss() being called
|
|
2167
2149
|
if (this.presented) {
|
|
2168
|
-
|
|
2150
|
+
hardwareBackButton.cleanupRootFocusTrapAccessibility();
|
|
2169
2151
|
}
|
|
2170
2152
|
}
|
|
2171
2153
|
componentWillLoad() {
|
|
@@ -2215,10 +2197,10 @@ const Modal = class {
|
|
|
2215
2197
|
this.currentBreakpoint = this.initialBreakpoint;
|
|
2216
2198
|
}
|
|
2217
2199
|
if (breakpoints !== undefined && initialBreakpoint !== undefined && !breakpoints.includes(initialBreakpoint)) {
|
|
2218
|
-
index$
|
|
2200
|
+
index$2.printIonWarning('[ion-modal] - Your breakpoints array must include the initialBreakpoint value.');
|
|
2219
2201
|
}
|
|
2220
2202
|
if (!this.htmlAttributes?.id) {
|
|
2221
|
-
|
|
2203
|
+
hardwareBackButton.setOverlayId(this.el);
|
|
2222
2204
|
}
|
|
2223
2205
|
}
|
|
2224
2206
|
componentDidLoad() {
|
|
@@ -2315,7 +2297,7 @@ const Modal = class {
|
|
|
2315
2297
|
* get the transition incorrect.
|
|
2316
2298
|
*/
|
|
2317
2299
|
if (helpers.hasLazyBuild(el)) {
|
|
2318
|
-
await index$
|
|
2300
|
+
await index$3.deepReady(this.usersElement);
|
|
2319
2301
|
/**
|
|
2320
2302
|
* If keepContentsMounted="true" then the
|
|
2321
2303
|
* JS Framework has already mounted the inner
|
|
@@ -2326,9 +2308,9 @@ const Modal = class {
|
|
|
2326
2308
|
*/
|
|
2327
2309
|
}
|
|
2328
2310
|
else if (!this.keepContentsMounted) {
|
|
2329
|
-
await index$
|
|
2311
|
+
await index$3.waitForMount();
|
|
2330
2312
|
}
|
|
2331
|
-
index$
|
|
2313
|
+
index$2.writeTask(() => this.el.classList.add('show-modal'));
|
|
2332
2314
|
// Recalculate isSheetModal before safe-area setup because framework
|
|
2333
2315
|
// bindings (e.g., Angular) may not have been applied when componentWillLoad ran.
|
|
2334
2316
|
this.isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined;
|
|
@@ -2349,7 +2331,7 @@ const Modal = class {
|
|
|
2349
2331
|
this.statusBarStyle = await StatusBar.getStyle();
|
|
2350
2332
|
setCardStatusBarDark();
|
|
2351
2333
|
}
|
|
2352
|
-
await
|
|
2334
|
+
await hardwareBackButton.present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, {
|
|
2353
2335
|
presentingEl: presentingElement,
|
|
2354
2336
|
currentBreakpoint: this.initialBreakpoint,
|
|
2355
2337
|
backdropBreakpoint: this.backdropBreakpoint,
|
|
@@ -2414,14 +2396,14 @@ const Modal = class {
|
|
|
2414
2396
|
// All of the elements needed for the swipe gesture
|
|
2415
2397
|
// should be in the DOM and referenced by now, except
|
|
2416
2398
|
// for the presenting el
|
|
2417
|
-
const animationBuilder = this.leaveAnimation || index$
|
|
2399
|
+
const animationBuilder = this.leaveAnimation || index$2.config.get('modalLeave', iosLeaveAnimation);
|
|
2418
2400
|
const ani = (this.animation = animationBuilder(el, {
|
|
2419
2401
|
presentingEl: this.presentingElement,
|
|
2420
2402
|
expandToScroll: this.expandToScroll,
|
|
2421
2403
|
}));
|
|
2422
|
-
const contentEl = index
|
|
2404
|
+
const contentEl = index.findIonContent(el);
|
|
2423
2405
|
if (!contentEl) {
|
|
2424
|
-
index
|
|
2406
|
+
index.printIonContentErrorMsg(el);
|
|
2425
2407
|
return;
|
|
2426
2408
|
}
|
|
2427
2409
|
const statusBarStyle = this.statusBarStyle ?? Style.Default;
|
|
@@ -2433,7 +2415,7 @@ const Modal = class {
|
|
|
2433
2415
|
if (!wrapperEl || initialBreakpoint === undefined) {
|
|
2434
2416
|
return;
|
|
2435
2417
|
}
|
|
2436
|
-
const animationBuilder = this.enterAnimation || index$
|
|
2418
|
+
const animationBuilder = this.enterAnimation || index$2.config.get('modalEnter', iosEnterAnimation);
|
|
2437
2419
|
const ani = (this.animation = animationBuilder(this.el, {
|
|
2438
2420
|
presentingEl: this.presentingElement,
|
|
2439
2421
|
currentBreakpoint: initialBreakpoint,
|
|
@@ -2536,7 +2518,7 @@ const Modal = class {
|
|
|
2536
2518
|
this.animation.onFinish(async () => {
|
|
2537
2519
|
this.currentBreakpoint = 0;
|
|
2538
2520
|
this.ionBreakpointDidChange.emit({ breakpoint: this.currentBreakpoint });
|
|
2539
|
-
await this.dismiss(undefined,
|
|
2521
|
+
await this.dismiss(undefined, hardwareBackButton.GESTURE);
|
|
2540
2522
|
this.gestureAnimationDismissing = false;
|
|
2541
2523
|
});
|
|
2542
2524
|
}
|
|
@@ -2562,7 +2544,7 @@ const Modal = class {
|
|
|
2562
2544
|
*/
|
|
2563
2545
|
setCardStatusBarDefault(this.statusBarStyle);
|
|
2564
2546
|
this.animation.onFinish(async () => {
|
|
2565
|
-
await this.dismiss(undefined,
|
|
2547
|
+
await this.dismiss(undefined, hardwareBackButton.GESTURE);
|
|
2566
2548
|
this.gestureAnimationDismissing = false;
|
|
2567
2549
|
});
|
|
2568
2550
|
}
|
|
@@ -2577,7 +2559,7 @@ const Modal = class {
|
|
|
2577
2559
|
* For example, `cancel` or `backdrop`.
|
|
2578
2560
|
*/
|
|
2579
2561
|
async dismiss(data, role) {
|
|
2580
|
-
if (this.gestureAnimationDismissing && role !==
|
|
2562
|
+
if (this.gestureAnimationDismissing && role !== hardwareBackButton.GESTURE) {
|
|
2581
2563
|
return false;
|
|
2582
2564
|
}
|
|
2583
2565
|
// Cancel any pending resize timeout to prevent stale updates during dismiss
|
|
@@ -2619,7 +2601,7 @@ const Modal = class {
|
|
|
2619
2601
|
window.removeEventListener(keyboard.KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
|
|
2620
2602
|
this.keyboardOpenCallback = undefined;
|
|
2621
2603
|
}
|
|
2622
|
-
const dismissed = await
|
|
2604
|
+
const dismissed = await hardwareBackButton.dismiss(this, data, role, 'modalLeave', iosLeaveAnimation, mdLeaveAnimation, {
|
|
2623
2605
|
presentingEl: presentingElement,
|
|
2624
2606
|
currentBreakpoint: this.currentBreakpoint ?? this.initialBreakpoint,
|
|
2625
2607
|
backdropBreakpoint: this.backdropBreakpoint,
|
|
@@ -2628,7 +2610,7 @@ const Modal = class {
|
|
|
2628
2610
|
if (dismissed) {
|
|
2629
2611
|
const { delegate } = this.getDelegate();
|
|
2630
2612
|
await frameworkDelegate.detachComponent(delegate, this.usersElement);
|
|
2631
|
-
index$
|
|
2613
|
+
index$2.writeTask(() => this.el.classList.remove('show-modal'));
|
|
2632
2614
|
if (this.animation) {
|
|
2633
2615
|
this.animation.destroy();
|
|
2634
2616
|
}
|
|
@@ -2656,13 +2638,13 @@ const Modal = class {
|
|
|
2656
2638
|
* Returns a promise that resolves when the modal did dismiss.
|
|
2657
2639
|
*/
|
|
2658
2640
|
onDidDismiss() {
|
|
2659
|
-
return
|
|
2641
|
+
return hardwareBackButton.eventMethod(this.el, 'ionModalDidDismiss');
|
|
2660
2642
|
}
|
|
2661
2643
|
/**
|
|
2662
2644
|
* Returns a promise that resolves when the modal will dismiss.
|
|
2663
2645
|
*/
|
|
2664
2646
|
onWillDismiss() {
|
|
2665
|
-
return
|
|
2647
|
+
return hardwareBackButton.eventMethod(this.el, 'ionModalWillDismiss');
|
|
2666
2648
|
}
|
|
2667
2649
|
/**
|
|
2668
2650
|
* Move a sheet style modal to a specific breakpoint.
|
|
@@ -2672,11 +2654,11 @@ const Modal = class {
|
|
|
2672
2654
|
*/
|
|
2673
2655
|
async setCurrentBreakpoint(breakpoint) {
|
|
2674
2656
|
if (!this.isSheetModal) {
|
|
2675
|
-
index$
|
|
2657
|
+
index$2.printIonWarning('[ion-modal] - setCurrentBreakpoint is only supported on sheet modals.');
|
|
2676
2658
|
return;
|
|
2677
2659
|
}
|
|
2678
2660
|
if (!this.breakpoints.includes(breakpoint)) {
|
|
2679
|
-
index$
|
|
2661
|
+
index$2.printIonWarning(`[ion-modal] - Attempted to set invalid breakpoint value ${breakpoint}. Please double check that the breakpoint value is part of your defined breakpoints.`);
|
|
2680
2662
|
return;
|
|
2681
2663
|
}
|
|
2682
2664
|
const { currentBreakpoint, moveSheetToBreakpoint, canDismiss, breakpoints, animated } = this;
|
|
@@ -2907,7 +2889,7 @@ const Modal = class {
|
|
|
2907
2889
|
/**
|
|
2908
2890
|
* Creates the context object for safe-area utilities.
|
|
2909
2891
|
*
|
|
2910
|
-
* `
|
|
2892
|
+
* `coveredAxes` is only set by `setInitialSafeAreaOverrides()`
|
|
2911
2893
|
* because it is only read by `getInitialSafeAreaConfig()`. Other callers
|
|
2912
2894
|
* (resize handler, post-animation update, fullscreen-padding apply) would
|
|
2913
2895
|
* pay a `getComputedStyle()` cost for a value they never consult.
|
|
@@ -2921,6 +2903,26 @@ const Modal = class {
|
|
|
2921
2903
|
currentBreakpoint: this.currentBreakpoint,
|
|
2922
2904
|
};
|
|
2923
2905
|
}
|
|
2906
|
+
/**
|
|
2907
|
+
* Keeps the content's sizing in sync with `--height`. The content reads the
|
|
2908
|
+
* property to determine whether it should size itself to its content, and
|
|
2909
|
+
* changes to `--height` on an ancestor or the root can change that behavior
|
|
2910
|
+
* without changing the modal itself.
|
|
2911
|
+
*/
|
|
2912
|
+
watchHeightForContent() {
|
|
2913
|
+
/**
|
|
2914
|
+
* A sheet's height comes from its breakpoints, so its content never sizes
|
|
2915
|
+
* itself to `--height`. Watching it would cause the drag to recalculate on
|
|
2916
|
+
* every frame.
|
|
2917
|
+
*/
|
|
2918
|
+
if (this.isSheetModal) {
|
|
2919
|
+
return;
|
|
2920
|
+
}
|
|
2921
|
+
this.unsubscribeHeightChange?.();
|
|
2922
|
+
this.unsubscribeHeightChange = onModalHeightChange(this.el, () => {
|
|
2923
|
+
this.el.querySelectorAll('ion-content').forEach((contentEl) => contentEl.recalculateDimensions());
|
|
2924
|
+
});
|
|
2925
|
+
}
|
|
2924
2926
|
/**
|
|
2925
2927
|
* Sets initial safe-area overrides before modal animation.
|
|
2926
2928
|
* Called in present() before animation starts.
|
|
@@ -2934,10 +2936,11 @@ const Modal = class {
|
|
|
2934
2936
|
setInitialSafeAreaOverrides() {
|
|
2935
2937
|
const context = {
|
|
2936
2938
|
...this.getSafeAreaContext(),
|
|
2937
|
-
|
|
2939
|
+
coveredAxes: getModalCoveredAxes(this.el),
|
|
2938
2940
|
};
|
|
2939
2941
|
const safeAreaConfig = getInitialSafeAreaConfig(context);
|
|
2940
2942
|
applySafeAreaOverrides(this.el, safeAreaConfig);
|
|
2943
|
+
this.watchHeightForContent();
|
|
2941
2944
|
// Set the internal offset property with the resolved root safe-area-top value
|
|
2942
2945
|
if (context.isSheetModal) {
|
|
2943
2946
|
this.updateSheetOffsetTop();
|
|
@@ -3057,6 +3060,8 @@ const Modal = class {
|
|
|
3057
3060
|
clearSafeAreaOverrides(this.el);
|
|
3058
3061
|
this.unsubscribeRootSafeAreaTop?.();
|
|
3059
3062
|
this.unsubscribeRootSafeAreaTop = undefined;
|
|
3063
|
+
this.unsubscribeHeightChange?.();
|
|
3064
|
+
this.unsubscribeHeightChange = undefined;
|
|
3060
3065
|
// Remove internal sheet offset property
|
|
3061
3066
|
this.el.style.removeProperty('--ion-modal-offset-top');
|
|
3062
3067
|
const { contentEl } = this.findContentAndFooter();
|
|
@@ -3094,7 +3099,7 @@ const Modal = class {
|
|
|
3094
3099
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
3095
3100
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
3096
3101
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
3097
|
-
return (index$
|
|
3102
|
+
return (index$2.h(index$2.Host, { key: '17a95bd7722bac2344bea041aff97db17f55c0cf', "no-router": true,
|
|
3098
3103
|
// Allow the modal to be navigable when the handle is focusable
|
|
3099
3104
|
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1, ...htmlAttributes, style: {
|
|
3100
3105
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
@@ -3105,9 +3110,9 @@ const Modal = class {
|
|
|
3105
3110
|
[`modal-sheet`]: isSheetModal,
|
|
3106
3111
|
[`modal-no-expand-scroll`]: isSheetModal && !expandToScroll,
|
|
3107
3112
|
'overlay-hidden': true,
|
|
3108
|
-
[
|
|
3113
|
+
[hardwareBackButton.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false,
|
|
3109
3114
|
...theme.getClassMap(this.cssClass),
|
|
3110
|
-
}, onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }, index$
|
|
3115
|
+
}, onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }, index$2.h("ion-backdrop", { key: '9dab1ef4771c0d847ba2be8672afbaa2748517f3', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && index$2.h("div", { key: '64af7ed1c5f552b61fc4b9387b926acc76c8a99a', class: "modal-shadow" }), index$2.h("div", { key: '7e76d77d5b2e8f0467bb793facf5aa86f8d01bbe',
|
|
3111
3116
|
/*
|
|
3112
3117
|
role and aria-modal must be used on the
|
|
3113
3118
|
same element. They must also be set inside the
|
|
@@ -3120,11 +3125,11 @@ const Modal = class {
|
|
|
3120
3125
|
without the tabindex focus() would be a no-op and screen readers
|
|
3121
3126
|
may not properly announce the dialog and its content when it opens.
|
|
3122
3127
|
*/
|
|
3123
|
-
role: "dialog", ...inheritedAttributes, "aria-modal": "true", tabIndex: -1, class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }, showHandle && (index$
|
|
3128
|
+
role: "dialog", ...inheritedAttributes, "aria-modal": "true", tabIndex: -1, class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }, showHandle && (index$2.h("button", { key: '5efc0bb0a59adcc594ac48da9fd90e57908a7ffb', class: "modal-handle",
|
|
3124
3129
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
3125
|
-
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) })), index$
|
|
3130
|
+
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) })), index$2.h("slot", { key: '6175fcd0b39c086b4e9eb9e96c4d631c2a86774b', onSlotchange: this.onSlotChange }))));
|
|
3126
3131
|
}
|
|
3127
|
-
get el() { return index$
|
|
3132
|
+
get el() { return index$2.getElement(this); }
|
|
3128
3133
|
static get watchers() { return {
|
|
3129
3134
|
"isOpen": [{
|
|
3130
3135
|
"onIsOpenChange": 0
|