@ionic/core 8.7.18 → 8.7.19-dev.11772655618.1af0949f
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
|
@@ -1,753 +1,4 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { p as proxyCustomElement, H, e as createEvent, w as writeTask, k as readTask, j as printIonError, h, d as Host } from './p-DWoUQeZ3.js';
|
|
5
|
-
import { g as getTimeGivenProgression } from './p-hHmYLOfE.js';
|
|
6
|
-
import { I as ION_CONTENT_CLASS_SELECTOR, b as ION_CONTENT_ELEMENT_SELECTOR, p as printIonContentErrorMsg, g as getScrollElement } from './p-DNDUsygf.js';
|
|
7
|
-
import { t as transitionEndAsync, f as clamp, g as getElementRoot, c as componentOnReady, r as raf } from './p-D5hF6rwn.js';
|
|
8
|
-
import { c as hapticImpact, I as ImpactStyle } from './p-cyNmxje6.js';
|
|
9
|
-
import { b as getIonMode } from './p-Bxl5etF4.js';
|
|
10
|
-
import { s as shouldUseNativeRefresher, t as translateElement, a as setSpinnerOpacity, h as handleScrollWhileRefreshing, b as handleScrollWhilePulling, c as createSnapBackAnimation, d as createPullingAnimation, g as getRefresherAnimationType } from './p-D0zXRwcr.js';
|
|
11
|
-
|
|
12
|
-
const refresherIosCss = "ion-refresher{top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}ion-refresher{inset-inline-start:0}ion-refresher.refresher-active{display:block}ion-refresher-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{-webkit-transform-origin:center;transform-origin:center;-webkit-transition:200ms;transition:200ms;font-size:30px;text-align:center}:host-context([dir=rtl]) .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}[dir=rtl] .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}@supports selector(:dir(rtl)){.refresher-pulling-icon:dir(rtl),.refresher-refreshing-icon:dir(rtl){-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}}.refresher-pulling-text,.refresher-refreshing-text{font-size:16px;text-align:center}ion-refresher-content .arrow-container{display:none}.refresher-pulling ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.refresher-refreshing ion-refresher-content .refresher-refreshing{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-native .refresher-pulling-text,.refresher-native .refresher-refreshing-text{display:none}.refresher-ios .refresher-pulling-icon,.refresher-ios .refresher-refreshing-icon{color:var(--ion-text-color, #000)}.refresher-ios .refresher-pulling-text,.refresher-ios .refresher-refreshing-text{color:var(--ion-text-color, #000)}.refresher-ios .refresher-refreshing .spinner-lines-ios line,.refresher-ios .refresher-refreshing .spinner-lines-small-ios line,.refresher-ios .refresher-refreshing .spinner-crescent circle{stroke:var(--ion-text-color, #000)}.refresher-ios .refresher-refreshing .spinner-bubbles circle,.refresher-ios .refresher-refreshing .spinner-circles circle,.refresher-ios .refresher-refreshing .spinner-dots circle{fill:var(--ion-text-color, #000)}ion-refresher.refresher-native{display:block;z-index:1}ion-refresher.refresher-native ion-spinner{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}.refresher-native .refresher-refreshing ion-spinner{--refreshing-rotation-duration:2s;display:none;-webkit-animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards;animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards}.refresher-native .refresher-refreshing{display:none;-webkit-animation:250ms linear refresher-pop forwards;animation:250ms linear refresher-pop forwards}.refresher-native ion-spinner{width:32px;height:32px;color:var(--ion-color-step-450, var(--ion-background-color-step-450, #747577))}.refresher-native.refresher-refreshing .refresher-pulling ion-spinner,.refresher-native.refresher-completing .refresher-pulling ion-spinner{display:none}.refresher-native.refresher-refreshing .refresher-refreshing ion-spinner,.refresher-native.refresher-completing .refresher-refreshing ion-spinner{display:block}.refresher-native.refresher-pulling .refresher-pulling ion-spinner{display:block}.refresher-native.refresher-pulling .refresher-refreshing ion-spinner{display:none}.refresher-native.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0) rotate(180deg);transform:scale(0) rotate(180deg);-webkit-transition:300ms;transition:300ms}@-webkit-keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}@keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}";
|
|
13
|
-
|
|
14
|
-
const refresherMdCss = "ion-refresher{top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}ion-refresher{inset-inline-start:0}ion-refresher.refresher-active{display:block}ion-refresher-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{-webkit-transform-origin:center;transform-origin:center;-webkit-transition:200ms;transition:200ms;font-size:30px;text-align:center}:host-context([dir=rtl]) .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}[dir=rtl] .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}@supports selector(:dir(rtl)){.refresher-pulling-icon:dir(rtl),.refresher-refreshing-icon:dir(rtl){-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}}.refresher-pulling-text,.refresher-refreshing-text{font-size:16px;text-align:center}ion-refresher-content .arrow-container{display:none}.refresher-pulling ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.refresher-refreshing ion-refresher-content .refresher-refreshing{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-native .refresher-pulling-text,.refresher-native .refresher-refreshing-text{display:none}.refresher-md .refresher-pulling-icon,.refresher-md .refresher-refreshing-icon{color:var(--ion-text-color, #000)}.refresher-md .refresher-pulling-text,.refresher-md .refresher-refreshing-text{color:var(--ion-text-color, #000)}.refresher-md .refresher-refreshing .spinner-lines-md line,.refresher-md .refresher-refreshing .spinner-lines-small-md line,.refresher-md .refresher-refreshing .spinner-crescent circle{stroke:var(--ion-text-color, #000)}.refresher-md .refresher-refreshing .spinner-bubbles circle,.refresher-md .refresher-refreshing .spinner-circles circle,.refresher-md .refresher-refreshing .spinner-dots circle{fill:var(--ion-text-color, #000)}ion-refresher.refresher-native{display:block;z-index:1}ion-refresher.refresher-native ion-spinner{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;width:24px;height:24px;color:var(--ion-color-primary, #0054e9)}ion-refresher.refresher-native .spinner-arrow-container{display:inherit}ion-refresher.refresher-native .arrow-container{display:block;position:absolute;width:24px;height:24px}ion-refresher.refresher-native .arrow-container ion-icon{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;left:0;right:0;bottom:-4px;position:absolute;color:var(--ion-color-primary, #0054e9);font-size:12px}ion-refresher.refresher-native.refresher-pulling ion-refresher-content .refresher-pulling,ion-refresher.refresher-native.refresher-ready ion-refresher-content .refresher-pulling{display:-ms-flexbox;display:flex}ion-refresher.refresher-native.refresher-refreshing ion-refresher-content .refresher-refreshing,ion-refresher.refresher-native.refresher-completing ion-refresher-content .refresher-refreshing,ion-refresher.refresher-native.refresher-cancelling ion-refresher-content .refresher-refreshing{display:-ms-flexbox;display:flex}ion-refresher.refresher-native .refresher-pulling-icon{-webkit-transform:translateY(calc(-100% - 10px));transform:translateY(calc(-100% - 10px))}ion-refresher.refresher-native .refresher-pulling-icon,ion-refresher.refresher-native .refresher-refreshing-icon{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;border-radius:100%;-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;display:-ms-flexbox;display:flex;border:1px solid var(--ion-color-step-200, var(--ion-background-color-step-200, #ececec));background:var(--ion-color-step-250, var(--ion-background-color-step-250, #ffffff));-webkit-box-shadow:0px 1px 6px rgba(0, 0, 0, 0.1);box-shadow:0px 1px 6px rgba(0, 0, 0, 0.1)}";
|
|
15
|
-
|
|
16
|
-
const Refresher = /*@__PURE__*/ proxyCustomElement(class Refresher extends H {
|
|
17
|
-
constructor(registerHost) {
|
|
18
|
-
super();
|
|
19
|
-
if (registerHost !== false) {
|
|
20
|
-
this.__registerHost();
|
|
21
|
-
}
|
|
22
|
-
this.ionRefresh = createEvent(this, "ionRefresh", 7);
|
|
23
|
-
this.ionPull = createEvent(this, "ionPull", 7);
|
|
24
|
-
this.ionStart = createEvent(this, "ionStart", 7);
|
|
25
|
-
this.appliedStyles = false;
|
|
26
|
-
this.didStart = false;
|
|
27
|
-
this.progress = 0;
|
|
28
|
-
this.pointerDown = false;
|
|
29
|
-
this.needsCompletion = false;
|
|
30
|
-
this.didRefresh = false;
|
|
31
|
-
this.contentFullscreen = false;
|
|
32
|
-
this.lastVelocityY = 0;
|
|
33
|
-
this.animations = [];
|
|
34
|
-
this.nativeRefresher = false;
|
|
35
|
-
/**
|
|
36
|
-
* The current state which the refresher is in. The refresher's states include:
|
|
37
|
-
*
|
|
38
|
-
* - `inactive` - The refresher is not being pulled down or refreshing and is currently hidden.
|
|
39
|
-
* - `pulling` - The user is actively pulling down the refresher, but has not reached the point yet that if the user lets go, it'll refresh.
|
|
40
|
-
* - `cancelling` - The user pulled down the refresher and let go, but did not pull down far enough to kick off the `refreshing` state. After letting go, the refresher is in the `cancelling` state while it is closing, and will go back to the `inactive` state once closed.
|
|
41
|
-
* - `ready` - The user has pulled down the refresher far enough that if they let go, it'll begin the `refreshing` state.
|
|
42
|
-
* - `refreshing` - The refresher is actively waiting on the async operation to end. Once the refresh handler calls `complete()` it will begin the `completing` state.
|
|
43
|
-
* - `completing` - The `refreshing` state has finished and the refresher is in the way of closing itself. Once closed, the refresher will go back to the `inactive` state.
|
|
44
|
-
*/
|
|
45
|
-
this.state = 1 /* RefresherState.Inactive */;
|
|
46
|
-
/**
|
|
47
|
-
* The minimum distance the user must pull down until the
|
|
48
|
-
* refresher will go into the `refreshing` state.
|
|
49
|
-
* Does not apply when the refresher content uses a spinner,
|
|
50
|
-
* enabling the native refresher.
|
|
51
|
-
*/
|
|
52
|
-
this.pullMin = 60;
|
|
53
|
-
/**
|
|
54
|
-
* The maximum distance of the pull until the refresher
|
|
55
|
-
* will automatically go into the `refreshing` state.
|
|
56
|
-
* Defaults to the result of `pullMin + 60`.
|
|
57
|
-
* Does not apply when the refresher content uses a spinner,
|
|
58
|
-
* enabling the native refresher.
|
|
59
|
-
*/
|
|
60
|
-
this.pullMax = this.pullMin + 60;
|
|
61
|
-
/**
|
|
62
|
-
* Time it takes to close the refresher.
|
|
63
|
-
* Does not apply when the refresher content uses a spinner,
|
|
64
|
-
* enabling the native refresher.
|
|
65
|
-
*/
|
|
66
|
-
this.closeDuration = '280ms';
|
|
67
|
-
/**
|
|
68
|
-
* Time it takes the refresher to snap back to the `refreshing` state.
|
|
69
|
-
* Does not apply when the refresher content uses a spinner,
|
|
70
|
-
* enabling the native refresher.
|
|
71
|
-
*/
|
|
72
|
-
this.snapbackDuration = '280ms';
|
|
73
|
-
/**
|
|
74
|
-
* How much to multiply the pull speed by. To slow the pull animation down,
|
|
75
|
-
* pass a number less than `1`. To speed up the pull, pass a number greater
|
|
76
|
-
* than `1`. The default value is `1` which is equal to the speed of the cursor.
|
|
77
|
-
* If a negative value is passed in, the factor will be `1` instead.
|
|
78
|
-
*
|
|
79
|
-
* For example: If the value passed is `1.2` and the content is dragged by
|
|
80
|
-
* `10` pixels, instead of `10` pixels the content will be pulled by `12` pixels
|
|
81
|
-
* (an increase of 20 percent). If the value passed is `0.8`, the dragged amount
|
|
82
|
-
* will be `8` pixels, less than the amount the cursor has moved.
|
|
83
|
-
*
|
|
84
|
-
* Does not apply when the refresher content uses a spinner,
|
|
85
|
-
* enabling the native refresher.
|
|
86
|
-
*/
|
|
87
|
-
this.pullFactor = 1;
|
|
88
|
-
/**
|
|
89
|
-
* If `true`, the refresher will be hidden.
|
|
90
|
-
*/
|
|
91
|
-
this.disabled = false;
|
|
92
|
-
}
|
|
93
|
-
disabledChanged() {
|
|
94
|
-
if (this.gesture) {
|
|
95
|
-
this.gesture.enable(!this.disabled);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
async checkNativeRefresher() {
|
|
99
|
-
const useNativeRefresher = await shouldUseNativeRefresher(this.el, getIonMode(this));
|
|
100
|
-
if (useNativeRefresher && !this.nativeRefresher) {
|
|
101
|
-
const contentEl = this.el.closest('ion-content');
|
|
102
|
-
this.setupNativeRefresher(contentEl);
|
|
103
|
-
}
|
|
104
|
-
else if (!useNativeRefresher) {
|
|
105
|
-
this.destroyNativeRefresher();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
destroyNativeRefresher() {
|
|
109
|
-
if (this.scrollEl && this.scrollListenerCallback) {
|
|
110
|
-
this.scrollEl.removeEventListener('scroll', this.scrollListenerCallback);
|
|
111
|
-
this.scrollListenerCallback = undefined;
|
|
112
|
-
}
|
|
113
|
-
this.nativeRefresher = false;
|
|
114
|
-
}
|
|
115
|
-
async resetNativeRefresher(el, state) {
|
|
116
|
-
this.state = state;
|
|
117
|
-
if (getIonMode(this) === 'ios') {
|
|
118
|
-
await translateElement(el, undefined, 300);
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
await transitionEndAsync(this.el.querySelector('.refresher-refreshing-icon'), 200);
|
|
122
|
-
}
|
|
123
|
-
this.didRefresh = false;
|
|
124
|
-
this.needsCompletion = false;
|
|
125
|
-
this.pointerDown = false;
|
|
126
|
-
this.animations.forEach((ani) => ani.destroy());
|
|
127
|
-
this.animations = [];
|
|
128
|
-
this.progress = 0;
|
|
129
|
-
this.state = 1 /* RefresherState.Inactive */;
|
|
130
|
-
}
|
|
131
|
-
async setupiOSNativeRefresher(pullingSpinner, refreshingSpinner) {
|
|
132
|
-
this.elementToTransform = this.scrollEl;
|
|
133
|
-
const ticks = pullingSpinner.shadowRoot.querySelectorAll('svg');
|
|
134
|
-
let MAX_PULL = this.scrollEl.clientHeight * 0.16;
|
|
135
|
-
const NUM_TICKS = ticks.length;
|
|
136
|
-
writeTask(() => ticks.forEach((el) => el.style.setProperty('animation', 'none')));
|
|
137
|
-
this.scrollListenerCallback = () => {
|
|
138
|
-
// If pointer is not on screen or refresher is not active, ignore scroll
|
|
139
|
-
if (!this.pointerDown && this.state === 1 /* RefresherState.Inactive */) {
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
readTask(() => {
|
|
143
|
-
// PTR should only be active when overflow scrolling at the top
|
|
144
|
-
const scrollTop = this.scrollEl.scrollTop;
|
|
145
|
-
const refresherHeight = this.el.clientHeight;
|
|
146
|
-
if (scrollTop > 0) {
|
|
147
|
-
/**
|
|
148
|
-
* If refresher is refreshing and user tries to scroll
|
|
149
|
-
* progressively fade refresher out/in
|
|
150
|
-
*/
|
|
151
|
-
if (this.state === 8 /* RefresherState.Refreshing */) {
|
|
152
|
-
const ratio = clamp(0, scrollTop / (refresherHeight * 0.5), 1);
|
|
153
|
-
writeTask(() => setSpinnerOpacity(refreshingSpinner, 1 - ratio));
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
if (this.pointerDown) {
|
|
159
|
-
if (!this.didStart) {
|
|
160
|
-
this.didStart = true;
|
|
161
|
-
this.ionStart.emit();
|
|
162
|
-
}
|
|
163
|
-
// emit "pulling" on every move
|
|
164
|
-
if (this.pointerDown) {
|
|
165
|
-
this.ionPull.emit();
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* We want to delay the start of this gesture by ~30px
|
|
170
|
-
* when initially pulling down so the refresher does not
|
|
171
|
-
* overlap with the content. But when letting go of the
|
|
172
|
-
* gesture before the refresher completes, we want the
|
|
173
|
-
* refresher tick marks to quickly fade out.
|
|
174
|
-
*/
|
|
175
|
-
const offset = this.didStart ? 30 : 0;
|
|
176
|
-
const pullAmount = (this.progress = clamp(0, (Math.abs(scrollTop) - offset) / MAX_PULL, 1));
|
|
177
|
-
const shouldShowRefreshingSpinner = this.state === 8 /* RefresherState.Refreshing */ || pullAmount === 1;
|
|
178
|
-
if (shouldShowRefreshingSpinner) {
|
|
179
|
-
if (this.pointerDown) {
|
|
180
|
-
handleScrollWhileRefreshing(refreshingSpinner, this.lastVelocityY);
|
|
181
|
-
}
|
|
182
|
-
if (!this.didRefresh) {
|
|
183
|
-
this.beginRefresh();
|
|
184
|
-
this.didRefresh = true;
|
|
185
|
-
hapticImpact({ style: ImpactStyle.Light });
|
|
186
|
-
/**
|
|
187
|
-
* Clear focus from any active element to prevent scroll jumps
|
|
188
|
-
* when the refresh completes
|
|
189
|
-
*/
|
|
190
|
-
const activeElement = document.activeElement;
|
|
191
|
-
if ((activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur) !== undefined) {
|
|
192
|
-
activeElement.blur();
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Translate the content element otherwise when pointer is removed
|
|
196
|
-
* from screen the scroll content will bounce back over the refresher
|
|
197
|
-
*/
|
|
198
|
-
if (!this.pointerDown) {
|
|
199
|
-
translateElement(this.elementToTransform, `${refresherHeight}px`);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
this.state = 2 /* RefresherState.Pulling */;
|
|
205
|
-
handleScrollWhilePulling(ticks, NUM_TICKS, pullAmount);
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
};
|
|
209
|
-
this.scrollEl.addEventListener('scroll', this.scrollListenerCallback);
|
|
210
|
-
this.gesture = (await import('./p-Cl0B-RWe.js')).createGesture({
|
|
211
|
-
el: this.scrollEl,
|
|
212
|
-
gestureName: 'refresher',
|
|
213
|
-
gesturePriority: 31,
|
|
214
|
-
direction: 'y',
|
|
215
|
-
threshold: 5,
|
|
216
|
-
onStart: () => {
|
|
217
|
-
this.pointerDown = true;
|
|
218
|
-
if (!this.didRefresh) {
|
|
219
|
-
translateElement(this.elementToTransform, '0px');
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* If the content had `display: none` when
|
|
223
|
-
* the refresher was initialized, its clientHeight
|
|
224
|
-
* will be 0. When the gesture starts, the content
|
|
225
|
-
* will be visible, so try to get the correct
|
|
226
|
-
* client height again. This is most common when
|
|
227
|
-
* using the refresher in an ion-menu.
|
|
228
|
-
*/
|
|
229
|
-
if (MAX_PULL === 0) {
|
|
230
|
-
MAX_PULL = this.scrollEl.clientHeight * 0.16;
|
|
231
|
-
}
|
|
232
|
-
},
|
|
233
|
-
onMove: (ev) => {
|
|
234
|
-
this.lastVelocityY = ev.velocityY;
|
|
235
|
-
},
|
|
236
|
-
onEnd: () => {
|
|
237
|
-
this.pointerDown = false;
|
|
238
|
-
this.didStart = false;
|
|
239
|
-
if (this.needsCompletion) {
|
|
240
|
-
this.resetNativeRefresher(this.elementToTransform, 32 /* RefresherState.Completing */);
|
|
241
|
-
this.needsCompletion = false;
|
|
242
|
-
}
|
|
243
|
-
else if (this.didRefresh) {
|
|
244
|
-
readTask(() => translateElement(this.elementToTransform, `${this.el.clientHeight}px`));
|
|
245
|
-
}
|
|
246
|
-
},
|
|
247
|
-
});
|
|
248
|
-
this.disabledChanged();
|
|
249
|
-
}
|
|
250
|
-
async setupMDNativeRefresher(contentEl, pullingSpinner, refreshingSpinner) {
|
|
251
|
-
const circle = getElementRoot(pullingSpinner).querySelector('circle');
|
|
252
|
-
const pullingRefresherIcon = this.el.querySelector('ion-refresher-content .refresher-pulling-icon');
|
|
253
|
-
const refreshingCircle = getElementRoot(refreshingSpinner).querySelector('circle');
|
|
254
|
-
if (circle !== null && refreshingCircle !== null) {
|
|
255
|
-
writeTask(() => {
|
|
256
|
-
circle.style.setProperty('animation', 'none');
|
|
257
|
-
// This lines up the animation on the refreshing spinner with the pulling spinner
|
|
258
|
-
refreshingSpinner.style.setProperty('animation-delay', '-655ms');
|
|
259
|
-
refreshingCircle.style.setProperty('animation-delay', '-655ms');
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
this.gesture = (await import('./p-Cl0B-RWe.js')).createGesture({
|
|
263
|
-
el: this.scrollEl,
|
|
264
|
-
gestureName: 'refresher',
|
|
265
|
-
gesturePriority: 31,
|
|
266
|
-
direction: 'y',
|
|
267
|
-
threshold: 5,
|
|
268
|
-
canStart: () => this.state !== 8 /* RefresherState.Refreshing */ &&
|
|
269
|
-
this.state !== 32 /* RefresherState.Completing */ &&
|
|
270
|
-
this.scrollEl.scrollTop === 0,
|
|
271
|
-
onStart: (ev) => {
|
|
272
|
-
this.progress = 0;
|
|
273
|
-
ev.data = { animation: undefined, didStart: false, cancelled: false };
|
|
274
|
-
},
|
|
275
|
-
onMove: (ev) => {
|
|
276
|
-
if ((ev.velocityY < 0 && this.progress === 0 && !ev.data.didStart) || ev.data.cancelled) {
|
|
277
|
-
ev.data.cancelled = true;
|
|
278
|
-
return;
|
|
279
|
-
}
|
|
280
|
-
if (!ev.data.didStart) {
|
|
281
|
-
ev.data.didStart = true;
|
|
282
|
-
this.state = 2 /* RefresherState.Pulling */;
|
|
283
|
-
// When ion-refresher is being used with a custom scroll target, the overflow styles need to be applied directly instead of via a css variable
|
|
284
|
-
const { scrollEl } = this;
|
|
285
|
-
const overflowProperty = scrollEl.matches(ION_CONTENT_CLASS_SELECTOR) ? 'overflow' : '--overflow';
|
|
286
|
-
writeTask(() => scrollEl.style.setProperty(overflowProperty, 'hidden'));
|
|
287
|
-
const animationType = getRefresherAnimationType(contentEl);
|
|
288
|
-
const animation = createPullingAnimation(animationType, pullingRefresherIcon, this.el);
|
|
289
|
-
ev.data.animation = animation;
|
|
290
|
-
animation.progressStart(false, 0);
|
|
291
|
-
this.ionStart.emit();
|
|
292
|
-
this.animations.push(animation);
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
// Since we are using an easing curve, slow the gesture tracking down a bit
|
|
296
|
-
this.progress = clamp(0, (ev.deltaY / 180) * 0.5, 1);
|
|
297
|
-
ev.data.animation.progressStep(this.progress);
|
|
298
|
-
this.ionPull.emit();
|
|
299
|
-
},
|
|
300
|
-
onEnd: (ev) => {
|
|
301
|
-
if (!ev.data.didStart) {
|
|
302
|
-
return;
|
|
303
|
-
}
|
|
304
|
-
this.gesture.enable(false);
|
|
305
|
-
const { scrollEl } = this;
|
|
306
|
-
const overflowProperty = scrollEl.matches(ION_CONTENT_CLASS_SELECTOR) ? 'overflow' : '--overflow';
|
|
307
|
-
writeTask(() => scrollEl.style.removeProperty(overflowProperty));
|
|
308
|
-
if (this.progress <= 0.4) {
|
|
309
|
-
ev.data.animation.progressEnd(0, this.progress, 500).onFinish(() => {
|
|
310
|
-
this.animations.forEach((ani) => ani.destroy());
|
|
311
|
-
this.animations = [];
|
|
312
|
-
this.gesture.enable(true);
|
|
313
|
-
this.state = 1 /* RefresherState.Inactive */;
|
|
314
|
-
});
|
|
315
|
-
return;
|
|
316
|
-
}
|
|
317
|
-
const progress = getTimeGivenProgression([0, 0], [0, 0], [1, 1], [1, 1], this.progress)[0];
|
|
318
|
-
const snapBackAnimation = createSnapBackAnimation(pullingRefresherIcon);
|
|
319
|
-
this.animations.push(snapBackAnimation);
|
|
320
|
-
writeTask(async () => {
|
|
321
|
-
pullingRefresherIcon.style.setProperty('--ion-pulling-refresher-translate', `${progress * 100}px`);
|
|
322
|
-
ev.data.animation.progressEnd();
|
|
323
|
-
await snapBackAnimation.play();
|
|
324
|
-
this.beginRefresh();
|
|
325
|
-
ev.data.animation.destroy();
|
|
326
|
-
this.gesture.enable(true);
|
|
327
|
-
});
|
|
328
|
-
},
|
|
329
|
-
});
|
|
330
|
-
this.disabledChanged();
|
|
331
|
-
}
|
|
332
|
-
async setupNativeRefresher(contentEl) {
|
|
333
|
-
if (this.scrollListenerCallback || !contentEl || this.nativeRefresher || !this.scrollEl) {
|
|
334
|
-
return;
|
|
335
|
-
}
|
|
336
|
-
/**
|
|
337
|
-
* If using non-native refresher before make sure
|
|
338
|
-
* we clean up any old CSS. This can happen when
|
|
339
|
-
* a user manually calls the refresh method in a
|
|
340
|
-
* component create callback before the native
|
|
341
|
-
* refresher is setup.
|
|
342
|
-
*/
|
|
343
|
-
this.setCss(0, '', false, '');
|
|
344
|
-
this.nativeRefresher = true;
|
|
345
|
-
const pullingSpinner = this.el.querySelector('ion-refresher-content .refresher-pulling ion-spinner');
|
|
346
|
-
const refreshingSpinner = this.el.querySelector('ion-refresher-content .refresher-refreshing ion-spinner');
|
|
347
|
-
if (getIonMode(this) === 'ios') {
|
|
348
|
-
this.setupiOSNativeRefresher(pullingSpinner, refreshingSpinner);
|
|
349
|
-
}
|
|
350
|
-
else {
|
|
351
|
-
this.setupMDNativeRefresher(contentEl, pullingSpinner, refreshingSpinner);
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
componentDidUpdate() {
|
|
355
|
-
this.checkNativeRefresher();
|
|
356
|
-
}
|
|
357
|
-
async connectedCallback() {
|
|
358
|
-
if (this.el.getAttribute('slot') !== 'fixed') {
|
|
359
|
-
printIonError('[ion-refresher] - Make sure you use: <ion-refresher slot="fixed">');
|
|
360
|
-
return;
|
|
361
|
-
}
|
|
362
|
-
const contentEl = this.el.closest(ION_CONTENT_ELEMENT_SELECTOR);
|
|
363
|
-
if (!contentEl) {
|
|
364
|
-
printIonContentErrorMsg(this.el);
|
|
365
|
-
return;
|
|
366
|
-
}
|
|
367
|
-
/**
|
|
368
|
-
* Waits for the content to be ready before querying the scroll
|
|
369
|
-
* or the background content element.
|
|
370
|
-
*/
|
|
371
|
-
componentOnReady(contentEl, async () => {
|
|
372
|
-
const customScrollTarget = contentEl.querySelector(ION_CONTENT_CLASS_SELECTOR);
|
|
373
|
-
/**
|
|
374
|
-
* Query the custom scroll target (if available), first. In refresher implementations,
|
|
375
|
-
* the ion-refresher element will always be a direct child of ion-content (slot="fixed"). By
|
|
376
|
-
* querying the custom scroll target first and falling back to the ion-content element,
|
|
377
|
-
* the correct scroll element will be returned by the implementation.
|
|
378
|
-
*/
|
|
379
|
-
this.scrollEl = await getScrollElement(customScrollTarget !== null && customScrollTarget !== void 0 ? customScrollTarget : contentEl);
|
|
380
|
-
/**
|
|
381
|
-
* Query the background content element from the host ion-content element directly.
|
|
382
|
-
*/
|
|
383
|
-
this.backgroundContentEl = await contentEl.getBackgroundElement();
|
|
384
|
-
/**
|
|
385
|
-
* Check if the content element is fullscreen to apply the correct styles
|
|
386
|
-
* when the refresher is refreshing. Otherwise, the refresher will be
|
|
387
|
-
* hidden because it is positioned behind the background content element.
|
|
388
|
-
*/
|
|
389
|
-
this.contentFullscreen = contentEl.fullscreen;
|
|
390
|
-
if (await shouldUseNativeRefresher(this.el, getIonMode(this))) {
|
|
391
|
-
this.setupNativeRefresher(contentEl);
|
|
392
|
-
}
|
|
393
|
-
else {
|
|
394
|
-
this.gesture = (await import('./p-Cl0B-RWe.js')).createGesture({
|
|
395
|
-
el: contentEl,
|
|
396
|
-
gestureName: 'refresher',
|
|
397
|
-
gesturePriority: 31,
|
|
398
|
-
direction: 'y',
|
|
399
|
-
threshold: 20,
|
|
400
|
-
passive: false,
|
|
401
|
-
canStart: () => this.canStart(),
|
|
402
|
-
onStart: () => this.onStart(),
|
|
403
|
-
onMove: (ev) => this.onMove(ev),
|
|
404
|
-
onEnd: () => this.onEnd(),
|
|
405
|
-
});
|
|
406
|
-
this.disabledChanged();
|
|
407
|
-
}
|
|
408
|
-
});
|
|
409
|
-
}
|
|
410
|
-
disconnectedCallback() {
|
|
411
|
-
this.destroyNativeRefresher();
|
|
412
|
-
this.scrollEl = undefined;
|
|
413
|
-
if (this.gesture) {
|
|
414
|
-
this.gesture.destroy();
|
|
415
|
-
this.gesture = undefined;
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
/**
|
|
419
|
-
* Call `complete()` when your async operation has completed.
|
|
420
|
-
* For example, the `refreshing` state is while the app is performing
|
|
421
|
-
* an asynchronous operation, such as receiving more data from an
|
|
422
|
-
* AJAX request. Once the data has been received, you then call this
|
|
423
|
-
* method to signify that the refreshing has completed and to close
|
|
424
|
-
* the refresher. This method also changes the refresher's state from
|
|
425
|
-
* `refreshing` to `completing`.
|
|
426
|
-
*/
|
|
427
|
-
async complete() {
|
|
428
|
-
if (this.nativeRefresher) {
|
|
429
|
-
this.needsCompletion = true;
|
|
430
|
-
// Do not reset scroll el until user removes pointer from screen
|
|
431
|
-
if (!this.pointerDown) {
|
|
432
|
-
raf(() => raf(() => this.resetNativeRefresher(this.elementToTransform, 32 /* RefresherState.Completing */)));
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
else {
|
|
436
|
-
this.close(32 /* RefresherState.Completing */, '120ms');
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
/**
|
|
440
|
-
* Changes the refresher's state from `refreshing` to `cancelling`.
|
|
441
|
-
*/
|
|
442
|
-
async cancel() {
|
|
443
|
-
if (this.nativeRefresher) {
|
|
444
|
-
// Do not reset scroll el until user removes pointer from screen
|
|
445
|
-
if (!this.pointerDown) {
|
|
446
|
-
raf(() => raf(() => this.resetNativeRefresher(this.elementToTransform, 16 /* RefresherState.Cancelling */)));
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
else {
|
|
450
|
-
this.close(16 /* RefresherState.Cancelling */, '');
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
/**
|
|
454
|
-
* A number representing how far down the user has pulled.
|
|
455
|
-
* The number `0` represents the user hasn't pulled down at all. The
|
|
456
|
-
* number `1`, and anything greater than `1`, represents that the user
|
|
457
|
-
* has pulled far enough down that when they let go then the refresh will
|
|
458
|
-
* happen. If they let go and the number is less than `1`, then the
|
|
459
|
-
* refresh will not happen, and the content will return to it's original
|
|
460
|
-
* position.
|
|
461
|
-
*/
|
|
462
|
-
getProgress() {
|
|
463
|
-
return Promise.resolve(this.progress);
|
|
464
|
-
}
|
|
465
|
-
canStart() {
|
|
466
|
-
if (!this.scrollEl) {
|
|
467
|
-
return false;
|
|
468
|
-
}
|
|
469
|
-
if (this.state !== 1 /* RefresherState.Inactive */) {
|
|
470
|
-
return false;
|
|
471
|
-
}
|
|
472
|
-
// if the scrollTop is greater than zero then it's
|
|
473
|
-
// not possible to pull the content down yet
|
|
474
|
-
if (this.scrollEl.scrollTop > 0) {
|
|
475
|
-
return false;
|
|
476
|
-
}
|
|
477
|
-
return true;
|
|
478
|
-
}
|
|
479
|
-
onStart() {
|
|
480
|
-
this.progress = 0;
|
|
481
|
-
this.state = 1 /* RefresherState.Inactive */;
|
|
482
|
-
this.memoizeOverflowStyle();
|
|
483
|
-
/**
|
|
484
|
-
* If the content is fullscreen, then we need to
|
|
485
|
-
* set the offset-top style on the background content
|
|
486
|
-
* element to ensure that the refresher is shown.
|
|
487
|
-
*/
|
|
488
|
-
if (this.contentFullscreen && this.backgroundContentEl) {
|
|
489
|
-
this.backgroundContentEl.style.setProperty('--offset-top', '0px');
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
onMove(detail) {
|
|
493
|
-
if (!this.scrollEl) {
|
|
494
|
-
return;
|
|
495
|
-
}
|
|
496
|
-
// this method can get called like a bazillion times per second,
|
|
497
|
-
// so it's built to be as efficient as possible, and does its
|
|
498
|
-
// best to do any DOM read/writes only when absolutely necessary
|
|
499
|
-
// if multi-touch then get out immediately
|
|
500
|
-
const ev = detail.event;
|
|
501
|
-
if (ev.touches !== undefined && ev.touches.length > 1) {
|
|
502
|
-
return;
|
|
503
|
-
}
|
|
504
|
-
// do nothing if it's actively refreshing
|
|
505
|
-
// or it's in the way of closing
|
|
506
|
-
// or this was never a startY
|
|
507
|
-
if ((this.state & 56 /* RefresherState._BUSY_ */) !== 0) {
|
|
508
|
-
return;
|
|
509
|
-
}
|
|
510
|
-
const pullFactor = Number.isNaN(this.pullFactor) || this.pullFactor < 0 ? 1 : this.pullFactor;
|
|
511
|
-
const deltaY = detail.deltaY * pullFactor;
|
|
512
|
-
// don't bother if they're scrolling up
|
|
513
|
-
// and have not already started dragging
|
|
514
|
-
if (deltaY <= 0) {
|
|
515
|
-
// the current Y is higher than the starting Y
|
|
516
|
-
// so they scrolled up enough to be ignored
|
|
517
|
-
this.progress = 0;
|
|
518
|
-
this.state = 1 /* RefresherState.Inactive */;
|
|
519
|
-
if (this.appliedStyles) {
|
|
520
|
-
// reset the styles only if they were applied
|
|
521
|
-
this.setCss(0, '', false, '');
|
|
522
|
-
return;
|
|
523
|
-
}
|
|
524
|
-
return;
|
|
525
|
-
}
|
|
526
|
-
if (this.state === 1 /* RefresherState.Inactive */) {
|
|
527
|
-
// this refresh is not already actively pulling down
|
|
528
|
-
// get the content's scrollTop
|
|
529
|
-
const scrollHostScrollTop = this.scrollEl.scrollTop;
|
|
530
|
-
// if the scrollTop is greater than zero then it's
|
|
531
|
-
// not possible to pull the content down yet
|
|
532
|
-
if (scrollHostScrollTop > 0) {
|
|
533
|
-
this.progress = 0;
|
|
534
|
-
return;
|
|
535
|
-
}
|
|
536
|
-
// content scrolled all the way to the top, and dragging down
|
|
537
|
-
this.state = 2 /* RefresherState.Pulling */;
|
|
538
|
-
}
|
|
539
|
-
// prevent native scroll events
|
|
540
|
-
if (ev.cancelable) {
|
|
541
|
-
ev.preventDefault();
|
|
542
|
-
}
|
|
543
|
-
// the refresher is actively pulling at this point
|
|
544
|
-
// move the scroll element within the content element
|
|
545
|
-
this.setCss(deltaY, '0ms', true, '');
|
|
546
|
-
if (deltaY === 0) {
|
|
547
|
-
// don't continue if there's no delta yet
|
|
548
|
-
this.progress = 0;
|
|
549
|
-
return;
|
|
550
|
-
}
|
|
551
|
-
const pullMin = this.pullMin;
|
|
552
|
-
// set pull progress
|
|
553
|
-
this.progress = deltaY / pullMin;
|
|
554
|
-
// emit "start" if it hasn't started yet
|
|
555
|
-
if (!this.didStart) {
|
|
556
|
-
this.didStart = true;
|
|
557
|
-
this.ionStart.emit();
|
|
558
|
-
}
|
|
559
|
-
// emit "pulling" on every move
|
|
560
|
-
this.ionPull.emit();
|
|
561
|
-
// do nothing if the delta is less than the pull threshold
|
|
562
|
-
if (deltaY < pullMin) {
|
|
563
|
-
// ensure it stays in the pulling state, cuz its not ready yet
|
|
564
|
-
this.state = 2 /* RefresherState.Pulling */;
|
|
565
|
-
return;
|
|
566
|
-
}
|
|
567
|
-
if (deltaY > this.pullMax) {
|
|
568
|
-
// they pulled farther than the max, so kick off the refresh
|
|
569
|
-
this.beginRefresh();
|
|
570
|
-
return;
|
|
571
|
-
}
|
|
572
|
-
// pulled farther than the pull min!!
|
|
573
|
-
// it is now in the `ready` state!!
|
|
574
|
-
// if they let go then it'll refresh, kerpow!!
|
|
575
|
-
this.state = 4 /* RefresherState.Ready */;
|
|
576
|
-
return;
|
|
577
|
-
}
|
|
578
|
-
onEnd() {
|
|
579
|
-
// only run in a zone when absolutely necessary
|
|
580
|
-
if (this.state === 4 /* RefresherState.Ready */) {
|
|
581
|
-
// they pulled down far enough, so it's ready to refresh
|
|
582
|
-
this.beginRefresh();
|
|
583
|
-
}
|
|
584
|
-
else if (this.state === 2 /* RefresherState.Pulling */) {
|
|
585
|
-
// they were pulling down, but didn't pull down far enough
|
|
586
|
-
// set the content back to it's original location
|
|
587
|
-
// and close the refresher
|
|
588
|
-
// set that the refresh is actively cancelling
|
|
589
|
-
this.cancel();
|
|
590
|
-
}
|
|
591
|
-
else if (this.state === 1 /* RefresherState.Inactive */) {
|
|
592
|
-
/**
|
|
593
|
-
* The pull to refresh gesture was aborted
|
|
594
|
-
* so we should immediately restore any overflow styles
|
|
595
|
-
* that have been modified. Do not call this.cancel
|
|
596
|
-
* because the styles will only be reset after a timeout.
|
|
597
|
-
* If the gesture is aborted then scrolling should be
|
|
598
|
-
* available right away.
|
|
599
|
-
*/
|
|
600
|
-
this.restoreOverflowStyle();
|
|
601
|
-
}
|
|
602
|
-
}
|
|
603
|
-
beginRefresh() {
|
|
604
|
-
// assumes we're already back in a zone
|
|
605
|
-
// they pulled down far enough, so it's ready to refresh
|
|
606
|
-
this.state = 8 /* RefresherState.Refreshing */;
|
|
607
|
-
// place the content in a hangout position while it thinks
|
|
608
|
-
this.setCss(this.pullMin, this.snapbackDuration, true, '');
|
|
609
|
-
/**
|
|
610
|
-
* Clear focus from any active element to prevent the browser
|
|
611
|
-
* from restoring focus and causing scroll jumps after refresh.
|
|
612
|
-
* This ensures the view stays at the top after refresh completes.
|
|
613
|
-
*/
|
|
614
|
-
const activeElement = document.activeElement;
|
|
615
|
-
if ((activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur) !== undefined) {
|
|
616
|
-
activeElement.blur();
|
|
617
|
-
}
|
|
618
|
-
// emit "refresh" because it was pulled down far enough
|
|
619
|
-
// and they let go to begin refreshing
|
|
620
|
-
this.ionRefresh.emit({
|
|
621
|
-
complete: this.complete.bind(this),
|
|
622
|
-
});
|
|
623
|
-
}
|
|
624
|
-
close(state, delay) {
|
|
625
|
-
// create fallback timer incase something goes wrong with transitionEnd event
|
|
626
|
-
setTimeout(() => {
|
|
627
|
-
var _a;
|
|
628
|
-
this.state = 1 /* RefresherState.Inactive */;
|
|
629
|
-
this.progress = 0;
|
|
630
|
-
this.didStart = false;
|
|
631
|
-
/**
|
|
632
|
-
* Reset any overflow styles so the
|
|
633
|
-
* user can scroll again.
|
|
634
|
-
*/
|
|
635
|
-
this.setCss(0, '0ms', false, '', true);
|
|
636
|
-
/**
|
|
637
|
-
* Reset the offset-top style on the background content
|
|
638
|
-
* when the refresher is no longer refreshing and the
|
|
639
|
-
* content is fullscreen.
|
|
640
|
-
*
|
|
641
|
-
* This ensures that the behavior of background content
|
|
642
|
-
* does not change when refreshing is complete.
|
|
643
|
-
*/
|
|
644
|
-
if (this.contentFullscreen && this.backgroundContentEl) {
|
|
645
|
-
(_a = this.backgroundContentEl) === null || _a === void 0 ? void 0 : _a.style.removeProperty('--offset-top');
|
|
646
|
-
}
|
|
647
|
-
}, 600);
|
|
648
|
-
// reset the styles on the scroll element
|
|
649
|
-
// set that the refresh is actively cancelling/completing
|
|
650
|
-
this.state = state;
|
|
651
|
-
this.setCss(0, this.closeDuration, true, delay);
|
|
652
|
-
}
|
|
653
|
-
setCss(y, duration, overflowVisible, delay, shouldRestoreOverflowStyle = false) {
|
|
654
|
-
if (this.nativeRefresher) {
|
|
655
|
-
return;
|
|
656
|
-
}
|
|
657
|
-
this.appliedStyles = y > 0;
|
|
658
|
-
writeTask(() => {
|
|
659
|
-
if (this.scrollEl && this.backgroundContentEl) {
|
|
660
|
-
const scrollStyle = this.scrollEl.style;
|
|
661
|
-
const backgroundStyle = this.backgroundContentEl.style;
|
|
662
|
-
scrollStyle.transform = backgroundStyle.transform = y > 0 ? `translateY(${y}px) translateZ(0px)` : '';
|
|
663
|
-
scrollStyle.transitionDuration = backgroundStyle.transitionDuration = duration;
|
|
664
|
-
scrollStyle.transitionDelay = backgroundStyle.transitionDelay = delay;
|
|
665
|
-
scrollStyle.overflow = overflowVisible ? 'hidden' : '';
|
|
666
|
-
}
|
|
667
|
-
/**
|
|
668
|
-
* Reset the overflow styles only once
|
|
669
|
-
* the pull to refresh effect has been closed.
|
|
670
|
-
* This ensures that the gesture is done
|
|
671
|
-
* and the refresh operation has either
|
|
672
|
-
* been aborted or has completed.
|
|
673
|
-
*/
|
|
674
|
-
if (shouldRestoreOverflowStyle) {
|
|
675
|
-
this.restoreOverflowStyle();
|
|
676
|
-
}
|
|
677
|
-
});
|
|
678
|
-
}
|
|
679
|
-
memoizeOverflowStyle() {
|
|
680
|
-
if (this.scrollEl) {
|
|
681
|
-
const { overflow, overflowX, overflowY } = this.scrollEl.style;
|
|
682
|
-
this.overflowStyles = {
|
|
683
|
-
overflow: overflow !== null && overflow !== void 0 ? overflow : '',
|
|
684
|
-
overflowX: overflowX !== null && overflowX !== void 0 ? overflowX : '',
|
|
685
|
-
overflowY: overflowY !== null && overflowY !== void 0 ? overflowY : '',
|
|
686
|
-
};
|
|
687
|
-
}
|
|
688
|
-
}
|
|
689
|
-
restoreOverflowStyle() {
|
|
690
|
-
if (this.overflowStyles !== undefined && this.scrollEl !== undefined) {
|
|
691
|
-
const { overflow, overflowX, overflowY } = this.overflowStyles;
|
|
692
|
-
this.scrollEl.style.overflow = overflow;
|
|
693
|
-
this.scrollEl.style.overflowX = overflowX;
|
|
694
|
-
this.scrollEl.style.overflowY = overflowY;
|
|
695
|
-
this.overflowStyles = undefined;
|
|
696
|
-
}
|
|
697
|
-
}
|
|
698
|
-
render() {
|
|
699
|
-
const mode = getIonMode(this);
|
|
700
|
-
return (h(Host, { key: '06d61cc53260ce146dd6906cc96597e9baaa17cf', slot: "fixed", class: {
|
|
701
|
-
[mode]: true,
|
|
702
|
-
// Used internally for styling
|
|
703
|
-
[`refresher-${mode}`]: true,
|
|
704
|
-
'refresher-native': this.nativeRefresher,
|
|
705
|
-
'refresher-active': this.state !== 1 /* RefresherState.Inactive */,
|
|
706
|
-
'refresher-pulling': this.state === 2 /* RefresherState.Pulling */,
|
|
707
|
-
'refresher-ready': this.state === 4 /* RefresherState.Ready */,
|
|
708
|
-
'refresher-refreshing': this.state === 8 /* RefresherState.Refreshing */,
|
|
709
|
-
'refresher-cancelling': this.state === 16 /* RefresherState.Cancelling */,
|
|
710
|
-
'refresher-completing': this.state === 32 /* RefresherState.Completing */,
|
|
711
|
-
} }));
|
|
712
|
-
}
|
|
713
|
-
get el() { return this; }
|
|
714
|
-
static get watchers() { return {
|
|
715
|
-
"disabled": ["disabledChanged"]
|
|
716
|
-
}; }
|
|
717
|
-
static get style() { return {
|
|
718
|
-
ios: refresherIosCss,
|
|
719
|
-
md: refresherMdCss
|
|
720
|
-
}; }
|
|
721
|
-
}, [288, "ion-refresher", {
|
|
722
|
-
"pullMin": [2, "pull-min"],
|
|
723
|
-
"pullMax": [2, "pull-max"],
|
|
724
|
-
"closeDuration": [1, "close-duration"],
|
|
725
|
-
"snapbackDuration": [1, "snapback-duration"],
|
|
726
|
-
"pullFactor": [2, "pull-factor"],
|
|
727
|
-
"disabled": [4],
|
|
728
|
-
"nativeRefresher": [32],
|
|
729
|
-
"state": [32],
|
|
730
|
-
"complete": [64],
|
|
731
|
-
"cancel": [64],
|
|
732
|
-
"getProgress": [64]
|
|
733
|
-
}, undefined, {
|
|
734
|
-
"disabled": ["disabledChanged"]
|
|
735
|
-
}]);
|
|
736
|
-
function defineCustomElement$1() {
|
|
737
|
-
if (typeof customElements === "undefined") {
|
|
738
|
-
return;
|
|
739
|
-
}
|
|
740
|
-
const components = ["ion-refresher"];
|
|
741
|
-
components.forEach(tagName => { switch (tagName) {
|
|
742
|
-
case "ion-refresher":
|
|
743
|
-
if (!customElements.get(tagName)) {
|
|
744
|
-
customElements.define(tagName, Refresher);
|
|
745
|
-
}
|
|
746
|
-
break;
|
|
747
|
-
} });
|
|
748
|
-
}
|
|
749
|
-
|
|
750
|
-
const IonRefresher = Refresher;
|
|
751
|
-
const defineCustomElement = defineCustomElement$1;
|
|
752
|
-
|
|
753
|
-
export { IonRefresher, defineCustomElement };
|
|
4
|
+
import{p as e,H as r,e as i,w as s,k as t,j as n,h as o,t as h,d as a}from"./p-BJoMtgfR.js";import{g as f}from"./p-hHmYLOfE.js";import{I as l,b as c,p,g}from"./p-C59ryAuS.js";import{t as d,f as m,g as u,c as b,r as v}from"./p-DgbT0exM.js";import{c as x,I as w}from"./p-cyNmxje6.js";import{b as k}from"./p-CDfQnFrd.js";import{s as y,t as j,a as S,h as R,b as C,c as E,d as M,g as N}from"./p-CgqKJg96.js";const z=e(class extends r{constructor(e){super(),!1!==e&&this.__registerHost(),this.ionRefresh=i(this,"ionRefresh",7),this.ionPull=i(this,"ionPull",7),this.ionStart=i(this,"ionStart",7),this.ionPullStart=i(this,"ionPullStart",7),this.ionPullEnd=i(this,"ionPullEnd",7),this.appliedStyles=!1,this.didStart=!1,this.progress=0,this.pointerDown=!1,this.needsCompletion=!1,this.didRefresh=!1,this.contentFullscreen=!1,this.lastVelocityY=0,this.animations=[],this.nativeRefresher=!1,this.state=1,this.pullMin=60,this.pullMax=this.pullMin+60,this.closeDuration="280ms",this.snapbackDuration="280ms",this.pullFactor=1,this.disabled=!1}disabledChanged(){this.gesture&&this.gesture.enable(!this.disabled)}async checkNativeRefresher(){const e=await y(this.el,k(this));if(e&&!this.nativeRefresher){const e=this.el.closest("ion-content");this.setupNativeRefresher(e)}else e||this.destroyNativeRefresher()}destroyNativeRefresher(){this.scrollEl&&this.scrollListenerCallback&&(this.scrollEl.removeEventListener("scroll",this.scrollListenerCallback),this.scrollListenerCallback=void 0),this.nativeRefresher=!1}async resetNativeRefresher(e,r){this.state=r,"ios"===k(this)?await j(e,void 0,300):await d(this.el.querySelector(".refresher-refreshing-icon"),200),this.didRefresh=!1,this.needsCompletion=!1,this.pointerDown=!1,this.animations.forEach((e=>e.destroy())),this.animations=[],this.progress=0,this.state=1,this.ionPullEnd.emit({reason:32===r?"complete":"cancel"})}async setupiOSNativeRefresher(e,r){this.elementToTransform=this.scrollEl;const i=e.shadowRoot.querySelectorAll("svg");let n=.16*this.scrollEl.clientHeight;const o=i.length;s((()=>i.forEach((e=>e.style.setProperty("animation","none"))))),this.scrollListenerCallback=()=>{(this.pointerDown||1!==this.state)&&t((()=>{const e=this.scrollEl.scrollTop,t=this.el.clientHeight;if(e>0){if(8===this.state){const i=m(0,e/(.5*t),1);return void s((()=>S(r,1-i)))}return}this.pointerDown&&(this.didStart||(this.didStart=!0,this.ionStart.emit(),this.ionPullStart.emit()),this.pointerDown&&this.ionPull.emit());const h=this.didStart?30:0,a=this.progress=m(0,(Math.abs(e)-h)/n,1);if(8===this.state||1===a){if(this.pointerDown&&R(r,this.lastVelocityY),!this.didRefresh){this.beginRefresh(),this.didRefresh=!0,x({style:w.Light});const e=document.activeElement;void 0!==(null==e?void 0:e.blur)&&e.blur(),this.pointerDown||j(this.elementToTransform,t+"px")}}else this.state=2,C(i,o,a)}))},this.scrollEl.addEventListener("scroll",this.scrollListenerCallback),this.gesture=(await import("./p-Cl0B-RWe.js")).createGesture({el:this.scrollEl,gestureName:"refresher",gesturePriority:31,direction:"y",threshold:5,onStart:()=>{this.pointerDown=!0,this.didRefresh||j(this.elementToTransform,"0px"),0===n&&(n=.16*this.scrollEl.clientHeight)},onMove:e=>{this.lastVelocityY=e.velocityY},onEnd:()=>{const e=this.didStart;this.pointerDown=!1,this.didStart=!1,this.needsCompletion?(this.resetNativeRefresher(this.elementToTransform,32),this.needsCompletion=!1):this.didRefresh?t((()=>j(this.elementToTransform,this.el.clientHeight+"px"))):e&&this.ionPullEnd.emit({reason:"cancel"})}}),this.disabledChanged()}async setupMDNativeRefresher(e,r,i){const t=u(r).querySelector("circle"),n=this.el.querySelector("ion-refresher-content .refresher-pulling-icon"),o=u(i).querySelector("circle");null!==t&&null!==o&&s((()=>{t.style.setProperty("animation","none"),i.style.setProperty("animation-delay","-655ms"),o.style.setProperty("animation-delay","-655ms")})),this.gesture=(await import("./p-Cl0B-RWe.js")).createGesture({el:this.scrollEl,gestureName:"refresher",gesturePriority:31,direction:"y",threshold:5,canStart:()=>8!==this.state&&32!==this.state&&0===this.scrollEl.scrollTop,onStart:e=>{this.progress=0,e.data={animation:void 0,didStart:!1,cancelled:!1}},onMove:r=>{if(r.velocityY<0&&0===this.progress&&!r.data.didStart||r.data.cancelled)r.data.cancelled=!0;else{if(!r.data.didStart){r.data.didStart=!0,this.state=2;const{scrollEl:i}=this,t=i.matches(l)?"overflow":"--overflow";s((()=>i.style.setProperty(t,"hidden")));const o=N(e),h=M(o,n,this.el);return r.data.animation=h,h.progressStart(!1,0),this.ionStart.emit(),this.ionPullStart.emit(),void this.animations.push(h)}this.progress=m(0,r.deltaY/180*.5,1),r.data.animation.progressStep(this.progress),this.ionPull.emit()}},onEnd:e=>{if(!e.data.didStart)return;this.gesture.enable(!1);const{scrollEl:r}=this,i=r.matches(l)?"overflow":"--overflow";if(s((()=>r.style.removeProperty(i))),this.progress<=.4)return void e.data.animation.progressEnd(0,this.progress,500).onFinish((()=>{this.animations.forEach((e=>e.destroy())),this.animations=[],this.gesture.enable(!0),this.state=1,this.ionPullEnd.emit({reason:"cancel"})}));const t=f([0,0],[0,0],[1,1],[1,1],this.progress)[0],o=E(n);this.animations.push(o),s((async()=>{n.style.setProperty("--ion-pulling-refresher-translate",100*t+"px"),e.data.animation.progressEnd(),await o.play(),this.beginRefresh(),e.data.animation.destroy(),this.gesture.enable(!0)}))}}),this.disabledChanged()}async setupNativeRefresher(e){if(this.scrollListenerCallback||!e||this.nativeRefresher||!this.scrollEl)return;this.setCss(0,"",!1,""),this.nativeRefresher=!0;const r=this.el.querySelector("ion-refresher-content .refresher-pulling ion-spinner"),i=this.el.querySelector("ion-refresher-content .refresher-refreshing ion-spinner");"ios"===k(this)?this.setupiOSNativeRefresher(r,i):this.setupMDNativeRefresher(e,r,i)}componentDidUpdate(){this.checkNativeRefresher()}async connectedCallback(){if("fixed"!==this.el.getAttribute("slot"))return void n('[ion-refresher] - Make sure you use: <ion-refresher slot="fixed">');const e=this.el.closest(c);e?b(e,(async()=>{const r=e.querySelector(l);this.scrollEl=await g(null!=r?r:e),this.backgroundContentEl=await e.getBackgroundElement(),this.contentFullscreen=e.fullscreen,await y(this.el,k(this))?this.setupNativeRefresher(e):(this.gesture=(await import("./p-Cl0B-RWe.js")).createGesture({el:e,gestureName:"refresher",gesturePriority:31,direction:"y",threshold:20,passive:!1,canStart:()=>this.canStart(),onStart:()=>this.onStart(),onMove:e=>this.onMove(e),onEnd:()=>this.onEnd()}),this.disabledChanged())})):p(this.el)}disconnectedCallback(){this.destroyNativeRefresher(),this.scrollEl=void 0,this.gesture&&(this.gesture.destroy(),this.gesture=void 0)}async complete(){this.nativeRefresher?(this.needsCompletion=!0,this.pointerDown||v((()=>v((()=>this.resetNativeRefresher(this.elementToTransform,32)))))):this.close(32,"120ms")}async cancel(){this.nativeRefresher?this.pointerDown||v((()=>v((()=>this.resetNativeRefresher(this.elementToTransform,16))))):this.close(16,"")}getProgress(){return Promise.resolve(this.progress)}canStart(){return!(!this.scrollEl||1!==this.state||this.scrollEl.scrollTop>0)}onStart(){this.progress=0,this.state=1,this.memoizeOverflowStyle(),this.contentFullscreen&&this.backgroundContentEl&&this.backgroundContentEl.style.setProperty("--offset-top","0px")}onMove(e){if(!this.scrollEl)return;const r=e.event;if(void 0!==r.touches&&r.touches.length>1)return;if(56&this.state)return;const i=e.deltaY*(Number.isNaN(this.pullFactor)||this.pullFactor<0?1:this.pullFactor);if(i<=0)return this.progress=0,this.state=1,this.appliedStyles?void this.setCss(0,"",!1,""):void 0;if(1===this.state){if(this.scrollEl.scrollTop>0)return void(this.progress=0);this.state=2}if(r.cancelable&&r.preventDefault(),this.setCss(i,"0ms",!0,""),0===i)return void(this.progress=0);const s=this.pullMin;this.progress=i/s,this.didStart||(this.didStart=!0,this.ionStart.emit(),this.ionPullStart.emit()),this.ionPull.emit(),i<s?this.state=2:i>this.pullMax?this.beginRefresh():this.state=4}onEnd(){4===this.state?this.beginRefresh():2===this.state?this.cancel():1===this.state&&(this.restoreOverflowStyle(),this.didStart&&(this.didStart=!1,this.ionPullEnd.emit({reason:"cancel"})))}beginRefresh(){this.state=8,this.setCss(this.pullMin,this.snapbackDuration,!0,"");const e=document.activeElement;void 0!==(null==e?void 0:e.blur)&&e.blur(),this.ionRefresh.emit({complete:this.complete.bind(this)})}close(e,r){setTimeout((()=>{var r;this.state=1,this.progress=0,this.didStart=!1,this.setCss(0,"0ms",!1,"",!0),this.contentFullscreen&&this.backgroundContentEl&&(null===(r=this.backgroundContentEl)||void 0===r||r.style.removeProperty("--offset-top")),this.ionPullEnd.emit({reason:32===e?"complete":"cancel"})}),600),this.state=e,this.setCss(0,this.closeDuration,!0,r)}setCss(e,r,i,t,n=!1){this.nativeRefresher||(this.appliedStyles=e>0,s((()=>{if(this.scrollEl&&this.backgroundContentEl){const s=this.scrollEl.style,n=this.backgroundContentEl.style;s.transform=n.transform=e>0?`translateY(${e}px) translateZ(0px)`:"",s.transitionDuration=n.transitionDuration=r,s.transitionDelay=n.transitionDelay=t,s.overflow=i?"hidden":""}n&&this.restoreOverflowStyle()})))}memoizeOverflowStyle(){if(this.scrollEl){const{overflow:e,overflowX:r,overflowY:i}=this.scrollEl.style;this.overflowStyles={overflow:null!=e?e:"",overflowX:null!=r?r:"",overflowY:null!=i?i:""}}}restoreOverflowStyle(){if(void 0!==this.overflowStyles&&void 0!==this.scrollEl){const{overflow:e,overflowX:r,overflowY:i}=this.overflowStyles;this.scrollEl.style.overflow=e,this.scrollEl.style.overflowX=r,this.scrollEl.style.overflowY=i,this.overflowStyles=void 0}}render(){const e=k(this);return o(a,{key:"80fa313b0d77161680836bdd6aa334d02c549b41",slot:"fixed",class:{[e]:!0,["refresher-"+e]:!0,"refresher-native":this.nativeRefresher,"refresher-active":1!==this.state,"refresher-pulling":2===this.state,"refresher-ready":4===this.state,"refresher-refreshing":8===this.state,"refresher-cancelling":16===this.state,"refresher-completing":32===this.state}})}get el(){return this}static get watchers(){return{disabled:[{disabledChanged:0}]}}static get style(){return{ios:"ion-refresher{top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}ion-refresher{inset-inline-start:0}ion-refresher.refresher-active{display:block}ion-refresher-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{-webkit-transform-origin:center;transform-origin:center;-webkit-transition:200ms;transition:200ms;font-size:30px;text-align:center}:host-context([dir=rtl]) .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}[dir=rtl] .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}@supports selector(:dir(rtl)){.refresher-pulling-icon:dir(rtl),.refresher-refreshing-icon:dir(rtl){-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}}.refresher-pulling-text,.refresher-refreshing-text{font-size:16px;text-align:center}ion-refresher-content .arrow-container{display:none}.refresher-pulling ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.refresher-refreshing ion-refresher-content .refresher-refreshing{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-native .refresher-pulling-text,.refresher-native .refresher-refreshing-text{display:none}.refresher-ios .refresher-pulling-icon,.refresher-ios .refresher-refreshing-icon{color:var(--ion-text-color, #000)}.refresher-ios .refresher-pulling-text,.refresher-ios .refresher-refreshing-text{color:var(--ion-text-color, #000)}.refresher-ios .refresher-refreshing .spinner-lines-ios line,.refresher-ios .refresher-refreshing .spinner-lines-small-ios line,.refresher-ios .refresher-refreshing .spinner-crescent circle{stroke:var(--ion-text-color, #000)}.refresher-ios .refresher-refreshing .spinner-bubbles circle,.refresher-ios .refresher-refreshing .spinner-circles circle,.refresher-ios .refresher-refreshing .spinner-dots circle{fill:var(--ion-text-color, #000)}ion-refresher.refresher-native{display:block;z-index:1}ion-refresher.refresher-native ion-spinner{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}.refresher-native .refresher-refreshing ion-spinner{--refreshing-rotation-duration:2s;display:none;-webkit-animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards;animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards}.refresher-native .refresher-refreshing{display:none;-webkit-animation:250ms linear refresher-pop forwards;animation:250ms linear refresher-pop forwards}.refresher-native ion-spinner{width:32px;height:32px;color:var(--ion-color-step-450, var(--ion-background-color-step-450, #747577))}.refresher-native.refresher-refreshing .refresher-pulling ion-spinner,.refresher-native.refresher-completing .refresher-pulling ion-spinner{display:none}.refresher-native.refresher-refreshing .refresher-refreshing ion-spinner,.refresher-native.refresher-completing .refresher-refreshing ion-spinner{display:block}.refresher-native.refresher-pulling .refresher-pulling ion-spinner{display:block}.refresher-native.refresher-pulling .refresher-refreshing ion-spinner{display:none}.refresher-native.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0) rotate(180deg);transform:scale(0) rotate(180deg);-webkit-transition:300ms;transition:300ms}@-webkit-keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}@keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}",md:"ion-refresher{top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}ion-refresher{inset-inline-start:0}ion-refresher.refresher-active{display:block}ion-refresher-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{-webkit-transform-origin:center;transform-origin:center;-webkit-transition:200ms;transition:200ms;font-size:30px;text-align:center}:host-context([dir=rtl]) .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}[dir=rtl] .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}@supports selector(:dir(rtl)){.refresher-pulling-icon:dir(rtl),.refresher-refreshing-icon:dir(rtl){-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}}.refresher-pulling-text,.refresher-refreshing-text{font-size:16px;text-align:center}ion-refresher-content .arrow-container{display:none}.refresher-pulling ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.refresher-refreshing ion-refresher-content .refresher-refreshing{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-native .refresher-pulling-text,.refresher-native .refresher-refreshing-text{display:none}.refresher-md .refresher-pulling-icon,.refresher-md .refresher-refreshing-icon{color:var(--ion-text-color, #000)}.refresher-md .refresher-pulling-text,.refresher-md .refresher-refreshing-text{color:var(--ion-text-color, #000)}.refresher-md .refresher-refreshing .spinner-lines-md line,.refresher-md .refresher-refreshing .spinner-lines-small-md line,.refresher-md .refresher-refreshing .spinner-crescent circle{stroke:var(--ion-text-color, #000)}.refresher-md .refresher-refreshing .spinner-bubbles circle,.refresher-md .refresher-refreshing .spinner-circles circle,.refresher-md .refresher-refreshing .spinner-dots circle{fill:var(--ion-text-color, #000)}ion-refresher.refresher-native{display:block;z-index:1}ion-refresher.refresher-native ion-spinner{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;width:24px;height:24px;color:var(--ion-color-primary, #0054e9)}ion-refresher.refresher-native .spinner-arrow-container{display:inherit}ion-refresher.refresher-native .arrow-container{display:block;position:absolute;width:24px;height:24px}ion-refresher.refresher-native .arrow-container ion-icon{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;left:0;right:0;bottom:-4px;position:absolute;color:var(--ion-color-primary, #0054e9);font-size:12px}ion-refresher.refresher-native.refresher-pulling ion-refresher-content .refresher-pulling,ion-refresher.refresher-native.refresher-ready ion-refresher-content .refresher-pulling{display:-ms-flexbox;display:flex}ion-refresher.refresher-native.refresher-refreshing ion-refresher-content .refresher-refreshing,ion-refresher.refresher-native.refresher-completing ion-refresher-content .refresher-refreshing,ion-refresher.refresher-native.refresher-cancelling ion-refresher-content .refresher-refreshing{display:-ms-flexbox;display:flex}ion-refresher.refresher-native .refresher-pulling-icon{-webkit-transform:translateY(calc(-100% - 10px));transform:translateY(calc(-100% - 10px))}ion-refresher.refresher-native .refresher-pulling-icon,ion-refresher.refresher-native .refresher-refreshing-icon{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;border-radius:100%;-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;display:-ms-flexbox;display:flex;border:1px solid var(--ion-color-step-200, var(--ion-background-color-step-200, #ececec));background:var(--ion-color-step-250, var(--ion-background-color-step-250, #ffffff));-webkit-box-shadow:0px 1px 6px rgba(0, 0, 0, 0.1);box-shadow:0px 1px 6px rgba(0, 0, 0, 0.1)}"}}},[32,"ion-refresher",{pullMin:[2,"pull-min"],pullMax:[2,"pull-max"],closeDuration:[1,"close-duration"],snapbackDuration:[1,"snapback-duration"],pullFactor:[2,"pull-factor"],disabled:[4],nativeRefresher:[32],state:[32],complete:[64],cancel:[64],getProgress:[64]},void 0,{disabled:[{disabledChanged:0}]}]),P=z,Y=function(){"undefined"!=typeof customElements&&["ion-refresher"].forEach((e=>{"ion-refresher"===e&&(customElements.get(h(e))||customElements.define(h(e),z))}))};export{P as IonRefresher,Y as defineCustomElement}
|