voyager-ionic-core 8.8.17 → 9.0.3
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-1sJ0ZDPe.js +4 -0
- package/components/p-5ldEpNdG.js +4 -0
- package/components/p-6ZLn6K5e.js +4 -0
- package/components/p-B1_TL6RQ.js +4 -0
- package/components/p-B4lxwJ8N.js +4 -0
- package/components/{p-rCa2eL0j.js → p-BF48Oc0v.js} +1 -1
- package/components/p-BJr2B5hZ.js +4 -0
- package/components/p-BMPN55of.js +4 -0
- package/components/{p-ChIZKXUu.js → p-BQyuFxYc.js} +1 -1
- package/components/p-BSQPZ79H.js +4 -0
- package/components/p-BT9-hMMz.js +4 -0
- package/components/p-BU8a2IhR.js +4 -0
- package/components/p-BW_SlU2D.js +4 -0
- package/components/p-BWoa-cki.js +4 -0
- package/components/p-BYJRZKHa.js +4 -0
- package/components/p-B_gJaBk0.js +4 -0
- package/components/p-BgkOsq-d.js +4 -0
- package/components/p-BhamHSw3.js +4 -0
- package/components/p-Bi-it1EH.js +4 -0
- package/components/p-C-NbvXu4.js +4 -0
- package/components/p-C09TXohi.js +4 -0
- package/components/p-C4VpVfrJ.js +4 -0
- package/components/p-C8Ck7_Eo.js +4 -0
- package/components/p-CEW4RXZO.js +4 -0
- package/components/p-CG_zZq_I.js +4 -0
- package/components/{p-B9jFTlwE.js → p-CJgnoKcN.js} +1 -1
- package/components/p-CMRYD_yR.js +4 -0
- package/components/{p-BMI53wYL.js → p-CNLioZ3B.js} +1 -1
- package/components/{p--JUspHvy.js → p-COO0eJOA.js} +1 -1
- package/components/p-CWAks_S_.js +4 -0
- package/{dist/ionic/p-KjNvRoEp.js → components/p-Cd1WaN-0.js} +1 -1
- package/components/p-CqbGBmqb.js +4 -0
- package/components/p-CrAKlX71.js +4 -0
- package/components/p-Ctop2IWW.js +4 -0
- package/components/p-Cw6WocLJ.js +4 -0
- package/components/p-D0YpjgON.js +4 -0
- package/components/{p-DJZp0KTQ.js → p-D5w_FlVa.js} +1 -1
- package/components/p-D7-vHX0A.js +4 -0
- package/components/p-D7wDJdFn.js +4 -0
- package/components/p-DFLJvuRK.js +4 -0
- package/components/p-DL13ieTa.js +4 -0
- package/components/{p-DqLB8yFQ.js → p-DM1gJSMP.js} +1 -1
- package/components/p-DMBiAyOR.js +4 -0
- package/components/p-DWCzVL3Y.js +4 -0
- package/components/p-DZRZic9C.js +4 -0
- package/components/{p-C_hpsif8.js → p-DhNuxvJH.js} +1 -1
- package/components/p-DiuOa1vw.js +4 -0
- package/components/p-Djmz-ssp.js +4 -0
- package/components/p-DnBNYc7u.js +4 -0
- package/components/p-Dojwmvde.js +4 -0
- package/components/p-DwSXbQSz.js +4 -0
- package/components/p-DxhHlJln.js +4 -0
- package/components/p-Fl7ZFU74.js +4 -0
- package/components/{p-DqZAXv2t.js → p-GGbIHyEF.js} +1 -1
- package/components/{p-j5IxBIan.js → p-Hp8t4RMX.js} +1 -1
- package/components/p-M34T2gyX.js +4 -0
- package/components/p-TWw4e4sO.js +4 -0
- package/components/{p-Cfx4M1Bn.js → p-YjMkHuvH.js} +1 -1
- package/components/p-byZM6qHV.js +4 -0
- package/components/p-cEN43Ahr.js +4 -0
- package/components/p-qAXsfUff.js +4 -0
- package/dist/cjs/{animation-BJq0kcy2.js → animation-Kd1N7WTN.js} +4 -4
- package/dist/cjs/{app-globals-BlqrqKTN.js → app-globals-b1G4t26O.js} +1 -1
- package/dist/cjs/{button-active-0mPOKmV2.js → button-active-CQCFubJJ.js} +3 -3
- package/dist/cjs/config-CjUbvdPW.js +36 -0
- package/dist/cjs/dir-zwDPRE5K.js +30 -0
- package/dist/cjs/{format-PxvGiOik.js → format-bHU8N1g5.js} +40 -30
- package/dist/cjs/{framework-delegate-BtICZDHr.js → framework-delegate-d-fWfeI6.js} +5 -7
- package/dist/cjs/{gesture-controller-dtqlP_q4.js → gesture-controller-CeJslptU.js} +1 -2
- package/dist/cjs/{haptic-ClPPQ_PS.js → haptic-Ch-X4gRx.js} +2 -3
- package/dist/cjs/{hardware-back-button-iUuF_76h.js → hardware-back-button-Bu4Dzw8l.js} +4 -4
- package/dist/cjs/{helpers-Cv23MFHM.js → helpers-7wzdhdeg.js} +15 -11
- package/dist/cjs/{index-D81eLYUM.js → index-C74Q3t6a.js} +3 -2
- package/dist/cjs/{index-BERfRao3.js → index-CQfEIyLK.js} +5 -5
- package/dist/cjs/{index-aC4x3Fk3.js → index-DFNrCX7M.js} +6 -7
- package/dist/cjs/{index-CAvQ7Tka.js → index-DRPqwSvU.js} +13 -30
- package/dist/cjs/{index-Ct7gcRif.js → index-DXoo08JC.js} +321 -26
- package/dist/cjs/{index-CIrkNXqJ.js → index-DtvKGwdh.js} +34 -2
- package/dist/cjs/index-KiSZqhYS.js +431 -0
- package/dist/cjs/{index-DqmRDbxg.js → index-wOmugbdg.js} +1 -1
- package/dist/cjs/index.cjs.js +19 -18
- package/dist/cjs/{input-shims-CFLg7uzj.js → input-shims-VJIiKBKv.js} +10 -11
- package/dist/cjs/input.utils-EHVE2RK_.js +35 -0
- package/dist/cjs/ion-accordion_2.cjs.entry.js +12 -12
- package/dist/cjs/ion-action-sheet.cjs.entry.js +92 -44
- package/dist/cjs/ion-alert.cjs.entry.js +144 -65
- package/dist/cjs/ion-app_8.cjs.entry.js +112 -40
- package/dist/cjs/ion-avatar_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-back-button.cjs.entry.js +6 -5
- package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +8 -7
- package/dist/cjs/ion-button_2.cjs.entry.js +12 -8
- package/dist/cjs/ion-card_5.cjs.entry.js +6 -5
- package/dist/cjs/ion-checkbox.cjs.entry.js +10 -7
- package/dist/cjs/ion-chip.cjs.entry.js +3 -3
- package/dist/cjs/ion-col_3.cjs.entry.js +10 -6
- package/dist/cjs/ion-datetime-button.cjs.entry.js +22 -25
- package/dist/cjs/{ion-datetime_3.cjs.entry.js → ion-datetime.cjs.entry.js} +182 -746
- package/dist/cjs/ion-fab_3.cjs.entry.js +7 -6
- package/dist/cjs/ion-img.cjs.entry.js +7 -4
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +8 -6
- package/dist/cjs/ion-input-otp.cjs.entry.js +20 -29
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +9 -10
- package/dist/cjs/ion-input.cjs.entry.js +58 -70
- package/dist/cjs/ion-item-option_3.cjs.entry.js +21 -24
- package/dist/cjs/ion-item_8.cjs.entry.js +38 -34
- package/dist/cjs/ion-loading.cjs.entry.js +29 -15
- package/dist/cjs/ion-menu_3.cjs.entry.js +23 -24
- package/dist/cjs/ion-modal.cjs.entry.js +283 -161
- package/dist/cjs/ion-nav_2.cjs.entry.js +30 -138
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +8 -13
- package/dist/cjs/ion-picker-column.cjs.entry.js +218 -62
- package/dist/cjs/ion-picker.cjs.entry.js +4 -4
- package/dist/cjs/ion-popover.cjs.entry.js +50 -30
- package/dist/cjs/ion-progress-bar.cjs.entry.js +6 -5
- package/dist/cjs/ion-radio_2.cjs.entry.js +12 -11
- package/dist/cjs/ion-range.cjs.entry.js +30 -25
- package/dist/cjs/ion-refresher_2.cjs.entry.js +34 -26
- package/dist/cjs/ion-reorder_2.cjs.entry.js +10 -9
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +3 -3
- package/dist/cjs/ion-route_4.cjs.entry.js +36 -30
- package/dist/cjs/ion-searchbar.cjs.entry.js +27 -22
- package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment-view.cjs.entry.js +5 -6
- package/dist/cjs/ion-segment_2.cjs.entry.js +30 -26
- package/dist/cjs/ion-select-modal.cjs.entry.js +93 -38
- package/dist/cjs/ion-select_3.cjs.entry.js +495 -126
- package/dist/cjs/ion-spinner.cjs.entry.js +5 -6
- package/dist/cjs/ion-split-pane.cjs.entry.js +4 -4
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +15 -12
- package/dist/cjs/ion-tab_2.cjs.entry.js +8 -8
- package/dist/cjs/ion-text.cjs.entry.js +5 -5
- package/dist/cjs/ion-textarea.cjs.entry.js +56 -65
- package/dist/cjs/ion-toast.cjs.entry.js +26 -21
- package/dist/cjs/ion-toggle.cjs.entry.js +15 -13
- package/dist/cjs/{ionic-global-B-cA6LkY.js → ionic-global-CYJNT-2P.js} +13 -8
- package/dist/cjs/ionic.cjs.js +5 -5
- package/dist/cjs/{ios.transition-BOSWOaiK.js → ios.transition-DYGiD6gM.js} +14 -17
- package/dist/cjs/{item-multiple-inputs-D-gyg57c.js → item-multiple-inputs-Dv6qrMhm.js} +1 -1
- package/dist/cjs/{keyboard-hHzlEQpk.js → keyboard-Cix5TVkD.js} +2 -2
- package/dist/cjs/{keyboard-UuAS4D_9.js → keyboard-cHxZlTyz.js} +2 -2
- package/dist/cjs/{keyboard-controller-GXBiBRKS.js → keyboard-controller-PtZoN2GS.js} +6 -6
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-B8-wBZqt.js → md.transition-CrSkaoz6.js} +8 -8
- package/dist/cjs/overlay-control-label-D2sdL2O8.js +50 -0
- package/dist/cjs/{overlays-DdtIYQUH.js → overlays-BR21NUIG.js} +98 -58
- package/dist/cjs/select-option-render-D8ZEjYji.js +123 -0
- package/dist/cjs/slot-mutation-controller-D6IjSEIh.js +397 -0
- package/dist/cjs/{status-tap-BXX8H8_Y.js → status-tap-CNP5eD1R.js} +4 -3
- package/dist/cjs/{swipe-back-CCMaNiP2.js → swipe-back-CSIJQfu5.js} +5 -5
- package/dist/cjs/{theme-CeDs6Hcv.js → theme-Bw0rpaNN.js} +6 -1
- package/dist/collection/collection-manifest.json +7 -11
- package/dist/collection/components/accordion/accordion.js +5 -6
- package/dist/collection/components/accordion-group/accordion-group.js +2 -2
- package/dist/collection/components/action-sheet/action-sheet.ios.css +228 -2
- package/dist/collection/components/action-sheet/action-sheet.js +77 -31
- package/dist/collection/components/action-sheet/action-sheet.md.css +174 -2
- package/dist/collection/components/alert/alert.ios.css +279 -10
- package/dist/collection/components/alert/alert.js +127 -50
- package/dist/collection/components/alert/alert.md.css +268 -20
- package/dist/collection/components/breadcrumb/breadcrumb.js +1 -1
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +1 -1
- package/dist/collection/components/button/button.js +5 -2
- package/dist/collection/components/card/card.js +1 -1
- package/dist/collection/components/checkbox/checkbox.js +4 -2
- package/dist/collection/components/col/col.js +7 -3
- package/dist/collection/components/content/content.js +56 -6
- package/dist/collection/components/datetime/datetime.ios.css +42 -2
- package/dist/collection/components/datetime/datetime.js +146 -77
- package/dist/collection/components/datetime/datetime.md.css +42 -1
- package/dist/collection/components/datetime/utils/data.js +13 -14
- package/dist/collection/components/datetime/utils/format.js +21 -11
- package/dist/collection/components/datetime/utils/manipulation.js +8 -8
- package/dist/collection/components/datetime/utils/parse.js +10 -10
- package/dist/collection/components/datetime/utils/state.js +8 -2
- package/dist/collection/components/datetime/utils/validate.js +4 -5
- package/dist/collection/components/datetime-button/datetime-button.ios.css +5 -0
- package/dist/collection/components/datetime-button/datetime-button.js +15 -20
- package/dist/collection/components/datetime-button/datetime-button.md.css +5 -0
- package/dist/collection/components/fab-button/fab-button.js +1 -1
- package/dist/collection/components/footer/footer.js +1 -1
- package/dist/collection/components/header/header.js +2 -2
- package/dist/collection/components/img/img.js +6 -1
- package/dist/collection/components/input/input.ios.css +57 -26
- package/dist/collection/components/input/input.js +51 -64
- package/dist/collection/components/input/input.md.css +79 -43
- package/dist/collection/components/input-otp/input-otp.js +15 -24
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +5 -6
- package/dist/collection/components/item/item.js +19 -16
- package/dist/collection/components/item-divider/item-divider.js +2 -2
- package/dist/collection/components/item-group/item-group.js +1 -1
- package/dist/collection/components/item-option/item-option.js +2 -2
- package/dist/collection/components/item-options/item-options.js +1 -1
- package/dist/collection/components/item-sliding/item-sliding.js +12 -16
- package/dist/collection/components/label/label.js +2 -2
- package/dist/collection/components/list/list.js +2 -2
- package/dist/collection/components/list-header/list-header.js +2 -2
- package/dist/collection/components/loading/loading.js +17 -5
- package/dist/collection/components/menu/menu.js +6 -8
- package/dist/collection/components/menu-button/menu-button.js +2 -2
- package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
- package/dist/collection/components/modal/animations/ios.enter.js +1 -1
- package/dist/collection/components/modal/animations/md.enter.js +1 -1
- package/dist/collection/components/modal/gestures/sheet.js +42 -34
- package/dist/collection/components/modal/gestures/swipe-to-close.js +18 -35
- package/dist/collection/components/modal/gestures/utils.js +17 -0
- package/dist/collection/components/modal/modal.js +146 -65
- package/dist/collection/components/modal/safe-area-utils.js +39 -5
- package/dist/collection/components/nav/nav.js +24 -235
- package/dist/collection/components/nav-link/nav-link.js +1 -1
- package/dist/collection/components/note/note.js +2 -2
- package/dist/collection/components/picker/picker.js +1 -2
- package/dist/collection/components/picker-column/picker-column.css +3 -0
- package/dist/collection/components/picker-column/picker-column.js +212 -58
- package/dist/collection/components/picker-column-option/picker-column-option.js +3 -10
- package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -1
- package/dist/collection/components/popover/animations/ios.enter.js +1 -2
- package/dist/collection/components/popover/animations/md.enter.js +1 -2
- package/dist/collection/components/popover/popover.ios.css +15 -0
- package/dist/collection/components/popover/popover.js +32 -9
- package/dist/collection/components/popover/popover.md.css +15 -0
- package/dist/collection/components/popover/utils.js +4 -6
- package/dist/collection/components/progress-bar/progress-bar.js +1 -1
- package/dist/collection/components/radio/radio.js +5 -5
- package/dist/collection/components/radio-group/radio-group.js +2 -2
- package/dist/collection/components/range/range.js +24 -19
- package/dist/collection/components/refresher/refresher.js +19 -13
- package/dist/collection/components/refresher-content/refresher-content.js +1 -1
- package/dist/collection/components/reorder/reorder.js +1 -1
- package/dist/collection/components/reorder-group/reorder-group.js +1 -1
- package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
- package/dist/collection/components/route/route.js +1 -1
- package/dist/collection/components/router/router.js +2 -6
- package/dist/collection/components/router/utils/dom.js +25 -7
- package/dist/collection/components/router/utils/matching.js +6 -9
- package/dist/collection/components/router/utils/parser.js +1 -1
- package/dist/collection/components/router/utils/path.js +0 -1
- package/dist/collection/components/router-link/router-link.js +2 -2
- package/dist/collection/components/router-outlet/router-outlet.js +49 -10
- package/dist/collection/components/row/row.js +1 -1
- package/dist/collection/components/searchbar/searchbar.js +25 -20
- package/dist/collection/components/segment/segment.js +9 -11
- package/dist/collection/components/segment-button/segment-button.js +15 -9
- package/dist/collection/components/segment-content/segment-content.js +1 -1
- package/dist/collection/components/segment-view/segment-view.js +3 -4
- package/dist/collection/components/select/select.ios.css +96 -69
- package/dist/collection/components/select/select.js +405 -92
- package/dist/collection/components/select/select.md.css +118 -85
- package/dist/collection/components/select-modal/select-modal.ios.css +218 -0
- package/dist/collection/components/select-modal/select-modal.js +80 -27
- package/dist/collection/components/select-modal/select-modal.md.css +164 -0
- package/dist/collection/components/select-option/select-option.js +67 -3
- package/dist/collection/components/select-popover/select-popover.ios.css +218 -0
- package/dist/collection/components/select-popover/select-popover.js +78 -26
- package/dist/collection/components/select-popover/select-popover.md.css +164 -0
- package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
- package/dist/collection/components/spinner/spinner.js +2 -3
- package/dist/collection/components/split-pane/split-pane.js +2 -2
- package/dist/collection/components/tab/tab.js +2 -2
- package/dist/collection/components/tab-bar/tab-bar.js +2 -2
- package/dist/collection/components/tab-button/tab-button.js +6 -4
- package/dist/collection/components/tabs/tabs.js +2 -3
- package/dist/collection/components/text/text.js +2 -2
- package/dist/collection/components/textarea/textarea.ios.css +94 -62
- package/dist/collection/components/textarea/textarea.js +47 -57
- package/dist/collection/components/textarea/textarea.md.css +103 -77
- package/dist/collection/components/thumbnail/thumbnail.js +1 -1
- package/dist/collection/components/title/title.js +2 -2
- package/dist/collection/components/toast/toast.js +12 -9
- package/dist/collection/components/toggle/toggle.js +6 -4
- package/dist/collection/components/toolbar/toolbar.js +7 -4
- package/dist/collection/global/config.js +3 -3
- package/dist/collection/global/ionic-global.js +8 -2
- package/dist/collection/index.js +1 -1
- package/dist/collection/utils/animation/animation.js +3 -3
- package/dist/collection/utils/config.js +5 -4
- package/dist/collection/utils/content/index.js +30 -0
- package/dist/collection/utils/focus-controller/index.js +1 -1
- package/dist/collection/utils/focus-trap.js +3 -3
- package/dist/collection/utils/forms/index.js +1 -0
- package/dist/collection/utils/forms/start-container-controller.js +132 -0
- package/dist/collection/utils/framework-delegate.js +4 -6
- package/dist/collection/utils/gesture/gesture-controller.js +1 -2
- package/dist/collection/utils/gesture/index.js +10 -2
- package/dist/collection/utils/gesture/listener.js +4 -27
- package/dist/collection/utils/hardware-back-button.js +3 -3
- package/dist/collection/utils/helpers.js +14 -10
- package/dist/collection/utils/input-shims/hacks/scroll-assist.js +4 -5
- package/dist/collection/utils/input-shims/hacks/scroll-data.js +1 -2
- package/dist/collection/utils/keyboard/keyboard-controller.js +5 -5
- package/dist/collection/utils/keyboard/keyboard.js +1 -1
- package/dist/collection/utils/logging/index.js +23 -4
- package/dist/collection/utils/menu-controller/index.js +1 -2
- package/dist/collection/utils/native/haptic.js +2 -3
- package/dist/collection/utils/native/keyboard.js +2 -2
- package/dist/collection/utils/native/status-bar.js +1 -1
- package/dist/collection/utils/overlay-control-label.js +45 -0
- package/dist/collection/utils/overlays.js +87 -48
- package/dist/collection/utils/platform.js +4 -5
- package/dist/collection/utils/rtl/dir.js +17 -7
- package/dist/collection/utils/sanitization/index.js +283 -26
- package/dist/collection/utils/select-option-render.js +118 -0
- package/dist/collection/utils/slot-mutation-controller.js +1 -2
- package/dist/collection/utils/test/late-props/late-props.js +69 -0
- package/dist/collection/utils/test/playwright/apply-keyboard-focus.js +1 -1
- package/dist/collection/utils/test/playwright/detach-reattach.js +23 -0
- package/dist/collection/utils/test/playwright/drag-element.js +2 -3
- package/dist/collection/utils/test/playwright/generator.js +3 -4
- package/dist/collection/utils/test/playwright/index.js +1 -0
- package/dist/collection/utils/test/playwright/page/event-spy.js +2 -4
- package/dist/collection/utils/test/playwright/page/utils/goto.js +4 -5
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
- package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +2 -3
- package/dist/collection/utils/test/press-keys.js +6 -16
- package/dist/collection/utils/theme.js +6 -1
- package/dist/collection/utils/transition/ios.transition.js +9 -13
- package/dist/collection/utils/transition/md.transition.js +3 -4
- package/dist/docs.json +933 -1402
- package/dist/esm/{animation-DLJpuoEz.js → animation-BFNVlYum.js} +4 -4
- package/dist/esm/{app-globals-D0C5S4hU.js → app-globals-BgX0BGL1.js} +1 -1
- package/dist/esm/{button-active-BSpTQmS9.js → button-active-BfOvDr3b.js} +3 -3
- package/dist/esm/config-DWCzVL3Y.js +32 -0
- package/dist/esm/dir-Dojwmvde.js +28 -0
- package/dist/esm/{format-CAmvpAez.js → format-DDFE9jM5.js} +41 -31
- package/dist/esm/{framework-delegate-FnPGymXL.js → framework-delegate-BwNhx9NR.js} +5 -7
- package/dist/esm/{gesture-controller-BTEOs1at.js → gesture-controller-B_gJaBk0.js} +1 -2
- package/dist/esm/{haptic-DzAMWJuk.js → haptic-Cq4UAeka.js} +2 -3
- package/dist/esm/{hardware-back-button-B93Gru0Y.js → hardware-back-button-DmkiRgOT.js} +4 -4
- package/dist/esm/{helpers-HEqiOzXb.js → helpers-BSmc0nst.js} +15 -11
- package/dist/esm/{index-CfgBF1SE.js → index-BmLuEdV7.js} +13 -30
- package/dist/esm/{index-Q6UPU0Ay.js → index-BuPaALjU.js} +6 -7
- package/dist/esm/{index-DV3sJJW8.js → index-BvabGprD.js} +2 -2
- package/dist/esm/{index-MEDq2S8l.js → index-C1b9CLFg.js} +33 -3
- package/dist/esm/{index-tcQvqkiX.js → index-C23AVPx9.js} +303 -26
- package/dist/esm/{index-BRHzoo00.js → index-CJln0gS3.js} +3 -2
- package/dist/esm/index-D76bbuoi.js +425 -0
- package/dist/esm/{index-B_dQk_WE.js → index-DnA_7Bnx.js} +5 -5
- package/dist/esm/index.js +17 -15
- package/dist/esm/{input-shims-D10mwcw1.js → input-shims-Dqk-Ou25.js} +10 -11
- package/dist/esm/input.utils-rqoH22pW.js +33 -0
- package/dist/esm/ion-accordion_2.entry.js +12 -12
- package/dist/esm/ion-action-sheet.entry.js +92 -44
- package/dist/esm/ion-alert.entry.js +143 -64
- package/dist/esm/ion-app_8.entry.js +112 -40
- package/dist/esm/ion-avatar_3.entry.js +4 -4
- package/dist/esm/ion-back-button.entry.js +6 -5
- package/dist/esm/ion-backdrop.entry.js +2 -2
- package/dist/esm/ion-breadcrumb_2.entry.js +8 -7
- package/dist/esm/ion-button_2.entry.js +12 -8
- package/dist/esm/ion-card_5.entry.js +6 -5
- package/dist/esm/ion-checkbox.entry.js +10 -7
- package/dist/esm/ion-chip.entry.js +3 -3
- package/dist/esm/ion-col_3.entry.js +10 -6
- package/dist/esm/ion-datetime-button.entry.js +22 -25
- package/dist/esm/{ion-datetime_3.entry.js → ion-datetime.entry.js} +183 -745
- package/dist/esm/ion-fab_3.entry.js +7 -6
- package/dist/esm/ion-img.entry.js +7 -4
- package/dist/esm/ion-infinite-scroll_2.entry.js +7 -5
- package/dist/esm/ion-input-otp.entry.js +20 -29
- package/dist/esm/ion-input-password-toggle.entry.js +9 -10
- package/dist/esm/ion-input.entry.js +56 -68
- package/dist/esm/ion-item-option_3.entry.js +21 -24
- package/dist/esm/ion-item_8.entry.js +38 -34
- package/dist/esm/ion-loading.entry.js +28 -14
- package/dist/esm/ion-menu_3.entry.js +23 -24
- package/dist/esm/ion-modal.entry.js +271 -149
- package/dist/esm/ion-nav_2.entry.js +30 -138
- package/dist/esm/ion-picker-column-option.entry.js +8 -13
- package/dist/esm/ion-picker-column.entry.js +218 -62
- package/dist/esm/ion-picker.entry.js +4 -4
- package/dist/esm/ion-popover.entry.js +50 -30
- package/dist/esm/ion-progress-bar.entry.js +6 -5
- package/dist/esm/ion-radio_2.entry.js +12 -11
- package/dist/esm/ion-range.entry.js +30 -25
- package/dist/esm/ion-refresher_2.entry.js +32 -24
- package/dist/esm/ion-reorder_2.entry.js +10 -9
- package/dist/esm/ion-ripple-effect.entry.js +3 -3
- package/dist/esm/ion-route_4.entry.js +36 -30
- package/dist/esm/ion-searchbar.entry.js +27 -22
- package/dist/esm/ion-segment-content.entry.js +2 -2
- package/dist/esm/ion-segment-view.entry.js +5 -6
- package/dist/esm/ion-segment_2.entry.js +30 -26
- package/dist/esm/ion-select-modal.entry.js +93 -38
- package/dist/esm/ion-select_3.entry.js +495 -126
- package/dist/esm/ion-spinner.entry.js +5 -6
- package/dist/esm/ion-split-pane.entry.js +4 -4
- package/dist/esm/ion-tab-bar_2.entry.js +15 -12
- package/dist/esm/ion-tab_2.entry.js +8 -8
- package/dist/esm/ion-text.entry.js +5 -5
- package/dist/esm/ion-textarea.entry.js +55 -64
- package/dist/esm/ion-toast.entry.js +25 -20
- package/dist/esm/ion-toggle.entry.js +15 -13
- package/dist/esm/{ionic-global-Cp_eT4sZ.js → ionic-global-ZXjCXKH0.js} +13 -8
- package/dist/esm/ionic.js +6 -6
- package/dist/esm/{ios.transition-ClFrsIrS.js → ios.transition-CWAgfQ1r.js} +14 -17
- package/dist/esm/{item-multiple-inputs-DlNuqNJm.js → item-multiple-inputs-DZnIiOO_.js} +1 -1
- package/dist/esm/{keyboard-ywgs5efA.js → keyboard-Cj8mLJeq.js} +2 -2
- package/dist/esm/{keyboard-CUw4ekVy.js → keyboard-DAF8GNJ9.js} +2 -2
- package/dist/esm/{keyboard-controller-BaaVITYt.js → keyboard-controller-DEwoa1ev.js} +6 -6
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-D0msQmzI.js → md.transition-ZuqDDdDW.js} +8 -8
- package/dist/esm/overlay-control-label-BSQPZ79H.js +47 -0
- package/dist/esm/{overlays-Dg0q2_tJ.js → overlays-DKE0DgvE.js} +97 -58
- package/dist/esm/select-option-render-CRP_teb1.js +121 -0
- package/dist/esm/slot-mutation-controller-B5NpUZ-N.js +393 -0
- package/dist/esm/{status-tap-Kan2W7sh.js → status-tap-Cv9gb3ja.js} +4 -3
- package/dist/esm/{swipe-back-ZUWwA-KF.js → swipe-back-De5HlmeM.js} +5 -5
- package/dist/esm/{theme-DiVJyqlX.js → theme-byZM6qHV.js} +6 -1
- package/dist/html.html-data.json +54 -82
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-099b7f9f.entry.js +4 -0
- package/dist/ionic/p-0dcb7bb6.entry.js +4 -0
- package/dist/ionic/p-1347880c.entry.js +4 -0
- package/dist/ionic/p-191a651e.entry.js +4 -0
- package/dist/ionic/p-1f24cb24.entry.js +4 -0
- package/dist/ionic/p-271c3640.entry.js +4 -0
- package/dist/ionic/p-2ea4bb36.entry.js +4 -0
- package/dist/ionic/p-338a02e0.entry.js +4 -0
- package/dist/ionic/p-38b9375b.entry.js +4 -0
- package/dist/ionic/p-3bba83ee.entry.js +4 -0
- package/dist/ionic/p-3e01c744.entry.js +4 -0
- package/dist/ionic/p-458715a9.entry.js +4 -0
- package/dist/ionic/p-4712a8a9.entry.js +4 -0
- package/dist/ionic/p-4c3e50f8.entry.js +4 -0
- package/dist/ionic/p-54cbb0a7.entry.js +4 -0
- package/dist/ionic/{p-2bb2cb18.entry.js → p-561af487.entry.js} +1 -1
- package/dist/ionic/p-5906ea6f.entry.js +4 -0
- package/dist/ionic/p-5cc09b40.entry.js +4 -0
- package/dist/ionic/p-5d9094ac.entry.js +4 -0
- package/dist/ionic/p-612ea3b1.entry.js +4 -0
- package/dist/ionic/p-68cc89a6.entry.js +4 -0
- package/dist/ionic/{p-dfa8d673.entry.js → p-6e386853.entry.js} +1 -1
- package/dist/ionic/p-77c96e08.entry.js +4 -0
- package/dist/ionic/p-7bfeccb3.entry.js +4 -0
- package/dist/ionic/p-7e394cc3.entry.js +4 -0
- package/dist/ionic/{p-0fa9c382.entry.js → p-7fbb3319.entry.js} +1 -1
- package/dist/ionic/p-803059b6.entry.js +4 -0
- package/dist/ionic/p-837db1b9.entry.js +4 -0
- package/dist/ionic/p-85599fe3.entry.js +4 -0
- package/dist/ionic/p-8b80d9f9.entry.js +4 -0
- package/dist/ionic/p-90f50a65.entry.js +4 -0
- package/dist/ionic/p-9595e305.entry.js +4 -0
- package/dist/ionic/p-9c5f2691.entry.js +4 -0
- package/dist/ionic/p-9ee9c5b6.entry.js +4 -0
- package/dist/ionic/p-BMPN55of.js +4 -0
- package/dist/ionic/p-BMiZX1LT.js +4 -0
- package/dist/ionic/p-BSQPZ79H.js +4 -0
- package/dist/ionic/p-BY6BzzPF.js +4 -0
- package/dist/ionic/p-B_gJaBk0.js +4 -0
- package/dist/ionic/p-BaeKWZ-a.js +4 -0
- package/dist/ionic/p-Bd72UYI2.js +4 -0
- package/dist/ionic/p-BgOvhHy_.js +4 -0
- package/dist/ionic/p-BhamHSw3.js +4 -0
- package/dist/ionic/p-BijjLYjT.js +4 -0
- package/dist/ionic/{p-DV3sJJW8.js → p-BvabGprD.js} +1 -1
- package/dist/ionic/p-C23AVPx9.js +6 -0
- package/dist/ionic/p-C8XilMh0.js +4 -0
- package/dist/ionic/p-CER8qW8Y.js +4 -0
- package/dist/ionic/p-CFuOr1Tu.js +4 -0
- package/dist/ionic/p-CM5OBjTW.js +4 -0
- package/dist/ionic/p-CMZYmFb4.js +4 -0
- package/dist/ionic/p-CkxVYPtX.js +4 -0
- package/dist/ionic/p-CmXuiRT6.js +4 -0
- package/dist/ionic/p-D0YpjgON.js +4 -0
- package/dist/ionic/p-D5t_-oMk.js +4 -0
- package/dist/ionic/p-D6rHcCvc.js +4 -0
- package/dist/ionic/p-D7jHfs0Y.js +4 -0
- package/dist/ionic/p-DLM95R4x.js +4 -0
- package/dist/ionic/p-DTxBioUO.js +4 -0
- package/dist/ionic/p-DWCzVL3Y.js +4 -0
- package/dist/ionic/p-DYUjHcuH.js +4 -0
- package/{components/p-BkKAANMJ.js → dist/ionic/p-DZ6Hmc-8.js} +1 -1
- package/dist/ionic/p-D_gb-kdd.js +4 -0
- package/dist/ionic/p-DajLgJ4d.js +4 -0
- package/dist/ionic/p-Do3zTvCA.js +4 -0
- package/dist/ionic/p-Dojwmvde.js +4 -0
- package/dist/ionic/p-T71k3C35.js +4 -0
- package/dist/ionic/p-a8df96c8.entry.js +4 -0
- package/dist/ionic/p-a8ff2489.entry.js +4 -0
- package/dist/ionic/p-aff52029.entry.js +4 -0
- package/dist/ionic/p-b3532b8d.entry.js +4 -0
- package/dist/ionic/p-b9b4e85d.entry.js +4 -0
- package/dist/ionic/p-byZM6qHV.js +4 -0
- package/dist/ionic/{p-c6e49f3f.entry.js → p-ca1b8865.entry.js} +1 -1
- package/dist/ionic/p-cc4320d3.entry.js +4 -0
- package/dist/ionic/p-d526798a.entry.js +4 -0
- package/dist/ionic/p-d6755739.entry.js +4 -0
- package/dist/ionic/p-d8c138d9.entry.js +4 -0
- package/dist/ionic/p-db449915.entry.js +4 -0
- package/dist/ionic/p-dd01be0a.entry.js +4 -0
- package/dist/ionic/p-ec00fd0d.entry.js +4 -0
- package/dist/ionic/p-ee09ac9d.entry.js +4 -0
- package/dist/ionic/{p-37e720da.entry.js → p-efc0cf82.entry.js} +1 -1
- package/dist/ionic/p-f0fb23c1.entry.js +4 -0
- package/dist/ionic/p-f83b3e0c.entry.js +4 -0
- package/dist/ionic/p-fa50d493.entry.js +4 -0
- package/dist/ionic/p-zWf7R2xV.js +4 -0
- package/dist/types/components/action-sheet/action-sheet.d.ts +10 -0
- package/dist/types/components/alert/alert.d.ts +7 -0
- package/dist/types/components/content/content.d.ts +12 -0
- package/dist/types/components/datetime/datetime.d.ts +5 -1
- package/dist/types/components/img/img.d.ts +2 -0
- package/dist/types/components/input/input.d.ts +12 -6
- package/dist/types/components/modal/gestures/sheet.d.ts +1 -0
- package/dist/types/components/modal/gestures/utils.d.ts +11 -0
- package/dist/types/components/modal/modal-interface.d.ts +9 -0
- package/dist/types/components/modal/modal.d.ts +25 -7
- package/dist/types/components/modal/safe-area-utils.d.ts +6 -0
- package/dist/types/components/nav/nav-interface.d.ts +0 -1
- package/dist/types/components/nav/nav.d.ts +2 -22
- package/dist/types/components/picker-column/picker-column.d.ts +42 -0
- package/dist/types/components/range/range.d.ts +4 -1
- package/dist/types/components/refresher/refresher.d.ts +7 -0
- package/dist/types/components/route/route.d.ts +1 -1
- package/dist/types/components/router-outlet/router-outlet.d.ts +7 -0
- package/dist/types/components/searchbar/searchbar.d.ts +1 -1
- package/dist/types/components/select/select-interface.d.ts +31 -0
- package/dist/types/components/select/select.d.ts +30 -6
- package/dist/types/components/select-option/select-option.d.ts +42 -1
- package/dist/types/components/textarea/textarea.d.ts +12 -5
- package/dist/types/components.d.ts +79 -316
- package/dist/types/index.d.ts +1 -1
- package/dist/types/interface.d.ts +0 -1
- package/dist/types/stencil-public-runtime.d.ts +12 -0
- package/dist/types/utils/config.d.ts +1 -8
- package/dist/types/utils/content/index.d.ts +12 -0
- package/dist/types/utils/forms/index.d.ts +1 -0
- package/dist/types/utils/forms/start-container-controller.d.ts +34 -0
- package/dist/types/utils/helpers.d.ts +8 -5
- package/dist/types/utils/logging/index.d.ts +2 -1
- package/dist/types/utils/overlay-control-label.d.ts +32 -0
- package/dist/types/utils/overlays.d.ts +20 -9
- package/dist/types/utils/rtl/dir.d.ts +10 -4
- package/dist/types/utils/sanitization/index.d.ts +58 -2
- package/dist/types/utils/select-option-render.d.ts +53 -0
- package/dist/types/utils/test/playwright/detach-reattach.d.ts +13 -0
- package/dist/types/utils/test/playwright/index.d.ts +1 -0
- package/dist/types/utils/test/playwright/playwright-page.d.ts +1 -1
- package/dist/types/utils/test/playwright/testExpect.d.ts +1 -1
- package/hydrate/index.js +2998 -2155
- package/hydrate/index.mjs +2998 -2155
- package/loader/index.d.ts +1 -1
- package/package.json +58 -14
- package/components/ion-picker-legacy-column.d.ts +0 -11
- package/components/ion-picker-legacy-column.js +0 -4
- package/components/ion-picker-legacy.d.ts +0 -11
- package/components/ion-picker-legacy.js +0 -4
- package/components/p-A3O24YmY.js +0 -4
- package/components/p-ABkNVeU9.js +0 -4
- package/components/p-B-JJgYSG.js +0 -4
- package/components/p-BB42Mlnr.js +0 -4
- package/components/p-BLmJ0zRm.js +0 -4
- package/components/p-BSEgsdFI.js +0 -4
- package/components/p-BTEOs1at.js +0 -4
- package/components/p-BlIAuGv2.js +0 -4
- package/components/p-Bnsn6KaP.js +0 -4
- package/components/p-BsBCoGa-.js +0 -4
- package/components/p-Bz0dSlXZ.js +0 -4
- package/components/p-C53feagD.js +0 -4
- package/components/p-CHqRYvYm.js +0 -4
- package/components/p-CQGnMY3n.js +0 -4
- package/components/p-CSZf8_j0.js +0 -4
- package/components/p-C_xFdyXe.js +0 -4
- package/components/p-Cf2jSDS8.js +0 -4
- package/components/p-CkMSOsFF.js +0 -4
- package/components/p-Cl0B-RWe.js +0 -4
- package/components/p-CmR5uXej.js +0 -4
- package/components/p-CsNJ1ULL.js +0 -4
- package/components/p-CtWGkNnJ.js +0 -4
- package/components/p-CzCbeKys.js +0 -4
- package/components/p-D-aHdMxW.js +0 -4
- package/components/p-D0d8qTwj.js +0 -4
- package/components/p-D13Eaw-8.js +0 -4
- package/components/p-D3xo7hqU.js +0 -4
- package/components/p-D6Ynv7Xh.js +0 -4
- package/components/p-DCnGU1fF.js +0 -4
- package/components/p-DGZpx6KJ.js +0 -4
- package/components/p-DGvrK8dD.js +0 -4
- package/components/p-DHTSTb52.js +0 -4
- package/components/p-DOFCbuQR.js +0 -4
- package/components/p-DRugphUN.js +0 -4
- package/components/p-DV5mPYQS.js +0 -4
- package/components/p-DWkAgceV.js +0 -4
- package/components/p-DiVJyqlX.js +0 -4
- package/components/p-KEFO0w3i.js +0 -4
- package/components/p-Osve4qkc.js +0 -4
- package/components/p-SLS1rDZM.js +0 -4
- package/components/p-VWbRkLT7.js +0 -4
- package/components/p-aJ6PBUvj.js +0 -4
- package/components/p-cyNmxje6.js +0 -4
- package/components/p-k_E4tX5Z.js +0 -4
- package/components/p-oD4kcBRX.js +0 -4
- package/components/p-scxfI1Dd.js +0 -4
- package/components/p-yzCsOZE2.js +0 -4
- package/dist/cjs/config-xninhj0J.js +0 -201
- package/dist/cjs/dir-Cn0z1rJH.js +0 -20
- package/dist/cjs/input.utils-DetjmtH2.js +0 -150
- package/dist/cjs/notch-controller-18PzRGXd.js +0 -155
- package/dist/collection/components/picker-legacy/animations/ios.enter.js +0 -27
- package/dist/collection/components/picker-legacy/animations/ios.leave.js +0 -23
- package/dist/collection/components/picker-legacy/picker-interface.js +0 -1
- package/dist/collection/components/picker-legacy/picker.ios.css +0 -300
- package/dist/collection/components/picker-legacy/picker.js +0 -890
- package/dist/collection/components/picker-legacy/picker.md.css +0 -287
- package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -231
- package/dist/collection/components/picker-legacy-column/picker-column.js +0 -422
- package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -222
- package/dist/collection/components/picker-legacy-column/test/test.utils.js +0 -43
- package/dist/esm/config-DQCONYYp.js +0 -195
- package/dist/esm/dir-C53feagD.js +0 -18
- package/dist/esm/input.utils-Y6NgW8bw.js +0 -147
- package/dist/esm/notch-controller-DKDjU_O7.js +0 -153
- package/dist/ionic/p-01f81ea5.entry.js +0 -4
- package/dist/ionic/p-06c232a4.entry.js +0 -4
- package/dist/ionic/p-0dc33652.entry.js +0 -4
- package/dist/ionic/p-10e833ef.entry.js +0 -4
- package/dist/ionic/p-20b1a044.entry.js +0 -4
- package/dist/ionic/p-21eb76d5.entry.js +0 -4
- package/dist/ionic/p-2394a9a6.entry.js +0 -4
- package/dist/ionic/p-27d30585.entry.js +0 -4
- package/dist/ionic/p-2a05aa64.entry.js +0 -4
- package/dist/ionic/p-2b204c59.entry.js +0 -4
- package/dist/ionic/p-2fa58e80.entry.js +0 -4
- package/dist/ionic/p-3353c229.entry.js +0 -4
- package/dist/ionic/p-33704f20.entry.js +0 -4
- package/dist/ionic/p-34586ead.entry.js +0 -4
- package/dist/ionic/p-390ca786.entry.js +0 -4
- package/dist/ionic/p-3ae5f277.entry.js +0 -4
- package/dist/ionic/p-4654ae1c.entry.js +0 -4
- package/dist/ionic/p-4745f534.entry.js +0 -4
- package/dist/ionic/p-4858af1f.entry.js +0 -4
- package/dist/ionic/p-4ac4f3d6.entry.js +0 -4
- package/dist/ionic/p-4baa5b82.entry.js +0 -4
- package/dist/ionic/p-4e92a11f.entry.js +0 -4
- package/dist/ionic/p-5018dfc8.entry.js +0 -4
- package/dist/ionic/p-50e1194a.entry.js +0 -4
- package/dist/ionic/p-5d1da0a2.entry.js +0 -4
- package/dist/ionic/p-5eb8e86d.entry.js +0 -4
- package/dist/ionic/p-65ebdf1b.entry.js +0 -4
- package/dist/ionic/p-75dc25ba.entry.js +0 -4
- package/dist/ionic/p-7c319341.entry.js +0 -4
- package/dist/ionic/p-829367ed.entry.js +0 -4
- package/dist/ionic/p-84d5ce05.entry.js +0 -4
- package/dist/ionic/p-874b4bd8.entry.js +0 -4
- package/dist/ionic/p-8eb8ee76.entry.js +0 -4
- package/dist/ionic/p-8fce95d5.entry.js +0 -4
- package/dist/ionic/p-9eeaBrnk.js +0 -4
- package/dist/ionic/p-9f1103ce.entry.js +0 -4
- package/dist/ionic/p-9f9db3a2.entry.js +0 -4
- package/dist/ionic/p-BGqMS-oh.js +0 -4
- package/dist/ionic/p-BTEOs1at.js +0 -4
- package/dist/ionic/p-BUFIpxKM.js +0 -4
- package/dist/ionic/p-C0eMdTCW.js +0 -4
- package/dist/ionic/p-C53feagD.js +0 -4
- package/dist/ionic/p-CFlfIb2g.js +0 -4
- package/dist/ionic/p-CKvCXMs9.js +0 -4
- package/dist/ionic/p-Cl0B-RWe.js +0 -4
- package/dist/ionic/p-CtWGkNnJ.js +0 -4
- package/dist/ionic/p-CwdymDLH.js +0 -4
- package/dist/ionic/p-Cx3IXROA.js +0 -4
- package/dist/ionic/p-D-3ycHmd.js +0 -4
- package/dist/ionic/p-D13Eaw-8.js +0 -4
- package/dist/ionic/p-DC3RagnA.js +0 -4
- package/dist/ionic/p-DIuEbVLu.js +0 -4
- package/dist/ionic/p-DSG2s2Eb.js +0 -4
- package/dist/ionic/p-Dfbt-q2k.js +0 -4
- package/dist/ionic/p-DiVJyqlX.js +0 -4
- package/dist/ionic/p-DoJvtrbw.js +0 -4
- package/dist/ionic/p-DqN5EA2O.js +0 -4
- package/dist/ionic/p-DzWaWHGc.js +0 -4
- package/dist/ionic/p-Nqf6uvGh.js +0 -4
- package/dist/ionic/p-SNAkTDfm.js +0 -4
- package/dist/ionic/p-VAemlbDS.js +0 -4
- package/dist/ionic/p-Wk5HzclC.js +0 -4
- package/dist/ionic/p-a3bdcae6.entry.js +0 -4
- package/dist/ionic/p-aaeedb6b.entry.js +0 -4
- package/dist/ionic/p-bfc9bb0f.entry.js +0 -4
- package/dist/ionic/p-c0fb8edd.entry.js +0 -4
- package/dist/ionic/p-c38b648e.entry.js +0 -4
- package/dist/ionic/p-c4d8641b.entry.js +0 -4
- package/dist/ionic/p-ca2ab74d.entry.js +0 -4
- package/dist/ionic/p-d889ff6d.entry.js +0 -4
- package/dist/ionic/p-e0be05c5.entry.js +0 -4
- package/dist/ionic/p-ef4c3bee.entry.js +0 -4
- package/dist/ionic/p-fd7eebc4.entry.js +0 -4
- package/dist/ionic/p-mjKAFv89.js +0 -4
- package/dist/ionic/p-tcQvqkiX.js +0 -5
- package/dist/ionic/p-viFHDgRs.js +0 -4
- package/dist/ionic/p-xWb6fgfq.js +0 -4
- package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +0 -5
- package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +0 -5
- package/dist/types/components/picker-legacy/picker-interface.d.ts +0 -52
- package/dist/types/components/picker-legacy/picker.d.ts +0 -158
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
- package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +0 -9
- /package/components/{p-CO7fmmxt.js → p-LpMHEu3v.js} +0 -0
|
@@ -8,7 +8,7 @@ import { raf, inheritAttributes, hasLazyBuild, getElementRoot } from "../../util
|
|
|
8
8
|
import { createLockController } from "../../utils/lock-controller";
|
|
9
9
|
import { printIonWarning } from "../../utils/logging/index";
|
|
10
10
|
import { Style as StatusBarStyle, StatusBar } from "../../utils/native/status-bar";
|
|
11
|
-
import {
|
|
11
|
+
import { BACKDROP, cleanupRootFocusTrapAccessibility, createTriggerController, dismiss, eventMethod, FOCUS_TRAP_DISABLE_CLASS, GESTURE, prepareOverlay, present, restoreRootFocusTrapAccessibility, setOverlayId, } from "../../utils/overlays";
|
|
12
12
|
import { getClassMap } from "../../utils/theme";
|
|
13
13
|
import { deepReady, waitForMount } from "../../utils/transition/index";
|
|
14
14
|
import { config } from "../../global/config";
|
|
@@ -21,7 +21,7 @@ import { mdEnterAnimation } from "./animations/md.enter";
|
|
|
21
21
|
import { mdLeaveAnimation } from "./animations/md.leave";
|
|
22
22
|
import { createSheetGesture } from "./gestures/sheet";
|
|
23
23
|
import { createSwipeToCloseGesture, SwipeToCloseDefaults } from "./gestures/swipe-to-close";
|
|
24
|
-
import { getInitialSafeAreaConfig, getPositionBasedSafeAreaConfig, applySafeAreaOverrides, clearSafeAreaOverrides, getRootSafeAreaTop, hasCustomModalDimensions, } from "./safe-area-utils";
|
|
24
|
+
import { getInitialSafeAreaConfig, getPositionBasedSafeAreaConfig, applySafeAreaOverrides, clearSafeAreaOverrides, getRootSafeAreaTop, onRootSafeAreaTopChange, hasCustomModalDimensions, } from "./safe-area-utils";
|
|
25
25
|
import { setCardStatusBarDark, setCardStatusBarDefault } from "./utils";
|
|
26
26
|
// TODO(FW-2832): types
|
|
27
27
|
/**
|
|
@@ -43,6 +43,9 @@ export class Modal {
|
|
|
43
43
|
this.inline = false;
|
|
44
44
|
// Whether or not modal is being dismissed via gesture
|
|
45
45
|
this.gestureAnimationDismissing = false;
|
|
46
|
+
// True from the first safe-area write in `present()` until the enter
|
|
47
|
+
// animation settles. A position-based read in that window is not the rest position.
|
|
48
|
+
this.isPresenting = false;
|
|
46
49
|
this.presented = false;
|
|
47
50
|
/** @internal */
|
|
48
51
|
this.hasController = false;
|
|
@@ -77,13 +80,20 @@ export class Modal {
|
|
|
77
80
|
/**
|
|
78
81
|
* The interaction behavior for the sheet modal when the handle is pressed.
|
|
79
82
|
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
83
|
+
* Handle behavior is unavailable when the `handle` property is set to
|
|
84
|
+
* `false` or when the `breakpoints` property is not set (using a
|
|
85
|
+
* fullscreen or card modal).
|
|
82
86
|
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
87
|
+
* Set to `"cycle"` to make the handle focusable and let the sheet modal
|
|
88
|
+
* cycle between available breakpoints when pressed. This keeps the sheet
|
|
89
|
+
* operable with assistive technology.
|
|
90
|
+
*
|
|
91
|
+
* Set to `"none"` to make the handle purely decorative when pressed and
|
|
92
|
+
* removed from the tab order.
|
|
93
|
+
*
|
|
94
|
+
* Defaults to `"cycle"`.
|
|
85
95
|
*/
|
|
86
|
-
this.handleBehavior = '
|
|
96
|
+
this.handleBehavior = 'cycle';
|
|
87
97
|
/**
|
|
88
98
|
* If `true`, the modal will be dismissed when the backdrop is clicked.
|
|
89
99
|
*/
|
|
@@ -191,7 +201,6 @@ export class Modal {
|
|
|
191
201
|
* if it exists and is focusable, otherwise let the focus trap handle it.
|
|
192
202
|
*/
|
|
193
203
|
this.onModalFocus = (ev) => {
|
|
194
|
-
var _a;
|
|
195
204
|
const { dragHandleEl, el } = this;
|
|
196
205
|
/**
|
|
197
206
|
* Shadow DOM focus is retargeted to the host, so `ev.target === el` is also
|
|
@@ -199,7 +208,7 @@ export class Modal {
|
|
|
199
208
|
* shadowRoot's activeElement is null only when the host was focused directly,
|
|
200
209
|
* so redirect to the handle only then and leave present()'s wrapper focus intact.
|
|
201
210
|
*/
|
|
202
|
-
if (ev.target === el &&
|
|
211
|
+
if (ev.target === el && el.shadowRoot?.activeElement == null && dragHandleEl && dragHandleEl.tabIndex !== -1) {
|
|
203
212
|
dragHandleEl.focus();
|
|
204
213
|
}
|
|
205
214
|
};
|
|
@@ -273,6 +282,17 @@ export class Modal {
|
|
|
273
282
|
const { el } = this;
|
|
274
283
|
prepareOverlay(el);
|
|
275
284
|
this.triggerChanged();
|
|
285
|
+
// A disconnect tears down state this presentation still needs and cannot
|
|
286
|
+
// tell a re-insert from a removal, so put it back.
|
|
287
|
+
if (this.presented || this.isPresenting) {
|
|
288
|
+
this.restoreSafeAreaOverrides();
|
|
289
|
+
}
|
|
290
|
+
// A relocation from `willPresent` reaches these before `present()` has
|
|
291
|
+
// applied the lock, so they apply it instead. Both are idempotent.
|
|
292
|
+
if (this.presented) {
|
|
293
|
+
restoreRootFocusTrapAccessibility(el);
|
|
294
|
+
this.initParentRemovalObserver();
|
|
295
|
+
}
|
|
276
296
|
}
|
|
277
297
|
disconnectedCallback() {
|
|
278
298
|
this.triggerController.removeClickListener();
|
|
@@ -281,9 +301,12 @@ export class Modal {
|
|
|
281
301
|
// Also called in dismiss() — intentional dual cleanup covers both
|
|
282
302
|
// dismiss-then-remove and direct DOM removal without dismiss.
|
|
283
303
|
this.cleanupSafeAreaOverrides();
|
|
304
|
+
// Clean up aria-hidden if removed without dismiss() being called
|
|
305
|
+
if (this.presented) {
|
|
306
|
+
cleanupRootFocusTrapAccessibility();
|
|
307
|
+
}
|
|
284
308
|
}
|
|
285
309
|
componentWillLoad() {
|
|
286
|
-
var _a;
|
|
287
310
|
const { breakpoints, initialBreakpoint, el, htmlAttributes } = this;
|
|
288
311
|
const isSheetModal = (this.isSheetModal = breakpoints !== undefined && initialBreakpoint !== undefined);
|
|
289
312
|
const attributesToInherit = ['aria-label', 'role'];
|
|
@@ -318,7 +341,10 @@ export class Modal {
|
|
|
318
341
|
* htmlAttributes wins, but that's not a pattern that we recommend.
|
|
319
342
|
* The only time you'd need htmlAttributes is when using modalController.
|
|
320
343
|
*/
|
|
321
|
-
this.inheritedAttributes =
|
|
344
|
+
this.inheritedAttributes = {
|
|
345
|
+
...this.inheritedAttributes,
|
|
346
|
+
[attribute]: htmlAttributes[attribute],
|
|
347
|
+
};
|
|
322
348
|
delete htmlAttributes[attribute];
|
|
323
349
|
}
|
|
324
350
|
});
|
|
@@ -329,7 +355,7 @@ export class Modal {
|
|
|
329
355
|
if (breakpoints !== undefined && initialBreakpoint !== undefined && !breakpoints.includes(initialBreakpoint)) {
|
|
330
356
|
printIonWarning('[ion-modal] - Your breakpoints array must include the initialBreakpoint value.');
|
|
331
357
|
}
|
|
332
|
-
if (!
|
|
358
|
+
if (!this.htmlAttributes?.id) {
|
|
333
359
|
setOverlayId(this.el);
|
|
334
360
|
}
|
|
335
361
|
}
|
|
@@ -444,25 +470,33 @@ export class Modal {
|
|
|
444
470
|
// Recalculate isSheetModal before safe-area setup because framework
|
|
445
471
|
// bindings (e.g., Angular) may not have been applied when componentWillLoad ran.
|
|
446
472
|
this.isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined;
|
|
447
|
-
|
|
448
|
-
this.setInitialSafeAreaOverrides();
|
|
473
|
+
this.isPresenting = true;
|
|
449
474
|
const hasCardModal = presentingElement !== undefined;
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
475
|
+
// Wrapped so a throw cannot strand `isPresenting`, which would suppress
|
|
476
|
+
// the position-based correction for the life of this instance.
|
|
477
|
+
try {
|
|
478
|
+
// Set initial safe-area overrides before animation
|
|
479
|
+
this.setInitialSafeAreaOverrides();
|
|
480
|
+
/**
|
|
481
|
+
* We need to change the status bar at the
|
|
482
|
+
* start of the animation so that it completes
|
|
483
|
+
* by the time the card animation is done.
|
|
484
|
+
*/
|
|
485
|
+
if (hasCardModal && getIonMode(this) === 'ios') {
|
|
486
|
+
// Cache the original status bar color before the modal is presented
|
|
487
|
+
this.statusBarStyle = await StatusBar.getStyle();
|
|
488
|
+
setCardStatusBarDark();
|
|
489
|
+
}
|
|
490
|
+
await present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, {
|
|
491
|
+
presentingEl: presentingElement,
|
|
492
|
+
currentBreakpoint: this.initialBreakpoint,
|
|
493
|
+
backdropBreakpoint: this.backdropBreakpoint,
|
|
494
|
+
expandToScroll: this.expandToScroll,
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
finally {
|
|
498
|
+
this.isPresenting = false;
|
|
459
499
|
}
|
|
460
|
-
await present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, {
|
|
461
|
-
presentingEl: presentingElement,
|
|
462
|
-
currentBreakpoint: this.initialBreakpoint,
|
|
463
|
-
backdropBreakpoint: this.backdropBreakpoint,
|
|
464
|
-
expandToScroll: this.expandToScroll,
|
|
465
|
-
});
|
|
466
500
|
// Update safe-area based on actual position after animation
|
|
467
501
|
this.updateSafeAreaOverrides();
|
|
468
502
|
// Apply fullscreen safe-area padding if needed
|
|
@@ -511,7 +545,6 @@ export class Modal {
|
|
|
511
545
|
unlock();
|
|
512
546
|
}
|
|
513
547
|
initSwipeToClose() {
|
|
514
|
-
var _a;
|
|
515
548
|
if (getIonMode(this) !== 'ios') {
|
|
516
549
|
return;
|
|
517
550
|
}
|
|
@@ -529,7 +562,7 @@ export class Modal {
|
|
|
529
562
|
printIonContentErrorMsg(el);
|
|
530
563
|
return;
|
|
531
564
|
}
|
|
532
|
-
const statusBarStyle =
|
|
565
|
+
const statusBarStyle = this.statusBarStyle ?? StatusBarStyle.Default;
|
|
533
566
|
this.gesture = createSwipeToCloseGesture(el, ani, statusBarStyle, () => this.cardOnDismiss(), () => this.onDragStart(), (detail) => this.onDragMove(detail), (detail) => this.onDragEnd(detail));
|
|
534
567
|
this.gesture.enable(true);
|
|
535
568
|
}
|
|
@@ -546,7 +579,7 @@ export class Modal {
|
|
|
546
579
|
expandToScroll: this.expandToScroll,
|
|
547
580
|
}));
|
|
548
581
|
ani.progressStart(true, 1);
|
|
549
|
-
const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, this.expandToScroll, () =>
|
|
582
|
+
const { gesture, moveSheetToBreakpoint, resetContentScroll } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, this.expandToScroll, () => this.currentBreakpoint ?? 0, () => this.sheetOnDismiss(), (breakpoint) => {
|
|
550
583
|
if (this.currentBreakpoint !== breakpoint) {
|
|
551
584
|
this.currentBreakpoint = breakpoint;
|
|
552
585
|
this.ionBreakpointDidChange.emit({ breakpoint });
|
|
@@ -554,6 +587,7 @@ export class Modal {
|
|
|
554
587
|
}, () => this.onDragStart(), (detail) => this.onDragMove(detail), (detail) => this.onDragEnd(detail));
|
|
555
588
|
this.gesture = gesture;
|
|
556
589
|
this.moveSheetToBreakpoint = moveSheetToBreakpoint;
|
|
590
|
+
this.resetSheetContentScroll = resetContentScroll;
|
|
557
591
|
this.gesture.enable(true);
|
|
558
592
|
/**
|
|
559
593
|
* When backdrop interaction is allowed, nested router outlets from child routes
|
|
@@ -571,7 +605,6 @@ export class Modal {
|
|
|
571
605
|
* passthrough on child route page wrappers and nested router outlets.
|
|
572
606
|
*/
|
|
573
607
|
setupChildRoutePassthrough() {
|
|
574
|
-
var _a;
|
|
575
608
|
// Cache the page parent for cleanup
|
|
576
609
|
this.cachedPageParent = this.getOriginalPageParent();
|
|
577
610
|
const pageParent = this.cachedPageParent;
|
|
@@ -579,14 +612,11 @@ export class Modal {
|
|
|
579
612
|
if (!pageParent || pageParent.tagName === 'ION-APP') {
|
|
580
613
|
return;
|
|
581
614
|
}
|
|
582
|
-
const hasVisibleContent = Array.from(pageParent.children).some((child) =>
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
child.tagName !== 'SLOT' &&
|
|
588
|
-
!(child.nodeType === Node.TEXT_NODE && !((_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()));
|
|
589
|
-
});
|
|
615
|
+
const hasVisibleContent = Array.from(pageParent.children).some((child) => child !== this.el &&
|
|
616
|
+
!(child instanceof HTMLElement && window.getComputedStyle(child).display === 'none') &&
|
|
617
|
+
child.tagName !== 'TEMPLATE' &&
|
|
618
|
+
child.tagName !== 'SLOT' &&
|
|
619
|
+
!(child.nodeType === Node.TEXT_NODE && !child.textContent?.trim()));
|
|
590
620
|
if (hasVisibleContent) {
|
|
591
621
|
return;
|
|
592
622
|
}
|
|
@@ -594,7 +624,7 @@ export class Modal {
|
|
|
594
624
|
pageParent.classList.add('ion-page-overlay-passthrough');
|
|
595
625
|
// Also make nested router outlets passthrough
|
|
596
626
|
const routerOutlet = pageParent.parentElement;
|
|
597
|
-
if (
|
|
627
|
+
if (routerOutlet?.tagName === 'ION-ROUTER-OUTLET' && routerOutlet.parentElement?.tagName !== 'ION-APP') {
|
|
598
628
|
routerOutlet.style.setProperty('pointer-events', 'none');
|
|
599
629
|
routerOutlet.setAttribute('data-overlay-passthrough', 'true');
|
|
600
630
|
}
|
|
@@ -622,7 +652,7 @@ export class Modal {
|
|
|
622
652
|
}
|
|
623
653
|
pageParent.classList.remove('ion-page-overlay-passthrough');
|
|
624
654
|
const routerOutlet = pageParent.parentElement;
|
|
625
|
-
if (routerOutlet
|
|
655
|
+
if (routerOutlet?.hasAttribute('data-overlay-passthrough')) {
|
|
626
656
|
routerOutlet.style.removeProperty('pointer-events');
|
|
627
657
|
routerOutlet.removeAttribute('data-overlay-passthrough');
|
|
628
658
|
}
|
|
@@ -685,7 +715,6 @@ export class Modal {
|
|
|
685
715
|
* For example, `cancel` or `backdrop`.
|
|
686
716
|
*/
|
|
687
717
|
async dismiss(data, role) {
|
|
688
|
-
var _a;
|
|
689
718
|
if (this.gestureAnimationDismissing && role !== GESTURE) {
|
|
690
719
|
return false;
|
|
691
720
|
}
|
|
@@ -730,7 +759,7 @@ export class Modal {
|
|
|
730
759
|
}
|
|
731
760
|
const dismissed = await dismiss(this, data, role, 'modalLeave', iosLeaveAnimation, mdLeaveAnimation, {
|
|
732
761
|
presentingEl: presentingElement,
|
|
733
|
-
currentBreakpoint:
|
|
762
|
+
currentBreakpoint: this.currentBreakpoint ?? this.initialBreakpoint,
|
|
734
763
|
backdropBreakpoint: this.backdropBreakpoint,
|
|
735
764
|
expandToScroll: this.expandToScroll,
|
|
736
765
|
});
|
|
@@ -744,6 +773,13 @@ export class Modal {
|
|
|
744
773
|
if (this.gesture) {
|
|
745
774
|
this.gesture.destroy();
|
|
746
775
|
}
|
|
776
|
+
/**
|
|
777
|
+
* The sheet gesture turns content scrolling off while the sheet sits below
|
|
778
|
+
* the top breakpoint. Inline modals reuse the same content on the next
|
|
779
|
+
* present, so hand it back before the gesture goes away.
|
|
780
|
+
*/
|
|
781
|
+
this.resetSheetContentScroll?.();
|
|
782
|
+
this.resetSheetContentScroll = undefined;
|
|
747
783
|
this.cleanupViewTransitionListener();
|
|
748
784
|
this.cleanupParentRemovalObserver();
|
|
749
785
|
this.cleanupSafeAreaOverrides();
|
|
@@ -926,7 +962,7 @@ export class Modal {
|
|
|
926
962
|
wrapperEl.style.transform = 'translateY(0vh)';
|
|
927
963
|
wrapperEl.style.opacity = '1';
|
|
928
964
|
}
|
|
929
|
-
if (
|
|
965
|
+
if (presentingElement?.tagName === 'ION-MODAL') {
|
|
930
966
|
const isPortrait = window.innerWidth < 768;
|
|
931
967
|
if (isPortrait) {
|
|
932
968
|
const transformOffset = !CSS.supports('width', 'max(0px, 1px)')
|
|
@@ -942,7 +978,7 @@ export class Modal {
|
|
|
942
978
|
}
|
|
943
979
|
async dismissNestedModals() {
|
|
944
980
|
const nestedModals = document.querySelectorAll(`ion-modal[data-parent-ion-modal="${this.el.id}"]`);
|
|
945
|
-
nestedModals
|
|
981
|
+
nestedModals?.forEach(async (modal) => {
|
|
946
982
|
await modal.dismiss(undefined, 'parent-dismissed');
|
|
947
983
|
});
|
|
948
984
|
}
|
|
@@ -970,15 +1006,17 @@ export class Modal {
|
|
|
970
1006
|
this.cachedOriginalParent.tagName === 'ION-APP') {
|
|
971
1007
|
return;
|
|
972
1008
|
}
|
|
1009
|
+
// Both `present()` and a reconnect call this, so drop any existing
|
|
1010
|
+
// observer. Below the guards, so a call that bails cannot leave none.
|
|
1011
|
+
this.cleanupParentRemovalObserver();
|
|
973
1012
|
this.parentRemovalObserver = new MutationObserver((mutations) => {
|
|
974
1013
|
mutations.forEach((mutation) => {
|
|
975
1014
|
if (mutation.type === 'childList' && mutation.removedNodes.length > 0) {
|
|
976
1015
|
// Check if our cached original parent was removed
|
|
977
1016
|
const cachedParentWasRemoved = Array.from(mutation.removedNodes).some((node) => {
|
|
978
|
-
var _a, _b;
|
|
979
1017
|
const isDirectMatch = node === this.cachedOriginalParent;
|
|
980
1018
|
const isContainedMatch = this.cachedOriginalParent
|
|
981
|
-
?
|
|
1019
|
+
? node.contains?.(this.cachedOriginalParent)
|
|
982
1020
|
: false;
|
|
983
1021
|
return isDirectMatch || isContainedMatch;
|
|
984
1022
|
});
|
|
@@ -1000,8 +1038,7 @@ export class Modal {
|
|
|
1000
1038
|
});
|
|
1001
1039
|
}
|
|
1002
1040
|
cleanupParentRemovalObserver() {
|
|
1003
|
-
|
|
1004
|
-
(_a = this.parentRemovalObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
1041
|
+
this.parentRemovalObserver?.disconnect();
|
|
1005
1042
|
this.parentRemovalObserver = undefined;
|
|
1006
1043
|
}
|
|
1007
1044
|
onDragStart() {
|
|
@@ -1041,22 +1078,30 @@ export class Modal {
|
|
|
1041
1078
|
* sheets to prevent header content from getting double-offset padding).
|
|
1042
1079
|
*/
|
|
1043
1080
|
setInitialSafeAreaOverrides() {
|
|
1044
|
-
const context =
|
|
1081
|
+
const context = {
|
|
1082
|
+
...this.getSafeAreaContext(),
|
|
1083
|
+
hasCustomDimensions: hasCustomModalDimensions(this.el),
|
|
1084
|
+
};
|
|
1045
1085
|
const safeAreaConfig = getInitialSafeAreaConfig(context);
|
|
1046
1086
|
applySafeAreaOverrides(this.el, safeAreaConfig);
|
|
1047
1087
|
// Set the internal offset property with the resolved root safe-area-top value
|
|
1048
1088
|
if (context.isSheetModal) {
|
|
1049
1089
|
this.updateSheetOffsetTop();
|
|
1090
|
+
// A restore after a DOM move runs this a second time for the same
|
|
1091
|
+
// modal, so drop the previous subscription rather than stacking one.
|
|
1092
|
+
this.unsubscribeRootSafeAreaTop?.();
|
|
1093
|
+
this.unsubscribeRootSafeAreaTop = onRootSafeAreaTopChange((safeAreaTop) => this.updateSheetOffsetTop(safeAreaTop));
|
|
1050
1094
|
}
|
|
1051
1095
|
}
|
|
1052
1096
|
/**
|
|
1053
|
-
*
|
|
1054
|
-
*
|
|
1055
|
-
* Called on present
|
|
1097
|
+
* Sets the internal --ion-modal-offset-top property on the host element,
|
|
1098
|
+
* resolving the current root --ion-safe-area-top when no value is given.
|
|
1099
|
+
* Called on present, on resize (e.g., device rotation changes safe-area),
|
|
1100
|
+
* and whenever the root safe-area value itself changes.
|
|
1056
1101
|
*/
|
|
1057
|
-
updateSheetOffsetTop() {
|
|
1058
|
-
const
|
|
1059
|
-
this.el.style.setProperty('--ion-modal-offset-top', `${
|
|
1102
|
+
updateSheetOffsetTop(safeAreaTop) {
|
|
1103
|
+
const value = safeAreaTop ?? getRootSafeAreaTop();
|
|
1104
|
+
this.el.style.setProperty('--ion-modal-offset-top', `${value}px`);
|
|
1060
1105
|
}
|
|
1061
1106
|
/**
|
|
1062
1107
|
* Updates safe-area overrides during dynamic state changes.
|
|
@@ -1156,11 +1201,38 @@ export class Modal {
|
|
|
1156
1201
|
*/
|
|
1157
1202
|
cleanupSafeAreaOverrides() {
|
|
1158
1203
|
clearSafeAreaOverrides(this.el);
|
|
1204
|
+
this.unsubscribeRootSafeAreaTop?.();
|
|
1205
|
+
this.unsubscribeRootSafeAreaTop = undefined;
|
|
1159
1206
|
// Remove internal sheet offset property
|
|
1160
1207
|
this.el.style.removeProperty('--ion-modal-offset-top');
|
|
1161
1208
|
const { contentEl } = this.findContentAndFooter();
|
|
1162
1209
|
this.clearContentSafeAreaPadding(contentEl);
|
|
1163
1210
|
}
|
|
1211
|
+
/**
|
|
1212
|
+
* Re-applies what `cleanupSafeAreaOverrides()` removed for a modal moved
|
|
1213
|
+
* while presented. Anything needing no measurement goes on synchronously so
|
|
1214
|
+
* the modal is never painted without safe-area. The position-based
|
|
1215
|
+
* correction waits a frame for the layout pass it reads.
|
|
1216
|
+
*/
|
|
1217
|
+
restoreSafeAreaOverrides() {
|
|
1218
|
+
this.setInitialSafeAreaOverrides();
|
|
1219
|
+
this.applyFullscreenSafeArea();
|
|
1220
|
+
raf(() => {
|
|
1221
|
+
// A dismiss or another move can land first, and a read before the enter
|
|
1222
|
+
// animation settles is not the rest position. `present()` redoes it.
|
|
1223
|
+
if (!this.presented || !this.el.isConnected || this.isPresenting) {
|
|
1224
|
+
return;
|
|
1225
|
+
}
|
|
1226
|
+
// A hidden subtree carries `display: none`, so there is no box and the
|
|
1227
|
+
// read would write the safe-area for a modal touching no edge. The
|
|
1228
|
+
// prediction applied above holds until the modal is shown again.
|
|
1229
|
+
const { width, height } = this.el.getBoundingClientRect();
|
|
1230
|
+
if (width === 0 && height === 0) {
|
|
1231
|
+
return;
|
|
1232
|
+
}
|
|
1233
|
+
this.updateSafeAreaOverrides();
|
|
1234
|
+
});
|
|
1235
|
+
}
|
|
1164
1236
|
render() {
|
|
1165
1237
|
const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
|
|
1166
1238
|
const showHandle = handle !== false && isSheetModal;
|
|
@@ -1168,11 +1240,20 @@ export class Modal {
|
|
|
1168
1240
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
1169
1241
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
1170
1242
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
1171
|
-
return (h(Host,
|
|
1243
|
+
return (h(Host, { key: '7c9c736052c5a788cf31040b6b2386dd9ea7454b', "no-router": true,
|
|
1172
1244
|
// Allow the modal to be navigable when the handle is focusable
|
|
1173
|
-
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1
|
|
1245
|
+
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1, ...htmlAttributes, style: {
|
|
1174
1246
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
1175
|
-
}, class:
|
|
1247
|
+
}, class: {
|
|
1248
|
+
[mode]: true,
|
|
1249
|
+
['modal-default']: !isCardModal && !isSheetModal,
|
|
1250
|
+
[`modal-card`]: isCardModal,
|
|
1251
|
+
[`modal-sheet`]: isSheetModal,
|
|
1252
|
+
[`modal-no-expand-scroll`]: isSheetModal && !expandToScroll,
|
|
1253
|
+
'overlay-hidden': true,
|
|
1254
|
+
[FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false,
|
|
1255
|
+
...getClassMap(this.cssClass),
|
|
1256
|
+
}, onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }, h("ion-backdrop", { key: '01b5b5765fb3a32393c736065c824bf760728823', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '40fa7727a0923f7d7461dd027f1511a6a148d84a', class: "modal-shadow" }), h("div", { key: '9af934b607f60795bd5bff7bee6eacfc9b14fa35',
|
|
1176
1257
|
/*
|
|
1177
1258
|
role and aria-modal must be used on the
|
|
1178
1259
|
same element. They must also be set inside the
|
|
@@ -1185,9 +1266,9 @@ export class Modal {
|
|
|
1185
1266
|
without the tabindex focus() would be a no-op and screen readers
|
|
1186
1267
|
may not properly announce the dialog and its content when it opens.
|
|
1187
1268
|
*/
|
|
1188
|
-
role: "dialog"
|
|
1269
|
+
role: "dialog", ...inheritedAttributes, "aria-modal": "true", tabIndex: -1, class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }, showHandle && (h("button", { key: 'df84a6806413b13efc5b03c862edde83151579a7', class: "modal-handle",
|
|
1189
1270
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
1190
|
-
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '
|
|
1271
|
+
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '072d3929ec6f25481946b184d8ac24219011e783', onSlotchange: this.onSlotChange }))));
|
|
1191
1272
|
}
|
|
1192
1273
|
static get is() { return "ion-modal"; }
|
|
1193
1274
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1459,13 +1540,13 @@ export class Modal {
|
|
|
1459
1540
|
"optional": true,
|
|
1460
1541
|
"docs": {
|
|
1461
1542
|
"tags": [],
|
|
1462
|
-
"text": "The interaction behavior for the sheet modal when the handle is pressed.\n\
|
|
1543
|
+
"text": "The interaction behavior for the sheet modal when the handle is pressed.\n\nHandle behavior is unavailable when the `handle` property is set to\n`false` or when the `breakpoints` property is not set (using a\nfullscreen or card modal).\n\nSet to `\"cycle\"` to make the handle focusable and let the sheet modal\ncycle between available breakpoints when pressed. This keeps the sheet\noperable with assistive technology.\n\nSet to `\"none\"` to make the handle purely decorative when pressed and\nremoved from the tab order.\n\nDefaults to `\"cycle\"`."
|
|
1463
1544
|
},
|
|
1464
1545
|
"getter": false,
|
|
1465
1546
|
"setter": false,
|
|
1466
1547
|
"reflect": false,
|
|
1467
1548
|
"attribute": "handle-behavior",
|
|
1468
|
-
"defaultValue": "'
|
|
1549
|
+
"defaultValue": "'cycle'"
|
|
1469
1550
|
},
|
|
1470
1551
|
"component": {
|
|
1471
1552
|
"type": "string",
|
|
@@ -49,8 +49,8 @@ export const getRootSafeAreaTop = () => {
|
|
|
49
49
|
if (cachedRootSafeAreaTop !== null) {
|
|
50
50
|
return cachedRootSafeAreaTop;
|
|
51
51
|
}
|
|
52
|
-
const doc = win
|
|
53
|
-
if (!
|
|
52
|
+
const doc = win?.document;
|
|
53
|
+
if (!doc?.body) {
|
|
54
54
|
return 0;
|
|
55
55
|
}
|
|
56
56
|
const el = doc.createElement('div');
|
|
@@ -69,6 +69,41 @@ export const getRootSafeAreaTop = () => {
|
|
|
69
69
|
}
|
|
70
70
|
return value;
|
|
71
71
|
};
|
|
72
|
+
/**
|
|
73
|
+
* Calls back when the resolved root `--ion-safe-area-top` changes, which no
|
|
74
|
+
* event and no window resize covers. The probe's height tracks the variable, so
|
|
75
|
+
* a change to it becomes a size change the observer can see.
|
|
76
|
+
*/
|
|
77
|
+
export const onRootSafeAreaTopChange = (callback) => {
|
|
78
|
+
const doc = win?.document;
|
|
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
|
+
};
|
|
106
|
+
};
|
|
72
107
|
/**
|
|
73
108
|
* True when the modal host declares BOTH a non-fullscreen `--width` AND a
|
|
74
109
|
* non-fullscreen `--height` (i.e. a centered-dialog-like modal that doesn't
|
|
@@ -153,10 +188,9 @@ export const getInitialSafeAreaConfig = (context) => {
|
|
|
153
188
|
* @returns SafeAreaConfig based on position
|
|
154
189
|
*/
|
|
155
190
|
export const getPositionBasedSafeAreaConfig = (wrapperEl) => {
|
|
156
|
-
var _a, _b;
|
|
157
191
|
const rect = wrapperEl.getBoundingClientRect();
|
|
158
|
-
const vh =
|
|
159
|
-
const vw =
|
|
192
|
+
const vh = win?.innerHeight ?? 0;
|
|
193
|
+
const vw = win?.innerWidth ?? 0;
|
|
160
194
|
// Only apply safe-area to sides where modal overlaps with screen edge
|
|
161
195
|
return {
|
|
162
196
|
top: rect.top <= EDGE_THRESHOLD ? 'inherit' : '0px',
|