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
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { d as doc } from './index-ZjP4CjeZ.js';
|
|
5
|
-
import { n as focusVisibleElement, c as componentOnReady, g as getElementRoot, f as addEventListener, m as removeEventListener } from './helpers-
|
|
6
|
-
import { OVERLAY_BACK_BUTTON_PRIORITY, shouldUseCloseWatcher } from './hardware-back-button-
|
|
7
|
-
import { e as config, j as printIonError, f as printIonWarning } from './index-
|
|
8
|
-
import { b as getIonMode } from './ionic-global-
|
|
9
|
-
import { C as CoreDelegate } from './framework-delegate-
|
|
10
|
-
import { B as BACKDROP_NO_SCROLL } from './gesture-controller-
|
|
5
|
+
import { n as focusVisibleElement, c as componentOnReady, g as getElementRoot, f as addEventListener, m as removeEventListener } from './helpers-BSmc0nst.js';
|
|
6
|
+
import { OVERLAY_BACK_BUTTON_PRIORITY, shouldUseCloseWatcher } from './hardware-back-button-DmkiRgOT.js';
|
|
7
|
+
import { e as config, j as printIonError, f as printIonWarning } from './index-C23AVPx9.js';
|
|
8
|
+
import { b as getIonMode } from './ionic-global-ZXjCXKH0.js';
|
|
9
|
+
import { C as CoreDelegate } from './framework-delegate-BwNhx9NR.js';
|
|
10
|
+
import { B as BACKDROP_NO_SCROLL } from './gesture-controller-B_gJaBk0.js';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* This query string selects elements that
|
|
@@ -34,7 +34,7 @@ const focusableQueryString = '[tabindex]:not([tabindex^="-"]):not([hidden]):not(
|
|
|
34
34
|
*/
|
|
35
35
|
const focusFirstDescendant = (ref, fallbackElement) => {
|
|
36
36
|
const firstInput = ref.querySelector(focusableQueryString);
|
|
37
|
-
focusElementInContext(firstInput, fallbackElement
|
|
37
|
+
focusElementInContext(firstInput, fallbackElement ?? ref);
|
|
38
38
|
};
|
|
39
39
|
/**
|
|
40
40
|
* Focuses the last descendant in a context
|
|
@@ -49,7 +49,7 @@ const focusFirstDescendant = (ref, fallbackElement) => {
|
|
|
49
49
|
const focusLastDescendant = (ref, fallbackElement) => {
|
|
50
50
|
const inputs = Array.from(ref.querySelectorAll(focusableQueryString));
|
|
51
51
|
const lastInput = inputs.length > 0 ? inputs[inputs.length - 1] : null;
|
|
52
|
-
focusElementInContext(lastInput, fallbackElement
|
|
52
|
+
focusElementInContext(lastInput, fallbackElement ?? ref);
|
|
53
53
|
};
|
|
54
54
|
/**
|
|
55
55
|
* Focuses a particular element in a context. If the element
|
|
@@ -70,7 +70,7 @@ const focusLastDescendant = (ref, fallbackElement) => {
|
|
|
70
70
|
*/
|
|
71
71
|
const focusElementInContext = (hostToFocus, fallbackElement) => {
|
|
72
72
|
let elementToFocus = hostToFocus;
|
|
73
|
-
const shadowRoot = hostToFocus
|
|
73
|
+
const shadowRoot = hostToFocus?.shadowRoot;
|
|
74
74
|
if (shadowRoot) {
|
|
75
75
|
// If there are no inner focusable elements, just focus the host element.
|
|
76
76
|
elementToFocus = shadowRoot.querySelector(focusableQueryString) || hostToFocus;
|
|
@@ -98,8 +98,16 @@ const activeAnimations = new WeakMap();
|
|
|
98
98
|
* Returns false if showBackdrop=false or backdropBreakpoint > 0.
|
|
99
99
|
*/
|
|
100
100
|
const isBackdropAlwaysBlocking = (el) => {
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
return el.showBackdrop !== false && !((el.backdropBreakpoint ?? 0) > 0);
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Whether the overlay takes the app root out of the accessibility tree and
|
|
105
|
+
* blocks body scroll while presented. Toasts never do, modal and popover can
|
|
106
|
+
* opt out with `focusTrap={false}`, and a backdrop that does not block
|
|
107
|
+
* (`showBackdrop={false}`, or a `backdropBreakpoint` above 0) is excluded.
|
|
108
|
+
*/
|
|
109
|
+
const locksAppRoot = (el) => {
|
|
110
|
+
return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && isBackdropAlwaysBlocking(el);
|
|
103
111
|
};
|
|
104
112
|
const createController = (tagName) => {
|
|
105
113
|
return {
|
|
@@ -118,10 +126,6 @@ const alertController = /*@__PURE__*/ createController('ion-alert');
|
|
|
118
126
|
const actionSheetController = /*@__PURE__*/ createController('ion-action-sheet');
|
|
119
127
|
const loadingController = /*@__PURE__*/ createController('ion-loading');
|
|
120
128
|
const modalController = /*@__PURE__*/ createController('ion-modal');
|
|
121
|
-
/**
|
|
122
|
-
* @deprecated Use the inline ion-picker component instead.
|
|
123
|
-
*/
|
|
124
|
-
const pickerController = /*@__PURE__*/ createController('ion-picker-legacy');
|
|
125
129
|
const popoverController = /*@__PURE__*/ createController('ion-popover');
|
|
126
130
|
const toastController = /*@__PURE__*/ createController('ion-toast');
|
|
127
131
|
/**
|
|
@@ -161,7 +165,6 @@ const setOverlayId = (el) => {
|
|
|
161
165
|
return el.id;
|
|
162
166
|
};
|
|
163
167
|
const createOverlay = (tagName, opts) => {
|
|
164
|
-
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
|
|
165
168
|
if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined') {
|
|
166
169
|
return window.customElements.whenDefined(tagName).then(() => {
|
|
167
170
|
const element = document.createElement(tagName);
|
|
@@ -170,7 +173,7 @@ const createOverlay = (tagName, opts) => {
|
|
|
170
173
|
* Convert the passed in overlay options into props
|
|
171
174
|
* that get passed down into the new overlay.
|
|
172
175
|
*/
|
|
173
|
-
Object.assign(element,
|
|
176
|
+
Object.assign(element, { ...opts, hasController: true });
|
|
174
177
|
// append the overlay element to the document body
|
|
175
178
|
getAppRoot(document).appendChild(element);
|
|
176
179
|
return new Promise((resolve) => componentOnReady(element, resolve));
|
|
@@ -194,7 +197,7 @@ const isOverlayHidden = (overlay) => overlay.classList.contains('overlay-hidden'
|
|
|
194
197
|
*/
|
|
195
198
|
const focusElementInOverlay = (hostToFocus, overlay) => {
|
|
196
199
|
let elementToFocus = hostToFocus;
|
|
197
|
-
const shadowRoot = hostToFocus
|
|
200
|
+
const shadowRoot = hostToFocus?.shadowRoot;
|
|
198
201
|
if (shadowRoot) {
|
|
199
202
|
// If there are no inner focusable elements, just focus the host element.
|
|
200
203
|
elementToFocus = shadowRoot.querySelector(focusableQueryString) || hostToFocus;
|
|
@@ -215,7 +218,7 @@ const focusElementInOverlay = (hostToFocus, overlay) => {
|
|
|
215
218
|
* Should NOT include: Toast
|
|
216
219
|
*/
|
|
217
220
|
const trapKeyboardFocus = (ev, doc) => {
|
|
218
|
-
const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-
|
|
221
|
+
const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-popover');
|
|
219
222
|
const target = ev.target;
|
|
220
223
|
/**
|
|
221
224
|
* If no active overlay, ignore this event.
|
|
@@ -401,7 +404,7 @@ const connectListeners = (doc) => {
|
|
|
401
404
|
// handle back-button click
|
|
402
405
|
doc.addEventListener('ionBackButton', (ev) => {
|
|
403
406
|
const lastOverlay = getPresentedOverlay(doc);
|
|
404
|
-
if (lastOverlay
|
|
407
|
+
if (lastOverlay?.backdropDismiss) {
|
|
405
408
|
ev.detail.register(OVERLAY_BACK_BUTTON_PRIORITY, () => {
|
|
406
409
|
/**
|
|
407
410
|
* Do not return this promise otherwise
|
|
@@ -429,7 +432,7 @@ const connectListeners = (doc) => {
|
|
|
429
432
|
doc.addEventListener('keydown', (ev) => {
|
|
430
433
|
if (ev.key === 'Escape') {
|
|
431
434
|
const lastOverlay = getPresentedOverlay(doc);
|
|
432
|
-
if (lastOverlay
|
|
435
|
+
if (lastOverlay?.backdropDismiss) {
|
|
433
436
|
lastOverlay.dismiss(undefined, BACKDROP);
|
|
434
437
|
}
|
|
435
438
|
}
|
|
@@ -449,7 +452,7 @@ const dismissOverlay = (doc, data, role, overlayTag, id) => {
|
|
|
449
452
|
*/
|
|
450
453
|
const getOverlays = (doc, selector) => {
|
|
451
454
|
if (selector === undefined) {
|
|
452
|
-
selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-
|
|
455
|
+
selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-popover,ion-toast';
|
|
453
456
|
}
|
|
454
457
|
return Array.from(doc.querySelectorAll(selector)).filter((c) => c.overlayIndex > 0);
|
|
455
458
|
};
|
|
@@ -476,6 +479,13 @@ const getPresentedOverlay = (doc, overlayTag, id) => {
|
|
|
476
479
|
// Otherwise, return the last overlay with the given id
|
|
477
480
|
return (id === undefined ? overlays : overlays.filter((o) => o.id === id)).slice(-1)[0];
|
|
478
481
|
};
|
|
482
|
+
/**
|
|
483
|
+
* The element an app nests its views under. Overlays hide this rather than the
|
|
484
|
+
* whole root, so the overlay itself (a sibling) stays reachable.
|
|
485
|
+
*/
|
|
486
|
+
const getViewContainer = () => {
|
|
487
|
+
return getAppRoot(document).querySelector('ion-router-outlet, #ion-view-container-root');
|
|
488
|
+
};
|
|
479
489
|
/**
|
|
480
490
|
* When an overlay is presented, the main
|
|
481
491
|
* focus is the overlay not the page content.
|
|
@@ -499,8 +509,7 @@ const getPresentedOverlay = (doc, overlayTag, id) => {
|
|
|
499
509
|
* for main content.
|
|
500
510
|
*/
|
|
501
511
|
const setRootAriaHidden = (hidden = false) => {
|
|
502
|
-
const
|
|
503
|
-
const viewContainer = root.querySelector('ion-router-outlet, #ion-view-container-root');
|
|
512
|
+
const viewContainer = getViewContainer();
|
|
504
513
|
if (!viewContainer) {
|
|
505
514
|
return;
|
|
506
515
|
}
|
|
@@ -511,8 +520,57 @@ const setRootAriaHidden = (hidden = false) => {
|
|
|
511
520
|
viewContainer.removeAttribute('aria-hidden');
|
|
512
521
|
}
|
|
513
522
|
};
|
|
523
|
+
/**
|
|
524
|
+
* Cleans up root `aria-hidden` and `backdrop-no-scroll` when
|
|
525
|
+
* an overlay is removed from the DOM without going through
|
|
526
|
+
* the `dismiss()` flow (e.g., when a framework unmounts the
|
|
527
|
+
* overlay during a route change).
|
|
528
|
+
*
|
|
529
|
+
* Should be called from an overlay's `disconnectedCallback`
|
|
530
|
+
* when the overlay was still presented at the time of removal.
|
|
531
|
+
*/
|
|
532
|
+
const cleanupRootFocusTrapAccessibility = () => {
|
|
533
|
+
if (typeof document === 'undefined') {
|
|
534
|
+
return;
|
|
535
|
+
}
|
|
536
|
+
const remainingOverlays = getPresentedOverlays(document);
|
|
537
|
+
const hasRemainingLocking = remainingOverlays.some((o) => locksAppRoot(o));
|
|
538
|
+
if (!hasRemainingLocking) {
|
|
539
|
+
setRootAriaHidden(false);
|
|
540
|
+
document.body.classList.remove(BACKDROP_NO_SCROLL);
|
|
541
|
+
}
|
|
542
|
+
};
|
|
543
|
+
/**
|
|
544
|
+
* Applies the root lock itself: `aria-hidden` on the view container, and
|
|
545
|
+
* `backdrop-no-scroll` on the body. Shared by `present()` and the restore
|
|
546
|
+
* below, which have to stay in lockstep.
|
|
547
|
+
*/
|
|
548
|
+
const applyRootLock = (el) => {
|
|
549
|
+
// Hiding the container the overlay now sits in would hide the overlay too.
|
|
550
|
+
if (!getViewContainer()?.contains(el)) {
|
|
551
|
+
setRootAriaHidden(true);
|
|
552
|
+
}
|
|
553
|
+
document.body.classList.add(BACKDROP_NO_SCROLL);
|
|
554
|
+
};
|
|
555
|
+
/**
|
|
556
|
+
* Re-applies the root lock that `cleanupRootFocusTrapAccessibility()` released.
|
|
557
|
+
* Call from `connectedCallback` when the overlay is still presented.
|
|
558
|
+
*
|
|
559
|
+
* A synchronous move keeps the overlay connected, so the lock survives. A
|
|
560
|
+
* detach with a re-insert in a later task releases it, which is the shape a
|
|
561
|
+
* framework produces when it takes a subtree out and puts it back.
|
|
562
|
+
*/
|
|
563
|
+
const restoreRootFocusTrapAccessibility = (overlayEl) => {
|
|
564
|
+
if (typeof document === 'undefined') {
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
567
|
+
const el = overlayEl;
|
|
568
|
+
if (!locksAppRoot(el)) {
|
|
569
|
+
return;
|
|
570
|
+
}
|
|
571
|
+
applyRootLock(el);
|
|
572
|
+
};
|
|
514
573
|
const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) => {
|
|
515
|
-
var _a, _b;
|
|
516
574
|
if (overlay.presented) {
|
|
517
575
|
return;
|
|
518
576
|
}
|
|
@@ -528,15 +586,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
528
586
|
restoreElementFocus(overlay.el);
|
|
529
587
|
}
|
|
530
588
|
/**
|
|
531
|
-
*
|
|
532
|
-
* focus traps.
|
|
533
|
-
*
|
|
534
|
-
* All other overlays should have focus traps to prevent
|
|
535
|
-
* the keyboard focus from leaving the overlay unless
|
|
536
|
-
* developers explicitly opt out (for example, sheet
|
|
537
|
-
* modals that should permit background interaction).
|
|
538
|
-
*
|
|
539
|
-
* Note: Some apps move inline overlays to a specific container
|
|
589
|
+
* Some apps move inline overlays to a specific container
|
|
540
590
|
* during the willPresent lifecycle (e.g., React portals via
|
|
541
591
|
* onWillPresent). Defer applying aria-hidden/inert to the app
|
|
542
592
|
* root until after willPresent so we can detect where the
|
|
@@ -545,20 +595,13 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
545
595
|
* to avoid disabling the overlay.
|
|
546
596
|
*/
|
|
547
597
|
const overlayEl = overlay.el;
|
|
548
|
-
const
|
|
549
|
-
const shouldLockRoot = shouldTrapFocus && isBackdropAlwaysBlocking(overlayEl);
|
|
598
|
+
const shouldLockRoot = locksAppRoot(overlayEl);
|
|
550
599
|
overlay.presented = true;
|
|
551
600
|
overlay.willPresent.emit();
|
|
552
601
|
if (shouldLockRoot) {
|
|
553
|
-
|
|
554
|
-
const viewContainer = root.querySelector('ion-router-outlet, #ion-view-container-root');
|
|
555
|
-
const overlayInsideViewContainer = viewContainer ? viewContainer.contains(overlayEl) : false;
|
|
556
|
-
if (!overlayInsideViewContainer) {
|
|
557
|
-
setRootAriaHidden(true);
|
|
558
|
-
}
|
|
559
|
-
document.body.classList.add(BACKDROP_NO_SCROLL);
|
|
602
|
+
applyRootLock(overlayEl);
|
|
560
603
|
}
|
|
561
|
-
|
|
604
|
+
overlay.willPresentShorthand?.emit();
|
|
562
605
|
const mode = getIonMode(overlay);
|
|
563
606
|
// get the user's animation fn if one was provided
|
|
564
607
|
const animationBuilder = overlay.enterAnimation
|
|
@@ -567,7 +610,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
567
610
|
const completed = await overlayAnimation(overlay, animationBuilder, overlay.el, opts);
|
|
568
611
|
if (completed) {
|
|
569
612
|
overlay.didPresent.emit();
|
|
570
|
-
|
|
613
|
+
overlay.didPresentShorthand?.emit();
|
|
571
614
|
}
|
|
572
615
|
/**
|
|
573
616
|
* If the focused element is already
|
|
@@ -587,7 +630,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
587
630
|
* exists (e.g. picker-legacy), we fall back to the host.
|
|
588
631
|
*/
|
|
589
632
|
const overlayWrapper = getElementRoot(overlay.el).querySelector('[role="dialog"][tabindex]');
|
|
590
|
-
const focusTarget = overlayWrapper
|
|
633
|
+
const focusTarget = overlayWrapper ?? overlay.el;
|
|
591
634
|
/**
|
|
592
635
|
* `preventScroll` keeps this a pure focus move so the viewport does not
|
|
593
636
|
* jump when the wrapper is partially off-screen (e.g. a sheet modal).
|
|
@@ -597,7 +640,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
597
640
|
try {
|
|
598
641
|
focusTarget.focus({ preventScroll: true });
|
|
599
642
|
}
|
|
600
|
-
catch
|
|
643
|
+
catch {
|
|
601
644
|
focusTarget.focus();
|
|
602
645
|
}
|
|
603
646
|
}
|
|
@@ -633,7 +676,7 @@ const restoreElementFocus = async (overlayEl) => {
|
|
|
633
676
|
}
|
|
634
677
|
// Ensure active element is blurred to prevent a11y warning issues
|
|
635
678
|
previousElement.blur();
|
|
636
|
-
const shadowRoot = previousElement
|
|
679
|
+
const shadowRoot = previousElement?.shadowRoot;
|
|
637
680
|
if (shadowRoot) {
|
|
638
681
|
// If there are no inner focusable elements, just focus the host element.
|
|
639
682
|
previousElement = shadowRoot.querySelector(focusableQueryString) || previousElement;
|
|
@@ -668,7 +711,6 @@ const restoreElementFocus = async (overlayEl) => {
|
|
|
668
711
|
}
|
|
669
712
|
};
|
|
670
713
|
const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnimation, opts) => {
|
|
671
|
-
var _a, _b;
|
|
672
714
|
if (!overlay.presented) {
|
|
673
715
|
return false;
|
|
674
716
|
}
|
|
@@ -683,12 +725,9 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
|
|
|
683
725
|
* from the root element when the last focus-trapping overlay
|
|
684
726
|
* is dismissed.
|
|
685
727
|
*/
|
|
686
|
-
const overlaysLockingRoot = presentedOverlays.filter((o) =>
|
|
687
|
-
const el = o;
|
|
688
|
-
return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && isBackdropAlwaysBlocking(el);
|
|
689
|
-
});
|
|
728
|
+
const overlaysLockingRoot = presentedOverlays.filter((o) => locksAppRoot(o));
|
|
690
729
|
const overlayEl = overlay.el;
|
|
691
|
-
const locksRoot =
|
|
730
|
+
const locksRoot = locksAppRoot(overlayEl);
|
|
692
731
|
/**
|
|
693
732
|
* If this is the last visible overlay that is trapping focus
|
|
694
733
|
* then we want to re-add the root to the accessibility tree.
|
|
@@ -703,7 +742,7 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
|
|
|
703
742
|
// Overlay contents should not be clickable during dismiss
|
|
704
743
|
overlay.el.style.setProperty('pointer-events', 'none');
|
|
705
744
|
overlay.willDismiss.emit({ data, role });
|
|
706
|
-
|
|
745
|
+
overlay.willDismissShorthand?.emit({ data, role });
|
|
707
746
|
const mode = getIonMode(overlay);
|
|
708
747
|
const animationBuilder = overlay.leaveAnimation
|
|
709
748
|
? overlay.leaveAnimation
|
|
@@ -713,7 +752,7 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
|
|
|
713
752
|
await overlayAnimation(overlay, animationBuilder, overlay.el, opts);
|
|
714
753
|
}
|
|
715
754
|
overlay.didDismiss.emit({ data, role });
|
|
716
|
-
|
|
755
|
+
overlay.didDismissShorthand?.emit({ data, role });
|
|
717
756
|
// Get a reference to all animations currently assigned to this overlay
|
|
718
757
|
// Then tear them down to return the overlay to its initial visual state
|
|
719
758
|
const animations = activeAnimations.get(overlay) || [];
|
|
@@ -754,7 +793,7 @@ const overlayAnimation = async (overlay, animationBuilder, baseEl, opts) => {
|
|
|
754
793
|
if (overlay.keyboardClose) {
|
|
755
794
|
animation.beforeAddWrite(() => {
|
|
756
795
|
const activeElement = baseEl.ownerDocument.activeElement;
|
|
757
|
-
if (activeElement
|
|
796
|
+
if (activeElement?.matches('input,ion-input, ion-textarea')) {
|
|
758
797
|
activeElement.blur();
|
|
759
798
|
}
|
|
760
799
|
});
|
|
@@ -935,4 +974,4 @@ const createTriggerController = () => {
|
|
|
935
974
|
};
|
|
936
975
|
const FOCUS_TRAP_DISABLE_CLASS = 'ion-disable-focus-trap';
|
|
937
976
|
|
|
938
|
-
export { BACKDROP as B, FOCUS_TRAP_DISABLE_CLASS as F, GESTURE as G, OVERLAY_GESTURE_PRIORITY as O, alertController as a, actionSheetController as b,
|
|
977
|
+
export { BACKDROP as B, FOCUS_TRAP_DISABLE_CLASS as F, GESTURE as G, OVERLAY_GESTURE_PRIORITY as O, alertController as a, actionSheetController as b, createDelegateController as c, createTriggerController as d, present as e, dismiss as f, eventMethod as g, prepareOverlay as h, isCancel as i, cleanupRootFocusTrapAccessibility as j, setOverlayId as k, loadingController as l, modalController as m, focusFirstDescendant as n, getPresentedOverlay as o, popoverController as p, focusLastDescendant as q, restoreRootFocusTrapAccessibility as r, safeCall as s, toastController as t };
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { h } from './index-C23AVPx9.js';
|
|
5
|
+
import { a as sanitizeDOMTree } from './index-D76bbuoi.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Converts a DOM node into a Stencil VNode (or text string) so the
|
|
9
|
+
* resulting tree is rendered through the component's normal render
|
|
10
|
+
* path. Rendering through Stencil ensures that scoped CSS classes
|
|
11
|
+
* (e.g. `sc-ion-action-sheet-ionic`) are applied to every element.
|
|
12
|
+
*
|
|
13
|
+
* Highly recommended to pre-sanitize the source DOM (see
|
|
14
|
+
* `getOptionContent` in select.tsx). This function performs pure
|
|
15
|
+
* structural conversion — no security filtering.
|
|
16
|
+
*
|
|
17
|
+
* Preserves attributes only — properties set imperatively on the source
|
|
18
|
+
* element (e.g. `input.value` after a user types) won't carry through.
|
|
19
|
+
* In practice this isn't a concern: interactive controls shouldn't
|
|
20
|
+
* appear in select-option rich content since they'd nest inside the
|
|
21
|
+
* overlay's button/radio/checkbox wrapper, which is invalid HTML and
|
|
22
|
+
* an accessibility issue.
|
|
23
|
+
*
|
|
24
|
+
* @param node - The DOM node to convert. Text nodes become strings,
|
|
25
|
+
* element nodes become VNodes, and any other node types are skipped.
|
|
26
|
+
* @param keyPrefix - String prefix used to build a stable VNode key,
|
|
27
|
+
* so Stencil's diff can preserve elements across re-renders.
|
|
28
|
+
* @param index - Position of this node among its siblings. Combined
|
|
29
|
+
* with `keyPrefix` to form the final unique key.
|
|
30
|
+
* @returns The converted VNode, a text string, or `null` if the node
|
|
31
|
+
* type isn't supported.
|
|
32
|
+
*
|
|
33
|
+
* @internal Exported only so it can be unit tested; not part of the
|
|
34
|
+
* public API.
|
|
35
|
+
*/
|
|
36
|
+
const cloneToVNode = (node, keyPrefix, index) => {
|
|
37
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
38
|
+
return node.textContent ?? '';
|
|
39
|
+
}
|
|
40
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
const el = node;
|
|
44
|
+
const tag = el.tagName.toLowerCase();
|
|
45
|
+
const key = `${keyPrefix}-${index}`;
|
|
46
|
+
const attrs = { key };
|
|
47
|
+
for (let i = 0; i < el.attributes.length; i++) {
|
|
48
|
+
const attr = el.attributes.item(i);
|
|
49
|
+
attrs[attr.name] = attr.value;
|
|
50
|
+
}
|
|
51
|
+
const children = Array.from(el.childNodes)
|
|
52
|
+
.map((child, i) => cloneToVNode(child, key, i))
|
|
53
|
+
.filter((c) => c !== null);
|
|
54
|
+
return h(tag, attrs, children);
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Renders cloned DOM content as Stencil JSX. Walking the source DOM
|
|
58
|
+
* into VNodes (rather than injecting it via innerHTML) keeps the
|
|
59
|
+
* content inside Stencil's render path, so scoped CSS classes are
|
|
60
|
+
* applied automatically and component attributes like `size` or
|
|
61
|
+
* `color` survive intact.
|
|
62
|
+
*
|
|
63
|
+
* Span elements should be used when this content renders within buttons,
|
|
64
|
+
* depending on the select interface. Buttons can only have phrasing
|
|
65
|
+
* content to prevent accessibility issues.
|
|
66
|
+
*
|
|
67
|
+
* @param id - Unique identifier for generating stable virtual DOM keys.
|
|
68
|
+
* @param content - The HTMLElement container whose child nodes will be cloned.
|
|
69
|
+
* @param className - CSS class applied to the wrapper element.
|
|
70
|
+
* @param useSpan - Whether to use a span element instead of a div for the wrapper.
|
|
71
|
+
*/
|
|
72
|
+
const renderClonedContent = (id, content, className, useSpan = false) => {
|
|
73
|
+
const Tag = useSpan ? 'span' : 'div';
|
|
74
|
+
const keyPrefix = `${className}-${id}`;
|
|
75
|
+
/**
|
|
76
|
+
* Do not remove. This is the only sanitization pass for callers that pass
|
|
77
|
+
* an `HTMLElement` straight to `renderOptionLabel` (e.g. vanilla JS)
|
|
78
|
+
* without going through `getOptionContent`, which sanitizes upstream.
|
|
79
|
+
* `cloneToVNode` does pure structural conversion and no security
|
|
80
|
+
* filtering, so dropping this call would reopen an XSS hole on the
|
|
81
|
+
* direct `HTMLElement` path.
|
|
82
|
+
*/
|
|
83
|
+
sanitizeDOMTree(content);
|
|
84
|
+
return (h(Tag, { class: className, key: keyPrefix }, Array.from(content.childNodes).map((child, i) => cloneToVNode(child, keyPrefix, i))));
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Renders the label content for a select option within an overlay
|
|
88
|
+
* interface based on the presence of rich content.
|
|
89
|
+
*
|
|
90
|
+
* Span elements should be used when this content renders within buttons,
|
|
91
|
+
* depending on the select interface. Buttons can only have phrasing
|
|
92
|
+
* content to prevent accessibility issues.
|
|
93
|
+
*
|
|
94
|
+
* @param option - The content option data containing label, slots,
|
|
95
|
+
* and description.
|
|
96
|
+
* @param className - The base CSS class for the label element.
|
|
97
|
+
* @param useSpan - Whether to use a span element instead of a div for the label.
|
|
98
|
+
*/
|
|
99
|
+
const renderOptionLabel = (option, className, useSpan = false) => {
|
|
100
|
+
const { id, label, startContent, endContent, description } = option;
|
|
101
|
+
const hasRichContent = !!startContent || !!endContent || !!description;
|
|
102
|
+
const Tag = useSpan ? 'span' : 'div';
|
|
103
|
+
// Render simple string label if there is no rich content to display
|
|
104
|
+
if (!hasRichContent && (typeof label === 'string' || !label)) {
|
|
105
|
+
return (h(Tag, { class: className, key: `${className}-${id}` }, label));
|
|
106
|
+
}
|
|
107
|
+
// Render the main label
|
|
108
|
+
const labelEl = typeof label === 'string' || !label ? (
|
|
109
|
+
// Label is a simple string or undefined
|
|
110
|
+
h(Tag, { key: `${className}-label-${id}` }, label)) : (
|
|
111
|
+
// Label is an HTMLElement with potential rich content
|
|
112
|
+
renderClonedContent(id, label, `${className}-text`, useSpan));
|
|
113
|
+
// No rich content, render just the label
|
|
114
|
+
if (!hasRichContent) {
|
|
115
|
+
return (h(Tag, { class: className, key: `${className}-${id}` }, labelEl));
|
|
116
|
+
}
|
|
117
|
+
// Render label with rich content (start, end, description)
|
|
118
|
+
return (h(Tag, { class: `${className} ${className}-has-rich-content`, key: `${className}-${id}` }, startContent && renderClonedContent(id, startContent, 'select-option-start', useSpan), h(Tag, { class: "select-option-content", key: `${className}-content-${id}` }, labelEl, description && (h(Tag, { class: "select-option-description", key: `${className}-desc-${id}` }, description))), endContent && renderClonedContent(id, endContent, 'select-option-end', useSpan)));
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
export { renderOptionLabel as r };
|