voyager-ionic-core 8.8.6 → 8.8.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/index.js +1 -1
- package/components/ion-accordion-group.js +1 -1
- package/components/ion-accordion.js +1 -1
- package/components/ion-action-sheet.js +1 -1
- package/components/ion-alert.js +1 -1
- package/components/ion-app.js +1 -1
- package/components/ion-avatar.js +1 -1
- package/components/ion-back-button.js +1 -1
- package/components/ion-backdrop.js +1 -1
- package/components/ion-badge.js +1 -1
- package/components/ion-breadcrumb.js +1 -1
- package/components/ion-breadcrumbs.js +1 -1
- package/components/ion-button.js +1 -1
- package/components/ion-buttons.js +1 -1
- package/components/ion-card-content.js +1 -1
- package/components/ion-card-header.js +1 -1
- package/components/ion-card-subtitle.js +1 -1
- package/components/ion-card-title.js +1 -1
- package/components/ion-card.js +1 -1
- package/components/ion-checkbox.js +1 -1
- package/components/ion-chip.js +1 -1
- package/components/ion-col.js +1 -1
- package/components/ion-content.js +1 -1
- package/components/ion-datetime-button.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-fab-button.js +1 -1
- package/components/ion-fab-list.js +1 -1
- package/components/ion-fab.js +1 -1
- package/components/ion-footer.js +1 -1
- package/components/ion-grid.js +1 -1
- package/components/ion-header.js +1 -1
- package/components/ion-icon.js +1 -1
- package/components/ion-img.js +1 -1
- package/components/ion-infinite-scroll-content.js +1 -1
- package/components/ion-infinite-scroll.js +1 -1
- package/components/ion-input-otp.js +1 -1
- package/components/ion-input-password-toggle.js +1 -1
- package/components/ion-input.js +1 -1
- package/components/ion-item-divider.js +1 -1
- package/components/ion-item-group.js +1 -1
- package/components/ion-item-option.js +1 -1
- package/components/ion-item-options.js +1 -1
- package/components/ion-item-sliding.js +1 -1
- package/components/ion-item.js +1 -1
- package/components/ion-label.js +1 -1
- package/components/ion-list-header.js +1 -1
- package/components/ion-list.js +1 -1
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu-toggle.js +1 -1
- package/components/ion-menu.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +1 -1
- package/components/ion-note.js +1 -1
- package/components/ion-picker-column-option.js +1 -1
- package/components/ion-picker-column.js +1 -1
- package/components/ion-picker-legacy-column.js +1 -1
- package/components/ion-picker-legacy.js +1 -1
- package/components/ion-picker.js +1 -1
- package/components/ion-popover.js +1 -1
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-radio-group.js +1 -1
- package/components/ion-radio.js +1 -1
- package/components/ion-range.js +1 -1
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-ripple-effect.js +1 -1
- package/components/ion-route-redirect.js +1 -1
- package/components/ion-route.js +1 -1
- package/components/ion-router-link.js +1 -1
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-router.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-segment-content.js +1 -1
- package/components/ion-segment-view.js +1 -1
- package/components/ion-segment.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-option.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-skeleton-text.js +1 -1
- package/components/ion-spinner.js +1 -1
- package/components/ion-split-pane.js +1 -1
- package/components/ion-tab-bar.js +1 -1
- package/components/ion-tab-button.js +1 -1
- package/components/ion-tab.js +1 -1
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +1 -1
- package/components/ion-textarea.js +1 -1
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/ion-toggle.js +1 -1
- package/components/ion-toolbar.js +1 -1
- package/components/{p-CoA-aqGF.js → p--JUspHvy.js} +1 -1
- package/components/{p-DHsZWn1l.js → p-0NRupjzW.js} +1 -1
- package/components/{p-BSB38Tek.js → p-5bE_Wz4Y.js} +1 -1
- package/components/{p-kvaDs24J.js → p-B60hm8Qv.js} +1 -1
- package/components/{p-B6FQ0cKR.js → p-B9jFTlwE.js} +1 -1
- package/{dist/ionic/p-BvFYtOdE.js → components/p-BAYYcg3o.js} +1 -1
- package/components/{p-DJMZehmW.js → p-BLmJ0zRm.js} +1 -1
- package/components/{p-Cyxa_4PV.js → p-BSEgsdFI.js} +1 -1
- package/components/{p-B6HaBl3o.js → p-BTPfOxsU.js} +1 -1
- package/{dist/ionic/p-DjriolRs.js → components/p-BT_5jSqG.js} +1 -1
- package/components/{p-DgbT0exM.js → p-Baq1XyAy.js} +1 -1
- package/components/{p-BYDc3hSE.js → p-BirPFsRD.js} +1 -1
- package/components/{p-FBcnjE5W.js → p-BjfgFSSR.js} +1 -1
- package/components/p-BjoEPDW5.js +4 -0
- package/{dist/ionic/p-DLbbmF9h.js → components/p-BnqQlm7c.js} +1 -1
- package/components/{p-BxwWvu-b.js → p-BsPelv04.js} +1 -1
- package/components/{p-DZhbcvo5.js → p-Bth-EzJ0.js} +1 -1
- package/components/{p-vEbVo2hO.js → p-Bz0dSlXZ.js} +1 -1
- package/components/{p-CBzELu-H.js → p-C1aScSTo.js} +1 -1
- package/components/{p-BTeL5HCK.js → p-C2lKgrXx.js} +1 -1
- package/components/{p-BgwEQWW6.js → p-C4t5ymfq.js} +1 -1
- package/components/p-CHqRYvYm.js +4 -0
- package/components/{p-BGHGpkPX.js → p-CI3ncNZm.js} +1 -1
- package/components/{p-DYdpXONG.js → p-CSZf8_j0.js} +1 -1
- package/components/p-CU5rbWAW.js +4 -0
- package/components/p-C_xFdyXe.js +4 -0
- package/components/{p-CgfaEEem.js → p-Cfx4M1Bn.js} +1 -1
- package/{dist/ionic/p-C0JvVFMv.js → components/p-Ciz1-FuE.js} +1 -1
- package/components/p-CmR5uXej.js +4 -0
- package/components/p-CtukzcyX.js +4 -0
- package/components/p-D5Ubpm7D.js +4 -0
- package/components/p-D7bSXQD3.js +4 -0
- package/components/{p-BlNv564p.js → p-DDWp95gH.js} +1 -1
- package/components/p-DIE4pXMl.js +4 -0
- package/components/p-DNQI6d-L.js +4 -0
- package/components/{p-CDfQnFrd.js → p-DOFCbuQR.js} +1 -1
- package/components/{p-BR3tZJmu.js → p-DnL1c9_X.js} +1 -1
- package/components/{p-YLXPWgVj.js → p-DqLB8yFQ.js} +1 -1
- package/components/{p-BagjAGC0.js → p-DqZAXv2t.js} +1 -1
- package/components/p-W5nO8mX_.js +4 -0
- package/components/{p-Cq8cQ0NL.js → p-W9CZ2mWX.js} +1 -1
- package/components/p-XlSIJDJ-.js +4 -0
- package/components/p-dhLYXa7A.js +4 -0
- package/components/p-ijF0iCrA.js +4 -0
- package/components/{p-B8b1Ukl9.js → p-j5IxBIan.js} +1 -1
- package/components/{p-BUbsoBOV.js → p-k_E4tX5Z.js} +1 -1
- package/components/{p-DvOO1fxp.js → p-lE_JGpHD.js} +1 -1
- package/components/{p-D-cP12ZN.js → p-nQi4oKcG.js} +1 -1
- package/components/{p-fpbh6w3f.js → p-rCa2eL0j.js} +1 -1
- package/components/{p-SBseW5KJ.js → p-ryqmO0B-.js} +1 -1
- package/dist/cjs/{animation-Dg4yiuR2.js → animation-BJq0kcy2.js} +1 -1
- package/dist/cjs/{app-globals-CLI8xCmk.js → app-globals-BlqrqKTN.js} +1 -1
- package/dist/cjs/{button-active-FscMI17-.js → button-active-0mPOKmV2.js} +1 -1
- package/dist/cjs/{config-BukYi_pW.js → config-xninhj0J.js} +1 -1
- package/dist/cjs/{data-BYlBjkMU.js → data-DLTUw-KF.js} +1 -1
- package/dist/cjs/{framework-delegate-CRgp8o_p.js → framework-delegate-BtICZDHr.js} +1 -1
- package/dist/cjs/{hardware-back-button-C4rMJ5uI.js → hardware-back-button-iUuF_76h.js} +1 -1
- package/dist/cjs/{helpers-CxTYJdbT.js → helpers-Cv23MFHM.js} +1 -1
- package/dist/cjs/{index-C845Ti6K.js → index-BERfRao3.js} +4 -4
- package/dist/cjs/{index-MbaBbWXk.js → index-CIrkNXqJ.js} +2 -2
- package/dist/cjs/{index-CqT-2gKy.js → index-Ct7gcRif.js} +67 -23
- package/dist/cjs/{index-YcSftOMz.js → index-D81eLYUM.js} +2 -2
- package/dist/cjs/{index-CFUwM5x_.js → index-aC4x3Fk3.js} +5 -5
- package/dist/cjs/index.cjs.js +12 -12
- package/dist/cjs/{input-shims-Dl5cnc_e.js → input-shims-CFLg7uzj.js} +3 -9
- package/dist/cjs/{input.utils-DmeJ8dmo.js → input.utils-DetjmtH2.js} +2 -2
- package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
- package/dist/cjs/ion-alert.cjs.entry.js +75 -13
- package/dist/cjs/ion-app_8.cjs.entry.js +13 -13
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-back-button.cjs.entry.js +3 -3
- package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
- 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 +3 -3
- package/dist/cjs/ion-chip.cjs.entry.js +2 -2
- package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime-button.cjs.entry.js +4 -4
- package/dist/cjs/ion-datetime_3.cjs.entry.js +9 -9
- package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-img.cjs.entry.js +3 -3
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-input-otp.cjs.entry.js +3 -3
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +5 -5
- package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +3 -3
- package/dist/cjs/ion-loading.cjs.entry.js +8 -8
- package/dist/cjs/ion-menu_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-modal.cjs.entry.js +21 -18
- package/dist/cjs/ion-nav_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +4 -4
- package/dist/cjs/ion-picker-column.cjs.entry.js +3 -3
- package/dist/cjs/ion-picker.cjs.entry.js +2 -2
- package/dist/cjs/ion-popover.cjs.entry.js +8 -8
- package/dist/cjs/ion-progress-bar.cjs.entry.js +3 -3
- package/dist/cjs/ion-radio_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-range.cjs.entry.js +4 -4
- 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-ripple-effect.cjs.entry.js +2 -2
- package/dist/cjs/ion-route_4.cjs.entry.js +187 -21
- package/dist/cjs/ion-searchbar.cjs.entry.js +3 -3
- package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment-view.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-select-modal.cjs.entry.js +6 -6
- package/dist/cjs/ion-select_3.cjs.entry.js +7 -7
- package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
- package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +5 -5
- package/dist/cjs/ion-toast.cjs.entry.js +9 -9
- package/dist/cjs/ion-toggle.cjs.entry.js +5 -5
- package/dist/cjs/{ionic-global-Bc3kJi1Z.js → ionic-global-B-cA6LkY.js} +1 -1
- package/dist/cjs/ionic.cjs.js +5 -5
- package/dist/cjs/{ios.transition-trBiC95R.js → ios.transition-BOSWOaiK.js} +4 -4
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-CUQECuvD.js → md.transition-B8-wBZqt.js} +4 -4
- package/dist/cjs/{notch-controller-sD-lTpdc.js → notch-controller-18PzRGXd.js} +1 -1
- package/dist/cjs/{overlays-C2jiBSNQ.js → overlays-TbKsuC-K.js} +5 -5
- package/dist/cjs/{status-tap-CCJk5VgT.js → status-tap-BXX8H8_Y.js} +3 -3
- package/dist/cjs/{swipe-back-CCpyQb6R.js → swipe-back-CCMaNiP2.js} +2 -2
- package/dist/collection/collection-manifest.json +2 -1
- package/dist/collection/components/alert/alert.js +71 -4
- package/dist/collection/components/content/content.css +1 -1
- package/dist/collection/components/modal/modal.js +12 -9
- package/dist/collection/components/picker-column-option/picker-column-option.md.css +13 -1
- package/dist/collection/components/router/router.js +55 -14
- package/dist/collection/components/router/utils/dom.js +114 -1
- package/dist/collection/components/router/utils/path.js +17 -5
- package/dist/collection/components/split-pane/split-pane.js +1 -1
- package/dist/collection/utils/input-shims/hacks/scroll-assist.js +0 -7
- package/dist/docs.json +4 -4
- package/dist/esm/{animation-CnGMT4ji.js → animation-DLJpuoEz.js} +1 -1
- package/dist/esm/{app-globals-DhZjtldk.js → app-globals-D0C5S4hU.js} +1 -1
- package/dist/esm/{button-active-BBx21brx.js → button-active-BSpTQmS9.js} +1 -1
- package/dist/esm/{config-TO1rZH52.js → config-DQCONYYp.js} +1 -1
- package/dist/esm/{data-B9iGR5YO.js → data-DZI70dKr.js} +1 -1
- package/dist/esm/{framework-delegate-CyxE1S_P.js → framework-delegate-FnPGymXL.js} +1 -1
- package/dist/esm/{hardware-back-button-CTe4XmL7.js → hardware-back-button-B93Gru0Y.js} +1 -1
- package/dist/esm/{helpers-Tl8jw6S2.js → helpers-HEqiOzXb.js} +1 -1
- package/dist/esm/{index-BtUdxPjv.js → index-BRHzoo00.js} +2 -2
- package/dist/esm/{index-B-hkiOUh.js → index-B_dQk_WE.js} +4 -4
- package/dist/esm/{index-hW6eNZ3o.js → index-MEDq2S8l.js} +2 -2
- package/dist/esm/{index-B2KwgBLx.js → index-Q6UPU0Ay.js} +5 -5
- package/dist/esm/{index-IGIE5vDm.js → index-tcQvqkiX.js} +67 -23
- package/dist/esm/index.js +12 -12
- package/dist/esm/{input-shims-AaDhOpKN.js → input-shims-D10mwcw1.js} +3 -9
- package/dist/esm/{input.utils-Bxa_DQ7-.js → input.utils-Y6NgW8bw.js} +2 -2
- package/dist/esm/ion-accordion_2.entry.js +3 -3
- package/dist/esm/ion-action-sheet.entry.js +8 -8
- package/dist/esm/ion-alert.entry.js +75 -13
- package/dist/esm/ion-app_8.entry.js +13 -13
- package/dist/esm/ion-avatar_3.entry.js +2 -2
- package/dist/esm/ion-back-button.entry.js +3 -3
- package/dist/esm/ion-backdrop.entry.js +2 -2
- package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
- 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 +3 -3
- package/dist/esm/ion-chip.entry.js +2 -2
- package/dist/esm/ion-col_3.entry.js +2 -2
- package/dist/esm/ion-datetime-button.entry.js +4 -4
- package/dist/esm/ion-datetime_3.entry.js +9 -9
- package/dist/esm/ion-fab_3.entry.js +3 -3
- package/dist/esm/ion-img.entry.js +3 -3
- package/dist/esm/ion-infinite-scroll_2.entry.js +5 -5
- package/dist/esm/ion-input-otp.entry.js +3 -3
- package/dist/esm/ion-input-password-toggle.entry.js +2 -2
- package/dist/esm/ion-input.entry.js +5 -5
- package/dist/esm/ion-item-option_3.entry.js +4 -4
- package/dist/esm/ion-item_8.entry.js +3 -3
- package/dist/esm/ion-loading.entry.js +8 -8
- package/dist/esm/ion-menu_3.entry.js +8 -8
- package/dist/esm/ion-modal.entry.js +21 -18
- package/dist/esm/ion-nav_2.entry.js +6 -6
- package/dist/esm/ion-picker-column-option.entry.js +4 -4
- package/dist/esm/ion-picker-column.entry.js +3 -3
- package/dist/esm/ion-picker.entry.js +2 -2
- package/dist/esm/ion-popover.entry.js +8 -8
- package/dist/esm/ion-progress-bar.entry.js +3 -3
- package/dist/esm/ion-radio_2.entry.js +3 -3
- package/dist/esm/ion-range.entry.js +4 -4
- package/dist/esm/ion-refresher_2.entry.js +6 -6
- package/dist/esm/ion-reorder_2.entry.js +5 -5
- package/dist/esm/ion-ripple-effect.entry.js +2 -2
- package/dist/esm/ion-route_4.entry.js +187 -21
- package/dist/esm/ion-searchbar.entry.js +3 -3
- package/dist/esm/ion-segment-content.entry.js +1 -1
- package/dist/esm/ion-segment-view.entry.js +1 -1
- package/dist/esm/ion-segment_2.entry.js +3 -3
- package/dist/esm/ion-select-modal.entry.js +6 -6
- package/dist/esm/ion-select_3.entry.js +7 -7
- package/dist/esm/ion-spinner.entry.js +2 -2
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar_2.entry.js +3 -3
- package/dist/esm/ion-tab_2.entry.js +3 -3
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +5 -5
- package/dist/esm/ion-toast.entry.js +9 -9
- package/dist/esm/ion-toggle.entry.js +5 -5
- package/dist/esm/{ionic-global-DfbeLwcV.js → ionic-global-Cp_eT4sZ.js} +1 -1
- package/dist/esm/ionic.js +6 -6
- package/dist/esm/{ios.transition--aMF-pDH.js → ios.transition-ClFrsIrS.js} +4 -4
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-BEVbfm8j.js → md.transition-D0msQmzI.js} +4 -4
- package/dist/esm/{notch-controller-DAcvKU57.js → notch-controller-DKDjU_O7.js} +1 -1
- package/dist/esm/{overlays-F8GHPo-e.js → overlays-TbiM4mdr.js} +5 -5
- package/dist/esm/{status-tap-BfJqFSLF.js → status-tap-Kan2W7sh.js} +3 -3
- package/dist/esm/{swipe-back-D6Ce7Ca3.js → swipe-back-ZUWwA-KF.js} +2 -2
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-00dbb17e.entry.js +4 -0
- package/dist/ionic/{p-f2deaceb.entry.js → p-01f81ea5.entry.js} +1 -1
- package/dist/ionic/{p-078037da.entry.js → p-06c232a4.entry.js} +1 -1
- package/dist/ionic/{p-1ca9c36b.entry.js → p-0d005398.entry.js} +1 -1
- package/dist/ionic/{p-b325a113.entry.js → p-0fa9c382.entry.js} +1 -1
- package/dist/ionic/{p-6b97f2a3.entry.js → p-1ae21e4c.entry.js} +1 -1
- package/dist/ionic/{p-a805674e.entry.js → p-20b1a044.entry.js} +1 -1
- package/dist/ionic/p-2394a9a6.entry.js +4 -0
- package/dist/ionic/{p-6b701daa.entry.js → p-27d30585.entry.js} +1 -1
- package/dist/ionic/{p-f8186550.entry.js → p-2bb2cb18.entry.js} +1 -1
- package/dist/ionic/{p-8fda6a62.entry.js → p-2f55dc1a.entry.js} +1 -1
- package/dist/ionic/p-30bf9737.entry.js +4 -0
- package/dist/ionic/{p-031b76f7.entry.js → p-3353c229.entry.js} +1 -1
- package/dist/ionic/p-33704f20.entry.js +4 -0
- package/dist/ionic/{p-e863ffe8.entry.js → p-37e720da.entry.js} +1 -1
- package/dist/ionic/{p-d4e8b473.entry.js → p-390ca786.entry.js} +1 -1
- package/dist/ionic/{p-084c25b2.entry.js → p-3a126bca.entry.js} +1 -1
- package/dist/ionic/{p-7761ef65.entry.js → p-3a541154.entry.js} +1 -1
- package/dist/ionic/{p-2a68388b.entry.js → p-3a7d1e91.entry.js} +1 -1
- package/dist/ionic/{p-a893c61c.entry.js → p-3ae5f277.entry.js} +1 -1
- package/dist/ionic/{p-294f4bb5.entry.js → p-4858af1f.entry.js} +1 -1
- package/dist/ionic/{p-53f750a5.entry.js → p-4baa5b82.entry.js} +1 -1
- package/dist/ionic/{p-7ca71c83.entry.js → p-4dc1c33c.entry.js} +1 -1
- package/dist/ionic/{p-e663bc5a.entry.js → p-4e92a11f.entry.js} +1 -1
- package/dist/ionic/{p-6af16209.entry.js → p-50e1194a.entry.js} +1 -1
- package/dist/ionic/{p-c3cce9d8.entry.js → p-5d1da0a2.entry.js} +1 -1
- package/dist/ionic/{p-a84f2d21.entry.js → p-75dc25ba.entry.js} +1 -1
- package/dist/ionic/{p-f5dfb9a3.entry.js → p-81ea5652.entry.js} +1 -1
- package/dist/ionic/{p-1b169fb6.entry.js → p-84d5ce05.entry.js} +1 -1
- package/dist/ionic/{p-2fd110aa.entry.js → p-874b4bd8.entry.js} +1 -1
- package/dist/ionic/{p-23ec35e4.entry.js → p-8c8eee7d.entry.js} +1 -1
- package/dist/ionic/{p-87125490.entry.js → p-8d6fd502.entry.js} +1 -1
- package/dist/ionic/{p-301c43f8.entry.js → p-8eb8ee76.entry.js} +1 -1
- package/dist/ionic/p-8fce95d5.entry.js +4 -0
- package/dist/ionic/{p-7620be24.entry.js → p-94f2a736.entry.js} +1 -1
- package/dist/ionic/{p-aa812c4b.entry.js → p-9a65ac7f.entry.js} +1 -1
- package/dist/ionic/{p-bcaa827e.entry.js → p-9f1103ce.entry.js} +1 -1
- package/dist/ionic/{p-BAt5H1ac.js → p-BGqMS-oh.js} +1 -1
- package/dist/ionic/{p-DB_iPQC-.js → p-BUFIpxKM.js} +1 -1
- package/dist/ionic/{p-CmFz1Mjc.js → p-CFlfIb2g.js} +1 -1
- package/dist/ionic/p-CwdymDLH.js +4 -0
- package/dist/ionic/p-Cx3IXROA.js +4 -0
- package/{components/p-BS1TtEiJ.js → dist/ionic/p-DAAFkPFT.js} +1 -1
- package/{components/p-ak_d-z48.js → dist/ionic/p-DC3RagnA.js} +1 -1
- package/dist/ionic/{p-CGmVTdWh.js → p-DIuEbVLu.js} +1 -1
- package/dist/ionic/p-DSG2s2Eb.js +4 -0
- package/dist/ionic/p-Dfbt-q2k.js +4 -0
- package/dist/ionic/p-DoJvtrbw.js +4 -0
- package/dist/ionic/{p-gbVXD275.js → p-DzWaWHGc.js} +1 -1
- package/{components/p-D6NJwNJN.js → dist/ionic/p-KjNvRoEp.js} +1 -1
- package/dist/ionic/{p-NFFyoJ4Q.js → p-Nqf6uvGh.js} +1 -1
- package/dist/ionic/p-SNAkTDfm.js +4 -0
- package/dist/ionic/{p-BW_TRJm8.js → p-VAemlbDS.js} +1 -1
- package/dist/ionic/{p-B8xlpH8p.js → p-Wk5HzclC.js} +1 -1
- package/dist/ionic/{p-9cbc6f1f.entry.js → p-a21add2f.entry.js} +1 -1
- package/dist/ionic/{p-370a60ee.entry.js → p-a3bdcae6.entry.js} +1 -1
- package/dist/ionic/{p-28a9e720.entry.js → p-aa5d6b8f.entry.js} +1 -1
- package/dist/ionic/{p-045a6a42.entry.js → p-c0fb8edd.entry.js} +1 -1
- package/dist/ionic/{p-80cac7a2.entry.js → p-c4d8641b.entry.js} +1 -1
- package/dist/ionic/{p-9833cf63.entry.js → p-c6e49f3f.entry.js} +1 -1
- package/dist/ionic/{p-ca31010f.entry.js → p-dfa8d673.entry.js} +1 -1
- package/dist/ionic/{p-0d8b5c38.entry.js → p-e0be05c5.entry.js} +1 -1
- package/dist/ionic/{p-2f5a8140.entry.js → p-e686695b.entry.js} +1 -1
- package/dist/ionic/{p-f69a5f71.entry.js → p-e847a888.entry.js} +1 -1
- package/dist/ionic/{p-16813ce7.entry.js → p-ec090e0a.entry.js} +1 -1
- package/dist/ionic/{p-07506134.entry.js → p-ef4c3bee.entry.js} +1 -1
- package/dist/ionic/{p-fdbc90d4.entry.js → p-fabcce6c.entry.js} +1 -1
- package/dist/ionic/{p-cb27fe68.entry.js → p-facfde02.entry.js} +1 -1
- package/dist/ionic/{p-9a851035.entry.js → p-fd7eebc4.entry.js} +1 -1
- package/dist/ionic/p-mjKAFv89.js +4 -0
- package/dist/ionic/p-tcQvqkiX.js +5 -0
- package/{components/p-Cy5XSfIk.js → dist/ionic/p-viFHDgRs.js} +1 -1
- package/dist/ionic/{p-DTPR1Wpn.js → p-xOfi7-Zn.js} +1 -1
- package/dist/ionic/p-xWb6fgfq.js +4 -0
- package/dist/types/components/alert/alert.d.ts +5 -0
- package/dist/types/components/modal/modal.d.ts +3 -3
- package/dist/types/components/router/router.d.ts +7 -0
- package/dist/types/components/router/utils/dom.d.ts +10 -0
- package/dist/types/components/router/utils/interface.d.ts +2 -0
- package/dist/types/components/router/utils/path.d.ts +3 -2
- package/dist/types/components.d.ts +2 -2
- package/dist/types/stencil-public-runtime.d.ts +4 -1
- package/hydrate/index.js +1136 -430
- package/hydrate/index.mjs +1136 -430
- package/package.json +5 -5
- package/components/p-0z8QSI5b.js +0 -4
- package/components/p-9VcRUwdB.js +0 -4
- package/components/p-BJoMtgfR.js +0 -4
- package/components/p-BNAG-aVv.js +0 -4
- package/components/p-BegtE7nr.js +0 -4
- package/components/p-C4jPsTQa.js +0 -4
- package/components/p-C59ryAuS.js +0 -4
- package/components/p-CH0NYjKq.js +0 -4
- package/components/p-CU1SSH8_.js +0 -4
- package/components/p-CgqKJg96.js +0 -4
- package/components/p-CneGxKsZ.js +0 -4
- package/components/p-Csw8xuz4.js +0 -4
- package/components/p-Cwv-vmkN.js +0 -4
- package/components/p-DVJHuxRx.js +0 -4
- package/dist/ionic/p-1b02923f.entry.js +0 -4
- package/dist/ionic/p-23fac490.entry.js +0 -4
- package/dist/ionic/p-771b27a5.entry.js +0 -4
- package/dist/ionic/p-Bum7H1fw.js +0 -4
- package/dist/ionic/p-BxIcPWoV.js +0 -4
- package/dist/ionic/p-CYbRmDdy.js +0 -4
- package/dist/ionic/p-CYvM5g3q.js +0 -4
- package/dist/ionic/p-CtA-yJYy.js +0 -4
- package/dist/ionic/p-Dt1wGZdq.js +0 -4
- package/dist/ionic/p-DtVZDHlS.js +0 -4
- package/dist/ionic/p-IGIE5vDm.js +0 -5
- package/dist/ionic/p-cbe95f72.entry.js +0 -4
- package/dist/ionic/p-ce2edb36.entry.js +0 -4
- package/dist/ionic/p-hNN3VvaC.js +0 -4
|
@@ -28,6 +28,7 @@ export class Alert {
|
|
|
28
28
|
this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
|
|
29
29
|
this.processedInputs = [];
|
|
30
30
|
this.processedButtons = [];
|
|
31
|
+
this.isButtonGroupWrapped = false;
|
|
31
32
|
this.presented = false;
|
|
32
33
|
/** @internal */
|
|
33
34
|
this.hasController = false;
|
|
@@ -152,6 +153,13 @@ export class Alert {
|
|
|
152
153
|
this.processedButtons = buttons.map((btn) => {
|
|
153
154
|
return typeof btn === 'string' ? { text: btn, role: btn.toLowerCase() === 'cancel' ? 'cancel' : undefined } : btn;
|
|
154
155
|
});
|
|
156
|
+
/**
|
|
157
|
+
* Reset wrap state so the new button set can be re-evaluated. Without this,
|
|
158
|
+
* a previously-latched vertical layout would persist even if the new buttons
|
|
159
|
+
* fit horizontally.
|
|
160
|
+
*/
|
|
161
|
+
this.isButtonGroupWrapped = false;
|
|
162
|
+
this.checkButtonGroupWrap();
|
|
155
163
|
}
|
|
156
164
|
inputsChanged() {
|
|
157
165
|
const inputs = this.inputs;
|
|
@@ -192,6 +200,12 @@ export class Alert {
|
|
|
192
200
|
connectedCallback() {
|
|
193
201
|
prepareOverlay(this.el);
|
|
194
202
|
this.triggerChanged();
|
|
203
|
+
/**
|
|
204
|
+
* If the alert was previously connected and is being reattached, the
|
|
205
|
+
* ResizeObserver was disconnected. componentDidLoad only fires once per
|
|
206
|
+
* instance, so re-establish the observer here on reconnect.
|
|
207
|
+
*/
|
|
208
|
+
this.setupButtonGroupResizeObserver();
|
|
195
209
|
}
|
|
196
210
|
componentWillLoad() {
|
|
197
211
|
var _a;
|
|
@@ -202,11 +216,14 @@ export class Alert {
|
|
|
202
216
|
this.buttonsChanged();
|
|
203
217
|
}
|
|
204
218
|
disconnectedCallback() {
|
|
219
|
+
var _a;
|
|
205
220
|
this.triggerController.removeClickListener();
|
|
206
221
|
if (this.gesture) {
|
|
207
222
|
this.gesture.destroy();
|
|
208
223
|
this.gesture = undefined;
|
|
209
224
|
}
|
|
225
|
+
(_a = this.buttonGroupResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
226
|
+
this.buttonGroupResizeObserver = undefined;
|
|
210
227
|
}
|
|
211
228
|
componentDidLoad() {
|
|
212
229
|
/**
|
|
@@ -219,6 +236,7 @@ export class Alert {
|
|
|
219
236
|
this.gesture = createButtonActiveGesture(this.wrapperEl, (refEl) => refEl.classList.contains('alert-button'));
|
|
220
237
|
this.gesture.enable(true);
|
|
221
238
|
}
|
|
239
|
+
this.setupButtonGroupResizeObserver();
|
|
222
240
|
/**
|
|
223
241
|
* If alert was rendered with isOpen="true"
|
|
224
242
|
* then we should open alert immediately.
|
|
@@ -410,14 +428,58 @@ export class Alert {
|
|
|
410
428
|
}
|
|
411
429
|
})));
|
|
412
430
|
}
|
|
431
|
+
setupButtonGroupResizeObserver() {
|
|
432
|
+
var _a;
|
|
433
|
+
/**
|
|
434
|
+
* Re-evaluate vertical layout when the button group resizes so a 2-button
|
|
435
|
+
* group with long text wraps cleanly instead of leaving a stray right-edge
|
|
436
|
+
* border on the first button.
|
|
437
|
+
*/
|
|
438
|
+
if (!this.buttonGroupEl || typeof ResizeObserver === 'undefined') {
|
|
439
|
+
return;
|
|
440
|
+
}
|
|
441
|
+
(_a = this.buttonGroupResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
442
|
+
this.buttonGroupResizeObserver = new ResizeObserver(() => this.checkButtonGroupWrap());
|
|
443
|
+
this.buttonGroupResizeObserver.observe(this.buttonGroupEl);
|
|
444
|
+
this.checkButtonGroupWrap();
|
|
445
|
+
}
|
|
446
|
+
checkButtonGroupWrap() {
|
|
447
|
+
/**
|
|
448
|
+
* Defer the layout read out of the ResizeObserver callback so we don't
|
|
449
|
+
* force synchronous layout and avoid "ResizeObserver loop" warnings when
|
|
450
|
+
* applying the vertical-layout class itself triggers another resize.
|
|
451
|
+
*/
|
|
452
|
+
raf(() => {
|
|
453
|
+
/**
|
|
454
|
+
* Bail if the alert was disconnected after this raf was queued.
|
|
455
|
+
* `buttonGroupEl` persists across disconnect so the observer can be
|
|
456
|
+
* re-attached on reconnect; the observer reference is the disconnect
|
|
457
|
+
* sentinel.
|
|
458
|
+
*/
|
|
459
|
+
if (!this.buttonGroupResizeObserver) {
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
const groupEl = this.buttonGroupEl;
|
|
463
|
+
if (!groupEl) {
|
|
464
|
+
return;
|
|
465
|
+
}
|
|
466
|
+
const buttons = Array.from(groupEl.querySelectorAll('.alert-button'));
|
|
467
|
+
if (buttons.length < 2) {
|
|
468
|
+
this.isButtonGroupWrapped = false;
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
471
|
+
const firstTop = buttons[0].offsetTop;
|
|
472
|
+
this.isButtonGroupWrapped = buttons.some((btn) => btn.offsetTop !== firstTop);
|
|
473
|
+
});
|
|
474
|
+
}
|
|
413
475
|
renderAlertButtons() {
|
|
414
476
|
const buttons = this.processedButtons;
|
|
415
477
|
const mode = getIonMode(this);
|
|
416
478
|
const alertButtonGroupClass = {
|
|
417
479
|
'alert-button-group': true,
|
|
418
|
-
'alert-button-group-vertical': buttons.length > 2,
|
|
480
|
+
'alert-button-group-vertical': buttons.length > 2 || this.isButtonGroupWrapped,
|
|
419
481
|
};
|
|
420
|
-
return (h("div", { class: alertButtonGroupClass }, buttons.map((button) => (h("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass(button), tabIndex: 0, onClick: () => this.buttonClick(button) }), h("span", { class: "alert-button-inner" }, button.text), mode === 'md' && h("ion-ripple-effect", null))))));
|
|
482
|
+
return (h("div", { class: alertButtonGroupClass, ref: (el) => (this.buttonGroupEl = el) }, buttons.map((button) => (h("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass(button), tabIndex: 0, onClick: () => this.buttonClick(button) }), h("span", { class: "alert-button-inner" }, button.text), mode === 'md' && h("ion-ripple-effect", null))))));
|
|
421
483
|
}
|
|
422
484
|
renderAlertMessage(msgId) {
|
|
423
485
|
const { customHTMLEnabled, message } = this;
|
|
@@ -440,9 +502,9 @@ export class Alert {
|
|
|
440
502
|
* If neither are defined, do not set aria-labelledby.
|
|
441
503
|
*/
|
|
442
504
|
const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
|
|
443
|
-
return (h(Host, { key: '
|
|
505
|
+
return (h(Host, { key: '8d54ccd725ea634be080e67b56fa5efe498f496c', tabindex: "-1", style: {
|
|
444
506
|
zIndex: `${20000 + overlayIndex}`,
|
|
445
|
-
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '
|
|
507
|
+
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '05a238583342285545587de9dce144a82d779193', tappable: this.backdropDismiss }), h("div", { key: 'e52c53fd9845e66781af01b2a788a291b45a927c', tabindex: "0", "aria-hidden": "true" }), h("div", Object.assign({ key: '8417e52eebca24ff436fab0703666db51072f980', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el) }, htmlAttributes), h("div", { key: '5c560d4800b24d41961423718108b54be6cd6f91', class: "alert-head" }, header && (h("h2", { key: '8637b64cd5125b2258115d1c11f3743113658608', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (h("h2", { key: '7a4e61a02c29b16b336d8acaf6569b30de6fe71e', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (h("h3", { key: '30844b6a0a7e3dab46514cd548ecffa86dcd59cb', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), h("div", { key: '39c824fee1e60ad8d6234c79d22ceb8bba8004af', tabindex: "0", "aria-hidden": "true" })));
|
|
446
508
|
}
|
|
447
509
|
static get is() { return "ion-alert"; }
|
|
448
510
|
static get encapsulation() { return "scoped"; }
|
|
@@ -851,6 +913,11 @@ export class Alert {
|
|
|
851
913
|
}
|
|
852
914
|
};
|
|
853
915
|
}
|
|
916
|
+
static get states() {
|
|
917
|
+
return {
|
|
918
|
+
"isButtonGroupWrapped": {}
|
|
919
|
+
};
|
|
920
|
+
}
|
|
854
921
|
static get events() {
|
|
855
922
|
return [{
|
|
856
923
|
"method": "didPresent",
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
-webkit-padding-end: var(--padding-end);
|
|
117
117
|
padding-inline-end: var(--padding-end);
|
|
118
118
|
padding-top: calc(var(--padding-top) + var(--offset-top));
|
|
119
|
-
padding-bottom: calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--
|
|
119
|
+
padding-bottom: calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--internal-content-safe-area-padding-bottom, 0px));
|
|
120
120
|
position: absolute;
|
|
121
121
|
color: var(--color);
|
|
122
122
|
box-sizing: border-box;
|
|
@@ -1088,12 +1088,12 @@ export class Modal {
|
|
|
1088
1088
|
this.applyFullscreenSafeAreaTo(contentEl, hasFooter);
|
|
1089
1089
|
}
|
|
1090
1090
|
/**
|
|
1091
|
-
* Sets --
|
|
1091
|
+
* Sets --internal-content-safe-area-padding-bottom on the given ion-content
|
|
1092
1092
|
* when no footer is present, so ion-content's .inner-scroll includes
|
|
1093
1093
|
* safe-area-bottom in its scroll padding. This keeps the modal background
|
|
1094
1094
|
* edge-to-edge while ensuring content scrolls clear of the system nav bar.
|
|
1095
1095
|
*
|
|
1096
|
-
* --
|
|
1096
|
+
* --internal-content-safe-area-padding-bottom is an internal CSS property used
|
|
1097
1097
|
* only by this code path. It is not part of ion-content's public API and
|
|
1098
1098
|
* should not be set by consumers. The default of 0px makes it a no-op
|
|
1099
1099
|
* when unset, which is the expected state for ion-content used outside of
|
|
@@ -1105,17 +1105,17 @@ export class Modal {
|
|
|
1105
1105
|
// padding. Custom modals with raw HTML are developer-controlled.
|
|
1106
1106
|
if (!contentEl || hasFooter)
|
|
1107
1107
|
return;
|
|
1108
|
-
contentEl.style.setProperty('--
|
|
1108
|
+
contentEl.style.setProperty('--internal-content-safe-area-padding-bottom', 'var(--ion-safe-area-bottom, 0px)');
|
|
1109
1109
|
}
|
|
1110
1110
|
/**
|
|
1111
|
-
* Removes the internal --
|
|
1111
|
+
* Removes the internal --internal-content-safe-area-padding-bottom property
|
|
1112
1112
|
* from an already-located ion-content. Callers do their own
|
|
1113
1113
|
* findContentAndFooter() so they can also read hasFooter if needed.
|
|
1114
1114
|
*/
|
|
1115
1115
|
clearContentSafeAreaPadding(contentEl) {
|
|
1116
1116
|
if (!contentEl)
|
|
1117
1117
|
return;
|
|
1118
|
-
contentEl.style.removeProperty('--
|
|
1118
|
+
contentEl.style.removeProperty('--internal-content-safe-area-padding-bottom');
|
|
1119
1119
|
}
|
|
1120
1120
|
/**
|
|
1121
1121
|
* Finds ion-content and ion-footer among direct children and one level of
|
|
@@ -1162,20 +1162,20 @@ export class Modal {
|
|
|
1162
1162
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
1163
1163
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
1164
1164
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
1165
|
-
return (h(Host, Object.assign({ key: '
|
|
1165
|
+
return (h(Host, Object.assign({ key: 'ab93657f4a5b4c97168d292b398d975e4b5b4af4', "no-router": true,
|
|
1166
1166
|
// Allow the modal to be navigable when the handle is focusable
|
|
1167
1167
|
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
|
|
1168
1168
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
1169
|
-
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '
|
|
1169
|
+
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '5ba6315c7c8c64fa04c62f85fd493da5275b2cbd', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: 'a76c48d41c67f86c18a7481e980e6925e614f85d', class: "modal-shadow" }), h("div", Object.assign({ key: '3f6c61ba60b063592784d76a9594073b3bf210a9',
|
|
1170
1170
|
/*
|
|
1171
1171
|
role and aria-modal must be used on the
|
|
1172
1172
|
same element. They must also be set inside the
|
|
1173
1173
|
shadow DOM otherwise ion-button will not be highlighted
|
|
1174
1174
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
1175
1175
|
*/
|
|
1176
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '
|
|
1176
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '7f66b4fdb3dec61a2b9aec4e9dbacf5d013d637c', class: "modal-handle",
|
|
1177
1177
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
1178
|
-
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '
|
|
1178
|
+
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '2dfaaebe3d0b2a46be1224c25f9ab89bf1744332', onSlotchange: this.onSlotChange }))));
|
|
1179
1179
|
}
|
|
1180
1180
|
static get is() { return "ion-modal"; }
|
|
1181
1181
|
static get encapsulation() { return "shadow"; }
|
|
@@ -2157,6 +2157,9 @@ export class Modal {
|
|
|
2157
2157
|
}, {
|
|
2158
2158
|
"propName": "trigger",
|
|
2159
2159
|
"methodName": "triggerChanged"
|
|
2160
|
+
}, {
|
|
2161
|
+
"propName": "breakpoints",
|
|
2162
|
+
"methodName": "breakpointsChanged"
|
|
2160
2163
|
}];
|
|
2161
2164
|
}
|
|
2162
2165
|
static get listeners() {
|
|
@@ -86,6 +86,18 @@
|
|
|
86
86
|
cursor: default;
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
/**
|
|
90
|
+
* The active option is colored when either:
|
|
91
|
+
* - picker-column applies the `option-active` class (standalone ion-picker,
|
|
92
|
+
* where the column lives in the light DOM), or
|
|
93
|
+
* - datetime sets `part="... active"` on the option. This is the reliable
|
|
94
|
+
* value-based source of truth and keeps the option colored when the column
|
|
95
|
+
* lives inside datetime's shadow DOM, where the class can be missed
|
|
96
|
+
* (WebKit's elementsFromPoint is unreliable in a shadow root).
|
|
97
|
+
* TODO(FW-6594): Determine if this workaround can be removed when iOS 16 is
|
|
98
|
+
* no longer supported.
|
|
99
|
+
*/
|
|
100
|
+
:host(.option-active),
|
|
101
|
+
:host([part~=active]) {
|
|
90
102
|
color: var(--ion-color-base);
|
|
91
103
|
}
|
|
@@ -2,7 +2,7 @@ import { debounce } from "../../utils/helpers";
|
|
|
2
2
|
import { printIonError, printIonWarning } from "../../utils/logging/index";
|
|
3
3
|
import { ROUTER_INTENT_BACK, ROUTER_INTENT_FORWARD, ROUTER_INTENT_NONE } from "./utils/constants";
|
|
4
4
|
import { printRedirects, printRoutes } from "./utils/debug";
|
|
5
|
-
import { readNavState, waitUntilNavNode, writeNavState } from "./utils/dom";
|
|
5
|
+
import { readNavState, scrollToFragment, waitUntilNavNode, writeNavState } from "./utils/dom";
|
|
6
6
|
import { findChainForIDs, findChainForSegments, findRouteRedirect } from "./utils/matching";
|
|
7
7
|
import { readRedirects, readRoutes } from "./utils/parser";
|
|
8
8
|
import { chainToSegments, generatePath, parsePath, readSegments, writeSegments } from "./utils/path";
|
|
@@ -12,6 +12,7 @@ export class Router {
|
|
|
12
12
|
this.busy = false;
|
|
13
13
|
this.state = 0;
|
|
14
14
|
this.lastState = 0;
|
|
15
|
+
this.fragmentScrollToken = 0;
|
|
15
16
|
/**
|
|
16
17
|
* The root path to use when matching URLs. By default, this is set to "/", but you can specify
|
|
17
18
|
* an alternate prefix for all URL paths.
|
|
@@ -40,12 +41,17 @@ export class Router {
|
|
|
40
41
|
if (typeof canProceed === 'object') {
|
|
41
42
|
const { redirect } = canProceed;
|
|
42
43
|
const path = parsePath(redirect);
|
|
43
|
-
this.setSegments(path.segments, ROUTER_INTENT_NONE, path.queryString);
|
|
44
|
-
await this.writeNavStateRoot(path.segments, ROUTER_INTENT_NONE);
|
|
44
|
+
this.setSegments(path.segments, ROUTER_INTENT_NONE, path.queryString, path.fragment);
|
|
45
|
+
const result = await this.writeNavStateRoot(path.segments, ROUTER_INTENT_NONE);
|
|
46
|
+
if (result) {
|
|
47
|
+
this.maybeScrollToFragment();
|
|
48
|
+
}
|
|
45
49
|
}
|
|
50
|
+
return;
|
|
46
51
|
}
|
|
47
|
-
|
|
48
|
-
|
|
52
|
+
const result = await this.onRoutesChanged();
|
|
53
|
+
if (result) {
|
|
54
|
+
this.maybeScrollToFragment();
|
|
49
55
|
}
|
|
50
56
|
}
|
|
51
57
|
componentDidLoad() {
|
|
@@ -64,7 +70,11 @@ export class Router {
|
|
|
64
70
|
return false;
|
|
65
71
|
}
|
|
66
72
|
}
|
|
67
|
-
|
|
73
|
+
const result = await this.writeNavStateRoot(segments, direction);
|
|
74
|
+
if (result) {
|
|
75
|
+
this.maybeScrollToFragment();
|
|
76
|
+
}
|
|
77
|
+
return result;
|
|
68
78
|
}
|
|
69
79
|
onBackButton(ev) {
|
|
70
80
|
ev.detail.register(0, (processNextHandler) => {
|
|
@@ -98,7 +108,7 @@ export class Router {
|
|
|
98
108
|
const currentPath = (_a = this.previousPath) !== null && _a !== void 0 ? _a : '/';
|
|
99
109
|
// Convert currentPath to an URL by pre-pending a protocol and a host to resolve the relative path.
|
|
100
110
|
const url = new URL(path, `https://host/${currentPath}`);
|
|
101
|
-
path = url.pathname + url.search;
|
|
111
|
+
path = url.pathname + url.search + url.hash;
|
|
102
112
|
}
|
|
103
113
|
let parsedPath = parsePath(path);
|
|
104
114
|
const canProceed = await this.runGuards(parsedPath.segments);
|
|
@@ -110,8 +120,12 @@ export class Router {
|
|
|
110
120
|
return false;
|
|
111
121
|
}
|
|
112
122
|
}
|
|
113
|
-
this.setSegments(parsedPath.segments, direction, parsedPath.queryString);
|
|
114
|
-
|
|
123
|
+
this.setSegments(parsedPath.segments, direction, parsedPath.queryString, parsedPath.fragment);
|
|
124
|
+
const result = await this.writeNavStateRoot(parsedPath.segments, direction, animation);
|
|
125
|
+
if (result) {
|
|
126
|
+
this.maybeScrollToFragment();
|
|
127
|
+
}
|
|
128
|
+
return result;
|
|
115
129
|
}
|
|
116
130
|
/** Go back to previous page in the window.history. */
|
|
117
131
|
back() {
|
|
@@ -141,7 +155,12 @@ export class Router {
|
|
|
141
155
|
printIonWarning('[ion-router] - Router could not match path because some required param is missing.');
|
|
142
156
|
return false;
|
|
143
157
|
}
|
|
144
|
-
|
|
158
|
+
// navChanged is an outlet-driven URL sync. Only keep the fragment when
|
|
159
|
+
// the path is unchanged; on a real navigation it refers to an anchor on
|
|
160
|
+
// the page being left and would be stale.
|
|
161
|
+
const newPath = generatePath(segments);
|
|
162
|
+
const fragment = newPath === this.previousPath ? this.getFragment() : undefined;
|
|
163
|
+
this.setSegments(segments, direction, undefined, fragment);
|
|
145
164
|
await this.safeWriteNavState(outlet, chain, ROUTER_INTENT_NONE, segments, null, ids.length);
|
|
146
165
|
return true;
|
|
147
166
|
}
|
|
@@ -184,8 +203,8 @@ export class Router {
|
|
|
184
203
|
const redirect = findRouteRedirect(segments, redirects);
|
|
185
204
|
let redirectFrom = null;
|
|
186
205
|
if (redirect) {
|
|
187
|
-
const { segments: toSegments, queryString } = redirect.to;
|
|
188
|
-
this.setSegments(toSegments, direction, queryString);
|
|
206
|
+
const { segments: toSegments, queryString, fragment } = redirect.to;
|
|
207
|
+
this.setSegments(toSegments, direction, queryString, fragment);
|
|
189
208
|
redirectFrom = redirect.from;
|
|
190
209
|
segments = toSegments;
|
|
191
210
|
}
|
|
@@ -265,13 +284,35 @@ export class Router {
|
|
|
265
284
|
}
|
|
266
285
|
return changed;
|
|
267
286
|
}
|
|
268
|
-
setSegments(segments, direction, queryString) {
|
|
287
|
+
setSegments(segments, direction, queryString, fragment) {
|
|
269
288
|
this.state++;
|
|
270
|
-
|
|
289
|
+
// Every URL write invalidates any in-flight fragment scroll: a newer nav
|
|
290
|
+
// (with or without a fragment, successful or not) should always supersede.
|
|
291
|
+
this.fragmentScrollToken++;
|
|
292
|
+
writeSegments(window.history, this.root, this.useHash, segments, direction, this.state, queryString, fragment);
|
|
271
293
|
}
|
|
272
294
|
getSegments() {
|
|
273
295
|
return readSegments(window.location, this.root, this.useHash);
|
|
274
296
|
}
|
|
297
|
+
getFragment() {
|
|
298
|
+
// In hash mode the URL fragment trails a second `#` (e.g. `#/path#anchor`);
|
|
299
|
+
// parse the routing portion to extract it.
|
|
300
|
+
const raw = this.useHash ? parsePath(window.location.hash.slice(1)).fragment : window.location.hash.slice(1);
|
|
301
|
+
return raw ? raw : undefined;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Fires a best-effort scroll to the current URL fragment. The scroll bails
|
|
305
|
+
* if a newer `setSegments` advances `fragmentScrollToken` mid-flight.
|
|
306
|
+
*/
|
|
307
|
+
maybeScrollToFragment() {
|
|
308
|
+
const fragment = this.getFragment();
|
|
309
|
+
if (!fragment)
|
|
310
|
+
return;
|
|
311
|
+
const token = this.fragmentScrollToken;
|
|
312
|
+
// Fire-and-forget; the returned promise resolves only after the scroll
|
|
313
|
+
// animation completes, which the caller does not need to await.
|
|
314
|
+
scrollToFragment(fragment, () => token === this.fragmentScrollToken).catch(() => { });
|
|
315
|
+
}
|
|
275
316
|
routeChangeEvent(toSegments, redirectFromSegments) {
|
|
276
317
|
const from = this.previousPath;
|
|
277
318
|
const to = generatePath(toSegments);
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { findClosestIonContent, getScrollElement, isIonContent } from "../../../utils/content/index";
|
|
5
|
+
import { componentOnReady, raf } from "../../../utils/helpers";
|
|
5
6
|
import { printIonError } from "../../../utils/logging/index";
|
|
6
7
|
import { ROUTER_INTENT_NONE } from "./constants";
|
|
7
8
|
/**
|
|
@@ -66,6 +67,118 @@ export const readNavState = async (root) => {
|
|
|
66
67
|
}
|
|
67
68
|
return { ids, outlet };
|
|
68
69
|
};
|
|
70
|
+
/** Max animation frames `scrollToFragment` polls while waiting for the target to mount. */
|
|
71
|
+
const FRAGMENT_POLL_FRAMES = 30;
|
|
72
|
+
/** Duration (ms) of the smooth-scroll animation that lands on the fragment target. */
|
|
73
|
+
const FRAGMENT_SCROLL_DURATION = 300;
|
|
74
|
+
const nextFrame = () => new Promise((resolve) => raf(() => resolve()));
|
|
75
|
+
/**
|
|
76
|
+
* Returns true when `el` lives inside an active `.ion-page`. `ion-page-hidden`
|
|
77
|
+
* marks nav back-stack entries; `tab-hidden` marks inactive `ion-tab` elements.
|
|
78
|
+
* Either class on the page's ancestor chain disqualifies it. When no `.ion-page`
|
|
79
|
+
* exists in the document at all (non-router pages), the candidate is accepted
|
|
80
|
+
* so plain anchors still work.
|
|
81
|
+
*/
|
|
82
|
+
const isInActivePage = (el) => {
|
|
83
|
+
const page = el.closest('.ion-page');
|
|
84
|
+
if (page === null) {
|
|
85
|
+
return document.querySelector('.ion-page') === null;
|
|
86
|
+
}
|
|
87
|
+
return page.closest('.ion-page-hidden, .tab-hidden') === null;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Polls across animation frames for an element matching `fragment` that lives
|
|
91
|
+
* in the active page. Scoping by "last `.ion-page:not(.ion-page-hidden)`" is
|
|
92
|
+
* unreliable: inactive `ion-tab` siblings carry `.ion-page` (gated by
|
|
93
|
+
* `.tab-hidden`, not `.ion-page-hidden`) and can be ordered after the leaf.
|
|
94
|
+
* Instead, locate candidates globally and walk them from last to first,
|
|
95
|
+
* accepting the deepest one whose `.ion-page` ancestor is not hidden. The
|
|
96
|
+
* last-to-first order preserves leaf-most preference for nested outlets.
|
|
97
|
+
*/
|
|
98
|
+
const findFragmentTarget = async (fragment, shouldContinue) => {
|
|
99
|
+
// CSS.escape is unavailable on very old WebViews; the fallback path uses
|
|
100
|
+
// `getElementById` and drops the legacy `<a name>` branch.
|
|
101
|
+
const canEscape = typeof CSS !== 'undefined' && typeof CSS.escape === 'function';
|
|
102
|
+
const escaped = canEscape ? CSS.escape(fragment) : null;
|
|
103
|
+
for (let i = 0; i < FRAGMENT_POLL_FRAMES; i++) {
|
|
104
|
+
if (!shouldContinue())
|
|
105
|
+
return null;
|
|
106
|
+
let candidates = [];
|
|
107
|
+
if (escaped !== null) {
|
|
108
|
+
try {
|
|
109
|
+
candidates = [...document.querySelectorAll(`#${escaped}, a[name="${escaped}"]`)];
|
|
110
|
+
}
|
|
111
|
+
catch (_a) {
|
|
112
|
+
candidates = [...document.querySelectorAll(`#${escaped}`)];
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
const byId = document.getElementById(fragment);
|
|
117
|
+
if (byId !== null)
|
|
118
|
+
candidates = [byId];
|
|
119
|
+
}
|
|
120
|
+
for (let j = candidates.length - 1; j >= 0; j--) {
|
|
121
|
+
if (isInActivePage(candidates[j])) {
|
|
122
|
+
return candidates[j];
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
await nextFrame();
|
|
126
|
+
}
|
|
127
|
+
return null;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Scrolls to the element whose id matches `fragment`, falling back to a legacy
|
|
131
|
+
* `<a name="...">` target. When the target lives inside an `ion-content`, the
|
|
132
|
+
* scroll uses its smooth-animated scroll API; otherwise it falls back to
|
|
133
|
+
* `Element.scrollIntoView`.
|
|
134
|
+
*
|
|
135
|
+
* `shouldContinue` lets callers cancel in-flight scrolls when a newer
|
|
136
|
+
* navigation supersedes this one. It is checked between async steps.
|
|
137
|
+
*/
|
|
138
|
+
export const scrollToFragment = async (fragment, shouldContinue = () => true) => {
|
|
139
|
+
if (fragment == null || fragment === '') {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
// URL fragments are percent-encoded but element ids are not; decode for
|
|
143
|
+
// matching per the HTML spec's indicated-element resolution.
|
|
144
|
+
let decoded;
|
|
145
|
+
try {
|
|
146
|
+
decoded = decodeURIComponent(fragment);
|
|
147
|
+
}
|
|
148
|
+
catch (_a) {
|
|
149
|
+
decoded = fragment;
|
|
150
|
+
}
|
|
151
|
+
const target = await findFragmentTarget(decoded, shouldContinue);
|
|
152
|
+
if (!target || !shouldContinue()) {
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
// Best-effort scroll: swallow exceptions if the page tears down mid-animation.
|
|
156
|
+
try {
|
|
157
|
+
const contentHost = findClosestIonContent(target);
|
|
158
|
+
if (contentHost && isIonContent(contentHost)) {
|
|
159
|
+
const content = contentHost;
|
|
160
|
+
const scrollEl = await getScrollElement(content);
|
|
161
|
+
// Yield one frame so the newly mounted target's layout is stable
|
|
162
|
+
// before we measure its rect.
|
|
163
|
+
await nextFrame();
|
|
164
|
+
if (!shouldContinue())
|
|
165
|
+
return false;
|
|
166
|
+
const targetRect = target.getBoundingClientRect();
|
|
167
|
+
const scrollRect = scrollEl.getBoundingClientRect();
|
|
168
|
+
const top = targetRect.top - scrollRect.top + scrollEl.scrollTop;
|
|
169
|
+
// Preserve scrollLeft so RTL and horizontally-scrolling pages aren't reset.
|
|
170
|
+
await content.scrollToPoint(scrollEl.scrollLeft, top, FRAGMENT_SCROLL_DURATION);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
target.scrollIntoView({ behavior: 'smooth' });
|
|
174
|
+
}
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
catch (e) {
|
|
178
|
+
printIonError('[ion-router] - Exception in scrollToFragment:', e);
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
69
182
|
export const waitUntilNavNode = () => {
|
|
70
183
|
if (searchNavNode(document.body)) {
|
|
71
184
|
return Promise.resolve();
|
|
@@ -7,7 +7,7 @@ export const generatePath = (segments) => {
|
|
|
7
7
|
const path = segments.filter((s) => s.length > 0).join('/');
|
|
8
8
|
return '/' + path;
|
|
9
9
|
};
|
|
10
|
-
const generateUrl = (segments, useHash, queryString) => {
|
|
10
|
+
const generateUrl = (segments, useHash, queryString, fragment) => {
|
|
11
11
|
let url = generatePath(segments);
|
|
12
12
|
if (useHash) {
|
|
13
13
|
url = '#' + url;
|
|
@@ -15,10 +15,13 @@ const generateUrl = (segments, useHash, queryString) => {
|
|
|
15
15
|
if (queryString !== undefined) {
|
|
16
16
|
url += '?' + queryString;
|
|
17
17
|
}
|
|
18
|
+
if (fragment !== undefined) {
|
|
19
|
+
url += '#' + fragment;
|
|
20
|
+
}
|
|
18
21
|
return url;
|
|
19
22
|
};
|
|
20
|
-
export const writeSegments = (history, root, useHash, segments, direction, state, queryString) => {
|
|
21
|
-
const url = generateUrl([...parsePath(root).segments, ...segments], useHash, queryString);
|
|
23
|
+
export const writeSegments = (history, root, useHash, segments, direction, state, queryString, fragment) => {
|
|
24
|
+
const url = generateUrl([...parsePath(root).segments, ...segments], useHash, queryString, fragment);
|
|
22
25
|
if (direction === ROUTER_INTENT_FORWARD) {
|
|
23
26
|
history.pushState(state, '', url);
|
|
24
27
|
}
|
|
@@ -85,12 +88,21 @@ export const readSegments = (loc, root, useHash) => {
|
|
|
85
88
|
/**
|
|
86
89
|
* Parses the path to:
|
|
87
90
|
* - segments an array of '/' separated parts,
|
|
88
|
-
* - queryString (undefined when no query string)
|
|
91
|
+
* - queryString (undefined when no query string),
|
|
92
|
+
* - fragment (undefined when no `#`).
|
|
89
93
|
*/
|
|
90
94
|
export const parsePath = (path) => {
|
|
91
95
|
let segments = [''];
|
|
92
96
|
let queryString;
|
|
97
|
+
let fragment;
|
|
93
98
|
if (path != null) {
|
|
99
|
+
// The fragment ("#") starts a section that runs to the end of the URL.
|
|
100
|
+
// Anything inside it (including "?") is part of the fragment per RFC 3986.
|
|
101
|
+
const fragStart = path.indexOf('#');
|
|
102
|
+
if (fragStart > -1) {
|
|
103
|
+
fragment = path.substring(fragStart + 1);
|
|
104
|
+
path = path.substring(0, fragStart);
|
|
105
|
+
}
|
|
94
106
|
const qsStart = path.indexOf('?');
|
|
95
107
|
if (qsStart > -1) {
|
|
96
108
|
queryString = path.substring(qsStart + 1);
|
|
@@ -104,5 +116,5 @@ export const parsePath = (path) => {
|
|
|
104
116
|
segments = [''];
|
|
105
117
|
}
|
|
106
118
|
}
|
|
107
|
-
return { segments, queryString };
|
|
119
|
+
return { segments, queryString, fragment };
|
|
108
120
|
};
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { win } from "../../browser/index";
|
|
5
5
|
import { getScrollElement, scrollByPoint } from "../../content";
|
|
6
|
-
import { raf } from "../../helpers";
|
|
7
6
|
import { KeyboardResize } from "../../native/keyboard";
|
|
8
7
|
import { relocateInput, SCROLL_AMOUNT_PADDING } from "./common";
|
|
9
8
|
import { getScrollData } from "./scroll-data";
|
|
@@ -193,12 +192,6 @@ const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHei
|
|
|
193
192
|
// at this point the native text input still does not have focus
|
|
194
193
|
relocateInput(componentEl, inputEl, true, scrollData.inputSafeY, disableClonedInput);
|
|
195
194
|
setManualFocus(inputEl);
|
|
196
|
-
/**
|
|
197
|
-
* Relocating/Focusing input causes the
|
|
198
|
-
* click event to be cancelled, so
|
|
199
|
-
* manually fire one here.
|
|
200
|
-
*/
|
|
201
|
-
raf(() => componentEl.click());
|
|
202
195
|
/**
|
|
203
196
|
* If enabled, we can add scroll padding to
|
|
204
197
|
* the bottom of the content so that scroll assist
|
package/dist/docs.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"timestamp": "2026-
|
|
2
|
+
"timestamp": "2026-06-12T22:12:03",
|
|
3
3
|
"compiler": {
|
|
4
4
|
"name": "@stencil/core",
|
|
5
|
-
"version": "4.43.
|
|
5
|
+
"version": "4.43.5",
|
|
6
6
|
"typescriptVersion": "5.8.3"
|
|
7
7
|
},
|
|
8
8
|
"components": [
|
|
@@ -33097,10 +33097,10 @@
|
|
|
33097
33097
|
"docsTags": [
|
|
33098
33098
|
{
|
|
33099
33099
|
"name": "default",
|
|
33100
|
-
"text": "
|
|
33100
|
+
"text": "'(min-width: 992px)'"
|
|
33101
33101
|
}
|
|
33102
33102
|
],
|
|
33103
|
-
"default": "
|
|
33103
|
+
"default": "'(min-width: 992px)'",
|
|
33104
33104
|
"values": [
|
|
33105
33105
|
{
|
|
33106
33106
|
"type": "boolean"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { i as initialize } from './ionic-global-
|
|
4
|
+
import { i as initialize } from './ionic-global-Cp_eT4sZ.js';
|
|
5
5
|
|
|
6
6
|
const appGlobalScript = initialize || (() => {});
|
|
7
7
|
const globalScripts = appGlobalScript;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { w as writeTask } from './index-
|
|
4
|
+
import { w as writeTask } from './index-tcQvqkiX.js';
|
|
5
5
|
import { h as hapticSelectionEnd, a as hapticSelectionChanged, b as hapticSelectionStart } from './haptic-DzAMWJuk.js';
|
|
6
6
|
import { createGesture } from './index-CfgBF1SE.js';
|
|
7
7
|
|