@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
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { Host, h } from "@stencil/core";
|
|
5
5
|
import { clamp } from "../../utils/helpers";
|
|
6
|
-
import { isRTL } from "../../utils/rtl/index";
|
|
7
6
|
import { createColorClasses } from "../../utils/theme";
|
|
8
7
|
import { config } from "../../global/config";
|
|
9
8
|
import { getIonMode } from "../../global/ionic-global";
|
|
@@ -39,16 +38,16 @@ export class ProgressBar {
|
|
|
39
38
|
this.buffer = 1;
|
|
40
39
|
}
|
|
41
40
|
render() {
|
|
42
|
-
const { color, type, reversed, value, buffer
|
|
41
|
+
const { color, type, reversed, value, buffer } = this;
|
|
43
42
|
const paused = config.getBoolean('_testing');
|
|
44
43
|
const mode = getIonMode(this);
|
|
45
44
|
// If the progress is displayed as a solid bar.
|
|
46
45
|
const progressSolid = buffer === 1;
|
|
47
|
-
return (h(Host, { key: '
|
|
46
|
+
return (h(Host, { key: 'd53d39a3e2c0198164a9face62d3775f357b6914', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses(color, {
|
|
48
47
|
[mode]: true,
|
|
49
48
|
[`progress-bar-${type}`]: true,
|
|
50
49
|
'progress-paused': paused,
|
|
51
|
-
'progress-bar-reversed':
|
|
50
|
+
'progress-bar-reversed': document.dir === 'rtl' ? !reversed : reversed,
|
|
52
51
|
'progress-bar-solid': progressSolid,
|
|
53
52
|
}) }, type === 'indeterminate' ? renderIndeterminate() : renderProgress(value, buffer)));
|
|
54
53
|
}
|
|
@@ -176,7 +175,6 @@ export class ProgressBar {
|
|
|
176
175
|
}
|
|
177
176
|
};
|
|
178
177
|
}
|
|
179
|
-
static get elementRef() { return "el"; }
|
|
180
178
|
}
|
|
181
179
|
const renderIndeterminate = () => {
|
|
182
180
|
return (h("div", { part: "track", class: "progress-buffer-bar" }, h("div", { class: "indeterminate-bar-primary" }, h("span", { part: "progress", class: "progress-indeterminate" })), h("div", { class: "indeterminate-bar-secondary" }, h("span", { part: "progress", class: "progress-indeterminate" }))));
|
|
@@ -6,6 +6,14 @@ export class Route {
|
|
|
6
6
|
*
|
|
7
7
|
* Accepts paths similar to expressjs so that you can define parameters
|
|
8
8
|
* in the url /foo/:bar where bar would be available in incoming props.
|
|
9
|
+
*
|
|
10
|
+
* A url ending in `*`, such as `*` or `/admin/*`, matches any remaining path,
|
|
11
|
+
* including none, so `/admin/*` also matches `/admin`. It only wins over a
|
|
12
|
+
* route that matches the whole path when it has more fixed segments, so
|
|
13
|
+
* `/admin/*` wins over `/:section/:id` but not over `/admin/:id`. It always
|
|
14
|
+
* wins over a route that matches by ignoring trailing segments, such as
|
|
15
|
+
* `/admin` for `/admin/users`. The matched path is passed in the `pathMatch`
|
|
16
|
+
* prop without a leading `/`. A `*` on a route with child routes is ignored.
|
|
9
17
|
*/
|
|
10
18
|
this.url = '';
|
|
11
19
|
}
|
|
@@ -47,7 +55,7 @@ export class Route {
|
|
|
47
55
|
"optional": false,
|
|
48
56
|
"docs": {
|
|
49
57
|
"tags": [],
|
|
50
|
-
"text": "Relative path that needs to match in order for this route to apply.\n\nAccepts paths similar to expressjs so that you can define parameters\nin the url /foo/:bar where bar would be available in incoming props."
|
|
58
|
+
"text": "Relative path that needs to match in order for this route to apply.\n\nAccepts paths similar to expressjs so that you can define parameters\nin the url /foo/:bar where bar would be available in incoming props.\n\nA url ending in `*`, such as `*` or `/admin/*`, matches any remaining path,\nincluding none, so `/admin/*` also matches `/admin`. It only wins over a\nroute that matches the whole path when it has more fixed segments, so\n`/admin/*` wins over `/:section/:id` but not over `/admin/:id`. It always\nwins over a route that matches by ignoring trailing segments, such as\n`/admin` for `/admin/users`. The matched path is passed in the `pathMatch`\nprop without a leading `/`. A `*` on a route with child routes is ignored."
|
|
51
59
|
},
|
|
52
60
|
"getter": false,
|
|
53
61
|
"setter": false,
|
|
@@ -20,7 +20,7 @@ export class RouteRedirect {
|
|
|
20
20
|
"optional": false,
|
|
21
21
|
"docs": {
|
|
22
22
|
"tags": [],
|
|
23
|
-
"text": "A redirect route, redirects \"from\" a URL \"to\" another URL. This property is that \"from\" URL.\nIt needs to be an exact match of the navigated URL in order to apply
|
|
23
|
+
"text": "A redirect route, redirects \"from\" a URL \"to\" another URL. This property is that \"from\" URL.\nIt needs to be an exact match of the navigated URL in order to apply, unless it contains a `*`.\nA `*` matches the rest of the path from that segment on, as long as the path has at least as\nmany segments as `from`, so `/admin/*` matches `/admin/posts` but not `/admin`.\n\nThe path specified in this value is always an absolute path, even if the initial `/` slash\nis not specified."
|
|
24
24
|
},
|
|
25
25
|
"getter": false,
|
|
26
26
|
"setter": false,
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
+
import { WILDCARD_PARAM } from "./constants";
|
|
5
|
+
import { chainToSegments, endsWithWildcard, withoutWildcard } from "./path";
|
|
4
6
|
/**
|
|
5
7
|
* Returns whether the given redirect matches the given path segments.
|
|
6
8
|
*
|
|
@@ -41,6 +43,10 @@ export const matchesIDs = (ids, chain) => {
|
|
|
41
43
|
if (routeId.id.toLowerCase() !== routeChain.id) {
|
|
42
44
|
break;
|
|
43
45
|
}
|
|
46
|
+
// Weight a wildcard route when the outlet reports its `pathMatch`
|
|
47
|
+
if (routeId.params?.[WILDCARD_PARAM] !== undefined && endsWithWildcard(routeChain.segments)) {
|
|
48
|
+
score++;
|
|
49
|
+
}
|
|
44
50
|
if (routeId.params) {
|
|
45
51
|
const routeIdParams = Object.keys(routeId.params);
|
|
46
52
|
// Only compare routes with the chain that have the same number of parameters.
|
|
@@ -96,21 +102,28 @@ export const matchesSegments = (segments, chain) => {
|
|
|
96
102
|
matchesDefault = true;
|
|
97
103
|
}
|
|
98
104
|
else {
|
|
99
|
-
|
|
105
|
+
const params = {};
|
|
106
|
+
for (const segment of withoutWildcard(chainSegments)) {
|
|
100
107
|
const data = inputSegments.next();
|
|
101
108
|
// data param
|
|
102
109
|
if (segment[0] === ':') {
|
|
103
110
|
if (data === '') {
|
|
104
111
|
return null;
|
|
105
112
|
}
|
|
106
|
-
allparams = allparams || [];
|
|
107
|
-
const params = allparams[i] || (allparams[i] = {});
|
|
108
113
|
params[segment.slice(1)] = data;
|
|
109
114
|
}
|
|
110
115
|
else if (data !== segment) {
|
|
111
116
|
return null;
|
|
112
117
|
}
|
|
113
118
|
}
|
|
119
|
+
// A trailing `*` on a parent route has no effect. Its children match the rest of the path.
|
|
120
|
+
if (i === chain.length - 1 && endsWithWildcard(chainSegments)) {
|
|
121
|
+
params[WILDCARD_PARAM] = inputSegments.rest().join('/');
|
|
122
|
+
}
|
|
123
|
+
if (Object.keys(params).length > 0) {
|
|
124
|
+
allparams = allparams || [];
|
|
125
|
+
allparams[i] = params;
|
|
126
|
+
}
|
|
114
127
|
matchesDefault = false;
|
|
115
128
|
}
|
|
116
129
|
}
|
|
@@ -142,25 +155,38 @@ export const mergeParams = (a, b) => {
|
|
|
142
155
|
* Returns the best match or null when no match is found.
|
|
143
156
|
* When a chain is returned the parameters are updated from the RouteIDs.
|
|
144
157
|
* That is they contain both the componentProps of the <ion-route> and the parameter segment.
|
|
158
|
+
*
|
|
159
|
+
* When a wildcard route ties with other routes, a route without a wildcard that can build a url wins,
|
|
160
|
+
* then the wildcard route. Otherwise the first route declared wins a tie.
|
|
145
161
|
*/
|
|
146
162
|
export const findChainForIDs = (ids, chains) => {
|
|
147
|
-
let match = null;
|
|
148
163
|
let maxMatches = 0;
|
|
164
|
+
let tied = [];
|
|
149
165
|
for (const chain of chains) {
|
|
150
166
|
const score = matchesIDs(ids, chain);
|
|
151
167
|
if (score > maxMatches) {
|
|
152
|
-
match = chain;
|
|
153
168
|
maxMatches = score;
|
|
169
|
+
tied = [chain];
|
|
170
|
+
}
|
|
171
|
+
else if (score > 0 && score === maxMatches) {
|
|
172
|
+
tied.push(chain);
|
|
154
173
|
}
|
|
155
174
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
175
|
+
const matches = tied.map((chain) => chain.map((route, i) => ({
|
|
176
|
+
id: route.id,
|
|
177
|
+
segments: route.segments,
|
|
178
|
+
params: mergeParams(route.params, ids[i]?.params),
|
|
179
|
+
})));
|
|
180
|
+
if (!matches.some(chainEndsWithWildcard)) {
|
|
181
|
+
return matches.length > 0 ? matches[0] : null;
|
|
182
|
+
}
|
|
183
|
+
return matches.reduce((best, chain) => (tieRank(chain) > tieRank(best) ? chain : best));
|
|
184
|
+
};
|
|
185
|
+
const tieRank = (chain) => {
|
|
186
|
+
if (chainEndsWithWildcard(chain)) {
|
|
187
|
+
return 1;
|
|
162
188
|
}
|
|
163
|
-
return null;
|
|
189
|
+
return chainToSegments(chain) !== null ? 2 : 0;
|
|
164
190
|
};
|
|
165
191
|
/**
|
|
166
192
|
* Finds the best match for the segments in the chains.
|
|
@@ -168,10 +194,17 @@ export const findChainForIDs = (ids, chains) => {
|
|
|
168
194
|
* Returns the best match or null when no match is found.
|
|
169
195
|
* When a chain is returned the parameters are updated from the segments.
|
|
170
196
|
* That is they contain both the componentProps of the <ion-route> and the parameter segments.
|
|
197
|
+
*
|
|
198
|
+
* When wildcard routes match, the one with the most fixed segments wins if it has more fixed segments than every
|
|
199
|
+
* route that matched the whole path. Routes that only matched by ignoring trailing segments don't count.
|
|
171
200
|
*/
|
|
172
201
|
export const findChainForSegments = (segments, chains) => {
|
|
173
202
|
let match = null;
|
|
174
203
|
let bestScore = 0;
|
|
204
|
+
let fullMatch = null;
|
|
205
|
+
let bestFullScore = 0;
|
|
206
|
+
let maxFullFixed = -1;
|
|
207
|
+
let wildcard = null;
|
|
175
208
|
for (const chain of chains) {
|
|
176
209
|
const matchedChain = matchesSegments(segments, chain);
|
|
177
210
|
if (matchedChain !== null) {
|
|
@@ -180,9 +213,51 @@ export const findChainForSegments = (segments, chains) => {
|
|
|
180
213
|
bestScore = score;
|
|
181
214
|
match = matchedChain;
|
|
182
215
|
}
|
|
216
|
+
if (chainEndsWithWildcard(matchedChain)) {
|
|
217
|
+
if (wildcard === null || winsWildcard(matchedChain, wildcard)) {
|
|
218
|
+
wildcard = matchedChain;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
else if (!isPartialMatch(segments, matchedChain)) {
|
|
222
|
+
if (score > bestFullScore) {
|
|
223
|
+
bestFullScore = score;
|
|
224
|
+
fullMatch = matchedChain;
|
|
225
|
+
}
|
|
226
|
+
maxFullFixed = Math.max(maxFullFixed, countFixedSegments(matchedChain));
|
|
227
|
+
}
|
|
183
228
|
}
|
|
184
229
|
}
|
|
185
|
-
|
|
230
|
+
// Without a wildcard to match the rest of the path, routes can still ignore trailing segments.
|
|
231
|
+
if (wildcard === null) {
|
|
232
|
+
return match;
|
|
233
|
+
}
|
|
234
|
+
// Compare fixed segments rather than priority, since nesting under default routes raises the priority
|
|
235
|
+
return countFixedSegments(wildcard) > maxFullFixed ? wildcard : fullMatch;
|
|
236
|
+
};
|
|
237
|
+
/** Returns whether the chain matched the path segments only by ignoring some trailing segments. */
|
|
238
|
+
const isPartialMatch = (segments, chain) => {
|
|
239
|
+
const matched = chainToSegments(chain);
|
|
240
|
+
return matched !== null && matched.length < segments.filter((s) => s !== '').length;
|
|
241
|
+
};
|
|
242
|
+
const chainEndsWithWildcard = (chain) => {
|
|
243
|
+
return endsWithWildcard(chain[chain.length - 1].segments);
|
|
244
|
+
};
|
|
245
|
+
/** Returns whether the wildcard chain beats `best` by fixed segments, then by priority. */
|
|
246
|
+
const winsWildcard = (chain, best) => {
|
|
247
|
+
const chainFixed = countFixedSegments(chain);
|
|
248
|
+
const bestFixed = countFixedSegments(best);
|
|
249
|
+
return chainFixed > bestFixed || (chainFixed === bestFixed && computePriority(chain) > computePriority(best));
|
|
250
|
+
};
|
|
251
|
+
const countFixedSegments = (chain) => {
|
|
252
|
+
let count = 0;
|
|
253
|
+
for (const route of chain) {
|
|
254
|
+
for (const segment of withoutWildcard(route.segments)) {
|
|
255
|
+
if (segment !== '' && segment[0] !== ':') {
|
|
256
|
+
count++;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return count;
|
|
186
261
|
};
|
|
187
262
|
/**
|
|
188
263
|
* Computes the priority of a chain.
|
|
@@ -194,12 +269,14 @@ export const findChainForSegments = (segments, chains) => {
|
|
|
194
269
|
* - /path/to/page
|
|
195
270
|
*
|
|
196
271
|
* The second one will be given a higher priority because "page" is a fixed segment (vs ":where", a parameter segment).
|
|
272
|
+
*
|
|
273
|
+
* A trailing wildcard is not counted.
|
|
197
274
|
*/
|
|
198
275
|
export const computePriority = (chain) => {
|
|
199
276
|
let score = 1;
|
|
200
277
|
let level = 1;
|
|
201
278
|
for (const route of chain) {
|
|
202
|
-
for (const segment of route.segments) {
|
|
279
|
+
for (const segment of withoutWildcard(route.segments)) {
|
|
203
280
|
if (segment[0] === ':') {
|
|
204
281
|
score += Math.pow(1, level);
|
|
205
282
|
}
|
|
@@ -221,4 +298,10 @@ export class RouterSegments {
|
|
|
221
298
|
}
|
|
222
299
|
return '';
|
|
223
300
|
}
|
|
301
|
+
/** Consumes and returns the remaining non empty segments. */
|
|
302
|
+
rest() {
|
|
303
|
+
const rest = this.segments.filter((s) => s !== '');
|
|
304
|
+
this.segments = [];
|
|
305
|
+
return rest;
|
|
306
|
+
}
|
|
224
307
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { ROUTER_INTENT_FORWARD } from "./constants";
|
|
4
|
+
import { ROUTER_INTENT_FORWARD, WILDCARD_PARAM } from "./constants";
|
|
5
5
|
/** Join the non empty segments with "/". */
|
|
6
6
|
export const generatePath = (segments) => {
|
|
7
7
|
const path = segments.filter((s) => s.length > 0).join('/');
|
|
@@ -34,12 +34,13 @@ export const writeSegments = (history, root, useHash, segments, direction, state
|
|
|
34
34
|
*
|
|
35
35
|
* Notes:
|
|
36
36
|
* - parameter segments of the form :param are replaced with their value,
|
|
37
|
-
* - null is returned when a value is missing for any parameter segment
|
|
37
|
+
* - null is returned when a value is missing for any parameter segment,
|
|
38
|
+
* - a trailing wildcard is replaced with the path it matched.
|
|
38
39
|
*/
|
|
39
40
|
export const chainToSegments = (chain) => {
|
|
40
41
|
const segments = [];
|
|
41
42
|
for (const route of chain) {
|
|
42
|
-
for (const segment of route.segments) {
|
|
43
|
+
for (const segment of withoutWildcard(route.segments)) {
|
|
43
44
|
if (segment[0] === ':') {
|
|
44
45
|
const param = route.params && route.params[segment.slice(1)];
|
|
45
46
|
if (!param) {
|
|
@@ -51,9 +52,22 @@ export const chainToSegments = (chain) => {
|
|
|
51
52
|
segments.push(segment);
|
|
52
53
|
}
|
|
53
54
|
}
|
|
55
|
+
segments.push(...wildcardSegments(route));
|
|
54
56
|
}
|
|
55
57
|
return segments;
|
|
56
58
|
};
|
|
59
|
+
/** Only a `*` in the last segment of a route url is a wildcard. Elsewhere it's matched literally. */
|
|
60
|
+
export const endsWithWildcard = (segments) => {
|
|
61
|
+
return segments[segments.length - 1] === '*';
|
|
62
|
+
};
|
|
63
|
+
/** Returns the path segments matched by the trailing wildcard of the route. */
|
|
64
|
+
const wildcardSegments = (route) => {
|
|
65
|
+
const pathMatch = endsWithWildcard(route.segments) ? route.params?.[WILDCARD_PARAM] : undefined;
|
|
66
|
+
return pathMatch ? pathMatch.split('/').filter((s) => s.length > 0) : [];
|
|
67
|
+
};
|
|
68
|
+
export const withoutWildcard = (segments) => {
|
|
69
|
+
return endsWithWildcard(segments) ? segments.slice(0, -1) : segments;
|
|
70
|
+
};
|
|
57
71
|
/**
|
|
58
72
|
* Removes the prefix segments from the path segments.
|
|
59
73
|
*
|
|
@@ -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 } from "../../utils/theme";
|
|
7
6
|
import { getIonMode } from "../../global/ionic-global";
|
|
8
7
|
export class ToolbarTitle {
|
|
@@ -24,11 +23,11 @@ export class ToolbarTitle {
|
|
|
24
23
|
render() {
|
|
25
24
|
const mode = getIonMode(this);
|
|
26
25
|
const size = this.getSize();
|
|
27
|
-
return (h(Host, { key: '
|
|
26
|
+
return (h(Host, { key: 'c5f0b913ff0a22d9bf02da48a313a613c2ac8fe7', class: createColorClasses(this.color, {
|
|
28
27
|
[mode]: true,
|
|
29
28
|
[`title-${size}`]: true,
|
|
30
|
-
'title-rtl':
|
|
31
|
-
}) }, h("div", { key: '
|
|
29
|
+
'title-rtl': document.dir === 'rtl',
|
|
30
|
+
}) }, h("div", { key: '5253b9e39fb764bfe1e57370719139f8a83e9904', class: "toolbar-title" }, h("slot", { key: 'e38b1eccb0175c36f8cab211aee7ce4d61fc9035' }))));
|
|
32
31
|
}
|
|
33
32
|
static get is() { return "ion-title"; }
|
|
34
33
|
static get encapsulation() { return "shadow"; }
|
|
@@ -324,7 +324,8 @@ export const pointerCoord = (ev) => {
|
|
|
324
324
|
*
|
|
325
325
|
* @param side The current side before being redefined based on the direction.
|
|
326
326
|
* @param hostEl The component's host element. The direction is resolved from
|
|
327
|
-
* it or its nearest ancestor that declares one
|
|
327
|
+
* it or its nearest ancestor that declares one. When omitted, the direction
|
|
328
|
+
* is resolved from the document.
|
|
328
329
|
*/
|
|
329
330
|
export const isEndSide = (side, hostEl) => {
|
|
330
331
|
const rtl = isRTL(hostEl);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { isRTL } from "../../rtl/index";
|
|
5
4
|
const cloneMap = new WeakMap();
|
|
6
5
|
export const relocateInput = (componentEl, inputEl, shouldRelocate, inputRelativeY = 0, disabledClonedInput = false) => {
|
|
7
6
|
if (cloneMap.has(componentEl) === shouldRelocate) {
|
|
@@ -60,8 +59,9 @@ const addClone = (componentEl, inputEl, inputRelativeY, disabledClonedInput = fa
|
|
|
60
59
|
* Position the clone at the same horizontal offset as the native input
|
|
61
60
|
* to prevent the placeholder from overlapping start slot content (e.g., icons).
|
|
62
61
|
*/
|
|
63
|
-
const
|
|
64
|
-
|
|
62
|
+
const doc = componentEl.ownerDocument;
|
|
63
|
+
const isRTL = doc.dir === 'rtl';
|
|
64
|
+
if (isRTL) {
|
|
65
65
|
const parentWidth = parentEl.offsetWidth;
|
|
66
66
|
const startOffset = parentWidth - inputEl.offsetLeft - inputEl.offsetWidth;
|
|
67
67
|
clonedEl.style.insetInlineStart = `${startOffset}px`;
|
|
@@ -71,7 +71,7 @@ const addClone = (componentEl, inputEl, inputRelativeY, disabledClonedInput = fa
|
|
|
71
71
|
}
|
|
72
72
|
parentEl.appendChild(clonedEl);
|
|
73
73
|
cloneMap.set(componentEl, clonedEl);
|
|
74
|
-
const tx =
|
|
74
|
+
const tx = isRTL ? 9999 : -9999;
|
|
75
75
|
componentEl.style.pointerEvents = 'none';
|
|
76
76
|
inputEl.style.transform = `translate3d(${tx}px,${inputRelativeY}px,0) scale(0)`;
|
|
77
77
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { isRTL } from "../rtl/index";
|
|
5
4
|
import { createAnimation } from "../animation/animation";
|
|
6
5
|
import { getIonPageElement } from "../transition";
|
|
7
6
|
const DURATION = 540;
|
|
@@ -368,9 +367,9 @@ export const iosTransitionAnimation = (navEl, opts) => {
|
|
|
368
367
|
const TRANSFORM = 'transform';
|
|
369
368
|
const CENTER = '0%';
|
|
370
369
|
const OFF_OPACITY = 0.8;
|
|
371
|
-
const
|
|
372
|
-
const OFF_RIGHT =
|
|
373
|
-
const OFF_LEFT =
|
|
370
|
+
const isRTL = navEl.ownerDocument.dir === 'rtl';
|
|
371
|
+
const OFF_RIGHT = isRTL ? '-99.5%' : '99.5%';
|
|
372
|
+
const OFF_LEFT = isRTL ? '33%' : '-33%';
|
|
374
373
|
const enteringEl = opts.enteringEl;
|
|
375
374
|
const leavingEl = opts.leavingEl;
|
|
376
375
|
const backDirection = opts.direction === 'back';
|
|
@@ -435,7 +434,7 @@ export const iosTransitionAnimation = (navEl, opts) => {
|
|
|
435
434
|
}
|
|
436
435
|
}
|
|
437
436
|
const enteringContentHasLargeTitle = enteringEl.querySelector('ion-header.header-collapse-condense');
|
|
438
|
-
const { forward, backward } = createLargeTitleTransition(rootAnimation,
|
|
437
|
+
const { forward, backward } = createLargeTitleTransition(rootAnimation, isRTL, backDirection, enteringEl, leavingEl);
|
|
439
438
|
enteringToolBarEls.forEach((enteringToolBarEl) => {
|
|
440
439
|
const enteringToolBar = createAnimation();
|
|
441
440
|
enteringToolBar.addElement(enteringToolBarEl);
|
|
@@ -499,7 +498,7 @@ export const iosTransitionAnimation = (navEl, opts) => {
|
|
|
499
498
|
enteringToolBarBg.fromTo(OPACITY, 0.01, 'var(--opacity)');
|
|
500
499
|
}
|
|
501
500
|
else {
|
|
502
|
-
enteringToolBarBg.fromTo('transform',
|
|
501
|
+
enteringToolBarBg.fromTo('transform', isRTL ? 'translateX(-100%)' : 'translateX(100%)', 'translateX(0px)');
|
|
503
502
|
}
|
|
504
503
|
// forward direction, entering page has a back button
|
|
505
504
|
if (!forward) {
|
|
@@ -509,7 +508,7 @@ export const iosTransitionAnimation = (navEl, opts) => {
|
|
|
509
508
|
const enteringBackBtnText = createAnimation();
|
|
510
509
|
enteringBackBtnText
|
|
511
510
|
.addElement(shadow(backButtonEl).querySelector('.button-text')) // REVIEW
|
|
512
|
-
.fromTo(`transform`,
|
|
511
|
+
.fromTo(`transform`, isRTL ? 'translateX(-100px)' : 'translateX(100px)', 'translateX(0px)');
|
|
513
512
|
enteringToolBar.addAnimation(enteringBackBtnText);
|
|
514
513
|
}
|
|
515
514
|
}
|
|
@@ -532,7 +531,7 @@ export const iosTransitionAnimation = (navEl, opts) => {
|
|
|
532
531
|
// leaving content, back direction
|
|
533
532
|
leavingContent
|
|
534
533
|
.beforeClearStyles([OPACITY])
|
|
535
|
-
.fromTo('transform', `translateX(${CENTER})`,
|
|
534
|
+
.fromTo('transform', `translateX(${CENTER})`, isRTL ? 'translateX(-100%)' : 'translateX(100%)');
|
|
536
535
|
const leavingPage = getIonPageElement(leavingEl);
|
|
537
536
|
rootAnimation.afterAddWrite(() => {
|
|
538
537
|
if (rootAnimation.getDirection() === 'normal') {
|
|
@@ -612,10 +611,10 @@ export const iosTransitionAnimation = (navEl, opts) => {
|
|
|
612
611
|
if (!inactiveHeader) {
|
|
613
612
|
// leaving toolbar, back direction
|
|
614
613
|
leavingTitle
|
|
615
|
-
.fromTo('transform', `translateX(${CENTER})`,
|
|
614
|
+
.fromTo('transform', `translateX(${CENTER})`, isRTL ? 'translateX(-100%)' : 'translateX(100%)')
|
|
616
615
|
.fromTo(OPACITY, 0.99, 0);
|
|
617
616
|
}
|
|
618
|
-
leavingToolBarItems.fromTo('transform', `translateX(${CENTER})`,
|
|
617
|
+
leavingToolBarItems.fromTo('transform', `translateX(${CENTER})`, isRTL ? 'translateX(-100%)' : 'translateX(100%)');
|
|
619
618
|
leavingToolBarBg.beforeClearStyles([OPACITY, 'transform']);
|
|
620
619
|
// leaving toolbar, back direction, and there's no entering toolbar
|
|
621
620
|
// should just slide out, no fading out
|
|
@@ -624,13 +623,13 @@ export const iosTransitionAnimation = (navEl, opts) => {
|
|
|
624
623
|
leavingToolBarBg.fromTo(OPACITY, 'var(--opacity)', 0);
|
|
625
624
|
}
|
|
626
625
|
else {
|
|
627
|
-
leavingToolBarBg.fromTo('transform', 'translateX(0px)',
|
|
626
|
+
leavingToolBarBg.fromTo('transform', 'translateX(0px)', isRTL ? 'translateX(-100%)' : 'translateX(100%)');
|
|
628
627
|
}
|
|
629
628
|
if (backButtonEl && !backward) {
|
|
630
629
|
const leavingBackBtnText = createAnimation();
|
|
631
630
|
leavingBackBtnText
|
|
632
631
|
.addElement(shadow(backButtonEl).querySelector('.button-text')) // REVIEW
|
|
633
|
-
.fromTo('transform', `translateX(${CENTER})`, `translateX(${(
|
|
632
|
+
.fromTo('transform', `translateX(${CENTER})`, `translateX(${(isRTL ? -124 : 124) + 'px'})`);
|
|
634
633
|
leavingToolBar.addAnimation(leavingBackBtnText);
|
|
635
634
|
}
|
|
636
635
|
}
|
package/dist/docs.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"timestamp": "2026-10-
|
|
2
|
+
"timestamp": "2026-10-30T18:14:29",
|
|
3
3
|
"compiler": {
|
|
4
4
|
"name": "@stencil/core",
|
|
5
5
|
"version": "4.45.2",
|
|
@@ -14038,6 +14038,32 @@
|
|
|
14038
14038
|
"getter": false,
|
|
14039
14039
|
"setter": false
|
|
14040
14040
|
},
|
|
14041
|
+
{
|
|
14042
|
+
"name": "errorText",
|
|
14043
|
+
"type": "string | undefined",
|
|
14044
|
+
"complexType": {
|
|
14045
|
+
"original": "string",
|
|
14046
|
+
"resolved": "string | undefined",
|
|
14047
|
+
"references": {}
|
|
14048
|
+
},
|
|
14049
|
+
"mutable": false,
|
|
14050
|
+
"attr": "error-text",
|
|
14051
|
+
"reflectToAttr": false,
|
|
14052
|
+
"docs": "Text that is placed under the input boxes and displayed when an error is detected.",
|
|
14053
|
+
"docsTags": [],
|
|
14054
|
+
"values": [
|
|
14055
|
+
{
|
|
14056
|
+
"type": "string"
|
|
14057
|
+
},
|
|
14058
|
+
{
|
|
14059
|
+
"type": "undefined"
|
|
14060
|
+
}
|
|
14061
|
+
],
|
|
14062
|
+
"optional": true,
|
|
14063
|
+
"required": false,
|
|
14064
|
+
"getter": false,
|
|
14065
|
+
"setter": false
|
|
14066
|
+
},
|
|
14041
14067
|
{
|
|
14042
14068
|
"name": "fill",
|
|
14043
14069
|
"type": "\"outline\" | \"solid\" | undefined",
|
|
@@ -14075,6 +14101,64 @@
|
|
|
14075
14101
|
"getter": false,
|
|
14076
14102
|
"setter": false
|
|
14077
14103
|
},
|
|
14104
|
+
{
|
|
14105
|
+
"name": "helperText",
|
|
14106
|
+
"type": "string | undefined",
|
|
14107
|
+
"complexType": {
|
|
14108
|
+
"original": "string",
|
|
14109
|
+
"resolved": "string | undefined",
|
|
14110
|
+
"references": {}
|
|
14111
|
+
},
|
|
14112
|
+
"mutable": false,
|
|
14113
|
+
"attr": "helper-text",
|
|
14114
|
+
"reflectToAttr": false,
|
|
14115
|
+
"docs": "Text that is placed under the input boxes and displayed when no error is detected.",
|
|
14116
|
+
"docsTags": [],
|
|
14117
|
+
"values": [
|
|
14118
|
+
{
|
|
14119
|
+
"type": "string"
|
|
14120
|
+
},
|
|
14121
|
+
{
|
|
14122
|
+
"type": "undefined"
|
|
14123
|
+
}
|
|
14124
|
+
],
|
|
14125
|
+
"optional": true,
|
|
14126
|
+
"required": false,
|
|
14127
|
+
"getter": false,
|
|
14128
|
+
"setter": false
|
|
14129
|
+
},
|
|
14130
|
+
{
|
|
14131
|
+
"name": "inputLabelFormatter",
|
|
14132
|
+
"type": "((index: number, length: number) => string) | undefined",
|
|
14133
|
+
"complexType": {
|
|
14134
|
+
"original": "InputOtpLabelFormatter",
|
|
14135
|
+
"resolved": "((index: number, length: number) => string) | undefined",
|
|
14136
|
+
"references": {
|
|
14137
|
+
"InputOtpLabelFormatter": {
|
|
14138
|
+
"location": "import",
|
|
14139
|
+
"path": "./input-otp-interface",
|
|
14140
|
+
"id": "src/components/input-otp/input-otp-interface.ts::InputOtpLabelFormatter",
|
|
14141
|
+
"referenceLocation": "InputOtpLabelFormatter"
|
|
14142
|
+
}
|
|
14143
|
+
}
|
|
14144
|
+
},
|
|
14145
|
+
"mutable": false,
|
|
14146
|
+
"reflectToAttr": false,
|
|
14147
|
+
"docs": "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.",
|
|
14148
|
+
"docsTags": [],
|
|
14149
|
+
"values": [
|
|
14150
|
+
{
|
|
14151
|
+
"type": "((index: number, length: number) => string)"
|
|
14152
|
+
},
|
|
14153
|
+
{
|
|
14154
|
+
"type": "undefined"
|
|
14155
|
+
}
|
|
14156
|
+
],
|
|
14157
|
+
"optional": true,
|
|
14158
|
+
"required": false,
|
|
14159
|
+
"getter": false,
|
|
14160
|
+
"setter": false
|
|
14161
|
+
},
|
|
14078
14162
|
{
|
|
14079
14163
|
"name": "inputmode",
|
|
14080
14164
|
"type": "\"decimal\" | \"email\" | \"none\" | \"numeric\" | \"search\" | \"tel\" | \"text\" | \"url\" | undefined",
|
|
@@ -27325,7 +27409,7 @@
|
|
|
27325
27409
|
"mutable": false,
|
|
27326
27410
|
"attr": "url",
|
|
27327
27411
|
"reflectToAttr": false,
|
|
27328
|
-
"docs": "Relative path that needs to match in order for this route to apply.\n\nAccepts paths similar to expressjs so that you can define parameters\nin the url /foo/:bar where bar would be available in incoming props.",
|
|
27412
|
+
"docs": "Relative path that needs to match in order for this route to apply.\n\nAccepts paths similar to expressjs so that you can define parameters\nin the url /foo/:bar where bar would be available in incoming props.\n\nA url ending in `*`, such as `*` or `/admin/*`, matches any remaining path,\nincluding none, so `/admin/*` also matches `/admin`. It only wins over a\nroute that matches the whole path when it has more fixed segments, so\n`/admin/*` wins over `/:section/:id` but not over `/admin/:id`. It always\nwins over a route that matches by ignoring trailing segments, such as\n`/admin` for `/admin/users`. The matched path is passed in the `pathMatch`\nprop without a leading `/`. A `*` on a route with child routes is ignored.",
|
|
27329
27413
|
"docsTags": [
|
|
27330
27414
|
{
|
|
27331
27415
|
"name": "default",
|
|
@@ -27389,7 +27473,7 @@
|
|
|
27389
27473
|
"mutable": false,
|
|
27390
27474
|
"attr": "from",
|
|
27391
27475
|
"reflectToAttr": false,
|
|
27392
|
-
"docs": "A redirect route, redirects \"from\" a URL \"to\" another URL. This property is that \"from\" URL.\nIt needs to be an exact match of the navigated URL in order to apply
|
|
27476
|
+
"docs": "A redirect route, redirects \"from\" a URL \"to\" another URL. This property is that \"from\" URL.\nIt needs to be an exact match of the navigated URL in order to apply, unless it contains a `*`.\nA `*` matches the rest of the path from that segment on, as long as the path has at least as\nmany segments as `from`, so `/admin/*` matches `/admin/posts` but not `/admin`.\n\nThe path specified in this value is always an absolute path, even if the initial `/` slash\nis not specified.",
|
|
27393
27477
|
"docsTags": [],
|
|
27394
27478
|
"values": [
|
|
27395
27479
|
{
|
|
@@ -37770,6 +37854,11 @@
|
|
|
37770
37854
|
"docstring": "Values are converted to strings when emitted which is\nwhy we do not have a `number` type here even though the\n`value` prop accepts a `number` type.",
|
|
37771
37855
|
"path": "src/components/input/input-interface.ts"
|
|
37772
37856
|
},
|
|
37857
|
+
"src/components/input-otp/input-otp-interface.ts::InputOtpLabelFormatter": {
|
|
37858
|
+
"declaration": "(index: number, length: number) => string",
|
|
37859
|
+
"docstring": "",
|
|
37860
|
+
"path": "src/components/input-otp/input-otp-interface.ts"
|
|
37861
|
+
},
|
|
37773
37862
|
"src/components/input-otp/input-otp-interface.ts::InputOtpInputEventDetail": {
|
|
37774
37863
|
"declaration": "export interface InputOtpInputEventDetail {\n value?: string | null;\n event?: Event;\n}",
|
|
37775
37864
|
"docstring": "Values are converted to strings when emitted which is\nwhy we do not have a `number` type here even though the\n`value` prop accepts a `number` type.",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { c as printIonError } from './index-BpRUsN_W.js';
|
|
5
|
-
import { w as win } from './helpers-
|
|
5
|
+
import { w as win } from './helpers-BJqKF1pr.js';
|
|
6
6
|
|
|
7
7
|
let animationPrefix;
|
|
8
8
|
const getAnimationPrefix = (el) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { b as inheritAttributes, w as win, q as ariaAttributes } from './helpers-
|
|
4
|
+
import { b as inheritAttributes, w as win, q as ariaAttributes } from './helpers-BJqKF1pr.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Copies a set of attributes off the host element so they can be applied to an element
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { w as writeTask } from './index-BpRUsN_W.js';
|
|
5
|
-
import { h as hapticSelectionEnd, a as hapticSelectionChanged, b as hapticSelectionStart } from './haptic-
|
|
5
|
+
import { h as hapticSelectionEnd, a as hapticSelectionChanged, b as hapticSelectionStart } from './haptic-WXfMCob9.js';
|
|
6
6
|
import { createGesture } from './index-BmLuEdV7.js';
|
|
7
7
|
|
|
8
8
|
const createButtonActiveGesture = (el, isButton) => {
|