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
|
@@ -50,12 +50,12 @@ export class ItemOption {
|
|
|
50
50
|
href: this.href,
|
|
51
51
|
target: this.target,
|
|
52
52
|
};
|
|
53
|
-
return (h(Host, { key: '
|
|
53
|
+
return (h(Host, { key: 'a10d36e60d61865141c57c03a114e4845b400a55', onClick: this.onClick, class: createColorClasses(this.color, {
|
|
54
54
|
[mode]: true,
|
|
55
55
|
'item-option-disabled': disabled,
|
|
56
56
|
'item-option-expandable': expandable,
|
|
57
57
|
'ion-activatable': true,
|
|
58
|
-
}) }, h(TagType,
|
|
58
|
+
}) }, h(TagType, { key: '5cc49ef73318213f6202d1d0f460f629ea65f17f', ...attrs, class: "button-native", part: "native", disabled: disabled }, h("span", { key: '0643b16660b4ca00b0f3b4dbe2739e9ce076abea', class: "button-inner", part: "inner" }, h("slot", { key: '8778d6d09aa9e0db278ce00c5456a1acfe82c15f', name: "top" }), h("div", { key: '4fc849494c8cb2380015161e096b5c61cf517d90', class: "horizontal-wrapper", part: "container" }, h("slot", { key: '9d0c0a5a63d8ec636df9c85d48bbdb39fb63af5e', name: "start" }), h("slot", { key: 'a40561497c7e7d73173edd24ed335230e6eebb2b', name: "icon-only" }), h("slot", { key: 'b94f2a4aa5bf4a1104497ced1920d6ee43d33659' }), h("slot", { key: '91713dbb3e6a617c00f950857f2ed5e5ffceaa9a', name: "end" })), h("slot", { key: 'f5af33c3bfb50fc629a06e1120bba55da07b2afb', name: "bottom" })), mode === 'md' && h("ion-ripple-effect", { key: 'fc56e1644ef9c5b2e1e66683465a7fd09c05215c' }))));
|
|
59
59
|
}
|
|
60
60
|
static get is() { return "ion-item-option"; }
|
|
61
61
|
static get encapsulation() { return "shadow"; }
|
|
@@ -21,7 +21,7 @@ export class ItemOptions {
|
|
|
21
21
|
render() {
|
|
22
22
|
const mode = getIonMode(this);
|
|
23
23
|
const isEnd = isEndSide(this.side);
|
|
24
|
-
return (h(Host, { key: '
|
|
24
|
+
return (h(Host, { key: '6e60ff004d48bf7701711e518ec0b21264496ae8', class: {
|
|
25
25
|
[mode]: true,
|
|
26
26
|
// Used internally for styling
|
|
27
27
|
[`item-options-${mode}`]: true,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { Host, h } from "@stencil/core";
|
|
5
5
|
import { findClosestIonContent, disableContentScrollY, resetContentScrollY } from "../../utils/content/index";
|
|
6
|
-
import { isEndSide } from "../../utils/helpers";
|
|
6
|
+
import { componentOnReady, isEndSide } from "../../utils/helpers";
|
|
7
7
|
import { printIonWarning } from "../../utils/logging/index";
|
|
8
8
|
import { watchForOptions } from "../../utils/watch-options";
|
|
9
9
|
import { getIonMode } from "../../global/ionic-global";
|
|
@@ -96,7 +96,6 @@ export class ItemSliding {
|
|
|
96
96
|
* @param side The side of the options to open. If a side is not provided, it will open the first set of options it finds within the item.
|
|
97
97
|
*/
|
|
98
98
|
async open(side) {
|
|
99
|
-
var _a;
|
|
100
99
|
/**
|
|
101
100
|
* It is possible for the item to be added to the DOM
|
|
102
101
|
* after the item-sliding component was created. As a result,
|
|
@@ -105,7 +104,7 @@ export class ItemSliding {
|
|
|
105
104
|
* However, if the item is already defined then
|
|
106
105
|
* we do not query for it again.
|
|
107
106
|
*/
|
|
108
|
-
const item = (this.item =
|
|
107
|
+
const item = (this.item = this.item ?? this.el.querySelector('ion-item'));
|
|
109
108
|
if (item === null) {
|
|
110
109
|
return;
|
|
111
110
|
}
|
|
@@ -179,21 +178,18 @@ export class ItemSliding {
|
|
|
179
178
|
}
|
|
180
179
|
}
|
|
181
180
|
async updateOptions() {
|
|
182
|
-
|
|
183
|
-
|
|
181
|
+
const options = Array.from(this.el.querySelectorAll('ion-item-options'));
|
|
182
|
+
/**
|
|
183
|
+
* Frameworks that assign element props after inserting the element haven't set
|
|
184
|
+
* `side` while `connectedCallback` runs, so reading it any earlier reports every
|
|
185
|
+
* option as `end`.
|
|
186
|
+
*/
|
|
187
|
+
await Promise.all(options.map((option) => new Promise((resolve) => componentOnReady(option, resolve))));
|
|
184
188
|
let sides = 0;
|
|
185
189
|
// Reset left and right options in case they were removed
|
|
186
190
|
this.leftOptions = this.rightOptions = undefined;
|
|
187
|
-
for (
|
|
188
|
-
const
|
|
189
|
-
/**
|
|
190
|
-
* We cannot use the componentOnReady helper
|
|
191
|
-
* util here since we need to wait for all of these items
|
|
192
|
-
* to be ready before we set `this.sides` and `this.optsDirty`.
|
|
193
|
-
*/
|
|
194
|
-
// eslint-disable-next-line custom-rules/no-component-on-ready-method
|
|
195
|
-
const option = item.componentOnReady !== undefined ? await item.componentOnReady() : item;
|
|
196
|
-
const side = isEndSide((_a = option.side) !== null && _a !== void 0 ? _a : option.getAttribute('side')) ? 'end' : 'start';
|
|
191
|
+
for (const option of options) {
|
|
192
|
+
const side = isEndSide(option.side ?? option.getAttribute('side')) ? 'end' : 'start';
|
|
197
193
|
if (side === 'start') {
|
|
198
194
|
this.leftOptions = option;
|
|
199
195
|
sides |= 1 /* ItemSide.Start */;
|
|
@@ -393,7 +389,7 @@ export class ItemSliding {
|
|
|
393
389
|
}
|
|
394
390
|
render() {
|
|
395
391
|
const mode = getIonMode(this);
|
|
396
|
-
return (h(Host, { key: '
|
|
392
|
+
return (h(Host, { key: '2b00049c5ae2efaa3b81a28892543d733fa6a5d0', class: {
|
|
397
393
|
[mode]: true,
|
|
398
394
|
'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
|
|
399
395
|
'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
|
|
@@ -58,13 +58,13 @@ export class Label {
|
|
|
58
58
|
render() {
|
|
59
59
|
const position = this.position;
|
|
60
60
|
const mode = getIonMode(this);
|
|
61
|
-
return (h(Host, { key: '
|
|
61
|
+
return (h(Host, { key: '461604c1887f322dc13d7df3d5cdbb7ee1361117', class: createColorClasses(this.color, {
|
|
62
62
|
[mode]: true,
|
|
63
63
|
'in-item-color': hostContext('ion-item.ion-color', this.el),
|
|
64
64
|
[`label-${position}`]: position !== undefined,
|
|
65
65
|
[`label-no-animate`]: this.noAnimate,
|
|
66
66
|
'label-rtl': document.dir === 'rtl',
|
|
67
|
-
}) }, h("slot", { key: '
|
|
67
|
+
}) }, h("slot", { key: 'a7005d0a217641278aa8e95144e8e4b9ae87a1c5' })));
|
|
68
68
|
}
|
|
69
69
|
static get is() { return "ion-label"; }
|
|
70
70
|
static get encapsulation() { return "scoped"; }
|
|
@@ -21,7 +21,7 @@ export class List {
|
|
|
21
21
|
*/
|
|
22
22
|
async closeSlidingItems() {
|
|
23
23
|
const item = this.el.querySelector('ion-item-sliding');
|
|
24
|
-
if (item
|
|
24
|
+
if (item?.closeOpened) {
|
|
25
25
|
return item.closeOpened();
|
|
26
26
|
}
|
|
27
27
|
return false;
|
|
@@ -29,7 +29,7 @@ export class List {
|
|
|
29
29
|
render() {
|
|
30
30
|
const mode = getIonMode(this);
|
|
31
31
|
const { lines, inset } = this;
|
|
32
|
-
return (h(Host, { key: '
|
|
32
|
+
return (h(Host, { key: 'b21e063d568b07331ea9443647b3faf33265256a', role: "list", class: {
|
|
33
33
|
[mode]: true,
|
|
34
34
|
// Used internally for styling
|
|
35
35
|
[`list-${mode}`]: true,
|
|
@@ -13,10 +13,10 @@ export class ListHeader {
|
|
|
13
13
|
render() {
|
|
14
14
|
const { lines } = this;
|
|
15
15
|
const mode = getIonMode(this);
|
|
16
|
-
return (h(Host, { key: '
|
|
16
|
+
return (h(Host, { key: '92ab17533e169b1a1c990285449e0546aac98021', class: createColorClasses(this.color, {
|
|
17
17
|
[mode]: true,
|
|
18
18
|
[`list-header-lines-${lines}`]: lines !== undefined,
|
|
19
|
-
}) }, h("div", { key: '
|
|
19
|
+
}) }, h("div", { key: '26639255577380a8e70b61f753aa9ed57590694f', class: "list-header-inner", part: "inner" }, h("slot", { key: 'f69055e7a7a47ae8dcbbe289e18b6630f0792714' }))));
|
|
20
20
|
}
|
|
21
21
|
static get is() { return "ion-list-header"; }
|
|
22
22
|
static get encapsulation() { return "shadow"; }
|
|
@@ -5,7 +5,7 @@ import { Host, h } from "@stencil/core";
|
|
|
5
5
|
import { ENABLE_HTML_CONTENT_DEFAULT } from "../../utils/config";
|
|
6
6
|
import { raf } from "../../utils/helpers";
|
|
7
7
|
import { createLockController } from "../../utils/lock-controller";
|
|
8
|
-
import { BACKDROP, dismiss, eventMethod, prepareOverlay, present,
|
|
8
|
+
import { BACKDROP, cleanupRootFocusTrapAccessibility, createDelegateController, createTriggerController, dismiss, eventMethod, prepareOverlay, present, restoreRootFocusTrapAccessibility, setOverlayId, } from "../../utils/overlays";
|
|
9
9
|
import { sanitizeDOMString } from "../../utils/sanitization/index";
|
|
10
10
|
import { getClassMap } from "../../utils/theme";
|
|
11
11
|
import { config } from "../../global/config";
|
|
@@ -82,14 +82,17 @@ export class Loading {
|
|
|
82
82
|
connectedCallback() {
|
|
83
83
|
prepareOverlay(this.el);
|
|
84
84
|
this.triggerChanged();
|
|
85
|
+
// Re-apply the root lock if moved without dismiss() being called
|
|
86
|
+
if (this.presented) {
|
|
87
|
+
restoreRootFocusTrapAccessibility(this.el);
|
|
88
|
+
}
|
|
85
89
|
}
|
|
86
90
|
componentWillLoad() {
|
|
87
|
-
var _a;
|
|
88
91
|
if (this.spinner === undefined) {
|
|
89
92
|
const mode = getIonMode(this);
|
|
90
93
|
this.spinner = config.get('loadingSpinner', config.get('spinner', mode === 'ios' ? 'lines' : 'crescent'));
|
|
91
94
|
}
|
|
92
|
-
if (!
|
|
95
|
+
if (!this.htmlAttributes?.id) {
|
|
93
96
|
setOverlayId(this.el);
|
|
94
97
|
}
|
|
95
98
|
}
|
|
@@ -114,6 +117,10 @@ export class Loading {
|
|
|
114
117
|
}
|
|
115
118
|
disconnectedCallback() {
|
|
116
119
|
this.triggerController.removeClickListener();
|
|
120
|
+
// Clean up aria-hidden if removed without dismiss() being called
|
|
121
|
+
if (this.presented) {
|
|
122
|
+
cleanupRootFocusTrapAccessibility();
|
|
123
|
+
}
|
|
117
124
|
}
|
|
118
125
|
/**
|
|
119
126
|
* Present the loading overlay after it has been created.
|
|
@@ -179,9 +186,14 @@ export class Loading {
|
|
|
179
186
|
* Otherwise, don't set aria-labelledby.
|
|
180
187
|
*/
|
|
181
188
|
const ariaLabelledBy = message !== undefined ? msgId : null;
|
|
182
|
-
return (h(Host,
|
|
189
|
+
return (h(Host, { key: 'b4430bc66aedeca19d5645667cba73c169c4bd76', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1", ...htmlAttributes, style: {
|
|
183
190
|
zIndex: `${40000 + this.overlayIndex}`,
|
|
184
|
-
}, onIonBackdropTap: this.onBackdropTap, class:
|
|
191
|
+
}, onIonBackdropTap: this.onBackdropTap, class: {
|
|
192
|
+
...getClassMap(this.cssClass),
|
|
193
|
+
[mode]: true,
|
|
194
|
+
'overlay-hidden': true,
|
|
195
|
+
'loading-translucent': this.translucent,
|
|
196
|
+
} }, h("ion-backdrop", { key: 'dec0df942ae778c99ebd4dbf08d6c2a0a992639d', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '71b2d5fc259666225047fc901648ada1efcd5d4b', tabindex: "0", "aria-hidden": "true" }), h("div", { key: '1d83dc3b57ee70c9e8c0f006c6fa576bd96ecded', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (h("div", { key: 'd1cd127e044b8831e396b53122322c1db7e89904', class: "loading-spinner" }, h("ion-spinner", { key: '38c2580cf5659da612872f01801a5fbdc2c023ba', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), h("div", { key: '90e5e32ffe0df2c691f364149f43374e676bfaa3', tabindex: "0", "aria-hidden": "true" })));
|
|
185
197
|
}
|
|
186
198
|
static get is() { return "ion-loading"; }
|
|
187
199
|
static get encapsulation() { return "scoped"; }
|
|
@@ -103,7 +103,7 @@ export class Menu {
|
|
|
103
103
|
});
|
|
104
104
|
}
|
|
105
105
|
sideChanged() {
|
|
106
|
-
this.isEndSide = isEnd(this.side);
|
|
106
|
+
this.isEndSide = isEnd(this.side, this.el);
|
|
107
107
|
/**
|
|
108
108
|
* Menu direction animation is calculated based on the document direction.
|
|
109
109
|
* If the document direction changes, we need to create a new animation.
|
|
@@ -293,9 +293,8 @@ export class Menu {
|
|
|
293
293
|
* @param role The role of the element that is closing the menu.
|
|
294
294
|
*/
|
|
295
295
|
setOpen(shouldOpen, animated = true, role) {
|
|
296
|
-
var _a;
|
|
297
296
|
// Blur the active element to prevent it from being kept focused inside an element that will be set with aria-hidden="true"
|
|
298
|
-
|
|
297
|
+
document.activeElement?.blur();
|
|
299
298
|
return menuController._setOpen(this, shouldOpen, animated, role);
|
|
300
299
|
}
|
|
301
300
|
trapKeyboardFocus(ev, doc) {
|
|
@@ -362,7 +361,7 @@ export class Menu {
|
|
|
362
361
|
* Menu direction animation is calculated based on the document direction.
|
|
363
362
|
* If the document direction changes, we need to create a new animation.
|
|
364
363
|
*/
|
|
365
|
-
const isEndSide = isEnd(this.side);
|
|
364
|
+
const isEndSide = isEnd(this.side, this.el);
|
|
366
365
|
if (width === this.width && this.animation !== undefined && isEndSide === this.isEndSide) {
|
|
367
366
|
return;
|
|
368
367
|
}
|
|
@@ -555,7 +554,6 @@ export class Menu {
|
|
|
555
554
|
}
|
|
556
555
|
}
|
|
557
556
|
afterAnimation(isOpen, role) {
|
|
558
|
-
var _a;
|
|
559
557
|
// keep opening/closing the menu disabled for a touch more yet
|
|
560
558
|
// only add listeners/css if it's enabled and isOpen
|
|
561
559
|
// and only remove listeners/css if it's not open
|
|
@@ -583,7 +581,7 @@ export class Menu {
|
|
|
583
581
|
* it isn't already focused. Use the host element instead of the
|
|
584
582
|
* first descendant to avoid the scroll position jumping around.
|
|
585
583
|
*/
|
|
586
|
-
const focusedMenu =
|
|
584
|
+
const focusedMenu = document.activeElement?.closest('ion-menu');
|
|
587
585
|
if (focusedMenu !== this.el) {
|
|
588
586
|
this.el.focus();
|
|
589
587
|
}
|
|
@@ -658,14 +656,14 @@ export class Menu {
|
|
|
658
656
|
* the ionBackButton listener in the menu controller
|
|
659
657
|
* will handle closing the menu when Escape is pressed.
|
|
660
658
|
*/
|
|
661
|
-
return (h(Host, { key: '
|
|
659
|
+
return (h(Host, { key: '1208ba437fa58680325408d3d4c8580950da1d68', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
|
|
662
660
|
[mode]: true,
|
|
663
661
|
[`menu-type-${type}`]: true,
|
|
664
662
|
'menu-enabled': !disabled,
|
|
665
663
|
[`menu-side-${side}`]: true,
|
|
666
664
|
'menu-pane-visible': isPaneVisible,
|
|
667
665
|
'split-pane-side': hostContext('ion-split-pane', el),
|
|
668
|
-
} }, h("div", { key: '
|
|
666
|
+
} }, h("div", { key: 'c0ddc957b7a7956b41901d77ae02d91e73071c55', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", { key: '6e44c56116431a024f114ab85ded1b822c942fac' })), h("ion-backdrop", { key: '5f4bbcf84444d96ec6b02bf567e1aaf95f59078d', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
|
|
669
667
|
}
|
|
670
668
|
static get is() { return "ion-menu"; }
|
|
671
669
|
static get encapsulation() { return "shadow"; }
|
|
@@ -53,7 +53,7 @@ export class MenuButton {
|
|
|
53
53
|
type: this.type,
|
|
54
54
|
};
|
|
55
55
|
const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
|
|
56
|
-
return (h(Host, { key: '
|
|
56
|
+
return (h(Host, { key: 'b8869377822b082c6c4d3f16135b50b733eabf65', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses(color, {
|
|
57
57
|
[mode]: true,
|
|
58
58
|
button: true, // ion-buttons target .button
|
|
59
59
|
'menu-button-hidden': hidden,
|
|
@@ -62,7 +62,7 @@ export class MenuButton {
|
|
|
62
62
|
'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
|
|
63
63
|
'ion-activatable': true,
|
|
64
64
|
'ion-focusable': true,
|
|
65
|
-
}) }, h("button",
|
|
65
|
+
}) }, h("button", { key: '48fc0a7011414b60dd7d5136f247e937ae4bb8c8', ...attrs, disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }, h("span", { key: '8c712f28c5afd345e403a9afc525931112852708', class: "button-inner" }, h("slot", { key: 'dd872325e42baf435188478c8d1cfc416075089d' }, h("ion-icon", { key: 'a4f02bdb715b07792c17e12c7837873d70171f88', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && h("ion-ripple-effect", { key: '564e2a8a804e14d1135502f7b17d8b7b9862e81b', type: "unbounded" }))));
|
|
66
66
|
}
|
|
67
67
|
static get is() { return "ion-menu-button"; }
|
|
68
68
|
static get encapsulation() { return "shadow"; }
|
|
@@ -31,10 +31,10 @@ export class MenuToggle {
|
|
|
31
31
|
render() {
|
|
32
32
|
const mode = getIonMode(this);
|
|
33
33
|
const hidden = this.autoHide && !this.visible;
|
|
34
|
-
return (h(Host, { key: '
|
|
34
|
+
return (h(Host, { key: '76d21ea6493b8161860c941e3754fef1e20395cc', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
|
|
35
35
|
[mode]: true,
|
|
36
36
|
'menu-toggle-hidden': hidden,
|
|
37
|
-
} }, h("slot", { key: '
|
|
37
|
+
} }, h("slot", { key: '9383610fd3105e1928a38788eb596e313e2b07f8' })));
|
|
38
38
|
}
|
|
39
39
|
static get is() { return "ion-menu-toggle"; }
|
|
40
40
|
static get encapsulation() { return "shadow"; }
|
|
@@ -26,7 +26,7 @@ export const iosEnterAnimation = (baseEl, opts) => {
|
|
|
26
26
|
wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });
|
|
27
27
|
// The content animation is only added if scrolling is enabled for
|
|
28
28
|
// all the breakpoints.
|
|
29
|
-
!expandToScroll &&
|
|
29
|
+
!expandToScroll && contentAnimation?.addElement(baseEl.querySelector('.ion-page'));
|
|
30
30
|
const baseAnimation = createAnimation('entering-base')
|
|
31
31
|
.addElement(baseEl)
|
|
32
32
|
.easing('cubic-bezier(0.32,0.72,0,1)')
|
|
@@ -28,7 +28,7 @@ export const mdEnterAnimation = (baseEl, opts) => {
|
|
|
28
28
|
wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
|
|
29
29
|
// The content animation is only added if scrolling is enabled for
|
|
30
30
|
// all the breakpoints.
|
|
31
|
-
!expandToScroll &&
|
|
31
|
+
!expandToScroll && contentAnimation?.addElement(baseEl.querySelector('.ion-page'));
|
|
32
32
|
const baseAnimation = createAnimation()
|
|
33
33
|
.addElement(baseEl)
|
|
34
34
|
.easing('cubic-bezier(0.36,0.66,0.04,1)')
|
|
@@ -6,7 +6,7 @@ import { createGesture } from "../../../utils/gesture/index";
|
|
|
6
6
|
import { clamp, getElementRoot, raf } from "../../../utils/helpers";
|
|
7
7
|
import { FOCUS_TRAP_DISABLE_CLASS } from "../../../utils/overlays";
|
|
8
8
|
import { getBackdropValueForSheet } from "../utils";
|
|
9
|
-
import { calculateSpringStep, handleCanDismiss } from "./utils";
|
|
9
|
+
import { calculateSpringStep, canSwipeOnContent, handleCanDismiss } from "./utils";
|
|
10
10
|
export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange, onDragStart, onDragMove, onDragEnd) => {
|
|
11
11
|
// Defaults for the sheet swipe animation
|
|
12
12
|
const defaultBackdrop = [
|
|
@@ -30,6 +30,8 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
30
30
|
],
|
|
31
31
|
};
|
|
32
32
|
const contentEl = baseEl.querySelector('ion-content');
|
|
33
|
+
// Cache the initial value so the gesture restores it instead of forcing scrolling on.
|
|
34
|
+
const initialContentScrollY = contentEl?.scrollY ?? true;
|
|
33
35
|
const height = wrapperEl.clientHeight;
|
|
34
36
|
let currentBreakpoint = initialBreakpoint;
|
|
35
37
|
let offset = 0;
|
|
@@ -95,9 +97,9 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
95
97
|
cachedFooterEl.style.removeProperty('height');
|
|
96
98
|
cachedFooterEl.style.removeProperty('top');
|
|
97
99
|
cachedFooterEl.style.removeProperty('left');
|
|
98
|
-
page
|
|
100
|
+
page?.style.removeProperty('padding-bottom');
|
|
99
101
|
// Move to page
|
|
100
|
-
page
|
|
102
|
+
page?.appendChild(cachedFooterEl);
|
|
101
103
|
});
|
|
102
104
|
}
|
|
103
105
|
else {
|
|
@@ -141,7 +143,7 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
141
143
|
// when the footer is positioned absolutely. This has to be done before we
|
|
142
144
|
// make the footer absolutely positioned or we may accidentally cause the
|
|
143
145
|
// sheet to scroll.
|
|
144
|
-
page
|
|
146
|
+
page?.style.setProperty('padding-bottom', `${footerHeights}px`);
|
|
145
147
|
// Apply positioning styles to keep footer at bottom
|
|
146
148
|
cachedFooterEl.classList.add('modal-footer-moving');
|
|
147
149
|
// Apply our preserved styles to pin the footer
|
|
@@ -166,7 +168,7 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
166
168
|
if (wrapperAnimation && backdropAnimation) {
|
|
167
169
|
wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
|
|
168
170
|
backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
|
|
169
|
-
contentAnimation
|
|
171
|
+
contentAnimation?.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
|
|
170
172
|
animation.progressStart(true, 1 - currentBreakpoint);
|
|
171
173
|
/**
|
|
172
174
|
* If backdrop is not enabled, then content
|
|
@@ -190,9 +192,6 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
190
192
|
}
|
|
191
193
|
const canStart = (detail) => {
|
|
192
194
|
/**
|
|
193
|
-
* If we are swiping on the content, swiping should only be possible if the content
|
|
194
|
-
* is scrolled all the way to the top so that we do not interfere with scrolling.
|
|
195
|
-
*
|
|
196
195
|
* We cannot assume that the `ion-content` target will remain consistent between swipes.
|
|
197
196
|
* For example, when using ion-nav within a modal it is possible to swipe, push a view,
|
|
198
197
|
* and then swipe again. The target content will not be the same between swipes.
|
|
@@ -200,30 +199,21 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
200
199
|
const contentEl = findClosestIonContent(detail.event.target);
|
|
201
200
|
currentBreakpoint = getCurrentBreakpoint();
|
|
202
201
|
/**
|
|
203
|
-
*
|
|
204
|
-
*
|
|
202
|
+
* Upwards swipes on the content cannot move the sheet anyway, so this only
|
|
203
|
+
* blocks swiping the sheet down from the content.
|
|
205
204
|
*/
|
|
206
|
-
if (!expandToScroll
|
|
207
|
-
|
|
208
|
-
return scrollEl.scrollTop === 0;
|
|
209
|
-
}
|
|
210
|
-
if (currentBreakpoint === 1 && contentEl) {
|
|
211
|
-
/**
|
|
212
|
-
* The modal should never swipe to close on the content with a refresher.
|
|
213
|
-
* Note 1: We cannot solve this by making this gesture have a higher priority than
|
|
214
|
-
* the refresher gesture as the iOS native refresh gesture uses a scroll listener in
|
|
215
|
-
* addition to a gesture.
|
|
216
|
-
*
|
|
217
|
-
* Note 2: Do not use getScrollElement here because we need this to be a synchronous
|
|
218
|
-
* operation, and getScrollElement is asynchronous.
|
|
219
|
-
*/
|
|
220
|
-
const scrollEl = isIonContent(contentEl) ? getElementRoot(contentEl).querySelector('.inner-scroll') : contentEl;
|
|
221
|
-
const hasRefresherInContent = !!contentEl.querySelector('ion-refresher');
|
|
222
|
-
return !hasRefresherInContent && scrollEl.scrollTop === 0;
|
|
205
|
+
if (contentEl && (!expandToScroll || currentBreakpoint === 1)) {
|
|
206
|
+
return canSwipeOnContent(contentEl);
|
|
223
207
|
}
|
|
224
208
|
return true;
|
|
225
209
|
};
|
|
226
210
|
const onStart = (detail) => {
|
|
211
|
+
/**
|
|
212
|
+
* Firefox automatically selects the header text during drag
|
|
213
|
+
* due to the focusable wrapper (tabindex="-1"). Remove any
|
|
214
|
+
* selection that may have occurred.
|
|
215
|
+
*/
|
|
216
|
+
window.getSelection()?.removeAllRanges();
|
|
227
217
|
/**
|
|
228
218
|
* If canDismiss is anything other than `true`
|
|
229
219
|
* then users should be able to swipe down
|
|
@@ -351,12 +341,22 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
351
341
|
};
|
|
352
342
|
const onEnd = (detail) => {
|
|
353
343
|
const snapBreakpoint = calculateSnapBreakpoint(detail.deltaY);
|
|
344
|
+
/**
|
|
345
|
+
* `snapBreakpoint === 0` is not enough on its own. `canDismiss: false`
|
|
346
|
+
* snaps to 0 but never dismisses, since `handleCanDismiss` returns early
|
|
347
|
+
* when canDismiss is not a function. A canDismiss function dismisses
|
|
348
|
+
* through `handleCanDismiss`, which awaits the callback, so the outcome
|
|
349
|
+
* is not known when this event is emitted.
|
|
350
|
+
*/
|
|
351
|
+
const shouldPreventDismiss = canDismissBlocksGesture && snapBreakpoint === 0;
|
|
352
|
+
const isDismissing = shouldPreventDismiss ? typeof baseEl.canDismiss === 'function' : snapBreakpoint === 0;
|
|
354
353
|
const eventDetail = {
|
|
355
354
|
currentY: detail.currentY,
|
|
356
355
|
deltaY: detail.deltaY,
|
|
357
356
|
velocityY: detail.velocityY,
|
|
358
357
|
progress: calculateProgress(detail.currentY),
|
|
359
358
|
snapBreakpoint,
|
|
359
|
+
isDismissing,
|
|
360
360
|
};
|
|
361
361
|
/**
|
|
362
362
|
* If expandToScroll is disabled, we should not allow the moveSheetToBreakpoint
|
|
@@ -372,7 +372,11 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
372
372
|
* swap to moving on drag and if we don't swap back here then the footer will get stuck.
|
|
373
373
|
*/
|
|
374
374
|
swapFooterPosition('stationary');
|
|
375
|
-
|
|
375
|
+
/**
|
|
376
|
+
* The sheet does not move in this case, so the gesture
|
|
377
|
+
* never dismisses the modal.
|
|
378
|
+
*/
|
|
379
|
+
onDragEnd({ ...eventDetail, isDismissing: false });
|
|
376
380
|
return;
|
|
377
381
|
}
|
|
378
382
|
moveSheetToBreakpoint({
|
|
@@ -445,14 +449,14 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
445
449
|
onDismiss();
|
|
446
450
|
}
|
|
447
451
|
/**
|
|
448
|
-
*
|
|
449
|
-
* or if it allows scrolling at any breakpoint. Without this, there would
|
|
452
|
+
* Restores the content's scroll setting immediately if the sheet is about to
|
|
453
|
+
* fully expand or if it allows scrolling at any breakpoint. Without this, there would
|
|
450
454
|
* be a ~500ms delay while the modal animation completes, causing a
|
|
451
455
|
* noticeable lag. Native iOS allows scrolling as soon as the gesture is
|
|
452
456
|
* released, so we align with that behavior.
|
|
453
457
|
*/
|
|
454
458
|
if (contentEl && (snapToBreakpoint === breakpoints[breakpoints.length - 1] || !expandToScroll)) {
|
|
455
|
-
contentEl.scrollY =
|
|
459
|
+
contentEl.scrollY = initialContentScrollY;
|
|
456
460
|
}
|
|
457
461
|
/**
|
|
458
462
|
* If expandToScroll is disabled and we're animating
|
|
@@ -487,7 +491,7 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
487
491
|
raf(() => {
|
|
488
492
|
wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
|
|
489
493
|
backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
|
|
490
|
-
contentAnimation
|
|
494
|
+
contentAnimation?.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
|
|
491
495
|
animation.progressStart(true, 1 - snapToBreakpoint);
|
|
492
496
|
currentBreakpoint = snapToBreakpoint;
|
|
493
497
|
onBreakpointChange(currentBreakpoint);
|
|
@@ -634,8 +638,19 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
634
638
|
onMove,
|
|
635
639
|
onEnd,
|
|
636
640
|
});
|
|
641
|
+
/**
|
|
642
|
+
* Puts the content back the way the app declared it. A sheet can dismiss
|
|
643
|
+
* without going through moveSheetToBreakpoint, and an inline modal reuses
|
|
644
|
+
* the same element on the next present.
|
|
645
|
+
*/
|
|
646
|
+
const resetContentScroll = () => {
|
|
647
|
+
if (contentEl) {
|
|
648
|
+
contentEl.scrollY = initialContentScrollY;
|
|
649
|
+
}
|
|
650
|
+
};
|
|
637
651
|
return {
|
|
638
652
|
gesture,
|
|
639
653
|
moveSheetToBreakpoint,
|
|
654
|
+
resetContentScroll,
|
|
640
655
|
};
|
|
641
656
|
};
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
import { getTimeGivenProgression } from "../../../utils/animation/cubic-bezier";
|
|
5
5
|
import { isIonContent, findClosestIonContent, disableContentScrollY, resetContentScrollY } from "../../../utils/content/index";
|
|
6
6
|
import { createGesture } from "../../../utils/gesture/index";
|
|
7
|
-
import { clamp
|
|
7
|
+
import { clamp } from "../../../utils/helpers";
|
|
8
8
|
import { OVERLAY_GESTURE_PRIORITY } from "../../../utils/overlays";
|
|
9
9
|
import { setCardStatusBarDark, setCardStatusBarDefault } from "../utils";
|
|
10
|
-
import { calculateSpringStep, handleCanDismiss } from "./utils";
|
|
10
|
+
import { calculateSpringStep, canSwipeOnContent, handleCanDismiss } from "./utils";
|
|
11
11
|
// Defaults for the card swipe animation
|
|
12
12
|
export const SwipeToCloseDefaults = {
|
|
13
13
|
MIN_PRESENTING_SCALE: 0.915,
|
|
@@ -22,7 +22,6 @@ export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismi
|
|
|
22
22
|
let isOpen = false;
|
|
23
23
|
let canDismissBlocksGesture = false;
|
|
24
24
|
let contentEl = null;
|
|
25
|
-
let scrollEl = null;
|
|
26
25
|
const canDismissMaxStep = 0.2;
|
|
27
26
|
let initialScrollY = true;
|
|
28
27
|
let lastStep = 0;
|
|
@@ -45,12 +44,6 @@ export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismi
|
|
|
45
44
|
return true;
|
|
46
45
|
}
|
|
47
46
|
/**
|
|
48
|
-
* If we are swiping on the content,
|
|
49
|
-
* swiping should only be possible if
|
|
50
|
-
* the content is scrolled all the way
|
|
51
|
-
* to the top so that we do not interfere
|
|
52
|
-
* with scrolling.
|
|
53
|
-
*
|
|
54
47
|
* We cannot assume that the `ion-content`
|
|
55
48
|
* target will remain consistent between
|
|
56
49
|
* swipes. For example, when using
|
|
@@ -61,29 +54,7 @@ export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismi
|
|
|
61
54
|
*/
|
|
62
55
|
contentEl = findClosestIonContent(target);
|
|
63
56
|
if (contentEl) {
|
|
64
|
-
|
|
65
|
-
* The card should never swipe to close
|
|
66
|
-
* on the content with a refresher.
|
|
67
|
-
* Note: We cannot solve this by making the
|
|
68
|
-
* swipeToClose gesture have a higher priority
|
|
69
|
-
* than the refresher gesture as the iOS native
|
|
70
|
-
* refresh gesture uses a scroll listener in
|
|
71
|
-
* addition to a gesture.
|
|
72
|
-
*
|
|
73
|
-
* Note: Do not use getScrollElement here
|
|
74
|
-
* because we need this to be a synchronous
|
|
75
|
-
* operation, and getScrollElement is
|
|
76
|
-
* asynchronous.
|
|
77
|
-
*/
|
|
78
|
-
if (isIonContent(contentEl)) {
|
|
79
|
-
const root = getElementRoot(contentEl);
|
|
80
|
-
scrollEl = root.querySelector('.inner-scroll');
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
scrollEl = contentEl;
|
|
84
|
-
}
|
|
85
|
-
const hasRefresherInContent = !!contentEl.querySelector('ion-refresher');
|
|
86
|
-
return !hasRefresherInContent && scrollEl.scrollTop === 0;
|
|
57
|
+
return canSwipeOnContent(contentEl);
|
|
87
58
|
}
|
|
88
59
|
/**
|
|
89
60
|
* Card should be swipeable on all
|
|
@@ -97,6 +68,12 @@ export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismi
|
|
|
97
68
|
};
|
|
98
69
|
const onStart = (detail) => {
|
|
99
70
|
const { deltaY } = detail;
|
|
71
|
+
/**
|
|
72
|
+
* Firefox automatically selects the header text during drag
|
|
73
|
+
* due to the focusable wrapper (tabindex="-1"). Remove any
|
|
74
|
+
* selection that may have occurred.
|
|
75
|
+
*/
|
|
76
|
+
window.getSelection()?.removeAllRanges();
|
|
100
77
|
/**
|
|
101
78
|
* Get the initial scrollY value so
|
|
102
79
|
* that we can correctly reset the scrollY
|
|
@@ -249,17 +226,30 @@ export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismi
|
|
|
249
226
|
* check canDismiss. 25% was chosen
|
|
250
227
|
* to avoid accidental swipes.
|
|
251
228
|
*/
|
|
252
|
-
|
|
229
|
+
const isAttemptingCanDismiss = isAttemptingDismissWithCanDismiss && clampedStep > maxStep / 4;
|
|
230
|
+
if (isAttemptingCanDismiss) {
|
|
253
231
|
handleCanDismiss(el, animation);
|
|
254
232
|
}
|
|
255
233
|
else if (shouldComplete) {
|
|
256
234
|
onDismiss();
|
|
257
235
|
}
|
|
236
|
+
/**
|
|
237
|
+
* `shouldComplete` is not enough on its own, since it is always `false`
|
|
238
|
+
* when canDismiss blocks the gesture. `canDismiss: false` blocks it and
|
|
239
|
+
* never dismisses, because `handleCanDismiss` returns early when
|
|
240
|
+
* canDismiss is not a function. A canDismiss function dismisses through
|
|
241
|
+
* `handleCanDismiss`, which awaits the callback, so the outcome is not
|
|
242
|
+
* known when this event is emitted.
|
|
243
|
+
*/
|
|
244
|
+
const isDismissing = isAttemptingDismissWithCanDismiss
|
|
245
|
+
? isAttemptingCanDismiss && typeof el.canDismiss === 'function'
|
|
246
|
+
: shouldComplete;
|
|
258
247
|
const eventDetail = {
|
|
259
248
|
currentY: detail.currentY,
|
|
260
249
|
deltaY: detail.deltaY,
|
|
261
250
|
velocityY: detail.velocityY,
|
|
262
251
|
progress: calculateProgress(el, detail.deltaY),
|
|
252
|
+
isDismissing,
|
|
263
253
|
snapBreakpoint: shouldComplete ? 0 : 1,
|
|
264
254
|
};
|
|
265
255
|
onDragEnd(eventDetail);
|
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
+
import { findRefresherInContent, isIonContent } from "../../../utils/content/index";
|
|
5
|
+
import { getElementRoot } from "../../../utils/helpers";
|
|
4
6
|
import { GESTURE } from "../../../utils/overlays";
|
|
7
|
+
/**
|
|
8
|
+
* Swiping is only possible when the content is scrolled to the top, so that we
|
|
9
|
+
* do not interfere with scrolling, and never on content with a refresher.
|
|
10
|
+
*
|
|
11
|
+
* Note: We cannot solve the refresher case with gesture priority as the iOS
|
|
12
|
+
* native refresh gesture uses a scroll listener in addition to a gesture.
|
|
13
|
+
*
|
|
14
|
+
* Note: Do not use `getScrollElement` here because we need this to be a
|
|
15
|
+
* synchronous operation, and `getScrollElement` is asynchronous.
|
|
16
|
+
*/
|
|
17
|
+
export const canSwipeOnContent = (contentEl) => {
|
|
18
|
+
const scrollEl = isIonContent(contentEl) ? getElementRoot(contentEl).querySelector('.inner-scroll') : contentEl;
|
|
19
|
+
const hasRefresherInContent = !!findRefresherInContent(contentEl);
|
|
20
|
+
return !hasRefresherInContent && scrollEl.scrollTop === 0;
|
|
21
|
+
};
|
|
5
22
|
export const handleCanDismiss = async (el, animation) => {
|
|
6
23
|
/**
|
|
7
24
|
* If canDismiss is not a function
|