voyager-ionic-core 8.8.12 → 9.0.1
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-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-BNBnVi_1.js +4 -0
- package/components/{p-C4t5ymfq.js → p-BQyuFxYc.js} +1 -1
- package/components/p-BSQPZ79H.js +4 -0
- package/components/p-BT9-hMMz.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-C0493tbX.js +4 -0
- package/components/p-C09TXohi.js +4 -0
- package/components/p-C4VpVfrJ.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-lE_JGpHD.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-Cw6WocLJ.js +4 -0
- package/components/p-D0YpjgON.js +4 -0
- package/components/{p-BirPFsRD.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-DGPjJNOU.js +4 -0
- package/components/p-DJR0R0e1.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-DNQI6d-L.js → p-DhNuxvJH.js} +1 -1
- package/components/p-DiuOa1vw.js +4 -0
- package/components/p-Dj40C8gm.js +4 -0
- package/components/p-Djmz-ssp.js +4 -0
- package/components/p-DnBNYc7u.js +4 -0
- package/components/p-DngGb-NV.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-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/{data-DLTUw-KF.js → format-bHU8N1g5.js} +48 -562
- 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-BbqUBe2T.js +429 -0
- 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-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 +18 -10
- package/dist/cjs/ion-card_5.cjs.entry.js +6 -5
- package/dist/cjs/ion-checkbox.cjs.entry.js +25 -12
- 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 +29 -30
- package/dist/cjs/{ion-datetime_3.cjs.entry.js → ion-datetime.cjs.entry.js} +773 -796
- package/dist/cjs/ion-fab_3.cjs.entry.js +93 -14
- 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 +117 -33
- 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 +307 -159
- 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 +24 -14
- package/dist/cjs/ion-range.cjs.entry.js +30 -25
- package/dist/cjs/ion-refresher_2.cjs.entry.js +61 -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 -125
- 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 +26 -19
- 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 +36 -15
- 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-Dv6qrMhm.js +38 -0
- 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-TbKsuC-K.js → overlays-BR21NUIG.js} +120 -57
- package/dist/cjs/select-option-render-CrbLc-1j.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 +11 -4
- package/dist/collection/components/card/card.js +1 -1
- package/dist/collection/components/checkbox/checkbox.ios.css +18 -0
- package/dist/collection/components/checkbox/checkbox.js +19 -8
- package/dist/collection/components/checkbox/checkbox.md.css +18 -0
- 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 +193 -79
- 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 +21 -25
- package/dist/collection/components/datetime-button/datetime-button.md.css +5 -0
- package/dist/collection/components/fab-button/fab-button.js +114 -10
- 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.ios.css +11 -0
- package/dist/collection/components/item/item.js +99 -15
- package/dist/collection/components/item/item.md.css +11 -0
- 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 +47 -32
- package/dist/collection/components/modal/gestures/swipe-to-close.js +23 -33
- package/dist/collection/components/modal/gestures/utils.js +17 -0
- package/dist/collection/components/modal/modal.ios.css +8 -0
- package/dist/collection/components/modal/modal.js +158 -65
- package/dist/collection/components/modal/modal.md.css +8 -0
- 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.ios.css +11 -15
- package/dist/collection/components/radio/radio.js +17 -9
- package/dist/collection/components/radio/radio.md.css +11 -11
- 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 +49 -16
- 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 -91
- 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 +20 -13
- 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.ios.css +12 -4
- package/dist/collection/components/toggle/toggle.js +27 -7
- package/dist/collection/components/toggle/toggle.md.css +42 -5
- 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 +2 -0
- package/dist/collection/utils/forms/item-multiple-inputs.js +33 -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 +109 -47
- package/dist/collection/utils/platform.js +4 -5
- package/dist/collection/utils/rtl/dir.js +17 -7
- package/dist/collection/utils/sanitization/index.js +275 -20
- 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 +25 -0
- package/dist/collection/utils/test/playwright/detach-reattach.js +23 -0
- package/dist/collection/utils/test/playwright/drag-element.js +14 -0
- package/dist/collection/utils/test/playwright/generator.js +3 -4
- package/dist/collection/utils/test/playwright/index.js +2 -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 +972 -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/{data-DZI70dKr.js → format-DDFE9jM5.js} +41 -554
- 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-CqoUoxgG.js +423 -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 +18 -10
- package/dist/esm/ion-card_5.entry.js +6 -5
- package/dist/esm/ion-checkbox.entry.js +25 -12
- 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 +28 -29
- package/dist/esm/{ion-datetime_3.entry.js → ion-datetime.entry.js} +712 -733
- package/dist/esm/ion-fab_3.entry.js +93 -14
- 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 +117 -33
- 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 +295 -147
- 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 +24 -14
- package/dist/esm/ion-range.entry.js +30 -25
- package/dist/esm/ion-refresher_2.entry.js +59 -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 -125
- 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 +26 -19
- 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 +36 -15
- 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-DZnIiOO_.js +36 -0
- 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-TbiM4mdr.js → overlays-DKE0DgvE.js} +119 -57
- package/dist/esm/select-option-render-1W6W9pbC.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 +58 -82
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-06c6b540.entry.js +4 -0
- 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-2c52fe3e.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-4712a8a9.entry.js +4 -0
- package/dist/ionic/p-4c3e50f8.entry.js +4 -0
- package/dist/ionic/p-4e2fef42.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-66f150ec.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-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-BMPN55of.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-D4OrdtJf.js +4 -0
- package/dist/ionic/p-D5t_-oMk.js +4 -0
- package/dist/ionic/p-D6rHcCvc.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/dist/ionic/p-DZ6Hmc-8.js +4 -0
- 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-a1cc2861.entry.js +4 -0
- package/dist/ionic/p-a20a2ebe.entry.js +4 -0
- package/dist/ionic/p-a8ff2489.entry.js +4 -0
- package/dist/ionic/p-b3532b8d.entry.js +4 -0
- package/dist/ionic/p-b80c86c4.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-c57fc396.entry.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-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-fU3rOYad.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/checkbox/checkbox.d.ts +1 -0
- package/dist/types/components/content/content.d.ts +12 -0
- package/dist/types/components/datetime/datetime.d.ts +13 -1
- package/dist/types/components/fab-button/fab-button.d.ts +15 -0
- package/dist/types/components/img/img.d.ts +2 -0
- package/dist/types/components/input/input.d.ts +12 -6
- package/dist/types/components/item/item.d.ts +19 -0
- 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/radio/radio.d.ts +1 -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/tab/tab.d.ts +1 -1
- package/dist/types/components/textarea/textarea.d.ts +12 -5
- package/dist/types/components/toggle/toggle.d.ts +1 -0
- package/dist/types/components.d.ts +94 -318
- 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 +2 -0
- package/dist/types/utils/forms/item-multiple-inputs.d.ts +13 -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/apply-keyboard-focus.d.ts +16 -0
- package/dist/types/utils/test/playwright/detach-reattach.d.ts +13 -0
- package/dist/types/utils/test/playwright/index.d.ts +2 -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 +3341 -2197
- package/hydrate/index.mjs +3341 -2197
- package/loader/index.d.ts +1 -1
- package/package.json +61 -17
- 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-0NRupjzW.js +0 -4
- package/components/p-5bE_Wz4Y.js +0 -4
- package/components/p-B60hm8Qv.js +0 -4
- package/components/p-BAYYcg3o.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-BTPfOxsU.js +0 -4
- package/components/p-BT_5jSqG.js +0 -4
- package/components/p-Baq1XyAy.js +0 -4
- package/components/p-BjfgFSSR.js +0 -4
- package/components/p-BjoEPDW5.js +0 -4
- package/components/p-BnqQlm7c.js +0 -4
- package/components/p-BsPelv04.js +0 -4
- package/components/p-Bth-EzJ0.js +0 -4
- package/components/p-Bz0dSlXZ.js +0 -4
- package/components/p-C1aScSTo.js +0 -4
- package/components/p-C2lKgrXx.js +0 -4
- package/components/p-C53feagD.js +0 -4
- package/components/p-CHqRYvYm.js +0 -4
- package/components/p-CI3ncNZm.js +0 -4
- package/components/p-CSZf8_j0.js +0 -4
- package/components/p-CU5rbWAW.js +0 -4
- package/components/p-C_xFdyXe.js +0 -4
- package/components/p-Ciz1-FuE.js +0 -4
- package/components/p-Cl0B-RWe.js +0 -4
- package/components/p-CmR5uXej.js +0 -4
- package/components/p-CtWGkNnJ.js +0 -4
- package/components/p-CtukzcyX.js +0 -4
- package/components/p-D13Eaw-8.js +0 -4
- package/components/p-D5Ubpm7D.js +0 -4
- package/components/p-D6Ynv7Xh.js +0 -4
- package/components/p-D7bSXQD3.js +0 -4
- package/components/p-DDWp95gH.js +0 -4
- package/components/p-DIE4pXMl.js +0 -4
- package/components/p-DOFCbuQR.js +0 -4
- package/components/p-DiVJyqlX.js +0 -4
- package/components/p-DnL1c9_X.js +0 -4
- package/components/p-W5nO8mX_.js +0 -4
- package/components/p-W9CZ2mWX.js +0 -4
- package/components/p-XlSIJDJ-.js +0 -4
- package/components/p-cyNmxje6.js +0 -4
- package/components/p-dhLYXa7A.js +0 -4
- package/components/p-ijF0iCrA.js +0 -4
- package/components/p-k_E4tX5Z.js +0 -4
- package/components/p-nQi4oKcG.js +0 -4
- package/components/p-ryqmO0B-.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-00dbb17e.entry.js +0 -4
- package/dist/ionic/p-01f81ea5.entry.js +0 -4
- package/dist/ionic/p-06c232a4.entry.js +0 -4
- package/dist/ionic/p-0d005398.entry.js +0 -4
- package/dist/ionic/p-1ae21e4c.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-2f55dc1a.entry.js +0 -4
- package/dist/ionic/p-30bf9737.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-390ca786.entry.js +0 -4
- package/dist/ionic/p-3a126bca.entry.js +0 -4
- package/dist/ionic/p-3a541154.entry.js +0 -4
- package/dist/ionic/p-3a7d1e91.entry.js +0 -4
- package/dist/ionic/p-3ae5f277.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-4baa5b82.entry.js +0 -4
- package/dist/ionic/p-4dc1c33c.entry.js +0 -4
- package/dist/ionic/p-4e92a11f.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-75dc25ba.entry.js +0 -4
- package/dist/ionic/p-81ea5652.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-8c8eee7d.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-94f2a736.entry.js +0 -4
- package/dist/ionic/p-9a65ac7f.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-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-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-D13Eaw-8.js +0 -4
- package/dist/ionic/p-DAAFkPFT.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-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-a21add2f.entry.js +0 -4
- package/dist/ionic/p-a3bdcae6.entry.js +0 -4
- package/dist/ionic/p-aa5d6b8f.entry.js +0 -4
- package/dist/ionic/p-c0fb8edd.entry.js +0 -4
- package/dist/ionic/p-c4d8641b.entry.js +0 -4
- package/dist/ionic/p-e0be05c5.entry.js +0 -4
- package/dist/ionic/p-e847a888.entry.js +0 -4
- package/dist/ionic/p-ec090e0a.entry.js +0 -4
- package/dist/ionic/p-ef4c3bee.entry.js +0 -4
- package/dist/ionic/p-fabcce6c.entry.js +0 -4
- package/dist/ionic/p-facfde02.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-xOfi7-Zn.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
|
|
@@ -578,7 +621,30 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
578
621
|
* to the overlay container.
|
|
579
622
|
*/
|
|
580
623
|
if (overlay.keyboardClose && (document.activeElement === null || !overlay.el.contains(document.activeElement))) {
|
|
581
|
-
|
|
624
|
+
/**
|
|
625
|
+
* Some overlays (e.g. modal) put the dialog role and accessible label
|
|
626
|
+
* on the `.ion-overlay-wrapper` instead of the host. Screen readers
|
|
627
|
+
* need focus on the element with `role="dialog"` to properly announce
|
|
628
|
+
* and navigate the dialog.
|
|
629
|
+
*
|
|
630
|
+
* We only target wrappers with `tabindex`, since `role="dialog"` alone
|
|
631
|
+
* does not make an element focusable. If no focusable dialog wrapper
|
|
632
|
+
* exists (e.g. picker-legacy), we fall back to the host.
|
|
633
|
+
*/
|
|
634
|
+
const overlayWrapper = helpers.getElementRoot(overlay.el).querySelector('[role="dialog"][tabindex]');
|
|
635
|
+
const focusTarget = overlayWrapper ?? overlay.el;
|
|
636
|
+
/**
|
|
637
|
+
* `preventScroll` keeps this a pure focus move so the viewport does not
|
|
638
|
+
* jump when the wrapper is partially off-screen (e.g. a sheet modal).
|
|
639
|
+
* Guard the options call so an older engine that mishandles it can never
|
|
640
|
+
* reject present(); we fall back to a plain focus() in that case.
|
|
641
|
+
*/
|
|
642
|
+
try {
|
|
643
|
+
focusTarget.focus({ preventScroll: true });
|
|
644
|
+
}
|
|
645
|
+
catch {
|
|
646
|
+
focusTarget.focus();
|
|
647
|
+
}
|
|
582
648
|
}
|
|
583
649
|
/**
|
|
584
650
|
* If this overlay was previously dismissed without being
|
|
@@ -612,7 +678,7 @@ const restoreElementFocus = async (overlayEl) => {
|
|
|
612
678
|
}
|
|
613
679
|
// Ensure active element is blurred to prevent a11y warning issues
|
|
614
680
|
previousElement.blur();
|
|
615
|
-
const shadowRoot = previousElement
|
|
681
|
+
const shadowRoot = previousElement?.shadowRoot;
|
|
616
682
|
if (shadowRoot) {
|
|
617
683
|
// If there are no inner focusable elements, just focus the host element.
|
|
618
684
|
previousElement = shadowRoot.querySelector(focusableQueryString) || previousElement;
|
|
@@ -647,7 +713,6 @@ const restoreElementFocus = async (overlayEl) => {
|
|
|
647
713
|
}
|
|
648
714
|
};
|
|
649
715
|
const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnimation, opts) => {
|
|
650
|
-
var _a, _b;
|
|
651
716
|
if (!overlay.presented) {
|
|
652
717
|
return false;
|
|
653
718
|
}
|
|
@@ -662,12 +727,9 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
|
|
|
662
727
|
* from the root element when the last focus-trapping overlay
|
|
663
728
|
* is dismissed.
|
|
664
729
|
*/
|
|
665
|
-
const overlaysLockingRoot = presentedOverlays.filter((o) =>
|
|
666
|
-
const el = o;
|
|
667
|
-
return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && isBackdropAlwaysBlocking(el);
|
|
668
|
-
});
|
|
730
|
+
const overlaysLockingRoot = presentedOverlays.filter((o) => locksAppRoot(o));
|
|
669
731
|
const overlayEl = overlay.el;
|
|
670
|
-
const locksRoot =
|
|
732
|
+
const locksRoot = locksAppRoot(overlayEl);
|
|
671
733
|
/**
|
|
672
734
|
* If this is the last visible overlay that is trapping focus
|
|
673
735
|
* then we want to re-add the root to the accessibility tree.
|
|
@@ -682,7 +744,7 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
|
|
|
682
744
|
// Overlay contents should not be clickable during dismiss
|
|
683
745
|
overlay.el.style.setProperty('pointer-events', 'none');
|
|
684
746
|
overlay.willDismiss.emit({ data, role });
|
|
685
|
-
|
|
747
|
+
overlay.willDismissShorthand?.emit({ data, role });
|
|
686
748
|
const mode = ionicGlobal.getIonMode(overlay);
|
|
687
749
|
const animationBuilder = overlay.leaveAnimation
|
|
688
750
|
? overlay.leaveAnimation
|
|
@@ -692,7 +754,7 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
|
|
|
692
754
|
await overlayAnimation(overlay, animationBuilder, overlay.el, opts);
|
|
693
755
|
}
|
|
694
756
|
overlay.didDismiss.emit({ data, role });
|
|
695
|
-
|
|
757
|
+
overlay.didDismissShorthand?.emit({ data, role });
|
|
696
758
|
// Get a reference to all animations currently assigned to this overlay
|
|
697
759
|
// Then tear them down to return the overlay to its initial visual state
|
|
698
760
|
const animations = activeAnimations.get(overlay) || [];
|
|
@@ -733,7 +795,7 @@ const overlayAnimation = async (overlay, animationBuilder, baseEl, opts) => {
|
|
|
733
795
|
if (overlay.keyboardClose) {
|
|
734
796
|
animation.beforeAddWrite(() => {
|
|
735
797
|
const activeElement = baseEl.ownerDocument.activeElement;
|
|
736
|
-
if (activeElement
|
|
798
|
+
if (activeElement?.matches('input,ion-input, ion-textarea')) {
|
|
737
799
|
activeElement.blur();
|
|
738
800
|
}
|
|
739
801
|
});
|
|
@@ -920,6 +982,7 @@ exports.GESTURE = GESTURE;
|
|
|
920
982
|
exports.OVERLAY_GESTURE_PRIORITY = OVERLAY_GESTURE_PRIORITY;
|
|
921
983
|
exports.actionSheetController = actionSheetController;
|
|
922
984
|
exports.alertController = alertController;
|
|
985
|
+
exports.cleanupRootFocusTrapAccessibility = cleanupRootFocusTrapAccessibility;
|
|
923
986
|
exports.createDelegateController = createDelegateController;
|
|
924
987
|
exports.createTriggerController = createTriggerController;
|
|
925
988
|
exports.dismiss = dismiss;
|
|
@@ -930,10 +993,10 @@ exports.getPresentedOverlay = getPresentedOverlay;
|
|
|
930
993
|
exports.isCancel = isCancel;
|
|
931
994
|
exports.loadingController = loadingController;
|
|
932
995
|
exports.modalController = modalController;
|
|
933
|
-
exports.pickerController = pickerController;
|
|
934
996
|
exports.popoverController = popoverController;
|
|
935
997
|
exports.prepareOverlay = prepareOverlay;
|
|
936
998
|
exports.present = present;
|
|
999
|
+
exports.restoreRootFocusTrapAccessibility = restoreRootFocusTrapAccessibility;
|
|
937
1000
|
exports.safeCall = safeCall;
|
|
938
1001
|
exports.setOverlayId = setOverlayId;
|
|
939
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-BbqUBe2T.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;
|