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
|
@@ -7,7 +7,28 @@ export var LogLevel;
|
|
|
7
7
|
LogLevel["OFF"] = "OFF";
|
|
8
8
|
LogLevel["ERROR"] = "ERROR";
|
|
9
9
|
LogLevel["WARN"] = "WARN";
|
|
10
|
+
LogLevel["DEBUG"] = "DEBUG";
|
|
10
11
|
})(LogLevel || (LogLevel = {}));
|
|
12
|
+
/**
|
|
13
|
+
* Ranks each level so an enabled check is a numeric comparison. A configured
|
|
14
|
+
* level logs anything whose rank is less than or equal to its own: `OFF` (0)
|
|
15
|
+
* logs nothing, `ERROR` (1) logs errors, `WARN` (2) logs errors and warnings,
|
|
16
|
+
* `DEBUG` (3) logs all of the above plus internal diagnostics.
|
|
17
|
+
*/
|
|
18
|
+
const LOG_LEVEL_RANK = {
|
|
19
|
+
[LogLevel.OFF]: 0,
|
|
20
|
+
[LogLevel.ERROR]: 1,
|
|
21
|
+
[LogLevel.WARN]: 2,
|
|
22
|
+
[LogLevel.DEBUG]: 3,
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Whether the configured level is verbose enough to log `minimum`. Levels set
|
|
26
|
+
* through a query parameter arrive as raw strings, hence the uppercasing.
|
|
27
|
+
*/
|
|
28
|
+
const isLogLevelEnabled = (minimum) => {
|
|
29
|
+
const configured = String(config.get('logLevel', LogLevel.WARN)).toUpperCase();
|
|
30
|
+
return LOG_LEVEL_RANK[configured] >= LOG_LEVEL_RANK[minimum];
|
|
31
|
+
};
|
|
11
32
|
/**
|
|
12
33
|
* Logs a warning to the console with an Ionic prefix
|
|
13
34
|
* to indicate the library that is warning the developer.
|
|
@@ -15,8 +36,7 @@ export var LogLevel;
|
|
|
15
36
|
* @param message - The string message to be logged to the console.
|
|
16
37
|
*/
|
|
17
38
|
export const printIonWarning = (message, ...params) => {
|
|
18
|
-
|
|
19
|
-
if ([LogLevel.WARN].includes(logLevel)) {
|
|
39
|
+
if (isLogLevelEnabled(LogLevel.WARN)) {
|
|
20
40
|
return console.warn(`[Ionic Warning]: ${message}`, ...params);
|
|
21
41
|
}
|
|
22
42
|
};
|
|
@@ -28,8 +48,7 @@ export const printIonWarning = (message, ...params) => {
|
|
|
28
48
|
* @param params - Additional arguments to supply to the console.error.
|
|
29
49
|
*/
|
|
30
50
|
export const printIonError = (message, ...params) => {
|
|
31
|
-
|
|
32
|
-
if ([LogLevel.ERROR, LogLevel.WARN].includes(logLevel)) {
|
|
51
|
+
if (isLogLevelEnabled(LogLevel.ERROR)) {
|
|
33
52
|
return console.error(`[Ionic Error]: ${message}`, ...params);
|
|
34
53
|
}
|
|
35
54
|
};
|
|
@@ -49,7 +49,6 @@ const createMenuController = () => {
|
|
|
49
49
|
const isOpen = async (menu) => {
|
|
50
50
|
if (menu != null) {
|
|
51
51
|
const menuEl = await get(menu);
|
|
52
|
-
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
|
|
53
52
|
return menuEl !== undefined && menuEl.isOpen();
|
|
54
53
|
}
|
|
55
54
|
else {
|
|
@@ -185,7 +184,7 @@ const createMenuController = () => {
|
|
|
185
184
|
registerAnimation('reveal', menuRevealAnimation);
|
|
186
185
|
registerAnimation('push', menuPushAnimation);
|
|
187
186
|
registerAnimation('overlay', menuOverlayAnimation);
|
|
188
|
-
doc
|
|
187
|
+
doc?.addEventListener('ionBackButton', (ev) => {
|
|
189
188
|
const openMenu = _getOpenSync();
|
|
190
189
|
if (openMenu) {
|
|
191
190
|
ev.detail.register(MENU_BACK_BUTTON_PRIORITY, () => {
|
|
@@ -47,7 +47,7 @@ export var NotificationType;
|
|
|
47
47
|
const HapticEngine = {
|
|
48
48
|
getEngine() {
|
|
49
49
|
const capacitor = getCapacitor();
|
|
50
|
-
if (capacitor
|
|
50
|
+
if (capacitor?.isPluginAvailable('Haptics')) {
|
|
51
51
|
// Capacitor
|
|
52
52
|
return capacitor.Plugins.Haptics;
|
|
53
53
|
}
|
|
@@ -68,8 +68,7 @@ const HapticEngine = {
|
|
|
68
68
|
* the Vibrate API. This check avoids that error
|
|
69
69
|
* if the browser does not support the Vibrate API.
|
|
70
70
|
*/
|
|
71
|
-
if (
|
|
72
|
-
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
|
|
71
|
+
if (capacitor?.getPlatform() === 'web') {
|
|
73
72
|
return typeof navigator !== 'undefined' && navigator.vibrate !== undefined;
|
|
74
73
|
}
|
|
75
74
|
return true;
|
|
@@ -36,14 +36,14 @@ export var KeyboardResize;
|
|
|
36
36
|
export const Keyboard = {
|
|
37
37
|
getEngine() {
|
|
38
38
|
const capacitor = getCapacitor();
|
|
39
|
-
if (capacitor
|
|
39
|
+
if (capacitor?.isPluginAvailable('Keyboard')) {
|
|
40
40
|
return capacitor.Plugins.Keyboard;
|
|
41
41
|
}
|
|
42
42
|
return undefined;
|
|
43
43
|
},
|
|
44
44
|
getResizeMode() {
|
|
45
45
|
const engine = this.getEngine();
|
|
46
|
-
if (!
|
|
46
|
+
if (!engine?.getResizeMode) {
|
|
47
47
|
return Promise.resolve(undefined);
|
|
48
48
|
}
|
|
49
49
|
return engine.getResizeMode().catch((e) => {
|
|
@@ -11,7 +11,7 @@ export var Style;
|
|
|
11
11
|
export const StatusBar = {
|
|
12
12
|
getEngine() {
|
|
13
13
|
const capacitor = getCapacitor();
|
|
14
|
-
if (capacitor
|
|
14
|
+
if (capacitor?.isPluginAvailable('StatusBar')) {
|
|
15
15
|
return capacitor.Plugins.StatusBar;
|
|
16
16
|
}
|
|
17
17
|
return undefined;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
// TODO(FW-6886, FW-6892, FW-6891): Remove this file in favor of the Modular Ionic component config. Each overlay will be able to select its own defaults for label placement and justify based on the interface and mode, so this utility will no longer be necessary.
|
|
5
|
+
/**
|
|
6
|
+
* Returns the default `labelPlacement` for a radio or checkbox option
|
|
7
|
+
* rendered inside an overlay. Defaults follow each mode's established
|
|
8
|
+
* option-row layout:
|
|
9
|
+
* - `ios`: `"start"` for radio in `alert` and `popover`. The `modal`
|
|
10
|
+
* interface flips iOS radio back to `"end"`. Checkbox is always
|
|
11
|
+
* `"end"` on iOS.
|
|
12
|
+
* - everything else (e.g. `md`): `"end"`.
|
|
13
|
+
*
|
|
14
|
+
* `interfaceType` is optional; only `"modal"` changes the result, so
|
|
15
|
+
* callers that aren't a modal can omit it.
|
|
16
|
+
*
|
|
17
|
+
* Used by `select-popover` and `select-modal` as the fallback when an
|
|
18
|
+
* option doesn't explicitly set `labelPlacement`.
|
|
19
|
+
*/
|
|
20
|
+
export const getOverlayLabelPlacement = (mode, control, interfaceType) => {
|
|
21
|
+
if (mode === 'ios' && control === 'radio' && interfaceType !== 'modal') {
|
|
22
|
+
return 'start';
|
|
23
|
+
}
|
|
24
|
+
return 'end';
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Returns the default `justify` for a radio or checkbox option rendered
|
|
28
|
+
* inside an overlay. Defaults follow each mode's option-row layout:
|
|
29
|
+
* - `ios`: `"space-between"` for radio in `alert` and `popover`. The
|
|
30
|
+
* `modal` interface falls back to `"start"`. Checkbox is always `"start"`
|
|
31
|
+
* on iOS.
|
|
32
|
+
* - everything else (e.g. `md`): `"start"`.
|
|
33
|
+
*
|
|
34
|
+
* `interfaceType` is optional; only `"modal"` changes the result, so
|
|
35
|
+
* callers that aren't a modal can omit it.
|
|
36
|
+
*
|
|
37
|
+
* Used by `select-popover` and `select-modal` as the fallback when an
|
|
38
|
+
* option doesn't explicitly set `justify`.
|
|
39
|
+
*/
|
|
40
|
+
export const getOverlayLabelJustify = (mode, control, interfaceType) => {
|
|
41
|
+
if (mode === 'ios' && control === 'radio' && interfaceType !== 'modal') {
|
|
42
|
+
return 'space-between';
|
|
43
|
+
}
|
|
44
|
+
return 'start';
|
|
45
|
+
};
|
|
@@ -19,8 +19,16 @@ export const activeAnimations = new WeakMap();
|
|
|
19
19
|
* Returns false if showBackdrop=false or backdropBreakpoint > 0.
|
|
20
20
|
*/
|
|
21
21
|
const isBackdropAlwaysBlocking = (el) => {
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
return el.showBackdrop !== false && !((el.backdropBreakpoint ?? 0) > 0);
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Whether the overlay takes the app root out of the accessibility tree and
|
|
26
|
+
* blocks body scroll while presented. Toasts never do, modal and popover can
|
|
27
|
+
* opt out with `focusTrap={false}`, and a backdrop that does not block
|
|
28
|
+
* (`showBackdrop={false}`, or a `backdropBreakpoint` above 0) is excluded.
|
|
29
|
+
*/
|
|
30
|
+
const locksAppRoot = (el) => {
|
|
31
|
+
return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && isBackdropAlwaysBlocking(el);
|
|
24
32
|
};
|
|
25
33
|
const createController = (tagName) => {
|
|
26
34
|
return {
|
|
@@ -39,10 +47,6 @@ export const alertController = /*@__PURE__*/ createController('ion-alert');
|
|
|
39
47
|
export const actionSheetController = /*@__PURE__*/ createController('ion-action-sheet');
|
|
40
48
|
export const loadingController = /*@__PURE__*/ createController('ion-loading');
|
|
41
49
|
export const modalController = /*@__PURE__*/ createController('ion-modal');
|
|
42
|
-
/**
|
|
43
|
-
* @deprecated Use the inline ion-picker component instead.
|
|
44
|
-
*/
|
|
45
|
-
export const pickerController = /*@__PURE__*/ createController('ion-picker-legacy');
|
|
46
50
|
export const popoverController = /*@__PURE__*/ createController('ion-popover');
|
|
47
51
|
export const toastController = /*@__PURE__*/ createController('ion-toast');
|
|
48
52
|
/**
|
|
@@ -82,7 +86,6 @@ export const setOverlayId = (el) => {
|
|
|
82
86
|
return el.id;
|
|
83
87
|
};
|
|
84
88
|
export const createOverlay = (tagName, opts) => {
|
|
85
|
-
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
|
|
86
89
|
if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined') {
|
|
87
90
|
return window.customElements.whenDefined(tagName).then(() => {
|
|
88
91
|
const element = document.createElement(tagName);
|
|
@@ -91,7 +94,7 @@ export const createOverlay = (tagName, opts) => {
|
|
|
91
94
|
* Convert the passed in overlay options into props
|
|
92
95
|
* that get passed down into the new overlay.
|
|
93
96
|
*/
|
|
94
|
-
Object.assign(element,
|
|
97
|
+
Object.assign(element, { ...opts, hasController: true });
|
|
95
98
|
// append the overlay element to the document body
|
|
96
99
|
getAppRoot(document).appendChild(element);
|
|
97
100
|
return new Promise((resolve) => componentOnReady(element, resolve));
|
|
@@ -115,7 +118,7 @@ const isOverlayHidden = (overlay) => overlay.classList.contains('overlay-hidden'
|
|
|
115
118
|
*/
|
|
116
119
|
const focusElementInOverlay = (hostToFocus, overlay) => {
|
|
117
120
|
let elementToFocus = hostToFocus;
|
|
118
|
-
const shadowRoot = hostToFocus
|
|
121
|
+
const shadowRoot = hostToFocus?.shadowRoot;
|
|
119
122
|
if (shadowRoot) {
|
|
120
123
|
// If there are no inner focusable elements, just focus the host element.
|
|
121
124
|
elementToFocus = shadowRoot.querySelector(focusableQueryString) || hostToFocus;
|
|
@@ -136,7 +139,7 @@ const focusElementInOverlay = (hostToFocus, overlay) => {
|
|
|
136
139
|
* Should NOT include: Toast
|
|
137
140
|
*/
|
|
138
141
|
const trapKeyboardFocus = (ev, doc) => {
|
|
139
|
-
const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-
|
|
142
|
+
const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-popover');
|
|
140
143
|
const target = ev.target;
|
|
141
144
|
/**
|
|
142
145
|
* If no active overlay, ignore this event.
|
|
@@ -322,7 +325,7 @@ const connectListeners = (doc) => {
|
|
|
322
325
|
// handle back-button click
|
|
323
326
|
doc.addEventListener('ionBackButton', (ev) => {
|
|
324
327
|
const lastOverlay = getPresentedOverlay(doc);
|
|
325
|
-
if (lastOverlay
|
|
328
|
+
if (lastOverlay?.backdropDismiss) {
|
|
326
329
|
ev.detail.register(OVERLAY_BACK_BUTTON_PRIORITY, () => {
|
|
327
330
|
/**
|
|
328
331
|
* Do not return this promise otherwise
|
|
@@ -350,7 +353,7 @@ const connectListeners = (doc) => {
|
|
|
350
353
|
doc.addEventListener('keydown', (ev) => {
|
|
351
354
|
if (ev.key === 'Escape') {
|
|
352
355
|
const lastOverlay = getPresentedOverlay(doc);
|
|
353
|
-
if (lastOverlay
|
|
356
|
+
if (lastOverlay?.backdropDismiss) {
|
|
354
357
|
lastOverlay.dismiss(undefined, BACKDROP);
|
|
355
358
|
}
|
|
356
359
|
}
|
|
@@ -370,7 +373,7 @@ export const dismissOverlay = (doc, data, role, overlayTag, id) => {
|
|
|
370
373
|
*/
|
|
371
374
|
export const getOverlays = (doc, selector) => {
|
|
372
375
|
if (selector === undefined) {
|
|
373
|
-
selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-
|
|
376
|
+
selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-popover,ion-toast';
|
|
374
377
|
}
|
|
375
378
|
return Array.from(doc.querySelectorAll(selector)).filter((c) => c.overlayIndex > 0);
|
|
376
379
|
};
|
|
@@ -397,6 +400,13 @@ export const getPresentedOverlay = (doc, overlayTag, id) => {
|
|
|
397
400
|
// Otherwise, return the last overlay with the given id
|
|
398
401
|
return (id === undefined ? overlays : overlays.filter((o) => o.id === id)).slice(-1)[0];
|
|
399
402
|
};
|
|
403
|
+
/**
|
|
404
|
+
* The element an app nests its views under. Overlays hide this rather than the
|
|
405
|
+
* whole root, so the overlay itself (a sibling) stays reachable.
|
|
406
|
+
*/
|
|
407
|
+
const getViewContainer = () => {
|
|
408
|
+
return getAppRoot(document).querySelector('ion-router-outlet, #ion-view-container-root');
|
|
409
|
+
};
|
|
400
410
|
/**
|
|
401
411
|
* When an overlay is presented, the main
|
|
402
412
|
* focus is the overlay not the page content.
|
|
@@ -420,8 +430,7 @@ export const getPresentedOverlay = (doc, overlayTag, id) => {
|
|
|
420
430
|
* for main content.
|
|
421
431
|
*/
|
|
422
432
|
export const setRootAriaHidden = (hidden = false) => {
|
|
423
|
-
const
|
|
424
|
-
const viewContainer = root.querySelector('ion-router-outlet, #ion-view-container-root');
|
|
433
|
+
const viewContainer = getViewContainer();
|
|
425
434
|
if (!viewContainer) {
|
|
426
435
|
return;
|
|
427
436
|
}
|
|
@@ -432,8 +441,57 @@ export const setRootAriaHidden = (hidden = false) => {
|
|
|
432
441
|
viewContainer.removeAttribute('aria-hidden');
|
|
433
442
|
}
|
|
434
443
|
};
|
|
444
|
+
/**
|
|
445
|
+
* Cleans up root `aria-hidden` and `backdrop-no-scroll` when
|
|
446
|
+
* an overlay is removed from the DOM without going through
|
|
447
|
+
* the `dismiss()` flow (e.g., when a framework unmounts the
|
|
448
|
+
* overlay during a route change).
|
|
449
|
+
*
|
|
450
|
+
* Should be called from an overlay's `disconnectedCallback`
|
|
451
|
+
* when the overlay was still presented at the time of removal.
|
|
452
|
+
*/
|
|
453
|
+
export const cleanupRootFocusTrapAccessibility = () => {
|
|
454
|
+
if (typeof document === 'undefined') {
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
457
|
+
const remainingOverlays = getPresentedOverlays(document);
|
|
458
|
+
const hasRemainingLocking = remainingOverlays.some((o) => locksAppRoot(o));
|
|
459
|
+
if (!hasRemainingLocking) {
|
|
460
|
+
setRootAriaHidden(false);
|
|
461
|
+
document.body.classList.remove(BACKDROP_NO_SCROLL);
|
|
462
|
+
}
|
|
463
|
+
};
|
|
464
|
+
/**
|
|
465
|
+
* Applies the root lock itself: `aria-hidden` on the view container, and
|
|
466
|
+
* `backdrop-no-scroll` on the body. Shared by `present()` and the restore
|
|
467
|
+
* below, which have to stay in lockstep.
|
|
468
|
+
*/
|
|
469
|
+
const applyRootLock = (el) => {
|
|
470
|
+
// Hiding the container the overlay now sits in would hide the overlay too.
|
|
471
|
+
if (!getViewContainer()?.contains(el)) {
|
|
472
|
+
setRootAriaHidden(true);
|
|
473
|
+
}
|
|
474
|
+
document.body.classList.add(BACKDROP_NO_SCROLL);
|
|
475
|
+
};
|
|
476
|
+
/**
|
|
477
|
+
* Re-applies the root lock that `cleanupRootFocusTrapAccessibility()` released.
|
|
478
|
+
* Call from `connectedCallback` when the overlay is still presented.
|
|
479
|
+
*
|
|
480
|
+
* A synchronous move keeps the overlay connected, so the lock survives. A
|
|
481
|
+
* detach with a re-insert in a later task releases it, which is the shape a
|
|
482
|
+
* framework produces when it takes a subtree out and puts it back.
|
|
483
|
+
*/
|
|
484
|
+
export const restoreRootFocusTrapAccessibility = (overlayEl) => {
|
|
485
|
+
if (typeof document === 'undefined') {
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
488
|
+
const el = overlayEl;
|
|
489
|
+
if (!locksAppRoot(el)) {
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
492
|
+
applyRootLock(el);
|
|
493
|
+
};
|
|
435
494
|
export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) => {
|
|
436
|
-
var _a, _b;
|
|
437
495
|
if (overlay.presented) {
|
|
438
496
|
return;
|
|
439
497
|
}
|
|
@@ -449,15 +507,7 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
449
507
|
restoreElementFocus(overlay.el);
|
|
450
508
|
}
|
|
451
509
|
/**
|
|
452
|
-
*
|
|
453
|
-
* focus traps.
|
|
454
|
-
*
|
|
455
|
-
* All other overlays should have focus traps to prevent
|
|
456
|
-
* the keyboard focus from leaving the overlay unless
|
|
457
|
-
* developers explicitly opt out (for example, sheet
|
|
458
|
-
* modals that should permit background interaction).
|
|
459
|
-
*
|
|
460
|
-
* Note: Some apps move inline overlays to a specific container
|
|
510
|
+
* Some apps move inline overlays to a specific container
|
|
461
511
|
* during the willPresent lifecycle (e.g., React portals via
|
|
462
512
|
* onWillPresent). Defer applying aria-hidden/inert to the app
|
|
463
513
|
* root until after willPresent so we can detect where the
|
|
@@ -466,20 +516,13 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
466
516
|
* to avoid disabling the overlay.
|
|
467
517
|
*/
|
|
468
518
|
const overlayEl = overlay.el;
|
|
469
|
-
const
|
|
470
|
-
const shouldLockRoot = shouldTrapFocus && isBackdropAlwaysBlocking(overlayEl);
|
|
519
|
+
const shouldLockRoot = locksAppRoot(overlayEl);
|
|
471
520
|
overlay.presented = true;
|
|
472
521
|
overlay.willPresent.emit();
|
|
473
522
|
if (shouldLockRoot) {
|
|
474
|
-
|
|
475
|
-
const viewContainer = root.querySelector('ion-router-outlet, #ion-view-container-root');
|
|
476
|
-
const overlayInsideViewContainer = viewContainer ? viewContainer.contains(overlayEl) : false;
|
|
477
|
-
if (!overlayInsideViewContainer) {
|
|
478
|
-
setRootAriaHidden(true);
|
|
479
|
-
}
|
|
480
|
-
document.body.classList.add(BACKDROP_NO_SCROLL);
|
|
523
|
+
applyRootLock(overlayEl);
|
|
481
524
|
}
|
|
482
|
-
|
|
525
|
+
overlay.willPresentShorthand?.emit();
|
|
483
526
|
const mode = getIonMode(overlay);
|
|
484
527
|
// get the user's animation fn if one was provided
|
|
485
528
|
const animationBuilder = overlay.enterAnimation
|
|
@@ -488,7 +531,7 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
488
531
|
const completed = await overlayAnimation(overlay, animationBuilder, overlay.el, opts);
|
|
489
532
|
if (completed) {
|
|
490
533
|
overlay.didPresent.emit();
|
|
491
|
-
|
|
534
|
+
overlay.didPresentShorthand?.emit();
|
|
492
535
|
}
|
|
493
536
|
/**
|
|
494
537
|
* If the focused element is already
|
|
@@ -497,7 +540,30 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
497
540
|
* to the overlay container.
|
|
498
541
|
*/
|
|
499
542
|
if (overlay.keyboardClose && (document.activeElement === null || !overlay.el.contains(document.activeElement))) {
|
|
500
|
-
|
|
543
|
+
/**
|
|
544
|
+
* Some overlays (e.g. modal) put the dialog role and accessible label
|
|
545
|
+
* on the `.ion-overlay-wrapper` instead of the host. Screen readers
|
|
546
|
+
* need focus on the element with `role="dialog"` to properly announce
|
|
547
|
+
* and navigate the dialog.
|
|
548
|
+
*
|
|
549
|
+
* We only target wrappers with `tabindex`, since `role="dialog"` alone
|
|
550
|
+
* does not make an element focusable. If no focusable dialog wrapper
|
|
551
|
+
* exists (e.g. picker-legacy), we fall back to the host.
|
|
552
|
+
*/
|
|
553
|
+
const overlayWrapper = getElementRoot(overlay.el).querySelector('[role="dialog"][tabindex]');
|
|
554
|
+
const focusTarget = overlayWrapper ?? overlay.el;
|
|
555
|
+
/**
|
|
556
|
+
* `preventScroll` keeps this a pure focus move so the viewport does not
|
|
557
|
+
* jump when the wrapper is partially off-screen (e.g. a sheet modal).
|
|
558
|
+
* Guard the options call so an older engine that mishandles it can never
|
|
559
|
+
* reject present(); we fall back to a plain focus() in that case.
|
|
560
|
+
*/
|
|
561
|
+
try {
|
|
562
|
+
focusTarget.focus({ preventScroll: true });
|
|
563
|
+
}
|
|
564
|
+
catch {
|
|
565
|
+
focusTarget.focus();
|
|
566
|
+
}
|
|
501
567
|
}
|
|
502
568
|
/**
|
|
503
569
|
* If this overlay was previously dismissed without being
|
|
@@ -531,7 +597,7 @@ const restoreElementFocus = async (overlayEl) => {
|
|
|
531
597
|
}
|
|
532
598
|
// Ensure active element is blurred to prevent a11y warning issues
|
|
533
599
|
previousElement.blur();
|
|
534
|
-
const shadowRoot = previousElement
|
|
600
|
+
const shadowRoot = previousElement?.shadowRoot;
|
|
535
601
|
if (shadowRoot) {
|
|
536
602
|
// If there are no inner focusable elements, just focus the host element.
|
|
537
603
|
previousElement = shadowRoot.querySelector(focusableQueryString) || previousElement;
|
|
@@ -566,7 +632,6 @@ const restoreElementFocus = async (overlayEl) => {
|
|
|
566
632
|
}
|
|
567
633
|
};
|
|
568
634
|
export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnimation, opts) => {
|
|
569
|
-
var _a, _b;
|
|
570
635
|
if (!overlay.presented) {
|
|
571
636
|
return false;
|
|
572
637
|
}
|
|
@@ -581,12 +646,9 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
|
|
|
581
646
|
* from the root element when the last focus-trapping overlay
|
|
582
647
|
* is dismissed.
|
|
583
648
|
*/
|
|
584
|
-
const overlaysLockingRoot = presentedOverlays.filter((o) =>
|
|
585
|
-
const el = o;
|
|
586
|
-
return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && isBackdropAlwaysBlocking(el);
|
|
587
|
-
});
|
|
649
|
+
const overlaysLockingRoot = presentedOverlays.filter((o) => locksAppRoot(o));
|
|
588
650
|
const overlayEl = overlay.el;
|
|
589
|
-
const locksRoot =
|
|
651
|
+
const locksRoot = locksAppRoot(overlayEl);
|
|
590
652
|
/**
|
|
591
653
|
* If this is the last visible overlay that is trapping focus
|
|
592
654
|
* then we want to re-add the root to the accessibility tree.
|
|
@@ -601,7 +663,7 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
|
|
|
601
663
|
// Overlay contents should not be clickable during dismiss
|
|
602
664
|
overlay.el.style.setProperty('pointer-events', 'none');
|
|
603
665
|
overlay.willDismiss.emit({ data, role });
|
|
604
|
-
|
|
666
|
+
overlay.willDismissShorthand?.emit({ data, role });
|
|
605
667
|
const mode = getIonMode(overlay);
|
|
606
668
|
const animationBuilder = overlay.leaveAnimation
|
|
607
669
|
? overlay.leaveAnimation
|
|
@@ -611,7 +673,7 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
|
|
|
611
673
|
await overlayAnimation(overlay, animationBuilder, overlay.el, opts);
|
|
612
674
|
}
|
|
613
675
|
overlay.didDismiss.emit({ data, role });
|
|
614
|
-
|
|
676
|
+
overlay.didDismissShorthand?.emit({ data, role });
|
|
615
677
|
// Get a reference to all animations currently assigned to this overlay
|
|
616
678
|
// Then tear them down to return the overlay to its initial visual state
|
|
617
679
|
const animations = activeAnimations.get(overlay) || [];
|
|
@@ -652,7 +714,7 @@ const overlayAnimation = async (overlay, animationBuilder, baseEl, opts) => {
|
|
|
652
714
|
if (overlay.keyboardClose) {
|
|
653
715
|
animation.beforeAddWrite(() => {
|
|
654
716
|
const activeElement = baseEl.ownerDocument.activeElement;
|
|
655
|
-
if (activeElement
|
|
717
|
+
if (activeElement?.matches('input,ion-input, ion-textarea')) {
|
|
656
718
|
activeElement.blur();
|
|
657
719
|
}
|
|
658
720
|
});
|
|
@@ -25,7 +25,7 @@ export const setupPlatforms = (win = window) => {
|
|
|
25
25
|
const detectPlatforms = (win) => {
|
|
26
26
|
const customPlatformMethods = config.get('platform');
|
|
27
27
|
return Object.keys(PLATFORMS_MAP).filter((p) => {
|
|
28
|
-
const customMethod = customPlatformMethods
|
|
28
|
+
const customMethod = customPlatformMethods?.[p];
|
|
29
29
|
return typeof customMethod === 'function' ? customMethod(win) : PLATFORMS_MAP[p](win);
|
|
30
30
|
});
|
|
31
31
|
};
|
|
@@ -67,13 +67,12 @@ const isHybrid = (win) => isCordova(win) || isCapacitorNative(win);
|
|
|
67
67
|
const isCordova = (win) => !!(win['cordova'] || win['phonegap'] || win['PhoneGap']);
|
|
68
68
|
const isCapacitorNative = (win) => {
|
|
69
69
|
const capacitor = win['Capacitor'];
|
|
70
|
-
|
|
71
|
-
return !!((capacitor === null || capacitor === void 0 ? void 0 : capacitor.isNative) || ((capacitor === null || capacitor === void 0 ? void 0 : capacitor.isNativePlatform) && !!capacitor.isNativePlatform()));
|
|
70
|
+
return !!capacitor?.isNativePlatform?.();
|
|
72
71
|
};
|
|
73
72
|
const isElectron = (win) => testUserAgent(win, /electron/i);
|
|
74
|
-
const isPWA = (win) =>
|
|
73
|
+
const isPWA = (win) => !!(win.matchMedia?.('(display-mode: standalone)').matches || win.navigator.standalone);
|
|
75
74
|
export const testUserAgent = (win, expr) => expr.test(win.navigator.userAgent);
|
|
76
|
-
const matchMedia = (win, query) =>
|
|
75
|
+
const matchMedia = (win, query) => win.matchMedia?.(query).matches;
|
|
77
76
|
const PLATFORMS_MAP = {
|
|
78
77
|
ipad: isIpad,
|
|
79
78
|
iphone: isIphone,
|
|
@@ -2,15 +2,25 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
|
-
* Returns `true` if the
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Returns `true` if the direction resolves to `rtl` for the given element.
|
|
6
|
+
*
|
|
7
|
+
* The direction comes from the nearest ancestor that declares one, starting
|
|
8
|
+
* with `hostEl` itself, and falls back to the root document value. Setting
|
|
9
|
+
* `dir="auto"` or setting `dir` to an empty string are skipped rather than
|
|
10
|
+
* treated as `ltr`. When nothing declares a direction, including the document,
|
|
11
|
+
* the direction is `ltr`.
|
|
12
|
+
*
|
|
13
|
+
* @param hostEl the element to resolve the direction for.
|
|
8
14
|
*/
|
|
9
15
|
export const isRTL = (hostEl) => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
16
|
+
for (let el = hostEl; el; el = el.parentElement) {
|
|
17
|
+
const dir = el.getAttribute('dir')?.toLowerCase();
|
|
18
|
+
if (dir === 'rtl') {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
if (dir === 'ltr') {
|
|
22
|
+
return false;
|
|
13
23
|
}
|
|
14
24
|
}
|
|
15
|
-
return
|
|
25
|
+
return document?.dir?.toLowerCase() === 'rtl';
|
|
16
26
|
};
|