@ionic/core 8.7.19-nightly.20260304 → 8.8.0
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.d.ts +2 -0
- package/components/index.js +1 -114
- package/components/ion-accordion-group.js +1 -268
- package/components/ion-accordion.js +1 -456
- package/components/ion-action-sheet.js +1 -6
- package/components/ion-alert.js +1 -6
- package/components/ion-app.js +1 -132
- package/components/ion-avatar.js +1 -41
- package/components/ion-back-button.js +1 -130
- package/components/ion-backdrop.js +1 -6
- package/components/ion-badge.js +1 -47
- package/components/ion-breadcrumb.js +1 -137
- package/components/ion-breadcrumbs.js +1 -164
- package/components/ion-button.js +1 -6
- package/components/ion-buttons.js +1 -6
- package/components/ion-card-content.js +1 -45
- package/components/ion-card-header.js +1 -56
- package/components/ion-card-subtitle.js +1 -48
- package/components/ion-card-title.js +1 -48
- package/components/ion-card.js +1 -107
- package/components/ion-checkbox.js +1 -6
- package/components/ion-chip.js +1 -66
- package/components/ion-col.js +1 -163
- package/components/ion-content.js +1 -6
- package/components/ion-datetime-button.js +1 -383
- package/components/ion-datetime.js +1 -2047
- package/components/ion-fab-button.js +1 -151
- package/components/ion-fab-list.js +1 -73
- package/components/ion-fab.js +1 -101
- package/components/ion-footer.js +1 -179
- package/components/ion-grid.js +1 -46
- package/components/ion-header.js +1 -6
- package/components/ion-icon.js +1 -6
- package/components/ion-img.js +1 -133
- package/components/ion-infinite-scroll-content.js +1 -69
- package/components/ion-infinite-scroll.js +1 -236
- package/components/ion-input-otp.js +1 -682
- package/components/ion-input-password-toggle.js +1 -128
- package/components/ion-input.js +1 -646
- package/components/ion-item-divider.js +1 -59
- package/components/ion-item-group.js +1 -46
- package/components/ion-item-option.js +1 -91
- package/components/ion-item-options.js +1 -73
- package/components/ion-item-sliding.js +1 -457
- package/components/ion-item.js +1 -6
- package/components/ion-label.js +1 -6
- package/components/ion-list-header.js +1 -6
- package/components/ion-list.js +1 -6
- package/components/ion-loading.js +1 -343
- package/components/ion-menu-button.js +1 -109
- package/components/ion-menu-toggle.js +1 -64
- package/components/ion-menu.js +1 -741
- package/components/ion-modal.js +1 -6
- package/components/ion-nav-link.js +1 -64
- package/components/ion-nav.js +1 -951
- package/components/ion-note.js +1 -47
- package/components/ion-picker-column-option.js +1 -6
- package/components/ion-picker-column.js +1 -6
- package/components/ion-picker-legacy-column.js +1 -6
- package/components/ion-picker-legacy.js +1 -342
- package/components/ion-picker.js +1 -6
- package/components/ion-popover.js +1 -6
- package/components/ion-progress-bar.js +1 -100
- package/components/ion-radio-group.js +1 -6
- package/components/ion-radio.js +1 -6
- package/components/ion-range.js +1 -844
- package/components/ion-refresher-content.js +1 -88
- package/components/ion-refresher.js +1 -750
- package/components/ion-reorder-group.js +1 -322
- package/components/ion-reorder.js +1 -60
- package/components/ion-ripple-effect.js +1 -6
- package/components/ion-route-redirect.js +1 -45
- package/components/ion-route.js +1 -74
- package/components/ion-router-link.js +1 -61
- package/components/ion-router-outlet.js +1 -226
- package/components/ion-router.js +1 -840
- package/components/ion-row.js +1 -36
- package/components/ion-searchbar.js +1 -540
- package/components/ion-segment-button.js +1 -173
- package/components/ion-segment-content.js +1 -35
- package/components/ion-segment-view.js +1 -142
- package/components/ion-segment.js +1 -602
- package/components/ion-select-modal.js +1 -6
- package/components/ion-select-option.js +1 -46
- package/components/ion-select-popover.js +1 -6
- package/components/ion-select.js +1 -1035
- package/components/ion-skeleton-text.js +1 -64
- package/components/ion-spinner.js +1 -6
- package/components/ion-split-pane.js +1 -190
- package/components/ion-tab-bar.js +1 -135
- package/components/ion-tab-button.js +1 -127
- package/components/ion-tab.js +1 -82
- package/components/ion-tabs.js +1 -204
- package/components/ion-text.js +1 -42
- package/components/ion-textarea.js +1 -554
- package/components/ion-thumbnail.js +1 -36
- package/components/ion-title.js +1 -6
- package/components/ion-toast.js +1 -938
- package/components/ion-toggle.js +1 -360
- package/components/ion-toolbar.js +1 -6
- package/components/p-1KVKSLu5.js +4 -0
- package/{dist/ionic/p-DUt5fQmA.js → components/p-9VcRUwdB.js} +1 -1
- package/components/p-ApmKVjaE.js +4 -0
- package/components/p-B-hirT0v.js +1 -35
- package/components/p-B6FQ0cKR.js +4 -0
- package/components/p-B6HaBl3o.js +4 -0
- package/components/p-B8b1Ukl9.js +4 -0
- package/components/p-BFxT89Wl.js +4 -0
- package/components/p-BJoMtgfR.js +4 -0
- package/components/p-BNAG-aVv.js +4 -0
- package/{dist/ionic/p-D-eFFUkA.js → components/p-BR3tZJmu.js} +1 -1
- package/{dist/ionic/p-D0dMcSkw.js → components/p-BS1TtEiJ.js} +1 -1
- package/components/p-BSB38Tek.js +4 -0
- package/components/p-BTEOs1at.js +1 -192
- package/components/p-BTeL5HCK.js +4 -0
- package/{dist/ionic/p-DbQ5QkTP.js → components/p-BUbsoBOV.js} +1 -1
- package/components/p-BVnB3eEn.js +4 -0
- package/components/p-BYDc3hSE.js +4 -0
- package/components/p-BagjAGC0.js +4 -0
- package/components/p-BegtE7nr.js +4 -0
- package/components/p-BgwEQWW6.js +4 -0
- package/components/p-Bk2zuNWT.js +4 -0
- package/components/p-BmVRXR1y.js +1 -72
- package/components/p-Bum_LjMh.js +4 -0
- package/components/p-BxwWvu-b.js +4 -0
- package/components/p-C4jPsTQa.js +4 -0
- package/components/p-C53feagD.js +1 -15
- package/{dist/ionic/p-CwgG81ZD.js → components/p-C59ryAuS.js} +1 -1
- package/components/p-C7AoMl7c.js +4 -0
- package/components/p-CBzELu-H.js +4 -0
- package/components/p-CDfQnFrd.js +4 -0
- package/components/p-CH0NYjKq.js +4 -0
- package/components/p-CIGNaXM1.js +1 -10
- package/components/p-CO7fmmxt.js +1 -29
- package/components/p-CU1SSH8_.js +4 -0
- package/components/p-CVF7ukTk.js +4 -0
- package/components/p-CgfaEEem.js +4 -0
- package/components/p-CgqKJg96.js +4 -0
- package/components/p-Cl0B-RWe.js +1 -452
- package/components/p-CneGxKsZ.js +4 -0
- package/components/p-CoA-aqGF.js +4 -0
- package/{dist/ionic/p-DdR6rpbR.js → components/p-Cq8cQ0NL.js} +1 -1
- package/components/p-Csw8xuz4.js +4 -0
- package/components/p-CtWGkNnJ.js +1 -162
- package/components/p-Cwv-vmkN.js +4 -0
- package/{dist/ionic/p-BYEqWnSg.js → components/p-Cy5XSfIk.js} +1 -1
- package/components/p-Cyxa_4PV.js +4 -0
- package/components/p-Cz5nLPGT.js +4 -0
- package/components/p-D13Eaw-8.js +1 -76
- package/components/p-D6NJwNJN.js +4 -0
- package/components/p-D6Ynv7Xh.js +1 -141
- package/components/p-DHsZWn1l.js +4 -0
- package/components/p-DJMZehmW.js +4 -0
- package/components/p-DJztqcrH.js +1 -14
- package/components/p-DYdpXONG.js +4 -0
- package/components/p-DgbT0exM.js +4 -0
- package/components/p-DiVJyqlX.js +1 -40
- package/components/p-Dtdm8lKC.js +1 -44
- package/components/p-YLXPWgVj.js +4 -0
- package/components/p-ZjP4CjeZ.js +1 -4
- package/{dist/ionic/p-DCv9sLH2.js → components/p-ak_d-z48.js} +1 -1
- package/components/p-cyNmxje6.js +1 -155
- package/components/p-fpbh6w3f.js +4 -0
- package/components/p-hHmYLOfE.js +1 -87
- package/components/p-kvaDs24J.js +4 -0
- package/components/p-vEbVo2hO.js +4 -0
- package/dist/cjs/{animation-Bt3H9L1C.js → animation-Dg4yiuR2.js} +1 -1
- package/dist/cjs/app-globals-CLI8xCmk.js +11 -0
- package/dist/cjs/{button-active-CMc8cD90.js → button-active-FscMI17-.js} +1 -1
- package/dist/cjs/{config-C5fsO43a.js → config-BukYi_pW.js} +1 -1
- package/dist/cjs/{data-JwZKaIQB.js → data-BYlBjkMU.js} +1 -1
- package/dist/cjs/{framework-delegate-DMJRBuDi.js → framework-delegate-CRgp8o_p.js} +1 -1
- package/dist/cjs/{hardware-back-button-VCK4V3mG.js → hardware-back-button-C4rMJ5uI.js} +1 -1
- package/dist/cjs/{helpers-DrTqNghc.js → helpers-CxTYJdbT.js} +1 -1
- package/dist/cjs/{index-094mMFB-.js → index-C845Ti6K.js} +4 -4
- package/dist/cjs/{index-DrMUZJj6.js → index-CFUwM5x_.js} +5 -5
- package/dist/cjs/{index-D6Wc6v08.js → index-CqT-2gKy.js} +503 -382
- package/dist/cjs/{index-CO6eryBo.js → index-MbaBbWXk.js} +2 -2
- package/dist/cjs/{index-C534ULug.js → index-YcSftOMz.js} +2 -2
- package/dist/cjs/index.cjs.js +12 -12
- package/dist/cjs/{input-shims-CuMghsQ-.js → input-shims-Dl5cnc_e.js} +3 -3
- package/dist/cjs/{input.utils-B_QROI2g.js → input.utils-DmeJ8dmo.js} +2 -2
- package/dist/cjs/ion-accordion_2.cjs.entry.js +23 -15
- package/dist/cjs/ion-action-sheet.cjs.entry.js +21 -15
- package/dist/cjs/ion-alert.cjs.entry.js +25 -17
- package/dist/cjs/ion-app_8.cjs.entry.js +48 -43
- package/dist/cjs/ion-avatar_3.cjs.entry.js +12 -12
- package/dist/cjs/ion-back-button.cjs.entry.js +7 -7
- package/dist/cjs/ion-backdrop.cjs.entry.js +6 -6
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +20 -14
- package/dist/cjs/ion-button_2.cjs.entry.js +36 -18
- package/dist/cjs/ion-card_5.cjs.entry.js +23 -23
- package/dist/cjs/ion-checkbox.cjs.entry.js +7 -7
- package/dist/cjs/ion-chip.cjs.entry.js +6 -6
- package/dist/cjs/ion-col_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-datetime-button.cjs.entry.js +8 -8
- package/dist/cjs/ion-datetime_3.cjs.entry.js +75 -46
- package/dist/cjs/ion-fab_3.cjs.entry.js +17 -13
- package/dist/cjs/ion-img.cjs.entry.js +8 -6
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +17 -13
- package/dist/cjs/ion-input-otp.cjs.entry.js +16 -10
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +9 -7
- package/dist/cjs/ion-input.cjs.entry.js +21 -13
- package/dist/cjs/ion-item-option_3.cjs.entry.js +19 -17
- package/dist/cjs/ion-item_8.cjs.entry.js +48 -42
- package/dist/cjs/ion-loading.cjs.entry.js +18 -14
- package/dist/cjs/ion-menu_3.cjs.entry.js +30 -22
- package/dist/cjs/ion-modal.cjs.entry.js +237 -59
- package/dist/cjs/ion-nav_2.cjs.entry.js +14 -10
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +10 -8
- package/dist/cjs/ion-picker-column.cjs.entry.js +11 -7
- package/dist/cjs/ion-picker.cjs.entry.js +6 -6
- package/dist/cjs/ion-popover.cjs.entry.js +21 -15
- package/dist/cjs/ion-progress-bar.cjs.entry.js +7 -7
- package/dist/cjs/ion-radio_2.cjs.entry.js +17 -13
- package/dist/cjs/ion-range.cjs.entry.js +205 -57
- package/dist/cjs/ion-refresher_2.cjs.entry.js +45 -14
- package/dist/cjs/ion-reorder_2.cjs.entry.js +13 -11
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +4 -4
- package/dist/cjs/ion-route_4.cjs.entry.js +20 -10
- package/dist/cjs/ion-searchbar.cjs.entry.js +22 -12
- package/dist/cjs/ion-segment-content.cjs.entry.js +3 -3
- package/dist/cjs/ion-segment-view.cjs.entry.js +13 -8
- package/dist/cjs/ion-segment_2.cjs.entry.js +26 -16
- package/dist/cjs/ion-select-modal.cjs.entry.js +17 -13
- package/dist/cjs/ion-select_3.cjs.entry.js +33 -24
- package/dist/cjs/ion-spinner.cjs.entry.js +4 -4
- package/dist/cjs/ion-split-pane.cjs.entry.js +15 -9
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +14 -12
- package/dist/cjs/ion-tab_2.cjs.entry.js +10 -8
- package/dist/cjs/ion-text.cjs.entry.js +4 -4
- package/dist/cjs/ion-textarea.cjs.entry.js +20 -14
- package/dist/cjs/ion-toast.cjs.entry.js +21 -15
- package/dist/cjs/ion-toggle.cjs.entry.js +10 -8
- package/dist/cjs/{ionic-global-HMVqOFGO.js → ionic-global-Bc3kJi1Z.js} +1 -1
- package/dist/cjs/ionic.cjs.js +5 -5
- package/dist/cjs/{ios.transition-BOt_uW73.js → ios.transition-trBiC95R.js} +4 -4
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-Dt968VXB.js → md.transition-CUQECuvD.js} +4 -4
- package/dist/cjs/{notch-controller-Bzqhjm4f.js → notch-controller-sD-lTpdc.js} +1 -1
- package/dist/cjs/{overlays-B2b-TTbl.js → overlays-C2jiBSNQ.js} +5 -5
- package/dist/cjs/{status-tap-g0sWWkXk.js → status-tap-CCJk5VgT.js} +3 -3
- package/dist/cjs/{swipe-back-BIayeNOD.js → swipe-back-BGhTQ1CU.js} +2 -2
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/accordion-group/accordion-group.js +4 -2
- package/dist/collection/components/action-sheet/action-sheet.js +20 -10
- package/dist/collection/components/alert/alert.js +24 -12
- package/dist/collection/components/back-button/back-button.js +4 -2
- package/dist/collection/components/badge/badge.js +2 -1
- package/dist/collection/components/breadcrumb/breadcrumb.js +8 -4
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +4 -2
- package/dist/collection/components/button/button.js +6 -3
- package/dist/collection/components/card/card.js +6 -3
- package/dist/collection/components/card-header/card-header.js +2 -1
- package/dist/collection/components/card-subtitle/card-subtitle.js +2 -1
- package/dist/collection/components/card-title/card-title.js +2 -1
- package/dist/collection/components/checkbox/checkbox.js +4 -2
- package/dist/collection/components/chip/chip.js +2 -1
- package/dist/collection/components/content/content.js +12 -7
- package/dist/collection/components/datetime/datetime.js +43 -22
- package/dist/collection/components/datetime-button/datetime-button.js +2 -1
- package/dist/collection/components/fab-button/fab-button.js +6 -3
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +4 -2
- package/dist/collection/components/input/input.js +11 -6
- package/dist/collection/components/input-otp/input-otp.js +8 -4
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +4 -2
- package/dist/collection/components/item/item.js +10 -5
- package/dist/collection/components/item-divider/item-divider.js +7 -3
- package/dist/collection/components/item-option/item-option.js +6 -3
- package/dist/collection/components/item-options/item-options.js +2 -1
- package/dist/collection/components/item-sliding/item-sliding.js +2 -1
- package/dist/collection/components/label/label.js +6 -3
- package/dist/collection/components/list-header/list-header.js +6 -3
- package/dist/collection/components/loading/loading.js +22 -11
- package/dist/collection/components/menu/menu.js +10 -5
- package/dist/collection/components/menu-button/menu-button.js +2 -1
- package/dist/collection/components/modal/gestures/sheet.js +120 -12
- package/dist/collection/components/modal/gestures/swipe-to-close.js +54 -1
- package/dist/collection/components/modal/modal.js +127 -45
- package/dist/collection/components/nav/nav.js +89 -45
- package/dist/collection/components/nav-link/nav-link.js +9 -5
- package/dist/collection/components/note/note.js +2 -1
- package/dist/collection/components/picker/picker.js +2 -1
- package/dist/collection/components/picker-column/picker-column.js +6 -3
- package/dist/collection/components/picker-column-option/picker-column-option.js +2 -1
- package/dist/collection/components/picker-legacy/picker.js +24 -12
- package/dist/collection/components/picker-legacy-column/picker-column.js +4 -2
- package/dist/collection/components/popover/popover.js +33 -17
- package/dist/collection/components/progress-bar/progress-bar.js +2 -1
- package/dist/collection/components/radio/radio.js +2 -1
- package/dist/collection/components/radio-group/radio-group.js +6 -3
- package/dist/collection/components/range/range.js +214 -53
- package/dist/collection/components/refresher/refresher.js +73 -5
- package/dist/collection/components/refresher-content/refresher-content.js +8 -4
- package/dist/collection/components/reorder-group/reorder-group.js +6 -3
- package/dist/collection/components/route/route.js +4 -2
- package/dist/collection/components/router/router.js +10 -5
- package/dist/collection/components/router-link/router-link.js +6 -3
- package/dist/collection/components/router-outlet/router-outlet.js +18 -9
- package/dist/collection/components/searchbar/searchbar.js +11 -6
- package/dist/collection/components/segment/segment.js +10 -5
- package/dist/collection/components/segment-button/segment-button.js +4 -2
- package/dist/collection/components/segment-view/segment-view.ios.css +2 -1
- package/dist/collection/components/segment-view/segment-view.js +30 -4
- package/dist/collection/components/segment-view/segment-view.md.css +2 -1
- package/dist/collection/components/select/select.js +17 -8
- package/dist/collection/components/select-modal/select-modal.js +27 -2
- package/dist/collection/components/select-popover/select-popover.js +2 -1
- package/dist/collection/components/skeleton-text/skeleton-text.js +2 -1
- package/dist/collection/components/spinner/spinner.js +4 -2
- package/dist/collection/components/tab/tab.js +4 -2
- package/dist/collection/components/tab-bar/tab-bar.js +4 -2
- package/dist/collection/components/tab-button/tab-button.js +4 -2
- package/dist/collection/components/tabs/tabs.js +4 -2
- package/dist/collection/components/text/text.js +2 -1
- package/dist/collection/components/textarea/textarea.js +10 -7
- package/dist/collection/components/title/title.js +4 -2
- package/dist/collection/components/toast/toast.js +34 -17
- package/dist/collection/components/toggle/toggle.js +4 -2
- package/dist/collection/components/toolbar/toolbar.js +2 -1
- package/dist/docs.d.ts +37 -0
- package/dist/docs.json +1186 -389
- package/dist/esm/{animation-Dt8bGnA-.js → animation-CnGMT4ji.js} +1 -1
- package/dist/esm/app-globals-DhZjtldk.js +9 -0
- package/dist/esm/{button-active-L570Swow.js → button-active-BBx21brx.js} +1 -1
- package/dist/esm/{config-mCdtaoPe.js → config-TO1rZH52.js} +1 -1
- package/dist/esm/{data-DCORV9FH.js → data-B9iGR5YO.js} +1 -1
- package/dist/esm/{framework-delegate-BYawdMXj.js → framework-delegate-CyxE1S_P.js} +1 -1
- package/dist/esm/{hardware-back-button-CPLxO-Ev.js → hardware-back-button-CTe4XmL7.js} +1 -1
- package/dist/esm/{helpers-DEn3pfjm.js → helpers-Tl8jw6S2.js} +1 -1
- package/dist/esm/{index-r2D9DEro.js → index-B-hkiOUh.js} +4 -4
- package/dist/esm/{index-CvDIirVx.js → index-B2KwgBLx.js} +5 -5
- package/dist/esm/{index-ceb5RaMT.js → index-BtUdxPjv.js} +2 -2
- package/dist/esm/{index-C8IsBmNU.js → index-IGIE5vDm.js} +503 -382
- package/dist/esm/{index-Bs3kT4bc.js → index-hW6eNZ3o.js} +2 -2
- package/dist/esm/index.js +12 -12
- package/dist/esm/{input-shims-D6H3ZaWt.js → input-shims-AaDhOpKN.js} +3 -3
- package/dist/esm/{input.utils-DrvTa8gz.js → input.utils-Bxa_DQ7-.js} +2 -2
- package/dist/esm/ion-accordion_2.entry.js +23 -15
- package/dist/esm/ion-action-sheet.entry.js +21 -15
- package/dist/esm/ion-alert.entry.js +25 -17
- package/dist/esm/ion-app_8.entry.js +48 -43
- package/dist/esm/ion-avatar_3.entry.js +12 -12
- package/dist/esm/ion-back-button.entry.js +7 -7
- package/dist/esm/ion-backdrop.entry.js +6 -6
- package/dist/esm/ion-breadcrumb_2.entry.js +20 -14
- package/dist/esm/ion-button_2.entry.js +36 -18
- package/dist/esm/ion-card_5.entry.js +23 -23
- package/dist/esm/ion-checkbox.entry.js +7 -7
- package/dist/esm/ion-chip.entry.js +6 -6
- package/dist/esm/ion-col_3.entry.js +8 -8
- package/dist/esm/ion-datetime-button.entry.js +8 -8
- package/dist/esm/ion-datetime_3.entry.js +75 -46
- package/dist/esm/ion-fab_3.entry.js +17 -13
- package/dist/esm/ion-img.entry.js +8 -6
- package/dist/esm/ion-infinite-scroll_2.entry.js +17 -13
- package/dist/esm/ion-input-otp.entry.js +16 -10
- package/dist/esm/ion-input-password-toggle.entry.js +9 -7
- package/dist/esm/ion-input.entry.js +21 -13
- package/dist/esm/ion-item-option_3.entry.js +19 -17
- package/dist/esm/ion-item_8.entry.js +48 -42
- package/dist/esm/ion-loading.entry.js +18 -14
- package/dist/esm/ion-menu_3.entry.js +30 -22
- package/dist/esm/ion-modal.entry.js +237 -59
- package/dist/esm/ion-nav_2.entry.js +14 -10
- package/dist/esm/ion-picker-column-option.entry.js +10 -8
- package/dist/esm/ion-picker-column.entry.js +11 -7
- package/dist/esm/ion-picker.entry.js +6 -6
- package/dist/esm/ion-popover.entry.js +21 -15
- package/dist/esm/ion-progress-bar.entry.js +7 -7
- package/dist/esm/ion-radio_2.entry.js +17 -13
- package/dist/esm/ion-range.entry.js +205 -57
- package/dist/esm/ion-refresher_2.entry.js +45 -14
- package/dist/esm/ion-reorder_2.entry.js +13 -11
- package/dist/esm/ion-ripple-effect.entry.js +4 -4
- package/dist/esm/ion-route_4.entry.js +20 -10
- package/dist/esm/ion-searchbar.entry.js +22 -12
- package/dist/esm/ion-segment-content.entry.js +3 -3
- package/dist/esm/ion-segment-view.entry.js +13 -8
- package/dist/esm/ion-segment_2.entry.js +26 -16
- package/dist/esm/ion-select-modal.entry.js +17 -13
- package/dist/esm/ion-select_3.entry.js +33 -24
- package/dist/esm/ion-spinner.entry.js +4 -4
- package/dist/esm/ion-split-pane.entry.js +15 -9
- package/dist/esm/ion-tab-bar_2.entry.js +14 -12
- package/dist/esm/ion-tab_2.entry.js +10 -8
- package/dist/esm/ion-text.entry.js +4 -4
- package/dist/esm/ion-textarea.entry.js +20 -14
- package/dist/esm/ion-toast.entry.js +21 -15
- package/dist/esm/ion-toggle.entry.js +10 -8
- package/dist/esm/{ionic-global-CDrldh-5.js → ionic-global-DfbeLwcV.js} +1 -1
- package/dist/esm/ionic.js +6 -6
- package/dist/esm/{ios.transition-BDzw0_Hm.js → ios.transition--aMF-pDH.js} +4 -4
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-BzDYi3qq.js → md.transition-BEVbfm8j.js} +4 -4
- package/dist/esm/{notch-controller-BwelN_JM.js → notch-controller-DAcvKU57.js} +1 -1
- package/dist/esm/{overlays-D5YkFThA.js → overlays-F8GHPo-e.js} +5 -5
- package/dist/esm/{status-tap-5DQ7Fc4V.js → status-tap-BfJqFSLF.js} +3 -3
- package/dist/esm/{swipe-back-BKw2CAHc.js → swipe-back-BZBFwTQV.js} +2 -2
- package/dist/html.html-data.json +117 -109
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-031b76f7.entry.js +4 -0
- package/dist/ionic/p-045a6a42.entry.js +4 -0
- package/dist/ionic/p-07506134.entry.js +4 -0
- package/dist/ionic/p-084c25b2.entry.js +4 -0
- package/dist/ionic/p-0d8b5c38.entry.js +4 -0
- package/dist/ionic/p-16813ce7.entry.js +4 -0
- package/dist/ionic/p-16b65553.entry.js +4 -0
- package/dist/ionic/p-1b02923f.entry.js +4 -0
- package/dist/ionic/{p-5c8f7253.entry.js → p-1b169fb6.entry.js} +1 -1
- package/dist/ionic/{p-915b3e3d.entry.js → p-23fac490.entry.js} +1 -1
- package/dist/ionic/{p-b8551510.entry.js → p-294f4bb5.entry.js} +1 -1
- package/dist/ionic/p-2a68388b.entry.js +4 -0
- package/dist/ionic/p-2f5a8140.entry.js +4 -0
- package/dist/ionic/{p-49d06882.entry.js → p-301c43f8.entry.js} +1 -1
- package/dist/ionic/{p-79bd78f9.entry.js → p-370a60ee.entry.js} +1 -1
- package/dist/ionic/p-3e143d1d.entry.js +4 -0
- package/dist/ionic/p-4819b469.entry.js +4 -0
- package/dist/ionic/p-4dd5e8e0.entry.js +4 -0
- package/dist/ionic/p-51c11c47.entry.js +4 -0
- package/dist/ionic/p-53f750a5.entry.js +4 -0
- package/dist/ionic/{p-7cad388a.entry.js → p-6af16209.entry.js} +1 -1
- package/dist/ionic/{p-7f98e710.entry.js → p-6b701daa.entry.js} +1 -1
- package/dist/ionic/p-6b97f2a3.entry.js +4 -0
- package/dist/ionic/p-71e322f7.entry.js +4 -0
- package/dist/ionic/p-7620be24.entry.js +4 -0
- package/dist/ionic/p-771b27a5.entry.js +4 -0
- package/dist/ionic/{p-906bb44d.entry.js → p-7ca71c83.entry.js} +1 -1
- package/dist/ionic/{p-11aa58d6.entry.js → p-80cac7a2.entry.js} +1 -1
- package/dist/ionic/p-96a2e768.entry.js +4 -0
- package/dist/ionic/{p-582824c5.entry.js → p-9833cf63.entry.js} +1 -1
- package/dist/ionic/p-9cbc6f1f.entry.js +4 -0
- package/dist/ionic/p-9cdbabbb.entry.js +4 -0
- package/dist/ionic/p-9eac4eb1.entry.js +4 -0
- package/dist/ionic/{p-675b1a31.entry.js → p-9fae83d8.entry.js} +1 -1
- package/dist/ionic/p-B8xlpH8p.js +4 -0
- package/dist/ionic/{p-C7hRNDhM.js → p-BAt5H1ac.js} +1 -1
- package/dist/ionic/p-BW_TRJm8.js +4 -0
- package/dist/ionic/{p-DDb5r57F.js → p-Bum7H1fw.js} +1 -1
- package/dist/ionic/p-BvFYtOdE.js +4 -0
- package/dist/ionic/{p-Dc45iWE4.js → p-BxIcPWoV.js} +1 -1
- package/dist/ionic/p-C0JvVFMv.js +4 -0
- package/dist/ionic/{p-CTfR9YZG.js → p-CGmVTdWh.js} +1 -1
- package/dist/ionic/{p-BOVrCkpJ.js → p-CYbRmDdy.js} +1 -1
- package/dist/ionic/{p-MUoJJJwd.js → p-CYvM5g3q.js} +1 -1
- package/dist/ionic/p-CmFz1Mjc.js +4 -0
- package/dist/ionic/p-CtA-yJYy.js +4 -0
- package/dist/ionic/p-D8HJQ1qq.js +4 -0
- package/dist/ionic/{p-B0q1YL7N.js → p-DB_iPQC-.js} +1 -1
- package/dist/ionic/{p-DNcfiJwE.js → p-DLbbmF9h.js} +1 -1
- package/dist/ionic/p-DTPR1Wpn.js +4 -0
- package/dist/ionic/p-DjriolRs.js +4 -0
- package/dist/ionic/p-DtVZDHlS.js +4 -0
- package/dist/ionic/p-IGIE5vDm.js +5 -0
- package/dist/ionic/{p-BFvmZNyx.js → p-NFFyoJ4Q.js} +1 -1
- package/dist/ionic/p-a805674e.entry.js +4 -0
- package/dist/ionic/{p-da7d04cc.entry.js → p-a84f2d21.entry.js} +1 -1
- package/dist/ionic/p-aa47f46e.entry.js +4 -0
- package/dist/ionic/{p-2668188b.entry.js → p-b325a113.entry.js} +1 -1
- package/dist/ionic/{p-d1f54e28.entry.js → p-b440381f.entry.js} +1 -1
- package/dist/ionic/p-b6e0ff03.entry.js +4 -0
- package/dist/ionic/{p-6f37536a.entry.js → p-bcaa827e.entry.js} +1 -1
- package/dist/ionic/{p-fb0271ae.entry.js → p-c3cce9d8.entry.js} +1 -1
- package/dist/ionic/{p-b0a7585c.entry.js → p-ca31010f.entry.js} +1 -1
- package/dist/ionic/p-d4e8b473.entry.js +4 -0
- package/dist/ionic/{p-9575b654.entry.js → p-e663bc5a.entry.js} +1 -1
- package/dist/ionic/p-e6c5f060.entry.js +4 -0
- package/dist/ionic/{p-652318c3.entry.js → p-e6cedcd7.entry.js} +1 -1
- package/dist/ionic/{p-fbb00634.entry.js → p-e863ffe8.entry.js} +1 -1
- package/dist/ionic/{p-0ca0fe9c.entry.js → p-f2deaceb.entry.js} +1 -1
- package/dist/ionic/{p-ac4eb91d.entry.js → p-f5dfb9a3.entry.js} +1 -1
- package/dist/ionic/{p-bce86e56.entry.js → p-f8186550.entry.js} +1 -1
- package/dist/ionic/p-fdbc90d4.entry.js +4 -0
- package/dist/ionic/p-gbVXD275.js +4 -0
- package/dist/ionic/p-hNN3VvaC.js +4 -0
- package/dist/types/components/datetime/datetime.d.ts +10 -0
- package/dist/types/components/header/header.utils.d.ts +2 -1
- package/dist/types/components/item/item.d.ts +2 -0
- package/dist/types/components/item-divider/item-divider.d.ts +3 -0
- package/dist/types/components/item-option/item-option.d.ts +2 -0
- package/dist/types/components/list-header/list-header.d.ts +2 -0
- package/dist/types/components/modal/gestures/sheet.d.ts +2 -2
- package/dist/types/components/modal/gestures/swipe-to-close.d.ts +2 -2
- package/dist/types/components/modal/modal-interface.d.ts +25 -0
- package/dist/types/components/modal/modal.d.ts +22 -1
- package/dist/types/components/range/range-interface.d.ts +1 -0
- package/dist/types/components/range/range.d.ts +44 -4
- package/dist/types/components/refresher/refresher-interface.d.ts +7 -0
- package/dist/types/components/refresher/refresher.d.ts +16 -3
- package/dist/types/components/segment-view/segment-view.d.ts +4 -0
- package/dist/types/components/select/select.d.ts +3 -0
- package/dist/types/components/select-modal/select-modal.d.ts +4 -0
- package/dist/types/components.d.ts +964 -191
- package/dist/types/interface.d.ts +2 -2
- package/dist/types/stencil-public-runtime.d.ts +126 -14
- package/dist/types/utils/gesture/listener.d.ts +2 -1
- package/hydrate/index.d.ts +12 -0
- package/hydrate/index.js +5632 -1421
- package/hydrate/index.mjs +5631 -1422
- package/package.json +2 -2
- package/components/p-B25GjpND.js +0 -71
- package/components/p-BANeLH_G.js +0 -290
- package/components/p-BBFQmhcD.js +0 -59
- package/components/p-BC-awmYt.js +0 -306
- package/components/p-BHbOsu99.js +0 -501
- package/components/p-BTlwXR9e.js +0 -73
- package/components/p-BcazQttQ.js +0 -612
- package/components/p-BdGshsIJ.js +0 -226
- package/components/p-BfS7vSpC.js +0 -147
- package/components/p-BhRFCLuX.js +0 -675
- package/components/p-Bhnhnzjz.js +0 -75
- package/components/p-BmcqD0EN.js +0 -153
- package/components/p-Boi6hecl.js +0 -115
- package/components/p-Bt_moUyl.js +0 -232
- package/components/p-Bxl5etF4.js +0 -146
- package/components/p-ByjmWt3s.js +0 -139
- package/components/p-C04oPyjT.js +0 -54
- package/components/p-C6dkQWq2.js +0 -1626
- package/components/p-CFZWrvIQ.js +0 -194
- package/components/p-CIJwkzL6.js +0 -195
- package/components/p-CL12ApCQ.js +0 -820
- package/components/p-CXJR56Oq.js +0 -564
- package/components/p-Cdm3dKWf.js +0 -108
- package/components/p-CslsoGzv.js +0 -192
- package/components/p-Cyd00tgZ.js +0 -167
- package/components/p-CzAJ3ArC.js +0 -380
- package/components/p-CzW34QBh.js +0 -12
- package/components/p-D0zXRwcr.js +0 -196
- package/components/p-D5hF6rwn.js +0 -339
- package/components/p-D8eD2iBA.js +0 -67
- package/components/p-DGOrLIyS.js +0 -481
- package/components/p-DK2Bn1Mc.js +0 -305
- package/components/p-DKRQWlK2.js +0 -598
- package/components/p-DNDUsygf.js +0 -128
- package/components/p-DTWZF6wg.js +0 -418
- package/components/p-DWoUQeZ3.js +0 -3012
- package/components/p-DX0w75a9.js +0 -420
- package/components/p-Dt8zaCLQ.js +0 -92
- package/components/p-DyFBFrV7.js +0 -264
- package/components/p-DyHPCMyn.js +0 -39
- package/components/p-LgLeKTkH.js +0 -112
- package/components/p-NhiRFRn9.js +0 -50
- package/components/p-OuiHmXO5.js +0 -646
- package/components/p-Wro9IPHE.js +0 -459
- package/components/p-aIWC4ZEV.js +0 -305
- package/components/p-c-XJ9XhZ.js +0 -915
- package/components/p-fVuFT3Wd.js +0 -78
- package/components/p-iyo0Toaz.js +0 -2822
- package/components/p-l_lso3Zl.js +0 -140
- package/components/p-mQp4lwQD.js +0 -1638
- package/dist/cjs/app-globals-Ciccnk9_.js +0 -10
- package/dist/esm/app-globals-BDSf8fOA.js +0 -8
- package/dist/ionic/p-11518b31.entry.js +0 -4
- package/dist/ionic/p-221a3d8c.entry.js +0 -4
- package/dist/ionic/p-2ac254dc.entry.js +0 -4
- package/dist/ionic/p-2bd1ea35.entry.js +0 -4
- package/dist/ionic/p-30333874.entry.js +0 -4
- package/dist/ionic/p-31db96da.entry.js +0 -4
- package/dist/ionic/p-34642fa1.entry.js +0 -4
- package/dist/ionic/p-35696017.entry.js +0 -4
- package/dist/ionic/p-363d1209.entry.js +0 -4
- package/dist/ionic/p-46a38cfd.entry.js +0 -4
- package/dist/ionic/p-4eec1a5e.entry.js +0 -4
- package/dist/ionic/p-530fcd71.entry.js +0 -4
- package/dist/ionic/p-5d6fb6e3.entry.js +0 -4
- package/dist/ionic/p-66fbe052.entry.js +0 -4
- package/dist/ionic/p-7babec72.entry.js +0 -4
- package/dist/ionic/p-82d5bb3d.entry.js +0 -4
- package/dist/ionic/p-97eb0812.entry.js +0 -4
- package/dist/ionic/p-9b6d46f2.entry.js +0 -4
- package/dist/ionic/p-BKc55Xev.js +0 -4
- package/dist/ionic/p-Bmgaetn_.js +0 -4
- package/dist/ionic/p-C8IsBmNU.js +0 -5
- package/dist/ionic/p-CJxh_yLS.js +0 -4
- package/dist/ionic/p-DZRJwG4S.js +0 -4
- package/dist/ionic/p-a4a9f5ae.entry.js +0 -4
- package/dist/ionic/p-b0ebf9f8.entry.js +0 -4
- package/dist/ionic/p-be263062.entry.js +0 -4
- package/dist/ionic/p-c175d792.entry.js +0 -4
- package/dist/ionic/p-cc2a9936.entry.js +0 -4
- package/dist/ionic/p-cc45bcbc.entry.js +0 -4
- package/dist/ionic/p-d0a2a1ab.entry.js +0 -4
- package/dist/ionic/p-e4c57008.entry.js +0 -4
- package/dist/ionic/p-e5d6d0f0.entry.js +0 -4
- package/dist/ionic/p-f1dfee25.entry.js +0 -4
- package/dist/ionic/p-f9f7b9db.entry.js +0 -4
package/components/p-DNDUsygf.js
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
-
*/
|
|
4
|
-
import { c as componentOnReady } from './p-D5hF6rwn.js';
|
|
5
|
-
import { t as printRequiredElementError } from './p-DWoUQeZ3.js';
|
|
6
|
-
|
|
7
|
-
const ION_CONTENT_TAG_NAME = 'ION-CONTENT';
|
|
8
|
-
const ION_CONTENT_ELEMENT_SELECTOR = 'ion-content';
|
|
9
|
-
const ION_CONTENT_CLASS_SELECTOR = '.ion-content-scroll-host';
|
|
10
|
-
/**
|
|
11
|
-
* Selector used for implementations reliant on `<ion-content>` for scroll event changes.
|
|
12
|
-
*
|
|
13
|
-
* Developers should use the `.ion-content-scroll-host` selector to target the element emitting
|
|
14
|
-
* scroll events. With virtual scroll implementations this will be the host element for
|
|
15
|
-
* the scroll viewport.
|
|
16
|
-
*/
|
|
17
|
-
const ION_CONTENT_SELECTOR = `${ION_CONTENT_ELEMENT_SELECTOR}, ${ION_CONTENT_CLASS_SELECTOR}`;
|
|
18
|
-
const isIonContent = (el) => el.tagName === ION_CONTENT_TAG_NAME;
|
|
19
|
-
/**
|
|
20
|
-
* Waits for the element host fully initialize before
|
|
21
|
-
* returning the inner scroll element.
|
|
22
|
-
*
|
|
23
|
-
* For `ion-content` the scroll target will be the result
|
|
24
|
-
* of the `getScrollElement` function.
|
|
25
|
-
*
|
|
26
|
-
* For custom implementations it will be the element host
|
|
27
|
-
* or a selector within the host, if supplied through `scrollTarget`.
|
|
28
|
-
*/
|
|
29
|
-
const getScrollElement = async (el) => {
|
|
30
|
-
if (isIonContent(el)) {
|
|
31
|
-
await new Promise((resolve) => componentOnReady(el, resolve));
|
|
32
|
-
return el.getScrollElement();
|
|
33
|
-
}
|
|
34
|
-
return el;
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Queries the element matching the selector for IonContent.
|
|
38
|
-
* See ION_CONTENT_SELECTOR for the selector used.
|
|
39
|
-
*/
|
|
40
|
-
const findIonContent = (el) => {
|
|
41
|
-
/**
|
|
42
|
-
* First we try to query the custom scroll host selector in cases where
|
|
43
|
-
* the implementation is using an outer `ion-content` with an inner custom
|
|
44
|
-
* scroll container.
|
|
45
|
-
*/
|
|
46
|
-
const customContentHost = el.querySelector(ION_CONTENT_CLASS_SELECTOR);
|
|
47
|
-
if (customContentHost) {
|
|
48
|
-
return customContentHost;
|
|
49
|
-
}
|
|
50
|
-
return el.querySelector(ION_CONTENT_SELECTOR);
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Queries the closest element matching the selector for IonContent.
|
|
54
|
-
*/
|
|
55
|
-
const findClosestIonContent = (el) => {
|
|
56
|
-
return el.closest(ION_CONTENT_SELECTOR);
|
|
57
|
-
};
|
|
58
|
-
/**
|
|
59
|
-
* Scrolls to the top of the element. If an `ion-content` is found, it will scroll
|
|
60
|
-
* using the public API `scrollToTop` with a duration.
|
|
61
|
-
*/
|
|
62
|
-
const scrollToTop = (el, durationMs) => {
|
|
63
|
-
if (isIonContent(el)) {
|
|
64
|
-
const content = el;
|
|
65
|
-
return content.scrollToTop(durationMs);
|
|
66
|
-
}
|
|
67
|
-
return Promise.resolve(el.scrollTo({
|
|
68
|
-
top: 0,
|
|
69
|
-
left: 0,
|
|
70
|
-
behavior: 'smooth' ,
|
|
71
|
-
}));
|
|
72
|
-
};
|
|
73
|
-
/**
|
|
74
|
-
* Scrolls by a specified X/Y distance in the component. If an `ion-content` is found, it will scroll
|
|
75
|
-
* using the public API `scrollByPoint` with a duration.
|
|
76
|
-
*/
|
|
77
|
-
const scrollByPoint = (el, x, y, durationMs) => {
|
|
78
|
-
if (isIonContent(el)) {
|
|
79
|
-
const content = el;
|
|
80
|
-
return content.scrollByPoint(x, y, durationMs);
|
|
81
|
-
}
|
|
82
|
-
return Promise.resolve(el.scrollBy({
|
|
83
|
-
top: y,
|
|
84
|
-
left: x,
|
|
85
|
-
behavior: durationMs > 0 ? 'smooth' : 'auto',
|
|
86
|
-
}));
|
|
87
|
-
};
|
|
88
|
-
/**
|
|
89
|
-
* Prints an error informing developers that an implementation requires an element to be used
|
|
90
|
-
* within either the `ion-content` selector or the `.ion-content-scroll-host` class.
|
|
91
|
-
*/
|
|
92
|
-
const printIonContentErrorMsg = (el) => {
|
|
93
|
-
return printRequiredElementError(el, ION_CONTENT_ELEMENT_SELECTOR);
|
|
94
|
-
};
|
|
95
|
-
/**
|
|
96
|
-
* Several components in Ionic need to prevent scrolling
|
|
97
|
-
* during a gesture (card modal, range, item sliding, etc).
|
|
98
|
-
* Use this utility to account for ion-content and custom content hosts.
|
|
99
|
-
*/
|
|
100
|
-
const disableContentScrollY = (contentEl) => {
|
|
101
|
-
if (isIonContent(contentEl)) {
|
|
102
|
-
const ionContent = contentEl;
|
|
103
|
-
const initialScrollY = ionContent.scrollY;
|
|
104
|
-
ionContent.scrollY = false;
|
|
105
|
-
/**
|
|
106
|
-
* This should be passed into resetContentScrollY
|
|
107
|
-
* so that we can revert ion-content's scrollY to the
|
|
108
|
-
* correct state. For example, if scrollY = false
|
|
109
|
-
* initially, we do not want to enable scrolling
|
|
110
|
-
* when we call resetContentScrollY.
|
|
111
|
-
*/
|
|
112
|
-
return initialScrollY;
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
contentEl.style.setProperty('overflow', 'hidden');
|
|
116
|
-
return true;
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
const resetContentScrollY = (contentEl, initialScrollY) => {
|
|
120
|
-
if (isIonContent(contentEl)) {
|
|
121
|
-
contentEl.scrollY = initialScrollY;
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
contentEl.style.removeProperty('overflow');
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
export { ION_CONTENT_CLASS_SELECTOR as I, findClosestIonContent as a, ION_CONTENT_ELEMENT_SELECTOR as b, scrollByPoint as c, disableContentScrollY as d, findIonContent as f, getScrollElement as g, isIonContent as i, printIonContentErrorMsg as p, resetContentScrollY as r, scrollToTop as s };
|
package/components/p-DTWZF6wg.js
DELETED
|
@@ -1,418 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
-
*/
|
|
4
|
-
import { c as config, f as printIonWarning, w as writeTask, B as Build } from './p-DWoUQeZ3.js';
|
|
5
|
-
import { r as raf } from './p-D5hF6rwn.js';
|
|
6
|
-
|
|
7
|
-
const LIFECYCLE_WILL_ENTER = 'ionViewWillEnter';
|
|
8
|
-
const LIFECYCLE_DID_ENTER = 'ionViewDidEnter';
|
|
9
|
-
const LIFECYCLE_WILL_LEAVE = 'ionViewWillLeave';
|
|
10
|
-
const LIFECYCLE_DID_LEAVE = 'ionViewDidLeave';
|
|
11
|
-
const LIFECYCLE_WILL_UNLOAD = 'ionViewWillUnload';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Moves focus to a specified element. Note that we do not remove the tabindex
|
|
15
|
-
* because that can result in an unintentional blur. Non-focusables can't be
|
|
16
|
-
* focused, so the body will get focused again.
|
|
17
|
-
*/
|
|
18
|
-
const moveFocus = (el) => {
|
|
19
|
-
el.tabIndex = -1;
|
|
20
|
-
el.focus();
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Elements that are hidden using `display: none` should not be focused even if
|
|
24
|
-
* they are present in the DOM.
|
|
25
|
-
*/
|
|
26
|
-
const isVisible = (el) => {
|
|
27
|
-
return el.offsetParent !== null;
|
|
28
|
-
};
|
|
29
|
-
/**
|
|
30
|
-
* The focus controller allows us to manage focus within a view so assistive
|
|
31
|
-
* technologies can inform users of changes to the navigation state. Traditional
|
|
32
|
-
* native apps have a way of informing assistive technology about a navigation
|
|
33
|
-
* state change. Mobile browsers have this too, but only when doing a full page
|
|
34
|
-
* load. In a single page app we do not do that, so we need to build this
|
|
35
|
-
* integration ourselves.
|
|
36
|
-
*/
|
|
37
|
-
const createFocusController = () => {
|
|
38
|
-
const saveViewFocus = (referenceEl) => {
|
|
39
|
-
const focusManagerEnabled = config.get('focusManagerPriority', false);
|
|
40
|
-
/**
|
|
41
|
-
* When going back to a previously visited page focus should typically be moved
|
|
42
|
-
* back to the element that was last focused when the user was on this view.
|
|
43
|
-
*/
|
|
44
|
-
if (focusManagerEnabled) {
|
|
45
|
-
const activeEl = document.activeElement;
|
|
46
|
-
if (activeEl !== null && (referenceEl === null || referenceEl === void 0 ? void 0 : referenceEl.contains(activeEl))) {
|
|
47
|
-
activeEl.setAttribute(LAST_FOCUS, 'true');
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
const setViewFocus = (referenceEl) => {
|
|
52
|
-
const focusManagerPriorities = config.get('focusManagerPriority', false);
|
|
53
|
-
/**
|
|
54
|
-
* If the focused element is a descendant of the referenceEl then it's possible
|
|
55
|
-
* that the app developer manually moved focus, so we do not want to override that.
|
|
56
|
-
* This can happen with inputs the are focused when a view transitions in.
|
|
57
|
-
*/
|
|
58
|
-
if (Array.isArray(focusManagerPriorities) && !referenceEl.contains(document.activeElement)) {
|
|
59
|
-
/**
|
|
60
|
-
* When going back to a previously visited view focus should always be moved back
|
|
61
|
-
* to the element that the user was last focused on when they were on this view.
|
|
62
|
-
*/
|
|
63
|
-
const lastFocus = referenceEl.querySelector(`[${LAST_FOCUS}]`);
|
|
64
|
-
if (lastFocus && isVisible(lastFocus)) {
|
|
65
|
-
moveFocus(lastFocus);
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
for (const priority of focusManagerPriorities) {
|
|
69
|
-
/**
|
|
70
|
-
* For each recognized case (excluding the default case) make sure to return
|
|
71
|
-
* so that the fallback focus behavior does not run.
|
|
72
|
-
*
|
|
73
|
-
* We intentionally query for specific roles/semantic elements so that the
|
|
74
|
-
* transition manager can work with both Ionic and non-Ionic UI components.
|
|
75
|
-
*
|
|
76
|
-
* If new selectors are added, be sure to remove the outline ring by adding
|
|
77
|
-
* new selectors to rule in core.scss.
|
|
78
|
-
*/
|
|
79
|
-
switch (priority) {
|
|
80
|
-
case 'content':
|
|
81
|
-
const content = referenceEl.querySelector('main, [role="main"]');
|
|
82
|
-
if (content && isVisible(content)) {
|
|
83
|
-
moveFocus(content);
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
break;
|
|
87
|
-
case 'heading':
|
|
88
|
-
const headingOne = referenceEl.querySelector('h1, [role="heading"][aria-level="1"]');
|
|
89
|
-
if (headingOne && isVisible(headingOne)) {
|
|
90
|
-
moveFocus(headingOne);
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
break;
|
|
94
|
-
case 'banner':
|
|
95
|
-
const header = referenceEl.querySelector('header, [role="banner"]');
|
|
96
|
-
if (header && isVisible(header)) {
|
|
97
|
-
moveFocus(header);
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
break;
|
|
101
|
-
default:
|
|
102
|
-
printIonWarning(`Unrecognized focus manager priority value ${priority}`);
|
|
103
|
-
break;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* If there is nothing to focus then focus the page so focus at least moves to
|
|
108
|
-
* the correct view. The browser will then determine where within the page to
|
|
109
|
-
* move focus to.
|
|
110
|
-
*/
|
|
111
|
-
moveFocus(referenceEl);
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
return {
|
|
115
|
-
saveViewFocus,
|
|
116
|
-
setViewFocus,
|
|
117
|
-
};
|
|
118
|
-
};
|
|
119
|
-
const LAST_FOCUS = 'ion-last-focus';
|
|
120
|
-
|
|
121
|
-
const iosTransitionAnimation = () => import('./p-BhRFCLuX.js');
|
|
122
|
-
const mdTransitionAnimation = () => import('./p-C04oPyjT.js');
|
|
123
|
-
const focusController = createFocusController();
|
|
124
|
-
// TODO(FW-2832): types
|
|
125
|
-
/**
|
|
126
|
-
* Executes the main page transition.
|
|
127
|
-
* It also manages the lifecycle of header visibility (if any)
|
|
128
|
-
* to prevent visual flickering in iOS. The flickering only
|
|
129
|
-
* occurs for a condensed header that is placed above the content.
|
|
130
|
-
*
|
|
131
|
-
* @param opts Options for the transition.
|
|
132
|
-
* @returns A promise that resolves when the transition is complete.
|
|
133
|
-
*/
|
|
134
|
-
const transition = (opts) => {
|
|
135
|
-
return new Promise((resolve, reject) => {
|
|
136
|
-
writeTask(() => {
|
|
137
|
-
const transitioningInactiveHeader = getIosIonHeader(opts);
|
|
138
|
-
beforeTransition(opts, transitioningInactiveHeader);
|
|
139
|
-
runTransition(opts)
|
|
140
|
-
.then((result) => {
|
|
141
|
-
if (result.animation) {
|
|
142
|
-
result.animation.destroy();
|
|
143
|
-
}
|
|
144
|
-
afterTransition(opts);
|
|
145
|
-
resolve(result);
|
|
146
|
-
}, (error) => {
|
|
147
|
-
afterTransition(opts);
|
|
148
|
-
reject(error);
|
|
149
|
-
})
|
|
150
|
-
.finally(() => {
|
|
151
|
-
// Ensure that the header is restored to its original state.
|
|
152
|
-
setHeaderTransitionClass(transitioningInactiveHeader, false);
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
};
|
|
157
|
-
const beforeTransition = (opts, transitioningInactiveHeader) => {
|
|
158
|
-
const enteringEl = opts.enteringEl;
|
|
159
|
-
const leavingEl = opts.leavingEl;
|
|
160
|
-
focusController.saveViewFocus(leavingEl);
|
|
161
|
-
setZIndex(enteringEl, leavingEl, opts.direction);
|
|
162
|
-
// Prevent flickering of the header by adding a class.
|
|
163
|
-
setHeaderTransitionClass(transitioningInactiveHeader, true);
|
|
164
|
-
if (opts.showGoBack) {
|
|
165
|
-
enteringEl.classList.add('can-go-back');
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
enteringEl.classList.remove('can-go-back');
|
|
169
|
-
}
|
|
170
|
-
setPageHidden(enteringEl, false);
|
|
171
|
-
/**
|
|
172
|
-
* When transitioning, the page should not
|
|
173
|
-
* respond to click events. This resolves small
|
|
174
|
-
* issues like users double tapping the ion-back-button.
|
|
175
|
-
* These pointer events are removed in `afterTransition`.
|
|
176
|
-
*/
|
|
177
|
-
enteringEl.style.setProperty('pointer-events', 'none');
|
|
178
|
-
if (leavingEl) {
|
|
179
|
-
setPageHidden(leavingEl, false);
|
|
180
|
-
leavingEl.style.setProperty('pointer-events', 'none');
|
|
181
|
-
}
|
|
182
|
-
};
|
|
183
|
-
const runTransition = async (opts) => {
|
|
184
|
-
const animationBuilder = await getAnimationBuilder(opts);
|
|
185
|
-
const ani = animationBuilder && Build.isBrowser ? animation(animationBuilder, opts) : noAnimation(opts); // fast path for no animation
|
|
186
|
-
return ani;
|
|
187
|
-
};
|
|
188
|
-
const afterTransition = (opts) => {
|
|
189
|
-
const enteringEl = opts.enteringEl;
|
|
190
|
-
const leavingEl = opts.leavingEl;
|
|
191
|
-
enteringEl.classList.remove('ion-page-invisible');
|
|
192
|
-
enteringEl.style.removeProperty('pointer-events');
|
|
193
|
-
if (leavingEl !== undefined) {
|
|
194
|
-
leavingEl.classList.remove('ion-page-invisible');
|
|
195
|
-
leavingEl.style.removeProperty('pointer-events');
|
|
196
|
-
}
|
|
197
|
-
focusController.setViewFocus(enteringEl);
|
|
198
|
-
};
|
|
199
|
-
const getAnimationBuilder = async (opts) => {
|
|
200
|
-
if (!opts.leavingEl || !opts.animated || opts.duration === 0) {
|
|
201
|
-
return undefined;
|
|
202
|
-
}
|
|
203
|
-
if (opts.animationBuilder) {
|
|
204
|
-
return opts.animationBuilder;
|
|
205
|
-
}
|
|
206
|
-
const getAnimation = opts.mode === 'ios'
|
|
207
|
-
? (await iosTransitionAnimation()).iosTransitionAnimation
|
|
208
|
-
: (await mdTransitionAnimation()).mdTransitionAnimation;
|
|
209
|
-
return getAnimation;
|
|
210
|
-
};
|
|
211
|
-
const animation = async (animationBuilder, opts) => {
|
|
212
|
-
await waitForReady(opts, true);
|
|
213
|
-
const trans = animationBuilder(opts.baseEl, opts);
|
|
214
|
-
fireWillEvents(opts.enteringEl, opts.leavingEl);
|
|
215
|
-
const didComplete = await playTransition(trans, opts);
|
|
216
|
-
if (opts.progressCallback) {
|
|
217
|
-
opts.progressCallback(undefined);
|
|
218
|
-
}
|
|
219
|
-
if (didComplete) {
|
|
220
|
-
fireDidEvents(opts.enteringEl, opts.leavingEl);
|
|
221
|
-
}
|
|
222
|
-
return {
|
|
223
|
-
hasCompleted: didComplete,
|
|
224
|
-
animation: trans,
|
|
225
|
-
};
|
|
226
|
-
};
|
|
227
|
-
const noAnimation = async (opts) => {
|
|
228
|
-
const enteringEl = opts.enteringEl;
|
|
229
|
-
const leavingEl = opts.leavingEl;
|
|
230
|
-
const focusManagerEnabled = config.get('focusManagerPriority', false);
|
|
231
|
-
/**
|
|
232
|
-
* If the focus manager is enabled then we need to wait for Ionic components to be
|
|
233
|
-
* rendered otherwise the component to focus may not be focused because it is hidden.
|
|
234
|
-
*/
|
|
235
|
-
await waitForReady(opts, focusManagerEnabled);
|
|
236
|
-
fireWillEvents(enteringEl, leavingEl);
|
|
237
|
-
fireDidEvents(enteringEl, leavingEl);
|
|
238
|
-
return {
|
|
239
|
-
hasCompleted: true,
|
|
240
|
-
};
|
|
241
|
-
};
|
|
242
|
-
const waitForReady = async (opts, defaultDeep) => {
|
|
243
|
-
const deep = opts.deepWait !== undefined ? opts.deepWait : defaultDeep;
|
|
244
|
-
if (deep) {
|
|
245
|
-
await Promise.all([deepReady(opts.enteringEl), deepReady(opts.leavingEl)]);
|
|
246
|
-
}
|
|
247
|
-
await notifyViewReady(opts.viewIsReady, opts.enteringEl);
|
|
248
|
-
};
|
|
249
|
-
const notifyViewReady = async (viewIsReady, enteringEl) => {
|
|
250
|
-
if (viewIsReady) {
|
|
251
|
-
await viewIsReady(enteringEl);
|
|
252
|
-
}
|
|
253
|
-
};
|
|
254
|
-
const playTransition = (trans, opts) => {
|
|
255
|
-
const progressCallback = opts.progressCallback;
|
|
256
|
-
const promise = new Promise((resolve) => {
|
|
257
|
-
trans.onFinish((currentStep) => resolve(currentStep === 1));
|
|
258
|
-
});
|
|
259
|
-
// cool, let's do this, start the transition
|
|
260
|
-
if (progressCallback) {
|
|
261
|
-
// this is a swipe to go back, just get the transition progress ready
|
|
262
|
-
// kick off the swipe animation start
|
|
263
|
-
trans.progressStart(true);
|
|
264
|
-
progressCallback(trans);
|
|
265
|
-
}
|
|
266
|
-
else {
|
|
267
|
-
// only the top level transition should actually start "play"
|
|
268
|
-
// kick it off and let it play through
|
|
269
|
-
// ******** DOM WRITE ****************
|
|
270
|
-
trans.play();
|
|
271
|
-
}
|
|
272
|
-
// create a callback for when the animation is done
|
|
273
|
-
return promise;
|
|
274
|
-
};
|
|
275
|
-
const fireWillEvents = (enteringEl, leavingEl) => {
|
|
276
|
-
lifecycle(leavingEl, LIFECYCLE_WILL_LEAVE);
|
|
277
|
-
lifecycle(enteringEl, LIFECYCLE_WILL_ENTER);
|
|
278
|
-
};
|
|
279
|
-
const fireDidEvents = (enteringEl, leavingEl) => {
|
|
280
|
-
lifecycle(enteringEl, LIFECYCLE_DID_ENTER);
|
|
281
|
-
lifecycle(leavingEl, LIFECYCLE_DID_LEAVE);
|
|
282
|
-
};
|
|
283
|
-
const lifecycle = (el, eventName) => {
|
|
284
|
-
if (el) {
|
|
285
|
-
const ev = new CustomEvent(eventName, {
|
|
286
|
-
bubbles: false,
|
|
287
|
-
cancelable: false,
|
|
288
|
-
});
|
|
289
|
-
el.dispatchEvent(ev);
|
|
290
|
-
}
|
|
291
|
-
};
|
|
292
|
-
/**
|
|
293
|
-
* Wait two request animation frame loops.
|
|
294
|
-
* This allows the framework implementations enough time to mount
|
|
295
|
-
* the user-defined contents. This is often needed when using inline
|
|
296
|
-
* modals and popovers that accept user components. For popover,
|
|
297
|
-
* the contents must be mounted for the popover to be sized correctly.
|
|
298
|
-
* For modals, the contents must be mounted for iOS to run the
|
|
299
|
-
* transition correctly.
|
|
300
|
-
*
|
|
301
|
-
* On Angular and React, a single raf is enough time, but for Vue
|
|
302
|
-
* we need to wait two rafs. As a result we are using two rafs for
|
|
303
|
-
* all frameworks to ensure contents are mounted.
|
|
304
|
-
*/
|
|
305
|
-
const waitForMount = () => {
|
|
306
|
-
return new Promise((resolve) => raf(() => raf(() => resolve())));
|
|
307
|
-
};
|
|
308
|
-
const deepReady = async (el) => {
|
|
309
|
-
const element = el;
|
|
310
|
-
if (element) {
|
|
311
|
-
if (element.componentOnReady != null) {
|
|
312
|
-
// eslint-disable-next-line custom-rules/no-component-on-ready-method
|
|
313
|
-
const stencilEl = await element.componentOnReady();
|
|
314
|
-
if (stencilEl != null) {
|
|
315
|
-
return;
|
|
316
|
-
}
|
|
317
|
-
/**
|
|
318
|
-
* Custom elements in Stencil will have __registerHost.
|
|
319
|
-
*/
|
|
320
|
-
}
|
|
321
|
-
else if (element.__registerHost != null) {
|
|
322
|
-
/**
|
|
323
|
-
* Non-lazy loaded custom elements need to wait
|
|
324
|
-
* one frame for component to be loaded.
|
|
325
|
-
*/
|
|
326
|
-
const waitForCustomElement = new Promise((resolve) => raf(resolve));
|
|
327
|
-
await waitForCustomElement;
|
|
328
|
-
return;
|
|
329
|
-
}
|
|
330
|
-
await Promise.all(Array.from(element.children).map(deepReady));
|
|
331
|
-
}
|
|
332
|
-
};
|
|
333
|
-
const setPageHidden = (el, hidden) => {
|
|
334
|
-
if (hidden) {
|
|
335
|
-
el.setAttribute('aria-hidden', 'true');
|
|
336
|
-
el.classList.add('ion-page-hidden');
|
|
337
|
-
}
|
|
338
|
-
else {
|
|
339
|
-
el.hidden = false;
|
|
340
|
-
el.removeAttribute('aria-hidden');
|
|
341
|
-
el.classList.remove('ion-page-hidden');
|
|
342
|
-
}
|
|
343
|
-
};
|
|
344
|
-
const setZIndex = (enteringEl, leavingEl, direction) => {
|
|
345
|
-
if (enteringEl !== undefined) {
|
|
346
|
-
enteringEl.style.zIndex = direction === 'back' ? '99' : '101';
|
|
347
|
-
}
|
|
348
|
-
if (leavingEl !== undefined) {
|
|
349
|
-
leavingEl.style.zIndex = '100';
|
|
350
|
-
}
|
|
351
|
-
};
|
|
352
|
-
/**
|
|
353
|
-
* Add a class to ensure that the header (if any)
|
|
354
|
-
* does not flicker during the transition. By adding the
|
|
355
|
-
* transitioning class, we ensure that the header has
|
|
356
|
-
* the necessary styles to prevent the following flickers:
|
|
357
|
-
* 1. When entering a page with a condensed header, the
|
|
358
|
-
* header should never be visible. However,
|
|
359
|
-
* it briefly renders the background color while
|
|
360
|
-
* the transition is occurring.
|
|
361
|
-
* 2. When leaving a page with a condensed header, the
|
|
362
|
-
* header has an opacity of 0 and the pages
|
|
363
|
-
* have a z-index which causes the entering page to
|
|
364
|
-
* briefly show it's content underneath the leaving page.
|
|
365
|
-
* 3. When entering a page or leaving a page with a fade
|
|
366
|
-
* header, the header should not have a background color.
|
|
367
|
-
* However, it briefly shows the background color while
|
|
368
|
-
* the transition is occurring.
|
|
369
|
-
*
|
|
370
|
-
* @param header The header element to modify.
|
|
371
|
-
* @param isTransitioning Whether the transition is occurring.
|
|
372
|
-
*/
|
|
373
|
-
const setHeaderTransitionClass = (header, isTransitioning) => {
|
|
374
|
-
if (!header) {
|
|
375
|
-
return;
|
|
376
|
-
}
|
|
377
|
-
const transitionClass = 'header-transitioning';
|
|
378
|
-
if (isTransitioning) {
|
|
379
|
-
header.classList.add(transitionClass);
|
|
380
|
-
}
|
|
381
|
-
else {
|
|
382
|
-
header.classList.remove(transitionClass);
|
|
383
|
-
}
|
|
384
|
-
};
|
|
385
|
-
const getIonPageElement = (element) => {
|
|
386
|
-
if (element.classList.contains('ion-page')) {
|
|
387
|
-
return element;
|
|
388
|
-
}
|
|
389
|
-
const ionPage = element.querySelector(':scope > .ion-page, :scope > ion-nav, :scope > ion-tabs');
|
|
390
|
-
if (ionPage) {
|
|
391
|
-
return ionPage;
|
|
392
|
-
}
|
|
393
|
-
// idk, return the original element so at least something animates and we don't have a null pointer
|
|
394
|
-
return element;
|
|
395
|
-
};
|
|
396
|
-
/**
|
|
397
|
-
* Retrieves the ion-header element from a page based on the
|
|
398
|
-
* direction of the transition.
|
|
399
|
-
*
|
|
400
|
-
* @param opts Options for the transition.
|
|
401
|
-
* @returns The ion-header element or null if not found or not in 'ios' mode.
|
|
402
|
-
*/
|
|
403
|
-
const getIosIonHeader = (opts) => {
|
|
404
|
-
const enteringEl = opts.enteringEl;
|
|
405
|
-
const leavingEl = opts.leavingEl;
|
|
406
|
-
const direction = opts.direction;
|
|
407
|
-
const mode = opts.mode;
|
|
408
|
-
if (mode !== 'ios') {
|
|
409
|
-
return null;
|
|
410
|
-
}
|
|
411
|
-
const element = direction === 'back' ? leavingEl : enteringEl;
|
|
412
|
-
if (!element) {
|
|
413
|
-
return null;
|
|
414
|
-
}
|
|
415
|
-
return element.querySelector('ion-header');
|
|
416
|
-
};
|
|
417
|
-
|
|
418
|
-
export { LIFECYCLE_WILL_ENTER as L, LIFECYCLE_DID_ENTER as a, LIFECYCLE_WILL_LEAVE as b, LIFECYCLE_DID_LEAVE as c, LIFECYCLE_WILL_UNLOAD as d, deepReady as e, getIonPageElement as g, lifecycle as l, setPageHidden as s, transition as t, waitForMount as w };
|