@ionic/core 9.0.4-nightly.20260914 → 9.0.4-nightly.20260916
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--pR3YKVX.js +4 -0
- package/components/{p-BJr2B5hZ.js → p-2ta4uE9-.js} +1 -1
- package/components/{p-YjMkHuvH.js → p-47h0_nN4.js} +1 -1
- package/components/{p-C8Ck7_Eo.js → p-8MzqWBTT.js} +1 -1
- package/components/{p-CNLioZ3B.js → p-BGChz0G8.js} +1 -1
- package/components/{p-DZRZic9C.js → p-BLe-edUh.js} +1 -1
- package/components/{p-CJgnoKcN.js → p-BMHhG7Xh.js} +1 -1
- package/components/{p-TWw4e4sO.js → p-BPbgEuCf.js} +1 -1
- package/components/{p-DnBNYc7u.js → p-Bc-3W2an.js} +1 -1
- package/{dist/ionic/p-DTxBioUO.js → components/p-BezPzC13.js} +1 -1
- package/components/{p-B1_TL6RQ.js → p-BezRi1ML.js} +1 -1
- package/{dist/ionic/p-DcCEP7Ss.js → components/p-Bi8VGu4M.js} +1 -1
- package/components/{p-DL13ieTa.js → p-BjizFeM6.js} +1 -1
- package/components/{p-BF48Oc0v.js → p-BuxZkazO.js} +1 -1
- package/components/p-BxCcX93a.js +4 -0
- package/components/{p-BW_SlU2D.js → p-C0tpzcpi.js} +1 -1
- package/components/{p-DMBiAyOR.js → p-C6WYVtle.js} +1 -1
- package/components/p-CDt7Q7Dj.js +4 -0
- package/components/p-CDvyV0r0.js +4 -0
- package/components/{p-C4VpVfrJ.js → p-CEs5NmKW.js} +1 -1
- package/components/{p-CMRYD_yR.js → p-CLVgYpRn.js} +1 -1
- package/components/{p-Cd1WaN-0.js → p-CMT0YmOj.js} +1 -1
- package/components/{p-DFLJvuRK.js → p-CPGp3WWG.js} +1 -1
- package/components/{p-B4lxwJ8N.js → p-CXuRZoWE.js} +1 -1
- package/components/{p-D7wDJdFn.js → p-CaY8IRMT.js} +1 -1
- package/components/{p-BQyuFxYc.js → p-CcOl6jEv.js} +1 -1
- package/components/{p-Ctop2IWW.js → p-CeGQfrDU.js} +1 -1
- package/components/{p-cEN43Ahr.js → p-CkffScdn.js} +1 -1
- package/components/{p-BT9-hMMz.js → p-CpcdCRug.js} +1 -1
- package/components/{p-Hp8t4RMX.js → p-Csi6iX-c.js} +1 -1
- package/components/{p-1sJ0ZDPe.js → p-CthoZqG1.js} +1 -1
- package/components/{p-Fl7ZFU74.js → p-DBGxvxkE.js} +1 -1
- package/components/p-DEvF_E6y.js +4 -0
- package/components/{p-COO0eJOA.js → p-DKX1mWld.js} +1 -1
- package/components/{p-CqbGBmqb.js → p-DMT-4tHM.js} +1 -1
- package/components/p-DOwsU7Mc.js +4 -0
- package/components/{p-5ldEpNdG.js → p-DSuBagxs.js} +1 -1
- package/{dist/ionic/p-DZ6Hmc-8.js → components/p-DVHC9GYb.js} +1 -1
- package/components/p-DWe-YApm.js +4 -0
- package/components/{p-Bi-it1EH.js → p-DX_3N4fh.js} +1 -1
- package/components/{p-C-NbvXu4.js → p-DcrAT6v8.js} +1 -1
- package/components/p-DftucGJR.js +4 -0
- package/components/{p-qAXsfUff.js → p-HO1CDBeU.js} +1 -1
- package/components/{p-DM1gJSMP.js → p-MLplUp3U.js} +1 -1
- package/{dist/ionic/p-BMiZX1LT.js → components/p-MOwrp7hX.js} +1 -1
- package/components/{p-D5w_FlVa.js → p-MSr4IlyS.js} +1 -1
- package/components/{p-GGbIHyEF.js → p-PWHvigWP.js} +1 -1
- package/components/p-S-gGoI4A.js +4 -0
- package/components/{p-BYJRZKHa.js → p-gyjG_IM4.js} +1 -1
- package/components/p-k92zpBT6.js +4 -0
- package/components/{p-DxhHlJln.js → p-rDUBp56G.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-2DHlng-f.js} +3 -3
- package/dist/cjs/{app-globals-b1G4t26O.js → app-globals-BeC95igM.js} +1 -1
- package/dist/cjs/{button-active-CQCFubJJ.js → button-active-CTyeZB16.js} +2 -2
- package/dist/cjs/{capacitor-DmA66EwP.js → capacitor-cADDPMtd.js} +3 -3
- package/dist/cjs/{format-bHU8N1g5.js → format-BbkxKT7p.js} +1 -1
- package/dist/cjs/{framework-delegate-d-fWfeI6.js → framework-delegate-DYIuFqQx.js} +1 -1
- package/dist/cjs/{haptic-Ch-X4gRx.js → haptic-CqPss9_L.js} +1 -1
- package/dist/cjs/{helpers-7wzdhdeg.js → helpers-DHjAEaU9.js} +45 -1
- package/dist/cjs/{index-C74Q3t6a.js → index-B-R-H1Z2.js} +7 -8
- package/dist/cjs/{index-DtvKGwdh.js → index-BLq7TkUV.js} +2 -2
- package/dist/cjs/{index-CQfEIyLK.js → index-D_D542p0.js} +4 -4
- package/dist/cjs/{index-DFNrCX7M.js → index-Da83wbmS.js} +8 -9
- package/dist/cjs/{index-KiSZqhYS.js → index-MdIUU940.js} +1 -1
- package/dist/cjs/{index-DXoo08JC.js → index-T36W_eKv.js} +13 -8
- package/dist/cjs/index.cjs.js +17 -19
- package/dist/cjs/{input-shims-VJIiKBKv.js → input-shims-DYxL0Fdm.js} +16 -17
- package/dist/cjs/{input.utils-EHVE2RK_.js → input.utils-B_32Xwga.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 +3 -3
- package/dist/cjs/ion-card_5.cjs.entry.js +3 -3
- 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 +7 -9
- 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 +5 -6
- package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +3 -3
- 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 +18 -20
- 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 +13 -15
- 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 +5 -6
- 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-BWd7usAF.js} +1 -1
- package/dist/cjs/ionic.cjs.js +5 -5
- package/dist/cjs/{ios.transition-DYGiD6gM.js → ios.transition-6AFNO6uU.js} +4 -5
- package/dist/cjs/{item-multiple-inputs-Dv6qrMhm.js → item-multiple-inputs-BaBx_Te8.js} +1 -1
- package/dist/cjs/{keyboard-Cix5TVkD.js → keyboard-BJEm-3HF.js} +5 -3
- package/dist/cjs/{keyboard-cHxZlTyz.js → keyboard-DstMw6u1.js} +1 -1
- package/dist/cjs/{keyboard-controller-PtZoN2GS.js → keyboard-controller-DaUNT15d.js} +9 -9
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-CrSkaoz6.js → md.transition-CPq0ckrU.js} +4 -5
- package/dist/cjs/{overlays-BR21NUIG.js → overlays-DwMDYc_O.js} +162 -9
- package/dist/cjs/{select-option-render-D8ZEjYji.js → select-option-render-Cu-ABBRH.js} +2 -2
- package/dist/cjs/{slot-mutation-controller-yNStVQqX.js → slot-mutation-controller-CtYZdaWI.js} +4 -5
- package/dist/cjs/{status-tap-CNP5eD1R.js → status-tap-BUfv_eD4.js} +3 -3
- package/dist/cjs/{swipe-back-BYb_nLJe.js → swipe-back-DYKxJU5r.js} +2 -2
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/content/content.js +62 -8
- 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/utils/helpers.js +39 -0
- package/dist/collection/utils/overlays.js +34 -0
- package/dist/docs.json +2 -2
- package/dist/esm/{animation-BFNVlYum.js → animation-CAzXJ2I1.js} +2 -2
- package/dist/esm/{app-globals-BgX0BGL1.js → app-globals-DGJXnnkm.js} +1 -1
- package/dist/esm/{button-active-BfOvDr3b.js → button-active-DyyWVqU3.js} +2 -2
- package/dist/esm/{capacitor-CFERIeaU.js → capacitor-C041I3qZ.js} +1 -1
- package/dist/esm/{format-DDFE9jM5.js → format-D78cdY12.js} +1 -1
- package/dist/esm/{framework-delegate-BwNhx9NR.js → framework-delegate-CUDbUfWS.js} +1 -1
- package/dist/esm/{haptic-Cq4UAeka.js → haptic-D3njgGLB.js} +1 -1
- package/dist/esm/{helpers-BSmc0nst.js → helpers-BJFnZngp.js} +43 -2
- package/dist/esm/{index-DnA_7Bnx.js → index-CdoVp_rZ.js} +4 -4
- package/dist/esm/{index-D76bbuoi.js → index-DmnOg_xm.js} +1 -1
- package/dist/esm/{index-CJln0gS3.js → index-DoY4e_3F.js} +2 -3
- package/dist/esm/{index-C23AVPx9.js → index-Dvqtt_WK.js} +13 -8
- package/dist/esm/{index-BuPaALjU.js → index-iurdcGHg.js} +5 -6
- package/dist/esm/{index-C1b9CLFg.js → index-obGyiHiO.js} +2 -2
- package/dist/esm/index.js +11 -13
- package/dist/esm/{input-shims-Dqk-Ou25.js → input-shims-DognYvwv.js} +5 -6
- package/dist/esm/{input.utils-rqoH22pW.js → input.utils-C3mVJhji.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 +3 -3
- package/dist/esm/ion-card_5.entry.js +3 -3
- 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 +6 -8
- 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 +5 -6
- package/dist/esm/ion-item-option_3.entry.js +4 -4
- package/dist/esm/ion-item_8.entry.js +3 -3
- 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 +7 -9
- 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 +8 -10
- 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 +5 -6
- 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-BSaFA7np.js} +1 -1
- package/dist/esm/ionic.js +6 -6
- package/dist/esm/{ios.transition-CWAgfQ1r.js → ios.transition-ofa92pAl.js} +4 -5
- package/dist/esm/{item-multiple-inputs-DZnIiOO_.js → item-multiple-inputs-CffmpUe9.js} +1 -1
- package/dist/esm/{keyboard-DAF8GNJ9.js → keyboard-Cz4hUjuj.js} +1 -1
- package/dist/esm/{keyboard-Cj8mLJeq.js → keyboard-Dsc85bts.js} +5 -3
- package/dist/esm/{keyboard-controller-DEwoa1ev.js → keyboard-controller-BLvRgxgP.js} +2 -2
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-ZuqDDdDW.js → md.transition-DnFfqsAv.js} +4 -5
- package/dist/esm/{overlays-DKE0DgvE.js → overlays-a_5AhqWk.js} +156 -7
- package/dist/esm/{select-option-render-CRP_teb1.js → select-option-render-C_PCwA67.js} +2 -2
- package/dist/esm/{slot-mutation-controller-BVnANfIt.js → slot-mutation-controller-D7n8Peo2.js} +1 -2
- package/dist/esm/{status-tap-Cv9gb3ja.js → status-tap-BsTKKfug.js} +3 -3
- package/dist/esm/{swipe-back-B2CmabKY.js → swipe-back-ibFGqXH2.js} +2 -2
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-063769cf.entry.js +4 -0
- package/dist/ionic/{p-d8c138d9.entry.js → p-097a0cf5.entry.js} +1 -1
- package/dist/ionic/{p-ec00fd0d.entry.js → p-0a14a6a3.entry.js} +1 -1
- package/dist/ionic/p-0a824cef.entry.js +4 -0
- package/dist/ionic/{p-9c5f2691.entry.js → p-12ea6d13.entry.js} +1 -1
- package/dist/ionic/p-1c4926e9.entry.js +4 -0
- package/dist/ionic/p-1dac4211.entry.js +4 -0
- package/dist/ionic/{p-a8ff2489.entry.js → p-23afeeb2.entry.js} +1 -1
- package/dist/ionic/{p-ca1b8865.entry.js → p-25abc69d.entry.js} +1 -1
- package/dist/ionic/{p-099b7f9f.entry.js → p-26d89234.entry.js} +1 -1
- package/dist/ionic/{p-8b80d9f9.entry.js → p-28952272.entry.js} +1 -1
- package/dist/ionic/{p-5cc09b40.entry.js → p-29687c0b.entry.js} +1 -1
- package/dist/ionic/p-2ecebfd9.entry.js +4 -0
- package/dist/ionic/p-302e4d74.entry.js +4 -0
- package/dist/ionic/p-38d3e1cb.entry.js +4 -0
- package/dist/ionic/p-41254776.entry.js +4 -0
- package/dist/ionic/{p-6e386853.entry.js → p-416bec74.entry.js} +1 -1
- package/dist/ionic/{p-354d38d3.entry.js → p-41ae57ea.entry.js} +1 -1
- package/dist/ionic/{p-7bfeccb3.entry.js → p-4dc3f2b3.entry.js} +1 -1
- package/dist/ionic/{p-efc0cf82.entry.js → p-5272e103.entry.js} +1 -1
- package/dist/ionic/{p-68cc89a6.entry.js → p-59305088.entry.js} +1 -1
- package/dist/ionic/p-5b9b245e.entry.js +4 -0
- package/dist/ionic/{p-561af487.entry.js → p-5eadc64e.entry.js} +1 -1
- package/dist/ionic/p-5f695204.entry.js +4 -0
- package/dist/ionic/{p-38b9375b.entry.js → p-60ca717e.entry.js} +1 -1
- package/dist/ionic/{p-4c3e50f8.entry.js → p-63eb4550.entry.js} +1 -1
- package/dist/ionic/{p-90f50a65.entry.js → p-689f7a37.entry.js} +1 -1
- package/dist/ionic/{p-54cbb0a7.entry.js → p-7da532af.entry.js} +1 -1
- package/dist/ionic/{p-271c3640.entry.js → p-84dea138.entry.js} +1 -1
- package/dist/ionic/{p-4712a8a9.entry.js → p-88cf4127.entry.js} +1 -1
- package/dist/ionic/{p-3bba83ee.entry.js → p-89e04e63.entry.js} +1 -1
- package/dist/ionic/{p-dd01be0a.entry.js → p-8af458bf.entry.js} +1 -1
- package/dist/ionic/p-8d68604a.entry.js +4 -0
- package/dist/ionic/p-B13Uv-FT.js +4 -0
- package/dist/ionic/p-B8K6OHqa.js +4 -0
- package/dist/ionic/p-BD0v0Sx_.js +4 -0
- package/dist/ionic/p-BDs20Dfe.js +4 -0
- package/dist/ionic/p-BIj0Lfim.js +4 -0
- package/dist/ionic/p-BRZstBYy.js +4 -0
- package/dist/ionic/{p-T71k3C35.js → p-BRlwrQ6h.js} +1 -1
- package/dist/ionic/{p-DYUjHcuH.js → p-BT0-h-eD.js} +1 -1
- package/dist/ionic/p-Ba_yQZdQ.js +4 -0
- package/dist/ionic/p-BnMJqJBa.js +4 -0
- package/{components/p-6ZLn6K5e.js → dist/ionic/p-BrbwGxm1.js} +1 -1
- package/dist/ionic/p-Bu6uWqQM.js +4 -0
- package/dist/ionic/p-Bx46Dlpo.js +4 -0
- package/dist/ionic/p-C0vJzNM9.js +4 -0
- package/dist/ionic/p-C4FdGOym.js +4 -0
- package/dist/ionic/p-C5SsTfux.js +4 -0
- package/dist/ionic/p-CD77BF32.js +4 -0
- package/dist/ionic/p-CESQIy-V.js +4 -0
- package/dist/ionic/{p-BaeKWZ-a.js → p-CazJOH5P.js} +1 -1
- package/dist/ionic/p-D14knedj.js +4 -0
- package/dist/ionic/p-DQcKi6P6.js +4 -0
- package/dist/ionic/p-DlvB1Idh.js +4 -0
- package/dist/ionic/{p-C23AVPx9.js → p-Dvqtt_WK.js} +1 -1
- package/dist/ionic/{p-CJv-wOAd.js → p-NL1pxcde.js} +1 -1
- package/dist/ionic/{p-191a651e.entry.js → p-a1d733a3.entry.js} +1 -1
- package/dist/ionic/p-a4a2ce90.entry.js +4 -0
- package/dist/ionic/p-a6a95175.entry.js +4 -0
- package/dist/ionic/p-ac6a1168.entry.js +4 -0
- package/dist/ionic/{p-cc4320d3.entry.js → p-bcf18c26.entry.js} +1 -1
- package/dist/ionic/p-be8ae1cc.entry.js +4 -0
- package/dist/ionic/{p-85599fe3.entry.js → p-c0dd14f4.entry.js} +1 -1
- package/dist/ionic/{p-f0fb23c1.entry.js → p-c9952851.entry.js} +1 -1
- package/dist/ionic/p-cb893f35.entry.js +4 -0
- package/dist/ionic/p-d7fb1d2a.entry.js +4 -0
- package/dist/ionic/{p-ee09ac9d.entry.js → p-d8a6ebfd.entry.js} +1 -1
- package/dist/ionic/{p-7fbb3319.entry.js → p-dd89474c.entry.js} +1 -1
- package/dist/ionic/{p-fe9ed9bd.entry.js → p-df272a41.entry.js} +1 -1
- package/dist/ionic/{p-b9b4e85d.entry.js → p-e04a7110.entry.js} +1 -1
- package/dist/ionic/{p-D7jHfs0Y.js → p-e0g1fYYm.js} +1 -1
- package/dist/ionic/{p-a8df96c8.entry.js → p-e3a98575.entry.js} +1 -1
- package/dist/ionic/{p-d6755739.entry.js → p-efa78f73.entry.js} +1 -1
- package/dist/ionic/{p-1f24cb24.entry.js → p-f97ef975.entry.js} +1 -1
- package/dist/ionic/p-fc3312a4.entry.js +4 -0
- package/dist/ionic/{p-5d9094ac.entry.js → p-fd220f9c.entry.js} +1 -1
- package/dist/ionic/p-g9SK-dv1.js +4 -0
- package/dist/ionic/p-yYEBg4iw.js +4 -0
- package/dist/ionic/{p-BMPN55of.js → p-yiP8rgDC.js} +1 -1
- package/dist/types/components/content/content.d.ts +28 -3
- 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.d.ts +1 -1
- package/dist/types/stencil-public-runtime.d.ts +61 -55
- package/dist/types/utils/helpers.d.ts +17 -0
- package/dist/types/utils/overlays.d.ts +15 -0
- package/hydrate/index.js +315 -136
- package/hydrate/index.mjs +315 -136
- package/package.json +1 -1
- package/components/p-BNIsryb2.js +0 -4
- package/components/p-BU8a2IhR.js +0 -4
- package/components/p-BWoa-cki.js +0 -4
- package/components/p-BgkOsq-d.js +0 -4
- package/components/p-C09TXohi.js +0 -4
- package/components/p-CG_zZq_I.js +0 -4
- package/components/p-CWAks_S_.js +0 -4
- package/components/p-CWuIRJQN.js +0 -4
- package/components/p-CobW5muY.js +0 -4
- package/components/p-CrAKlX71.js +0 -4
- package/components/p-DhNuxvJH.js +0 -4
- package/components/p-DiuOa1vw.js +0 -4
- package/components/p-M34T2gyX.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-171a2278.entry.js +0 -4
- package/dist/ionic/p-1e64f5c7.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-3e01c744.entry.js +0 -4
- package/dist/ionic/p-458715a9.entry.js +0 -4
- package/dist/ionic/p-5906ea6f.entry.js +0 -4
- package/dist/ionic/p-612ea3b1.entry.js +0 -4
- package/dist/ionic/p-723f4dcd.entry.js +0 -4
- package/dist/ionic/p-77c96e08.entry.js +0 -4
- package/dist/ionic/p-803059b6.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-Bd72UYI2.js +0 -4
- package/dist/ionic/p-BgOvhHy_.js +0 -4
- package/dist/ionic/p-BhamHSw3.js +0 -4
- package/dist/ionic/p-BijjLYjT.js +0 -4
- package/dist/ionic/p-C8XilMh0.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-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-Do3zTvCA.js +0 -4
- package/dist/ionic/p-ZjP4CjeZ.js +0 -4
- package/dist/ionic/p-aff52029.entry.js +0 -4
- package/dist/ionic/p-b3532b8d.entry.js +0 -4
- package/dist/ionic/p-d526798a.entry.js +0 -4
- package/dist/ionic/p-e7f4b1e0.entry.js +0 -4
- package/dist/ionic/p-ed725cdf.entry.js +0 -4
- package/dist/ionic/p-fa50d493.entry.js +0 -4
- package/dist/ionic/p-zWf7R2xV.js +0 -4
|
@@ -2,41 +2,14 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { win } from "../../utils/browser/index";
|
|
5
|
-
import { raf } from "../../utils/helpers";
|
|
6
|
-
|
|
7
|
-
* These thresholds match the SCSS media query breakpoints in modal.vars.scss
|
|
8
|
-
* that trigger the centered dialog layout (non-fullscreen modal).
|
|
9
|
-
*
|
|
10
|
-
* SCSS defines two height breakpoints: $modal-inset-min-height-small (600px)
|
|
11
|
-
* and $modal-inset-min-height-large (768px). We use the smaller one because
|
|
12
|
-
* that's the threshold where the modal transitions from fullscreen to centered
|
|
13
|
-
* dialog — the larger breakpoint only increases the dialog's height.
|
|
14
|
-
*/
|
|
15
|
-
const MODAL_INSET_MIN_WIDTH = 768;
|
|
16
|
-
const MODAL_INSET_MIN_HEIGHT = 600;
|
|
5
|
+
import { onCustomPropertyChange, raf } from "../../utils/helpers";
|
|
6
|
+
import { getOverlaySizeType } from "../../utils/overlays";
|
|
17
7
|
const EDGE_THRESHOLD = 5;
|
|
18
|
-
/**
|
|
19
|
-
* CSS values for `--width` / `--height` that are treated as fullscreen
|
|
20
|
-
* (modal touches the corresponding screen edges). Empty string means the
|
|
21
|
-
* property was not overridden. See `hasCustomModalDimensions()`.
|
|
22
|
-
*/
|
|
23
|
-
const FULLSCREEN_SIZE_VALUES = new Set(['', '100%', '100vw', '100vh', '100dvw', '100dvh', '100svw', '100svh']);
|
|
24
8
|
/**
|
|
25
9
|
* Cache for resolved root safe-area-top value, invalidated once per frame.
|
|
26
10
|
*/
|
|
27
11
|
let cachedRootSafeAreaTop = null;
|
|
28
12
|
let cacheInvalidationScheduled = false;
|
|
29
|
-
/**
|
|
30
|
-
* Determines if the current viewport meets the CSS media query conditions
|
|
31
|
-
* that cause regular modals to render as centered dialogs instead of fullscreen.
|
|
32
|
-
* Matches: @media (min-width: 768px) and (min-height: 600px)
|
|
33
|
-
*/
|
|
34
|
-
const isCenteredDialogViewport = () => {
|
|
35
|
-
if (!win)
|
|
36
|
-
return false;
|
|
37
|
-
return win.matchMedia(`(min-width: ${MODAL_INSET_MIN_WIDTH}px) and (min-height: ${MODAL_INSET_MIN_HEIGHT}px)`)
|
|
38
|
-
.matches;
|
|
39
|
-
};
|
|
40
13
|
/**
|
|
41
14
|
* Resolves the current root --ion-safe-area-top value to pixels.
|
|
42
15
|
* Uses a temporary element because getComputedStyle on :root returns
|
|
@@ -70,55 +43,64 @@ export const getRootSafeAreaTop = () => {
|
|
|
70
43
|
return value;
|
|
71
44
|
};
|
|
72
45
|
/**
|
|
73
|
-
* Calls back when the resolved root `--ion-safe-area-top` changes
|
|
74
|
-
*
|
|
75
|
-
*
|
|
46
|
+
* Calls back when the resolved root `--ion-safe-area-top` changes. The value
|
|
47
|
+
* the caller already applied is passed as the baseline, so a change between
|
|
48
|
+
* that read and the observer starting is still reported.
|
|
76
49
|
*/
|
|
77
50
|
export const onRootSafeAreaTopChange = (callback) => {
|
|
78
|
-
|
|
79
|
-
if (!doc?.body || typeof ResizeObserver === 'undefined') {
|
|
80
|
-
return () => undefined;
|
|
81
|
-
}
|
|
82
|
-
const probe = doc.createElement('div');
|
|
83
|
-
probe.style.cssText =
|
|
84
|
-
'position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;width:0;' +
|
|
85
|
-
'height:var(--ion-safe-area-top,0px);';
|
|
86
|
-
doc.body.appendChild(probe);
|
|
87
|
-
/**
|
|
88
|
-
* Seeded with the value the caller has already applied, so a change that
|
|
89
|
-
* lands before the observer's first delivery still gets reported. Comparing
|
|
90
|
-
* against an unset value instead would consume that first delivery and treat
|
|
91
|
-
* the new inset as the baseline.
|
|
92
|
-
*/
|
|
93
|
-
let lastHeight = getRootSafeAreaTop();
|
|
94
|
-
const observer = new ResizeObserver((entries) => {
|
|
95
|
-
const { height } = entries[0].contentRect;
|
|
96
|
-
if (height !== lastHeight) {
|
|
97
|
-
lastHeight = height;
|
|
98
|
-
callback(height);
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
observer.observe(probe);
|
|
102
|
-
return () => {
|
|
103
|
-
observer.disconnect();
|
|
104
|
-
probe.remove();
|
|
105
|
-
};
|
|
51
|
+
return onCustomPropertyChange(win?.document?.body, '--ion-safe-area-top', callback, getRootSafeAreaTop());
|
|
106
52
|
};
|
|
107
53
|
/**
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
* touch any screen edge).
|
|
54
|
+
* Determines which viewport axes the modal spans so safe-area requirements
|
|
55
|
+
* can be predicted independently for each axis.
|
|
111
56
|
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
57
|
+
* A modal that spans an axis reaches both edges on that axis and needs the
|
|
58
|
+
* corresponding safe-area insets. A modal that does not span an axis reaches
|
|
59
|
+
* neither edge on that axis.
|
|
60
|
+
*
|
|
61
|
+
* When both `--width` and `--height` are `fullscreen`, coverage can be
|
|
62
|
+
* determined directly. Otherwise, coverage is based on the rendered wrapper,
|
|
63
|
+
* including cases where content sizing or `--max-height` causes the modal
|
|
64
|
+
* to reach the viewport.
|
|
116
65
|
*/
|
|
117
|
-
export const
|
|
66
|
+
export const getModalCoveredAxes = (hostEl) => {
|
|
118
67
|
const styles = getComputedStyle(hostEl);
|
|
119
|
-
const width = styles.getPropertyValue('--width')
|
|
120
|
-
const height = styles.getPropertyValue('--height')
|
|
121
|
-
|
|
68
|
+
const width = getOverlaySizeType(styles.getPropertyValue('--width'));
|
|
69
|
+
const height = getOverlaySizeType(styles.getPropertyValue('--height'));
|
|
70
|
+
if (width === 'fullscreen' && height === 'fullscreen') {
|
|
71
|
+
return { vertical: true, horizontal: true };
|
|
72
|
+
}
|
|
73
|
+
return measureCoveredAxes(hostEl);
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Measures the modal wrapper to determine whether it spans the viewport
|
|
77
|
+
* on each axis.
|
|
78
|
+
*
|
|
79
|
+
* The wrapper has no box while the modal is hidden, so `overlay-hidden`
|
|
80
|
+
* is temporarily removed to allow the wrapper to be measured. The class
|
|
81
|
+
* is restored in the same task before the browser can paint.
|
|
82
|
+
*
|
|
83
|
+
* Only the wrapper's size is measured. Its position is affected by the
|
|
84
|
+
* enter animation, which initially translates it by its own height, while
|
|
85
|
+
* the translation does not affect its measured size.
|
|
86
|
+
*/
|
|
87
|
+
const measureCoveredAxes = (hostEl) => {
|
|
88
|
+
const wrapperEl = hostEl.shadowRoot?.querySelector('.modal-wrapper');
|
|
89
|
+
if (wrapperEl == null || win === undefined) {
|
|
90
|
+
return { vertical: false, horizontal: false };
|
|
91
|
+
}
|
|
92
|
+
const wasHidden = hostEl.classList.contains('overlay-hidden');
|
|
93
|
+
if (wasHidden) {
|
|
94
|
+
hostEl.classList.remove('overlay-hidden');
|
|
95
|
+
}
|
|
96
|
+
const { width, height } = wrapperEl.getBoundingClientRect();
|
|
97
|
+
if (wasHidden) {
|
|
98
|
+
hostEl.classList.add('overlay-hidden');
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
vertical: height >= win.innerHeight - EDGE_THRESHOLD,
|
|
102
|
+
horizontal: width >= win.innerWidth - EDGE_THRESHOLD,
|
|
103
|
+
};
|
|
122
104
|
};
|
|
123
105
|
/**
|
|
124
106
|
* Returns the initial safe-area configuration based on modal type.
|
|
@@ -152,26 +134,23 @@ export const getInitialSafeAreaConfig = (context) => {
|
|
|
152
134
|
right: '0px',
|
|
153
135
|
};
|
|
154
136
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
// Fullscreen modals on phone - inherit all safe areas
|
|
137
|
+
/**
|
|
138
|
+
* Each axis is evaluated independently because a modal can span one axis
|
|
139
|
+
* without spanning the other. This allows the initial safe-area configuration
|
|
140
|
+
* to match the modal's expected dimensions and avoids correcting an incorrect
|
|
141
|
+
* pair of insets after presentation.
|
|
142
|
+
*
|
|
143
|
+
* A modal can span the horizontal axis while remaining inset vertically, or
|
|
144
|
+
* span the vertical axis while remaining inset horizontally. Wide viewports
|
|
145
|
+
* can also render regular modals as centered dialogs, while content-sized
|
|
146
|
+
* modals may still be clamped to the viewport.
|
|
147
|
+
*/
|
|
148
|
+
const { vertical, horizontal } = context.coveredAxes ?? { vertical: true, horizontal: true };
|
|
170
149
|
return {
|
|
171
|
-
top: 'inherit',
|
|
172
|
-
bottom: 'inherit',
|
|
173
|
-
left: 'inherit',
|
|
174
|
-
right: 'inherit',
|
|
150
|
+
top: vertical ? 'inherit' : '0px',
|
|
151
|
+
bottom: vertical ? 'inherit' : '0px',
|
|
152
|
+
left: horizontal ? 'inherit' : '0px',
|
|
153
|
+
right: horizontal ? 'inherit' : '0px',
|
|
175
154
|
};
|
|
176
155
|
};
|
|
177
156
|
/**
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { win } from "../../utils/browser/index";
|
|
5
|
+
import { onCustomPropertyChange } from "../../utils/helpers";
|
|
5
6
|
import { StatusBar, Style } from "../../utils/native/status-bar";
|
|
6
7
|
/**
|
|
7
8
|
* Use y = mx + b to
|
|
@@ -78,3 +79,9 @@ export const setCardStatusBarDefault = (defaultStyle = Style.Default) => {
|
|
|
78
79
|
}
|
|
79
80
|
StatusBar.setStyle({ style: defaultStyle });
|
|
80
81
|
};
|
|
82
|
+
/**
|
|
83
|
+
* Calls back when the modal's resolved `--height` changes.
|
|
84
|
+
*/
|
|
85
|
+
export const onModalHeightChange = (hostEl, callback) => {
|
|
86
|
+
return onCustomPropertyChange(hostEl, '--height', () => callback());
|
|
87
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
+
import { win } from "./browser/index";
|
|
4
5
|
import { printIonError } from "./logging/index";
|
|
5
6
|
import { isRTL } from "./rtl/index";
|
|
6
7
|
export const transitionEndAsync = (el, expectedDuration = 0) => {
|
|
@@ -176,6 +177,44 @@ export const addEventListener = (el, eventName, callback, opts) => {
|
|
|
176
177
|
export const removeEventListener = (el, eventName, callback, opts) => {
|
|
177
178
|
return el.removeEventListener(eventName, callback, opts);
|
|
178
179
|
};
|
|
180
|
+
/**
|
|
181
|
+
* Calls back when a CSS custom property that resolves to a length changes,
|
|
182
|
+
* which no event covers. The probe inherits the property from `hostEl` and
|
|
183
|
+
* uses it as its height, turning a property change into a size change that
|
|
184
|
+
* `ResizeObserver` can detect.
|
|
185
|
+
*
|
|
186
|
+
* The callback receives the probe's height. For length values, this matches
|
|
187
|
+
* the resolved property value. For other values, such as `fit-content`, the
|
|
188
|
+
* probe remains at zero, so the value only signals that the property changed.
|
|
189
|
+
* Percentages resolve against the probe's containing block, not the element
|
|
190
|
+
* where the property is ultimately used.
|
|
191
|
+
*
|
|
192
|
+
* Pass `initialValue` when the caller has already read the property so that
|
|
193
|
+
* changes occurring before the observer's first delivery are not missed.
|
|
194
|
+
* Without it, the first delivery establishes the baseline.
|
|
195
|
+
*/
|
|
196
|
+
export const onCustomPropertyChange = (hostEl, property, callback, initialValue) => {
|
|
197
|
+
const doc = win?.document;
|
|
198
|
+
if (!doc || !hostEl || typeof ResizeObserver === 'undefined') {
|
|
199
|
+
return () => undefined;
|
|
200
|
+
}
|
|
201
|
+
const probe = doc.createElement('div');
|
|
202
|
+
probe.style.cssText = `position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;width:0;height:var(${property},0px);`;
|
|
203
|
+
hostEl.appendChild(probe);
|
|
204
|
+
let lastHeight = initialValue;
|
|
205
|
+
const observer = new ResizeObserver((entries) => {
|
|
206
|
+
const { height } = entries[0].contentRect;
|
|
207
|
+
if (lastHeight !== undefined && height !== lastHeight) {
|
|
208
|
+
callback(height);
|
|
209
|
+
}
|
|
210
|
+
lastHeight = height;
|
|
211
|
+
});
|
|
212
|
+
observer.observe(probe);
|
|
213
|
+
return () => {
|
|
214
|
+
observer.disconnect();
|
|
215
|
+
probe.remove();
|
|
216
|
+
};
|
|
217
|
+
};
|
|
179
218
|
/**
|
|
180
219
|
* Gets the root context of a shadow dom element
|
|
181
220
|
* On newer browsers this will be the shadowRoot,
|
|
@@ -764,6 +764,40 @@ export const safeCall = (handler, arg) => {
|
|
|
764
764
|
}
|
|
765
765
|
return undefined;
|
|
766
766
|
};
|
|
767
|
+
/**
|
|
768
|
+
* `--width` and `--height` values that leave an overlay spanning the viewport
|
|
769
|
+
* on that axis, so it reaches both edges. An empty value means the property
|
|
770
|
+
* was never overridden.
|
|
771
|
+
*/
|
|
772
|
+
const FULLSCREEN_SIZES = ['', '100%', '100vw', '100vh', '100dvw', '100dvh', '100svw', '100svh'];
|
|
773
|
+
/**
|
|
774
|
+
* `--width` and `--height` values that size an overlay to its content, leaving
|
|
775
|
+
* the rendered size dependent on the content and on `--max-width` or
|
|
776
|
+
* `--max-height`.
|
|
777
|
+
*/
|
|
778
|
+
const CONTENT_SIZES = ['auto', 'fit-content', 'min-content', 'max-content'];
|
|
779
|
+
/**
|
|
780
|
+
* How an overlay's `--width` or `--height` determines its used size:
|
|
781
|
+
*
|
|
782
|
+
* `fullscreen` spans the viewport on that axis. `content` depends on the
|
|
783
|
+
* overlay's content, so its used size is not known until layout. `definite`
|
|
784
|
+
* resolves independently of the overlay's content size.
|
|
785
|
+
*
|
|
786
|
+
* Values are lowercased because CSS keywords are case-insensitive, while a
|
|
787
|
+
* custom property preserves the case in which it was authored. Content values
|
|
788
|
+
* are matched as a suffix so vendor-prefixed values such as `-moz-fit-content`
|
|
789
|
+
* are recognized.
|
|
790
|
+
*/
|
|
791
|
+
export const getOverlaySizeType = (size) => {
|
|
792
|
+
const value = size.trim().toLowerCase();
|
|
793
|
+
if (FULLSCREEN_SIZES.includes(value)) {
|
|
794
|
+
return 'fullscreen';
|
|
795
|
+
}
|
|
796
|
+
if (CONTENT_SIZES.some((keyword) => value.endsWith(keyword))) {
|
|
797
|
+
return 'content';
|
|
798
|
+
}
|
|
799
|
+
return 'definite';
|
|
800
|
+
};
|
|
767
801
|
export const BACKDROP = 'backdrop';
|
|
768
802
|
export const GESTURE = 'gesture';
|
|
769
803
|
export const OVERLAY_GESTURE_PRIORITY = 39;
|
package/dist/docs.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { j as printIonError } from './index-
|
|
5
|
-
import { w as win } from './
|
|
4
|
+
import { j as printIonError } from './index-Dvqtt_WK.js';
|
|
5
|
+
import { w as win } from './helpers-BJFnZngp.js';
|
|
6
6
|
|
|
7
7
|
let animationPrefix;
|
|
8
8
|
const getAnimationPrefix = (el) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { i as initialize } from './ionic-global-
|
|
4
|
+
import { i as initialize } from './ionic-global-BSaFA7np.js';
|
|
5
5
|
|
|
6
6
|
const appGlobalScript = initialize || (() => {});
|
|
7
7
|
const globalScripts = appGlobalScript;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { w as writeTask } from './index-
|
|
5
|
-
import { h as hapticSelectionEnd, a as hapticSelectionChanged, b as hapticSelectionStart } from './haptic-
|
|
4
|
+
import { w as writeTask } from './index-Dvqtt_WK.js';
|
|
5
|
+
import { h as hapticSelectionEnd, a as hapticSelectionChanged, b as hapticSelectionStart } from './haptic-D3njgGLB.js';
|
|
6
6
|
import { createGesture } from './index-BmLuEdV7.js';
|
|
7
7
|
|
|
8
8
|
const createButtonActiveGesture = (el, isButton) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { c as componentOnReady } from './helpers-
|
|
4
|
+
import { c as componentOnReady } from './helpers-BJFnZngp.js';
|
|
5
5
|
|
|
6
6
|
// TODO(FW-2832): types
|
|
7
7
|
const attachComponent = async (delegate, container, component, cssClasses, componentProps, inline) => {
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { j as printIonError } from './index-
|
|
4
|
+
import { j as printIonError } from './index-Dvqtt_WK.js';
|
|
5
5
|
import { i as isRTL } from './dir-Dojwmvde.js';
|
|
6
6
|
|
|
7
|
+
const win = typeof window !== 'undefined' ? window : undefined;
|
|
8
|
+
const doc = typeof document !== 'undefined' ? document : undefined;
|
|
9
|
+
|
|
7
10
|
const transitionEndAsync = (el, expectedDuration = 0) => {
|
|
8
11
|
return new Promise((resolve) => {
|
|
9
12
|
transitionEnd(el, expectedDuration, resolve);
|
|
@@ -174,6 +177,44 @@ const addEventListener = (el, eventName, callback, opts) => {
|
|
|
174
177
|
const removeEventListener = (el, eventName, callback, opts) => {
|
|
175
178
|
return el.removeEventListener(eventName, callback, opts);
|
|
176
179
|
};
|
|
180
|
+
/**
|
|
181
|
+
* Calls back when a CSS custom property that resolves to a length changes,
|
|
182
|
+
* which no event covers. The probe inherits the property from `hostEl` and
|
|
183
|
+
* uses it as its height, turning a property change into a size change that
|
|
184
|
+
* `ResizeObserver` can detect.
|
|
185
|
+
*
|
|
186
|
+
* The callback receives the probe's height. For length values, this matches
|
|
187
|
+
* the resolved property value. For other values, such as `fit-content`, the
|
|
188
|
+
* probe remains at zero, so the value only signals that the property changed.
|
|
189
|
+
* Percentages resolve against the probe's containing block, not the element
|
|
190
|
+
* where the property is ultimately used.
|
|
191
|
+
*
|
|
192
|
+
* Pass `initialValue` when the caller has already read the property so that
|
|
193
|
+
* changes occurring before the observer's first delivery are not missed.
|
|
194
|
+
* Without it, the first delivery establishes the baseline.
|
|
195
|
+
*/
|
|
196
|
+
const onCustomPropertyChange = (hostEl, property, callback, initialValue) => {
|
|
197
|
+
const doc = win?.document;
|
|
198
|
+
if (!doc || !hostEl || typeof ResizeObserver === 'undefined') {
|
|
199
|
+
return () => undefined;
|
|
200
|
+
}
|
|
201
|
+
const probe = doc.createElement('div');
|
|
202
|
+
probe.style.cssText = `position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;width:0;height:var(${property},0px);`;
|
|
203
|
+
hostEl.appendChild(probe);
|
|
204
|
+
let lastHeight = initialValue;
|
|
205
|
+
const observer = new ResizeObserver((entries) => {
|
|
206
|
+
const { height } = entries[0].contentRect;
|
|
207
|
+
if (lastHeight !== undefined && height !== lastHeight) {
|
|
208
|
+
callback(height);
|
|
209
|
+
}
|
|
210
|
+
lastHeight = height;
|
|
211
|
+
});
|
|
212
|
+
observer.observe(probe);
|
|
213
|
+
return () => {
|
|
214
|
+
observer.disconnect();
|
|
215
|
+
probe.remove();
|
|
216
|
+
};
|
|
217
|
+
};
|
|
177
218
|
/**
|
|
178
219
|
* Gets the root context of a shadow dom element
|
|
179
220
|
* On newer browsers this will be the shadowRoot,
|
|
@@ -340,4 +381,4 @@ const isSafeNumber = (input) => {
|
|
|
340
381
|
return typeof input === 'number' && !isNaN(input) && isFinite(input);
|
|
341
382
|
};
|
|
342
383
|
|
|
343
|
-
export { renderHiddenInput as a, inheritAttributes as b, componentOnReady as c, debounceEvent as d, clamp as e, addEventListener as f, getElementRoot as g, hasLazyBuild as h, inheritAriaAttributes as i, isSafeNumber as j, hasShadowDom as k, assert as l, removeEventListener as m,
|
|
384
|
+
export { renderHiddenInput as a, inheritAttributes as b, componentOnReady as c, debounceEvent as d, clamp as e, addEventListener as f, getElementRoot as g, hasLazyBuild as h, inheritAriaAttributes as i, isSafeNumber as j, hasShadowDom as k, assert as l, removeEventListener as m, doc as n, onCustomPropertyChange as o, focusVisibleElement as p, isEndSide as q, raf as r, debounce as s, transitionEndAsync as t, shallowEqualStringMap as u, pointerCoord as v, win as w };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { e as config, f as printIonWarning, w as writeTask, B as Build } from './index-
|
|
5
|
-
import { r as raf } from './helpers-
|
|
4
|
+
import { e as config, f as printIonWarning, w as writeTask, B as Build } from './index-Dvqtt_WK.js';
|
|
5
|
+
import { r as raf } from './helpers-BJFnZngp.js';
|
|
6
6
|
|
|
7
7
|
const LIFECYCLE_WILL_ENTER = 'ionViewWillEnter';
|
|
8
8
|
const LIFECYCLE_DID_ENTER = 'ionViewDidEnter';
|
|
@@ -118,8 +118,8 @@ const createFocusController = () => {
|
|
|
118
118
|
};
|
|
119
119
|
const LAST_FOCUS = 'ion-last-focus';
|
|
120
120
|
|
|
121
|
-
const iosTransitionAnimation = () => import('./ios.transition-
|
|
122
|
-
const mdTransitionAnimation = () => import('./md.transition-
|
|
121
|
+
const iosTransitionAnimation = () => import('./ios.transition-ofa92pAl.js');
|
|
122
|
+
const mdTransitionAnimation = () => import('./md.transition-DnFfqsAv.js');
|
|
123
123
|
const focusController = createFocusController();
|
|
124
124
|
// TODO(FW-2832): types
|
|
125
125
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { f as printIonWarning, j as printIonError } from './index-
|
|
4
|
+
import { f as printIonWarning, j as printIonError } from './index-Dvqtt_WK.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Sanitize an untrusted HTML string.
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import './index-C23AVPx9.js';
|
|
4
|
+
import { n as doc, v as pointerCoord } from './helpers-BJFnZngp.js';
|
|
5
|
+
import './index-Dvqtt_WK.js';
|
|
7
6
|
import './dir-Dojwmvde.js';
|
|
8
7
|
|
|
9
8
|
const startTapClick = (config) => {
|
|
@@ -141,7 +141,7 @@ const printRequiredElementError = (el, ...targetSelectors) => {
|
|
|
141
141
|
};
|
|
142
142
|
|
|
143
143
|
/*
|
|
144
|
-
Stencil Client Platform v4.
|
|
144
|
+
Stencil Client Platform v4.45.0 | MIT Licensed | https://stenciljs.com
|
|
145
145
|
*/
|
|
146
146
|
|
|
147
147
|
var Build = {
|
|
@@ -2511,7 +2511,7 @@ var updateChildren = (parentElm, oldCh, newVNode2, newCh, isInitialRender = fals
|
|
|
2511
2511
|
if (idxInOld >= 0) {
|
|
2512
2512
|
elmToMove = oldCh[idxInOld];
|
|
2513
2513
|
if (elmToMove.$tag$ !== newStartVnode.$tag$) {
|
|
2514
|
-
node = createElm(oldCh && oldCh[newStartIdx], newVNode2,
|
|
2514
|
+
node = createElm(oldCh && oldCh[newStartIdx], newVNode2, newStartIdx);
|
|
2515
2515
|
} else {
|
|
2516
2516
|
patch(elmToMove, newStartVnode, isInitialRender);
|
|
2517
2517
|
oldCh[idxInOld] = void 0;
|
|
@@ -3180,21 +3180,26 @@ var proxyComponent = (Cstr, cmpMeta, flags) => {
|
|
|
3180
3180
|
}
|
|
3181
3181
|
return;
|
|
3182
3182
|
}
|
|
3183
|
-
const
|
|
3183
|
+
const parsedValue = parsePropertyValue(
|
|
3184
|
+
newValue,
|
|
3185
|
+
memberFlags);
|
|
3186
|
+
const setterSetVal = (val) => {
|
|
3184
3187
|
const currentValue = ref.$lazyInstance$[memberName];
|
|
3185
3188
|
if (!ref.$instanceValues$.get(memberName) && currentValue) {
|
|
3186
3189
|
ref.$instanceValues$.set(memberName, currentValue);
|
|
3187
3190
|
}
|
|
3188
|
-
ref.$lazyInstance$[memberName] =
|
|
3189
|
-
newValue,
|
|
3190
|
-
memberFlags);
|
|
3191
|
+
ref.$lazyInstance$[memberName] = val;
|
|
3191
3192
|
setValue(this, memberName, ref.$lazyInstance$[memberName], cmpMeta);
|
|
3192
3193
|
};
|
|
3193
3194
|
if (ref.$lazyInstance$) {
|
|
3194
|
-
setterSetVal();
|
|
3195
|
+
setterSetVal(parsedValue);
|
|
3195
3196
|
} else {
|
|
3197
|
+
ref.$instanceValues$.set(memberName, parsedValue);
|
|
3196
3198
|
ref.$fetchedCbList$.push(() => {
|
|
3197
|
-
|
|
3199
|
+
const pendingValue = ref.$instanceValues$.get(memberName);
|
|
3200
|
+
if (ref.$lazyInstance$[memberName] !== pendingValue) {
|
|
3201
|
+
setterSetVal(pendingValue);
|
|
3202
|
+
}
|
|
3198
3203
|
});
|
|
3199
3204
|
}
|
|
3200
3205
|
}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import { MENU_BACK_BUTTON_PRIORITY } from './
|
|
6
|
-
import { f as printIonWarning } from './index-
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { c as createAnimation } from './animation-BFNVlYum.js';
|
|
4
|
+
import { n as doc, c as componentOnReady } from './helpers-BJFnZngp.js';
|
|
5
|
+
import { M as MENU_BACK_BUTTON_PRIORITY } from './overlays-a_5AhqWk.js';
|
|
6
|
+
import { f as printIonWarning } from './index-Dvqtt_WK.js';
|
|
7
|
+
import { b as getIonMode } from './ionic-global-BSaFA7np.js';
|
|
8
|
+
import { c as createAnimation } from './animation-CAzXJ2I1.js';
|
|
10
9
|
|
|
11
10
|
/**
|
|
12
11
|
* baseAnimation
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { c as componentOnReady } from './helpers-
|
|
5
|
-
import { t as printRequiredElementError } from './index-
|
|
4
|
+
import { c as componentOnReady } from './helpers-BJFnZngp.js';
|
|
5
|
+
import { t as printRequiredElementError } from './index-Dvqtt_WK.js';
|
|
6
6
|
|
|
7
7
|
const ION_CONTENT_TAG_NAME = 'ION-CONTENT';
|
|
8
8
|
const ION_CONTENT_ELEMENT_SELECTOR = 'ion-content';
|
package/dist/esm/index.js
CHANGED
|
@@ -1,25 +1,23 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
export { c as createAnimation } from './animation-
|
|
5
|
-
export { a as LIFECYCLE_DID_ENTER, c as LIFECYCLE_DID_LEAVE, L as LIFECYCLE_WILL_ENTER, b as LIFECYCLE_WILL_LEAVE, d as LIFECYCLE_WILL_UNLOAD, g as getIonPageElement } from './index-
|
|
6
|
-
export { iosTransitionAnimation } from './ios.transition-
|
|
7
|
-
export { mdTransitionAnimation } from './md.transition-
|
|
4
|
+
export { c as createAnimation } from './animation-CAzXJ2I1.js';
|
|
5
|
+
export { a as LIFECYCLE_DID_ENTER, c as LIFECYCLE_DID_LEAVE, L as LIFECYCLE_WILL_ENTER, b as LIFECYCLE_WILL_LEAVE, d as LIFECYCLE_WILL_UNLOAD, g as getIonPageElement } from './index-CdoVp_rZ.js';
|
|
6
|
+
export { iosTransitionAnimation } from './ios.transition-ofa92pAl.js';
|
|
7
|
+
export { mdTransitionAnimation } from './md.transition-DnFfqsAv.js';
|
|
8
8
|
export { g as getTimeGivenProgression } from './cubic-bezier-hHmYLOfE.js';
|
|
9
9
|
export { createGesture } from './index-BmLuEdV7.js';
|
|
10
|
-
export { g as getPlatforms, i as initialize, a as isPlatform } from './ionic-global-
|
|
11
|
-
export { c as componentOnReady } from './helpers-
|
|
12
|
-
export { L as LogLevel } from './index-
|
|
13
|
-
export { I as IonicSafeString } from './index-
|
|
10
|
+
export { g as getPlatforms, i as initialize, a as isPlatform } from './ionic-global-BSaFA7np.js';
|
|
11
|
+
export { c as componentOnReady } from './helpers-BJFnZngp.js';
|
|
12
|
+
export { L as LogLevel } from './index-Dvqtt_WK.js';
|
|
13
|
+
export { I as IonicSafeString } from './index-DmnOg_xm.js';
|
|
14
14
|
export { g as getMode, s as setupConfig } from './config-DWCzVL3Y.js';
|
|
15
15
|
export { o as openURL } from './theme-byZM6qHV.js';
|
|
16
|
-
export { m as menuController } from './index-
|
|
17
|
-
export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as popoverController, t as toastController } from './overlays-
|
|
18
|
-
import './index-ZjP4CjeZ.js';
|
|
16
|
+
export { m as menuController } from './index-iurdcGHg.js';
|
|
17
|
+
export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as popoverController, t as toastController } from './overlays-a_5AhqWk.js';
|
|
19
18
|
import './gesture-controller-B_gJaBk0.js';
|
|
20
19
|
import './dir-Dojwmvde.js';
|
|
21
|
-
import './
|
|
22
|
-
import './framework-delegate-BwNhx9NR.js';
|
|
20
|
+
import './framework-delegate-CUDbUfWS.js';
|
|
23
21
|
|
|
24
22
|
const IonicSlides = (opts) => {
|
|
25
23
|
const { swiper, extendParams } = opts;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { w as win,
|
|
5
|
-
import { g as getScrollElement, h as scrollByPoint, a as findClosestIonContent } from './index-
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import './index-C23AVPx9.js';
|
|
4
|
+
import { f as addEventListener, m as removeEventListener, w as win, n as doc, c as componentOnReady } from './helpers-BJFnZngp.js';
|
|
5
|
+
import { g as getScrollElement, h as scrollByPoint, a as findClosestIonContent } from './index-obGyiHiO.js';
|
|
6
|
+
import { a as KeyboardResize, K as Keyboard } from './keyboard-Cz4hUjuj.js';
|
|
7
|
+
import './index-Dvqtt_WK.js';
|
|
9
8
|
import './dir-Dojwmvde.js';
|
|
10
|
-
import './capacitor-
|
|
9
|
+
import './capacitor-C041I3qZ.js';
|
|
11
10
|
|
|
12
11
|
const cloneMap = new WeakMap();
|
|
13
12
|
const relocateInput = (componentEl, inputEl, shouldRelocate, inputRelativeY = 0, disabledClonedInput = false) => {
|