voyager-ionic-core 8.8.17 → 9.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/index.js +1 -1
- package/components/ion-accordion-group.js +1 -1
- package/components/ion-accordion.js +1 -1
- package/components/ion-action-sheet.js +1 -1
- package/components/ion-alert.js +1 -1
- package/components/ion-app.js +1 -1
- package/components/ion-avatar.js +1 -1
- package/components/ion-back-button.js +1 -1
- package/components/ion-backdrop.js +1 -1
- package/components/ion-badge.js +1 -1
- package/components/ion-breadcrumb.js +1 -1
- package/components/ion-breadcrumbs.js +1 -1
- package/components/ion-button.js +1 -1
- package/components/ion-buttons.js +1 -1
- package/components/ion-card-content.js +1 -1
- package/components/ion-card-header.js +1 -1
- package/components/ion-card-subtitle.js +1 -1
- package/components/ion-card-title.js +1 -1
- package/components/ion-card.js +1 -1
- package/components/ion-checkbox.js +1 -1
- package/components/ion-chip.js +1 -1
- package/components/ion-col.js +1 -1
- package/components/ion-content.js +1 -1
- package/components/ion-datetime-button.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-fab-button.js +1 -1
- package/components/ion-fab-list.js +1 -1
- package/components/ion-fab.js +1 -1
- package/components/ion-footer.js +1 -1
- package/components/ion-grid.js +1 -1
- package/components/ion-header.js +1 -1
- package/components/ion-icon.js +1 -1
- package/components/ion-img.js +1 -1
- package/components/ion-infinite-scroll-content.js +1 -1
- package/components/ion-infinite-scroll.js +1 -1
- package/components/ion-input-otp.js +1 -1
- package/components/ion-input-password-toggle.js +1 -1
- package/components/ion-input.js +1 -1
- package/components/ion-item-divider.js +1 -1
- package/components/ion-item-group.js +1 -1
- package/components/ion-item-option.js +1 -1
- package/components/ion-item-options.js +1 -1
- package/components/ion-item-sliding.js +1 -1
- package/components/ion-item.js +1 -1
- package/components/ion-label.js +1 -1
- package/components/ion-list-header.js +1 -1
- package/components/ion-list.js +1 -1
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu-toggle.js +1 -1
- package/components/ion-menu.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +1 -1
- package/components/ion-note.js +1 -1
- package/components/ion-picker-column-option.js +1 -1
- package/components/ion-picker-column.js +1 -1
- package/components/ion-picker.js +1 -1
- package/components/ion-popover.js +1 -1
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-radio-group.js +1 -1
- package/components/ion-radio.js +1 -1
- package/components/ion-range.js +1 -1
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-ripple-effect.js +1 -1
- package/components/ion-route-redirect.js +1 -1
- package/components/ion-route.js +1 -1
- package/components/ion-router-link.js +1 -1
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-router.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-segment-content.js +1 -1
- package/components/ion-segment-view.js +1 -1
- package/components/ion-segment.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-option.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-skeleton-text.js +1 -1
- package/components/ion-spinner.js +1 -1
- package/components/ion-split-pane.js +1 -1
- package/components/ion-tab-bar.js +1 -1
- package/components/ion-tab-button.js +1 -1
- package/components/ion-tab.js +1 -1
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +1 -1
- package/components/ion-textarea.js +1 -1
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/ion-toggle.js +1 -1
- package/components/ion-toolbar.js +1 -1
- package/components/p-1sJ0ZDPe.js +4 -0
- package/components/p-5ldEpNdG.js +4 -0
- package/components/p-6ZLn6K5e.js +4 -0
- package/components/p-B1_TL6RQ.js +4 -0
- package/components/p-B4lxwJ8N.js +4 -0
- package/components/{p-rCa2eL0j.js → p-BF48Oc0v.js} +1 -1
- package/components/p-BJr2B5hZ.js +4 -0
- package/components/p-BMPN55of.js +4 -0
- package/components/{p-ChIZKXUu.js → p-BQyuFxYc.js} +1 -1
- package/components/p-BSQPZ79H.js +4 -0
- package/components/p-BT9-hMMz.js +4 -0
- package/components/p-BU8a2IhR.js +4 -0
- package/components/p-BW_SlU2D.js +4 -0
- package/components/p-BWoa-cki.js +4 -0
- package/components/p-BYJRZKHa.js +4 -0
- package/components/p-B_gJaBk0.js +4 -0
- package/components/p-BgkOsq-d.js +4 -0
- package/components/p-BhamHSw3.js +4 -0
- package/components/p-Bi-it1EH.js +4 -0
- package/components/p-C-NbvXu4.js +4 -0
- package/components/p-C09TXohi.js +4 -0
- package/components/p-C4VpVfrJ.js +4 -0
- package/components/p-C8Ck7_Eo.js +4 -0
- package/components/p-CEW4RXZO.js +4 -0
- package/components/p-CG_zZq_I.js +4 -0
- package/components/{p-B9jFTlwE.js → p-CJgnoKcN.js} +1 -1
- package/components/p-CMRYD_yR.js +4 -0
- package/components/{p-BMI53wYL.js → p-CNLioZ3B.js} +1 -1
- package/components/{p--JUspHvy.js → p-COO0eJOA.js} +1 -1
- package/components/p-CWAks_S_.js +4 -0
- package/{dist/ionic/p-KjNvRoEp.js → components/p-Cd1WaN-0.js} +1 -1
- package/components/p-CqbGBmqb.js +4 -0
- package/components/p-CrAKlX71.js +4 -0
- package/components/p-Ctop2IWW.js +4 -0
- package/components/p-Cw6WocLJ.js +4 -0
- package/components/p-D0YpjgON.js +4 -0
- package/components/{p-DJZp0KTQ.js → p-D5w_FlVa.js} +1 -1
- package/components/p-D7-vHX0A.js +4 -0
- package/components/p-D7wDJdFn.js +4 -0
- package/components/p-DFLJvuRK.js +4 -0
- package/components/p-DL13ieTa.js +4 -0
- package/components/{p-DqLB8yFQ.js → p-DM1gJSMP.js} +1 -1
- package/components/p-DMBiAyOR.js +4 -0
- package/components/p-DWCzVL3Y.js +4 -0
- package/components/p-DZRZic9C.js +4 -0
- package/components/{p-C_hpsif8.js → p-DhNuxvJH.js} +1 -1
- package/components/p-DiuOa1vw.js +4 -0
- package/components/p-Djmz-ssp.js +4 -0
- package/components/p-DnBNYc7u.js +4 -0
- package/components/p-Dojwmvde.js +4 -0
- package/components/p-DwSXbQSz.js +4 -0
- package/components/p-DxhHlJln.js +4 -0
- package/components/p-Fl7ZFU74.js +4 -0
- package/components/{p-DqZAXv2t.js → p-GGbIHyEF.js} +1 -1
- package/components/{p-j5IxBIan.js → p-Hp8t4RMX.js} +1 -1
- package/components/p-M34T2gyX.js +4 -0
- package/components/p-TWw4e4sO.js +4 -0
- package/components/{p-Cfx4M1Bn.js → p-YjMkHuvH.js} +1 -1
- package/components/p-byZM6qHV.js +4 -0
- package/components/p-cEN43Ahr.js +4 -0
- package/components/p-qAXsfUff.js +4 -0
- package/dist/cjs/{animation-BJq0kcy2.js → animation-Kd1N7WTN.js} +4 -4
- package/dist/cjs/{app-globals-BlqrqKTN.js → app-globals-b1G4t26O.js} +1 -1
- package/dist/cjs/{button-active-0mPOKmV2.js → button-active-CQCFubJJ.js} +3 -3
- package/dist/cjs/config-CjUbvdPW.js +36 -0
- package/dist/cjs/dir-zwDPRE5K.js +30 -0
- package/dist/cjs/{format-PxvGiOik.js → format-bHU8N1g5.js} +40 -30
- package/dist/cjs/{framework-delegate-BtICZDHr.js → framework-delegate-d-fWfeI6.js} +5 -7
- package/dist/cjs/{gesture-controller-dtqlP_q4.js → gesture-controller-CeJslptU.js} +1 -2
- package/dist/cjs/{haptic-ClPPQ_PS.js → haptic-Ch-X4gRx.js} +2 -3
- package/dist/cjs/{hardware-back-button-iUuF_76h.js → hardware-back-button-Bu4Dzw8l.js} +4 -4
- package/dist/cjs/{helpers-Cv23MFHM.js → helpers-7wzdhdeg.js} +15 -11
- package/dist/cjs/{index-D81eLYUM.js → index-C74Q3t6a.js} +3 -2
- package/dist/cjs/{index-BERfRao3.js → index-CQfEIyLK.js} +5 -5
- package/dist/cjs/{index-aC4x3Fk3.js → index-DFNrCX7M.js} +6 -7
- package/dist/cjs/{index-CAvQ7Tka.js → index-DRPqwSvU.js} +13 -30
- package/dist/cjs/{index-Ct7gcRif.js → index-DXoo08JC.js} +321 -26
- package/dist/cjs/{index-CIrkNXqJ.js → index-DtvKGwdh.js} +34 -2
- package/dist/cjs/index-KiSZqhYS.js +431 -0
- package/dist/cjs/{index-DqmRDbxg.js → index-wOmugbdg.js} +1 -1
- package/dist/cjs/index.cjs.js +19 -18
- package/dist/cjs/{input-shims-CFLg7uzj.js → input-shims-VJIiKBKv.js} +10 -11
- package/dist/cjs/input.utils-EHVE2RK_.js +35 -0
- package/dist/cjs/ion-accordion_2.cjs.entry.js +12 -12
- package/dist/cjs/ion-action-sheet.cjs.entry.js +92 -44
- package/dist/cjs/ion-alert.cjs.entry.js +144 -65
- package/dist/cjs/ion-app_8.cjs.entry.js +112 -40
- package/dist/cjs/ion-avatar_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-back-button.cjs.entry.js +6 -5
- package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +8 -7
- package/dist/cjs/ion-button_2.cjs.entry.js +12 -8
- package/dist/cjs/ion-card_5.cjs.entry.js +6 -5
- package/dist/cjs/ion-checkbox.cjs.entry.js +10 -7
- package/dist/cjs/ion-chip.cjs.entry.js +3 -3
- package/dist/cjs/ion-col_3.cjs.entry.js +10 -6
- package/dist/cjs/ion-datetime-button.cjs.entry.js +22 -25
- package/dist/cjs/{ion-datetime_3.cjs.entry.js → ion-datetime.cjs.entry.js} +182 -746
- package/dist/cjs/ion-fab_3.cjs.entry.js +7 -6
- package/dist/cjs/ion-img.cjs.entry.js +7 -4
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +8 -6
- package/dist/cjs/ion-input-otp.cjs.entry.js +20 -29
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +9 -10
- package/dist/cjs/ion-input.cjs.entry.js +58 -70
- package/dist/cjs/ion-item-option_3.cjs.entry.js +21 -24
- package/dist/cjs/ion-item_8.cjs.entry.js +38 -34
- package/dist/cjs/ion-loading.cjs.entry.js +29 -15
- package/dist/cjs/ion-menu_3.cjs.entry.js +23 -24
- package/dist/cjs/ion-modal.cjs.entry.js +283 -161
- package/dist/cjs/ion-nav_2.cjs.entry.js +30 -138
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +8 -13
- package/dist/cjs/ion-picker-column.cjs.entry.js +218 -62
- package/dist/cjs/ion-picker.cjs.entry.js +4 -4
- package/dist/cjs/ion-popover.cjs.entry.js +50 -30
- package/dist/cjs/ion-progress-bar.cjs.entry.js +6 -5
- package/dist/cjs/ion-radio_2.cjs.entry.js +12 -11
- package/dist/cjs/ion-range.cjs.entry.js +30 -25
- package/dist/cjs/ion-refresher_2.cjs.entry.js +34 -26
- package/dist/cjs/ion-reorder_2.cjs.entry.js +10 -9
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +3 -3
- package/dist/cjs/ion-route_4.cjs.entry.js +36 -30
- package/dist/cjs/ion-searchbar.cjs.entry.js +27 -22
- package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment-view.cjs.entry.js +5 -6
- package/dist/cjs/ion-segment_2.cjs.entry.js +30 -26
- package/dist/cjs/ion-select-modal.cjs.entry.js +93 -38
- package/dist/cjs/ion-select_3.cjs.entry.js +495 -126
- package/dist/cjs/ion-spinner.cjs.entry.js +5 -6
- package/dist/cjs/ion-split-pane.cjs.entry.js +4 -4
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +15 -12
- package/dist/cjs/ion-tab_2.cjs.entry.js +8 -8
- package/dist/cjs/ion-text.cjs.entry.js +5 -5
- package/dist/cjs/ion-textarea.cjs.entry.js +56 -65
- package/dist/cjs/ion-toast.cjs.entry.js +26 -21
- package/dist/cjs/ion-toggle.cjs.entry.js +15 -13
- package/dist/cjs/{ionic-global-B-cA6LkY.js → ionic-global-CYJNT-2P.js} +13 -8
- package/dist/cjs/ionic.cjs.js +5 -5
- package/dist/cjs/{ios.transition-BOSWOaiK.js → ios.transition-DYGiD6gM.js} +14 -17
- package/dist/cjs/{item-multiple-inputs-D-gyg57c.js → item-multiple-inputs-Dv6qrMhm.js} +1 -1
- package/dist/cjs/{keyboard-hHzlEQpk.js → keyboard-Cix5TVkD.js} +2 -2
- package/dist/cjs/{keyboard-UuAS4D_9.js → keyboard-cHxZlTyz.js} +2 -2
- package/dist/cjs/{keyboard-controller-GXBiBRKS.js → keyboard-controller-PtZoN2GS.js} +6 -6
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-B8-wBZqt.js → md.transition-CrSkaoz6.js} +8 -8
- package/dist/cjs/overlay-control-label-D2sdL2O8.js +50 -0
- package/dist/cjs/{overlays-DdtIYQUH.js → overlays-BR21NUIG.js} +98 -58
- package/dist/cjs/select-option-render-D8ZEjYji.js +123 -0
- package/dist/cjs/slot-mutation-controller-D6IjSEIh.js +397 -0
- package/dist/cjs/{status-tap-BXX8H8_Y.js → status-tap-CNP5eD1R.js} +4 -3
- package/dist/cjs/{swipe-back-CCMaNiP2.js → swipe-back-CSIJQfu5.js} +5 -5
- package/dist/cjs/{theme-CeDs6Hcv.js → theme-Bw0rpaNN.js} +6 -1
- package/dist/collection/collection-manifest.json +7 -11
- package/dist/collection/components/accordion/accordion.js +5 -6
- package/dist/collection/components/accordion-group/accordion-group.js +2 -2
- package/dist/collection/components/action-sheet/action-sheet.ios.css +228 -2
- package/dist/collection/components/action-sheet/action-sheet.js +77 -31
- package/dist/collection/components/action-sheet/action-sheet.md.css +174 -2
- package/dist/collection/components/alert/alert.ios.css +279 -10
- package/dist/collection/components/alert/alert.js +127 -50
- package/dist/collection/components/alert/alert.md.css +268 -20
- package/dist/collection/components/breadcrumb/breadcrumb.js +1 -1
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +1 -1
- package/dist/collection/components/button/button.js +5 -2
- package/dist/collection/components/card/card.js +1 -1
- package/dist/collection/components/checkbox/checkbox.js +4 -2
- package/dist/collection/components/col/col.js +7 -3
- package/dist/collection/components/content/content.js +56 -6
- package/dist/collection/components/datetime/datetime.ios.css +42 -2
- package/dist/collection/components/datetime/datetime.js +146 -77
- package/dist/collection/components/datetime/datetime.md.css +42 -1
- package/dist/collection/components/datetime/utils/data.js +13 -14
- package/dist/collection/components/datetime/utils/format.js +21 -11
- package/dist/collection/components/datetime/utils/manipulation.js +8 -8
- package/dist/collection/components/datetime/utils/parse.js +10 -10
- package/dist/collection/components/datetime/utils/state.js +8 -2
- package/dist/collection/components/datetime/utils/validate.js +4 -5
- package/dist/collection/components/datetime-button/datetime-button.ios.css +5 -0
- package/dist/collection/components/datetime-button/datetime-button.js +15 -20
- package/dist/collection/components/datetime-button/datetime-button.md.css +5 -0
- package/dist/collection/components/fab-button/fab-button.js +1 -1
- package/dist/collection/components/footer/footer.js +1 -1
- package/dist/collection/components/header/header.js +2 -2
- package/dist/collection/components/img/img.js +6 -1
- package/dist/collection/components/input/input.ios.css +57 -26
- package/dist/collection/components/input/input.js +51 -64
- package/dist/collection/components/input/input.md.css +79 -43
- package/dist/collection/components/input-otp/input-otp.js +15 -24
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +5 -6
- package/dist/collection/components/item/item.js +19 -16
- package/dist/collection/components/item-divider/item-divider.js +2 -2
- package/dist/collection/components/item-group/item-group.js +1 -1
- package/dist/collection/components/item-option/item-option.js +2 -2
- package/dist/collection/components/item-options/item-options.js +1 -1
- package/dist/collection/components/item-sliding/item-sliding.js +12 -16
- package/dist/collection/components/label/label.js +2 -2
- package/dist/collection/components/list/list.js +2 -2
- package/dist/collection/components/list-header/list-header.js +2 -2
- package/dist/collection/components/loading/loading.js +17 -5
- package/dist/collection/components/menu/menu.js +6 -8
- package/dist/collection/components/menu-button/menu-button.js +2 -2
- package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
- package/dist/collection/components/modal/animations/ios.enter.js +1 -1
- package/dist/collection/components/modal/animations/md.enter.js +1 -1
- package/dist/collection/components/modal/gestures/sheet.js +42 -34
- package/dist/collection/components/modal/gestures/swipe-to-close.js +18 -35
- package/dist/collection/components/modal/gestures/utils.js +17 -0
- package/dist/collection/components/modal/modal.js +146 -65
- package/dist/collection/components/modal/safe-area-utils.js +39 -5
- package/dist/collection/components/nav/nav.js +24 -235
- package/dist/collection/components/nav-link/nav-link.js +1 -1
- package/dist/collection/components/note/note.js +2 -2
- package/dist/collection/components/picker/picker.js +1 -2
- package/dist/collection/components/picker-column/picker-column.css +3 -0
- package/dist/collection/components/picker-column/picker-column.js +212 -58
- package/dist/collection/components/picker-column-option/picker-column-option.js +3 -10
- package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -1
- package/dist/collection/components/popover/animations/ios.enter.js +1 -2
- package/dist/collection/components/popover/animations/md.enter.js +1 -2
- package/dist/collection/components/popover/popover.ios.css +15 -0
- package/dist/collection/components/popover/popover.js +32 -9
- package/dist/collection/components/popover/popover.md.css +15 -0
- package/dist/collection/components/popover/utils.js +4 -6
- package/dist/collection/components/progress-bar/progress-bar.js +1 -1
- package/dist/collection/components/radio/radio.js +5 -5
- package/dist/collection/components/radio-group/radio-group.js +2 -2
- package/dist/collection/components/range/range.js +24 -19
- package/dist/collection/components/refresher/refresher.js +19 -13
- package/dist/collection/components/refresher-content/refresher-content.js +1 -1
- package/dist/collection/components/reorder/reorder.js +1 -1
- package/dist/collection/components/reorder-group/reorder-group.js +1 -1
- package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
- package/dist/collection/components/route/route.js +1 -1
- package/dist/collection/components/router/router.js +2 -6
- package/dist/collection/components/router/utils/dom.js +25 -7
- package/dist/collection/components/router/utils/matching.js +6 -9
- package/dist/collection/components/router/utils/parser.js +1 -1
- package/dist/collection/components/router/utils/path.js +0 -1
- package/dist/collection/components/router-link/router-link.js +2 -2
- package/dist/collection/components/router-outlet/router-outlet.js +49 -10
- package/dist/collection/components/row/row.js +1 -1
- package/dist/collection/components/searchbar/searchbar.js +25 -20
- package/dist/collection/components/segment/segment.js +9 -11
- package/dist/collection/components/segment-button/segment-button.js +15 -9
- package/dist/collection/components/segment-content/segment-content.js +1 -1
- package/dist/collection/components/segment-view/segment-view.js +3 -4
- package/dist/collection/components/select/select.ios.css +96 -69
- package/dist/collection/components/select/select.js +405 -92
- package/dist/collection/components/select/select.md.css +118 -85
- package/dist/collection/components/select-modal/select-modal.ios.css +218 -0
- package/dist/collection/components/select-modal/select-modal.js +80 -27
- package/dist/collection/components/select-modal/select-modal.md.css +164 -0
- package/dist/collection/components/select-option/select-option.js +67 -3
- package/dist/collection/components/select-popover/select-popover.ios.css +218 -0
- package/dist/collection/components/select-popover/select-popover.js +78 -26
- package/dist/collection/components/select-popover/select-popover.md.css +164 -0
- package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
- package/dist/collection/components/spinner/spinner.js +2 -3
- package/dist/collection/components/split-pane/split-pane.js +2 -2
- package/dist/collection/components/tab/tab.js +2 -2
- package/dist/collection/components/tab-bar/tab-bar.js +2 -2
- package/dist/collection/components/tab-button/tab-button.js +6 -4
- package/dist/collection/components/tabs/tabs.js +2 -3
- package/dist/collection/components/text/text.js +2 -2
- package/dist/collection/components/textarea/textarea.ios.css +94 -62
- package/dist/collection/components/textarea/textarea.js +47 -57
- package/dist/collection/components/textarea/textarea.md.css +103 -77
- package/dist/collection/components/thumbnail/thumbnail.js +1 -1
- package/dist/collection/components/title/title.js +2 -2
- package/dist/collection/components/toast/toast.js +12 -9
- package/dist/collection/components/toggle/toggle.js +6 -4
- package/dist/collection/components/toolbar/toolbar.js +7 -4
- package/dist/collection/global/config.js +3 -3
- package/dist/collection/global/ionic-global.js +8 -2
- package/dist/collection/index.js +1 -1
- package/dist/collection/utils/animation/animation.js +3 -3
- package/dist/collection/utils/config.js +5 -4
- package/dist/collection/utils/content/index.js +30 -0
- package/dist/collection/utils/focus-controller/index.js +1 -1
- package/dist/collection/utils/focus-trap.js +3 -3
- package/dist/collection/utils/forms/index.js +1 -0
- package/dist/collection/utils/forms/start-container-controller.js +132 -0
- package/dist/collection/utils/framework-delegate.js +4 -6
- package/dist/collection/utils/gesture/gesture-controller.js +1 -2
- package/dist/collection/utils/gesture/index.js +10 -2
- package/dist/collection/utils/gesture/listener.js +4 -27
- package/dist/collection/utils/hardware-back-button.js +3 -3
- package/dist/collection/utils/helpers.js +14 -10
- package/dist/collection/utils/input-shims/hacks/scroll-assist.js +4 -5
- package/dist/collection/utils/input-shims/hacks/scroll-data.js +1 -2
- package/dist/collection/utils/keyboard/keyboard-controller.js +5 -5
- package/dist/collection/utils/keyboard/keyboard.js +1 -1
- package/dist/collection/utils/logging/index.js +23 -4
- package/dist/collection/utils/menu-controller/index.js +1 -2
- package/dist/collection/utils/native/haptic.js +2 -3
- package/dist/collection/utils/native/keyboard.js +2 -2
- package/dist/collection/utils/native/status-bar.js +1 -1
- package/dist/collection/utils/overlay-control-label.js +45 -0
- package/dist/collection/utils/overlays.js +87 -48
- package/dist/collection/utils/platform.js +4 -5
- package/dist/collection/utils/rtl/dir.js +17 -7
- package/dist/collection/utils/sanitization/index.js +283 -26
- package/dist/collection/utils/select-option-render.js +118 -0
- package/dist/collection/utils/slot-mutation-controller.js +1 -2
- package/dist/collection/utils/test/late-props/late-props.js +69 -0
- package/dist/collection/utils/test/playwright/apply-keyboard-focus.js +1 -1
- package/dist/collection/utils/test/playwright/detach-reattach.js +23 -0
- package/dist/collection/utils/test/playwright/drag-element.js +2 -3
- package/dist/collection/utils/test/playwright/generator.js +3 -4
- package/dist/collection/utils/test/playwright/index.js +1 -0
- package/dist/collection/utils/test/playwright/page/event-spy.js +2 -4
- package/dist/collection/utils/test/playwright/page/utils/goto.js +4 -5
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
- package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +2 -3
- package/dist/collection/utils/test/press-keys.js +6 -16
- package/dist/collection/utils/theme.js +6 -1
- package/dist/collection/utils/transition/ios.transition.js +9 -13
- package/dist/collection/utils/transition/md.transition.js +3 -4
- package/dist/docs.json +933 -1402
- package/dist/esm/{animation-DLJpuoEz.js → animation-BFNVlYum.js} +4 -4
- package/dist/esm/{app-globals-D0C5S4hU.js → app-globals-BgX0BGL1.js} +1 -1
- package/dist/esm/{button-active-BSpTQmS9.js → button-active-BfOvDr3b.js} +3 -3
- package/dist/esm/config-DWCzVL3Y.js +32 -0
- package/dist/esm/dir-Dojwmvde.js +28 -0
- package/dist/esm/{format-CAmvpAez.js → format-DDFE9jM5.js} +41 -31
- package/dist/esm/{framework-delegate-FnPGymXL.js → framework-delegate-BwNhx9NR.js} +5 -7
- package/dist/esm/{gesture-controller-BTEOs1at.js → gesture-controller-B_gJaBk0.js} +1 -2
- package/dist/esm/{haptic-DzAMWJuk.js → haptic-Cq4UAeka.js} +2 -3
- package/dist/esm/{hardware-back-button-B93Gru0Y.js → hardware-back-button-DmkiRgOT.js} +4 -4
- package/dist/esm/{helpers-HEqiOzXb.js → helpers-BSmc0nst.js} +15 -11
- package/dist/esm/{index-CfgBF1SE.js → index-BmLuEdV7.js} +13 -30
- package/dist/esm/{index-Q6UPU0Ay.js → index-BuPaALjU.js} +6 -7
- package/dist/esm/{index-DV3sJJW8.js → index-BvabGprD.js} +2 -2
- package/dist/esm/{index-MEDq2S8l.js → index-C1b9CLFg.js} +33 -3
- package/dist/esm/{index-tcQvqkiX.js → index-C23AVPx9.js} +303 -26
- package/dist/esm/{index-BRHzoo00.js → index-CJln0gS3.js} +3 -2
- package/dist/esm/index-D76bbuoi.js +425 -0
- package/dist/esm/{index-B_dQk_WE.js → index-DnA_7Bnx.js} +5 -5
- package/dist/esm/index.js +17 -15
- package/dist/esm/{input-shims-D10mwcw1.js → input-shims-Dqk-Ou25.js} +10 -11
- package/dist/esm/input.utils-rqoH22pW.js +33 -0
- package/dist/esm/ion-accordion_2.entry.js +12 -12
- package/dist/esm/ion-action-sheet.entry.js +92 -44
- package/dist/esm/ion-alert.entry.js +143 -64
- package/dist/esm/ion-app_8.entry.js +112 -40
- package/dist/esm/ion-avatar_3.entry.js +4 -4
- package/dist/esm/ion-back-button.entry.js +6 -5
- package/dist/esm/ion-backdrop.entry.js +2 -2
- package/dist/esm/ion-breadcrumb_2.entry.js +8 -7
- package/dist/esm/ion-button_2.entry.js +12 -8
- package/dist/esm/ion-card_5.entry.js +6 -5
- package/dist/esm/ion-checkbox.entry.js +10 -7
- package/dist/esm/ion-chip.entry.js +3 -3
- package/dist/esm/ion-col_3.entry.js +10 -6
- package/dist/esm/ion-datetime-button.entry.js +22 -25
- package/dist/esm/{ion-datetime_3.entry.js → ion-datetime.entry.js} +183 -745
- package/dist/esm/ion-fab_3.entry.js +7 -6
- package/dist/esm/ion-img.entry.js +7 -4
- package/dist/esm/ion-infinite-scroll_2.entry.js +7 -5
- package/dist/esm/ion-input-otp.entry.js +20 -29
- package/dist/esm/ion-input-password-toggle.entry.js +9 -10
- package/dist/esm/ion-input.entry.js +56 -68
- package/dist/esm/ion-item-option_3.entry.js +21 -24
- package/dist/esm/ion-item_8.entry.js +38 -34
- package/dist/esm/ion-loading.entry.js +28 -14
- package/dist/esm/ion-menu_3.entry.js +23 -24
- package/dist/esm/ion-modal.entry.js +271 -149
- package/dist/esm/ion-nav_2.entry.js +30 -138
- package/dist/esm/ion-picker-column-option.entry.js +8 -13
- package/dist/esm/ion-picker-column.entry.js +218 -62
- package/dist/esm/ion-picker.entry.js +4 -4
- package/dist/esm/ion-popover.entry.js +50 -30
- package/dist/esm/ion-progress-bar.entry.js +6 -5
- package/dist/esm/ion-radio_2.entry.js +12 -11
- package/dist/esm/ion-range.entry.js +30 -25
- package/dist/esm/ion-refresher_2.entry.js +32 -24
- package/dist/esm/ion-reorder_2.entry.js +10 -9
- package/dist/esm/ion-ripple-effect.entry.js +3 -3
- package/dist/esm/ion-route_4.entry.js +36 -30
- package/dist/esm/ion-searchbar.entry.js +27 -22
- package/dist/esm/ion-segment-content.entry.js +2 -2
- package/dist/esm/ion-segment-view.entry.js +5 -6
- package/dist/esm/ion-segment_2.entry.js +30 -26
- package/dist/esm/ion-select-modal.entry.js +93 -38
- package/dist/esm/ion-select_3.entry.js +495 -126
- package/dist/esm/ion-spinner.entry.js +5 -6
- package/dist/esm/ion-split-pane.entry.js +4 -4
- package/dist/esm/ion-tab-bar_2.entry.js +15 -12
- package/dist/esm/ion-tab_2.entry.js +8 -8
- package/dist/esm/ion-text.entry.js +5 -5
- package/dist/esm/ion-textarea.entry.js +55 -64
- package/dist/esm/ion-toast.entry.js +25 -20
- package/dist/esm/ion-toggle.entry.js +15 -13
- package/dist/esm/{ionic-global-Cp_eT4sZ.js → ionic-global-ZXjCXKH0.js} +13 -8
- package/dist/esm/ionic.js +6 -6
- package/dist/esm/{ios.transition-ClFrsIrS.js → ios.transition-CWAgfQ1r.js} +14 -17
- package/dist/esm/{item-multiple-inputs-DlNuqNJm.js → item-multiple-inputs-DZnIiOO_.js} +1 -1
- package/dist/esm/{keyboard-ywgs5efA.js → keyboard-Cj8mLJeq.js} +2 -2
- package/dist/esm/{keyboard-CUw4ekVy.js → keyboard-DAF8GNJ9.js} +2 -2
- package/dist/esm/{keyboard-controller-BaaVITYt.js → keyboard-controller-DEwoa1ev.js} +6 -6
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-D0msQmzI.js → md.transition-ZuqDDdDW.js} +8 -8
- package/dist/esm/overlay-control-label-BSQPZ79H.js +47 -0
- package/dist/esm/{overlays-Dg0q2_tJ.js → overlays-DKE0DgvE.js} +97 -58
- package/dist/esm/select-option-render-CRP_teb1.js +121 -0
- package/dist/esm/slot-mutation-controller-B5NpUZ-N.js +393 -0
- package/dist/esm/{status-tap-Kan2W7sh.js → status-tap-Cv9gb3ja.js} +4 -3
- package/dist/esm/{swipe-back-ZUWwA-KF.js → swipe-back-De5HlmeM.js} +5 -5
- package/dist/esm/{theme-DiVJyqlX.js → theme-byZM6qHV.js} +6 -1
- package/dist/html.html-data.json +54 -82
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-099b7f9f.entry.js +4 -0
- package/dist/ionic/p-0dcb7bb6.entry.js +4 -0
- package/dist/ionic/p-1347880c.entry.js +4 -0
- package/dist/ionic/p-191a651e.entry.js +4 -0
- package/dist/ionic/p-1f24cb24.entry.js +4 -0
- package/dist/ionic/p-271c3640.entry.js +4 -0
- package/dist/ionic/p-2ea4bb36.entry.js +4 -0
- package/dist/ionic/p-338a02e0.entry.js +4 -0
- package/dist/ionic/p-38b9375b.entry.js +4 -0
- package/dist/ionic/p-3bba83ee.entry.js +4 -0
- package/dist/ionic/p-3e01c744.entry.js +4 -0
- package/dist/ionic/p-458715a9.entry.js +4 -0
- package/dist/ionic/p-4712a8a9.entry.js +4 -0
- package/dist/ionic/p-4c3e50f8.entry.js +4 -0
- package/dist/ionic/p-54cbb0a7.entry.js +4 -0
- package/dist/ionic/{p-2bb2cb18.entry.js → p-561af487.entry.js} +1 -1
- package/dist/ionic/p-5906ea6f.entry.js +4 -0
- package/dist/ionic/p-5cc09b40.entry.js +4 -0
- package/dist/ionic/p-5d9094ac.entry.js +4 -0
- package/dist/ionic/p-612ea3b1.entry.js +4 -0
- package/dist/ionic/p-68cc89a6.entry.js +4 -0
- package/dist/ionic/{p-dfa8d673.entry.js → p-6e386853.entry.js} +1 -1
- package/dist/ionic/p-77c96e08.entry.js +4 -0
- package/dist/ionic/p-7bfeccb3.entry.js +4 -0
- package/dist/ionic/p-7e394cc3.entry.js +4 -0
- package/dist/ionic/{p-0fa9c382.entry.js → p-7fbb3319.entry.js} +1 -1
- package/dist/ionic/p-803059b6.entry.js +4 -0
- package/dist/ionic/p-837db1b9.entry.js +4 -0
- package/dist/ionic/p-85599fe3.entry.js +4 -0
- package/dist/ionic/p-8b80d9f9.entry.js +4 -0
- package/dist/ionic/p-90f50a65.entry.js +4 -0
- package/dist/ionic/p-9595e305.entry.js +4 -0
- package/dist/ionic/p-9c5f2691.entry.js +4 -0
- package/dist/ionic/p-9ee9c5b6.entry.js +4 -0
- package/dist/ionic/p-BMPN55of.js +4 -0
- package/dist/ionic/p-BMiZX1LT.js +4 -0
- package/dist/ionic/p-BSQPZ79H.js +4 -0
- package/dist/ionic/p-BY6BzzPF.js +4 -0
- package/dist/ionic/p-B_gJaBk0.js +4 -0
- package/dist/ionic/p-BaeKWZ-a.js +4 -0
- package/dist/ionic/p-Bd72UYI2.js +4 -0
- package/dist/ionic/p-BgOvhHy_.js +4 -0
- package/dist/ionic/p-BhamHSw3.js +4 -0
- package/dist/ionic/p-BijjLYjT.js +4 -0
- package/dist/ionic/{p-DV3sJJW8.js → p-BvabGprD.js} +1 -1
- package/dist/ionic/p-C23AVPx9.js +6 -0
- package/dist/ionic/p-C8XilMh0.js +4 -0
- package/dist/ionic/p-CER8qW8Y.js +4 -0
- package/dist/ionic/p-CFuOr1Tu.js +4 -0
- package/dist/ionic/p-CM5OBjTW.js +4 -0
- package/dist/ionic/p-CMZYmFb4.js +4 -0
- package/dist/ionic/p-CkxVYPtX.js +4 -0
- package/dist/ionic/p-CmXuiRT6.js +4 -0
- package/dist/ionic/p-D0YpjgON.js +4 -0
- package/dist/ionic/p-D5t_-oMk.js +4 -0
- package/dist/ionic/p-D6rHcCvc.js +4 -0
- package/dist/ionic/p-D7jHfs0Y.js +4 -0
- package/dist/ionic/p-DLM95R4x.js +4 -0
- package/dist/ionic/p-DTxBioUO.js +4 -0
- package/dist/ionic/p-DWCzVL3Y.js +4 -0
- package/dist/ionic/p-DYUjHcuH.js +4 -0
- package/{components/p-BkKAANMJ.js → dist/ionic/p-DZ6Hmc-8.js} +1 -1
- package/dist/ionic/p-D_gb-kdd.js +4 -0
- package/dist/ionic/p-DajLgJ4d.js +4 -0
- package/dist/ionic/p-Do3zTvCA.js +4 -0
- package/dist/ionic/p-Dojwmvde.js +4 -0
- package/dist/ionic/p-T71k3C35.js +4 -0
- package/dist/ionic/p-a8df96c8.entry.js +4 -0
- package/dist/ionic/p-a8ff2489.entry.js +4 -0
- package/dist/ionic/p-aff52029.entry.js +4 -0
- package/dist/ionic/p-b3532b8d.entry.js +4 -0
- package/dist/ionic/p-b9b4e85d.entry.js +4 -0
- package/dist/ionic/p-byZM6qHV.js +4 -0
- package/dist/ionic/{p-c6e49f3f.entry.js → p-ca1b8865.entry.js} +1 -1
- package/dist/ionic/p-cc4320d3.entry.js +4 -0
- package/dist/ionic/p-d526798a.entry.js +4 -0
- package/dist/ionic/p-d6755739.entry.js +4 -0
- package/dist/ionic/p-d8c138d9.entry.js +4 -0
- package/dist/ionic/p-db449915.entry.js +4 -0
- package/dist/ionic/p-dd01be0a.entry.js +4 -0
- package/dist/ionic/p-ec00fd0d.entry.js +4 -0
- package/dist/ionic/p-ee09ac9d.entry.js +4 -0
- package/dist/ionic/{p-37e720da.entry.js → p-efc0cf82.entry.js} +1 -1
- package/dist/ionic/p-f0fb23c1.entry.js +4 -0
- package/dist/ionic/p-f83b3e0c.entry.js +4 -0
- package/dist/ionic/p-fa50d493.entry.js +4 -0
- package/dist/ionic/p-zWf7R2xV.js +4 -0
- package/dist/types/components/action-sheet/action-sheet.d.ts +10 -0
- package/dist/types/components/alert/alert.d.ts +7 -0
- package/dist/types/components/content/content.d.ts +12 -0
- package/dist/types/components/datetime/datetime.d.ts +5 -1
- package/dist/types/components/img/img.d.ts +2 -0
- package/dist/types/components/input/input.d.ts +12 -6
- package/dist/types/components/modal/gestures/sheet.d.ts +1 -0
- package/dist/types/components/modal/gestures/utils.d.ts +11 -0
- package/dist/types/components/modal/modal-interface.d.ts +9 -0
- package/dist/types/components/modal/modal.d.ts +25 -7
- package/dist/types/components/modal/safe-area-utils.d.ts +6 -0
- package/dist/types/components/nav/nav-interface.d.ts +0 -1
- package/dist/types/components/nav/nav.d.ts +2 -22
- package/dist/types/components/picker-column/picker-column.d.ts +42 -0
- package/dist/types/components/range/range.d.ts +4 -1
- package/dist/types/components/refresher/refresher.d.ts +7 -0
- package/dist/types/components/route/route.d.ts +1 -1
- package/dist/types/components/router-outlet/router-outlet.d.ts +7 -0
- package/dist/types/components/searchbar/searchbar.d.ts +1 -1
- package/dist/types/components/select/select-interface.d.ts +31 -0
- package/dist/types/components/select/select.d.ts +30 -6
- package/dist/types/components/select-option/select-option.d.ts +42 -1
- package/dist/types/components/textarea/textarea.d.ts +12 -5
- package/dist/types/components.d.ts +79 -316
- package/dist/types/index.d.ts +1 -1
- package/dist/types/interface.d.ts +0 -1
- package/dist/types/stencil-public-runtime.d.ts +12 -0
- package/dist/types/utils/config.d.ts +1 -8
- package/dist/types/utils/content/index.d.ts +12 -0
- package/dist/types/utils/forms/index.d.ts +1 -0
- package/dist/types/utils/forms/start-container-controller.d.ts +34 -0
- package/dist/types/utils/helpers.d.ts +8 -5
- package/dist/types/utils/logging/index.d.ts +2 -1
- package/dist/types/utils/overlay-control-label.d.ts +32 -0
- package/dist/types/utils/overlays.d.ts +20 -9
- package/dist/types/utils/rtl/dir.d.ts +10 -4
- package/dist/types/utils/sanitization/index.d.ts +58 -2
- package/dist/types/utils/select-option-render.d.ts +53 -0
- package/dist/types/utils/test/playwright/detach-reattach.d.ts +13 -0
- package/dist/types/utils/test/playwright/index.d.ts +1 -0
- package/dist/types/utils/test/playwright/playwright-page.d.ts +1 -1
- package/dist/types/utils/test/playwright/testExpect.d.ts +1 -1
- package/hydrate/index.js +2998 -2155
- package/hydrate/index.mjs +2998 -2155
- package/loader/index.d.ts +1 -1
- package/package.json +58 -14
- package/components/ion-picker-legacy-column.d.ts +0 -11
- package/components/ion-picker-legacy-column.js +0 -4
- package/components/ion-picker-legacy.d.ts +0 -11
- package/components/ion-picker-legacy.js +0 -4
- package/components/p-A3O24YmY.js +0 -4
- package/components/p-ABkNVeU9.js +0 -4
- package/components/p-B-JJgYSG.js +0 -4
- package/components/p-BB42Mlnr.js +0 -4
- package/components/p-BLmJ0zRm.js +0 -4
- package/components/p-BSEgsdFI.js +0 -4
- package/components/p-BTEOs1at.js +0 -4
- package/components/p-BlIAuGv2.js +0 -4
- package/components/p-Bnsn6KaP.js +0 -4
- package/components/p-BsBCoGa-.js +0 -4
- package/components/p-Bz0dSlXZ.js +0 -4
- package/components/p-C53feagD.js +0 -4
- package/components/p-CHqRYvYm.js +0 -4
- package/components/p-CQGnMY3n.js +0 -4
- package/components/p-CSZf8_j0.js +0 -4
- package/components/p-C_xFdyXe.js +0 -4
- package/components/p-Cf2jSDS8.js +0 -4
- package/components/p-CkMSOsFF.js +0 -4
- package/components/p-Cl0B-RWe.js +0 -4
- package/components/p-CmR5uXej.js +0 -4
- package/components/p-CsNJ1ULL.js +0 -4
- package/components/p-CtWGkNnJ.js +0 -4
- package/components/p-CzCbeKys.js +0 -4
- package/components/p-D-aHdMxW.js +0 -4
- package/components/p-D0d8qTwj.js +0 -4
- package/components/p-D13Eaw-8.js +0 -4
- package/components/p-D3xo7hqU.js +0 -4
- package/components/p-D6Ynv7Xh.js +0 -4
- package/components/p-DCnGU1fF.js +0 -4
- package/components/p-DGZpx6KJ.js +0 -4
- package/components/p-DGvrK8dD.js +0 -4
- package/components/p-DHTSTb52.js +0 -4
- package/components/p-DOFCbuQR.js +0 -4
- package/components/p-DRugphUN.js +0 -4
- package/components/p-DV5mPYQS.js +0 -4
- package/components/p-DWkAgceV.js +0 -4
- package/components/p-DiVJyqlX.js +0 -4
- package/components/p-KEFO0w3i.js +0 -4
- package/components/p-Osve4qkc.js +0 -4
- package/components/p-SLS1rDZM.js +0 -4
- package/components/p-VWbRkLT7.js +0 -4
- package/components/p-aJ6PBUvj.js +0 -4
- package/components/p-cyNmxje6.js +0 -4
- package/components/p-k_E4tX5Z.js +0 -4
- package/components/p-oD4kcBRX.js +0 -4
- package/components/p-scxfI1Dd.js +0 -4
- package/components/p-yzCsOZE2.js +0 -4
- package/dist/cjs/config-xninhj0J.js +0 -201
- package/dist/cjs/dir-Cn0z1rJH.js +0 -20
- package/dist/cjs/input.utils-DetjmtH2.js +0 -150
- package/dist/cjs/notch-controller-18PzRGXd.js +0 -155
- package/dist/collection/components/picker-legacy/animations/ios.enter.js +0 -27
- package/dist/collection/components/picker-legacy/animations/ios.leave.js +0 -23
- package/dist/collection/components/picker-legacy/picker-interface.js +0 -1
- package/dist/collection/components/picker-legacy/picker.ios.css +0 -300
- package/dist/collection/components/picker-legacy/picker.js +0 -890
- package/dist/collection/components/picker-legacy/picker.md.css +0 -287
- package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -231
- package/dist/collection/components/picker-legacy-column/picker-column.js +0 -422
- package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -222
- package/dist/collection/components/picker-legacy-column/test/test.utils.js +0 -43
- package/dist/esm/config-DQCONYYp.js +0 -195
- package/dist/esm/dir-C53feagD.js +0 -18
- package/dist/esm/input.utils-Y6NgW8bw.js +0 -147
- package/dist/esm/notch-controller-DKDjU_O7.js +0 -153
- package/dist/ionic/p-01f81ea5.entry.js +0 -4
- package/dist/ionic/p-06c232a4.entry.js +0 -4
- package/dist/ionic/p-0dc33652.entry.js +0 -4
- package/dist/ionic/p-10e833ef.entry.js +0 -4
- package/dist/ionic/p-20b1a044.entry.js +0 -4
- package/dist/ionic/p-21eb76d5.entry.js +0 -4
- package/dist/ionic/p-2394a9a6.entry.js +0 -4
- package/dist/ionic/p-27d30585.entry.js +0 -4
- package/dist/ionic/p-2a05aa64.entry.js +0 -4
- package/dist/ionic/p-2b204c59.entry.js +0 -4
- package/dist/ionic/p-2fa58e80.entry.js +0 -4
- package/dist/ionic/p-3353c229.entry.js +0 -4
- package/dist/ionic/p-33704f20.entry.js +0 -4
- package/dist/ionic/p-34586ead.entry.js +0 -4
- package/dist/ionic/p-390ca786.entry.js +0 -4
- package/dist/ionic/p-3ae5f277.entry.js +0 -4
- package/dist/ionic/p-4654ae1c.entry.js +0 -4
- package/dist/ionic/p-4745f534.entry.js +0 -4
- package/dist/ionic/p-4858af1f.entry.js +0 -4
- package/dist/ionic/p-4ac4f3d6.entry.js +0 -4
- package/dist/ionic/p-4baa5b82.entry.js +0 -4
- package/dist/ionic/p-4e92a11f.entry.js +0 -4
- package/dist/ionic/p-5018dfc8.entry.js +0 -4
- package/dist/ionic/p-50e1194a.entry.js +0 -4
- package/dist/ionic/p-5d1da0a2.entry.js +0 -4
- package/dist/ionic/p-5eb8e86d.entry.js +0 -4
- package/dist/ionic/p-65ebdf1b.entry.js +0 -4
- package/dist/ionic/p-75dc25ba.entry.js +0 -4
- package/dist/ionic/p-7c319341.entry.js +0 -4
- package/dist/ionic/p-829367ed.entry.js +0 -4
- package/dist/ionic/p-84d5ce05.entry.js +0 -4
- package/dist/ionic/p-874b4bd8.entry.js +0 -4
- package/dist/ionic/p-8eb8ee76.entry.js +0 -4
- package/dist/ionic/p-8fce95d5.entry.js +0 -4
- package/dist/ionic/p-9eeaBrnk.js +0 -4
- package/dist/ionic/p-9f1103ce.entry.js +0 -4
- package/dist/ionic/p-9f9db3a2.entry.js +0 -4
- package/dist/ionic/p-BGqMS-oh.js +0 -4
- package/dist/ionic/p-BTEOs1at.js +0 -4
- package/dist/ionic/p-BUFIpxKM.js +0 -4
- package/dist/ionic/p-C0eMdTCW.js +0 -4
- package/dist/ionic/p-C53feagD.js +0 -4
- package/dist/ionic/p-CFlfIb2g.js +0 -4
- package/dist/ionic/p-CKvCXMs9.js +0 -4
- package/dist/ionic/p-Cl0B-RWe.js +0 -4
- package/dist/ionic/p-CtWGkNnJ.js +0 -4
- package/dist/ionic/p-CwdymDLH.js +0 -4
- package/dist/ionic/p-Cx3IXROA.js +0 -4
- package/dist/ionic/p-D-3ycHmd.js +0 -4
- package/dist/ionic/p-D13Eaw-8.js +0 -4
- package/dist/ionic/p-DC3RagnA.js +0 -4
- package/dist/ionic/p-DIuEbVLu.js +0 -4
- package/dist/ionic/p-DSG2s2Eb.js +0 -4
- package/dist/ionic/p-Dfbt-q2k.js +0 -4
- package/dist/ionic/p-DiVJyqlX.js +0 -4
- package/dist/ionic/p-DoJvtrbw.js +0 -4
- package/dist/ionic/p-DqN5EA2O.js +0 -4
- package/dist/ionic/p-DzWaWHGc.js +0 -4
- package/dist/ionic/p-Nqf6uvGh.js +0 -4
- package/dist/ionic/p-SNAkTDfm.js +0 -4
- package/dist/ionic/p-VAemlbDS.js +0 -4
- package/dist/ionic/p-Wk5HzclC.js +0 -4
- package/dist/ionic/p-a3bdcae6.entry.js +0 -4
- package/dist/ionic/p-aaeedb6b.entry.js +0 -4
- package/dist/ionic/p-bfc9bb0f.entry.js +0 -4
- package/dist/ionic/p-c0fb8edd.entry.js +0 -4
- package/dist/ionic/p-c38b648e.entry.js +0 -4
- package/dist/ionic/p-c4d8641b.entry.js +0 -4
- package/dist/ionic/p-ca2ab74d.entry.js +0 -4
- package/dist/ionic/p-d889ff6d.entry.js +0 -4
- package/dist/ionic/p-e0be05c5.entry.js +0 -4
- package/dist/ionic/p-ef4c3bee.entry.js +0 -4
- package/dist/ionic/p-fd7eebc4.entry.js +0 -4
- package/dist/ionic/p-mjKAFv89.js +0 -4
- package/dist/ionic/p-tcQvqkiX.js +0 -5
- package/dist/ionic/p-viFHDgRs.js +0 -4
- package/dist/ionic/p-xWb6fgfq.js +0 -4
- package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +0 -5
- package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +0 -5
- package/dist/types/components/picker-legacy/picker-interface.d.ts +0 -52
- package/dist/types/components/picker-legacy/picker.d.ts +0 -158
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
- package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +0 -9
- /package/components/{p-CO7fmmxt.js → p-LpMHEu3v.js} +0 -0
|
@@ -20,18 +20,18 @@ export class PickerColumn {
|
|
|
20
20
|
this.isColumnVisible = false;
|
|
21
21
|
this.canExitInputMode = true;
|
|
22
22
|
this.updateValueTextOnScroll = false;
|
|
23
|
+
this.isUserScroll = false;
|
|
24
|
+
/**
|
|
25
|
+
* The haptics for the wheel picker are an iOS-only feature. As a result,
|
|
26
|
+
* they should be disabled on Android.
|
|
27
|
+
*/
|
|
28
|
+
this.enableHaptics = false;
|
|
23
29
|
this.ariaLabel = null;
|
|
24
30
|
this.isActive = false;
|
|
25
31
|
/**
|
|
26
32
|
* If `true`, the user cannot interact with the picker.
|
|
27
33
|
*/
|
|
28
34
|
this.disabled = false;
|
|
29
|
-
/**
|
|
30
|
-
* The color to use from your application's color palette.
|
|
31
|
-
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
32
|
-
* For more information on colors, see [theming](/docs/theming/basics).
|
|
33
|
-
*/
|
|
34
|
-
this.color = 'primary';
|
|
35
35
|
/**
|
|
36
36
|
* If `true`, tapping the picker will
|
|
37
37
|
* reveal a number input keyboard that lets
|
|
@@ -57,6 +57,12 @@ export class PickerColumn {
|
|
|
57
57
|
*/
|
|
58
58
|
this.canExitInputMode = canExitInputMode;
|
|
59
59
|
this.updateValueTextOnScroll = false;
|
|
60
|
+
/**
|
|
61
|
+
* This scroll takes over from whatever the user was doing, so an outside
|
|
62
|
+
* press must not commit an option the column is only passing through.
|
|
63
|
+
*/
|
|
64
|
+
this.isUserScroll = false;
|
|
65
|
+
this.stopWatchingForOutsidePress();
|
|
60
66
|
scrollEl.scroll({
|
|
61
67
|
top,
|
|
62
68
|
left: 0,
|
|
@@ -111,6 +117,117 @@ export class PickerColumn {
|
|
|
111
117
|
}
|
|
112
118
|
this.isActive = state;
|
|
113
119
|
};
|
|
120
|
+
this.clearScrollEndTimeout = () => {
|
|
121
|
+
if (this.scrollEndTimeout) {
|
|
122
|
+
clearTimeout(this.scrollEndTimeout);
|
|
123
|
+
this.scrollEndTimeout = undefined;
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* Resets the idle timer that commits the centered option.
|
|
128
|
+
*/
|
|
129
|
+
this.resetScrollEndTimeout = () => {
|
|
130
|
+
this.clearScrollEndTimeout();
|
|
131
|
+
this.scrollEndTimeout = setTimeout(this.settle, SCROLL_END_DELAY);
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* Capture so the column still commits if an application's own pointerdown
|
|
135
|
+
* handler stops the event before it reaches the document.
|
|
136
|
+
*/
|
|
137
|
+
this.watchForOutsidePress = () => {
|
|
138
|
+
doc?.addEventListener('pointerdown', this.onPointerDownOutside, { capture: true });
|
|
139
|
+
};
|
|
140
|
+
this.stopWatchingForOutsidePress = () => {
|
|
141
|
+
doc?.removeEventListener('pointerdown', this.onPointerDownOutside, { capture: true });
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Resets everything the current scroll interaction is holding, so nothing
|
|
145
|
+
* pending on it can commit later.
|
|
146
|
+
*/
|
|
147
|
+
this.discardScroll = () => {
|
|
148
|
+
this.stopWatchingForOutsidePress();
|
|
149
|
+
this.clearScrollEndTimeout();
|
|
150
|
+
this.scrollEndCallback = undefined;
|
|
151
|
+
this.centeredOption = undefined;
|
|
152
|
+
this.haltedAtScrollTop = undefined;
|
|
153
|
+
this.isScrolling = false;
|
|
154
|
+
this.isUserScroll = false;
|
|
155
|
+
this.canExitInputMode = true;
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* Commits the option that is currently centered under the highlight and ends
|
|
159
|
+
* the scroll interaction.
|
|
160
|
+
*/
|
|
161
|
+
this.settle = () => {
|
|
162
|
+
const { centeredOption } = this;
|
|
163
|
+
this.clearScrollEndTimeout();
|
|
164
|
+
this.stopWatchingForOutsidePress();
|
|
165
|
+
this.isUserScroll = false;
|
|
166
|
+
this.isScrolling = false;
|
|
167
|
+
this.updateValueTextOnScroll = true;
|
|
168
|
+
this.enableHaptics && hapticSelectionEnd();
|
|
169
|
+
/**
|
|
170
|
+
* Certain tasks (such as those that
|
|
171
|
+
* cause re-renders) should only be done
|
|
172
|
+
* once scrolling has finished, otherwise
|
|
173
|
+
* flickering may occur.
|
|
174
|
+
*/
|
|
175
|
+
const { scrollEndCallback } = this;
|
|
176
|
+
if (scrollEndCallback) {
|
|
177
|
+
scrollEndCallback();
|
|
178
|
+
this.scrollEndCallback = undefined;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Reset this flag as the
|
|
182
|
+
* next scroll interaction could
|
|
183
|
+
* be a scroll from the user. In this
|
|
184
|
+
* case, we should exit input mode.
|
|
185
|
+
*/
|
|
186
|
+
this.canExitInputMode = true;
|
|
187
|
+
if (centeredOption !== undefined) {
|
|
188
|
+
// Cleared here so a later scroll that centers nothing cannot fall back on it.
|
|
189
|
+
this.centeredOption = undefined;
|
|
190
|
+
if (centeredOption.isConnected) {
|
|
191
|
+
this.setValue(centeredOption.value);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Commits the option the user can see when they press anything outside of the
|
|
197
|
+
* column during a scroll they started. This runs on pointerdown rather than
|
|
198
|
+
* click so the value is up to date by the time an application's own click
|
|
199
|
+
* handler (a Save button, for example) reads it.
|
|
200
|
+
*/
|
|
201
|
+
this.onPointerDownOutside = (ev) => {
|
|
202
|
+
const { centeredOption, parentEl, scrollEl } = this;
|
|
203
|
+
if (!this.isScrolling) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* The column can live in another component's Shadow DOM, where a document
|
|
208
|
+
* listener sees the target retargeted to the outer host. The composed path
|
|
209
|
+
* is the only reliable way to tell a press on the column apart.
|
|
210
|
+
*/
|
|
211
|
+
const path = ev.composedPath();
|
|
212
|
+
/**
|
|
213
|
+
* A press anywhere in the parent picker counts as inside, so reaching for a
|
|
214
|
+
* sibling wheel leaves this column coasting.
|
|
215
|
+
*/
|
|
216
|
+
if (path.includes(this.el) || (parentEl != null && path.includes(parentEl))) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Landing on the centered option halts the in-flight momentum scroll, so the
|
|
221
|
+
* committed value and the option the user is left looking at agree. The
|
|
222
|
+
* option list can be replaced mid-scroll, and a detached option has no
|
|
223
|
+
* offset to center on.
|
|
224
|
+
*/
|
|
225
|
+
if (centeredOption !== undefined && centeredOption.isConnected) {
|
|
226
|
+
this.centerPickerItemInView(centeredOption, false, false);
|
|
227
|
+
this.haltedAtScrollTop = scrollEl?.scrollTop;
|
|
228
|
+
}
|
|
229
|
+
this.settle();
|
|
230
|
+
};
|
|
114
231
|
/**
|
|
115
232
|
* When the column scrolls, the component
|
|
116
233
|
* needs to determine which item is centered
|
|
@@ -118,28 +235,42 @@ export class PickerColumn {
|
|
|
118
235
|
* the item object.
|
|
119
236
|
*/
|
|
120
237
|
this.initializeScrollListener = () => {
|
|
121
|
-
|
|
122
|
-
* The haptics for the wheel picker are
|
|
123
|
-
* an iOS-only feature. As a result, they should
|
|
124
|
-
* be disabled on Android.
|
|
125
|
-
*/
|
|
126
|
-
const enableHaptics = isPlatform('ios');
|
|
238
|
+
this.enableHaptics = isPlatform('ios');
|
|
127
239
|
const { el, scrollEl } = this;
|
|
128
|
-
let timeout;
|
|
129
240
|
let activeEl = this.activeItem;
|
|
130
241
|
const scrollCallback = () => {
|
|
131
242
|
raf(() => {
|
|
132
|
-
|
|
133
|
-
|
|
243
|
+
/**
|
|
244
|
+
* This frame cannot be cancelled, and moving the column disconnects it
|
|
245
|
+
* without the observer reporting a change, so this checks live state.
|
|
246
|
+
*/
|
|
247
|
+
if (!this.el.isConnected || !this.isColumnVisible || !scrollEl)
|
|
134
248
|
return;
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
249
|
+
const { haltedAtScrollTop } = this;
|
|
250
|
+
if (haltedAtScrollTop !== undefined) {
|
|
251
|
+
/**
|
|
252
|
+
* Still at the halted position, so this frame is the halt landing
|
|
253
|
+
* rather than the wheel moving, and re-arming would start a second
|
|
254
|
+
* commit cycle.
|
|
255
|
+
*/
|
|
256
|
+
if (Math.abs(scrollEl.scrollTop - haltedAtScrollTop) <= HALT_TOLERANCE)
|
|
257
|
+
return;
|
|
258
|
+
this.haltedAtScrollTop = undefined;
|
|
138
259
|
}
|
|
260
|
+
// Armed before the early returns below, so a scroll never ends uncommitted.
|
|
261
|
+
this.resetScrollEndTimeout();
|
|
139
262
|
if (!this.isScrolling) {
|
|
140
|
-
enableHaptics && hapticSelectionStart();
|
|
263
|
+
this.enableHaptics && hapticSelectionStart();
|
|
141
264
|
this.isScrolling = true;
|
|
142
265
|
}
|
|
266
|
+
/**
|
|
267
|
+
* Only a user-driven scroll holds an uncommitted selection. Checked every
|
|
268
|
+
* frame because the user can take hold of the wheel mid-scroll, and
|
|
269
|
+
* re-adding the same listener is a no-op.
|
|
270
|
+
*/
|
|
271
|
+
if (this.isUserScroll) {
|
|
272
|
+
this.watchForOutsidePress();
|
|
273
|
+
}
|
|
143
274
|
/**
|
|
144
275
|
* Select item in the center of the column
|
|
145
276
|
* which is the month/year that we want to select
|
|
@@ -195,22 +326,27 @@ export class PickerColumn {
|
|
|
195
326
|
*/
|
|
196
327
|
if (newActiveElement === undefined) {
|
|
197
328
|
const fallbackActiveElement = referenceNode.elementFromPoint(centerX, centerY);
|
|
198
|
-
if (
|
|
329
|
+
if (fallbackActiveElement?.tagName === 'ION-PICKER-COLUMN-OPTION') {
|
|
199
330
|
newActiveElement = fallbackActiveElement;
|
|
200
331
|
}
|
|
201
332
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
333
|
+
/**
|
|
334
|
+
* A scroll can land with no selectable option centered, such as an
|
|
335
|
+
* overscroll bounce briefly centering the empty padding rows. Keep the
|
|
336
|
+
* current selection until an option is centered again.
|
|
337
|
+
*/
|
|
205
338
|
if (newActiveElement === undefined || newActiveElement.disabled) {
|
|
206
339
|
return;
|
|
207
340
|
}
|
|
341
|
+
if (activeEl !== undefined) {
|
|
342
|
+
this.setPickerItemActiveState(activeEl, false);
|
|
343
|
+
}
|
|
208
344
|
/**
|
|
209
345
|
* If we are selecting a new value,
|
|
210
346
|
* we need to run haptics again.
|
|
211
347
|
*/
|
|
212
348
|
if (newActiveElement !== activeEl) {
|
|
213
|
-
enableHaptics && hapticSelectionChanged();
|
|
349
|
+
this.enableHaptics && hapticSelectionChanged();
|
|
214
350
|
if (this.canExitInputMode) {
|
|
215
351
|
/**
|
|
216
352
|
* The native iOS wheel picker
|
|
@@ -240,34 +376,16 @@ export class PickerColumn {
|
|
|
240
376
|
* again before announcing the new value. The correct valuetext will be set on render.
|
|
241
377
|
*/
|
|
242
378
|
if (this.updateValueTextOnScroll) {
|
|
243
|
-
|
|
379
|
+
this.assistiveFocusable?.setAttribute('aria-valuetext', this.getOptionValueText(newActiveElement));
|
|
244
380
|
}
|
|
245
|
-
|
|
246
|
-
this.isScrolling = false;
|
|
247
|
-
this.updateValueTextOnScroll = true;
|
|
248
|
-
enableHaptics && hapticSelectionEnd();
|
|
249
|
-
/**
|
|
250
|
-
* Certain tasks (such as those that
|
|
251
|
-
* cause re-renders) should only be done
|
|
252
|
-
* once scrolling has finished, otherwise
|
|
253
|
-
* flickering may occur.
|
|
254
|
-
*/
|
|
255
|
-
const { scrollEndCallback } = this;
|
|
256
|
-
if (scrollEndCallback) {
|
|
257
|
-
scrollEndCallback();
|
|
258
|
-
this.scrollEndCallback = undefined;
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* Reset this flag as the
|
|
262
|
-
* next scroll interaction could
|
|
263
|
-
* be a scroll from the user. In this
|
|
264
|
-
* case, we should exit input mode.
|
|
265
|
-
*/
|
|
266
|
-
this.canExitInputMode = true;
|
|
267
|
-
this.setValue(newActiveElement.value);
|
|
268
|
-
}, 250);
|
|
381
|
+
this.centeredOption = newActiveElement;
|
|
269
382
|
});
|
|
270
383
|
};
|
|
384
|
+
const userScrollCallback = () => {
|
|
385
|
+
this.isUserScroll = true;
|
|
386
|
+
// Taking hold of the wheel ends the halt even if it has not moved yet.
|
|
387
|
+
this.haltedAtScrollTop = undefined;
|
|
388
|
+
};
|
|
271
389
|
/**
|
|
272
390
|
* Wrap this in an raf so that the scroll callback
|
|
273
391
|
* does not fire when component is initially shown.
|
|
@@ -276,8 +394,19 @@ export class PickerColumn {
|
|
|
276
394
|
if (!scrollEl)
|
|
277
395
|
return;
|
|
278
396
|
scrollEl.addEventListener('scroll', scrollCallback);
|
|
397
|
+
scrollEl.addEventListener('pointerdown', userScrollCallback);
|
|
398
|
+
scrollEl.addEventListener('wheel', userScrollCallback, { passive: true });
|
|
399
|
+
/**
|
|
400
|
+
* A `pointerdown` fires once per touch, so a drag that pauses long enough
|
|
401
|
+
* to commit would look like a scroll the column started. A `touchmove`
|
|
402
|
+
* keeps arriving while the finger moves.
|
|
403
|
+
*/
|
|
404
|
+
scrollEl.addEventListener('touchmove', userScrollCallback, { passive: true });
|
|
279
405
|
this.destroyScrollListener = () => {
|
|
280
406
|
scrollEl.removeEventListener('scroll', scrollCallback);
|
|
407
|
+
scrollEl.removeEventListener('pointerdown', userScrollCallback);
|
|
408
|
+
scrollEl.removeEventListener('wheel', userScrollCallback);
|
|
409
|
+
scrollEl.removeEventListener('touchmove', userScrollCallback);
|
|
281
410
|
};
|
|
282
411
|
});
|
|
283
412
|
};
|
|
@@ -408,8 +537,7 @@ export class PickerColumn {
|
|
|
408
537
|
* Utility to generate the correct text for aria-valuetext.
|
|
409
538
|
*/
|
|
410
539
|
this.getOptionValueText = (el) => {
|
|
411
|
-
|
|
412
|
-
return el ? (_a = el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : el.innerText : '';
|
|
540
|
+
return el ? el.getAttribute('aria-label') ?? el.innerText : '';
|
|
413
541
|
};
|
|
414
542
|
}
|
|
415
543
|
ariaLabelChanged(newValue) {
|
|
@@ -463,6 +591,14 @@ export class PickerColumn {
|
|
|
463
591
|
}
|
|
464
592
|
else {
|
|
465
593
|
this.isColumnVisible = false;
|
|
594
|
+
/**
|
|
595
|
+
* The pending timer still runs so it resets the scroll state, but the
|
|
596
|
+
* option it would have committed is dropped. A column the user cannot
|
|
597
|
+
* see should not change its value.
|
|
598
|
+
*/
|
|
599
|
+
this.stopWatchingForOutsidePress();
|
|
600
|
+
this.centeredOption = undefined;
|
|
601
|
+
this.haltedAtScrollTop = undefined;
|
|
466
602
|
if (this.destroyScrollListener) {
|
|
467
603
|
this.destroyScrollListener();
|
|
468
604
|
this.destroyScrollListener = undefined;
|
|
@@ -531,8 +667,14 @@ export class PickerColumn {
|
|
|
531
667
|
}
|
|
532
668
|
}
|
|
533
669
|
connectedCallback() {
|
|
534
|
-
|
|
535
|
-
|
|
670
|
+
this.ariaLabel = this.el.getAttribute('aria-label') ?? 'Select a value';
|
|
671
|
+
}
|
|
672
|
+
disconnectedCallback() {
|
|
673
|
+
/**
|
|
674
|
+
* A pending settle would otherwise commit a value on a column that is no
|
|
675
|
+
* longer in the DOM.
|
|
676
|
+
*/
|
|
677
|
+
this.discardScroll();
|
|
536
678
|
}
|
|
537
679
|
get activeItem() {
|
|
538
680
|
const { value } = this;
|
|
@@ -551,14 +693,14 @@ export class PickerColumn {
|
|
|
551
693
|
render() {
|
|
552
694
|
const { color, disabled, isActive, numericInput } = this;
|
|
553
695
|
const mode = getIonMode(this);
|
|
554
|
-
return (h(Host, { key: '
|
|
696
|
+
return (h(Host, { key: '60a893619d0b01fba53fbccef67a10d533a22657', class: createColorClasses(color, {
|
|
555
697
|
[mode]: true,
|
|
556
698
|
['picker-column-active']: isActive,
|
|
557
699
|
['picker-column-numeric-input']: numericInput,
|
|
558
700
|
['picker-column-disabled']: disabled,
|
|
559
|
-
}) }, h("slot", { key: '
|
|
701
|
+
}) }, h("slot", { key: '79f1e047f89c5ec916ed02efaac56ef3f73b8969', name: "prefix" }), h("div", { key: 'c45c86e88353a196ff38159f40f390bc27852c9e', class: "picker-opts", ref: (el) => {
|
|
560
702
|
this.scrollEl = el;
|
|
561
|
-
}, role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": this.getOptionValueText(this.activeItem), "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }, h("div", { key: '
|
|
703
|
+
}, role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": this.getOptionValueText(this.activeItem), "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }, h("div", { key: 'e02d76752f5d3dd4cd2846fbc28645f1508a4b49', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'd577bcbadc530970b2781692b050811633625c5a', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'c89e78c3a896bc1f55b922d01df16fdbb1259bdd', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("slot", { key: '6c597ff899692597432ee2aa0b42de53b86deed4' }), h("div", { key: '91686ed94f14c47647836ed4d63e54b5c54ee3b9', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '2ff058c6d0e8cef4e143c2d848f9a52684579af1', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'bc7386bec6fced36e44084a7a137b3fe6506c996', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), h("slot", { key: '8835fd3f4e025bce964e6f05984c9aaadc20d7fb', name: "suffix" })));
|
|
562
704
|
}
|
|
563
705
|
static get is() { return "ion-picker-column"; }
|
|
564
706
|
static get encapsulation() { return "shadow"; }
|
|
@@ -637,8 +779,7 @@ export class PickerColumn {
|
|
|
637
779
|
"getter": false,
|
|
638
780
|
"setter": false,
|
|
639
781
|
"reflect": true,
|
|
640
|
-
"attribute": "color"
|
|
641
|
-
"defaultValue": "'primary'"
|
|
782
|
+
"attribute": "color"
|
|
642
783
|
},
|
|
643
784
|
"numericInput": {
|
|
644
785
|
"type": "boolean",
|
|
@@ -783,3 +924,16 @@ export class PickerColumn {
|
|
|
783
924
|
}
|
|
784
925
|
}
|
|
785
926
|
const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
|
|
927
|
+
/**
|
|
928
|
+
* How long the column must be idle before the centered option is treated as
|
|
929
|
+
* the user's selection. Replaceable by the `scrollend` event once that is
|
|
930
|
+
* supported everywhere (https://caniuse.com/?search=scrollend).
|
|
931
|
+
*/
|
|
932
|
+
const SCROLL_END_DELAY = 250;
|
|
933
|
+
/**
|
|
934
|
+
* How far, in pixels, the column may report from where it was halted and still
|
|
935
|
+
* count as having stayed there. Centering targets a position between two snap
|
|
936
|
+
* points, so mandatory snapping corrects it by half the column height less
|
|
937
|
+
* three option heights: 2px at the default sizes.
|
|
938
|
+
*/
|
|
939
|
+
const HALT_TOLERANCE = 2;
|
|
@@ -26,12 +26,6 @@ export class PickerColumnOption {
|
|
|
26
26
|
* If `true`, the user cannot interact with the picker column option.
|
|
27
27
|
*/
|
|
28
28
|
this.disabled = false;
|
|
29
|
-
/**
|
|
30
|
-
* The color to use from your application's color palette.
|
|
31
|
-
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
32
|
-
* For more information on colors, see [theming](/docs/theming/basics).
|
|
33
|
-
*/
|
|
34
|
-
this.color = 'primary';
|
|
35
29
|
}
|
|
36
30
|
/**
|
|
37
31
|
* The aria-label of the option has changed after the
|
|
@@ -91,10 +85,10 @@ export class PickerColumnOption {
|
|
|
91
85
|
render() {
|
|
92
86
|
const { color, disabled, ariaLabel } = this;
|
|
93
87
|
const mode = getIonMode(this);
|
|
94
|
-
return (h(Host, { key: '
|
|
88
|
+
return (h(Host, { key: '81f1938e0114392a6e035442b8bc9fcdf73fda84', class: createColorClasses(color, {
|
|
95
89
|
[mode]: true,
|
|
96
90
|
['option-disabled']: disabled,
|
|
97
|
-
}) }, h("div", { key: '
|
|
91
|
+
}) }, h("div", { key: 'b0bb84fd39ea38ea3037ad43c6be8e8dfca2e7d1', class: 'picker-column-option-button', role: "button", "aria-label": ariaLabel, onClick: () => this.onClick() }, h("slot", { key: 'e0305b721618aef05823032ccd58214b0f184ca9' }))));
|
|
98
92
|
}
|
|
99
93
|
static get is() { return "ion-picker-column-option"; }
|
|
100
94
|
static get encapsulation() { return "shadow"; }
|
|
@@ -175,8 +169,7 @@ export class PickerColumnOption {
|
|
|
175
169
|
"getter": false,
|
|
176
170
|
"setter": false,
|
|
177
171
|
"reflect": true,
|
|
178
|
-
"attribute": "color"
|
|
179
|
-
"defaultValue": "'primary'"
|
|
172
|
+
"attribute": "color"
|
|
180
173
|
}
|
|
181
174
|
};
|
|
182
175
|
}
|
|
@@ -93,11 +93,16 @@
|
|
|
93
93
|
* - datetime sets `part="... active"` on the option. This is the reliable
|
|
94
94
|
* value-based source of truth and keeps the option colored when the column
|
|
95
95
|
* lives inside datetime's shadow DOM, where the class can be missed
|
|
96
|
-
* (WebKit's elementsFromPoint is unreliable in a shadow root).
|
|
96
|
+
* (WebKit's elementsFromPoint is unreliable in a shadow root).
|
|
97
97
|
* TODO(FW-6594): Determine if this workaround can be removed when iOS 16 is
|
|
98
98
|
* no longer supported.
|
|
99
99
|
*/
|
|
100
100
|
:host(.option-active),
|
|
101
101
|
:host([part~=active]) {
|
|
102
|
+
color: var(--ion-color-primary, #0054e9);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
:host(.ion-color.option-active),
|
|
106
|
+
:host(.ion-color[part~=active]) {
|
|
102
107
|
color: var(--ion-color-base);
|
|
103
108
|
}
|
|
@@ -19,7 +19,6 @@ const POPOVER_IOS_MIN_EDGE_MARGIN = 25;
|
|
|
19
19
|
*/
|
|
20
20
|
// TODO(FW-2832): types
|
|
21
21
|
export const iosEnterAnimation = (baseEl, opts) => {
|
|
22
|
-
var _a;
|
|
23
22
|
const { event: ev, size, trigger, reference, side, align } = opts;
|
|
24
23
|
const doc = baseEl.ownerDocument;
|
|
25
24
|
const isRTL = doc.dir === 'rtl';
|
|
@@ -28,7 +27,7 @@ export const iosEnterAnimation = (baseEl, opts) => {
|
|
|
28
27
|
const root = getElementRoot(baseEl);
|
|
29
28
|
const contentEl = root.querySelector('.popover-content');
|
|
30
29
|
const arrowEl = root.querySelector('.popover-arrow');
|
|
31
|
-
const referenceSizeEl = trigger ||
|
|
30
|
+
const referenceSizeEl = trigger || ev?.detail?.ionShadowTarget || ev?.target;
|
|
32
31
|
const { contentWidth, contentHeight } = getPopoverDimensions(size, contentEl, referenceSizeEl);
|
|
33
32
|
const { arrowWidth, arrowHeight } = getArrowDimensions(arrowEl);
|
|
34
33
|
const defaultPosition = {
|
|
@@ -10,7 +10,6 @@ const POPOVER_MD_BODY_PADDING = 12;
|
|
|
10
10
|
*/
|
|
11
11
|
// TODO(FW-2832): types
|
|
12
12
|
export const mdEnterAnimation = (baseEl, opts) => {
|
|
13
|
-
var _a;
|
|
14
13
|
const { event: ev, size, trigger, reference, side, align } = opts;
|
|
15
14
|
const doc = baseEl.ownerDocument;
|
|
16
15
|
const isRTL = doc.dir === 'rtl';
|
|
@@ -18,7 +17,7 @@ export const mdEnterAnimation = (baseEl, opts) => {
|
|
|
18
17
|
const bodyHeight = doc.defaultView.innerHeight;
|
|
19
18
|
const root = getElementRoot(baseEl);
|
|
20
19
|
const contentEl = root.querySelector('.popover-content');
|
|
21
|
-
const referenceSizeEl = trigger ||
|
|
20
|
+
const referenceSizeEl = trigger || ev?.detail?.ionShadowTarget || ev?.target;
|
|
22
21
|
const { contentWidth, contentHeight } = getPopoverDimensions(size, contentEl, referenceSizeEl);
|
|
23
22
|
const defaultPosition = {
|
|
24
23
|
top: bodyHeight / 2 - contentHeight / 2,
|
|
@@ -177,6 +177,21 @@
|
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
+
:host(.select-popover-rich-content) {
|
|
181
|
+
/**
|
|
182
|
+
* Rich content options (start/end slots, descriptions) need
|
|
183
|
+
* more horizontal space than the default fixed width provides,
|
|
184
|
+
* otherwise content gets cut off.
|
|
185
|
+
*
|
|
186
|
+
* A viewport-relative value is used instead of `auto` or
|
|
187
|
+
* `max-content` because the enter animation reads `--width`
|
|
188
|
+
* via getBoundingClientRect() before the first layout pass
|
|
189
|
+
* completes. Intrinsic values return 0 at that point and
|
|
190
|
+
* cause the popover to be positioned off-screen on first open.
|
|
191
|
+
*/
|
|
192
|
+
--width: clamp(250px, calc(100vw - 40px), 400px);
|
|
193
|
+
}
|
|
194
|
+
|
|
180
195
|
/**
|
|
181
196
|
* Convert a font size to a dynamic font size.
|
|
182
197
|
* Fonts that participate in Dynamic Type should use
|
|
@@ -7,7 +7,7 @@ import { CoreDelegate, attachComponent, detachComponent } from "../../utils/fram
|
|
|
7
7
|
import { addEventListener, raf, hasLazyBuild } from "../../utils/helpers";
|
|
8
8
|
import { createLockController } from "../../utils/lock-controller";
|
|
9
9
|
import { printIonWarning } from "../../utils/logging/index";
|
|
10
|
-
import { BACKDROP, dismiss, eventMethod, prepareOverlay, present,
|
|
10
|
+
import { BACKDROP, cleanupRootFocusTrapAccessibility, dismiss, eventMethod, FOCUS_TRAP_DISABLE_CLASS, prepareOverlay, present, restoreRootFocusTrapAccessibility, setOverlayId, } from "../../utils/overlays";
|
|
11
11
|
import { isPlatform } from "../../utils/platform";
|
|
12
12
|
import { getClassMap } from "../../utils/theme";
|
|
13
13
|
import { deepReady, waitForMount } from "../../utils/transition/index";
|
|
@@ -219,6 +219,13 @@ export class Popover {
|
|
|
219
219
|
const { configureTriggerInteraction, el } = this;
|
|
220
220
|
prepareOverlay(el);
|
|
221
221
|
configureTriggerInteraction();
|
|
222
|
+
// Re-apply the root lock if moved without dismiss() being called
|
|
223
|
+
if (this.presented) {
|
|
224
|
+
restoreRootFocusTrapAccessibility(el);
|
|
225
|
+
// The disconnect tore down the header observer, and `present()` is its
|
|
226
|
+
// only other caller, so a move mid-layout would lose the recalculation.
|
|
227
|
+
this.recalculateContentOnHeaderReady();
|
|
228
|
+
}
|
|
222
229
|
}
|
|
223
230
|
disconnectedCallback() {
|
|
224
231
|
const { destroyTriggerInteraction } = this;
|
|
@@ -229,11 +236,14 @@ export class Popover {
|
|
|
229
236
|
this.headerResizeObserver.disconnect();
|
|
230
237
|
this.headerResizeObserver = undefined;
|
|
231
238
|
}
|
|
239
|
+
// Clean up aria-hidden if removed without dismiss() being called
|
|
240
|
+
if (this.presented) {
|
|
241
|
+
cleanupRootFocusTrapAccessibility();
|
|
242
|
+
}
|
|
232
243
|
}
|
|
233
244
|
componentWillLoad() {
|
|
234
|
-
var _a, _b;
|
|
235
245
|
const { el } = this;
|
|
236
|
-
const popoverId =
|
|
246
|
+
const popoverId = this.htmlAttributes?.id ?? setOverlayId(el);
|
|
237
247
|
this.parentPopover = el.closest(`ion-popover:not(#${popoverId})`);
|
|
238
248
|
if (this.alignment === undefined) {
|
|
239
249
|
this.alignment = getIonMode(this) === 'ios' ? 'center' : 'start';
|
|
@@ -383,8 +393,7 @@ export class Popover {
|
|
|
383
393
|
* of the content to the height of the header correctly.
|
|
384
394
|
*/
|
|
385
395
|
recalculateContentOnHeaderReady() {
|
|
386
|
-
|
|
387
|
-
const popoverContent = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.popover-content');
|
|
396
|
+
const popoverContent = this.el.shadowRoot?.querySelector('.popover-content');
|
|
388
397
|
if (!popoverContent) {
|
|
389
398
|
return;
|
|
390
399
|
}
|
|
@@ -394,10 +403,15 @@ export class Popover {
|
|
|
394
403
|
if (!header || contentElements.length === 0) {
|
|
395
404
|
return;
|
|
396
405
|
}
|
|
406
|
+
// Both `present()` and a reconnect call this, so drop any existing
|
|
407
|
+
// observer. Below the guards, so a call that bails cannot leave none.
|
|
408
|
+
if (this.headerResizeObserver) {
|
|
409
|
+
this.headerResizeObserver.disconnect();
|
|
410
|
+
this.headerResizeObserver = undefined;
|
|
411
|
+
}
|
|
397
412
|
this.headerResizeObserver = new ResizeObserver(async () => {
|
|
398
|
-
var _a;
|
|
399
413
|
if (header.offsetHeight > 0) {
|
|
400
|
-
|
|
414
|
+
this.headerResizeObserver?.disconnect();
|
|
401
415
|
this.headerResizeObserver = undefined;
|
|
402
416
|
for (const contentEl of contentElements) {
|
|
403
417
|
await contentEl.recalculateDimensions();
|
|
@@ -467,9 +481,18 @@ export class Popover {
|
|
|
467
481
|
const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
|
|
468
482
|
const desktop = isPlatform('desktop');
|
|
469
483
|
const enableArrow = arrow && !parentPopover;
|
|
470
|
-
return (h(Host,
|
|
484
|
+
return (h(Host, { key: 'b5e9c788f58397203976d5f8302dfb89e916efe1', "aria-modal": "true", "no-router": true, tabindex: "-1", ...htmlAttributes, style: {
|
|
471
485
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
472
|
-
}, class:
|
|
486
|
+
}, class: {
|
|
487
|
+
...getClassMap(this.cssClass),
|
|
488
|
+
[mode]: true,
|
|
489
|
+
'popover-translucent': this.translucent,
|
|
490
|
+
'overlay-hidden': true,
|
|
491
|
+
'popover-desktop': desktop,
|
|
492
|
+
[`popover-side-${side}`]: true,
|
|
493
|
+
[FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false,
|
|
494
|
+
'popover-nested': !!parentPopover,
|
|
495
|
+
}, onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }, !parentPopover && h("ion-backdrop", { key: 'f3977833c5b2c0087c286ee54363b478d69eb115', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: '1059893d6fd2932ca8adcdf8d45a5d66f4794727', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: '24d7988bdd95882ad77fcaa7112aeda55878bee4', class: "popover-arrow", part: "arrow" }), h("div", { key: '4d6992e0a9d629f11763045f9199f9a77fa521ab', class: "popover-content", part: "content" }, h("slot", { key: 'b29747419620a01a6c34e9e846cd529b0b210145' })))));
|
|
473
496
|
}
|
|
474
497
|
static get is() { return "ion-popover"; }
|
|
475
498
|
static get encapsulation() { return "shadow"; }
|
|
@@ -177,6 +177,21 @@
|
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
+
:host(.select-popover-rich-content) {
|
|
181
|
+
/**
|
|
182
|
+
* Rich content options (start/end slots, descriptions) need
|
|
183
|
+
* more horizontal space than the default fixed width provides,
|
|
184
|
+
* otherwise content gets cut off.
|
|
185
|
+
*
|
|
186
|
+
* A viewport-relative value is used instead of `auto` or
|
|
187
|
+
* `max-content` because the enter animation reads `--width`
|
|
188
|
+
* via getBoundingClientRect() before the first layout pass
|
|
189
|
+
* completes. Intrinsic values return 0 at that point and
|
|
190
|
+
* cause the popover to be positioned off-screen on first open.
|
|
191
|
+
*/
|
|
192
|
+
--width: clamp(250px, calc(100vw - 40px), 400px);
|
|
193
|
+
}
|
|
194
|
+
|
|
180
195
|
/**
|
|
181
196
|
* Convert a font size to a dynamic font size.
|
|
182
197
|
* Fonts that participate in Dynamic Type should use
|