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