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
|
@@ -206,12 +206,6 @@
|
|
|
206
206
|
}
|
|
207
207
|
|
|
208
208
|
.input-clear-icon {
|
|
209
|
-
-webkit-margin-start: auto;
|
|
210
|
-
margin-inline-start: auto;
|
|
211
|
-
-webkit-margin-end: auto;
|
|
212
|
-
margin-inline-end: auto;
|
|
213
|
-
margin-top: auto;
|
|
214
|
-
margin-bottom: auto;
|
|
215
209
|
padding-left: 0;
|
|
216
210
|
padding-right: 0;
|
|
217
211
|
padding-top: 0;
|
|
@@ -269,14 +263,47 @@
|
|
|
269
263
|
line-height: normal;
|
|
270
264
|
}
|
|
271
265
|
|
|
266
|
+
.input-control {
|
|
267
|
+
display: flex;
|
|
268
|
+
flex-grow: 1;
|
|
269
|
+
width: 100%;
|
|
270
|
+
/**
|
|
271
|
+
* Allows the control to shrink below the label and input's intrinsic
|
|
272
|
+
* width, preventing the start and end slots from being pushed outside
|
|
273
|
+
* the wrapper. The label and input truncate independently, so it can
|
|
274
|
+
* use whatever space remains after accounting for the slots.
|
|
275
|
+
*/
|
|
276
|
+
min-width: 0;
|
|
277
|
+
}
|
|
278
|
+
|
|
272
279
|
.native-wrapper {
|
|
273
280
|
display: flex;
|
|
274
281
|
position: relative;
|
|
275
282
|
flex-grow: 1;
|
|
276
|
-
align-items: center;
|
|
277
283
|
width: 100%;
|
|
278
284
|
}
|
|
279
285
|
|
|
286
|
+
/**
|
|
287
|
+
* When the label sits beside the input, the label should size to its content
|
|
288
|
+
* and the input should take the remaining space. A zero flex basis prevents
|
|
289
|
+
* the input from requesting its full width and forcing the label to shrink.
|
|
290
|
+
* Stacked and floating placements use a column layout, so their flex basis
|
|
291
|
+
* controls height instead and does not need to be overridden.
|
|
292
|
+
*/
|
|
293
|
+
:host(.input-label-placement-start) .native-wrapper,
|
|
294
|
+
:host(.input-label-placement-end) .native-wrapper,
|
|
295
|
+
:host(.input-label-placement-fixed) .native-wrapper {
|
|
296
|
+
flex: 1 1 0;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.input-start,
|
|
300
|
+
.input-end {
|
|
301
|
+
display: flex;
|
|
302
|
+
position: relative;
|
|
303
|
+
flex-shrink: 0;
|
|
304
|
+
align-items: center;
|
|
305
|
+
}
|
|
306
|
+
|
|
280
307
|
:host(.ion-touched.ion-invalid) {
|
|
281
308
|
--highlight-color: var(--highlight-color-invalid);
|
|
282
309
|
}
|
|
@@ -377,6 +404,12 @@
|
|
|
377
404
|
*/
|
|
378
405
|
display: flex;
|
|
379
406
|
align-items: center;
|
|
407
|
+
/**
|
|
408
|
+
* Allows the label to shrink below its intrinsic content width.
|
|
409
|
+
* Without this the label keeps its full width and can push the
|
|
410
|
+
* input and end slot outside the wrapper.
|
|
411
|
+
*/
|
|
412
|
+
min-width: 0;
|
|
380
413
|
/**
|
|
381
414
|
* Label text should not extend
|
|
382
415
|
* beyond the bounds of the input.
|
|
@@ -395,6 +428,18 @@
|
|
|
395
428
|
pointer-events: none;
|
|
396
429
|
}
|
|
397
430
|
|
|
431
|
+
/**
|
|
432
|
+
* When start/end slots are added or removed, we temporarily
|
|
433
|
+
* disable the label transition to prevent the floating label
|
|
434
|
+
* from animating as its position is adjusted.
|
|
435
|
+
*
|
|
436
|
+
* This class is applied by the start container controller, so
|
|
437
|
+
* renaming it here requires renaming it there too.
|
|
438
|
+
*/
|
|
439
|
+
:host(.skip-label-transition) .label-text-wrapper {
|
|
440
|
+
transition: none;
|
|
441
|
+
}
|
|
442
|
+
|
|
398
443
|
/**
|
|
399
444
|
* We need to use two elements instead of
|
|
400
445
|
* one. The .label-text-wrapper is responsible
|
|
@@ -438,7 +483,7 @@
|
|
|
438
483
|
* Label is on the left of the input in LTR and
|
|
439
484
|
* on the right in RTL.
|
|
440
485
|
*/
|
|
441
|
-
:host(.input-label-placement-start) .input-
|
|
486
|
+
:host(.input-label-placement-start) .input-control {
|
|
442
487
|
flex-direction: row;
|
|
443
488
|
}
|
|
444
489
|
|
|
@@ -460,7 +505,7 @@
|
|
|
460
505
|
* Label is on the right of the input in LTR and
|
|
461
506
|
* on the left in RTL.
|
|
462
507
|
*/
|
|
463
|
-
:host(.input-label-placement-end) .input-
|
|
508
|
+
:host(.input-label-placement-end) .input-control {
|
|
464
509
|
flex-direction: row-reverse;
|
|
465
510
|
}
|
|
466
511
|
|
|
@@ -508,10 +553,9 @@
|
|
|
508
553
|
* Floating: Label sits over the input when the input has no
|
|
509
554
|
* value and is blurred. Label sits above the input and is scaled
|
|
510
555
|
* down when the input is focused or has a value.
|
|
511
|
-
*
|
|
512
556
|
*/
|
|
513
|
-
:host(.input-label-placement-stacked) .input-
|
|
514
|
-
:host(.input-label-placement-floating) .input-
|
|
557
|
+
:host(.input-label-placement-stacked) .input-control,
|
|
558
|
+
:host(.input-label-placement-floating) .input-control {
|
|
515
559
|
flex-direction: column;
|
|
516
560
|
align-items: start;
|
|
517
561
|
}
|
|
@@ -542,18 +586,6 @@
|
|
|
542
586
|
}
|
|
543
587
|
}
|
|
544
588
|
|
|
545
|
-
/**
|
|
546
|
-
* Ensures the input does not
|
|
547
|
-
* overlap the label.
|
|
548
|
-
*/
|
|
549
|
-
:host(.input-label-placement-stacked) input,
|
|
550
|
-
:host(.input-label-placement-floating) input {
|
|
551
|
-
margin-left: 0;
|
|
552
|
-
margin-right: 0;
|
|
553
|
-
margin-top: 1px;
|
|
554
|
-
margin-bottom: 0;
|
|
555
|
-
}
|
|
556
|
-
|
|
557
589
|
/**
|
|
558
590
|
* This makes the label sit over the input
|
|
559
591
|
* when the input is blurred and has no value.
|
|
@@ -906,6 +938,14 @@
|
|
|
906
938
|
--border-radius: 4px;
|
|
907
939
|
--padding-start: 16px;
|
|
908
940
|
--padding-end: 16px;
|
|
941
|
+
/**
|
|
942
|
+
* The measured width of the start container, as a negative offset
|
|
943
|
+
* in LTR and a positive one in RTL. Written to the host by the
|
|
944
|
+
* start container controller, so renaming it here requires renaming
|
|
945
|
+
* it there too. Declared with a default so the label is positioned
|
|
946
|
+
* correctly before the first measurement runs.
|
|
947
|
+
*/
|
|
948
|
+
--internal-start-container-adjustment: 0px;
|
|
909
949
|
min-height: 56px;
|
|
910
950
|
}
|
|
911
951
|
|
|
@@ -960,15 +1000,25 @@
|
|
|
960
1000
|
border-bottom: none;
|
|
961
1001
|
}
|
|
962
1002
|
|
|
1003
|
+
/**
|
|
1004
|
+
* The resting label is positioned relative to the control so it can size to
|
|
1005
|
+
* the space between the start and end slots. When floating, the label needs
|
|
1006
|
+
* to escape the control and position itself relative to the wrapper instead.
|
|
1007
|
+
*/
|
|
1008
|
+
:host(.input-fill-outline:not(.label-floating)) .input-control {
|
|
1009
|
+
position: relative;
|
|
1010
|
+
}
|
|
1011
|
+
|
|
963
1012
|
:host(.input-fill-outline.input-label-placement-stacked) .label-text-wrapper,
|
|
964
1013
|
:host(.input-fill-outline.input-label-placement-floating) .label-text-wrapper {
|
|
965
1014
|
transform-origin: left top;
|
|
966
1015
|
position: absolute;
|
|
967
1016
|
/**
|
|
968
|
-
*
|
|
969
|
-
*
|
|
1017
|
+
* While resting this is the width of the text input, which already
|
|
1018
|
+
* excludes the start and end slots. Once the label floats the
|
|
1019
|
+
* containing block becomes the wrapper and the rule below takes over.
|
|
970
1020
|
*/
|
|
971
|
-
max-width:
|
|
1021
|
+
max-width: 100%;
|
|
972
1022
|
}
|
|
973
1023
|
:host-context([dir=rtl]):host(.input-fill-outline.input-label-placement-stacked) .label-text-wrapper, :host-context([dir=rtl]).input-fill-outline.input-label-placement-stacked .label-text-wrapper, :host-context([dir=rtl]):host(.input-fill-outline.input-label-placement-floating) .label-text-wrapper, :host-context([dir=rtl]).input-fill-outline.input-label-placement-floating .label-text-wrapper {
|
|
974
1024
|
transform-origin: right top;
|
|
@@ -993,7 +1043,7 @@
|
|
|
993
1043
|
* This makes the label sit above the input.
|
|
994
1044
|
*/
|
|
995
1045
|
:host(.label-floating.input-fill-outline) .label-text-wrapper {
|
|
996
|
-
transform:
|
|
1046
|
+
transform: translate(var(--internal-start-container-adjustment, 0px), -32%) scale(0.75);
|
|
997
1047
|
margin-left: 0;
|
|
998
1048
|
margin-right: 0;
|
|
999
1049
|
margin-top: 0;
|
|
@@ -1005,19 +1055,6 @@
|
|
|
1005
1055
|
max-width: calc((100% - var(--padding-start) - var(--padding-end) - 8px) / 0.75);
|
|
1006
1056
|
}
|
|
1007
1057
|
|
|
1008
|
-
/**
|
|
1009
|
-
* This ensures that the input does not
|
|
1010
|
-
* overlap the floating label while still
|
|
1011
|
-
* remaining visually centered.
|
|
1012
|
-
*/
|
|
1013
|
-
:host(.input-fill-outline.input-label-placement-stacked) input,
|
|
1014
|
-
:host(.input-fill-outline.input-label-placement-floating) input {
|
|
1015
|
-
margin-left: 0;
|
|
1016
|
-
margin-right: 0;
|
|
1017
|
-
margin-top: 6px;
|
|
1018
|
-
margin-bottom: 6px;
|
|
1019
|
-
}
|
|
1020
|
-
|
|
1021
1058
|
:host(.input-fill-outline) .input-outline-container {
|
|
1022
1059
|
left: 0;
|
|
1023
1060
|
right: 0;
|
|
@@ -1190,8 +1227,7 @@
|
|
|
1190
1227
|
}
|
|
1191
1228
|
|
|
1192
1229
|
.input-clear-icon ion-icon {
|
|
1193
|
-
|
|
1194
|
-
height: 22px;
|
|
1230
|
+
font-size: 22px;
|
|
1195
1231
|
}
|
|
1196
1232
|
|
|
1197
1233
|
:host(.input-disabled) {
|
|
@@ -75,7 +75,6 @@ export class InputOTP {
|
|
|
75
75
|
* Emits the `ionFocus` event when the input group gains focus.
|
|
76
76
|
*/
|
|
77
77
|
this.onFocus = (index) => (event) => {
|
|
78
|
-
var _a;
|
|
79
78
|
const { inputRefs } = this;
|
|
80
79
|
// Only emit ionFocus and set the focusedValue when the
|
|
81
80
|
// component first gains focus
|
|
@@ -91,7 +90,7 @@ export class InputOTP {
|
|
|
91
90
|
const targetIndex = this.inputValues[index] ? index : this.getFirstEmptyIndex();
|
|
92
91
|
finalIndex = targetIndex === -1 ? this.length - 1 : targetIndex;
|
|
93
92
|
// Focus the target box
|
|
94
|
-
|
|
93
|
+
this.inputRefs[finalIndex]?.focus();
|
|
95
94
|
}
|
|
96
95
|
// Update tabIndexes to match the focused box
|
|
97
96
|
inputRefs.forEach((input, i) => {
|
|
@@ -203,7 +202,6 @@ export class InputOTP {
|
|
|
203
202
|
* 5. Single character replacement
|
|
204
203
|
*/
|
|
205
204
|
this.onInput = (index) => (event) => {
|
|
206
|
-
var _a, _b;
|
|
207
205
|
const { disabled, length, readonly, validKeyPattern } = this;
|
|
208
206
|
const input = event.target;
|
|
209
207
|
const value = input.value;
|
|
@@ -242,9 +240,8 @@ export class InputOTP {
|
|
|
242
240
|
// are filled after a small delay to ensure the input boxes have been
|
|
243
241
|
// updated before moving the focus
|
|
244
242
|
setTimeout(() => {
|
|
245
|
-
var _a;
|
|
246
243
|
const nextIndex = validChars.length < length ? validChars.length : length - 1;
|
|
247
|
-
|
|
244
|
+
this.inputRefs[nextIndex]?.focus();
|
|
248
245
|
}, 20);
|
|
249
246
|
this.previousInputValues = [...this.inputValues];
|
|
250
247
|
return;
|
|
@@ -306,9 +303,9 @@ export class InputOTP {
|
|
|
306
303
|
// in an input box with the cursor at the beginning of the value of "6",
|
|
307
304
|
// the value will be "26", but we want to grab the "2" as the last character
|
|
308
305
|
// typed.
|
|
309
|
-
const cursorPos =
|
|
306
|
+
const cursorPos = input.selectionStart ?? value.length;
|
|
310
307
|
const newCharIndex = cursorPos - 1;
|
|
311
|
-
const newChar =
|
|
308
|
+
const newChar = value[newCharIndex] ?? value[0];
|
|
312
309
|
// Check if the new character is valid before updating the value
|
|
313
310
|
if (!validKeyPattern.test(newChar)) {
|
|
314
311
|
input.value = this.inputValues[index] || '';
|
|
@@ -328,13 +325,12 @@ export class InputOTP {
|
|
|
328
325
|
* the next empty input after pasting.
|
|
329
326
|
*/
|
|
330
327
|
this.onPaste = (event) => {
|
|
331
|
-
var _a, _b;
|
|
332
328
|
const { disabled, inputRefs, length, readonly, validKeyPattern } = this;
|
|
333
329
|
event.preventDefault();
|
|
334
330
|
if (disabled || readonly) {
|
|
335
331
|
return;
|
|
336
332
|
}
|
|
337
|
-
const pastedText =
|
|
333
|
+
const pastedText = event.clipboardData?.getData('text');
|
|
338
334
|
// If there is no pasted text, still emit the input change event
|
|
339
335
|
// because this is how the native input element behaves
|
|
340
336
|
// but return early because there is nothing to paste.
|
|
@@ -359,7 +355,7 @@ export class InputOTP {
|
|
|
359
355
|
// Focus the next empty input after pasting
|
|
360
356
|
// If all boxes are filled, focus the last input
|
|
361
357
|
const nextEmptyIndex = validChars.length < length ? validChars.length : length - 1;
|
|
362
|
-
|
|
358
|
+
inputRefs[nextEmptyIndex]?.focus();
|
|
363
359
|
};
|
|
364
360
|
}
|
|
365
361
|
/**
|
|
@@ -369,14 +365,13 @@ export class InputOTP {
|
|
|
369
365
|
* Otherwise, the first empty input box or the last input if all are filled will be focused.
|
|
370
366
|
*/
|
|
371
367
|
async setFocus(index) {
|
|
372
|
-
var _a, _b;
|
|
373
368
|
if (typeof index === 'number') {
|
|
374
369
|
const validIndex = Math.max(0, Math.min(index, this.length - 1));
|
|
375
|
-
|
|
370
|
+
this.inputRefs[validIndex]?.focus();
|
|
376
371
|
}
|
|
377
372
|
else {
|
|
378
373
|
const tabbableIndex = this.getTabbableIndex();
|
|
379
|
-
|
|
374
|
+
this.inputRefs[tabbableIndex]?.focus();
|
|
380
375
|
}
|
|
381
376
|
}
|
|
382
377
|
valueChanged() {
|
|
@@ -540,20 +535,18 @@ export class InputOTP {
|
|
|
540
535
|
* Focuses the next input box.
|
|
541
536
|
*/
|
|
542
537
|
focusNext(currentIndex) {
|
|
543
|
-
var _a;
|
|
544
538
|
const { inputRefs, length } = this;
|
|
545
539
|
if (currentIndex < length - 1) {
|
|
546
|
-
|
|
540
|
+
inputRefs[currentIndex + 1]?.focus();
|
|
547
541
|
}
|
|
548
542
|
}
|
|
549
543
|
/**
|
|
550
544
|
* Focuses the previous input box.
|
|
551
545
|
*/
|
|
552
546
|
focusPrevious(currentIndex) {
|
|
553
|
-
var _a;
|
|
554
547
|
const { inputRefs } = this;
|
|
555
548
|
if (currentIndex > 0) {
|
|
556
|
-
|
|
549
|
+
inputRefs[currentIndex - 1]?.focus();
|
|
557
550
|
}
|
|
558
551
|
}
|
|
559
552
|
/**
|
|
@@ -562,12 +555,11 @@ export class InputOTP {
|
|
|
562
555
|
* Returns -1 if all inputs are filled.
|
|
563
556
|
*/
|
|
564
557
|
getFirstEmptyIndex() {
|
|
565
|
-
var _a;
|
|
566
558
|
const { inputValues, length } = this;
|
|
567
559
|
// Create an array of the same length as the input OTP
|
|
568
560
|
// and fill it with the input values
|
|
569
561
|
const values = Array.from({ length }, (_, i) => inputValues[i] || '');
|
|
570
|
-
return
|
|
562
|
+
return values.findIndex((value) => !value || value === '') ?? -1;
|
|
571
563
|
}
|
|
572
564
|
/**
|
|
573
565
|
* Returns the index of the input that should be tabbed to.
|
|
@@ -613,14 +605,13 @@ export class InputOTP {
|
|
|
613
605
|
return this.parsedSeparators.includes(index + 1) && index < length - 1;
|
|
614
606
|
}
|
|
615
607
|
render() {
|
|
616
|
-
var _a, _b;
|
|
617
608
|
const { autocapitalize, color, disabled, el, fill, hasFocus, inheritedAttributes, inputId, inputRefs, inputValues, length, readonly, shape, size, } = this;
|
|
618
609
|
const mode = getIonMode(this);
|
|
619
610
|
const inputmode = this.getInputmode();
|
|
620
611
|
const tabbableIndex = this.getTabbableIndex();
|
|
621
612
|
const pattern = this.getPattern();
|
|
622
|
-
const hasDescription =
|
|
623
|
-
return (h(Host, { key: '
|
|
613
|
+
const hasDescription = el.querySelector('.input-otp-description')?.textContent?.trim() !== '';
|
|
614
|
+
return (h(Host, { key: 'bd37661e13cde21feff30c663e6813ce3fff0d9a', class: createColorClasses(color, {
|
|
624
615
|
[mode]: true,
|
|
625
616
|
'has-focus': hasFocus,
|
|
626
617
|
[`input-otp-size-${size}`]: true,
|
|
@@ -628,10 +619,10 @@ export class InputOTP {
|
|
|
628
619
|
[`input-otp-fill-${fill}`]: true,
|
|
629
620
|
'input-otp-disabled': disabled,
|
|
630
621
|
'input-otp-readonly': readonly,
|
|
631
|
-
}) }, h("div",
|
|
622
|
+
}) }, h("div", { key: '5e206f870024f1ecfebda999ff31e6e815774deb', role: "group", "aria-label": "One-time password input", class: "input-otp-group", ...inheritedAttributes }, Array.from({ length }).map((_, index) => (h(Fragment, null, h("div", { class: "native-wrapper" }, h("input", { class: "native-input", id: `${inputId}-${index}`, "aria-label": `Input ${index + 1} of ${length}`, type: "text", autoCapitalize: autocapitalize, inputmode: inputmode, pattern: pattern, disabled: disabled, readOnly: readonly, tabIndex: index === tabbableIndex ? 0 : -1, value: inputValues[index] || '', autocomplete: "one-time-code", ref: (el) => (inputRefs[index] = el), onInput: this.onInput(index), onBlur: this.onBlur, onFocus: this.onFocus(index), onKeyDown: this.onKeyDown(index), onPaste: this.onPaste })), this.showSeparator(index) && h("div", { class: "input-otp-separator" }))))), h("div", { key: 'c268f838ddab2c8d6a612a11c7d38e6ca076436d', class: {
|
|
632
623
|
'input-otp-description': true,
|
|
633
624
|
'input-otp-description-hidden': !hasDescription,
|
|
634
|
-
} }, h("slot", { key: '
|
|
625
|
+
} }, h("slot", { key: 'c0736359b26f609b795e399fc1ad9b540632af18' }))));
|
|
635
626
|
}
|
|
636
627
|
static get is() { return "ion-input-otp"; }
|
|
637
628
|
static get encapsulation() { return "scoped"; }
|
|
@@ -54,22 +54,21 @@ export class InputPasswordToggle {
|
|
|
54
54
|
this.inputElRef = null;
|
|
55
55
|
}
|
|
56
56
|
render() {
|
|
57
|
-
var _a, _b;
|
|
58
57
|
const { color, type } = this;
|
|
59
58
|
const mode = getIonMode(this);
|
|
60
|
-
const showPasswordIcon =
|
|
61
|
-
const hidePasswordIcon =
|
|
59
|
+
const showPasswordIcon = this.showIcon ?? eye;
|
|
60
|
+
const hidePasswordIcon = this.hideIcon ?? eyeOff;
|
|
62
61
|
const isPasswordVisible = type === 'text';
|
|
63
|
-
return (h(Host, { key: '
|
|
62
|
+
return (h(Host, { key: '15a29e51abc236cc21943225ed377f5edca7d103', class: createColorClasses(color, {
|
|
64
63
|
[mode]: true,
|
|
65
|
-
}) }, h("ion-button", { key: '
|
|
64
|
+
}) }, h("ion-button", { key: 'cc9c290e809db66c14aaf63eb496ccf94d3f6414', mode: mode, color: color, fill: "clear", shape: "round", "aria-label": isPasswordVisible ? 'Hide password' : 'Show password', "aria-pressed": isPasswordVisible ? 'true' : 'false', type: "button", onPointerDown: (ev) => {
|
|
66
65
|
/**
|
|
67
66
|
* This prevents mobile browsers from
|
|
68
67
|
* blurring the input when the password toggle
|
|
69
68
|
* button is activated.
|
|
70
69
|
*/
|
|
71
70
|
ev.preventDefault();
|
|
72
|
-
}, onClick: this.togglePasswordVisibility }, h("ion-icon", { key: '
|
|
71
|
+
}, onClick: this.togglePasswordVisibility }, h("ion-icon", { key: '8d1f5143bedabcff2a8792f35ef07fdac1236fd5', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? hidePasswordIcon : showPasswordIcon }))));
|
|
73
72
|
}
|
|
74
73
|
static get is() { return "ion-input-password-toggle"; }
|
|
75
74
|
static get encapsulation() { return "shadow"; }
|
|
@@ -387,6 +387,17 @@ a {
|
|
|
387
387
|
flex-direction: column;
|
|
388
388
|
}
|
|
389
389
|
|
|
390
|
+
:host(.item-focus-indicator-room) .input-wrapper {
|
|
391
|
+
-webkit-margin-start: -12px;
|
|
392
|
+
margin-inline-start: -12px;
|
|
393
|
+
-webkit-margin-end: -12px;
|
|
394
|
+
margin-inline-end: -12px;
|
|
395
|
+
-webkit-padding-start: 12px;
|
|
396
|
+
padding-inline-start: 12px;
|
|
397
|
+
-webkit-padding-end: 12px;
|
|
398
|
+
padding-inline-end: 12px;
|
|
399
|
+
}
|
|
400
|
+
|
|
390
401
|
:host(.item-multiple-inputs) ::slotted(ion-checkbox),
|
|
391
402
|
:host(.item-multiple-inputs) ::slotted(ion-datetime),
|
|
392
403
|
:host(.item-multiple-inputs) ::slotted(ion-radio) {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { Host, forceUpdate, h } from "@stencil/core";
|
|
4
|
+
import { Build, Host, forceUpdate, h } from "@stencil/core";
|
|
5
5
|
import { inheritAttributes, raf } from "../../utils/helpers";
|
|
6
6
|
import { createColorClasses, hostContext, openURL } from "../../utils/theme";
|
|
7
7
|
import { chevronForward } from "ionicons/icons";
|
|
8
8
|
import { getIonMode } from "../../global/ionic-global";
|
|
9
|
+
const INDICATOR_CONTROL_SELECTOR = 'ion-checkbox, ion-radio, ion-toggle';
|
|
9
10
|
/**
|
|
10
11
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
11
12
|
*
|
|
@@ -23,9 +24,11 @@ export class Item {
|
|
|
23
24
|
this.labelColorStyles = {};
|
|
24
25
|
this.itemStyles = new Map();
|
|
25
26
|
this.inheritedAriaAttributes = {};
|
|
27
|
+
this.didLoad = false;
|
|
26
28
|
this.multipleInputs = false;
|
|
27
29
|
this.focusable = true;
|
|
28
30
|
this.isInteractive = false;
|
|
31
|
+
this.hasSlottedIndicatorControl = false;
|
|
29
32
|
/**
|
|
30
33
|
* If `true`, a button tag will be rendered and the item will be tappable.
|
|
31
34
|
*/
|
|
@@ -51,6 +54,7 @@ export class Item {
|
|
|
51
54
|
this.updateInteractivityOnSlotChange = () => {
|
|
52
55
|
this.setIsInteractive();
|
|
53
56
|
this.setMultipleInputs();
|
|
57
|
+
this.setHasSlottedIndicatorControl();
|
|
54
58
|
};
|
|
55
59
|
}
|
|
56
60
|
buttonChanged() {
|
|
@@ -92,6 +96,14 @@ export class Item {
|
|
|
92
96
|
}
|
|
93
97
|
connectedCallback() {
|
|
94
98
|
this.hasStartEl();
|
|
99
|
+
/**
|
|
100
|
+
* `componentDidLoad` doesn't run again when the item is moved, so re-arm the
|
|
101
|
+
* observer and re-read the light DOM, which may have changed while detached.
|
|
102
|
+
*/
|
|
103
|
+
if (this.didLoad) {
|
|
104
|
+
this.watchForIndicatorControls();
|
|
105
|
+
this.updateInteractivityOnSlotChange();
|
|
106
|
+
}
|
|
95
107
|
}
|
|
96
108
|
componentWillLoad() {
|
|
97
109
|
this.inheritedAriaAttributes = inheritAttributes(this.el, ['aria-label']);
|
|
@@ -100,8 +112,17 @@ export class Item {
|
|
|
100
112
|
raf(() => {
|
|
101
113
|
this.setMultipleInputs();
|
|
102
114
|
this.setIsInteractive();
|
|
115
|
+
this.setHasSlottedIndicatorControl();
|
|
103
116
|
this.focusable = this.isFocusable();
|
|
104
117
|
});
|
|
118
|
+
this.watchForIndicatorControls();
|
|
119
|
+
this.didLoad = true;
|
|
120
|
+
}
|
|
121
|
+
disconnectedCallback() {
|
|
122
|
+
if (this.indicatorControlObserver) {
|
|
123
|
+
this.indicatorControlObserver.disconnect();
|
|
124
|
+
this.indicatorControlObserver = undefined;
|
|
125
|
+
}
|
|
105
126
|
}
|
|
106
127
|
totalNestedInputs() {
|
|
107
128
|
// The following elements have a clickable cover that is relative to the entire item
|
|
@@ -135,6 +156,49 @@ export class Item {
|
|
|
135
156
|
const { covers, inputs, clickables } = this.totalNestedInputs();
|
|
136
157
|
this.isInteractive = covers.length > 0 || inputs.length > 0 || clickables.length > 0;
|
|
137
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* `slotchange` only fires for nodes assigned directly to a slot, so a control
|
|
161
|
+
* inside a slotted wrapper (`<div><ion-toggle>`) never reaches
|
|
162
|
+
* `updateInteractivityOnSlotChange`. The light DOM is observed instead.
|
|
163
|
+
*
|
|
164
|
+
* The callback runs the whole handler because a control below a wrapper can also
|
|
165
|
+
* make the item multi-input, which is what decides whether the controls draw
|
|
166
|
+
* their own indicator at all.
|
|
167
|
+
*
|
|
168
|
+
* `:host(:has())` would avoid the observer, but the `:has()` fallback in
|
|
169
|
+
* `core.scss` is still open as FW-6106 and it's unreliable for slotted content
|
|
170
|
+
* in Android WebView. Worth revisiting when FW-6106 closes.
|
|
171
|
+
*/
|
|
172
|
+
watchForIndicatorControls() {
|
|
173
|
+
if (!Build.isBrowser || typeof MutationObserver === 'undefined') {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
// `Node.moveBefore` relocates the item without either callback firing, so
|
|
177
|
+
// never leave a previous observer behind
|
|
178
|
+
this.indicatorControlObserver?.disconnect();
|
|
179
|
+
this.indicatorControlObserver = new MutationObserver((records) => {
|
|
180
|
+
// The subtree observer also fires for text and hidden input churn, so only
|
|
181
|
+
// re-read the DOM when a control was added or removed
|
|
182
|
+
if (records.some(touchesIndicatorControl)) {
|
|
183
|
+
this.updateInteractivityOnSlotChange();
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
this.indicatorControlObserver.observe(this.el, { childList: true, subtree: true });
|
|
187
|
+
}
|
|
188
|
+
// These controls paint a focus indicator that overhangs their own bounds, and
|
|
189
|
+
// only the default slot is clipped, so only a control there needs extra room.
|
|
190
|
+
setHasSlottedIndicatorControl() {
|
|
191
|
+
const controls = this.el.querySelectorAll(INDICATOR_CONTROL_SELECTOR);
|
|
192
|
+
this.hasSlottedIndicatorControl = Array.from(controls).some((control) => {
|
|
193
|
+
// The control isn't always a direct child, so walk up to the element the item
|
|
194
|
+
// slots, which is the one carrying the slot name.
|
|
195
|
+
let slotted = control;
|
|
196
|
+
while (slotted !== null && slotted.parentElement !== this.el) {
|
|
197
|
+
slotted = slotted.parentElement;
|
|
198
|
+
}
|
|
199
|
+
return slotted !== null && !slotted.getAttribute('slot');
|
|
200
|
+
});
|
|
201
|
+
}
|
|
138
202
|
// If the item contains an input including a checkbox, datetime, select, or radio
|
|
139
203
|
// then the item will have a clickable input cover that covers the item
|
|
140
204
|
// that should get the hover, focused and activated states UNLESS it has multiple
|
|
@@ -236,19 +300,30 @@ export class Item {
|
|
|
236
300
|
* However, other form controls such as checkboxes and radios do.
|
|
237
301
|
*/
|
|
238
302
|
const firstInteractiveNeedsPointerCursor = firstInteractive !== undefined && !['ION-INPUT', 'ION-TEXTAREA'].includes(firstInteractive.tagName);
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
303
|
+
/**
|
|
304
|
+
* A control in a single-input item defers its indicator to the item, so there's
|
|
305
|
+
* nothing to clip and nothing to make room for. It draws its own indicator in a
|
|
306
|
+
* multi-input item, and in a clickable item, which is a second tab stop.
|
|
307
|
+
*/
|
|
308
|
+
const slottedIndicatorNeedsRoom = this.hasSlottedIndicatorControl && (multipleInputs || this.isClickable());
|
|
309
|
+
return (h(Host, { key: '0dc161ad7ac2fdedc5005015fceb34ed176010a6', "aria-disabled": ariaDisabled, class: {
|
|
310
|
+
...childStyles,
|
|
311
|
+
...labelColorStyles,
|
|
312
|
+
...createColorClasses(this.color, {
|
|
313
|
+
item: true,
|
|
314
|
+
[mode]: true,
|
|
315
|
+
'item-lines-default': lines === undefined,
|
|
316
|
+
[`item-lines-${lines}`]: lines !== undefined,
|
|
317
|
+
'item-control-needs-pointer-cursor': firstInteractiveNeedsPointerCursor,
|
|
318
|
+
'item-disabled': disabled,
|
|
319
|
+
'in-list': inList,
|
|
320
|
+
'item-multiple-inputs': this.multipleInputs,
|
|
321
|
+
'item-focus-indicator-room': slottedIndicatorNeedsRoom,
|
|
322
|
+
'ion-activatable': canActivate,
|
|
323
|
+
'ion-focusable': this.focusable,
|
|
324
|
+
'item-rtl': document.dir === 'rtl',
|
|
325
|
+
}),
|
|
326
|
+
}, role: inList ? 'listitem' : null }, h(TagType, { key: 'd42583cf62133b2553de2e7a5357168640bb1834', ...attrs, ...inheritedAriaAttributes, class: "item-native", part: "native", disabled: disabled, ...clickFn }, h("slot", { key: 'bd805ce49946cd52280d1c4b370104ee2472f1e2', name: "start", onSlotchange: this.updateInteractivityOnSlotChange }), h("div", { key: '0de589f9c5c13c31b6c8838566a7ad6f78f81028', class: "item-inner", part: "inner" }, h("div", { key: 'faaf6a39e072fb352753c645736ab1f47c2d7d25', class: "input-wrapper", part: "container" }, h("slot", { key: '70a34c31de29a0786a14b4a7d3156ba8d4d92eb4', onSlotchange: this.updateInteractivityOnSlotChange })), h("slot", { key: 'c8e764b62c5c30f67750896741ca266b741d5999', name: "end", onSlotchange: this.updateInteractivityOnSlotChange }), showDetail && (h("ion-icon", { key: 'af006856d8c4ed69174534261344215957cc751a', icon: detailIcon, lazy: false, class: "item-detail-icon", part: "detail-icon", "aria-hidden": "true", "flip-rtl": detailIcon === chevronForward }))), canActivate && mode === 'md' && h("ion-ripple-effect", { key: 'e5e151bafedd38feb8f71a387a0059aa1e9e90de' }))));
|
|
252
327
|
}
|
|
253
328
|
static get is() { return "ion-item"; }
|
|
254
329
|
static get encapsulation() { return "shadow"; }
|
|
@@ -543,7 +618,8 @@ export class Item {
|
|
|
543
618
|
return {
|
|
544
619
|
"multipleInputs": {},
|
|
545
620
|
"focusable": {},
|
|
546
|
-
"isInteractive": {}
|
|
621
|
+
"isInteractive": {},
|
|
622
|
+
"hasSlottedIndicatorControl": {}
|
|
547
623
|
};
|
|
548
624
|
}
|
|
549
625
|
static get elementRef() { return "el"; }
|
|
@@ -569,3 +645,11 @@ export class Item {
|
|
|
569
645
|
}];
|
|
570
646
|
}
|
|
571
647
|
}
|
|
648
|
+
const isIndicatorControl = (node) => {
|
|
649
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
650
|
+
return false;
|
|
651
|
+
}
|
|
652
|
+
const el = node;
|
|
653
|
+
return el.matches(INDICATOR_CONTROL_SELECTOR) || el.querySelector(INDICATOR_CONTROL_SELECTOR) !== null;
|
|
654
|
+
};
|
|
655
|
+
const touchesIndicatorControl = (record) => Array.from(record.addedNodes).some(isIndicatorControl) || Array.from(record.removedNodes).some(isIndicatorControl);
|
|
@@ -387,6 +387,17 @@ a {
|
|
|
387
387
|
flex-direction: column;
|
|
388
388
|
}
|
|
389
389
|
|
|
390
|
+
:host(.item-focus-indicator-room) .input-wrapper {
|
|
391
|
+
-webkit-margin-start: -12px;
|
|
392
|
+
margin-inline-start: -12px;
|
|
393
|
+
-webkit-margin-end: -12px;
|
|
394
|
+
margin-inline-end: -12px;
|
|
395
|
+
-webkit-padding-start: 12px;
|
|
396
|
+
padding-inline-start: 12px;
|
|
397
|
+
-webkit-padding-end: 12px;
|
|
398
|
+
padding-inline-end: 12px;
|
|
399
|
+
}
|
|
400
|
+
|
|
390
401
|
:host(.item-multiple-inputs) ::slotted(ion-checkbox),
|
|
391
402
|
:host(.item-multiple-inputs) ::slotted(ion-datetime),
|
|
392
403
|
:host(.item-multiple-inputs) ::slotted(ion-radio) {
|
|
@@ -27,11 +27,11 @@ export class ItemDivider {
|
|
|
27
27
|
}
|
|
28
28
|
render() {
|
|
29
29
|
const mode = getIonMode(this);
|
|
30
|
-
return (h(Host, { key: '
|
|
30
|
+
return (h(Host, { key: 'b191727cc26c600287fd856e49216bf1ae1d5aad', class: createColorClasses(this.color, {
|
|
31
31
|
[mode]: true,
|
|
32
32
|
'item-divider-sticky': this.sticky,
|
|
33
33
|
item: true,
|
|
34
|
-
}) }, h("slot", { key: '
|
|
34
|
+
}) }, h("slot", { key: 'a8e2eb48ca858b64da8ad018fa8d1667030b7143', name: "start" }), h("div", { key: '3219e0b76ac4a96db50a67f1f2794a235111c613', class: "item-divider-inner", part: "inner" }, h("div", { key: '31a64775153cd8704458e0e2a4a512096585deb4', class: "item-divider-wrapper", part: "container" }, h("slot", { key: 'd46dfb578028790eb6ccaac5e6009a5d96aa831a' })), h("slot", { key: 'a5fc7ac27e418ea82d9dcc913a8dae7e35493760', name: "end" }))));
|
|
35
35
|
}
|
|
36
36
|
static get is() { return "ion-item-divider"; }
|
|
37
37
|
static get encapsulation() { return "shadow"; }
|
|
@@ -6,7 +6,7 @@ import { getIonMode } from "../../global/ionic-global";
|
|
|
6
6
|
export class ItemGroup {
|
|
7
7
|
render() {
|
|
8
8
|
const mode = getIonMode(this);
|
|
9
|
-
return (h(Host, { key: '
|
|
9
|
+
return (h(Host, { key: 'd24ee9c70a99d11b7d95dfb4a8066670bdfcbc1d', role: "group", class: {
|
|
10
10
|
[mode]: true,
|
|
11
11
|
// Used internally for styling
|
|
12
12
|
[`item-group-${mode}`]: true,
|