@ionic/core 9.0.10-dev.11792788258.1f71cfee → 9.0.10-dev.11793383958.19a7d413
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.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-back-button.js +1 -1
- package/components/ion-breadcrumb.js +1 -1
- package/components/ion-button.js +1 -1
- package/components/ion-card.js +1 -1
- package/components/ion-checkbox.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-footer.js +1 -1
- package/components/ion-header.js +1 -1
- package/components/ion-img.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-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-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.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-router-outlet.js +1 -1
- package/components/ion-router.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.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-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-tab-button.js +1 -1
- package/components/ion-tab.js +1 -1
- package/components/ion-textarea.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/{p-PkD1iLNN.js → p--cshUOAU.js} +1 -1
- package/components/{p-D8FyR2IB.js → p-B02CcbPD.js} +1 -1
- package/components/{p-CUQjkOdi.js → p-B4IBdPVJ.js} +1 -1
- package/components/p-BODcC-C0.js +4 -0
- package/components/p-BVNUhOOf.js +4 -0
- package/components/{p-BZ1k9WL7.js → p-Ba9_OzSY.js} +1 -1
- package/components/p-Bd8hg9FK.js +4 -0
- package/components/{p-3avHDbEF.js → p-BqyLLYLm.js} +1 -1
- package/components/p-C1AxSUnp.js +4 -0
- package/components/{p-DwTzX8Vi.js → p-CKTjkpAq.js} +1 -1
- package/components/{p-Dah8BCNg.js → p-CKiqp4Vl.js} +1 -1
- package/components/p-CONpe3oX.js +4 -0
- package/components/p-CVrOcN5N.js +4 -0
- package/components/p-CYctYy9B.js +4 -0
- package/components/{p-C-SO5kIs.js → p-C_gnmBt2.js} +1 -1
- package/components/{p-DnBabjgY.js → p-CxEV3Vwy.js} +1 -1
- package/components/p-Cyajikho.js +4 -0
- package/components/p-D0nwlsl_.js +4 -0
- package/components/{p-BT2InaHz.js → p-DBtFJlTi.js} +1 -1
- package/components/{p-BBsseItU.js → p-DD92Fw3n.js} +1 -1
- package/components/{p-kKGBuIkf.js → p-DDI6VLW9.js} +1 -1
- package/components/{p-LkEGRiq0.js → p-DfDIY2oP.js} +1 -1
- package/components/{p-Dj4J3LkD.js → p-Dojwmvde.js} +1 -1
- package/components/p-Drpw2dyl.js +4 -0
- package/components/{p-07wRJfkt.js → p-GpqwNbxf.js} +1 -1
- package/components/p-IQN1T5zw.js +4 -0
- package/components/{p-DTGCMApY.js → p-ODGeXc3M.js} +1 -1
- package/components/p-SHHIB5F0.js +4 -0
- package/components/{p-D5_mEbGJ.js → p-V1THdfzs.js} +1 -1
- package/components/p-YNnH1_Hs.js +4 -0
- package/components/{p-C8BAigo3.js → p-ZrYBjOcc.js} +1 -1
- package/components/p-_y7kwBO8.js +4 -0
- package/components/{p-BrrMFd9K.js → p-jsVMT15X.js} +1 -1
- package/components/{p-7NbIvzb4.js → p-r59A3wQk.js} +1 -1
- package/components/{p-Dy7x-KDF.js → p-yGD6MBgf.js} +1 -1
- package/dist/cjs/{animation-UiXhXV49.js → animation-DcgLg_PI.js} +1 -1
- package/dist/cjs/{attribute-controller-0-lwbVEj.js → attribute-controller-BjTE2TOf.js} +1 -1
- package/dist/cjs/{button-active-DzN1aPt-.js → button-active-FdsfRDY_.js} +1 -1
- package/dist/cjs/{capacitor-BTjfXFlK.js → capacitor-C6Pp4Z7A.js} +1 -1
- package/dist/cjs/{dir-Bma_9Lqh.js → dir-zwDPRE5K.js} +1 -1
- package/dist/cjs/{framework-delegate-hNMKEiQC.js → framework-delegate-JbKIVMzR.js} +1 -1
- package/dist/cjs/{haptic-BD5qPgy8.js → haptic--4QteuuM.js} +1 -1
- package/dist/cjs/{helpers-BrETKUUX.js → helpers-Cqr69qxA.js} +3 -2
- package/dist/cjs/{index-bwclzjks.js → index-BQpSekmz.js} +2 -2
- package/dist/cjs/{index-BTc0Jnhx.js → index-BhWiDK25.js} +3 -3
- package/dist/cjs/{index-DMz2Eyis.js → index-CNaZ6SYM.js} +1 -1
- package/dist/cjs/{index-DNBYnlrc.js → index-DCfr5hz-.js} +3 -3
- package/dist/cjs/index.cjs.js +9 -9
- package/dist/cjs/{input-shims-CRmdShL9.js → input-shims-2AsXPZ5m.js} +9 -8
- package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
- package/dist/cjs/ion-alert.cjs.entry.js +19 -19
- package/dist/cjs/ion-app_8.cjs.entry.js +18 -18
- package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-button_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-card_5.cjs.entry.js +3 -3
- package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/ion-col_3.cjs.entry.js +12 -14
- package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime.cjs.entry.js +9 -8
- package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-img.cjs.entry.js +2 -2
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-input-otp.cjs.entry.js +128 -12
- package/dist/cjs/ion-input.cjs.entry.js +3 -3
- package/dist/cjs/ion-item-option_3.cjs.entry.js +9 -9
- package/dist/cjs/ion-item_8.cjs.entry.js +10 -10
- package/dist/cjs/ion-loading.cjs.entry.js +5 -5
- package/dist/cjs/ion-menu_3.cjs.entry.js +6 -6
- package/dist/cjs/ion-modal.cjs.entry.js +10 -10
- package/dist/cjs/ion-nav_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
- package/dist/cjs/ion-picker-column.cjs.entry.js +4 -4
- package/dist/cjs/ion-picker.cjs.entry.js +2 -2
- package/dist/cjs/ion-popover.cjs.entry.js +14 -28
- package/dist/cjs/ion-progress-bar.cjs.entry.js +5 -6
- package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-range.cjs.entry.js +3 -3
- package/dist/cjs/ion-refresher_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-reorder_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-route_4.cjs.entry.js +124 -19
- package/dist/cjs/ion-searchbar.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment-view.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-select-modal.cjs.entry.js +4 -4
- package/dist/cjs/ion-select_3.cjs.entry.js +5 -5
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-textarea.cjs.entry.js +3 -3
- package/dist/cjs/ion-toast.cjs.entry.js +5 -5
- package/dist/cjs/ion-toggle.cjs.entry.js +4 -4
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/{ios.transition-CN092Fh6.js → ios.transition-Ca6XODo9.js} +15 -15
- package/dist/cjs/{keyboard-BMpscicm.js → keyboard-BlHp4a_c.js} +1 -1
- package/dist/cjs/{keyboard-4OBzkjOG.js → keyboard-c2_I35b-.js} +4 -4
- package/dist/cjs/{keyboard-controller-DZE97OtR.js → keyboard-controller-DHS0BgXp.js} +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{md.transition-B6961Ny9.js → md.transition-D8SfNYEp.js} +4 -4
- package/dist/cjs/{overlays-BbVQG3UT.js → overlays-CLld3axA.js} +2 -2
- package/dist/cjs/{slot-mutation-controller-CRa_cKOh.js → slot-mutation-controller-B2OfJEBH.js} +2 -2
- package/dist/cjs/{status-tap-hRIvObiJ.js → status-tap-CDA0Y3Ad.js} +3 -3
- package/dist/cjs/{swipe-back-C-aigThB.js → swipe-back-Idb4gqUk.js} +2 -2
- package/dist/collection/components/alert/alert.js +11 -11
- package/dist/collection/components/col/col.js +12 -14
- package/dist/collection/components/datetime/datetime.js +5 -4
- package/dist/collection/components/input-otp/input-otp.ios.css +30 -5
- package/dist/collection/components/input-otp/input-otp.js +191 -12
- package/dist/collection/components/input-otp/input-otp.md.css +30 -5
- package/dist/collection/components/item/item.js +4 -5
- package/dist/collection/components/item-options/item-options.js +2 -2
- package/dist/collection/components/item-sliding/item-sliding.js +4 -5
- package/dist/collection/components/label/label.js +3 -4
- package/dist/collection/components/popover/animations/ios.enter.js +3 -4
- package/dist/collection/components/popover/animations/md.enter.js +3 -4
- package/dist/collection/components/popover/popover.js +2 -17
- package/dist/collection/components/progress-bar/progress-bar.js +3 -5
- package/dist/collection/components/route/route.js +9 -1
- package/dist/collection/components/route-redirect/route-redirect.js +1 -1
- package/dist/collection/components/router/utils/constants.js +2 -0
- package/dist/collection/components/router/utils/matching.js +97 -14
- package/dist/collection/components/router/utils/path.js +17 -3
- package/dist/collection/components/title/title.js +3 -4
- package/dist/collection/utils/helpers.js +2 -1
- package/dist/collection/utils/input-shims/hacks/common.js +4 -4
- package/dist/collection/utils/rtl/dir.js +1 -1
- package/dist/collection/utils/transition/ios.transition.js +11 -12
- package/dist/docs.json +92 -3
- package/dist/esm/{animation-C_V9lXzL.js → animation-DmtJpz89.js} +1 -1
- package/dist/esm/{attribute-controller-ItNOXNp9.js → attribute-controller-DPMIcbef.js} +1 -1
- package/dist/esm/{button-active-rB-Ct9KZ.js → button-active-DVk40Sjl.js} +1 -1
- package/dist/esm/{capacitor-BY7l8HgR.js → capacitor-CHJaJ9aX.js} +1 -1
- package/dist/esm/{dir-Dj4J3LkD.js → dir-Dojwmvde.js} +1 -1
- package/dist/esm/{framework-delegate-CW5_kWfc.js → framework-delegate-CDjM1vRH.js} +1 -1
- package/dist/esm/{haptic-ES_sSPLn.js → haptic-WXfMCob9.js} +1 -1
- package/dist/esm/{helpers-p94IkmEA.js → helpers-BJqKF1pr.js} +3 -2
- package/dist/esm/{index-DLDbwWW7.js → index-Clv8QC5L.js} +2 -2
- package/dist/esm/{index-txcXIB3P.js → index-DIouXecD.js} +3 -3
- package/dist/esm/{index-CBkVO5D0.js → index-TkLga3ma.js} +1 -1
- package/dist/esm/{index-vgPixHgF.js → index-z9vdZN7I.js} +3 -3
- package/dist/esm/index.js +9 -9
- package/dist/esm/{input-shims-KNXj3DAv.js → input-shims-C1iYF5JK.js} +9 -8
- package/dist/esm/ion-accordion_2.entry.js +2 -2
- package/dist/esm/ion-action-sheet.entry.js +8 -8
- package/dist/esm/ion-alert.entry.js +19 -19
- package/dist/esm/ion-app_8.entry.js +18 -18
- package/dist/esm/ion-back-button.entry.js +2 -2
- package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
- package/dist/esm/ion-button_2.entry.js +3 -3
- package/dist/esm/ion-card_5.entry.js +3 -3
- package/dist/esm/ion-checkbox.entry.js +2 -2
- package/dist/esm/ion-col_3.entry.js +13 -15
- package/dist/esm/ion-datetime-button.entry.js +2 -2
- package/dist/esm/ion-datetime.entry.js +9 -8
- package/dist/esm/ion-fab_3.entry.js +2 -2
- package/dist/esm/ion-img.entry.js +2 -2
- package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
- package/dist/esm/ion-input-otp.entry.js +129 -13
- package/dist/esm/ion-input.entry.js +3 -3
- package/dist/esm/ion-item-option_3.entry.js +9 -9
- package/dist/esm/ion-item_8.entry.js +10 -10
- package/dist/esm/ion-loading.entry.js +5 -5
- package/dist/esm/ion-menu_3.entry.js +6 -6
- package/dist/esm/ion-modal.entry.js +10 -10
- package/dist/esm/ion-nav_2.entry.js +5 -5
- package/dist/esm/ion-picker-column-option.entry.js +2 -2
- package/dist/esm/ion-picker-column.entry.js +4 -4
- package/dist/esm/ion-picker.entry.js +2 -2
- package/dist/esm/ion-popover.entry.js +14 -28
- package/dist/esm/ion-progress-bar.entry.js +6 -7
- package/dist/esm/ion-radio_2.entry.js +2 -2
- package/dist/esm/ion-range.entry.js +3 -3
- package/dist/esm/ion-refresher_2.entry.js +6 -6
- package/dist/esm/ion-reorder_2.entry.js +5 -5
- package/dist/esm/ion-route_4.entry.js +124 -19
- package/dist/esm/ion-searchbar.entry.js +2 -2
- package/dist/esm/ion-segment-view.entry.js +1 -1
- package/dist/esm/ion-segment_2.entry.js +2 -2
- package/dist/esm/ion-select-modal.entry.js +4 -4
- package/dist/esm/ion-select_3.entry.js +5 -5
- package/dist/esm/ion-tab-bar_2.entry.js +5 -5
- package/dist/esm/ion-tab_2.entry.js +3 -3
- package/dist/esm/ion-textarea.entry.js +3 -3
- package/dist/esm/ion-toast.entry.js +5 -5
- package/dist/esm/ion-toggle.entry.js +4 -4
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/{ios.transition-CW92wRDL.js → ios.transition-BkUGiDUz.js} +15 -15
- package/dist/esm/{keyboard-BumguZrM.js → keyboard-B4Y-Gph8.js} +4 -4
- package/dist/esm/{keyboard-CutS8BPd.js → keyboard-Cmqp5iZD.js} +1 -1
- package/dist/esm/{keyboard-controller-DqohyEsZ.js → keyboard-controller-B2NoF7bV.js} +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{md.transition-yhfkYX1P.js → md.transition-B6hlrWjR.js} +4 -4
- package/dist/esm/{overlays-BBgMM61s.js → overlays-DmDY-El7.js} +2 -2
- package/dist/esm/{slot-mutation-controller-uKdPbY9K.js → slot-mutation-controller-Btpr9-9O.js} +2 -2
- package/dist/esm/{status-tap-BskkGI4e.js → status-tap-VGRBYwiC.js} +3 -3
- package/dist/esm/{swipe-back-BZdyM2Q-.js → swipe-back-DV3UpWzz.js} +2 -2
- package/dist/html.html-data.json +10 -2
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-013b9aba.entry.js → p-01b7e3f2.entry.js} +1 -1
- package/dist/ionic/{p-9515f840.entry.js → p-095da8ec.entry.js} +1 -1
- package/dist/ionic/{p-ec08a7e6.entry.js → p-0b09c60e.entry.js} +1 -1
- package/dist/ionic/{p-5b47b8d5.entry.js → p-0c32c626.entry.js} +1 -1
- package/dist/ionic/p-0f97175e.entry.js +4 -0
- package/dist/ionic/{p-b0faaae2.entry.js → p-107a81a6.entry.js} +1 -1
- package/dist/ionic/{p-27960f65.entry.js → p-293cb1d5.entry.js} +1 -1
- package/dist/ionic/{p-1ffa5577.entry.js → p-362dcd86.entry.js} +1 -1
- package/dist/ionic/{p-0562139b.entry.js → p-4bd80334.entry.js} +1 -1
- package/dist/ionic/{p-16de8fd9.entry.js → p-4f25b926.entry.js} +1 -1
- package/dist/ionic/{p-0f1613f2.entry.js → p-52a16f94.entry.js} +1 -1
- package/dist/ionic/{p-436d4ac8.entry.js → p-5bb24bce.entry.js} +1 -1
- package/dist/ionic/{p-9d7e5a0b.entry.js → p-60780b88.entry.js} +1 -1
- package/dist/ionic/{p-1f342c2d.entry.js → p-62c87f3d.entry.js} +1 -1
- package/dist/ionic/{p-7868eb92.entry.js → p-64ac3864.entry.js} +1 -1
- package/dist/ionic/{p-f37e6ed2.entry.js → p-67f004eb.entry.js} +1 -1
- package/dist/ionic/p-6c7b5930.entry.js +4 -0
- package/dist/ionic/p-705759fd.entry.js +4 -0
- package/dist/ionic/{p-a45caa30.entry.js → p-7db20410.entry.js} +1 -1
- package/dist/ionic/{p-694f3e78.entry.js → p-7e9c2a97.entry.js} +1 -1
- package/dist/ionic/p-7l6ENjIV.js +4 -0
- package/dist/ionic/{p-77540bcb.entry.js → p-82abf431.entry.js} +1 -1
- package/dist/ionic/p-8d2ccf0c.entry.js +4 -0
- package/dist/ionic/{p-87fb6d59.entry.js → p-8d651adb.entry.js} +1 -1
- package/dist/ionic/{p-51af4728.entry.js → p-8db08782.entry.js} +1 -1
- package/dist/ionic/{p-af15fc5d.entry.js → p-91f3cd8b.entry.js} +1 -1
- package/dist/ionic/{p-c7ea2647.entry.js → p-930c3538.entry.js} +1 -1
- package/dist/ionic/p-94f1f7df.entry.js +4 -0
- package/dist/ionic/p-99c518de.entry.js +4 -0
- package/dist/ionic/{p-014c3633.entry.js → p-9ffccbf1.entry.js} +1 -1
- package/dist/ionic/p-BNXIurCt.js +4 -0
- package/dist/ionic/p-BOLqP2-V.js +4 -0
- package/dist/ionic/{p-5a3UxQAh.js → p-BY4FwwBp.js} +1 -1
- package/dist/ionic/p-BZTgGzGK.js +4 -0
- package/dist/ionic/p-BdHBcCZF.js +4 -0
- package/dist/ionic/{p-8B39TMv-.js → p-BpED_ep_.js} +1 -1
- package/dist/ionic/p-BuLlVedw.js +4 -0
- package/dist/ionic/p-Bx5x5GJV.js +4 -0
- package/dist/ionic/{p-C4SpVvhx.js → p-C1WYZOZj.js} +1 -1
- package/dist/ionic/p-C2LaBx3E.js +4 -0
- package/dist/ionic/{p-BWKtcudz.js → p-CXs4J83x.js} +1 -1
- package/dist/ionic/p-CgcGX08t.js +4 -0
- package/dist/ionic/p-CngfKMRU.js +4 -0
- package/dist/ionic/p-Co7eql8D.js +4 -0
- package/dist/ionic/{p-DArnNWiu.js → p-D13gXhdC.js} +1 -1
- package/dist/ionic/p-D926OmIX.js +4 -0
- package/dist/ionic/{p-BBZQUbCq.js → p-DPNVo1nr.js} +1 -1
- package/dist/ionic/{p-B0afqOUt.js → p-DXXGkPA8.js} +1 -1
- package/dist/ionic/{p-CJmyfI8x.js → p-Dk4Mdaru.js} +1 -1
- package/dist/ionic/{p-Dj4J3LkD.js → p-Dojwmvde.js} +1 -1
- package/dist/ionic/p-a4389f13.entry.js +4 -0
- package/dist/ionic/p-af8fb360.entry.js +4 -0
- package/dist/ionic/{p-f6a1ab48.entry.js → p-b9ed3a52.entry.js} +1 -1
- package/dist/ionic/p-bfdbe24b.entry.js +4 -0
- package/dist/ionic/{p-77e7b612.entry.js → p-c250b6b0.entry.js} +1 -1
- package/dist/ionic/p-c83dbc12.entry.js +4 -0
- package/dist/ionic/{p-1bb1be7e.entry.js → p-d0e374f8.entry.js} +1 -1
- package/dist/ionic/{p-af4b4719.entry.js → p-d2406889.entry.js} +1 -1
- package/dist/ionic/{p-cbc73380.entry.js → p-d72accc4.entry.js} +1 -1
- package/dist/ionic/{p-1252621e.entry.js → p-e7ab4def.entry.js} +1 -1
- package/dist/ionic/{p-5dcddfd5.entry.js → p-e8e69c21.entry.js} +1 -1
- package/dist/ionic/{p-96d040b0.entry.js → p-eb989dc9.entry.js} +1 -1
- package/dist/ionic/{p-59e4b521.entry.js → p-ec259ac5.entry.js} +1 -1
- package/dist/ionic/p-f2116a54.entry.js +4 -0
- package/dist/ionic/{p-B2JD8_LP.js → p-nCAPr1Ah.js} +1 -1
- package/dist/types/components/alert/alert.d.ts +0 -4
- package/dist/types/components/col/col.d.ts +0 -1
- package/dist/types/components/input-otp/input-otp-interface.d.ts +1 -0
- package/dist/types/components/input-otp/input-otp.d.ts +40 -2
- package/dist/types/components/popover/popover.d.ts +0 -1
- package/dist/types/components/progress-bar/progress-bar.d.ts +0 -1
- package/dist/types/components/route/route.d.ts +8 -0
- package/dist/types/components/route-redirect/route-redirect.d.ts +3 -1
- package/dist/types/components/router/utils/constants.d.ts +2 -0
- package/dist/types/components/router/utils/matching.d.ts +10 -0
- package/dist/types/components/router/utils/path.d.ts +5 -1
- package/dist/types/components.d.ts +32 -6
- package/dist/types/utils/helpers.d.ts +3 -2
- package/dist/types/utils/rtl/dir.d.ts +1 -1
- package/hydrate/index.js +301 -109
- package/hydrate/index.mjs +301 -109
- package/package.json +1 -1
- package/components/p-B3dSuofL.js +0 -4
- package/components/p-BWbz71uB.js +0 -4
- package/components/p-C0TdbIVo.js +0 -4
- package/components/p-C6Y0cCH_.js +0 -4
- package/components/p-CCFj0kgH.js +0 -4
- package/components/p-CRb2xRCz.js +0 -4
- package/components/p-DLEJ61lJ.js +0 -4
- package/components/p-DRm4t-by.js +0 -4
- package/components/p-D_U0pDe5.js +0 -4
- package/components/p-DaW9OZ6S.js +0 -4
- package/components/p-DaojW_d_.js +0 -4
- package/components/p-Ds5vN3iu.js +0 -4
- package/components/p-RhI78AKb.js +0 -4
- package/components/p-z-EWo6r-.js +0 -4
- package/dist/ionic/p-129f7b95.entry.js +0 -4
- package/dist/ionic/p-210f906e.entry.js +0 -4
- package/dist/ionic/p-3c6fc2e8.entry.js +0 -4
- package/dist/ionic/p-43729675.entry.js +0 -4
- package/dist/ionic/p-4468e439.entry.js +0 -4
- package/dist/ionic/p-800ce1e0.entry.js +0 -4
- package/dist/ionic/p-84470714.entry.js +0 -4
- package/dist/ionic/p-8af85fa8.entry.js +0 -4
- package/dist/ionic/p-8dQB1sG_.js +0 -4
- package/dist/ionic/p-B2y1T0dN.js +0 -4
- package/dist/ionic/p-BHBb21Hp.js +0 -4
- package/dist/ionic/p-BgkRGRO3.js +0 -4
- package/dist/ionic/p-CNdt1FPc.js +0 -4
- package/dist/ionic/p-Cf6KtUnA.js +0 -4
- package/dist/ionic/p-CfccUand.js +0 -4
- package/dist/ionic/p-DBFcFCH5.js +0 -4
- package/dist/ionic/p-DCmOKz8e.js +0 -4
- package/dist/ionic/p-DFPZa_No.js +0 -4
- package/dist/ionic/p-DYKDWM2f.js +0 -4
- package/dist/ionic/p-DzQk7Lu8.js +0 -4
- package/dist/ionic/p-c56c23b6.entry.js +0 -4
- package/dist/ionic/p-c8c77f7b.entry.js +0 -4
- package/dist/ionic/p-d58e9da3.entry.js +0 -4
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { Fragment, Host, h } from "@stencil/core";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { Build, Fragment, Host, forceUpdate, h, } from "@stencil/core";
|
|
5
|
+
import { createAttributeController } from "../../utils/attribute-controller";
|
|
6
|
+
import { checkInvalidState } from "../../utils/forms/index";
|
|
7
|
+
import { ariaAttributes } from "../../utils/helpers";
|
|
8
|
+
import { printIonError, printIonWarning } from "../../utils/logging/index";
|
|
7
9
|
import { isRTL } from "../../utils/rtl/index";
|
|
8
10
|
import { createColorClasses } from "../../utils/theme";
|
|
9
11
|
import { getIonMode } from "../../global/ionic-global";
|
|
10
12
|
export class InputOTP {
|
|
11
13
|
constructor() {
|
|
12
|
-
this.inheritedAttributes = {};
|
|
13
14
|
this.inputRefs = [];
|
|
14
15
|
this.inputId = `ion-input-otp-${inputIds++}`;
|
|
16
|
+
this.helperTextId = `${this.inputId}-helper-text`;
|
|
17
|
+
this.errorTextId = `${this.inputId}-error-text`;
|
|
18
|
+
this.descriptionId = `${this.inputId}-description`;
|
|
15
19
|
this.parsedSeparators = [];
|
|
16
20
|
/**
|
|
17
21
|
* Tracks whether the user is navigating through input boxes using keyboard navigation
|
|
@@ -27,6 +31,7 @@ export class InputOTP {
|
|
|
27
31
|
this.inputValues = [];
|
|
28
32
|
this.hasFocus = false;
|
|
29
33
|
this.previousInputValues = [];
|
|
34
|
+
this.isInvalid = false;
|
|
30
35
|
/**
|
|
31
36
|
* Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.
|
|
32
37
|
* Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`.
|
|
@@ -379,6 +384,10 @@ export class InputOTP {
|
|
|
379
384
|
this.inputRefs[tabbableIndex]?.focus();
|
|
380
385
|
}
|
|
381
386
|
}
|
|
387
|
+
// The host keeps these (see `HOST_ARIA_ATTRIBUTES`), so re-render when they change
|
|
388
|
+
onHostAriaChange() {
|
|
389
|
+
forceUpdate(this);
|
|
390
|
+
}
|
|
382
391
|
valueChanged() {
|
|
383
392
|
this.initializeValues();
|
|
384
393
|
this.updateTabIndexes();
|
|
@@ -435,13 +444,45 @@ export class InputOTP {
|
|
|
435
444
|
}
|
|
436
445
|
this.parsedSeparators = separatorValues.filter((pos) => pos <= length);
|
|
437
446
|
}
|
|
447
|
+
connectedCallback() {
|
|
448
|
+
const { el } = this;
|
|
449
|
+
if (Build.isBrowser && typeof MutationObserver !== 'undefined') {
|
|
450
|
+
this.validationObserver = new MutationObserver(() => {
|
|
451
|
+
const newIsInvalid = checkInvalidState(el);
|
|
452
|
+
if (this.isInvalid !== newIsInvalid) {
|
|
453
|
+
this.isInvalid = newIsInvalid;
|
|
454
|
+
// Force a re-render to update aria-describedby immediately
|
|
455
|
+
forceUpdate(this);
|
|
456
|
+
}
|
|
457
|
+
});
|
|
458
|
+
this.validationObserver.observe(el, {
|
|
459
|
+
attributes: true,
|
|
460
|
+
attributeFilter: ['class'],
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
this.isInvalid = checkInvalidState(el);
|
|
464
|
+
// Resumes watching after a move, since `componentWillLoad` only runs once
|
|
465
|
+
this.ariaController?.init();
|
|
466
|
+
}
|
|
467
|
+
disconnectedCallback() {
|
|
468
|
+
this.ariaController?.destroy();
|
|
469
|
+
if (this.validationObserver) {
|
|
470
|
+
this.validationObserver.disconnect();
|
|
471
|
+
this.validationObserver = undefined;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
438
474
|
componentWillLoad() {
|
|
439
|
-
|
|
475
|
+
// Only read `role` at load so a later host write isn't copied to the group
|
|
476
|
+
this.ariaController = createAttributeController(this.el, ariaAttributes.filter((attr) => !HOST_ARIA_ATTRIBUTES.includes(attr)), () => forceUpdate(this), ['role']);
|
|
440
477
|
this.processSeparators();
|
|
441
478
|
this.initializeValues();
|
|
442
479
|
}
|
|
443
480
|
componentDidLoad() {
|
|
444
481
|
this.updateTabIndexes();
|
|
482
|
+
// The description only exists after the first render, so render again to reference it
|
|
483
|
+
if (this.getDescriptionText()) {
|
|
484
|
+
forceUpdate(this);
|
|
485
|
+
}
|
|
445
486
|
}
|
|
446
487
|
componentDidRender() {
|
|
447
488
|
if (this.updateTabIndexesAfterRender) {
|
|
@@ -619,14 +660,77 @@ export class InputOTP {
|
|
|
619
660
|
const { length } = this;
|
|
620
661
|
return this.parsedSeparators.includes(index + 1) && index < length - 1;
|
|
621
662
|
}
|
|
663
|
+
/**
|
|
664
|
+
* Returns `undefined` until the first render creates the description container.
|
|
665
|
+
*/
|
|
666
|
+
getDescriptionText() {
|
|
667
|
+
return this.el.querySelector('.input-otp-description')?.textContent?.trim();
|
|
668
|
+
}
|
|
669
|
+
getHintTextId() {
|
|
670
|
+
const { isInvalid, helperText, errorText, helperTextId, errorTextId } = this;
|
|
671
|
+
if (isInvalid && errorText) {
|
|
672
|
+
return errorTextId;
|
|
673
|
+
}
|
|
674
|
+
if (helperText) {
|
|
675
|
+
return helperTextId;
|
|
676
|
+
}
|
|
677
|
+
return undefined;
|
|
678
|
+
}
|
|
679
|
+
renderHintText() {
|
|
680
|
+
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
681
|
+
return [
|
|
682
|
+
h("div", { id: helperTextId, class: "helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null),
|
|
683
|
+
h("div", { id: errorTextId, class: "error-text", role: "alert" }, isInvalid ? errorText : null),
|
|
684
|
+
];
|
|
685
|
+
}
|
|
686
|
+
renderBottomContent() {
|
|
687
|
+
const { helperText, errorText } = this;
|
|
688
|
+
if (!helperText && !errorText) {
|
|
689
|
+
return;
|
|
690
|
+
}
|
|
691
|
+
return h("div", { class: "input-otp-bottom" }, this.renderHintText());
|
|
692
|
+
}
|
|
693
|
+
/**
|
|
694
|
+
* A custom formatter is used as is so translators control the whole name.
|
|
695
|
+
* With a host `aria-labelledby`, each box also references itself so its
|
|
696
|
+
* position is still read.
|
|
697
|
+
*/
|
|
698
|
+
getInputLabelAttributes(index, hostAttributes) {
|
|
699
|
+
const { inputId, inputLabelFormatter, length } = this;
|
|
700
|
+
const hostLabel = hostAttributes['aria-label'];
|
|
701
|
+
const hostLabelledBy = hostAttributes['aria-labelledby'];
|
|
702
|
+
const position = `${index + 1} of ${length}`;
|
|
703
|
+
if (inputLabelFormatter !== undefined) {
|
|
704
|
+
try {
|
|
705
|
+
return { 'aria-label': inputLabelFormatter(index, length) };
|
|
706
|
+
}
|
|
707
|
+
catch (e) {
|
|
708
|
+
printIonError('[ion-input-otp] - Exception in provided `inputLabelFormatter`:', e);
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
if (hostLabelledBy) {
|
|
712
|
+
return { 'aria-label': position, 'aria-labelledby': `${hostLabelledBy} ${inputId}-${index}` };
|
|
713
|
+
}
|
|
714
|
+
return { 'aria-label': hostLabel ? `${hostLabel}, ${position}` : `Input ${position}` };
|
|
715
|
+
}
|
|
622
716
|
render() {
|
|
623
|
-
const { autocapitalize, color, disabled, el, fill, hasFocus,
|
|
717
|
+
const { ariaController, autocapitalize, color, descriptionId, disabled, el, fill, hasFocus, inputId, inputRefs, inputValues, isInvalid, length, readonly, shape, size, } = this;
|
|
624
718
|
const mode = getIonMode(this);
|
|
625
719
|
const inputmode = this.getInputmode();
|
|
626
720
|
const tabbableIndex = this.getTabbableIndex();
|
|
627
721
|
const pattern = this.getPattern();
|
|
628
|
-
const
|
|
629
|
-
|
|
722
|
+
const descriptionText = this.getDescriptionText();
|
|
723
|
+
// Keep the description visible until the first render can check it
|
|
724
|
+
const hasDescription = descriptionText !== '';
|
|
725
|
+
/**
|
|
726
|
+
* Screen readers only announce these from the focused input. The
|
|
727
|
+
* description stays on the group so it isn't repeated for every input.
|
|
728
|
+
*/
|
|
729
|
+
const { 'aria-errormessage': ariaErrorMessage, 'aria-required': ariaRequired, ...groupAttributes } = ariaController?.attributes ?? {};
|
|
730
|
+
const hostDescribedBy = el.getAttribute('aria-describedby');
|
|
731
|
+
const hostInvalid = el.getAttribute('aria-invalid') ?? undefined;
|
|
732
|
+
const describedBy = [hostDescribedBy, this.getHintTextId()].filter(Boolean).join(' ');
|
|
733
|
+
return (h(Host, { key: '5b13c3bed3979e269cf4409895954edb171d68f3', class: createColorClasses(color, {
|
|
630
734
|
[mode]: true,
|
|
631
735
|
'has-focus': hasFocus,
|
|
632
736
|
[`input-otp-size-${size}`]: true,
|
|
@@ -634,7 +738,7 @@ export class InputOTP {
|
|
|
634
738
|
[`input-otp-fill-${fill}`]: true,
|
|
635
739
|
'input-otp-disabled': disabled,
|
|
636
740
|
'input-otp-readonly': readonly,
|
|
637
|
-
}) }, h("div", { key: '
|
|
741
|
+
}) }, h("div", { key: '6db010743f0eb5e059dc00de5822f117a264bb16', role: "group", class: "input-otp-group", ...groupAttributes, "aria-label": groupAttributes['aria-label'] || 'One-time password input', "aria-describedby": descriptionText ? descriptionId : undefined }, Array.from({ length }).map((_, index) => (h(Fragment, null, h("div", { class: "native-wrapper" }, h("input", { class: "native-input", id: `${inputId}-${index}`, ...this.getInputLabelAttributes(index, groupAttributes), "aria-describedby": describedBy || undefined, "aria-errormessage": ariaErrorMessage, "aria-invalid": isInvalid ? 'true' : hostInvalid, "aria-required": ariaRequired, 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) => {
|
|
638
742
|
if (el) {
|
|
639
743
|
inputRefs[index] = el;
|
|
640
744
|
}
|
|
@@ -642,10 +746,10 @@ export class InputOTP {
|
|
|
642
746
|
// The input was removed, so drop its ref and any after it.
|
|
643
747
|
inputRefs.splice(index);
|
|
644
748
|
}
|
|
645
|
-
}, 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: '
|
|
749
|
+
}, 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: '4d55d7532dcc28fadcb2f860dd2fcd2aa45ccccc', id: descriptionId, class: {
|
|
646
750
|
'input-otp-description': true,
|
|
647
751
|
'input-otp-description-hidden': !hasDescription,
|
|
648
|
-
} }, h("slot", { key: '
|
|
752
|
+
} }, h("slot", { key: '5d6823f48a9786799c9d485ce0d6b9de2ae7f537' })), this.renderBottomContent()));
|
|
649
753
|
}
|
|
650
754
|
static get is() { return "ion-input-otp"; }
|
|
651
755
|
static get encapsulation() { return "scoped"; }
|
|
@@ -729,6 +833,25 @@ export class InputOTP {
|
|
|
729
833
|
"attribute": "disabled",
|
|
730
834
|
"defaultValue": "false"
|
|
731
835
|
},
|
|
836
|
+
"errorText": {
|
|
837
|
+
"type": "string",
|
|
838
|
+
"mutable": false,
|
|
839
|
+
"complexType": {
|
|
840
|
+
"original": "string",
|
|
841
|
+
"resolved": "string | undefined",
|
|
842
|
+
"references": {}
|
|
843
|
+
},
|
|
844
|
+
"required": false,
|
|
845
|
+
"optional": true,
|
|
846
|
+
"docs": {
|
|
847
|
+
"tags": [],
|
|
848
|
+
"text": "Text that is placed under the input boxes and displayed when an error is detected."
|
|
849
|
+
},
|
|
850
|
+
"getter": false,
|
|
851
|
+
"setter": false,
|
|
852
|
+
"reflect": false,
|
|
853
|
+
"attribute": "error-text"
|
|
854
|
+
},
|
|
732
855
|
"fill": {
|
|
733
856
|
"type": "string",
|
|
734
857
|
"mutable": false,
|
|
@@ -749,6 +872,49 @@ export class InputOTP {
|
|
|
749
872
|
"attribute": "fill",
|
|
750
873
|
"defaultValue": "'outline'"
|
|
751
874
|
},
|
|
875
|
+
"helperText": {
|
|
876
|
+
"type": "string",
|
|
877
|
+
"mutable": false,
|
|
878
|
+
"complexType": {
|
|
879
|
+
"original": "string",
|
|
880
|
+
"resolved": "string | undefined",
|
|
881
|
+
"references": {}
|
|
882
|
+
},
|
|
883
|
+
"required": false,
|
|
884
|
+
"optional": true,
|
|
885
|
+
"docs": {
|
|
886
|
+
"tags": [],
|
|
887
|
+
"text": "Text that is placed under the input boxes and displayed when no error is detected."
|
|
888
|
+
},
|
|
889
|
+
"getter": false,
|
|
890
|
+
"setter": false,
|
|
891
|
+
"reflect": false,
|
|
892
|
+
"attribute": "helper-text"
|
|
893
|
+
},
|
|
894
|
+
"inputLabelFormatter": {
|
|
895
|
+
"type": "unknown",
|
|
896
|
+
"mutable": false,
|
|
897
|
+
"complexType": {
|
|
898
|
+
"original": "InputOtpLabelFormatter",
|
|
899
|
+
"resolved": "((index: number, length: number) => string) | undefined",
|
|
900
|
+
"references": {
|
|
901
|
+
"InputOtpLabelFormatter": {
|
|
902
|
+
"location": "import",
|
|
903
|
+
"path": "./input-otp-interface",
|
|
904
|
+
"id": "src/components/input-otp/input-otp-interface.ts::InputOtpLabelFormatter",
|
|
905
|
+
"referenceLocation": "InputOtpLabelFormatter"
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
},
|
|
909
|
+
"required": false,
|
|
910
|
+
"optional": true,
|
|
911
|
+
"docs": {
|
|
912
|
+
"tags": [],
|
|
913
|
+
"text": "A callback used to format the accessible name of each input box. It\nreceives the 0-based `index` of the box and the total `length`. By default\nthe name is \"Input 1 of 4\", or \"PIN, 1 of 4\" with an `aria-label` of \"PIN\".\n\nSee https://ionicframework.com/docs/troubleshooting/runtime#accessing-this\nif you need to access `this` from within the callback."
|
|
914
|
+
},
|
|
915
|
+
"getter": false,
|
|
916
|
+
"setter": false
|
|
917
|
+
},
|
|
752
918
|
"inputmode": {
|
|
753
919
|
"type": "string",
|
|
754
920
|
"mutable": false,
|
|
@@ -932,7 +1098,8 @@ export class InputOTP {
|
|
|
932
1098
|
return {
|
|
933
1099
|
"inputValues": {},
|
|
934
1100
|
"hasFocus": {},
|
|
935
|
-
"previousInputValues": {}
|
|
1101
|
+
"previousInputValues": {},
|
|
1102
|
+
"isInvalid": {}
|
|
936
1103
|
};
|
|
937
1104
|
}
|
|
938
1105
|
static get events() {
|
|
@@ -1075,6 +1242,12 @@ export class InputOTP {
|
|
|
1075
1242
|
static get elementRef() { return "el"; }
|
|
1076
1243
|
static get watchers() {
|
|
1077
1244
|
return [{
|
|
1245
|
+
"propName": "aria-describedby",
|
|
1246
|
+
"methodName": "onHostAriaChange"
|
|
1247
|
+
}, {
|
|
1248
|
+
"propName": "aria-invalid",
|
|
1249
|
+
"methodName": "onHostAriaChange"
|
|
1250
|
+
}, {
|
|
1078
1251
|
"propName": "value",
|
|
1079
1252
|
"methodName": "valueChanged"
|
|
1080
1253
|
}, {
|
|
@@ -1090,3 +1263,9 @@ export class InputOTP {
|
|
|
1090
1263
|
}
|
|
1091
1264
|
}
|
|
1092
1265
|
let inputIds = 0;
|
|
1266
|
+
/**
|
|
1267
|
+
* The attribute controller removes these from the host, so an app could never
|
|
1268
|
+
* clear them. They stay on the host instead, which only works for global
|
|
1269
|
+
* attributes since the host has no role.
|
|
1270
|
+
*/
|
|
1271
|
+
const HOST_ARIA_ATTRIBUTES = ['aria-describedby', 'aria-invalid'];
|
|
@@ -111,6 +111,7 @@
|
|
|
111
111
|
* different selectors for different fill variants.
|
|
112
112
|
*/
|
|
113
113
|
--highlight-color: var(--highlight-color-focused);
|
|
114
|
+
--border-color: initial;
|
|
114
115
|
display: block;
|
|
115
116
|
position: relative;
|
|
116
117
|
font-size: 0.875rem;
|
|
@@ -148,7 +149,7 @@
|
|
|
148
149
|
height: var(--height);
|
|
149
150
|
border-width: var(--border-width);
|
|
150
151
|
border-style: solid;
|
|
151
|
-
border-color: var(--border-color);
|
|
152
|
+
border-color: var(--border-color, var(--internal-border-color));
|
|
152
153
|
background: var(--background);
|
|
153
154
|
color: var(--color);
|
|
154
155
|
font-size: inherit;
|
|
@@ -171,6 +172,30 @@
|
|
|
171
172
|
display: none;
|
|
172
173
|
}
|
|
173
174
|
|
|
175
|
+
.input-otp-bottom {
|
|
176
|
+
font-size: 0.75rem;
|
|
177
|
+
line-height: 1.25rem;
|
|
178
|
+
text-align: center;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.input-otp-bottom .error-text {
|
|
182
|
+
display: none;
|
|
183
|
+
color: var(--highlight-color-invalid);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.input-otp-bottom .helper-text {
|
|
187
|
+
display: block;
|
|
188
|
+
color: var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
:host(.ion-touched.ion-invalid) .input-otp-bottom .error-text {
|
|
192
|
+
display: block;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
:host(.ion-touched.ion-invalid) .input-otp-bottom .helper-text {
|
|
196
|
+
display: none;
|
|
197
|
+
}
|
|
198
|
+
|
|
174
199
|
.input-otp-separator {
|
|
175
200
|
border-radius: var(--separator-border-radius);
|
|
176
201
|
flex-shrink: 0;
|
|
@@ -220,7 +245,7 @@
|
|
|
220
245
|
}
|
|
221
246
|
|
|
222
247
|
:host(.input-otp-fill-solid) {
|
|
223
|
-
--border-color: var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));
|
|
248
|
+
--internal-border-color: var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));
|
|
224
249
|
--background: var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));
|
|
225
250
|
}
|
|
226
251
|
|
|
@@ -230,7 +255,7 @@
|
|
|
230
255
|
|
|
231
256
|
:host(.input-otp-fill-outline.input-otp-disabled) {
|
|
232
257
|
--background: var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));
|
|
233
|
-
--border-color: var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));
|
|
258
|
+
--internal-border-color: var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));
|
|
234
259
|
}
|
|
235
260
|
|
|
236
261
|
:host(.input-otp-disabled),
|
|
@@ -249,7 +274,7 @@
|
|
|
249
274
|
|
|
250
275
|
:host(.input-otp-fill-solid.input-otp-disabled),
|
|
251
276
|
:host(.input-otp-fill-solid.input-otp-readonly) {
|
|
252
|
-
--border-color: var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));
|
|
277
|
+
--internal-border-color: var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));
|
|
253
278
|
--background: var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));
|
|
254
279
|
}
|
|
255
280
|
|
|
@@ -377,5 +402,5 @@
|
|
|
377
402
|
}
|
|
378
403
|
|
|
379
404
|
:host(.input-otp-fill-outline) {
|
|
380
|
-
--border-color: var(--ion-color-step-300, var(--ion-background-color-step-300, #b3b3b3));
|
|
405
|
+
--internal-border-color: var(--ion-color-step-300, var(--ion-background-color-step-300, #b3b3b3));
|
|
381
406
|
}
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
import { Build, Host, forceUpdate, h } from "@stencil/core";
|
|
5
5
|
import { createAttributeController } from "../../utils/attribute-controller";
|
|
6
6
|
import { raf } from "../../utils/helpers";
|
|
7
|
-
import { isRTL } from "../../utils/rtl/index";
|
|
8
7
|
import { createColorClasses, hostContext, openURL } from "../../utils/theme";
|
|
9
8
|
import { chevronForward } from "ionicons/icons";
|
|
10
9
|
import { getIonMode } from "../../global/ionic-global";
|
|
@@ -239,7 +238,7 @@ export class Item {
|
|
|
239
238
|
return controls[0];
|
|
240
239
|
}
|
|
241
240
|
render() {
|
|
242
|
-
const { detail, detailIcon, download, labelColorStyles, lines, disabled, href, rel, target, routerAnimation, routerDirection, multipleInputs,
|
|
241
|
+
const { detail, detailIcon, download, labelColorStyles, lines, disabled, href, rel, target, routerAnimation, routerDirection, multipleInputs, } = this;
|
|
243
242
|
const inheritedAriaAttributes = this.ariaController?.attributes ?? {};
|
|
244
243
|
const childStyles = {};
|
|
245
244
|
const mode = getIonMode(this);
|
|
@@ -316,7 +315,7 @@ export class Item {
|
|
|
316
315
|
* multi-input item, and in a clickable item, which is a second tab stop.
|
|
317
316
|
*/
|
|
318
317
|
const slottedIndicatorNeedsRoom = this.hasSlottedIndicatorControl && (multipleInputs || this.isClickable());
|
|
319
|
-
return (h(Host, { key: '
|
|
318
|
+
return (h(Host, { key: '7fe924642310c19f057ae1bfa29c1acdf5cc7ed6', "aria-disabled": ariaDisabled, class: {
|
|
320
319
|
...childStyles,
|
|
321
320
|
...labelColorStyles,
|
|
322
321
|
...createColorClasses(this.color, {
|
|
@@ -331,9 +330,9 @@ export class Item {
|
|
|
331
330
|
'item-focus-indicator-room': slottedIndicatorNeedsRoom,
|
|
332
331
|
'ion-activatable': canActivate,
|
|
333
332
|
'ion-focusable': this.focusable,
|
|
334
|
-
'item-rtl':
|
|
333
|
+
'item-rtl': document.dir === 'rtl',
|
|
335
334
|
}),
|
|
336
|
-
}, role: inList ? 'listitem' : null }, h(TagType, { key: '
|
|
335
|
+
}, role: inList ? 'listitem' : null }, h(TagType, { key: '8fddfb2a076b4b98e45ee8b23579d011dba12acb', ...attrs, ...inheritedAriaAttributes, class: "item-native", part: "native", disabled: disabled, ...clickFn }, h("slot", { key: '7f888b62b2023cf501fd308e32629e7a291c2d05', name: "start", onSlotchange: this.updateInteractivityOnSlotChange }), h("div", { key: '6d5cdde307caa65b131edb65cb0a5f8294cf151c', class: "item-inner", part: "inner" }, h("div", { key: '9fbfffdff4cf51adf1f02d573953cf8b145574b0', class: "input-wrapper", part: "container" }, h("slot", { key: '574c7e61cdaa3959a28bad7353105ef217a76ed9', onSlotchange: this.updateInteractivityOnSlotChange })), h("slot", { key: 'ed7e211960cd65ed17f865a6d50d5bdde069416b', name: "end", onSlotchange: this.updateInteractivityOnSlotChange }), showDetail && (h("ion-icon", { key: '2847bb21f42e9d5ab8ea86262b2bc1c3b3f7c902', 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: '55502ef394db0953144387fa3baebf9fa6a976a9' }))));
|
|
337
336
|
}
|
|
338
337
|
static get is() { return "ion-item"; }
|
|
339
338
|
static get encapsulation() { return "shadow"; }
|
|
@@ -20,8 +20,8 @@ export class ItemOptions {
|
|
|
20
20
|
}
|
|
21
21
|
render() {
|
|
22
22
|
const mode = getIonMode(this);
|
|
23
|
-
const isEnd = isEndSide(this.side
|
|
24
|
-
return (h(Host, { key: '
|
|
23
|
+
const isEnd = isEndSide(this.side);
|
|
24
|
+
return (h(Host, { key: '6e60ff004d48bf7701711e518ec0b21264496ae8', class: {
|
|
25
25
|
[mode]: true,
|
|
26
26
|
// Used internally for styling
|
|
27
27
|
[`item-options-${mode}`]: true,
|
|
@@ -5,7 +5,6 @@ import { Host, h } from "@stencil/core";
|
|
|
5
5
|
import { findClosestIonContent, disableContentScrollY, resetContentScrollY } from "../../utils/content/index";
|
|
6
6
|
import { componentOnReady, isEndSide } from "../../utils/helpers";
|
|
7
7
|
import { printIonWarning } from "../../utils/logging/index";
|
|
8
|
-
import { isRTL } from "../../utils/rtl/index";
|
|
9
8
|
import { watchForOptions } from "../../utils/watch-options";
|
|
10
9
|
import { getIonMode } from "../../global/ionic-global";
|
|
11
10
|
const SWIPE_MARGIN = 30;
|
|
@@ -121,7 +120,7 @@ export class ItemSliding {
|
|
|
121
120
|
side = optionsToOpen === this.leftOptions ? 'start' : 'end';
|
|
122
121
|
}
|
|
123
122
|
// In RTL we want to switch the sides
|
|
124
|
-
side = isEndSide(side
|
|
123
|
+
side = isEndSide(side) ? 'end' : 'start';
|
|
125
124
|
const isStartOpen = this.openAmount < 0;
|
|
126
125
|
const isEndOpen = this.openAmount > 0;
|
|
127
126
|
/**
|
|
@@ -190,7 +189,7 @@ export class ItemSliding {
|
|
|
190
189
|
// Reset left and right options in case they were removed
|
|
191
190
|
this.leftOptions = this.rightOptions = undefined;
|
|
192
191
|
for (const option of options) {
|
|
193
|
-
const side = isEndSide(option.side ?? option.getAttribute('side')
|
|
192
|
+
const side = isEndSide(option.side ?? option.getAttribute('side')) ? 'end' : 'start';
|
|
194
193
|
if (side === 'start') {
|
|
195
194
|
this.leftOptions = option;
|
|
196
195
|
sides |= 1 /* ItemSide.Start */;
|
|
@@ -209,7 +208,7 @@ export class ItemSliding {
|
|
|
209
208
|
* do not open left side so swipe to go
|
|
210
209
|
* back will still work.
|
|
211
210
|
*/
|
|
212
|
-
const rtl =
|
|
211
|
+
const rtl = document.dir === 'rtl';
|
|
213
212
|
const atEdge = rtl ? window.innerWidth - gesture.startX < 15 : gesture.startX < 15;
|
|
214
213
|
if (atEdge) {
|
|
215
214
|
return false;
|
|
@@ -388,7 +387,7 @@ export class ItemSliding {
|
|
|
388
387
|
}
|
|
389
388
|
render() {
|
|
390
389
|
const mode = getIonMode(this);
|
|
391
|
-
return (h(Host, { key: '
|
|
390
|
+
return (h(Host, { key: '02174ca963753d3a51a4249068f3d436f8acb03d', class: {
|
|
392
391
|
[mode]: true,
|
|
393
392
|
'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
|
|
394
393
|
'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { Host, h } from "@stencil/core";
|
|
5
|
-
import { isRTL } from "../../utils/rtl/index";
|
|
6
5
|
import { createColorClasses, hostContext } from "../../utils/theme";
|
|
7
6
|
import { getIonMode } from "../../global/ionic-global";
|
|
8
7
|
/**
|
|
@@ -59,13 +58,13 @@ export class Label {
|
|
|
59
58
|
render() {
|
|
60
59
|
const position = this.position;
|
|
61
60
|
const mode = getIonMode(this);
|
|
62
|
-
return (h(Host, { key: '
|
|
61
|
+
return (h(Host, { key: '461604c1887f322dc13d7df3d5cdbb7ee1361117', class: createColorClasses(this.color, {
|
|
63
62
|
[mode]: true,
|
|
64
63
|
'in-item-color': hostContext('ion-item.ion-color', this.el),
|
|
65
64
|
[`label-${position}`]: position !== undefined,
|
|
66
65
|
[`label-no-animate`]: this.noAnimate,
|
|
67
|
-
'label-rtl':
|
|
68
|
-
}) }, h("slot", { key: '
|
|
66
|
+
'label-rtl': document.dir === 'rtl',
|
|
67
|
+
}) }, h("slot", { key: 'a7005d0a217641278aa8e95144e8e4b9ae87a1c5' })));
|
|
69
68
|
}
|
|
70
69
|
static get is() { return "ion-label"; }
|
|
71
70
|
static get encapsulation() { return "scoped"; }
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { createAnimation } from "../../../utils/animation/animation";
|
|
5
5
|
import { getElementRoot } from "../../../utils/helpers";
|
|
6
|
-
import { isRTL } from "../../../utils/rtl/index";
|
|
7
6
|
import { calculateWindowAdjustment, getArrowDimensions, getElementCSSZoom, getPopoverDimensions, getPopoverPosition, getSafeAreaInsets, shouldShowArrow, } from "../utils";
|
|
8
7
|
const POPOVER_IOS_BODY_PADDING = 5;
|
|
9
8
|
/**
|
|
@@ -22,7 +21,7 @@ const POPOVER_IOS_MIN_EDGE_MARGIN = 25;
|
|
|
22
21
|
export const iosEnterAnimation = (baseEl, opts) => {
|
|
23
22
|
const { event: ev, size, trigger, reference, side, align } = opts;
|
|
24
23
|
const doc = baseEl.ownerDocument;
|
|
25
|
-
const
|
|
24
|
+
const isRTL = doc.dir === 'rtl';
|
|
26
25
|
const root = getElementRoot(baseEl);
|
|
27
26
|
const contentEl = root.querySelector('.popover-content');
|
|
28
27
|
const arrowEl = root.querySelector('.popover-arrow');
|
|
@@ -48,10 +47,10 @@ export const iosEnterAnimation = (baseEl, opts) => {
|
|
|
48
47
|
const defaultPosition = {
|
|
49
48
|
top: bodyHeight / 2 - contentHeight / 2,
|
|
50
49
|
left: bodyWidth / 2 - contentWidth / 2,
|
|
51
|
-
originX:
|
|
50
|
+
originX: isRTL ? 'right' : 'left',
|
|
52
51
|
originY: 'top',
|
|
53
52
|
};
|
|
54
|
-
const results = getPopoverPosition(
|
|
53
|
+
const results = getPopoverPosition(isRTL, contentWidth, contentHeight, arrowWidth, arrowHeight, reference, side, align, defaultPosition, trigger, ev, zoom);
|
|
55
54
|
const padding = size === 'cover' ? 0 : POPOVER_IOS_BODY_PADDING;
|
|
56
55
|
const rawSafeArea = getSafeAreaInsets(doc);
|
|
57
56
|
const safeArea = size === 'cover'
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { createAnimation } from "../../../utils/animation/animation";
|
|
5
5
|
import { getElementRoot } from "../../../utils/helpers";
|
|
6
|
-
import { isRTL } from "../../../utils/rtl/index";
|
|
7
6
|
import { calculateWindowAdjustment, getElementCSSZoom, getPopoverDimensions, getPopoverPosition, getSafeAreaInsets, } from "../utils";
|
|
8
7
|
const POPOVER_MD_BODY_PADDING = 12;
|
|
9
8
|
/**
|
|
@@ -13,7 +12,7 @@ const POPOVER_MD_BODY_PADDING = 12;
|
|
|
13
12
|
export const mdEnterAnimation = (baseEl, opts) => {
|
|
14
13
|
const { event: ev, size, trigger, reference, side, align } = opts;
|
|
15
14
|
const doc = baseEl.ownerDocument;
|
|
16
|
-
const
|
|
15
|
+
const isRTL = doc.dir === 'rtl';
|
|
17
16
|
const root = getElementRoot(baseEl);
|
|
18
17
|
const contentEl = root.querySelector('.popover-content');
|
|
19
18
|
/**
|
|
@@ -37,10 +36,10 @@ export const mdEnterAnimation = (baseEl, opts) => {
|
|
|
37
36
|
const defaultPosition = {
|
|
38
37
|
top: bodyHeight / 2 - contentHeight / 2,
|
|
39
38
|
left: bodyWidth / 2 - contentWidth / 2,
|
|
40
|
-
originX:
|
|
39
|
+
originX: isRTL ? 'right' : 'left',
|
|
41
40
|
originY: 'top',
|
|
42
41
|
};
|
|
43
|
-
const results = getPopoverPosition(
|
|
42
|
+
const results = getPopoverPosition(isRTL, contentWidth, contentHeight, 0, 0, reference, side, align, defaultPosition, trigger, ev, zoom);
|
|
44
43
|
const padding = size === 'cover' ? 0 : POPOVER_MD_BODY_PADDING;
|
|
45
44
|
// MD mode now applies safe-area insets (previously passed 0, ignoring all safe areas).
|
|
46
45
|
// This is needed for Android edge-to-edge (API 36+) where system bars overlap content.
|
|
@@ -9,7 +9,6 @@ import { createLockController } from "../../utils/lock-controller";
|
|
|
9
9
|
import { printIonWarning } from "../../utils/logging/index";
|
|
10
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
|
-
import { isRTL } from "../../utils/rtl/index";
|
|
13
12
|
import { getClassMap } from "../../utils/theme";
|
|
14
13
|
import { deepReady, waitForMount } from "../../utils/transition/index";
|
|
15
14
|
import { getIonMode } from "../../global/ionic-global";
|
|
@@ -35,7 +34,6 @@ export class Popover {
|
|
|
35
34
|
this.lockController = createLockController();
|
|
36
35
|
this.inline = false;
|
|
37
36
|
this.focusDescendantOnPresent = false;
|
|
38
|
-
this.dirSetOnPresent = false;
|
|
39
37
|
this.presented = false;
|
|
40
38
|
/** @internal */
|
|
41
39
|
this.hasController = false;
|
|
@@ -336,15 +334,6 @@ export class Popover {
|
|
|
336
334
|
}
|
|
337
335
|
const { el } = this;
|
|
338
336
|
const { inline, delegate } = this.getDelegate(true);
|
|
339
|
-
/**
|
|
340
|
-
* When presented, ion-popover is hoisted from its place in the element
|
|
341
|
-
* hierarchy. Copy the current direction onto this element so that child
|
|
342
|
-
* elements can match.
|
|
343
|
-
*/
|
|
344
|
-
if (!el.hasAttribute('dir')) {
|
|
345
|
-
el.setAttribute('dir', isRTL(el) ? 'rtl' : 'ltr');
|
|
346
|
-
this.dirSetOnPresent = true;
|
|
347
|
-
}
|
|
348
337
|
/**
|
|
349
338
|
* Emit ionMount so JS Frameworks have an opportunity
|
|
350
339
|
* to add the child component to the DOM. The child
|
|
@@ -465,10 +454,6 @@ export class Popover {
|
|
|
465
454
|
*/
|
|
466
455
|
const { delegate } = this.getDelegate();
|
|
467
456
|
await detachComponent(delegate, this.usersElement);
|
|
468
|
-
if (this.dirSetOnPresent) {
|
|
469
|
-
this.el.removeAttribute('dir');
|
|
470
|
-
this.dirSetOnPresent = false;
|
|
471
|
-
}
|
|
472
457
|
}
|
|
473
458
|
unlock();
|
|
474
459
|
return shouldDismiss;
|
|
@@ -496,7 +481,7 @@ export class Popover {
|
|
|
496
481
|
const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
|
|
497
482
|
const desktop = isPlatform('desktop');
|
|
498
483
|
const enableArrow = arrow && !parentPopover;
|
|
499
|
-
return (h(Host, { key: '
|
|
484
|
+
return (h(Host, { key: 'b5e9c788f58397203976d5f8302dfb89e916efe1', "aria-modal": "true", "no-router": true, tabindex: "-1", ...htmlAttributes, style: {
|
|
500
485
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
501
486
|
}, class: {
|
|
502
487
|
...getClassMap(this.cssClass),
|
|
@@ -507,7 +492,7 @@ export class Popover {
|
|
|
507
492
|
[`popover-side-${side}`]: true,
|
|
508
493
|
[FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false,
|
|
509
494
|
'popover-nested': !!parentPopover,
|
|
510
|
-
}, onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }, !parentPopover && h("ion-backdrop", { key: '
|
|
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' })))));
|
|
511
496
|
}
|
|
512
497
|
static get is() { return "ion-popover"; }
|
|
513
498
|
static get encapsulation() { return "shadow"; }
|